@wordpress/block-library 8.13.0 → 8.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/archives/index.js +5 -1
  3. package/build/archives/index.js.map +1 -1
  4. package/build/audio/index.js +5 -1
  5. package/build/audio/index.js.map +1 -1
  6. package/build/avatar/edit.js +1 -0
  7. package/build/avatar/edit.js.map +1 -1
  8. package/build/avatar/index.js +1 -1
  9. package/build/block/edit.js +1 -1
  10. package/build/block/edit.js.map +1 -1
  11. package/build/block/edit.native.js +6 -9
  12. package/build/block/edit.native.js.map +1 -1
  13. package/build/block/index.js +2 -1
  14. package/build/block/index.js.map +1 -1
  15. package/build/buttons/edit.js +7 -3
  16. package/build/buttons/edit.js.map +1 -1
  17. package/build/categories/index.js +5 -1
  18. package/build/categories/index.js.map +1 -1
  19. package/build/code/index.js +5 -1
  20. package/build/code/index.js.map +1 -1
  21. package/build/column/edit.native.js +1 -4
  22. package/build/column/edit.native.js.map +1 -1
  23. package/build/column/index.js +1 -0
  24. package/build/column/index.js.map +1 -1
  25. package/build/columns/edit.js +1 -0
  26. package/build/columns/edit.js.map +1 -1
  27. package/build/comment-author-avatar/edit.js +1 -0
  28. package/build/comment-author-avatar/edit.js.map +1 -1
  29. package/build/comments/index.js +1 -0
  30. package/build/comments/index.js.map +1 -1
  31. package/build/cover/deprecated.js +4 -2
  32. package/build/cover/deprecated.js.map +1 -1
  33. package/build/cover/edit/inspector-controls.js +2 -1
  34. package/build/cover/edit/inspector-controls.js.map +1 -1
  35. package/build/cover/index.js +1 -0
  36. package/build/cover/index.js.map +1 -1
  37. package/build/details/index.js +5 -1
  38. package/build/details/index.js.map +1 -1
  39. package/build/embed/embed-placeholder.native.js +37 -13
  40. package/build/embed/embed-placeholder.native.js.map +1 -1
  41. package/build/embed/util.js +9 -8
  42. package/build/embed/util.js.map +1 -1
  43. package/build/file/inspector.js +1 -0
  44. package/build/file/inspector.js.map +1 -1
  45. package/build/file/{interactivity.js → view-interactivity.js} +6 -2
  46. package/build/file/view-interactivity.js.map +1 -0
  47. package/build/footnotes/edit.js +20 -1
  48. package/build/footnotes/edit.js.map +1 -1
  49. package/build/footnotes/format.js +19 -16
  50. package/build/footnotes/format.js.map +1 -1
  51. package/build/footnotes/index.js +0 -1
  52. package/build/footnotes/index.js.map +1 -1
  53. package/build/gallery/edit.js +1 -1
  54. package/build/gallery/edit.js.map +1 -1
  55. package/build/gallery/index.js +3 -1
  56. package/build/gallery/index.js.map +1 -1
  57. package/build/group/index.js +1 -0
  58. package/build/group/index.js.map +1 -1
  59. package/build/heading/index.js +5 -1
  60. package/build/heading/index.js.map +1 -1
  61. package/build/heading/transforms.js +5 -1
  62. package/build/heading/transforms.js.map +1 -1
  63. package/build/image/deprecated.js +453 -175
  64. package/build/image/deprecated.js.map +1 -1
  65. package/build/image/edit.js +0 -4
  66. package/build/image/edit.js.map +1 -1
  67. package/build/image/image.js +96 -43
  68. package/build/image/image.js.map +1 -1
  69. package/build/image/index.js +6 -0
  70. package/build/image/index.js.map +1 -1
  71. package/build/image/save.js +8 -1
  72. package/build/image/save.js.map +1 -1
  73. package/build/image/utils.js +18 -0
  74. package/build/image/utils.js.map +1 -1
  75. package/build/image/{interactivity.js → view-interactivity.js} +86 -44
  76. package/build/image/view-interactivity.js.map +1 -0
  77. package/build/index.js +12 -3
  78. package/build/index.js.map +1 -1
  79. package/build/latest-comments/edit.js +1 -0
  80. package/build/latest-comments/edit.js.map +1 -1
  81. package/build/latest-posts/edit.js +2 -0
  82. package/build/latest-posts/edit.js.map +1 -1
  83. package/build/list/edit.js +4 -4
  84. package/build/list/edit.js.map +1 -1
  85. package/build/list/index.js +5 -1
  86. package/build/list/index.js.map +1 -1
  87. package/build/list-item/utils.js +6 -1
  88. package/build/list-item/utils.js.map +1 -1
  89. package/build/media-text/index.js +1 -0
  90. package/build/media-text/index.js.map +1 -1
  91. package/build/media-text/media-container.native.js +2 -1
  92. package/build/media-text/media-container.native.js.map +1 -1
  93. package/build/missing/edit.js +22 -8
  94. package/build/missing/edit.js.map +1 -1
  95. package/build/missing/edit.native.js +7 -5
  96. package/build/missing/edit.native.js.map +1 -1
  97. package/build/navigation/constants.js +10 -4
  98. package/build/navigation/constants.js.map +1 -1
  99. package/build/navigation/edit/index.js +17 -3
  100. package/build/navigation/edit/index.js.map +1 -1
  101. package/build/navigation/edit/inner-blocks.js +2 -2
  102. package/build/navigation/edit/inner-blocks.js.map +1 -1
  103. package/build/navigation/edit/menu-inspector-controls.js +0 -1
  104. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  105. package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
  106. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  107. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
  108. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  109. package/build/navigation/use-navigation-menu.js +33 -45
  110. package/build/navigation/use-navigation-menu.js.map +1 -1
  111. package/build/navigation/view-interactivity.js +185 -0
  112. package/build/navigation/view-interactivity.js.map +1 -0
  113. package/build/navigation-link/edit.js +12 -18
  114. package/build/navigation-link/edit.js.map +1 -1
  115. package/build/navigation-link/link-ui.js +12 -2
  116. package/build/navigation-link/link-ui.js.map +1 -1
  117. package/build/navigation-submenu/edit.js +2 -2
  118. package/build/navigation-submenu/edit.js.map +1 -1
  119. package/build/page-list/convert-to-links-modal.js +3 -3
  120. package/build/page-list/convert-to-links-modal.js.map +1 -1
  121. package/build/page-list/edit.js +34 -39
  122. package/build/page-list/edit.js.map +1 -1
  123. package/build/page-list/use-convert-to-navigation-links.js +2 -15
  124. package/build/page-list/use-convert-to-navigation-links.js.map +1 -1
  125. package/build/paragraph/index.js +1 -0
  126. package/build/paragraph/index.js.map +1 -1
  127. package/build/paragraph/transforms.js +1 -0
  128. package/build/paragraph/transforms.js.map +1 -1
  129. package/build/post-comments-form/index.js +1 -0
  130. package/build/post-comments-form/index.js.map +1 -1
  131. package/build/post-navigation-link/index.js +1 -0
  132. package/build/post-navigation-link/index.js.map +1 -1
  133. package/build/post-time-to-read/index.js +5 -1
  134. package/build/post-time-to-read/index.js.map +1 -1
  135. package/build/query-pagination/edit.js +1 -1
  136. package/build/query-pagination/edit.js.map +1 -1
  137. package/build/query-pagination-numbers/index.js +1 -1
  138. package/build/query-title/edit.js +43 -1
  139. package/build/query-title/edit.js.map +1 -1
  140. package/build/quote/index.js +1 -0
  141. package/build/quote/index.js.map +1 -1
  142. package/build/quote/transforms.js +8 -0
  143. package/build/quote/transforms.js.map +1 -1
  144. package/build/rss/edit.js +3 -0
  145. package/build/rss/edit.js.map +1 -1
  146. package/build/search/edit.js +4 -3
  147. package/build/search/edit.js.map +1 -1
  148. package/build/search/index.js +1 -0
  149. package/build/search/index.js.map +1 -1
  150. package/build/site-logo/edit.js +1 -0
  151. package/build/site-logo/edit.js.map +1 -1
  152. package/build/site-logo/index.js +5 -1
  153. package/build/site-logo/index.js.map +1 -1
  154. package/build/site-tagline/icon.js +1 -1
  155. package/build/site-tagline/icon.js.map +1 -1
  156. package/build/site-tagline/index.js +5 -1
  157. package/build/site-tagline/index.js.map +1 -1
  158. package/build/site-title/index.js +5 -1
  159. package/build/site-title/index.js.map +1 -1
  160. package/build/social-links/index.js +3 -1
  161. package/build/social-links/index.js.map +1 -1
  162. package/build/table/index.js +5 -1
  163. package/build/table/index.js.map +1 -1
  164. package/build/tag-cloud/edit.js +1 -0
  165. package/build/tag-cloud/edit.js.map +1 -1
  166. package/build/template-part/edit/index.js +1 -1
  167. package/build/template-part/edit/index.js.map +1 -1
  168. package/build/term-description/index.js +1 -0
  169. package/build/term-description/index.js.map +1 -1
  170. package/build/text-columns/edit.js +1 -0
  171. package/build/text-columns/edit.js.map +1 -1
  172. package/build/verse/index.js +5 -1
  173. package/build/verse/index.js.map +1 -1
  174. package/build/video/deprecated.js +5 -1
  175. package/build/video/deprecated.js.map +1 -1
  176. package/build/video/index.js +5 -1
  177. package/build/video/index.js.map +1 -1
  178. package/build-module/archives/index.js +5 -1
  179. package/build-module/archives/index.js.map +1 -1
  180. package/build-module/audio/index.js +5 -1
  181. package/build-module/audio/index.js.map +1 -1
  182. package/build-module/avatar/edit.js +1 -0
  183. package/build-module/avatar/edit.js.map +1 -1
  184. package/build-module/avatar/index.js +1 -1
  185. package/build-module/block/edit.js +1 -1
  186. package/build-module/block/edit.js.map +1 -1
  187. package/build-module/block/edit.native.js +7 -9
  188. package/build-module/block/edit.native.js.map +1 -1
  189. package/build-module/block/index.js +2 -1
  190. package/build-module/block/index.js.map +1 -1
  191. package/build-module/buttons/edit.js +7 -3
  192. package/build-module/buttons/edit.js.map +1 -1
  193. package/build-module/categories/index.js +5 -1
  194. package/build-module/categories/index.js.map +1 -1
  195. package/build-module/code/index.js +5 -1
  196. package/build-module/code/index.js.map +1 -1
  197. package/build-module/column/edit.native.js +1 -4
  198. package/build-module/column/edit.native.js.map +1 -1
  199. package/build-module/column/index.js +1 -0
  200. package/build-module/column/index.js.map +1 -1
  201. package/build-module/columns/edit.js +1 -0
  202. package/build-module/columns/edit.js.map +1 -1
  203. package/build-module/comment-author-avatar/edit.js +1 -0
  204. package/build-module/comment-author-avatar/edit.js.map +1 -1
  205. package/build-module/comments/index.js +1 -0
  206. package/build-module/comments/index.js.map +1 -1
  207. package/build-module/cover/deprecated.js +4 -2
  208. package/build-module/cover/deprecated.js.map +1 -1
  209. package/build-module/cover/edit/inspector-controls.js +2 -1
  210. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  211. package/build-module/cover/index.js +1 -0
  212. package/build-module/cover/index.js.map +1 -1
  213. package/build-module/details/index.js +5 -1
  214. package/build-module/details/index.js.map +1 -1
  215. package/build-module/embed/embed-placeholder.native.js +37 -14
  216. package/build-module/embed/embed-placeholder.native.js.map +1 -1
  217. package/build-module/embed/util.js +6 -6
  218. package/build-module/embed/util.js.map +1 -1
  219. package/build-module/file/inspector.js +1 -0
  220. package/build-module/file/inspector.js.map +1 -1
  221. package/build-module/file/{interactivity.js → view-interactivity.js} +6 -2
  222. package/build-module/file/view-interactivity.js.map +1 -0
  223. package/build-module/footnotes/edit.js +18 -2
  224. package/build-module/footnotes/edit.js.map +1 -1
  225. package/build-module/footnotes/format.js +19 -16
  226. package/build-module/footnotes/format.js.map +1 -1
  227. package/build-module/footnotes/index.js +0 -1
  228. package/build-module/footnotes/index.js.map +1 -1
  229. package/build-module/gallery/edit.js +1 -1
  230. package/build-module/gallery/edit.js.map +1 -1
  231. package/build-module/gallery/index.js +3 -1
  232. package/build-module/gallery/index.js.map +1 -1
  233. package/build-module/group/index.js +1 -0
  234. package/build-module/group/index.js.map +1 -1
  235. package/build-module/heading/index.js +5 -1
  236. package/build-module/heading/index.js.map +1 -1
  237. package/build-module/heading/transforms.js +5 -1
  238. package/build-module/heading/transforms.js.map +1 -1
  239. package/build-module/image/deprecated.js +454 -176
  240. package/build-module/image/deprecated.js.map +1 -1
  241. package/build-module/image/edit.js +0 -4
  242. package/build-module/image/edit.js.map +1 -1
  243. package/build-module/image/image.js +96 -46
  244. package/build-module/image/image.js.map +1 -1
  245. package/build-module/image/index.js +6 -0
  246. package/build-module/image/index.js.map +1 -1
  247. package/build-module/image/save.js +8 -1
  248. package/build-module/image/save.js.map +1 -1
  249. package/build-module/image/utils.js +16 -0
  250. package/build-module/image/utils.js.map +1 -1
  251. package/build-module/image/{interactivity.js → view-interactivity.js} +86 -44
  252. package/build-module/image/view-interactivity.js.map +1 -0
  253. package/build-module/index.js +12 -3
  254. package/build-module/index.js.map +1 -1
  255. package/build-module/latest-comments/edit.js +1 -0
  256. package/build-module/latest-comments/edit.js.map +1 -1
  257. package/build-module/latest-posts/edit.js +2 -0
  258. package/build-module/latest-posts/edit.js.map +1 -1
  259. package/build-module/list/edit.js +4 -4
  260. package/build-module/list/edit.js.map +1 -1
  261. package/build-module/list/index.js +5 -1
  262. package/build-module/list/index.js.map +1 -1
  263. package/build-module/list-item/utils.js +6 -1
  264. package/build-module/list-item/utils.js.map +1 -1
  265. package/build-module/media-text/index.js +1 -0
  266. package/build-module/media-text/index.js.map +1 -1
  267. package/build-module/media-text/media-container.native.js +2 -1
  268. package/build-module/media-text/media-container.native.js.map +1 -1
  269. package/build-module/missing/edit.js +22 -8
  270. package/build-module/missing/edit.js.map +1 -1
  271. package/build-module/missing/edit.native.js +8 -6
  272. package/build-module/missing/edit.native.js.map +1 -1
  273. package/build-module/navigation/constants.js +8 -3
  274. package/build-module/navigation/constants.js.map +1 -1
  275. package/build-module/navigation/edit/index.js +18 -4
  276. package/build-module/navigation/edit/index.js.map +1 -1
  277. package/build-module/navigation/edit/inner-blocks.js +2 -2
  278. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  279. package/build-module/navigation/edit/menu-inspector-controls.js +0 -1
  280. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  281. package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
  282. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  283. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
  284. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  285. package/build-module/navigation/use-navigation-menu.js +35 -47
  286. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  287. package/build-module/navigation/view-interactivity.js +182 -0
  288. package/build-module/navigation/view-interactivity.js.map +1 -0
  289. package/build-module/navigation-link/edit.js +13 -19
  290. package/build-module/navigation-link/edit.js.map +1 -1
  291. package/build-module/navigation-link/link-ui.js +13 -3
  292. package/build-module/navigation-link/link-ui.js.map +1 -1
  293. package/build-module/navigation-submenu/edit.js +2 -2
  294. package/build-module/navigation-submenu/edit.js.map +1 -1
  295. package/build-module/page-list/convert-to-links-modal.js +3 -3
  296. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  297. package/build-module/page-list/edit.js +34 -39
  298. package/build-module/page-list/edit.js.map +1 -1
  299. package/build-module/page-list/use-convert-to-navigation-links.js +3 -16
  300. package/build-module/page-list/use-convert-to-navigation-links.js.map +1 -1
  301. package/build-module/paragraph/index.js +1 -0
  302. package/build-module/paragraph/index.js.map +1 -1
  303. package/build-module/paragraph/transforms.js +1 -0
  304. package/build-module/paragraph/transforms.js.map +1 -1
  305. package/build-module/post-comments-form/index.js +1 -0
  306. package/build-module/post-comments-form/index.js.map +1 -1
  307. package/build-module/post-navigation-link/index.js +1 -0
  308. package/build-module/post-navigation-link/index.js.map +1 -1
  309. package/build-module/post-time-to-read/index.js +5 -1
  310. package/build-module/post-time-to-read/index.js.map +1 -1
  311. package/build-module/query-pagination/edit.js +1 -1
  312. package/build-module/query-pagination/edit.js.map +1 -1
  313. package/build-module/query-pagination-numbers/index.js +1 -1
  314. package/build-module/query-title/edit.js +44 -3
  315. package/build-module/query-title/edit.js.map +1 -1
  316. package/build-module/quote/index.js +1 -0
  317. package/build-module/quote/index.js.map +1 -1
  318. package/build-module/quote/transforms.js +8 -0
  319. package/build-module/quote/transforms.js.map +1 -1
  320. package/build-module/rss/edit.js +3 -0
  321. package/build-module/rss/edit.js.map +1 -1
  322. package/build-module/search/edit.js +4 -3
  323. package/build-module/search/edit.js.map +1 -1
  324. package/build-module/search/index.js +1 -0
  325. package/build-module/search/index.js.map +1 -1
  326. package/build-module/site-logo/edit.js +1 -0
  327. package/build-module/site-logo/edit.js.map +1 -1
  328. package/build-module/site-logo/index.js +5 -1
  329. package/build-module/site-logo/index.js.map +1 -1
  330. package/build-module/site-tagline/icon.js +1 -1
  331. package/build-module/site-tagline/icon.js.map +1 -1
  332. package/build-module/site-tagline/index.js +5 -1
  333. package/build-module/site-tagline/index.js.map +1 -1
  334. package/build-module/site-title/index.js +5 -1
  335. package/build-module/site-title/index.js.map +1 -1
  336. package/build-module/social-links/index.js +3 -1
  337. package/build-module/social-links/index.js.map +1 -1
  338. package/build-module/table/index.js +5 -1
  339. package/build-module/table/index.js.map +1 -1
  340. package/build-module/tag-cloud/edit.js +1 -0
  341. package/build-module/tag-cloud/edit.js.map +1 -1
  342. package/build-module/template-part/edit/index.js +1 -1
  343. package/build-module/template-part/edit/index.js.map +1 -1
  344. package/build-module/term-description/index.js +1 -0
  345. package/build-module/term-description/index.js.map +1 -1
  346. package/build-module/text-columns/edit.js +1 -0
  347. package/build-module/text-columns/edit.js.map +1 -1
  348. package/build-module/verse/index.js +5 -1
  349. package/build-module/verse/index.js.map +1 -1
  350. package/build-module/video/deprecated.js +5 -1
  351. package/build-module/video/deprecated.js.map +1 -1
  352. package/build-module/video/index.js +5 -1
  353. package/build-module/video/index.js.map +1 -1
  354. package/build-style/details/style-rtl.css +4 -2
  355. package/build-style/details/style.css +4 -2
  356. package/build-style/footnotes/style-rtl.css +4 -3
  357. package/build-style/footnotes/style.css +4 -3
  358. package/build-style/image/style-rtl.css +16 -2
  359. package/build-style/image/style.css +16 -2
  360. package/build-style/navigation/style-rtl.css +14 -2
  361. package/build-style/navigation/style.css +14 -2
  362. package/build-style/query-pagination/style-rtl.css +4 -2
  363. package/build-style/query-pagination/style.css +4 -2
  364. package/build-style/style-rtl.css +42 -11
  365. package/build-style/style.css +42 -11
  366. package/package.json +33 -37
  367. package/src/archives/block.json +5 -1
  368. package/src/audio/block.json +5 -1
  369. package/src/audio/test/__snapshots__/edit.native.js.snap +58 -33
  370. package/src/avatar/block.json +1 -1
  371. package/src/avatar/edit.js +1 -0
  372. package/src/block/block.json +2 -1
  373. package/src/block/edit.js +2 -2
  374. package/src/block/edit.native.js +8 -12
  375. package/src/block/editor.native.scss +2 -2
  376. package/src/block/test/edit.native.js +4 -4
  377. package/src/buttons/edit.js +4 -4
  378. package/src/categories/block.json +5 -1
  379. package/src/code/block.json +5 -1
  380. package/src/column/block.json +1 -0
  381. package/src/column/edit.native.js +4 -10
  382. package/src/column/editor.native.scss +0 -4
  383. package/src/columns/edit.js +1 -0
  384. package/src/comment-author-avatar/edit.js +1 -0
  385. package/src/comment-template/index.php +5 -2
  386. package/src/comments/block.json +1 -0
  387. package/src/cover/block.json +1 -0
  388. package/src/cover/deprecated.js +2 -0
  389. package/src/cover/edit/inspector-controls.js +1 -0
  390. package/src/details/block.json +5 -1
  391. package/src/embed/embed-placeholder.native.js +80 -47
  392. package/src/embed/styles.native.scss +54 -18
  393. package/src/embed/test/index.native.js +5 -5
  394. package/src/embed/util.js +4 -6
  395. package/src/file/index.php +4 -3
  396. package/src/file/inspector.js +1 -0
  397. package/src/file/test/__snapshots__/edit.native.js.snap +58 -33
  398. package/src/file/{interactivity.js → view-interactivity.js} +4 -1
  399. package/src/footnotes/block.json +0 -1
  400. package/src/footnotes/edit.js +21 -2
  401. package/src/footnotes/format.js +22 -20
  402. package/src/footnotes/index.php +11 -9
  403. package/src/footnotes/style.scss +6 -3
  404. package/src/gallery/block.json +3 -1
  405. package/src/gallery/edit.js +1 -1
  406. package/src/gallery/test/index.native.js +17 -16
  407. package/src/group/block.json +1 -0
  408. package/src/heading/block.json +5 -1
  409. package/src/heading/test/index.native.js +18 -0
  410. package/src/home-link/index.php +15 -2
  411. package/src/image/block.json +6 -0
  412. package/src/image/deprecated.js +597 -320
  413. package/src/image/edit.js +0 -4
  414. package/src/image/image.js +131 -62
  415. package/src/image/index.php +47 -8
  416. package/src/image/save.js +9 -1
  417. package/src/image/style.scss +15 -2
  418. package/src/image/test/edit.native.js +1 -1
  419. package/src/image/utils.js +16 -0
  420. package/src/image/{interactivity.js → view-interactivity.js} +99 -50
  421. package/src/index.js +18 -1
  422. package/src/latest-comments/edit.js +1 -0
  423. package/src/latest-posts/edit.js +2 -0
  424. package/src/latest-posts/index.php +1 -1
  425. package/src/list/block.json +5 -1
  426. package/src/list/edit.js +6 -4
  427. package/src/list/test/edit.native.js +129 -33
  428. package/src/media-text/block.json +1 -0
  429. package/src/media-text/media-container.native.js +1 -0
  430. package/src/missing/edit.js +31 -11
  431. package/src/missing/edit.native.js +12 -10
  432. package/src/missing/style.native.scss +19 -12
  433. package/src/missing/test/__snapshots__/edit.native.js.snap +21 -13
  434. package/src/navigation/constants.js +12 -6
  435. package/src/navigation/edit/index.js +30 -3
  436. package/src/navigation/edit/inner-blocks.js +2 -2
  437. package/src/navigation/edit/menu-inspector-controls.js +0 -1
  438. package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
  439. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
  440. package/src/navigation/index.php +43 -16
  441. package/src/navigation/style.scss +27 -8
  442. package/src/navigation/use-navigation-menu.js +39 -63
  443. package/src/navigation/view-interactivity.js +196 -0
  444. package/src/navigation-link/edit.js +61 -61
  445. package/src/navigation-link/link-ui.js +14 -2
  446. package/src/navigation-submenu/edit.js +2 -2
  447. package/src/navigation-submenu/index.php +2 -12
  448. package/src/page-list/convert-to-links-modal.js +3 -3
  449. package/src/page-list/edit.js +65 -62
  450. package/src/page-list/use-convert-to-navigation-links.js +3 -20
  451. package/src/paragraph/block.json +1 -0
  452. package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
  453. package/src/paragraph/test/edit.native.js +26 -0
  454. package/src/post-comments-form/block.json +1 -0
  455. package/src/post-navigation-link/block.json +1 -0
  456. package/src/post-template/index.php +4 -2
  457. package/src/post-time-to-read/block.json +5 -1
  458. package/src/post-title/index.php +6 -3
  459. package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
  460. package/src/query-pagination/edit.js +17 -14
  461. package/src/query-pagination-numbers/block.json +1 -1
  462. package/src/query-title/edit.js +48 -6
  463. package/src/quote/block.json +1 -0
  464. package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
  465. package/src/quote/test/transforms.native.js +5 -1
  466. package/src/quote/transforms.js +13 -0
  467. package/src/rss/edit.js +3 -0
  468. package/src/search/block.json +1 -0
  469. package/src/search/edit.js +4 -3
  470. package/src/search/index.php +22 -4
  471. package/src/search/test/__snapshots__/edit.native.js.snap +7 -0
  472. package/src/site-logo/block.json +5 -1
  473. package/src/site-logo/edit.js +1 -0
  474. package/src/site-tagline/block.json +5 -1
  475. package/src/site-tagline/icon.js +1 -1
  476. package/src/site-title/block.json +5 -1
  477. package/src/social-links/block.json +3 -1
  478. package/src/table/block.json +5 -1
  479. package/src/tag-cloud/edit.js +1 -0
  480. package/src/template-part/edit/index.js +1 -1
  481. package/src/template-part/index.php +9 -15
  482. package/src/term-description/block.json +1 -0
  483. package/src/text-columns/edit.js +1 -0
  484. package/src/verse/block.json +5 -1
  485. package/src/video/block.json +5 -1
  486. package/build/file/interactivity.js.map +0 -1
  487. package/build/gallery/shared-icon.native.js +0 -38
  488. package/build/gallery/shared-icon.native.js.map +0 -1
  489. package/build/heading/heading-level-icon.js +0 -61
  490. package/build/heading/heading-level-icon.js.map +0 -1
  491. package/build/image/interactivity.js.map +0 -1
  492. package/build/navigation/interactivity.js +0 -167
  493. package/build/navigation/interactivity.js.map +0 -1
  494. package/build/utils/interactivity/constants.js +0 -9
  495. package/build/utils/interactivity/constants.js.map +0 -1
  496. package/build/utils/interactivity/directives.js +0 -222
  497. package/build/utils/interactivity/directives.js.map +0 -1
  498. package/build/utils/interactivity/hooks.js +0 -159
  499. package/build/utils/interactivity/hooks.js.map +0 -1
  500. package/build/utils/interactivity/hydration.js +0 -34
  501. package/build/utils/interactivity/hydration.js.map +0 -1
  502. package/build/utils/interactivity/index.js +0 -32
  503. package/build/utils/interactivity/index.js.map +0 -1
  504. package/build/utils/interactivity/portals.js +0 -108
  505. package/build/utils/interactivity/portals.js.map +0 -1
  506. package/build/utils/interactivity/store.js +0 -66
  507. package/build/utils/interactivity/store.js.map +0 -1
  508. package/build/utils/interactivity/utils.js +0 -87
  509. package/build/utils/interactivity/utils.js.map +0 -1
  510. package/build/utils/interactivity/vdom.js +0 -119
  511. package/build/utils/interactivity/vdom.js.map +0 -1
  512. package/build-module/file/interactivity.js.map +0 -1
  513. package/build-module/gallery/shared-icon.native.js +0 -24
  514. package/build-module/gallery/shared-icon.native.js.map +0 -1
  515. package/build-module/heading/heading-level-icon.js +0 -53
  516. package/build-module/heading/heading-level-icon.js.map +0 -1
  517. package/build-module/image/interactivity.js.map +0 -1
  518. package/build-module/navigation/interactivity.js +0 -164
  519. package/build-module/navigation/interactivity.js.map +0 -1
  520. package/build-module/utils/interactivity/constants.js +0 -2
  521. package/build-module/utils/interactivity/constants.js.map +0 -1
  522. package/build-module/utils/interactivity/directives.js +0 -209
  523. package/build-module/utils/interactivity/directives.js.map +0 -1
  524. package/build-module/utils/interactivity/hooks.js +0 -145
  525. package/build-module/utils/interactivity/hooks.js.map +0 -1
  526. package/build-module/utils/interactivity/hydration.js +0 -21
  527. package/build-module/utils/interactivity/hydration.js.map +0 -1
  528. package/build-module/utils/interactivity/index.js +0 -15
  529. package/build-module/utils/interactivity/index.js.map +0 -1
  530. package/build-module/utils/interactivity/portals.js +0 -100
  531. package/build-module/utils/interactivity/portals.js.map +0 -1
  532. package/build-module/utils/interactivity/store.js +0 -55
  533. package/build-module/utils/interactivity/store.js.map +0 -1
  534. package/build-module/utils/interactivity/utils.js +0 -75
  535. package/build-module/utils/interactivity/utils.js.map +0 -1
  536. package/build-module/utils/interactivity/vdom.js +0 -107
  537. package/build-module/utils/interactivity/vdom.js.map +0 -1
  538. package/src/gallery/shared-icon.native.js +0 -23
  539. package/src/heading/heading-level-icon.js +0 -48
  540. package/src/navigation/interactivity.js +0 -169
  541. package/src/utils/interactivity/constants.js +0 -1
  542. package/src/utils/interactivity/directives.js +0 -200
  543. package/src/utils/interactivity/hooks.js +0 -145
  544. package/src/utils/interactivity/hydration.js +0 -22
  545. package/src/utils/interactivity/index.js +0 -15
  546. package/src/utils/interactivity/portals.js +0 -98
  547. package/src/utils/interactivity/store.js +0 -45
  548. package/src/utils/interactivity/utils.js +0 -66
  549. package/src/utils/interactivity/vdom.js +0 -111
@@ -1,62 +1,50 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { store as coreStore, useResourcePermissions } from '@wordpress/core-data';
4
+ import { store as coreStore, useResourcePermissions, useEntityRecords } from '@wordpress/core-data';
5
5
  import { useSelect } from '@wordpress/data';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
9
 
10
- import { SELECT_NAVIGATION_MENUS_ARGS } from './constants';
10
+ import { PRELOADED_NAVIGATION_MENUS_QUERY } from './constants';
11
11
  export default function useNavigationMenu(ref) {
12
12
  const permissions = useResourcePermissions('navigation', ref);
13
- return useSelect(select => {
14
- const {
15
- canCreate,
16
- canUpdate,
17
- canDelete,
18
- isResolving,
19
- hasResolved
20
- } = permissions;
21
- const {
22
- navigationMenus,
23
- isResolvingNavigationMenus,
24
- hasResolvedNavigationMenus
25
- } = selectNavigationMenus(select);
26
- const {
27
- navigationMenu,
28
- isNavigationMenuResolved,
29
- isNavigationMenuMissing
30
- } = selectExistingMenu(select, ref);
31
- return {
32
- navigationMenus,
33
- isResolvingNavigationMenus,
34
- hasResolvedNavigationMenus,
35
- navigationMenu,
36
- isNavigationMenuResolved,
37
- isNavigationMenuMissing,
38
- canSwitchNavigationMenu: ref ? navigationMenus?.length > 1 : navigationMenus?.length > 0,
39
- canUserCreateNavigationMenu: canCreate,
40
- isResolvingCanUserCreateNavigationMenu: isResolving,
41
- hasResolvedCanUserCreateNavigationMenu: hasResolved,
42
- canUserUpdateNavigationMenu: canUpdate,
43
- hasResolvedCanUserUpdateNavigationMenu: ref ? hasResolved : undefined,
44
- canUserDeleteNavigationMenu: canDelete,
45
- hasResolvedCanUserDeleteNavigationMenu: ref ? hasResolved : undefined
46
- };
47
- }, [ref, permissions]);
48
- }
49
-
50
- function selectNavigationMenus(select) {
51
13
  const {
52
- getEntityRecords,
53
- hasFinishedResolution,
54
- isResolving
55
- } = select(coreStore);
14
+ navigationMenu,
15
+ isNavigationMenuResolved,
16
+ isNavigationMenuMissing
17
+ } = useSelect(select => {
18
+ return selectExistingMenu(select, ref);
19
+ }, [ref]);
20
+ const {
21
+ canCreate,
22
+ canUpdate,
23
+ canDelete,
24
+ isResolving,
25
+ hasResolved
26
+ } = permissions;
27
+ const {
28
+ records: navigationMenus,
29
+ isResolving: isResolvingNavigationMenus,
30
+ hasResolved: hasResolvedNavigationMenus
31
+ } = useEntityRecords('postType', `wp_navigation`, PRELOADED_NAVIGATION_MENUS_QUERY);
32
+ const canSwitchNavigationMenu = ref ? navigationMenus?.length > 1 : navigationMenus?.length > 0;
56
33
  return {
57
- navigationMenus: getEntityRecords(...SELECT_NAVIGATION_MENUS_ARGS),
58
- isResolvingNavigationMenus: isResolving('getEntityRecords', SELECT_NAVIGATION_MENUS_ARGS),
59
- hasResolvedNavigationMenus: hasFinishedResolution('getEntityRecords', SELECT_NAVIGATION_MENUS_ARGS)
34
+ navigationMenu,
35
+ isNavigationMenuResolved,
36
+ isNavigationMenuMissing,
37
+ navigationMenus,
38
+ isResolvingNavigationMenus,
39
+ hasResolvedNavigationMenus,
40
+ canSwitchNavigationMenu,
41
+ canUserCreateNavigationMenu: canCreate,
42
+ isResolvingCanUserCreateNavigationMenu: isResolving,
43
+ hasResolvedCanUserCreateNavigationMenu: hasResolved,
44
+ canUserUpdateNavigationMenu: canUpdate,
45
+ hasResolvedCanUserUpdateNavigationMenu: ref ? hasResolved : undefined,
46
+ canUserDeleteNavigationMenu: canDelete,
47
+ hasResolvedCanUserDeleteNavigationMenu: ref ? hasResolved : undefined
60
48
  };
61
49
  }
62
50
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"names":["store","coreStore","useResourcePermissions","useSelect","SELECT_NAVIGATION_MENUS_ARGS","useNavigationMenu","ref","permissions","select","canCreate","canUpdate","canDelete","isResolving","hasResolved","navigationMenus","isResolvingNavigationMenus","hasResolvedNavigationMenus","selectNavigationMenus","navigationMenu","isNavigationMenuResolved","isNavigationMenuMissing","selectExistingMenu","canSwitchNavigationMenu","length","canUserCreateNavigationMenu","isResolvingCanUserCreateNavigationMenu","hasResolvedCanUserCreateNavigationMenu","canUserUpdateNavigationMenu","hasResolvedCanUserUpdateNavigationMenu","undefined","canUserDeleteNavigationMenu","hasResolvedCanUserDeleteNavigationMenu","getEntityRecords","hasFinishedResolution","getEntityRecord","getEditedEntityRecord","args","editedNavigationMenu","hasResolvedNavigationMenu","isNavigationMenuPublishedOrDraft","status"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { SELECT_NAVIGATION_MENUS_ARGS } from './constants';\n\nexport default function useNavigationMenu( ref ) {\n\tconst permissions = useResourcePermissions( 'navigation', ref );\n\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanCreate,\n\t\t\t\tcanUpdate,\n\t\t\t\tcanDelete,\n\t\t\t\tisResolving,\n\t\t\t\thasResolved,\n\t\t\t} = permissions;\n\n\t\t\tconst {\n\t\t\t\tnavigationMenus,\n\t\t\t\tisResolvingNavigationMenus,\n\t\t\t\thasResolvedNavigationMenus,\n\t\t\t} = selectNavigationMenus( select );\n\n\t\t\tconst {\n\t\t\t\tnavigationMenu,\n\t\t\t\tisNavigationMenuResolved,\n\t\t\t\tisNavigationMenuMissing,\n\t\t\t} = selectExistingMenu( select, ref );\n\n\t\t\treturn {\n\t\t\t\tnavigationMenus,\n\t\t\t\tisResolvingNavigationMenus,\n\t\t\t\thasResolvedNavigationMenus,\n\n\t\t\t\tnavigationMenu,\n\t\t\t\tisNavigationMenuResolved,\n\t\t\t\tisNavigationMenuMissing,\n\n\t\t\t\tcanSwitchNavigationMenu: ref\n\t\t\t\t\t? navigationMenus?.length > 1\n\t\t\t\t\t: navigationMenus?.length > 0,\n\n\t\t\t\tcanUserCreateNavigationMenu: canCreate,\n\t\t\t\tisResolvingCanUserCreateNavigationMenu: isResolving,\n\t\t\t\thasResolvedCanUserCreateNavigationMenu: hasResolved,\n\n\t\t\t\tcanUserUpdateNavigationMenu: canUpdate,\n\t\t\t\thasResolvedCanUserUpdateNavigationMenu: ref\n\t\t\t\t\t? hasResolved\n\t\t\t\t\t: undefined,\n\n\t\t\t\tcanUserDeleteNavigationMenu: canDelete,\n\t\t\t\thasResolvedCanUserDeleteNavigationMenu: ref\n\t\t\t\t\t? hasResolved\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ ref, permissions ]\n\t);\n}\n\nfunction selectNavigationMenus( select ) {\n\tconst { getEntityRecords, hasFinishedResolution, isResolving } =\n\t\tselect( coreStore );\n\n\treturn {\n\t\tnavigationMenus: getEntityRecords( ...SELECT_NAVIGATION_MENUS_ARGS ),\n\t\tisResolvingNavigationMenus: isResolving(\n\t\t\t'getEntityRecords',\n\t\t\tSELECT_NAVIGATION_MENUS_ARGS\n\t\t),\n\t\thasResolvedNavigationMenus: hasFinishedResolution(\n\t\t\t'getEntityRecords',\n\t\t\tSELECT_NAVIGATION_MENUS_ARGS\n\t\t),\n\t};\n}\n\nfunction selectExistingMenu( select, ref ) {\n\tif ( ! ref ) {\n\t\treturn {\n\t\t\tisNavigationMenuResolved: false,\n\t\t\tisNavigationMenuMissing: true,\n\t\t};\n\t}\n\n\tconst { getEntityRecord, getEditedEntityRecord, hasFinishedResolution } =\n\t\tselect( coreStore );\n\n\tconst args = [ 'postType', 'wp_navigation', ref ];\n\tconst navigationMenu = getEntityRecord( ...args );\n\tconst editedNavigationMenu = getEditedEntityRecord( ...args );\n\tconst hasResolvedNavigationMenu = hasFinishedResolution(\n\t\t'getEditedEntityRecord',\n\t\targs\n\t);\n\n\t// Only published Navigation posts are considered valid.\n\t// Draft Navigation posts are valid only on the editor,\n\t// requiring a post update to publish to show in frontend.\n\t// To achieve that, index.php must reflect this validation only for published.\n\tconst isNavigationMenuPublishedOrDraft =\n\t\teditedNavigationMenu.status === 'publish' ||\n\t\teditedNavigationMenu.status === 'draft';\n\n\treturn {\n\t\tisNavigationMenuResolved: hasResolvedNavigationMenu,\n\t\tisNavigationMenuMissing:\n\t\t\thasResolvedNavigationMenu &&\n\t\t\t( ! navigationMenu || ! isNavigationMenuPublishedOrDraft ),\n\n\t\t// getEditedEntityRecord will return the post regardless of status.\n\t\t// Therefore if the found post is not published then we should ignore it.\n\t\tnavigationMenu: isNavigationMenuPublishedOrDraft\n\t\t\t? editedNavigationMenu\n\t\t\t: null,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"names":["store","coreStore","useResourcePermissions","useEntityRecords","useSelect","PRELOADED_NAVIGATION_MENUS_QUERY","useNavigationMenu","ref","permissions","navigationMenu","isNavigationMenuResolved","isNavigationMenuMissing","select","selectExistingMenu","canCreate","canUpdate","canDelete","isResolving","hasResolved","records","navigationMenus","isResolvingNavigationMenus","hasResolvedNavigationMenus","canSwitchNavigationMenu","length","canUserCreateNavigationMenu","isResolvingCanUserCreateNavigationMenu","hasResolvedCanUserCreateNavigationMenu","canUserUpdateNavigationMenu","hasResolvedCanUserUpdateNavigationMenu","undefined","canUserDeleteNavigationMenu","hasResolvedCanUserDeleteNavigationMenu","getEntityRecord","getEditedEntityRecord","hasFinishedResolution","args","editedNavigationMenu","hasResolvedNavigationMenu","isNavigationMenuPublishedOrDraft","status"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n\tuseEntityRecords,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { PRELOADED_NAVIGATION_MENUS_QUERY } from './constants';\n\nexport default function useNavigationMenu( ref ) {\n\tconst permissions = useResourcePermissions( 'navigation', ref );\n\n\tconst {\n\t\tnavigationMenu,\n\t\tisNavigationMenuResolved,\n\t\tisNavigationMenuMissing,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\treturn selectExistingMenu( select, ref );\n\t\t},\n\t\t[ ref ]\n\t);\n\n\tconst { canCreate, canUpdate, canDelete, isResolving, hasResolved } =\n\t\tpermissions;\n\n\tconst {\n\t\trecords: navigationMenus,\n\t\tisResolving: isResolvingNavigationMenus,\n\t\thasResolved: hasResolvedNavigationMenus,\n\t} = useEntityRecords(\n\t\t'postType',\n\t\t`wp_navigation`,\n\t\tPRELOADED_NAVIGATION_MENUS_QUERY\n\t);\n\n\tconst canSwitchNavigationMenu = ref\n\t\t? navigationMenus?.length > 1\n\t\t: navigationMenus?.length > 0;\n\n\treturn {\n\t\tnavigationMenu,\n\t\tisNavigationMenuResolved,\n\t\tisNavigationMenuMissing,\n\t\tnavigationMenus,\n\t\tisResolvingNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tcanSwitchNavigationMenu,\n\t\tcanUserCreateNavigationMenu: canCreate,\n\t\tisResolvingCanUserCreateNavigationMenu: isResolving,\n\t\thasResolvedCanUserCreateNavigationMenu: hasResolved,\n\t\tcanUserUpdateNavigationMenu: canUpdate,\n\t\thasResolvedCanUserUpdateNavigationMenu: ref ? hasResolved : undefined,\n\t\tcanUserDeleteNavigationMenu: canDelete,\n\t\thasResolvedCanUserDeleteNavigationMenu: ref ? hasResolved : undefined,\n\t};\n}\n\nfunction selectExistingMenu( select, ref ) {\n\tif ( ! ref ) {\n\t\treturn {\n\t\t\tisNavigationMenuResolved: false,\n\t\t\tisNavigationMenuMissing: true,\n\t\t};\n\t}\n\n\tconst { getEntityRecord, getEditedEntityRecord, hasFinishedResolution } =\n\t\tselect( coreStore );\n\n\tconst args = [ 'postType', 'wp_navigation', ref ];\n\tconst navigationMenu = getEntityRecord( ...args );\n\tconst editedNavigationMenu = getEditedEntityRecord( ...args );\n\tconst hasResolvedNavigationMenu = hasFinishedResolution(\n\t\t'getEditedEntityRecord',\n\t\targs\n\t);\n\n\t// Only published Navigation posts are considered valid.\n\t// Draft Navigation posts are valid only on the editor,\n\t// requiring a post update to publish to show in frontend.\n\t// To achieve that, index.php must reflect this validation only for published.\n\tconst isNavigationMenuPublishedOrDraft =\n\t\teditedNavigationMenu.status === 'publish' ||\n\t\teditedNavigationMenu.status === 'draft';\n\n\treturn {\n\t\tisNavigationMenuResolved: hasResolvedNavigationMenu,\n\t\tisNavigationMenuMissing:\n\t\t\thasResolvedNavigationMenu &&\n\t\t\t( ! navigationMenu || ! isNavigationMenuPublishedOrDraft ),\n\n\t\t// getEditedEntityRecord will return the post regardless of status.\n\t\t// Therefore if the found post is not published then we should ignore it.\n\t\tnavigationMenu: isNavigationMenuPublishedOrDraft\n\t\t\t? editedNavigationMenu\n\t\t\t: null,\n\t};\n}\n"]}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store as wpStore } from '@wordpress/interactivity';
5
+ const focusableSelectors = ['a[href]', 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', '[contenteditable]', '[tabindex]:not([tabindex^="-"])'];
6
+
7
+ const openMenu = (store, menuOpenedOn) => {
8
+ const {
9
+ context,
10
+ ref,
11
+ selectors
12
+ } = store;
13
+ selectors.core.navigation.menuOpenedBy(store)[menuOpenedOn] = true;
14
+ context.core.navigation.previousFocus = ref;
15
+
16
+ if (context.core.navigation.type === 'overlay') {
17
+ // Add a `has-modal-open` class to the <html> root.
18
+ document.documentElement.classList.add('has-modal-open');
19
+ }
20
+ };
21
+
22
+ const closeMenu = (store, menuClosedOn) => {
23
+ const {
24
+ context,
25
+ selectors
26
+ } = store;
27
+ selectors.core.navigation.menuOpenedBy(store)[menuClosedOn] = false; // Check if the menu is still open or not.
28
+
29
+ if (!selectors.core.navigation.isMenuOpen(store)) {
30
+ if (context.core.navigation.modal?.contains(window.document.activeElement)) {
31
+ context.core.navigation.previousFocus.focus();
32
+ }
33
+
34
+ context.core.navigation.modal = null;
35
+ context.core.navigation.previousFocus = null;
36
+
37
+ if (context.core.navigation.type === 'overlay') {
38
+ document.documentElement.classList.remove('has-modal-open');
39
+ }
40
+ }
41
+ };
42
+
43
+ wpStore({
44
+ effects: {
45
+ core: {
46
+ navigation: {
47
+ initMenu: store => {
48
+ const {
49
+ context,
50
+ selectors,
51
+ ref
52
+ } = store;
53
+
54
+ if (selectors.core.navigation.isMenuOpen(store)) {
55
+ const focusableElements = ref.querySelectorAll(focusableSelectors);
56
+ context.core.navigation.modal = ref;
57
+ context.core.navigation.firstFocusableElement = focusableElements[0];
58
+ context.core.navigation.lastFocusableElement = focusableElements[focusableElements.length - 1];
59
+ }
60
+ },
61
+ focusFirstElement: store => {
62
+ const {
63
+ selectors,
64
+ ref
65
+ } = store;
66
+
67
+ if (selectors.core.navigation.isMenuOpen(store)) {
68
+ ref.querySelector('.wp-block-navigation-item > *:first-child').focus();
69
+ }
70
+ }
71
+ }
72
+ }
73
+ },
74
+ selectors: {
75
+ core: {
76
+ navigation: {
77
+ roleAttribute: store => {
78
+ const {
79
+ context,
80
+ selectors
81
+ } = store;
82
+ return context.core.navigation.type === 'overlay' && selectors.core.navigation.isMenuOpen(store) ? 'dialog' : '';
83
+ },
84
+ isMenuOpen: ({
85
+ context
86
+ }) => // The menu is opened if either `click`, `hover` or `focus` is true.
87
+ Object.values(context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy']).filter(Boolean).length > 0,
88
+ menuOpenedBy: ({
89
+ context
90
+ }) => context.core.navigation[context.core.navigation.type === 'overlay' ? 'overlayOpenedBy' : 'submenuOpenedBy']
91
+ }
92
+ }
93
+ },
94
+ actions: {
95
+ core: {
96
+ navigation: {
97
+ openMenuOnHover(store) {
98
+ const {
99
+ navigation
100
+ } = store.context.core;
101
+ if (navigation.type === 'submenu' && // Only open on hover if the overlay is closed.
102
+ Object.values(navigation.overlayOpenedBy || {}).filter(Boolean).length === 0) openMenu(store, 'hover');
103
+ },
104
+
105
+ closeMenuOnHover(store) {
106
+ closeMenu(store, 'hover');
107
+ },
108
+
109
+ openMenuOnClick(store) {
110
+ openMenu(store, 'click');
111
+ },
112
+
113
+ closeMenuOnClick(store) {
114
+ closeMenu(store, 'click');
115
+ closeMenu(store, 'focus');
116
+ },
117
+
118
+ openMenuOnFocus(store) {
119
+ openMenu(store, 'focus');
120
+ },
121
+
122
+ toggleMenuOnClick: store => {
123
+ const {
124
+ selectors
125
+ } = store;
126
+ const menuOpenedBy = selectors.core.navigation.menuOpenedBy(store);
127
+
128
+ if (menuOpenedBy.click || menuOpenedBy.focus) {
129
+ closeMenu(store, 'click');
130
+ closeMenu(store, 'focus');
131
+ } else {
132
+ openMenu(store, 'click');
133
+ }
134
+ },
135
+ handleMenuKeydown: store => {
136
+ const {
137
+ context,
138
+ selectors,
139
+ event
140
+ } = store;
141
+
142
+ if (selectors.core.navigation.menuOpenedBy(store).click) {
143
+ // If Escape close the menu.
144
+ if (event?.key === 'Escape') {
145
+ closeMenu(store, 'click');
146
+ closeMenu(store, 'focus');
147
+ return;
148
+ } // Trap focus if it is an overlay (main menu).
149
+
150
+
151
+ if (context.core.navigation.type === 'overlay' && event.key === 'Tab') {
152
+ // If shift + tab it change the direction.
153
+ if (event.shiftKey && window.document.activeElement === context.core.navigation.firstFocusableElement) {
154
+ event.preventDefault();
155
+ context.core.navigation.lastFocusableElement.focus();
156
+ } else if (!event.shiftKey && window.document.activeElement === context.core.navigation.lastFocusableElement) {
157
+ event.preventDefault();
158
+ context.core.navigation.firstFocusableElement.focus();
159
+ }
160
+ }
161
+ }
162
+ },
163
+ handleMenuFocusout: store => {
164
+ const {
165
+ context,
166
+ event
167
+ } = store; // If focus is outside modal, and in the document, close menu
168
+ // event.target === The element losing focus
169
+ // event.relatedTarget === The element receiving focus (if any)
170
+ // When focusout is outsite the document,
171
+ // `window.document.activeElement` doesn't change.
172
+
173
+ if (!context.core.navigation.modal?.contains(event.relatedTarget) && event.target !== window.document.activeElement) {
174
+ closeMenu(store, 'click');
175
+ closeMenu(store, 'focus');
176
+ }
177
+ }
178
+ }
179
+ }
180
+ }
181
+ });
182
+ //# sourceMappingURL=view-interactivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/view-interactivity.js"],"names":["store","wpStore","focusableSelectors","openMenu","menuOpenedOn","context","ref","selectors","core","navigation","menuOpenedBy","previousFocus","type","document","documentElement","classList","add","closeMenu","menuClosedOn","isMenuOpen","modal","contains","window","activeElement","focus","remove","effects","initMenu","focusableElements","querySelectorAll","firstFocusableElement","lastFocusableElement","length","focusFirstElement","querySelector","roleAttribute","Object","values","filter","Boolean","actions","openMenuOnHover","overlayOpenedBy","closeMenuOnHover","openMenuOnClick","closeMenuOnClick","openMenuOnFocus","toggleMenuOnClick","click","handleMenuKeydown","event","key","shiftKey","preventDefault","handleMenuFocusout","relatedTarget","target"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,OAAlB,QAAiC,0BAAjC;AAEA,MAAMC,kBAAkB,GAAG,CAC1B,SAD0B,EAE1B,+DAF0B,EAG1B,2CAH0B,EAI1B,6CAJ0B,EAK1B,2CAL0B,EAM1B,mBAN0B,EAO1B,iCAP0B,CAA3B;;AAUA,MAAMC,QAAQ,GAAG,CAAEH,KAAF,EAASI,YAAT,KAA2B;AAC3C,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,GAAX;AAAgBC,IAAAA;AAAhB,MAA8BP,KAApC;AACAO,EAAAA,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BC,YAA1B,CAAwCV,KAAxC,EAAiDI,YAAjD,IAAkE,IAAlE;AACAC,EAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBE,aAAxB,GAAwCL,GAAxC;;AACA,MAAKD,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBG,IAAxB,KAAiC,SAAtC,EAAkD;AACjD;AACAC,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAwC,gBAAxC;AACA;AACD,CARD;;AAUA,MAAMC,SAAS,GAAG,CAAEjB,KAAF,EAASkB,YAAT,KAA2B;AAC5C,QAAM;AAAEb,IAAAA,OAAF;AAAWE,IAAAA;AAAX,MAAyBP,KAA/B;AACAO,EAAAA,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BC,YAA1B,CAAwCV,KAAxC,EAAiDkB,YAAjD,IAAkE,KAAlE,CAF4C,CAG5C;;AACA,MAAK,CAAEX,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BU,UAA1B,CAAsCnB,KAAtC,CAAP,EAAuD;AACtD,QACCK,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBW,KAAxB,EAA+BC,QAA/B,CACCC,MAAM,CAACT,QAAP,CAAgBU,aADjB,CADD,EAIE;AACDlB,MAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBE,aAAxB,CAAsCa,KAAtC;AACA;;AACDnB,IAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBW,KAAxB,GAAgC,IAAhC;AACAf,IAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBE,aAAxB,GAAwC,IAAxC;;AACA,QAAKN,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBG,IAAxB,KAAiC,SAAtC,EAAkD;AACjDC,MAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCU,MAAnC,CAA2C,gBAA3C;AACA;AACD;AACD,CAlBD;;AAoBAxB,OAAO,CAAE;AACRyB,EAAAA,OAAO,EAAE;AACRlB,IAAAA,IAAI,EAAE;AACLC,MAAAA,UAAU,EAAE;AACXkB,QAAAA,QAAQ,EAAI3B,KAAF,IAAa;AACtB,gBAAM;AAAEK,YAAAA,OAAF;AAAWE,YAAAA,SAAX;AAAsBD,YAAAA;AAAtB,cAA8BN,KAApC;;AACA,cAAKO,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BU,UAA1B,CAAsCnB,KAAtC,CAAL,EAAqD;AACpD,kBAAM4B,iBAAiB,GACtBtB,GAAG,CAACuB,gBAAJ,CAAsB3B,kBAAtB,CADD;AAEAG,YAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBW,KAAxB,GAAgCd,GAAhC;AACAD,YAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBqB,qBAAxB,GACCF,iBAAiB,CAAE,CAAF,CADlB;AAEAvB,YAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBsB,oBAAxB,GACCH,iBAAiB,CAAEA,iBAAiB,CAACI,MAAlB,GAA2B,CAA7B,CADlB;AAEA;AACD,SAZU;AAaXC,QAAAA,iBAAiB,EAAIjC,KAAF,IAAa;AAC/B,gBAAM;AAAEO,YAAAA,SAAF;AAAaD,YAAAA;AAAb,cAAqBN,KAA3B;;AACA,cAAKO,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BU,UAA1B,CAAsCnB,KAAtC,CAAL,EAAqD;AACpDM,YAAAA,GAAG,CAAC4B,aAAJ,CACC,2CADD,EAEEV,KAFF;AAGA;AACD;AApBU;AADP;AADE,GADD;AA2BRjB,EAAAA,SAAS,EAAE;AACVC,IAAAA,IAAI,EAAE;AACLC,MAAAA,UAAU,EAAE;AACX0B,QAAAA,aAAa,EAAInC,KAAF,IAAa;AAC3B,gBAAM;AAAEK,YAAAA,OAAF;AAAWE,YAAAA;AAAX,cAAyBP,KAA/B;AACA,iBAAOK,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBG,IAAxB,KAAiC,SAAjC,IACNL,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BU,UAA1B,CAAsCnB,KAAtC,CADM,GAEJ,QAFI,GAGJ,EAHH;AAIA,SAPU;AAQXmB,QAAAA,UAAU,EAAE,CAAE;AAAEd,UAAAA;AAAF,SAAF,KACX;AACA+B,QAAAA,MAAM,CAACC,MAAP,CACChC,OAAO,CAACG,IAAR,CAAaC,UAAb,CACCJ,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBG,IAAxB,KAAiC,SAAjC,GACG,iBADH,GAEG,iBAHJ,CADD,EAME0B,MANF,CAMUC,OANV,EAMoBP,MANpB,GAM6B,CAhBnB;AAiBXtB,QAAAA,YAAY,EAAE,CAAE;AAAEL,UAAAA;AAAF,SAAF,KACbA,OAAO,CAACG,IAAR,CAAaC,UAAb,CACCJ,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBG,IAAxB,KAAiC,SAAjC,GACG,iBADH,GAEG,iBAHJ;AAlBU;AADP;AADI,GA3BH;AAuDR4B,EAAAA,OAAO,EAAE;AACRhC,IAAAA,IAAI,EAAE;AACLC,MAAAA,UAAU,EAAE;AACXgC,QAAAA,eAAe,CAAEzC,KAAF,EAAU;AACxB,gBAAM;AAAES,YAAAA;AAAF,cAAiBT,KAAK,CAACK,OAAN,CAAcG,IAArC;AACA,cACCC,UAAU,CAACG,IAAX,KAAoB,SAApB,IACA;AACAwB,UAAAA,MAAM,CAACC,MAAP,CACC5B,UAAU,CAACiC,eAAX,IAA8B,EAD/B,EAEEJ,MAFF,CAEUC,OAFV,EAEoBP,MAFpB,KAE+B,CALhC,EAOC7B,QAAQ,CAAEH,KAAF,EAAS,OAAT,CAAR;AACD,SAXU;;AAYX2C,QAAAA,gBAAgB,CAAE3C,KAAF,EAAU;AACzBiB,UAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACA,SAdU;;AAeX4C,QAAAA,eAAe,CAAE5C,KAAF,EAAU;AACxBG,UAAAA,QAAQ,CAAEH,KAAF,EAAS,OAAT,CAAR;AACA,SAjBU;;AAkBX6C,QAAAA,gBAAgB,CAAE7C,KAAF,EAAU;AACzBiB,UAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACAiB,UAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACA,SArBU;;AAsBX8C,QAAAA,eAAe,CAAE9C,KAAF,EAAU;AACxBG,UAAAA,QAAQ,CAAEH,KAAF,EAAS,OAAT,CAAR;AACA,SAxBU;;AAyBX+C,QAAAA,iBAAiB,EAAI/C,KAAF,IAAa;AAC/B,gBAAM;AAAEO,YAAAA;AAAF,cAAgBP,KAAtB;AACA,gBAAMU,YAAY,GACjBH,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BC,YAA1B,CAAwCV,KAAxC,CADD;;AAEA,cAAKU,YAAY,CAACsC,KAAb,IAAsBtC,YAAY,CAACc,KAAxC,EAAgD;AAC/CP,YAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACAiB,YAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACA,WAHD,MAGO;AACNG,YAAAA,QAAQ,CAAEH,KAAF,EAAS,OAAT,CAAR;AACA;AACD,SAnCU;AAoCXiD,QAAAA,iBAAiB,EAAIjD,KAAF,IAAa;AAC/B,gBAAM;AAAEK,YAAAA,OAAF;AAAWE,YAAAA,SAAX;AAAsB2C,YAAAA;AAAtB,cAAgClD,KAAtC;;AACA,cACCO,SAAS,CAACC,IAAV,CAAeC,UAAf,CAA0BC,YAA1B,CAAwCV,KAAxC,EAAgDgD,KADjD,EAEE;AACD;AACA,gBAAKE,KAAK,EAAEC,GAAP,KAAe,QAApB,EAA+B;AAC9BlC,cAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACAiB,cAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACA;AACA,aANA,CAQD;;;AACA,gBACCK,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBG,IAAxB,KAAiC,SAAjC,IACAsC,KAAK,CAACC,GAAN,KAAc,KAFf,EAGE;AACD;AACA,kBACCD,KAAK,CAACE,QAAN,IACA9B,MAAM,CAACT,QAAP,CAAgBU,aAAhB,KACClB,OAAO,CAACG,IAAR,CAAaC,UAAb,CACEqB,qBAJJ,EAKE;AACDoB,gBAAAA,KAAK,CAACG,cAAN;AACAhD,gBAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBsB,oBAAxB,CAA6CP,KAA7C;AACA,eARD,MAQO,IACN,CAAE0B,KAAK,CAACE,QAAR,IACA9B,MAAM,CAACT,QAAP,CAAgBU,aAAhB,KACClB,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBsB,oBAHnB,EAIL;AACDmB,gBAAAA,KAAK,CAACG,cAAN;AACAhD,gBAAAA,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBqB,qBAAxB,CAA8CN,KAA9C;AACA;AACD;AACD;AACD,SAxEU;AAyEX8B,QAAAA,kBAAkB,EAAItD,KAAF,IAAa;AAChC,gBAAM;AAAEK,YAAAA,OAAF;AAAW6C,YAAAA;AAAX,cAAqBlD,KAA3B,CADgC,CAEhC;AACA;AACA;AACA;AACA;;AACA,cACC,CAAEK,OAAO,CAACG,IAAR,CAAaC,UAAb,CAAwBW,KAAxB,EAA+BC,QAA/B,CACD6B,KAAK,CAACK,aADL,CAAF,IAGAL,KAAK,CAACM,MAAN,KAAiBlC,MAAM,CAACT,QAAP,CAAgBU,aAJlC,EAKE;AACDN,YAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACAiB,YAAAA,SAAS,CAAEjB,KAAF,EAAS,OAAT,CAAT;AACA;AACD;AAzFU;AADP;AADE;AAvDD,CAAF,CAAP","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as wpStore } from '@wordpress/interactivity';\n\nconst focusableSelectors = [\n\t'a[href]',\n\t'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n\t'select:not([disabled]):not([aria-hidden])',\n\t'textarea:not([disabled]):not([aria-hidden])',\n\t'button:not([disabled]):not([aria-hidden])',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex^=\"-\"])',\n];\n\nconst openMenu = ( store, menuOpenedOn ) => {\n\tconst { context, ref, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuOpenedOn ] = true;\n\tcontext.core.navigation.previousFocus = ref;\n\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t// Add a `has-modal-open` class to the <html> root.\n\t\tdocument.documentElement.classList.add( 'has-modal-open' );\n\t}\n};\n\nconst closeMenu = ( store, menuClosedOn ) => {\n\tconst { context, selectors } = store;\n\tselectors.core.navigation.menuOpenedBy( store )[ menuClosedOn ] = false;\n\t// Check if the menu is still open or not.\n\tif ( ! selectors.core.navigation.isMenuOpen( store ) ) {\n\t\tif (\n\t\t\tcontext.core.navigation.modal?.contains(\n\t\t\t\twindow.document.activeElement\n\t\t\t)\n\t\t) {\n\t\t\tcontext.core.navigation.previousFocus.focus();\n\t\t}\n\t\tcontext.core.navigation.modal = null;\n\t\tcontext.core.navigation.previousFocus = null;\n\t\tif ( context.core.navigation.type === 'overlay' ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-modal-open' );\n\t\t}\n\t}\n};\n\nwpStore( {\n\teffects: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\tinitMenu: ( store ) => {\n\t\t\t\t\tconst { context, selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\t\tcontext.core.navigation.modal = ref;\n\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ 0 ];\n\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement =\n\t\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfocusFirstElement: ( store ) => {\n\t\t\t\t\tconst { selectors, ref } = store;\n\t\t\t\t\tif ( selectors.core.navigation.isMenuOpen( store ) ) {\n\t\t\t\t\t\tref.querySelector(\n\t\t\t\t\t\t\t'.wp-block-navigation-item > *:first-child'\n\t\t\t\t\t\t).focus();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tselectors: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\troleAttribute: ( store ) => {\n\t\t\t\t\tconst { context, selectors } = store;\n\t\t\t\t\treturn context.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\tselectors.core.navigation.isMenuOpen( store )\n\t\t\t\t\t\t? 'dialog'\n\t\t\t\t\t\t: '';\n\t\t\t\t},\n\t\t\t\tisMenuOpen: ( { context } ) =>\n\t\t\t\t\t// The menu is opened if either `click`, `hover` or `focus` is true.\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t\t]\n\t\t\t\t\t).filter( Boolean ).length > 0,\n\t\t\t\tmenuOpenedBy: ( { context } ) =>\n\t\t\t\t\tcontext.core.navigation[\n\t\t\t\t\t\tcontext.core.navigation.type === 'overlay'\n\t\t\t\t\t\t\t? 'overlayOpenedBy'\n\t\t\t\t\t\t\t: 'submenuOpenedBy'\n\t\t\t\t\t],\n\t\t\t},\n\t\t},\n\t},\n\tactions: {\n\t\tcore: {\n\t\t\tnavigation: {\n\t\t\t\topenMenuOnHover( store ) {\n\t\t\t\t\tconst { navigation } = store.context.core;\n\t\t\t\t\tif (\n\t\t\t\t\t\tnavigation.type === 'submenu' &&\n\t\t\t\t\t\t// Only open on hover if the overlay is closed.\n\t\t\t\t\t\tObject.values(\n\t\t\t\t\t\t\tnavigation.overlayOpenedBy || {}\n\t\t\t\t\t\t).filter( Boolean ).length === 0\n\t\t\t\t\t)\n\t\t\t\t\t\topenMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnHover( store ) {\n\t\t\t\t\tcloseMenu( store, 'hover' );\n\t\t\t\t},\n\t\t\t\topenMenuOnClick( store ) {\n\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t},\n\t\t\t\tcloseMenuOnClick( store ) {\n\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\topenMenuOnFocus( store ) {\n\t\t\t\t\topenMenu( store, 'focus' );\n\t\t\t\t},\n\t\t\t\ttoggleMenuOnClick: ( store ) => {\n\t\t\t\t\tconst { selectors } = store;\n\t\t\t\t\tconst menuOpenedBy =\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store );\n\t\t\t\t\tif ( menuOpenedBy.click || menuOpenedBy.focus ) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\topenMenu( store, 'click' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuKeydown: ( store ) => {\n\t\t\t\t\tconst { context, selectors, event } = store;\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectors.core.navigation.menuOpenedBy( store ).click\n\t\t\t\t\t) {\n\t\t\t\t\t\t// If Escape close the menu.\n\t\t\t\t\t\tif ( event?.key === 'Escape' ) {\n\t\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Trap focus if it is an overlay (main menu).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcontext.core.navigation.type === 'overlay' &&\n\t\t\t\t\t\t\tevent.key === 'Tab'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// If shift + tab it change the direction.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation\n\t\t\t\t\t\t\t\t\t\t.firstFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement.focus();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\t\tcontext.core.navigation.lastFocusableElement\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tcontext.core.navigation.firstFocusableElement.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thandleMenuFocusout: ( store ) => {\n\t\t\t\t\tconst { context, event } = store;\n\t\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t\t// event.target === The element losing focus\n\t\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t\t// When focusout is outsite the document,\n\t\t\t\t\t// `window.document.activeElement` doesn't change.\n\t\t\t\t\tif (\n\t\t\t\t\t\t! context.core.navigation.modal?.contains(\n\t\t\t\t\t\t\tevent.relatedTarget\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tevent.target !== window.document.activeElement\n\t\t\t\t\t) {\n\t\t\t\t\t\tcloseMenu( store, 'click' );\n\t\t\t\t\t\tcloseMenu( store, 'focus' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n"]}
@@ -19,7 +19,7 @@ import { useState, useEffect, useRef } from '@wordpress/element';
19
19
  import { placeCaretAtHorizontalEdge, __unstableStripHTML as stripHTML } from '@wordpress/dom';
20
20
  import { decodeEntities } from '@wordpress/html-entities';
21
21
  import { link as linkIcon, addSubmenu } from '@wordpress/icons';
22
- import { store as coreStore, useResourcePermissions } from '@wordpress/core-data';
22
+ import { store as coreStore } from '@wordpress/core-data';
23
23
  import { useMergeRefs } from '@wordpress/compose';
24
24
  /**
25
25
  * Internal dependencies
@@ -240,9 +240,10 @@ export default function NavigationLinkEdit({
240
240
 
241
241
  const itemLabelPlaceholder = __('Add label…');
242
242
 
243
- const ref = useRef();
244
- const pagesPermissions = useResourcePermissions('pages');
245
- const postsPermissions = useResourcePermissions('posts');
243
+ const ref = useRef(); // Change the label using inspector causes rich text to change focus on firefox.
244
+ // This is a workaround to keep the focus on the label field when label filed is focused we don't render the rich text.
245
+
246
+ const [isLabelFieldFocused, setIsLabelFieldFocused] = useState(false);
246
247
  const {
247
248
  innerBlocks,
248
249
  isAtMaxNesting,
@@ -359,14 +360,6 @@ export default function NavigationLinkEdit({
359
360
  setIsLinkOpen(false);
360
361
  }
361
362
 
362
- let userCanCreate = false;
363
-
364
- if (!type || type === 'page') {
365
- userCanCreate = pagesPermissions.canCreate;
366
- } else if (type === 'post') {
367
- userCanCreate = postsPermissions.canCreate;
368
- }
369
-
370
363
  const {
371
364
  textColor,
372
365
  customTextColor,
@@ -407,8 +400,8 @@ export default function NavigationLinkEdit({
407
400
 
408
401
  }, {
409
402
  allowedBlocks: ALLOWED_BLOCKS,
410
- __experimentalDefaultBlock: DEFAULT_BLOCK,
411
- __experimentalDirectInsert: true,
403
+ defaultBlock: DEFAULT_BLOCK,
404
+ directInsert: true,
412
405
  renderAppender: false
413
406
  });
414
407
 
@@ -446,7 +439,9 @@ export default function NavigationLinkEdit({
446
439
  });
447
440
  },
448
441
  label: __('Label'),
449
- autoComplete: "off"
442
+ autoComplete: "off",
443
+ onFocus: () => setIsLabelFieldFocused(true),
444
+ onBlur: () => setIsLabelFieldFocused(false)
450
445
  }), createElement(TextControl, {
451
446
  __nextHasNoMarginBottom: true,
452
447
  value: url || '',
@@ -499,7 +494,7 @@ export default function NavigationLinkEdit({
499
494
  text: tooltipText
500
495
  }, createElement(Fragment, null, createElement("span", null, missingText), createElement("span", {
501
496
  className: "wp-block-navigation-link__missing_text-tooltip"
502
- }, tooltipText)))) : createElement(Fragment, null, !isInvalid && !isDraft && createElement(Fragment, null, createElement(RichText, {
497
+ }, tooltipText)))) : createElement(Fragment, null, !isInvalid && !isDraft && !isLabelFieldFocused && createElement(Fragment, null, createElement(RichText, {
503
498
  ref: ref,
504
499
  identifier: "label",
505
500
  className: "wp-block-navigation-item__label",
@@ -521,7 +516,7 @@ export default function NavigationLinkEdit({
521
516
  }
522
517
  }), description && createElement("span", {
523
518
  className: "wp-block-navigation-item__description"
524
- }, description)), (isInvalid || isDraft) && createElement("div", {
519
+ }, description)), (isInvalid || isDraft || isLabelFieldFocused) && createElement("div", {
525
520
  className: "wp-block-navigation-link__placeholder-text wp-block-navigation-link__label"
526
521
  }, createElement(Tooltip, {
527
522
  position: "top center",
@@ -533,7 +528,7 @@ export default function NavigationLinkEdit({
533
528
  // Unescape is used here to "recover" the escaped characters
534
529
  // so they display without encoding.
535
530
  // See `updateAttributes` for more details.
536
- `${decodeEntities(label)} ${placeholderText}`.trim()), createElement("span", {
531
+ `${decodeEntities(label)} ${isInvalid || isDraft ? placeholderText : ''}`.trim()), createElement("span", {
537
532
  className: "wp-block-navigation-link__missing_text-tooltip"
538
533
  }, tooltipText))))), isLinkOpen && createElement(LinkUI, {
539
534
  className: "wp-block-navigation-link__inline-link-input",
@@ -541,7 +536,6 @@ export default function NavigationLinkEdit({
541
536
  link: attributes,
542
537
  onClose: () => setIsLinkOpen(false),
543
538
  anchor: popoverAnchor,
544
- hasCreateSuggestion: userCanCreate,
545
539
  onRemove: removeLink,
546
540
  onChange: updatedValue => {
547
541
  updateAttributes(updatedValue, setAttributes, attributes);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"names":["classnames","createBlock","useSelect","useDispatch","PanelBody","TextControl","TextareaControl","ToolbarButton","Tooltip","ToolbarGroup","displayShortcut","isKeyboardEvent","ENTER","__","BlockControls","InspectorControls","RichText","useBlockProps","store","blockEditorStore","getColorClassName","useInnerBlocksProps","isURL","prependHTTP","useState","useEffect","useRef","placeCaretAtHorizontalEdge","__unstableStripHTML","stripHTML","decodeEntities","link","linkIcon","addSubmenu","coreStore","useResourcePermissions","useMergeRefs","LinkUI","updateAttributes","getColors","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","useIsInvalidLink","kind","type","id","isPostType","hasId","Number","isInteger","postStatus","select","getEntityRecord","status","isInvalid","isDraft","getMissingText","missingText","NavigationLinkEdit","attributes","isSelected","setAttributes","insertBlocksAfter","mergeBlocks","onReplace","context","clientId","label","url","description","rel","title","maxNestingLevel","replaceBlock","__unstableMarkNextChangeAsNotPersistent","isLinkOpen","setIsLinkOpen","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","pagesPermissions","postsPermissions","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasChildren","getBlocks","getBlockCount","getBlockName","getBlockRootClientId","hasSelectedInnerBlock","getBlockParentsByBlockName","name","length","transformToSubmenu","newSubmenu","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","undefined","opensInNewTab","userCanCreate","canCreate","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","primary","keyCode","blockProps","className","style","color","ALLOWED_BLOCKS","DEFAULT_BLOCK","innerBlocksProps","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","renderAppender","onClick","classes","placeholderText","tooltipText","labelValue","urlValue","descriptionValue","titleValue","relValue","trim","updatedValue"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,WAAT,QAA4B,mBAA5B;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SACCC,SADD,EAECC,WAFD,EAGCC,eAHD,EAICC,aAJD,EAKCC,OALD,EAMCC,YAND,QAOO,uBAPP;AAQA,SAASC,eAAT,EAA0BC,eAA1B,EAA2CC,KAA3C,QAAwD,qBAAxD;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SACCC,aADD,EAECC,iBAFD,EAGCC,QAHD,EAICC,aAJD,EAKCC,KAAK,IAAIC,gBALV,EAMCC,iBAND,EAOCC,mBAPD,QAQO,yBARP;AASA,SAASC,KAAT,EAAgBC,WAAhB,QAAmC,gBAAnC;AACA,SAASC,QAAT,EAAmBC,SAAnB,EAA8BC,MAA9B,QAA4C,oBAA5C;AACA,SACCC,0BADD,EAECC,mBAAmB,IAAIC,SAFxB,QAGO,gBAHP;AAIA,SAASC,cAAT,QAA+B,0BAA/B;AACA,SAASC,IAAI,IAAIC,QAAjB,EAA2BC,UAA3B,QAA6C,kBAA7C;AACA,SACCf,KAAK,IAAIgB,SADV,EAECC,sBAFD,QAGO,sBAHP;AAIA,SAASC,YAAT,QAA6B,oBAA7B;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAASC,MAAT,QAAuB,WAAvB;AACA,SAASC,gBAAT,QAAiC,qBAAjC;AACA,SAASC,SAAT,QAA0B,0BAA1B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,mBAAmB,GAAKC,UAAF,IAAkB;AAC7C,QAAM,CAAEC,gBAAF,EAAoBC,mBAApB,IAA4CnB,QAAQ,CAAE,KAAF,CAA1D;AAEAC,EAAAA,SAAS,CAAE,MAAM;AAChB,UAAM;AAAEmB,MAAAA;AAAF,QAAoBH,UAAU,CAACI,OAArC;;AAEA,aAASC,eAAT,CAA0BC,KAA1B,EAAkC;AACjC;AACAC,MAAAA,eAAe,CAAED,KAAF,CAAf;AACA,KANe,CAQhB;;;AACA,aAASE,aAAT,GAAyB;AACxBN,MAAAA,mBAAmB,CAAE,KAAF,CAAnB;AACA;;AAED,aAASK,eAAT,CAA0BD,KAA1B,EAAkC;AACjC;AACA,UAAKN,UAAU,CAACI,OAAX,CAAmBK,QAAnB,CAA6BH,KAAK,CAACI,MAAnC,CAAL,EAAmD;AAClDR,QAAAA,mBAAmB,CAAE,IAAF,CAAnB;AACA,OAFD,MAEO;AACNA,QAAAA,mBAAmB,CAAE,KAAF,CAAnB;AACA;AACD,KApBe,CAsBhB;AACA;AACA;;;AACAC,IAAAA,aAAa,CAACQ,gBAAd,CAAgC,WAAhC,EAA6CN,eAA7C;AACAF,IAAAA,aAAa,CAACQ,gBAAd,CAAgC,SAAhC,EAA2CH,aAA3C;AACAL,IAAAA,aAAa,CAACQ,gBAAd,CAAgC,WAAhC,EAA6CJ,eAA7C;AAEA,WAAO,MAAM;AACZJ,MAAAA,aAAa,CAACS,mBAAd,CAAmC,WAAnC,EAAgDP,eAAhD;AACAF,MAAAA,aAAa,CAACS,mBAAd,CAAmC,SAAnC,EAA8CJ,aAA9C;AACAL,MAAAA,aAAa,CAACS,mBAAd,CAAmC,WAAnC,EAAgDL,eAAhD;AACA,KAJD;AAKA,GAlCQ,EAkCN,EAlCM,CAAT;AAoCA,SAAON,gBAAP;AACA,CAxCD;;AA0CA,MAAMY,gBAAgB,GAAG,CAAEC,IAAF,EAAQC,IAAR,EAAcC,EAAd,KAAsB;AAC9C,QAAMC,UAAU,GACfH,IAAI,KAAK,WAAT,IAAwBC,IAAI,KAAK,MAAjC,IAA2CA,IAAI,KAAK,MADrD;AAEA,QAAMG,KAAK,GAAGC,MAAM,CAACC,SAAP,CAAkBJ,EAAlB,CAAd;AACA,QAAMK,UAAU,GAAG5D,SAAS,CACzB6D,MAAF,IAAc;AACb,QAAK,CAAEL,UAAP,EAAoB;AACnB,aAAO,IAAP;AACA;;AACD,UAAM;AAAEM,MAAAA;AAAF,QAAsBD,MAAM,CAAE7B,SAAF,CAAlC;AACA,WAAO8B,eAAe,CAAE,UAAF,EAAcR,IAAd,EAAoBC,EAApB,CAAf,EAAyCQ,MAAhD;AACA,GAP0B,EAQ3B,CAAEP,UAAF,EAAcF,IAAd,EAAoBC,EAApB,CAR2B,CAA5B,CAJ8C,CAe9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,QAAMS,SAAS,GACdR,UAAU,IAAIC,KAAd,IAAuBG,UAAvB,IAAqC,YAAYA,UADlD;AAEA,QAAMK,OAAO,GAAG,YAAYL,UAA5B;AAEA,SAAO,CAAEI,SAAF,EAAaC,OAAb,CAAP;AACA,CA5BD;;AA8BA,SAASC,cAAT,CAAyBZ,IAAzB,EAAgC;AAC/B,MAAIa,WAAW,GAAG,EAAlB;;AAEA,UAASb,IAAT;AACC,SAAK,MAAL;AACC;AACAa,MAAAA,WAAW,GAAGxD,EAAE,CAAE,aAAF,CAAhB;AACA;;AACD,SAAK,MAAL;AACC;AACAwD,MAAAA,WAAW,GAAGxD,EAAE,CAAE,aAAF,CAAhB;AACA;;AACD,SAAK,UAAL;AACC;AACAwD,MAAAA,WAAW,GAAGxD,EAAE,CAAE,iBAAF,CAAhB;AACA;;AACD,SAAK,KAAL;AACC;AACAwD,MAAAA,WAAW,GAAGxD,EAAE,CAAE,YAAF,CAAhB;AACA;;AACD;AACC;AACAwD,MAAAA,WAAW,GAAGxD,EAAE,CAAE,UAAF,CAAhB;AAnBF;;AAsBA,SAAOwD,WAAP;AACA;;AAED,eAAe,SAASC,kBAAT,CAA6B;AAC3CC,EAAAA,UAD2C;AAE3CC,EAAAA,UAF2C;AAG3CC,EAAAA,aAH2C;AAI3CC,EAAAA,iBAJ2C;AAK3CC,EAAAA,WAL2C;AAM3CC,EAAAA,SAN2C;AAO3CC,EAAAA,OAP2C;AAQ3CC,EAAAA;AAR2C,CAA7B,EASX;AACH,QAAM;AAAErB,IAAAA,EAAF;AAAMsB,IAAAA,KAAN;AAAavB,IAAAA,IAAb;AAAmBwB,IAAAA,GAAnB;AAAwBC,IAAAA,WAAxB;AAAqCC,IAAAA,GAArC;AAA0CC,IAAAA,KAA1C;AAAiD5B,IAAAA;AAAjD,MAA0DgB,UAAhE;AAEA,QAAM,CAAEL,SAAF,EAAaC,OAAb,IAAyBb,gBAAgB,CAAEC,IAAF,EAAQC,IAAR,EAAcC,EAAd,CAA/C;AACA,QAAM;AAAE2B,IAAAA;AAAF,MAAsBP,OAA5B;AAEA,QAAM;AAAEQ,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MACLnF,WAAW,CAAEgB,gBAAF,CADZ;AAEA,QAAM,CAAEoE,UAAF,EAAcC,aAAd,IAAgChE,QAAQ,CAAE,KAAF,CAA9C,CARG,CASH;AACA;;AACA,QAAM,CAAEiE,aAAF,EAAiBC,gBAAjB,IAAsClE,QAAQ,CAAE,IAAF,CAApD;AACA,QAAMmE,WAAW,GAAGjE,MAAM,CAAE,IAAF,CAA1B;AACA,QAAMgB,gBAAgB,GAAGF,mBAAmB,CAAEmD,WAAF,CAA5C;;AACA,QAAMC,oBAAoB,GAAG/E,EAAE,CAAE,YAAF,CAA/B;;AACA,QAAMgF,GAAG,GAAGnE,MAAM,EAAlB;AAEA,QAAMoE,gBAAgB,GAAG3D,sBAAsB,CAAE,OAAF,CAA/C;AACA,QAAM4D,gBAAgB,GAAG5D,sBAAsB,CAAE,OAAF,CAA/C;AAEA,QAAM;AACL6D,IAAAA,WADK;AAELC,IAAAA,cAFK;AAGLC,IAAAA,cAHK;AAILC,IAAAA,uBAJK;AAKLC,IAAAA;AALK,MAMFlG,SAAS,CACV6D,MAAF,IAAc;AACb,UAAM;AACLsC,MAAAA,SADK;AAELC,MAAAA,aAFK;AAGLC,MAAAA,YAHK;AAILC,MAAAA,oBAJK;AAKLC,MAAAA,qBALK;AAMLC,MAAAA;AANK,QAOF3C,MAAM,CAAE5C,gBAAF,CAPV;AASA,WAAO;AACN6E,MAAAA,WAAW,EAAEK,SAAS,CAAEvB,QAAF,CADhB;AAENmB,MAAAA,cAAc,EACbS,0BAA0B,CAAE5B,QAAF,EAAY,CACrC6B,IADqC,EAErC,yBAFqC,CAAZ,CAA1B,CAGIC,MAHJ,IAGcxB,eANT;AAONc,MAAAA,cAAc,EACbK,YAAY,CAAEC,oBAAoB,CAAE1B,QAAF,CAAtB,CAAZ,KACA,iBATK;AAUNqB,MAAAA,uBAAuB,EAAEM,qBAAqB,CAC7C3B,QAD6C,EAE7C,IAF6C,CAVxC;AAcNsB,MAAAA,WAAW,EAAE,CAAC,CAAEE,aAAa,CAAExB,QAAF;AAdvB,KAAP;AAgBA,GA3BW,EA4BZ,CAAEA,QAAF,CA5BY,CANb;AAqCA;AACD;AACA;;AACC,WAAS+B,kBAAT,GAA8B;AAC7B,UAAMC,UAAU,GAAG7G,WAAW,CAC7B,yBAD6B,EAE7BsE,UAF6B,EAG7ByB,WAAW,CAACY,MAAZ,GAAqB,CAArB,GACGZ,WADH,GAEG,CAAE/F,WAAW,CAAE,sBAAF,CAAb,CAL0B,CAA9B;AAOAoF,IAAAA,YAAY,CAAEP,QAAF,EAAYgC,UAAZ,CAAZ;AACA;;AAEDrF,EAAAA,SAAS,CAAE,MAAM;AAChB;AACA;AACA;AACA;AACA,QAAK,CAAEuD,GAAP,EAAa;AACZQ,MAAAA,aAAa,CAAE,IAAF,CAAb;AACA;AACD,GARQ,EAQN,CAAER,GAAF,CARM,CAAT;AAUAvD,EAAAA,SAAS,CAAE,MAAM;AAChB;AACA,QAAK2E,WAAL,EAAmB;AAClB;AACA;AACAd,MAAAA,uCAAuC;;AACvCuB,MAAAA,kBAAkB;AAClB;AACD,GARQ,EAQN,CAAET,WAAF,CARM,CAAT;AAUA;AACD;AACA;AACA;;AACC3E,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK,CAAE+C,UAAP,EAAoB;AACnBgB,MAAAA,aAAa,CAAE,KAAF,CAAb;AACA;AACD,GAJQ,EAIN,CAAEhB,UAAF,CAJM,CAAT,CA/FG,CAqGH;;AACA/C,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAK8D,UAAU,IAAIP,GAAnB,EAAyB;AACxB;AACA,UACC1D,KAAK,CAAEC,WAAW,CAAEwD,KAAF,CAAb,CAAL,IACA,cAAcgC,IAAd,CAAoBhC,KAApB,CAFD,EAGE;AACD;AACAiC,QAAAA,eAAe;AACf,OAND,MAMO;AACN;AACArF,QAAAA,0BAA0B,CAAEkE,GAAG,CAAChD,OAAN,EAAe,IAAf,CAA1B;AACA;AACD;AACD,GAdQ,EAcN,CAAEmC,GAAF,CAdM,CAAT;AAgBA;AACD;AACA;;AACC,WAASgC,eAAT,GAA2B;AAC1BnB,IAAAA,GAAG,CAAChD,OAAJ,CAAYoE,KAAZ;AACA,UAAM;AAAErE,MAAAA;AAAF,QAAoBiD,GAAG,CAAChD,OAA9B;AACA,UAAM;AAAEqE,MAAAA;AAAF,QAAkBtE,aAAxB;AACA,UAAMuE,SAAS,GAAGD,WAAW,CAACE,YAAZ,EAAlB;AACA,UAAMC,KAAK,GAAGzE,aAAa,CAAC0E,WAAd,EAAd,CAL0B,CAM1B;;AACAD,IAAAA,KAAK,CAACE,kBAAN,CAA0B1B,GAAG,CAAChD,OAA9B;AACAsE,IAAAA,SAAS,CAACK,eAAV;AACAL,IAAAA,SAAS,CAACM,QAAV,CAAoBJ,KAApB;AACA;AAED;AACD;AACA;;;AACC,WAASK,UAAT,GAAsB;AACrB;AACA;AACA;AACA;AACA;AACAjD,IAAAA,aAAa,CAAE;AACdO,MAAAA,GAAG,EAAE2C,SADS;AAEd5C,MAAAA,KAAK,EAAE4C,SAFO;AAGdlE,MAAAA,EAAE,EAAEkE,SAHU;AAIdpE,MAAAA,IAAI,EAAEoE,SAJQ;AAKdnE,MAAAA,IAAI,EAAEmE,SALQ;AAMdC,MAAAA,aAAa,EAAE;AAND,KAAF,CAAb,CANqB,CAerB;;AACApC,IAAAA,aAAa,CAAE,KAAF,CAAb;AACA;;AAED,MAAIqC,aAAa,GAAG,KAApB;;AACA,MAAK,CAAErE,IAAF,IAAUA,IAAI,KAAK,MAAxB,EAAiC;AAChCqE,IAAAA,aAAa,GAAG/B,gBAAgB,CAACgC,SAAjC;AACA,GAFD,MAEO,IAAKtE,IAAI,KAAK,MAAd,EAAuB;AAC7BqE,IAAAA,aAAa,GAAG9B,gBAAgB,CAAC+B,SAAjC;AACA;;AAED,QAAM;AACLC,IAAAA,SADK;AAELC,IAAAA,eAFK;AAGLC,IAAAA,eAHK;AAILC,IAAAA;AAJK,MAKF3F,SAAS,CAAEsC,OAAF,EAAW,CAAEqB,cAAb,CALb;;AAOA,WAASiC,SAAT,CAAoBpF,KAApB,EAA4B;AAC3B,QACCpC,eAAe,CAACyH,OAAhB,CAAyBrF,KAAzB,EAAgC,GAAhC,KACE,CAAE,CAAEiC,GAAF,IAASb,OAAT,IAAoBD,SAAtB,KAAqCnB,KAAK,CAACsF,OAAN,KAAkBzH,KAF1D,EAGE;AACD4E,MAAAA,aAAa,CAAE,IAAF,CAAb;AACA;AACD;;AAED,QAAM8C,UAAU,GAAGrH,aAAa,CAAE;AACjC4E,IAAAA,GAAG,EAAEzD,YAAY,CAAE,CAAEsD,gBAAF,EAAoBC,WAApB,CAAF,CADgB;AAEjC4C,IAAAA,SAAS,EAAEvI,UAAU,CAAE,0BAAF,EAA8B;AAClD,oBAAcwE,UAAU,IAAI2B,uBADsB;AAElD,4BAAsBzD,gBAF4B;AAGlD,kBAAY,CAAC,CAAEsC,GAHmC;AAIlD,mBAAaoB,WAJqC;AAKlD,wBAAkB,CAAC,CAAE2B,SAAH,IAAgB,CAAC,CAAEC,eALa;AAMlD,OAAE5G,iBAAiB,CAAE,OAAF,EAAW2G,SAAX,CAAnB,GAA6C,CAAC,CAAEA,SANE;AAOlD,wBAAkB,CAAC,CAAEE,eAAH,IAAsBC,qBAPU;AAQlD,OAAE9G,iBAAiB,CAAE,kBAAF,EAAsB6G,eAAtB,CAAnB,GACC,CAAC,CAAEA;AAT8C,KAA9B,CAFY;AAajCO,IAAAA,KAAK,EAAE;AACNC,MAAAA,KAAK,EAAE,CAAEV,SAAF,IAAeC,eADhB;AAENC,MAAAA,eAAe,EAAE,CAAEA,eAAF,IAAqBC;AAFhC,KAb0B;AAiBjCC,IAAAA;AAjBiC,GAAF,CAAhC;AAoBA,QAAMO,cAAc,GAAG,CACtB,sBADsB,EAEtB,yBAFsB,EAGtB,gBAHsB,CAAvB;AAKA,QAAMC,aAAa,GAAG;AACrBhC,IAAAA,IAAI,EAAE;AADe,GAAtB;AAIA,QAAMiC,gBAAgB,GAAGvH,mBAAmB,CAC3C,EACC,GAAGiH,UADJ;AAECC,IAAAA,SAAS,EAAE,gBAFZ,CAE8B;;AAF9B,GAD2C,EAK3C;AACCM,IAAAA,aAAa,EAAEH,cADhB;AAECI,IAAAA,0BAA0B,EAAEH,aAF7B;AAGCI,IAAAA,0BAA0B,EAAE,IAH7B;AAICC,IAAAA,cAAc,EAAE;AAJjB,GAL2C,CAA5C;;AAaA,MAAK,CAAEhE,GAAF,IAASd,SAAT,IAAsBC,OAA3B,EAAqC;AACpCmE,IAAAA,UAAU,CAACW,OAAX,GAAqB,MAAMzD,aAAa,CAAE,IAAF,CAAxC;AACA;;AAED,QAAM0D,OAAO,GAAGlJ,UAAU,CAAE,mCAAF,EAAuC;AAChE,6CAAyC,CAAEgF,GAAF,IAASd,SAAT,IAAsBC;AADC,GAAvC,CAA1B;AAIA,QAAME,WAAW,GAAGD,cAAc,CAAEZ,IAAF,CAAlC;AACA;;AACA,QAAM2F,eAAe,GAAI,IACxBjF,SAAS,GAAGrD,EAAE,CAAE,SAAF,CAAL,GAAqBA,EAAE,CAAE,OAAF,CAChC,GAFD;AAGA,QAAMuI,WAAW,GAChBlF,SAAS,IAAIC,OAAb,GACGtD,EAAE,CAAE,2CAAF,CADL,GAEGA,EAAE,CAAE,6BAAF,CAHN;AAKA,SACC,8BACC,cAAC,aAAD,QACC,cAAC,YAAD,QACC,cAAC,aAAD;AACC,IAAA,IAAI,EAAC,MADN;AAEC,IAAA,IAAI,EAAGmB,QAFR;AAGC,IAAA,KAAK,EAAGnB,EAAE,CAAE,MAAF,CAHX;AAIC,IAAA,QAAQ,EAAGH,eAAe,CAAC0H,OAAhB,CAAyB,GAAzB,CAJZ;AAKC,IAAA,OAAO,EAAG,MAAM5C,aAAa,CAAE,IAAF;AAL9B,IADD,EAQG,CAAES,cAAF,IACD,cAAC,aAAD;AACC,IAAA,IAAI,EAAC,SADN;AAEC,IAAA,IAAI,EAAGhE,UAFR;AAGC,IAAA,KAAK,EAAGpB,EAAE,CAAE,aAAF,CAHX;AAIC,IAAA,OAAO,EAAGgG;AAJX,IATF,CADD,CADD,EAqBC,cAAC,iBAAD,QACC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAGhG,EAAE,CAAE,UAAF;AAArB,KACC,cAAC,WAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGkE,KAAK,GAAGlD,SAAS,CAAEkD,KAAF,CAAZ,GAAwB,EAFtC;AAGC,IAAA,QAAQ,EAAKsE,UAAF,IAAkB;AAC5B5E,MAAAA,aAAa,CAAE;AAAEM,QAAAA,KAAK,EAAEsE;AAAT,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAGxI,EAAE,CAAE,OAAF,CANX;AAOC,IAAA,YAAY,EAAC;AAPd,IADD,EAUC,cAAC,WAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGmE,GAAG,IAAI,EAFhB;AAGC,IAAA,QAAQ,EAAKsE,QAAF,IAAgB;AAC1BhH,MAAAA,gBAAgB,CACf;AAAE0C,QAAAA,GAAG,EAAEsE;AAAP,OADe,EAEf7E,aAFe,EAGfF,UAHe,CAAhB;AAKA,KATF;AAUC,IAAA,KAAK,EAAG1D,EAAE,CAAE,KAAF,CAVX;AAWC,IAAA,YAAY,EAAC;AAXd,IAVD,EAuBC,cAAC,eAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGoE,WAAW,IAAI,EAFxB;AAGC,IAAA,QAAQ,EAAKsE,gBAAF,IAAwB;AAClC9E,MAAAA,aAAa,CAAE;AAAEQ,QAAAA,WAAW,EAAEsE;AAAf,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAG1I,EAAE,CAAE,aAAF,CANX;AAOC,IAAA,IAAI,EAAGA,EAAE,CACR,iFADQ;AAPV,IAvBD,EAkCC,cAAC,WAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGsE,KAAK,IAAI,EAFlB;AAGC,IAAA,QAAQ,EAAKqE,UAAF,IAAkB;AAC5B/E,MAAAA,aAAa,CAAE;AAAEU,QAAAA,KAAK,EAAEqE;AAAT,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAG3I,EAAE,CAAE,iBAAF,CANX;AAOC,IAAA,YAAY,EAAC,KAPd;AAQC,IAAA,IAAI,EAAGA,EAAE,CACR,iEADQ;AARV,IAlCD,EA8CC,cAAC,WAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGqE,GAAG,IAAI,EAFhB;AAGC,IAAA,QAAQ,EAAKuE,QAAF,IAAgB;AAC1BhF,MAAAA,aAAa,CAAE;AAAES,QAAAA,GAAG,EAAEuE;AAAP,OAAF,CAAb;AACA,KALF;AAMC,IAAA,KAAK,EAAG5I,EAAE,CAAE,eAAF,CANX;AAOC,IAAA,YAAY,EAAC,KAPd;AAQC,IAAA,IAAI,EAAGA,EAAE,CACR,mEADQ;AARV,IA9CD,CADD,CArBD,EAkFC,0BAAUyH;AAAV,KAEC;AAAG,IAAA,SAAS,EAAGY;AAAf,KAEG,CAAElE,GAAF,GACD;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,OAAD;AAAS,IAAA,QAAQ,EAAC,YAAlB;AAA+B,IAAA,IAAI,EAAGoE;AAAtC,KACC,8BACC,4BAAQ/E,WAAR,CADD,EAEC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACG+E,WADH,CAFD,CADD,CADD,CADC,GAYD,8BACG,CAAElF,SAAF,IAAe,CAAEC,OAAjB,IACD,8BACC,cAAC,QAAD;AACC,IAAA,GAAG,EAAG0B,GADP;AAEC,IAAA,UAAU,EAAC,OAFZ;AAGC,IAAA,SAAS,EAAC,iCAHX;AAIC,IAAA,KAAK,EAAGd,KAJT;AAKC,IAAA,QAAQ,EAAKsE,UAAF,IACV5E,aAAa,CAAE;AACdM,MAAAA,KAAK,EAAEsE;AADO,KAAF,CANf;AAUC,IAAA,OAAO,EAAG1E,WAVX;AAWC,IAAA,SAAS,EAAGC,SAXb;AAYC,IAAA,sBAAsB,EAAG,MACxBF,iBAAiB,CAChBzE,WAAW,CACV,sBADU,CADK,CAbnB;AAmBC,kBAAaY,EAAE,CACd,sBADc,CAnBhB;AAsBC,IAAA,WAAW,EAAG+E,oBAtBf;AAuBC,IAAA,4BAA4B,MAvB7B;AAwBC,IAAA,cAAc,EAAG,CAChB,WADgB,EAEhB,aAFgB,EAGhB,YAHgB,EAIhB,oBAJgB,CAxBlB;AA8BC,IAAA,OAAO,EAAG,MAAM;AACf,UAAK,CAAEZ,GAAP,EAAa;AACZQ,QAAAA,aAAa,CAAE,IAAF,CAAb;AACA;AACD;AAlCF,IADD,EAqCGP,WAAW,IACZ;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGA,WADH,CAtCF,CAFF,EA8CG,CAAEf,SAAS,IAAIC,OAAf,KACD;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,OAAD;AACC,IAAA,QAAQ,EAAC,YADV;AAEC,IAAA,IAAI,EAAGiF;AAFR,KAIC,8BACC;AACC,kBAAavI,EAAE,CACd,sBADc;AADhB,KAME;AACA;AACA;AACA;AACA;AACC,KAAGiB,cAAc,CACjBiD,KADiB,CAEf,IAAIoE,eAAiB,EAFxB,CAE0BO,IAF1B,EAXF,CADD,EAiBC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGN,WADH,CAjBD,CAJD,CADD,CA/CF,CAdF,EA4FG7D,UAAU,IACX,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,6CADX;AAEC,IAAA,QAAQ,EAAGT,QAFZ;AAGC,IAAA,IAAI,EAAGP,UAHR;AAIC,IAAA,OAAO,EAAG,MAAMiB,aAAa,CAAE,KAAF,CAJ9B;AAKC,IAAA,MAAM,EAAGC,aALV;AAMC,IAAA,mBAAmB,EAAGoC,aANvB;AAOC,IAAA,QAAQ,EAAGH,UAPZ;AAQC,IAAA,QAAQ,EAAKiC,YAAF,IAAoB;AAC9BrH,MAAAA,gBAAgB,CACfqH,YADe,EAEflF,aAFe,EAGfF,UAHe,CAAhB;AAKA;AAdF,IA7FF,CAFD,EAiHC,0BAAUqE;AAAV,IAjHD,CAlFD,CADD;AAwMA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tTooltip,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport {\n\tplaceCaretAtHorizontalEdge,\n\t__unstableStripHTML as stripHTML,\n} from '@wordpress/dom';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon, addSubmenu } from '@wordpress/icons';\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n} from '@wordpress/core-data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\nimport { LinkUI } from './link-ui';\nimport { updateAttributes } from './update-attributes';\nimport { getColors } from '../navigation/edit/utils';\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\nconst useIsInvalidLink = ( kind, type, id ) => {\n\tconst isPostType =\n\t\tkind === 'post-type' || type === 'post' || type === 'page';\n\tconst hasId = Number.isInteger( id );\n\tconst postStatus = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isPostType ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { getEntityRecord } = select( coreStore );\n\t\t\treturn getEntityRecord( 'postType', type, id )?.status;\n\t\t},\n\t\t[ isPostType, type, id ]\n\t);\n\n\t// Check Navigation Link validity if:\n\t// 1. Link is 'post-type'.\n\t// 2. It has an id.\n\t// 3. It's neither null, nor undefined, as valid items might be either of those while loading.\n\t// If those conditions are met, check if\n\t// 1. The post status is published.\n\t// 2. The Navigation Link item has no label.\n\t// If either of those is true, invalidate.\n\tconst isInvalid =\n\t\tisPostType && hasId && postStatus && 'trash' === postStatus;\n\tconst isDraft = 'draft' === postStatus;\n\n\treturn [ isInvalid, isDraft ];\n};\n\nfunction getMissingText( type ) {\n\tlet missingText = '';\n\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\t\t/* translators: label for missing post in navigation link block */\n\t\t\tmissingText = __( 'Select post' );\n\t\t\tbreak;\n\t\tcase 'page':\n\t\t\t/* translators: label for missing page in navigation link block */\n\t\t\tmissingText = __( 'Select page' );\n\t\t\tbreak;\n\t\tcase 'category':\n\t\t\t/* translators: label for missing category in navigation link block */\n\t\t\tmissingText = __( 'Select category' );\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\t/* translators: label for missing tag in navigation link block */\n\t\t\tmissingText = __( 'Select tag' );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t/* translators: label for missing values in navigation link block */\n\t\t\tmissingText = __( 'Add link' );\n\t}\n\n\treturn missingText;\n}\n\nexport default function NavigationLinkEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { id, label, type, url, description, rel, title, kind } = attributes;\n\n\tconst [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );\n\tconst { maxNestingLevel } = context;\n\n\tconst { replaceBlock, __unstableMarkNextChangeAsNotPersistent } =\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 label…' );\n\tconst ref = useRef();\n\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tisAtMaxNesting,\n\t\tisTopLevelLink,\n\t\tisParentOfSelectedBlock,\n\t\thasChildren,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tinnerBlocks: getBlocks( clientId ),\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\t] ).length >= maxNestingLevel,\n\t\t\t\tisTopLevelLink:\n\t\t\t\t\tgetBlockName( getBlockRootClientId( clientId ) ) ===\n\t\t\t\t\t'core/navigation',\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\thasChildren: !! getBlockCount( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t/**\n\t * Transform to submenu block.\n\t */\n\tfunction transformToSubmenu() {\n\t\tconst newSubmenu = createBlock(\n\t\t\t'core/navigation-submenu',\n\t\t\tattributes,\n\t\t\tinnerBlocks.length > 0\n\t\t\t\t? innerBlocks\n\t\t\t\t: [ createBlock( 'core/navigation-link' ) ]\n\t\t);\n\t\treplaceBlock( clientId, newSubmenu );\n\t}\n\n\tuseEffect( () => {\n\t\t// Show the LinkControl on mount if the URL is empty\n\t\t// ( When adding a new menu item)\n\t\t// This can't be done in the useState call because it conflicts\n\t\t// with the autofocus behavior of the BlockListBlock component.\n\t\tif ( ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [ url ] );\n\n\tuseEffect( () => {\n\t\t// If block has inner blocks, transform to Submenu.\n\t\tif ( hasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToSubmenu();\n\t\t}\n\t}, [ hasChildren ] );\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\t/**\n\t * Removes the current link if set.\n\t */\n\tfunction removeLink() {\n\t\t// Reset all attributes that comprise the link.\n\t\t// It is critical that all attributes are reset\n\t\t// to their default values otherwise this may\n\t\t// in advertently trigger side effects because\n\t\t// the values will have \"changed\".\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tlabel: undefined,\n\t\t\tid: undefined,\n\t\t\tkind: undefined,\n\t\t\ttype: undefined,\n\t\t\topensInNewTab: false,\n\t\t} );\n\n\t\t// Close the link editing UI.\n\t\tsetIsLinkOpen( false );\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, ! isTopLevelLink );\n\n\tfunction onKeyDown( event ) {\n\t\tif (\n\t\t\tisKeyboardEvent.primary( event, 'k' ) ||\n\t\t\t( ( ! url || isDraft || isInvalid ) && event.keyCode === ENTER )\n\t\t) {\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} ),\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\tconst ALLOWED_BLOCKS = [\n\t\t'core/navigation-link',\n\t\t'core/navigation-submenu',\n\t\t'core/page-list',\n\t];\n\tconst DEFAULT_BLOCK = {\n\t\tname: 'core/navigation-link',\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\t...blockProps,\n\t\t\tclassName: 'remove-outline', // Remove the outline from the inner blocks container.\n\t\t},\n\t\t{\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: true,\n\t\t\trenderAppender: false,\n\t\t}\n\t);\n\n\tif ( ! url || isInvalid || isDraft ) {\n\t\tblockProps.onClick = () => setIsLinkOpen( true );\n\t}\n\n\tconst classes = classnames( 'wp-block-navigation-item__content', {\n\t\t'wp-block-navigation-link__placeholder': ! url || isInvalid || isDraft,\n\t} );\n\n\tconst missingText = getMissingText( type );\n\t/* translators: Whether the navigation link is Invalid or a Draft. */\n\tconst placeholderText = `(${\n\t\tisInvalid ? __( 'Invalid' ) : __( 'Draft' )\n\t})`;\n\tconst tooltipText =\n\t\tisInvalid || isDraft\n\t\t\t? __( 'This item has been deleted, or is a draft' )\n\t\t\t: __( 'This item is missing a link' );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! isAtMaxNesting && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"submenu\"\n\t\t\t\t\t\t\ticon={ addSubmenu }\n\t\t\t\t\t\t\ttitle={ __( 'Add submenu' ) }\n\t\t\t\t\t\t\tonClick={ transformToSubmenu }\n\t\t\t\t\t\t/>\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-submenu/edit.js */ }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ label ? stripHTML( label ) : '' }\n\t\t\t\t\t\tonChange={ ( labelValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\tonChange={ ( urlValue ) => {\n\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t{ url: urlValue },\n\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'URL' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { description: descriptionValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Additional information to help clarify the purpose of the link.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Rel attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The relationship of the linked URL as space-separated link types.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<a className={ classes }>\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{ ! url ? (\n\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text\">\n\t\t\t\t\t\t\t<Tooltip position=\"top center\" text={ tooltipText }>\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<span>{ missingText }</span>\n\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isInvalid && ! isDraft && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: labelValue,\n\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'core/navigation-link'\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ description && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ( isInvalid || isDraft ) && (\n\t\t\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text wp-block-navigation-link__label\">\n\t\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\t\t\t\ttext={ tooltipText }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Some attributes are stored in an escaped form. It's a legacy issue.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Ideally they would be stored in a raw, unescaped form.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Unescape is used here to \"recover\" the escaped characters\n\t\t\t\t\t\t\t\t\t\t\t\t\t// so they display without encoding.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// See `updateAttributes` for more details.\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t) } ${ placeholderText }`.trim()\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t</div>\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{ 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={ removeLink }\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</a>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"names":["classnames","createBlock","useSelect","useDispatch","PanelBody","TextControl","TextareaControl","ToolbarButton","Tooltip","ToolbarGroup","displayShortcut","isKeyboardEvent","ENTER","__","BlockControls","InspectorControls","RichText","useBlockProps","store","blockEditorStore","getColorClassName","useInnerBlocksProps","isURL","prependHTTP","useState","useEffect","useRef","placeCaretAtHorizontalEdge","__unstableStripHTML","stripHTML","decodeEntities","link","linkIcon","addSubmenu","coreStore","useMergeRefs","LinkUI","updateAttributes","getColors","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","useIsInvalidLink","kind","type","id","isPostType","hasId","Number","isInteger","postStatus","select","getEntityRecord","status","isInvalid","isDraft","getMissingText","missingText","NavigationLinkEdit","attributes","isSelected","setAttributes","insertBlocksAfter","mergeBlocks","onReplace","context","clientId","label","url","description","rel","title","maxNestingLevel","replaceBlock","__unstableMarkNextChangeAsNotPersistent","isLinkOpen","setIsLinkOpen","popoverAnchor","setPopoverAnchor","listItemRef","itemLabelPlaceholder","ref","isLabelFieldFocused","setIsLabelFieldFocused","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasChildren","getBlocks","getBlockCount","getBlockName","getBlockRootClientId","hasSelectedInnerBlock","getBlockParentsByBlockName","name","length","transformToSubmenu","newSubmenu","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","undefined","opensInNewTab","textColor","customTextColor","backgroundColor","customBackgroundColor","onKeyDown","primary","keyCode","blockProps","className","style","color","ALLOWED_BLOCKS","DEFAULT_BLOCK","innerBlocksProps","allowedBlocks","defaultBlock","directInsert","renderAppender","onClick","classes","placeholderText","tooltipText","labelValue","urlValue","descriptionValue","titleValue","relValue","trim","updatedValue"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tTooltip,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport {\n\tplaceCaretAtHorizontalEdge,\n\t__unstableStripHTML as stripHTML,\n} from '@wordpress/dom';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon, addSubmenu } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\nimport { LinkUI } from './link-ui';\nimport { updateAttributes } from './update-attributes';\nimport { getColors } from '../navigation/edit/utils';\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\nconst useIsInvalidLink = ( kind, type, id ) => {\n\tconst isPostType =\n\t\tkind === 'post-type' || type === 'post' || type === 'page';\n\tconst hasId = Number.isInteger( id );\n\tconst postStatus = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isPostType ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { getEntityRecord } = select( coreStore );\n\t\t\treturn getEntityRecord( 'postType', type, id )?.status;\n\t\t},\n\t\t[ isPostType, type, id ]\n\t);\n\n\t// Check Navigation Link validity if:\n\t// 1. Link is 'post-type'.\n\t// 2. It has an id.\n\t// 3. It's neither null, nor undefined, as valid items might be either of those while loading.\n\t// If those conditions are met, check if\n\t// 1. The post status is published.\n\t// 2. The Navigation Link item has no label.\n\t// If either of those is true, invalidate.\n\tconst isInvalid =\n\t\tisPostType && hasId && postStatus && 'trash' === postStatus;\n\tconst isDraft = 'draft' === postStatus;\n\n\treturn [ isInvalid, isDraft ];\n};\n\nfunction getMissingText( type ) {\n\tlet missingText = '';\n\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\t\t/* translators: label for missing post in navigation link block */\n\t\t\tmissingText = __( 'Select post' );\n\t\t\tbreak;\n\t\tcase 'page':\n\t\t\t/* translators: label for missing page in navigation link block */\n\t\t\tmissingText = __( 'Select page' );\n\t\t\tbreak;\n\t\tcase 'category':\n\t\t\t/* translators: label for missing category in navigation link block */\n\t\t\tmissingText = __( 'Select category' );\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\t/* translators: label for missing tag in navigation link block */\n\t\t\tmissingText = __( 'Select tag' );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t/* translators: label for missing values in navigation link block */\n\t\t\tmissingText = __( 'Add link' );\n\t}\n\n\treturn missingText;\n}\n\nexport default function NavigationLinkEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { id, label, type, url, description, rel, title, kind } = attributes;\n\n\tconst [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );\n\tconst { maxNestingLevel } = context;\n\n\tconst { replaceBlock, __unstableMarkNextChangeAsNotPersistent } =\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 label…' );\n\tconst ref = useRef();\n\n\t// Change the label using inspector causes rich text to change focus on firefox.\n\t// This is a workaround to keep the focus on the label field when label filed is focused we don't render the rich text.\n\tconst [ isLabelFieldFocused, setIsLabelFieldFocused ] = useState( false );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tisAtMaxNesting,\n\t\tisTopLevelLink,\n\t\tisParentOfSelectedBlock,\n\t\thasChildren,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tinnerBlocks: getBlocks( clientId ),\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\t] ).length >= maxNestingLevel,\n\t\t\t\tisTopLevelLink:\n\t\t\t\t\tgetBlockName( getBlockRootClientId( clientId ) ) ===\n\t\t\t\t\t'core/navigation',\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\thasChildren: !! getBlockCount( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t/**\n\t * Transform to submenu block.\n\t */\n\tfunction transformToSubmenu() {\n\t\tconst newSubmenu = createBlock(\n\t\t\t'core/navigation-submenu',\n\t\t\tattributes,\n\t\t\tinnerBlocks.length > 0\n\t\t\t\t? innerBlocks\n\t\t\t\t: [ createBlock( 'core/navigation-link' ) ]\n\t\t);\n\t\treplaceBlock( clientId, newSubmenu );\n\t}\n\n\tuseEffect( () => {\n\t\t// Show the LinkControl on mount if the URL is empty\n\t\t// ( When adding a new menu item)\n\t\t// This can't be done in the useState call because it conflicts\n\t\t// with the autofocus behavior of the BlockListBlock component.\n\t\tif ( ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [ url ] );\n\n\tuseEffect( () => {\n\t\t// If block has inner blocks, transform to Submenu.\n\t\tif ( hasChildren ) {\n\t\t\t// This side-effect should not create an undo level as those should\n\t\t\t// only be created via user interactions.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\ttransformToSubmenu();\n\t\t}\n\t}, [ hasChildren ] );\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\t/**\n\t * Removes the current link if set.\n\t */\n\tfunction removeLink() {\n\t\t// Reset all attributes that comprise the link.\n\t\t// It is critical that all attributes are reset\n\t\t// to their default values otherwise this may\n\t\t// in advertently trigger side effects because\n\t\t// the values will have \"changed\".\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tlabel: undefined,\n\t\t\tid: undefined,\n\t\t\tkind: undefined,\n\t\t\ttype: undefined,\n\t\t\topensInNewTab: false,\n\t\t} );\n\n\t\t// Close the link editing UI.\n\t\tsetIsLinkOpen( false );\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, ! isTopLevelLink );\n\n\tfunction onKeyDown( event ) {\n\t\tif (\n\t\t\tisKeyboardEvent.primary( event, 'k' ) ||\n\t\t\t( ( ! url || isDraft || isInvalid ) && event.keyCode === ENTER )\n\t\t) {\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} ),\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\tconst ALLOWED_BLOCKS = [\n\t\t'core/navigation-link',\n\t\t'core/navigation-submenu',\n\t\t'core/page-list',\n\t];\n\tconst DEFAULT_BLOCK = {\n\t\tname: 'core/navigation-link',\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\t...blockProps,\n\t\t\tclassName: 'remove-outline', // Remove the outline from the inner blocks container.\n\t\t},\n\t\t{\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\tdefaultBlock: DEFAULT_BLOCK,\n\t\t\tdirectInsert: true,\n\t\t\trenderAppender: false,\n\t\t}\n\t);\n\n\tif ( ! url || isInvalid || isDraft ) {\n\t\tblockProps.onClick = () => setIsLinkOpen( true );\n\t}\n\n\tconst classes = classnames( 'wp-block-navigation-item__content', {\n\t\t'wp-block-navigation-link__placeholder': ! url || isInvalid || isDraft,\n\t} );\n\n\tconst missingText = getMissingText( type );\n\t/* translators: Whether the navigation link is Invalid or a Draft. */\n\tconst placeholderText = `(${\n\t\tisInvalid ? __( 'Invalid' ) : __( 'Draft' )\n\t})`;\n\tconst tooltipText =\n\t\tisInvalid || isDraft\n\t\t\t? __( 'This item has been deleted, or is a draft' )\n\t\t\t: __( 'This item is missing a link' );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! isAtMaxNesting && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"submenu\"\n\t\t\t\t\t\t\ticon={ addSubmenu }\n\t\t\t\t\t\t\ttitle={ __( 'Add submenu' ) }\n\t\t\t\t\t\t\tonClick={ transformToSubmenu }\n\t\t\t\t\t\t/>\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-submenu/edit.js */ }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ label ? stripHTML( 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\tonFocus={ () => setIsLabelFieldFocused( true ) }\n\t\t\t\t\t\tonBlur={ () => setIsLabelFieldFocused( false ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\tonChange={ ( urlValue ) => {\n\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\t{ url: urlValue },\n\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'URL' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { description: descriptionValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Additional information to help clarify the purpose of the link.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Rel attribute' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The relationship of the linked URL as space-separated link types.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<a className={ classes }>\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{ ! url ? (\n\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text\">\n\t\t\t\t\t\t\t<Tooltip position=\"top center\" text={ tooltipText }>\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<span>{ missingText }</span>\n\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isInvalid &&\n\t\t\t\t\t\t\t\t! isDraft &&\n\t\t\t\t\t\t\t\t! isLabelFieldFocused && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: labelValue,\n\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'core/navigation-link'\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{ description && (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t\t\t\t\t\t</span>\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) }\n\t\t\t\t\t\t\t{ ( isInvalid ||\n\t\t\t\t\t\t\t\tisDraft ||\n\t\t\t\t\t\t\t\tisLabelFieldFocused ) && (\n\t\t\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text wp-block-navigation-link__label\">\n\t\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\t\t\t\ttext={ tooltipText }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Some attributes are stored in an escaped form. It's a legacy issue.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Ideally they would be stored in a raw, unescaped form.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Unescape is used here to \"recover\" the escaped characters\n\t\t\t\t\t\t\t\t\t\t\t\t\t// so they display without encoding.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// See `updateAttributes` for more details.\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ decodeEntities(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t) } ${\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisInvalid || isDraft\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? placeholderText\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t\t\t\t\t\t}`.trim()\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t</div>\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{ 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\tonRemove={ removeLink }\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</a>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"]}