@wordpress/block-library 7.19.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (761) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/audio/edit.native.js +1 -3
  3. package/build/audio/edit.native.js.map +1 -1
  4. package/build/audio/index.js +2 -1
  5. package/build/audio/index.js.map +1 -1
  6. package/build/avatar/edit.js +1 -0
  7. package/build/avatar/edit.js.map +1 -1
  8. package/build/avatar/user-control.js +1 -0
  9. package/build/avatar/user-control.js.map +1 -1
  10. package/build/block/edit.js +14 -2
  11. package/build/block/edit.js.map +1 -1
  12. package/build/block/edit.native.js +14 -6
  13. package/build/block/edit.native.js.map +1 -1
  14. package/build/block/index.js +1 -2
  15. package/build/block/index.js.map +1 -1
  16. package/build/button/edit.native.js.map +1 -1
  17. package/build/code/transforms.js +1 -1
  18. package/build/code/transforms.js.map +1 -1
  19. package/build/columns/edit.js +1 -0
  20. package/build/columns/edit.js.map +1 -1
  21. package/build/columns/edit.native.js +13 -30
  22. package/build/columns/edit.native.js.map +1 -1
  23. package/build/comment-author-avatar/edit.js +1 -0
  24. package/build/comment-author-avatar/edit.js.map +1 -1
  25. package/build/cover/edit/inspector-controls.js +2 -0
  26. package/build/cover/edit/inspector-controls.js.map +1 -1
  27. package/build/cover/edit.native.js +24 -16
  28. package/build/cover/edit.native.js.map +1 -1
  29. package/build/embed/embed-controls.native.js +1 -0
  30. package/build/embed/embed-controls.native.js.map +1 -1
  31. package/build/embed/embed-preview.native.js +1 -3
  32. package/build/embed/embed-preview.native.js.map +1 -1
  33. package/build/file/inspector.js +1 -0
  34. package/build/file/inspector.js.map +1 -1
  35. package/build/gallery/edit.js +25 -13
  36. package/build/gallery/edit.js.map +1 -1
  37. package/build/gallery/gallery.native.js +1 -3
  38. package/build/gallery/gallery.native.js.map +1 -1
  39. package/build/gallery/shared.js +4 -10
  40. package/build/gallery/shared.js.map +1 -1
  41. package/build/gallery/transforms.js +1 -7
  42. package/build/gallery/transforms.js.map +1 -1
  43. package/build/gallery/use-get-media.js +1 -1
  44. package/build/gallery/use-get-media.js.map +1 -1
  45. package/build/gallery/use-get-media.native.js +3 -1
  46. package/build/gallery/use-get-media.native.js.map +1 -1
  47. package/build/gallery/v1/edit.js +22 -15
  48. package/build/gallery/v1/edit.js.map +1 -1
  49. package/build/gallery/v1/gallery.native.js +1 -3
  50. package/build/gallery/v1/gallery.native.js.map +1 -1
  51. package/build/gallery/v1/shared.js +4 -1
  52. package/build/gallery/v1/shared.js.map +1 -1
  53. package/build/group/edit.js +1 -2
  54. package/build/group/edit.js.map +1 -1
  55. package/build/group/index.js +3 -1
  56. package/build/group/index.js.map +1 -1
  57. package/build/group/placeholder.js +5 -26
  58. package/build/group/placeholder.js.map +1 -1
  59. package/build/heading/deprecated.js +152 -69
  60. package/build/heading/deprecated.js.map +1 -1
  61. package/build/heading/index.js +1 -2
  62. package/build/heading/index.js.map +1 -1
  63. package/build/heading/transforms.js +1 -2
  64. package/build/heading/transforms.js.map +1 -1
  65. package/build/html/index.js +1 -1
  66. package/build/image/edit.js +8 -5
  67. package/build/image/edit.js.map +1 -1
  68. package/build/image/edit.native.js +3 -2
  69. package/build/image/edit.native.js.map +1 -1
  70. package/build/image/image.js +12 -8
  71. package/build/image/image.js.map +1 -1
  72. package/build/index.js +3 -1
  73. package/build/index.js.map +1 -1
  74. package/build/latest-comments/edit.js +1 -0
  75. package/build/latest-comments/edit.js.map +1 -1
  76. package/build/latest-posts/edit.js +2 -0
  77. package/build/latest-posts/edit.js.map +1 -1
  78. package/build/list/transforms.js +1 -9
  79. package/build/list/transforms.js.map +1 -1
  80. package/build/list/utils.js +5 -2
  81. package/build/list/utils.js.map +1 -1
  82. package/build/list-item/index.js +4 -1
  83. package/build/list-item/index.js.map +1 -1
  84. package/build/list-item/transforms.js +22 -0
  85. package/build/list-item/transforms.js.map +1 -0
  86. package/build/list-item/utils.js +77 -1
  87. package/build/list-item/utils.js.map +1 -1
  88. package/build/media-text/edit.js +4 -2
  89. package/build/media-text/edit.js.map +1 -1
  90. package/build/navigation/edit/are-blocks-dirty.js +52 -0
  91. package/build/navigation/edit/are-blocks-dirty.js.map +1 -0
  92. package/build/navigation/edit/index.js +95 -116
  93. package/build/navigation/edit/index.js.map +1 -1
  94. package/build/navigation/edit/menu-inspector-controls.js +72 -0
  95. package/build/navigation/edit/menu-inspector-controls.js.map +1 -0
  96. package/build/navigation/edit/navigation-menu-selector.js +5 -10
  97. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  98. package/build/navigation/edit/unsaved-inner-blocks.js +11 -7
  99. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  100. package/build/navigation/view-modal.js +6 -2
  101. package/build/navigation/view-modal.js.map +1 -1
  102. package/build/navigation-link/edit.js +42 -298
  103. package/build/navigation-link/edit.js.map +1 -1
  104. package/build/navigation-link/link-ui.js +222 -0
  105. package/build/navigation-link/link-ui.js.map +1 -0
  106. package/build/navigation-link/transforms.js +12 -0
  107. package/build/navigation-link/transforms.js.map +1 -1
  108. package/build/navigation-link/update-attributes.js +108 -0
  109. package/build/navigation-link/update-attributes.js.map +1 -0
  110. package/build/navigation-submenu/edit.js +42 -173
  111. package/build/navigation-submenu/edit.js.map +1 -1
  112. package/build/page-list/constants.js +15 -0
  113. package/build/page-list/constants.js.map +1 -0
  114. package/build/page-list/convert-to-links-modal.js +22 -86
  115. package/build/page-list/convert-to-links-modal.js.map +1 -1
  116. package/build/page-list/convert-to-navigation-links.js +76 -0
  117. package/build/page-list/convert-to-navigation-links.js.map +1 -0
  118. package/build/page-list/edit.js +142 -78
  119. package/build/page-list/edit.js.map +1 -1
  120. package/build/page-list/index.js +6 -1
  121. package/build/page-list/index.js.map +1 -1
  122. package/build/page-list-item/edit.js +87 -0
  123. package/build/page-list-item/edit.js.map +1 -0
  124. package/build/page-list-item/index.js +85 -0
  125. package/build/page-list-item/index.js.map +1 -0
  126. package/build/page-list-item/init.js +16 -0
  127. package/build/page-list-item/init.js.map +1 -0
  128. package/build/paragraph/index.js +1 -7
  129. package/build/paragraph/index.js.map +1 -1
  130. package/build/post-author/edit.js +3 -2
  131. package/build/post-author/edit.js.map +1 -1
  132. package/build/post-featured-image/overlay.js +1 -0
  133. package/build/post-featured-image/overlay.js.map +1 -1
  134. package/build/post-template/index.js +8 -0
  135. package/build/post-template/index.js.map +1 -1
  136. package/build/preformatted/transforms.js +3 -1
  137. package/build/preformatted/transforms.js.map +1 -1
  138. package/build/query/deprecated.js +192 -21
  139. package/build/query/deprecated.js.map +1 -1
  140. package/build/query/edit/inspector-controls/index.js +1 -0
  141. package/build/query/edit/inspector-controls/index.js.map +1 -1
  142. package/build/query/edit/query-placeholder.js +3 -19
  143. package/build/query/edit/query-placeholder.js.map +1 -1
  144. package/build/query/index.js +0 -8
  145. package/build/query/index.js.map +1 -1
  146. package/build/query/utils.js +0 -8
  147. package/build/query/utils.js.map +1 -1
  148. package/build/rss/edit.js +3 -0
  149. package/build/rss/edit.js.map +1 -1
  150. package/build/search/edit.native.js +22 -22
  151. package/build/search/edit.native.js.map +1 -1
  152. package/build/search/index.js +9 -1
  153. package/build/search/index.js.map +1 -1
  154. package/build/site-logo/edit.js +17 -9
  155. package/build/site-logo/edit.js.map +1 -1
  156. package/build/site-logo/index.js +1 -0
  157. package/build/site-logo/index.js.map +1 -1
  158. package/build/site-title/index.js +1 -0
  159. package/build/site-title/index.js.map +1 -1
  160. package/build/social-link/social-list.js +4 -12
  161. package/build/social-link/social-list.js.map +1 -1
  162. package/build/table/edit.js +3 -1
  163. package/build/table/edit.js.map +1 -1
  164. package/build/table/index.js +17 -1
  165. package/build/table/index.js.map +1 -1
  166. package/build/table/save.js +4 -2
  167. package/build/table/save.js.map +1 -1
  168. package/build/table/state.js +24 -12
  169. package/build/table/state.js.map +1 -1
  170. package/build/table/transforms.js +3 -2
  171. package/build/table/transforms.js.map +1 -1
  172. package/build/table-of-contents/edit.js +2 -2
  173. package/build/table-of-contents/edit.js.map +1 -1
  174. package/build/tag-cloud/edit.js +2 -1
  175. package/build/tag-cloud/edit.js.map +1 -1
  176. package/build/template-part/edit/selection-modal.js +5 -2
  177. package/build/template-part/edit/selection-modal.js.map +1 -1
  178. package/build/template-part/edit/utils/hooks.js +2 -6
  179. package/build/template-part/edit/utils/hooks.js.map +1 -1
  180. package/build/text-columns/edit.js +1 -0
  181. package/build/text-columns/edit.js.map +1 -1
  182. package/build/utils/transformation-categories.native.js +1 -1
  183. package/build/utils/transformation-categories.native.js.map +1 -1
  184. package/build/video/edit.js +1 -1
  185. package/build/video/edit.js.map +1 -1
  186. package/build/video/edit.native.js +1 -3
  187. package/build/video/edit.native.js.map +1 -1
  188. package/build-module/audio/edit.native.js +1 -2
  189. package/build-module/audio/edit.native.js.map +1 -1
  190. package/build-module/audio/index.js +2 -1
  191. package/build-module/audio/index.js.map +1 -1
  192. package/build-module/avatar/edit.js +1 -0
  193. package/build-module/avatar/edit.js.map +1 -1
  194. package/build-module/avatar/user-control.js +1 -0
  195. package/build-module/avatar/user-control.js.map +1 -1
  196. package/build-module/block/edit.js +14 -2
  197. package/build-module/block/edit.js.map +1 -1
  198. package/build-module/block/edit.native.js +14 -6
  199. package/build-module/block/edit.native.js.map +1 -1
  200. package/build-module/block/index.js +1 -2
  201. package/build-module/block/index.js.map +1 -1
  202. package/build-module/button/edit.native.js +2 -1
  203. package/build-module/button/edit.native.js.map +1 -1
  204. package/build-module/code/transforms.js +1 -1
  205. package/build-module/code/transforms.js.map +1 -1
  206. package/build-module/columns/edit.js +1 -0
  207. package/build-module/columns/edit.js.map +1 -1
  208. package/build-module/columns/edit.native.js +13 -29
  209. package/build-module/columns/edit.native.js.map +1 -1
  210. package/build-module/comment-author-avatar/edit.js +1 -0
  211. package/build-module/comment-author-avatar/edit.js.map +1 -1
  212. package/build-module/cover/edit/inspector-controls.js +2 -0
  213. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  214. package/build-module/cover/edit.native.js +22 -14
  215. package/build-module/cover/edit.native.js.map +1 -1
  216. package/build-module/embed/embed-controls.native.js +2 -1
  217. package/build-module/embed/embed-controls.native.js.map +1 -1
  218. package/build-module/embed/embed-preview.native.js +1 -2
  219. package/build-module/embed/embed-preview.native.js.map +1 -1
  220. package/build-module/file/inspector.js +1 -0
  221. package/build-module/file/inspector.js.map +1 -1
  222. package/build-module/gallery/edit.js +25 -12
  223. package/build-module/gallery/edit.js.map +1 -1
  224. package/build-module/gallery/gallery.native.js +1 -2
  225. package/build-module/gallery/gallery.native.js.map +1 -1
  226. package/build-module/gallery/shared.js +5 -11
  227. package/build-module/gallery/shared.js.map +1 -1
  228. package/build-module/gallery/transforms.js +1 -6
  229. package/build-module/gallery/transforms.js.map +1 -1
  230. package/build-module/gallery/use-get-media.js +1 -1
  231. package/build-module/gallery/use-get-media.js.map +1 -1
  232. package/build-module/gallery/use-get-media.native.js +3 -1
  233. package/build-module/gallery/use-get-media.native.js.map +1 -1
  234. package/build-module/gallery/v1/edit.js +23 -16
  235. package/build-module/gallery/v1/edit.js.map +1 -1
  236. package/build-module/gallery/v1/gallery.native.js +1 -2
  237. package/build-module/gallery/v1/gallery.native.js.map +1 -1
  238. package/build-module/gallery/v1/shared.js +5 -2
  239. package/build-module/gallery/v1/shared.js.map +1 -1
  240. package/build-module/group/edit.js +1 -3
  241. package/build-module/group/edit.js.map +1 -1
  242. package/build-module/group/index.js +3 -1
  243. package/build-module/group/index.js.map +1 -1
  244. package/build-module/group/placeholder.js +5 -26
  245. package/build-module/group/placeholder.js.map +1 -1
  246. package/build-module/heading/deprecated.js +152 -69
  247. package/build-module/heading/deprecated.js.map +1 -1
  248. package/build-module/heading/index.js +1 -2
  249. package/build-module/heading/index.js.map +1 -1
  250. package/build-module/heading/transforms.js +1 -2
  251. package/build-module/heading/transforms.js.map +1 -1
  252. package/build-module/html/index.js +1 -1
  253. package/build-module/image/edit.js +9 -6
  254. package/build-module/image/edit.js.map +1 -1
  255. package/build-module/image/edit.native.js +2 -1
  256. package/build-module/image/edit.native.js.map +1 -1
  257. package/build-module/image/image.js +13 -9
  258. package/build-module/image/image.js.map +1 -1
  259. package/build-module/index.js +2 -1
  260. package/build-module/index.js.map +1 -1
  261. package/build-module/latest-comments/edit.js +1 -0
  262. package/build-module/latest-comments/edit.js.map +1 -1
  263. package/build-module/latest-posts/edit.js +2 -0
  264. package/build-module/latest-posts/edit.js.map +1 -1
  265. package/build-module/list/transforms.js +1 -9
  266. package/build-module/list/transforms.js.map +1 -1
  267. package/build-module/list/utils.js +5 -2
  268. package/build-module/list/utils.js.map +1 -1
  269. package/build-module/list-item/index.js +3 -1
  270. package/build-module/list-item/index.js.map +1 -1
  271. package/build-module/list-item/transforms.js +13 -0
  272. package/build-module/list-item/transforms.js.map +1 -0
  273. package/build-module/list-item/utils.js +78 -1
  274. package/build-module/list-item/utils.js.map +1 -1
  275. package/build-module/media-text/edit.js +5 -3
  276. package/build-module/media-text/edit.js.map +1 -1
  277. package/build-module/navigation/edit/are-blocks-dirty.js +44 -0
  278. package/build-module/navigation/edit/are-blocks-dirty.js.map +1 -0
  279. package/build-module/navigation/edit/index.js +95 -117
  280. package/build-module/navigation/edit/index.js.map +1 -1
  281. package/build-module/navigation/edit/menu-inspector-controls.js +59 -0
  282. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -0
  283. package/build-module/navigation/edit/navigation-menu-selector.js +6 -11
  284. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  285. package/build-module/navigation/edit/unsaved-inner-blocks.js +9 -6
  286. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  287. package/build-module/navigation/view-modal.js +6 -2
  288. package/build-module/navigation/view-modal.js.map +1 -1
  289. package/build-module/navigation-link/edit.js +46 -299
  290. package/build-module/navigation-link/edit.js.map +1 -1
  291. package/build-module/navigation-link/link-ui.js +206 -0
  292. package/build-module/navigation-link/link-ui.js.map +1 -0
  293. package/build-module/navigation-link/transforms.js +12 -0
  294. package/build-module/navigation-link/transforms.js.map +1 -1
  295. package/build-module/navigation-link/update-attributes.js +97 -0
  296. package/build-module/navigation-link/update-attributes.js.map +1 -0
  297. package/build-module/navigation-submenu/edit.js +47 -175
  298. package/build-module/navigation-submenu/edit.js.map +1 -1
  299. package/build-module/page-list/constants.js +6 -0
  300. package/build-module/page-list/constants.js.map +1 -0
  301. package/build-module/page-list/convert-to-links-modal.js +20 -81
  302. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  303. package/build-module/page-list/convert-to-navigation-links.js +66 -0
  304. package/build-module/page-list/convert-to-navigation-links.js.map +1 -0
  305. package/build-module/page-list/edit.js +144 -82
  306. package/build-module/page-list/edit.js.map +1 -1
  307. package/build-module/page-list/index.js +6 -1
  308. package/build-module/page-list/index.js.map +1 -1
  309. package/build-module/page-list-item/edit.js +74 -0
  310. package/build-module/page-list-item/edit.js.map +1 -0
  311. package/build-module/page-list-item/index.js +68 -0
  312. package/build-module/page-list-item/index.js.map +1 -0
  313. package/build-module/page-list-item/init.js +6 -0
  314. package/build-module/page-list-item/init.js.map +1 -0
  315. package/build-module/paragraph/index.js +1 -7
  316. package/build-module/paragraph/index.js.map +1 -1
  317. package/build-module/post-author/edit.js +3 -2
  318. package/build-module/post-author/edit.js.map +1 -1
  319. package/build-module/post-featured-image/overlay.js +1 -0
  320. package/build-module/post-featured-image/overlay.js.map +1 -1
  321. package/build-module/post-template/index.js +8 -0
  322. package/build-module/post-template/index.js.map +1 -1
  323. package/build-module/preformatted/transforms.js +3 -1
  324. package/build-module/preformatted/transforms.js.map +1 -1
  325. package/build-module/query/deprecated.js +185 -21
  326. package/build-module/query/deprecated.js.map +1 -1
  327. package/build-module/query/edit/inspector-controls/index.js +1 -0
  328. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  329. package/build-module/query/edit/query-placeholder.js +3 -19
  330. package/build-module/query/edit/query-placeholder.js.map +1 -1
  331. package/build-module/query/index.js +0 -8
  332. package/build-module/query/index.js.map +1 -1
  333. package/build-module/query/utils.js +0 -8
  334. package/build-module/query/utils.js.map +1 -1
  335. package/build-module/rss/edit.js +3 -0
  336. package/build-module/rss/edit.js.map +1 -1
  337. package/build-module/search/edit.native.js +20 -20
  338. package/build-module/search/edit.native.js.map +1 -1
  339. package/build-module/search/index.js +8 -1
  340. package/build-module/search/index.js.map +1 -1
  341. package/build-module/site-logo/edit.js +17 -8
  342. package/build-module/site-logo/edit.js.map +1 -1
  343. package/build-module/site-logo/index.js +1 -0
  344. package/build-module/site-logo/index.js.map +1 -1
  345. package/build-module/site-title/index.js +1 -0
  346. package/build-module/site-title/index.js.map +1 -1
  347. package/build-module/social-link/social-list.js +2 -11
  348. package/build-module/social-link/social-list.js.map +1 -1
  349. package/build-module/table/edit.js +3 -1
  350. package/build-module/table/edit.js.map +1 -1
  351. package/build-module/table/index.js +17 -1
  352. package/build-module/table/index.js.map +1 -1
  353. package/build-module/table/save.js +4 -2
  354. package/build-module/table/save.js.map +1 -1
  355. package/build-module/table/state.js +25 -13
  356. package/build-module/table/state.js.map +1 -1
  357. package/build-module/table/transforms.js +3 -2
  358. package/build-module/table/transforms.js.map +1 -1
  359. package/build-module/table-of-contents/edit.js +2 -2
  360. package/build-module/table-of-contents/edit.js.map +1 -1
  361. package/build-module/tag-cloud/edit.js +3 -2
  362. package/build-module/tag-cloud/edit.js.map +1 -1
  363. package/build-module/template-part/edit/selection-modal.js +6 -3
  364. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  365. package/build-module/template-part/edit/utils/hooks.js +3 -7
  366. package/build-module/template-part/edit/utils/hooks.js.map +1 -1
  367. package/build-module/text-columns/edit.js +1 -0
  368. package/build-module/text-columns/edit.js.map +1 -1
  369. package/build-module/utils/transformation-categories.native.js +1 -1
  370. package/build-module/utils/transformation-categories.native.js.map +1 -1
  371. package/build-module/video/edit.js +1 -1
  372. package/build-module/video/edit.js.map +1 -1
  373. package/build-module/video/edit.native.js +1 -2
  374. package/build-module/video/edit.native.js.map +1 -1
  375. package/build-style/archives/editor-rtl.css +12 -0
  376. package/build-style/archives/editor.css +12 -0
  377. package/build-style/archives/style-rtl.css +12 -0
  378. package/build-style/archives/style.css +12 -0
  379. package/build-style/audio/editor-rtl.css +12 -0
  380. package/build-style/audio/editor.css +12 -0
  381. package/build-style/audio/style-rtl.css +12 -0
  382. package/build-style/audio/style.css +12 -0
  383. package/build-style/audio/theme-rtl.css +12 -0
  384. package/build-style/audio/theme.css +12 -0
  385. package/build-style/avatar/editor-rtl.css +12 -0
  386. package/build-style/avatar/editor.css +12 -0
  387. package/build-style/avatar/style-rtl.css +12 -0
  388. package/build-style/avatar/style.css +12 -0
  389. package/build-style/block/editor-rtl.css +22 -0
  390. package/build-style/block/editor.css +22 -0
  391. package/build-style/button/editor-rtl.css +12 -0
  392. package/build-style/button/editor.css +12 -0
  393. package/build-style/button/style-rtl.css +12 -0
  394. package/build-style/button/style.css +12 -0
  395. package/build-style/buttons/editor-rtl.css +12 -0
  396. package/build-style/buttons/editor.css +12 -0
  397. package/build-style/buttons/style-rtl.css +12 -0
  398. package/build-style/buttons/style.css +12 -0
  399. package/build-style/calendar/style-rtl.css +12 -0
  400. package/build-style/calendar/style.css +12 -0
  401. package/build-style/categories/editor-rtl.css +12 -0
  402. package/build-style/categories/editor.css +12 -0
  403. package/build-style/categories/style-rtl.css +12 -0
  404. package/build-style/categories/style.css +12 -0
  405. package/build-style/classic-rtl.css +12 -0
  406. package/build-style/classic.css +12 -0
  407. package/build-style/code/editor-rtl.css +12 -0
  408. package/build-style/code/editor.css +12 -0
  409. package/build-style/code/style-rtl.css +12 -0
  410. package/build-style/code/style.css +12 -0
  411. package/build-style/code/theme-rtl.css +12 -0
  412. package/build-style/code/theme.css +12 -0
  413. package/build-style/columns/editor-rtl.css +12 -0
  414. package/build-style/columns/editor.css +12 -0
  415. package/build-style/columns/style-rtl.css +12 -0
  416. package/build-style/columns/style.css +12 -0
  417. package/build-style/comment-author-avatar/editor-rtl.css +12 -0
  418. package/build-style/comment-author-avatar/editor.css +12 -0
  419. package/build-style/comment-content/style-rtl.css +12 -0
  420. package/build-style/comment-content/style.css +12 -0
  421. package/build-style/comment-template/style-rtl.css +12 -0
  422. package/build-style/comment-template/style.css +12 -0
  423. package/build-style/comments/editor-rtl.css +12 -0
  424. package/build-style/comments/editor.css +12 -0
  425. package/build-style/comments/style-rtl.css +12 -0
  426. package/build-style/comments/style.css +12 -0
  427. package/build-style/comments-pagination/editor-rtl.css +12 -0
  428. package/build-style/comments-pagination/editor.css +12 -0
  429. package/build-style/comments-pagination/style-rtl.css +12 -0
  430. package/build-style/comments-pagination/style.css +12 -0
  431. package/build-style/comments-pagination-numbers/editor-rtl.css +12 -0
  432. package/build-style/comments-pagination-numbers/editor.css +12 -0
  433. package/build-style/comments-title/editor-rtl.css +12 -0
  434. package/build-style/comments-title/editor.css +12 -0
  435. package/build-style/common-rtl.css +17 -1
  436. package/build-style/common.css +17 -1
  437. package/build-style/cover/editor-rtl.css +12 -0
  438. package/build-style/cover/editor.css +12 -0
  439. package/build-style/cover/style-rtl.css +14 -1
  440. package/build-style/cover/style.css +14 -1
  441. package/build-style/editor-elements-rtl.css +12 -0
  442. package/build-style/editor-elements.css +12 -0
  443. package/build-style/editor-rtl.css +39 -20
  444. package/build-style/editor.css +39 -20
  445. package/build-style/elements-rtl.css +12 -0
  446. package/build-style/elements.css +12 -0
  447. package/build-style/embed/editor-rtl.css +12 -0
  448. package/build-style/embed/editor.css +12 -0
  449. package/build-style/embed/style-rtl.css +12 -0
  450. package/build-style/embed/style.css +12 -0
  451. package/build-style/embed/theme-rtl.css +12 -0
  452. package/build-style/embed/theme.css +12 -0
  453. package/build-style/file/editor-rtl.css +12 -0
  454. package/build-style/file/editor.css +12 -0
  455. package/build-style/file/style-rtl.css +12 -0
  456. package/build-style/file/style.css +12 -0
  457. package/build-style/freeform/editor-rtl.css +12 -0
  458. package/build-style/freeform/editor.css +12 -0
  459. package/build-style/gallery/editor-rtl.css +13 -1
  460. package/build-style/gallery/editor.css +13 -1
  461. package/build-style/gallery/style-rtl.css +16 -2
  462. package/build-style/gallery/style.css +16 -2
  463. package/build-style/gallery/theme-rtl.css +12 -0
  464. package/build-style/gallery/theme.css +12 -0
  465. package/build-style/group/editor-rtl.css +12 -0
  466. package/build-style/group/editor.css +12 -0
  467. package/build-style/group/style-rtl.css +12 -0
  468. package/build-style/group/style.css +12 -0
  469. package/build-style/group/theme-rtl.css +12 -0
  470. package/build-style/group/theme.css +12 -0
  471. package/build-style/heading/style-rtl.css +12 -0
  472. package/build-style/heading/style.css +12 -0
  473. package/build-style/html/editor-rtl.css +12 -0
  474. package/build-style/html/editor.css +12 -0
  475. package/build-style/image/editor-rtl.css +12 -9
  476. package/build-style/image/editor.css +12 -9
  477. package/build-style/image/style-rtl.css +12 -0
  478. package/build-style/image/style.css +12 -0
  479. package/build-style/image/theme-rtl.css +12 -0
  480. package/build-style/image/theme.css +12 -0
  481. package/build-style/latest-comments/style-rtl.css +12 -0
  482. package/build-style/latest-comments/style.css +12 -0
  483. package/build-style/latest-posts/editor-rtl.css +12 -0
  484. package/build-style/latest-posts/editor.css +12 -0
  485. package/build-style/latest-posts/style-rtl.css +12 -0
  486. package/build-style/latest-posts/style.css +12 -0
  487. package/build-style/list/style-rtl.css +12 -0
  488. package/build-style/list/style.css +12 -0
  489. package/build-style/media-text/editor-rtl.css +12 -0
  490. package/build-style/media-text/editor.css +12 -0
  491. package/build-style/media-text/style-rtl.css +12 -0
  492. package/build-style/media-text/style.css +12 -0
  493. package/build-style/more/editor-rtl.css +12 -0
  494. package/build-style/more/editor.css +12 -0
  495. package/build-style/navigation/editor-rtl.css +12 -0
  496. package/build-style/navigation/editor.css +12 -0
  497. package/build-style/navigation/style-rtl.css +12 -0
  498. package/build-style/navigation/style.css +12 -0
  499. package/build-style/navigation-link/editor-rtl.css +12 -0
  500. package/build-style/navigation-link/editor.css +12 -0
  501. package/build-style/navigation-link/style-rtl.css +12 -0
  502. package/build-style/navigation-link/style.css +12 -0
  503. package/build-style/navigation-submenu/editor-rtl.css +12 -0
  504. package/build-style/navigation-submenu/editor.css +12 -0
  505. package/build-style/nextpage/editor-rtl.css +12 -0
  506. package/build-style/nextpage/editor.css +12 -0
  507. package/build-style/page-list/editor-rtl.css +12 -0
  508. package/build-style/page-list/editor.css +12 -0
  509. package/build-style/page-list/style-rtl.css +12 -0
  510. package/build-style/page-list/style.css +12 -0
  511. package/build-style/paragraph/editor-rtl.css +12 -0
  512. package/build-style/paragraph/editor.css +12 -0
  513. package/build-style/paragraph/style-rtl.css +12 -0
  514. package/build-style/paragraph/style.css +12 -0
  515. package/build-style/post-author/style-rtl.css +12 -0
  516. package/build-style/post-author/style.css +12 -0
  517. package/build-style/post-comments-form/editor-rtl.css +12 -0
  518. package/build-style/post-comments-form/editor.css +12 -0
  519. package/build-style/post-comments-form/style-rtl.css +12 -0
  520. package/build-style/post-comments-form/style.css +12 -0
  521. package/build-style/post-date/style-rtl.css +12 -0
  522. package/build-style/post-date/style.css +12 -0
  523. package/build-style/post-excerpt/editor-rtl.css +12 -0
  524. package/build-style/post-excerpt/editor.css +12 -0
  525. package/build-style/post-excerpt/style-rtl.css +12 -0
  526. package/build-style/post-excerpt/style.css +12 -0
  527. package/build-style/post-featured-image/editor-rtl.css +12 -0
  528. package/build-style/post-featured-image/editor.css +12 -0
  529. package/build-style/post-featured-image/style-rtl.css +12 -0
  530. package/build-style/post-featured-image/style.css +12 -0
  531. package/build-style/post-navigation-link/style-rtl.css +12 -0
  532. package/build-style/post-navigation-link/style.css +12 -0
  533. package/build-style/post-template/editor-rtl.css +12 -0
  534. package/build-style/post-template/editor.css +12 -0
  535. package/build-style/post-template/style-rtl.css +12 -0
  536. package/build-style/post-template/style.css +12 -0
  537. package/build-style/post-terms/style-rtl.css +12 -0
  538. package/build-style/post-terms/style.css +12 -0
  539. package/build-style/post-title/style-rtl.css +12 -0
  540. package/build-style/post-title/style.css +12 -0
  541. package/build-style/preformatted/style-rtl.css +12 -0
  542. package/build-style/preformatted/style.css +12 -0
  543. package/build-style/pullquote/editor-rtl.css +12 -0
  544. package/build-style/pullquote/editor.css +12 -0
  545. package/build-style/pullquote/style-rtl.css +12 -0
  546. package/build-style/pullquote/style.css +12 -0
  547. package/build-style/pullquote/theme-rtl.css +12 -0
  548. package/build-style/pullquote/theme.css +12 -0
  549. package/build-style/query/editor-rtl.css +12 -0
  550. package/build-style/query/editor.css +12 -0
  551. package/build-style/query-pagination/editor-rtl.css +12 -0
  552. package/build-style/query-pagination/editor.css +12 -0
  553. package/build-style/query-pagination/style-rtl.css +12 -0
  554. package/build-style/query-pagination/style.css +12 -0
  555. package/build-style/query-pagination-numbers/editor-rtl.css +12 -0
  556. package/build-style/query-pagination-numbers/editor.css +12 -0
  557. package/build-style/query-title/style-rtl.css +12 -0
  558. package/build-style/query-title/style.css +12 -0
  559. package/build-style/quote/style-rtl.css +12 -0
  560. package/build-style/quote/style.css +12 -0
  561. package/build-style/quote/theme-rtl.css +12 -0
  562. package/build-style/quote/theme.css +12 -0
  563. package/build-style/read-more/style-rtl.css +12 -0
  564. package/build-style/read-more/style.css +12 -0
  565. package/build-style/reset-rtl.css +12 -0
  566. package/build-style/reset.css +12 -0
  567. package/build-style/rss/editor-rtl.css +12 -0
  568. package/build-style/rss/editor.css +12 -0
  569. package/build-style/rss/style-rtl.css +12 -0
  570. package/build-style/rss/style.css +12 -0
  571. package/build-style/search/editor-rtl.css +12 -0
  572. package/build-style/search/editor.css +12 -0
  573. package/build-style/search/style-rtl.css +12 -0
  574. package/build-style/search/style.css +12 -0
  575. package/build-style/search/theme-rtl.css +12 -0
  576. package/build-style/search/theme.css +12 -0
  577. package/build-style/separator/editor-rtl.css +12 -0
  578. package/build-style/separator/editor.css +12 -0
  579. package/build-style/separator/style-rtl.css +12 -0
  580. package/build-style/separator/style.css +12 -0
  581. package/build-style/separator/theme-rtl.css +12 -0
  582. package/build-style/separator/theme.css +12 -0
  583. package/build-style/shortcode/editor-rtl.css +13 -1
  584. package/build-style/shortcode/editor.css +13 -1
  585. package/build-style/site-logo/editor-rtl.css +12 -0
  586. package/build-style/site-logo/editor.css +12 -0
  587. package/build-style/site-logo/style-rtl.css +12 -0
  588. package/build-style/site-logo/style.css +12 -0
  589. package/build-style/site-tagline/editor-rtl.css +12 -0
  590. package/build-style/site-tagline/editor.css +12 -0
  591. package/build-style/site-title/editor-rtl.css +12 -0
  592. package/build-style/site-title/editor.css +12 -0
  593. package/build-style/site-title/style-rtl.css +12 -0
  594. package/build-style/site-title/style.css +12 -0
  595. package/build-style/social-link/editor-rtl.css +12 -0
  596. package/build-style/social-link/editor.css +12 -0
  597. package/build-style/social-links/editor-rtl.css +12 -0
  598. package/build-style/social-links/editor.css +12 -0
  599. package/build-style/social-links/style-rtl.css +12 -0
  600. package/build-style/social-links/style.css +12 -0
  601. package/build-style/spacer/editor-rtl.css +12 -0
  602. package/build-style/spacer/editor.css +12 -0
  603. package/build-style/spacer/style-rtl.css +12 -0
  604. package/build-style/spacer/style.css +12 -0
  605. package/build-style/style-rtl.css +23 -5
  606. package/build-style/style.css +23 -5
  607. package/build-style/table/editor-rtl.css +12 -8
  608. package/build-style/table/editor.css +12 -8
  609. package/build-style/table/style-rtl.css +12 -0
  610. package/build-style/table/style.css +12 -0
  611. package/build-style/table/theme-rtl.css +12 -0
  612. package/build-style/table/theme.css +12 -0
  613. package/build-style/tag-cloud/style-rtl.css +12 -0
  614. package/build-style/tag-cloud/style.css +12 -0
  615. package/build-style/template-part/editor-rtl.css +27 -1
  616. package/build-style/template-part/editor.css +27 -1
  617. package/build-style/template-part/theme-rtl.css +12 -0
  618. package/build-style/template-part/theme.css +12 -0
  619. package/build-style/text-columns/editor-rtl.css +12 -0
  620. package/build-style/text-columns/editor.css +12 -0
  621. package/build-style/text-columns/style-rtl.css +12 -0
  622. package/build-style/text-columns/style.css +12 -0
  623. package/build-style/theme-rtl.css +12 -0
  624. package/build-style/theme.css +12 -0
  625. package/build-style/verse/style-rtl.css +12 -0
  626. package/build-style/verse/style.css +12 -0
  627. package/build-style/video/editor-rtl.css +12 -0
  628. package/build-style/video/editor.css +12 -0
  629. package/build-style/video/style-rtl.css +14 -1
  630. package/build-style/video/style.css +14 -1
  631. package/build-style/video/theme-rtl.css +12 -0
  632. package/build-style/video/theme.css +12 -0
  633. package/package.json +32 -30
  634. package/src/audio/edit.native.js +1 -2
  635. package/src/audio/index.js +1 -0
  636. package/src/avatar/edit.js +1 -0
  637. package/src/avatar/user-control.js +1 -0
  638. package/src/block/block.json +1 -2
  639. package/src/block/edit.js +14 -3
  640. package/src/block/edit.native.js +24 -12
  641. package/src/block/editor.scss +17 -0
  642. package/src/block/index.php +1 -2
  643. package/src/block/test/edit.native.js +28 -32
  644. package/src/button/edit.native.js +1 -0
  645. package/src/buttons/test/edit.native.js +40 -51
  646. package/src/code/transforms.js +3 -1
  647. package/src/columns/edit.js +1 -0
  648. package/src/columns/edit.native.js +18 -26
  649. package/src/comment-author-avatar/edit.js +1 -0
  650. package/src/cover/edit/inspector-controls.js +2 -0
  651. package/src/cover/edit.native.js +32 -19
  652. package/src/cover/test/edit.native.js +73 -126
  653. package/src/embed/embed-controls.native.js +1 -0
  654. package/src/embed/embed-preview.native.js +1 -2
  655. package/src/embed/test/index.native.js +237 -231
  656. package/src/file/inspector.js +1 -0
  657. package/src/file/test/__snapshots__/edit.native.js.snap +2 -6
  658. package/src/gallery/edit.js +15 -5
  659. package/src/gallery/gallery.native.js +1 -2
  660. package/src/gallery/shared.js +7 -11
  661. package/src/gallery/transforms.js +1 -6
  662. package/src/gallery/use-get-media.js +1 -1
  663. package/src/gallery/use-get-media.native.js +2 -1
  664. package/src/gallery/v1/edit.js +8 -7
  665. package/src/gallery/v1/gallery.native.js +1 -2
  666. package/src/gallery/v1/shared.js +7 -2
  667. package/src/group/block.json +3 -1
  668. package/src/group/edit.js +2 -6
  669. package/src/group/placeholder.js +6 -25
  670. package/src/group/test/__snapshots__/edit.native.js.snap +1 -1
  671. package/src/heading/block.json +1 -2
  672. package/src/heading/deprecated.js +209 -136
  673. package/src/heading/index.php +52 -0
  674. package/src/heading/test/__snapshots__/index.native.js.snap +7 -0
  675. package/src/heading/test/index.native.js +44 -0
  676. package/src/home-link/index.php +1 -1
  677. package/src/html/block.json +1 -1
  678. package/src/image/edit.js +7 -2
  679. package/src/image/edit.native.js +2 -1
  680. package/src/image/editor.scss +0 -11
  681. package/src/image/image.js +13 -8
  682. package/src/image/test/edit.native.js +14 -10
  683. package/src/index.js +2 -0
  684. package/src/latest-comments/edit.js +1 -0
  685. package/src/latest-posts/edit.js +2 -0
  686. package/src/list/test/edit.native.js +53 -45
  687. package/src/list/transforms.js +0 -11
  688. package/src/list/utils.js +6 -2
  689. package/src/list-item/index.js +2 -0
  690. package/src/list-item/transforms.js +17 -0
  691. package/src/list-item/utils.js +10 -1
  692. package/src/media-text/edit.js +5 -3
  693. package/src/missing/test/edit-integration.native.js +10 -12
  694. package/src/navigation/edit/are-blocks-dirty.js +51 -0
  695. package/src/navigation/edit/index.js +230 -298
  696. package/src/navigation/edit/menu-inspector-controls.js +78 -0
  697. package/src/navigation/edit/navigation-menu-selector.js +5 -16
  698. package/src/navigation/edit/test/are-blocks-dirty.js +121 -0
  699. package/src/navigation/edit/unsaved-inner-blocks.js +12 -7
  700. package/src/navigation/index.php +57 -10
  701. package/src/navigation/view-modal.js +11 -1
  702. package/src/navigation-link/edit.js +58 -329
  703. package/src/navigation-link/index.php +32 -0
  704. package/src/navigation-link/link-ui.js +213 -0
  705. package/src/navigation-link/test/edit.js +23 -82
  706. package/src/navigation-link/transforms.js +14 -0
  707. package/src/navigation-link/update-attributes.js +99 -0
  708. package/src/navigation-submenu/edit.js +57 -177
  709. package/src/navigation-submenu/index.php +40 -0
  710. package/src/page-list/block.json +6 -1
  711. package/src/page-list/constants.js +8 -0
  712. package/src/page-list/convert-to-links-modal.js +19 -76
  713. package/src/page-list/convert-to-navigation-links.js +60 -0
  714. package/src/page-list/edit.js +179 -118
  715. package/src/page-list/index.php +9 -0
  716. package/src/page-list/test/convert-to-links-modal.js +28 -34
  717. package/src/page-list-item/block.json +51 -0
  718. package/src/page-list-item/edit.js +94 -0
  719. package/src/page-list-item/index.js +24 -0
  720. package/src/page-list-item/init.js +6 -0
  721. package/src/paragraph/index.js +0 -6
  722. package/src/post-author/edit.js +3 -2
  723. package/src/post-content/index.php +1 -2
  724. package/src/post-featured-image/index.php +7 -2
  725. package/src/post-featured-image/overlay.js +1 -0
  726. package/src/post-template/block.json +8 -0
  727. package/src/preformatted/transforms.js +4 -1
  728. package/src/query/block.json +0 -8
  729. package/src/query/deprecated.js +257 -86
  730. package/src/query/edit/inspector-controls/index.js +1 -0
  731. package/src/query/edit/query-placeholder.js +4 -16
  732. package/src/rss/edit.js +3 -0
  733. package/src/search/edit.native.js +31 -27
  734. package/src/search/index.js +5 -1
  735. package/src/shortcode/test/edit.native.js +15 -18
  736. package/src/site-logo/edit.js +13 -5
  737. package/src/site-logo/index.js +1 -0
  738. package/src/site-title/index.js +1 -0
  739. package/src/social-link/social-list.js +2 -7
  740. package/src/social-link/test/index.native.js +10 -16
  741. package/src/social-links/test/edit.native.js +4 -3
  742. package/src/spacer/test/index.native.js +39 -36
  743. package/src/table/block.json +15 -0
  744. package/src/table/edit.js +2 -1
  745. package/src/table/editor.scss +0 -4
  746. package/src/table/index.js +1 -0
  747. package/src/table/save.js +5 -1
  748. package/src/table/state.js +22 -7
  749. package/src/table/transforms.js +2 -1
  750. package/src/table-of-contents/edit.js +2 -2
  751. package/src/tag-cloud/edit.js +3 -2
  752. package/src/template-part/edit/selection-modal.js +4 -3
  753. package/src/template-part/edit/utils/hooks.js +7 -3
  754. package/src/template-part/editor.scss +20 -2
  755. package/src/template-part/index.php +1 -2
  756. package/src/text-columns/edit.js +1 -0
  757. package/src/utils/transformation-categories.native.js +1 -0
  758. package/src/video/edit.js +1 -1
  759. package/src/video/edit.native.js +1 -2
  760. package/test/babel-plugin.js +35 -35
  761. package/tsconfig.tsbuildinfo +1 -1
@@ -2,18 +2,15 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import escapeHtml from 'escape-html';
6
5
  import { unescape } from 'lodash';
7
6
 
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
11
- import { createBlock, switchToBlockType } from '@wordpress/blocks';
10
+ import { createBlock } from '@wordpress/blocks';
12
11
  import { useSelect, useDispatch } from '@wordpress/data';
13
12
  import {
14
- Button,
15
13
  PanelBody,
16
- Popover,
17
14
  TextControl,
18
15
  TextareaControl,
19
16
  ToolbarButton,
@@ -22,38 +19,35 @@ import {
22
19
  KeyboardShortcuts,
23
20
  } from '@wordpress/components';
24
21
  import { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';
25
- import { __, sprintf } from '@wordpress/i18n';
22
+ import { __ } from '@wordpress/i18n';
26
23
  import {
27
24
  BlockControls,
28
- BlockIcon,
29
25
  InspectorControls,
30
26
  RichText,
31
- __experimentalLinkControl as LinkControl,
32
27
  useBlockProps,
33
28
  store as blockEditorStore,
34
29
  getColorClassName,
30
+ useInnerBlocksProps,
35
31
  } from '@wordpress/block-editor';
36
- import { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';
32
+ import { isURL, prependHTTP } from '@wordpress/url';
33
+ import { Fragment, useState, useEffect, useRef } from '@wordpress/element';
37
34
  import {
38
- Fragment,
39
- useState,
40
- useEffect,
41
- useRef,
42
- createInterpolateElement,
43
- } from '@wordpress/element';
44
- import { placeCaretAtHorizontalEdge } from '@wordpress/dom';
35
+ placeCaretAtHorizontalEdge,
36
+ __unstableStripHTML as stripHTML,
37
+ } from '@wordpress/dom';
45
38
  import { link as linkIcon, addSubmenu } from '@wordpress/icons';
46
39
  import {
47
40
  store as coreStore,
48
41
  useResourcePermissions,
49
42
  } from '@wordpress/core-data';
50
- import { decodeEntities } from '@wordpress/html-entities';
51
43
  import { useMergeRefs } from '@wordpress/compose';
52
44
 
53
45
  /**
54
46
  * Internal dependencies
55
47
  */
56
48
  import { name } from './block.json';
49
+ import { LinkUI } from './link-ui';
50
+ import { updateAttributes } from './update-attributes';
57
51
 
58
52
  /**
59
53
  * A React hook to determine if it's dragging within the target element.
@@ -106,36 +100,6 @@ const useIsDraggingWithin = ( elementRef ) => {
106
100
  return isDraggingWithin;
107
101
  };
108
102
 
109
- /**
110
- * Given the Link block's type attribute, return the query params to give to
111
- * /wp/v2/search.
112
- *
113
- * @param {string} type Link block's type attribute.
114
- * @param {string} kind Link block's entity of kind (post-type|taxonomy)
115
- * @return {{ type?: string, subtype?: string }} Search query params.
116
- */
117
- function getSuggestionsQuery( type, kind ) {
118
- switch ( type ) {
119
- case 'post':
120
- case 'page':
121
- return { type: 'post', subtype: type };
122
- case 'category':
123
- return { type: 'term', subtype: 'category' };
124
- case 'tag':
125
- return { type: 'term', subtype: 'post_tag' };
126
- case 'post_format':
127
- return { type: 'post-format' };
128
- default:
129
- if ( kind === 'taxonomy' ) {
130
- return { type: 'term', subtype: type };
131
- }
132
- if ( kind === 'post-type' ) {
133
- return { type: 'post', subtype: type };
134
- }
135
- return {};
136
- }
137
- }
138
-
139
103
  /**
140
104
  * Determine the colors for a menu.
141
105
  *
@@ -191,102 +155,6 @@ function getColors( context, isSubMenu ) {
191
155
  return colors;
192
156
  }
193
157
 
194
- /**
195
- * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind
196
- */
197
-
198
- /**
199
- * Navigation Link Block Attributes
200
- *
201
- * @typedef {Object} WPNavigationLinkBlockAttributes
202
- *
203
- * @property {string} [label] Link text.
204
- * @property {WPNavigationLinkKind} [kind] Kind is used to differentiate between term and post ids to check post draft status.
205
- * @property {string} [type] The type such as post, page, tag, category and other custom types.
206
- * @property {string} [rel] The relationship of the linked URL.
207
- * @property {number} [id] A post or term id.
208
- * @property {boolean} [opensInNewTab] Sets link target to _blank when true.
209
- * @property {string} [url] Link href.
210
- * @property {string} [title] Link title attribute.
211
- */
212
-
213
- /**
214
- * Link Control onChange handler that updates block attributes when a setting is changed.
215
- *
216
- * @param {Object} updatedValue New block attributes to update.
217
- * @param {Function} setAttributes Block attribute update function.
218
- * @param {WPNavigationLinkBlockAttributes} blockAttributes Current block attributes.
219
- *
220
- */
221
- export const updateNavigationLinkBlockAttributes = (
222
- updatedValue = {},
223
- setAttributes,
224
- blockAttributes = {}
225
- ) => {
226
- const {
227
- label: originalLabel = '',
228
- kind: originalKind = '',
229
- type: originalType = '',
230
- } = blockAttributes;
231
-
232
- const {
233
- title: newLabel = '', // the title of any provided Post.
234
- url: newUrl = '',
235
-
236
- opensInNewTab,
237
- id,
238
- kind: newKind = originalKind,
239
- type: newType = originalType,
240
- } = updatedValue;
241
-
242
- const newLabelWithoutHttp = newLabel.replace( /http(s?):\/\//gi, '' );
243
- const newUrlWithoutHttp = newUrl.replace( /http(s?):\/\//gi, '' );
244
-
245
- const useNewLabel =
246
- newLabel &&
247
- newLabel !== originalLabel &&
248
- // LinkControl without the title field relies
249
- // on the check below. Specifically, it assumes that
250
- // the URL is the same as a title.
251
- // This logic a) looks suspicious and b) should really
252
- // live in the LinkControl and not here. It's a great
253
- // candidate for future refactoring.
254
- newLabelWithoutHttp !== newUrlWithoutHttp;
255
-
256
- // Unfortunately this causes the escaping model to be inverted.
257
- // The escaped content is stored in the block attributes (and ultimately in the database),
258
- // and then the raw data is "recovered" when outputting into the DOM.
259
- // It would be preferable to store the **raw** data in the block attributes and escape it in JS.
260
- // Why? Because there isn't one way to escape data. Depending on the context, you need to do
261
- // different transforms. It doesn't make sense to me to choose one of them for the purposes of storage.
262
- // See also:
263
- // - https://github.com/WordPress/gutenberg/pull/41063
264
- // - https://github.com/WordPress/gutenberg/pull/18617.
265
- const label = useNewLabel
266
- ? escapeHtml( newLabel )
267
- : originalLabel || escapeHtml( newUrlWithoutHttp );
268
-
269
- // In https://github.com/WordPress/gutenberg/pull/24670 we decided to use "tag" in favor of "post_tag"
270
- const type = newType === 'post_tag' ? 'tag' : newType.replace( '-', '_' );
271
-
272
- const isBuiltInType =
273
- [ 'post', 'page', 'tag', 'category' ].indexOf( type ) > -1;
274
-
275
- const isCustomLink =
276
- ( ! newKind && ! isBuiltInType ) || newKind === 'custom';
277
- const kind = isCustomLink ? 'custom' : newKind;
278
-
279
- setAttributes( {
280
- // Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string.
281
- ...( newUrl && { url: encodeURI( safeDecodeURI( newUrl ) ) } ),
282
- ...( label && { label } ),
283
- ...( undefined !== opensInNewTab && { opensInNewTab } ),
284
- ...( id && Number.isInteger( id ) && { id } ),
285
- ...( kind && { kind } ),
286
- ...( type && type !== 'URL' && { type } ),
287
- } );
288
- };
289
-
290
158
  const useIsInvalidLink = ( kind, type, id ) => {
291
159
  const isPostType =
292
160
  kind === 'post-type' || type === 'post' || type === 'page';
@@ -345,90 +213,6 @@ function getMissingText( type ) {
345
213
  return missingText;
346
214
  }
347
215
 
348
- /**
349
- * Removes HTML from a given string.
350
- * Note the does not provide XSS protection or otherwise attempt
351
- * to filter strings with malicious intent.
352
- *
353
- * See also: https://github.com/WordPress/gutenberg/pull/35539
354
- *
355
- * @param {string} html the string from which HTML should be removed.
356
- * @return {string} the "cleaned" string.
357
- */
358
- function navStripHTML( html ) {
359
- const doc = document.implementation.createHTMLDocument( '' );
360
- doc.body.innerHTML = html;
361
- return doc.body.textContent || '';
362
- }
363
-
364
- /**
365
- * Add transforms to Link Control
366
- */
367
-
368
- function LinkControlTransforms( { clientId, replace } ) {
369
- const { getBlock, blockTransforms } = useSelect(
370
- ( select ) => {
371
- const {
372
- getBlock: _getBlock,
373
- getBlockRootClientId,
374
- getBlockTransformItems,
375
- } = select( blockEditorStore );
376
-
377
- return {
378
- getBlock: _getBlock,
379
- blockTransforms: getBlockTransformItems(
380
- _getBlock( clientId ),
381
- getBlockRootClientId( clientId )
382
- ),
383
- };
384
- },
385
- [ clientId ]
386
- );
387
-
388
- const featuredBlocks = [
389
- 'core/site-logo',
390
- 'core/social-links',
391
- 'core/search',
392
- ];
393
- const transforms = blockTransforms.filter( ( item ) => {
394
- return featuredBlocks.includes( item.name );
395
- } );
396
-
397
- if ( ! transforms?.length ) {
398
- return null;
399
- }
400
-
401
- return (
402
- <div className="link-control-transform">
403
- <h3 className="link-control-transform__subheading">
404
- { __( 'Transform' ) }
405
- </h3>
406
- <div className="link-control-transform__items">
407
- { transforms.map( ( item, index ) => {
408
- return (
409
- <Button
410
- key={ `transform-${ index }` }
411
- onClick={ () =>
412
- replace(
413
- clientId,
414
- switchToBlockType(
415
- getBlock( clientId ),
416
- item.name
417
- )
418
- )
419
- }
420
- className="link-control-transform__item"
421
- >
422
- <BlockIcon icon={ item.icon } />
423
- { item.title }
424
- </Button>
425
- );
426
- } ) }
427
- </div>
428
- </div>
429
- );
430
- }
431
-
432
216
  export default function NavigationLinkEdit( {
433
217
  attributes,
434
218
  isSelected,
@@ -439,27 +223,11 @@ export default function NavigationLinkEdit( {
439
223
  context,
440
224
  clientId,
441
225
  } ) {
442
- const {
443
- id,
444
- label,
445
- type,
446
- opensInNewTab,
447
- url,
448
- description,
449
- rel,
450
- title,
451
- kind,
452
- } = attributes;
226
+ const { id, label, type, url, description, rel, title, kind } = attributes;
453
227
 
454
228
  const [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );
455
229
  const { maxNestingLevel } = context;
456
230
 
457
- const link = {
458
- url,
459
- opensInNewTab,
460
- title: label && navStripHTML( label ), // don't allow HTML to display inside the <LinkControl>
461
- };
462
- const { saveEntityRecord } = useDispatch( coreStore );
463
231
  const { replaceBlock, __unstableMarkNextChangeAsNotPersistent } =
464
232
  useDispatch( blockEditorStore );
465
233
  const [ isLinkOpen, setIsLinkOpen ] = useState( false );
@@ -527,7 +295,9 @@ export default function NavigationLinkEdit( {
527
295
  const newSubmenu = createBlock(
528
296
  'core/navigation-submenu',
529
297
  attributes,
530
- innerBlocks
298
+ innerBlocks.length > 0
299
+ ? innerBlocks
300
+ : [ createBlock( 'core/navigation-link' ) ]
531
301
  );
532
302
  replaceBlock( clientId, newSubmenu );
533
303
  }
@@ -540,11 +310,14 @@ export default function NavigationLinkEdit( {
540
310
  if ( ! url ) {
541
311
  setIsLinkOpen( true );
542
312
  }
313
+ }, [ url ] );
314
+
315
+ useEffect( () => {
543
316
  // If block has inner blocks, transform to Submenu.
544
317
  if ( hasChildren ) {
545
318
  transformToSubmenu();
546
319
  }
547
- }, [] );
320
+ }, [ hasChildren ] );
548
321
 
549
322
  /**
550
323
  * The hook shouldn't be necessary but due to a focus loss happening
@@ -612,33 +385,6 @@ export default function NavigationLinkEdit( {
612
385
  userCanCreate = postsPermissions.canCreate;
613
386
  }
614
387
 
615
- async function handleCreate( pageTitle ) {
616
- const postType = type || 'page';
617
-
618
- const page = await saveEntityRecord( 'postType', postType, {
619
- title: pageTitle,
620
- status: 'draft',
621
- } );
622
-
623
- return {
624
- id: page.id,
625
- type: postType,
626
- // Make `title` property consistent with that in `fetchLinkSuggestions` where the `rendered` title (containing HTML entities)
627
- // is also being decoded. By being consistent in both locations we avoid having to branch in the rendering output code.
628
- // Ideally in the future we will update both APIs to utilise the "raw" form of the title which is better suited to edit contexts.
629
- // e.g.
630
- // - title.raw = "Yes & No"
631
- // - title.rendered = "Yes &#038; No"
632
- // - decodeEntities( title.rendered ) = "Yes & No"
633
- // See:
634
- // - https://github.com/WordPress/gutenberg/pull/41063
635
- // - https://github.com/WordPress/gutenberg/blob/a1e1fdc0e6278457e9f4fc0b31ac6d2095f5450b/packages/core-data/src/fetch/__experimental-fetch-link-suggestions.js#L212-L218
636
- title: decodeEntities( page.title.rendered ),
637
- url: page.link,
638
- kind: 'post-type',
639
- };
640
- }
641
-
642
388
  const {
643
389
  textColor,
644
390
  customTextColor,
@@ -675,6 +421,21 @@ export default function NavigationLinkEdit( {
675
421
  onKeyDown,
676
422
  } );
677
423
 
424
+ const ALLOWED_BLOCKS = [
425
+ 'core/navigation-link',
426
+ 'core/navigation-submenu',
427
+ 'core/page-list',
428
+ ];
429
+ const DEFAULT_BLOCK = {
430
+ name: 'core/navigation-link',
431
+ };
432
+ const innerBlocksProps = useInnerBlocksProps( blockProps, {
433
+ allowedBlocks: ALLOWED_BLOCKS,
434
+ __experimentalDefaultBlock: DEFAULT_BLOCK,
435
+ __experimentalDirectInsert: true,
436
+ renderAppender: false,
437
+ } );
438
+
678
439
  if ( ! url || isInvalid || isDraft ) {
679
440
  blockProps.onClick = () => setIsLinkOpen( true );
680
441
  }
@@ -714,8 +475,17 @@ export default function NavigationLinkEdit( {
714
475
  ) }
715
476
  </ToolbarGroup>
716
477
  </BlockControls>
478
+ { /* Warning, this duplicated in packages/block-library/src/navigation-submenu/edit.js */ }
717
479
  <InspectorControls>
718
480
  <PanelBody title={ __( 'Link settings' ) }>
481
+ <TextControl
482
+ value={ label ? stripHTML( label ) : '' }
483
+ onChange={ ( labelValue ) => {
484
+ setAttributes( { label: labelValue } );
485
+ } }
486
+ label={ __( 'Label' ) }
487
+ autoComplete="off"
488
+ />
719
489
  <TextControl
720
490
  value={ url || '' }
721
491
  onChange={ ( urlValue ) => {
@@ -838,7 +608,7 @@ export default function NavigationLinkEdit( {
838
608
  // Ideally they would be stored in a raw, unescaped form.
839
609
  // Unescape is used here to "recover" the escaped characters
840
610
  // so they display without encoding.
841
- // See `updateNavigationLinkBlockAttributes` for more details.
611
+ // See `updateAttributes` for more details.
842
612
  `${ unescape(
843
613
  label
844
614
  ) } ${ placeholderText }`.trim()
@@ -854,66 +624,25 @@ export default function NavigationLinkEdit( {
854
624
  </>
855
625
  ) }
856
626
  { isLinkOpen && (
857
- <Popover
858
- placement="bottom"
627
+ <LinkUI
628
+ className="wp-block-navigation-link__inline-link-input"
629
+ clientId={ clientId }
630
+ link={ attributes }
859
631
  onClose={ () => setIsLinkOpen( false ) }
860
632
  anchor={ popoverAnchor }
861
- shift
862
- >
863
- <LinkControl
864
- hasTextControl
865
- hasRichPreviews
866
- className="wp-block-navigation-link__inline-link-input"
867
- value={ link }
868
- showInitialSuggestions={ true }
869
- withCreateSuggestion={ userCanCreate }
870
- createSuggestion={ handleCreate }
871
- createSuggestionButtonText={ ( searchTerm ) => {
872
- let format;
873
- if ( type === 'post' ) {
874
- /* translators: %s: search term. */
875
- format = __(
876
- 'Create draft post: <mark>%s</mark>'
877
- );
878
- } else {
879
- /* translators: %s: search term. */
880
- format = __(
881
- 'Create draft page: <mark>%s</mark>'
882
- );
883
- }
884
- return createInterpolateElement(
885
- sprintf( format, searchTerm ),
886
- { mark: <mark /> }
887
- );
888
- } }
889
- noDirectEntry={ !! type }
890
- noURLSuggestion={ !! type }
891
- suggestionsQuery={ getSuggestionsQuery(
892
- type,
893
- kind
894
- ) }
895
- onChange={ ( updatedValue ) =>
896
- updateNavigationLinkBlockAttributes(
897
- updatedValue,
898
- setAttributes,
899
- attributes
900
- )
901
- }
902
- onRemove={ removeLink }
903
- renderControlBottom={
904
- ! url
905
- ? () => (
906
- <LinkControlTransforms
907
- clientId={ clientId }
908
- replace={ replaceBlock }
909
- />
910
- )
911
- : null
912
- }
913
- />
914
- </Popover>
633
+ hasCreateSuggestion={ userCanCreate }
634
+ onRemove={ removeLink }
635
+ onChange={ ( updatedValue ) => {
636
+ updateAttributes(
637
+ updatedValue,
638
+ setAttributes,
639
+ attributes
640
+ );
641
+ } }
642
+ />
915
643
  ) }
916
644
  </a>
645
+ <div { ...innerBlocksProps } />
917
646
  </div>
918
647
  </Fragment>
919
648
  );
@@ -344,3 +344,35 @@ function register_block_core_navigation_link() {
344
344
  );
345
345
  }
346
346
  add_action( 'init', 'register_block_core_navigation_link' );
347
+
348
+ /**
349
+ * Disables the display of block inspector tabs for the Navigation Link block.
350
+ *
351
+ * This is only a temporary measure until we have a TabPanel and mechanism that
352
+ * will allow the Navigation Link to programmatically select a tab when edited
353
+ * via a specific context.
354
+ *
355
+ * See:
356
+ * - https://github.com/WordPress/gutenberg/issues/45951
357
+ * - https://github.com/WordPress/gutenberg/pull/46321
358
+ * - https://github.com/WordPress/gutenberg/pull/46271
359
+ *
360
+ * @param array $settings Default editor settings.
361
+ * @return array Filtered editor settings.
362
+ */
363
+ function gutenberg_disable_tabs_for_navigation_link_block( $settings ) {
364
+ $current_tab_settings = _wp_array_get(
365
+ $settings,
366
+ array( '__experimentalBlockInspectorTabs' ),
367
+ array()
368
+ );
369
+
370
+ $settings['__experimentalBlockInspectorTabs'] = array_merge(
371
+ $current_tab_settings,
372
+ array( 'core/navigation-link' => false )
373
+ );
374
+
375
+ return $settings;
376
+ }
377
+
378
+ add_filter( 'block_editor_settings_all', 'gutenberg_disable_tabs_for_navigation_link_block' );