@wordpress/block-library 6.0.9 → 6.0.10

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 (132) hide show
  1. package/build/cover/edit.js +8 -3
  2. package/build/cover/edit.js.map +1 -1
  3. package/build/gallery/edit.js +1 -1
  4. package/build/gallery/edit.js.map +1 -1
  5. package/build/gallery/v1/update-gallery-modal.js +1 -1
  6. package/build/gallery/v1/update-gallery-modal.js.map +1 -1
  7. package/build/index.js +3 -2
  8. package/build/index.js.map +1 -1
  9. package/build/navigation/deprecated.js +118 -12
  10. package/build/navigation/deprecated.js.map +1 -1
  11. package/build/navigation/edit/index.js +45 -31
  12. package/build/navigation/edit/index.js.map +1 -1
  13. package/build/navigation/edit/navigation-menu-selector.js +2 -2
  14. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  15. package/build/navigation/edit/placeholder/index.js +16 -48
  16. package/build/navigation/edit/placeholder/index.js.map +1 -1
  17. package/build/navigation/edit/unsaved-inner-blocks.js +4 -35
  18. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  19. package/build/navigation/edit/use-create-navigation-menu.js +50 -0
  20. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -0
  21. package/build/navigation/edit/use-generate-default-navigation-title.js +73 -0
  22. package/build/navigation/edit/use-generate-default-navigation-title.js.map +1 -0
  23. package/build/navigation/index.js +1 -1
  24. package/build/navigation/save.js +2 -2
  25. package/build/navigation/save.js.map +1 -1
  26. package/build/navigation/use-navigation-menu.js +19 -8
  27. package/build/navigation/use-navigation-menu.js.map +1 -1
  28. package/build/pattern/index.js +1 -1
  29. package/build/post-featured-image/edit.js +2 -3
  30. package/build/post-featured-image/edit.js.map +1 -1
  31. package/build/post-terms/index.js +1 -1
  32. package/build/post-title/edit.js +2 -2
  33. package/build/post-title/edit.js.map +1 -1
  34. package/build/query-title/index.js +1 -1
  35. package/build/site-logo/index.js +1 -1
  36. package/build/site-tagline/index.js +1 -1
  37. package/build/site-title/index.js +1 -1
  38. package/build/template-part/edit/placeholder/index.js +1 -1
  39. package/build/template-part/edit/placeholder/index.js.map +1 -1
  40. package/build/template-part/index.js +2 -1
  41. package/build/template-part/index.js.map +1 -1
  42. package/build-module/cover/edit.js +8 -3
  43. package/build-module/cover/edit.js.map +1 -1
  44. package/build-module/gallery/edit.js +1 -1
  45. package/build-module/gallery/edit.js.map +1 -1
  46. package/build-module/gallery/v1/update-gallery-modal.js +1 -1
  47. package/build-module/gallery/v1/update-gallery-modal.js.map +1 -1
  48. package/build-module/index.js +3 -2
  49. package/build-module/index.js.map +1 -1
  50. package/build-module/navigation/deprecated.js +118 -12
  51. package/build-module/navigation/deprecated.js.map +1 -1
  52. package/build-module/navigation/edit/index.js +46 -31
  53. package/build-module/navigation/edit/index.js.map +1 -1
  54. package/build-module/navigation/edit/navigation-menu-selector.js +2 -2
  55. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  56. package/build-module/navigation/edit/placeholder/index.js +15 -45
  57. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  58. package/build-module/navigation/edit/unsaved-inner-blocks.js +6 -35
  59. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  60. package/build-module/navigation/edit/use-create-navigation-menu.js +36 -0
  61. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -0
  62. package/build-module/navigation/edit/use-generate-default-navigation-title.js +57 -0
  63. package/build-module/navigation/edit/use-generate-default-navigation-title.js.map +1 -0
  64. package/build-module/navigation/index.js +1 -1
  65. package/build-module/navigation/save.js +2 -2
  66. package/build-module/navigation/save.js.map +1 -1
  67. package/build-module/navigation/use-navigation-menu.js +19 -8
  68. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  69. package/build-module/pattern/index.js +1 -1
  70. package/build-module/post-featured-image/edit.js +2 -3
  71. package/build-module/post-featured-image/edit.js.map +1 -1
  72. package/build-module/post-terms/index.js +1 -1
  73. package/build-module/post-title/edit.js +2 -2
  74. package/build-module/post-title/edit.js.map +1 -1
  75. package/build-module/query-title/index.js +1 -1
  76. package/build-module/site-logo/index.js +1 -1
  77. package/build-module/site-tagline/index.js +1 -1
  78. package/build-module/site-title/index.js +1 -1
  79. package/build-module/template-part/edit/placeholder/index.js +2 -2
  80. package/build-module/template-part/edit/placeholder/index.js.map +1 -1
  81. package/build-module/template-part/index.js +2 -1
  82. package/build-module/template-part/index.js.map +1 -1
  83. package/build-style/editor-rtl.css +5 -4
  84. package/build-style/editor.css +5 -4
  85. package/build-style/gallery/editor-rtl.css +1 -0
  86. package/build-style/gallery/editor.css +1 -0
  87. package/build-style/post-featured-image/editor-rtl.css +2 -2
  88. package/build-style/post-featured-image/editor.css +2 -2
  89. package/build-style/site-logo/editor-rtl.css +2 -2
  90. package/build-style/site-logo/editor.css +2 -2
  91. package/package.json +8 -8
  92. package/src/calendar/index.php +2 -2
  93. package/src/cover/edit.js +8 -1
  94. package/src/gallery/edit.js +1 -1
  95. package/src/gallery/editor.scss +1 -0
  96. package/src/gallery/v1/update-gallery-modal.js +1 -1
  97. package/src/index.js +27 -25
  98. package/src/navigation/block.json +1 -1
  99. package/src/navigation/deprecated.js +105 -4
  100. package/src/navigation/edit/index.js +43 -36
  101. package/src/navigation/edit/navigation-menu-selector.js +2 -2
  102. package/src/navigation/edit/placeholder/index.js +16 -62
  103. package/src/navigation/edit/unsaved-inner-blocks.js +6 -57
  104. package/src/navigation/edit/use-create-navigation-menu.js +39 -0
  105. package/src/navigation/edit/use-generate-default-navigation-title.js +79 -0
  106. package/src/navigation/index.php +128 -14
  107. package/src/navigation/save.js +2 -2
  108. package/src/navigation/use-navigation-menu.js +20 -9
  109. package/src/page-list/index.php +5 -0
  110. package/src/pattern/block.json +1 -1
  111. package/src/post-featured-image/edit.js +2 -5
  112. package/src/post-featured-image/editor.scss +2 -2
  113. package/src/post-terms/block.json +1 -1
  114. package/src/post-title/edit.js +2 -2
  115. package/src/query-title/block.json +1 -1
  116. package/src/site-logo/block.json +1 -1
  117. package/src/site-logo/editor.scss +2 -2
  118. package/src/site-tagline/block.json +1 -1
  119. package/src/site-title/block.json +1 -1
  120. package/src/template-part/block.json +2 -1
  121. package/src/template-part/edit/placeholder/index.js +2 -2
  122. package/src/template-part/index.php +2 -1
  123. package/build/navigation/edit/navigation-menu-name-modal.js +0 -55
  124. package/build/navigation/edit/navigation-menu-name-modal.js.map +0 -1
  125. package/build/navigation/edit/navigation-menu-publish-button.js +0 -53
  126. package/build/navigation/edit/navigation-menu-publish-button.js.map +0 -1
  127. package/build-module/navigation/edit/navigation-menu-name-modal.js +0 -47
  128. package/build-module/navigation/edit/navigation-menu-name-modal.js.map +0 -1
  129. package/build-module/navigation/edit/navigation-menu-publish-button.js +0 -40
  130. package/build-module/navigation/edit/navigation-menu-publish-button.js.map +0 -1
  131. package/src/navigation/edit/navigation-menu-name-modal.js +0 -69
  132. package/src/navigation/edit/navigation-menu-publish-button.js +0 -57
@@ -34,9 +34,9 @@ function NavigationMenuSelector(_ref) {
34
34
  const {
35
35
  navigationMenus
36
36
  } = (0, _useNavigationMenu.default)();
37
- const navigationMenuId = (0, _coreData.useEntityId)('postType', 'wp_navigation');
37
+ const ref = (0, _coreData.useEntityId)('postType', 'wp_navigation');
38
38
  return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuGroup, null, (0, _element.createElement)(_components.MenuItemsChoice, {
39
- value: navigationMenuId,
39
+ value: ref,
40
40
  onSelect: selectedId => onSelect(navigationMenus.find(post => post.id === selectedId)),
41
41
  choices: navigationMenus.map(_ref2 => {
42
42
  let {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/navigation-menu-selector.js"],"names":["NavigationMenuSelector","onSelect","onCreateNew","navigationMenus","navigationMenuId","selectedId","find","post","id","map","title","label","rendered","value"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGe,SAASA,sBAAT,OAA6D;AAAA,MAA5B;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAA4B;AAC3E,QAAM;AAAEC,IAAAA;AAAF,MAAsB,iCAA5B;AACA,QAAMC,gBAAgB,GAAG,2BAAa,UAAb,EAAyB,eAAzB,CAAzB;AAEA,SACC,qDACC,4BAAC,qBAAD,QACC,4BAAC,2BAAD;AACC,IAAA,KAAK,EAAGA,gBADT;AAEC,IAAA,QAAQ,EAAKC,UAAF,IACVJ,QAAQ,CACPE,eAAe,CAACG,IAAhB,CACGC,IAAF,IAAYA,IAAI,CAACC,EAAL,KAAYH,UADzB,CADO,CAHV;AASC,IAAA,OAAO,EAAGF,eAAe,CAACM,GAAhB,CAAqB,SAAqB;AAAA,UAAnB;AAAED,QAAAA,EAAF;AAAME,QAAAA;AAAN,OAAmB;AACnD,YAAMC,KAAK,GAAG,kCAAgBD,KAAK,CAACE,QAAtB,CAAd;AACA,aAAO;AACNC,QAAAA,KAAK,EAAEL,EADD;AAENG,QAAAA,KAFM;AAGN,sBAAc;AACb;AACA,sBAAI,gBAAJ,CAFa,EAGbA,KAHa;AAHR,OAAP;AASA,KAXS;AATX,IADD,CADD,EAyBC,4BAAC,qBAAD,QACC,4BAAC,oBAAD;AAAU,IAAA,OAAO,EAAGT;AAApB,KACG,cAAI,iBAAJ,CADH,CADD,CAzBD,CADD;AAiCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuGroup, MenuItem, MenuItemsChoice } from '@wordpress/components';\nimport { useEntityId } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\n\nexport default function NavigationMenuSelector( { onSelect, onCreateNew } ) {\n\tconst { navigationMenus } = useNavigationMenu();\n\tconst navigationMenuId = useEntityId( 'postType', 'wp_navigation' );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuGroup>\n\t\t\t\t<MenuItemsChoice\n\t\t\t\t\tvalue={ navigationMenuId }\n\t\t\t\t\tonSelect={ ( selectedId ) =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tnavigationMenus.find(\n\t\t\t\t\t\t\t\t( post ) => post.id === selectedId\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\tchoices={ navigationMenus.map( ( { id, title } ) => {\n\t\t\t\t\t\tconst label = decodeEntities( title.rendered );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t'aria-label': sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: The name of a menu. */\n\t\t\t\t\t\t\t\t__( \"Switch to '%s'\" ),\n\t\t\t\t\t\t\t\tlabel\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</MenuGroup>\n\t\t\t<MenuGroup>\n\t\t\t\t<MenuItem onClick={ onCreateNew }>\n\t\t\t\t\t{ __( 'Create new menu' ) }\n\t\t\t\t</MenuItem>\n\t\t\t</MenuGroup>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/navigation-menu-selector.js"],"names":["NavigationMenuSelector","onSelect","onCreateNew","navigationMenus","ref","selectedId","find","post","id","map","title","label","rendered","value"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGe,SAASA,sBAAT,OAA6D;AAAA,MAA5B;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAA4B;AAC3E,QAAM;AAAEC,IAAAA;AAAF,MAAsB,iCAA5B;AACA,QAAMC,GAAG,GAAG,2BAAa,UAAb,EAAyB,eAAzB,CAAZ;AAEA,SACC,qDACC,4BAAC,qBAAD,QACC,4BAAC,2BAAD;AACC,IAAA,KAAK,EAAGA,GADT;AAEC,IAAA,QAAQ,EAAKC,UAAF,IACVJ,QAAQ,CACPE,eAAe,CAACG,IAAhB,CACGC,IAAF,IAAYA,IAAI,CAACC,EAAL,KAAYH,UADzB,CADO,CAHV;AASC,IAAA,OAAO,EAAGF,eAAe,CAACM,GAAhB,CAAqB,SAAqB;AAAA,UAAnB;AAAED,QAAAA,EAAF;AAAME,QAAAA;AAAN,OAAmB;AACnD,YAAMC,KAAK,GAAG,kCAAgBD,KAAK,CAACE,QAAtB,CAAd;AACA,aAAO;AACNC,QAAAA,KAAK,EAAEL,EADD;AAENG,QAAAA,KAFM;AAGN,sBAAc;AACb;AACA,sBAAI,gBAAJ,CAFa,EAGbA,KAHa;AAHR,OAAP;AASA,KAXS;AATX,IADD,CADD,EAyBC,4BAAC,qBAAD,QACC,4BAAC,oBAAD;AAAU,IAAA,OAAO,EAAGT;AAApB,KACG,cAAI,iBAAJ,CADH,CADD,CAzBD,CADD;AAiCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuGroup, MenuItem, MenuItemsChoice } from '@wordpress/components';\nimport { useEntityId } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\n\nexport default function NavigationMenuSelector( { onSelect, onCreateNew } ) {\n\tconst { navigationMenus } = useNavigationMenu();\n\tconst ref = useEntityId( 'postType', 'wp_navigation' );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuGroup>\n\t\t\t\t<MenuItemsChoice\n\t\t\t\t\tvalue={ ref }\n\t\t\t\t\tonSelect={ ( selectedId ) =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tnavigationMenus.find(\n\t\t\t\t\t\t\t\t( post ) => post.id === selectedId\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\tchoices={ navigationMenus.map( ( { id, title } ) => {\n\t\t\t\t\t\tconst label = decodeEntities( title.rendered );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t'aria-label': sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: The name of a menu. */\n\t\t\t\t\t\t\t\t__( \"Switch to '%s'\" ),\n\t\t\t\t\t\t\t\tlabel\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</MenuGroup>\n\t\t\t<MenuGroup>\n\t\t\t\t<MenuItem onClick={ onCreateNew }>\n\t\t\t\t\t{ __( 'Create new menu' ) }\n\t\t\t\t</MenuItem>\n\t\t\t</MenuGroup>\n\t\t</>\n\t);\n}\n"]}
@@ -13,10 +13,6 @@ var _blocks = require("@wordpress/blocks");
13
13
 
14
14
  var _components = require("@wordpress/components");
15
15
 
16
- var _coreData = require("@wordpress/core-data");
17
-
18
- var _data = require("@wordpress/data");
19
-
20
16
  var _i18n = require("@wordpress/i18n");
21
17
 
22
18
  var _icons = require("@wordpress/icons");
@@ -29,10 +25,10 @@ var _placeholderPreview = _interopRequireDefault(require("./placeholder-preview"
29
25
 
30
26
  var _menuItemsToBlocks = _interopRequireDefault(require("../../menu-items-to-blocks"));
31
27
 
32
- var _navigationMenuNameModal = _interopRequireDefault(require("../navigation-menu-name-modal"));
33
-
34
28
  var _useNavigationMenu = _interopRequireDefault(require("../../use-navigation-menu"));
35
29
 
30
+ var _useCreateNavigationMenu = _interopRequireDefault(require("../use-create-navigation-menu"));
31
+
36
32
  /**
37
33
  * WordPress dependencies
38
34
  */
@@ -93,6 +89,7 @@ const ExistingMenusDropdown = _ref => {
93
89
 
94
90
  function NavigationPlaceholder(_ref3) {
95
91
  let {
92
+ clientId,
96
93
  onFinish,
97
94
  canSwitchNavigationMenu,
98
95
  hasResolvedNavigationMenus
@@ -100,28 +97,12 @@ function NavigationPlaceholder(_ref3) {
100
97
  const [selectedMenu, setSelectedMenu] = (0, _element.useState)();
101
98
  const [isCreatingFromMenu, setIsCreatingFromMenu] = (0, _element.useState)(false);
102
99
  const [menuName, setMenuName] = (0, _element.useState)('');
103
- const [isNewMenuModalVisible, setIsNewMenuModalVisible] = (0, _element.useState)(false);
104
- const [createEmpty, setCreateEmpty] = (0, _element.useState)(false);
105
- const {
106
- saveEntityRecord
107
- } = (0, _data.useDispatch)(_coreData.store); // This callback uses data from the two placeholder steps and only creates
108
- // a new navigation menu when the user completes the final step.
109
-
110
- const createNavigationMenu = (0, _element.useCallback)(async function () {
111
- let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _i18n.__)('Untitled Navigation Menu');
112
- let blocks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
113
- const record = {
114
- title,
115
- content: (0, _blocks.serialize)(blocks),
116
- status: 'publish'
117
- };
118
- const navigationMenu = await saveEntityRecord('postType', 'wp_navigation', record);
119
- return navigationMenu;
120
- }, [_blocks.serialize, saveEntityRecord]);
121
-
122
- const onFinishMenuCreation = async (navigationMenuTitle, blocks) => {
100
+ const createNavigationMenu = (0, _useCreateNavigationMenu.default)(clientId);
101
+
102
+ const onFinishMenuCreation = async function (blocks) {
103
+ let navigationMenuTitle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
123
104
  const navigationMenu = await createNavigationMenu(navigationMenuTitle, blocks);
124
- onFinish(navigationMenu);
105
+ onFinish(navigationMenu, blocks);
125
106
  };
126
107
 
127
108
  const {
@@ -138,7 +119,7 @@ function NavigationPlaceholder(_ref3) {
138
119
  const {
139
120
  innerBlocks: blocks
140
121
  } = (0, _menuItemsToBlocks.default)(menuItems);
141
- onFinishMenuCreation(name, blocks);
122
+ onFinishMenuCreation(blocks, name);
142
123
  }, [menuItems, _menuItemsToBlocks.default, onFinish]);
143
124
 
144
125
  const onCreateFromMenu = name => {
@@ -154,14 +135,13 @@ function NavigationPlaceholder(_ref3) {
154
135
  setMenuName(name);
155
136
  };
156
137
 
157
- const onCreateEmptyMenu = name => {
158
- onFinishMenuCreation(name, []);
138
+ const onCreateEmptyMenu = () => {
139
+ onFinishMenuCreation([]);
159
140
  };
160
141
 
161
- const onCreateAllPages = name => {
142
+ const onCreateAllPages = () => {
162
143
  const block = [(0, _blocks.createBlock)('core/page-list')];
163
- onFinishMenuCreation(name, block);
164
- setIsNewMenuModalVisible(true);
144
+ onFinishMenuCreation(block);
165
145
  };
166
146
 
167
147
  (0, _element.useEffect)(() => {
@@ -196,22 +176,10 @@ function NavigationPlaceholder(_ref3) {
196
176
  onCreateFromMenu: onCreateFromMenu
197
177
  }), (0, _element.createElement)("hr", null)) : undefined, hasPages ? (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.Button, {
198
178
  variant: "tertiary",
199
- onClick: () => {
200
- setIsNewMenuModalVisible(true);
201
- setCreateEmpty(false);
202
- }
179
+ onClick: onCreateAllPages
203
180
  }, (0, _i18n.__)('Add all pages')), (0, _element.createElement)("hr", null)) : undefined, (0, _element.createElement)(_components.Button, {
204
181
  variant: "tertiary",
205
- onClick: () => {
206
- setIsNewMenuModalVisible(true);
207
- setCreateEmpty(true);
208
- }
209
- }, (0, _i18n.__)('Start empty'))))), isNewMenuModalVisible && (0, _element.createElement)(_navigationMenuNameModal.default, {
210
- title: (0, _i18n.__)('Create your new navigation menu'),
211
- onRequestClose: () => {
212
- setIsNewMenuModalVisible(false);
213
- },
214
- onFinish: createEmpty ? onCreateEmptyMenu : onCreateAllPages
215
- }));
182
+ onClick: onCreateEmptyMenu
183
+ }, (0, _i18n.__)('Start empty'))))));
216
184
  }
217
185
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/placeholder/index.js"],"names":["ExistingMenusDropdown","canSwitchNavigationMenu","navigationMenus","setSelectedMenu","onFinish","menus","onCreateFromMenu","toggleProps","variant","iconPosition","className","isAlternate","onClose","map","menu","id","title","rendered","name","NavigationPlaceholder","hasResolvedNavigationMenus","selectedMenu","isCreatingFromMenu","setIsCreatingFromMenu","menuName","setMenuName","isNewMenuModalVisible","setIsNewMenuModalVisible","createEmpty","setCreateEmpty","saveEntityRecord","coreStore","createNavigationMenu","blocks","record","content","status","navigationMenu","serialize","onFinishMenuCreation","navigationMenuTitle","isResolvingPages","isResolvingMenus","menuItems","hasResolvedMenuItems","hasPages","hasMenus","isStillLoading","createFromMenu","innerBlocks","menuItemsToBlocks","onCreateEmptyMenu","onCreateAllPages","block","navigation","length","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { serialize, createBlock } from '@wordpress/blocks';\nimport {\n\tPlaceholder,\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useCallback, useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { navigation, Icon } from '@wordpress/icons';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\n\nimport useNavigationEntities from '../../use-navigation-entities';\nimport PlaceholderPreview from './placeholder-preview';\nimport menuItemsToBlocks from '../../menu-items-to-blocks';\nimport NavigationMenuNameModal from '../navigation-menu-name-modal';\nimport useNavigationMenu from '../../use-navigation-menu';\n\nconst ExistingMenusDropdown = ( {\n\tcanSwitchNavigationMenu,\n\tnavigationMenus,\n\tsetSelectedMenu,\n\tonFinish,\n\tmenus,\n\tonCreateFromMenu,\n} ) => {\n\tconst toggleProps = {\n\t\tvariant: 'tertiary',\n\t\ticonPosition: 'right',\n\t\tclassName: 'wp-block-navigation-placeholder__actions__dropdown',\n\t};\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttext={ __( 'Select menu' ) }\n\t\t\ticon={ null }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tpopoverProps={ { isAlternate: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup label={ __( 'Menus' ) }>\n\t\t\t\t\t\t{ canSwitchNavigationMenu &&\n\t\t\t\t\t\t\tnavigationMenus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetSelectedMenu( menu.id );\n\t\t\t\t\t\t\t\t\t\t\tonFinish( menu );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\tmenu.title.rendered\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t<MenuGroup label={ __( 'Classic Menus' ) }>\n\t\t\t\t\t\t{ menus?.map( ( menu ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetSelectedMenu( menu.id );\n\t\t\t\t\t\t\t\t\t\tonCreateFromMenu( menu.name );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ decodeEntities( menu.name ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n};\n\nexport default function NavigationPlaceholder( {\n\tonFinish,\n\tcanSwitchNavigationMenu,\n\thasResolvedNavigationMenus,\n} ) {\n\tconst [ selectedMenu, setSelectedMenu ] = useState();\n\n\tconst [ isCreatingFromMenu, setIsCreatingFromMenu ] = useState( false );\n\n\tconst [ menuName, setMenuName ] = useState( '' );\n\n\tconst [ isNewMenuModalVisible, setIsNewMenuModalVisible ] = useState(\n\t\tfalse\n\t);\n\n\tconst [ createEmpty, setCreateEmpty ] = useState( false );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\t// This callback uses data from the two placeholder steps and only creates\n\t// a new navigation menu when the user completes the final step.\n\tconst createNavigationMenu = useCallback(\n\t\tasync ( title = __( 'Untitled Navigation Menu' ), blocks = [] ) => {\n\t\t\tconst record = {\n\t\t\t\ttitle,\n\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\tstatus: 'publish',\n\t\t\t};\n\n\t\t\tconst navigationMenu = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord\n\t\t\t);\n\n\t\t\treturn navigationMenu;\n\t\t},\n\t\t[ serialize, saveEntityRecord ]\n\t);\n\n\tconst onFinishMenuCreation = async ( navigationMenuTitle, blocks ) => {\n\t\tconst navigationMenu = await createNavigationMenu(\n\t\t\tnavigationMenuTitle,\n\t\t\tblocks\n\t\t);\n\t\tonFinish( navigationMenu );\n\t};\n\n\tconst {\n\t\tisResolvingPages,\n\t\tmenus,\n\t\tisResolvingMenus,\n\t\tmenuItems,\n\t\thasResolvedMenuItems,\n\t\thasPages,\n\t\thasMenus,\n\t} = useNavigationEntities( selectedMenu );\n\n\tconst isStillLoading = isResolvingPages || isResolvingMenus;\n\n\tconst createFromMenu = useCallback(\n\t\t( name ) => {\n\t\t\tconst { innerBlocks: blocks } = menuItemsToBlocks( menuItems );\n\t\t\tonFinishMenuCreation( name, blocks );\n\t\t},\n\t\t[ menuItems, menuItemsToBlocks, onFinish ]\n\t);\n\n\tconst onCreateFromMenu = ( name ) => {\n\t\t// If we have menu items, create the block right away.\n\t\tif ( hasResolvedMenuItems ) {\n\t\t\tcreateFromMenu( name );\n\t\t\treturn;\n\t\t}\n\n\t\t// Otherwise, create the block when resolution finishes.\n\t\tsetIsCreatingFromMenu( true );\n\t\t// Store the name to use later.\n\t\tsetMenuName( name );\n\t};\n\n\tconst onCreateEmptyMenu = ( name ) => {\n\t\tonFinishMenuCreation( name, [] );\n\t};\n\n\tconst onCreateAllPages = ( name ) => {\n\t\tconst block = [ createBlock( 'core/page-list' ) ];\n\t\tonFinishMenuCreation( name, block );\n\t\tsetIsNewMenuModalVisible( true );\n\t};\n\n\tuseEffect( () => {\n\t\t// If the user selected a menu but we had to wait for menu items to\n\t\t// finish resolving, then create the block once resolution finishes.\n\t\tif ( isCreatingFromMenu && hasResolvedMenuItems ) {\n\t\t\tcreateFromMenu( menuName );\n\t\t\tsetIsCreatingFromMenu( false );\n\t\t}\n\t}, [ isCreatingFromMenu, hasResolvedMenuItems, menuName ] );\n\n\tconst { navigationMenus } = useNavigationMenu();\n\n\treturn (\n\t\t<>\n\t\t\t{ ( ! hasResolvedNavigationMenus || isStillLoading ) && (\n\t\t\t\t<PlaceholderPreview isLoading />\n\t\t\t) }\n\t\t\t{ hasResolvedNavigationMenus && ! isStillLoading && (\n\t\t\t\t<Placeholder className=\"wp-block-navigation-placeholder\">\n\t\t\t\t\t<PlaceholderPreview />\n\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__controls\">\n\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions\">\n\t\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions__indicator\">\n\t\t\t\t\t\t\t\t<Icon icon={ navigation } />{ ' ' }\n\t\t\t\t\t\t\t\t{ __( 'Navigation' ) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t{ hasMenus || navigationMenus.length ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<ExistingMenusDropdown\n\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu={\n\t\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tnavigationMenus={ navigationMenus }\n\t\t\t\t\t\t\t\t\t\tsetSelectedMenu={ setSelectedMenu }\n\t\t\t\t\t\t\t\t\t\tonFinish={ onFinish }\n\t\t\t\t\t\t\t\t\t\tmenus={ menus }\n\t\t\t\t\t\t\t\t\t\tonCreateFromMenu={ onCreateFromMenu }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\t\t\t\t\t\t\t{ hasPages ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetIsNewMenuModalVisible( true );\n\t\t\t\t\t\t\t\t\t\t\tsetCreateEmpty( false );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Add all pages' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetIsNewMenuModalVisible( true );\n\t\t\t\t\t\t\t\t\tsetCreateEmpty( true );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Start empty' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t\t{ isNewMenuModalVisible && (\n\t\t\t\t<NavigationMenuNameModal\n\t\t\t\t\ttitle={ __( 'Create your new navigation menu' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsNewMenuModalVisible( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonFinish={\n\t\t\t\t\t\tcreateEmpty ? onCreateEmptyMenu : onCreateAllPages\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/placeholder/index.js"],"names":["ExistingMenusDropdown","canSwitchNavigationMenu","navigationMenus","setSelectedMenu","onFinish","menus","onCreateFromMenu","toggleProps","variant","iconPosition","className","isAlternate","onClose","map","menu","id","title","rendered","name","NavigationPlaceholder","clientId","hasResolvedNavigationMenus","selectedMenu","isCreatingFromMenu","setIsCreatingFromMenu","menuName","setMenuName","createNavigationMenu","onFinishMenuCreation","blocks","navigationMenuTitle","navigationMenu","isResolvingPages","isResolvingMenus","menuItems","hasResolvedMenuItems","hasPages","hasMenus","isStillLoading","createFromMenu","innerBlocks","menuItemsToBlocks","onCreateEmptyMenu","onCreateAllPages","block","navigation","length","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPlaceholder,\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n} from '@wordpress/components';\nimport { useCallback, useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { navigation, Icon } from '@wordpress/icons';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\n\nimport useNavigationEntities from '../../use-navigation-entities';\nimport PlaceholderPreview from './placeholder-preview';\nimport menuItemsToBlocks from '../../menu-items-to-blocks';\nimport useNavigationMenu from '../../use-navigation-menu';\nimport useCreateNavigationMenu from '../use-create-navigation-menu';\n\nconst ExistingMenusDropdown = ( {\n\tcanSwitchNavigationMenu,\n\tnavigationMenus,\n\tsetSelectedMenu,\n\tonFinish,\n\tmenus,\n\tonCreateFromMenu,\n} ) => {\n\tconst toggleProps = {\n\t\tvariant: 'tertiary',\n\t\ticonPosition: 'right',\n\t\tclassName: 'wp-block-navigation-placeholder__actions__dropdown',\n\t};\n\treturn (\n\t\t<DropdownMenu\n\t\t\ttext={ __( 'Select menu' ) }\n\t\t\ticon={ null }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tpopoverProps={ { isAlternate: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup label={ __( 'Menus' ) }>\n\t\t\t\t\t\t{ canSwitchNavigationMenu &&\n\t\t\t\t\t\t\tnavigationMenus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetSelectedMenu( menu.id );\n\t\t\t\t\t\t\t\t\t\t\tonFinish( menu );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\tmenu.title.rendered\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t<MenuGroup label={ __( 'Classic Menus' ) }>\n\t\t\t\t\t\t{ menus?.map( ( menu ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetSelectedMenu( menu.id );\n\t\t\t\t\t\t\t\t\t\tonCreateFromMenu( menu.name );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ decodeEntities( menu.name ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n};\n\nexport default function NavigationPlaceholder( {\n\tclientId,\n\tonFinish,\n\tcanSwitchNavigationMenu,\n\thasResolvedNavigationMenus,\n} ) {\n\tconst [ selectedMenu, setSelectedMenu ] = useState();\n\tconst [ isCreatingFromMenu, setIsCreatingFromMenu ] = useState( false );\n\tconst [ menuName, setMenuName ] = useState( '' );\n\tconst createNavigationMenu = useCreateNavigationMenu( clientId );\n\n\tconst onFinishMenuCreation = async (\n\t\tblocks,\n\t\tnavigationMenuTitle = null\n\t) => {\n\t\tconst navigationMenu = await createNavigationMenu(\n\t\t\tnavigationMenuTitle,\n\t\t\tblocks\n\t\t);\n\t\tonFinish( navigationMenu, blocks );\n\t};\n\n\tconst {\n\t\tisResolvingPages,\n\t\tmenus,\n\t\tisResolvingMenus,\n\t\tmenuItems,\n\t\thasResolvedMenuItems,\n\t\thasPages,\n\t\thasMenus,\n\t} = useNavigationEntities( selectedMenu );\n\n\tconst isStillLoading = isResolvingPages || isResolvingMenus;\n\n\tconst createFromMenu = useCallback(\n\t\t( name ) => {\n\t\t\tconst { innerBlocks: blocks } = menuItemsToBlocks( menuItems );\n\t\t\tonFinishMenuCreation( blocks, name );\n\t\t},\n\t\t[ menuItems, menuItemsToBlocks, onFinish ]\n\t);\n\n\tconst onCreateFromMenu = ( name ) => {\n\t\t// If we have menu items, create the block right away.\n\t\tif ( hasResolvedMenuItems ) {\n\t\t\tcreateFromMenu( name );\n\t\t\treturn;\n\t\t}\n\n\t\t// Otherwise, create the block when resolution finishes.\n\t\tsetIsCreatingFromMenu( true );\n\t\t// Store the name to use later.\n\t\tsetMenuName( name );\n\t};\n\n\tconst onCreateEmptyMenu = () => {\n\t\tonFinishMenuCreation( [] );\n\t};\n\n\tconst onCreateAllPages = () => {\n\t\tconst block = [ createBlock( 'core/page-list' ) ];\n\t\tonFinishMenuCreation( block );\n\t};\n\n\tuseEffect( () => {\n\t\t// If the user selected a menu but we had to wait for menu items to\n\t\t// finish resolving, then create the block once resolution finishes.\n\t\tif ( isCreatingFromMenu && hasResolvedMenuItems ) {\n\t\t\tcreateFromMenu( menuName );\n\t\t\tsetIsCreatingFromMenu( false );\n\t\t}\n\t}, [ isCreatingFromMenu, hasResolvedMenuItems, menuName ] );\n\n\tconst { navigationMenus } = useNavigationMenu();\n\n\treturn (\n\t\t<>\n\t\t\t{ ( ! hasResolvedNavigationMenus || isStillLoading ) && (\n\t\t\t\t<PlaceholderPreview isLoading />\n\t\t\t) }\n\t\t\t{ hasResolvedNavigationMenus && ! isStillLoading && (\n\t\t\t\t<Placeholder className=\"wp-block-navigation-placeholder\">\n\t\t\t\t\t<PlaceholderPreview />\n\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__controls\">\n\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions\">\n\t\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions__indicator\">\n\t\t\t\t\t\t\t\t<Icon icon={ navigation } />{ ' ' }\n\t\t\t\t\t\t\t\t{ __( 'Navigation' ) }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t{ hasMenus || navigationMenus.length ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<ExistingMenusDropdown\n\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu={\n\t\t\t\t\t\t\t\t\t\t\tcanSwitchNavigationMenu\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tnavigationMenus={ navigationMenus }\n\t\t\t\t\t\t\t\t\t\tsetSelectedMenu={ setSelectedMenu }\n\t\t\t\t\t\t\t\t\t\tonFinish={ onFinish }\n\t\t\t\t\t\t\t\t\t\tmenus={ menus }\n\t\t\t\t\t\t\t\t\t\tonCreateFromMenu={ onCreateFromMenu }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\t\t\t\t\t\t\t{ hasPages ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ onCreateAllPages }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Add all pages' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t<hr />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : undefined }\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\tonClick={ onCreateEmptyMenu }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Start empty' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -13,19 +13,15 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _blockEditor = require("@wordpress/block-editor");
15
15
 
16
- var _blocks = require("@wordpress/blocks");
17
-
18
16
  var _components = require("@wordpress/components");
19
17
 
20
18
  var _coreData = require("@wordpress/core-data");
21
19
 
22
20
  var _data = require("@wordpress/data");
23
21
 
24
- var _i18n = require("@wordpress/i18n");
25
-
26
22
  var _useNavigationMenu = _interopRequireDefault(require("../use-navigation-menu"));
27
23
 
28
- var _useTemplatePartAreaLabel = _interopRequireDefault(require("../use-template-part-area-label"));
24
+ var _useCreateNavigationMenu = _interopRequireDefault(require("./use-create-navigation-menu"));
29
25
 
30
26
  /**
31
27
  * External dependencies
@@ -68,9 +64,6 @@ function UnsavedInnerBlocks(_ref) {
68
64
  onChange: NOOP,
69
65
  onInput: NOOP
70
66
  });
71
- const {
72
- saveEntityRecord
73
- } = (0, _data.useDispatch)(_coreData.store);
74
67
  const {
75
68
  isSaving,
76
69
  draftNavigationMenus,
@@ -95,19 +88,7 @@ function UnsavedInnerBlocks(_ref) {
95
88
  hasResolvedNavigationMenus,
96
89
  navigationMenus
97
90
  } = (0, _useNavigationMenu.default)();
98
- const createNavigationMenu = (0, _element.useCallback)(async title => {
99
- const record = {
100
- title,
101
- content: (0, _blocks.serialize)(blocks),
102
- status: 'draft'
103
- };
104
- const navigationMenu = await saveEntityRecord('postType', 'wp_navigation', record);
105
- return navigationMenu;
106
- }, [blocks, _blocks.serialize, saveEntityRecord]); // Because we can't conditionally call hooks, pass an undefined client id
107
- // arg to bypass the expensive `useTemplateArea` code. The hook will return
108
- // early.
109
-
110
- const area = (0, _useTemplatePartAreaLabel.default)(isDisabled ? undefined : clientId); // Automatically save the uncontrolled blocks.
91
+ const createNavigationMenu = (0, _useCreateNavigationMenu.default)(clientId); // Automatically save the uncontrolled blocks.
111
92
 
112
93
  (0, _element.useEffect)(async () => {
113
94
  // The block will be disabled when used in a BlockPreview.
@@ -127,22 +108,10 @@ function UnsavedInnerBlocks(_ref) {
127
108
  }
128
109
 
129
110
  savingLock.current = true;
130
- const title = area ? (0, _i18n.sprintf)( // translators: %s: the name of a menu (e.g. Header navigation).
131
- (0, _i18n.__)('%s navigation'), area) : // translators: 'navigation' as in website navigation.
132
- (0, _i18n.__)('Navigation'); // Determine how many menus start with the automatic title.
133
-
134
- const matchingMenuTitleCount = [...draftNavigationMenus, ...navigationMenus].reduce((count, menu) => {
135
- var _menu$title, _menu$title$raw;
136
-
137
- return menu !== null && menu !== void 0 && (_menu$title = menu.title) !== null && _menu$title !== void 0 && (_menu$title$raw = _menu$title.raw) !== null && _menu$title$raw !== void 0 && _menu$title$raw.startsWith(title) ? count + 1 : count;
138
- }, 0); // Append a number to the end of the title if a menu with
139
- // the same name exists.
140
-
141
- const titleWithCount = matchingMenuTitleCount > 0 ? `${title} ${matchingMenuTitleCount + 1}` : title;
142
- const menu = await createNavigationMenu(titleWithCount);
111
+ const menu = await createNavigationMenu(null, blocks);
143
112
  onSave(menu);
144
113
  savingLock.current = false;
145
- }, [isDisabled, isSaving, hasResolvedDraftNavigationMenus, hasResolvedNavigationMenus, draftNavigationMenus, navigationMenus, hasSelection, createNavigationMenu, area]);
114
+ }, [isDisabled, isSaving, hasResolvedDraftNavigationMenus, hasResolvedNavigationMenus, draftNavigationMenus, navigationMenus, hasSelection, createNavigationMenu, blocks]);
146
115
  return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)("nav", blockProps, (0, _element.createElement)("div", {
147
116
  className: "wp-block-navigation__unsaved-changes"
148
117
  }, (0, _element.createElement)(_components.Disabled, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js"],"names":["NOOP","EMPTY_OBJECT","DRAFT_MENU_PARAMS","status","per_page","UnsavedInnerBlocks","blockProps","blocks","clientId","hasSavedUnsavedInnerBlocks","onSave","hasSelection","isDisabled","Disabled","Context","savingLock","innerBlocksProps","renderAppender","undefined","value","onChange","onInput","saveEntityRecord","coreStore","isSaving","draftNavigationMenus","hasResolvedDraftNavigationMenus","select","getEntityRecords","hasFinishedResolution","isSavingEntityRecord","hasResolvedNavigationMenus","navigationMenus","createNavigationMenu","title","record","content","navigationMenu","serialize","area","current","matchingMenuTitleCount","reduce","count","menu","raw","startsWith","titleWithCount"],"mappings":";;;;;;;;;AAaA;;AAVA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAKA;;AACA;;AApBA;AACA;AACA;;AAGA;AACA;AACA;;AASA;AACA;AACA;AAIA,MAAMA,IAAI,GAAG,MAAM,CAAE,CAArB;;AACA,MAAMC,YAAY,GAAG,EAArB;AACA,MAAMC,iBAAiB,GAAG,CACzB,UADyB,EAEzB,eAFyB,EAGzB;AAAEC,EAAAA,MAAM,EAAE,OAAV;AAAmBC,EAAAA,QAAQ,EAAE,CAAC;AAA9B,CAHyB,CAA1B;;AAMe,SAASC,kBAAT,OAOX;AAAA,MAPwC;AAC3CC,IAAAA,UAD2C;AAE3CC,IAAAA,MAF2C;AAG3CC,IAAAA,QAH2C;AAI3CC,IAAAA,0BAJ2C;AAK3CC,IAAAA,MAL2C;AAM3CC,IAAAA;AAN2C,GAOxC;AACH;AACA;AACA,QAAMC,UAAU,GAAG,yBAAYC,qBAASC,OAArB,CAAnB;AACA,QAAMC,UAAU,GAAG,qBAAQ,KAAR,CAAnB;AAEA,QAAMC,gBAAgB,GAAG,sCAAqBV,UAArB,EAAiC;AACzDW,IAAAA,cAAc,EAAEN,YAAY,GAAGO,SAAH,GAAe,KADc;AAGzD;AACA;AACA;AACAC,IAAAA,KAAK,EAAEZ,MANkD;AAOzDa,IAAAA,QAAQ,EAAEpB,IAP+C;AAQzDqB,IAAAA,OAAO,EAAErB;AARgD,GAAjC,CAAzB;AAUA,QAAM;AAAEsB,IAAAA;AAAF,MAAuB,uBAAaC,eAAb,CAA7B;AAEA,QAAM;AACLC,IAAAA,QADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA;AAHK,MAIF,qBACDC,MAAF,IAAc;AACb,QAAKf,UAAL,EAAkB;AACjB,aAAOX,YAAP;AACA;;AAED,UAAM;AACL2B,MAAAA,gBADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEJ,eAAF,CAJV;AAMA,WAAO;AACNC,MAAAA,QAAQ,EAAEM,oBAAoB,CAAE,UAAF,EAAc,eAAd,CADxB;AAENL,MAAAA,oBAAoB,EAAEG,gBAAgB,CAAE,GAAG1B,iBAAL,CAFhC;AAGNwB,MAAAA,+BAA+B,EAAEG,qBAAqB,CACrD,kBADqD,EAErD3B,iBAFqD;AAHhD,KAAP;AAQA,GApBE,EAqBH,CAAEU,UAAF,CArBG,CAJJ;AA4BA,QAAM;AAAEmB,IAAAA,0BAAF;AAA8BC,IAAAA;AAA9B,MAAkD,iCAAxD;AAEA,QAAMC,oBAAoB,GAAG,0BAC5B,MAAQC,KAAR,IAAmB;AAClB,UAAMC,MAAM,GAAG;AACdD,MAAAA,KADc;AAEdE,MAAAA,OAAO,EAAE,uBAAW7B,MAAX,CAFK;AAGdJ,MAAAA,MAAM,EAAE;AAHM,KAAf;AAMA,UAAMkC,cAAc,GAAG,MAAMf,gBAAgB,CAC5C,UAD4C,EAE5C,eAF4C,EAG5Ca,MAH4C,CAA7C;AAMA,WAAOE,cAAP;AACA,GAf2B,EAgB5B,CAAE9B,MAAF,EAAU+B,iBAAV,EAAqBhB,gBAArB,CAhB4B,CAA7B,CAhDG,CAmEH;AACA;AACA;;AACA,QAAMiB,IAAI,GAAG,uCAA0B3B,UAAU,GAAGM,SAAH,GAAeV,QAAnD,CAAb,CAtEG,CAwEH;;AACA,0BAAW,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QACCI,UAAU,IACVH,0BADA,IAEAe,QAFA,IAGAT,UAAU,CAACyB,OAHX,IAIA,CAAEd,+BAJF,IAKA,CAAEK,0BALF,IAMA,CAAEpB,YAPH,EAQE;AACD;AACA;;AAEDI,IAAAA,UAAU,CAACyB,OAAX,GAAqB,IAArB;AACA,UAAMN,KAAK,GAAGK,IAAI,GACf,oBACA;AACA,kBAAI,eAAJ,CAFA,EAGAA,IAHA,CADe,GAMf;AACA,kBAAI,YAAJ,CAPH,CA1BsB,CAmCtB;;AACA,UAAME,sBAAsB,GAAG,CAC9B,GAAGhB,oBAD2B,EAE9B,GAAGO,eAF2B,EAG7BU,MAH6B,CAI9B,CAAEC,KAAF,EAASC,IAAT;AAAA;;AAAA,aACCA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,mBAAAA,IAAI,CAAEV,KAAN,uEAAaW,GAAb,4DAAkBC,UAAlB,CAA8BZ,KAA9B,IAAwCS,KAAK,GAAG,CAAhD,GAAoDA,KADrD;AAAA,KAJ8B,EAM9B,CAN8B,CAA/B,CApCsB,CA6CtB;AACA;;AACA,UAAMI,cAAc,GACnBN,sBAAsB,GAAG,CAAzB,GACI,GAAGP,KAAO,IAAIO,sBAAsB,GAAG,CAAG,EAD9C,GAEGP,KAHJ;AAKA,UAAMU,IAAI,GAAG,MAAMX,oBAAoB,CAAEc,cAAF,CAAvC;AACArC,IAAAA,MAAM,CAAEkC,IAAF,CAAN;AACA7B,IAAAA,UAAU,CAACyB,OAAX,GAAqB,KAArB;AACA,GAvDD,EAuDG,CACF5B,UADE,EAEFY,QAFE,EAGFE,+BAHE,EAIFK,0BAJE,EAKFN,oBALE,EAMFO,eANE,EAOFrB,YAPE,EAQFsB,oBARE,EASFM,IATE,CAvDH;AAmEA,SACC,qDACC,mCAAUjC,UAAV,EACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,oBAAD;AACC,IAAA,SAAS,EAAG,yBACX,8CADW,EAEX;AACC,mBAAaK;AADd,KAFW;AADb,KAQC,mCAAUK,gBAAV,CARD,CADD,EAWGL,YAAY,IAAI,4BAAC,mBAAD,OAXnB,CADD,CADD,CADD;AAmBA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps } from '@wordpress/block-editor';\nimport { serialize } from '@wordpress/blocks';\nimport { Disabled, Spinner } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback, useContext, useEffect, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useTemplatePartAreaLabel from '../use-template-part-area-label';\n\nconst NOOP = () => {};\nconst EMPTY_OBJECT = {};\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nexport default function UnsavedInnerBlocks( {\n\tblockProps,\n\tblocks,\n\tclientId,\n\thasSavedUnsavedInnerBlocks,\n\tonSave,\n\thasSelection,\n} ) {\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\tconst savingLock = useRef( false );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\trenderAppender: hasSelection ? undefined : false,\n\n\t\t// Make the inner blocks 'controlled'. This allows the block to always\n\t\t// work with controlled inner blocks, smoothing out the switch to using\n\t\t// an entity.\n\t\tvalue: blocks,\n\t\tonChange: NOOP,\n\t\tonInput: NOOP,\n\t} );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst {\n\t\tisSaving,\n\t\tdraftNavigationMenus,\n\t\thasResolvedDraftNavigationMenus,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( isDisabled ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetEntityRecords,\n\t\t\t\thasFinishedResolution,\n\t\t\t\tisSavingEntityRecord,\n\t\t\t} = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tisSaving: isSavingEntityRecord( 'postType', 'wp_navigation' ),\n\t\t\t\tdraftNavigationMenus: getEntityRecords( ...DRAFT_MENU_PARAMS ),\n\t\t\t\thasResolvedDraftNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tDRAFT_MENU_PARAMS\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ isDisabled ]\n\t);\n\n\tconst { hasResolvedNavigationMenus, navigationMenus } = useNavigationMenu();\n\n\tconst createNavigationMenu = useCallback(\n\t\tasync ( title ) => {\n\t\t\tconst record = {\n\t\t\t\ttitle,\n\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\tstatus: 'draft',\n\t\t\t};\n\n\t\t\tconst navigationMenu = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord\n\t\t\t);\n\n\t\t\treturn navigationMenu;\n\t\t},\n\t\t[ blocks, serialize, saveEntityRecord ]\n\t);\n\n\t// Because we can't conditionally call hooks, pass an undefined client id\n\t// arg to bypass the expensive `useTemplateArea` code. The hook will return\n\t// early.\n\tconst area = useTemplatePartAreaLabel( isDisabled ? undefined : clientId );\n\n\t// Automatically save the uncontrolled blocks.\n\tuseEffect( async () => {\n\t\t// The block will be disabled when used in a BlockPreview.\n\t\t// In this case avoid automatic creation of a wp_navigation post.\n\t\t// Otherwise the user will be spammed with lots of menus!\n\t\t//\n\t\t// Also ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\t//\n\t\t// Don't try saving when another save is already\n\t\t// in progress.\n\t\t//\n\t\t// And finally only create the menu when the block is selected,\n\t\t// which is an indication they want to start editing.\n\t\tif (\n\t\t\tisDisabled ||\n\t\t\thasSavedUnsavedInnerBlocks ||\n\t\t\tisSaving ||\n\t\t\tsavingLock.current ||\n\t\t\t! hasResolvedDraftNavigationMenus ||\n\t\t\t! hasResolvedNavigationMenus ||\n\t\t\t! hasSelection\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsavingLock.current = true;\n\t\tconst title = area\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( '%s navigation' ),\n\t\t\t\t\tarea\n\t\t\t )\n\t\t\t: // translators: 'navigation' as in website navigation.\n\t\t\t __( 'Navigation' );\n\n\t\t// Determine how many menus start with the automatic title.\n\t\tconst matchingMenuTitleCount = [\n\t\t\t...draftNavigationMenus,\n\t\t\t...navigationMenus,\n\t\t].reduce(\n\t\t\t( count, menu ) =>\n\t\t\t\tmenu?.title?.raw?.startsWith( title ) ? count + 1 : count,\n\t\t\t0\n\t\t);\n\n\t\t// Append a number to the end of the title if a menu with\n\t\t// the same name exists.\n\t\tconst titleWithCount =\n\t\t\tmatchingMenuTitleCount > 0\n\t\t\t\t? `${ title } ${ matchingMenuTitleCount + 1 }`\n\t\t\t\t: title;\n\n\t\tconst menu = await createNavigationMenu( titleWithCount );\n\t\tonSave( menu );\n\t\tsavingLock.current = false;\n\t}, [\n\t\tisDisabled,\n\t\tisSaving,\n\t\thasResolvedDraftNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tdraftNavigationMenus,\n\t\tnavigationMenus,\n\t\thasSelection,\n\t\tcreateNavigationMenu,\n\t\tarea,\n\t] );\n\n\treturn (\n\t\t<>\n\t\t\t<nav { ...blockProps }>\n\t\t\t\t<div className=\"wp-block-navigation__unsaved-changes\">\n\t\t\t\t\t<Disabled\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-navigation__unsaved-changes-overlay',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-saving': hasSelection,\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<div { ...innerBlocksProps } />\n\t\t\t\t\t</Disabled>\n\t\t\t\t\t{ hasSelection && <Spinner /> }\n\t\t\t\t</div>\n\t\t\t</nav>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js"],"names":["NOOP","EMPTY_OBJECT","DRAFT_MENU_PARAMS","status","per_page","UnsavedInnerBlocks","blockProps","blocks","clientId","hasSavedUnsavedInnerBlocks","onSave","hasSelection","isDisabled","Disabled","Context","savingLock","innerBlocksProps","renderAppender","undefined","value","onChange","onInput","isSaving","draftNavigationMenus","hasResolvedDraftNavigationMenus","select","getEntityRecords","hasFinishedResolution","isSavingEntityRecord","coreStore","hasResolvedNavigationMenus","navigationMenus","createNavigationMenu","current","menu"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps } from '@wordpress/block-editor';\nimport { Disabled, Spinner } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useCreateNavigationMenu from './use-create-navigation-menu';\n\nconst NOOP = () => {};\nconst EMPTY_OBJECT = {};\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nexport default function UnsavedInnerBlocks( {\n\tblockProps,\n\tblocks,\n\tclientId,\n\thasSavedUnsavedInnerBlocks,\n\tonSave,\n\thasSelection,\n} ) {\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\tconst savingLock = useRef( false );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\trenderAppender: hasSelection ? undefined : false,\n\n\t\t// Make the inner blocks 'controlled'. This allows the block to always\n\t\t// work with controlled inner blocks, smoothing out the switch to using\n\t\t// an entity.\n\t\tvalue: blocks,\n\t\tonChange: NOOP,\n\t\tonInput: NOOP,\n\t} );\n\n\tconst {\n\t\tisSaving,\n\t\tdraftNavigationMenus,\n\t\thasResolvedDraftNavigationMenus,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( isDisabled ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetEntityRecords,\n\t\t\t\thasFinishedResolution,\n\t\t\t\tisSavingEntityRecord,\n\t\t\t} = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tisSaving: isSavingEntityRecord( 'postType', 'wp_navigation' ),\n\t\t\t\tdraftNavigationMenus: getEntityRecords( ...DRAFT_MENU_PARAMS ),\n\t\t\t\thasResolvedDraftNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tDRAFT_MENU_PARAMS\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ isDisabled ]\n\t);\n\n\tconst { hasResolvedNavigationMenus, navigationMenus } = useNavigationMenu();\n\n\tconst createNavigationMenu = useCreateNavigationMenu( clientId );\n\n\t// Automatically save the uncontrolled blocks.\n\tuseEffect( async () => {\n\t\t// The block will be disabled when used in a BlockPreview.\n\t\t// In this case avoid automatic creation of a wp_navigation post.\n\t\t// Otherwise the user will be spammed with lots of menus!\n\t\t//\n\t\t// Also ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\t//\n\t\t// Don't try saving when another save is already\n\t\t// in progress.\n\t\t//\n\t\t// And finally only create the menu when the block is selected,\n\t\t// which is an indication they want to start editing.\n\t\tif (\n\t\t\tisDisabled ||\n\t\t\thasSavedUnsavedInnerBlocks ||\n\t\t\tisSaving ||\n\t\t\tsavingLock.current ||\n\t\t\t! hasResolvedDraftNavigationMenus ||\n\t\t\t! hasResolvedNavigationMenus ||\n\t\t\t! hasSelection\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsavingLock.current = true;\n\t\tconst menu = await createNavigationMenu( null, blocks );\n\t\tonSave( menu );\n\t\tsavingLock.current = false;\n\t}, [\n\t\tisDisabled,\n\t\tisSaving,\n\t\thasResolvedDraftNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tdraftNavigationMenus,\n\t\tnavigationMenus,\n\t\thasSelection,\n\t\tcreateNavigationMenu,\n\t\tblocks,\n\t] );\n\n\treturn (\n\t\t<>\n\t\t\t<nav { ...blockProps }>\n\t\t\t\t<div className=\"wp-block-navigation__unsaved-changes\">\n\t\t\t\t\t<Disabled\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-navigation__unsaved-changes-overlay',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'is-saving': hasSelection,\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<div { ...innerBlocksProps } />\n\t\t\t\t\t</Disabled>\n\t\t\t\t\t{ hasSelection && <Spinner /> }\n\t\t\t\t</div>\n\t\t\t</nav>\n\t\t</>\n\t);\n}\n"]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useCreateNavigationMenu;
9
+
10
+ var _blocks = require("@wordpress/blocks");
11
+
12
+ var _coreData = require("@wordpress/core-data");
13
+
14
+ var _data = require("@wordpress/data");
15
+
16
+ var _element = require("@wordpress/element");
17
+
18
+ var _useGenerateDefaultNavigationTitle = _interopRequireDefault(require("./use-generate-default-navigation-title"));
19
+
20
+ /**
21
+ * WordPress dependencies
22
+ */
23
+
24
+ /**
25
+ * Internal dependencies
26
+ */
27
+ function useCreateNavigationMenu(clientId) {
28
+ const {
29
+ saveEntityRecord
30
+ } = (0, _data.useDispatch)(_coreData.store);
31
+ const generateDefaultTitle = (0, _useGenerateDefaultNavigationTitle.default)(clientId); // This callback uses data from the two placeholder steps and only creates
32
+ // a new navigation menu when the user completes the final step.
33
+
34
+ return (0, _element.useCallback)(async function () {
35
+ let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
36
+ let blocks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
37
+
38
+ if (!title) {
39
+ title = await generateDefaultTitle();
40
+ }
41
+
42
+ const record = {
43
+ title,
44
+ content: (0, _blocks.serialize)(blocks),
45
+ status: 'publish'
46
+ };
47
+ return await saveEntityRecord('postType', 'wp_navigation', record);
48
+ }, [_blocks.serialize, saveEntityRecord]);
49
+ }
50
+ //# sourceMappingURL=use-create-navigation-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-create-navigation-menu.js"],"names":["useCreateNavigationMenu","clientId","saveEntityRecord","coreStore","generateDefaultTitle","title","blocks","record","content","status","serialize"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGe,SAASA,uBAAT,CAAkCC,QAAlC,EAA6C;AAC3D,QAAM;AAAEC,IAAAA;AAAF,MAAuB,uBAAaC,eAAb,CAA7B;AACA,QAAMC,oBAAoB,GAAG,gDAAmCH,QAAnC,CAA7B,CAF2D,CAI3D;AACA;;AACA,SAAO,0BACN,kBAAuC;AAAA,QAA/BI,KAA+B,uEAAvB,IAAuB;AAAA,QAAjBC,MAAiB,uEAAR,EAAQ;;AACtC,QAAK,CAAED,KAAP,EAAe;AACdA,MAAAA,KAAK,GAAG,MAAMD,oBAAoB,EAAlC;AACA;;AACD,UAAMG,MAAM,GAAG;AACdF,MAAAA,KADc;AAEdG,MAAAA,OAAO,EAAE,uBAAWF,MAAX,CAFK;AAGdG,MAAAA,MAAM,EAAE;AAHM,KAAf;AAMA,WAAO,MAAMP,gBAAgB,CAC5B,UAD4B,EAE5B,eAF4B,EAG5BK,MAH4B,CAA7B;AAKA,GAhBK,EAiBN,CAAEG,iBAAF,EAAaR,gBAAb,CAjBM,CAAP;AAmBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { serialize } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useGenerateDefaultNavigationTitle from './use-generate-default-navigation-title';\n\nexport default function useCreateNavigationMenu( clientId ) {\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst generateDefaultTitle = useGenerateDefaultNavigationTitle( clientId );\n\n\t// This callback uses data from the two placeholder steps and only creates\n\t// a new navigation menu when the user completes the final step.\n\treturn useCallback(\n\t\tasync ( title = null, blocks = [] ) => {\n\t\t\tif ( ! title ) {\n\t\t\t\ttitle = await generateDefaultTitle();\n\t\t\t}\n\t\t\tconst record = {\n\t\t\t\ttitle,\n\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\tstatus: 'publish',\n\t\t\t};\n\n\t\t\treturn await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\trecord\n\t\t\t);\n\t\t},\n\t\t[ serialize, saveEntityRecord ]\n\t);\n}\n"]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useGenerateDefaultNavigationTitle;
9
+
10
+ var _components = require("@wordpress/components");
11
+
12
+ var _coreData = require("@wordpress/core-data");
13
+
14
+ var _data = require("@wordpress/data");
15
+
16
+ var _element = require("@wordpress/element");
17
+
18
+ var _i18n = require("@wordpress/i18n");
19
+
20
+ var _useTemplatePartAreaLabel = _interopRequireDefault(require("../use-template-part-area-label"));
21
+
22
+ /**
23
+ * WordPress dependencies
24
+ */
25
+
26
+ /**
27
+ * Internal dependencies
28
+ */
29
+ const DRAFT_MENU_PARAMS = ['postType', 'wp_navigation', {
30
+ status: 'draft',
31
+ per_page: -1
32
+ }];
33
+ const PUBLISHED_MENU_PARAMS = ['postType', 'wp_navigation', {
34
+ per_page: -1,
35
+ status: 'publish'
36
+ }];
37
+
38
+ function useGenerateDefaultNavigationTitle(clientId) {
39
+ // The block will be disabled in a block preview, use this as a way of
40
+ // avoiding the side-effects of this component for block previews.
41
+ const isDisabled = (0, _element.useContext)(_components.Disabled.Context); // Because we can't conditionally call hooks, pass an undefined client id
42
+ // arg to bypass the expensive `useTemplateArea` code. The hook will return
43
+ // early.
44
+
45
+ const area = (0, _useTemplatePartAreaLabel.default)(isDisabled ? undefined : clientId);
46
+ const registry = (0, _data.useRegistry)();
47
+ return (0, _element.useCallback)(async () => {
48
+ // Ensure other navigation menus have loaded so an
49
+ // accurate name can be created.
50
+ if (isDisabled) {
51
+ return '';
52
+ }
53
+
54
+ const {
55
+ getEntityRecords
56
+ } = registry.resolveSelect(_coreData.store);
57
+ const [draftNavigationMenus, navigationMenus] = await Promise.all([getEntityRecords(...DRAFT_MENU_PARAMS), getEntityRecords(...PUBLISHED_MENU_PARAMS)]);
58
+ const title = area ? (0, _i18n.sprintf)( // translators: %s: the name of a menu (e.g. Header navigation).
59
+ (0, _i18n.__)('%s navigation'), area) : // translators: 'navigation' as in website navigation.
60
+ (0, _i18n.__)('Navigation'); // Determine how many menus start with the automatic title.
61
+
62
+ const matchingMenuTitleCount = [...draftNavigationMenus, ...navigationMenus].reduce((count, menu) => {
63
+ var _menu$title, _menu$title$raw;
64
+
65
+ return menu !== null && menu !== void 0 && (_menu$title = menu.title) !== null && _menu$title !== void 0 && (_menu$title$raw = _menu$title.raw) !== null && _menu$title$raw !== void 0 && _menu$title$raw.startsWith(title) ? count + 1 : count;
66
+ }, 0); // Append a number to the end of the title if a menu with
67
+ // the same name exists.
68
+
69
+ const titleWithCount = matchingMenuTitleCount > 0 ? `${title} ${matchingMenuTitleCount + 1}` : title;
70
+ return titleWithCount || '';
71
+ }, [isDisabled, area]);
72
+ }
73
+ //# sourceMappingURL=use-generate-default-navigation-title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-generate-default-navigation-title.js"],"names":["DRAFT_MENU_PARAMS","status","per_page","PUBLISHED_MENU_PARAMS","useGenerateDefaultNavigationTitle","clientId","isDisabled","Disabled","Context","area","undefined","registry","getEntityRecords","resolveSelect","coreStore","draftNavigationMenus","navigationMenus","Promise","all","title","matchingMenuTitleCount","reduce","count","menu","raw","startsWith","titleWithCount"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AAZA;AACA;AACA;;AAOA;AACA;AACA;AAGA,MAAMA,iBAAiB,GAAG,CACzB,UADyB,EAEzB,eAFyB,EAGzB;AAAEC,EAAAA,MAAM,EAAE,OAAV;AAAmBC,EAAAA,QAAQ,EAAE,CAAC;AAA9B,CAHyB,CAA1B;AAMA,MAAMC,qBAAqB,GAAG,CAC7B,UAD6B,EAE7B,eAF6B,EAG7B;AAAED,EAAAA,QAAQ,EAAE,CAAC,CAAb;AAAgBD,EAAAA,MAAM,EAAE;AAAxB,CAH6B,CAA9B;;AAMe,SAASG,iCAAT,CAA4CC,QAA5C,EAAuD;AACrE;AACA;AACA,QAAMC,UAAU,GAAG,yBAAYC,qBAASC,OAArB,CAAnB,CAHqE,CAKrE;AACA;AACA;;AACA,QAAMC,IAAI,GAAG,uCAA0BH,UAAU,GAAGI,SAAH,GAAeL,QAAnD,CAAb;AAEA,QAAMM,QAAQ,GAAG,wBAAjB;AACA,SAAO,0BAAa,YAAY;AAC/B;AACA;AACA,QAAKL,UAAL,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AAAEM,MAAAA;AAAF,QAAuBD,QAAQ,CAACE,aAAT,CAAwBC,eAAxB,CAA7B;AAEA,UAAM,CAAEC,oBAAF,EAAwBC,eAAxB,IAA4C,MAAMC,OAAO,CAACC,GAAR,CAAa,CACpEN,gBAAgB,CAAE,GAAGZ,iBAAL,CADoD,EAEpEY,gBAAgB,CAAE,GAAGT,qBAAL,CAFoD,CAAb,CAAxD;AAKA,UAAMgB,KAAK,GAAGV,IAAI,GACf,oBACA;AACA,kBAAI,eAAJ,CAFA,EAGAA,IAHA,CADe,GAMf;AACA,kBAAI,YAAJ,CAPH,CAb+B,CAsB/B;;AACA,UAAMW,sBAAsB,GAAG,CAC9B,GAAGL,oBAD2B,EAE9B,GAAGC,eAF2B,EAG7BK,MAH6B,CAI9B,CAAEC,KAAF,EAASC,IAAT;AAAA;;AAAA,aACCA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,mBAAAA,IAAI,CAAEJ,KAAN,uEAAaK,GAAb,4DAAkBC,UAAlB,CAA8BN,KAA9B,IAAwCG,KAAK,GAAG,CAAhD,GAAoDA,KADrD;AAAA,KAJ8B,EAM9B,CAN8B,CAA/B,CAvB+B,CAgC/B;AACA;;AACA,UAAMI,cAAc,GACnBN,sBAAsB,GAAG,CAAzB,GACI,GAAGD,KAAO,IAAIC,sBAAsB,GAAG,CAAG,EAD9C,GAEGD,KAHJ;AAKA,WAAOO,cAAc,IAAI,EAAzB;AACA,GAxCM,EAwCJ,CAAEpB,UAAF,EAAcG,IAAd,CAxCI,CAAP;AAyCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Disabled } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useRegistry } from '@wordpress/data';\nimport { useContext, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useTemplatePartAreaLabel from '../use-template-part-area-label';\n\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nconst PUBLISHED_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ per_page: -1, status: 'publish' },\n];\n\nexport default function useGenerateDefaultNavigationTitle( clientId ) {\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\n\t// Because we can't conditionally call hooks, pass an undefined client id\n\t// arg to bypass the expensive `useTemplateArea` code. The hook will return\n\t// early.\n\tconst area = useTemplatePartAreaLabel( isDisabled ? undefined : clientId );\n\n\tconst registry = useRegistry();\n\treturn useCallback( async () => {\n\t\t// Ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\tif ( isDisabled ) {\n\t\t\treturn '';\n\t\t}\n\t\tconst { getEntityRecords } = registry.resolveSelect( coreStore );\n\n\t\tconst [ draftNavigationMenus, navigationMenus ] = await Promise.all( [\n\t\t\tgetEntityRecords( ...DRAFT_MENU_PARAMS ),\n\t\t\tgetEntityRecords( ...PUBLISHED_MENU_PARAMS ),\n\t\t] );\n\n\t\tconst title = area\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( '%s navigation' ),\n\t\t\t\t\tarea\n\t\t\t )\n\t\t\t: // translators: 'navigation' as in website navigation.\n\t\t\t __( 'Navigation' );\n\n\t\t// Determine how many menus start with the automatic title.\n\t\tconst matchingMenuTitleCount = [\n\t\t\t...draftNavigationMenus,\n\t\t\t...navigationMenus,\n\t\t].reduce(\n\t\t\t( count, menu ) =>\n\t\t\t\tmenu?.title?.raw?.startsWith( title ) ? count + 1 : count,\n\t\t\t0\n\t\t);\n\n\t\t// Append a number to the end of the title if a menu with\n\t\t// the same name exists.\n\t\tconst titleWithCount =\n\t\t\tmatchingMenuTitleCount > 0\n\t\t\t\t? `${ title } ${ matchingMenuTitleCount + 1 }`\n\t\t\t\t: title;\n\n\t\treturn titleWithCount || '';\n\t}, [ isDisabled, area ] );\n}\n"]}
@@ -33,7 +33,7 @@ const metadata = {
33
33
  keywords: ["menu", "navigation", "links"],
34
34
  textdomain: "default",
35
35
  attributes: {
36
- navigationMenuId: {
36
+ ref: {
37
37
  type: "number"
38
38
  },
39
39
  textColor: {
@@ -17,8 +17,8 @@ function save(_ref) {
17
17
  attributes
18
18
  } = _ref;
19
19
 
20
- if (attributes.navigationMenuId) {
21
- // Avoid rendering inner blocks when a navigationMenuId is defined.
20
+ if (attributes.ref) {
21
+ // Avoid rendering inner blocks when a ref is defined.
22
22
  // When this id is defined the inner blocks are loaded from the
23
23
  // `wp_navigation` entity rather than the hard-coded block html.
24
24
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/save.js"],"names":["save","attributes","navigationMenuId"],"mappings":";;;;;;;;;AAGA;;AAHA;AACA;AACA;AAGe,SAASA,IAAT,OAAgC;AAAA,MAAjB;AAAEC,IAAAA;AAAF,GAAiB;;AAC9C,MAAKA,UAAU,CAACC,gBAAhB,EAAmC;AAClC;AACA;AACA;AACA;AACA;;AACD,SAAO,4BAAC,wBAAD,CAAa,OAAb,OAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tif ( attributes.navigationMenuId ) {\n\t\t// Avoid rendering inner blocks when a navigationMenuId is defined.\n\t\t// When this id is defined the inner blocks are loaded from the\n\t\t// `wp_navigation` entity rather than the hard-coded block html.\n\t\treturn;\n\t}\n\treturn <InnerBlocks.Content />;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/save.js"],"names":["save","attributes","ref"],"mappings":";;;;;;;;;AAGA;;AAHA;AACA;AACA;AAGe,SAASA,IAAT,OAAgC;AAAA,MAAjB;AAAEC,IAAAA;AAAF,GAAiB;;AAC9C,MAAKA,UAAU,CAACC,GAAhB,EAAsB;AACrB;AACA;AACA;AACA;AACA;;AACD,SAAO,4BAAC,wBAAD,CAAa,OAAb,OAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tif ( attributes.ref ) {\n\t\t// Avoid rendering inner blocks when a ref is defined.\n\t\t// When this id is defined the inner blocks are loaded from the\n\t\t// `wp_navigation` entity rather than the hard-coded block html.\n\t\treturn;\n\t}\n\treturn <InnerBlocks.Content />;\n}\n"]}
@@ -12,29 +12,40 @@ var _data = require("@wordpress/data");
12
12
  /**
13
13
  * WordPress dependencies
14
14
  */
15
- function useNavigationMenu(navigationMenuId) {
15
+ function useNavigationMenu(ref) {
16
16
  return (0, _data.useSelect)(select => {
17
+ var _navigationMenu;
18
+
17
19
  const {
20
+ getEntityRecord,
18
21
  getEditedEntityRecord,
19
22
  getEntityRecords,
20
23
  hasFinishedResolution
21
24
  } = select(_coreData.store);
22
- const navigationMenuSingleArgs = ['postType', 'wp_navigation', navigationMenuId];
23
- const navigationMenu = navigationMenuId ? getEditedEntityRecord(...navigationMenuSingleArgs) : null;
24
- const hasResolvedNavigationMenu = navigationMenuId ? hasFinishedResolution('getEditedEntityRecord', navigationMenuSingleArgs) : false;
25
+ const navigationMenuSingleArgs = ['postType', 'wp_navigation', ref];
26
+ const rawNavigationMenu = ref ? getEntityRecord(...navigationMenuSingleArgs) : null;
27
+ let navigationMenu = ref ? getEditedEntityRecord(...navigationMenuSingleArgs) : null; // getEditedEntityRecord will return the post regardless of status.
28
+ // Therefore if the found post is not published then we should ignore it.
29
+
30
+ if (((_navigationMenu = navigationMenu) === null || _navigationMenu === void 0 ? void 0 : _navigationMenu.status) !== 'publish') {
31
+ navigationMenu = null;
32
+ }
33
+
34
+ const hasResolvedNavigationMenu = ref ? hasFinishedResolution('getEditedEntityRecord', navigationMenuSingleArgs) : false;
25
35
  const navigationMenuMultipleArgs = ['postType', 'wp_navigation', {
26
- per_page: -1
36
+ per_page: -1,
37
+ status: 'publish'
27
38
  }];
28
39
  const navigationMenus = getEntityRecords(...navigationMenuMultipleArgs);
29
- const canSwitchNavigationMenu = navigationMenuId ? (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 1 : (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 0;
40
+ const canSwitchNavigationMenu = ref ? (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 1 : (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 0;
30
41
  return {
31
42
  isNavigationMenuResolved: hasResolvedNavigationMenu,
32
- isNavigationMenuMissing: !navigationMenuId || hasResolvedNavigationMenu && !navigationMenu,
43
+ isNavigationMenuMissing: !ref || hasResolvedNavigationMenu && !rawNavigationMenu,
33
44
  canSwitchNavigationMenu,
34
45
  hasResolvedNavigationMenus: hasFinishedResolution('getEntityRecords', navigationMenuMultipleArgs),
35
46
  navigationMenu,
36
47
  navigationMenus
37
48
  };
38
- }, [navigationMenuId]);
49
+ }, [ref]);
39
50
  }
40
51
  //# sourceMappingURL=use-navigation-menu.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"names":["useNavigationMenu","navigationMenuId","select","getEditedEntityRecord","getEntityRecords","hasFinishedResolution","coreStore","navigationMenuSingleArgs","navigationMenu","hasResolvedNavigationMenu","navigationMenuMultipleArgs","per_page","navigationMenus","canSwitchNavigationMenu","length","isNavigationMenuResolved","isNavigationMenuMissing","hasResolvedNavigationMenus"],"mappings":";;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAIe,SAASA,iBAAT,CAA4BC,gBAA5B,EAA+C;AAC7D,SAAO,qBACJC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,qBADK;AAELC,MAAAA,gBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,eAAF,CAJV;AAMA,UAAMC,wBAAwB,GAAG,CAChC,UADgC,EAEhC,eAFgC,EAGhCN,gBAHgC,CAAjC;AAKA,UAAMO,cAAc,GAAGP,gBAAgB,GACpCE,qBAAqB,CAAE,GAAGI,wBAAL,CADe,GAEpC,IAFH;AAGA,UAAME,yBAAyB,GAAGR,gBAAgB,GAC/CI,qBAAqB,CACrB,uBADqB,EAErBE,wBAFqB,CAD0B,GAK/C,KALH;AAOA,UAAMG,0BAA0B,GAAG,CAClC,UADkC,EAElC,eAFkC,EAGlC;AAAEC,MAAAA,QAAQ,EAAE,CAAC;AAAb,KAHkC,CAAnC;AAKA,UAAMC,eAAe,GAAGR,gBAAgB,CACvC,GAAGM,0BADoC,CAAxC;AAIA,UAAMG,uBAAuB,GAAGZ,gBAAgB,GAC7C,CAAAW,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAEE,MAAjB,IAA0B,CADmB,GAE7C,CAAAF,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAEE,MAAjB,IAA0B,CAF7B;AAIA,WAAO;AACNC,MAAAA,wBAAwB,EAAEN,yBADpB;AAENO,MAAAA,uBAAuB,EACtB,CAAEf,gBAAF,IACEQ,yBAAyB,IAAI,CAAED,cAJ5B;AAKNK,MAAAA,uBALM;AAMNI,MAAAA,0BAA0B,EAAEZ,qBAAqB,CAChD,kBADgD,EAEhDK,0BAFgD,CAN3C;AAUNF,MAAAA,cAVM;AAWNI,MAAAA;AAXM,KAAP;AAaA,GAjDK,EAkDN,CAAEX,gBAAF,CAlDM,CAAP;AAoDA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useNavigationMenu( navigationMenuId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\tgetEntityRecords,\n\t\t\t\thasFinishedResolution,\n\t\t\t} = select( coreStore );\n\n\t\t\tconst navigationMenuSingleArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tnavigationMenuId,\n\t\t\t];\n\t\t\tconst navigationMenu = navigationMenuId\n\t\t\t\t? getEditedEntityRecord( ...navigationMenuSingleArgs )\n\t\t\t\t: null;\n\t\t\tconst hasResolvedNavigationMenu = navigationMenuId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tnavigationMenuSingleArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\tconst navigationMenuMultipleArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\t{ per_page: -1 },\n\t\t\t];\n\t\t\tconst navigationMenus = getEntityRecords(\n\t\t\t\t...navigationMenuMultipleArgs\n\t\t\t);\n\n\t\t\tconst canSwitchNavigationMenu = navigationMenuId\n\t\t\t\t? navigationMenus?.length > 1\n\t\t\t\t: navigationMenus?.length > 0;\n\n\t\t\treturn {\n\t\t\t\tisNavigationMenuResolved: hasResolvedNavigationMenu,\n\t\t\t\tisNavigationMenuMissing:\n\t\t\t\t\t! navigationMenuId ||\n\t\t\t\t\t( hasResolvedNavigationMenu && ! navigationMenu ),\n\t\t\t\tcanSwitchNavigationMenu,\n\t\t\t\thasResolvedNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tnavigationMenuMultipleArgs\n\t\t\t\t),\n\t\t\t\tnavigationMenu,\n\t\t\t\tnavigationMenus,\n\t\t\t};\n\t\t},\n\t\t[ navigationMenuId ]\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"names":["useNavigationMenu","ref","select","getEntityRecord","getEditedEntityRecord","getEntityRecords","hasFinishedResolution","coreStore","navigationMenuSingleArgs","rawNavigationMenu","navigationMenu","status","hasResolvedNavigationMenu","navigationMenuMultipleArgs","per_page","navigationMenus","canSwitchNavigationMenu","length","isNavigationMenuResolved","isNavigationMenuMissing","hasResolvedNavigationMenus"],"mappings":";;;;;;;AAGA;;AACA;;AAJA;AACA;AACA;AAIe,SAASA,iBAAT,CAA4BC,GAA5B,EAAkC;AAChD,SAAO,qBACJC,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA,gBAHK;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEK,eAAF,CALV;AAOA,UAAMC,wBAAwB,GAAG,CAChC,UADgC,EAEhC,eAFgC,EAGhCP,GAHgC,CAAjC;AAKA,UAAMQ,iBAAiB,GAAGR,GAAG,GAC1BE,eAAe,CAAE,GAAGK,wBAAL,CADW,GAE1B,IAFH;AAGA,QAAIE,cAAc,GAAGT,GAAG,GACrBG,qBAAqB,CAAE,GAAGI,wBAAL,CADA,GAErB,IAFH,CAhBa,CAoBb;AACA;;AACA,QAAK,oBAAAE,cAAc,UAAd,0DAAgBC,MAAhB,MAA2B,SAAhC,EAA4C;AAC3CD,MAAAA,cAAc,GAAG,IAAjB;AACA;;AAED,UAAME,yBAAyB,GAAGX,GAAG,GAClCK,qBAAqB,CACrB,uBADqB,EAErBE,wBAFqB,CADa,GAKlC,KALH;AAOA,UAAMK,0BAA0B,GAAG,CAClC,UADkC,EAElC,eAFkC,EAGlC;AAAEC,MAAAA,QAAQ,EAAE,CAAC,CAAb;AAAgBH,MAAAA,MAAM,EAAE;AAAxB,KAHkC,CAAnC;AAKA,UAAMI,eAAe,GAAGV,gBAAgB,CACvC,GAAGQ,0BADoC,CAAxC;AAIA,UAAMG,uBAAuB,GAAGf,GAAG,GAChC,CAAAc,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAEE,MAAjB,IAA0B,CADM,GAEhC,CAAAF,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAEE,MAAjB,IAA0B,CAF7B;AAIA,WAAO;AACNC,MAAAA,wBAAwB,EAAEN,yBADpB;AAENO,MAAAA,uBAAuB,EACtB,CAAElB,GAAF,IACEW,yBAAyB,IAAI,CAAEH,iBAJ5B;AAKNO,MAAAA,uBALM;AAMNI,MAAAA,0BAA0B,EAAEd,qBAAqB,CAChD,kBADgD,EAEhDO,0BAFgD,CAN3C;AAUNH,MAAAA,cAVM;AAWNK,MAAAA;AAXM,KAAP;AAaA,GA5DK,EA6DN,CAAEd,GAAF,CA7DM,CAAP;AA+DA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useNavigationMenu( ref ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\tgetEntityRecords,\n\t\t\t\thasFinishedResolution,\n\t\t\t} = select( coreStore );\n\n\t\t\tconst navigationMenuSingleArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tref,\n\t\t\t];\n\t\t\tconst rawNavigationMenu = ref\n\t\t\t\t? getEntityRecord( ...navigationMenuSingleArgs )\n\t\t\t\t: null;\n\t\t\tlet navigationMenu = ref\n\t\t\t\t? getEditedEntityRecord( ...navigationMenuSingleArgs )\n\t\t\t\t: null;\n\n\t\t\t// getEditedEntityRecord will return the post regardless of status.\n\t\t\t// Therefore if the found post is not published then we should ignore it.\n\t\t\tif ( navigationMenu?.status !== 'publish' ) {\n\t\t\t\tnavigationMenu = null;\n\t\t\t}\n\n\t\t\tconst hasResolvedNavigationMenu = ref\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tnavigationMenuSingleArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\tconst navigationMenuMultipleArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\t{ per_page: -1, status: 'publish' },\n\t\t\t];\n\t\t\tconst navigationMenus = getEntityRecords(\n\t\t\t\t...navigationMenuMultipleArgs\n\t\t\t);\n\n\t\t\tconst canSwitchNavigationMenu = ref\n\t\t\t\t? navigationMenus?.length > 1\n\t\t\t\t: navigationMenus?.length > 0;\n\n\t\t\treturn {\n\t\t\t\tisNavigationMenuResolved: hasResolvedNavigationMenu,\n\t\t\t\tisNavigationMenuMissing:\n\t\t\t\t\t! ref ||\n\t\t\t\t\t( hasResolvedNavigationMenu && ! rawNavigationMenu ),\n\t\t\t\tcanSwitchNavigationMenu,\n\t\t\t\thasResolvedNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tnavigationMenuMultipleArgs\n\t\t\t\t),\n\t\t\t\tnavigationMenu,\n\t\t\t\tnavigationMenus,\n\t\t\t};\n\t\t},\n\t\t[ ref ]\n\t);\n}\n"]}
@@ -16,7 +16,7 @@ const metadata = {
16
16
  apiVersion: 2,
17
17
  name: "core/pattern",
18
18
  title: "Pattern",
19
- category: "design",
19
+ category: "theme",
20
20
  description: "Show a block pattern.",
21
21
  supports: {
22
22
  html: false,
@@ -39,11 +39,10 @@ const placeholderIllustration = (0, _element.createElement)(_primitives.SVG, {
39
39
  fill: "none",
40
40
  xmlns: "http://www.w3.org/2000/svg",
41
41
  viewBox: "0 0 60 60",
42
- preserveAspectRatio: "xMidYMid slice" // @todo: "slice" matches the "cover" behavior, "meet" could be used for "container" and "fill" values.
43
-
42
+ preserveAspectRatio: "none"
44
43
  }, (0, _element.createElement)(_primitives.Path, {
45
44
  vectorEffect: "non-scaling-stroke",
46
- d: "m61 32.622-13.555-9.137-15.888 9.859a5 5 0 0 1-5.386-.073l-9.095-5.989L1 37.5"
45
+ d: "M60 60 0 0"
47
46
  }));
48
47
  const ALLOWED_MEDIA_TYPES = ['image'];
49
48
  const placeholderChip = (0, _element.createElement)("div", {