@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.
Files changed (62) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-template/add-custom-template-modal-content.js +1 -1
  3. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  4. package/build/components/add-new-template/index.js +1 -5
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +8 -84
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/dataviews-actions/index.js +51 -1
  9. package/build/components/dataviews-actions/index.js.map +1 -1
  10. package/build/components/editor/index.js +1 -1
  11. package/build/components/editor/index.js.map +1 -1
  12. package/build/components/editor/use-resolve-edited-entity.js +42 -14
  13. package/build/components/editor/use-resolve-edited-entity.js.map +1 -1
  14. package/build/components/page-templates/fields.js +65 -5
  15. package/build/components/page-templates/fields.js.map +1 -1
  16. package/build/components/page-templates/hooks.js +1 -1
  17. package/build/components/page-templates/hooks.js.map +1 -1
  18. package/build/components/page-templates/index.js +103 -29
  19. package/build/components/page-templates/index.js.map +1 -1
  20. package/build/components/sidebar-navigation-screen-templates-browse/content.js +11 -5
  21. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  22. package/build/components/site-editor-routes/index.js +1 -1
  23. package/build/components/site-editor-routes/index.js.map +1 -1
  24. package/build/components/site-editor-routes/template-item.js +29 -23
  25. package/build/components/site-editor-routes/template-item.js.map +1 -1
  26. package/build-module/components/add-new-template/add-custom-template-modal-content.js +1 -1
  27. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -1
  28. package/build-module/components/add-new-template/index.js +2 -6
  29. package/build-module/components/add-new-template/index.js.map +1 -1
  30. package/build-module/components/add-new-template/utils.js +8 -84
  31. package/build-module/components/add-new-template/utils.js.map +1 -1
  32. package/build-module/components/dataviews-actions/index.js +49 -0
  33. package/build-module/components/dataviews-actions/index.js.map +1 -1
  34. package/build-module/components/editor/index.js +1 -1
  35. package/build-module/components/editor/index.js.map +1 -1
  36. package/build-module/components/editor/use-resolve-edited-entity.js +42 -14
  37. package/build-module/components/editor/use-resolve-edited-entity.js.map +1 -1
  38. package/build-module/components/page-templates/fields.js +65 -5
  39. package/build-module/components/page-templates/fields.js.map +1 -1
  40. package/build-module/components/page-templates/hooks.js +1 -1
  41. package/build-module/components/page-templates/hooks.js.map +1 -1
  42. package/build-module/components/page-templates/index.js +105 -31
  43. package/build-module/components/page-templates/index.js.map +1 -1
  44. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +11 -5
  45. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  46. package/build-module/components/site-editor-routes/index.js +2 -2
  47. package/build-module/components/site-editor-routes/index.js.map +1 -1
  48. package/build-module/components/site-editor-routes/template-item.js +28 -22
  49. package/build-module/components/site-editor-routes/template-item.js.map +1 -1
  50. package/package.json +41 -41
  51. package/src/components/add-new-template/add-custom-template-modal-content.js +1 -3
  52. package/src/components/add-new-template/index.js +1 -8
  53. package/src/components/add-new-template/utils.js +9 -118
  54. package/src/components/dataviews-actions/index.js +51 -0
  55. package/src/components/editor/index.js +1 -0
  56. package/src/components/editor/use-resolve-edited-entity.js +54 -7
  57. package/src/components/page-templates/fields.js +70 -4
  58. package/src/components/page-templates/hooks.js +1 -1
  59. package/src/components/page-templates/index.js +160 -57
  60. package/src/components/sidebar-navigation-screen-templates-browse/content.js +17 -7
  61. package/src/components/site-editor-routes/index.js +2 -1
  62. 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
- sidebar({
21
- siteData
22
- }) {
23
- const isBlockTheme = siteData.currentTheme?.is_block_theme;
24
- return isBlockTheme ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidebarNavigationScreenTemplatesBrowse.default, {
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","templateItemRoute","exports","name","path","areas","sidebar","siteData","isBlockTheme","currentTheme","is_block_theme","jsx","default","backPath","mobile","preview"],"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\nexport const templateItemRoute = {\n\tname: 'template-item',\n\tpath: '/wp_template/*postId',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<SidebarNavigationScreenTemplatesBrowse backPath=\"/\" />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<Editor />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tpreview( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<Editor />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t},\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;;AAKO,MAAMI,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG;EAChCE,IAAI,EAAE,eAAe;EACrBC,IAAI,EAAE,sBAAsB;EAC5BC,KAAK,EAAE;IACNC,OAAOA,CAAE;MAAEC;IAAS,CAAC,EAAG;MACvB,MAAMC,YAAY,GAAGD,QAAQ,CAACE,YAAY,EAAEC,cAAc;MAC1D,OAAOF,YAAY,gBAClB,IAAAR,WAAA,CAAAW,GAAA,EAACb,uCAAA,CAAAc,OAAsC;QAACC,QAAQ,EAAC;MAAG,CAAE,CAAC,gBAEvD,IAAAb,WAAA,CAAAW,GAAA,EAACZ,mCAAA,CAAAa,OAAkC,IAAE,CACrC;IACF,CAAC;IACDE,MAAMA,CAAE;MAAEP;IAAS,CAAC,EAAG;MACtB,MAAMC,YAAY,GAAGD,QAAQ,CAACE,YAAY,EAAEC,cAAc;MAC1D,OAAOF,YAAY,gBAClB,IAAAR,WAAA,CAAAW,GAAA,EAAChB,OAAA,CAAAiB,OAAM,IAAE,CAAC,gBAEV,IAAAZ,WAAA,CAAAW,GAAA,EAACZ,mCAAA,CAAAa,OAAkC,IAAE,CACrC;IACF,CAAC;IACDG,OAAOA,CAAE;MAAER;IAAS,CAAC,EAAG;MACvB,MAAMC,YAAY,GAAGD,QAAQ,CAACE,YAAY,EAAEC,cAAc;MAC1D,OAAOF,YAAY,gBAClB,IAAAR,WAAA,CAAAW,GAAA,EAAChB,OAAA,CAAAiB,OAAM,IAAE,CAAC,gBAEV,IAAAZ,WAAA,CAAAW,GAAA,EAACZ,mCAAA,CAAAa,OAAkC,IAAE,CACrC;IACF;EACD;AACD,CAAC","ignoreList":[]}
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(entityForSuggestions.hasGeneralTemplate);
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 { useExistingTemplates, useDefaultTemplateTypes, useTaxonomiesMenuItems, usePostTypeMenuItems, useAuthorMenuItem, usePostTypeArchiveMenuItems } from './utils';
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 existingTemplateSlugs = (existingTemplates || []).map(({
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":"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","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
- // entities and the general template exists.
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: templateSlug,
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, recordsToExcludePerEntity, entityName, additionalQueryParameters]);
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, recordsToExcludePerEntity, entitiesHasRecords]);
497
+ }, [templatePrefixes, entitiesHasRecords]);
574
498
  return entitiesInfo;
575
499
  };
576
500
  //# sourceMappingURL=utils.js.map