@wordpress/block-library 8.9.0 → 8.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/block/edit.native.js +17 -10
  3. package/build/block/edit.native.js.map +1 -1
  4. package/build/code/index.js +1 -0
  5. package/build/code/index.js.map +1 -1
  6. package/build/column/index.js +1 -1
  7. package/build/columns/transforms.js +1 -5
  8. package/build/columns/transforms.js.map +1 -1
  9. package/build/comment-author-name/edit.js +1 -1
  10. package/build/comment-author-name/edit.js.map +1 -1
  11. package/build/comment-edit-link/edit.js +1 -1
  12. package/build/comment-edit-link/edit.js.map +1 -1
  13. package/build/cover/edit/inspector-controls.js +1 -1
  14. package/build/cover/edit/inspector-controls.js.map +1 -1
  15. package/build/cover/edit/resizable-cover-popover.js +3 -3
  16. package/build/cover/edit/resizable-cover-popover.js.map +1 -1
  17. package/build/cover/index.js +1 -1
  18. package/build/cover/variations.js +1 -1
  19. package/build/cover/variations.js.map +1 -1
  20. package/build/details/edit.js +19 -5
  21. package/build/details/edit.js.map +1 -1
  22. package/build/details/index.js +14 -10
  23. package/build/details/index.js.map +1 -1
  24. package/build/details/save.js +4 -1
  25. package/build/details/save.js.map +1 -1
  26. package/build/embed/variations.js +2 -2
  27. package/build/embed/variations.js.map +1 -1
  28. package/build/file/interactivity.js +19 -0
  29. package/build/file/interactivity.js.map +1 -0
  30. package/build/file/{utils.js → utils/index.js} +1 -1
  31. package/build/file/utils/index.js.map +1 -0
  32. package/build/file/view.js +1 -1
  33. package/build/file/view.js.map +1 -1
  34. package/build/freeform/modal.js +20 -17
  35. package/build/freeform/modal.js.map +1 -1
  36. package/build/gallery/edit.js +2 -8
  37. package/build/gallery/edit.js.map +1 -1
  38. package/build/gallery/v1/edit.js +1 -7
  39. package/build/gallery/v1/edit.js.map +1 -1
  40. package/build/gallery/v1/gallery-image.native.js +1 -3
  41. package/build/gallery/v1/gallery-image.native.js.map +1 -1
  42. package/build/group/transforms.js +0 -5
  43. package/build/group/transforms.js.map +1 -1
  44. package/build/image/deprecated.js +2 -4
  45. package/build/image/deprecated.js.map +1 -1
  46. package/build/image/edit.js +13 -11
  47. package/build/image/edit.js.map +1 -1
  48. package/build/image/image.js +7 -12
  49. package/build/image/image.js.map +1 -1
  50. package/build/image/index.js +3 -0
  51. package/build/image/index.js.map +1 -1
  52. package/build/image/interactivity.js +102 -0
  53. package/build/image/interactivity.js.map +1 -0
  54. package/build/image/save.js +2 -4
  55. package/build/image/save.js.map +1 -1
  56. package/build/image/utils.js +10 -18
  57. package/build/image/utils.js.map +1 -1
  58. package/build/index.js +0 -6
  59. package/build/index.js.map +1 -1
  60. package/build/index.native.js +1 -1
  61. package/build/index.native.js.map +1 -1
  62. package/build/latest-posts/edit.native.js +1 -3
  63. package/build/latest-posts/edit.native.js.map +1 -1
  64. package/build/list/edit.js +1 -1
  65. package/build/list/edit.js.map +1 -1
  66. package/build/list-item/edit.native.js +1 -1
  67. package/build/list-item/edit.native.js.map +1 -1
  68. package/build/list-item/transforms.js +4 -1
  69. package/build/list-item/transforms.js.map +1 -1
  70. package/build/list-item/utils.js +5 -1
  71. package/build/list-item/utils.js.map +1 -1
  72. package/build/loginout/index.js +11 -1
  73. package/build/loginout/index.js.map +1 -1
  74. package/build/media-text/deprecated.js +4 -6
  75. package/build/media-text/deprecated.js.map +1 -1
  76. package/build/media-text/edit.js +13 -11
  77. package/build/media-text/edit.js.map +1 -1
  78. package/build/media-text/media-container.js +3 -3
  79. package/build/media-text/media-container.js.map +1 -1
  80. package/build/media-text/save.js +1 -3
  81. package/build/media-text/save.js.map +1 -1
  82. package/build/navigation/constants.js +15 -0
  83. package/build/navigation/constants.js.map +1 -0
  84. package/build/navigation/edit/index.js +16 -26
  85. package/build/navigation/edit/index.js.map +1 -1
  86. package/build/navigation/edit/inner-blocks.js +5 -7
  87. package/build/navigation/edit/inner-blocks.js.map +1 -1
  88. package/build/navigation/edit/leaf-more-menu.js +148 -0
  89. package/build/navigation/edit/leaf-more-menu.js.map +1 -0
  90. package/build/navigation/edit/menu-inspector-controls.js +53 -8
  91. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  92. package/build/navigation/edit/navigation-menu-delete-control.js +6 -6
  93. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  94. package/build/navigation/edit/unsaved-inner-blocks.js +12 -25
  95. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  96. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  97. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  98. package/build/navigation/interactivity.js +157 -0
  99. package/build/navigation/interactivity.js.map +1 -0
  100. package/build/navigation-link/edit.js +7 -5
  101. package/build/navigation-link/edit.js.map +1 -1
  102. package/build/navigation-link/update-attributes.js +5 -5
  103. package/build/navigation-link/update-attributes.js.map +1 -1
  104. package/build/navigation-submenu/edit.js +7 -5
  105. package/build/navigation-submenu/edit.js.map +1 -1
  106. package/build/paragraph/index.js +5 -1
  107. package/build/paragraph/index.js.map +1 -1
  108. package/build/paragraph/transforms.js +5 -1
  109. package/build/paragraph/transforms.js.map +1 -1
  110. package/build/pattern/edit.js +42 -8
  111. package/build/pattern/edit.js.map +1 -1
  112. package/build/pattern/index.js +12 -5
  113. package/build/pattern/index.js.map +1 -1
  114. package/build/pattern/v1/edit.js +57 -0
  115. package/build/pattern/v1/edit.js.map +1 -0
  116. package/build/post-author-name/edit.js +1 -1
  117. package/build/post-author-name/edit.js.map +1 -1
  118. package/build/post-featured-image/edit.js +1 -2
  119. package/build/post-featured-image/edit.js.map +1 -1
  120. package/build/post-featured-image/overlay.js +5 -0
  121. package/build/post-featured-image/overlay.js.map +1 -1
  122. package/build/post-title/edit.js +24 -7
  123. package/build/post-title/edit.js.map +1 -1
  124. package/build/preformatted/edit.native.js +3 -2
  125. package/build/preformatted/edit.native.js.map +1 -1
  126. package/build/quote/transforms.js +23 -37
  127. package/build/quote/transforms.js.map +1 -1
  128. package/build/read-more/edit.js +1 -1
  129. package/build/read-more/edit.js.map +1 -1
  130. package/build/search/edit.js +9 -1
  131. package/build/search/edit.js.map +1 -1
  132. package/build/site-title/edit/index.js +1 -1
  133. package/build/site-title/edit/index.js.map +1 -1
  134. package/build/social-link/edit.js +21 -4
  135. package/build/social-link/edit.js.map +1 -1
  136. package/build/social-links/edit.js +2 -2
  137. package/build/social-links/edit.js.map +1 -1
  138. package/build/template-part/edit/index.js +1 -7
  139. package/build/template-part/edit/index.js.map +1 -1
  140. package/build/template-part/edit/utils/hooks.js +2 -2
  141. package/build/template-part/edit/utils/hooks.js.map +1 -1
  142. package/build/utils/interactivity/constants.js +9 -0
  143. package/build/utils/interactivity/constants.js.map +1 -0
  144. package/build/utils/interactivity/directives.js +236 -0
  145. package/build/utils/interactivity/directives.js.map +1 -0
  146. package/build/utils/interactivity/hooks.js +176 -0
  147. package/build/utils/interactivity/hooks.js.map +1 -0
  148. package/build/utils/interactivity/hydration.js +34 -0
  149. package/build/utils/interactivity/hydration.js.map +1 -0
  150. package/build/utils/interactivity/index.js +34 -0
  151. package/build/utils/interactivity/index.js.map +1 -0
  152. package/build/utils/interactivity/portals.js +108 -0
  153. package/build/utils/interactivity/portals.js.map +1 -0
  154. package/build/utils/interactivity/store.js +67 -0
  155. package/build/utils/interactivity/store.js.map +1 -0
  156. package/build/utils/interactivity/utils.js +87 -0
  157. package/build/utils/interactivity/utils.js.map +1 -0
  158. package/build/utils/interactivity/vdom.js +109 -0
  159. package/build/utils/interactivity/vdom.js.map +1 -0
  160. package/build-module/block/edit.native.js +7 -1
  161. package/build-module/block/edit.native.js.map +1 -1
  162. package/build-module/code/index.js +1 -0
  163. package/build-module/code/index.js.map +1 -1
  164. package/build-module/column/index.js +1 -1
  165. package/build-module/columns/transforms.js +1 -5
  166. package/build-module/columns/transforms.js.map +1 -1
  167. package/build-module/comment-author-name/edit.js +1 -1
  168. package/build-module/comment-author-name/edit.js.map +1 -1
  169. package/build-module/comment-edit-link/edit.js +1 -1
  170. package/build-module/comment-edit-link/edit.js.map +1 -1
  171. package/build-module/cover/edit/inspector-controls.js +1 -1
  172. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  173. package/build-module/cover/edit/resizable-cover-popover.js +3 -3
  174. package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
  175. package/build-module/cover/index.js +1 -1
  176. package/build-module/cover/variations.js +1 -1
  177. package/build-module/cover/variations.js.map +1 -1
  178. package/build-module/details/edit.js +20 -6
  179. package/build-module/details/edit.js.map +1 -1
  180. package/build-module/details/index.js +14 -10
  181. package/build-module/details/index.js.map +1 -1
  182. package/build-module/details/save.js +5 -2
  183. package/build-module/details/save.js.map +1 -1
  184. package/build-module/embed/variations.js +2 -2
  185. package/build-module/embed/variations.js.map +1 -1
  186. package/build-module/file/interactivity.js +15 -0
  187. package/build-module/file/interactivity.js.map +1 -0
  188. package/build-module/file/{utils.js → utils/index.js} +1 -1
  189. package/build-module/file/utils/index.js.map +1 -0
  190. package/build-module/file/view.js +1 -1
  191. package/build-module/file/view.js.map +1 -1
  192. package/build-module/freeform/modal.js +19 -18
  193. package/build-module/freeform/modal.js.map +1 -1
  194. package/build-module/gallery/edit.js +2 -8
  195. package/build-module/gallery/edit.js.map +1 -1
  196. package/build-module/gallery/v1/edit.js +1 -6
  197. package/build-module/gallery/v1/edit.js.map +1 -1
  198. package/build-module/gallery/v1/gallery-image.native.js +1 -2
  199. package/build-module/gallery/v1/gallery-image.native.js.map +1 -1
  200. package/build-module/group/transforms.js +0 -5
  201. package/build-module/group/transforms.js.map +1 -1
  202. package/build-module/image/deprecated.js +2 -3
  203. package/build-module/image/deprecated.js.map +1 -1
  204. package/build-module/image/edit.js +12 -11
  205. package/build-module/image/edit.js.map +1 -1
  206. package/build-module/image/image.js +7 -11
  207. package/build-module/image/image.js.map +1 -1
  208. package/build-module/image/index.js +3 -0
  209. package/build-module/image/index.js.map +1 -1
  210. package/build-module/image/interactivity.js +99 -0
  211. package/build-module/image/interactivity.js.map +1 -0
  212. package/build-module/image/save.js +2 -3
  213. package/build-module/image/save.js.map +1 -1
  214. package/build-module/image/utils.js +10 -17
  215. package/build-module/image/utils.js.map +1 -1
  216. package/build-module/index.js +0 -4
  217. package/build-module/index.js.map +1 -1
  218. package/build-module/index.native.js +1 -1
  219. package/build-module/index.native.js.map +1 -1
  220. package/build-module/latest-posts/edit.native.js +1 -2
  221. package/build-module/latest-posts/edit.native.js.map +1 -1
  222. package/build-module/list/edit.js +1 -1
  223. package/build-module/list/edit.js.map +1 -1
  224. package/build-module/list-item/edit.native.js +1 -1
  225. package/build-module/list-item/edit.native.js.map +1 -1
  226. package/build-module/list-item/transforms.js +5 -2
  227. package/build-module/list-item/transforms.js.map +1 -1
  228. package/build-module/list-item/utils.js +5 -1
  229. package/build-module/list-item/utils.js.map +1 -1
  230. package/build-module/loginout/index.js +11 -1
  231. package/build-module/loginout/index.js.map +1 -1
  232. package/build-module/media-text/deprecated.js +4 -5
  233. package/build-module/media-text/deprecated.js.map +1 -1
  234. package/build-module/media-text/edit.js +13 -12
  235. package/build-module/media-text/edit.js.map +1 -1
  236. package/build-module/media-text/media-container.js +3 -3
  237. package/build-module/media-text/media-container.js.map +1 -1
  238. package/build-module/media-text/save.js +1 -2
  239. package/build-module/media-text/save.js.map +1 -1
  240. package/build-module/navigation/constants.js +6 -0
  241. package/build-module/navigation/constants.js.map +1 -0
  242. package/build-module/navigation/edit/index.js +18 -27
  243. package/build-module/navigation/edit/index.js.map +1 -1
  244. package/build-module/navigation/edit/inner-blocks.js +2 -4
  245. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  246. package/build-module/navigation/edit/leaf-more-menu.js +132 -0
  247. package/build-module/navigation/edit/leaf-more-menu.js.map +1 -0
  248. package/build-module/navigation/edit/menu-inspector-controls.js +52 -9
  249. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  250. package/build-module/navigation/edit/navigation-menu-delete-control.js +7 -7
  251. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  252. package/build-module/navigation/edit/unsaved-inner-blocks.js +9 -20
  253. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  254. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  255. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  256. package/build-module/navigation/interactivity.js +154 -0
  257. package/build-module/navigation/interactivity.js.map +1 -0
  258. package/build-module/navigation-link/edit.js +7 -5
  259. package/build-module/navigation-link/edit.js.map +1 -1
  260. package/build-module/navigation-link/update-attributes.js +4 -4
  261. package/build-module/navigation-link/update-attributes.js.map +1 -1
  262. package/build-module/navigation-submenu/edit.js +7 -5
  263. package/build-module/navigation-submenu/edit.js.map +1 -1
  264. package/build-module/paragraph/index.js +5 -1
  265. package/build-module/paragraph/index.js.map +1 -1
  266. package/build-module/paragraph/transforms.js +5 -1
  267. package/build-module/paragraph/transforms.js.map +1 -1
  268. package/build-module/pattern/edit.js +42 -9
  269. package/build-module/pattern/edit.js.map +1 -1
  270. package/build-module/pattern/index.js +12 -3
  271. package/build-module/pattern/index.js.map +1 -1
  272. package/build-module/pattern/v1/edit.js +48 -0
  273. package/build-module/pattern/v1/edit.js.map +1 -0
  274. package/build-module/post-author-name/edit.js +1 -1
  275. package/build-module/post-author-name/edit.js.map +1 -1
  276. package/build-module/post-featured-image/edit.js +1 -2
  277. package/build-module/post-featured-image/edit.js.map +1 -1
  278. package/build-module/post-featured-image/overlay.js +5 -0
  279. package/build-module/post-featured-image/overlay.js.map +1 -1
  280. package/build-module/post-title/edit.js +23 -7
  281. package/build-module/post-title/edit.js.map +1 -1
  282. package/build-module/preformatted/edit.native.js +3 -2
  283. package/build-module/preformatted/edit.native.js.map +1 -1
  284. package/build-module/quote/transforms.js +23 -37
  285. package/build-module/quote/transforms.js.map +1 -1
  286. package/build-module/read-more/edit.js +1 -1
  287. package/build-module/read-more/edit.js.map +1 -1
  288. package/build-module/search/edit.js +9 -1
  289. package/build-module/search/edit.js.map +1 -1
  290. package/build-module/site-title/edit/index.js +1 -1
  291. package/build-module/site-title/edit/index.js.map +1 -1
  292. package/build-module/social-link/edit.js +20 -5
  293. package/build-module/social-link/edit.js.map +1 -1
  294. package/build-module/social-links/edit.js +2 -2
  295. package/build-module/social-links/edit.js.map +1 -1
  296. package/build-module/template-part/edit/index.js +1 -6
  297. package/build-module/template-part/edit/index.js.map +1 -1
  298. package/build-module/template-part/edit/utils/hooks.js +1 -1
  299. package/build-module/template-part/edit/utils/hooks.js.map +1 -1
  300. package/build-module/utils/interactivity/constants.js +2 -0
  301. package/build-module/utils/interactivity/constants.js.map +1 -0
  302. package/build-module/utils/interactivity/directives.js +220 -0
  303. package/build-module/utils/interactivity/directives.js.map +1 -0
  304. package/build-module/utils/interactivity/hooks.js +162 -0
  305. package/build-module/utils/interactivity/hooks.js.map +1 -0
  306. package/build-module/utils/interactivity/hydration.js +21 -0
  307. package/build-module/utils/interactivity/hydration.js.map +1 -0
  308. package/build-module/utils/interactivity/index.js +17 -0
  309. package/build-module/utils/interactivity/index.js.map +1 -0
  310. package/build-module/utils/interactivity/portals.js +100 -0
  311. package/build-module/utils/interactivity/portals.js.map +1 -0
  312. package/build-module/utils/interactivity/store.js +56 -0
  313. package/build-module/utils/interactivity/store.js.map +1 -0
  314. package/build-module/utils/interactivity/utils.js +75 -0
  315. package/build-module/utils/interactivity/utils.js.map +1 -0
  316. package/build-module/utils/interactivity/vdom.js +97 -0
  317. package/build-module/utils/interactivity/vdom.js.map +1 -0
  318. package/build-style/common-rtl.css +1 -1
  319. package/build-style/common.css +1 -1
  320. package/build-style/cover/style-rtl.css +3 -2
  321. package/build-style/cover/style.css +3 -2
  322. package/build-style/{details-summary → details}/editor-rtl.css +1 -1
  323. package/build-style/{details-summary → details}/editor.css +1 -1
  324. package/build-style/details/style-rtl.css +14 -0
  325. package/build-style/details/style.css +14 -0
  326. package/build-style/editor-rtl.css +71 -5
  327. package/build-style/editor.css +71 -5
  328. package/build-style/file/editor-rtl.css +3 -0
  329. package/build-style/file/editor.css +3 -0
  330. package/build-style/freeform/editor-rtl.css +29 -0
  331. package/build-style/freeform/editor.css +29 -0
  332. package/build-style/gallery/editor-rtl.css +0 -4
  333. package/build-style/gallery/editor.css +0 -4
  334. package/build-style/gallery/style-rtl.css +2 -4
  335. package/build-style/gallery/style.css +2 -4
  336. package/build-style/image/style-rtl.css +98 -0
  337. package/build-style/image/style.css +98 -0
  338. package/build-style/navigation/editor-rtl.css +36 -0
  339. package/build-style/navigation/editor.css +36 -0
  340. package/build-style/post-comments-form/style-rtl.css +1 -1
  341. package/build-style/post-comments-form/style.css +1 -1
  342. package/build-style/search/editor-rtl.css +1 -0
  343. package/build-style/search/editor.css +1 -0
  344. package/build-style/site-logo/editor-rtl.css +1 -0
  345. package/build-style/site-logo/editor.css +1 -0
  346. package/build-style/style-rtl.css +116 -10
  347. package/build-style/style.css +116 -10
  348. package/build-style/video/style-rtl.css +1 -2
  349. package/build-style/video/style.css +1 -2
  350. package/package.json +37 -33
  351. package/src/block/edit.native.js +18 -4
  352. package/src/buttons/test/edit.native.js +0 -9
  353. package/src/code/block.json +1 -0
  354. package/src/column/block.json +1 -1
  355. package/src/columns/test/__snapshots__/transforms.native.js.snap +1 -1
  356. package/src/columns/test/transforms.native.js +3 -5
  357. package/src/columns/transforms.js +2 -8
  358. package/src/comment-author-name/edit.js +1 -1
  359. package/src/comment-edit-link/edit.js +1 -1
  360. package/src/comment-template/index.php +8 -7
  361. package/src/comments/index.php +1 -6
  362. package/src/cover/block.json +1 -1
  363. package/src/cover/edit/inspector-controls.js +56 -54
  364. package/src/cover/edit/resizable-cover-popover.js +2 -1
  365. package/src/cover/style.scss +5 -0
  366. package/src/cover/test/edit.js +56 -2
  367. package/src/cover/variations.js +1 -3
  368. package/src/details/block.json +8 -6
  369. package/src/details/edit.js +27 -5
  370. package/src/details/editor.scss +3 -0
  371. package/src/details/index.js +10 -5
  372. package/src/details/save.js +5 -1
  373. package/src/details/style.scss +16 -0
  374. package/src/editor.scss +1 -1
  375. package/src/embed/variations.js +2 -2
  376. package/src/file/editor.scss +4 -0
  377. package/src/file/interactivity.js +15 -0
  378. package/src/file/view.js +4 -1
  379. package/src/freeform/editor.scss +45 -0
  380. package/src/freeform/modal.js +22 -19
  381. package/src/gallery/edit.js +5 -8
  382. package/src/gallery/editor.scss +0 -6
  383. package/src/gallery/test/index.native.js +48 -3
  384. package/src/gallery/v1/edit.js +1 -6
  385. package/src/gallery/v1/gallery-image.native.js +1 -2
  386. package/src/group/test/__snapshots__/transforms.native.js.snap +1 -1
  387. package/src/group/test/transforms.native.js +3 -5
  388. package/src/group/transforms.js +0 -7
  389. package/src/image/block.json +3 -0
  390. package/src/image/deprecated.js +2 -3
  391. package/src/image/edit.js +18 -18
  392. package/src/image/image.js +8 -11
  393. package/src/image/index.php +75 -2
  394. package/src/image/interactivity.js +113 -0
  395. package/src/image/save.js +4 -3
  396. package/src/image/style.scss +113 -0
  397. package/src/image/test/edit.native.js +38 -16
  398. package/src/image/utils.js +11 -18
  399. package/src/index.js +0 -4
  400. package/src/index.native.js +1 -0
  401. package/src/latest-posts/edit.native.js +1 -4
  402. package/src/list/edit.js +1 -1
  403. package/src/list/test/edit.native.js +80 -1
  404. package/src/list-item/edit.native.js +1 -1
  405. package/src/list-item/transforms.js +4 -2
  406. package/src/loginout/block.json +11 -1
  407. package/src/media-text/deprecated.js +4 -5
  408. package/src/media-text/edit.js +12 -10
  409. package/src/media-text/media-container.js +3 -3
  410. package/src/media-text/save.js +1 -2
  411. package/src/navigation/constants.js +21 -0
  412. package/src/navigation/edit/index.js +71 -83
  413. package/src/navigation/edit/inner-blocks.js +6 -16
  414. package/src/navigation/edit/leaf-more-menu.js +170 -0
  415. package/src/navigation/edit/menu-inspector-controls.js +78 -10
  416. package/src/navigation/edit/navigation-menu-delete-control.js +29 -29
  417. package/src/navigation/edit/unsaved-inner-blocks.js +12 -40
  418. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  419. package/src/navigation/editor.scss +10 -0
  420. package/src/navigation/index.php +213 -204
  421. package/src/navigation/interactivity.js +151 -0
  422. package/src/navigation-link/edit.js +9 -3
  423. package/src/navigation-link/update-attributes.js +2 -2
  424. package/src/navigation-submenu/edit.js +9 -3
  425. package/src/paragraph/block.json +5 -1
  426. package/src/pattern/block.json +4 -0
  427. package/src/pattern/edit.js +53 -16
  428. package/src/pattern/index.js +5 -4
  429. package/src/pattern/index.php +14 -1
  430. package/src/pattern/v1/edit.js +57 -0
  431. package/src/post-author-name/edit.js +1 -1
  432. package/src/post-comments-form/style.scss +3 -1
  433. package/src/post-featured-image/edit.js +1 -1
  434. package/src/post-featured-image/index.php +1 -1
  435. package/src/post-featured-image/overlay.js +4 -0
  436. package/src/post-terms/index.php +2 -2
  437. package/src/post-title/edit.js +57 -44
  438. package/src/preformatted/edit.native.js +1 -3
  439. package/src/quote/test/__snapshots__/transforms.native.js.snap +1 -1
  440. package/src/quote/test/transforms.native.js +3 -5
  441. package/src/quote/transforms.js +9 -19
  442. package/src/read-more/edit.js +1 -1
  443. package/src/search/edit.js +9 -4
  444. package/src/search/editor.scss +1 -0
  445. package/src/site-logo/editor.scss +2 -1
  446. package/src/site-title/edit/index.js +1 -1
  447. package/src/social-link/edit.js +51 -26
  448. package/src/social-links/edit.js +33 -31
  449. package/src/style.scss +0 -1
  450. package/src/template-part/edit/index.js +4 -6
  451. package/src/template-part/edit/utils/hooks.js +1 -1
  452. package/src/template-part/index.php +22 -7
  453. package/src/utils/interactivity/constants.js +1 -0
  454. package/src/utils/interactivity/directives.js +200 -0
  455. package/src/utils/interactivity/hooks.js +145 -0
  456. package/src/utils/interactivity/hydration.js +22 -0
  457. package/src/utils/interactivity/index.js +17 -0
  458. package/src/utils/interactivity/portals.js +98 -0
  459. package/src/utils/interactivity/store.js +45 -0
  460. package/src/utils/interactivity/utils.js +66 -0
  461. package/src/utils/interactivity/vdom.js +94 -0
  462. package/tsconfig.json +1 -0
  463. package/tsconfig.tsbuildinfo +1 -1
  464. package/build/details-content/edit.js +0 -34
  465. package/build/details-content/edit.js.map +0 -1
  466. package/build/details-content/index.js +0 -94
  467. package/build/details-content/index.js.map +0 -1
  468. package/build/details-content/save.js +0 -20
  469. package/build/details-content/save.js.map +0 -1
  470. package/build/details-summary/edit.js +0 -42
  471. package/build/details-summary/edit.js.map +0 -1
  472. package/build/details-summary/index.js +0 -97
  473. package/build/details-summary/index.js.map +0 -1
  474. package/build/details-summary/save.js +0 -24
  475. package/build/details-summary/save.js.map +0 -1
  476. package/build/file/utils.js.map +0 -1
  477. package/build-module/details-content/edit.js +0 -23
  478. package/build-module/details-content/edit.js.map +0 -1
  479. package/build-module/details-content/index.js +0 -76
  480. package/build-module/details-content/index.js.map +0 -1
  481. package/build-module/details-content/save.js +0 -11
  482. package/build-module/details-content/save.js.map +0 -1
  483. package/build-module/details-summary/edit.js +0 -30
  484. package/build-module/details-summary/edit.js.map +0 -1
  485. package/build-module/details-summary/index.js +0 -79
  486. package/build-module/details-summary/index.js.map +0 -1
  487. package/build-module/details-summary/save.js +0 -16
  488. package/build-module/details-summary/save.js.map +0 -1
  489. package/build-module/file/utils.js.map +0 -1
  490. package/build-style/details-summary/style-rtl.css +0 -91
  491. package/build-style/details-summary/style.css +0 -91
  492. package/src/details-content/block.json +0 -50
  493. package/src/details-content/edit.js +0 -29
  494. package/src/details-content/index.js +0 -23
  495. package/src/details-content/save.js +0 -12
  496. package/src/details-summary/block.json +0 -53
  497. package/src/details-summary/edit.js +0 -27
  498. package/src/details-summary/editor.scss +0 -3
  499. package/src/details-summary/index.js +0 -23
  500. package/src/details-summary/save.js +0 -13
  501. package/src/details-summary/style.scss +0 -3
  502. /package/src/file/{utils.js → utils/index.js} +0 -0
@@ -12,10 +12,7 @@ import { useMemo } from '@wordpress/element';
12
12
  */
13
13
 
14
14
  import PlaceholderPreview from './placeholder/placeholder-preview';
15
- const ALLOWED_BLOCKS = ['core/navigation-link', 'core/search', 'core/social-links', 'core/page-list', 'core/spacer', 'core/home-link', 'core/site-title', 'core/site-logo', 'core/navigation-submenu'];
16
- const DEFAULT_BLOCK = {
17
- name: 'core/navigation-link'
18
- };
15
+ import { DEFAULT_BLOCK, ALLOWED_BLOCKS, PRIORITIZED_INSERTER_BLOCKS } from '../constants';
19
16
  export default function NavigationInnerBlocks(_ref) {
20
17
  let {
21
18
  clientId,
@@ -67,6 +64,7 @@ export default function NavigationInnerBlocks(_ref) {
67
64
  onInput,
68
65
  onChange,
69
66
  allowedBlocks: ALLOWED_BLOCKS,
67
+ prioritizedInserterBlocks: PRIORITIZED_INSERTER_BLOCKS,
70
68
  __experimentalDefaultBlock: DEFAULT_BLOCK,
71
69
  __experimentalDirectInsert: shouldDirectInsert,
72
70
  orientation,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/inner-blocks.js"],"names":["useEntityBlockEditor","useInnerBlocksProps","InnerBlocks","store","blockEditorStore","useSelect","useMemo","PlaceholderPreview","ALLOWED_BLOCKS","DEFAULT_BLOCK","name","NavigationInnerBlocks","clientId","hasCustomPlaceholder","orientation","templateLock","isImmediateParentOfSelectedBlock","selectedBlockHasChildren","isSelected","select","getBlockCount","hasSelectedInnerBlock","getSelectedBlockClientId","selectedBlockId","blocks","onInput","onChange","shouldDirectInsert","every","parentOrChildHasSelection","placeholder","hasMenuItems","length","showPlaceholder","innerBlocksProps","className","value","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","renderAppender","ButtonBlockAppender","undefined"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,oBAAT,QAAqC,sBAArC;AACA,SACCC,mBADD,EAECC,WAFD,EAGCC,KAAK,IAAIC,gBAHV,QAIO,yBAJP;AAKA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,OAAOC,kBAAP,MAA+B,mCAA/B;AAEA,MAAMC,cAAc,GAAG,CACtB,sBADsB,EAEtB,aAFsB,EAGtB,mBAHsB,EAItB,gBAJsB,EAKtB,aALsB,EAMtB,gBANsB,EAOtB,iBAPsB,EAQtB,gBARsB,EAStB,yBATsB,CAAvB;AAYA,MAAMC,aAAa,GAAG;AACrBC,EAAAA,IAAI,EAAE;AADe,CAAtB;AAIA,eAAe,SAASC,qBAAT,OAKX;AAAA,MAL2C;AAC9CC,IAAAA,QAD8C;AAE9CC,IAAAA,oBAF8C;AAG9CC,IAAAA,WAH8C;AAI9CC,IAAAA;AAJ8C,GAK3C;AACH,QAAM;AACLC,IAAAA,gCADK;AAELC,IAAAA,wBAFK;AAGLC,IAAAA;AAHK,MAIFb,SAAS,CACVc,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,aADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEf,gBAAF,CAJV;AAKA,UAAMmB,eAAe,GAAGD,wBAAwB,EAAhD;AAEA,WAAO;AACNN,MAAAA,gCAAgC,EAAEK,qBAAqB,CACtDT,QADsD,EAEtD,KAFsD,CADjD;AAKNK,MAAAA,wBAAwB,EAAE,CAAC,CAAEG,aAAa,CAAEG,eAAF,CALpC;AAON;AACA;AACAL,MAAAA,UAAU,EAAEK,eAAe,KAAKX;AAT1B,KAAP;AAWA,GApBW,EAqBZ,CAAEA,QAAF,CArBY,CAJb;AA4BA,QAAM,CAAEY,MAAF,EAAUC,OAAV,EAAmBC,QAAnB,IAAgC1B,oBAAoB,CACzD,UADyD,EAEzD,eAFyD,CAA1D;AAKA,QAAM2B,kBAAkB,GAAGrB,OAAO,CACjC,MACCkB,MAAM,CAACI,KAAP,CACC;AAAA,QAAE;AAAElB,MAAAA;AAAF,KAAF;AAAA,WACCA,IAAI,KAAK,sBAAT,IACAA,IAAI,KAAK,yBADT,IAEAA,IAAI,KAAK,gBAHV;AAAA,GADD,CAFgC,EAQjC,CAAEc,MAAF,CARiC,CAAlC,CAlCG,CA6CH;AACA;AACA;;AACA,QAAMK,yBAAyB,GAC9BX,UAAU,IACRF,gCAAgC,IAAI,CAAEC,wBAFzC;AAIA,QAAMa,WAAW,GAAGxB,OAAO,CAAE,MAAM,cAAC,kBAAD,OAAR,EAAgC,EAAhC,CAA3B;AAEA,QAAMyB,YAAY,GAAG,CAAC,EAAEP,MAAF,aAAEA,MAAF,eAAEA,MAAM,CAAEQ,MAAV,CAAtB,CAtDG,CAwDH;AACA;AACA;AACA;;AACA,QAAMC,eAAe,GACpB,CAAEpB,oBAAF,IAA0B,CAAEkB,YAA5B,IAA4C,CAAEb,UAD/C;AAGA,QAAMgB,gBAAgB,GAAGjC,mBAAmB,CAC3C;AACCkC,IAAAA,SAAS,EAAE;AADZ,GAD2C,EAI3C;AACCC,IAAAA,KAAK,EAAEZ,MADR;AAECC,IAAAA,OAFD;AAGCC,IAAAA,QAHD;AAICW,IAAAA,aAAa,EAAE7B,cAJhB;AAKC8B,IAAAA,0BAA0B,EAAE7B,aAL7B;AAMC8B,IAAAA,0BAA0B,EAAEZ,kBAN7B;AAOCb,IAAAA,WAPD;AAQCC,IAAAA,YARD;AAUC;AACA;AACA;AACA;AACA;AACAyB,IAAAA,cAAc,EACbtB,UAAU,IACRF,gCAAgC,IACjC,CAAEC,wBAFH,IAGA;AACAY,IAAAA,yBAJA,GAKG3B,WAAW,CAACuC,mBALf,GAMG,KAtBL;AAuBCX,IAAAA,WAAW,EAAEG,eAAe,GAAGH,WAAH,GAAiBY;AAvB9C,GAJ2C,CAA5C;AA+BA,SAAO,qBAAUR,gBAAV,CAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tuseInnerBlocksProps,\n\tInnerBlocks,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport PlaceholderPreview from './placeholder/placeholder-preview';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nexport default function NavigationInnerBlocks( {\n\tclientId,\n\thasCustomPlaceholder,\n\torientation,\n\ttemplateLock,\n} ) {\n\tconst {\n\t\tisImmediateParentOfSelectedBlock,\n\t\tselectedBlockHasChildren,\n\t\tisSelected,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\treturn {\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tselectedBlockHasChildren: !! getBlockCount( selectedBlockId ),\n\n\t\t\t\t// This prop is already available but computing it here ensures it's\n\t\t\t\t// fresh compared to isImmediateParentOfSelectedBlock.\n\t\t\t\tisSelected: selectedBlockId === clientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_navigation'\n\t);\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// When the block is selected itself or has a top level item selected that\n\t// doesn't itself have children, show the standard appender. Else show no\n\t// appender.\n\tconst parentOrChildHasSelection =\n\t\tisSelected ||\n\t\t( isImmediateParentOfSelectedBlock && ! selectedBlockHasChildren );\n\n\tconst placeholder = useMemo( () => <PlaceholderPreview />, [] );\n\n\tconst hasMenuItems = !! blocks?.length;\n\n\t// If there is a `ref` attribute pointing to a `wp_navigation` but\n\t// that menu has no **items** (i.e. empty) then show a placeholder.\n\t// The block must also be selected else the placeholder will display\n\t// alongside the appender.\n\tconst showPlaceholder =\n\t\t! hasCustomPlaceholder && ! hasMenuItems && ! isSelected;\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\tvalue: blocks,\n\t\t\tonInput,\n\t\t\tonChange,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t\torientation,\n\t\t\ttemplateLock,\n\n\t\t\t// As an exception to other blocks which feature nesting, show\n\t\t\t// the block appender even when a child block is selected.\n\t\t\t// This should be a temporary fix, to be replaced by improvements to\n\t\t\t// the sibling inserter.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/37572.\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\tparentOrChildHasSelection\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\t\t\tplaceholder: showPlaceholder ? placeholder : undefined,\n\t\t}\n\t);\n\n\treturn <div { ...innerBlocksProps } />;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/inner-blocks.js"],"names":["useEntityBlockEditor","useInnerBlocksProps","InnerBlocks","store","blockEditorStore","useSelect","useMemo","PlaceholderPreview","DEFAULT_BLOCK","ALLOWED_BLOCKS","PRIORITIZED_INSERTER_BLOCKS","NavigationInnerBlocks","clientId","hasCustomPlaceholder","orientation","templateLock","isImmediateParentOfSelectedBlock","selectedBlockHasChildren","isSelected","select","getBlockCount","hasSelectedInnerBlock","getSelectedBlockClientId","selectedBlockId","blocks","onInput","onChange","shouldDirectInsert","every","name","parentOrChildHasSelection","placeholder","hasMenuItems","length","showPlaceholder","innerBlocksProps","className","value","allowedBlocks","prioritizedInserterBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","renderAppender","ButtonBlockAppender","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tuseInnerBlocksProps,\n\tInnerBlocks,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport PlaceholderPreview from './placeholder/placeholder-preview';\nimport {\n\tDEFAULT_BLOCK,\n\tALLOWED_BLOCKS,\n\tPRIORITIZED_INSERTER_BLOCKS,\n} from '../constants';\n\nexport default function NavigationInnerBlocks( {\n\tclientId,\n\thasCustomPlaceholder,\n\torientation,\n\ttemplateLock,\n} ) {\n\tconst {\n\t\tisImmediateParentOfSelectedBlock,\n\t\tselectedBlockHasChildren,\n\t\tisSelected,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\treturn {\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tselectedBlockHasChildren: !! getBlockCount( selectedBlockId ),\n\n\t\t\t\t// This prop is already available but computing it here ensures it's\n\t\t\t\t// fresh compared to isImmediateParentOfSelectedBlock.\n\t\t\t\tisSelected: selectedBlockId === clientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_navigation'\n\t);\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// When the block is selected itself or has a top level item selected that\n\t// doesn't itself have children, show the standard appender. Else show no\n\t// appender.\n\tconst parentOrChildHasSelection =\n\t\tisSelected ||\n\t\t( isImmediateParentOfSelectedBlock && ! selectedBlockHasChildren );\n\n\tconst placeholder = useMemo( () => <PlaceholderPreview />, [] );\n\n\tconst hasMenuItems = !! blocks?.length;\n\n\t// If there is a `ref` attribute pointing to a `wp_navigation` but\n\t// that menu has no **items** (i.e. empty) then show a placeholder.\n\t// The block must also be selected else the placeholder will display\n\t// alongside the appender.\n\tconst showPlaceholder =\n\t\t! hasCustomPlaceholder && ! hasMenuItems && ! isSelected;\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\tvalue: blocks,\n\t\t\tonInput,\n\t\t\tonChange,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\tprioritizedInserterBlocks: PRIORITIZED_INSERTER_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t\torientation,\n\t\t\ttemplateLock,\n\n\t\t\t// As an exception to other blocks which feature nesting, show\n\t\t\t// the block appender even when a child block is selected.\n\t\t\t// This should be a temporary fix, to be replaced by improvements to\n\t\t\t// the sibling inserter.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/37572.\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\tparentOrChildHasSelection\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\t\t\tplaceholder: showPlaceholder ? placeholder : undefined,\n\t\t}\n\t);\n\n\treturn <div { ...innerBlocksProps } />;\n}\n"]}
@@ -0,0 +1,132 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { createElement, Fragment } from "@wordpress/element";
3
+
4
+ /**
5
+ * WordPress dependencies
6
+ */
7
+ import { createBlock } from '@wordpress/blocks';
8
+ import { addSubmenu, chevronUp, chevronDown, moreVertical } from '@wordpress/icons';
9
+ import { DropdownMenu, MenuItem, MenuGroup } from '@wordpress/components';
10
+ import { useDispatch, useSelect } from '@wordpress/data';
11
+ import { __, sprintf } from '@wordpress/i18n';
12
+ import { BlockTitle, store as blockEditorStore } from '@wordpress/block-editor';
13
+ const POPOVER_PROPS = {
14
+ className: 'block-editor-block-settings-menu__popover',
15
+ position: 'bottom right',
16
+ variant: 'toolbar'
17
+ };
18
+ const BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU = ['core/navigation-link', 'core/navigation-submenu'];
19
+
20
+ function AddSubmenuItem(_ref) {
21
+ let {
22
+ block,
23
+ onClose,
24
+ expandedState,
25
+ expand,
26
+ setInsertedBlock
27
+ } = _ref;
28
+ const {
29
+ insertBlock,
30
+ replaceBlock,
31
+ replaceInnerBlocks
32
+ } = useDispatch(blockEditorStore);
33
+ const clientId = block.clientId;
34
+ const isDisabled = !BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU.includes(block.name);
35
+ return createElement(MenuItem, {
36
+ icon: addSubmenu,
37
+ disabled: isDisabled,
38
+ onClick: () => {
39
+ const updateSelectionOnInsert = false;
40
+ const newLink = createBlock('core/navigation-link');
41
+
42
+ if (block.name === 'core/navigation-submenu') {
43
+ insertBlock(newLink, block.innerBlocks.length, clientId, updateSelectionOnInsert);
44
+ } else {
45
+ // Convert to a submenu if the block currently isn't one.
46
+ const newSubmenu = createBlock('core/navigation-submenu', block.attributes, block.innerBlocks); // The following must happen as two independent actions.
47
+ // Why? Because the offcanvas editor relies on the getLastInsertedBlocksClientIds
48
+ // selector to determine which block is "active". As the UX needs the newLink to be
49
+ // the "active" block it must be the last block to be inserted.
50
+ // Therefore the Submenu is first created and **then** the newLink is inserted
51
+ // thus ensuring it is the last inserted block.
52
+
53
+ replaceBlock(clientId, newSubmenu);
54
+ replaceInnerBlocks(newSubmenu.clientId, [newLink], updateSelectionOnInsert);
55
+ } // This call sets the local List View state for the "last inserted block".
56
+ // This is required for the Nav Block to determine whether or not to display
57
+ // the Link UI for this new block.
58
+
59
+
60
+ setInsertedBlock(newLink);
61
+
62
+ if (!expandedState[block.clientId]) {
63
+ expand(block.clientId);
64
+ }
65
+
66
+ onClose();
67
+ }
68
+ }, __('Add submenu link'));
69
+ }
70
+
71
+ export default function LeafMoreMenu(props) {
72
+ const {
73
+ block
74
+ } = props;
75
+ const {
76
+ clientId
77
+ } = block;
78
+ const {
79
+ moveBlocksDown,
80
+ moveBlocksUp,
81
+ removeBlocks
82
+ } = useDispatch(blockEditorStore);
83
+ const removeLabel = sprintf(
84
+ /* translators: %s: block name */
85
+ __('Remove %s'), BlockTitle({
86
+ clientId,
87
+ maximumLength: 25
88
+ }));
89
+ const rootClientId = useSelect(select => {
90
+ const {
91
+ getBlockRootClientId
92
+ } = select(blockEditorStore);
93
+ return getBlockRootClientId(clientId);
94
+ }, [clientId]);
95
+ return createElement(DropdownMenu, _extends({
96
+ icon: moreVertical,
97
+ label: __('Options'),
98
+ className: "block-editor-block-settings-menu",
99
+ popoverProps: POPOVER_PROPS,
100
+ noIcons: true
101
+ }, props), _ref2 => {
102
+ let {
103
+ onClose
104
+ } = _ref2;
105
+ return createElement(Fragment, null, createElement(MenuGroup, null, createElement(MenuItem, {
106
+ icon: chevronUp,
107
+ onClick: () => {
108
+ moveBlocksUp([clientId], rootClientId);
109
+ onClose();
110
+ }
111
+ }, __('Move up')), createElement(MenuItem, {
112
+ icon: chevronDown,
113
+ onClick: () => {
114
+ moveBlocksDown([clientId], rootClientId);
115
+ onClose();
116
+ }
117
+ }, __('Move down')), createElement(AddSubmenuItem, {
118
+ block: block,
119
+ onClose: onClose,
120
+ expanded: true,
121
+ expandedState: props.expandedState,
122
+ expand: props.expand,
123
+ setInsertedBlock: props.setInsertedBlock
124
+ })), createElement(MenuGroup, null, createElement(MenuItem, {
125
+ onClick: () => {
126
+ removeBlocks([clientId], false);
127
+ onClose();
128
+ }
129
+ }, removeLabel)));
130
+ });
131
+ }
132
+ //# sourceMappingURL=leaf-more-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/leaf-more-menu.js"],"names":["createBlock","addSubmenu","chevronUp","chevronDown","moreVertical","DropdownMenu","MenuItem","MenuGroup","useDispatch","useSelect","__","sprintf","BlockTitle","store","blockEditorStore","POPOVER_PROPS","className","position","variant","BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU","AddSubmenuItem","block","onClose","expandedState","expand","setInsertedBlock","insertBlock","replaceBlock","replaceInnerBlocks","clientId","isDisabled","includes","name","updateSelectionOnInsert","newLink","innerBlocks","length","newSubmenu","attributes","LeafMoreMenu","props","moveBlocksDown","moveBlocksUp","removeBlocks","removeLabel","maximumLength","rootClientId","select","getBlockRootClientId"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\taddSubmenu,\n\tchevronUp,\n\tchevronDown,\n\tmoreVertical,\n} from '@wordpress/icons';\nimport { DropdownMenu, MenuItem, MenuGroup } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { BlockTitle, store as blockEditorStore } from '@wordpress/block-editor';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tposition: 'bottom right',\n\tvariant: 'toolbar',\n};\n\nconst BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\nfunction AddSubmenuItem( {\n\tblock,\n\tonClose,\n\texpandedState,\n\texpand,\n\tsetInsertedBlock,\n} ) {\n\tconst { insertBlock, replaceBlock, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst clientId = block.clientId;\n\tconst isDisabled = ! BLOCKS_THAT_CAN_BE_CONVERTED_TO_SUBMENU.includes(\n\t\tblock.name\n\t);\n\treturn (\n\t\t<MenuItem\n\t\t\ticon={ addSubmenu }\n\t\t\tdisabled={ isDisabled }\n\t\t\tonClick={ () => {\n\t\t\t\tconst updateSelectionOnInsert = false;\n\t\t\t\tconst newLink = createBlock( 'core/navigation-link' );\n\n\t\t\t\tif ( block.name === 'core/navigation-submenu' ) {\n\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\tnewLink,\n\t\t\t\t\t\tblock.innerBlocks.length,\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tupdateSelectionOnInsert\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// Convert to a submenu if the block currently isn't one.\n\t\t\t\t\tconst newSubmenu = createBlock(\n\t\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\t\tblock.attributes,\n\t\t\t\t\t\tblock.innerBlocks\n\t\t\t\t\t);\n\n\t\t\t\t\t// The following must happen as two independent actions.\n\t\t\t\t\t// Why? Because the offcanvas editor relies on the getLastInsertedBlocksClientIds\n\t\t\t\t\t// selector to determine which block is \"active\". As the UX needs the newLink to be\n\t\t\t\t\t// the \"active\" block it must be the last block to be inserted.\n\t\t\t\t\t// Therefore the Submenu is first created and **then** the newLink is inserted\n\t\t\t\t\t// thus ensuring it is the last inserted block.\n\t\t\t\t\treplaceBlock( clientId, newSubmenu );\n\n\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\tnewSubmenu.clientId,\n\t\t\t\t\t\t[ newLink ],\n\t\t\t\t\t\tupdateSelectionOnInsert\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// This call sets the local List View state for the \"last inserted block\".\n\t\t\t\t// This is required for the Nav Block to determine whether or not to display\n\t\t\t\t// the Link UI for this new block.\n\t\t\t\tsetInsertedBlock( newLink );\n\n\t\t\t\tif ( ! expandedState[ block.clientId ] ) {\n\t\t\t\t\texpand( block.clientId );\n\t\t\t\t}\n\t\t\t\tonClose();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Add submenu link' ) }\n\t\t</MenuItem>\n\t);\n}\n\nexport default function LeafMoreMenu( props ) {\n\tconst { block } = props;\n\tconst { clientId } = block;\n\n\tconst { moveBlocksDown, moveBlocksUp, removeBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst removeLabel = sprintf(\n\t\t/* translators: %s: block name */\n\t\t__( 'Remove %s' ),\n\t\tBlockTitle( { clientId, maximumLength: 25 } )\n\t);\n\n\tconst rootClientId = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId } = select( blockEditorStore );\n\n\t\t\treturn getBlockRootClientId( clientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Options' ) }\n\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\tnoIcons\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\ticon={ chevronUp }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tmoveBlocksUp( [ clientId ], rootClientId );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Move up' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tmoveBlocksDown( [ clientId ], rootClientId );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Move down' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<AddSubmenuItem\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\texpandedState={ props.expandedState }\n\t\t\t\t\t\t\texpand={ props.expand }\n\t\t\t\t\t\t\tsetInsertedBlock={ props.setInsertedBlock }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tremoveBlocks( [ clientId ], false );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ removeLabel }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"]}
@@ -5,7 +5,7 @@ import { createElement } from "@wordpress/element";
5
5
  */
6
6
  import { privateApis as blockEditorPrivateApis, InspectorControls, store as blockEditorStore } from '@wordpress/block-editor';
7
7
  import { PanelBody, __experimentalHStack as HStack, __experimentalHeading as Heading, Spinner } from '@wordpress/components';
8
- import { useSelect } from '@wordpress/data';
8
+ import { useSelect, useDispatch } from '@wordpress/data';
9
9
  import { __, sprintf } from '@wordpress/i18n';
10
10
  /**
11
11
  * Internal dependencies
@@ -15,11 +15,18 @@ import NavigationMenuSelector from './navigation-menu-selector';
15
15
  import { unlock } from '../../private-apis';
16
16
  import DeletedNavigationWarning from './deleted-navigation-warning';
17
17
  import useNavigationMenu from '../use-navigation-menu';
18
+ import LeafMoreMenu from './leaf-more-menu';
19
+ import { updateAttributes } from '../../navigation-link/update-attributes';
20
+ import { LinkUI } from '../../navigation-link/link-ui';
18
21
  /* translators: %s: The name of a menu. */
19
22
 
20
23
  const actionLabel = __("Switch to '%s'");
21
24
 
25
+ const BLOCKS_WITH_LINK_UI_SUPPORT = ['core/navigation-link', 'core/navigation-submenu'];
26
+
22
27
  const MainContent = _ref => {
28
+ var _navigationMenu$title;
29
+
23
30
  let {
24
31
  clientId,
25
32
  currentMenuId,
@@ -28,8 +35,7 @@ const MainContent = _ref => {
28
35
  onCreateNew
29
36
  } = _ref;
30
37
  const {
31
- OffCanvasEditor,
32
- LeafMoreMenu
38
+ PrivateListView
33
39
  } = unlock(blockEditorPrivateApis); // Provide a hierarchy of clientIds for the given Navigation block (clientId).
34
40
  // This is required else the list view will display the entire block tree.
35
41
 
@@ -39,6 +45,15 @@ const MainContent = _ref => {
39
45
  } = select(blockEditorStore);
40
46
  return __unstableGetClientIdsTree(clientId);
41
47
  }, [clientId]);
48
+ const {
49
+ updateBlockAttributes
50
+ } = useDispatch(blockEditorStore);
51
+
52
+ const setInsertedBlockAttributes = _insertedBlockClientId => _updatedAttributes => {
53
+ if (!_insertedBlockClientId) return;
54
+ updateBlockAttributes(_insertedBlockClientId, _updatedAttributes);
55
+ };
56
+
42
57
  const {
43
58
  navigationMenu
44
59
  } = useNavigationMenu(currentMenuId);
@@ -55,14 +70,42 @@ const MainContent = _ref => {
55
70
 
56
71
  const description = navigationMenu ? sprintf(
57
72
  /* translators: %s: The name of a menu. */
58
- __('Structure for navigation menu: %s'), (navigationMenu === null || navigationMenu === void 0 ? void 0 : navigationMenu.title) || __('Untitled menu')) : __('You have not yet created any menus. Displaying a list of your Pages');
59
- return createElement(OffCanvasEditor, {
73
+ __('Structure for navigation menu: %s'), (navigationMenu === null || navigationMenu === void 0 ? void 0 : (_navigationMenu$title = navigationMenu.title) === null || _navigationMenu$title === void 0 ? void 0 : _navigationMenu$title.rendered) || __('Untitled menu')) : __('You have not yet created any menus. Displaying a list of your Pages');
74
+
75
+ const renderLinkUI = (currentBlock, lastInsertedBlock, setLastInsertedBlock) => {
76
+ const blockSupportsLinkUI = BLOCKS_WITH_LINK_UI_SUPPORT === null || BLOCKS_WITH_LINK_UI_SUPPORT === void 0 ? void 0 : BLOCKS_WITH_LINK_UI_SUPPORT.includes(lastInsertedBlock === null || lastInsertedBlock === void 0 ? void 0 : lastInsertedBlock.name);
77
+ const currentBlockWasJustInserted = (lastInsertedBlock === null || lastInsertedBlock === void 0 ? void 0 : lastInsertedBlock.clientId) === currentBlock.clientId;
78
+ const shouldShowLinkUIForBlock = blockSupportsLinkUI && currentBlockWasJustInserted;
79
+ return shouldShowLinkUIForBlock && createElement(LinkUI, {
80
+ clientId: lastInsertedBlock === null || lastInsertedBlock === void 0 ? void 0 : lastInsertedBlock.clientId,
81
+ link: lastInsertedBlock === null || lastInsertedBlock === void 0 ? void 0 : lastInsertedBlock.attributes,
82
+ onClose: () => {
83
+ setLastInsertedBlock(null);
84
+ },
85
+ hasCreateSuggestion: false,
86
+ onChange: updatedValue => {
87
+ updateAttributes(updatedValue, setInsertedBlockAttributes(lastInsertedBlock === null || lastInsertedBlock === void 0 ? void 0 : lastInsertedBlock.clientId), lastInsertedBlock === null || lastInsertedBlock === void 0 ? void 0 : lastInsertedBlock.attributes);
88
+ setLastInsertedBlock(null);
89
+ },
90
+ onCancel: () => {
91
+ setLastInsertedBlock(null);
92
+ }
93
+ });
94
+ };
95
+
96
+ return createElement("div", {
97
+ className: "wp-block-navigation__menu-inspector-controls"
98
+ }, clientIdsTree.length === 0 && createElement("p", {
99
+ className: "wp-block-navigation__menu-inspector-controls__empty-message"
100
+ }, __('This navigation menu is empty.')), createElement(PrivateListView, {
60
101
  blocks: clientIdsTree,
61
- parentClientId: clientId,
102
+ rootClientId: clientId,
62
103
  isExpanded: true,
63
- LeafMoreMenu: LeafMoreMenu,
64
- description: description
65
- });
104
+ description: description,
105
+ showAppender: true,
106
+ blockSettingsMenu: LeafMoreMenu,
107
+ renderAdditionalBlockUI: renderLinkUI
108
+ }));
66
109
  };
67
110
 
68
111
  const MenuInspectorControls = props => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/menu-inspector-controls.js"],"names":["privateApis","blockEditorPrivateApis","InspectorControls","store","blockEditorStore","PanelBody","__experimentalHStack","HStack","__experimentalHeading","Heading","Spinner","useSelect","__","sprintf","NavigationMenuSelector","unlock","DeletedNavigationWarning","useNavigationMenu","actionLabel","MainContent","clientId","currentMenuId","isLoading","isNavigationMenuMissing","onCreateNew","OffCanvasEditor","LeafMoreMenu","clientIdsTree","select","__unstableGetClientIdsTree","navigationMenu","description","title","MenuInspectorControls","props","createNavigationMenuIsSuccess","createNavigationMenuIsError","onSelectClassicMenu","onSelectNavigationMenu","isManageMenusButtonDisabled"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,WAAW,IAAIC,sBADhB,EAECC,iBAFD,EAGCC,KAAK,IAAIC,gBAHV,QAIO,yBAJP;AAKA,SACCC,SADD,EAECC,oBAAoB,IAAIC,MAFzB,EAGCC,qBAAqB,IAAIC,OAH1B,EAICC,OAJD,QAKO,uBALP;AAMA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA;AACA;AACA;;AACA,OAAOC,sBAAP,MAAmC,4BAAnC;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,OAAOC,wBAAP,MAAqC,8BAArC;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AAEA;;AACA,MAAMC,WAAW,GAAGN,EAAE,CAAE,gBAAF,CAAtB;;AAEA,MAAMO,WAAW,GAAG,QAMb;AAAA,MANe;AACrBC,IAAAA,QADqB;AAErBC,IAAAA,aAFqB;AAGrBC,IAAAA,SAHqB;AAIrBC,IAAAA,uBAJqB;AAKrBC,IAAAA;AALqB,GAMf;AACN,QAAM;AAAEC,IAAAA,eAAF;AAAmBC,IAAAA;AAAnB,MAAoCX,MAAM,CAAEd,sBAAF,CAAhD,CADM,CAEN;AACA;;AACA,QAAM0B,aAAa,GAAGhB,SAAS,CAC5BiB,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAiCD,MAAM,CAAExB,gBAAF,CAA7C;AACA,WAAOyB,0BAA0B,CAAET,QAAF,CAAjC;AACA,GAJ6B,EAK9B,CAAEA,QAAF,CAL8B,CAA/B;AAOA,QAAM;AAAEU,IAAAA;AAAF,MAAqBb,iBAAiB,CAAEI,aAAF,CAA5C;;AAEA,MAAKA,aAAa,IAAIE,uBAAtB,EAAgD;AAC/C,WAAO,cAAC,wBAAD;AAA0B,MAAA,WAAW,EAAGC;AAAxC,MAAP;AACA;;AAED,MAAKF,SAAL,EAAiB;AAChB,WAAO,cAAC,OAAD,OAAP;AACA;;AAED,QAAMS,WAAW,GAAGD,cAAc,GAC/BjB,OAAO;AACP;AACAD,EAAAA,EAAE,CAAE,mCAAF,CAFK,EAGP,CAAAkB,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAEE,KAAhB,KAAyBpB,EAAE,CAAE,eAAF,CAHpB,CADwB,GAM/BA,EAAE,CACF,qEADE,CANL;AASA,SACC,cAAC,eAAD;AACC,IAAA,MAAM,EAAGe,aADV;AAEC,IAAA,cAAc,EAAGP,QAFlB;AAGC,IAAA,UAAU,EAAG,IAHd;AAIC,IAAA,YAAY,EAAGM,YAJhB;AAKC,IAAA,WAAW,EAAGK;AALf,IADD;AASA,CA7CD;;AA+CA,MAAME,qBAAqB,GAAKC,KAAF,IAAa;AAC1C,QAAM;AACLC,IAAAA,6BADK;AAELC,IAAAA,2BAFK;AAGLf,IAAAA,aAAa,GAAG,IAHX;AAILG,IAAAA,WAJK;AAKLa,IAAAA,mBALK;AAMLC,IAAAA,sBANK;AAOLC,IAAAA;AAPK,MAQFL,KARJ;AAUA,SACC,cAAC,iBAAD;AAAmB,IAAA,KAAK,EAAC;AAAzB,KACC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAG;AAAnB,KACC,cAAC,MAAD;AAAQ,IAAA,SAAS,EAAC;AAAlB,KACC,cAAC,OAAD;AACC,IAAA,SAAS,EAAC,8CADX;AAEC,IAAA,KAAK,EAAG;AAFT,KAIGtB,EAAE,CAAE,MAAF,CAJL,CADD,EAOC,cAAC,sBAAD;AACC,IAAA,aAAa,EAAGS,aADjB;AAEC,IAAA,mBAAmB,EAAGgB,mBAFvB;AAGC,IAAA,sBAAsB,EAAGC,sBAH1B;AAIC,IAAA,WAAW,EAAGd,WAJf;AAKC,IAAA,6BAA6B,EAC5BW,6BANF;AAQC,IAAA,2BAA2B,EAC1BC,2BATF;AAWC,IAAA,WAAW,EAAGlB,WAXf;AAYC,IAAA,2BAA2B,EAC1BqB;AAbF,IAPD,CADD,EAyBC,cAAC,WAAD,EAAkBL,KAAlB,CAzBD,CADD,CADD;AA+BA,CA1CD;;AA4CA,eAAeD,qBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tInspectorControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\tSpinner,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport NavigationMenuSelector from './navigation-menu-selector';\nimport { unlock } from '../../private-apis';\nimport DeletedNavigationWarning from './deleted-navigation-warning';\nimport useNavigationMenu from '../use-navigation-menu';\n\n/* translators: %s: The name of a menu. */\nconst actionLabel = __( \"Switch to '%s'\" );\n\nconst MainContent = ( {\n\tclientId,\n\tcurrentMenuId,\n\tisLoading,\n\tisNavigationMenuMissing,\n\tonCreateNew,\n} ) => {\n\tconst { OffCanvasEditor, LeafMoreMenu } = unlock( blockEditorPrivateApis );\n\t// Provide a hierarchy of clientIds for the given Navigation block (clientId).\n\t// This is required else the list view will display the entire block tree.\n\tconst clientIdsTree = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __unstableGetClientIdsTree } = select( blockEditorStore );\n\t\t\treturn __unstableGetClientIdsTree( clientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { navigationMenu } = useNavigationMenu( currentMenuId );\n\n\tif ( currentMenuId && isNavigationMenuMissing ) {\n\t\treturn <DeletedNavigationWarning onCreateNew={ onCreateNew } />;\n\t}\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\tconst description = navigationMenu\n\t\t? sprintf(\n\t\t\t\t/* translators: %s: The name of a menu. */\n\t\t\t\t__( 'Structure for navigation menu: %s' ),\n\t\t\t\tnavigationMenu?.title || __( 'Untitled menu' )\n\t\t )\n\t\t: __(\n\t\t\t\t'You have not yet created any menus. Displaying a list of your Pages'\n\t\t );\n\treturn (\n\t\t<OffCanvasEditor\n\t\t\tblocks={ clientIdsTree }\n\t\t\tparentClientId={ clientId }\n\t\t\tisExpanded={ true }\n\t\t\tLeafMoreMenu={ LeafMoreMenu }\n\t\t\tdescription={ description }\n\t\t/>\n\t);\n};\n\nconst MenuInspectorControls = ( props ) => {\n\tconst {\n\t\tcreateNavigationMenuIsSuccess,\n\t\tcreateNavigationMenuIsError,\n\t\tcurrentMenuId = null,\n\t\tonCreateNew,\n\t\tonSelectClassicMenu,\n\t\tonSelectNavigationMenu,\n\t\tisManageMenusButtonDisabled,\n\t} = props;\n\n\treturn (\n\t\t<InspectorControls group=\"list\">\n\t\t\t<PanelBody title={ null }>\n\t\t\t\t<HStack className=\"wp-block-navigation-off-canvas-editor__header\">\n\t\t\t\t\t<Heading\n\t\t\t\t\t\tclassName=\"wp-block-navigation-off-canvas-editor__title\"\n\t\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Menu' ) }\n\t\t\t\t\t</Heading>\n\t\t\t\t\t<NavigationMenuSelector\n\t\t\t\t\t\tcurrentMenuId={ currentMenuId }\n\t\t\t\t\t\tonSelectClassicMenu={ onSelectClassicMenu }\n\t\t\t\t\t\tonSelectNavigationMenu={ onSelectNavigationMenu }\n\t\t\t\t\t\tonCreateNew={ onCreateNew }\n\t\t\t\t\t\tcreateNavigationMenuIsSuccess={\n\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcreateNavigationMenuIsError={\n\t\t\t\t\t\t\tcreateNavigationMenuIsError\n\t\t\t\t\t\t}\n\t\t\t\t\t\tactionLabel={ actionLabel }\n\t\t\t\t\t\tisManageMenusButtonDisabled={\n\t\t\t\t\t\t\tisManageMenusButtonDisabled\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t<MainContent { ...props } />\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n};\n\nexport default MenuInspectorControls;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/menu-inspector-controls.js"],"names":["privateApis","blockEditorPrivateApis","InspectorControls","store","blockEditorStore","PanelBody","__experimentalHStack","HStack","__experimentalHeading","Heading","Spinner","useSelect","useDispatch","__","sprintf","NavigationMenuSelector","unlock","DeletedNavigationWarning","useNavigationMenu","LeafMoreMenu","updateAttributes","LinkUI","actionLabel","BLOCKS_WITH_LINK_UI_SUPPORT","MainContent","clientId","currentMenuId","isLoading","isNavigationMenuMissing","onCreateNew","PrivateListView","clientIdsTree","select","__unstableGetClientIdsTree","updateBlockAttributes","setInsertedBlockAttributes","_insertedBlockClientId","_updatedAttributes","navigationMenu","description","title","rendered","renderLinkUI","currentBlock","lastInsertedBlock","setLastInsertedBlock","blockSupportsLinkUI","includes","name","currentBlockWasJustInserted","shouldShowLinkUIForBlock","attributes","updatedValue","length","MenuInspectorControls","props","createNavigationMenuIsSuccess","createNavigationMenuIsError","onSelectClassicMenu","onSelectNavigationMenu","isManageMenusButtonDisabled"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tInspectorControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\tSpinner,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport NavigationMenuSelector from './navigation-menu-selector';\nimport { unlock } from '../../private-apis';\nimport DeletedNavigationWarning from './deleted-navigation-warning';\nimport useNavigationMenu from '../use-navigation-menu';\nimport LeafMoreMenu from './leaf-more-menu';\nimport { updateAttributes } from '../../navigation-link/update-attributes';\nimport { LinkUI } from '../../navigation-link/link-ui';\n\n/* translators: %s: The name of a menu. */\nconst actionLabel = __( \"Switch to '%s'\" );\nconst BLOCKS_WITH_LINK_UI_SUPPORT = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\nconst MainContent = ( {\n\tclientId,\n\tcurrentMenuId,\n\tisLoading,\n\tisNavigationMenuMissing,\n\tonCreateNew,\n} ) => {\n\tconst { PrivateListView } = unlock( blockEditorPrivateApis );\n\n\t// Provide a hierarchy of clientIds for the given Navigation block (clientId).\n\t// This is required else the list view will display the entire block tree.\n\tconst clientIdsTree = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __unstableGetClientIdsTree } = select( blockEditorStore );\n\t\t\treturn __unstableGetClientIdsTree( clientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst setInsertedBlockAttributes =\n\t\t( _insertedBlockClientId ) => ( _updatedAttributes ) => {\n\t\t\tif ( ! _insertedBlockClientId ) return;\n\t\t\tupdateBlockAttributes( _insertedBlockClientId, _updatedAttributes );\n\t\t};\n\n\tconst { navigationMenu } = useNavigationMenu( currentMenuId );\n\n\tif ( currentMenuId && isNavigationMenuMissing ) {\n\t\treturn <DeletedNavigationWarning onCreateNew={ onCreateNew } />;\n\t}\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\tconst description = navigationMenu\n\t\t? sprintf(\n\t\t\t\t/* translators: %s: The name of a menu. */\n\t\t\t\t__( 'Structure for navigation menu: %s' ),\n\t\t\t\tnavigationMenu?.title?.rendered || __( 'Untitled menu' )\n\t\t )\n\t\t: __(\n\t\t\t\t'You have not yet created any menus. Displaying a list of your Pages'\n\t\t );\n\n\tconst renderLinkUI = (\n\t\tcurrentBlock,\n\t\tlastInsertedBlock,\n\t\tsetLastInsertedBlock\n\t) => {\n\t\tconst blockSupportsLinkUI = BLOCKS_WITH_LINK_UI_SUPPORT?.includes(\n\t\t\tlastInsertedBlock?.name\n\t\t);\n\t\tconst currentBlockWasJustInserted =\n\t\t\tlastInsertedBlock?.clientId === currentBlock.clientId;\n\n\t\tconst shouldShowLinkUIForBlock =\n\t\t\tblockSupportsLinkUI && currentBlockWasJustInserted;\n\n\t\treturn (\n\t\t\tshouldShowLinkUIForBlock && (\n\t\t\t\t<LinkUI\n\t\t\t\t\tclientId={ lastInsertedBlock?.clientId }\n\t\t\t\t\tlink={ lastInsertedBlock?.attributes }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetLastInsertedBlock( null );\n\t\t\t\t\t} }\n\t\t\t\t\thasCreateSuggestion={ false }\n\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\tsetInsertedBlockAttributes(\n\t\t\t\t\t\t\t\tlastInsertedBlock?.clientId\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlastInsertedBlock?.attributes\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetLastInsertedBlock( null );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => {\n\t\t\t\t\t\tsetLastInsertedBlock( null );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t)\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className=\"wp-block-navigation__menu-inspector-controls\">\n\t\t\t{ clientIdsTree.length === 0 && (\n\t\t\t\t<p className=\"wp-block-navigation__menu-inspector-controls__empty-message\">\n\t\t\t\t\t{ __( 'This navigation menu is empty.' ) }\n\t\t\t\t</p>\n\t\t\t) }\n\t\t\t<PrivateListView\n\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\trootClientId={ clientId }\n\t\t\t\tisExpanded\n\t\t\t\tdescription={ description }\n\t\t\t\tshowAppender\n\t\t\t\tblockSettingsMenu={ LeafMoreMenu }\n\t\t\t\trenderAdditionalBlockUI={ renderLinkUI }\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nconst MenuInspectorControls = ( props ) => {\n\tconst {\n\t\tcreateNavigationMenuIsSuccess,\n\t\tcreateNavigationMenuIsError,\n\t\tcurrentMenuId = null,\n\t\tonCreateNew,\n\t\tonSelectClassicMenu,\n\t\tonSelectNavigationMenu,\n\t\tisManageMenusButtonDisabled,\n\t} = props;\n\n\treturn (\n\t\t<InspectorControls group=\"list\">\n\t\t\t<PanelBody title={ null }>\n\t\t\t\t<HStack className=\"wp-block-navigation-off-canvas-editor__header\">\n\t\t\t\t\t<Heading\n\t\t\t\t\t\tclassName=\"wp-block-navigation-off-canvas-editor__title\"\n\t\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Menu' ) }\n\t\t\t\t\t</Heading>\n\t\t\t\t\t<NavigationMenuSelector\n\t\t\t\t\t\tcurrentMenuId={ currentMenuId }\n\t\t\t\t\t\tonSelectClassicMenu={ onSelectClassicMenu }\n\t\t\t\t\t\tonSelectNavigationMenu={ onSelectNavigationMenu }\n\t\t\t\t\t\tonCreateNew={ onCreateNew }\n\t\t\t\t\t\tcreateNavigationMenuIsSuccess={\n\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcreateNavigationMenuIsError={\n\t\t\t\t\t\t\tcreateNavigationMenuIsError\n\t\t\t\t\t\t}\n\t\t\t\t\t\tactionLabel={ actionLabel }\n\t\t\t\t\t\tisManageMenusButtonDisabled={\n\t\t\t\t\t\t\tisManageMenusButtonDisabled\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t<MainContent { ...props } />\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n};\n\nexport default MenuInspectorControls;\n"]}
@@ -3,7 +3,7 @@ import { createElement, Fragment } from "@wordpress/element";
3
3
  /**
4
4
  * WordPress dependencies
5
5
  */
6
- import { Button, Flex, FlexItem, Modal } from '@wordpress/components';
6
+ import { Button, Modal, __experimentalHStack as HStack } from '@wordpress/components';
7
7
  import { store as coreStore, useEntityId, useEntityProp } from '@wordpress/core-data';
8
8
  import { useDispatch } from '@wordpress/data';
9
9
  import { useState } from '@wordpress/element';
@@ -30,14 +30,14 @@ export default function NavigationMenuDeleteControl(_ref) {
30
30
  /* translators: %s: the name of a menu to delete */
31
31
  __('Delete %s'), title),
32
32
  onRequestClose: () => setIsConfirmModalVisible(false)
33
- }, createElement("p", null, __('Are you sure you want to delete this navigation menu?')), createElement(Flex, {
34
- justify: "flex-end"
35
- }, createElement(FlexItem, null, createElement(Button, {
36
- variant: "secondary",
33
+ }, createElement("p", null, __('Are you sure you want to delete this navigation menu?')), createElement(HStack, {
34
+ justify: "right"
35
+ }, createElement(Button, {
36
+ variant: "tertiary",
37
37
  onClick: () => {
38
38
  setIsConfirmModalVisible(false);
39
39
  }
40
- }, __('Cancel'))), createElement(FlexItem, null, createElement(Button, {
40
+ }, __('Cancel')), createElement(Button, {
41
41
  variant: "primary",
42
42
  onClick: () => {
43
43
  deleteEntityRecord('postType', 'wp_navigation', id, {
@@ -45,6 +45,6 @@ export default function NavigationMenuDeleteControl(_ref) {
45
45
  });
46
46
  onDelete(title);
47
47
  }
48
- }, __('Confirm'))))));
48
+ }, __('Confirm')))));
49
49
  }
50
50
  //# sourceMappingURL=navigation-menu-delete-control.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/navigation-menu-delete-control.js"],"names":["Button","Flex","FlexItem","Modal","store","coreStore","useEntityId","useEntityProp","useDispatch","useState","__","sprintf","NavigationMenuDeleteControl","onDelete","isConfirmModalVisible","setIsConfirmModalVisible","id","title","deleteEntityRecord","force"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,EAAiBC,IAAjB,EAAuBC,QAAvB,EAAiCC,KAAjC,QAA8C,uBAA9C;AACA,SACCC,KAAK,IAAIC,SADV,EAECC,WAFD,EAGCC,aAHD,QAIO,sBAJP;AAKA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA,eAAe,SAASC,2BAAT,OAAqD;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACnE,QAAM,CAAEC,qBAAF,EAAyBC,wBAAzB,IACLN,QAAQ,CAAE,KAAF,CADT;AAEA,QAAMO,EAAE,GAAGV,WAAW,CAAE,UAAF,EAAc,eAAd,CAAtB;AACA,QAAM,CAAEW,KAAF,IAAYV,aAAa,CAAE,UAAF,EAAc,eAAd,EAA+B,OAA/B,CAA/B;AACA,QAAM;AAAEW,IAAAA;AAAF,MAAyBV,WAAW,CAAEH,SAAF,CAA1C;AAEA,SACC,8BACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,IAAA,OAAO,EAAC,WAFT;AAGC,IAAA,aAAa,MAHd;AAIC,IAAA,OAAO,EAAG,MAAM;AACfU,MAAAA,wBAAwB,CAAE,IAAF,CAAxB;AACA;AANF,KAQGL,EAAE,CAAE,aAAF,CARL,CADD,EAWGI,qBAAqB,IACtB,cAAC,KAAD;AACC,IAAA,KAAK,EAAGH,OAAO;AACd;AACAD,IAAAA,EAAE,CAAE,WAAF,CAFY,EAGdO,KAHc,CADhB;AAMC,IAAA,cAAc,EAAG,MAAMF,wBAAwB,CAAE,KAAF;AANhD,KAQC,yBACGL,EAAE,CACH,uDADG,CADL,CARD,EAaC,cAAC,IAAD;AAAM,IAAA,OAAO,EAAC;AAAd,KACC,cAAC,QAAD,QACC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,WADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfK,MAAAA,wBAAwB,CAAE,KAAF,CAAxB;AACA;AAJF,KAMGL,EAAE,CAAE,QAAF,CANL,CADD,CADD,EAWC,cAAC,QAAD,QACC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfQ,MAAAA,kBAAkB,CACjB,UADiB,EAEjB,eAFiB,EAGjBF,EAHiB,EAIjB;AAAEG,QAAAA,KAAK,EAAE;AAAT,OAJiB,CAAlB;AAMAN,MAAAA,QAAQ,CAAEI,KAAF,CAAR;AACA;AAVF,KAYGP,EAAE,CAAE,SAAF,CAZL,CADD,CAXD,CAbD,CAZF,CADD;AA0DA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Flex, FlexItem, Modal } from '@wordpress/components';\nimport {\n\tstore as coreStore,\n\tuseEntityId,\n\tuseEntityProp,\n} from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\nexport default function NavigationMenuDeleteControl( { onDelete } ) {\n\tconst [ isConfirmModalVisible, setIsConfirmModalVisible ] =\n\t\tuseState( false );\n\tconst id = useEntityId( 'postType', 'wp_navigation' );\n\tconst [ title ] = useEntityProp( 'postType', 'wp_navigation', 'title' );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName=\"wp-block-navigation-delete-menu-button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tisDestructive\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsConfirmModalVisible( true );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Delete menu' ) }\n\t\t\t</Button>\n\t\t\t{ isConfirmModalVisible && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: the name of a menu to delete */\n\t\t\t\t\t\t__( 'Delete %s' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () => setIsConfirmModalVisible( false ) }\n\t\t\t\t>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Are you sure you want to delete this navigation menu?'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t\t<Flex justify=\"flex-end\">\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetIsConfirmModalVisible( false );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tdeleteEntityRecord(\n\t\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t\t'wp_navigation',\n\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t{ force: true }\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tonDelete( title );\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{ __( 'Confirm' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/navigation-menu-delete-control.js"],"names":["Button","Modal","__experimentalHStack","HStack","store","coreStore","useEntityId","useEntityProp","useDispatch","useState","__","sprintf","NavigationMenuDeleteControl","onDelete","isConfirmModalVisible","setIsConfirmModalVisible","id","title","deleteEntityRecord","force"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,MADD,EAECC,KAFD,EAGCC,oBAAoB,IAAIC,MAHzB,QAIO,uBAJP;AAKA,SACCC,KAAK,IAAIC,SADV,EAECC,WAFD,EAGCC,aAHD,QAIO,sBAJP;AAKA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA,eAAe,SAASC,2BAAT,OAAqD;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACnE,QAAM,CAAEC,qBAAF,EAAyBC,wBAAzB,IACLN,QAAQ,CAAE,KAAF,CADT;AAEA,QAAMO,EAAE,GAAGV,WAAW,CAAE,UAAF,EAAc,eAAd,CAAtB;AACA,QAAM,CAAEW,KAAF,IAAYV,aAAa,CAAE,UAAF,EAAc,eAAd,EAA+B,OAA/B,CAA/B;AACA,QAAM;AAAEW,IAAAA;AAAF,MAAyBV,WAAW,CAAEH,SAAF,CAA1C;AAEA,SACC,8BACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,IAAA,OAAO,EAAC,WAFT;AAGC,IAAA,aAAa,MAHd;AAIC,IAAA,OAAO,EAAG,MAAM;AACfU,MAAAA,wBAAwB,CAAE,IAAF,CAAxB;AACA;AANF,KAQGL,EAAE,CAAE,aAAF,CARL,CADD,EAWGI,qBAAqB,IACtB,cAAC,KAAD;AACC,IAAA,KAAK,EAAGH,OAAO;AACd;AACAD,IAAAA,EAAE,CAAE,WAAF,CAFY,EAGdO,KAHc,CADhB;AAMC,IAAA,cAAc,EAAG,MAAMF,wBAAwB,CAAE,KAAF;AANhD,KAQC,yBACGL,EAAE,CACH,uDADG,CADL,CARD,EAaC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC;AAAhB,KACC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,UADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfK,MAAAA,wBAAwB,CAAE,KAAF,CAAxB;AACA;AAJF,KAMGL,EAAE,CAAE,QAAF,CANL,CADD,EASC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfQ,MAAAA,kBAAkB,CACjB,UADiB,EAEjB,eAFiB,EAGjBF,EAHiB,EAIjB;AAAEG,QAAAA,KAAK,EAAE;AAAT,OAJiB,CAAlB;AAMAN,MAAAA,QAAQ,CAAEI,KAAF,CAAR;AACA;AAVF,KAYGP,EAAE,CAAE,SAAF,CAZL,CATD,CAbD,CAZF,CADD;AAsDA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport {\n\tstore as coreStore,\n\tuseEntityId,\n\tuseEntityProp,\n} from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\nexport default function NavigationMenuDeleteControl( { onDelete } ) {\n\tconst [ isConfirmModalVisible, setIsConfirmModalVisible ] =\n\t\tuseState( false );\n\tconst id = useEntityId( 'postType', 'wp_navigation' );\n\tconst [ title ] = useEntityProp( 'postType', 'wp_navigation', 'title' );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName=\"wp-block-navigation-delete-menu-button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tisDestructive\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsConfirmModalVisible( true );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Delete menu' ) }\n\t\t\t</Button>\n\t\t\t{ isConfirmModalVisible && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: the name of a menu to delete */\n\t\t\t\t\t\t__( 'Delete %s' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () => setIsConfirmModalVisible( false ) }\n\t\t\t\t>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Are you sure you want to delete this navigation menu?'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetIsConfirmModalVisible( false );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tdeleteEntityRecord(\n\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t'wp_navigation',\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t{ force: true }\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tonDelete( title );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Confirm' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -12,17 +12,9 @@ import { useContext, useEffect, useRef, useMemo } from '@wordpress/element';
12
12
  * Internal dependencies
13
13
  */
14
14
 
15
- import useNavigationMenu from '../use-navigation-menu';
16
15
  import { areBlocksDirty } from './are-blocks-dirty';
16
+ import { DEFAULT_BLOCK, ALLOWED_BLOCKS } from '../constants';
17
17
  const EMPTY_OBJECT = {};
18
- const DRAFT_MENU_PARAMS = ['postType', 'wp_navigation', {
19
- status: 'draft',
20
- per_page: -1
21
- }];
22
- const DEFAULT_BLOCK = {
23
- name: 'core/navigation-link'
24
- };
25
- const ALLOWED_BLOCKS = ['core/navigation-link', 'core/search', 'core/social-links', 'core/page-list', 'core/spacer', 'core/home-link', 'core/site-title', 'core/site-logo', 'core/navigation-submenu'];
26
18
  export default function UnsavedInnerBlocks(_ref) {
27
19
  let {
28
20
  blocks,
@@ -64,27 +56,24 @@ export default function UnsavedInnerBlocks(_ref) {
64
56
  });
65
57
  const {
66
58
  isSaving,
67
- hasResolvedDraftNavigationMenus
59
+ hasResolvedAllNavigationMenus
68
60
  } = useSelect(select => {
69
61
  if (isDisabled) {
70
62
  return EMPTY_OBJECT;
71
63
  }
72
64
 
73
65
  const {
74
- getEntityRecords,
75
66
  hasFinishedResolution,
76
67
  isSavingEntityRecord
77
68
  } = select(coreStore);
78
69
  return {
79
70
  isSaving: isSavingEntityRecord('postType', 'wp_navigation'),
80
- draftNavigationMenus: getEntityRecords( // This is needed so that hasResolvedDraftNavigationMenus gives the correct status.
81
- ...DRAFT_MENU_PARAMS),
82
- hasResolvedDraftNavigationMenus: hasFinishedResolution('getEntityRecords', DRAFT_MENU_PARAMS)
71
+ hasResolvedAllNavigationMenus: hasFinishedResolution('getEntityRecords', ['postType', 'wp_navigation', {
72
+ per_page: -1,
73
+ status: ['publish', 'draft']
74
+ }])
83
75
  };
84
- }, [isDisabled]);
85
- const {
86
- hasResolvedNavigationMenus
87
- } = useNavigationMenu(); // Automatically save the uncontrolled blocks.
76
+ }, [isDisabled]); // Automatically save the uncontrolled blocks.
88
77
 
89
78
  useEffect(() => {
90
79
  // The block will be disabled when used in a BlockPreview.
@@ -99,12 +88,12 @@ export default function UnsavedInnerBlocks(_ref) {
99
88
  //
100
89
  // And finally only create the menu when the block is selected,
101
90
  // which is an indication they want to start editing.
102
- if (isDisabled || isSaving || !hasResolvedDraftNavigationMenus || !hasResolvedNavigationMenus || !hasSelection || !innerBlocksAreDirty) {
91
+ if (isDisabled || isSaving || !hasResolvedAllNavigationMenus || !hasSelection || !innerBlocksAreDirty) {
103
92
  return;
104
93
  }
105
94
 
106
95
  createNavigationMenu(null, blocks);
107
- }, [blocks, createNavigationMenu, isDisabled, isSaving, hasResolvedDraftNavigationMenus, hasResolvedNavigationMenus, innerBlocksAreDirty, hasSelection]);
96
+ }, [blocks, createNavigationMenu, isDisabled, isSaving, hasResolvedAllNavigationMenus, innerBlocksAreDirty, hasSelection]);
108
97
  const Wrapper = isSaving ? Disabled : 'div';
109
98
  return createElement(Wrapper, innerBlocksProps);
110
99
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js"],"names":["useInnerBlocksProps","Disabled","store","coreStore","useSelect","useContext","useEffect","useRef","useMemo","useNavigationMenu","areBlocksDirty","EMPTY_OBJECT","DRAFT_MENU_PARAMS","status","per_page","DEFAULT_BLOCK","name","ALLOWED_BLOCKS","UnsavedInnerBlocks","blocks","createNavigationMenu","hasSelection","originalBlocks","current","innerBlocksAreDirty","shouldDirectInsert","every","isDisabled","Context","innerBlocksProps","className","renderAppender","undefined","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","isSaving","hasResolvedDraftNavigationMenus","select","getEntityRecords","hasFinishedResolution","isSavingEntityRecord","draftNavigationMenus","hasResolvedNavigationMenus","Wrapper"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps } from '@wordpress/block-editor';\nimport { Disabled } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport { areBlocksDirty } from './are-blocks-dirty';\n\nconst EMPTY_OBJECT = {};\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nexport default function UnsavedInnerBlocks( {\n\tblocks,\n\tcreateNavigationMenu,\n\thasSelection,\n} ) {\n\tconst originalBlocks = useRef();\n\n\tuseEffect( () => {\n\t\t// Initially store the uncontrolled inner blocks for\n\t\t// dirty state comparison.\n\t\tif ( ! originalBlocks?.current ) {\n\t\t\toriginalBlocks.current = blocks;\n\t\t}\n\t}, [ blocks ] );\n\n\t// If the current inner blocks are different from the original inner blocks\n\t// from the post content then the user has made changes to the inner blocks.\n\t// At this point the inner blocks can be considered \"dirty\".\n\t// Note: referential equality is not sufficient for comparison as the inner blocks\n\t// of the page list are controlled and may be updated async due to syncing with\n\t// entity records. As a result we need to perform a deep equality check skipping\n\t// the page list's inner blocks.\n\tconst innerBlocksAreDirty = areBlocksDirty(\n\t\toriginalBlocks?.current,\n\t\tblocks\n\t);\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\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\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\trenderAppender: hasSelection ? undefined : false,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t}\n\t);\n\n\tconst { isSaving, hasResolvedDraftNavigationMenus } = 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(\n\t\t\t\t\t// This is needed so that hasResolvedDraftNavigationMenus gives the correct status.\n\t\t\t\t\t...DRAFT_MENU_PARAMS\n\t\t\t\t),\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 } = useNavigationMenu();\n\n\t// Automatically save the uncontrolled blocks.\n\tuseEffect( () => {\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\tisSaving ||\n\t\t\t! hasResolvedDraftNavigationMenus ||\n\t\t\t! hasResolvedNavigationMenus ||\n\t\t\t! hasSelection ||\n\t\t\t! innerBlocksAreDirty\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tcreateNavigationMenu( null, blocks );\n\t}, [\n\t\tblocks,\n\t\tcreateNavigationMenu,\n\t\tisDisabled,\n\t\tisSaving,\n\t\thasResolvedDraftNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tinnerBlocksAreDirty,\n\t\thasSelection,\n\t] );\n\n\tconst Wrapper = isSaving ? Disabled : 'div';\n\n\treturn <Wrapper { ...innerBlocksProps } />;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js"],"names":["useInnerBlocksProps","Disabled","store","coreStore","useSelect","useContext","useEffect","useRef","useMemo","areBlocksDirty","DEFAULT_BLOCK","ALLOWED_BLOCKS","EMPTY_OBJECT","UnsavedInnerBlocks","blocks","createNavigationMenu","hasSelection","originalBlocks","current","innerBlocksAreDirty","shouldDirectInsert","every","name","isDisabled","Context","innerBlocksProps","className","renderAppender","undefined","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","isSaving","hasResolvedAllNavigationMenus","select","hasFinishedResolution","isSavingEntityRecord","per_page","status","Wrapper"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps } from '@wordpress/block-editor';\nimport { Disabled } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { areBlocksDirty } from './are-blocks-dirty';\nimport { DEFAULT_BLOCK, ALLOWED_BLOCKS } from '../constants';\n\nconst EMPTY_OBJECT = {};\n\nexport default function UnsavedInnerBlocks( {\n\tblocks,\n\tcreateNavigationMenu,\n\thasSelection,\n} ) {\n\tconst originalBlocks = useRef();\n\n\tuseEffect( () => {\n\t\t// Initially store the uncontrolled inner blocks for\n\t\t// dirty state comparison.\n\t\tif ( ! originalBlocks?.current ) {\n\t\t\toriginalBlocks.current = blocks;\n\t\t}\n\t}, [ blocks ] );\n\n\t// If the current inner blocks are different from the original inner blocks\n\t// from the post content then the user has made changes to the inner blocks.\n\t// At this point the inner blocks can be considered \"dirty\".\n\t// Note: referential equality is not sufficient for comparison as the inner blocks\n\t// of the page list are controlled and may be updated async due to syncing with\n\t// entity records. As a result we need to perform a deep equality check skipping\n\t// the page list's inner blocks.\n\tconst innerBlocksAreDirty = areBlocksDirty(\n\t\toriginalBlocks?.current,\n\t\tblocks\n\t);\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\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\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\trenderAppender: hasSelection ? undefined : false,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t}\n\t);\n\n\tconst { isSaving, hasResolvedAllNavigationMenus } = 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 { hasFinishedResolution, isSavingEntityRecord } =\n\t\t\t\tselect( coreStore );\n\n\t\t\treturn {\n\t\t\t\tisSaving: isSavingEntityRecord( 'postType', 'wp_navigation' ),\n\t\t\t\thasResolvedAllNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\t[\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'wp_navigation',\n\t\t\t\t\t\t{ per_page: -1, status: [ 'publish', 'draft' ] },\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ isDisabled ]\n\t);\n\n\t// Automatically save the uncontrolled blocks.\n\tuseEffect( () => {\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\tisSaving ||\n\t\t\t! hasResolvedAllNavigationMenus ||\n\t\t\t! hasSelection ||\n\t\t\t! innerBlocksAreDirty\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tcreateNavigationMenu( null, blocks );\n\t}, [\n\t\tblocks,\n\t\tcreateNavigationMenu,\n\t\tisDisabled,\n\t\tisSaving,\n\t\thasResolvedAllNavigationMenus,\n\t\tinnerBlocksAreDirty,\n\t\thasSelection,\n\t] );\n\n\tconst Wrapper = isSaving ? Disabled : 'div';\n\n\treturn <Wrapper { ...innerBlocksProps } />;\n}\n"]}
@@ -73,7 +73,7 @@ function useConvertClassicToBlockMenu(clientId) {
73
73
  */
74
74
 
75
75
  await editEntityRecord('postType', 'wp_navigation', navigationMenu.id, {
76
- status: postStatus
76
+ status: 'publish'
77
77
  }, {
78
78
  throwOnError: true
79
79
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-convert-classic-menu-to-block-menu.js"],"names":["useRegistry","useDispatch","store","coreStore","useState","useCallback","__","sprintf","useCreateNavigationMenu","menuItemsToBlocks","CLASSIC_MENU_CONVERSION_SUCCESS","CLASSIC_MENU_CONVERSION_ERROR","CLASSIC_MENU_CONVERSION_PENDING","CLASSIC_MENU_CONVERSION_IDLE","classicMenuBeingConvertedId","useConvertClassicToBlockMenu","clientId","create","createNavigationMenu","registry","editEntityRecord","status","setStatus","error","setError","convertClassicMenuToBlockMenu","menuId","menuName","postStatus","navigationMenu","classicMenuItems","resolveSelect","getMenuItems","menus","per_page","context","err","Error","cause","innerBlocks","id","throwOnError","convert","then","catch","message"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useCreateNavigationMenu from './use-create-navigation-menu';\nimport menuItemsToBlocks from '../menu-items-to-blocks';\n\nexport const CLASSIC_MENU_CONVERSION_SUCCESS = 'success';\nexport const CLASSIC_MENU_CONVERSION_ERROR = 'error';\nexport const CLASSIC_MENU_CONVERSION_PENDING = 'pending';\nexport const CLASSIC_MENU_CONVERSION_IDLE = 'idle';\n\n// This is needed to ensure that multiple components using this hook\n// do not import the same classic menu twice.\nlet classicMenuBeingConvertedId = null;\n\nfunction useConvertClassicToBlockMenu( clientId ) {\n\t/*\n\t * The wp_navigation post is created as a draft so the changes on the frontend and\n\t * the site editor are not permanent without a save interaction done by the user.\n\t */\n\tconst { create: createNavigationMenu } = useCreateNavigationMenu(\n\t\tclientId,\n\t\t'draft'\n\t);\n\tconst registry = useRegistry();\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst [ status, setStatus ] = useState( CLASSIC_MENU_CONVERSION_IDLE );\n\tconst [ error, setError ] = useState( null );\n\n\tconst convertClassicMenuToBlockMenu = useCallback(\n\t\tasync ( menuId, menuName, postStatus = 'publish' ) => {\n\t\t\tlet navigationMenu;\n\t\t\tlet classicMenuItems;\n\n\t\t\t// 1. Fetch the classic Menu items.\n\t\t\ttry {\n\t\t\t\tclassicMenuItems = await registry\n\t\t\t\t\t.resolveSelect( coreStore )\n\t\t\t\t\t.getMenuItems( {\n\t\t\t\t\t\tmenus: menuId,\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t} );\n\t\t\t} catch ( err ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Handle offline response which resolves to `null`.\n\t\t\tif ( classicMenuItems === null ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// 2. Convert the classic items into blocks.\n\t\t\tconst { innerBlocks } = menuItemsToBlocks( classicMenuItems );\n\n\t\t\t// 3. Create the `wp_navigation` Post with the blocks.\n\t\t\ttry {\n\t\t\t\tnavigationMenu = await createNavigationMenu(\n\t\t\t\t\tmenuName,\n\t\t\t\t\tinnerBlocks,\n\t\t\t\t\tpostStatus\n\t\t\t\t);\n\n\t\t\t\t/**\n\t\t\t\t * Immediately trigger editEntityRecord to change the wp_navigation post status to 'publish'.\n\t\t\t\t * This status change causes the menu to be displayed on the front of the site and sets the post state to be \"dirty\".\n\t\t\t\t * The problem being solved is if saveEditedEntityRecord was used here, the menu would be updated on the frontend and the editor _automatically_,\n\t\t\t\t * without user interaction.\n\t\t\t\t * If the user abandons the site editor without saving, there would still be a wp_navigation post created as draft.\n\t\t\t\t */\n\t\t\t\tawait editEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_navigation',\n\t\t\t\t\tnavigationMenu.id,\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus: postStatus,\n\t\t\t\t\t},\n\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t);\n\t\t\t} catch ( err ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn navigationMenu;\n\t\t},\n\t\t[ createNavigationMenu, editEntityRecord, registry ]\n\t);\n\n\tconst convert = useCallback(\n\t\tasync ( menuId, menuName, postStatus ) => {\n\t\t\t// Check whether this classic menu is being imported already.\n\t\t\tif ( classicMenuBeingConvertedId === menuId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the ID for the currently importing classic menu.\n\t\t\tclassicMenuBeingConvertedId = menuId;\n\n\t\t\tif ( ! menuId || ! menuName ) {\n\t\t\t\tsetError( 'Unable to convert menu. Missing menu details.' );\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_PENDING );\n\t\t\tsetError( null );\n\n\t\t\treturn await convertClassicMenuToBlockMenu(\n\t\t\t\tmenuId,\n\t\t\t\tmenuName,\n\t\t\t\tpostStatus\n\t\t\t)\n\t\t\t\t.then( ( navigationMenu ) => {\n\t\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_SUCCESS );\n\t\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\t\tclassicMenuBeingConvertedId = null;\n\t\t\t\t\treturn navigationMenu;\n\t\t\t\t} )\n\t\t\t\t.catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\n\t\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\t\tclassicMenuBeingConvertedId = null;\n\n\t\t\t\t\t// Rethrow error for debugging.\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\t\t\tmenuName\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: err,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\t\t[ convertClassicMenuToBlockMenu ]\n\t);\n\n\treturn {\n\t\tconvert,\n\t\tstatus,\n\t\terror,\n\t};\n}\n\nexport default useConvertClassicToBlockMenu;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-convert-classic-menu-to-block-menu.js"],"names":["useRegistry","useDispatch","store","coreStore","useState","useCallback","__","sprintf","useCreateNavigationMenu","menuItemsToBlocks","CLASSIC_MENU_CONVERSION_SUCCESS","CLASSIC_MENU_CONVERSION_ERROR","CLASSIC_MENU_CONVERSION_PENDING","CLASSIC_MENU_CONVERSION_IDLE","classicMenuBeingConvertedId","useConvertClassicToBlockMenu","clientId","create","createNavigationMenu","registry","editEntityRecord","status","setStatus","error","setError","convertClassicMenuToBlockMenu","menuId","menuName","postStatus","navigationMenu","classicMenuItems","resolveSelect","getMenuItems","menus","per_page","context","err","Error","cause","innerBlocks","id","throwOnError","convert","then","catch","message"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useCreateNavigationMenu from './use-create-navigation-menu';\nimport menuItemsToBlocks from '../menu-items-to-blocks';\n\nexport const CLASSIC_MENU_CONVERSION_SUCCESS = 'success';\nexport const CLASSIC_MENU_CONVERSION_ERROR = 'error';\nexport const CLASSIC_MENU_CONVERSION_PENDING = 'pending';\nexport const CLASSIC_MENU_CONVERSION_IDLE = 'idle';\n\n// This is needed to ensure that multiple components using this hook\n// do not import the same classic menu twice.\nlet classicMenuBeingConvertedId = null;\n\nfunction useConvertClassicToBlockMenu( clientId ) {\n\t/*\n\t * The wp_navigation post is created as a draft so the changes on the frontend and\n\t * the site editor are not permanent without a save interaction done by the user.\n\t */\n\tconst { create: createNavigationMenu } = useCreateNavigationMenu(\n\t\tclientId,\n\t\t'draft'\n\t);\n\tconst registry = useRegistry();\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst [ status, setStatus ] = useState( CLASSIC_MENU_CONVERSION_IDLE );\n\tconst [ error, setError ] = useState( null );\n\n\tconst convertClassicMenuToBlockMenu = useCallback(\n\t\tasync ( menuId, menuName, postStatus = 'publish' ) => {\n\t\t\tlet navigationMenu;\n\t\t\tlet classicMenuItems;\n\n\t\t\t// 1. Fetch the classic Menu items.\n\t\t\ttry {\n\t\t\t\tclassicMenuItems = await registry\n\t\t\t\t\t.resolveSelect( coreStore )\n\t\t\t\t\t.getMenuItems( {\n\t\t\t\t\t\tmenus: menuId,\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t} );\n\t\t\t} catch ( err ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Handle offline response which resolves to `null`.\n\t\t\tif ( classicMenuItems === null ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// 2. Convert the classic items into blocks.\n\t\t\tconst { innerBlocks } = menuItemsToBlocks( classicMenuItems );\n\n\t\t\t// 3. Create the `wp_navigation` Post with the blocks.\n\t\t\ttry {\n\t\t\t\tnavigationMenu = await createNavigationMenu(\n\t\t\t\t\tmenuName,\n\t\t\t\t\tinnerBlocks,\n\t\t\t\t\tpostStatus\n\t\t\t\t);\n\n\t\t\t\t/**\n\t\t\t\t * Immediately trigger editEntityRecord to change the wp_navigation post status to 'publish'.\n\t\t\t\t * This status change causes the menu to be displayed on the front of the site and sets the post state to be \"dirty\".\n\t\t\t\t * The problem being solved is if saveEditedEntityRecord was used here, the menu would be updated on the frontend and the editor _automatically_,\n\t\t\t\t * without user interaction.\n\t\t\t\t * If the user abandons the site editor without saving, there would still be a wp_navigation post created as draft.\n\t\t\t\t */\n\t\t\t\tawait editEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_navigation',\n\t\t\t\t\tnavigationMenu.id,\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\t},\n\t\t\t\t\t{ throwOnError: true }\n\t\t\t\t);\n\t\t\t} catch ( err ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn navigationMenu;\n\t\t},\n\t\t[ createNavigationMenu, editEntityRecord, registry ]\n\t);\n\n\tconst convert = useCallback(\n\t\tasync ( menuId, menuName, postStatus ) => {\n\t\t\t// Check whether this classic menu is being imported already.\n\t\t\tif ( classicMenuBeingConvertedId === menuId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the ID for the currently importing classic menu.\n\t\t\tclassicMenuBeingConvertedId = menuId;\n\n\t\t\tif ( ! menuId || ! menuName ) {\n\t\t\t\tsetError( 'Unable to convert menu. Missing menu details.' );\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_PENDING );\n\t\t\tsetError( null );\n\n\t\t\treturn await convertClassicMenuToBlockMenu(\n\t\t\t\tmenuId,\n\t\t\t\tmenuName,\n\t\t\t\tpostStatus\n\t\t\t)\n\t\t\t\t.then( ( navigationMenu ) => {\n\t\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_SUCCESS );\n\t\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\t\tclassicMenuBeingConvertedId = null;\n\t\t\t\t\treturn navigationMenu;\n\t\t\t\t} )\n\t\t\t\t.catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\n\t\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\t\tclassicMenuBeingConvertedId = null;\n\n\t\t\t\t\t// Rethrow error for debugging.\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\t\t\tmenuName\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: err,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\t\t[ convertClassicMenuToBlockMenu ]\n\t);\n\n\treturn {\n\t\tconvert,\n\t\tstatus,\n\t\terror,\n\t};\n}\n\nexport default useConvertClassicToBlockMenu;\n"]}