@wordpress/block-library 6.0.9 → 6.0.13

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 (208) hide show
  1. package/build/cover/edit.js +9 -3
  2. package/build/cover/edit.js.map +1 -1
  3. package/build/gallery/deprecated.js +314 -26
  4. package/build/gallery/deprecated.js.map +1 -1
  5. package/build/gallery/edit-wrapper.js +10 -27
  6. package/build/gallery/edit-wrapper.js.map +1 -1
  7. package/build/gallery/edit.js +11 -13
  8. package/build/gallery/edit.js.map +1 -1
  9. package/build/gallery/save.js +3 -3
  10. package/build/gallery/save.js.map +1 -1
  11. package/build/gallery/shared.js +24 -0
  12. package/build/gallery/shared.js.map +1 -1
  13. package/build/gallery/transforms.js +8 -22
  14. package/build/gallery/transforms.js.map +1 -1
  15. package/build/gallery/use-mobile-warning.js +1 -1
  16. package/build/gallery/use-mobile-warning.js.map +1 -1
  17. package/build/gallery/v1/edit.js +2 -21
  18. package/build/gallery/v1/edit.js.map +1 -1
  19. package/build/index.js +3 -2
  20. package/build/index.js.map +1 -1
  21. package/build/navigation/deprecated.js +127 -19
  22. package/build/navigation/deprecated.js.map +1 -1
  23. package/build/navigation/edit/index.js +46 -31
  24. package/build/navigation/edit/index.js.map +1 -1
  25. package/build/navigation/edit/inner-blocks.js +0 -4
  26. package/build/navigation/edit/inner-blocks.js.map +1 -1
  27. package/build/navigation/edit/navigation-menu-selector.js +2 -2
  28. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  29. package/build/navigation/edit/placeholder/index.js +16 -48
  30. package/build/navigation/edit/placeholder/index.js.map +1 -1
  31. package/build/navigation/edit/unsaved-inner-blocks.js +4 -35
  32. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  33. package/build/navigation/edit/use-create-navigation-menu.js +50 -0
  34. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -0
  35. package/build/navigation/edit/use-generate-default-navigation-title.js +73 -0
  36. package/build/navigation/edit/use-generate-default-navigation-title.js.map +1 -0
  37. package/build/navigation/index.js +1 -1
  38. package/build/navigation/save.js +2 -2
  39. package/build/navigation/save.js.map +1 -1
  40. package/build/navigation/use-navigation-menu.js +19 -8
  41. package/build/navigation/use-navigation-menu.js.map +1 -1
  42. package/build/navigation-submenu/edit.js +4 -0
  43. package/build/navigation-submenu/edit.js.map +1 -1
  44. package/build/pattern/index.js +1 -1
  45. package/build/post-featured-image/edit.js +2 -3
  46. package/build/post-featured-image/edit.js.map +1 -1
  47. package/build/post-terms/index.js +1 -1
  48. package/build/post-title/edit.js +2 -2
  49. package/build/post-title/edit.js.map +1 -1
  50. package/build/query-pagination/index.js +1 -1
  51. package/build/query-pagination-next/index.js +2 -2
  52. package/build/query-pagination-numbers/index.js +1 -1
  53. package/build/query-pagination-previous/index.js +2 -2
  54. package/build/query-title/index.js +1 -1
  55. package/build/separator/separator-settings.js +1 -0
  56. package/build/separator/separator-settings.js.map +1 -1
  57. package/build/site-logo/index.js +1 -1
  58. package/build/site-tagline/index.js +1 -1
  59. package/build/site-title/index.js +1 -1
  60. package/build/social-links/edit.js +1 -0
  61. package/build/social-links/edit.js.map +1 -1
  62. package/build/template-part/edit/placeholder/index.js +1 -1
  63. package/build/template-part/edit/placeholder/index.js.map +1 -1
  64. package/build/template-part/index.js +2 -1
  65. package/build/template-part/index.js.map +1 -1
  66. package/build-module/cover/edit.js +9 -3
  67. package/build-module/cover/edit.js.map +1 -1
  68. package/build-module/gallery/deprecated.js +309 -27
  69. package/build-module/gallery/deprecated.js.map +1 -1
  70. package/build-module/gallery/edit-wrapper.js +7 -27
  71. package/build-module/gallery/edit-wrapper.js.map +1 -1
  72. package/build-module/gallery/edit.js +11 -13
  73. package/build-module/gallery/edit.js.map +1 -1
  74. package/build-module/gallery/save.js +2 -3
  75. package/build-module/gallery/save.js.map +1 -1
  76. package/build-module/gallery/shared.js +22 -0
  77. package/build-module/gallery/shared.js.map +1 -1
  78. package/build-module/gallery/transforms.js +9 -21
  79. package/build-module/gallery/transforms.js.map +1 -1
  80. package/build-module/gallery/use-mobile-warning.js +1 -1
  81. package/build-module/gallery/use-mobile-warning.js.map +1 -1
  82. package/build-module/gallery/v1/edit.js +4 -22
  83. package/build-module/gallery/v1/edit.js.map +1 -1
  84. package/build-module/index.js +3 -2
  85. package/build-module/index.js.map +1 -1
  86. package/build-module/navigation/deprecated.js +127 -19
  87. package/build-module/navigation/deprecated.js.map +1 -1
  88. package/build-module/navigation/edit/index.js +47 -31
  89. package/build-module/navigation/edit/index.js.map +1 -1
  90. package/build-module/navigation/edit/inner-blocks.js +0 -4
  91. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  92. package/build-module/navigation/edit/navigation-menu-selector.js +2 -2
  93. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  94. package/build-module/navigation/edit/placeholder/index.js +15 -45
  95. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  96. package/build-module/navigation/edit/unsaved-inner-blocks.js +6 -35
  97. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  98. package/build-module/navigation/edit/use-create-navigation-menu.js +36 -0
  99. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -0
  100. package/build-module/navigation/edit/use-generate-default-navigation-title.js +57 -0
  101. package/build-module/navigation/edit/use-generate-default-navigation-title.js.map +1 -0
  102. package/build-module/navigation/index.js +1 -1
  103. package/build-module/navigation/save.js +2 -2
  104. package/build-module/navigation/save.js.map +1 -1
  105. package/build-module/navigation/use-navigation-menu.js +19 -8
  106. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  107. package/build-module/navigation-submenu/edit.js +4 -0
  108. package/build-module/navigation-submenu/edit.js.map +1 -1
  109. package/build-module/pattern/index.js +1 -1
  110. package/build-module/post-featured-image/edit.js +2 -3
  111. package/build-module/post-featured-image/edit.js.map +1 -1
  112. package/build-module/post-terms/index.js +1 -1
  113. package/build-module/post-title/edit.js +2 -2
  114. package/build-module/post-title/edit.js.map +1 -1
  115. package/build-module/query-pagination/index.js +1 -1
  116. package/build-module/query-pagination-next/index.js +2 -2
  117. package/build-module/query-pagination-numbers/index.js +1 -1
  118. package/build-module/query-pagination-previous/index.js +2 -2
  119. package/build-module/query-title/index.js +1 -1
  120. package/build-module/separator/separator-settings.js +1 -0
  121. package/build-module/separator/separator-settings.js.map +1 -1
  122. package/build-module/site-logo/index.js +1 -1
  123. package/build-module/site-tagline/index.js +1 -1
  124. package/build-module/site-title/index.js +1 -1
  125. package/build-module/social-links/edit.js +1 -0
  126. package/build-module/social-links/edit.js.map +1 -1
  127. package/build-module/template-part/edit/placeholder/index.js +2 -2
  128. package/build-module/template-part/edit/placeholder/index.js.map +1 -1
  129. package/build-module/template-part/index.js +2 -1
  130. package/build-module/template-part/index.js.map +1 -1
  131. package/build-style/columns/editor-rtl.css +1 -1
  132. package/build-style/columns/editor.css +1 -1
  133. package/build-style/editor-rtl.css +6 -5
  134. package/build-style/editor.css +6 -5
  135. package/build-style/gallery/editor-rtl.css +1 -0
  136. package/build-style/gallery/editor.css +1 -0
  137. package/build-style/navigation/style-rtl.css +5 -1
  138. package/build-style/navigation/style.css +5 -1
  139. package/build-style/post-featured-image/editor-rtl.css +2 -2
  140. package/build-style/post-featured-image/editor.css +2 -2
  141. package/build-style/site-logo/editor-rtl.css +2 -2
  142. package/build-style/site-logo/editor.css +2 -2
  143. package/build-style/style-rtl.css +5 -1
  144. package/build-style/style.css +5 -1
  145. package/package.json +9 -9
  146. package/src/calendar/index.php +2 -2
  147. package/src/columns/editor.scss +3 -2
  148. package/src/cover/edit.js +9 -1
  149. package/src/gallery/deprecated.js +831 -559
  150. package/src/gallery/edit-wrapper.js +7 -27
  151. package/src/gallery/edit.js +11 -13
  152. package/src/gallery/editor.scss +1 -0
  153. package/src/gallery/save.js +2 -1
  154. package/src/gallery/shared.js +24 -0
  155. package/src/gallery/transforms.js +9 -27
  156. package/src/gallery/use-mobile-warning.js +1 -1
  157. package/src/gallery/v1/edit.js +1 -28
  158. package/src/index.js +27 -25
  159. package/src/navigation/block.json +1 -1
  160. package/src/navigation/deprecated.js +115 -13
  161. package/src/navigation/edit/index.js +44 -36
  162. package/src/navigation/edit/inner-blocks.js +0 -5
  163. package/src/navigation/edit/navigation-menu-selector.js +2 -2
  164. package/src/navigation/edit/placeholder/index.js +16 -62
  165. package/src/navigation/edit/unsaved-inner-blocks.js +6 -57
  166. package/src/navigation/edit/use-create-navigation-menu.js +39 -0
  167. package/src/navigation/edit/use-generate-default-navigation-title.js +79 -0
  168. package/src/navigation/index.php +263 -26
  169. package/src/navigation/save.js +2 -2
  170. package/src/navigation/style.scss +5 -1
  171. package/src/navigation/use-navigation-menu.js +20 -9
  172. package/src/navigation-submenu/edit.js +6 -0
  173. package/src/navigation-submenu/index.php +30 -45
  174. package/src/page-list/index.php +10 -9
  175. package/src/pattern/block.json +1 -1
  176. package/src/post-featured-image/edit.js +2 -5
  177. package/src/post-featured-image/editor.scss +2 -2
  178. package/src/post-terms/block.json +1 -1
  179. package/src/post-title/edit.js +2 -2
  180. package/src/query-pagination/block.json +1 -1
  181. package/src/query-pagination-next/block.json +2 -2
  182. package/src/query-pagination-numbers/block.json +1 -1
  183. package/src/query-pagination-previous/block.json +2 -2
  184. package/src/query-title/block.json +1 -1
  185. package/src/separator/separator-settings.js +1 -0
  186. package/src/site-logo/block.json +1 -1
  187. package/src/site-logo/editor.scss +2 -2
  188. package/src/site-tagline/block.json +1 -1
  189. package/src/site-title/block.json +1 -1
  190. package/src/social-links/edit.js +1 -0
  191. package/src/template-part/block.json +2 -1
  192. package/src/template-part/edit/placeholder/index.js +2 -2
  193. package/src/template-part/index.php +38 -1
  194. package/build/gallery/v1/update-gallery-modal.js +0 -114
  195. package/build/gallery/v1/update-gallery-modal.js.map +0 -1
  196. package/build/navigation/edit/navigation-menu-name-modal.js +0 -55
  197. package/build/navigation/edit/navigation-menu-name-modal.js.map +0 -1
  198. package/build/navigation/edit/navigation-menu-publish-button.js +0 -53
  199. package/build/navigation/edit/navigation-menu-publish-button.js.map +0 -1
  200. package/build-module/gallery/v1/update-gallery-modal.js +0 -97
  201. package/build-module/gallery/v1/update-gallery-modal.js.map +0 -1
  202. package/build-module/navigation/edit/navigation-menu-name-modal.js +0 -47
  203. package/build-module/navigation/edit/navigation-menu-name-modal.js.map +0 -1
  204. package/build-module/navigation/edit/navigation-menu-publish-button.js +0 -40
  205. package/build-module/navigation/edit/navigation-menu-publish-button.js.map +0 -1
  206. package/src/gallery/v1/update-gallery-modal.js +0 -97
  207. package/src/navigation/edit/navigation-menu-name-modal.js +0 -69
  208. package/src/navigation/edit/navigation-menu-publish-button.js +0 -57
@@ -3,10 +3,8 @@ import { createElement, Fragment } from "@wordpress/element";
3
3
  /**
4
4
  * WordPress dependencies
5
5
  */
6
- import { serialize, createBlock } from '@wordpress/blocks';
6
+ import { createBlock } from '@wordpress/blocks';
7
7
  import { Placeholder, Button, DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
8
- import { store as coreStore } from '@wordpress/core-data';
9
- import { useDispatch } from '@wordpress/data';
10
8
  import { useCallback, useState, useEffect } from '@wordpress/element';
11
9
  import { __ } from '@wordpress/i18n';
12
10
  import { navigation, Icon } from '@wordpress/icons';
@@ -18,8 +16,8 @@ import { decodeEntities } from '@wordpress/html-entities';
18
16
  import useNavigationEntities from '../../use-navigation-entities';
19
17
  import PlaceholderPreview from './placeholder-preview';
20
18
  import menuItemsToBlocks from '../../menu-items-to-blocks';
21
- import NavigationMenuNameModal from '../navigation-menu-name-modal';
22
19
  import useNavigationMenu from '../../use-navigation-menu';
20
+ import useCreateNavigationMenu from '../use-create-navigation-menu';
23
21
 
24
22
  const ExistingMenusDropdown = _ref => {
25
23
  let {
@@ -74,6 +72,7 @@ const ExistingMenusDropdown = _ref => {
74
72
 
75
73
  export default function NavigationPlaceholder(_ref3) {
76
74
  let {
75
+ clientId,
77
76
  onFinish,
78
77
  canSwitchNavigationMenu,
79
78
  hasResolvedNavigationMenus
@@ -81,28 +80,12 @@ export default function NavigationPlaceholder(_ref3) {
81
80
  const [selectedMenu, setSelectedMenu] = useState();
82
81
  const [isCreatingFromMenu, setIsCreatingFromMenu] = useState(false);
83
82
  const [menuName, setMenuName] = useState('');
84
- const [isNewMenuModalVisible, setIsNewMenuModalVisible] = useState(false);
85
- const [createEmpty, setCreateEmpty] = useState(false);
86
- const {
87
- saveEntityRecord
88
- } = useDispatch(coreStore); // This callback uses data from the two placeholder steps and only creates
89
- // a new navigation menu when the user completes the final step.
90
-
91
- const createNavigationMenu = useCallback(async function () {
92
- let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __('Untitled Navigation Menu');
93
- let blocks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
94
- const record = {
95
- title,
96
- content: serialize(blocks),
97
- status: 'publish'
98
- };
99
- const navigationMenu = await saveEntityRecord('postType', 'wp_navigation', record);
100
- return navigationMenu;
101
- }, [serialize, saveEntityRecord]);
83
+ const createNavigationMenu = useCreateNavigationMenu(clientId);
102
84
 
103
- const onFinishMenuCreation = async (navigationMenuTitle, blocks) => {
85
+ const onFinishMenuCreation = async function (blocks) {
86
+ let navigationMenuTitle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
104
87
  const navigationMenu = await createNavigationMenu(navigationMenuTitle, blocks);
105
- onFinish(navigationMenu);
88
+ onFinish(navigationMenu, blocks);
106
89
  };
107
90
 
108
91
  const {
@@ -119,7 +102,7 @@ export default function NavigationPlaceholder(_ref3) {
119
102
  const {
120
103
  innerBlocks: blocks
121
104
  } = menuItemsToBlocks(menuItems);
122
- onFinishMenuCreation(name, blocks);
105
+ onFinishMenuCreation(blocks, name);
123
106
  }, [menuItems, menuItemsToBlocks, onFinish]);
124
107
 
125
108
  const onCreateFromMenu = name => {
@@ -135,14 +118,13 @@ export default function NavigationPlaceholder(_ref3) {
135
118
  setMenuName(name);
136
119
  };
137
120
 
138
- const onCreateEmptyMenu = name => {
139
- onFinishMenuCreation(name, []);
121
+ const onCreateEmptyMenu = () => {
122
+ onFinishMenuCreation([]);
140
123
  };
141
124
 
142
- const onCreateAllPages = name => {
125
+ const onCreateAllPages = () => {
143
126
  const block = [createBlock('core/page-list')];
144
- onFinishMenuCreation(name, block);
145
- setIsNewMenuModalVisible(true);
127
+ onFinishMenuCreation(block);
146
128
  };
147
129
 
148
130
  useEffect(() => {
@@ -177,22 +159,10 @@ export default function NavigationPlaceholder(_ref3) {
177
159
  onCreateFromMenu: onCreateFromMenu
178
160
  }), createElement("hr", null)) : undefined, hasPages ? createElement(Fragment, null, createElement(Button, {
179
161
  variant: "tertiary",
180
- onClick: () => {
181
- setIsNewMenuModalVisible(true);
182
- setCreateEmpty(false);
183
- }
162
+ onClick: onCreateAllPages
184
163
  }, __('Add all pages')), createElement("hr", null)) : undefined, createElement(Button, {
185
164
  variant: "tertiary",
186
- onClick: () => {
187
- setIsNewMenuModalVisible(true);
188
- setCreateEmpty(true);
189
- }
190
- }, __('Start empty'))))), isNewMenuModalVisible && createElement(NavigationMenuNameModal, {
191
- title: __('Create your new navigation menu'),
192
- onRequestClose: () => {
193
- setIsNewMenuModalVisible(false);
194
- },
195
- onFinish: createEmpty ? onCreateEmptyMenu : onCreateAllPages
196
- }));
165
+ onClick: onCreateEmptyMenu
166
+ }, __('Start empty'))))));
197
167
  }
198
168
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/placeholder/index.js"],"names":["serialize","createBlock","Placeholder","Button","DropdownMenu","MenuGroup","MenuItem","store","coreStore","useDispatch","useCallback","useState","useEffect","__","navigation","Icon","decodeEntities","useNavigationEntities","PlaceholderPreview","menuItemsToBlocks","NavigationMenuNameModal","useNavigationMenu","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","createNavigationMenu","blocks","record","content","status","navigationMenu","onFinishMenuCreation","navigationMenuTitle","isResolvingPages","isResolvingMenus","menuItems","hasResolvedMenuItems","hasPages","hasMenus","isStillLoading","createFromMenu","innerBlocks","onCreateEmptyMenu","onCreateAllPages","block","length","undefined"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,mBAAvC;AACA,SACCC,WADD,EAECC,MAFD,EAGCC,YAHD,EAICC,SAJD,EAKCC,QALD,QAMO,uBANP;AAOA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,WAAT,EAAsBC,QAAtB,EAAgCC,SAAhC,QAAiD,oBAAjD;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,kBAAjC;AACA,SAASC,cAAT,QAA+B,0BAA/B;AAEA;AACA;AACA;;AAEA,OAAOC,qBAAP,MAAkC,+BAAlC;AACA,OAAOC,kBAAP,MAA+B,uBAA/B;AACA,OAAOC,iBAAP,MAA8B,4BAA9B;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,OAAOC,iBAAP,MAA8B,2BAA9B;;AAEA,MAAMC,qBAAqB,GAAG,QAOvB;AAAA,MAPyB;AAC/BC,IAAAA,uBAD+B;AAE/BC,IAAAA,eAF+B;AAG/BC,IAAAA,eAH+B;AAI/BC,IAAAA,QAJ+B;AAK/BC,IAAAA,KAL+B;AAM/BC,IAAAA;AAN+B,GAOzB;AACN,QAAMC,WAAW,GAAG;AACnBC,IAAAA,OAAO,EAAE,UADU;AAEnBC,IAAAA,YAAY,EAAE,OAFK;AAGnBC,IAAAA,SAAS,EAAE;AAHQ,GAApB;AAKA,SACC,cAAC,YAAD;AACC,IAAA,IAAI,EAAGnB,EAAE,CAAE,aAAF,CADV;AAEC,IAAA,IAAI,EAAG,IAFR;AAGC,IAAA,WAAW,EAAGgB,WAHf;AAIC,IAAA,YAAY,EAAG;AAAEI,MAAAA,WAAW,EAAE;AAAf;AAJhB,KAMG;AAAA,QAAE;AAAEC,MAAAA;AAAF,KAAF;AAAA,WACD,8BACC,cAAC,SAAD;AAAW,MAAA,KAAK,EAAGrB,EAAE,CAAE,OAAF;AAArB,OACGU,uBAAuB,KACxBC,eADwB,aACxBA,eADwB,uBACxBA,eAAe,CAAEW,GAAjB,CAAwBC,IAAF,IAAY;AACjC,aACC,cAAC,QAAD;AACC,QAAA,OAAO,EAAG,MAAM;AACfX,UAAAA,eAAe,CAAEW,IAAI,CAACC,EAAP,CAAf;AACAX,UAAAA,QAAQ,CAAEU,IAAF,CAAR;AACA,SAJF;AAKC,QAAA,OAAO,EAAGF,OALX;AAMC,QAAA,GAAG,EAAGE,IAAI,CAACC;AANZ,SAQGrB,cAAc,CACfoB,IAAI,CAACE,KAAL,CAAWC,QADI,CARjB,CADD;AAcA,KAfD,CADwB,CAD1B,CADD,EAoBC,cAAC,SAAD;AAAW,MAAA,KAAK,EAAG1B,EAAE,CAAE,eAAF;AAArB,OACGc,KADH,aACGA,KADH,uBACGA,KAAK,CAAEQ,GAAP,CAAcC,IAAF,IAAY;AACzB,aACC,cAAC,QAAD;AACC,QAAA,OAAO,EAAG,MAAM;AACfX,UAAAA,eAAe,CAAEW,IAAI,CAACC,EAAP,CAAf;AACAT,UAAAA,gBAAgB,CAAEQ,IAAI,CAACI,IAAP,CAAhB;AACA,SAJF;AAKC,QAAA,OAAO,EAAGN,OALX;AAMC,QAAA,GAAG,EAAGE,IAAI,CAACC;AANZ,SAQGrB,cAAc,CAAEoB,IAAI,CAACI,IAAP,CARjB,CADD;AAYA,KAbC,CADH,CApBD,CADC;AAAA,GANH,CADD;AAgDA,CA7DD;;AA+DA,eAAe,SAASC,qBAAT,QAIX;AAAA,MAJ2C;AAC9Cf,IAAAA,QAD8C;AAE9CH,IAAAA,uBAF8C;AAG9CmB,IAAAA;AAH8C,GAI3C;AACH,QAAM,CAAEC,YAAF,EAAgBlB,eAAhB,IAAoCd,QAAQ,EAAlD;AAEA,QAAM,CAAEiC,kBAAF,EAAsBC,qBAAtB,IAAgDlC,QAAQ,CAAE,KAAF,CAA9D;AAEA,QAAM,CAAEmC,QAAF,EAAYC,WAAZ,IAA4BpC,QAAQ,CAAE,EAAF,CAA1C;AAEA,QAAM,CAAEqC,qBAAF,EAAyBC,wBAAzB,IAAsDtC,QAAQ,CACnE,KADmE,CAApE;AAIA,QAAM,CAAEuC,WAAF,EAAeC,cAAf,IAAkCxC,QAAQ,CAAE,KAAF,CAAhD;AAEA,QAAM;AAAEyC,IAAAA;AAAF,MAAuB3C,WAAW,CAAED,SAAF,CAAxC,CAbG,CAeH;AACA;;AACA,QAAM6C,oBAAoB,GAAG3C,WAAW,CACvC,kBAAmE;AAAA,QAA3D4B,KAA2D,uEAAnDzB,EAAE,CAAE,0BAAF,CAAiD;AAAA,QAAjByC,MAAiB,uEAAR,EAAQ;AAClE,UAAMC,MAAM,GAAG;AACdjB,MAAAA,KADc;AAEdkB,MAAAA,OAAO,EAAExD,SAAS,CAAEsD,MAAF,CAFJ;AAGdG,MAAAA,MAAM,EAAE;AAHM,KAAf;AAMA,UAAMC,cAAc,GAAG,MAAMN,gBAAgB,CAC5C,UAD4C,EAE5C,eAF4C,EAG5CG,MAH4C,CAA7C;AAMA,WAAOG,cAAP;AACA,GAfsC,EAgBvC,CAAE1D,SAAF,EAAaoD,gBAAb,CAhBuC,CAAxC;;AAmBA,QAAMO,oBAAoB,GAAG,OAAQC,mBAAR,EAA6BN,MAA7B,KAAyC;AACrE,UAAMI,cAAc,GAAG,MAAML,oBAAoB,CAChDO,mBADgD,EAEhDN,MAFgD,CAAjD;AAIA5B,IAAAA,QAAQ,CAAEgC,cAAF,CAAR;AACA,GAND;;AAQA,QAAM;AACLG,IAAAA,gBADK;AAELlC,IAAAA,KAFK;AAGLmC,IAAAA,gBAHK;AAILC,IAAAA,SAJK;AAKLC,IAAAA,oBALK;AAMLC,IAAAA,QANK;AAOLC,IAAAA;AAPK,MAQFjD,qBAAqB,CAAE0B,YAAF,CARzB;AAUA,QAAMwB,cAAc,GAAGN,gBAAgB,IAAIC,gBAA3C;AAEA,QAAMM,cAAc,GAAG1D,WAAW,CAC/B8B,IAAF,IAAY;AACX,UAAM;AAAE6B,MAAAA,WAAW,EAAEf;AAAf,QAA0BnC,iBAAiB,CAAE4C,SAAF,CAAjD;AACAJ,IAAAA,oBAAoB,CAAEnB,IAAF,EAAQc,MAAR,CAApB;AACA,GAJgC,EAKjC,CAAES,SAAF,EAAa5C,iBAAb,EAAgCO,QAAhC,CALiC,CAAlC;;AAQA,QAAME,gBAAgB,GAAKY,IAAF,IAAY;AACpC;AACA,QAAKwB,oBAAL,EAA4B;AAC3BI,MAAAA,cAAc,CAAE5B,IAAF,CAAd;AACA;AACA,KALmC,CAOpC;;;AACAK,IAAAA,qBAAqB,CAAE,IAAF,CAArB,CARoC,CASpC;;AACAE,IAAAA,WAAW,CAAEP,IAAF,CAAX;AACA,GAXD;;AAaA,QAAM8B,iBAAiB,GAAK9B,IAAF,IAAY;AACrCmB,IAAAA,oBAAoB,CAAEnB,IAAF,EAAQ,EAAR,CAApB;AACA,GAFD;;AAIA,QAAM+B,gBAAgB,GAAK/B,IAAF,IAAY;AACpC,UAAMgC,KAAK,GAAG,CAAEvE,WAAW,CAAE,gBAAF,CAAb,CAAd;AACA0D,IAAAA,oBAAoB,CAAEnB,IAAF,EAAQgC,KAAR,CAApB;AACAvB,IAAAA,wBAAwB,CAAE,IAAF,CAAxB;AACA,GAJD;;AAMArC,EAAAA,SAAS,CAAE,MAAM;AAChB;AACA;AACA,QAAKgC,kBAAkB,IAAIoB,oBAA3B,EAAkD;AACjDI,MAAAA,cAAc,CAAEtB,QAAF,CAAd;AACAD,MAAAA,qBAAqB,CAAE,KAAF,CAArB;AACA;AACD,GAPQ,EAON,CAAED,kBAAF,EAAsBoB,oBAAtB,EAA4ClB,QAA5C,CAPM,CAAT;AASA,QAAM;AAAEtB,IAAAA;AAAF,MAAsBH,iBAAiB,EAA7C;AAEA,SACC,8BACG,CAAE,CAAEqB,0BAAF,IAAgCyB,cAAlC,KACD,cAAC,kBAAD;AAAoB,IAAA,SAAS;AAA7B,IAFF,EAIGzB,0BAA0B,IAAI,CAAEyB,cAAhC,IACD,cAAC,WAAD;AAAa,IAAA,SAAS,EAAC;AAAvB,KACC,cAAC,kBAAD,OADD,EAEC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,IAAD;AAAM,IAAA,IAAI,EAAGrD;AAAb,IADD,EAC+B,GAD/B,EAEGD,EAAE,CAAE,YAAF,CAFL,CADD,EAKC,yBALD,EAMGqD,QAAQ,IAAI1C,eAAe,CAACiD,MAA5B,GACD,8BACC,cAAC,qBAAD;AACC,IAAA,uBAAuB,EACtBlD,uBAFF;AAIC,IAAA,eAAe,EAAGC,eAJnB;AAKC,IAAA,eAAe,EAAGC,eALnB;AAMC,IAAA,QAAQ,EAAGC,QANZ;AAOC,IAAA,KAAK,EAAGC,KAPT;AAQC,IAAA,gBAAgB,EAAGC;AARpB,IADD,EAWC,yBAXD,CADC,GAcE8C,SApBL,EAqBGT,QAAQ,GACT,8BACC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,UADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfhB,MAAAA,wBAAwB,CAAE,IAAF,CAAxB;AACAE,MAAAA,cAAc,CAAE,KAAF,CAAd;AACA;AALF,KAOGtC,EAAE,CAAE,eAAF,CAPL,CADD,EAUC,yBAVD,CADS,GAaN6D,SAlCL,EAmCC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,UADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfzB,MAAAA,wBAAwB,CAAE,IAAF,CAAxB;AACAE,MAAAA,cAAc,CAAE,IAAF,CAAd;AACA;AALF,KAOGtC,EAAE,CAAE,aAAF,CAPL,CAnCD,CADD,CAFD,CALF,EAwDGmC,qBAAqB,IACtB,cAAC,uBAAD;AACC,IAAA,KAAK,EAAGnC,EAAE,CAAE,iCAAF,CADX;AAEC,IAAA,cAAc,EAAG,MAAM;AACtBoC,MAAAA,wBAAwB,CAAE,KAAF,CAAxB;AACA,KAJF;AAKC,IAAA,QAAQ,EACPC,WAAW,GAAGoB,iBAAH,GAAuBC;AANpC,IAzDF,CADD;AAsEA","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":["createBlock","Placeholder","Button","DropdownMenu","MenuGroup","MenuItem","useCallback","useState","useEffect","__","navigation","Icon","decodeEntities","useNavigationEntities","PlaceholderPreview","menuItemsToBlocks","useNavigationMenu","useCreateNavigationMenu","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","onCreateEmptyMenu","onCreateAllPages","block","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"]}
@@ -9,18 +9,16 @@ import classnames from 'classnames';
9
9
  */
10
10
 
11
11
  import { useInnerBlocksProps } from '@wordpress/block-editor';
12
- import { serialize } from '@wordpress/blocks';
13
12
  import { Disabled, Spinner } from '@wordpress/components';
14
13
  import { store as coreStore } from '@wordpress/core-data';
15
- import { useDispatch, useSelect } from '@wordpress/data';
16
- import { useCallback, useContext, useEffect, useRef } from '@wordpress/element';
17
- import { __, sprintf } from '@wordpress/i18n';
14
+ import { useSelect } from '@wordpress/data';
15
+ import { useContext, useEffect, useRef } from '@wordpress/element';
18
16
  /**
19
17
  * Internal dependencies
20
18
  */
21
19
 
22
20
  import useNavigationMenu from '../use-navigation-menu';
23
- import useTemplatePartAreaLabel from '../use-template-part-area-label';
21
+ import useCreateNavigationMenu from './use-create-navigation-menu';
24
22
 
25
23
  const NOOP = () => {};
26
24
 
@@ -51,9 +49,6 @@ export default function UnsavedInnerBlocks(_ref) {
51
49
  onChange: NOOP,
52
50
  onInput: NOOP
53
51
  });
54
- const {
55
- saveEntityRecord
56
- } = useDispatch(coreStore);
57
52
  const {
58
53
  isSaving,
59
54
  draftNavigationMenus,
@@ -78,19 +73,7 @@ export default function UnsavedInnerBlocks(_ref) {
78
73
  hasResolvedNavigationMenus,
79
74
  navigationMenus
80
75
  } = useNavigationMenu();
81
- const createNavigationMenu = useCallback(async title => {
82
- const record = {
83
- title,
84
- content: serialize(blocks),
85
- status: 'draft'
86
- };
87
- const navigationMenu = await saveEntityRecord('postType', 'wp_navigation', record);
88
- return navigationMenu;
89
- }, [blocks, serialize, saveEntityRecord]); // Because we can't conditionally call hooks, pass an undefined client id
90
- // arg to bypass the expensive `useTemplateArea` code. The hook will return
91
- // early.
92
-
93
- const area = useTemplatePartAreaLabel(isDisabled ? undefined : clientId); // Automatically save the uncontrolled blocks.
76
+ const createNavigationMenu = useCreateNavigationMenu(clientId); // Automatically save the uncontrolled blocks.
94
77
 
95
78
  useEffect(async () => {
96
79
  // The block will be disabled when used in a BlockPreview.
@@ -110,22 +93,10 @@ export default function UnsavedInnerBlocks(_ref) {
110
93
  }
111
94
 
112
95
  savingLock.current = true;
113
- const title = area ? sprintf( // translators: %s: the name of a menu (e.g. Header navigation).
114
- __('%s navigation'), area) : // translators: 'navigation' as in website navigation.
115
- __('Navigation'); // Determine how many menus start with the automatic title.
116
-
117
- const matchingMenuTitleCount = [...draftNavigationMenus, ...navigationMenus].reduce((count, menu) => {
118
- var _menu$title, _menu$title$raw;
119
-
120
- 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;
121
- }, 0); // Append a number to the end of the title if a menu with
122
- // the same name exists.
123
-
124
- const titleWithCount = matchingMenuTitleCount > 0 ? `${title} ${matchingMenuTitleCount + 1}` : title;
125
- const menu = await createNavigationMenu(titleWithCount);
96
+ const menu = await createNavigationMenu(null, blocks);
126
97
  onSave(menu);
127
98
  savingLock.current = false;
128
- }, [isDisabled, isSaving, hasResolvedDraftNavigationMenus, hasResolvedNavigationMenus, draftNavigationMenus, navigationMenus, hasSelection, createNavigationMenu, area]);
99
+ }, [isDisabled, isSaving, hasResolvedDraftNavigationMenus, hasResolvedNavigationMenus, draftNavigationMenus, navigationMenus, hasSelection, createNavigationMenu, blocks]);
129
100
  return createElement(Fragment, null, createElement("nav", blockProps, createElement("div", {
130
101
  className: "wp-block-navigation__unsaved-changes"
131
102
  }, createElement(Disabled, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js"],"names":["classnames","useInnerBlocksProps","serialize","Disabled","Spinner","store","coreStore","useDispatch","useSelect","useCallback","useContext","useEffect","useRef","__","sprintf","useNavigationMenu","useTemplatePartAreaLabel","NOOP","EMPTY_OBJECT","DRAFT_MENU_PARAMS","status","per_page","UnsavedInnerBlocks","blockProps","blocks","clientId","hasSavedUnsavedInnerBlocks","onSave","hasSelection","isDisabled","Context","savingLock","innerBlocksProps","renderAppender","undefined","value","onChange","onInput","saveEntityRecord","isSaving","draftNavigationMenus","hasResolvedDraftNavigationMenus","select","getEntityRecords","hasFinishedResolution","isSavingEntityRecord","hasResolvedNavigationMenus","navigationMenus","createNavigationMenu","title","record","content","navigationMenu","area","current","matchingMenuTitleCount","reduce","count","menu","raw","startsWith","titleWithCount"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,mBAAT,QAAoC,yBAApC;AACA,SAASC,SAAT,QAA0B,mBAA1B;AACA,SAASC,QAAT,EAAmBC,OAAnB,QAAkC,uBAAlC;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,WAAT,EAAsBC,UAAtB,EAAkCC,SAAlC,EAA6CC,MAA7C,QAA2D,oBAA3D;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA;AACA;AACA;;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,OAAOC,wBAAP,MAAqC,iCAArC;;AAEA,MAAMC,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;AAMA,eAAe,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,GAAGnB,UAAU,CAAEP,QAAQ,CAAC2B,OAAX,CAA7B;AACA,QAAMC,UAAU,GAAGnB,MAAM,CAAE,KAAF,CAAzB;AAEA,QAAMoB,gBAAgB,GAAG/B,mBAAmB,CAAEsB,UAAF,EAAc;AACzDU,IAAAA,cAAc,EAAEL,YAAY,GAAGM,SAAH,GAAe,KADc;AAGzD;AACA;AACA;AACAC,IAAAA,KAAK,EAAEX,MANkD;AAOzDY,IAAAA,QAAQ,EAAEnB,IAP+C;AAQzDoB,IAAAA,OAAO,EAAEpB;AARgD,GAAd,CAA5C;AAUA,QAAM;AAAEqB,IAAAA;AAAF,MAAuB/B,WAAW,CAAED,SAAF,CAAxC;AAEA,QAAM;AACLiC,IAAAA,QADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA;AAHK,MAIFjC,SAAS,CACVkC,MAAF,IAAc;AACb,QAAKb,UAAL,EAAkB;AACjB,aAAOX,YAAP;AACA;;AAED,UAAM;AACLyB,MAAAA,gBADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEpC,SAAF,CAJV;AAMA,WAAO;AACNiC,MAAAA,QAAQ,EAAEM,oBAAoB,CAAE,UAAF,EAAc,eAAd,CADxB;AAENL,MAAAA,oBAAoB,EAAEG,gBAAgB,CAAE,GAAGxB,iBAAL,CAFhC;AAGNsB,MAAAA,+BAA+B,EAAEG,qBAAqB,CACrD,kBADqD,EAErDzB,iBAFqD;AAHhD,KAAP;AAQA,GApBW,EAqBZ,CAAEU,UAAF,CArBY,CAJb;AA4BA,QAAM;AAAEiB,IAAAA,0BAAF;AAA8BC,IAAAA;AAA9B,MAAkDhC,iBAAiB,EAAzE;AAEA,QAAMiC,oBAAoB,GAAGvC,WAAW,CACvC,MAAQwC,KAAR,IAAmB;AAClB,UAAMC,MAAM,GAAG;AACdD,MAAAA,KADc;AAEdE,MAAAA,OAAO,EAAEjD,SAAS,CAAEsB,MAAF,CAFJ;AAGdJ,MAAAA,MAAM,EAAE;AAHM,KAAf;AAMA,UAAMgC,cAAc,GAAG,MAAMd,gBAAgB,CAC5C,UAD4C,EAE5C,eAF4C,EAG5CY,MAH4C,CAA7C;AAMA,WAAOE,cAAP;AACA,GAfsC,EAgBvC,CAAE5B,MAAF,EAAUtB,SAAV,EAAqBoC,gBAArB,CAhBuC,CAAxC,CAhDG,CAmEH;AACA;AACA;;AACA,QAAMe,IAAI,GAAGrC,wBAAwB,CAAEa,UAAU,GAAGK,SAAH,GAAeT,QAA3B,CAArC,CAtEG,CAwEH;;AACAd,EAAAA,SAAS,CAAE,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QACCkB,UAAU,IACVH,0BADA,IAEAa,QAFA,IAGAR,UAAU,CAACuB,OAHX,IAIA,CAAEb,+BAJF,IAKA,CAAEK,0BALF,IAMA,CAAElB,YAPH,EAQE;AACD;AACA;;AAEDG,IAAAA,UAAU,CAACuB,OAAX,GAAqB,IAArB;AACA,UAAML,KAAK,GAAGI,IAAI,GACfvC,OAAO,EACP;AACAD,IAAAA,EAAE,CAAE,eAAF,CAFK,EAGPwC,IAHO,CADQ,GAMf;AACAxC,IAAAA,EAAE,CAAE,YAAF,CAPL,CA1BsB,CAmCtB;;AACA,UAAM0C,sBAAsB,GAAG,CAC9B,GAAGf,oBAD2B,EAE9B,GAAGO,eAF2B,EAG7BS,MAH6B,CAI9B,CAAEC,KAAF,EAASC,IAAT;AAAA;;AAAA,aACCA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,mBAAAA,IAAI,CAAET,KAAN,uEAAaU,GAAb,4DAAkBC,UAAlB,CAA8BX,KAA9B,IAAwCQ,KAAK,GAAG,CAAhD,GAAoDA,KADrD;AAAA,KAJ8B,EAM9B,CAN8B,CAA/B,CApCsB,CA6CtB;AACA;;AACA,UAAMI,cAAc,GACnBN,sBAAsB,GAAG,CAAzB,GACI,GAAGN,KAAO,IAAIM,sBAAsB,GAAG,CAAG,EAD9C,GAEGN,KAHJ;AAKA,UAAMS,IAAI,GAAG,MAAMV,oBAAoB,CAAEa,cAAF,CAAvC;AACAlC,IAAAA,MAAM,CAAE+B,IAAF,CAAN;AACA3B,IAAAA,UAAU,CAACuB,OAAX,GAAqB,KAArB;AACA,GAvDQ,EAuDN,CACFzB,UADE,EAEFU,QAFE,EAGFE,+BAHE,EAIFK,0BAJE,EAKFN,oBALE,EAMFO,eANE,EAOFnB,YAPE,EAQFoB,oBARE,EASFK,IATE,CAvDM,CAAT;AAmEA,SACC,8BACC,qBAAU9B,UAAV,EACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,QAAD;AACC,IAAA,SAAS,EAAGvB,UAAU,CACrB,8CADqB,EAErB;AACC,mBAAa4B;AADd,KAFqB;AADvB,KAQC,qBAAUI,gBAAV,CARD,CADD,EAWGJ,YAAY,IAAI,cAAC,OAAD,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":["classnames","useInnerBlocksProps","Disabled","Spinner","store","coreStore","useSelect","useContext","useEffect","useRef","useNavigationMenu","useCreateNavigationMenu","NOOP","EMPTY_OBJECT","DRAFT_MENU_PARAMS","status","per_page","UnsavedInnerBlocks","blockProps","blocks","clientId","hasSavedUnsavedInnerBlocks","onSave","hasSelection","isDisabled","Context","savingLock","innerBlocksProps","renderAppender","undefined","value","onChange","onInput","isSaving","draftNavigationMenus","hasResolvedDraftNavigationMenus","select","getEntityRecords","hasFinishedResolution","isSavingEntityRecord","hasResolvedNavigationMenus","navigationMenus","createNavigationMenu","current","menu"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,mBAAT,QAAoC,yBAApC;AACA,SAASC,QAAT,EAAmBC,OAAnB,QAAkC,uBAAlC;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,UAAT,EAAqBC,SAArB,EAAgCC,MAAhC,QAA8C,oBAA9C;AAEA;AACA;AACA;;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,OAAOC,uBAAP,MAAoC,8BAApC;;AAEA,MAAMC,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;AAMA,eAAe,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,GAAGjB,UAAU,CAAEL,QAAQ,CAACuB,OAAX,CAA7B;AACA,QAAMC,UAAU,GAAGjB,MAAM,CAAE,KAAF,CAAzB;AAEA,QAAMkB,gBAAgB,GAAG1B,mBAAmB,CAAEiB,UAAF,EAAc;AACzDU,IAAAA,cAAc,EAAEL,YAAY,GAAGM,SAAH,GAAe,KADc;AAGzD;AACA;AACA;AACAC,IAAAA,KAAK,EAAEX,MANkD;AAOzDY,IAAAA,QAAQ,EAAEnB,IAP+C;AAQzDoB,IAAAA,OAAO,EAAEpB;AARgD,GAAd,CAA5C;AAWA,QAAM;AACLqB,IAAAA,QADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA;AAHK,MAIF7B,SAAS,CACV8B,MAAF,IAAc;AACb,QAAKZ,UAAL,EAAkB;AACjB,aAAOX,YAAP;AACA;;AAED,UAAM;AACLwB,MAAAA,gBADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAE/B,SAAF,CAJV;AAMA,WAAO;AACN4B,MAAAA,QAAQ,EAAEM,oBAAoB,CAAE,UAAF,EAAc,eAAd,CADxB;AAENL,MAAAA,oBAAoB,EAAEG,gBAAgB,CAAE,GAAGvB,iBAAL,CAFhC;AAGNqB,MAAAA,+BAA+B,EAAEG,qBAAqB,CACrD,kBADqD,EAErDxB,iBAFqD;AAHhD,KAAP;AAQA,GApBW,EAqBZ,CAAEU,UAAF,CArBY,CAJb;AA4BA,QAAM;AAAEgB,IAAAA,0BAAF;AAA8BC,IAAAA;AAA9B,MAAkD/B,iBAAiB,EAAzE;AAEA,QAAMgC,oBAAoB,GAAG/B,uBAAuB,CAAES,QAAF,CAApD,CA/CG,CAiDH;;AACAZ,EAAAA,SAAS,CAAE,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QACCgB,UAAU,IACVH,0BADA,IAEAY,QAFA,IAGAP,UAAU,CAACiB,OAHX,IAIA,CAAER,+BAJF,IAKA,CAAEK,0BALF,IAMA,CAAEjB,YAPH,EAQE;AACD;AACA;;AAEDG,IAAAA,UAAU,CAACiB,OAAX,GAAqB,IAArB;AACA,UAAMC,IAAI,GAAG,MAAMF,oBAAoB,CAAE,IAAF,EAAQvB,MAAR,CAAvC;AACAG,IAAAA,MAAM,CAAEsB,IAAF,CAAN;AACAlB,IAAAA,UAAU,CAACiB,OAAX,GAAqB,KAArB;AACA,GA7BQ,EA6BN,CACFnB,UADE,EAEFS,QAFE,EAGFE,+BAHE,EAIFK,0BAJE,EAKFN,oBALE,EAMFO,eANE,EAOFlB,YAPE,EAQFmB,oBARE,EASFvB,MATE,CA7BM,CAAT;AAyCA,SACC,8BACC,qBAAUD,UAAV,EACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,QAAD;AACC,IAAA,SAAS,EAAGlB,UAAU,CACrB,8CADqB,EAErB;AACC,mBAAauB;AADd,KAFqB;AADvB,KAQC,qBAAUI,gBAAV,CARD,CADD,EAWGJ,YAAY,IAAI,cAAC,OAAD,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 { 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,36 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { serialize } from '@wordpress/blocks';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { useDispatch } from '@wordpress/data';
7
+ import { useCallback } from '@wordpress/element';
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+
12
+ import useGenerateDefaultNavigationTitle from './use-generate-default-navigation-title';
13
+ export default function useCreateNavigationMenu(clientId) {
14
+ const {
15
+ saveEntityRecord
16
+ } = useDispatch(coreStore);
17
+ const generateDefaultTitle = useGenerateDefaultNavigationTitle(clientId); // This callback uses data from the two placeholder steps and only creates
18
+ // a new navigation menu when the user completes the final step.
19
+
20
+ return useCallback(async function () {
21
+ let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
22
+ let blocks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
23
+
24
+ if (!title) {
25
+ title = await generateDefaultTitle();
26
+ }
27
+
28
+ const record = {
29
+ title,
30
+ content: serialize(blocks),
31
+ status: 'publish'
32
+ };
33
+ return await saveEntityRecord('postType', 'wp_navigation', record);
34
+ }, [serialize, saveEntityRecord]);
35
+ }
36
+ //# 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":["serialize","store","coreStore","useDispatch","useCallback","useGenerateDefaultNavigationTitle","useCreateNavigationMenu","clientId","saveEntityRecord","generateDefaultTitle","title","blocks","record","content","status"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,mBAA1B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,WAAT,QAA4B,oBAA5B;AAEA;AACA;AACA;;AACA,OAAOC,iCAAP,MAA8C,yCAA9C;AAEA,eAAe,SAASC,uBAAT,CAAkCC,QAAlC,EAA6C;AAC3D,QAAM;AAAEC,IAAAA;AAAF,MAAuBL,WAAW,CAAED,SAAF,CAAxC;AACA,QAAMO,oBAAoB,GAAGJ,iCAAiC,CAAEE,QAAF,CAA9D,CAF2D,CAI3D;AACA;;AACA,SAAOH,WAAW,CACjB,kBAAuC;AAAA,QAA/BM,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,EAAEb,SAAS,CAAEW,MAAF,CAFJ;AAGdG,MAAAA,MAAM,EAAE;AAHM,KAAf;AAMA,WAAO,MAAMN,gBAAgB,CAC5B,UAD4B,EAE5B,eAF4B,EAG5BI,MAH4B,CAA7B;AAKA,GAhBgB,EAiBjB,CAAEZ,SAAF,EAAaQ,gBAAb,CAjBiB,CAAlB;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,57 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Disabled } from '@wordpress/components';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { useRegistry } from '@wordpress/data';
7
+ import { useContext, useCallback } from '@wordpress/element';
8
+ import { __, sprintf } from '@wordpress/i18n';
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+
13
+ import useTemplatePartAreaLabel from '../use-template-part-area-label';
14
+ const DRAFT_MENU_PARAMS = ['postType', 'wp_navigation', {
15
+ status: 'draft',
16
+ per_page: -1
17
+ }];
18
+ const PUBLISHED_MENU_PARAMS = ['postType', 'wp_navigation', {
19
+ per_page: -1,
20
+ status: 'publish'
21
+ }];
22
+ export default function useGenerateDefaultNavigationTitle(clientId) {
23
+ // The block will be disabled in a block preview, use this as a way of
24
+ // avoiding the side-effects of this component for block previews.
25
+ const isDisabled = useContext(Disabled.Context); // Because we can't conditionally call hooks, pass an undefined client id
26
+ // arg to bypass the expensive `useTemplateArea` code. The hook will return
27
+ // early.
28
+
29
+ const area = useTemplatePartAreaLabel(isDisabled ? undefined : clientId);
30
+ const registry = useRegistry();
31
+ return useCallback(async () => {
32
+ // Ensure other navigation menus have loaded so an
33
+ // accurate name can be created.
34
+ if (isDisabled) {
35
+ return '';
36
+ }
37
+
38
+ const {
39
+ getEntityRecords
40
+ } = registry.resolveSelect(coreStore);
41
+ const [draftNavigationMenus, navigationMenus] = await Promise.all([getEntityRecords(...DRAFT_MENU_PARAMS), getEntityRecords(...PUBLISHED_MENU_PARAMS)]);
42
+ const title = area ? sprintf( // translators: %s: the name of a menu (e.g. Header navigation).
43
+ __('%s navigation'), area) : // translators: 'navigation' as in website navigation.
44
+ __('Navigation'); // Determine how many menus start with the automatic title.
45
+
46
+ const matchingMenuTitleCount = [...draftNavigationMenus, ...navigationMenus].reduce((count, menu) => {
47
+ var _menu$title, _menu$title$raw;
48
+
49
+ 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;
50
+ }, 0); // Append a number to the end of the title if a menu with
51
+ // the same name exists.
52
+
53
+ const titleWithCount = matchingMenuTitleCount > 0 ? `${title} ${matchingMenuTitleCount + 1}` : title;
54
+ return titleWithCount || '';
55
+ }, [isDisabled, area]);
56
+ }
57
+ //# 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":["Disabled","store","coreStore","useRegistry","useContext","useCallback","__","sprintf","useTemplatePartAreaLabel","DRAFT_MENU_PARAMS","status","per_page","PUBLISHED_MENU_PARAMS","useGenerateDefaultNavigationTitle","clientId","isDisabled","Context","area","undefined","registry","getEntityRecords","resolveSelect","draftNavigationMenus","navigationMenus","Promise","all","title","matchingMenuTitleCount","reduce","count","menu","raw","startsWith","titleWithCount"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,uBAAzB;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,UAAT,EAAqBC,WAArB,QAAwC,oBAAxC;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA;AACA;AACA;;AACA,OAAOC,wBAAP,MAAqC,iCAArC;AAEA,MAAMC,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;AAMA,eAAe,SAASG,iCAAT,CAA4CC,QAA5C,EAAuD;AACrE;AACA;AACA,QAAMC,UAAU,GAAGX,UAAU,CAAEJ,QAAQ,CAACgB,OAAX,CAA7B,CAHqE,CAKrE;AACA;AACA;;AACA,QAAMC,IAAI,GAAGT,wBAAwB,CAAEO,UAAU,GAAGG,SAAH,GAAeJ,QAA3B,CAArC;AAEA,QAAMK,QAAQ,GAAGhB,WAAW,EAA5B;AACA,SAAOE,WAAW,CAAE,YAAY;AAC/B;AACA;AACA,QAAKU,UAAL,EAAkB;AACjB,aAAO,EAAP;AACA;;AACD,UAAM;AAAEK,MAAAA;AAAF,QAAuBD,QAAQ,CAACE,aAAT,CAAwBnB,SAAxB,CAA7B;AAEA,UAAM,CAAEoB,oBAAF,EAAwBC,eAAxB,IAA4C,MAAMC,OAAO,CAACC,GAAR,CAAa,CACpEL,gBAAgB,CAAE,GAAGX,iBAAL,CADoD,EAEpEW,gBAAgB,CAAE,GAAGR,qBAAL,CAFoD,CAAb,CAAxD;AAKA,UAAMc,KAAK,GAAGT,IAAI,GACfV,OAAO,EACP;AACAD,IAAAA,EAAE,CAAE,eAAF,CAFK,EAGPW,IAHO,CADQ,GAMf;AACAX,IAAAA,EAAE,CAAE,YAAF,CAPL,CAb+B,CAsB/B;;AACA,UAAMqB,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,GAxCiB,EAwCf,CAAElB,UAAF,EAAcE,IAAd,CAxCe,CAAlB;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"]}
@@ -16,7 +16,7 @@ const metadata = {
16
16
  keywords: ["menu", "navigation", "links"],
17
17
  textdomain: "default",
18
18
  attributes: {
19
- navigationMenuId: {
19
+ ref: {
20
20
  type: "number"
21
21
  },
22
22
  textColor: {
@@ -9,8 +9,8 @@ export default function save(_ref) {
9
9
  attributes
10
10
  } = _ref;
11
11
 
12
- if (attributes.navigationMenuId) {
13
- // Avoid rendering inner blocks when a navigationMenuId is defined.
12
+ if (attributes.ref) {
13
+ // Avoid rendering inner blocks when a ref is defined.
14
14
  // When this id is defined the inner blocks are loaded from the
15
15
  // `wp_navigation` entity rather than the hard-coded block html.
16
16
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/save.js"],"names":["InnerBlocks","save","attributes","navigationMenuId"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,WAAT,QAA4B,yBAA5B;AAEA,eAAe,SAASC,IAAT,OAAgC;AAAA,MAAjB;AAAEC,IAAAA;AAAF,GAAiB;;AAC9C,MAAKA,UAAU,CAACC,gBAAhB,EAAmC;AAClC;AACA;AACA;AACA;AACA;;AACD,SAAO,cAAC,WAAD,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":["InnerBlocks","save","attributes","ref"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,WAAT,QAA4B,yBAA5B;AAEA,eAAe,SAASC,IAAT,OAAgC;AAAA,MAAjB;AAAEC,IAAAA;AAAF,GAAiB;;AAC9C,MAAKA,UAAU,CAACC,GAAhB,EAAsB;AACrB;AACA;AACA;AACA;AACA;;AACD,SAAO,cAAC,WAAD,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"]}
@@ -3,29 +3,40 @@
3
3
  */
4
4
  import { store as coreStore } from '@wordpress/core-data';
5
5
  import { useSelect } from '@wordpress/data';
6
- export default function useNavigationMenu(navigationMenuId) {
6
+ export default function useNavigationMenu(ref) {
7
7
  return useSelect(select => {
8
+ var _navigationMenu;
9
+
8
10
  const {
11
+ getEntityRecord,
9
12
  getEditedEntityRecord,
10
13
  getEntityRecords,
11
14
  hasFinishedResolution
12
15
  } = select(coreStore);
13
- const navigationMenuSingleArgs = ['postType', 'wp_navigation', navigationMenuId];
14
- const navigationMenu = navigationMenuId ? getEditedEntityRecord(...navigationMenuSingleArgs) : null;
15
- const hasResolvedNavigationMenu = navigationMenuId ? hasFinishedResolution('getEditedEntityRecord', navigationMenuSingleArgs) : false;
16
+ const navigationMenuSingleArgs = ['postType', 'wp_navigation', ref];
17
+ const rawNavigationMenu = ref ? getEntityRecord(...navigationMenuSingleArgs) : null;
18
+ let navigationMenu = ref ? getEditedEntityRecord(...navigationMenuSingleArgs) : null; // getEditedEntityRecord will return the post regardless of status.
19
+ // Therefore if the found post is not published then we should ignore it.
20
+
21
+ if (((_navigationMenu = navigationMenu) === null || _navigationMenu === void 0 ? void 0 : _navigationMenu.status) !== 'publish') {
22
+ navigationMenu = null;
23
+ }
24
+
25
+ const hasResolvedNavigationMenu = ref ? hasFinishedResolution('getEditedEntityRecord', navigationMenuSingleArgs) : false;
16
26
  const navigationMenuMultipleArgs = ['postType', 'wp_navigation', {
17
- per_page: -1
27
+ per_page: -1,
28
+ status: 'publish'
18
29
  }];
19
30
  const navigationMenus = getEntityRecords(...navigationMenuMultipleArgs);
20
- const canSwitchNavigationMenu = navigationMenuId ? (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 1 : (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 0;
31
+ const canSwitchNavigationMenu = ref ? (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 1 : (navigationMenus === null || navigationMenus === void 0 ? void 0 : navigationMenus.length) > 0;
21
32
  return {
22
33
  isNavigationMenuResolved: hasResolvedNavigationMenu,
23
- isNavigationMenuMissing: !navigationMenuId || hasResolvedNavigationMenu && !navigationMenu,
34
+ isNavigationMenuMissing: !ref || hasResolvedNavigationMenu && !rawNavigationMenu,
24
35
  canSwitchNavigationMenu,
25
36
  hasResolvedNavigationMenus: hasFinishedResolution('getEntityRecords', navigationMenuMultipleArgs),
26
37
  navigationMenu,
27
38
  navigationMenus
28
39
  };
29
- }, [navigationMenuId]);
40
+ }, [ref]);
30
41
  }
31
42
  //# sourceMappingURL=use-navigation-menu.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"names":["store","coreStore","useSelect","useNavigationMenu","navigationMenuId","select","getEditedEntityRecord","getEntityRecords","hasFinishedResolution","navigationMenuSingleArgs","navigationMenu","hasResolvedNavigationMenu","navigationMenuMultipleArgs","per_page","navigationMenus","canSwitchNavigationMenu","length","isNavigationMenuResolved","isNavigationMenuMissing","hasResolvedNavigationMenus"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA,eAAe,SAASC,iBAAT,CAA4BC,gBAA5B,EAA+C;AAC7D,SAAOF,SAAS,CACbG,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,qBADK;AAELC,MAAAA,gBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEJ,SAAF,CAJV;AAMA,UAAMQ,wBAAwB,GAAG,CAChC,UADgC,EAEhC,eAFgC,EAGhCL,gBAHgC,CAAjC;AAKA,UAAMM,cAAc,GAAGN,gBAAgB,GACpCE,qBAAqB,CAAE,GAAGG,wBAAL,CADe,GAEpC,IAFH;AAGA,UAAME,yBAAyB,GAAGP,gBAAgB,GAC/CI,qBAAqB,CACrB,uBADqB,EAErBC,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,GAAGP,gBAAgB,CACvC,GAAGK,0BADoC,CAAxC;AAIA,UAAMG,uBAAuB,GAAGX,gBAAgB,GAC7C,CAAAU,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,CAAEd,gBAAF,IACEO,yBAAyB,IAAI,CAAED,cAJ5B;AAKNK,MAAAA,uBALM;AAMNI,MAAAA,0BAA0B,EAAEX,qBAAqB,CAChD,kBADgD,EAEhDI,0BAFgD,CAN3C;AAUNF,MAAAA,cAVM;AAWNI,MAAAA;AAXM,KAAP;AAaA,GAjDc,EAkDf,CAAEV,gBAAF,CAlDe,CAAhB;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":["store","coreStore","useSelect","useNavigationMenu","ref","select","getEntityRecord","getEditedEntityRecord","getEntityRecords","hasFinishedResolution","navigationMenuSingleArgs","rawNavigationMenu","navigationMenu","status","hasResolvedNavigationMenu","navigationMenuMultipleArgs","per_page","navigationMenus","canSwitchNavigationMenu","length","isNavigationMenuResolved","isNavigationMenuMissing","hasResolvedNavigationMenus"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,SAAT,QAA0B,iBAA1B;AAEA,eAAe,SAASC,iBAAT,CAA4BC,GAA5B,EAAkC;AAChD,SAAOF,SAAS,CACbG,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA,gBAHK;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEJ,SAAF,CALV;AAOA,UAAMS,wBAAwB,GAAG,CAChC,UADgC,EAEhC,eAFgC,EAGhCN,GAHgC,CAAjC;AAKA,UAAMO,iBAAiB,GAAGP,GAAG,GAC1BE,eAAe,CAAE,GAAGI,wBAAL,CADW,GAE1B,IAFH;AAGA,QAAIE,cAAc,GAAGR,GAAG,GACrBG,qBAAqB,CAAE,GAAGG,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,GAAGV,GAAG,GAClCK,qBAAqB,CACrB,uBADqB,EAErBC,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,GAAGT,gBAAgB,CACvC,GAAGO,0BADoC,CAAxC;AAIA,UAAMG,uBAAuB,GAAGd,GAAG,GAChC,CAAAa,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,CAAEjB,GAAF,IACEU,yBAAyB,IAAI,CAAEH,iBAJ5B;AAKNO,MAAAA,uBALM;AAMNI,MAAAA,0BAA0B,EAAEb,qBAAqB,CAChD,kBADgD,EAEhDM,0BAFgD,CAN3C;AAUNH,MAAAA,cAVM;AAWNK,MAAAA;AAXM,KAAP;AAaA,GA5Dc,EA6Df,CAAEb,GAAF,CA7De,CAAhB;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"]}
@@ -530,6 +530,10 @@ export default function NavigationSubmenuEdit(_ref) {
530
530
  allowedBlocks: ALLOWED_BLOCKS,
531
531
  __experimentalDefaultBlock: DEFAULT_BLOCK,
532
532
  __experimentalDirectInsert: true,
533
+ // Ensure block toolbar is not too far removed from item
534
+ // being edited.
535
+ // see: https://github.com/WordPress/gutenberg/pull/34615.
536
+ __experimentalCaptureToolbars: true,
533
537
  renderAppender: isSelected || isImmediateParentOfSelectedBlock && !selectedBlockHasDescendants || // Show the appender while dragging to allow inserting element between item and the appender.
534
538
  hasDescendants ? InnerBlocks.DefaultAppender : false
535
539
  });