@wordpress/edit-site 6.30.1-next.a730c9c8c.0 → 6.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/components/add-new-template/add-custom-template-modal-content.js +1 -1
- package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
- package/build/components/add-new-template/index.js +1 -5
- package/build/components/add-new-template/index.js.map +1 -1
- package/build/components/add-new-template/utils.js +8 -84
- package/build/components/add-new-template/utils.js.map +1 -1
- package/build/components/dataviews-actions/index.js +51 -1
- package/build/components/dataviews-actions/index.js.map +1 -1
- package/build/components/editor/index.js +1 -1
- package/build/components/editor/index.js.map +1 -1
- package/build/components/editor/use-resolve-edited-entity.js +42 -14
- package/build/components/editor/use-resolve-edited-entity.js.map +1 -1
- package/build/components/page-templates/fields.js +65 -5
- package/build/components/page-templates/fields.js.map +1 -1
- package/build/components/page-templates/hooks.js +1 -1
- package/build/components/page-templates/hooks.js.map +1 -1
- package/build/components/page-templates/index.js +103 -29
- package/build/components/page-templates/index.js.map +1 -1
- package/build/components/sidebar-navigation-screen-templates-browse/content.js +11 -5
- package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build/components/site-editor-routes/index.js +1 -1
- package/build/components/site-editor-routes/index.js.map +1 -1
- package/build/components/site-editor-routes/template-item.js +29 -23
- package/build/components/site-editor-routes/template-item.js.map +1 -1
- package/build-module/components/add-new-template/add-custom-template-modal-content.js +1 -1
- package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
- package/build-module/components/add-new-template/index.js +2 -6
- package/build-module/components/add-new-template/index.js.map +1 -1
- package/build-module/components/add-new-template/utils.js +8 -84
- package/build-module/components/add-new-template/utils.js.map +1 -1
- package/build-module/components/dataviews-actions/index.js +49 -0
- package/build-module/components/dataviews-actions/index.js.map +1 -1
- package/build-module/components/editor/index.js +1 -1
- package/build-module/components/editor/index.js.map +1 -1
- package/build-module/components/editor/use-resolve-edited-entity.js +42 -14
- package/build-module/components/editor/use-resolve-edited-entity.js.map +1 -1
- package/build-module/components/page-templates/fields.js +65 -5
- package/build-module/components/page-templates/fields.js.map +1 -1
- package/build-module/components/page-templates/hooks.js +1 -1
- package/build-module/components/page-templates/hooks.js.map +1 -1
- package/build-module/components/page-templates/index.js +105 -31
- package/build-module/components/page-templates/index.js.map +1 -1
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +11 -5
- package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
- package/build-module/components/site-editor-routes/index.js +2 -2
- package/build-module/components/site-editor-routes/index.js.map +1 -1
- package/build-module/components/site-editor-routes/template-item.js +28 -22
- package/build-module/components/site-editor-routes/template-item.js.map +1 -1
- package/package.json +41 -41
- package/src/components/add-new-template/add-custom-template-modal-content.js +1 -3
- package/src/components/add-new-template/index.js +1 -8
- package/src/components/add-new-template/utils.js +9 -118
- package/src/components/dataviews-actions/index.js +51 -0
- package/src/components/editor/index.js +1 -0
- package/src/components/editor/use-resolve-edited-entity.js +54 -7
- package/src/components/page-templates/fields.js +70 -4
- package/src/components/page-templates/hooks.js +1 -1
- package/src/components/page-templates/index.js +160 -57
- package/src/components/sidebar-navigation-screen-templates-browse/content.js +17 -7
- package/src/components/site-editor-routes/index.js +2 -1
- package/src/components/site-editor-routes/template-item.js +34 -26
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.templateItemRoute = void 0;
|
|
7
|
+
exports.templateItemRoute = exports.staticTemplateItemRoute = void 0;
|
|
8
8
|
var _editor = _interopRequireDefault(require("../editor"));
|
|
9
9
|
var _sidebarNavigationScreenTemplatesBrowse = _interopRequireDefault(require("../sidebar-navigation-screen-templates-browse"));
|
|
10
10
|
var _sidebarNavigationScreenUnsupported = _interopRequireDefault(require("../sidebar-navigation-screen-unsupported"));
|
|
@@ -13,30 +13,36 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
13
13
|
* Internal dependencies
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
const areas = {
|
|
17
|
+
sidebar({
|
|
18
|
+
siteData
|
|
19
|
+
}) {
|
|
20
|
+
const isBlockTheme = siteData.currentTheme?.is_block_theme;
|
|
21
|
+
return isBlockTheme ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenTemplatesBrowse.default, {
|
|
22
|
+
backPath: "/"
|
|
23
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenUnsupported.default, {});
|
|
24
|
+
},
|
|
25
|
+
mobile({
|
|
26
|
+
siteData
|
|
27
|
+
}) {
|
|
28
|
+
const isBlockTheme = siteData.currentTheme?.is_block_theme;
|
|
29
|
+
return isBlockTheme ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_editor.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenUnsupported.default, {});
|
|
30
|
+
},
|
|
31
|
+
preview({
|
|
32
|
+
siteData
|
|
33
|
+
}) {
|
|
34
|
+
const isBlockTheme = siteData.currentTheme?.is_block_theme;
|
|
35
|
+
return isBlockTheme ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_editor.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenUnsupported.default, {});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
16
38
|
const templateItemRoute = exports.templateItemRoute = {
|
|
17
39
|
name: 'template-item',
|
|
18
40
|
path: '/wp_template/*postId',
|
|
19
|
-
areas
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
backPath: "/"
|
|
26
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenUnsupported.default, {});
|
|
27
|
-
},
|
|
28
|
-
mobile({
|
|
29
|
-
siteData
|
|
30
|
-
}) {
|
|
31
|
-
const isBlockTheme = siteData.currentTheme?.is_block_theme;
|
|
32
|
-
return isBlockTheme ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_editor.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenUnsupported.default, {});
|
|
33
|
-
},
|
|
34
|
-
preview({
|
|
35
|
-
siteData
|
|
36
|
-
}) {
|
|
37
|
-
const isBlockTheme = siteData.currentTheme?.is_block_theme;
|
|
38
|
-
return isBlockTheme ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_editor.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenUnsupported.default, {});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
+
areas
|
|
42
|
+
};
|
|
43
|
+
const staticTemplateItemRoute = exports.staticTemplateItemRoute = {
|
|
44
|
+
name: 'static-template-item',
|
|
45
|
+
path: '/wp_registered_template/*postId',
|
|
46
|
+
areas
|
|
41
47
|
};
|
|
42
48
|
//# sourceMappingURL=template-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_editor","_interopRequireDefault","require","_sidebarNavigationScreenTemplatesBrowse","_sidebarNavigationScreenUnsupported","_jsxRuntime","
|
|
1
|
+
{"version":3,"names":["_editor","_interopRequireDefault","require","_sidebarNavigationScreenTemplatesBrowse","_sidebarNavigationScreenUnsupported","_jsxRuntime","areas","sidebar","siteData","isBlockTheme","currentTheme","is_block_theme","jsx","default","backPath","mobile","preview","templateItemRoute","exports","name","path","staticTemplateItemRoute"],"sources":["@wordpress/edit-site/src/components/site-editor-routes/template-item.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreenTemplatesBrowse from '../sidebar-navigation-screen-templates-browse';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\n\nconst areas = {\n\tsidebar( { siteData } ) {\n\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\treturn isBlockTheme ? (\n\t\t\t<SidebarNavigationScreenTemplatesBrowse backPath=\"/\" />\n\t\t) : (\n\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t);\n\t},\n\tmobile( { siteData } ) {\n\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\treturn isBlockTheme ? (\n\t\t\t<Editor />\n\t\t) : (\n\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t);\n\t},\n\tpreview( { siteData } ) {\n\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\treturn isBlockTheme ? (\n\t\t\t<Editor />\n\t\t) : (\n\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t);\n\t},\n};\n\nexport const templateItemRoute = {\n\tname: 'template-item',\n\tpath: '/wp_template/*postId',\n\tareas,\n};\n\nexport const staticTemplateItemRoute = {\n\tname: 'static-template-item',\n\tpath: '/wp_registered_template/*postId',\n\tareas,\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uCAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,mCAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA0F,IAAAG,WAAA,GAAAH,OAAA;AAL1F;AACA;AACA;;AAKA,MAAMI,KAAK,GAAG;EACbC,OAAOA,CAAE;IAAEC;EAAS,CAAC,EAAG;IACvB,MAAMC,YAAY,GAAGD,QAAQ,CAACE,YAAY,EAAEC,cAAc;IAC1D,OAAOF,YAAY,gBAClB,IAAAJ,WAAA,CAAAO,GAAA,EAACT,uCAAA,CAAAU,OAAsC;MAACC,QAAQ,EAAC;IAAG,CAAE,CAAC,gBAEvD,IAAAT,WAAA,CAAAO,GAAA,EAACR,mCAAA,CAAAS,OAAkC,IAAE,CACrC;EACF,CAAC;EACDE,MAAMA,CAAE;IAAEP;EAAS,CAAC,EAAG;IACtB,MAAMC,YAAY,GAAGD,QAAQ,CAACE,YAAY,EAAEC,cAAc;IAC1D,OAAOF,YAAY,gBAClB,IAAAJ,WAAA,CAAAO,GAAA,EAACZ,OAAA,CAAAa,OAAM,IAAE,CAAC,gBAEV,IAAAR,WAAA,CAAAO,GAAA,EAACR,mCAAA,CAAAS,OAAkC,IAAE,CACrC;EACF,CAAC;EACDG,OAAOA,CAAE;IAAER;EAAS,CAAC,EAAG;IACvB,MAAMC,YAAY,GAAGD,QAAQ,CAACE,YAAY,EAAEC,cAAc;IAC1D,OAAOF,YAAY,gBAClB,IAAAJ,WAAA,CAAAO,GAAA,EAACZ,OAAA,CAAAa,OAAM,IAAE,CAAC,gBAEV,IAAAR,WAAA,CAAAO,GAAA,EAACR,mCAAA,CAAAS,OAAkC,IAAE,CACrC;EACF;AACD,CAAC;AAEM,MAAMI,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG;EAChCE,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,sBAAsB;EAC5Bd;AACD,CAAC;AAEM,MAAMe,uBAAuB,GAAAH,OAAA,CAAAG,uBAAA,GAAG;EACtCF,IAAI,EAAE,sBAAsB;EAC5BC,IAAI,EAAE,iCAAiC;EACvCd;AACD,CAAC","ignoreList":[]}
|
|
@@ -125,7 +125,7 @@ function AddCustomTemplateModalContent({
|
|
|
125
125
|
onBack,
|
|
126
126
|
containerRef
|
|
127
127
|
}) {
|
|
128
|
-
const [showSearchEntities, setShowSearchEntities] = useState(
|
|
128
|
+
const [showSearchEntities, setShowSearchEntities] = useState();
|
|
129
129
|
|
|
130
130
|
// Focus on the first focusable element when the modal opens.
|
|
131
131
|
// We handle focus management in the parent modal, just need to focus on the first focusable element.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useMemo","useEffect","__","Button","Flex","FlexItem","SearchControl","TextHighlight","Composite","__experimentalText","Text","__experimentalVStack","VStack","useEntityRecords","decodeEntities","useDebouncedInput","focus","mapToIHasNameAndId","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","EMPTY_ARRAY","SuggestionListItem","suggestion","search","onSelect","entityForSuggestions","baseCssClass","Item","render","__next40pxDefaultSize","role","className","onClick","config","getSpecificTemplate","children","size","lineHeight","weight","text","name","highlight","link","useSearchSuggestions","query","order","context","per_page","queryArgs","records","searchResults","hasResolved","searchHasResolved","type","slug","suggestions","setSuggestions","newSuggestions","length","recordNamePath","SuggestionList","setSearch","debouncedSearch","labels","showSearchControl","setShowSearchControl","__nextHasNoMarginBottom","onChange","value","label","search_items","placeholder","orientation","map","as","not_found","AddCustomTemplateModalContent","onBack","containerRef","showSearchEntities","setShowSearchEntities","hasGeneralTemplate","current","firstFocusable","focusable","find","spacing","alignment","gap","align","isBlock","title","description","templatePrefix","template","all_items","singular_name","justify","variant"],"sources":["@wordpress/edit-site/src/components/add-new-template/add-custom-template-modal-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tTextHighlight,\n\tComposite,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { mapToIHasNameAndId } from './utils';\n\nconst EMPTY_ARRAY = [];\n\nfunction SuggestionListItem( {\n\tsuggestion,\n\tsearch,\n\tonSelect,\n\tentityForSuggestions,\n} ) {\n\tconst baseCssClass =\n\t\t'edit-site-custom-template-modal__suggestions_list__list-item';\n\treturn (\n\t\t<Composite.Item\n\t\t\trender={\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\tclassName={ baseCssClass }\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tentityForSuggestions.config.getSpecificTemplate(\n\t\t\t\t\t\t\t\tsuggestion\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/>\n\t\t\t}\n\t\t>\n\t\t\t<Text\n\t\t\t\tsize=\"body\"\n\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\tweight={ 500 }\n\t\t\t\tclassName={ `${ baseCssClass }__title` }\n\t\t\t>\n\t\t\t\t<TextHighlight\n\t\t\t\t\ttext={ decodeEntities( suggestion.name ) }\n\t\t\t\t\thighlight={ search }\n\t\t\t\t/>\n\t\t\t</Text>\n\t\t\t{ suggestion.link && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\tclassName={ `${ baseCssClass }__info` }\n\t\t\t\t>\n\t\t\t\t\t{ suggestion.link }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction useSearchSuggestions( entityForSuggestions, search ) {\n\tconst { config } = entityForSuggestions;\n\tconst query = useMemo(\n\t\t() => ( {\n\t\t\torder: 'asc',\n\t\t\tcontext: 'view',\n\t\t\tsearch,\n\t\t\tper_page: search ? 20 : 10,\n\t\t\t...config.queryArgs( search ),\n\t\t} ),\n\t\t[ search, config ]\n\t);\n\tconst { records: searchResults, hasResolved: searchHasResolved } =\n\t\tuseEntityRecords(\n\t\t\tentityForSuggestions.type,\n\t\t\tentityForSuggestions.slug,\n\t\t\tquery\n\t\t);\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tlet newSuggestions = EMPTY_ARRAY;\n\t\tif ( searchResults?.length ) {\n\t\t\tnewSuggestions = searchResults;\n\t\t\tif ( config.recordNamePath ) {\n\t\t\t\tnewSuggestions = mapToIHasNameAndId(\n\t\t\t\t\tnewSuggestions,\n\t\t\t\t\tconfig.recordNamePath\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// Update suggestions only when the query has resolved, so as to keep\n\t\t// the previous results in the UI.\n\t\tsetSuggestions( newSuggestions );\n\t}, [ searchResults, searchHasResolved ] );\n\treturn suggestions;\n}\n\nfunction SuggestionList( { entityForSuggestions, onSelect } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst suggestions = useSearchSuggestions(\n\t\tentityForSuggestions,\n\t\tdebouncedSearch\n\t);\n\tconst { labels } = entityForSuggestions;\n\tconst [ showSearchControl, setShowSearchControl ] = useState( false );\n\tif ( ! showSearchControl && suggestions?.length > 9 ) {\n\t\tsetShowSearchControl( true );\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ showSearchControl && (\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearch }\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tlabel={ labels.search_items }\n\t\t\t\t\tplaceholder={ labels.search_items }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! suggestions?.length && (\n\t\t\t\t<Composite\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__suggestions_list\"\n\t\t\t\t\taria-label={ __( 'Suggestions list' ) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion ) => (\n\t\t\t\t\t\t<SuggestionListItem\n\t\t\t\t\t\t\tkey={ suggestion.slug }\n\t\t\t\t\t\t\tsuggestion={ suggestion }\n\t\t\t\t\t\t\tsearch={ debouncedSearch }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Composite>\n\t\t\t) }\n\t\t\t{ debouncedSearch && ! suggestions?.length && (\n\t\t\t\t<Text\n\t\t\t\t\tas=\"p\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__no-results\"\n\t\t\t\t>\n\t\t\t\t\t{ labels.not_found }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction AddCustomTemplateModalContent( {\n\tonSelect,\n\tentityForSuggestions,\n\tonBack,\n\tcontainerRef,\n} ) {\n\tconst [ showSearchEntities, setShowSearchEntities ] = useState(\n\t\tentityForSuggestions.hasGeneralTemplate\n\t);\n\n\t// Focus on the first focusable element when the modal opens.\n\t// We handle focus management in the parent modal, just need to focus on the first focusable element.\n\tuseEffect( () => {\n\t\tif ( containerRef.current ) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ showSearchEntities ] );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 4 }\n\t\t\tclassName=\"edit-site-custom-template-modal__contents-wrapper\"\n\t\t\talignment=\"left\"\n\t\t>\n\t\t\t{ ! showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select whether to create a single template for all items or a specific one.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tclassName=\"edit-site-custom-template-modal__contents\"\n\t\t\t\t\t\tgap=\"4\"\n\t\t\t\t\t\talign=\"initial\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} = entityForSuggestions.template;\n\t\t\t\t\t\t\t\tonSelect( {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.all_items }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For all items' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetShowSearchEntities( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.singular_name }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For a specific item' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'This template will be used only for the specific item chosen.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t/>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t// If general template exists, go directly back to main screen\n\t\t\t\t\t\t\t\t// instead of showing the choice screen\n\t\t\t\t\t\t\t\tif ( entityForSuggestions.hasGeneralTemplate ) {\n\t\t\t\t\t\t\t\t\tonBack();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetShowSearchEntities( false );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default AddCustomTemplateModalContent;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useState","useMemo","useEffect","__","Button","Flex","FlexItem","SearchControl","TextHighlight","Composite","__experimentalText","Text","__experimentalVStack","VStack","useEntityRecords","decodeEntities","useDebouncedInput","focus","mapToIHasNameAndId","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","EMPTY_ARRAY","SuggestionListItem","suggestion","search","onSelect","entityForSuggestions","baseCssClass","Item","render","__next40pxDefaultSize","role","className","onClick","config","getSpecificTemplate","children","size","lineHeight","weight","text","name","highlight","link","useSearchSuggestions","query","order","context","per_page","queryArgs","records","searchResults","hasResolved","searchHasResolved","type","slug","suggestions","setSuggestions","newSuggestions","length","recordNamePath","SuggestionList","setSearch","debouncedSearch","labels","showSearchControl","setShowSearchControl","__nextHasNoMarginBottom","onChange","value","label","search_items","placeholder","orientation","map","as","not_found","AddCustomTemplateModalContent","onBack","containerRef","showSearchEntities","setShowSearchEntities","current","firstFocusable","focusable","find","spacing","alignment","gap","align","isBlock","title","description","templatePrefix","template","all_items","singular_name","justify","variant","hasGeneralTemplate"],"sources":["@wordpress/edit-site/src/components/add-new-template/add-custom-template-modal-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tTextHighlight,\n\tComposite,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { mapToIHasNameAndId } from './utils';\n\nconst EMPTY_ARRAY = [];\n\nfunction SuggestionListItem( {\n\tsuggestion,\n\tsearch,\n\tonSelect,\n\tentityForSuggestions,\n} ) {\n\tconst baseCssClass =\n\t\t'edit-site-custom-template-modal__suggestions_list__list-item';\n\treturn (\n\t\t<Composite.Item\n\t\t\trender={\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\tclassName={ baseCssClass }\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tentityForSuggestions.config.getSpecificTemplate(\n\t\t\t\t\t\t\t\tsuggestion\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/>\n\t\t\t}\n\t\t>\n\t\t\t<Text\n\t\t\t\tsize=\"body\"\n\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\tweight={ 500 }\n\t\t\t\tclassName={ `${ baseCssClass }__title` }\n\t\t\t>\n\t\t\t\t<TextHighlight\n\t\t\t\t\ttext={ decodeEntities( suggestion.name ) }\n\t\t\t\t\thighlight={ search }\n\t\t\t\t/>\n\t\t\t</Text>\n\t\t\t{ suggestion.link && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\tclassName={ `${ baseCssClass }__info` }\n\t\t\t\t>\n\t\t\t\t\t{ suggestion.link }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction useSearchSuggestions( entityForSuggestions, search ) {\n\tconst { config } = entityForSuggestions;\n\tconst query = useMemo(\n\t\t() => ( {\n\t\t\torder: 'asc',\n\t\t\tcontext: 'view',\n\t\t\tsearch,\n\t\t\tper_page: search ? 20 : 10,\n\t\t\t...config.queryArgs( search ),\n\t\t} ),\n\t\t[ search, config ]\n\t);\n\tconst { records: searchResults, hasResolved: searchHasResolved } =\n\t\tuseEntityRecords(\n\t\t\tentityForSuggestions.type,\n\t\t\tentityForSuggestions.slug,\n\t\t\tquery\n\t\t);\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tlet newSuggestions = EMPTY_ARRAY;\n\t\tif ( searchResults?.length ) {\n\t\t\tnewSuggestions = searchResults;\n\t\t\tif ( config.recordNamePath ) {\n\t\t\t\tnewSuggestions = mapToIHasNameAndId(\n\t\t\t\t\tnewSuggestions,\n\t\t\t\t\tconfig.recordNamePath\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// Update suggestions only when the query has resolved, so as to keep\n\t\t// the previous results in the UI.\n\t\tsetSuggestions( newSuggestions );\n\t}, [ searchResults, searchHasResolved ] );\n\treturn suggestions;\n}\n\nfunction SuggestionList( { entityForSuggestions, onSelect } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst suggestions = useSearchSuggestions(\n\t\tentityForSuggestions,\n\t\tdebouncedSearch\n\t);\n\tconst { labels } = entityForSuggestions;\n\tconst [ showSearchControl, setShowSearchControl ] = useState( false );\n\tif ( ! showSearchControl && suggestions?.length > 9 ) {\n\t\tsetShowSearchControl( true );\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ showSearchControl && (\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearch }\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tlabel={ labels.search_items }\n\t\t\t\t\tplaceholder={ labels.search_items }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! suggestions?.length && (\n\t\t\t\t<Composite\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__suggestions_list\"\n\t\t\t\t\taria-label={ __( 'Suggestions list' ) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion ) => (\n\t\t\t\t\t\t<SuggestionListItem\n\t\t\t\t\t\t\tkey={ suggestion.slug }\n\t\t\t\t\t\t\tsuggestion={ suggestion }\n\t\t\t\t\t\t\tsearch={ debouncedSearch }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Composite>\n\t\t\t) }\n\t\t\t{ debouncedSearch && ! suggestions?.length && (\n\t\t\t\t<Text\n\t\t\t\t\tas=\"p\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__no-results\"\n\t\t\t\t>\n\t\t\t\t\t{ labels.not_found }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction AddCustomTemplateModalContent( {\n\tonSelect,\n\tentityForSuggestions,\n\tonBack,\n\tcontainerRef,\n} ) {\n\tconst [ showSearchEntities, setShowSearchEntities ] = useState();\n\n\t// Focus on the first focusable element when the modal opens.\n\t// We handle focus management in the parent modal, just need to focus on the first focusable element.\n\tuseEffect( () => {\n\t\tif ( containerRef.current ) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ showSearchEntities ] );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 4 }\n\t\t\tclassName=\"edit-site-custom-template-modal__contents-wrapper\"\n\t\t\talignment=\"left\"\n\t\t>\n\t\t\t{ ! showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select whether to create a single template for all items or a specific one.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tclassName=\"edit-site-custom-template-modal__contents\"\n\t\t\t\t\t\tgap=\"4\"\n\t\t\t\t\t\talign=\"initial\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} = entityForSuggestions.template;\n\t\t\t\t\t\t\t\tonSelect( {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.all_items }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For all items' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetShowSearchEntities( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.singular_name }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one.\n\t\t\t\t\t\t\t\t\t__( 'For a specific item' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'This template will be used only for the specific item chosen.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t/>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t// If general template exists, go directly back to main screen\n\t\t\t\t\t\t\t\t// instead of showing the choice screen\n\t\t\t\t\t\t\t\tif ( entityForSuggestions.hasGeneralTemplate ) {\n\t\t\t\t\t\t\t\t\tonBack();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetShowSearchEntities( false );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default AddCustomTemplateModalContent;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,7 +27,7 @@ import { TEMPLATE_POST_TYPE } from '../../utils/constants';
|
|
|
27
27
|
* Internal dependencies
|
|
28
28
|
*/
|
|
29
29
|
import AddCustomTemplateModalContent from './add-custom-template-modal-content';
|
|
30
|
-
import {
|
|
30
|
+
import { useDefaultTemplateTypes, useTaxonomiesMenuItems, usePostTypeMenuItems, useAuthorMenuItem, usePostTypeArchiveMenuItems } from './utils';
|
|
31
31
|
import AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';
|
|
32
32
|
import { unlock } from '../../lock-unlock';
|
|
33
33
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
@@ -269,12 +269,8 @@ function NewTemplate() {
|
|
|
269
269
|
});
|
|
270
270
|
}
|
|
271
271
|
function useMissingTemplates(setEntityForSuggestions, onClick) {
|
|
272
|
-
const existingTemplates = useExistingTemplates();
|
|
273
272
|
const defaultTemplateTypes = useDefaultTemplateTypes();
|
|
274
|
-
const
|
|
275
|
-
slug
|
|
276
|
-
}) => slug);
|
|
277
|
-
const missingDefaultTemplates = (defaultTemplateTypes || []).filter(template => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) && !existingTemplateSlugs.includes(template.slug));
|
|
273
|
+
const missingDefaultTemplates = (defaultTemplateTypes || []).filter(template => DEFAULT_TEMPLATE_SLUGS.includes(template.slug));
|
|
278
274
|
const onClickMenuItem = _entityForSuggestions => {
|
|
279
275
|
onClick?.();
|
|
280
276
|
setEntityForSuggestions(_entityForSuggestions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","Button","Modal","__experimentalGrid","Grid","__experimentalText","Text","__experimentalVStack","VStack","Flex","Icon","decodeEntities","useState","memo","useRef","useEffect","useSelect","useDispatch","store","coreStore","useViewportMatch","archive","blockMeta","calendar","category","commentAuthorAvatar","edit","home","layout","list","media","notFound","page","pin","verse","search","tag","__","sprintf","noticesStore","privateApis","routerPrivateApis","focus","TEMPLATE_POST_TYPE","AddCustomTemplateModalContent","useExistingTemplates","useDefaultTemplateTypes","useTaxonomiesMenuItems","usePostTypeMenuItems","useAuthorMenuItem","usePostTypeArchiveMenuItems","AddCustomGenericTemplateModalContent","unlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","useHistory","DEFAULT_TEMPLATE_SLUGS","TEMPLATE_ICONS","single","index","author","taxonomy","date","attachment","TemplateListItem","title","direction","className","description","icon","onClick","children","__next40pxDefaultSize","label","showTooltip","as","spacing","align","justify","style","width","alignment","weight","lineHeight","modalContentMap","templatesList","customTemplate","customGenericTemplate","NewTemplateModal","onClose","modalContent","setModalContent","entityForSuggestions","setEntityForSuggestions","isSubmitting","setIsSubmitting","missingTemplates","useMissingTemplates","history","saveEntityRecord","createErrorNotice","createSuccessNotice","containerRef","isMobile","homeUrl","select","getEntityRecord","TEMPLATE_SHORT_DESCRIPTIONS","Date","getFullYear","current","firstFocusable","focusable","find","createTemplate","template","isWPSuggestion","slug","newTemplate","toString","status","is_wp_suggestion","throwOnError","navigate","id","rendered","type","error","errorMessage","message","code","onModalClose","modalTitle","labels","singular_name","onRequestClose","overlayClassName","undefined","ref","columns","gap","map","onSelect","onBack","NewTemplate","showModal","setShowModal","postType","getPostType","variant","add_new_item","existingTemplates","defaultTemplateTypes","existingTemplateSlugs","missingDefaultTemplates","filter","includes","onClickMenuItem","_entityForSuggestions","enhancedMissingDefaultTemplateTypes","defaultTaxonomiesMenuItems","taxonomiesMenuItems","defaultPostTypesMenuItems","postTypesMenuItems","authorMenuItem","forEach","menuItem","matchIndex","findIndex","push","sort","template1","template2","indexOf"],"sources":["@wordpress/edit-site/src/components/add-new-template/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalGrid as Grid,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tIcon,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, memo, useRef, useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tarchive,\n\tblockMeta,\n\tcalendar,\n\tcategory,\n\tcommentAuthorAvatar,\n\tedit,\n\thome,\n\tlayout,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpin,\n\tverse,\n\tsearch,\n\ttag,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModalContent from './add-custom-template-modal-content';\nimport {\n\tuseExistingTemplates,\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n\tusePostTypeArchiveMenuItems,\n} from './utils';\nimport AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'home',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\thome: verse,\n\tsingle: pin,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: commentAuthorAvatar,\n\ttaxonomy: blockMeta,\n\tdate: calendar,\n\ttag,\n\tattachment: media,\n};\n\nfunction TemplateListItem( {\n\ttitle,\n\tdirection,\n\tclassName,\n\tdescription,\n\ticon,\n\tonClick,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\tonClick={ onClick }\n\t\t\tlabel={ description }\n\t\t\tshowTooltip={ !! description }\n\t\t>\n\t\t\t<Flex\n\t\t\t\tas=\"span\"\n\t\t\t\tspacing={ 2 }\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\tdirection={ direction }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-add-new-template__template-icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-name\"\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tspacing={ 0 }\n\t\t\t\t>\n\t\t\t\t\t<Text\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t\t{ children }\n\t\t\t\t</VStack>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nconst modalContentMap = {\n\ttemplatesList: 1,\n\tcustomTemplate: 2,\n\tcustomGenericTemplate: 3,\n};\n\nfunction NewTemplateModal( { onClose } ) {\n\tconst [ modalContent, setModalContent ] = useState(\n\t\tmodalContentMap.templatesList\n\t);\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>\n\t\tsetModalContent( modalContentMap.customTemplate )\n\t);\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst containerRef = useRef( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst homeUrl = useSelect( ( select ) => {\n\t\t// Site index.\n\t\treturn select( coreStore ).getEntityRecord( 'root', '__unstableBase' )\n\t\t\t?.home;\n\t}, [] );\n\n\tconst TEMPLATE_SHORT_DESCRIPTIONS = {\n\t\t'front-page': homeUrl,\n\t\tdate: sprintf(\n\t\t\t// translators: %s: The homepage url.\n\t\t\t__( 'E.g. %s' ),\n\t\t\thomeUrl + '/' + new Date().getFullYear()\n\t\t),\n\t};\n\n\tuseEffect( () => {\n\t\t// Focus the first focusable element when component mounts or UI changes\n\t\t// We don't want to focus on the other modals because they have their own focus management.\n\t\tif (\n\t\t\tcontainerRef.current &&\n\t\t\tmodalContent === modalContentMap.templatesList\n\t\t) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ modalContent ] );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\tif ( isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting( true );\n\t\ttry {\n\t\t\tconst { title, description, slug } = template;\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.navigate(\n\t\t\t\t`/${ TEMPLATE_POST_TYPE }/${ newTemplate.id }?canvas=edit`\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newTemplate.title?.rendered || title )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\tconst onModalClose = () => {\n\t\tonClose();\n\t\tsetModalContent( modalContentMap.templatesList );\n\t};\n\n\tlet modalTitle = __( 'Add template' );\n\tif ( modalContent === modalContentMap.customTemplate ) {\n\t\tmodalTitle = sprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Add template: %s' ),\n\t\t\tentityForSuggestions.labels.singular_name\n\t\t);\n\t} else if ( modalContent === modalContentMap.customGenericTemplate ) {\n\t\tmodalTitle = __( 'Create custom template' );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tclassName={ clsx( 'edit-site-add-new-template__modal', {\n\t\t\t\t'edit-site-add-new-template__modal_template_list':\n\t\t\t\t\tmodalContent === modalContentMap.templatesList,\n\t\t\t\t'edit-site-custom-template-modal':\n\t\t\t\t\tmodalContent === modalContentMap.customTemplate,\n\t\t\t} ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\toverlayClassName={\n\t\t\t\tmodalContent === modalContentMap.customGenericTemplate\n\t\t\t\t\t? 'edit-site-custom-generic-template__modal'\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tref={ containerRef }\n\t\t>\n\t\t\t{ modalContent === modalContentMap.templatesList && (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={ isMobile ? 2 : 3 }\n\t\t\t\t\tgap={ 4 }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-list__contents\"\n\t\t\t\t>\n\t\t\t\t\t<Flex className=\"edit-site-add-new-template__template-list__prompt\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select what the new template should apply to:'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\tconst { title, slug, onClick } = template;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-add-new-template__template-button\"\n\t\t\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t\t\tTEMPLATE_SHORT_DESCRIPTIONS[ slug ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ TEMPLATE_ICONS[ slug ] || layout }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t}\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\t<TemplateListItem\n\t\t\t\t\t\ttitle={ __( 'Custom template' ) }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"edit-site-add-new-template__custom-template-button\"\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetModalContent(\n\t\t\t\t\t\t\t\tmodalContentMap.customGenericTemplate\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\t\t<Text\n\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TemplateListItem>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customTemplate && (\n\t\t\t\t<AddCustomTemplateModalContent\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customGenericTemplate && (\n\t\t\t\t<AddCustomGenericTemplateModalContent\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n\nfunction NewTemplate() {\n\tconst [ showModal, setShowModal ] = useState( false );\n\n\tconst { postType } = useSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( TEMPLATE_POST_TYPE ),\n\t\t};\n\t}, [] );\n\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ showModal && (\n\t\t\t\t<NewTemplateModal onClose={ () => setShowModal( false ) } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates( setEntityForSuggestions, onClick ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) =>\n\t\t\tDEFAULT_TEMPLATE_SLUGS.includes( template.slug ) &&\n\t\t\t! existingTemplateSlugs.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tonClick?.();\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...usePostTypeArchiveMenuItems(),\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n\nexport default memo( NewTemplate );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SACCC,MAAM,EACNC,KAAK,EACLC,kBAAkB,IAAIC,IAAI,EAC1BC,kBAAkB,IAAIC,IAAI,EAC1BC,oBAAoB,IAAIC,MAAM,EAC9BC,IAAI,EACJC,IAAI,QACE,uBAAuB;AAC9B,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,QAAQ,EAAEC,IAAI,EAAEC,MAAM,EAAEC,SAAS,QAAQ,oBAAoB;AACtE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SACCC,OAAO,EACPC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,mBAAmB,EACnBC,IAAI,EACJC,IAAI,EACJC,MAAM,EACNC,IAAI,EACJC,KAAK,EACLC,QAAQ,EACRC,IAAI,EACJC,GAAG,EACHC,KAAK,EACLC,MAAM,EACNC,GAAG,QACG,kBAAkB;AACzB,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASpB,KAAK,IAAIqB,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,WAAW,IAAIC,iBAAiB,QAAQ,mBAAmB;AACpE,SAASC,KAAK,QAAQ,gBAAgB;;AAEtC;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,uBAAuB;;AAE1D;AACA;AACA;AACA,OAAOC,6BAA6B,MAAM,qCAAqC;AAC/E,SACCC,oBAAoB,EACpBC,uBAAuB,EACvBC,sBAAsB,EACtBC,oBAAoB,EACpBC,iBAAiB,EACjBC,2BAA2B,QACrB,SAAS;AAChB,OAAOC,oCAAoC,MAAM,6CAA6C;AAC9F,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAE3C,MAAM;EAAEC;AAAW,CAAC,GAAGP,MAAM,CAAEX,iBAAkB,CAAC;AAElD,MAAMmB,sBAAsB,GAAG,CAC9B,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,EACR,UAAU,EACV,MAAM,EACN,KAAK,EACL,QAAQ,EACR,KAAK,CACL;AAED,MAAMC,cAAc,GAAG;EACtB,YAAY,EAAElC,IAAI;EAClBA,IAAI,EAAEO,KAAK;EACX4B,MAAM,EAAE7B,GAAG;EACXD,IAAI;EACJX,OAAO;EACPc,MAAM;EACN,GAAG,EAAEJ,QAAQ;EACbgC,KAAK,EAAElC,IAAI;EACXL,QAAQ;EACRwC,MAAM,EAAEvC,mBAAmB;EAC3BwC,QAAQ,EAAE3C,SAAS;EACnB4C,IAAI,EAAE3C,QAAQ;EACda,GAAG;EACH+B,UAAU,EAAErC;AACb,CAAC;AAED,SAASsC,gBAAgBA,CAAE;EAC1BC,KAAK;EACLC,SAAS;EACTC,SAAS;EACTC,WAAW;EACXC,IAAI;EACJC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,oBACCrB,IAAA,CAACrD,MAAM;IACN2E,qBAAqB;IACrBL,SAAS,EAAGA,SAAW;IACvBG,OAAO,EAAGA,OAAS;IACnBG,KAAK,EAAGL,WAAa;IACrBM,WAAW,EAAG,CAAC,CAAEN,WAAa;IAAAG,QAAA,eAE9BnB,KAAA,CAAC/C,IAAI;MACJsE,EAAE,EAAC,MAAM;MACTC,OAAO,EAAG,CAAG;MACbC,KAAK,EAAC,QAAQ;MACdC,OAAO,EAAC,QAAQ;MAChBC,KAAK,EAAG;QAAEC,KAAK,EAAE;MAAO,CAAG;MAC3Bd,SAAS,EAAGA,SAAW;MAAAK,QAAA,gBAEvBrB,IAAA;QAAKiB,SAAS,EAAC,2CAA2C;QAAAI,QAAA,eACzDrB,IAAA,CAAC5C,IAAI;UAAC+D,IAAI,EAAGA;QAAM,CAAE;MAAC,CAClB,CAAC,eACNjB,KAAA,CAAChD,MAAM;QACN+D,SAAS,EAAC,2CAA2C;QACrDc,SAAS,EAAC,QAAQ;QAClBL,OAAO,EAAG,CAAG;QAAAL,QAAA,gBAEbrB,IAAA,CAAChD,IAAI;UACJ2E,KAAK,EAAC,QAAQ;UACdK,MAAM,EAAG,GAAK;UACdC,UAAU,EAAG,aAAe,CAAC;UAAA;UAAAZ,QAAA,EAE3BN;QAAK,CACF,CAAC,EACLM,QAAQ;MAAA,CACH,CAAC;IAAA,CACJ;EAAC,CACA,CAAC;AAEX;AAEA,MAAMa,eAAe,GAAG;EACvBC,aAAa,EAAE,CAAC;EAChBC,cAAc,EAAE,CAAC;EACjBC,qBAAqB,EAAE;AACxB,CAAC;AAED,SAASC,gBAAgBA,CAAE;EAAEC;AAAQ,CAAC,EAAG;EACxC,MAAM,CAAEC,YAAY,EAAEC,eAAe,CAAE,GAAGnF,QAAQ,CACjD4E,eAAe,CAACC,aACjB,CAAC;EACD,MAAM,CAAEO,oBAAoB,EAAEC,uBAAuB,CAAE,GAAGrF,QAAQ,CAAE,CAAC,CAAE,CAAC;EACxE,MAAM,CAAEsF,YAAY,EAAEC,eAAe,CAAE,GAAGvF,QAAQ,CAAE,KAAM,CAAC;EAC3D,MAAMwF,gBAAgB,GAAGC,mBAAmB,CAAEJ,uBAAuB,EAAE,MACtEF,eAAe,CAAEP,eAAe,CAACE,cAAe,CACjD,CAAC;EACD,MAAMY,OAAO,GAAG3C,UAAU,CAAC,CAAC;EAC5B,MAAM;IAAE4C;EAAiB,CAAC,GAAGtF,WAAW,CAAEE,SAAU,CAAC;EACrD,MAAM;IAAEqF,iBAAiB;IAAEC;EAAoB,CAAC,GAC/CxF,WAAW,CAAEsB,YAAa,CAAC;EAC5B,MAAMmE,YAAY,GAAG5F,MAAM,CAAE,IAAK,CAAC;EACnC,MAAM6F,QAAQ,GAAGvF,gBAAgB,CAAE,QAAQ,EAAE,GAAI,CAAC;EAElD,MAAMwF,OAAO,GAAG5F,SAAS,CAAI6F,MAAM,IAAM;IACxC;IACA,OAAOA,MAAM,CAAE1F,SAAU,CAAC,CAAC2F,eAAe,CAAE,MAAM,EAAE,gBAAiB,CAAC,EACnEnF,IAAI;EACR,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMoF,2BAA2B,GAAG;IACnC,YAAY,EAAEH,OAAO;IACrB1C,IAAI,EAAE5B,OAAO;IACZ;IACAD,EAAE,CAAE,SAAU,CAAC,EACfuE,OAAO,GAAG,GAAG,GAAG,IAAII,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CACxC;EACD,CAAC;EAEDlG,SAAS,CAAE,MAAM;IAChB;IACA;IACA,IACC2F,YAAY,CAACQ,OAAO,IACpBpB,YAAY,KAAKN,eAAe,CAACC,aAAa,EAC7C;MACD,MAAM,CAAE0B,cAAc,CAAE,GAAGzE,KAAK,CAAC0E,SAAS,CAACC,IAAI,CAC9CX,YAAY,CAACQ,OACd,CAAC;MACDC,cAAc,EAAEzE,KAAK,CAAC,CAAC;IACxB;EACD,CAAC,EAAE,CAAEoD,YAAY,CAAG,CAAC;EAErB,eAAewB,cAAcA,CAAEC,QAAQ,EAAEC,cAAc,GAAG,IAAI,EAAG;IAChE,IAAKtB,YAAY,EAAG;MACnB;IACD;IACAC,eAAe,CAAE,IAAK,CAAC;IACvB,IAAI;MACH,MAAM;QAAE9B,KAAK;QAAEG,WAAW;QAAEiD;MAAK,CAAC,GAAGF,QAAQ;MAC7C,MAAMG,WAAW,GAAG,MAAMnB,gBAAgB,CACzC,UAAU,EACV5D,kBAAkB,EAClB;QACC6B,WAAW;QACX;QACAiD,IAAI,EAAEA,IAAI,CAACE,QAAQ,CAAC,CAAC;QACrBC,MAAM,EAAE,SAAS;QACjBvD,KAAK;QACL;QACAwD,gBAAgB,EAAEL;MACnB,CAAC,EACD;QAAEM,YAAY,EAAE;MAAK,CACtB,CAAC;;MAED;MACAxB,OAAO,CAACyB,QAAQ,CACf,IAAKpF,kBAAkB,IAAM+E,WAAW,CAACM,EAAE,cAC5C,CAAC;MAEDvB,mBAAmB,CAClBnE,OAAO;MACN;MACAD,EAAE,CAAE,4BAA6B,CAAC,EAClC1B,cAAc,CAAE+G,WAAW,CAACrD,KAAK,EAAE4D,QAAQ,IAAI5D,KAAM,CACtD,CAAC,EACD;QACC6D,IAAI,EAAE;MACP,CACD,CAAC;IACF,CAAC,CAAC,OAAQC,KAAK,EAAG;MACjB,MAAMC,YAAY,GACjBD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACG,IAAI,KAAK,eAAe,GAC5CH,KAAK,CAACE,OAAO,GACbhG,EAAE,CAAE,gDAAiD,CAAC;MAE1DmE,iBAAiB,CAAE4B,YAAY,EAAE;QAChCF,IAAI,EAAE;MACP,CAAE,CAAC;IACJ,CAAC,SAAS;MACT/B,eAAe,CAAE,KAAM,CAAC;IACzB;EACD;EACA,MAAMoC,YAAY,GAAGA,CAAA,KAAM;IAC1B1C,OAAO,CAAC,CAAC;IACTE,eAAe,CAAEP,eAAe,CAACC,aAAc,CAAC;EACjD,CAAC;EAED,IAAI+C,UAAU,GAAGnG,EAAE,CAAE,cAAe,CAAC;EACrC,IAAKyD,YAAY,KAAKN,eAAe,CAACE,cAAc,EAAG;IACtD8C,UAAU,GAAGlG,OAAO;IACnB;IACAD,EAAE,CAAE,kBAAmB,CAAC,EACxB2D,oBAAoB,CAACyC,MAAM,CAACC,aAC7B,CAAC;EACF,CAAC,MAAM,IAAK5C,YAAY,KAAKN,eAAe,CAACG,qBAAqB,EAAG;IACpE6C,UAAU,GAAGnG,EAAE,CAAE,wBAAyB,CAAC;EAC5C;EAEA,oBACCmB,KAAA,CAACtD,KAAK;IACLmE,KAAK,EAAGmE,UAAY;IACpBjE,SAAS,EAAGvE,IAAI,CAAE,mCAAmC,EAAE;MACtD,iDAAiD,EAChD8F,YAAY,KAAKN,eAAe,CAACC,aAAa;MAC/C,iCAAiC,EAChCK,YAAY,KAAKN,eAAe,CAACE;IACnC,CAAE,CAAG;IACLiD,cAAc,EAAGJ,YAAc;IAC/BK,gBAAgB,EACf9C,YAAY,KAAKN,eAAe,CAACG,qBAAqB,GACnD,0CAA0C,GAC1CkD,SACH;IACDC,GAAG,EAAGpC,YAAc;IAAA/B,QAAA,GAElBmB,YAAY,KAAKN,eAAe,CAACC,aAAa,iBAC/CjC,KAAA,CAACpD,IAAI;MACJ2I,OAAO,EAAGpC,QAAQ,GAAG,CAAC,GAAG,CAAG;MAC5BqC,GAAG,EAAG,CAAG;MACT/D,KAAK,EAAC,YAAY;MAClBC,OAAO,EAAC,QAAQ;MAChBX,SAAS,EAAC,qDAAqD;MAAAI,QAAA,gBAE/DrB,IAAA,CAAC7C,IAAI;QAAC8D,SAAS,EAAC,mDAAmD;QAAAI,QAAA,EAChEtC,EAAE,CACH,+CACD;MAAC,CACI,CAAC,EACL+D,gBAAgB,CAAC6C,GAAG,CAAI1B,QAAQ,IAAM;QACvC,MAAM;UAAElD,KAAK;UAAEoD,IAAI;UAAE/C;QAAQ,CAAC,GAAG6C,QAAQ;QACzC,oBACCjE,IAAA,CAACc,gBAAgB;UAEhBC,KAAK,EAAGA,KAAO;UACfC,SAAS,EAAC,QAAQ;UAClBC,SAAS,EAAC,6CAA6C;UACvDC,WAAW,EACVuC,2BAA2B,CAAEU,IAAI,CACjC;UACDhD,IAAI,EAAGZ,cAAc,CAAE4D,IAAI,CAAE,IAAI7F,MAAQ;UACzC8C,OAAO,EAAGA,CAAA,KACTA,OAAO,GACJA,OAAO,CAAE6C,QAAS,CAAC,GACnBD,cAAc,CAAEC,QAAS;QAC5B,GAZKE,IAaN,CAAC;MAEJ,CAAE,CAAC,eACHnE,IAAA,CAACc,gBAAgB;QAChBC,KAAK,EAAGhC,EAAE,CAAE,iBAAkB,CAAG;QACjCiC,SAAS,EAAC,KAAK;QACfC,SAAS,EAAC,oDAAoD;QAC9DE,IAAI,EAAG/C,IAAM;QACbgD,OAAO,EAAGA,CAAA,KACTqB,eAAe,CACdP,eAAe,CAACG,qBACjB,CACA;QAAAhB,QAAA,eAEDrB,IAAA,CAAChD,IAAI;UACJiF,UAAU,EAAG,aAAe,CAAC;UAAA;UAAAZ,QAAA,EAE3BtC,EAAE,CACH,gEACD;QAAC,CACI;MAAC,CACU,CAAC;IAAA,CACd,CACN,EACCyD,YAAY,KAAKN,eAAe,CAACE,cAAc,iBAChDpC,IAAA,CAACV,6BAA6B;MAC7BsG,QAAQ,EAAG5B,cAAgB;MAC3BtB,oBAAoB,EAAGA,oBAAsB;MAC7CmD,MAAM,EAAGA,CAAA,KACRpD,eAAe,CAAEP,eAAe,CAACC,aAAc,CAC/C;MACDiB,YAAY,EAAGA;IAAc,CAC7B,CACD,EACCZ,YAAY,KAAKN,eAAe,CAACG,qBAAqB,iBACvDrC,IAAA,CAACH,oCAAoC;MACpCmE,cAAc,EAAGA,cAAgB;MACjC6B,MAAM,EAAGA,CAAA,KACRpD,eAAe,CAAEP,eAAe,CAACC,aAAc;IAC/C,CACD,CACD;EAAA,CACK,CAAC;AAEV;AAEA,SAAS2D,WAAWA,CAAA,EAAG;EACtB,MAAM,CAAEC,SAAS,EAAEC,YAAY,CAAE,GAAG1I,QAAQ,CAAE,KAAM,CAAC;EAErD,MAAM;IAAE2I;EAAS,CAAC,GAAGvI,SAAS,CAAI6F,MAAM,IAAM;IAC7C,MAAM;MAAE2C;IAAY,CAAC,GAAG3C,MAAM,CAAE1F,SAAU,CAAC;IAE3C,OAAO;MACNoI,QAAQ,EAAEC,WAAW,CAAE7G,kBAAmB;IAC3C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,IAAK,CAAE4G,QAAQ,EAAG;IACjB,OAAO,IAAI;EACZ;EAEA,oBACC/F,KAAA,CAAAE,SAAA;IAAAiB,QAAA,gBACCrB,IAAA,CAACrD,MAAM;MACNwJ,OAAO,EAAC,SAAS;MACjB/E,OAAO,EAAGA,CAAA,KAAM4E,YAAY,CAAE,IAAK,CAAG;MACtCzE,KAAK,EAAG0E,QAAQ,CAACd,MAAM,CAACiB,YAAc;MACtC9E,qBAAqB;MAAAD,QAAA,EAEnB4E,QAAQ,CAACd,MAAM,CAACiB;IAAY,CACvB,CAAC,EACPL,SAAS,iBACV/F,IAAA,CAACsC,gBAAgB;MAACC,OAAO,EAAGA,CAAA,KAAMyD,YAAY,CAAE,KAAM;IAAG,CAAE,CAC3D;EAAA,CACA,CAAC;AAEL;AAEA,SAASjD,mBAAmBA,CAAEJ,uBAAuB,EAAEvB,OAAO,EAAG;EAChE,MAAMiF,iBAAiB,GAAG9G,oBAAoB,CAAC,CAAC;EAChD,MAAM+G,oBAAoB,GAAG9G,uBAAuB,CAAC,CAAC;EACtD,MAAM+G,qBAAqB,GAAG,CAAEF,iBAAiB,IAAI,EAAE,EAAGV,GAAG,CAC5D,CAAE;IAAExB;EAAK,CAAC,KAAMA,IACjB,CAAC;EACD,MAAMqC,uBAAuB,GAAG,CAAEF,oBAAoB,IAAI,EAAE,EAAGG,MAAM,CAClExC,QAAQ,IACT3D,sBAAsB,CAACoG,QAAQ,CAAEzC,QAAQ,CAACE,IAAK,CAAC,IAChD,CAAEoC,qBAAqB,CAACG,QAAQ,CAAEzC,QAAQ,CAACE,IAAK,CAClD,CAAC;EACD,MAAMwC,eAAe,GAAKC,qBAAqB,IAAM;IACpDxF,OAAO,GAAG,CAAC;IACXuB,uBAAuB,CAAEiE,qBAAsB,CAAC;EACjD,CAAC;EACD;EACA;EACA;EACA;EACA,MAAMC,mCAAmC,GAAG,CAAE,GAAGL,uBAAuB,CAAE;EAC1E,MAAM;IAAEM,0BAA0B;IAAEC;EAAoB,CAAC,GACxDtH,sBAAsB,CAAEkH,eAAgB,CAAC;EAC1C,MAAM;IAAEK,yBAAyB;IAAEC;EAAmB,CAAC,GACtDvH,oBAAoB,CAAEiH,eAAgB,CAAC;EAExC,MAAMO,cAAc,GAAGvH,iBAAiB,CAAEgH,eAAgB,CAAC;EAC3D,CACC,GAAGG,0BAA0B,EAC7B,GAAGE,yBAAyB,EAC5BE,cAAc,CACd,CAACC,OAAO,CAAIC,QAAQ,IAAM;IAC1B,IAAK,CAAEA,QAAQ,EAAG;MACjB;IACD;IACA,MAAMC,UAAU,GAAGR,mCAAmC,CAACS,SAAS,CAC7DrD,QAAQ,IAAMA,QAAQ,CAACE,IAAI,KAAKiD,QAAQ,CAACjD,IAC5C,CAAC;IACD;IACA;IACA;IACA;IACA;IACA,IAAKkD,UAAU,GAAG,CAAC,CAAC,EAAG;MACtBR,mCAAmC,CAAEQ,UAAU,CAAE,GAAGD,QAAQ;IAC7D,CAAC,MAAM;MACNP,mCAAmC,CAACU,IAAI,CAAEH,QAAS,CAAC;IACrD;EACD,CAAE,CAAC;EACH;EACAP,mCAAmC,EAAEW,IAAI,CAAE,CAAEC,SAAS,EAAEC,SAAS,KAAM;IACtE,OACCpH,sBAAsB,CAACqH,OAAO,CAAEF,SAAS,CAACtD,IAAK,CAAC,GAChD7D,sBAAsB,CAACqH,OAAO,CAAED,SAAS,CAACvD,IAAK,CAAC;EAElD,CAAE,CAAC;EACH,MAAMrB,gBAAgB,GAAG,CACxB,GAAG+D,mCAAmC,EACtC,GAAGjH,2BAA2B,CAAC,CAAC,EAChC,GAAGqH,kBAAkB,EACrB,GAAGF,mBAAmB,CACtB;EACD,OAAOjE,gBAAgB;AACxB;AAEA,eAAevF,IAAI,CAAEuI,WAAY,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","Button","Modal","__experimentalGrid","Grid","__experimentalText","Text","__experimentalVStack","VStack","Flex","Icon","decodeEntities","useState","memo","useRef","useEffect","useSelect","useDispatch","store","coreStore","useViewportMatch","archive","blockMeta","calendar","category","commentAuthorAvatar","edit","home","layout","list","media","notFound","page","pin","verse","search","tag","__","sprintf","noticesStore","privateApis","routerPrivateApis","focus","TEMPLATE_POST_TYPE","AddCustomTemplateModalContent","useDefaultTemplateTypes","useTaxonomiesMenuItems","usePostTypeMenuItems","useAuthorMenuItem","usePostTypeArchiveMenuItems","AddCustomGenericTemplateModalContent","unlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","useHistory","DEFAULT_TEMPLATE_SLUGS","TEMPLATE_ICONS","single","index","author","taxonomy","date","attachment","TemplateListItem","title","direction","className","description","icon","onClick","children","__next40pxDefaultSize","label","showTooltip","as","spacing","align","justify","style","width","alignment","weight","lineHeight","modalContentMap","templatesList","customTemplate","customGenericTemplate","NewTemplateModal","onClose","modalContent","setModalContent","entityForSuggestions","setEntityForSuggestions","isSubmitting","setIsSubmitting","missingTemplates","useMissingTemplates","history","saveEntityRecord","createErrorNotice","createSuccessNotice","containerRef","isMobile","homeUrl","select","getEntityRecord","TEMPLATE_SHORT_DESCRIPTIONS","Date","getFullYear","current","firstFocusable","focusable","find","createTemplate","template","isWPSuggestion","slug","newTemplate","toString","status","is_wp_suggestion","throwOnError","navigate","id","rendered","type","error","errorMessage","message","code","onModalClose","modalTitle","labels","singular_name","onRequestClose","overlayClassName","undefined","ref","columns","gap","map","onSelect","onBack","NewTemplate","showModal","setShowModal","postType","getPostType","variant","add_new_item","defaultTemplateTypes","missingDefaultTemplates","filter","includes","onClickMenuItem","_entityForSuggestions","enhancedMissingDefaultTemplateTypes","defaultTaxonomiesMenuItems","taxonomiesMenuItems","defaultPostTypesMenuItems","postTypesMenuItems","authorMenuItem","forEach","menuItem","matchIndex","findIndex","push","sort","template1","template2","indexOf"],"sources":["@wordpress/edit-site/src/components/add-new-template/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalGrid as Grid,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tIcon,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, memo, useRef, useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tarchive,\n\tblockMeta,\n\tcalendar,\n\tcategory,\n\tcommentAuthorAvatar,\n\tedit,\n\thome,\n\tlayout,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpin,\n\tverse,\n\tsearch,\n\ttag,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModalContent from './add-custom-template-modal-content';\nimport {\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n\tusePostTypeArchiveMenuItems,\n} from './utils';\nimport AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'home',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\thome: verse,\n\tsingle: pin,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: commentAuthorAvatar,\n\ttaxonomy: blockMeta,\n\tdate: calendar,\n\ttag,\n\tattachment: media,\n};\n\nfunction TemplateListItem( {\n\ttitle,\n\tdirection,\n\tclassName,\n\tdescription,\n\ticon,\n\tonClick,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\tonClick={ onClick }\n\t\t\tlabel={ description }\n\t\t\tshowTooltip={ !! description }\n\t\t>\n\t\t\t<Flex\n\t\t\t\tas=\"span\"\n\t\t\t\tspacing={ 2 }\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\tdirection={ direction }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-add-new-template__template-icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-name\"\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tspacing={ 0 }\n\t\t\t\t>\n\t\t\t\t\t<Text\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t\t{ children }\n\t\t\t\t</VStack>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nconst modalContentMap = {\n\ttemplatesList: 1,\n\tcustomTemplate: 2,\n\tcustomGenericTemplate: 3,\n};\n\nfunction NewTemplateModal( { onClose } ) {\n\tconst [ modalContent, setModalContent ] = useState(\n\t\tmodalContentMap.templatesList\n\t);\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>\n\t\tsetModalContent( modalContentMap.customTemplate )\n\t);\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst containerRef = useRef( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst homeUrl = useSelect( ( select ) => {\n\t\t// Site index.\n\t\treturn select( coreStore ).getEntityRecord( 'root', '__unstableBase' )\n\t\t\t?.home;\n\t}, [] );\n\n\tconst TEMPLATE_SHORT_DESCRIPTIONS = {\n\t\t'front-page': homeUrl,\n\t\tdate: sprintf(\n\t\t\t// translators: %s: The homepage url.\n\t\t\t__( 'E.g. %s' ),\n\t\t\thomeUrl + '/' + new Date().getFullYear()\n\t\t),\n\t};\n\n\tuseEffect( () => {\n\t\t// Focus the first focusable element when component mounts or UI changes\n\t\t// We don't want to focus on the other modals because they have their own focus management.\n\t\tif (\n\t\t\tcontainerRef.current &&\n\t\t\tmodalContent === modalContentMap.templatesList\n\t\t) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ modalContent ] );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\tif ( isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting( true );\n\t\ttry {\n\t\t\tconst { title, description, slug } = template;\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.navigate(\n\t\t\t\t`/${ TEMPLATE_POST_TYPE }/${ newTemplate.id }?canvas=edit`\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newTemplate.title?.rendered || title )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\tconst onModalClose = () => {\n\t\tonClose();\n\t\tsetModalContent( modalContentMap.templatesList );\n\t};\n\n\tlet modalTitle = __( 'Add template' );\n\tif ( modalContent === modalContentMap.customTemplate ) {\n\t\tmodalTitle = sprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Add template: %s' ),\n\t\t\tentityForSuggestions.labels.singular_name\n\t\t);\n\t} else if ( modalContent === modalContentMap.customGenericTemplate ) {\n\t\tmodalTitle = __( 'Create custom template' );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tclassName={ clsx( 'edit-site-add-new-template__modal', {\n\t\t\t\t'edit-site-add-new-template__modal_template_list':\n\t\t\t\t\tmodalContent === modalContentMap.templatesList,\n\t\t\t\t'edit-site-custom-template-modal':\n\t\t\t\t\tmodalContent === modalContentMap.customTemplate,\n\t\t\t} ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\toverlayClassName={\n\t\t\t\tmodalContent === modalContentMap.customGenericTemplate\n\t\t\t\t\t? 'edit-site-custom-generic-template__modal'\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tref={ containerRef }\n\t\t>\n\t\t\t{ modalContent === modalContentMap.templatesList && (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={ isMobile ? 2 : 3 }\n\t\t\t\t\tgap={ 4 }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-list__contents\"\n\t\t\t\t>\n\t\t\t\t\t<Flex className=\"edit-site-add-new-template__template-list__prompt\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select what the new template should apply to:'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\tconst { title, slug, onClick } = template;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-add-new-template__template-button\"\n\t\t\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t\t\tTEMPLATE_SHORT_DESCRIPTIONS[ slug ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ TEMPLATE_ICONS[ slug ] || layout }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t}\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\t<TemplateListItem\n\t\t\t\t\t\ttitle={ __( 'Custom template' ) }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"edit-site-add-new-template__custom-template-button\"\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetModalContent(\n\t\t\t\t\t\t\t\tmodalContentMap.customGenericTemplate\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\t\t<Text\n\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TemplateListItem>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customTemplate && (\n\t\t\t\t<AddCustomTemplateModalContent\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customGenericTemplate && (\n\t\t\t\t<AddCustomGenericTemplateModalContent\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n\nfunction NewTemplate() {\n\tconst [ showModal, setShowModal ] = useState( false );\n\n\tconst { postType } = useSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( TEMPLATE_POST_TYPE ),\n\t\t};\n\t}, [] );\n\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ showModal && (\n\t\t\t\t<NewTemplateModal onClose={ () => setShowModal( false ) } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates( setEntityForSuggestions, onClick ) {\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) => DEFAULT_TEMPLATE_SLUGS.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tonClick?.();\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...usePostTypeArchiveMenuItems(),\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n\nexport default memo( NewTemplate );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -134,7 +134,6 @@ export function usePostTypeArchiveMenuItems() {
|
|
|
134
134
|
}
|
|
135
135
|
export const usePostTypeMenuItems = onClickMenuItem => {
|
|
136
136
|
const publicPostTypes = usePublicPostTypes();
|
|
137
|
-
const existingTemplates = useExistingTemplates();
|
|
138
137
|
const defaultTemplateTypes = useDefaultTemplateTypes();
|
|
139
138
|
// We need to keep track of naming conflicts. If a conflict
|
|
140
139
|
// occurs, we need to add slug.
|
|
@@ -165,9 +164,6 @@ export const usePostTypeMenuItems = onClickMenuItem => {
|
|
|
165
164
|
return accumulator;
|
|
166
165
|
}, {}), [publicPostTypes]);
|
|
167
166
|
const postTypesInfo = useEntitiesInfo('postType', templatePrefixes);
|
|
168
|
-
const existingTemplateSlugs = (existingTemplates || []).map(({
|
|
169
|
-
slug
|
|
170
|
-
}) => slug);
|
|
171
167
|
const menuItems = (publicPostTypes || []).reduce((accumulator, postType) => {
|
|
172
168
|
const {
|
|
173
169
|
slug,
|
|
@@ -181,7 +177,6 @@ export const usePostTypeMenuItems = onClickMenuItem => {
|
|
|
181
177
|
const defaultTemplateType = defaultTemplateTypes?.find(({
|
|
182
178
|
slug: _slug
|
|
183
179
|
}) => _slug === generalTemplateSlug);
|
|
184
|
-
const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
|
|
185
180
|
const _needsUniqueIdentifier = needsUniqueIdentifier(postType);
|
|
186
181
|
let menuItemTitle = labels.template_name || sprintf(
|
|
187
182
|
// translators: %s: Name of the post type e.g: "Post".
|
|
@@ -236,14 +231,12 @@ export const usePostTypeMenuItems = onClickMenuItem => {
|
|
|
236
231
|
}
|
|
237
232
|
},
|
|
238
233
|
labels,
|
|
239
|
-
hasGeneralTemplate,
|
|
240
234
|
template
|
|
241
235
|
});
|
|
242
236
|
};
|
|
243
237
|
}
|
|
244
|
-
// We don't need to add the menu item if there are no
|
|
245
|
-
|
|
246
|
-
if (!hasGeneralTemplate || hasEntities) {
|
|
238
|
+
// We don't need to add the menu item if there are no entities.
|
|
239
|
+
if (hasEntities) {
|
|
247
240
|
accumulator.push(menuItem);
|
|
248
241
|
}
|
|
249
242
|
return accumulator;
|
|
@@ -443,7 +436,9 @@ export function useAuthorMenuItem(onClickMenuItem) {
|
|
|
443
436
|
getSpecificTemplate: suggestion => {
|
|
444
437
|
const templateSlug = `author-${suggestion.slug}`;
|
|
445
438
|
return {
|
|
446
|
-
title:
|
|
439
|
+
title: sprintf(
|
|
440
|
+
// translators: %s: Name of the author e.g: "Admin".
|
|
441
|
+
__('Author: %s'), suggestion.name),
|
|
447
442
|
slug: templateSlug,
|
|
448
443
|
templatePrefix: 'author'
|
|
449
444
|
};
|
|
@@ -465,68 +460,6 @@ export function useAuthorMenuItem(onClickMenuItem) {
|
|
|
465
460
|
}
|
|
466
461
|
}
|
|
467
462
|
|
|
468
|
-
/**
|
|
469
|
-
* Helper hook that filters all the existing templates by the given
|
|
470
|
-
* object with the entity's slug as key and the template prefix as value.
|
|
471
|
-
*
|
|
472
|
-
* Example:
|
|
473
|
-
* `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]
|
|
474
|
-
* `templatePrefixes` is: { post_tag: 'tag' }
|
|
475
|
-
* It will return: { post_tag: ['apple'] }
|
|
476
|
-
*
|
|
477
|
-
* Note: We append the `-` to the given template prefix in this function for our checks.
|
|
478
|
-
*
|
|
479
|
-
* @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
|
|
480
|
-
* @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.
|
|
481
|
-
*/
|
|
482
|
-
const useExistingTemplateSlugs = templatePrefixes => {
|
|
483
|
-
const existingTemplates = useExistingTemplates();
|
|
484
|
-
const existingSlugs = useMemo(() => {
|
|
485
|
-
return Object.entries(templatePrefixes || {}).reduce((accumulator, [slug, prefix]) => {
|
|
486
|
-
const slugsWithTemplates = (existingTemplates || []).reduce((_accumulator, existingTemplate) => {
|
|
487
|
-
const _prefix = `${prefix}-`;
|
|
488
|
-
if (existingTemplate.slug.startsWith(_prefix)) {
|
|
489
|
-
_accumulator.push(existingTemplate.slug.substring(_prefix.length));
|
|
490
|
-
}
|
|
491
|
-
return _accumulator;
|
|
492
|
-
}, []);
|
|
493
|
-
if (slugsWithTemplates.length) {
|
|
494
|
-
accumulator[slug] = slugsWithTemplates;
|
|
495
|
-
}
|
|
496
|
-
return accumulator;
|
|
497
|
-
}, {});
|
|
498
|
-
}, [templatePrefixes, existingTemplates]);
|
|
499
|
-
return existingSlugs;
|
|
500
|
-
};
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* Helper hook that finds the existing records with an associated template,
|
|
504
|
-
* as they need to be excluded from the template suggestions.
|
|
505
|
-
*
|
|
506
|
-
* @param {string} entityName The entity's name.
|
|
507
|
-
* @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.
|
|
508
|
-
* @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.
|
|
509
|
-
* @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.
|
|
510
|
-
*/
|
|
511
|
-
const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryParameters = {}) => {
|
|
512
|
-
const slugsToExcludePerEntity = useExistingTemplateSlugs(templatePrefixes);
|
|
513
|
-
const recordsToExcludePerEntity = useSelect(select => {
|
|
514
|
-
return Object.entries(slugsToExcludePerEntity || {}).reduce((accumulator, [slug, slugsWithTemplates]) => {
|
|
515
|
-
const entitiesWithTemplates = select(coreStore).getEntityRecords(entityName, slug, {
|
|
516
|
-
_fields: 'id',
|
|
517
|
-
context: 'view',
|
|
518
|
-
slug: slugsWithTemplates,
|
|
519
|
-
...additionalQueryParameters[slug]
|
|
520
|
-
});
|
|
521
|
-
if (entitiesWithTemplates?.length) {
|
|
522
|
-
accumulator[slug] = entitiesWithTemplates;
|
|
523
|
-
}
|
|
524
|
-
return accumulator;
|
|
525
|
-
}, {});
|
|
526
|
-
}, [slugsToExcludePerEntity]);
|
|
527
|
-
return recordsToExcludePerEntity;
|
|
528
|
-
};
|
|
529
|
-
|
|
530
463
|
/**
|
|
531
464
|
* Helper hook that returns information about an entity having
|
|
532
465
|
* records that we can create a specific template for.
|
|
@@ -543,34 +476,25 @@ const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryPara
|
|
|
543
476
|
* @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.
|
|
544
477
|
*/
|
|
545
478
|
const useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT) => {
|
|
546
|
-
const recordsToExcludePerEntity = useTemplatesToExclude(entityName, templatePrefixes, additionalQueryParameters);
|
|
547
479
|
const entitiesHasRecords = useSelect(select => {
|
|
548
480
|
return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
|
|
549
|
-
const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
|
|
550
|
-
id
|
|
551
|
-
}) => id) || [];
|
|
552
481
|
accumulator[slug] = !!select(coreStore).getEntityRecords(entityName, slug, {
|
|
553
482
|
per_page: 1,
|
|
554
483
|
_fields: 'id',
|
|
555
484
|
context: 'view',
|
|
556
|
-
exclude: existingEntitiesIds,
|
|
557
485
|
...additionalQueryParameters[slug]
|
|
558
486
|
})?.length;
|
|
559
487
|
return accumulator;
|
|
560
488
|
}, {});
|
|
561
|
-
}, [templatePrefixes,
|
|
489
|
+
}, [templatePrefixes, entityName, additionalQueryParameters]);
|
|
562
490
|
const entitiesInfo = useMemo(() => {
|
|
563
491
|
return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
|
|
564
|
-
const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
|
|
565
|
-
id
|
|
566
|
-
}) => id) || [];
|
|
567
492
|
accumulator[slug] = {
|
|
568
|
-
hasEntities: entitiesHasRecords[slug]
|
|
569
|
-
existingEntitiesIds
|
|
493
|
+
hasEntities: entitiesHasRecords[slug]
|
|
570
494
|
};
|
|
571
495
|
return accumulator;
|
|
572
496
|
}, {});
|
|
573
|
-
}, [templatePrefixes,
|
|
497
|
+
}, [templatePrefixes, entitiesHasRecords]);
|
|
574
498
|
return entitiesInfo;
|
|
575
499
|
};
|
|
576
500
|
//# sourceMappingURL=utils.js.map
|