@wordpress/block-library 8.13.0 → 8.15.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 (549) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/archives/index.js +5 -1
  3. package/build/archives/index.js.map +1 -1
  4. package/build/audio/index.js +5 -1
  5. package/build/audio/index.js.map +1 -1
  6. package/build/avatar/edit.js +1 -0
  7. package/build/avatar/edit.js.map +1 -1
  8. package/build/avatar/index.js +1 -1
  9. package/build/block/edit.js +1 -1
  10. package/build/block/edit.js.map +1 -1
  11. package/build/block/edit.native.js +6 -9
  12. package/build/block/edit.native.js.map +1 -1
  13. package/build/block/index.js +2 -1
  14. package/build/block/index.js.map +1 -1
  15. package/build/buttons/edit.js +7 -3
  16. package/build/buttons/edit.js.map +1 -1
  17. package/build/categories/index.js +5 -1
  18. package/build/categories/index.js.map +1 -1
  19. package/build/code/index.js +5 -1
  20. package/build/code/index.js.map +1 -1
  21. package/build/column/edit.native.js +1 -4
  22. package/build/column/edit.native.js.map +1 -1
  23. package/build/column/index.js +1 -0
  24. package/build/column/index.js.map +1 -1
  25. package/build/columns/edit.js +1 -0
  26. package/build/columns/edit.js.map +1 -1
  27. package/build/comment-author-avatar/edit.js +1 -0
  28. package/build/comment-author-avatar/edit.js.map +1 -1
  29. package/build/comments/index.js +1 -0
  30. package/build/comments/index.js.map +1 -1
  31. package/build/cover/deprecated.js +4 -2
  32. package/build/cover/deprecated.js.map +1 -1
  33. package/build/cover/edit/inspector-controls.js +2 -1
  34. package/build/cover/edit/inspector-controls.js.map +1 -1
  35. package/build/cover/index.js +1 -0
  36. package/build/cover/index.js.map +1 -1
  37. package/build/details/index.js +5 -1
  38. package/build/details/index.js.map +1 -1
  39. package/build/embed/embed-placeholder.native.js +37 -13
  40. package/build/embed/embed-placeholder.native.js.map +1 -1
  41. package/build/embed/util.js +9 -8
  42. package/build/embed/util.js.map +1 -1
  43. package/build/file/inspector.js +1 -0
  44. package/build/file/inspector.js.map +1 -1
  45. package/build/file/{interactivity.js → view-interactivity.js} +6 -2
  46. package/build/file/view-interactivity.js.map +1 -0
  47. package/build/footnotes/edit.js +20 -1
  48. package/build/footnotes/edit.js.map +1 -1
  49. package/build/footnotes/format.js +19 -16
  50. package/build/footnotes/format.js.map +1 -1
  51. package/build/footnotes/index.js +0 -1
  52. package/build/footnotes/index.js.map +1 -1
  53. package/build/gallery/edit.js +1 -1
  54. package/build/gallery/edit.js.map +1 -1
  55. package/build/gallery/index.js +3 -1
  56. package/build/gallery/index.js.map +1 -1
  57. package/build/group/index.js +1 -0
  58. package/build/group/index.js.map +1 -1
  59. package/build/heading/index.js +5 -1
  60. package/build/heading/index.js.map +1 -1
  61. package/build/heading/transforms.js +5 -1
  62. package/build/heading/transforms.js.map +1 -1
  63. package/build/image/deprecated.js +453 -175
  64. package/build/image/deprecated.js.map +1 -1
  65. package/build/image/edit.js +0 -4
  66. package/build/image/edit.js.map +1 -1
  67. package/build/image/image.js +96 -43
  68. package/build/image/image.js.map +1 -1
  69. package/build/image/index.js +6 -0
  70. package/build/image/index.js.map +1 -1
  71. package/build/image/save.js +8 -1
  72. package/build/image/save.js.map +1 -1
  73. package/build/image/utils.js +18 -0
  74. package/build/image/utils.js.map +1 -1
  75. package/build/image/{interactivity.js → view-interactivity.js} +86 -44
  76. package/build/image/view-interactivity.js.map +1 -0
  77. package/build/index.js +12 -3
  78. package/build/index.js.map +1 -1
  79. package/build/latest-comments/edit.js +1 -0
  80. package/build/latest-comments/edit.js.map +1 -1
  81. package/build/latest-posts/edit.js +2 -0
  82. package/build/latest-posts/edit.js.map +1 -1
  83. package/build/list/edit.js +4 -4
  84. package/build/list/edit.js.map +1 -1
  85. package/build/list/index.js +5 -1
  86. package/build/list/index.js.map +1 -1
  87. package/build/list-item/utils.js +6 -1
  88. package/build/list-item/utils.js.map +1 -1
  89. package/build/media-text/index.js +1 -0
  90. package/build/media-text/index.js.map +1 -1
  91. package/build/media-text/media-container.native.js +2 -1
  92. package/build/media-text/media-container.native.js.map +1 -1
  93. package/build/missing/edit.js +22 -8
  94. package/build/missing/edit.js.map +1 -1
  95. package/build/missing/edit.native.js +7 -5
  96. package/build/missing/edit.native.js.map +1 -1
  97. package/build/navigation/constants.js +10 -4
  98. package/build/navigation/constants.js.map +1 -1
  99. package/build/navigation/edit/index.js +17 -3
  100. package/build/navigation/edit/index.js.map +1 -1
  101. package/build/navigation/edit/inner-blocks.js +2 -2
  102. package/build/navigation/edit/inner-blocks.js.map +1 -1
  103. package/build/navigation/edit/menu-inspector-controls.js +0 -1
  104. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  105. package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
  106. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  107. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
  108. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  109. package/build/navigation/use-navigation-menu.js +33 -45
  110. package/build/navigation/use-navigation-menu.js.map +1 -1
  111. package/build/navigation/view-interactivity.js +185 -0
  112. package/build/navigation/view-interactivity.js.map +1 -0
  113. package/build/navigation-link/edit.js +12 -18
  114. package/build/navigation-link/edit.js.map +1 -1
  115. package/build/navigation-link/link-ui.js +12 -2
  116. package/build/navigation-link/link-ui.js.map +1 -1
  117. package/build/navigation-submenu/edit.js +2 -2
  118. package/build/navigation-submenu/edit.js.map +1 -1
  119. package/build/page-list/convert-to-links-modal.js +3 -3
  120. package/build/page-list/convert-to-links-modal.js.map +1 -1
  121. package/build/page-list/edit.js +34 -39
  122. package/build/page-list/edit.js.map +1 -1
  123. package/build/page-list/use-convert-to-navigation-links.js +2 -15
  124. package/build/page-list/use-convert-to-navigation-links.js.map +1 -1
  125. package/build/paragraph/index.js +1 -0
  126. package/build/paragraph/index.js.map +1 -1
  127. package/build/paragraph/transforms.js +1 -0
  128. package/build/paragraph/transforms.js.map +1 -1
  129. package/build/post-comments-form/index.js +1 -0
  130. package/build/post-comments-form/index.js.map +1 -1
  131. package/build/post-navigation-link/index.js +1 -0
  132. package/build/post-navigation-link/index.js.map +1 -1
  133. package/build/post-time-to-read/index.js +5 -1
  134. package/build/post-time-to-read/index.js.map +1 -1
  135. package/build/query-pagination/edit.js +1 -1
  136. package/build/query-pagination/edit.js.map +1 -1
  137. package/build/query-pagination-numbers/index.js +1 -1
  138. package/build/query-title/edit.js +43 -1
  139. package/build/query-title/edit.js.map +1 -1
  140. package/build/quote/index.js +1 -0
  141. package/build/quote/index.js.map +1 -1
  142. package/build/quote/transforms.js +8 -0
  143. package/build/quote/transforms.js.map +1 -1
  144. package/build/rss/edit.js +3 -0
  145. package/build/rss/edit.js.map +1 -1
  146. package/build/search/edit.js +4 -3
  147. package/build/search/edit.js.map +1 -1
  148. package/build/search/index.js +1 -0
  149. package/build/search/index.js.map +1 -1
  150. package/build/site-logo/edit.js +1 -0
  151. package/build/site-logo/edit.js.map +1 -1
  152. package/build/site-logo/index.js +5 -1
  153. package/build/site-logo/index.js.map +1 -1
  154. package/build/site-tagline/icon.js +1 -1
  155. package/build/site-tagline/icon.js.map +1 -1
  156. package/build/site-tagline/index.js +5 -1
  157. package/build/site-tagline/index.js.map +1 -1
  158. package/build/site-title/index.js +5 -1
  159. package/build/site-title/index.js.map +1 -1
  160. package/build/social-links/index.js +3 -1
  161. package/build/social-links/index.js.map +1 -1
  162. package/build/table/index.js +5 -1
  163. package/build/table/index.js.map +1 -1
  164. package/build/tag-cloud/edit.js +1 -0
  165. package/build/tag-cloud/edit.js.map +1 -1
  166. package/build/template-part/edit/index.js +1 -1
  167. package/build/template-part/edit/index.js.map +1 -1
  168. package/build/term-description/index.js +1 -0
  169. package/build/term-description/index.js.map +1 -1
  170. package/build/text-columns/edit.js +1 -0
  171. package/build/text-columns/edit.js.map +1 -1
  172. package/build/verse/index.js +5 -1
  173. package/build/verse/index.js.map +1 -1
  174. package/build/video/deprecated.js +5 -1
  175. package/build/video/deprecated.js.map +1 -1
  176. package/build/video/index.js +5 -1
  177. package/build/video/index.js.map +1 -1
  178. package/build-module/archives/index.js +5 -1
  179. package/build-module/archives/index.js.map +1 -1
  180. package/build-module/audio/index.js +5 -1
  181. package/build-module/audio/index.js.map +1 -1
  182. package/build-module/avatar/edit.js +1 -0
  183. package/build-module/avatar/edit.js.map +1 -1
  184. package/build-module/avatar/index.js +1 -1
  185. package/build-module/block/edit.js +1 -1
  186. package/build-module/block/edit.js.map +1 -1
  187. package/build-module/block/edit.native.js +7 -9
  188. package/build-module/block/edit.native.js.map +1 -1
  189. package/build-module/block/index.js +2 -1
  190. package/build-module/block/index.js.map +1 -1
  191. package/build-module/buttons/edit.js +7 -3
  192. package/build-module/buttons/edit.js.map +1 -1
  193. package/build-module/categories/index.js +5 -1
  194. package/build-module/categories/index.js.map +1 -1
  195. package/build-module/code/index.js +5 -1
  196. package/build-module/code/index.js.map +1 -1
  197. package/build-module/column/edit.native.js +1 -4
  198. package/build-module/column/edit.native.js.map +1 -1
  199. package/build-module/column/index.js +1 -0
  200. package/build-module/column/index.js.map +1 -1
  201. package/build-module/columns/edit.js +1 -0
  202. package/build-module/columns/edit.js.map +1 -1
  203. package/build-module/comment-author-avatar/edit.js +1 -0
  204. package/build-module/comment-author-avatar/edit.js.map +1 -1
  205. package/build-module/comments/index.js +1 -0
  206. package/build-module/comments/index.js.map +1 -1
  207. package/build-module/cover/deprecated.js +4 -2
  208. package/build-module/cover/deprecated.js.map +1 -1
  209. package/build-module/cover/edit/inspector-controls.js +2 -1
  210. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  211. package/build-module/cover/index.js +1 -0
  212. package/build-module/cover/index.js.map +1 -1
  213. package/build-module/details/index.js +5 -1
  214. package/build-module/details/index.js.map +1 -1
  215. package/build-module/embed/embed-placeholder.native.js +37 -14
  216. package/build-module/embed/embed-placeholder.native.js.map +1 -1
  217. package/build-module/embed/util.js +6 -6
  218. package/build-module/embed/util.js.map +1 -1
  219. package/build-module/file/inspector.js +1 -0
  220. package/build-module/file/inspector.js.map +1 -1
  221. package/build-module/file/{interactivity.js → view-interactivity.js} +6 -2
  222. package/build-module/file/view-interactivity.js.map +1 -0
  223. package/build-module/footnotes/edit.js +18 -2
  224. package/build-module/footnotes/edit.js.map +1 -1
  225. package/build-module/footnotes/format.js +19 -16
  226. package/build-module/footnotes/format.js.map +1 -1
  227. package/build-module/footnotes/index.js +0 -1
  228. package/build-module/footnotes/index.js.map +1 -1
  229. package/build-module/gallery/edit.js +1 -1
  230. package/build-module/gallery/edit.js.map +1 -1
  231. package/build-module/gallery/index.js +3 -1
  232. package/build-module/gallery/index.js.map +1 -1
  233. package/build-module/group/index.js +1 -0
  234. package/build-module/group/index.js.map +1 -1
  235. package/build-module/heading/index.js +5 -1
  236. package/build-module/heading/index.js.map +1 -1
  237. package/build-module/heading/transforms.js +5 -1
  238. package/build-module/heading/transforms.js.map +1 -1
  239. package/build-module/image/deprecated.js +454 -176
  240. package/build-module/image/deprecated.js.map +1 -1
  241. package/build-module/image/edit.js +0 -4
  242. package/build-module/image/edit.js.map +1 -1
  243. package/build-module/image/image.js +96 -46
  244. package/build-module/image/image.js.map +1 -1
  245. package/build-module/image/index.js +6 -0
  246. package/build-module/image/index.js.map +1 -1
  247. package/build-module/image/save.js +8 -1
  248. package/build-module/image/save.js.map +1 -1
  249. package/build-module/image/utils.js +16 -0
  250. package/build-module/image/utils.js.map +1 -1
  251. package/build-module/image/{interactivity.js → view-interactivity.js} +86 -44
  252. package/build-module/image/view-interactivity.js.map +1 -0
  253. package/build-module/index.js +12 -3
  254. package/build-module/index.js.map +1 -1
  255. package/build-module/latest-comments/edit.js +1 -0
  256. package/build-module/latest-comments/edit.js.map +1 -1
  257. package/build-module/latest-posts/edit.js +2 -0
  258. package/build-module/latest-posts/edit.js.map +1 -1
  259. package/build-module/list/edit.js +4 -4
  260. package/build-module/list/edit.js.map +1 -1
  261. package/build-module/list/index.js +5 -1
  262. package/build-module/list/index.js.map +1 -1
  263. package/build-module/list-item/utils.js +6 -1
  264. package/build-module/list-item/utils.js.map +1 -1
  265. package/build-module/media-text/index.js +1 -0
  266. package/build-module/media-text/index.js.map +1 -1
  267. package/build-module/media-text/media-container.native.js +2 -1
  268. package/build-module/media-text/media-container.native.js.map +1 -1
  269. package/build-module/missing/edit.js +22 -8
  270. package/build-module/missing/edit.js.map +1 -1
  271. package/build-module/missing/edit.native.js +8 -6
  272. package/build-module/missing/edit.native.js.map +1 -1
  273. package/build-module/navigation/constants.js +8 -3
  274. package/build-module/navigation/constants.js.map +1 -1
  275. package/build-module/navigation/edit/index.js +18 -4
  276. package/build-module/navigation/edit/index.js.map +1 -1
  277. package/build-module/navigation/edit/inner-blocks.js +2 -2
  278. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  279. package/build-module/navigation/edit/menu-inspector-controls.js +0 -1
  280. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  281. package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
  282. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  283. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
  284. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  285. package/build-module/navigation/use-navigation-menu.js +35 -47
  286. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  287. package/build-module/navigation/view-interactivity.js +182 -0
  288. package/build-module/navigation/view-interactivity.js.map +1 -0
  289. package/build-module/navigation-link/edit.js +13 -19
  290. package/build-module/navigation-link/edit.js.map +1 -1
  291. package/build-module/navigation-link/link-ui.js +13 -3
  292. package/build-module/navigation-link/link-ui.js.map +1 -1
  293. package/build-module/navigation-submenu/edit.js +2 -2
  294. package/build-module/navigation-submenu/edit.js.map +1 -1
  295. package/build-module/page-list/convert-to-links-modal.js +3 -3
  296. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  297. package/build-module/page-list/edit.js +34 -39
  298. package/build-module/page-list/edit.js.map +1 -1
  299. package/build-module/page-list/use-convert-to-navigation-links.js +3 -16
  300. package/build-module/page-list/use-convert-to-navigation-links.js.map +1 -1
  301. package/build-module/paragraph/index.js +1 -0
  302. package/build-module/paragraph/index.js.map +1 -1
  303. package/build-module/paragraph/transforms.js +1 -0
  304. package/build-module/paragraph/transforms.js.map +1 -1
  305. package/build-module/post-comments-form/index.js +1 -0
  306. package/build-module/post-comments-form/index.js.map +1 -1
  307. package/build-module/post-navigation-link/index.js +1 -0
  308. package/build-module/post-navigation-link/index.js.map +1 -1
  309. package/build-module/post-time-to-read/index.js +5 -1
  310. package/build-module/post-time-to-read/index.js.map +1 -1
  311. package/build-module/query-pagination/edit.js +1 -1
  312. package/build-module/query-pagination/edit.js.map +1 -1
  313. package/build-module/query-pagination-numbers/index.js +1 -1
  314. package/build-module/query-title/edit.js +44 -3
  315. package/build-module/query-title/edit.js.map +1 -1
  316. package/build-module/quote/index.js +1 -0
  317. package/build-module/quote/index.js.map +1 -1
  318. package/build-module/quote/transforms.js +8 -0
  319. package/build-module/quote/transforms.js.map +1 -1
  320. package/build-module/rss/edit.js +3 -0
  321. package/build-module/rss/edit.js.map +1 -1
  322. package/build-module/search/edit.js +4 -3
  323. package/build-module/search/edit.js.map +1 -1
  324. package/build-module/search/index.js +1 -0
  325. package/build-module/search/index.js.map +1 -1
  326. package/build-module/site-logo/edit.js +1 -0
  327. package/build-module/site-logo/edit.js.map +1 -1
  328. package/build-module/site-logo/index.js +5 -1
  329. package/build-module/site-logo/index.js.map +1 -1
  330. package/build-module/site-tagline/icon.js +1 -1
  331. package/build-module/site-tagline/icon.js.map +1 -1
  332. package/build-module/site-tagline/index.js +5 -1
  333. package/build-module/site-tagline/index.js.map +1 -1
  334. package/build-module/site-title/index.js +5 -1
  335. package/build-module/site-title/index.js.map +1 -1
  336. package/build-module/social-links/index.js +3 -1
  337. package/build-module/social-links/index.js.map +1 -1
  338. package/build-module/table/index.js +5 -1
  339. package/build-module/table/index.js.map +1 -1
  340. package/build-module/tag-cloud/edit.js +1 -0
  341. package/build-module/tag-cloud/edit.js.map +1 -1
  342. package/build-module/template-part/edit/index.js +1 -1
  343. package/build-module/template-part/edit/index.js.map +1 -1
  344. package/build-module/term-description/index.js +1 -0
  345. package/build-module/term-description/index.js.map +1 -1
  346. package/build-module/text-columns/edit.js +1 -0
  347. package/build-module/text-columns/edit.js.map +1 -1
  348. package/build-module/verse/index.js +5 -1
  349. package/build-module/verse/index.js.map +1 -1
  350. package/build-module/video/deprecated.js +5 -1
  351. package/build-module/video/deprecated.js.map +1 -1
  352. package/build-module/video/index.js +5 -1
  353. package/build-module/video/index.js.map +1 -1
  354. package/build-style/details/style-rtl.css +4 -2
  355. package/build-style/details/style.css +4 -2
  356. package/build-style/footnotes/style-rtl.css +4 -3
  357. package/build-style/footnotes/style.css +4 -3
  358. package/build-style/image/style-rtl.css +16 -2
  359. package/build-style/image/style.css +16 -2
  360. package/build-style/navigation/style-rtl.css +14 -2
  361. package/build-style/navigation/style.css +14 -2
  362. package/build-style/query-pagination/style-rtl.css +4 -2
  363. package/build-style/query-pagination/style.css +4 -2
  364. package/build-style/style-rtl.css +42 -11
  365. package/build-style/style.css +42 -11
  366. package/package.json +33 -37
  367. package/src/archives/block.json +5 -1
  368. package/src/audio/block.json +5 -1
  369. package/src/audio/test/__snapshots__/edit.native.js.snap +58 -33
  370. package/src/avatar/block.json +1 -1
  371. package/src/avatar/edit.js +1 -0
  372. package/src/block/block.json +2 -1
  373. package/src/block/edit.js +2 -2
  374. package/src/block/edit.native.js +8 -12
  375. package/src/block/editor.native.scss +2 -2
  376. package/src/block/test/edit.native.js +4 -4
  377. package/src/buttons/edit.js +4 -4
  378. package/src/categories/block.json +5 -1
  379. package/src/code/block.json +5 -1
  380. package/src/column/block.json +1 -0
  381. package/src/column/edit.native.js +4 -10
  382. package/src/column/editor.native.scss +0 -4
  383. package/src/columns/edit.js +1 -0
  384. package/src/comment-author-avatar/edit.js +1 -0
  385. package/src/comment-template/index.php +5 -2
  386. package/src/comments/block.json +1 -0
  387. package/src/cover/block.json +1 -0
  388. package/src/cover/deprecated.js +2 -0
  389. package/src/cover/edit/inspector-controls.js +1 -0
  390. package/src/details/block.json +5 -1
  391. package/src/embed/embed-placeholder.native.js +80 -47
  392. package/src/embed/styles.native.scss +54 -18
  393. package/src/embed/test/index.native.js +5 -5
  394. package/src/embed/util.js +4 -6
  395. package/src/file/index.php +4 -3
  396. package/src/file/inspector.js +1 -0
  397. package/src/file/test/__snapshots__/edit.native.js.snap +58 -33
  398. package/src/file/{interactivity.js → view-interactivity.js} +4 -1
  399. package/src/footnotes/block.json +0 -1
  400. package/src/footnotes/edit.js +21 -2
  401. package/src/footnotes/format.js +22 -20
  402. package/src/footnotes/index.php +11 -9
  403. package/src/footnotes/style.scss +6 -3
  404. package/src/gallery/block.json +3 -1
  405. package/src/gallery/edit.js +1 -1
  406. package/src/gallery/test/index.native.js +17 -16
  407. package/src/group/block.json +1 -0
  408. package/src/heading/block.json +5 -1
  409. package/src/heading/test/index.native.js +18 -0
  410. package/src/home-link/index.php +15 -2
  411. package/src/image/block.json +6 -0
  412. package/src/image/deprecated.js +597 -320
  413. package/src/image/edit.js +0 -4
  414. package/src/image/image.js +131 -62
  415. package/src/image/index.php +47 -8
  416. package/src/image/save.js +9 -1
  417. package/src/image/style.scss +15 -2
  418. package/src/image/test/edit.native.js +1 -1
  419. package/src/image/utils.js +16 -0
  420. package/src/image/{interactivity.js → view-interactivity.js} +99 -50
  421. package/src/index.js +18 -1
  422. package/src/latest-comments/edit.js +1 -0
  423. package/src/latest-posts/edit.js +2 -0
  424. package/src/latest-posts/index.php +1 -1
  425. package/src/list/block.json +5 -1
  426. package/src/list/edit.js +6 -4
  427. package/src/list/test/edit.native.js +129 -33
  428. package/src/media-text/block.json +1 -0
  429. package/src/media-text/media-container.native.js +1 -0
  430. package/src/missing/edit.js +31 -11
  431. package/src/missing/edit.native.js +12 -10
  432. package/src/missing/style.native.scss +19 -12
  433. package/src/missing/test/__snapshots__/edit.native.js.snap +21 -13
  434. package/src/navigation/constants.js +12 -6
  435. package/src/navigation/edit/index.js +30 -3
  436. package/src/navigation/edit/inner-blocks.js +2 -2
  437. package/src/navigation/edit/menu-inspector-controls.js +0 -1
  438. package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
  439. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
  440. package/src/navigation/index.php +43 -16
  441. package/src/navigation/style.scss +27 -8
  442. package/src/navigation/use-navigation-menu.js +39 -63
  443. package/src/navigation/view-interactivity.js +196 -0
  444. package/src/navigation-link/edit.js +61 -61
  445. package/src/navigation-link/link-ui.js +14 -2
  446. package/src/navigation-submenu/edit.js +2 -2
  447. package/src/navigation-submenu/index.php +2 -12
  448. package/src/page-list/convert-to-links-modal.js +3 -3
  449. package/src/page-list/edit.js +65 -62
  450. package/src/page-list/use-convert-to-navigation-links.js +3 -20
  451. package/src/paragraph/block.json +1 -0
  452. package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
  453. package/src/paragraph/test/edit.native.js +26 -0
  454. package/src/post-comments-form/block.json +1 -0
  455. package/src/post-navigation-link/block.json +1 -0
  456. package/src/post-template/index.php +4 -2
  457. package/src/post-time-to-read/block.json +5 -1
  458. package/src/post-title/index.php +6 -3
  459. package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
  460. package/src/query-pagination/edit.js +17 -14
  461. package/src/query-pagination-numbers/block.json +1 -1
  462. package/src/query-title/edit.js +48 -6
  463. package/src/quote/block.json +1 -0
  464. package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
  465. package/src/quote/test/transforms.native.js +5 -1
  466. package/src/quote/transforms.js +13 -0
  467. package/src/rss/edit.js +3 -0
  468. package/src/search/block.json +1 -0
  469. package/src/search/edit.js +4 -3
  470. package/src/search/index.php +22 -4
  471. package/src/search/test/__snapshots__/edit.native.js.snap +7 -0
  472. package/src/site-logo/block.json +5 -1
  473. package/src/site-logo/edit.js +1 -0
  474. package/src/site-tagline/block.json +5 -1
  475. package/src/site-tagline/icon.js +1 -1
  476. package/src/site-title/block.json +5 -1
  477. package/src/social-links/block.json +3 -1
  478. package/src/table/block.json +5 -1
  479. package/src/tag-cloud/edit.js +1 -0
  480. package/src/template-part/edit/index.js +1 -1
  481. package/src/template-part/index.php +9 -15
  482. package/src/term-description/block.json +1 -0
  483. package/src/text-columns/edit.js +1 -0
  484. package/src/verse/block.json +5 -1
  485. package/src/video/block.json +5 -1
  486. package/build/file/interactivity.js.map +0 -1
  487. package/build/gallery/shared-icon.native.js +0 -38
  488. package/build/gallery/shared-icon.native.js.map +0 -1
  489. package/build/heading/heading-level-icon.js +0 -61
  490. package/build/heading/heading-level-icon.js.map +0 -1
  491. package/build/image/interactivity.js.map +0 -1
  492. package/build/navigation/interactivity.js +0 -167
  493. package/build/navigation/interactivity.js.map +0 -1
  494. package/build/utils/interactivity/constants.js +0 -9
  495. package/build/utils/interactivity/constants.js.map +0 -1
  496. package/build/utils/interactivity/directives.js +0 -222
  497. package/build/utils/interactivity/directives.js.map +0 -1
  498. package/build/utils/interactivity/hooks.js +0 -159
  499. package/build/utils/interactivity/hooks.js.map +0 -1
  500. package/build/utils/interactivity/hydration.js +0 -34
  501. package/build/utils/interactivity/hydration.js.map +0 -1
  502. package/build/utils/interactivity/index.js +0 -32
  503. package/build/utils/interactivity/index.js.map +0 -1
  504. package/build/utils/interactivity/portals.js +0 -108
  505. package/build/utils/interactivity/portals.js.map +0 -1
  506. package/build/utils/interactivity/store.js +0 -66
  507. package/build/utils/interactivity/store.js.map +0 -1
  508. package/build/utils/interactivity/utils.js +0 -87
  509. package/build/utils/interactivity/utils.js.map +0 -1
  510. package/build/utils/interactivity/vdom.js +0 -119
  511. package/build/utils/interactivity/vdom.js.map +0 -1
  512. package/build-module/file/interactivity.js.map +0 -1
  513. package/build-module/gallery/shared-icon.native.js +0 -24
  514. package/build-module/gallery/shared-icon.native.js.map +0 -1
  515. package/build-module/heading/heading-level-icon.js +0 -53
  516. package/build-module/heading/heading-level-icon.js.map +0 -1
  517. package/build-module/image/interactivity.js.map +0 -1
  518. package/build-module/navigation/interactivity.js +0 -164
  519. package/build-module/navigation/interactivity.js.map +0 -1
  520. package/build-module/utils/interactivity/constants.js +0 -2
  521. package/build-module/utils/interactivity/constants.js.map +0 -1
  522. package/build-module/utils/interactivity/directives.js +0 -209
  523. package/build-module/utils/interactivity/directives.js.map +0 -1
  524. package/build-module/utils/interactivity/hooks.js +0 -145
  525. package/build-module/utils/interactivity/hooks.js.map +0 -1
  526. package/build-module/utils/interactivity/hydration.js +0 -21
  527. package/build-module/utils/interactivity/hydration.js.map +0 -1
  528. package/build-module/utils/interactivity/index.js +0 -15
  529. package/build-module/utils/interactivity/index.js.map +0 -1
  530. package/build-module/utils/interactivity/portals.js +0 -100
  531. package/build-module/utils/interactivity/portals.js.map +0 -1
  532. package/build-module/utils/interactivity/store.js +0 -55
  533. package/build-module/utils/interactivity/store.js.map +0 -1
  534. package/build-module/utils/interactivity/utils.js +0 -75
  535. package/build-module/utils/interactivity/utils.js.map +0 -1
  536. package/build-module/utils/interactivity/vdom.js +0 -107
  537. package/build-module/utils/interactivity/vdom.js.map +0 -1
  538. package/src/gallery/shared-icon.native.js +0 -23
  539. package/src/heading/heading-level-icon.js +0 -48
  540. package/src/navigation/interactivity.js +0 -169
  541. package/src/utils/interactivity/constants.js +0 -1
  542. package/src/utils/interactivity/directives.js +0 -200
  543. package/src/utils/interactivity/hooks.js +0 -145
  544. package/src/utils/interactivity/hydration.js +0 -22
  545. package/src/utils/interactivity/index.js +0 -15
  546. package/src/utils/interactivity/portals.js +0 -98
  547. package/src/utils/interactivity/store.js +0 -45
  548. package/src/utils/interactivity/utils.js +0 -66
  549. package/src/utils/interactivity/vdom.js +0 -111
@@ -8,7 +8,7 @@ import { Popover, Button } from '@wordpress/components';
8
8
  import { __, sprintf } from '@wordpress/i18n';
9
9
  import { __experimentalLinkControl as LinkControl, BlockIcon, store as blockEditorStore } from '@wordpress/block-editor';
10
10
  import { createInterpolateElement, useMemo } from '@wordpress/element';
11
- import { store as coreStore } from '@wordpress/core-data';
11
+ import { store as coreStore, useResourcePermissions } from '@wordpress/core-data';
12
12
  import { decodeEntities } from '@wordpress/html-entities';
13
13
  import { switchToBlockType } from '@wordpress/blocks';
14
14
  import { useSelect, useDispatch } from '@wordpress/data';
@@ -126,6 +126,8 @@ export function LinkUI(props) {
126
126
  const {
127
127
  saveEntityRecord
128
128
  } = useDispatch(coreStore);
129
+ const pagesPermissions = useResourcePermissions('pages');
130
+ const postsPermissions = useResourcePermissions('posts');
129
131
 
130
132
  async function handleCreate(pageTitle) {
131
133
  const postType = props.link.type || 'page';
@@ -158,9 +160,17 @@ export function LinkUI(props) {
158
160
  opensInNewTab,
159
161
  type,
160
162
  kind
161
- } = props.link; // Memoize link value to avoid overriding the LinkControl's internal state.
163
+ } = props.link;
164
+ let userCanCreate = false;
165
+
166
+ if (!type || type === 'page') {
167
+ userCanCreate = pagesPermissions.canCreate;
168
+ } else if (type === 'post') {
169
+ userCanCreate = postsPermissions.canCreate;
170
+ } // Memoize link value to avoid overriding the LinkControl's internal state.
162
171
  // This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/50976#issuecomment-1568226407.
163
172
 
173
+
164
174
  const link = useMemo(() => ({
165
175
  url,
166
176
  opensInNewTab,
@@ -177,7 +187,7 @@ export function LinkUI(props) {
177
187
  className: props.className,
178
188
  value: link,
179
189
  showInitialSuggestions: true,
180
- withCreateSuggestion: props.hasCreateSuggestion,
190
+ withCreateSuggestion: userCanCreate,
181
191
  createSuggestion: handleCreate,
182
192
  createSuggestionButtonText: searchTerm => {
183
193
  let format;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation-link/link-ui.js"],"names":["__unstableStripHTML","stripHTML","Popover","Button","__","sprintf","__experimentalLinkControl","LinkControl","BlockIcon","store","blockEditorStore","createInterpolateElement","useMemo","coreStore","decodeEntities","switchToBlockType","useSelect","useDispatch","getSuggestionsQuery","type","kind","subtype","LinkControlTransforms","clientId","getBlock","blockTransforms","select","_getBlock","getBlockRootClientId","getBlockTransformItems","replaceBlock","featuredBlocks","transforms","filter","item","includes","name","length","map","index","icon","title","LinkUI","props","saveEntityRecord","handleCreate","pageTitle","postType","link","page","status","id","rendered","url","label","opensInNewTab","onClose","anchor","className","hasCreateSuggestion","searchTerm","format","mark","onChange","onRemove","onCancel"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { Popover, Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tBlockIcon,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { createInterpolateElement, useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { switchToBlockType } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Given the Link block's type attribute, return the query params to give to\n * /wp/v2/search.\n *\n * @param {string} type Link block's type attribute.\n * @param {string} kind Link block's entity of kind (post-type|taxonomy)\n * @return {{ type?: string, subtype?: string }} Search query params.\n */\nexport function getSuggestionsQuery( type, kind ) {\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\tcase 'page':\n\t\t\treturn { type: 'post', subtype: type };\n\t\tcase 'category':\n\t\t\treturn { type: 'term', subtype: 'category' };\n\t\tcase 'tag':\n\t\t\treturn { type: 'term', subtype: 'post_tag' };\n\t\tcase 'post_format':\n\t\t\treturn { type: 'post-format' };\n\t\tdefault:\n\t\t\tif ( kind === 'taxonomy' ) {\n\t\t\t\treturn { type: 'term', subtype: type };\n\t\t\t}\n\t\t\tif ( kind === 'post-type' ) {\n\t\t\t\treturn { type: 'post', subtype: type };\n\t\t\t}\n\t\t\treturn {};\n\t}\n}\n\n/**\n * Add transforms to Link Control\n *\n * @param {Object} props Component props.\n * @param {string} props.clientId Block client ID.\n */\nfunction LinkControlTransforms( { clientId } ) {\n\tconst { getBlock, blockTransforms } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tblockTransforms: getBlockTransformItems(\n\t\t\t\t\t_getBlock( clientId ),\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\n\tconst featuredBlocks = [\n\t\t'core/page-list',\n\t\t'core/site-logo',\n\t\t'core/social-links',\n\t\t'core/search',\n\t];\n\n\tconst transforms = blockTransforms.filter( ( item ) => {\n\t\treturn featuredBlocks.includes( item.name );\n\t} );\n\n\tif ( ! transforms?.length ) {\n\t\treturn null;\n\t}\n\n\tif ( ! clientId ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"link-control-transform\">\n\t\t\t<h3 className=\"link-control-transform__subheading\">\n\t\t\t\t{ __( 'Transform' ) }\n\t\t\t</h3>\n\t\t\t<div className=\"link-control-transform__items\">\n\t\t\t\t{ transforms.map( ( item, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ `transform-${ index }` }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\treplaceBlock(\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\tswitchToBlockType(\n\t\t\t\t\t\t\t\t\t\tgetBlock( clientId ),\n\t\t\t\t\t\t\t\t\t\titem.name\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"link-control-transform__item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } />\n\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport function LinkUI( props ) {\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst postType = props.link.type || 'page';\n\n\t\tconst page = await saveEntityRecord( 'postType', postType, {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: postType,\n\t\t\t// Make `title` property consistent with that in `fetchLinkSuggestions` where the `rendered` title (containing HTML entities)\n\t\t\t// is also being decoded. By being consistent in both locations we avoid having to branch in the rendering output code.\n\t\t\t// Ideally in the future we will update both APIs to utilise the \"raw\" form of the title which is better suited to edit contexts.\n\t\t\t// e.g.\n\t\t\t// - title.raw = \"Yes & No\"\n\t\t\t// - title.rendered = \"Yes &#038; No\"\n\t\t\t// - decodeEntities( title.rendered ) = \"Yes & No\"\n\t\t\t// See:\n\t\t\t// - https://github.com/WordPress/gutenberg/pull/41063\n\t\t\t// - https://github.com/WordPress/gutenberg/blob/a1e1fdc0e6278457e9f4fc0b31ac6d2095f5450b/packages/core-data/src/fetch/__experimental-fetch-link-suggestions.js#L212-L218\n\t\t\ttitle: decodeEntities( page.title.rendered ),\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\n\t}\n\n\tconst { label, url, opensInNewTab, type, kind } = props.link;\n\n\t// Memoize link value to avoid overriding the LinkControl's internal state.\n\t// This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/50976#issuecomment-1568226407.\n\tconst link = useMemo(\n\t\t() => ( {\n\t\t\turl,\n\t\t\topensInNewTab,\n\t\t\ttitle: label && stripHTML( label ),\n\t\t} ),\n\t\t[ label, opensInNewTab, url ]\n\t);\n\n\treturn (\n\t\t<Popover\n\t\t\tplacement=\"bottom\"\n\t\t\tonClose={ props.onClose }\n\t\t\tanchor={ props.anchor }\n\t\t\tshift\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\thasTextControl\n\t\t\t\thasRichPreviews\n\t\t\t\tclassName={ props.className }\n\t\t\t\tvalue={ link }\n\t\t\t\tshowInitialSuggestions={ true }\n\t\t\t\twithCreateSuggestion={ props.hasCreateSuggestion }\n\t\t\t\tcreateSuggestion={ handleCreate }\n\t\t\t\tcreateSuggestionButtonText={ ( searchTerm ) => {\n\t\t\t\t\tlet format;\n\n\t\t\t\t\tif ( type === 'post' ) {\n\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\tformat = __( 'Create draft post: <mark>%s</mark>' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\tformat = __( 'Create draft page: <mark>%s</mark>' );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\tsprintf( format, searchTerm ),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmark: <mark />,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\tnoDirectEntry={ !! type }\n\t\t\t\tnoURLSuggestion={ !! type }\n\t\t\t\tsuggestionsQuery={ getSuggestionsQuery( type, kind ) }\n\t\t\t\tonChange={ props.onChange }\n\t\t\t\tonRemove={ props.onRemove }\n\t\t\t\tonCancel={ props.onCancel }\n\t\t\t\trenderControlBottom={\n\t\t\t\t\t! url\n\t\t\t\t\t\t? () => (\n\t\t\t\t\t\t\t\t<LinkControlTransforms\n\t\t\t\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: null\n\t\t\t\t}\n\t\t\t/>\n\t\t</Popover>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation-link/link-ui.js"],"names":["__unstableStripHTML","stripHTML","Popover","Button","__","sprintf","__experimentalLinkControl","LinkControl","BlockIcon","store","blockEditorStore","createInterpolateElement","useMemo","coreStore","useResourcePermissions","decodeEntities","switchToBlockType","useSelect","useDispatch","getSuggestionsQuery","type","kind","subtype","LinkControlTransforms","clientId","getBlock","blockTransforms","select","_getBlock","getBlockRootClientId","getBlockTransformItems","replaceBlock","featuredBlocks","transforms","filter","item","includes","name","length","map","index","icon","title","LinkUI","props","saveEntityRecord","pagesPermissions","postsPermissions","handleCreate","pageTitle","postType","link","page","status","id","rendered","url","label","opensInNewTab","userCanCreate","canCreate","onClose","anchor","className","searchTerm","format","mark","onChange","onRemove","onCancel"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { Popover, Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tBlockIcon,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { createInterpolateElement, useMemo } from '@wordpress/element';\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n} from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { switchToBlockType } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Given the Link block's type attribute, return the query params to give to\n * /wp/v2/search.\n *\n * @param {string} type Link block's type attribute.\n * @param {string} kind Link block's entity of kind (post-type|taxonomy)\n * @return {{ type?: string, subtype?: string }} Search query params.\n */\nexport function getSuggestionsQuery( type, kind ) {\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\tcase 'page':\n\t\t\treturn { type: 'post', subtype: type };\n\t\tcase 'category':\n\t\t\treturn { type: 'term', subtype: 'category' };\n\t\tcase 'tag':\n\t\t\treturn { type: 'term', subtype: 'post_tag' };\n\t\tcase 'post_format':\n\t\t\treturn { type: 'post-format' };\n\t\tdefault:\n\t\t\tif ( kind === 'taxonomy' ) {\n\t\t\t\treturn { type: 'term', subtype: type };\n\t\t\t}\n\t\t\tif ( kind === 'post-type' ) {\n\t\t\t\treturn { type: 'post', subtype: type };\n\t\t\t}\n\t\t\treturn {};\n\t}\n}\n\n/**\n * Add transforms to Link Control\n *\n * @param {Object} props Component props.\n * @param {string} props.clientId Block client ID.\n */\nfunction LinkControlTransforms( { clientId } ) {\n\tconst { getBlock, blockTransforms } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tblockTransforms: getBlockTransformItems(\n\t\t\t\t\t_getBlock( clientId ),\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\n\tconst featuredBlocks = [\n\t\t'core/page-list',\n\t\t'core/site-logo',\n\t\t'core/social-links',\n\t\t'core/search',\n\t];\n\n\tconst transforms = blockTransforms.filter( ( item ) => {\n\t\treturn featuredBlocks.includes( item.name );\n\t} );\n\n\tif ( ! transforms?.length ) {\n\t\treturn null;\n\t}\n\n\tif ( ! clientId ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"link-control-transform\">\n\t\t\t<h3 className=\"link-control-transform__subheading\">\n\t\t\t\t{ __( 'Transform' ) }\n\t\t\t</h3>\n\t\t\t<div className=\"link-control-transform__items\">\n\t\t\t\t{ transforms.map( ( item, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ `transform-${ index }` }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\treplaceBlock(\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\tswitchToBlockType(\n\t\t\t\t\t\t\t\t\t\tgetBlock( clientId ),\n\t\t\t\t\t\t\t\t\t\titem.name\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"link-control-transform__item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } />\n\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport function LinkUI( props ) {\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst postType = props.link.type || 'page';\n\n\t\tconst page = await saveEntityRecord( 'postType', postType, {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: postType,\n\t\t\t// Make `title` property consistent with that in `fetchLinkSuggestions` where the `rendered` title (containing HTML entities)\n\t\t\t// is also being decoded. By being consistent in both locations we avoid having to branch in the rendering output code.\n\t\t\t// Ideally in the future we will update both APIs to utilise the \"raw\" form of the title which is better suited to edit contexts.\n\t\t\t// e.g.\n\t\t\t// - title.raw = \"Yes & No\"\n\t\t\t// - title.rendered = \"Yes &#038; No\"\n\t\t\t// - decodeEntities( title.rendered ) = \"Yes & No\"\n\t\t\t// See:\n\t\t\t// - https://github.com/WordPress/gutenberg/pull/41063\n\t\t\t// - https://github.com/WordPress/gutenberg/blob/a1e1fdc0e6278457e9f4fc0b31ac6d2095f5450b/packages/core-data/src/fetch/__experimental-fetch-link-suggestions.js#L212-L218\n\t\t\ttitle: decodeEntities( page.title.rendered ),\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\n\t}\n\n\tconst { label, url, opensInNewTab, type, kind } = props.link;\n\n\tlet userCanCreate = false;\n\tif ( ! type || type === 'page' ) {\n\t\tuserCanCreate = pagesPermissions.canCreate;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = postsPermissions.canCreate;\n\t}\n\n\t// Memoize link value to avoid overriding the LinkControl's internal state.\n\t// This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/50976#issuecomment-1568226407.\n\tconst link = useMemo(\n\t\t() => ( {\n\t\t\turl,\n\t\t\topensInNewTab,\n\t\t\ttitle: label && stripHTML( label ),\n\t\t} ),\n\t\t[ label, opensInNewTab, url ]\n\t);\n\n\treturn (\n\t\t<Popover\n\t\t\tplacement=\"bottom\"\n\t\t\tonClose={ props.onClose }\n\t\t\tanchor={ props.anchor }\n\t\t\tshift\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\thasTextControl\n\t\t\t\thasRichPreviews\n\t\t\t\tclassName={ props.className }\n\t\t\t\tvalue={ link }\n\t\t\t\tshowInitialSuggestions={ true }\n\t\t\t\twithCreateSuggestion={ userCanCreate }\n\t\t\t\tcreateSuggestion={ handleCreate }\n\t\t\t\tcreateSuggestionButtonText={ ( searchTerm ) => {\n\t\t\t\t\tlet format;\n\n\t\t\t\t\tif ( type === 'post' ) {\n\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\tformat = __( 'Create draft post: <mark>%s</mark>' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\tformat = __( 'Create draft page: <mark>%s</mark>' );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\tsprintf( format, searchTerm ),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmark: <mark />,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\tnoDirectEntry={ !! type }\n\t\t\t\tnoURLSuggestion={ !! type }\n\t\t\t\tsuggestionsQuery={ getSuggestionsQuery( type, kind ) }\n\t\t\t\tonChange={ props.onChange }\n\t\t\t\tonRemove={ props.onRemove }\n\t\t\t\tonCancel={ props.onCancel }\n\t\t\t\trenderControlBottom={\n\t\t\t\t\t! url\n\t\t\t\t\t\t? () => (\n\t\t\t\t\t\t\t\t<LinkControlTransforms\n\t\t\t\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: null\n\t\t\t\t}\n\t\t\t/>\n\t\t</Popover>\n\t);\n}\n"]}
@@ -332,8 +332,8 @@ export default function NavigationSubmenuEdit({
332
332
  const navigationChildBlockProps = getNavigationChildBlockProps(innerBlocksColors);
333
333
  const innerBlocksProps = useInnerBlocksProps(navigationChildBlockProps, {
334
334
  allowedBlocks,
335
- __experimentalDefaultBlock: DEFAULT_BLOCK,
336
- __experimentalDirectInsert: true,
335
+ defaultBlock: DEFAULT_BLOCK,
336
+ directInsert: true,
337
337
  // Ensure block toolbar is not too far removed from item
338
338
  // being edited.
339
339
  // see: https://github.com/WordPress/gutenberg/pull/34615.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation-submenu/edit.js"],"names":["classnames","useSelect","useDispatch","PanelBody","TextControl","TextareaControl","ToolbarButton","ToolbarGroup","displayShortcut","isKeyboardEvent","__","BlockControls","InnerBlocks","useInnerBlocksProps","InspectorControls","RichText","useBlockProps","store","blockEditorStore","getColorClassName","isURL","prependHTTP","useState","useEffect","useRef","placeCaretAtHorizontalEdge","link","linkIcon","removeSubmenu","useResourcePermissions","speak","createBlock","useMergeRefs","usePrevious","ItemSubmenuIcon","LinkUI","updateAttributes","getColors","getNavigationChildBlockProps","ALLOWED_BLOCKS","DEFAULT_BLOCK","name","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","NavigationSubmenuEdit","attributes","isSelected","setAttributes","mergeBlocks","onReplace","context","clientId","label","type","url","description","rel","title","showSubmenuIcon","maxNestingLevel","openSubmenusOnClick","__unstableMarkNextChangeAsNotPersistent","replaceBlock","isLinkOpen","setIsLinkOpen","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","pagesPermissions","postsPermissions","isAtMaxNesting","isTopLevelItem","isParentOfSelectedBlock","isImmediateParentOfSelectedBlock","hasChildren","selectedBlockHasChildren","onlyDescendantIsEmptyLink","select","hasSelectedInnerBlock","getSelectedBlockClientId","getBlockParentsByBlockName","getBlock","getBlockCount","getBlockOrder","_onlyDescendantIsEmptyLink","selectedBlockId","selectedBlockChildren","length","singleBlock","prevHasChildren","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","userCanCreate","canCreate","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","primary","blockProps","className","style","color","innerBlocksColors","allowedBlocks","filter","blockName","navigationChildBlockProps","innerBlocksProps","__experimentalDefaultBlock","__experimentalDirectInsert","__experimentalCaptureToolbars","renderAppender","ButtonBlockAppender","ParentElement","transformToLink","newLinkBlock","canConvertToLink","labelValue","urlValue","descriptionValue","titleValue","relValue","updatedValue"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { placeCaretAtHorizontalEdge } from '@wordpress/dom';\nimport { link as linkIcon, removeSubmenu } from '@wordpress/icons';\nimport { useResourcePermissions } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs, usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ItemSubmenuIcon } from './icons';\nimport { name } from './block.json';\nimport { LinkUI } from '../navigation-link/link-ui';\nimport { updateAttributes } from '../navigation-link/update-attributes';\nimport {\n\tgetColors,\n\tgetNavigationChildBlockProps,\n} from '../navigation/edit/utils';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n\t'core/page-list',\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string} [label] Link text.\n * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string} [type] The type such as post, page, tag, category and other custom types.\n * @property {string} [rel] The relationship of the linked URL.\n * @property {number} [id] A post or term id.\n * @property {boolean} [opensInNewTab] Sets link target to _blank when true.\n * @property {string} [url] Link href.\n * @property {string} [title] Link title attribute.\n */\n\nexport default function NavigationSubmenuEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { label, type, url, description, rel, title } = attributes;\n\n\tconst { showSubmenuIcon, maxNestingLevel, openSubmenusOnClick } = context;\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, replaceBlock } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add text…' );\n\tconst ref = useRef();\n\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tconst {\n\t\tisAtMaxNesting,\n\t\tisTopLevelItem,\n\t\tisParentOfSelectedBlock,\n\t\tisImmediateParentOfSelectedBlock,\n\t\thasChildren,\n\t\tselectedBlockHasChildren,\n\t\tonlyDescendantIsEmptyLink,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tlet _onlyDescendantIsEmptyLink;\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst selectedBlockChildren = getBlockOrder( selectedBlockId );\n\n\t\t\t// Check for a single descendant in the submenu. If that block\n\t\t\t// is a link block in a \"placeholder\" state with no label then\n\t\t\t// we can consider as an \"empty\" link.\n\t\t\tif ( selectedBlockChildren?.length === 1 ) {\n\t\t\t\tconst singleBlock = getBlock( selectedBlockChildren[ 0 ] );\n\n\t\t\t\t_onlyDescendantIsEmptyLink =\n\t\t\t\t\tsingleBlock?.name === 'core/navigation-link' &&\n\t\t\t\t\t! singleBlock?.attributes?.label;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, name ).length >=\n\t\t\t\t\tmaxNestingLevel,\n\t\t\t\tisTopLevelItem:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, name ).length === 0,\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\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\thasChildren: !! getBlockCount( clientId ),\n\t\t\t\tselectedBlockHasChildren: !! selectedBlockChildren?.length,\n\t\t\t\tonlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst prevHasChildren = usePrevious( hasChildren );\n\n\t// Show the LinkControl on mount if the URL is empty\n\t// ( When adding a new menu item)\n\t// This can't be done in the useState call because it conflicts\n\t// with the autofocus behavior of the BlockListBlock component.\n\tuseEffect( () => {\n\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t} else {\n\t\t\t\t// Focus it (but do not select).\n\t\t\t\tplaceCaretAtHorizontalEdge( ref.current, true );\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\tlet userCanCreate = false;\n\tif ( ! type || type === 'page' ) {\n\t\tuserCanCreate = pagesPermissions.canCreate;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = postsPermissions.canCreate;\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, ! isTopLevelItem );\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: classnames( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t\t'open-on-click': openSubmenusOnClick,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\t// Always use overlay colors for submenus.\n\tconst innerBlocksColors = getColors( context, true );\n\n\tconst allowedBlocks = isAtMaxNesting\n\t\t? ALLOWED_BLOCKS.filter(\n\t\t\t\t( blockName ) => blockName !== 'core/navigation-submenu'\n\t\t )\n\t\t: ALLOWED_BLOCKS;\n\n\tconst navigationChildBlockProps =\n\t\tgetNavigationChildBlockProps( innerBlocksColors );\n\tconst innerBlocksProps = useInnerBlocksProps( navigationChildBlockProps, {\n\t\tallowedBlocks,\n\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t__experimentalDirectInsert: true,\n\n\t\t// Ensure block toolbar is not too far removed from item\n\t\t// being edited.\n\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t__experimentalCaptureToolbars: true,\n\n\t\trenderAppender:\n\t\t\tisSelected ||\n\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\thasChildren\n\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t: false,\n\t} );\n\n\tconst ParentElement = openSubmenusOnClick ? 'button' : 'a';\n\n\tfunction transformToLink() {\n\t\tconst newLinkBlock = createBlock( 'core/navigation-link', attributes );\n\t\treplaceBlock( clientId, newLinkBlock );\n\t}\n\n\tuseEffect( () => {\n\t\t// If block becomes empty, transform to Navigation Link.\n\t\tif ( ! hasChildren && prevHasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToLink();\n\t\t}\n\t}, [ hasChildren, prevHasChildren ] );\n\n\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ ! openSubmenusOnClick && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"revert\"\n\t\t\t\t\t\ticon={ removeSubmenu }\n\t\t\t\t\t\ttitle={ __( 'Convert to Link' ) }\n\t\t\t\t\t\tonClick={ transformToLink }\n\t\t\t\t\t\tclassName=\"wp-block-navigation__submenu__revert\"\n\t\t\t\t\t\tisDisabled={ ! canConvertToLink }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ /* Warning, this duplicated in packages/block-library/src/navigation-link/edit.js */ }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ label || '' }\n\t\t\t\t\t\tonChange={ ( labelValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\tonChange={ ( urlValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { url: urlValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'URL' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdescription: descriptionValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Additional information to help clarify the purpose of the link.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Rel attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The relationship of the linked URL as space-separated link types.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<ParentElement className=\"wp-block-navigation-item__content\">\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: labelValue } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\taria-label={ __( 'Navigation link text' ) }\n\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\t{ ! openSubmenusOnClick && isLinkOpen && (\n\t\t\t\t\t\t<LinkUI\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\thasCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { url: '' } );\n\t\t\t\t\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ParentElement>\n\t\t\t\t{ ( showSubmenuIcon || openSubmenusOnClick ) && (\n\t\t\t\t\t<span className=\"wp-block-navigation__submenu-icon\">\n\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation-submenu/edit.js"],"names":["classnames","useSelect","useDispatch","PanelBody","TextControl","TextareaControl","ToolbarButton","ToolbarGroup","displayShortcut","isKeyboardEvent","__","BlockControls","InnerBlocks","useInnerBlocksProps","InspectorControls","RichText","useBlockProps","store","blockEditorStore","getColorClassName","isURL","prependHTTP","useState","useEffect","useRef","placeCaretAtHorizontalEdge","link","linkIcon","removeSubmenu","useResourcePermissions","speak","createBlock","useMergeRefs","usePrevious","ItemSubmenuIcon","LinkUI","updateAttributes","getColors","getNavigationChildBlockProps","ALLOWED_BLOCKS","DEFAULT_BLOCK","name","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","NavigationSubmenuEdit","attributes","isSelected","setAttributes","mergeBlocks","onReplace","context","clientId","label","type","url","description","rel","title","showSubmenuIcon","maxNestingLevel","openSubmenusOnClick","__unstableMarkNextChangeAsNotPersistent","replaceBlock","isLinkOpen","setIsLinkOpen","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","pagesPermissions","postsPermissions","isAtMaxNesting","isTopLevelItem","isParentOfSelectedBlock","isImmediateParentOfSelectedBlock","hasChildren","selectedBlockHasChildren","onlyDescendantIsEmptyLink","select","hasSelectedInnerBlock","getSelectedBlockClientId","getBlockParentsByBlockName","getBlock","getBlockCount","getBlockOrder","_onlyDescendantIsEmptyLink","selectedBlockId","selectedBlockChildren","length","singleBlock","prevHasChildren","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","userCanCreate","canCreate","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","primary","blockProps","className","style","color","innerBlocksColors","allowedBlocks","filter","blockName","navigationChildBlockProps","innerBlocksProps","defaultBlock","directInsert","__experimentalCaptureToolbars","renderAppender","ButtonBlockAppender","ParentElement","transformToLink","newLinkBlock","canConvertToLink","labelValue","urlValue","descriptionValue","titleValue","relValue","updatedValue"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { placeCaretAtHorizontalEdge } from '@wordpress/dom';\nimport { link as linkIcon, removeSubmenu } from '@wordpress/icons';\nimport { useResourcePermissions } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs, usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ItemSubmenuIcon } from './icons';\nimport { name } from './block.json';\nimport { LinkUI } from '../navigation-link/link-ui';\nimport { updateAttributes } from '../navigation-link/update-attributes';\nimport {\n\tgetColors,\n\tgetNavigationChildBlockProps,\n} from '../navigation/edit/utils';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n\t'core/page-list',\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string} [label] Link text.\n * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string} [type] The type such as post, page, tag, category and other custom types.\n * @property {string} [rel] The relationship of the linked URL.\n * @property {number} [id] A post or term id.\n * @property {boolean} [opensInNewTab] Sets link target to _blank when true.\n * @property {string} [url] Link href.\n * @property {string} [title] Link title attribute.\n */\n\nexport default function NavigationSubmenuEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { label, type, url, description, rel, title } = attributes;\n\n\tconst { showSubmenuIcon, maxNestingLevel, openSubmenusOnClick } = context;\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, replaceBlock } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add text…' );\n\tconst ref = useRef();\n\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tconst {\n\t\tisAtMaxNesting,\n\t\tisTopLevelItem,\n\t\tisParentOfSelectedBlock,\n\t\tisImmediateParentOfSelectedBlock,\n\t\thasChildren,\n\t\tselectedBlockHasChildren,\n\t\tonlyDescendantIsEmptyLink,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tlet _onlyDescendantIsEmptyLink;\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst selectedBlockChildren = getBlockOrder( selectedBlockId );\n\n\t\t\t// Check for a single descendant in the submenu. If that block\n\t\t\t// is a link block in a \"placeholder\" state with no label then\n\t\t\t// we can consider as an \"empty\" link.\n\t\t\tif ( selectedBlockChildren?.length === 1 ) {\n\t\t\t\tconst singleBlock = getBlock( selectedBlockChildren[ 0 ] );\n\n\t\t\t\t_onlyDescendantIsEmptyLink =\n\t\t\t\t\tsingleBlock?.name === 'core/navigation-link' &&\n\t\t\t\t\t! singleBlock?.attributes?.label;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, name ).length >=\n\t\t\t\t\tmaxNestingLevel,\n\t\t\t\tisTopLevelItem:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, name ).length === 0,\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\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\thasChildren: !! getBlockCount( clientId ),\n\t\t\t\tselectedBlockHasChildren: !! selectedBlockChildren?.length,\n\t\t\t\tonlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst prevHasChildren = usePrevious( hasChildren );\n\n\t// Show the LinkControl on mount if the URL is empty\n\t// ( When adding a new menu item)\n\t// This can't be done in the useState call because it conflicts\n\t// with the autofocus behavior of the BlockListBlock component.\n\tuseEffect( () => {\n\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t} else {\n\t\t\t\t// Focus it (but do not select).\n\t\t\t\tplaceCaretAtHorizontalEdge( ref.current, true );\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\tlet userCanCreate = false;\n\tif ( ! type || type === 'page' ) {\n\t\tuserCanCreate = pagesPermissions.canCreate;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = postsPermissions.canCreate;\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, ! isTopLevelItem );\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: classnames( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t\t'open-on-click': openSubmenusOnClick,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\t// Always use overlay colors for submenus.\n\tconst innerBlocksColors = getColors( context, true );\n\n\tconst allowedBlocks = isAtMaxNesting\n\t\t? ALLOWED_BLOCKS.filter(\n\t\t\t\t( blockName ) => blockName !== 'core/navigation-submenu'\n\t\t )\n\t\t: ALLOWED_BLOCKS;\n\n\tconst navigationChildBlockProps =\n\t\tgetNavigationChildBlockProps( innerBlocksColors );\n\tconst innerBlocksProps = useInnerBlocksProps( navigationChildBlockProps, {\n\t\tallowedBlocks,\n\t\tdefaultBlock: DEFAULT_BLOCK,\n\t\tdirectInsert: true,\n\n\t\t// Ensure block toolbar is not too far removed from item\n\t\t// being edited.\n\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t__experimentalCaptureToolbars: true,\n\n\t\trenderAppender:\n\t\t\tisSelected ||\n\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\thasChildren\n\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t: false,\n\t} );\n\n\tconst ParentElement = openSubmenusOnClick ? 'button' : 'a';\n\n\tfunction transformToLink() {\n\t\tconst newLinkBlock = createBlock( 'core/navigation-link', attributes );\n\t\treplaceBlock( clientId, newLinkBlock );\n\t}\n\n\tuseEffect( () => {\n\t\t// If block becomes empty, transform to Navigation Link.\n\t\tif ( ! hasChildren && prevHasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToLink();\n\t\t}\n\t}, [ hasChildren, prevHasChildren ] );\n\n\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ ! openSubmenusOnClick && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"revert\"\n\t\t\t\t\t\ticon={ removeSubmenu }\n\t\t\t\t\t\ttitle={ __( 'Convert to Link' ) }\n\t\t\t\t\t\tonClick={ transformToLink }\n\t\t\t\t\t\tclassName=\"wp-block-navigation__submenu__revert\"\n\t\t\t\t\t\tisDisabled={ ! canConvertToLink }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ /* Warning, this duplicated in packages/block-library/src/navigation-link/edit.js */ }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ label || '' }\n\t\t\t\t\t\tonChange={ ( labelValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\tonChange={ ( urlValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { url: urlValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'URL' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdescription: descriptionValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Additional information to help clarify the purpose of the link.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Rel attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The relationship of the linked URL as space-separated link types.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<ParentElement className=\"wp-block-navigation-item__content\">\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: labelValue } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\taria-label={ __( 'Navigation link text' ) }\n\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\t{ ! openSubmenusOnClick && isLinkOpen && (\n\t\t\t\t\t\t<LinkUI\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\thasCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( { url: '' } );\n\t\t\t\t\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ParentElement>\n\t\t\t\t{ ( showSubmenuIcon || openSubmenusOnClick ) && (\n\t\t\t\t\t<span className=\"wp-block-navigation__submenu-icon\">\n\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}
@@ -5,7 +5,7 @@ import { createElement } from "@wordpress/element";
5
5
  */
6
6
  import { Button, Modal } from '@wordpress/components';
7
7
  import { __ } from '@wordpress/i18n';
8
- export const convertDescription = __('This menu is automatically kept in sync with pages on your site. You can manage the menu yourself by clicking "Edit" below.');
8
+ export const convertDescription = __('This page list is synced with the published pages on your site. Detach the page list to add, delete, or reorder pages yourself.');
9
9
  export function ConvertToLinksModal({
10
10
  onClick,
11
11
  onClose,
@@ -13,7 +13,7 @@ export function ConvertToLinksModal({
13
13
  }) {
14
14
  return createElement(Modal, {
15
15
  onRequestClose: onClose,
16
- title: __('Edit this menu'),
16
+ title: __('Edit Page List'),
17
17
  className: 'wp-block-page-list-modal',
18
18
  aria: {
19
19
  describedby: 'wp-block-page-list-modal__description'
@@ -29,6 +29,6 @@ export function ConvertToLinksModal({
29
29
  variant: "primary",
30
30
  disabled: disabled,
31
31
  onClick: onClick
32
- }, __('Edit'))));
32
+ }, __('Detach'))));
33
33
  }
34
34
  //# sourceMappingURL=convert-to-links-modal.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/page-list/convert-to-links-modal.js"],"names":["Button","Modal","__","convertDescription","ConvertToLinksModal","onClick","onClose","disabled","describedby"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,EAAiBC,KAAjB,QAA8B,uBAA9B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA,OAAO,MAAMC,kBAAkB,GAAGD,EAAE,CACnC,6HADmC,CAA7B;AAIP,OAAO,SAASE,mBAAT,CAA8B;AAAEC,EAAAA,OAAF;AAAWC,EAAAA,OAAX;AAAoBC,EAAAA;AAApB,CAA9B,EAA+D;AACrE,SACC,cAAC,KAAD;AACC,IAAA,cAAc,EAAGD,OADlB;AAEC,IAAA,KAAK,EAAGJ,EAAE,CAAE,gBAAF,CAFX;AAGC,IAAA,SAAS,EAAG,0BAHb;AAIC,IAAA,IAAI,EAAG;AACNM,MAAAA,WAAW,EAAE;AADP;AAJR,KAQC;AAAG,IAAA,EAAE,EAAG;AAAR,KACGL,kBADH,CARD,EAWC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC,UAAhB;AAA2B,IAAA,OAAO,EAAGG;AAArC,KACGJ,EAAE,CAAE,QAAF,CADL,CADD,EAIC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,QAAQ,EAAGK,QAFZ;AAGC,IAAA,OAAO,EAAGF;AAHX,KAKGH,EAAE,CAAE,MAAF,CALL,CAJD,CAXD,CADD;AA0BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport const convertDescription = __(\n\t'This menu is automatically kept in sync with pages on your site. You can manage the menu yourself by clicking \"Edit\" below.'\n);\n\nexport function ConvertToLinksModal( { onClick, onClose, disabled } ) {\n\treturn (\n\t\t<Modal\n\t\t\tonRequestClose={ onClose }\n\t\t\ttitle={ __( 'Edit this menu' ) }\n\t\t\tclassName={ 'wp-block-page-list-modal' }\n\t\t\taria={ {\n\t\t\t\tdescribedby: 'wp-block-page-list-modal__description',\n\t\t\t} }\n\t\t>\n\t\t\t<p id={ 'wp-block-page-list-modal__description' }>\n\t\t\t\t{ convertDescription }\n\t\t\t</p>\n\t\t\t<div className=\"wp-block-page-list-modal-buttons\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/page-list/convert-to-links-modal.js"],"names":["Button","Modal","__","convertDescription","ConvertToLinksModal","onClick","onClose","disabled","describedby"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,EAAiBC,KAAjB,QAA8B,uBAA9B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA,OAAO,MAAMC,kBAAkB,GAAGD,EAAE,CACnC,iIADmC,CAA7B;AAIP,OAAO,SAASE,mBAAT,CAA8B;AAAEC,EAAAA,OAAF;AAAWC,EAAAA,OAAX;AAAoBC,EAAAA;AAApB,CAA9B,EAA+D;AACrE,SACC,cAAC,KAAD;AACC,IAAA,cAAc,EAAGD,OADlB;AAEC,IAAA,KAAK,EAAGJ,EAAE,CAAE,gBAAF,CAFX;AAGC,IAAA,SAAS,EAAG,0BAHb;AAIC,IAAA,IAAI,EAAG;AACNM,MAAAA,WAAW,EAAE;AADP;AAJR,KAQC;AAAG,IAAA,EAAE,EAAG;AAAR,KACGL,kBADH,CARD,EAWC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC,UAAhB;AAA2B,IAAA,OAAO,EAAGG;AAArC,KACGJ,EAAE,CAAE,QAAF,CADL,CADD,EAIC,cAAC,MAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,QAAQ,EAAGK,QAFZ;AAGC,IAAA,OAAO,EAAGF;AAHX,KAKGH,EAAE,CAAE,QAAF,CALL,CAJD,CAXD,CADD;AA0BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport const convertDescription = __(\n\t'This page list is synced with the published pages on your site. Detach the page list to add, delete, or reorder pages yourself.'\n);\n\nexport function ConvertToLinksModal( { onClick, onClose, disabled } ) {\n\treturn (\n\t\t<Modal\n\t\t\tonRequestClose={ onClose }\n\t\t\ttitle={ __( 'Edit Page List' ) }\n\t\t\tclassName={ 'wp-block-page-list-modal' }\n\t\t\taria={ {\n\t\t\t\tdescribedby: 'wp-block-page-list-modal__description',\n\t\t\t} }\n\t\t>\n\t\t\t<p id={ 'wp-block-page-list-modal__description' }>\n\t\t\t\t{ convertDescription }\n\t\t\t</p>\n\t\t\t<div className=\"wp-block-page-list-modal-buttons\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n"]}
@@ -138,11 +138,6 @@ export default function PageListEdit({
138
138
  return accumulator;
139
139
  }, new Map());
140
140
  }, [pages]);
141
- const convertToNavigationLinks = useConvertToNavigationLinks({
142
- clientId,
143
- pages,
144
- parentPageID
145
- });
146
141
  const blockProps = useBlockProps({
147
142
  className: classnames('wp-block-page-list', {
148
143
  'has-text-color': !!context.textColor,
@@ -153,8 +148,30 @@ export default function PageListEdit({
153
148
  style: { ...context.style?.color
154
149
  }
155
150
  });
151
+ const pagesTree = useMemo(function makePagesTree(parentId = 0, level = 0) {
152
+ const childPages = pagesByParentId.get(parentId);
153
+
154
+ if (!childPages?.length) {
155
+ return [];
156
+ }
156
157
 
157
- const getBlockList = (parentId = parentPageID) => {
158
+ return childPages.reduce((tree, page) => {
159
+ const hasChildren = pagesByParentId.has(page.id);
160
+ const item = {
161
+ value: page.id,
162
+ label: '— '.repeat(level) + page.title.rendered,
163
+ rawName: page.title.rendered
164
+ };
165
+ tree.push(item);
166
+
167
+ if (hasChildren) {
168
+ tree.push(...makePagesTree(page.id, level + 1));
169
+ }
170
+
171
+ return tree;
172
+ }, []);
173
+ }, [pagesByParentId]);
174
+ const blockList = useMemo(function getBlockList(parentId = parentPageID) {
158
175
  const childPages = pagesByParentId.get(parentId);
159
176
 
160
177
  if (!childPages?.length) {
@@ -177,45 +194,17 @@ export default function PageListEdit({
177
194
  template.push(item);
178
195
  return template;
179
196
  }, []);
180
- };
181
-
182
- const makePagesTree = (parentId = 0, level = 0) => {
183
- const childPages = pagesByParentId.get(parentId);
184
-
185
- if (!childPages?.length) {
186
- return [];
187
- }
188
-
189
- return childPages.reduce((tree, page) => {
190
- const hasChildren = pagesByParentId.has(page.id);
191
- const item = {
192
- value: page.id,
193
- label: '— '.repeat(level) + page.title.rendered,
194
- rawName: page.title.rendered
195
- };
196
- tree.push(item);
197
-
198
- if (hasChildren) {
199
- tree.push(...makePagesTree(page.id, level + 1));
200
- }
201
-
202
- return tree;
203
- }, []);
204
- };
205
-
206
- const pagesTree = useMemo(makePagesTree, [pagesByParentId]);
207
- const blockList = useMemo(getBlockList, [pagesByParentId, parentPageID]);
197
+ }, [pagesByParentId, parentPageID]);
208
198
  const {
209
199
  isNested,
210
200
  hasSelectedChild,
211
- parentBlock,
201
+ parentClientId,
212
202
  hasDraggedChild,
213
203
  isChildOfNavigation
214
204
  } = useSelect(select => {
215
205
  const {
216
206
  getBlockParentsByBlockName,
217
207
  hasSelectedInnerBlock,
218
- getBlockRootClientId,
219
208
  hasDraggedInnerBlock
220
209
  } = select(blockEditorStore);
221
210
  const blockParents = getBlockParentsByBlockName(clientId, 'core/navigation-submenu', true);
@@ -225,9 +214,15 @@ export default function PageListEdit({
225
214
  isChildOfNavigation: navigationBlockParents.length > 0,
226
215
  hasSelectedChild: hasSelectedInnerBlock(clientId, true),
227
216
  hasDraggedChild: hasDraggedInnerBlock(clientId, true),
228
- parentBlock: getBlockRootClientId(clientId)
217
+ parentClientId: navigationBlockParents[0]
229
218
  };
230
219
  }, [clientId]);
220
+ const convertToNavigationLinks = useConvertToNavigationLinks({
221
+ clientId,
222
+ pages,
223
+ parentClientId,
224
+ parentPageID
225
+ });
231
226
  const innerBlocksProps = useInnerBlocksProps(blockProps, {
232
227
  allowedBlocks: ['core/page-list-item'],
233
228
  renderAppender: false,
@@ -243,9 +238,9 @@ export default function PageListEdit({
243
238
  useEffect(() => {
244
239
  if (hasSelectedChild || hasDraggedChild) {
245
240
  openModal();
246
- selectBlock(parentBlock);
241
+ selectBlock(parentClientId);
247
242
  }
248
- }, [hasSelectedChild, hasDraggedChild, parentBlock, selectBlock, openModal]);
243
+ }, [hasSelectedChild, hasDraggedChild, parentClientId, selectBlock, openModal]);
249
244
  useEffect(() => {
250
245
  setAttributes({
251
246
  isNested
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/page-list/edit.js"],"names":["classnames","createBlock","InspectorControls","BlockControls","useBlockProps","useInnerBlocksProps","getColorClassName","store","blockEditorStore","Warning","PanelBody","ToolbarButton","Spinner","Notice","ComboboxControl","Button","__","sprintf","useMemo","useState","useEffect","useCallback","useEntityRecords","useSelect","useDispatch","useConvertToNavigationLinks","convertDescription","ConvertToLinksModal","MAX_PAGE_COUNT","NOOP","BlockContent","blockProps","innerBlocksProps","hasResolvedPages","blockList","pages","parentPageID","length","parentPageDetails","find","page","id","title","rendered","PageListEdit","context","clientId","attributes","setAttributes","isOpen","setOpen","openModal","closeModal","records","hasResolved","per_page","_fields","orderby","order","allowConvertToLinks","pagesByParentId","Map","sortedPages","sort","a","b","menu_order","localeCompare","reduce","accumulator","parent","has","get","push","set","convertToNavigationLinks","className","textColor","backgroundColor","style","color","getBlockList","parentId","childPages","template","hasChildren","pageProps","label","trim","link","url","item","children","makePagesTree","level","tree","value","repeat","rawName","pagesTree","isNested","hasSelectedChild","parentBlock","hasDraggedChild","isChildOfNavigation","select","getBlockParentsByBlockName","hasSelectedInnerBlock","getBlockRootClientId","hasDraggedInnerBlock","blockParents","navigationBlockParents","allowedBlocks","renderAppender","__unstableDisableDropZone","templateLock","onInput","onChange","selectBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tgetColorClassName,\n\tstore as blockEditorStore,\n\tWarning,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tToolbarButton,\n\tSpinner,\n\tNotice,\n\tComboboxControl,\n\tButton,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState, useEffect, useCallback } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useConvertToNavigationLinks } from './use-convert-to-navigation-links';\nimport {\n\tconvertDescription,\n\tConvertToLinksModal,\n} from './convert-to-links-modal';\n\n// We only show the edit option when page count is <= MAX_PAGE_COUNT\n// Performance of Navigation Links is not good past this value.\nconst MAX_PAGE_COUNT = 100;\nconst NOOP = () => {};\nfunction BlockContent( {\n\tblockProps,\n\tinnerBlocksProps,\n\thasResolvedPages,\n\tblockList,\n\tpages,\n\tparentPageID,\n} ) {\n\tif ( ! hasResolvedPages ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<div className=\"wp-block-page-list__loading-indicator-container\">\n\t\t\t\t\t<Spinner className=\"wp-block-page-list__loading-indicator\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( pages === null ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Notice status={ 'warning' } isDismissible={ false }>\n\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t</Notice>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( pages.length === 0 ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Notice status={ 'info' } isDismissible={ false }>\n\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t</Notice>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( blockList.length === 0 ) {\n\t\tconst parentPageDetails = pages.find(\n\t\t\t( page ) => page.id === parentPageID\n\t\t);\n\n\t\tif ( parentPageDetails?.title?.rendered ) {\n\t\t\treturn (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Warning>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t// translators: %s: Page title.\n\t\t\t\t\t\t\t__( 'Page List: \"%s\" page has no children.' ),\n\t\t\t\t\t\t\tparentPageDetails.title.rendered\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Warning>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Notice status={ 'warning' } isDismissible={ false }>\n\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t</Notice>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( pages.length > 0 ) {\n\t\treturn <ul { ...innerBlocksProps }></ul>;\n\t}\n}\n\nexport default function PageListEdit( {\n\tcontext,\n\tclientId,\n\tattributes,\n\tsetAttributes,\n} ) {\n\tconst { parentPageID } = attributes;\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst openModal = useCallback( () => setOpen( true ), [] );\n\tconst closeModal = () => setOpen( false );\n\n\tconst { records: pages, hasResolved: hasResolvedPages } = useEntityRecords(\n\t\t'postType',\n\t\t'page',\n\t\t{\n\t\t\tper_page: MAX_PAGE_COUNT,\n\t\t\t_fields: [ 'id', 'link', 'menu_order', 'parent', 'title', 'type' ],\n\t\t\t// TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby\n\t\t\t// values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent\n\t\t\t// sort.\n\t\t\torderby: 'menu_order',\n\t\t\torder: 'asc',\n\t\t}\n\t);\n\n\tconst allowConvertToLinks =\n\t\t'showSubmenuIcon' in context &&\n\t\tpages?.length > 0 &&\n\t\tpages?.length <= MAX_PAGE_COUNT;\n\n\tconst pagesByParentId = useMemo( () => {\n\t\tif ( pages === null ) {\n\t\t\treturn new Map();\n\t\t}\n\n\t\t// TODO: Once the REST API supports passing multiple values to\n\t\t// 'orderby', this can be removed.\n\t\t// https://core.trac.wordpress.org/ticket/39037\n\t\tconst sortedPages = pages.sort( ( a, b ) => {\n\t\t\tif ( a.menu_order === b.menu_order ) {\n\t\t\t\treturn a.title.rendered.localeCompare( b.title.rendered );\n\t\t\t}\n\t\t\treturn a.menu_order - b.menu_order;\n\t\t} );\n\n\t\treturn sortedPages.reduce( ( accumulator, page ) => {\n\t\t\tconst { parent } = page;\n\t\t\tif ( accumulator.has( parent ) ) {\n\t\t\t\taccumulator.get( parent ).push( page );\n\t\t\t} else {\n\t\t\t\taccumulator.set( parent, [ page ] );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, new Map() );\n\t}, [ pages ] );\n\n\tconst convertToNavigationLinks = useConvertToNavigationLinks( {\n\t\tclientId,\n\t\tpages,\n\t\tparentPageID,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( 'wp-block-page-list', {\n\t\t\t'has-text-color': !! context.textColor,\n\t\t\t[ getColorClassName( 'color', context.textColor ) ]:\n\t\t\t\t!! context.textColor,\n\t\t\t'has-background': !! context.backgroundColor,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tcontext.backgroundColor\n\t\t\t) ]: !! context.backgroundColor,\n\t\t} ),\n\t\tstyle: { ...context.style?.color },\n\t} );\n\n\tconst getBlockList = ( parentId = parentPageID ) => {\n\t\tconst childPages = pagesByParentId.get( parentId );\n\n\t\tif ( ! childPages?.length ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn childPages.reduce( ( template, page ) => {\n\t\t\tconst hasChildren = pagesByParentId.has( page.id );\n\t\t\tconst pageProps = {\n\t\t\t\tid: page.id,\n\t\t\t\tlabel:\n\t\t\t\t\t// translators: displayed when a page has an empty title.\n\t\t\t\t\tpage.title?.rendered?.trim() !== ''\n\t\t\t\t\t\t? page.title?.rendered\n\t\t\t\t\t\t: __( '(no title)' ),\n\t\t\t\ttitle: page.title?.rendered,\n\t\t\t\tlink: page.url,\n\t\t\t\thasChildren,\n\t\t\t};\n\t\t\tlet item = null;\n\t\t\tconst children = getBlockList( page.id );\n\t\t\titem = createBlock( 'core/page-list-item', pageProps, children );\n\t\t\ttemplate.push( item );\n\n\t\t\treturn template;\n\t\t}, [] );\n\t};\n\n\tconst makePagesTree = ( parentId = 0, level = 0 ) => {\n\t\tconst childPages = pagesByParentId.get( parentId );\n\n\t\tif ( ! childPages?.length ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn childPages.reduce( ( tree, page ) => {\n\t\t\tconst hasChildren = pagesByParentId.has( page.id );\n\t\t\tconst item = {\n\t\t\t\tvalue: page.id,\n\t\t\t\tlabel: '— '.repeat( level ) + page.title.rendered,\n\t\t\t\trawName: page.title.rendered,\n\t\t\t};\n\t\t\ttree.push( item );\n\t\t\tif ( hasChildren ) {\n\t\t\t\ttree.push( ...makePagesTree( page.id, level + 1 ) );\n\t\t\t}\n\t\t\treturn tree;\n\t\t}, [] );\n\t};\n\n\tconst pagesTree = useMemo( makePagesTree, [ pagesByParentId ] );\n\n\tconst blockList = useMemo( getBlockList, [\n\t\tpagesByParentId,\n\t\tparentPageID,\n\t] );\n\n\tconst {\n\t\tisNested,\n\t\thasSelectedChild,\n\t\tparentBlock,\n\t\thasDraggedChild,\n\t\tisChildOfNavigation,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasDraggedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockParents = getBlockParentsByBlockName(\n\t\t\t\tclientId,\n\t\t\t\t'core/navigation-submenu',\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst navigationBlockParents = getBlockParentsByBlockName(\n\t\t\t\tclientId,\n\t\t\t\t'core/navigation',\n\t\t\t\ttrue\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tisNested: blockParents.length > 0,\n\t\t\t\tisChildOfNavigation: navigationBlockParents.length > 0,\n\t\t\t\thasSelectedChild: hasSelectedInnerBlock( clientId, true ),\n\t\t\t\thasDraggedChild: hasDraggedInnerBlock( clientId, true ),\n\t\t\t\tparentBlock: getBlockRootClientId( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/page-list-item' ],\n\t\trenderAppender: false,\n\t\t__unstableDisableDropZone: true,\n\t\ttemplateLock: isChildOfNavigation ? false : 'all',\n\t\tonInput: NOOP,\n\t\tonChange: NOOP,\n\t\tvalue: blockList,\n\t} );\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( hasSelectedChild || hasDraggedChild ) {\n\t\t\topenModal();\n\t\t\tselectBlock( parentBlock );\n\t\t}\n\t}, [\n\t\thasSelectedChild,\n\t\thasDraggedChild,\n\t\tparentBlock,\n\t\tselectBlock,\n\t\topenModal,\n\t] );\n\n\tuseEffect( () => {\n\t\tsetAttributes( { isNested } );\n\t}, [ isNested, setAttributes ] );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t{ pagesTree.length > 0 && (\n\t\t\t\t\t<PanelBody>\n\t\t\t\t\t\t<ComboboxControl\n\t\t\t\t\t\t\tclassName=\"editor-page-attributes__parent\"\n\t\t\t\t\t\t\tlabel={ __( 'Parent page' ) }\n\t\t\t\t\t\t\tvalue={ parentPageID }\n\t\t\t\t\t\t\toptions={ pagesTree }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { parentPageID: value ?? 0 } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Choose a page to show only its subpages.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t\t{ allowConvertToLinks && (\n\t\t\t\t\t<PanelBody title={ __( 'Edit this menu' ) }>\n\t\t\t\t\t\t<p>{ convertDescription }</p>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tdisabled={ ! hasResolvedPages }\n\t\t\t\t\t\t\tonClick={ convertToNavigationLinks }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ allowConvertToLinks && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ttitle={ __( 'Edit' ) }\n\t\t\t\t\t\t\tonClick={ openModal }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t{ isOpen && (\n\t\t\t\t\t\t<ConvertToLinksModal\n\t\t\t\t\t\t\tonClick={ convertToNavigationLinks }\n\t\t\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\t\t\tdisabled={ ! hasResolvedPages }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockContent\n\t\t\t\tblockProps={ blockProps }\n\t\t\t\tinnerBlocksProps={ innerBlocksProps }\n\t\t\t\thasResolvedPages={ hasResolvedPages }\n\t\t\t\tblockList={ blockList }\n\t\t\t\tpages={ pages }\n\t\t\t\tparentPageID={ parentPageID }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/page-list/edit.js"],"names":["classnames","createBlock","InspectorControls","BlockControls","useBlockProps","useInnerBlocksProps","getColorClassName","store","blockEditorStore","Warning","PanelBody","ToolbarButton","Spinner","Notice","ComboboxControl","Button","__","sprintf","useMemo","useState","useEffect","useCallback","useEntityRecords","useSelect","useDispatch","useConvertToNavigationLinks","convertDescription","ConvertToLinksModal","MAX_PAGE_COUNT","NOOP","BlockContent","blockProps","innerBlocksProps","hasResolvedPages","blockList","pages","parentPageID","length","parentPageDetails","find","page","id","title","rendered","PageListEdit","context","clientId","attributes","setAttributes","isOpen","setOpen","openModal","closeModal","records","hasResolved","per_page","_fields","orderby","order","allowConvertToLinks","pagesByParentId","Map","sortedPages","sort","a","b","menu_order","localeCompare","reduce","accumulator","parent","has","get","push","set","className","textColor","backgroundColor","style","color","pagesTree","makePagesTree","parentId","level","childPages","tree","hasChildren","item","value","label","repeat","rawName","getBlockList","template","pageProps","trim","link","url","children","isNested","hasSelectedChild","parentClientId","hasDraggedChild","isChildOfNavigation","select","getBlockParentsByBlockName","hasSelectedInnerBlock","hasDraggedInnerBlock","blockParents","navigationBlockParents","convertToNavigationLinks","allowedBlocks","renderAppender","__unstableDisableDropZone","templateLock","onInput","onChange","selectBlock"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tgetColorClassName,\n\tstore as blockEditorStore,\n\tWarning,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tToolbarButton,\n\tSpinner,\n\tNotice,\n\tComboboxControl,\n\tButton,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState, useEffect, useCallback } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useConvertToNavigationLinks } from './use-convert-to-navigation-links';\nimport {\n\tconvertDescription,\n\tConvertToLinksModal,\n} from './convert-to-links-modal';\n\n// We only show the edit option when page count is <= MAX_PAGE_COUNT\n// Performance of Navigation Links is not good past this value.\nconst MAX_PAGE_COUNT = 100;\nconst NOOP = () => {};\nfunction BlockContent( {\n\tblockProps,\n\tinnerBlocksProps,\n\thasResolvedPages,\n\tblockList,\n\tpages,\n\tparentPageID,\n} ) {\n\tif ( ! hasResolvedPages ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<div className=\"wp-block-page-list__loading-indicator-container\">\n\t\t\t\t\t<Spinner className=\"wp-block-page-list__loading-indicator\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( pages === null ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Notice status={ 'warning' } isDismissible={ false }>\n\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t</Notice>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( pages.length === 0 ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Notice status={ 'info' } isDismissible={ false }>\n\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t</Notice>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( blockList.length === 0 ) {\n\t\tconst parentPageDetails = pages.find(\n\t\t\t( page ) => page.id === parentPageID\n\t\t);\n\n\t\tif ( parentPageDetails?.title?.rendered ) {\n\t\t\treturn (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Warning>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t// translators: %s: Page title.\n\t\t\t\t\t\t\t__( 'Page List: \"%s\" page has no children.' ),\n\t\t\t\t\t\t\tparentPageDetails.title.rendered\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Warning>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Notice status={ 'warning' } isDismissible={ false }>\n\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t</Notice>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( pages.length > 0 ) {\n\t\treturn <ul { ...innerBlocksProps }></ul>;\n\t}\n}\n\nexport default function PageListEdit( {\n\tcontext,\n\tclientId,\n\tattributes,\n\tsetAttributes,\n} ) {\n\tconst { parentPageID } = attributes;\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst openModal = useCallback( () => setOpen( true ), [] );\n\tconst closeModal = () => setOpen( false );\n\n\tconst { records: pages, hasResolved: hasResolvedPages } = useEntityRecords(\n\t\t'postType',\n\t\t'page',\n\t\t{\n\t\t\tper_page: MAX_PAGE_COUNT,\n\t\t\t_fields: [ 'id', 'link', 'menu_order', 'parent', 'title', 'type' ],\n\t\t\t// TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby\n\t\t\t// values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent\n\t\t\t// sort.\n\t\t\torderby: 'menu_order',\n\t\t\torder: 'asc',\n\t\t}\n\t);\n\n\tconst allowConvertToLinks =\n\t\t'showSubmenuIcon' in context &&\n\t\tpages?.length > 0 &&\n\t\tpages?.length <= MAX_PAGE_COUNT;\n\n\tconst pagesByParentId = useMemo( () => {\n\t\tif ( pages === null ) {\n\t\t\treturn new Map();\n\t\t}\n\n\t\t// TODO: Once the REST API supports passing multiple values to\n\t\t// 'orderby', this can be removed.\n\t\t// https://core.trac.wordpress.org/ticket/39037\n\t\tconst sortedPages = pages.sort( ( a, b ) => {\n\t\t\tif ( a.menu_order === b.menu_order ) {\n\t\t\t\treturn a.title.rendered.localeCompare( b.title.rendered );\n\t\t\t}\n\t\t\treturn a.menu_order - b.menu_order;\n\t\t} );\n\n\t\treturn sortedPages.reduce( ( accumulator, page ) => {\n\t\t\tconst { parent } = page;\n\t\t\tif ( accumulator.has( parent ) ) {\n\t\t\t\taccumulator.get( parent ).push( page );\n\t\t\t} else {\n\t\t\t\taccumulator.set( parent, [ page ] );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, new Map() );\n\t}, [ pages ] );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( 'wp-block-page-list', {\n\t\t\t'has-text-color': !! context.textColor,\n\t\t\t[ getColorClassName( 'color', context.textColor ) ]:\n\t\t\t\t!! context.textColor,\n\t\t\t'has-background': !! context.backgroundColor,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tcontext.backgroundColor\n\t\t\t) ]: !! context.backgroundColor,\n\t\t} ),\n\t\tstyle: { ...context.style?.color },\n\t} );\n\n\tconst pagesTree = useMemo(\n\t\tfunction makePagesTree( parentId = 0, level = 0 ) {\n\t\t\tconst childPages = pagesByParentId.get( parentId );\n\n\t\t\tif ( ! childPages?.length ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn childPages.reduce( ( tree, page ) => {\n\t\t\t\tconst hasChildren = pagesByParentId.has( page.id );\n\t\t\t\tconst item = {\n\t\t\t\t\tvalue: page.id,\n\t\t\t\t\tlabel: '— '.repeat( level ) + page.title.rendered,\n\t\t\t\t\trawName: page.title.rendered,\n\t\t\t\t};\n\t\t\t\ttree.push( item );\n\t\t\t\tif ( hasChildren ) {\n\t\t\t\t\ttree.push( ...makePagesTree( page.id, level + 1 ) );\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}, [] );\n\t\t},\n\t\t[ pagesByParentId ]\n\t);\n\n\tconst blockList = useMemo(\n\t\tfunction getBlockList( parentId = parentPageID ) {\n\t\t\tconst childPages = pagesByParentId.get( parentId );\n\n\t\t\tif ( ! childPages?.length ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn childPages.reduce( ( template, page ) => {\n\t\t\t\tconst hasChildren = pagesByParentId.has( page.id );\n\t\t\t\tconst pageProps = {\n\t\t\t\t\tid: page.id,\n\t\t\t\t\tlabel:\n\t\t\t\t\t\t// translators: displayed when a page has an empty title.\n\t\t\t\t\t\tpage.title?.rendered?.trim() !== ''\n\t\t\t\t\t\t\t? page.title?.rendered\n\t\t\t\t\t\t\t: __( '(no title)' ),\n\t\t\t\t\ttitle: page.title?.rendered,\n\t\t\t\t\tlink: page.url,\n\t\t\t\t\thasChildren,\n\t\t\t\t};\n\t\t\t\tlet item = null;\n\t\t\t\tconst children = getBlockList( page.id );\n\t\t\t\titem = createBlock(\n\t\t\t\t\t'core/page-list-item',\n\t\t\t\t\tpageProps,\n\t\t\t\t\tchildren\n\t\t\t\t);\n\t\t\t\ttemplate.push( item );\n\n\t\t\t\treturn template;\n\t\t\t}, [] );\n\t\t},\n\t\t[ pagesByParentId, parentPageID ]\n\t);\n\n\tconst {\n\t\tisNested,\n\t\thasSelectedChild,\n\t\tparentClientId,\n\t\thasDraggedChild,\n\t\tisChildOfNavigation,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\thasDraggedInnerBlock,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockParents = getBlockParentsByBlockName(\n\t\t\t\tclientId,\n\t\t\t\t'core/navigation-submenu',\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst navigationBlockParents = getBlockParentsByBlockName(\n\t\t\t\tclientId,\n\t\t\t\t'core/navigation',\n\t\t\t\ttrue\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tisNested: blockParents.length > 0,\n\t\t\t\tisChildOfNavigation: navigationBlockParents.length > 0,\n\t\t\t\thasSelectedChild: hasSelectedInnerBlock( clientId, true ),\n\t\t\t\thasDraggedChild: hasDraggedInnerBlock( clientId, true ),\n\t\t\t\tparentClientId: navigationBlockParents[ 0 ],\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst convertToNavigationLinks = useConvertToNavigationLinks( {\n\t\tclientId,\n\t\tpages,\n\t\tparentClientId,\n\t\tparentPageID,\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/page-list-item' ],\n\t\trenderAppender: false,\n\t\t__unstableDisableDropZone: true,\n\t\ttemplateLock: isChildOfNavigation ? false : 'all',\n\t\tonInput: NOOP,\n\t\tonChange: NOOP,\n\t\tvalue: blockList,\n\t} );\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( hasSelectedChild || hasDraggedChild ) {\n\t\t\topenModal();\n\t\t\tselectBlock( parentClientId );\n\t\t}\n\t}, [\n\t\thasSelectedChild,\n\t\thasDraggedChild,\n\t\tparentClientId,\n\t\tselectBlock,\n\t\topenModal,\n\t] );\n\n\tuseEffect( () => {\n\t\tsetAttributes( { isNested } );\n\t}, [ isNested, setAttributes ] );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t{ pagesTree.length > 0 && (\n\t\t\t\t\t<PanelBody>\n\t\t\t\t\t\t<ComboboxControl\n\t\t\t\t\t\t\tclassName=\"editor-page-attributes__parent\"\n\t\t\t\t\t\t\tlabel={ __( 'Parent page' ) }\n\t\t\t\t\t\t\tvalue={ parentPageID }\n\t\t\t\t\t\t\toptions={ pagesTree }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { parentPageID: value ?? 0 } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Choose a page to show only its subpages.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t\t{ allowConvertToLinks && (\n\t\t\t\t\t<PanelBody title={ __( 'Edit this menu' ) }>\n\t\t\t\t\t\t<p>{ convertDescription }</p>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tdisabled={ ! hasResolvedPages }\n\t\t\t\t\t\t\tonClick={ convertToNavigationLinks }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t{ allowConvertToLinks && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ttitle={ __( 'Edit' ) }\n\t\t\t\t\t\t\tonClick={ openModal }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t{ isOpen && (\n\t\t\t\t\t\t<ConvertToLinksModal\n\t\t\t\t\t\t\tonClick={ convertToNavigationLinks }\n\t\t\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\t\t\tdisabled={ ! hasResolvedPages }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockContent\n\t\t\t\tblockProps={ blockProps }\n\t\t\t\tinnerBlocksProps={ innerBlocksProps }\n\t\t\t\thasResolvedPages={ hasResolvedPages }\n\t\t\t\tblockList={ blockList }\n\t\t\t\tpages={ pages }\n\t\t\t\tparentPageID={ parentPageID }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { createBlock } from '@wordpress/blocks';
5
- import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { useDispatch } from '@wordpress/data';
6
6
  import { store as blockEditorStore } from '@wordpress/block-editor';
7
7
  /**
8
8
  * Converts an array of pages into a nested array of navigation link blocks.
@@ -116,32 +116,19 @@ export function convertToNavigationLinks(pages = [], parentPageID = null) {
116
116
  export function useConvertToNavigationLinks({
117
117
  clientId,
118
118
  pages,
119
+ parentClientId,
119
120
  parentPageID
120
121
  }) {
121
122
  const {
122
123
  replaceBlock,
123
124
  selectBlock
124
125
  } = useDispatch(blockEditorStore);
125
- const {
126
- parentNavBlockClientId
127
- } = useSelect(select => {
128
- const {
129
- getSelectedBlockClientId,
130
- getBlockParentsByBlockName
131
- } = select(blockEditorStore);
132
-
133
- const _selectedBlockClientId = getSelectedBlockClientId();
134
-
135
- return {
136
- parentNavBlockClientId: getBlockParentsByBlockName(_selectedBlockClientId, 'core/navigation', true)[0]
137
- };
138
- }, [clientId]);
139
126
  return () => {
140
127
  const navigationLinks = convertToNavigationLinks(pages, parentPageID); // Replace the Page List block with the Navigation Links.
141
128
 
142
129
  replaceBlock(clientId, navigationLinks); // Select the Navigation block to reveal the changes.
143
130
 
144
- selectBlock(parentNavBlockClientId);
131
+ selectBlock(parentClientId);
145
132
  };
146
133
  }
147
134
  //# sourceMappingURL=use-convert-to-navigation-links.js.map