@wordpress/block-library 7.19.0 → 8.0.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 (761) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/audio/edit.native.js +1 -3
  3. package/build/audio/edit.native.js.map +1 -1
  4. package/build/audio/index.js +2 -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/user-control.js +1 -0
  9. package/build/avatar/user-control.js.map +1 -1
  10. package/build/block/edit.js +14 -2
  11. package/build/block/edit.js.map +1 -1
  12. package/build/block/edit.native.js +14 -6
  13. package/build/block/edit.native.js.map +1 -1
  14. package/build/block/index.js +1 -2
  15. package/build/block/index.js.map +1 -1
  16. package/build/button/edit.native.js.map +1 -1
  17. package/build/code/transforms.js +1 -1
  18. package/build/code/transforms.js.map +1 -1
  19. package/build/columns/edit.js +1 -0
  20. package/build/columns/edit.js.map +1 -1
  21. package/build/columns/edit.native.js +13 -30
  22. package/build/columns/edit.native.js.map +1 -1
  23. package/build/comment-author-avatar/edit.js +1 -0
  24. package/build/comment-author-avatar/edit.js.map +1 -1
  25. package/build/cover/edit/inspector-controls.js +2 -0
  26. package/build/cover/edit/inspector-controls.js.map +1 -1
  27. package/build/cover/edit.native.js +24 -16
  28. package/build/cover/edit.native.js.map +1 -1
  29. package/build/embed/embed-controls.native.js +1 -0
  30. package/build/embed/embed-controls.native.js.map +1 -1
  31. package/build/embed/embed-preview.native.js +1 -3
  32. package/build/embed/embed-preview.native.js.map +1 -1
  33. package/build/file/inspector.js +1 -0
  34. package/build/file/inspector.js.map +1 -1
  35. package/build/gallery/edit.js +25 -13
  36. package/build/gallery/edit.js.map +1 -1
  37. package/build/gallery/gallery.native.js +1 -3
  38. package/build/gallery/gallery.native.js.map +1 -1
  39. package/build/gallery/shared.js +4 -10
  40. package/build/gallery/shared.js.map +1 -1
  41. package/build/gallery/transforms.js +1 -7
  42. package/build/gallery/transforms.js.map +1 -1
  43. package/build/gallery/use-get-media.js +1 -1
  44. package/build/gallery/use-get-media.js.map +1 -1
  45. package/build/gallery/use-get-media.native.js +3 -1
  46. package/build/gallery/use-get-media.native.js.map +1 -1
  47. package/build/gallery/v1/edit.js +22 -15
  48. package/build/gallery/v1/edit.js.map +1 -1
  49. package/build/gallery/v1/gallery.native.js +1 -3
  50. package/build/gallery/v1/gallery.native.js.map +1 -1
  51. package/build/gallery/v1/shared.js +4 -1
  52. package/build/gallery/v1/shared.js.map +1 -1
  53. package/build/group/edit.js +1 -2
  54. package/build/group/edit.js.map +1 -1
  55. package/build/group/index.js +3 -1
  56. package/build/group/index.js.map +1 -1
  57. package/build/group/placeholder.js +5 -26
  58. package/build/group/placeholder.js.map +1 -1
  59. package/build/heading/deprecated.js +152 -69
  60. package/build/heading/deprecated.js.map +1 -1
  61. package/build/heading/index.js +1 -2
  62. package/build/heading/index.js.map +1 -1
  63. package/build/heading/transforms.js +1 -2
  64. package/build/heading/transforms.js.map +1 -1
  65. package/build/html/index.js +1 -1
  66. package/build/image/edit.js +8 -5
  67. package/build/image/edit.js.map +1 -1
  68. package/build/image/edit.native.js +3 -2
  69. package/build/image/edit.native.js.map +1 -1
  70. package/build/image/image.js +12 -8
  71. package/build/image/image.js.map +1 -1
  72. package/build/index.js +3 -1
  73. package/build/index.js.map +1 -1
  74. package/build/latest-comments/edit.js +1 -0
  75. package/build/latest-comments/edit.js.map +1 -1
  76. package/build/latest-posts/edit.js +2 -0
  77. package/build/latest-posts/edit.js.map +1 -1
  78. package/build/list/transforms.js +1 -9
  79. package/build/list/transforms.js.map +1 -1
  80. package/build/list/utils.js +5 -2
  81. package/build/list/utils.js.map +1 -1
  82. package/build/list-item/index.js +4 -1
  83. package/build/list-item/index.js.map +1 -1
  84. package/build/list-item/transforms.js +22 -0
  85. package/build/list-item/transforms.js.map +1 -0
  86. package/build/list-item/utils.js +77 -1
  87. package/build/list-item/utils.js.map +1 -1
  88. package/build/media-text/edit.js +4 -2
  89. package/build/media-text/edit.js.map +1 -1
  90. package/build/navigation/edit/are-blocks-dirty.js +52 -0
  91. package/build/navigation/edit/are-blocks-dirty.js.map +1 -0
  92. package/build/navigation/edit/index.js +95 -116
  93. package/build/navigation/edit/index.js.map +1 -1
  94. package/build/navigation/edit/menu-inspector-controls.js +72 -0
  95. package/build/navigation/edit/menu-inspector-controls.js.map +1 -0
  96. package/build/navigation/edit/navigation-menu-selector.js +5 -10
  97. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  98. package/build/navigation/edit/unsaved-inner-blocks.js +11 -7
  99. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  100. package/build/navigation/view-modal.js +6 -2
  101. package/build/navigation/view-modal.js.map +1 -1
  102. package/build/navigation-link/edit.js +42 -298
  103. package/build/navigation-link/edit.js.map +1 -1
  104. package/build/navigation-link/link-ui.js +222 -0
  105. package/build/navigation-link/link-ui.js.map +1 -0
  106. package/build/navigation-link/transforms.js +12 -0
  107. package/build/navigation-link/transforms.js.map +1 -1
  108. package/build/navigation-link/update-attributes.js +108 -0
  109. package/build/navigation-link/update-attributes.js.map +1 -0
  110. package/build/navigation-submenu/edit.js +42 -173
  111. package/build/navigation-submenu/edit.js.map +1 -1
  112. package/build/page-list/constants.js +15 -0
  113. package/build/page-list/constants.js.map +1 -0
  114. package/build/page-list/convert-to-links-modal.js +22 -86
  115. package/build/page-list/convert-to-links-modal.js.map +1 -1
  116. package/build/page-list/convert-to-navigation-links.js +76 -0
  117. package/build/page-list/convert-to-navigation-links.js.map +1 -0
  118. package/build/page-list/edit.js +142 -78
  119. package/build/page-list/edit.js.map +1 -1
  120. package/build/page-list/index.js +6 -1
  121. package/build/page-list/index.js.map +1 -1
  122. package/build/page-list-item/edit.js +87 -0
  123. package/build/page-list-item/edit.js.map +1 -0
  124. package/build/page-list-item/index.js +85 -0
  125. package/build/page-list-item/index.js.map +1 -0
  126. package/build/page-list-item/init.js +16 -0
  127. package/build/page-list-item/init.js.map +1 -0
  128. package/build/paragraph/index.js +1 -7
  129. package/build/paragraph/index.js.map +1 -1
  130. package/build/post-author/edit.js +3 -2
  131. package/build/post-author/edit.js.map +1 -1
  132. package/build/post-featured-image/overlay.js +1 -0
  133. package/build/post-featured-image/overlay.js.map +1 -1
  134. package/build/post-template/index.js +8 -0
  135. package/build/post-template/index.js.map +1 -1
  136. package/build/preformatted/transforms.js +3 -1
  137. package/build/preformatted/transforms.js.map +1 -1
  138. package/build/query/deprecated.js +192 -21
  139. package/build/query/deprecated.js.map +1 -1
  140. package/build/query/edit/inspector-controls/index.js +1 -0
  141. package/build/query/edit/inspector-controls/index.js.map +1 -1
  142. package/build/query/edit/query-placeholder.js +3 -19
  143. package/build/query/edit/query-placeholder.js.map +1 -1
  144. package/build/query/index.js +0 -8
  145. package/build/query/index.js.map +1 -1
  146. package/build/query/utils.js +0 -8
  147. package/build/query/utils.js.map +1 -1
  148. package/build/rss/edit.js +3 -0
  149. package/build/rss/edit.js.map +1 -1
  150. package/build/search/edit.native.js +22 -22
  151. package/build/search/edit.native.js.map +1 -1
  152. package/build/search/index.js +9 -1
  153. package/build/search/index.js.map +1 -1
  154. package/build/site-logo/edit.js +17 -9
  155. package/build/site-logo/edit.js.map +1 -1
  156. package/build/site-logo/index.js +1 -0
  157. package/build/site-logo/index.js.map +1 -1
  158. package/build/site-title/index.js +1 -0
  159. package/build/site-title/index.js.map +1 -1
  160. package/build/social-link/social-list.js +4 -12
  161. package/build/social-link/social-list.js.map +1 -1
  162. package/build/table/edit.js +3 -1
  163. package/build/table/edit.js.map +1 -1
  164. package/build/table/index.js +17 -1
  165. package/build/table/index.js.map +1 -1
  166. package/build/table/save.js +4 -2
  167. package/build/table/save.js.map +1 -1
  168. package/build/table/state.js +24 -12
  169. package/build/table/state.js.map +1 -1
  170. package/build/table/transforms.js +3 -2
  171. package/build/table/transforms.js.map +1 -1
  172. package/build/table-of-contents/edit.js +2 -2
  173. package/build/table-of-contents/edit.js.map +1 -1
  174. package/build/tag-cloud/edit.js +2 -1
  175. package/build/tag-cloud/edit.js.map +1 -1
  176. package/build/template-part/edit/selection-modal.js +5 -2
  177. package/build/template-part/edit/selection-modal.js.map +1 -1
  178. package/build/template-part/edit/utils/hooks.js +2 -6
  179. package/build/template-part/edit/utils/hooks.js.map +1 -1
  180. package/build/text-columns/edit.js +1 -0
  181. package/build/text-columns/edit.js.map +1 -1
  182. package/build/utils/transformation-categories.native.js +1 -1
  183. package/build/utils/transformation-categories.native.js.map +1 -1
  184. package/build/video/edit.js +1 -1
  185. package/build/video/edit.js.map +1 -1
  186. package/build/video/edit.native.js +1 -3
  187. package/build/video/edit.native.js.map +1 -1
  188. package/build-module/audio/edit.native.js +1 -2
  189. package/build-module/audio/edit.native.js.map +1 -1
  190. package/build-module/audio/index.js +2 -1
  191. package/build-module/audio/index.js.map +1 -1
  192. package/build-module/avatar/edit.js +1 -0
  193. package/build-module/avatar/edit.js.map +1 -1
  194. package/build-module/avatar/user-control.js +1 -0
  195. package/build-module/avatar/user-control.js.map +1 -1
  196. package/build-module/block/edit.js +14 -2
  197. package/build-module/block/edit.js.map +1 -1
  198. package/build-module/block/edit.native.js +14 -6
  199. package/build-module/block/edit.native.js.map +1 -1
  200. package/build-module/block/index.js +1 -2
  201. package/build-module/block/index.js.map +1 -1
  202. package/build-module/button/edit.native.js +2 -1
  203. package/build-module/button/edit.native.js.map +1 -1
  204. package/build-module/code/transforms.js +1 -1
  205. package/build-module/code/transforms.js.map +1 -1
  206. package/build-module/columns/edit.js +1 -0
  207. package/build-module/columns/edit.js.map +1 -1
  208. package/build-module/columns/edit.native.js +13 -29
  209. package/build-module/columns/edit.native.js.map +1 -1
  210. package/build-module/comment-author-avatar/edit.js +1 -0
  211. package/build-module/comment-author-avatar/edit.js.map +1 -1
  212. package/build-module/cover/edit/inspector-controls.js +2 -0
  213. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  214. package/build-module/cover/edit.native.js +22 -14
  215. package/build-module/cover/edit.native.js.map +1 -1
  216. package/build-module/embed/embed-controls.native.js +2 -1
  217. package/build-module/embed/embed-controls.native.js.map +1 -1
  218. package/build-module/embed/embed-preview.native.js +1 -2
  219. package/build-module/embed/embed-preview.native.js.map +1 -1
  220. package/build-module/file/inspector.js +1 -0
  221. package/build-module/file/inspector.js.map +1 -1
  222. package/build-module/gallery/edit.js +25 -12
  223. package/build-module/gallery/edit.js.map +1 -1
  224. package/build-module/gallery/gallery.native.js +1 -2
  225. package/build-module/gallery/gallery.native.js.map +1 -1
  226. package/build-module/gallery/shared.js +5 -11
  227. package/build-module/gallery/shared.js.map +1 -1
  228. package/build-module/gallery/transforms.js +1 -6
  229. package/build-module/gallery/transforms.js.map +1 -1
  230. package/build-module/gallery/use-get-media.js +1 -1
  231. package/build-module/gallery/use-get-media.js.map +1 -1
  232. package/build-module/gallery/use-get-media.native.js +3 -1
  233. package/build-module/gallery/use-get-media.native.js.map +1 -1
  234. package/build-module/gallery/v1/edit.js +23 -16
  235. package/build-module/gallery/v1/edit.js.map +1 -1
  236. package/build-module/gallery/v1/gallery.native.js +1 -2
  237. package/build-module/gallery/v1/gallery.native.js.map +1 -1
  238. package/build-module/gallery/v1/shared.js +5 -2
  239. package/build-module/gallery/v1/shared.js.map +1 -1
  240. package/build-module/group/edit.js +1 -3
  241. package/build-module/group/edit.js.map +1 -1
  242. package/build-module/group/index.js +3 -1
  243. package/build-module/group/index.js.map +1 -1
  244. package/build-module/group/placeholder.js +5 -26
  245. package/build-module/group/placeholder.js.map +1 -1
  246. package/build-module/heading/deprecated.js +152 -69
  247. package/build-module/heading/deprecated.js.map +1 -1
  248. package/build-module/heading/index.js +1 -2
  249. package/build-module/heading/index.js.map +1 -1
  250. package/build-module/heading/transforms.js +1 -2
  251. package/build-module/heading/transforms.js.map +1 -1
  252. package/build-module/html/index.js +1 -1
  253. package/build-module/image/edit.js +9 -6
  254. package/build-module/image/edit.js.map +1 -1
  255. package/build-module/image/edit.native.js +2 -1
  256. package/build-module/image/edit.native.js.map +1 -1
  257. package/build-module/image/image.js +13 -9
  258. package/build-module/image/image.js.map +1 -1
  259. package/build-module/index.js +2 -1
  260. package/build-module/index.js.map +1 -1
  261. package/build-module/latest-comments/edit.js +1 -0
  262. package/build-module/latest-comments/edit.js.map +1 -1
  263. package/build-module/latest-posts/edit.js +2 -0
  264. package/build-module/latest-posts/edit.js.map +1 -1
  265. package/build-module/list/transforms.js +1 -9
  266. package/build-module/list/transforms.js.map +1 -1
  267. package/build-module/list/utils.js +5 -2
  268. package/build-module/list/utils.js.map +1 -1
  269. package/build-module/list-item/index.js +3 -1
  270. package/build-module/list-item/index.js.map +1 -1
  271. package/build-module/list-item/transforms.js +13 -0
  272. package/build-module/list-item/transforms.js.map +1 -0
  273. package/build-module/list-item/utils.js +78 -1
  274. package/build-module/list-item/utils.js.map +1 -1
  275. package/build-module/media-text/edit.js +5 -3
  276. package/build-module/media-text/edit.js.map +1 -1
  277. package/build-module/navigation/edit/are-blocks-dirty.js +44 -0
  278. package/build-module/navigation/edit/are-blocks-dirty.js.map +1 -0
  279. package/build-module/navigation/edit/index.js +95 -117
  280. package/build-module/navigation/edit/index.js.map +1 -1
  281. package/build-module/navigation/edit/menu-inspector-controls.js +59 -0
  282. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -0
  283. package/build-module/navigation/edit/navigation-menu-selector.js +6 -11
  284. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  285. package/build-module/navigation/edit/unsaved-inner-blocks.js +9 -6
  286. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  287. package/build-module/navigation/view-modal.js +6 -2
  288. package/build-module/navigation/view-modal.js.map +1 -1
  289. package/build-module/navigation-link/edit.js +46 -299
  290. package/build-module/navigation-link/edit.js.map +1 -1
  291. package/build-module/navigation-link/link-ui.js +206 -0
  292. package/build-module/navigation-link/link-ui.js.map +1 -0
  293. package/build-module/navigation-link/transforms.js +12 -0
  294. package/build-module/navigation-link/transforms.js.map +1 -1
  295. package/build-module/navigation-link/update-attributes.js +97 -0
  296. package/build-module/navigation-link/update-attributes.js.map +1 -0
  297. package/build-module/navigation-submenu/edit.js +47 -175
  298. package/build-module/navigation-submenu/edit.js.map +1 -1
  299. package/build-module/page-list/constants.js +6 -0
  300. package/build-module/page-list/constants.js.map +1 -0
  301. package/build-module/page-list/convert-to-links-modal.js +20 -81
  302. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  303. package/build-module/page-list/convert-to-navigation-links.js +66 -0
  304. package/build-module/page-list/convert-to-navigation-links.js.map +1 -0
  305. package/build-module/page-list/edit.js +144 -82
  306. package/build-module/page-list/edit.js.map +1 -1
  307. package/build-module/page-list/index.js +6 -1
  308. package/build-module/page-list/index.js.map +1 -1
  309. package/build-module/page-list-item/edit.js +74 -0
  310. package/build-module/page-list-item/edit.js.map +1 -0
  311. package/build-module/page-list-item/index.js +68 -0
  312. package/build-module/page-list-item/index.js.map +1 -0
  313. package/build-module/page-list-item/init.js +6 -0
  314. package/build-module/page-list-item/init.js.map +1 -0
  315. package/build-module/paragraph/index.js +1 -7
  316. package/build-module/paragraph/index.js.map +1 -1
  317. package/build-module/post-author/edit.js +3 -2
  318. package/build-module/post-author/edit.js.map +1 -1
  319. package/build-module/post-featured-image/overlay.js +1 -0
  320. package/build-module/post-featured-image/overlay.js.map +1 -1
  321. package/build-module/post-template/index.js +8 -0
  322. package/build-module/post-template/index.js.map +1 -1
  323. package/build-module/preformatted/transforms.js +3 -1
  324. package/build-module/preformatted/transforms.js.map +1 -1
  325. package/build-module/query/deprecated.js +185 -21
  326. package/build-module/query/deprecated.js.map +1 -1
  327. package/build-module/query/edit/inspector-controls/index.js +1 -0
  328. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  329. package/build-module/query/edit/query-placeholder.js +3 -19
  330. package/build-module/query/edit/query-placeholder.js.map +1 -1
  331. package/build-module/query/index.js +0 -8
  332. package/build-module/query/index.js.map +1 -1
  333. package/build-module/query/utils.js +0 -8
  334. package/build-module/query/utils.js.map +1 -1
  335. package/build-module/rss/edit.js +3 -0
  336. package/build-module/rss/edit.js.map +1 -1
  337. package/build-module/search/edit.native.js +20 -20
  338. package/build-module/search/edit.native.js.map +1 -1
  339. package/build-module/search/index.js +8 -1
  340. package/build-module/search/index.js.map +1 -1
  341. package/build-module/site-logo/edit.js +17 -8
  342. package/build-module/site-logo/edit.js.map +1 -1
  343. package/build-module/site-logo/index.js +1 -0
  344. package/build-module/site-logo/index.js.map +1 -1
  345. package/build-module/site-title/index.js +1 -0
  346. package/build-module/site-title/index.js.map +1 -1
  347. package/build-module/social-link/social-list.js +2 -11
  348. package/build-module/social-link/social-list.js.map +1 -1
  349. package/build-module/table/edit.js +3 -1
  350. package/build-module/table/edit.js.map +1 -1
  351. package/build-module/table/index.js +17 -1
  352. package/build-module/table/index.js.map +1 -1
  353. package/build-module/table/save.js +4 -2
  354. package/build-module/table/save.js.map +1 -1
  355. package/build-module/table/state.js +25 -13
  356. package/build-module/table/state.js.map +1 -1
  357. package/build-module/table/transforms.js +3 -2
  358. package/build-module/table/transforms.js.map +1 -1
  359. package/build-module/table-of-contents/edit.js +2 -2
  360. package/build-module/table-of-contents/edit.js.map +1 -1
  361. package/build-module/tag-cloud/edit.js +3 -2
  362. package/build-module/tag-cloud/edit.js.map +1 -1
  363. package/build-module/template-part/edit/selection-modal.js +6 -3
  364. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  365. package/build-module/template-part/edit/utils/hooks.js +3 -7
  366. package/build-module/template-part/edit/utils/hooks.js.map +1 -1
  367. package/build-module/text-columns/edit.js +1 -0
  368. package/build-module/text-columns/edit.js.map +1 -1
  369. package/build-module/utils/transformation-categories.native.js +1 -1
  370. package/build-module/utils/transformation-categories.native.js.map +1 -1
  371. package/build-module/video/edit.js +1 -1
  372. package/build-module/video/edit.js.map +1 -1
  373. package/build-module/video/edit.native.js +1 -2
  374. package/build-module/video/edit.native.js.map +1 -1
  375. package/build-style/archives/editor-rtl.css +12 -0
  376. package/build-style/archives/editor.css +12 -0
  377. package/build-style/archives/style-rtl.css +12 -0
  378. package/build-style/archives/style.css +12 -0
  379. package/build-style/audio/editor-rtl.css +12 -0
  380. package/build-style/audio/editor.css +12 -0
  381. package/build-style/audio/style-rtl.css +12 -0
  382. package/build-style/audio/style.css +12 -0
  383. package/build-style/audio/theme-rtl.css +12 -0
  384. package/build-style/audio/theme.css +12 -0
  385. package/build-style/avatar/editor-rtl.css +12 -0
  386. package/build-style/avatar/editor.css +12 -0
  387. package/build-style/avatar/style-rtl.css +12 -0
  388. package/build-style/avatar/style.css +12 -0
  389. package/build-style/block/editor-rtl.css +22 -0
  390. package/build-style/block/editor.css +22 -0
  391. package/build-style/button/editor-rtl.css +12 -0
  392. package/build-style/button/editor.css +12 -0
  393. package/build-style/button/style-rtl.css +12 -0
  394. package/build-style/button/style.css +12 -0
  395. package/build-style/buttons/editor-rtl.css +12 -0
  396. package/build-style/buttons/editor.css +12 -0
  397. package/build-style/buttons/style-rtl.css +12 -0
  398. package/build-style/buttons/style.css +12 -0
  399. package/build-style/calendar/style-rtl.css +12 -0
  400. package/build-style/calendar/style.css +12 -0
  401. package/build-style/categories/editor-rtl.css +12 -0
  402. package/build-style/categories/editor.css +12 -0
  403. package/build-style/categories/style-rtl.css +12 -0
  404. package/build-style/categories/style.css +12 -0
  405. package/build-style/classic-rtl.css +12 -0
  406. package/build-style/classic.css +12 -0
  407. package/build-style/code/editor-rtl.css +12 -0
  408. package/build-style/code/editor.css +12 -0
  409. package/build-style/code/style-rtl.css +12 -0
  410. package/build-style/code/style.css +12 -0
  411. package/build-style/code/theme-rtl.css +12 -0
  412. package/build-style/code/theme.css +12 -0
  413. package/build-style/columns/editor-rtl.css +12 -0
  414. package/build-style/columns/editor.css +12 -0
  415. package/build-style/columns/style-rtl.css +12 -0
  416. package/build-style/columns/style.css +12 -0
  417. package/build-style/comment-author-avatar/editor-rtl.css +12 -0
  418. package/build-style/comment-author-avatar/editor.css +12 -0
  419. package/build-style/comment-content/style-rtl.css +12 -0
  420. package/build-style/comment-content/style.css +12 -0
  421. package/build-style/comment-template/style-rtl.css +12 -0
  422. package/build-style/comment-template/style.css +12 -0
  423. package/build-style/comments/editor-rtl.css +12 -0
  424. package/build-style/comments/editor.css +12 -0
  425. package/build-style/comments/style-rtl.css +12 -0
  426. package/build-style/comments/style.css +12 -0
  427. package/build-style/comments-pagination/editor-rtl.css +12 -0
  428. package/build-style/comments-pagination/editor.css +12 -0
  429. package/build-style/comments-pagination/style-rtl.css +12 -0
  430. package/build-style/comments-pagination/style.css +12 -0
  431. package/build-style/comments-pagination-numbers/editor-rtl.css +12 -0
  432. package/build-style/comments-pagination-numbers/editor.css +12 -0
  433. package/build-style/comments-title/editor-rtl.css +12 -0
  434. package/build-style/comments-title/editor.css +12 -0
  435. package/build-style/common-rtl.css +17 -1
  436. package/build-style/common.css +17 -1
  437. package/build-style/cover/editor-rtl.css +12 -0
  438. package/build-style/cover/editor.css +12 -0
  439. package/build-style/cover/style-rtl.css +14 -1
  440. package/build-style/cover/style.css +14 -1
  441. package/build-style/editor-elements-rtl.css +12 -0
  442. package/build-style/editor-elements.css +12 -0
  443. package/build-style/editor-rtl.css +39 -20
  444. package/build-style/editor.css +39 -20
  445. package/build-style/elements-rtl.css +12 -0
  446. package/build-style/elements.css +12 -0
  447. package/build-style/embed/editor-rtl.css +12 -0
  448. package/build-style/embed/editor.css +12 -0
  449. package/build-style/embed/style-rtl.css +12 -0
  450. package/build-style/embed/style.css +12 -0
  451. package/build-style/embed/theme-rtl.css +12 -0
  452. package/build-style/embed/theme.css +12 -0
  453. package/build-style/file/editor-rtl.css +12 -0
  454. package/build-style/file/editor.css +12 -0
  455. package/build-style/file/style-rtl.css +12 -0
  456. package/build-style/file/style.css +12 -0
  457. package/build-style/freeform/editor-rtl.css +12 -0
  458. package/build-style/freeform/editor.css +12 -0
  459. package/build-style/gallery/editor-rtl.css +13 -1
  460. package/build-style/gallery/editor.css +13 -1
  461. package/build-style/gallery/style-rtl.css +16 -2
  462. package/build-style/gallery/style.css +16 -2
  463. package/build-style/gallery/theme-rtl.css +12 -0
  464. package/build-style/gallery/theme.css +12 -0
  465. package/build-style/group/editor-rtl.css +12 -0
  466. package/build-style/group/editor.css +12 -0
  467. package/build-style/group/style-rtl.css +12 -0
  468. package/build-style/group/style.css +12 -0
  469. package/build-style/group/theme-rtl.css +12 -0
  470. package/build-style/group/theme.css +12 -0
  471. package/build-style/heading/style-rtl.css +12 -0
  472. package/build-style/heading/style.css +12 -0
  473. package/build-style/html/editor-rtl.css +12 -0
  474. package/build-style/html/editor.css +12 -0
  475. package/build-style/image/editor-rtl.css +12 -9
  476. package/build-style/image/editor.css +12 -9
  477. package/build-style/image/style-rtl.css +12 -0
  478. package/build-style/image/style.css +12 -0
  479. package/build-style/image/theme-rtl.css +12 -0
  480. package/build-style/image/theme.css +12 -0
  481. package/build-style/latest-comments/style-rtl.css +12 -0
  482. package/build-style/latest-comments/style.css +12 -0
  483. package/build-style/latest-posts/editor-rtl.css +12 -0
  484. package/build-style/latest-posts/editor.css +12 -0
  485. package/build-style/latest-posts/style-rtl.css +12 -0
  486. package/build-style/latest-posts/style.css +12 -0
  487. package/build-style/list/style-rtl.css +12 -0
  488. package/build-style/list/style.css +12 -0
  489. package/build-style/media-text/editor-rtl.css +12 -0
  490. package/build-style/media-text/editor.css +12 -0
  491. package/build-style/media-text/style-rtl.css +12 -0
  492. package/build-style/media-text/style.css +12 -0
  493. package/build-style/more/editor-rtl.css +12 -0
  494. package/build-style/more/editor.css +12 -0
  495. package/build-style/navigation/editor-rtl.css +12 -0
  496. package/build-style/navigation/editor.css +12 -0
  497. package/build-style/navigation/style-rtl.css +12 -0
  498. package/build-style/navigation/style.css +12 -0
  499. package/build-style/navigation-link/editor-rtl.css +12 -0
  500. package/build-style/navigation-link/editor.css +12 -0
  501. package/build-style/navigation-link/style-rtl.css +12 -0
  502. package/build-style/navigation-link/style.css +12 -0
  503. package/build-style/navigation-submenu/editor-rtl.css +12 -0
  504. package/build-style/navigation-submenu/editor.css +12 -0
  505. package/build-style/nextpage/editor-rtl.css +12 -0
  506. package/build-style/nextpage/editor.css +12 -0
  507. package/build-style/page-list/editor-rtl.css +12 -0
  508. package/build-style/page-list/editor.css +12 -0
  509. package/build-style/page-list/style-rtl.css +12 -0
  510. package/build-style/page-list/style.css +12 -0
  511. package/build-style/paragraph/editor-rtl.css +12 -0
  512. package/build-style/paragraph/editor.css +12 -0
  513. package/build-style/paragraph/style-rtl.css +12 -0
  514. package/build-style/paragraph/style.css +12 -0
  515. package/build-style/post-author/style-rtl.css +12 -0
  516. package/build-style/post-author/style.css +12 -0
  517. package/build-style/post-comments-form/editor-rtl.css +12 -0
  518. package/build-style/post-comments-form/editor.css +12 -0
  519. package/build-style/post-comments-form/style-rtl.css +12 -0
  520. package/build-style/post-comments-form/style.css +12 -0
  521. package/build-style/post-date/style-rtl.css +12 -0
  522. package/build-style/post-date/style.css +12 -0
  523. package/build-style/post-excerpt/editor-rtl.css +12 -0
  524. package/build-style/post-excerpt/editor.css +12 -0
  525. package/build-style/post-excerpt/style-rtl.css +12 -0
  526. package/build-style/post-excerpt/style.css +12 -0
  527. package/build-style/post-featured-image/editor-rtl.css +12 -0
  528. package/build-style/post-featured-image/editor.css +12 -0
  529. package/build-style/post-featured-image/style-rtl.css +12 -0
  530. package/build-style/post-featured-image/style.css +12 -0
  531. package/build-style/post-navigation-link/style-rtl.css +12 -0
  532. package/build-style/post-navigation-link/style.css +12 -0
  533. package/build-style/post-template/editor-rtl.css +12 -0
  534. package/build-style/post-template/editor.css +12 -0
  535. package/build-style/post-template/style-rtl.css +12 -0
  536. package/build-style/post-template/style.css +12 -0
  537. package/build-style/post-terms/style-rtl.css +12 -0
  538. package/build-style/post-terms/style.css +12 -0
  539. package/build-style/post-title/style-rtl.css +12 -0
  540. package/build-style/post-title/style.css +12 -0
  541. package/build-style/preformatted/style-rtl.css +12 -0
  542. package/build-style/preformatted/style.css +12 -0
  543. package/build-style/pullquote/editor-rtl.css +12 -0
  544. package/build-style/pullquote/editor.css +12 -0
  545. package/build-style/pullquote/style-rtl.css +12 -0
  546. package/build-style/pullquote/style.css +12 -0
  547. package/build-style/pullquote/theme-rtl.css +12 -0
  548. package/build-style/pullquote/theme.css +12 -0
  549. package/build-style/query/editor-rtl.css +12 -0
  550. package/build-style/query/editor.css +12 -0
  551. package/build-style/query-pagination/editor-rtl.css +12 -0
  552. package/build-style/query-pagination/editor.css +12 -0
  553. package/build-style/query-pagination/style-rtl.css +12 -0
  554. package/build-style/query-pagination/style.css +12 -0
  555. package/build-style/query-pagination-numbers/editor-rtl.css +12 -0
  556. package/build-style/query-pagination-numbers/editor.css +12 -0
  557. package/build-style/query-title/style-rtl.css +12 -0
  558. package/build-style/query-title/style.css +12 -0
  559. package/build-style/quote/style-rtl.css +12 -0
  560. package/build-style/quote/style.css +12 -0
  561. package/build-style/quote/theme-rtl.css +12 -0
  562. package/build-style/quote/theme.css +12 -0
  563. package/build-style/read-more/style-rtl.css +12 -0
  564. package/build-style/read-more/style.css +12 -0
  565. package/build-style/reset-rtl.css +12 -0
  566. package/build-style/reset.css +12 -0
  567. package/build-style/rss/editor-rtl.css +12 -0
  568. package/build-style/rss/editor.css +12 -0
  569. package/build-style/rss/style-rtl.css +12 -0
  570. package/build-style/rss/style.css +12 -0
  571. package/build-style/search/editor-rtl.css +12 -0
  572. package/build-style/search/editor.css +12 -0
  573. package/build-style/search/style-rtl.css +12 -0
  574. package/build-style/search/style.css +12 -0
  575. package/build-style/search/theme-rtl.css +12 -0
  576. package/build-style/search/theme.css +12 -0
  577. package/build-style/separator/editor-rtl.css +12 -0
  578. package/build-style/separator/editor.css +12 -0
  579. package/build-style/separator/style-rtl.css +12 -0
  580. package/build-style/separator/style.css +12 -0
  581. package/build-style/separator/theme-rtl.css +12 -0
  582. package/build-style/separator/theme.css +12 -0
  583. package/build-style/shortcode/editor-rtl.css +13 -1
  584. package/build-style/shortcode/editor.css +13 -1
  585. package/build-style/site-logo/editor-rtl.css +12 -0
  586. package/build-style/site-logo/editor.css +12 -0
  587. package/build-style/site-logo/style-rtl.css +12 -0
  588. package/build-style/site-logo/style.css +12 -0
  589. package/build-style/site-tagline/editor-rtl.css +12 -0
  590. package/build-style/site-tagline/editor.css +12 -0
  591. package/build-style/site-title/editor-rtl.css +12 -0
  592. package/build-style/site-title/editor.css +12 -0
  593. package/build-style/site-title/style-rtl.css +12 -0
  594. package/build-style/site-title/style.css +12 -0
  595. package/build-style/social-link/editor-rtl.css +12 -0
  596. package/build-style/social-link/editor.css +12 -0
  597. package/build-style/social-links/editor-rtl.css +12 -0
  598. package/build-style/social-links/editor.css +12 -0
  599. package/build-style/social-links/style-rtl.css +12 -0
  600. package/build-style/social-links/style.css +12 -0
  601. package/build-style/spacer/editor-rtl.css +12 -0
  602. package/build-style/spacer/editor.css +12 -0
  603. package/build-style/spacer/style-rtl.css +12 -0
  604. package/build-style/spacer/style.css +12 -0
  605. package/build-style/style-rtl.css +23 -5
  606. package/build-style/style.css +23 -5
  607. package/build-style/table/editor-rtl.css +12 -8
  608. package/build-style/table/editor.css +12 -8
  609. package/build-style/table/style-rtl.css +12 -0
  610. package/build-style/table/style.css +12 -0
  611. package/build-style/table/theme-rtl.css +12 -0
  612. package/build-style/table/theme.css +12 -0
  613. package/build-style/tag-cloud/style-rtl.css +12 -0
  614. package/build-style/tag-cloud/style.css +12 -0
  615. package/build-style/template-part/editor-rtl.css +27 -1
  616. package/build-style/template-part/editor.css +27 -1
  617. package/build-style/template-part/theme-rtl.css +12 -0
  618. package/build-style/template-part/theme.css +12 -0
  619. package/build-style/text-columns/editor-rtl.css +12 -0
  620. package/build-style/text-columns/editor.css +12 -0
  621. package/build-style/text-columns/style-rtl.css +12 -0
  622. package/build-style/text-columns/style.css +12 -0
  623. package/build-style/theme-rtl.css +12 -0
  624. package/build-style/theme.css +12 -0
  625. package/build-style/verse/style-rtl.css +12 -0
  626. package/build-style/verse/style.css +12 -0
  627. package/build-style/video/editor-rtl.css +12 -0
  628. package/build-style/video/editor.css +12 -0
  629. package/build-style/video/style-rtl.css +14 -1
  630. package/build-style/video/style.css +14 -1
  631. package/build-style/video/theme-rtl.css +12 -0
  632. package/build-style/video/theme.css +12 -0
  633. package/package.json +32 -30
  634. package/src/audio/edit.native.js +1 -2
  635. package/src/audio/index.js +1 -0
  636. package/src/avatar/edit.js +1 -0
  637. package/src/avatar/user-control.js +1 -0
  638. package/src/block/block.json +1 -2
  639. package/src/block/edit.js +14 -3
  640. package/src/block/edit.native.js +24 -12
  641. package/src/block/editor.scss +17 -0
  642. package/src/block/index.php +1 -2
  643. package/src/block/test/edit.native.js +28 -32
  644. package/src/button/edit.native.js +1 -0
  645. package/src/buttons/test/edit.native.js +40 -51
  646. package/src/code/transforms.js +3 -1
  647. package/src/columns/edit.js +1 -0
  648. package/src/columns/edit.native.js +18 -26
  649. package/src/comment-author-avatar/edit.js +1 -0
  650. package/src/cover/edit/inspector-controls.js +2 -0
  651. package/src/cover/edit.native.js +32 -19
  652. package/src/cover/test/edit.native.js +73 -126
  653. package/src/embed/embed-controls.native.js +1 -0
  654. package/src/embed/embed-preview.native.js +1 -2
  655. package/src/embed/test/index.native.js +237 -231
  656. package/src/file/inspector.js +1 -0
  657. package/src/file/test/__snapshots__/edit.native.js.snap +2 -6
  658. package/src/gallery/edit.js +15 -5
  659. package/src/gallery/gallery.native.js +1 -2
  660. package/src/gallery/shared.js +7 -11
  661. package/src/gallery/transforms.js +1 -6
  662. package/src/gallery/use-get-media.js +1 -1
  663. package/src/gallery/use-get-media.native.js +2 -1
  664. package/src/gallery/v1/edit.js +8 -7
  665. package/src/gallery/v1/gallery.native.js +1 -2
  666. package/src/gallery/v1/shared.js +7 -2
  667. package/src/group/block.json +3 -1
  668. package/src/group/edit.js +2 -6
  669. package/src/group/placeholder.js +6 -25
  670. package/src/group/test/__snapshots__/edit.native.js.snap +1 -1
  671. package/src/heading/block.json +1 -2
  672. package/src/heading/deprecated.js +209 -136
  673. package/src/heading/index.php +52 -0
  674. package/src/heading/test/__snapshots__/index.native.js.snap +7 -0
  675. package/src/heading/test/index.native.js +44 -0
  676. package/src/home-link/index.php +1 -1
  677. package/src/html/block.json +1 -1
  678. package/src/image/edit.js +7 -2
  679. package/src/image/edit.native.js +2 -1
  680. package/src/image/editor.scss +0 -11
  681. package/src/image/image.js +13 -8
  682. package/src/image/test/edit.native.js +14 -10
  683. package/src/index.js +2 -0
  684. package/src/latest-comments/edit.js +1 -0
  685. package/src/latest-posts/edit.js +2 -0
  686. package/src/list/test/edit.native.js +53 -45
  687. package/src/list/transforms.js +0 -11
  688. package/src/list/utils.js +6 -2
  689. package/src/list-item/index.js +2 -0
  690. package/src/list-item/transforms.js +17 -0
  691. package/src/list-item/utils.js +10 -1
  692. package/src/media-text/edit.js +5 -3
  693. package/src/missing/test/edit-integration.native.js +10 -12
  694. package/src/navigation/edit/are-blocks-dirty.js +51 -0
  695. package/src/navigation/edit/index.js +230 -298
  696. package/src/navigation/edit/menu-inspector-controls.js +78 -0
  697. package/src/navigation/edit/navigation-menu-selector.js +5 -16
  698. package/src/navigation/edit/test/are-blocks-dirty.js +121 -0
  699. package/src/navigation/edit/unsaved-inner-blocks.js +12 -7
  700. package/src/navigation/index.php +57 -10
  701. package/src/navigation/view-modal.js +11 -1
  702. package/src/navigation-link/edit.js +58 -329
  703. package/src/navigation-link/index.php +32 -0
  704. package/src/navigation-link/link-ui.js +213 -0
  705. package/src/navigation-link/test/edit.js +23 -82
  706. package/src/navigation-link/transforms.js +14 -0
  707. package/src/navigation-link/update-attributes.js +99 -0
  708. package/src/navigation-submenu/edit.js +57 -177
  709. package/src/navigation-submenu/index.php +40 -0
  710. package/src/page-list/block.json +6 -1
  711. package/src/page-list/constants.js +8 -0
  712. package/src/page-list/convert-to-links-modal.js +19 -76
  713. package/src/page-list/convert-to-navigation-links.js +60 -0
  714. package/src/page-list/edit.js +179 -118
  715. package/src/page-list/index.php +9 -0
  716. package/src/page-list/test/convert-to-links-modal.js +28 -34
  717. package/src/page-list-item/block.json +51 -0
  718. package/src/page-list-item/edit.js +94 -0
  719. package/src/page-list-item/index.js +24 -0
  720. package/src/page-list-item/init.js +6 -0
  721. package/src/paragraph/index.js +0 -6
  722. package/src/post-author/edit.js +3 -2
  723. package/src/post-content/index.php +1 -2
  724. package/src/post-featured-image/index.php +7 -2
  725. package/src/post-featured-image/overlay.js +1 -0
  726. package/src/post-template/block.json +8 -0
  727. package/src/preformatted/transforms.js +4 -1
  728. package/src/query/block.json +0 -8
  729. package/src/query/deprecated.js +257 -86
  730. package/src/query/edit/inspector-controls/index.js +1 -0
  731. package/src/query/edit/query-placeholder.js +4 -16
  732. package/src/rss/edit.js +3 -0
  733. package/src/search/edit.native.js +31 -27
  734. package/src/search/index.js +5 -1
  735. package/src/shortcode/test/edit.native.js +15 -18
  736. package/src/site-logo/edit.js +13 -5
  737. package/src/site-logo/index.js +1 -0
  738. package/src/site-title/index.js +1 -0
  739. package/src/social-link/social-list.js +2 -7
  740. package/src/social-link/test/index.native.js +10 -16
  741. package/src/social-links/test/edit.native.js +4 -3
  742. package/src/spacer/test/index.native.js +39 -36
  743. package/src/table/block.json +15 -0
  744. package/src/table/edit.js +2 -1
  745. package/src/table/editor.scss +0 -4
  746. package/src/table/index.js +1 -0
  747. package/src/table/save.js +5 -1
  748. package/src/table/state.js +22 -7
  749. package/src/table/transforms.js +2 -1
  750. package/src/table-of-contents/edit.js +2 -2
  751. package/src/tag-cloud/edit.js +3 -2
  752. package/src/template-part/edit/selection-modal.js +4 -3
  753. package/src/template-part/edit/utils/hooks.js +7 -3
  754. package/src/template-part/editor.scss +20 -2
  755. package/src/template-part/index.php +1 -2
  756. package/src/text-columns/edit.js +1 -0
  757. package/src/utils/transformation-categories.native.js +1 -0
  758. package/src/video/edit.js +1 -1
  759. package/src/video/edit.native.js +1 -2
  760. package/test/babel-plugin.js +35 -35
  761. package/tsconfig.tsbuildinfo +1 -1
@@ -4,24 +4,23 @@ import { createElement } from "@wordpress/element";
4
4
  * External dependencies
5
5
  */
6
6
  import classnames from 'classnames';
7
- import escapeHtml from 'escape-html';
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
11
10
 
12
11
  import { useSelect, useDispatch } from '@wordpress/data';
13
- import { PanelBody, Popover, TextControl, TextareaControl, ToolbarButton, ToolbarGroup } from '@wordpress/components';
12
+ import { PanelBody, TextControl, TextareaControl, ToolbarButton, ToolbarGroup } from '@wordpress/components';
14
13
  import { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';
15
- import { __, sprintf } from '@wordpress/i18n';
16
- import { BlockControls, InnerBlocks, useInnerBlocksProps, InspectorControls, RichText, __experimentalLinkControl as LinkControl, useBlockProps, store as blockEditorStore, getColorClassName } from '@wordpress/block-editor';
17
- import { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';
18
- import { Fragment, useState, useEffect, useRef, createInterpolateElement } from '@wordpress/element';
14
+ import { __ } from '@wordpress/i18n';
15
+ import { BlockControls, InnerBlocks, useInnerBlocksProps, InspectorControls, RichText, useBlockProps, store as blockEditorStore, getColorClassName } from '@wordpress/block-editor';
16
+ import { isURL, prependHTTP } from '@wordpress/url';
17
+ import { Fragment, useState, useEffect, useRef } from '@wordpress/element';
19
18
  import { placeCaretAtHorizontalEdge } from '@wordpress/dom';
20
19
  import { link as linkIcon, removeSubmenu } from '@wordpress/icons';
21
- import { useResourcePermissions, store as coreStore } from '@wordpress/core-data';
20
+ import { useResourcePermissions } from '@wordpress/core-data';
22
21
  import { speak } from '@wordpress/a11y';
23
22
  import { createBlock } from '@wordpress/blocks';
24
- import { useMergeRefs } from '@wordpress/compose';
23
+ import { useMergeRefs, usePrevious } from '@wordpress/compose';
25
24
  /**
26
25
  * Internal dependencies
27
26
  */
@@ -79,7 +78,9 @@ const {
79
78
  editorStyle: "wp-block-navigation-submenu-editor",
80
79
  style: "wp-block-navigation-submenu"
81
80
  };
82
- const ALLOWED_BLOCKS = ['core/navigation-link', 'core/navigation-submenu'];
81
+ import { LinkUI } from '../navigation-link/link-ui';
82
+ import { updateAttributes } from '../navigation-link/update-attributes';
83
+ const ALLOWED_BLOCKS = ['core/navigation-link', 'core/navigation-submenu', 'core/page-list'];
83
84
  const DEFAULT_BLOCK = {
84
85
  name: 'core/navigation-link'
85
86
  };
@@ -133,60 +134,6 @@ const useIsDraggingWithin = elementRef => {
133
134
  }, []);
134
135
  return isDraggingWithin;
135
136
  };
136
- /**
137
- * Given the Link block's type attribute, return the query params to give to
138
- * /wp/v2/search.
139
- *
140
- * @param {string} type Link block's type attribute.
141
- * @param {string} kind Link block's entity of kind (post-type|taxonomy)
142
- * @return {{ type?: string, subtype?: string }} Search query params.
143
- */
144
-
145
-
146
- function getSuggestionsQuery(type, kind) {
147
- switch (type) {
148
- case 'post':
149
- case 'page':
150
- return {
151
- type: 'post',
152
- subtype: type
153
- };
154
-
155
- case 'category':
156
- return {
157
- type: 'term',
158
- subtype: 'category'
159
- };
160
-
161
- case 'tag':
162
- return {
163
- type: 'term',
164
- subtype: 'post_tag'
165
- };
166
-
167
- case 'post_format':
168
- return {
169
- type: 'post-format'
170
- };
171
-
172
- default:
173
- if (kind === 'taxonomy') {
174
- return {
175
- type: 'term',
176
- subtype: type
177
- };
178
- }
179
-
180
- if (kind === 'post-type') {
181
- return {
182
- type: 'post',
183
- subtype: type
184
- };
185
- }
186
-
187
- return {};
188
- }
189
- }
190
137
  /**
191
138
  * Determine the colors for a menu.
192
139
  *
@@ -263,63 +210,7 @@ function getColors(context, isSubMenu) {
263
210
  * @property {string} [title] Link title attribute.
264
211
  */
265
212
 
266
- /**
267
- * Link Control onChange handler that updates block attributes when a setting is changed.
268
- *
269
- * @param {Object} updatedValue New block attributes to update.
270
- * @param {Function} setAttributes Block attribute update function.
271
- * @param {WPNavigationLinkBlockAttributes} blockAttributes Current block attributes.
272
- *
273
- */
274
-
275
213
 
276
- export const updateNavigationLinkBlockAttributes = function () {
277
- let updatedValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
278
- let setAttributes = arguments.length > 1 ? arguments[1] : undefined;
279
- let blockAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
280
- const {
281
- label: originalLabel = '',
282
- kind: originalKind = '',
283
- type: originalType = ''
284
- } = blockAttributes;
285
- const {
286
- title = '',
287
- url = '',
288
- opensInNewTab,
289
- id,
290
- kind: newKind = originalKind,
291
- type: newType = originalType
292
- } = updatedValue;
293
- const normalizedTitle = title.replace(/http(s?):\/\//gi, '');
294
- const normalizedURL = url.replace(/http(s?):\/\//gi, '');
295
- const escapeTitle = title !== '' && normalizedTitle !== normalizedURL && originalLabel !== title;
296
- const label = escapeTitle ? escapeHtml(title) : originalLabel || escapeHtml(normalizedURL); // In https://github.com/WordPress/gutenberg/pull/24670 we decided to use "tag" in favor of "post_tag"
297
-
298
- const type = newType === 'post_tag' ? 'tag' : newType.replace('-', '_');
299
- const isBuiltInType = ['post', 'page', 'tag', 'category'].indexOf(type) > -1;
300
- const isCustomLink = !newKind && !isBuiltInType || newKind === 'custom';
301
- const kind = isCustomLink ? 'custom' : newKind;
302
- setAttributes({ // Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string.
303
- ...(url && {
304
- url: encodeURI(safeDecodeURI(url))
305
- }),
306
- ...(label && {
307
- label
308
- }),
309
- ...(undefined !== opensInNewTab && {
310
- opensInNewTab
311
- }),
312
- ...(id && Number.isInteger(id) && {
313
- id
314
- }),
315
- ...(kind && {
316
- kind
317
- }),
318
- ...(type && type !== 'URL' && {
319
- type
320
- })
321
- });
322
- };
323
214
  export default function NavigationSubmenuEdit(_ref) {
324
215
  let {
325
216
  attributes,
@@ -333,25 +224,16 @@ export default function NavigationSubmenuEdit(_ref) {
333
224
  const {
334
225
  label,
335
226
  type,
336
- opensInNewTab,
337
227
  url,
338
228
  description,
339
229
  rel,
340
- title,
341
- kind
230
+ title
342
231
  } = attributes;
343
- const link = {
344
- url,
345
- opensInNewTab
346
- };
347
232
  const {
348
233
  showSubmenuIcon,
349
234
  maxNestingLevel,
350
235
  openSubmenusOnClick
351
236
  } = context;
352
- const {
353
- saveEntityRecord
354
- } = useDispatch(coreStore);
355
237
  const {
356
238
  __unstableMarkNextChangeAsNotPersistent,
357
239
  replaceBlock
@@ -409,7 +291,8 @@ export default function NavigationSubmenuEdit(_ref) {
409
291
  selectedBlockHasChildren: !!(selectedBlockChildren !== null && selectedBlockChildren !== void 0 && selectedBlockChildren.length),
410
292
  onlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink
411
293
  };
412
- }, [clientId]); // Show the LinkControl on mount if the URL is empty
294
+ }, [clientId]);
295
+ const prevHasChildren = usePrevious(hasChildren); // Show the LinkControl on mount if the URL is empty
413
296
  // ( When adding a new menu item)
414
297
  // This can't be done in the useState call because it conflicts
415
298
  // with the autofocus behavior of the BlockListBlock component.
@@ -482,21 +365,6 @@ export default function NavigationSubmenuEdit(_ref) {
482
365
  userCanCreate = postsPermissions.canCreate;
483
366
  }
484
367
 
485
- async function handleCreate(pageTitle) {
486
- const postType = type || 'page';
487
- const page = await saveEntityRecord('postType', postType, {
488
- title: pageTitle,
489
- status: 'draft'
490
- });
491
- return {
492
- id: page.id,
493
- type: postType,
494
- title: page.title.rendered,
495
- url: page.link,
496
- kind: 'post-type'
497
- };
498
- }
499
-
500
368
  const {
501
369
  textColor,
502
370
  customTextColor,
@@ -562,6 +430,12 @@ export default function NavigationSubmenuEdit(_ref) {
562
430
  replaceBlock(clientId, newLinkBlock);
563
431
  }
564
432
 
433
+ useEffect(() => {
434
+ // If block becomes empty, transform to Navigation Link.
435
+ if (!hasChildren && prevHasChildren) {
436
+ transformToLink();
437
+ }
438
+ }, [hasChildren, prevHasChildren]);
565
439
  const canConvertToLink = !selectedBlockHasChildren || onlyDescendantIsEmptyLink;
566
440
  return createElement(Fragment, null, createElement(BlockControls, null, createElement(ToolbarGroup, null, !openSubmenusOnClick && createElement(ToolbarButton, {
567
441
  name: "link",
@@ -578,7 +452,25 @@ export default function NavigationSubmenuEdit(_ref) {
578
452
  isDisabled: !canConvertToLink
579
453
  }))), createElement(InspectorControls, null, createElement(PanelBody, {
580
454
  title: __('Link settings')
581
- }, createElement(TextareaControl, {
455
+ }, createElement(TextControl, {
456
+ value: label || '',
457
+ onChange: labelValue => {
458
+ setAttributes({
459
+ label: labelValue
460
+ });
461
+ },
462
+ label: __('Label'),
463
+ autoComplete: "off"
464
+ }), createElement(TextControl, {
465
+ value: url || '',
466
+ onChange: urlValue => {
467
+ setAttributes({
468
+ url: urlValue
469
+ });
470
+ },
471
+ label: __('URL'),
472
+ autoComplete: "off"
473
+ }), createElement(TextareaControl, {
582
474
  value: description || '',
583
475
  onChange: descriptionValue => {
584
476
  setAttributes({
@@ -626,43 +518,23 @@ export default function NavigationSubmenuEdit(_ref) {
626
518
  setIsLinkOpen(true);
627
519
  }
628
520
  }
629
- }), !openSubmenusOnClick && isLinkOpen && createElement(Popover, {
630
- placement: "bottom",
521
+ }), !openSubmenusOnClick && isLinkOpen && createElement(LinkUI, {
522
+ className: "wp-block-navigation-link__inline-link-input",
523
+ clientId: clientId,
524
+ link: attributes,
631
525
  onClose: () => setIsLinkOpen(false),
632
526
  anchor: popoverAnchor,
633
- shift: true
634
- }, createElement(LinkControl, {
635
- className: "wp-block-navigation-link__inline-link-input",
636
- value: link,
637
- showInitialSuggestions: true,
638
- withCreateSuggestion: userCanCreate,
639
- createSuggestion: handleCreate,
640
- createSuggestionButtonText: searchTerm => {
641
- let format;
642
-
643
- if (type === 'post') {
644
- /* translators: %s: search term. */
645
- format = __('Create draft post: <mark>%s</mark>');
646
- } else {
647
- /* translators: %s: search term. */
648
- format = __('Create draft page: <mark>%s</mark>');
649
- }
650
-
651
- return createInterpolateElement(sprintf(format, searchTerm), {
652
- mark: createElement("mark", null)
653
- });
654
- },
655
- noDirectEntry: !!type,
656
- noURLSuggestion: !!type,
657
- suggestionsQuery: getSuggestionsQuery(type, kind),
658
- onChange: updatedValue => updateNavigationLinkBlockAttributes(updatedValue, setAttributes, attributes),
527
+ hasCreateSuggestion: userCanCreate,
659
528
  onRemove: () => {
660
529
  setAttributes({
661
530
  url: ''
662
531
  });
663
532
  speak(__('Link removed.'), 'assertive');
533
+ },
534
+ onChange: updatedValue => {
535
+ updateAttributes(updatedValue, setAttributes, attributes);
664
536
  }
665
- }))), (showSubmenuIcon || openSubmenusOnClick) && createElement("span", {
537
+ })), (showSubmenuIcon || openSubmenusOnClick) && createElement("span", {
666
538
  className: "wp-block-navigation__submenu-icon"
667
539
  }, createElement(ItemSubmenuIcon, null)), createElement("div", innerBlocksProps)));
668
540
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation-submenu/edit.js"],"names":["classnames","escapeHtml","useSelect","useDispatch","PanelBody","Popover","TextControl","TextareaControl","ToolbarButton","ToolbarGroup","displayShortcut","isKeyboardEvent","__","sprintf","BlockControls","InnerBlocks","useInnerBlocksProps","InspectorControls","RichText","__experimentalLinkControl","LinkControl","useBlockProps","store","blockEditorStore","getColorClassName","isURL","prependHTTP","safeDecodeURI","Fragment","useState","useEffect","useRef","createInterpolateElement","placeCaretAtHorizontalEdge","link","linkIcon","removeSubmenu","useResourcePermissions","coreStore","speak","createBlock","useMergeRefs","ItemSubmenuIcon","ALLOWED_BLOCKS","DEFAULT_BLOCK","name","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","getSuggestionsQuery","type","kind","subtype","getColors","context","isSubMenu","textColor","customTextColor","backgroundColor","customBackgroundColor","overlayTextColor","customOverlayTextColor","overlayBackgroundColor","customOverlayBackgroundColor","style","colors","color","text","background","updateNavigationLinkBlockAttributes","updatedValue","setAttributes","blockAttributes","label","originalLabel","originalKind","originalType","title","url","opensInNewTab","id","newKind","newType","normalizedTitle","replace","normalizedURL","escapeTitle","isBuiltInType","indexOf","isCustomLink","encodeURI","undefined","Number","isInteger","NavigationSubmenuEdit","attributes","isSelected","mergeBlocks","onReplace","clientId","description","rel","showSubmenuIcon","maxNestingLevel","openSubmenusOnClick","saveEntityRecord","__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","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","userCanCreate","canCreate","handleCreate","pageTitle","postType","page","status","rendered","onKeyDown","primary","blockProps","className","innerBlocksColors","allowedBlocks","filter","blockName","innerBlocksProps","__experimentalDefaultBlock","__experimentalDirectInsert","__experimentalCaptureToolbars","renderAppender","ButtonBlockAppender","ParentElement","transformToLink","newLinkBlock","canConvertToLink","descriptionValue","titleValue","relValue","labelValue","searchTerm","format","mark"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport escapeHtml from 'escape-html';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tPopover,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tRichText,\n\t__experimentalLinkControl as LinkControl,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';\nimport {\n\tFragment,\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { placeCaretAtHorizontalEdge } from '@wordpress/dom';\nimport { link as linkIcon, removeSubmenu } from '@wordpress/icons';\nimport {\n\tuseResourcePermissions,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ItemSubmenuIcon } from './icons';\nimport { name } from './block.json';\n\nconst ALLOWED_BLOCKS = [ 'core/navigation-link', 'core/navigation-submenu' ];\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 * 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 */\nfunction 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 * Determine the colors for a menu.\n *\n * Order of priority is:\n * 1: Overlay custom colors (if submenu)\n * 2: Overlay theme colors (if submenu)\n * 3: Custom colors\n * 4: Theme colors\n * 5: Global styles\n *\n * @param {Object} context\n * @param {boolean} isSubMenu\n */\nfunction getColors( context, isSubMenu ) {\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t\toverlayTextColor,\n\t\tcustomOverlayTextColor,\n\t\toverlayBackgroundColor,\n\t\tcustomOverlayBackgroundColor,\n\t\tstyle,\n\t} = context;\n\n\tconst colors = {};\n\n\tif ( isSubMenu && !! customOverlayTextColor ) {\n\t\tcolors.customTextColor = customOverlayTextColor;\n\t} else if ( isSubMenu && !! overlayTextColor ) {\n\t\tcolors.textColor = overlayTextColor;\n\t} else if ( !! customTextColor ) {\n\t\tcolors.customTextColor = customTextColor;\n\t} else if ( !! textColor ) {\n\t\tcolors.textColor = textColor;\n\t} else if ( !! style?.color?.text ) {\n\t\tcolors.customTextColor = style.color.text;\n\t}\n\n\tif ( isSubMenu && !! customOverlayBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customOverlayBackgroundColor;\n\t} else if ( isSubMenu && !! overlayBackgroundColor ) {\n\t\tcolors.backgroundColor = overlayBackgroundColor;\n\t} else if ( !! customBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customBackgroundColor;\n\t} else if ( !! backgroundColor ) {\n\t\tcolors.backgroundColor = backgroundColor;\n\t} else if ( !! style?.color?.background ) {\n\t\tcolors.customTextColor = style.color.background;\n\t}\n\n\treturn colors;\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\n/**\n * Link Control onChange handler that updates block attributes when a setting is changed.\n *\n * @param {Object} updatedValue New block attributes to update.\n * @param {Function} setAttributes Block attribute update function.\n * @param {WPNavigationLinkBlockAttributes} blockAttributes Current block attributes.\n *\n */\nexport const updateNavigationLinkBlockAttributes = (\n\tupdatedValue = {},\n\tsetAttributes,\n\tblockAttributes = {}\n) => {\n\tconst {\n\t\tlabel: originalLabel = '',\n\t\tkind: originalKind = '',\n\t\ttype: originalType = '',\n\t} = blockAttributes;\n\tconst {\n\t\ttitle = '',\n\t\turl = '',\n\t\topensInNewTab,\n\t\tid,\n\t\tkind: newKind = originalKind,\n\t\ttype: newType = originalType,\n\t} = updatedValue;\n\n\tconst normalizedTitle = title.replace( /http(s?):\\/\\//gi, '' );\n\tconst normalizedURL = url.replace( /http(s?):\\/\\//gi, '' );\n\tconst escapeTitle =\n\t\ttitle !== '' &&\n\t\tnormalizedTitle !== normalizedURL &&\n\t\toriginalLabel !== title;\n\tconst label = escapeTitle\n\t\t? escapeHtml( title )\n\t\t: originalLabel || escapeHtml( normalizedURL );\n\n\t// In https://github.com/WordPress/gutenberg/pull/24670 we decided to use \"tag\" in favor of \"post_tag\"\n\tconst type = newType === 'post_tag' ? 'tag' : newType.replace( '-', '_' );\n\n\tconst isBuiltInType =\n\t\t[ 'post', 'page', 'tag', 'category' ].indexOf( type ) > -1;\n\n\tconst isCustomLink =\n\t\t( ! newKind && ! isBuiltInType ) || newKind === 'custom';\n\tconst kind = isCustomLink ? 'custom' : newKind;\n\n\tsetAttributes( {\n\t\t// Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string.\n\t\t...( url && { url: encodeURI( safeDecodeURI( url ) ) } ),\n\t\t...( label && { label } ),\n\t\t...( undefined !== opensInNewTab && { opensInNewTab } ),\n\t\t...( id && Number.isInteger( id ) && { id } ),\n\t\t...( kind && { kind } ),\n\t\t...( type && type !== 'URL' && { type } ),\n\t} );\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, opensInNewTab, url, description, rel, title, kind } =\n\t\tattributes;\n\tconst link = {\n\t\turl,\n\t\topensInNewTab,\n\t};\n\tconst { showSubmenuIcon, maxNestingLevel, openSubmenusOnClick } = context;\n\tconst { saveEntityRecord } = useDispatch( coreStore );\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\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// Store the colors from context as attributes for rendering.\n\tuseEffect( () => {\n\t\t// This side-effect should not create an undo level as those should\n\t\t// only be created via user interactions. Mark this change as\n\t\t// not persistent to avoid undo level creation.\n\t\t// See https://github.com/WordPress/gutenberg/issues/34564.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( { isTopLevelItem } );\n\t}, [ isTopLevelItem ] );\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\tasync function handleCreate( pageTitle ) {\n\t\tconst postType = 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\ttitle: page.title.rendered,\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\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 innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: classnames( 'wp-block-navigation__submenu-container', {\n\t\t\t\t'is-parent-of-selected-block': isParentOfSelectedBlock,\n\t\t\t\t'has-text-color': !! (\n\t\t\t\t\tinnerBlocksColors.textColor ||\n\t\t\t\t\tinnerBlocksColors.customTextColor\n\t\t\t\t),\n\t\t\t\t[ `has-${ innerBlocksColors.textColor }-color` ]:\n\t\t\t\t\t!! innerBlocksColors.textColor,\n\t\t\t\t'has-background': !! (\n\t\t\t\t\tinnerBlocksColors.backgroundColor ||\n\t\t\t\t\tinnerBlocksColors.customBackgroundColor\n\t\t\t\t),\n\t\t\t\t[ `has-${ innerBlocksColors.backgroundColor }-background-color` ]:\n\t\t\t\t\t!! innerBlocksColors.backgroundColor,\n\t\t\t} ),\n\t\t\tstyle: {\n\t\t\t\tcolor: innerBlocksColors.customTextColor,\n\t\t\t\tbackgroundColor: innerBlocksColors.customBackgroundColor,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tallowedBlocks,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: true,\n\n\t\t\t// Ensure block toolbar is not too far removed from item\n\t\t\t// being edited.\n\t\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t\t__experimentalCaptureToolbars: true,\n\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\thasChildren\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\t\t}\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\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<Fragment>\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<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<TextareaControl\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\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={ __( 'Link title' ) }\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\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={ __( 'Link rel' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\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<Popover\n\t\t\t\t\t\t\tplacement=\"bottom\"\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\tshift\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\t\tvalue={ link }\n\t\t\t\t\t\t\t\tshowInitialSuggestions={ true }\n\t\t\t\t\t\t\t\twithCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\t\tcreateSuggestion={ handleCreate }\n\t\t\t\t\t\t\t\tcreateSuggestionButtonText={ ( searchTerm ) => {\n\t\t\t\t\t\t\t\t\tlet format;\n\t\t\t\t\t\t\t\t\tif ( type === 'post' ) {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft post: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft page: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\t\t\t\t\tsprintf( format, searchTerm ),\n\t\t\t\t\t\t\t\t\t\t{ mark: <mark /> }\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\tnoDirectEntry={ !! type }\n\t\t\t\t\t\t\t\tnoURLSuggestion={ !! type }\n\t\t\t\t\t\t\t\tsuggestionsQuery={ getSuggestionsQuery(\n\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\tkind\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ ( updatedValue ) =>\n\t\t\t\t\t\t\t\t\tupdateNavigationLinkBlockAttributes(\n\t\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\t\tattributes\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\tonRemove={ () => {\n\t\t\t\t\t\t\t\t\tsetAttributes( { url: '' } );\n\t\t\t\t\t\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover>\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</Fragment>\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","Fragment","useState","useEffect","useRef","placeCaretAtHorizontalEdge","link","linkIcon","removeSubmenu","useResourcePermissions","speak","createBlock","useMergeRefs","usePrevious","ItemSubmenuIcon","LinkUI","updateAttributes","ALLOWED_BLOCKS","DEFAULT_BLOCK","name","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","getColors","context","isSubMenu","textColor","customTextColor","backgroundColor","customBackgroundColor","overlayTextColor","customOverlayTextColor","overlayBackgroundColor","customOverlayBackgroundColor","style","colors","color","text","background","NavigationSubmenuEdit","attributes","isSelected","setAttributes","mergeBlocks","onReplace","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","onKeyDown","primary","blockProps","className","innerBlocksColors","allowedBlocks","filter","blockName","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 { Fragment, 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';\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 * Determine the colors for a menu.\n *\n * Order of priority is:\n * 1: Overlay custom colors (if submenu)\n * 2: Overlay theme colors (if submenu)\n * 3: Custom colors\n * 4: Theme colors\n * 5: Global styles\n *\n * @param {Object} context\n * @param {boolean} isSubMenu\n */\nfunction getColors( context, isSubMenu ) {\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t\toverlayTextColor,\n\t\tcustomOverlayTextColor,\n\t\toverlayBackgroundColor,\n\t\tcustomOverlayBackgroundColor,\n\t\tstyle,\n\t} = context;\n\n\tconst colors = {};\n\n\tif ( isSubMenu && !! customOverlayTextColor ) {\n\t\tcolors.customTextColor = customOverlayTextColor;\n\t} else if ( isSubMenu && !! overlayTextColor ) {\n\t\tcolors.textColor = overlayTextColor;\n\t} else if ( !! customTextColor ) {\n\t\tcolors.customTextColor = customTextColor;\n\t} else if ( !! textColor ) {\n\t\tcolors.textColor = textColor;\n\t} else if ( !! style?.color?.text ) {\n\t\tcolors.customTextColor = style.color.text;\n\t}\n\n\tif ( isSubMenu && !! customOverlayBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customOverlayBackgroundColor;\n\t} else if ( isSubMenu && !! overlayBackgroundColor ) {\n\t\tcolors.backgroundColor = overlayBackgroundColor;\n\t} else if ( !! customBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customBackgroundColor;\n\t} else if ( !! backgroundColor ) {\n\t\tcolors.backgroundColor = backgroundColor;\n\t} else if ( !! style?.color?.background ) {\n\t\tcolors.customTextColor = style.color.background;\n\t}\n\n\treturn colors;\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// Store the colors from context as attributes for rendering.\n\tuseEffect( () => {\n\t\t// This side-effect should not create an undo level as those should\n\t\t// only be created via user interactions. Mark this change as\n\t\t// not persistent to avoid undo level creation.\n\t\t// See https://github.com/WordPress/gutenberg/issues/34564.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( { isTopLevelItem } );\n\t}, [ isTopLevelItem ] );\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 innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: classnames( 'wp-block-navigation__submenu-container', {\n\t\t\t\t'is-parent-of-selected-block': isParentOfSelectedBlock,\n\t\t\t\t'has-text-color': !! (\n\t\t\t\t\tinnerBlocksColors.textColor ||\n\t\t\t\t\tinnerBlocksColors.customTextColor\n\t\t\t\t),\n\t\t\t\t[ `has-${ innerBlocksColors.textColor }-color` ]:\n\t\t\t\t\t!! innerBlocksColors.textColor,\n\t\t\t\t'has-background': !! (\n\t\t\t\t\tinnerBlocksColors.backgroundColor ||\n\t\t\t\t\tinnerBlocksColors.customBackgroundColor\n\t\t\t\t),\n\t\t\t\t[ `has-${ innerBlocksColors.backgroundColor }-background-color` ]:\n\t\t\t\t\t!! innerBlocksColors.backgroundColor,\n\t\t\t} ),\n\t\t\tstyle: {\n\t\t\t\tcolor: innerBlocksColors.customTextColor,\n\t\t\t\tbackgroundColor: innerBlocksColors.customBackgroundColor,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tallowedBlocks,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: true,\n\n\t\t\t// Ensure block toolbar is not too far removed from item\n\t\t\t// being edited.\n\t\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t\t__experimentalCaptureToolbars: true,\n\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\thasChildren\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\t\t}\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\ttransformToLink();\n\t\t}\n\t}, [ hasChildren, prevHasChildren ] );\n\n\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<Fragment>\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={ __( 'Link settings' ) }>\n\t\t\t\t\t<TextControl\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\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\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\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={ __( 'Link title' ) }\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\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={ __( 'Link rel' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\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</Fragment>\n\t);\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ export const convertDescription = __('This menu is automatically kept in sync with pages on your site. You can manage the menu yourself by clicking customize below.');
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-library/src/page-list/constants.js"],"names":["__","convertDescription"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AAEA,OAAO,MAAMC,kBAAkB,GAAGD,EAAE,CACnC,gIADmC,CAA7B","sourcesContent":["/**\n * WordPress dependencies\n */\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 customize below.'\n);\n"]}
@@ -7,84 +7,24 @@ import { Button, Modal } from '@wordpress/components';
7
7
  import { __ } from '@wordpress/i18n';
8
8
  import { useDispatch } from '@wordpress/data';
9
9
  import { useEntityRecords } from '@wordpress/core-data';
10
- import { createBlock as create } from '@wordpress/blocks';
11
10
  import { store as blockEditorStore } from '@wordpress/block-editor';
12
- const PAGE_FIELDS = ['id', 'title', 'link', 'type', 'parent'];
13
- const MAX_PAGE_COUNT = 100;
14
- export const convertSelectedBlockToNavigationLinks = _ref => {
15
- let {
16
- pages,
17
- clientId,
18
- replaceBlock,
19
- createBlock
20
- } = _ref;
21
- return () => {
22
- if (!pages) {
23
- return;
24
- }
25
-
26
- const linkMap = {};
27
- const navigationLinks = [];
28
- pages.forEach(_ref2 => {
29
- var _linkMap$id$innerBloc, _linkMap$id;
30
-
31
- let {
32
- id,
33
- title,
34
- link: url,
35
- type,
36
- parent
37
- } = _ref2;
38
- // See if a placeholder exists. This is created if children appear before parents in list.
39
- const innerBlocks = (_linkMap$id$innerBloc = (_linkMap$id = linkMap[id]) === null || _linkMap$id === void 0 ? void 0 : _linkMap$id.innerBlocks) !== null && _linkMap$id$innerBloc !== void 0 ? _linkMap$id$innerBloc : [];
40
- linkMap[id] = createBlock('core/navigation-link', {
41
- id,
42
- label: title.rendered,
43
- url,
44
- type,
45
- kind: 'post-type'
46
- }, innerBlocks);
47
-
48
- if (!parent) {
49
- navigationLinks.push(linkMap[id]);
50
- } else {
51
- if (!linkMap[parent]) {
52
- // Use a placeholder if the child appears before parent in list.
53
- linkMap[parent] = {
54
- innerBlocks: []
55
- };
56
- }
57
-
58
- const parentLinkInnerBlocks = linkMap[parent].innerBlocks;
59
- parentLinkInnerBlocks.push(linkMap[id]);
60
- }
61
- }); // Transform all links with innerBlocks into Submenus. This can't be done
62
- // sooner because page objects have no information on their children.
63
-
64
- const transformSubmenus = listOfLinks => {
65
- listOfLinks.forEach((block, index, listOfLinksArray) => {
66
- const {
67
- attributes,
68
- innerBlocks
69
- } = block;
11
+ /**
12
+ * Internal dependencies
13
+ */
70
14
 
71
- if (innerBlocks.length !== 0) {
72
- transformSubmenus(innerBlocks);
73
- const transformedBlock = createBlock('core/navigation-submenu', attributes, innerBlocks);
74
- listOfLinksArray[index] = transformedBlock;
75
- }
76
- });
77
- };
15
+ import { convertToNavigationLinks } from './convert-to-navigation-links';
16
+ /**
17
+ * Internal dependencies
18
+ */
78
19
 
79
- transformSubmenus(navigationLinks);
80
- replaceBlock(clientId, navigationLinks);
81
- };
82
- };
83
- export default function ConvertToLinksModal(_ref3) {
20
+ import { convertDescription } from './constants';
21
+ const PAGE_FIELDS = ['id', 'title', 'link', 'type', 'parent'];
22
+ const MAX_PAGE_COUNT = 100;
23
+ export default function ConvertToLinksModal(_ref) {
84
24
  let {
85
25
  onClose,
86
26
  clientId
87
- } = _ref3;
27
+ } = _ref;
88
28
  const {
89
29
  records: pages,
90
30
  hasResolved: pagesFinished
@@ -103,14 +43,14 @@ export default function ConvertToLinksModal(_ref3) {
103
43
  return createElement(Modal, {
104
44
  closeLabel: __('Close'),
105
45
  onRequestClose: onClose,
106
- title: __('Convert to links'),
46
+ title: __('Customize this menu'),
107
47
  className: 'wp-block-page-list-modal',
108
48
  aria: {
109
49
  describedby: 'wp-block-page-list-modal__description'
110
50
  }
111
51
  }, createElement("p", {
112
52
  id: 'wp-block-page-list-modal__description'
113
- }, __('To edit this navigation menu, convert it to single page links. This allows you to add, re-order, remove items, or edit their labels.')), createElement("p", null, __("Note: if you add new pages to your site, you'll need to add them to your navigation menu.")), createElement("div", {
53
+ }, convertDescription), createElement("div", {
114
54
  className: "wp-block-page-list-modal-buttons"
115
55
  }, createElement(Button, {
116
56
  variant: "tertiary",
@@ -118,12 +58,11 @@ export default function ConvertToLinksModal(_ref3) {
118
58
  }, __('Cancel')), createElement(Button, {
119
59
  variant: "primary",
120
60
  disabled: !pagesFinished,
121
- onClick: convertSelectedBlockToNavigationLinks({
122
- pages,
123
- replaceBlock,
124
- clientId,
125
- createBlock: create
126
- })
127
- }, __('Convert'))));
61
+ onClick: () => {
62
+ const navigationLinks = convertToNavigationLinks(pages); // Replace the Page List block with the Navigation Links.
63
+
64
+ replaceBlock(clientId, navigationLinks);
65
+ }
66
+ }, __('Customize'))));
128
67
  }
129
68
  //# sourceMappingURL=convert-to-links-modal.js.map