@wordpress/block-library 8.30.0 → 8.32.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 (362) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/block/edit.js +22 -16
  3. package/build/block/edit.js.map +1 -1
  4. package/build/button/edit.native.js +1 -1
  5. package/build/button/edit.native.js.map +1 -1
  6. package/build/code/save.js +3 -1
  7. package/build/code/save.js.map +1 -1
  8. package/build/cover/edit/index.js +2 -1
  9. package/build/cover/edit/index.js.map +1 -1
  10. package/build/details/edit.js +1 -0
  11. package/build/details/edit.js.map +1 -1
  12. package/build/file/edit.js +2 -0
  13. package/build/file/edit.js.map +1 -1
  14. package/build/heading/index.js +4 -3
  15. package/build/heading/index.js.map +1 -1
  16. package/build/image/edit.js +10 -39
  17. package/build/image/edit.js.map +1 -1
  18. package/build/image/image.js +27 -6
  19. package/build/image/image.js.map +1 -1
  20. package/build/media-text/edit.js +33 -9
  21. package/build/media-text/edit.js.map +1 -1
  22. package/build/media-text/index.js +5 -0
  23. package/build/media-text/index.js.map +1 -1
  24. package/build/media-text/media-container.js +30 -11
  25. package/build/media-text/media-container.js.map +1 -1
  26. package/build/media-text/save.js +2 -2
  27. package/build/media-text/save.js.map +1 -1
  28. package/build/navigation/edit/index.js +23 -29
  29. package/build/navigation/edit/index.js.map +1 -1
  30. package/build/navigation/edit/navigation-menu-delete-control.js +12 -20
  31. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  32. package/build/navigation/edit/navigation-menu-selector.js +24 -23
  33. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  34. package/build/navigation/edit/placeholder/index.js +4 -4
  35. package/build/navigation/edit/placeholder/index.js.map +1 -1
  36. package/build/navigation/use-navigation-menu.js +15 -12
  37. package/build/navigation/use-navigation-menu.js.map +1 -1
  38. package/build/navigation/view.js +12 -2
  39. package/build/navigation/view.js.map +1 -1
  40. package/build/navigation-link/edit.js +52 -27
  41. package/build/navigation-link/edit.js.map +1 -1
  42. package/build/navigation-submenu/edit.js +31 -9
  43. package/build/navigation-submenu/edit.js.map +1 -1
  44. package/build/pattern/edit.js +3 -1
  45. package/build/pattern/edit.js.map +1 -1
  46. package/build/post-author/edit.js +1 -0
  47. package/build/post-author/edit.js.map +1 -1
  48. package/build/post-excerpt/edit.js +1 -0
  49. package/build/post-excerpt/edit.js.map +1 -1
  50. package/build/post-featured-image/edit.js +16 -4
  51. package/build/post-featured-image/edit.js.map +1 -1
  52. package/build/post-featured-image/index.js +13 -2
  53. package/build/post-featured-image/index.js.map +1 -1
  54. package/build/post-featured-image/overlay-controls.js +82 -0
  55. package/build/post-featured-image/overlay-controls.js.map +1 -0
  56. package/build/post-featured-image/overlay.js +5 -54
  57. package/build/post-featured-image/overlay.js.map +1 -1
  58. package/build/post-navigation-link/edit.js +1 -0
  59. package/build/post-navigation-link/edit.js.map +1 -1
  60. package/build/post-terms/edit.js +2 -0
  61. package/build/post-terms/edit.js.map +1 -1
  62. package/build/quote/edit.js +18 -23
  63. package/build/quote/edit.js.map +1 -1
  64. package/build/read-more/edit.js +1 -0
  65. package/build/read-more/edit.js.map +1 -1
  66. package/build/search/edit.js +2 -0
  67. package/build/search/edit.js.map +1 -1
  68. package/build/search/edit.native.js +2 -2
  69. package/build/search/edit.native.js.map +1 -1
  70. package/build/site-tagline/edit.js +13 -4
  71. package/build/site-tagline/edit.js.map +1 -1
  72. package/build/site-tagline/index.js +4 -0
  73. package/build/site-tagline/index.js.map +1 -1
  74. package/build/social-link/edit.js +1 -1
  75. package/build/social-link/edit.js.map +1 -1
  76. package/build/social-link/icons/medium.js +1 -1
  77. package/build/social-link/icons/medium.js.map +1 -1
  78. package/build/social-link/icons/reddit.js +1 -1
  79. package/build/social-link/icons/reddit.js.map +1 -1
  80. package/build/table/deprecated.js +285 -175
  81. package/build/table/deprecated.js.map +1 -1
  82. package/build/table/index.js +1 -1
  83. package/build/template-part/edit/index.js +55 -47
  84. package/build/template-part/edit/index.js.map +1 -1
  85. package/build/template-part/edit/inner-blocks.js +106 -10
  86. package/build/template-part/edit/inner-blocks.js.map +1 -1
  87. package/build/template-part/edit/selection-modal.js +1 -9
  88. package/build/template-part/edit/selection-modal.js.map +1 -1
  89. package/build/utils/caption.js +19 -13
  90. package/build/utils/caption.js.map +1 -1
  91. package/build/utils/hooks.js +1 -0
  92. package/build/utils/hooks.js.map +1 -1
  93. package/build/video/edit.native.js +1 -1
  94. package/build/video/edit.native.js.map +1 -1
  95. package/build-module/block/edit.js +23 -17
  96. package/build-module/block/edit.js.map +1 -1
  97. package/build-module/button/edit.native.js +1 -1
  98. package/build-module/button/edit.native.js.map +1 -1
  99. package/build-module/code/save.js +3 -1
  100. package/build-module/code/save.js.map +1 -1
  101. package/build-module/cover/edit/index.js +2 -1
  102. package/build-module/cover/edit/index.js.map +1 -1
  103. package/build-module/details/edit.js +1 -0
  104. package/build-module/details/edit.js.map +1 -1
  105. package/build-module/file/edit.js +2 -0
  106. package/build-module/file/edit.js.map +1 -1
  107. package/build-module/heading/index.js +4 -3
  108. package/build-module/heading/index.js.map +1 -1
  109. package/build-module/image/edit.js +11 -40
  110. package/build-module/image/edit.js.map +1 -1
  111. package/build-module/image/image.js +27 -6
  112. package/build-module/image/image.js.map +1 -1
  113. package/build-module/media-text/edit.js +34 -10
  114. package/build-module/media-text/edit.js.map +1 -1
  115. package/build-module/media-text/index.js +5 -0
  116. package/build-module/media-text/index.js.map +1 -1
  117. package/build-module/media-text/media-container.js +31 -12
  118. package/build-module/media-text/media-container.js.map +1 -1
  119. package/build-module/media-text/save.js +2 -2
  120. package/build-module/media-text/save.js.map +1 -1
  121. package/build-module/navigation/edit/index.js +24 -30
  122. package/build-module/navigation/edit/index.js.map +1 -1
  123. package/build-module/navigation/edit/navigation-menu-delete-control.js +15 -23
  124. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  125. package/build-module/navigation/edit/navigation-menu-selector.js +24 -23
  126. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  127. package/build-module/navigation/edit/placeholder/index.js +4 -4
  128. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  129. package/build-module/navigation/use-navigation-menu.js +15 -12
  130. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  131. package/build-module/navigation/view.js +12 -2
  132. package/build-module/navigation/view.js.map +1 -1
  133. package/build-module/navigation-link/edit.js +55 -30
  134. package/build-module/navigation-link/edit.js.map +1 -1
  135. package/build-module/navigation-submenu/edit.js +31 -9
  136. package/build-module/navigation-submenu/edit.js.map +1 -1
  137. package/build-module/pattern/edit.js +3 -1
  138. package/build-module/pattern/edit.js.map +1 -1
  139. package/build-module/post-author/edit.js +1 -0
  140. package/build-module/post-author/edit.js.map +1 -1
  141. package/build-module/post-excerpt/edit.js +1 -0
  142. package/build-module/post-excerpt/edit.js.map +1 -1
  143. package/build-module/post-featured-image/edit.js +17 -5
  144. package/build-module/post-featured-image/edit.js.map +1 -1
  145. package/build-module/post-featured-image/index.js +13 -2
  146. package/build-module/post-featured-image/index.js.map +1 -1
  147. package/build-module/post-featured-image/overlay-controls.js +75 -0
  148. package/build-module/post-featured-image/overlay-controls.js.map +1 -0
  149. package/build-module/post-featured-image/overlay.js +7 -56
  150. package/build-module/post-featured-image/overlay.js.map +1 -1
  151. package/build-module/post-navigation-link/edit.js +1 -0
  152. package/build-module/post-navigation-link/edit.js.map +1 -1
  153. package/build-module/post-terms/edit.js +2 -0
  154. package/build-module/post-terms/edit.js.map +1 -1
  155. package/build-module/quote/edit.js +20 -25
  156. package/build-module/quote/edit.js.map +1 -1
  157. package/build-module/read-more/edit.js +1 -0
  158. package/build-module/read-more/edit.js.map +1 -1
  159. package/build-module/search/edit.js +2 -0
  160. package/build-module/search/edit.js.map +1 -1
  161. package/build-module/search/edit.native.js +2 -2
  162. package/build-module/search/edit.native.js.map +1 -1
  163. package/build-module/site-tagline/edit.js +14 -5
  164. package/build-module/site-tagline/edit.js.map +1 -1
  165. package/build-module/site-tagline/index.js +4 -0
  166. package/build-module/site-tagline/index.js.map +1 -1
  167. package/build-module/social-link/edit.js +1 -1
  168. package/build-module/social-link/edit.js.map +1 -1
  169. package/build-module/social-link/icons/medium.js +1 -1
  170. package/build-module/social-link/icons/medium.js.map +1 -1
  171. package/build-module/social-link/icons/reddit.js +1 -1
  172. package/build-module/social-link/icons/reddit.js.map +1 -1
  173. package/build-module/table/deprecated.js +286 -176
  174. package/build-module/table/deprecated.js.map +1 -1
  175. package/build-module/table/index.js +1 -1
  176. package/build-module/template-part/edit/index.js +58 -50
  177. package/build-module/template-part/edit/index.js.map +1 -1
  178. package/build-module/template-part/edit/inner-blocks.js +108 -12
  179. package/build-module/template-part/edit/inner-blocks.js.map +1 -1
  180. package/build-module/template-part/edit/selection-modal.js +2 -10
  181. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  182. package/build-module/utils/caption.js +19 -13
  183. package/build-module/utils/caption.js.map +1 -1
  184. package/build-module/utils/hooks.js +1 -0
  185. package/build-module/utils/hooks.js.map +1 -1
  186. package/build-module/video/edit.native.js +1 -1
  187. package/build-module/video/edit.native.js.map +1 -1
  188. package/build-style/audio/theme-rtl.css +1 -1
  189. package/build-style/audio/theme.css +1 -1
  190. package/build-style/cover/style-rtl.css +5 -2
  191. package/build-style/cover/style.css +5 -2
  192. package/build-style/editor-rtl.css +22 -12
  193. package/build-style/editor.css +22 -12
  194. package/build-style/embed/theme-rtl.css +1 -1
  195. package/build-style/embed/theme.css +1 -1
  196. package/build-style/file/editor-rtl.css +3 -0
  197. package/build-style/file/editor.css +3 -0
  198. package/build-style/image/editor-rtl.css +0 -3
  199. package/build-style/image/editor.css +0 -3
  200. package/build-style/image/theme-rtl.css +1 -1
  201. package/build-style/image/theme.css +1 -1
  202. package/build-style/media-text/editor-rtl.css +7 -1
  203. package/build-style/media-text/editor.css +7 -1
  204. package/build-style/pullquote/theme-rtl.css +2 -1
  205. package/build-style/pullquote/theme.css +2 -1
  206. package/build-style/quote/theme-rtl.css +6 -6
  207. package/build-style/quote/theme.css +6 -6
  208. package/build-style/search/style-rtl.css +10 -0
  209. package/build-style/search/style.css +10 -0
  210. package/build-style/social-links/editor-rtl.css +0 -4
  211. package/build-style/social-links/editor.css +0 -4
  212. package/build-style/social-links/style-rtl.css +2 -2
  213. package/build-style/social-links/style.css +2 -2
  214. package/build-style/style-rtl.css +17 -4
  215. package/build-style/style.css +17 -4
  216. package/build-style/table/theme-rtl.css +4 -3
  217. package/build-style/table/theme.css +4 -3
  218. package/build-style/template-part/editor-rtl.css +12 -4
  219. package/build-style/template-part/editor.css +12 -4
  220. package/build-style/template-part/theme-rtl.css +1 -1
  221. package/build-style/template-part/theme.css +1 -1
  222. package/build-style/theme-rtl.css +17 -15
  223. package/build-style/theme.css +17 -15
  224. package/build-style/video/theme-rtl.css +1 -1
  225. package/build-style/video/theme.css +1 -1
  226. package/package.json +34 -34
  227. package/src/archives/index.php +4 -0
  228. package/src/audio/theme.scss +1 -1
  229. package/src/avatar/index.php +6 -0
  230. package/src/block/edit.js +43 -32
  231. package/src/block/index.php +4 -0
  232. package/src/block/test/edit.native.js +67 -0
  233. package/src/button/edit.native.js +1 -1
  234. package/src/calendar/index.php +12 -0
  235. package/src/categories/index.php +6 -0
  236. package/src/code/save.js +7 -1
  237. package/src/comment-author-name/index.php +4 -0
  238. package/src/comment-content/index.php +4 -0
  239. package/src/comment-date/index.php +4 -0
  240. package/src/comment-edit-link/index.php +4 -0
  241. package/src/comment-reply-link/index.php +4 -0
  242. package/src/comment-template/index.php +4 -0
  243. package/src/comments/index.php +10 -0
  244. package/src/comments-pagination/index.php +4 -0
  245. package/src/comments-pagination-next/index.php +4 -0
  246. package/src/comments-pagination-numbers/index.php +4 -0
  247. package/src/comments-pagination-previous/index.php +4 -0
  248. package/src/comments-title/index.php +4 -0
  249. package/src/cover/edit/index.js +4 -1
  250. package/src/cover/index.php +4 -0
  251. package/src/cover/style.scss +6 -2
  252. package/src/details/edit.js +1 -0
  253. package/src/embed/theme.scss +1 -1
  254. package/src/file/edit.js +2 -0
  255. package/src/file/editor.scss +3 -0
  256. package/src/file/index.php +4 -0
  257. package/src/gallery/editor.scss +1 -1
  258. package/src/gallery/index.php +7 -1
  259. package/src/heading/index.js +4 -3
  260. package/src/heading/index.php +4 -0
  261. package/src/home-link/index.php +10 -0
  262. package/src/image/edit.js +11 -40
  263. package/src/image/editor.scss +2 -7
  264. package/src/image/image.js +25 -7
  265. package/src/image/index.php +12 -1
  266. package/src/image/theme.scss +1 -1
  267. package/src/latest-comments/index.php +4 -0
  268. package/src/latest-posts/index.php +8 -0
  269. package/src/loginout/index.php +4 -0
  270. package/src/media-text/block.json +5 -0
  271. package/src/media-text/edit.js +70 -19
  272. package/src/media-text/editor.scss +7 -1
  273. package/src/media-text/index.php +70 -0
  274. package/src/media-text/media-container.js +49 -9
  275. package/src/media-text/save.js +2 -2
  276. package/src/navigation/edit/index.js +67 -71
  277. package/src/navigation/edit/navigation-menu-delete-control.js +22 -49
  278. package/src/navigation/edit/navigation-menu-selector.js +39 -21
  279. package/src/navigation/edit/placeholder/index.js +4 -4
  280. package/src/navigation/edit/test/navigation-menu-selector.js +75 -53
  281. package/src/navigation/index.php +109 -26
  282. package/src/navigation/test/use-navigation-menu.js +21 -21
  283. package/src/navigation/use-navigation-menu.js +23 -9
  284. package/src/navigation/view.js +11 -2
  285. package/src/navigation-link/edit.js +64 -39
  286. package/src/navigation-link/index.php +14 -0
  287. package/src/navigation-submenu/edit.js +34 -10
  288. package/src/navigation-submenu/index.php +8 -0
  289. package/src/page-list/index.php +12 -0
  290. package/src/page-list-item/index.php +2 -0
  291. package/src/pattern/edit.js +4 -0
  292. package/src/pattern/index.php +2 -0
  293. package/src/post-author/edit.js +1 -0
  294. package/src/post-author/index.php +4 -0
  295. package/src/post-author-biography/index.php +4 -0
  296. package/src/post-author-name/index.php +4 -0
  297. package/src/post-comments-form/index.php +6 -0
  298. package/src/post-content/index.php +4 -0
  299. package/src/post-date/index.php +4 -0
  300. package/src/post-excerpt/edit.js +1 -0
  301. package/src/post-excerpt/index.php +4 -0
  302. package/src/post-featured-image/block.json +13 -2
  303. package/src/post-featured-image/edit.js +16 -1
  304. package/src/post-featured-image/editor.scss +1 -1
  305. package/src/post-featured-image/index.php +15 -0
  306. package/src/post-featured-image/overlay-controls.js +88 -0
  307. package/src/post-featured-image/overlay.js +17 -84
  308. package/src/post-navigation-link/edit.js +1 -0
  309. package/src/post-navigation-link/index.php +4 -0
  310. package/src/post-template/index.php +4 -0
  311. package/src/post-terms/edit.js +2 -0
  312. package/src/post-terms/index.php +6 -0
  313. package/src/post-title/index.php +2 -0
  314. package/src/pullquote/theme.scss +3 -1
  315. package/src/query/index.php +2 -0
  316. package/src/query-no-results/index.php +6 -0
  317. package/src/query-pagination/index.php +4 -0
  318. package/src/query-pagination-next/index.php +6 -0
  319. package/src/query-pagination-numbers/index.php +6 -0
  320. package/src/query-pagination-previous/index.php +4 -0
  321. package/src/query-title/index.php +4 -0
  322. package/src/quote/edit.js +27 -37
  323. package/src/quote/test/edit.native.js +4 -6
  324. package/src/quote/theme.scss +1 -2
  325. package/src/read-more/edit.js +1 -0
  326. package/src/read-more/index.php +4 -0
  327. package/src/rss/index.php +4 -0
  328. package/src/search/edit.js +2 -0
  329. package/src/search/edit.native.js +2 -2
  330. package/src/search/index.php +19 -1
  331. package/src/search/style.scss +11 -0
  332. package/src/shortcode/index.php +4 -0
  333. package/src/site-logo/editor.scss +2 -2
  334. package/src/site-logo/index.php +20 -0
  335. package/src/site-tagline/block.json +4 -0
  336. package/src/site-tagline/edit.js +16 -3
  337. package/src/site-tagline/index.php +13 -1
  338. package/src/site-title/index.php +4 -0
  339. package/src/social-link/edit.js +1 -1
  340. package/src/social-link/icons/medium.js +1 -1
  341. package/src/social-link/icons/reddit.js +1 -1
  342. package/src/social-link/index.php +22 -9
  343. package/src/social-link/socials-with-bg.scss +1 -1
  344. package/src/social-link/socials-without-bg.scss +1 -1
  345. package/src/social-links/editor.scss +1 -9
  346. package/src/table/block.json +1 -1
  347. package/src/table/deprecated.js +308 -175
  348. package/src/table/theme.scss +4 -2
  349. package/src/tag-cloud/index.php +4 -0
  350. package/src/template-part/edit/index.js +87 -79
  351. package/src/template-part/edit/inner-blocks.js +126 -13
  352. package/src/template-part/edit/selection-modal.js +1 -22
  353. package/src/template-part/editor.scss +11 -3
  354. package/src/template-part/index.php +12 -0
  355. package/src/template-part/theme.scss +1 -1
  356. package/src/term-description/index.php +4 -0
  357. package/src/utils/caption.js +19 -16
  358. package/src/utils/hooks.js +1 -0
  359. package/src/video/edit.native.js +2 -0
  360. package/src/video/editor.scss +2 -2
  361. package/src/video/theme.scss +1 -1
  362. package/tsconfig.json +1 -0
@@ -25,11 +25,14 @@ function useNavigationMenu(ref) {
25
25
  return selectExistingMenu(select, ref);
26
26
  }, [ref]);
27
27
  const {
28
- canCreate,
29
- canUpdate,
30
- canDelete,
31
- isResolving,
32
- hasResolved
28
+ // Can the user create navigation menus?
29
+ canCreate: canCreateNavigationMenus,
30
+ // Can the user update the specific navigation menu with the given post ID?
31
+ canUpdate: canUpdateNavigationMenu,
32
+ // Can the user delete the specific navigation menu with the given post ID?
33
+ canDelete: canDeleteNavigationMenu,
34
+ isResolving: isResolvingPermissions,
35
+ hasResolved: hasResolvedPermissions
33
36
  } = permissions;
34
37
  const {
35
38
  records: navigationMenus,
@@ -45,13 +48,13 @@ function useNavigationMenu(ref) {
45
48
  isResolvingNavigationMenus,
46
49
  hasResolvedNavigationMenus,
47
50
  canSwitchNavigationMenu,
48
- canUserCreateNavigationMenu: canCreate,
49
- isResolvingCanUserCreateNavigationMenu: isResolving,
50
- hasResolvedCanUserCreateNavigationMenu: hasResolved,
51
- canUserUpdateNavigationMenu: canUpdate,
52
- hasResolvedCanUserUpdateNavigationMenu: ref ? hasResolved : undefined,
53
- canUserDeleteNavigationMenu: canDelete,
54
- hasResolvedCanUserDeleteNavigationMenu: ref ? hasResolved : undefined
51
+ canUserCreateNavigationMenus: canCreateNavigationMenus,
52
+ isResolvingCanUserCreateNavigationMenus: isResolvingPermissions,
53
+ hasResolvedCanUserCreateNavigationMenus: hasResolvedPermissions,
54
+ canUserUpdateNavigationMenu: canUpdateNavigationMenu,
55
+ hasResolvedCanUserUpdateNavigationMenu: ref ? hasResolvedPermissions : undefined,
56
+ canUserDeleteNavigationMenu: canDeleteNavigationMenu,
57
+ hasResolvedCanUserDeleteNavigationMenu: ref ? hasResolvedPermissions : undefined
55
58
  };
56
59
  }
57
60
  function selectExistingMenu(select, ref) {
@@ -1 +1 @@
1
- {"version":3,"names":["_coreData","require","_data","_constants","useNavigationMenu","ref","permissions","useResourcePermissions","navigationMenu","isNavigationMenuResolved","isNavigationMenuMissing","useSelect","select","selectExistingMenu","canCreate","canUpdate","canDelete","isResolving","hasResolved","records","navigationMenus","isResolvingNavigationMenus","hasResolvedNavigationMenus","useEntityRecords","PRELOADED_NAVIGATION_MENUS_QUERY","canSwitchNavigationMenu","length","canUserCreateNavigationMenu","isResolvingCanUserCreateNavigationMenu","hasResolvedCanUserCreateNavigationMenu","canUserUpdateNavigationMenu","hasResolvedCanUserUpdateNavigationMenu","undefined","canUserDeleteNavigationMenu","hasResolvedCanUserDeleteNavigationMenu","getEntityRecord","getEditedEntityRecord","hasFinishedResolution","coreStore","args","editedNavigationMenu","hasResolvedNavigationMenu","isNavigationMenuPublishedOrDraft","status"],"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"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"],"mappings":";;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,UAAA,GAAAF,OAAA;AAbA;AACA;AACA;;AAQA;AACA;AACA;;AAGe,SAASG,iBAAiBA,CAAEC,GAAG,EAAG;EAChD,MAAMC,WAAW,GAAG,IAAAC,gCAAsB,EAAE,YAAY,EAAEF,GAAI,CAAC;EAE/D,MAAM;IACLG,cAAc;IACdC,wBAAwB;IACxBC;EACD,CAAC,GAAG,IAAAC,eAAS,EACVC,MAAM,IAAM;IACb,OAAOC,kBAAkB,CAAED,MAAM,EAAEP,GAAI,CAAC;EACzC,CAAC,EACD,CAAEA,GAAG,CACN,CAAC;EAED,MAAM;IAAES,SAAS;IAAEC,SAAS;IAAEC,SAAS;IAAEC,WAAW;IAAEC;EAAY,CAAC,GAClEZ,WAAW;EAEZ,MAAM;IACLa,OAAO,EAAEC,eAAe;IACxBH,WAAW,EAAEI,0BAA0B;IACvCH,WAAW,EAAEI;EACd,CAAC,GAAG,IAAAC,0BAAgB,EACnB,UAAU,EACT,eAAc,EACfC,2CACD,CAAC;EAED,MAAMC,uBAAuB,GAAGpB,GAAG,GAChCe,eAAe,EAAEM,MAAM,GAAG,CAAC,GAC3BN,eAAe,EAAEM,MAAM,GAAG,CAAC;EAE9B,OAAO;IACNlB,cAAc;IACdC,wBAAwB;IACxBC,uBAAuB;IACvBU,eAAe;IACfC,0BAA0B;IAC1BC,0BAA0B;IAC1BG,uBAAuB;IACvBE,2BAA2B,EAAEb,SAAS;IACtCc,sCAAsC,EAAEX,WAAW;IACnDY,sCAAsC,EAAEX,WAAW;IACnDY,2BAA2B,EAAEf,SAAS;IACtCgB,sCAAsC,EAAE1B,GAAG,GAAGa,WAAW,GAAGc,SAAS;IACrEC,2BAA2B,EAAEjB,SAAS;IACtCkB,sCAAsC,EAAE7B,GAAG,GAAGa,WAAW,GAAGc;EAC7D,CAAC;AACF;AAEA,SAASnB,kBAAkBA,CAAED,MAAM,EAAEP,GAAG,EAAG;EAC1C,IAAK,CAAEA,GAAG,EAAG;IACZ,OAAO;MACNI,wBAAwB,EAAE,KAAK;MAC/BC,uBAAuB,EAAE;IAC1B,CAAC;EACF;EAEA,MAAM;IAAEyB,eAAe;IAAEC,qBAAqB;IAAEC;EAAsB,CAAC,GACtEzB,MAAM,CAAE0B,eAAU,CAAC;EAEpB,MAAMC,IAAI,GAAG,CAAE,UAAU,EAAE,eAAe,EAAElC,GAAG,CAAE;EACjD,MAAMG,cAAc,GAAG2B,eAAe,CAAE,GAAGI,IAAK,CAAC;EACjD,MAAMC,oBAAoB,GAAGJ,qBAAqB,CAAE,GAAGG,IAAK,CAAC;EAC7D,MAAME,yBAAyB,GAAGJ,qBAAqB,CACtD,uBAAuB,EACvBE,IACD,CAAC;;EAED;EACA;EACA;EACA;EACA,MAAMG,gCAAgC,GACrCF,oBAAoB,CAACG,MAAM,KAAK,SAAS,IACzCH,oBAAoB,CAACG,MAAM,KAAK,OAAO;EAExC,OAAO;IACNlC,wBAAwB,EAAEgC,yBAAyB;IACnD/B,uBAAuB,EACtB+B,yBAAyB,KACvB,CAAEjC,cAAc,IAAI,CAAEkC,gCAAgC,CAAE;IAE3D;IACA;IACAlC,cAAc,EAAEkC,gCAAgC,GAC7CF,oBAAoB,GACpB;EACJ,CAAC;AACF"}
1
+ {"version":3,"names":["_coreData","require","_data","_constants","useNavigationMenu","ref","permissions","useResourcePermissions","navigationMenu","isNavigationMenuResolved","isNavigationMenuMissing","useSelect","select","selectExistingMenu","canCreate","canCreateNavigationMenus","canUpdate","canUpdateNavigationMenu","canDelete","canDeleteNavigationMenu","isResolving","isResolvingPermissions","hasResolved","hasResolvedPermissions","records","navigationMenus","isResolvingNavigationMenus","hasResolvedNavigationMenus","useEntityRecords","PRELOADED_NAVIGATION_MENUS_QUERY","canSwitchNavigationMenu","length","canUserCreateNavigationMenus","isResolvingCanUserCreateNavigationMenus","hasResolvedCanUserCreateNavigationMenus","canUserUpdateNavigationMenu","hasResolvedCanUserUpdateNavigationMenu","undefined","canUserDeleteNavigationMenu","hasResolvedCanUserDeleteNavigationMenu","getEntityRecord","getEditedEntityRecord","hasFinishedResolution","coreStore","args","editedNavigationMenu","hasResolvedNavigationMenu","isNavigationMenuPublishedOrDraft","status"],"sources":["@wordpress/block-library/src/navigation/use-navigation-menu.js"],"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 {\n\t\t// Can the user create navigation menus?\n\t\tcanCreate: canCreateNavigationMenus,\n\n\t\t// Can the user update the specific navigation menu with the given post ID?\n\t\tcanUpdate: canUpdateNavigationMenu,\n\n\t\t// Can the user delete the specific navigation menu with the given post ID?\n\t\tcanDelete: canDeleteNavigationMenu,\n\t\tisResolving: isResolvingPermissions,\n\t\thasResolved: hasResolvedPermissions,\n\t} = permissions;\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\tcanUserCreateNavigationMenus: canCreateNavigationMenus,\n\t\tisResolvingCanUserCreateNavigationMenus: isResolvingPermissions,\n\t\thasResolvedCanUserCreateNavigationMenus: hasResolvedPermissions,\n\t\tcanUserUpdateNavigationMenu: canUpdateNavigationMenu,\n\t\thasResolvedCanUserUpdateNavigationMenu: ref\n\t\t\t? hasResolvedPermissions\n\t\t\t: undefined,\n\t\tcanUserDeleteNavigationMenu: canDeleteNavigationMenu,\n\t\thasResolvedCanUserDeleteNavigationMenu: ref\n\t\t\t? hasResolvedPermissions\n\t\t\t: 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"],"mappings":";;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,UAAA,GAAAF,OAAA;AAbA;AACA;AACA;;AAQA;AACA;AACA;;AAGe,SAASG,iBAAiBA,CAAEC,GAAG,EAAG;EAChD,MAAMC,WAAW,GAAG,IAAAC,gCAAsB,EAAE,YAAY,EAAEF,GAAI,CAAC;EAE/D,MAAM;IACLG,cAAc;IACdC,wBAAwB;IACxBC;EACD,CAAC,GAAG,IAAAC,eAAS,EACVC,MAAM,IAAM;IACb,OAAOC,kBAAkB,CAAED,MAAM,EAAEP,GAAI,CAAC;EACzC,CAAC,EACD,CAAEA,GAAG,CACN,CAAC;EAED,MAAM;IACL;IACAS,SAAS,EAAEC,wBAAwB;IAEnC;IACAC,SAAS,EAAEC,uBAAuB;IAElC;IACAC,SAAS,EAAEC,uBAAuB;IAClCC,WAAW,EAAEC,sBAAsB;IACnCC,WAAW,EAAEC;EACd,CAAC,GAAGjB,WAAW;EAEf,MAAM;IACLkB,OAAO,EAAEC,eAAe;IACxBL,WAAW,EAAEM,0BAA0B;IACvCJ,WAAW,EAAEK;EACd,CAAC,GAAG,IAAAC,0BAAgB,EACnB,UAAU,EACT,eAAc,EACfC,2CACD,CAAC;EAED,MAAMC,uBAAuB,GAAGzB,GAAG,GAChCoB,eAAe,EAAEM,MAAM,GAAG,CAAC,GAC3BN,eAAe,EAAEM,MAAM,GAAG,CAAC;EAE9B,OAAO;IACNvB,cAAc;IACdC,wBAAwB;IACxBC,uBAAuB;IACvBe,eAAe;IACfC,0BAA0B;IAC1BC,0BAA0B;IAC1BG,uBAAuB;IACvBE,4BAA4B,EAAEjB,wBAAwB;IACtDkB,uCAAuC,EAAEZ,sBAAsB;IAC/Da,uCAAuC,EAAEX,sBAAsB;IAC/DY,2BAA2B,EAAElB,uBAAuB;IACpDmB,sCAAsC,EAAE/B,GAAG,GACxCkB,sBAAsB,GACtBc,SAAS;IACZC,2BAA2B,EAAEnB,uBAAuB;IACpDoB,sCAAsC,EAAElC,GAAG,GACxCkB,sBAAsB,GACtBc;EACJ,CAAC;AACF;AAEA,SAASxB,kBAAkBA,CAAED,MAAM,EAAEP,GAAG,EAAG;EAC1C,IAAK,CAAEA,GAAG,EAAG;IACZ,OAAO;MACNI,wBAAwB,EAAE,KAAK;MAC/BC,uBAAuB,EAAE;IAC1B,CAAC;EACF;EAEA,MAAM;IAAE8B,eAAe;IAAEC,qBAAqB;IAAEC;EAAsB,CAAC,GACtE9B,MAAM,CAAE+B,eAAU,CAAC;EAEpB,MAAMC,IAAI,GAAG,CAAE,UAAU,EAAE,eAAe,EAAEvC,GAAG,CAAE;EACjD,MAAMG,cAAc,GAAGgC,eAAe,CAAE,GAAGI,IAAK,CAAC;EACjD,MAAMC,oBAAoB,GAAGJ,qBAAqB,CAAE,GAAGG,IAAK,CAAC;EAC7D,MAAME,yBAAyB,GAAGJ,qBAAqB,CACtD,uBAAuB,EACvBE,IACD,CAAC;;EAED;EACA;EACA;EACA;EACA,MAAMG,gCAAgC,GACrCF,oBAAoB,CAACG,MAAM,KAAK,SAAS,IACzCH,oBAAoB,CAACG,MAAM,KAAK,OAAO;EAExC,OAAO;IACNvC,wBAAwB,EAAEqC,yBAAyB;IACnDpC,uBAAuB,EACtBoC,yBAAyB,KACvB,CAAEtC,cAAc,IAAI,CAAEuC,gCAAgC,CAAE;IAE3D;IACA;IACAvC,cAAc,EAAEuC,gCAAgC,GAC7CF,oBAAoB,GACpB;EACJ,CAAC;AACF"}
@@ -45,10 +45,20 @@ const {
45
45
  } = (0, _interactivity.getContext)();
46
46
  if (type === 'submenu' &&
47
47
  // Only open on hover if the overlay is closed.
48
- Object.values(overlayOpenedBy || {}).filter(Boolean).length === 0) actions.openMenu('hover');
48
+ Object.values(overlayOpenedBy || {}).filter(Boolean).length === 0) {
49
+ actions.openMenu('hover');
50
+ }
49
51
  },
50
52
  closeMenuOnHover() {
51
- actions.closeMenu('hover');
53
+ const {
54
+ type,
55
+ overlayOpenedBy
56
+ } = (0, _interactivity.getContext)();
57
+ if (type === 'submenu' &&
58
+ // Only close on hover if the overlay is closed.
59
+ Object.values(overlayOpenedBy || {}).filter(Boolean).length === 0) {
60
+ actions.closeMenu('hover');
61
+ }
52
62
  },
53
63
  openMenuOnClick() {
54
64
  const ctx = (0, _interactivity.getContext)();
@@ -1 +1 @@
1
- {"version":3,"names":["_interactivity","require","focusableSelectors","document","addEventListener","state","actions","store","roleAttribute","ctx","getContext","type","isMenuOpen","ariaModal","ariaLabel","Object","values","menuOpenedBy","filter","Boolean","length","overlayOpenedBy","submenuOpenedBy","openMenuOnHover","openMenu","closeMenuOnHover","closeMenu","openMenuOnClick","ref","getElement","previousFocus","closeMenuOnClick","openMenuOnFocus","toggleMenuOnClick","window","activeElement","focus","click","handleMenuKeydown","event","firstFocusableElement","lastFocusableElement","key","shiftKey","preventDefault","handleMenuFocusout","modal","relatedTarget","contains","target","menuOpenedOn","documentElement","classList","add","menuClosedOn","remove","callbacks","initMenu","focusableElements","querySelectorAll","focusFirstElement","lock"],"sources":["@wordpress/block-library/src/navigation/view.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store, getContext, getElement } 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\n// This is a fix for Safari in iOS/iPadOS. Without it, Safari doesn't focus out\n// when the user taps in the body. It can be removed once we add an overlay to\n// capture the clicks, instead of relying on the focusout event.\ndocument.addEventListener( 'click', () => {} );\n\nconst { state, actions } = store(\n\t'core/navigation',\n\t{\n\t\tstate: {\n\t\t\tget roleAttribute() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay' && state.isMenuOpen\n\t\t\t\t\t? 'dialog'\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\tget ariaModal() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay' && state.isMenuOpen\n\t\t\t\t\t? 'true'\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\tget ariaLabel() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay' && state.isMenuOpen\n\t\t\t\t\t? ctx.ariaLabel\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\tget isMenuOpen() {\n\t\t\t\t// The menu is opened if either `click`, `hover` or `focus` is true.\n\t\t\t\treturn (\n\t\t\t\t\tObject.values( state.menuOpenedBy ).filter( Boolean )\n\t\t\t\t\t\t.length > 0\n\t\t\t\t);\n\t\t\t},\n\t\t\tget menuOpenedBy() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay'\n\t\t\t\t\t? ctx.overlayOpenedBy\n\t\t\t\t\t: ctx.submenuOpenedBy;\n\t\t\t},\n\t\t},\n\t\tactions: {\n\t\t\topenMenuOnHover() {\n\t\t\t\tconst { type, overlayOpenedBy } = getContext();\n\t\t\t\tif (\n\t\t\t\t\ttype === 'submenu' &&\n\t\t\t\t\t// Only open on hover if the overlay is closed.\n\t\t\t\t\tObject.values( overlayOpenedBy || {} ).filter( Boolean )\n\t\t\t\t\t\t.length === 0\n\t\t\t\t)\n\t\t\t\t\tactions.openMenu( 'hover' );\n\t\t\t},\n\t\t\tcloseMenuOnHover() {\n\t\t\t\tactions.closeMenu( 'hover' );\n\t\t\t},\n\t\t\topenMenuOnClick() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\tctx.previousFocus = ref;\n\t\t\t\tactions.openMenu( 'click' );\n\t\t\t},\n\t\t\tcloseMenuOnClick() {\n\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t},\n\t\t\topenMenuOnFocus() {\n\t\t\t\tactions.openMenu( 'focus' );\n\t\t\t},\n\t\t\ttoggleMenuOnClick() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\t// Safari won't send focus to the clicked element, so we need to manually place it: https://bugs.webkit.org/show_bug.cgi?id=22261\n\t\t\t\tif ( window.document.activeElement !== ref ) ref.focus();\n\t\t\t\tconst { menuOpenedBy } = state;\n\t\t\t\tif ( menuOpenedBy.click || menuOpenedBy.focus ) {\n\t\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t\t} else {\n\t\t\t\t\tctx.previousFocus = ref;\n\t\t\t\t\tactions.openMenu( 'click' );\n\t\t\t\t}\n\t\t\t},\n\t\t\thandleMenuKeydown( event ) {\n\t\t\t\tconst { type, firstFocusableElement, lastFocusableElement } =\n\t\t\t\t\tgetContext();\n\t\t\t\tif ( state.menuOpenedBy.click ) {\n\t\t\t\t\t// If Escape close the menu.\n\t\t\t\t\tif ( event?.key === 'Escape' ) {\n\t\t\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Trap focus if it is an overlay (main menu).\n\t\t\t\t\tif ( type === 'overlay' && event.key === 'Tab' ) {\n\t\t\t\t\t\t// If shift + tab it change the direction.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\tfirstFocusableElement\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tlastFocusableElement.focus();\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\tlastFocusableElement\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tfirstFocusableElement.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\thandleMenuFocusout( event ) {\n\t\t\t\tconst { modal } = getContext();\n\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t// event.target === The element losing focus\n\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t// When focusout is outsite the document,\n\t\t\t\t// `window.document.activeElement` doesn't change.\n\n\t\t\t\t// The event.relatedTarget is null when something outside the navigation menu is clicked. This is only necessary for Safari.\n\t\t\t\tif (\n\t\t\t\t\tevent.relatedTarget === null ||\n\t\t\t\t\t( ! modal?.contains( event.relatedTarget ) &&\n\t\t\t\t\t\tevent.target !== window.document.activeElement )\n\t\t\t\t) {\n\t\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\topenMenu( menuOpenedOn = 'click' ) {\n\t\t\t\tconst { type } = getContext();\n\t\t\t\tstate.menuOpenedBy[ menuOpenedOn ] = true;\n\t\t\t\tif ( type === 'overlay' ) {\n\t\t\t\t\t// Add a `has-modal-open` class to the <html> root.\n\t\t\t\t\tdocument.documentElement.classList.add( 'has-modal-open' );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tcloseMenu( menuClosedOn = 'click' ) {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tstate.menuOpenedBy[ menuClosedOn ] = false;\n\t\t\t\t// Check if the menu is still open or not.\n\t\t\t\tif ( ! state.isMenuOpen ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tctx.modal?.contains( window.document.activeElement )\n\t\t\t\t\t) {\n\t\t\t\t\t\tctx.previousFocus?.focus();\n\t\t\t\t\t}\n\t\t\t\t\tctx.modal = null;\n\t\t\t\t\tctx.previousFocus = null;\n\t\t\t\t\tif ( ctx.type === 'overlay' ) {\n\t\t\t\t\t\tdocument.documentElement.classList.remove(\n\t\t\t\t\t\t\t'has-modal-open'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcallbacks: {\n\t\t\tinitMenu() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\tif ( state.isMenuOpen ) {\n\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\tctx.modal = ref;\n\t\t\t\t\tctx.firstFocusableElement = focusableElements[ 0 ];\n\t\t\t\t\tctx.lastFocusableElement =\n\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t}\n\t\t\t},\n\t\t\tfocusFirstElement() {\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\tif ( state.isMenuOpen ) {\n\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\tfocusableElements?.[ 0 ]?.focus();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\t{ lock: true }\n);\n"],"mappings":";;AAGA,IAAAA,cAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA,MAAMC,kBAAkB,GAAG,CAC1B,SAAS,EACT,+DAA+D,EAC/D,2CAA2C,EAC3C,6CAA6C,EAC7C,2CAA2C,EAC3C,mBAAmB,EACnB,iCAAiC,CACjC;;AAED;AACA;AACA;AACAC,QAAQ,CAACC,gBAAgB,CAAE,OAAO,EAAE,MAAM,CAAC,CAAE,CAAC;AAE9C,MAAM;EAAEC,KAAK;EAAEC;AAAQ,CAAC,GAAG,IAAAC,oBAAK,EAC/B,iBAAiB,EACjB;EACCF,KAAK,EAAE;IACN,IAAIG,aAAaA,CAAA,EAAG;MACnB,MAAMC,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxB,OAAOD,GAAG,CAACE,IAAI,KAAK,SAAS,IAAIN,KAAK,CAACO,UAAU,GAC9C,QAAQ,GACR,IAAI;IACR,CAAC;IACD,IAAIC,SAASA,CAAA,EAAG;MACf,MAAMJ,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxB,OAAOD,GAAG,CAACE,IAAI,KAAK,SAAS,IAAIN,KAAK,CAACO,UAAU,GAC9C,MAAM,GACN,IAAI;IACR,CAAC;IACD,IAAIE,SAASA,CAAA,EAAG;MACf,MAAML,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxB,OAAOD,GAAG,CAACE,IAAI,KAAK,SAAS,IAAIN,KAAK,CAACO,UAAU,GAC9CH,GAAG,CAACK,SAAS,GACb,IAAI;IACR,CAAC;IACD,IAAIF,UAAUA,CAAA,EAAG;MAChB;MACA,OACCG,MAAM,CAACC,MAAM,CAAEX,KAAK,CAACY,YAAa,CAAC,CAACC,MAAM,CAAEC,OAAQ,CAAC,CACnDC,MAAM,GAAG,CAAC;IAEd,CAAC;IACD,IAAIH,YAAYA,CAAA,EAAG;MAClB,MAAMR,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxB,OAAOD,GAAG,CAACE,IAAI,KAAK,SAAS,GAC1BF,GAAG,CAACY,eAAe,GACnBZ,GAAG,CAACa,eAAe;IACvB;EACD,CAAC;EACDhB,OAAO,EAAE;IACRiB,eAAeA,CAAA,EAAG;MACjB,MAAM;QAAEZ,IAAI;QAAEU;MAAgB,CAAC,GAAG,IAAAX,yBAAU,EAAC,CAAC;MAC9C,IACCC,IAAI,KAAK,SAAS;MAClB;MACAI,MAAM,CAACC,MAAM,CAAEK,eAAe,IAAI,CAAC,CAAE,CAAC,CAACH,MAAM,CAAEC,OAAQ,CAAC,CACtDC,MAAM,KAAK,CAAC,EAEdd,OAAO,CAACkB,QAAQ,CAAE,OAAQ,CAAC;IAC7B,CAAC;IACDC,gBAAgBA,CAAA,EAAG;MAClBnB,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;IAC7B,CAAC;IACDC,eAAeA,CAAA,EAAG;MACjB,MAAMlB,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxB,MAAM;QAAEkB;MAAI,CAAC,GAAG,IAAAC,yBAAU,EAAC,CAAC;MAC5BpB,GAAG,CAACqB,aAAa,GAAGF,GAAG;MACvBtB,OAAO,CAACkB,QAAQ,CAAE,OAAQ,CAAC;IAC5B,CAAC;IACDO,gBAAgBA,CAAA,EAAG;MAClBzB,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;MAC5BpB,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;IAC7B,CAAC;IACDM,eAAeA,CAAA,EAAG;MACjB1B,OAAO,CAACkB,QAAQ,CAAE,OAAQ,CAAC;IAC5B,CAAC;IACDS,iBAAiBA,CAAA,EAAG;MACnB,MAAMxB,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxB,MAAM;QAAEkB;MAAI,CAAC,GAAG,IAAAC,yBAAU,EAAC,CAAC;MAC5B;MACA,IAAKK,MAAM,CAAC/B,QAAQ,CAACgC,aAAa,KAAKP,GAAG,EAAGA,GAAG,CAACQ,KAAK,CAAC,CAAC;MACxD,MAAM;QAAEnB;MAAa,CAAC,GAAGZ,KAAK;MAC9B,IAAKY,YAAY,CAACoB,KAAK,IAAIpB,YAAY,CAACmB,KAAK,EAAG;QAC/C9B,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;QAC5BpB,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;MAC7B,CAAC,MAAM;QACNjB,GAAG,CAACqB,aAAa,GAAGF,GAAG;QACvBtB,OAAO,CAACkB,QAAQ,CAAE,OAAQ,CAAC;MAC5B;IACD,CAAC;IACDc,iBAAiBA,CAAEC,KAAK,EAAG;MAC1B,MAAM;QAAE5B,IAAI;QAAE6B,qBAAqB;QAAEC;MAAqB,CAAC,GAC1D,IAAA/B,yBAAU,EAAC,CAAC;MACb,IAAKL,KAAK,CAACY,YAAY,CAACoB,KAAK,EAAG;QAC/B;QACA,IAAKE,KAAK,EAAEG,GAAG,KAAK,QAAQ,EAAG;UAC9BpC,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;UAC5BpB,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;UAC5B;QACD;;QAEA;QACA,IAAKf,IAAI,KAAK,SAAS,IAAI4B,KAAK,CAACG,GAAG,KAAK,KAAK,EAAG;UAChD;UACA,IACCH,KAAK,CAACI,QAAQ,IACdT,MAAM,CAAC/B,QAAQ,CAACgC,aAAa,KAC5BK,qBAAqB,EACrB;YACDD,KAAK,CAACK,cAAc,CAAC,CAAC;YACtBH,oBAAoB,CAACL,KAAK,CAAC,CAAC;UAC7B,CAAC,MAAM,IACN,CAAEG,KAAK,CAACI,QAAQ,IAChBT,MAAM,CAAC/B,QAAQ,CAACgC,aAAa,KAC5BM,oBAAoB,EACpB;YACDF,KAAK,CAACK,cAAc,CAAC,CAAC;YACtBJ,qBAAqB,CAACJ,KAAK,CAAC,CAAC;UAC9B;QACD;MACD;IACD,CAAC;IACDS,kBAAkBA,CAAEN,KAAK,EAAG;MAC3B,MAAM;QAAEO;MAAM,CAAC,GAAG,IAAApC,yBAAU,EAAC,CAAC;MAC9B;MACA;MACA;MACA;MACA;;MAEA;MACA,IACC6B,KAAK,CAACQ,aAAa,KAAK,IAAI,IAC1B,CAAED,KAAK,EAAEE,QAAQ,CAAET,KAAK,CAACQ,aAAc,CAAC,IACzCR,KAAK,CAACU,MAAM,KAAKf,MAAM,CAAC/B,QAAQ,CAACgC,aAAe,EAChD;QACD7B,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;QAC5BpB,OAAO,CAACoB,SAAS,CAAE,OAAQ,CAAC;MAC7B;IACD,CAAC;IAEDF,QAAQA,CAAE0B,YAAY,GAAG,OAAO,EAAG;MAClC,MAAM;QAAEvC;MAAK,CAAC,GAAG,IAAAD,yBAAU,EAAC,CAAC;MAC7BL,KAAK,CAACY,YAAY,CAAEiC,YAAY,CAAE,GAAG,IAAI;MACzC,IAAKvC,IAAI,KAAK,SAAS,EAAG;QACzB;QACAR,QAAQ,CAACgD,eAAe,CAACC,SAAS,CAACC,GAAG,CAAE,gBAAiB,CAAC;MAC3D;IACD,CAAC;IAED3B,SAASA,CAAE4B,YAAY,GAAG,OAAO,EAAG;MACnC,MAAM7C,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxBL,KAAK,CAACY,YAAY,CAAEqC,YAAY,CAAE,GAAG,KAAK;MAC1C;MACA,IAAK,CAAEjD,KAAK,CAACO,UAAU,EAAG;QACzB,IACCH,GAAG,CAACqC,KAAK,EAAEE,QAAQ,CAAEd,MAAM,CAAC/B,QAAQ,CAACgC,aAAc,CAAC,EACnD;UACD1B,GAAG,CAACqB,aAAa,EAAEM,KAAK,CAAC,CAAC;QAC3B;QACA3B,GAAG,CAACqC,KAAK,GAAG,IAAI;QAChBrC,GAAG,CAACqB,aAAa,GAAG,IAAI;QACxB,IAAKrB,GAAG,CAACE,IAAI,KAAK,SAAS,EAAG;UAC7BR,QAAQ,CAACgD,eAAe,CAACC,SAAS,CAACG,MAAM,CACxC,gBACD,CAAC;QACF;MACD;IACD;EACD,CAAC;EACDC,SAAS,EAAE;IACVC,QAAQA,CAAA,EAAG;MACV,MAAMhD,GAAG,GAAG,IAAAC,yBAAU,EAAC,CAAC;MACxB,MAAM;QAAEkB;MAAI,CAAC,GAAG,IAAAC,yBAAU,EAAC,CAAC;MAC5B,IAAKxB,KAAK,CAACO,UAAU,EAAG;QACvB,MAAM8C,iBAAiB,GACtB9B,GAAG,CAAC+B,gBAAgB,CAAEzD,kBAAmB,CAAC;QAC3CO,GAAG,CAACqC,KAAK,GAAGlB,GAAG;QACfnB,GAAG,CAAC+B,qBAAqB,GAAGkB,iBAAiB,CAAE,CAAC,CAAE;QAClDjD,GAAG,CAACgC,oBAAoB,GACvBiB,iBAAiB,CAAEA,iBAAiB,CAACtC,MAAM,GAAG,CAAC,CAAE;MACnD;IACD,CAAC;IACDwC,iBAAiBA,CAAA,EAAG;MACnB,MAAM;QAAEhC;MAAI,CAAC,GAAG,IAAAC,yBAAU,EAAC,CAAC;MAC5B,IAAKxB,KAAK,CAACO,UAAU,EAAG;QACvB,MAAM8C,iBAAiB,GACtB9B,GAAG,CAAC+B,gBAAgB,CAAEzD,kBAAmB,CAAC;QAC3CwD,iBAAiB,GAAI,CAAC,CAAE,EAAEtB,KAAK,CAAC,CAAC;MAClC;IACD;EACD;AACD,CAAC,EACD;EAAEyB,IAAI,EAAE;AAAK,CACd,CAAC"}
1
+ {"version":3,"names":["_interactivity","require","focusableSelectors","document","addEventListener","state","actions","store","roleAttribute","ctx","getContext","type","isMenuOpen","ariaModal","ariaLabel","Object","values","menuOpenedBy","filter","Boolean","length","overlayOpenedBy","submenuOpenedBy","openMenuOnHover","openMenu","closeMenuOnHover","closeMenu","openMenuOnClick","ref","getElement","previousFocus","closeMenuOnClick","openMenuOnFocus","toggleMenuOnClick","window","activeElement","focus","click","handleMenuKeydown","event","firstFocusableElement","lastFocusableElement","key","shiftKey","preventDefault","handleMenuFocusout","modal","relatedTarget","contains","target","menuOpenedOn","documentElement","classList","add","menuClosedOn","remove","callbacks","initMenu","focusableElements","querySelectorAll","focusFirstElement","lock"],"sources":["@wordpress/block-library/src/navigation/view.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store, getContext, getElement } 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\n// This is a fix for Safari in iOS/iPadOS. Without it, Safari doesn't focus out\n// when the user taps in the body. It can be removed once we add an overlay to\n// capture the clicks, instead of relying on the focusout event.\ndocument.addEventListener( 'click', () => {} );\n\nconst { state, actions } = store(\n\t'core/navigation',\n\t{\n\t\tstate: {\n\t\t\tget roleAttribute() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay' && state.isMenuOpen\n\t\t\t\t\t? 'dialog'\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\tget ariaModal() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay' && state.isMenuOpen\n\t\t\t\t\t? 'true'\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\tget ariaLabel() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay' && state.isMenuOpen\n\t\t\t\t\t? ctx.ariaLabel\n\t\t\t\t\t: null;\n\t\t\t},\n\t\t\tget isMenuOpen() {\n\t\t\t\t// The menu is opened if either `click`, `hover` or `focus` is true.\n\t\t\t\treturn (\n\t\t\t\t\tObject.values( state.menuOpenedBy ).filter( Boolean )\n\t\t\t\t\t\t.length > 0\n\t\t\t\t);\n\t\t\t},\n\t\t\tget menuOpenedBy() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\treturn ctx.type === 'overlay'\n\t\t\t\t\t? ctx.overlayOpenedBy\n\t\t\t\t\t: ctx.submenuOpenedBy;\n\t\t\t},\n\t\t},\n\t\tactions: {\n\t\t\topenMenuOnHover() {\n\t\t\t\tconst { type, overlayOpenedBy } = getContext();\n\t\t\t\tif (\n\t\t\t\t\ttype === 'submenu' &&\n\t\t\t\t\t// Only open on hover if the overlay is closed.\n\t\t\t\t\tObject.values( overlayOpenedBy || {} ).filter( Boolean )\n\t\t\t\t\t\t.length === 0\n\t\t\t\t) {\n\t\t\t\t\tactions.openMenu( 'hover' );\n\t\t\t\t}\n\t\t\t},\n\t\t\tcloseMenuOnHover() {\n\t\t\t\tconst { type, overlayOpenedBy } = getContext();\n\t\t\t\tif (\n\t\t\t\t\ttype === 'submenu' &&\n\t\t\t\t\t// Only close on hover if the overlay is closed.\n\t\t\t\t\tObject.values( overlayOpenedBy || {} ).filter( Boolean )\n\t\t\t\t\t\t.length === 0\n\t\t\t\t) {\n\t\t\t\t\tactions.closeMenu( 'hover' );\n\t\t\t\t}\n\t\t\t},\n\t\t\topenMenuOnClick() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\tctx.previousFocus = ref;\n\t\t\t\tactions.openMenu( 'click' );\n\t\t\t},\n\t\t\tcloseMenuOnClick() {\n\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t},\n\t\t\topenMenuOnFocus() {\n\t\t\t\tactions.openMenu( 'focus' );\n\t\t\t},\n\t\t\ttoggleMenuOnClick() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\t// Safari won't send focus to the clicked element, so we need to manually place it: https://bugs.webkit.org/show_bug.cgi?id=22261\n\t\t\t\tif ( window.document.activeElement !== ref ) ref.focus();\n\t\t\t\tconst { menuOpenedBy } = state;\n\t\t\t\tif ( menuOpenedBy.click || menuOpenedBy.focus ) {\n\t\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t\t} else {\n\t\t\t\t\tctx.previousFocus = ref;\n\t\t\t\t\tactions.openMenu( 'click' );\n\t\t\t\t}\n\t\t\t},\n\t\t\thandleMenuKeydown( event ) {\n\t\t\t\tconst { type, firstFocusableElement, lastFocusableElement } =\n\t\t\t\t\tgetContext();\n\t\t\t\tif ( state.menuOpenedBy.click ) {\n\t\t\t\t\t// If Escape close the menu.\n\t\t\t\t\tif ( event?.key === 'Escape' ) {\n\t\t\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Trap focus if it is an overlay (main menu).\n\t\t\t\t\tif ( type === 'overlay' && event.key === 'Tab' ) {\n\t\t\t\t\t\t// If shift + tab it change the direction.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.shiftKey &&\n\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\tfirstFocusableElement\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tlastFocusableElement.focus();\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t! event.shiftKey &&\n\t\t\t\t\t\t\twindow.document.activeElement ===\n\t\t\t\t\t\t\t\tlastFocusableElement\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tfirstFocusableElement.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\thandleMenuFocusout( event ) {\n\t\t\t\tconst { modal } = getContext();\n\t\t\t\t// If focus is outside modal, and in the document, close menu\n\t\t\t\t// event.target === The element losing focus\n\t\t\t\t// event.relatedTarget === The element receiving focus (if any)\n\t\t\t\t// When focusout is outsite the document,\n\t\t\t\t// `window.document.activeElement` doesn't change.\n\n\t\t\t\t// The event.relatedTarget is null when something outside the navigation menu is clicked. This is only necessary for Safari.\n\t\t\t\tif (\n\t\t\t\t\tevent.relatedTarget === null ||\n\t\t\t\t\t( ! modal?.contains( event.relatedTarget ) &&\n\t\t\t\t\t\tevent.target !== window.document.activeElement )\n\t\t\t\t) {\n\t\t\t\t\tactions.closeMenu( 'click' );\n\t\t\t\t\tactions.closeMenu( 'focus' );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\topenMenu( menuOpenedOn = 'click' ) {\n\t\t\t\tconst { type } = getContext();\n\t\t\t\tstate.menuOpenedBy[ menuOpenedOn ] = true;\n\t\t\t\tif ( type === 'overlay' ) {\n\t\t\t\t\t// Add a `has-modal-open` class to the <html> root.\n\t\t\t\t\tdocument.documentElement.classList.add( 'has-modal-open' );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tcloseMenu( menuClosedOn = 'click' ) {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tstate.menuOpenedBy[ menuClosedOn ] = false;\n\t\t\t\t// Check if the menu is still open or not.\n\t\t\t\tif ( ! state.isMenuOpen ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tctx.modal?.contains( window.document.activeElement )\n\t\t\t\t\t) {\n\t\t\t\t\t\tctx.previousFocus?.focus();\n\t\t\t\t\t}\n\t\t\t\t\tctx.modal = null;\n\t\t\t\t\tctx.previousFocus = null;\n\t\t\t\t\tif ( ctx.type === 'overlay' ) {\n\t\t\t\t\t\tdocument.documentElement.classList.remove(\n\t\t\t\t\t\t\t'has-modal-open'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcallbacks: {\n\t\t\tinitMenu() {\n\t\t\t\tconst ctx = getContext();\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\tif ( state.isMenuOpen ) {\n\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\tctx.modal = ref;\n\t\t\t\t\tctx.firstFocusableElement = focusableElements[ 0 ];\n\t\t\t\t\tctx.lastFocusableElement =\n\t\t\t\t\t\tfocusableElements[ focusableElements.length - 1 ];\n\t\t\t\t}\n\t\t\t},\n\t\t\tfocusFirstElement() {\n\t\t\t\tconst { ref } = getElement();\n\t\t\t\tif ( state.isMenuOpen ) {\n\t\t\t\t\tconst focusableElements =\n\t\t\t\t\t\tref.querySelectorAll( focusableSelectors );\n\t\t\t\t\tfocusableElements?.[ 0 ]?.focus();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\t{ lock: true }\n);\n"],"mappings":"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"}
@@ -83,7 +83,7 @@ const useIsDraggingWithin = elementRef => {
83
83
  ownerDocument.removeEventListener('dragend', handleDragEnd);
84
84
  ownerDocument.removeEventListener('dragenter', handleDragEnter);
85
85
  };
86
- }, []);
86
+ }, [elementRef]);
87
87
  return isDraggingWithin;
88
88
  };
89
89
  const useIsInvalidLink = (kind, type, id) => {
@@ -162,9 +162,12 @@ function NavigationLinkEdit({
162
162
  } = context;
163
163
  const {
164
164
  replaceBlock,
165
- __unstableMarkNextChangeAsNotPersistent
165
+ __unstableMarkNextChangeAsNotPersistent,
166
+ selectPreviousBlock
166
167
  } = (0, _data.useDispatch)(_blockEditor.store);
167
168
  const [isLinkOpen, setIsLinkOpen] = (0, _element.useState)(false);
169
+ // Store what element opened the popover, so we know where to return focus to (toolbar button vs navigation link text)
170
+ const [openedBy, setOpenedBy] = (0, _element.useState)(null);
168
171
  // Use internal state instead of a ref to make sure that the component
169
172
  // re-renders when the popover's anchor updates.
170
173
  const [popoverAnchor, setPopoverAnchor] = (0, _element.useState)(null);
@@ -172,6 +175,7 @@ function NavigationLinkEdit({
172
175
  const isDraggingWithin = useIsDraggingWithin(listItemRef);
173
176
  const itemLabelPlaceholder = (0, _i18n.__)('Add label…');
174
177
  const ref = (0, _element.useRef)();
178
+ const prevUrl = (0, _compose.usePrevious)(url);
175
179
 
176
180
  // Change the label using inspector causes rich text to change focus on firefox.
177
181
  // This is a workaround to keep the focus on the label field when label filed is focused we don't render the rich text.
@@ -198,15 +202,15 @@ function NavigationLinkEdit({
198
202
  isParentOfSelectedBlock: hasSelectedInnerBlock(clientId, true),
199
203
  hasChildren: !!getBlockCount(clientId)
200
204
  };
201
- }, [clientId]);
205
+ }, [clientId, maxNestingLevel]);
202
206
 
203
207
  /**
204
208
  * Transform to submenu block.
205
209
  */
206
- function transformToSubmenu() {
210
+ const transformToSubmenu = () => {
207
211
  const newSubmenu = (0, _blocks.createBlock)('core/navigation-submenu', attributes, innerBlocks.length > 0 ? innerBlocks : [(0, _blocks.createBlock)('core/navigation-link')]);
208
212
  replaceBlock(clientId, newSubmenu);
209
- }
213
+ };
210
214
  (0, _element.useEffect)(() => {
211
215
  // Show the LinkControl on mount if the URL is empty
212
216
  // ( When adding a new menu item)
@@ -238,17 +242,12 @@ function NavigationLinkEdit({
238
242
 
239
243
  // If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.
240
244
  (0, _element.useEffect)(() => {
241
- if (isLinkOpen && url) {
242
- // Does this look like a URL and have something TLD-ish?
243
- if ((0, _url.isURL)((0, _url.prependHTTP)(label)) && /^.+\.[a-z]+/.test(label)) {
244
- // Focus and select the label text.
245
- selectLabelText();
246
- } else {
247
- // Focus it (but do not select).
248
- (0, _dom.placeCaretAtHorizontalEdge)(ref.current, true);
249
- }
245
+ // We only want to do this when the URL has gone from nothing to a new URL AND the label looks like a URL
246
+ if (!prevUrl && url && isLinkOpen && (0, _url.isURL)((0, _url.prependHTTP)(label)) && /^.+\.[a-z]+/.test(label)) {
247
+ // Focus and select the label text.
248
+ selectLabelText();
250
249
  }
251
- }, [url]);
250
+ }, [prevUrl, url, isLinkOpen, label]);
252
251
 
253
252
  /**
254
253
  * Focus the Link label text and select it.
@@ -297,8 +296,15 @@ function NavigationLinkEdit({
297
296
  customBackgroundColor
298
297
  } = (0, _utils.getColors)(context, !isTopLevelLink);
299
298
  function onKeyDown(event) {
300
- if (_keycodes.isKeyboardEvent.primary(event, 'k') || (!url || isDraft || isInvalid) && event.keyCode === _keycodes.ENTER) {
299
+ if (_keycodes.isKeyboardEvent.primary(event, 'k')) {
300
+ // Required to prevent the command center from opening,
301
+ // as it shares the CMD+K shortcut.
302
+ // See https://github.com/WordPress/gutenberg/pull/59845.
303
+ event.preventDefault();
304
+ // If this link is a child of a parent submenu item, the parent submenu item event will also open, closing this popover
305
+ event.stopPropagation();
301
306
  setIsLinkOpen(true);
307
+ setOpenedBy(ref.current);
302
308
  }
303
309
  }
304
310
  const blockProps = (0, _blockEditor.useBlockProps)({
@@ -328,7 +334,10 @@ function NavigationLinkEdit({
328
334
  renderAppender: false
329
335
  });
330
336
  if (!url || isInvalid || isDraft) {
331
- blockProps.onClick = () => setIsLinkOpen(true);
337
+ blockProps.onClick = () => {
338
+ setIsLinkOpen(true);
339
+ setOpenedBy(ref.current);
340
+ };
332
341
  }
333
342
  const classes = (0, _classnames.default)('wp-block-navigation-item__content', {
334
343
  'wp-block-navigation-link__placeholder': !url || isInvalid || isDraft
@@ -342,7 +351,10 @@ function NavigationLinkEdit({
342
351
  icon: _icons.link,
343
352
  title: (0, _i18n.__)('Link'),
344
353
  shortcut: _keycodes.displayShortcut.primary('k'),
345
- onClick: () => setIsLinkOpen(true)
354
+ onClick: event => {
355
+ setIsLinkOpen(true);
356
+ setOpenedBy(event.currentTarget);
357
+ }
346
358
  }), !isAtMaxNesting && (0, _react.createElement)(_components.ToolbarButton, {
347
359
  name: "submenu",
348
360
  icon: _icons.addSubmenu,
@@ -352,25 +364,27 @@ function NavigationLinkEdit({
352
364
  title: (0, _i18n.__)('Settings')
353
365
  }, (0, _react.createElement)(_components.TextControl, {
354
366
  __nextHasNoMarginBottom: true,
367
+ __next40pxDefaultSize: true,
355
368
  value: label ? (0, _dom.__unstableStripHTML)(label) : '',
356
369
  onChange: labelValue => {
357
370
  setAttributes({
358
371
  label: labelValue
359
372
  });
360
373
  },
361
- label: (0, _i18n.__)('Label'),
374
+ label: (0, _i18n.__)('Text'),
362
375
  autoComplete: "off",
363
376
  onFocus: () => setIsLabelFieldFocused(true),
364
377
  onBlur: () => setIsLabelFieldFocused(false)
365
378
  }), (0, _react.createElement)(_components.TextControl, {
366
379
  __nextHasNoMarginBottom: true,
380
+ __next40pxDefaultSize: true,
367
381
  value: url ? (0, _url.safeDecodeURI)(url) : '',
368
382
  onChange: urlValue => {
369
383
  (0, _updateAttributes.updateAttributes)({
370
384
  url: urlValue
371
385
  }, setAttributes, attributes);
372
386
  },
373
- label: (0, _i18n.__)('URL'),
387
+ label: (0, _i18n.__)('Link'),
374
388
  autoComplete: "off"
375
389
  }), (0, _react.createElement)(_components.TextareaControl, {
376
390
  __nextHasNoMarginBottom: true,
@@ -384,6 +398,7 @@ function NavigationLinkEdit({
384
398
  help: (0, _i18n.__)('The description will be displayed in the menu if the current theme supports it.')
385
399
  }), (0, _react.createElement)(_components.TextControl, {
386
400
  __nextHasNoMarginBottom: true,
401
+ __next40pxDefaultSize: true,
387
402
  value: title || '',
388
403
  onChange: titleValue => {
389
404
  setAttributes({
@@ -395,6 +410,7 @@ function NavigationLinkEdit({
395
410
  help: (0, _i18n.__)('Additional information to help clarify the purpose of the link.')
396
411
  }), (0, _react.createElement)(_components.TextControl, {
397
412
  __nextHasNoMarginBottom: true,
413
+ __next40pxDefaultSize: true,
398
414
  value: rel || '',
399
415
  onChange: relValue => {
400
416
  setAttributes({
@@ -426,12 +442,7 @@ function NavigationLinkEdit({
426
442
  "aria-label": (0, _i18n.__)('Navigation link text'),
427
443
  placeholder: itemLabelPlaceholder,
428
444
  withoutInteractiveFormatting: true,
429
- allowedFormats: ['core/bold', 'core/italic', 'core/image', 'core/strikethrough'],
430
- onClick: () => {
431
- if (!url) {
432
- setIsLinkOpen(true);
433
- }
434
- }
445
+ allowedFormats: ['core/bold', 'core/italic', 'core/image', 'core/strikethrough']
435
446
  }), description && (0, _react.createElement)("span", {
436
447
  className: "wp-block-navigation-item__description"
437
448
  }, description)), (isInvalid || isDraft || isLabelFieldFocused) && (0, _react.createElement)("div", {
@@ -453,8 +464,22 @@ function NavigationLinkEdit({
453
464
  // If there is no link then remove the auto-inserted block.
454
465
  // This avoids empty blocks which can provided a poor UX.
455
466
  if (!url) {
456
- // Need to handle refocusing the Nav block or the inserter?
467
+ // Select the previous block to keep focus nearby
468
+ selectPreviousBlock(clientId, true);
469
+ // Remove the link.
457
470
  onReplace([]);
471
+ return;
472
+ }
473
+ setIsLinkOpen(false);
474
+ if (openedBy) {
475
+ openedBy.focus();
476
+ setOpenedBy(null);
477
+ } else if (ref.current) {
478
+ // select the ref when adding a new link
479
+ ref.current.focus();
480
+ } else {
481
+ // Fallback
482
+ selectPreviousBlock(clientId, true);
458
483
  }
459
484
  },
460
485
  anchor: popoverAnchor,
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_blocks","_data","_components","_keycodes","_i18n","_blockEditor","_url","_element","_dom","_htmlEntities","_icons","_coreData","_compose","_linkUi","_updateAttributes","_utils","DEFAULT_BLOCK","name","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","useState","useEffect","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","useIsInvalidLink","kind","type","id","isPostType","hasId","Number","isInteger","postStatus","useSelect","select","getEntityRecord","coreStore","status","isInvalid","isDraft","getMissingText","missingText","__","NavigationLinkEdit","attributes","isSelected","setAttributes","insertBlocksAfter","mergeBlocks","onReplace","context","clientId","label","url","description","rel","title","maxNestingLevel","replaceBlock","__unstableMarkNextChangeAsNotPersistent","useDispatch","blockEditorStore","isLinkOpen","setIsLinkOpen","popoverAnchor","setPopoverAnchor","listItemRef","useRef","itemLabelPlaceholder","ref","isLabelFieldFocused","setIsLabelFieldFocused","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasChildren","getBlocks","getBlockCount","getBlockName","getBlockRootClientId","hasSelectedInnerBlock","getBlockParentsByBlockName","length","transformToSubmenu","newSubmenu","createBlock","isURL","prependHTTP","test","selectLabelText","placeCaretAtHorizontalEdge","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","undefined","opensInNewTab","textColor","customTextColor","backgroundColor","customBackgroundColor","getColors","onKeyDown","isKeyboardEvent","primary","keyCode","ENTER","blockProps","useBlockProps","useMergeRefs","className","classnames","getColorClassName","style","color","innerBlocksProps","useInnerBlocksProps","defaultBlock","directInsert","renderAppender","onClick","classes","placeholderText","tooltipText","_react","createElement","Fragment","BlockControls","ToolbarGroup","ToolbarButton","icon","linkIcon","shortcut","displayShortcut","addSubmenu","InspectorControls","PanelBody","TextControl","__nextHasNoMarginBottom","value","stripHTML","onChange","labelValue","autoComplete","onFocus","onBlur","safeDecodeURI","urlValue","updateAttributes","TextareaControl","descriptionValue","help","titleValue","relValue","Tooltip","text","RichText","identifier","onMerge","__unstableOnSplitAtEnd","placeholder","withoutInteractiveFormatting","allowedFormats","decodeEntities","trim","LinkUI","link","onClose","anchor","onRemove","updatedValue"],"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"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, safeDecodeURI } 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 { LinkUI } from './link-ui';\nimport { updateAttributes } from './update-attributes';\nimport { getColors } from '../navigation/edit/utils';\n\nconst DEFAULT_BLOCK = { name: 'core/navigation-link' };\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\t'core/navigation-link',\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 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\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 ? safeDecodeURI( 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 text={ tooltipText }>\n\t\t\t\t\t\t\t\t<span>{ missingText }</span>\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 text={ tooltipText }>\n\t\t\t\t\t\t\t\t\t\t<span\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>\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// 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// Ideally they would be stored in a raw, unescaped form.\n\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// so they display without encoding.\n\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`${ decodeEntities( label ) } ${\n\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? placeholderText\n\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}`.trim()\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</span>\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\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\t// If there is no link then remove the auto-inserted block.\n\t\t\t\t\t\t\t\t// This avoids empty blocks which can provided a poor UX.\n\t\t\t\t\t\t\t\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\t// Need to handle refocusing the Nav block or the inserter?\n\t\t\t\t\t\t\t\t\tonReplace( [] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\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"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_blocks","_data","_components","_keycodes","_i18n","_blockEditor","_url","_element","_dom","_htmlEntities","_icons","_coreData","_compose","_linkUi","_updateAttributes","_utils","DEFAULT_BLOCK","name","useIsDraggingWithin","elementRef","isDraggingWithin","setIsDraggingWithin","useState","useEffect","ownerDocument","current","handleDragStart","event","handleDragEnter","handleDragEnd","contains","target","addEventListener","removeEventListener","useIsInvalidLink","kind","type","id","isPostType","hasId","Number","isInteger","postStatus","useSelect","select","getEntityRecord","coreStore","status","isInvalid","isDraft","getMissingText","missingText","__","NavigationLinkEdit","attributes","isSelected","setAttributes","insertBlocksAfter","mergeBlocks","onReplace","context","clientId","label","url","description","rel","title","maxNestingLevel","replaceBlock","__unstableMarkNextChangeAsNotPersistent","selectPreviousBlock","useDispatch","blockEditorStore","isLinkOpen","setIsLinkOpen","openedBy","setOpenedBy","popoverAnchor","setPopoverAnchor","listItemRef","useRef","itemLabelPlaceholder","ref","prevUrl","usePrevious","isLabelFieldFocused","setIsLabelFieldFocused","innerBlocks","isAtMaxNesting","isTopLevelLink","isParentOfSelectedBlock","hasChildren","getBlocks","getBlockCount","getBlockName","getBlockRootClientId","hasSelectedInnerBlock","getBlockParentsByBlockName","length","transformToSubmenu","newSubmenu","createBlock","isURL","prependHTTP","test","selectLabelText","focus","defaultView","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","removeLink","undefined","opensInNewTab","textColor","customTextColor","backgroundColor","customBackgroundColor","getColors","onKeyDown","isKeyboardEvent","primary","preventDefault","stopPropagation","blockProps","useBlockProps","useMergeRefs","className","classnames","getColorClassName","style","color","innerBlocksProps","useInnerBlocksProps","defaultBlock","directInsert","renderAppender","onClick","classes","placeholderText","tooltipText","_react","createElement","Fragment","BlockControls","ToolbarGroup","ToolbarButton","icon","linkIcon","shortcut","displayShortcut","currentTarget","addSubmenu","InspectorControls","PanelBody","TextControl","__nextHasNoMarginBottom","__next40pxDefaultSize","value","stripHTML","onChange","labelValue","autoComplete","onFocus","onBlur","safeDecodeURI","urlValue","updateAttributes","TextareaControl","descriptionValue","help","titleValue","relValue","Tooltip","text","RichText","identifier","onMerge","__unstableOnSplitAtEnd","placeholder","withoutInteractiveFormatting","allowedFormats","decodeEntities","trim","LinkUI","link","onClose","anchor","onRemove","updatedValue"],"sources":["@wordpress/block-library/src/navigation-link/edit.js"],"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 } 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, safeDecodeURI } from '@wordpress/url';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { __unstableStripHTML as stripHTML } 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, usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { LinkUI } from './link-ui';\nimport { updateAttributes } from './update-attributes';\nimport { getColors } from '../navigation/edit/utils';\n\nconst DEFAULT_BLOCK = { name: 'core/navigation-link' };\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}, [ elementRef ] );\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 {\n\t\treplaceBlock,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tselectPreviousBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Store what element opened the popover, so we know where to return focus to (toolbar button vs navigation link text)\n\tconst [ openedBy, setOpenedBy ] = useState( null );\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\tconst prevUrl = usePrevious( url );\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\t'core/navigation-link',\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, maxNestingLevel ]\n\t);\n\n\t/**\n\t * Transform to submenu block.\n\t */\n\tconst 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\t// We only want to do this when the URL has gone from nothing to a new URL AND the label looks like a URL\n\t\tif (\n\t\t\t! prevUrl &&\n\t\t\turl &&\n\t\t\tisLinkOpen &&\n\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t) {\n\t\t\t// Focus and select the label text.\n\t\t\tselectLabelText();\n\t\t}\n\t}, [ prevUrl, url, isLinkOpen, label ] );\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 ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\t// Required to prevent the command center from opening,\n\t\t\t// as it shares the CMD+K shortcut.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/59845.\n\t\t\tevent.preventDefault();\n\t\t\t// If this link is a child of a parent submenu item, the parent submenu item event will also open, closing this popover\n\t\t\tevent.stopPropagation();\n\t\t\tsetIsLinkOpen( true );\n\t\t\tsetOpenedBy( ref.current );\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 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\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 = () => {\n\t\t\tsetIsLinkOpen( true );\n\t\t\tsetOpenedBy( ref.current );\n\t\t};\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={ ( event ) => {\n\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\tsetOpenedBy( event.currentTarget );\n\t\t\t\t\t\t} }\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\t__next40pxDefaultSize\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={ __( 'Text' ) }\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\t__next40pxDefaultSize\n\t\t\t\t\t\tvalue={ url ? safeDecodeURI( 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={ __( 'Link' ) }\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\t__next40pxDefaultSize\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\t__next40pxDefaultSize\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 text={ tooltipText }>\n\t\t\t\t\t\t\t\t<span>{ missingText }</span>\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/>\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 text={ tooltipText }>\n\t\t\t\t\t\t\t\t\t\t<span\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>\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// 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// Ideally they would be stored in a raw, unescaped form.\n\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// so they display without encoding.\n\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`${ decodeEntities( label ) } ${\n\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? placeholderText\n\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}`.trim()\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</span>\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\tclientId={ clientId }\n\t\t\t\t\t\t\tlink={ attributes }\n\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\t// If there is no link then remove the auto-inserted block.\n\t\t\t\t\t\t\t\t// This avoids empty blocks which can provided a poor UX.\n\t\t\t\t\t\t\t\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\t// Select the previous block to keep focus nearby\n\t\t\t\t\t\t\t\t\tselectPreviousBlock( clientId, true );\n\t\t\t\t\t\t\t\t\t// Remove the link.\n\t\t\t\t\t\t\t\t\tonReplace( [] );\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsetIsLinkOpen( false );\n\t\t\t\t\t\t\t\tif ( openedBy ) {\n\t\t\t\t\t\t\t\t\topenedBy.focus();\n\t\t\t\t\t\t\t\t\tsetOpenedBy( null );\n\t\t\t\t\t\t\t\t} else if ( ref.current ) {\n\t\t\t\t\t\t\t\t\t// select the ref when adding a new link\n\t\t\t\t\t\t\t\t\tref.current.focus();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Fallback\n\t\t\t\t\t\t\t\t\tselectPreviousBlock( clientId, true );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\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"],"mappings":"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"}