@wordpress/block-library 8.5.0 → 8.7.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 (427) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/buttons/edit.native.js +1 -1
  3. package/build/buttons/edit.native.js.map +1 -1
  4. package/build/buttons/index.js +1 -0
  5. package/build/buttons/index.js.map +1 -1
  6. package/build/buttons/transforms.js +1 -0
  7. package/build/buttons/transforms.js.map +1 -1
  8. package/build/columns/edit.js +14 -10
  9. package/build/columns/edit.js.map +1 -1
  10. package/build/columns/edit.native.js +1 -1
  11. package/build/columns/edit.native.js.map +1 -1
  12. package/build/columns/index.js +4 -0
  13. package/build/columns/index.js.map +1 -1
  14. package/build/comments/edit/placeholder.js +8 -5
  15. package/build/comments/edit/placeholder.js.map +1 -1
  16. package/build/cover/edit/inspector-controls.js +2 -2
  17. package/build/cover/edit/inspector-controls.js.map +1 -1
  18. package/build/cover/index.js +13 -4
  19. package/build/cover/index.js.map +1 -1
  20. package/build/cover/variations.js +29 -0
  21. package/build/cover/variations.js.map +1 -0
  22. package/build/embed/edit.js +13 -14
  23. package/build/embed/edit.js.map +1 -1
  24. package/build/embed/edit.native.js +18 -14
  25. package/build/embed/edit.native.js.map +1 -1
  26. package/build/embed/util.js +39 -12
  27. package/build/embed/util.js.map +1 -1
  28. package/build/gallery/edit.js +9 -5
  29. package/build/gallery/edit.js.map +1 -1
  30. package/build/gallery/use-image-sizes.js +1 -1
  31. package/build/gallery/use-image-sizes.js.map +1 -1
  32. package/build/group/deprecated.js +4 -2
  33. package/build/group/deprecated.js.map +1 -1
  34. package/build/group/edit.js +22 -5
  35. package/build/group/edit.js.map +1 -1
  36. package/build/group/placeholder.js +11 -1
  37. package/build/group/placeholder.js.map +1 -1
  38. package/build/group/variations.js +23 -3
  39. package/build/group/variations.js.map +1 -1
  40. package/build/image/edit.js +1 -1
  41. package/build/image/edit.js.map +1 -1
  42. package/build/image/edit.native.js +1 -1
  43. package/build/image/edit.native.js.map +1 -1
  44. package/build/image/image.js +8 -6
  45. package/build/image/image.js.map +1 -1
  46. package/build/image/index.js +7 -2
  47. package/build/image/index.js.map +1 -1
  48. package/build/latest-posts/edit.js +11 -10
  49. package/build/latest-posts/edit.js.map +1 -1
  50. package/build/latest-posts/edit.native.js +3 -3
  51. package/build/latest-posts/edit.native.js.map +1 -1
  52. package/build/media-text/constants.js +17 -1
  53. package/build/media-text/constants.js.map +1 -1
  54. package/build/media-text/deprecated.js +228 -18
  55. package/build/media-text/deprecated.js.map +1 -1
  56. package/build/media-text/edit.js +10 -22
  57. package/build/media-text/edit.js.map +1 -1
  58. package/build/media-text/edit.native.js +6 -5
  59. package/build/media-text/edit.native.js.map +1 -1
  60. package/build/media-text/index.js +1 -1
  61. package/build/media-text/transforms.js +32 -44
  62. package/build/media-text/transforms.js.map +1 -1
  63. package/build/navigation/edit/index.js +55 -96
  64. package/build/navigation/edit/index.js.map +1 -1
  65. package/build/navigation/edit/menu-inspector-controls.js +2 -5
  66. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  67. package/build/navigation/edit/navigation-menu-selector.js +26 -22
  68. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  69. package/build/navigation/edit/unsaved-inner-blocks.js +14 -1
  70. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  71. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  72. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  73. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  74. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  75. package/build/navigation/edit/use-navigation-notice.js +1 -1
  76. package/build/navigation/edit/use-navigation-notice.js.map +1 -1
  77. package/build/navigation/index.js +0 -1
  78. package/build/navigation/index.js.map +1 -1
  79. package/build/navigation-link/edit.js +0 -11
  80. package/build/navigation-link/edit.js.map +1 -1
  81. package/build/navigation-link/link-ui.js +0 -1
  82. package/build/navigation-link/link-ui.js.map +1 -1
  83. package/build/navigation-submenu/edit.js +1 -13
  84. package/build/navigation-submenu/edit.js.map +1 -1
  85. package/build/page-list/edit.js +59 -45
  86. package/build/page-list/edit.js.map +1 -1
  87. package/build/page-list-item/edit.js +3 -2
  88. package/build/page-list-item/edit.js.map +1 -1
  89. package/build/post-content/edit.js +6 -1
  90. package/build/post-content/edit.js.map +1 -1
  91. package/build/post-date/edit.js +2 -1
  92. package/build/post-date/edit.js.map +1 -1
  93. package/build/post-date/index.js +4 -1
  94. package/build/post-date/index.js.map +1 -1
  95. package/build/post-date/variations.js +28 -0
  96. package/build/post-date/variations.js.map +1 -0
  97. package/build/post-excerpt/edit.js +39 -10
  98. package/build/post-excerpt/edit.js.map +1 -1
  99. package/build/post-featured-image/dimension-controls.js +2 -8
  100. package/build/post-featured-image/dimension-controls.js.map +1 -1
  101. package/build/post-featured-image/edit.js +1 -1
  102. package/build/post-featured-image/edit.js.map +1 -1
  103. package/build/post-template/index.js +1 -1
  104. package/build/post-time-to-read/index.js +17 -1
  105. package/build/post-time-to-read/index.js.map +1 -1
  106. package/build/pullquote/deprecated.js +3 -3
  107. package/build/pullquote/deprecated.js.map +1 -1
  108. package/build/query/edit/query-placeholder.js +3 -2
  109. package/build/query/edit/query-placeholder.js.map +1 -1
  110. package/build/query/utils.js +26 -9
  111. package/build/query/utils.js.map +1 -1
  112. package/build/quote/index.js +1 -0
  113. package/build/quote/index.js.map +1 -1
  114. package/build/spacer/edit.js +16 -6
  115. package/build/spacer/edit.js.map +1 -1
  116. package/build/table/state.js +12 -4
  117. package/build/table/state.js.map +1 -1
  118. package/build/template-part/edit/import-controls.js +4 -24
  119. package/build/template-part/edit/import-controls.js.map +1 -1
  120. package/build/template-part/edit/utils/transformers.js +69 -19
  121. package/build/template-part/edit/utils/transformers.js.map +1 -1
  122. package/build/text-columns/edit.js +3 -7
  123. package/build/text-columns/edit.js.map +1 -1
  124. package/build/text-columns/save.js +11 -13
  125. package/build/text-columns/save.js.map +1 -1
  126. package/build-module/buttons/edit.native.js +1 -1
  127. package/build-module/buttons/edit.native.js.map +1 -1
  128. package/build-module/buttons/index.js +1 -0
  129. package/build-module/buttons/index.js.map +1 -1
  130. package/build-module/buttons/transforms.js +1 -0
  131. package/build-module/buttons/transforms.js.map +1 -1
  132. package/build-module/columns/edit.js +14 -9
  133. package/build-module/columns/edit.js.map +1 -1
  134. package/build-module/columns/edit.native.js +1 -1
  135. package/build-module/columns/edit.native.js.map +1 -1
  136. package/build-module/columns/index.js +4 -0
  137. package/build-module/columns/index.js.map +1 -1
  138. package/build-module/comments/edit/placeholder.js +9 -5
  139. package/build-module/comments/edit/placeholder.js.map +1 -1
  140. package/build-module/cover/edit/inspector-controls.js +2 -2
  141. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  142. package/build-module/cover/index.js +12 -4
  143. package/build-module/cover/index.js.map +1 -1
  144. package/build-module/cover/variations.js +19 -0
  145. package/build-module/cover/variations.js.map +1 -0
  146. package/build-module/embed/edit.js +14 -15
  147. package/build-module/embed/edit.js.map +1 -1
  148. package/build-module/embed/edit.native.js +19 -15
  149. package/build-module/embed/edit.native.js.map +1 -1
  150. package/build-module/embed/util.js +34 -10
  151. package/build-module/embed/util.js.map +1 -1
  152. package/build-module/gallery/edit.js +9 -5
  153. package/build-module/gallery/edit.js.map +1 -1
  154. package/build-module/gallery/use-image-sizes.js +1 -1
  155. package/build-module/gallery/use-image-sizes.js.map +1 -1
  156. package/build-module/group/deprecated.js +4 -2
  157. package/build-module/group/deprecated.js.map +1 -1
  158. package/build-module/group/edit.js +21 -5
  159. package/build-module/group/edit.js.map +1 -1
  160. package/build-module/group/placeholder.js +11 -1
  161. package/build-module/group/placeholder.js.map +1 -1
  162. package/build-module/group/variations.js +24 -1
  163. package/build-module/group/variations.js.map +1 -1
  164. package/build-module/image/edit.js +1 -1
  165. package/build-module/image/edit.js.map +1 -1
  166. package/build-module/image/edit.native.js +1 -1
  167. package/build-module/image/edit.native.js.map +1 -1
  168. package/build-module/image/image.js +8 -6
  169. package/build-module/image/image.js.map +1 -1
  170. package/build-module/image/index.js +7 -2
  171. package/build-module/image/index.js.map +1 -1
  172. package/build-module/latest-posts/edit.js +11 -9
  173. package/build-module/latest-posts/edit.js.map +1 -1
  174. package/build-module/latest-posts/edit.native.js +3 -3
  175. package/build-module/latest-posts/edit.native.js.map +1 -1
  176. package/build-module/media-text/constants.js +10 -0
  177. package/build-module/media-text/constants.js.map +1 -1
  178. package/build-module/media-text/deprecated.js +227 -18
  179. package/build-module/media-text/deprecated.js.map +1 -1
  180. package/build-module/media-text/edit.js +5 -17
  181. package/build-module/media-text/edit.js.map +1 -1
  182. package/build-module/media-text/edit.native.js +4 -3
  183. package/build-module/media-text/edit.native.js.map +1 -1
  184. package/build-module/media-text/index.js +1 -1
  185. package/build-module/media-text/transforms.js +32 -44
  186. package/build-module/media-text/transforms.js.map +1 -1
  187. package/build-module/navigation/edit/index.js +57 -98
  188. package/build-module/navigation/edit/index.js.map +1 -1
  189. package/build-module/navigation/edit/menu-inspector-controls.js +2 -5
  190. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  191. package/build-module/navigation/edit/navigation-menu-selector.js +25 -22
  192. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  193. package/build-module/navigation/edit/unsaved-inner-blocks.js +14 -1
  194. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  195. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  196. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  197. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  198. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  199. package/build-module/navigation/edit/use-navigation-notice.js +1 -1
  200. package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
  201. package/build-module/navigation/index.js +0 -1
  202. package/build-module/navigation/index.js.map +1 -1
  203. package/build-module/navigation-link/edit.js +0 -11
  204. package/build-module/navigation-link/edit.js.map +1 -1
  205. package/build-module/navigation-link/link-ui.js +0 -1
  206. package/build-module/navigation-link/link-ui.js.map +1 -1
  207. package/build-module/navigation-submenu/edit.js +1 -13
  208. package/build-module/navigation-submenu/edit.js.map +1 -1
  209. package/build-module/page-list/edit.js +61 -47
  210. package/build-module/page-list/edit.js.map +1 -1
  211. package/build-module/page-list-item/edit.js +3 -2
  212. package/build-module/page-list-item/edit.js.map +1 -1
  213. package/build-module/post-content/edit.js +6 -1
  214. package/build-module/post-content/edit.js.map +1 -1
  215. package/build-module/post-date/edit.js +2 -1
  216. package/build-module/post-date/edit.js.map +1 -1
  217. package/build-module/post-date/index.js +3 -1
  218. package/build-module/post-date/index.js.map +1 -1
  219. package/build-module/post-date/variations.js +18 -0
  220. package/build-module/post-date/variations.js.map +1 -0
  221. package/build-module/post-excerpt/edit.js +38 -11
  222. package/build-module/post-excerpt/edit.js.map +1 -1
  223. package/build-module/post-featured-image/dimension-controls.js +2 -8
  224. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  225. package/build-module/post-featured-image/edit.js +1 -1
  226. package/build-module/post-featured-image/edit.js.map +1 -1
  227. package/build-module/post-template/index.js +1 -1
  228. package/build-module/post-time-to-read/index.js +17 -1
  229. package/build-module/post-time-to-read/index.js.map +1 -1
  230. package/build-module/pullquote/deprecated.js +3 -2
  231. package/build-module/pullquote/deprecated.js.map +1 -1
  232. package/build-module/query/edit/query-placeholder.js +4 -3
  233. package/build-module/query/edit/query-placeholder.js.map +1 -1
  234. package/build-module/query/utils.js +21 -6
  235. package/build-module/query/utils.js.map +1 -1
  236. package/build-module/quote/index.js +1 -0
  237. package/build-module/quote/index.js.map +1 -1
  238. package/build-module/spacer/edit.js +16 -6
  239. package/build-module/spacer/edit.js.map +1 -1
  240. package/build-module/table/state.js +13 -5
  241. package/build-module/table/state.js.map +1 -1
  242. package/build-module/template-part/edit/import-controls.js +4 -23
  243. package/build-module/template-part/edit/import-controls.js.map +1 -1
  244. package/build-module/template-part/edit/utils/transformers.js +69 -20
  245. package/build-module/template-part/edit/utils/transformers.js.map +1 -1
  246. package/build-module/text-columns/edit.js +3 -6
  247. package/build-module/text-columns/edit.js.map +1 -1
  248. package/build-module/text-columns/save.js +11 -12
  249. package/build-module/text-columns/save.js.map +1 -1
  250. package/build-style/categories/editor-rtl.css +5 -0
  251. package/build-style/categories/editor.css +5 -0
  252. package/build-style/categories/style-rtl.css +4 -0
  253. package/build-style/categories/style.css +4 -0
  254. package/build-style/cover/style-rtl.css +11 -5
  255. package/build-style/cover/style.css +11 -5
  256. package/build-style/editor-rtl.css +11 -1
  257. package/build-style/editor.css +11 -1
  258. package/build-style/navigation/editor-rtl.css +1 -1
  259. package/build-style/navigation/editor.css +1 -1
  260. package/build-style/navigation/style-rtl.css +2 -0
  261. package/build-style/navigation/style.css +2 -0
  262. package/build-style/page-list/editor-rtl.css +4 -0
  263. package/build-style/page-list/editor.css +4 -0
  264. package/build-style/post-featured-image/editor-rtl.css +1 -0
  265. package/build-style/post-featured-image/editor.css +1 -0
  266. package/build-style/post-featured-image/style-rtl.css +1 -0
  267. package/build-style/post-featured-image/style.css +1 -0
  268. package/build-style/post-template/style-rtl.css +1 -1
  269. package/build-style/post-template/style.css +1 -1
  270. package/build-style/post-time-to-read/style-rtl.css +91 -0
  271. package/build-style/post-time-to-read/style.css +91 -0
  272. package/build-style/search/style-rtl.css +8 -7
  273. package/build-style/search/style.css +8 -7
  274. package/build-style/style-rtl.css +31 -13
  275. package/build-style/style.css +31 -13
  276. package/package.json +31 -31
  277. package/src/audio/test/__snapshots__/edit.native.js.snap +44 -4
  278. package/src/audio/test/__snapshots__/transforms.native.js.snap +25 -0
  279. package/src/audio/test/transforms.native.js +42 -0
  280. package/src/block/test/__snapshots__/transforms.native.js.snap +15 -0
  281. package/src/block/test/transforms.native.js +40 -0
  282. package/src/buttons/block.json +1 -0
  283. package/src/buttons/edit.native.js +1 -1
  284. package/src/buttons/test/__snapshots__/transforms.native.js.snap +31 -0
  285. package/src/buttons/test/transforms.native.js +48 -0
  286. package/src/categories/editor.scss +5 -0
  287. package/src/categories/style.scss +4 -0
  288. package/src/columns/block.json +4 -0
  289. package/src/columns/edit.js +30 -18
  290. package/src/columns/edit.native.js +1 -1
  291. package/src/columns/test/__snapshots__/transforms.native.js.snap +61 -0
  292. package/src/columns/test/transforms.native.js +91 -0
  293. package/src/comment-template/index.php +1 -2
  294. package/src/comments/edit/placeholder.js +16 -4
  295. package/src/comments/index.php +1 -0
  296. package/src/cover/block.json +9 -3
  297. package/src/cover/edit/inspector-controls.js +4 -5
  298. package/src/cover/index.js +2 -0
  299. package/src/cover/style.scss +16 -7
  300. package/src/cover/test/__snapshots__/transforms.native.js.snap +73 -0
  301. package/src/cover/test/edit.js +324 -0
  302. package/src/cover/test/transforms.native.js +112 -0
  303. package/src/cover/variations.js +20 -0
  304. package/src/embed/edit.js +16 -12
  305. package/src/embed/edit.native.js +28 -18
  306. package/src/embed/test/__snapshots__/transforms.native.js.snap +23 -0
  307. package/src/embed/test/index.js +12 -0
  308. package/src/embed/test/transforms.native.js +44 -0
  309. package/src/embed/util.js +29 -8
  310. package/src/file/test/__snapshots__/edit.native.js.snap +18 -2
  311. package/src/file/test/__snapshots__/transforms.native.js.snap +19 -0
  312. package/src/file/test/transforms.native.js +42 -0
  313. package/src/freeform/test/__snapshots__/transforms.native.js.snap +19 -0
  314. package/src/freeform/test/transforms.native.js +39 -0
  315. package/src/gallery/edit.js +8 -2
  316. package/src/gallery/test/__snapshots__/transforms.native.js.snap +53 -0
  317. package/src/gallery/test/transforms.native.js +52 -0
  318. package/src/gallery/use-image-sizes.js +1 -1
  319. package/src/group/deprecated.js +4 -2
  320. package/src/group/edit.js +27 -9
  321. package/src/group/placeholder.js +13 -1
  322. package/src/group/test/__snapshots__/transforms.native.js.snap +35 -0
  323. package/src/group/test/transforms.native.js +75 -0
  324. package/src/group/variations.js +14 -1
  325. package/src/heading/test/__snapshots__/transforms.native.js.snap +47 -0
  326. package/src/heading/test/transforms.native.js +46 -0
  327. package/src/home-link/index.php +2 -2
  328. package/src/image/block.json +7 -2
  329. package/src/image/edit.js +1 -1
  330. package/src/image/edit.native.js +1 -1
  331. package/src/image/image.js +15 -7
  332. package/src/image/index.php +7 -2
  333. package/src/image/test/__snapshots__/transforms.native.js.snap +49 -0
  334. package/src/image/test/transforms.native.js +48 -0
  335. package/src/latest-comments/style.scss +1 -1
  336. package/src/latest-posts/edit.js +14 -16
  337. package/src/latest-posts/edit.native.js +3 -3
  338. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +15 -0
  339. package/src/latest-posts/test/transforms.native.js +61 -0
  340. package/src/list/test/__snapshots__/transforms.native.js.snap +85 -0
  341. package/src/list/test/transforms.native.js +56 -0
  342. package/src/media-text/block.json +1 -1
  343. package/src/media-text/constants.js +16 -0
  344. package/src/media-text/deprecated.js +235 -3
  345. package/src/media-text/edit.js +15 -24
  346. package/src/media-text/edit.native.js +3 -9
  347. package/src/media-text/test/__snapshots__/transforms.native.js.snap +73 -0
  348. package/src/media-text/test/transforms.native.js +112 -0
  349. package/src/media-text/transforms.js +24 -51
  350. package/src/missing/test/__snapshots__/edit.native.js.snap +20 -2
  351. package/src/more/test/__snapshots__/transforms.native.js.snap +19 -0
  352. package/src/more/test/transforms.native.js +42 -0
  353. package/src/navigation/block.json +0 -1
  354. package/src/navigation/edit/index.js +99 -115
  355. package/src/navigation/edit/menu-inspector-controls.js +2 -7
  356. package/src/navigation/edit/navigation-menu-selector.js +41 -25
  357. package/src/navigation/edit/unsaved-inner-blocks.js +46 -33
  358. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +82 -83
  359. package/src/navigation/edit/use-create-navigation-menu.js +1 -1
  360. package/src/navigation/edit/use-navigation-notice.js +1 -1
  361. package/src/navigation/editor.scss +23 -20
  362. package/src/navigation/index.php +18 -39
  363. package/src/navigation/style.scss +6 -4
  364. package/src/navigation-link/edit.js +0 -9
  365. package/src/navigation-link/index.php +7 -9
  366. package/src/navigation-link/link-ui.js +0 -1
  367. package/src/navigation-submenu/edit.js +0 -10
  368. package/src/navigation-submenu/index.php +45 -74
  369. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +19 -0
  370. package/src/nextpage/test/transforms.native.js +42 -0
  371. package/src/page-list/edit.js +78 -44
  372. package/src/page-list/editor.scss +6 -0
  373. package/src/page-list-item/edit.js +2 -3
  374. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +59 -0
  375. package/src/paragraph/test/transforms.native.js +50 -0
  376. package/src/post-author/index.php +1 -1
  377. package/src/post-content/edit.js +5 -1
  378. package/src/post-date/edit.js +4 -1
  379. package/src/post-date/index.js +2 -0
  380. package/src/post-date/variations.js +20 -0
  381. package/src/post-excerpt/edit.js +48 -16
  382. package/src/post-excerpt/index.php +1 -2
  383. package/src/post-featured-image/dimension-controls.js +2 -10
  384. package/src/post-featured-image/edit.js +1 -1
  385. package/src/post-featured-image/editor.scss +1 -0
  386. package/src/post-featured-image/style.scss +1 -0
  387. package/src/post-template/block.json +1 -1
  388. package/src/post-template/style.scss +1 -1
  389. package/src/post-time-to-read/block.json +17 -1
  390. package/src/post-time-to-read/style.scss +4 -0
  391. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +31 -0
  392. package/src/preformatted/test/transforms.native.js +42 -0
  393. package/src/pullquote/deprecated.js +2 -6
  394. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +47 -0
  395. package/src/pullquote/test/transforms.native.js +46 -0
  396. package/src/query/edit/query-placeholder.js +10 -5
  397. package/src/query/test/utils.js +33 -1
  398. package/src/query/utils.js +19 -6
  399. package/src/query-title/index.php +2 -5
  400. package/src/quote/block.json +1 -0
  401. package/src/quote/test/__snapshots__/transforms.native.js.snap +39 -0
  402. package/src/quote/test/transforms.native.js +67 -0
  403. package/src/search/style.scss +16 -12
  404. package/src/search/test/__snapshots__/edit.native.js.snap +11 -1
  405. package/src/search/test/__snapshots__/transforms.native.js.snap +15 -0
  406. package/src/search/test/transforms.native.js +40 -0
  407. package/src/separator/test/__snapshots__/transforms.native.js.snap +19 -0
  408. package/src/separator/test/transforms.native.js +42 -0
  409. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +19 -0
  410. package/src/shortcode/test/transforms.native.js +42 -0
  411. package/src/social-links/test/__snapshots__/transforms.native.js.snap +31 -0
  412. package/src/social-links/test/transforms.native.js +53 -0
  413. package/src/spacer/edit.js +18 -5
  414. package/src/spacer/test/__snapshots__/transforms.native.js.snap +19 -0
  415. package/src/spacer/test/transforms.native.js +42 -0
  416. package/src/style.scss +1 -0
  417. package/src/table/state.js +8 -17
  418. package/src/template-part/edit/import-controls.js +2 -29
  419. package/src/template-part/edit/utils/transformers.js +96 -19
  420. package/src/text-columns/edit.js +1 -6
  421. package/src/text-columns/save.js +1 -6
  422. package/src/verse/test/__snapshots__/transforms.native.js.snap +25 -0
  423. package/src/verse/test/transforms.native.js +42 -0
  424. package/src/video/test/__snapshots__/transforms.native.js.snap +41 -0
  425. package/src/video/test/transforms.native.js +48 -0
  426. package/tsconfig.tsbuildinfo +1 -1
  427. package/src/cover/test/block-controls.js +0 -62
@@ -0,0 +1,112 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+
12
+ const block = 'Media & Text';
13
+ const initialHtmlWithImage = `
14
+ <!-- wp:media-text {"mediaId":4674,"mediaType":"image","isStackedOnMobile":false,"className":"is-stacked-on-mobile"} -->
15
+ <div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img src="https://cldup.com/cXyG__fTLN.jpg" class="wp-image-4674 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:paragraph {"className":"has-large-font-size"} -->
16
+ <p class="has-large-font-size">Mountain</p>
17
+ <!-- /wp:paragraph --></div></div>
18
+ <!-- /wp:media-text -->`;
19
+ const initialHtmlWithVideo = `
20
+ <!-- wp:media-text {"mediaId":4675,"mediaType":"video","isStackedOnMobile":false,"className":"is-stacked-on-mobile"} -->
21
+ <div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><video controls src="https://i.cloudup.com/YtZFJbuQCE.mov"></video></figure><div class="wp-block-media-text__content"><!-- wp:paragraph {"className":"has-large-font-size"} -->
22
+ <p class="has-large-font-size">Cloudup</p>
23
+ <!-- /wp:paragraph --></div></div>
24
+ <!-- /wp:media-text -->`;
25
+
26
+ const tranformsWithInnerBlocks = [ 'Columns', 'Group' ];
27
+ const blockTransformsWithImage = [
28
+ 'Image',
29
+ 'Cover',
30
+ ...tranformsWithInnerBlocks,
31
+ ];
32
+ const blockTransformsWithVideo = [
33
+ 'Video',
34
+ 'Cover',
35
+ ...tranformsWithInnerBlocks,
36
+ ];
37
+
38
+ setupCoreBlocks();
39
+
40
+ describe( `${ block } block transformations`, () => {
41
+ describe( 'with Image', () => {
42
+ test.each( blockTransformsWithImage )(
43
+ 'to %s block',
44
+ async ( blockTransform ) => {
45
+ const screen = await initializeEditor( {
46
+ initialHtml: initialHtmlWithImage,
47
+ } );
48
+ const newBlock = await transformBlock(
49
+ screen,
50
+ block,
51
+ blockTransform,
52
+ {
53
+ isMediaBlock: true,
54
+ hasInnerBlocks:
55
+ tranformsWithInnerBlocks.includes( blockTransform ),
56
+ }
57
+ );
58
+ expect( newBlock ).toBeVisible();
59
+ expect( getEditorHtml() ).toMatchSnapshot();
60
+ }
61
+ );
62
+
63
+ it( 'matches expected transformation options', async () => {
64
+ const screen = await initializeEditor( {
65
+ initialHtml: initialHtmlWithImage,
66
+ } );
67
+ const transformOptions = await getBlockTransformOptions(
68
+ screen,
69
+ block
70
+ );
71
+ expect( transformOptions ).toHaveLength(
72
+ blockTransformsWithImage.length
73
+ );
74
+ } );
75
+ } );
76
+
77
+ describe( 'with Video', () => {
78
+ test.each( blockTransformsWithVideo )(
79
+ 'to %s block',
80
+ async ( blockTransform ) => {
81
+ const screen = await initializeEditor( {
82
+ initialHtml: initialHtmlWithVideo,
83
+ } );
84
+ const newBlock = await transformBlock(
85
+ screen,
86
+ block,
87
+ blockTransform,
88
+ {
89
+ isMediaBlock: true,
90
+ hasInnerBlocks:
91
+ tranformsWithInnerBlocks.includes( blockTransform ),
92
+ }
93
+ );
94
+ expect( newBlock ).toBeVisible();
95
+ expect( getEditorHtml() ).toMatchSnapshot();
96
+ }
97
+ );
98
+
99
+ it( 'matches expected transformation options', async () => {
100
+ const screen = await initializeEditor( {
101
+ initialHtml: initialHtmlWithVideo,
102
+ } );
103
+ const transformOptions = await getBlockTransformOptions(
104
+ screen,
105
+ block
106
+ );
107
+ expect( transformOptions ).toHaveLength(
108
+ blockTransformsWithVideo.length
109
+ );
110
+ } );
111
+ } );
112
+ } );
@@ -42,6 +42,8 @@ const transforms = {
42
42
  gradient,
43
43
  id,
44
44
  overlayColor,
45
+ style,
46
+ textColor,
45
47
  url,
46
48
  },
47
49
  innerBlocks
@@ -66,6 +68,16 @@ const transforms = {
66
68
  };
67
69
  }
68
70
 
71
+ // Maintain custom text color block support value.
72
+ if ( style?.color?.text ) {
73
+ additionalAttributes.style = {
74
+ color: {
75
+ ...additionalAttributes.style?.color,
76
+ text: style.color.text,
77
+ },
78
+ };
79
+ }
80
+
69
81
  return createBlock(
70
82
  'core/media-text',
71
83
  {
@@ -77,6 +89,7 @@ const transforms = {
77
89
  mediaId: id,
78
90
  mediaType: backgroundType,
79
91
  mediaUrl: url,
92
+ textColor,
80
93
  ...additionalAttributes,
81
94
  },
82
95
  innerBlocks
@@ -135,6 +148,8 @@ const transforms = {
135
148
  ) => {
136
149
  const additionalAttributes = {};
137
150
 
151
+ // Migrate the background styles or gradient to Cover's custom
152
+ // gradient and overlay properties.
138
153
  if ( style?.color?.gradient ) {
139
154
  additionalAttributes.customGradient = style.color.gradient;
140
155
  } else if ( style?.color?.background ) {
@@ -142,6 +157,13 @@ const transforms = {
142
157
  style.color.background;
143
158
  }
144
159
 
160
+ // Maintain custom text color support style.
161
+ if ( style?.color?.text ) {
162
+ additionalAttributes.style = {
163
+ color: { text: style.color.text },
164
+ };
165
+ }
166
+
145
167
  const coverAttributes = {
146
168
  align,
147
169
  alt: mediaAlt,
@@ -152,64 +174,15 @@ const transforms = {
152
174
  gradient,
153
175
  id: mediaId,
154
176
  overlayColor: backgroundColor,
177
+ textColor,
155
178
  url: mediaUrl,
156
179
  ...additionalAttributes,
157
180
  };
158
- const customTextColor = style?.color?.text;
159
-
160
- // Attempt to maintain any text color selection.
161
- // Cover block's do not opt into color block support so we
162
- // cannot directly copy the color attributes across.
163
- if ( ! textColor && ! customTextColor ) {
164
- return createBlock(
165
- 'core/cover',
166
- coverAttributes,
167
- innerBlocks
168
- );
169
- }
170
-
171
- const coloredInnerBlocks = innerBlocks.map( ( innerBlock ) => {
172
- const {
173
- attributes: { style: innerStyle },
174
- } = innerBlock;
175
-
176
- // Only apply the media and text color if the inner block
177
- // doesn't set its own color block support selection.
178
- if (
179
- innerBlock.attributes.textColor ||
180
- innerStyle?.color?.text
181
- ) {
182
- return innerBlock;
183
- }
184
-
185
- const newAttributes = { textColor };
186
-
187
- // Only add or extend inner block's style object if we have
188
- // a custom text color from the media & text block.
189
- if ( customTextColor ) {
190
- newAttributes.style = {
191
- ...innerStyle,
192
- color: {
193
- ...innerStyle?.color,
194
- text: customTextColor,
195
- },
196
- };
197
- }
198
-
199
- return createBlock(
200
- innerBlock.name,
201
- {
202
- ...innerBlock.attributes,
203
- ...newAttributes,
204
- },
205
- innerBlock.innerBlocks
206
- );
207
- } );
208
181
 
209
182
  return createBlock(
210
183
  'core/cover',
211
184
  coverAttributes,
212
- coloredInnerBlocks
185
+ innerBlocks
213
186
  );
214
187
  },
215
188
  },
@@ -34,9 +34,27 @@ exports[`Missing block renders without crashing 1`] = `
34
34
  onResponderTerminationRequest={[Function]}
35
35
  onStartShouldSetResponder={[Function]}
36
36
  >
37
- Svg
37
+ <Svg
38
+ height={24}
39
+ label="Help icon"
40
+ style={{}}
41
+ viewBox="0 0 24 24"
42
+ width={24}
43
+ xmlns="http://www.w3.org/2000/svg"
44
+ >
45
+ Path
46
+ </Svg>
38
47
  </View>
39
- Svg
48
+ <Svg
49
+ color="white"
50
+ height={24}
51
+ style={{}}
52
+ viewBox="0 0 24 24"
53
+ width={24}
54
+ xmlns="http://www.w3.org/2000/svg"
55
+ >
56
+ Path
57
+ </Svg>
40
58
  <Text>
41
59
  missing/block/title
42
60
  </Text>
@@ -0,0 +1,19 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`More block transforms to Columns block 1`] = `
4
+ "<!-- wp:columns -->
5
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
6
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:more -->
7
+ <!--more-->
8
+ <!-- /wp:more --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`More block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:more -->
16
+ <!--more-->
17
+ <!-- /wp:more --></div>
18
+ <!-- /wp:group -->"
19
+ `;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+
12
+ const block = 'More';
13
+ const initialHtml = `
14
+ <!-- wp:more -->
15
+ <!--more-->
16
+ <!-- /wp:more -->`;
17
+
18
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
19
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
20
+
21
+ setupCoreBlocks();
22
+
23
+ describe( `${ block } block transforms`, () => {
24
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
25
+ const screen = await initializeEditor( { initialHtml } );
26
+ const newBlock = await transformBlock( screen, block, blockTransform, {
27
+ hasInnerBlocks:
28
+ transformsWithInnerBlocks.includes( blockTransform ),
29
+ } );
30
+ expect( newBlock ).toBeVisible();
31
+ expect( getEditorHtml() ).toMatchSnapshot();
32
+ } );
33
+
34
+ it( 'matches expected transformation options', async () => {
35
+ const screen = await initializeEditor( { initialHtml } );
36
+ const transformOptions = await getBlockTransformOptions(
37
+ screen,
38
+ block
39
+ );
40
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
41
+ } );
42
+ } );
@@ -87,7 +87,6 @@
87
87
  "showSubmenuIcon": "showSubmenuIcon",
88
88
  "openSubmenusOnClick": "openSubmenusOnClick",
89
89
  "style": "style",
90
- "orientation": "orientation",
91
90
  "maxNestingLevel": "maxNestingLevel"
92
91
  },
93
92
  "supports": {
@@ -12,7 +12,6 @@ import {
12
12
  useEffect,
13
13
  useRef,
14
14
  Platform,
15
- useMemo,
16
15
  } from '@wordpress/element';
17
16
  import {
18
17
  InspectorControls,
@@ -41,7 +40,7 @@ import {
41
40
  } from '@wordpress/components';
42
41
  import { __, sprintf } from '@wordpress/i18n';
43
42
  import { speak } from '@wordpress/a11y';
44
- import { createBlock, getBlockType } from '@wordpress/blocks';
43
+ import { createBlock } from '@wordpress/blocks';
45
44
  import { close, Icon } from '@wordpress/icons';
46
45
 
47
46
  /**
@@ -107,16 +106,20 @@ function Navigation( {
107
106
 
108
107
  const ref = attributes.ref;
109
108
 
110
- const setRef = ( postId ) => {
111
- setAttributes( { ref: postId } );
112
- };
109
+ const setRef = useCallback(
110
+ ( postId ) => {
111
+ setAttributes( { ref: postId } );
112
+ },
113
+ [ setAttributes ]
114
+ );
113
115
 
114
116
  const recursionId = `navigationMenu/${ ref }`;
115
117
  const hasAlreadyRendered = useHasRecursion( recursionId );
116
118
 
117
119
  // Preload classic menus, so that they don't suddenly pop-in when viewing
118
120
  // the Select Menu dropdown.
119
- const { menus: classicMenus } = useNavigationEntities();
121
+ const { menus: classicMenus, hasResolvedMenus: hasResolvedClassicMenus } =
122
+ useNavigationEntities();
120
123
 
121
124
  const [ showNavigationMenuStatusNotice, hideNavigationMenuStatusNotice ] =
122
125
  useNavigationNotice( {
@@ -197,52 +200,22 @@ function Navigation( {
197
200
  const isConvertingClassicMenu =
198
201
  classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_PENDING;
199
202
 
200
- // Only autofallback to published menus.
201
- const fallbackNavigationMenus = useMemo(
202
- () =>
203
- navigationMenus
204
- ?.filter( ( menu ) => menu.status === 'publish' )
205
- ?.sort( ( menuA, menuB ) => {
206
- const menuADate = new Date( menuA.date );
207
- const menuBDate = new Date( menuB.date );
208
- return menuADate.getTime() < menuBDate.getTime();
209
- } ),
210
- [ navigationMenus ]
211
- );
203
+ // Only auto-fallback to the latest published menu.
204
+ // The REST API already returns items sorted by publishing date.
205
+ const fallbackNavigationMenuId = navigationMenus?.find(
206
+ ( menu ) => menu.status === 'publish'
207
+ )?.id;
212
208
 
213
- // This useEffect adds snackbar and speak status notices when menus are created.
214
- // If there are no fallback navigation menus then we don't show these messages,
215
- // because this means that we are creating the first, fallback navigation menu.
216
- useEffect( () => {
217
- hideNavigationMenuStatusNotice();
218
-
219
- if ( fallbackNavigationMenus && isCreatingNavigationMenu ) {
220
- speak( __( `Creating Navigation Menu.` ) );
221
- }
222
-
223
- if ( createNavigationMenuIsSuccess ) {
224
- handleUpdateMenu( createNavigationMenuPost.id, {
225
- focusNavigationBlock: true,
226
- } );
227
-
228
- if ( fallbackNavigationMenus ) {
229
- showNavigationMenuStatusNotice(
230
- __( `Navigation Menu successfully created.` )
231
- );
209
+ const handleUpdateMenu = useCallback(
210
+ ( menuId, options = { focusNavigationBlock: false } ) => {
211
+ const { focusNavigationBlock } = options;
212
+ setRef( menuId );
213
+ if ( focusNavigationBlock ) {
214
+ selectBlock( clientId );
232
215
  }
233
- }
234
-
235
- if ( createNavigationMenuIsError ) {
236
- showNavigationMenuStatusNotice(
237
- __( 'Failed to create Navigation Menu.' )
238
- );
239
- }
240
- }, [
241
- createNavigationMenuStatus,
242
- createNavigationMenuError,
243
- createNavigationMenuPost,
244
- fallbackNavigationMenus,
245
- ] );
216
+ },
217
+ [ selectBlock, clientId, setRef ]
218
+ );
246
219
 
247
220
  // Attempt to retrieve and prioritize any existing navigation menu unless:
248
221
  // - the are uncontrolled inner blocks already present in the block.
@@ -256,7 +229,7 @@ function Navigation( {
256
229
  hasUncontrolledInnerBlocks ||
257
230
  isCreatingNavigationMenu ||
258
231
  ref ||
259
- ! fallbackNavigationMenus?.length
232
+ ! fallbackNavigationMenuId
260
233
  ) {
261
234
  return;
262
235
  }
@@ -269,12 +242,14 @@ function Navigation( {
269
242
  * nor to be undoable, hence why it is marked as non persistent
270
243
  */
271
244
  __unstableMarkNextChangeAsNotPersistent();
272
- setRef( fallbackNavigationMenus[ 0 ].id );
245
+ setRef( fallbackNavigationMenuId );
273
246
  }, [
274
247
  ref,
248
+ setRef,
275
249
  isCreatingNavigationMenu,
276
- fallbackNavigationMenus,
250
+ fallbackNavigationMenuId,
277
251
  hasUncontrolledInnerBlocks,
252
+ __unstableMarkNextChangeAsNotPersistent,
278
253
  ] );
279
254
 
280
255
  const isEntityAvailable =
@@ -291,10 +266,12 @@ function Navigation( {
291
266
  useEffect( () => {
292
267
  if (
293
268
  ref ||
269
+ ! hasResolvedClassicMenus ||
294
270
  ! hasResolvedNavigationMenus ||
295
271
  isConvertingClassicMenu ||
296
- fallbackNavigationMenus?.length > 0 ||
297
- hasUnsavedBlocks
272
+ fallbackNavigationMenuId ||
273
+ hasUnsavedBlocks ||
274
+ ! classicMenus?.length
298
275
  ) {
299
276
  return;
300
277
  }
@@ -303,46 +280,39 @@ function Navigation( {
303
280
  // a classic menu with a `primary` location or slug,
304
281
  // then create a new navigation menu based on it.
305
282
  // Otherwise, use the most recently created classic menu.
306
- if ( classicMenus?.length ) {
307
- const primaryMenus = classicMenus.filter(
308
- ( classicMenu ) =>
309
- classicMenu.locations.includes( 'primary' ) ||
310
- classicMenu.slug === 'primary'
311
- );
283
+ const primaryMenus = classicMenus.filter(
284
+ ( classicMenu ) =>
285
+ classicMenu.locations.includes( 'primary' ) ||
286
+ classicMenu.slug === 'primary'
287
+ );
312
288
 
313
- if ( primaryMenus.length ) {
314
- convertClassicMenu(
315
- primaryMenus[ 0 ].id,
316
- primaryMenus[ 0 ].name,
317
- 'publish'
318
- );
319
- } else {
320
- classicMenus.sort( ( a, b ) => {
321
- return b.id - a.id;
322
- } );
323
- convertClassicMenu(
324
- classicMenus[ 0 ].id,
325
- classicMenus[ 0 ].name,
326
- 'publish'
327
- );
328
- }
289
+ if ( primaryMenus.length ) {
290
+ convertClassicMenu(
291
+ primaryMenus[ 0 ].id,
292
+ primaryMenus[ 0 ].name,
293
+ 'publish'
294
+ );
329
295
  } else {
330
- // If there are no fallback navigation menus and no classic menus,
331
- // then create a new navigation menu.
332
-
333
- // Check that we have a page-list block type.
334
- let defaultBlocks = [];
335
- if ( getBlockType( 'core/page-list' ) ) {
336
- defaultBlocks = [ createBlock( 'core/page-list' ) ];
337
- }
338
-
339
- createNavigationMenu(
340
- 'Navigation', // TODO - use the template slug in future
341
- defaultBlocks,
296
+ classicMenus.sort( ( a, b ) => {
297
+ return b.id - a.id;
298
+ } );
299
+ convertClassicMenu(
300
+ classicMenus[ 0 ].id,
301
+ classicMenus[ 0 ].name,
342
302
  'publish'
343
303
  );
344
304
  }
345
- }, [ hasResolvedNavigationMenus, hasUnsavedBlocks ] );
305
+ }, [
306
+ hasResolvedClassicMenus,
307
+ hasResolvedNavigationMenus,
308
+ hasUnsavedBlocks,
309
+ classicMenus,
310
+ convertClassicMenu,
311
+ createNavigationMenu,
312
+ fallbackNavigationMenuId,
313
+ isConvertingClassicMenu,
314
+ ref,
315
+ ] );
346
316
 
347
317
  const navRef = useRef();
348
318
 
@@ -362,6 +332,25 @@ function Navigation( {
362
332
  classicMenus?.length === 0 &&
363
333
  ! hasUncontrolledInnerBlocks;
364
334
 
335
+ useEffect( () => {
336
+ if ( isPlaceholder ) {
337
+ /**
338
+ * this fallback only displays (both in editor and on front)
339
+ * the list of pages block if no menu is available as a fallback.
340
+ * We don't want the fallback to request a save,
341
+ * nor to be undoable, hence we mark it non persistent.
342
+ */
343
+ __unstableMarkNextChangeAsNotPersistent();
344
+ replaceInnerBlocks( clientId, [ createBlock( 'core/page-list' ) ] );
345
+ }
346
+ }, [
347
+ clientId,
348
+ isPlaceholder,
349
+ ref,
350
+ __unstableMarkNextChangeAsNotPersistent,
351
+ replaceInnerBlocks,
352
+ ] );
353
+
365
354
  // "loading" state:
366
355
  // - there is a menu creation process in progress.
367
356
  // - there is a classic menu conversion process in progress.
@@ -413,17 +402,6 @@ function Navigation( {
413
402
  ] = useState();
414
403
  const [ detectedOverlayColor, setDetectedOverlayColor ] = useState();
415
404
 
416
- const handleUpdateMenu = useCallback(
417
- ( menuId, options = { focusNavigationBlock: false } ) => {
418
- const { focusNavigationBlock } = options;
419
- setRef( menuId );
420
- if ( focusNavigationBlock ) {
421
- selectBlock( clientId );
422
- }
423
- },
424
- [ selectBlock, clientId ]
425
- );
426
-
427
405
  const onSelectClassicMenu = async ( classicMenu ) => {
428
406
  const navMenu = await convertClassicMenu(
429
407
  classicMenu.id,
@@ -449,7 +427,7 @@ function Navigation( {
449
427
  }
450
428
 
451
429
  if ( createNavigationMenuIsSuccess ) {
452
- handleUpdateMenu( createNavigationMenuPost.id, {
430
+ handleUpdateMenu( createNavigationMenuPost?.id, {
453
431
  focusNavigationBlock: true,
454
432
  } );
455
433
 
@@ -466,7 +444,7 @@ function Navigation( {
466
444
  }, [
467
445
  createNavigationMenuStatus,
468
446
  createNavigationMenuError,
469
- createNavigationMenuPost,
447
+ createNavigationMenuPost?.id,
470
448
  createNavigationMenuIsError,
471
449
  createNavigationMenuIsSuccess,
472
450
  isCreatingNavigationMenu,
@@ -492,16 +470,12 @@ function Navigation( {
492
470
  __( 'Classic menu import failed.' )
493
471
  );
494
472
  }
495
- }, [ classicMenuConversionStatus, classicMenuConversionError ] );
496
-
497
- // Spacer block needs orientation from context. This is a patch until
498
- // https://github.com/WordPress/gutenberg/issues/36197 is addressed.
499
- useEffect( () => {
500
- if ( orientation ) {
501
- __unstableMarkNextChangeAsNotPersistent();
502
- setAttributes( { orientation } );
503
- }
504
- }, [ orientation ] );
473
+ }, [
474
+ classicMenuConversionStatus,
475
+ classicMenuConversionError,
476
+ hideClassicMenuConversionNotice,
477
+ showClassicMenuConversionNotice,
478
+ ] );
505
479
 
506
480
  useEffect( () => {
507
481
  if ( ! enableContrastChecking ) {
@@ -531,7 +505,11 @@ function Navigation( {
531
505
  setDetectedOverlayBackgroundColor
532
506
  );
533
507
  }
534
- } );
508
+ }, [
509
+ enableContrastChecking,
510
+ overlayTextColor.color,
511
+ overlayBackgroundColor.color,
512
+ ] );
535
513
 
536
514
  useEffect( () => {
537
515
  if ( ! isSelected && ! isInnerBlockSelected ) {
@@ -572,6 +550,9 @@ function Navigation( {
572
550
  canUserCreateNavigationMenu,
573
551
  hasResolvedCanUserCreateNavigationMenu,
574
552
  ref,
553
+ hideNavigationMenuPermissionsNotice,
554
+ showNavigationMenuPermissionsNotice,
555
+ navMenuResolvedButMissing,
575
556
  ] );
576
557
 
577
558
  const hasManagePermissions =
@@ -791,6 +772,7 @@ function Navigation( {
791
772
  createNavigationMenuIsSuccess
792
773
  }
793
774
  createNavigationMenuIsError={ createNavigationMenuIsError }
775
+ currentMenuId={ ref }
794
776
  isNavigationMenuMissing={ isNavigationMenuMissing }
795
777
  isManageMenusButtonDisabled={ isManageMenusButtonDisabled }
796
778
  onCreateNew={ createUntitledEmptyNavigationMenu }
@@ -898,7 +880,9 @@ function Navigation( {
898
880
 
899
881
  { isLoading && (
900
882
  <TagName { ...blockProps }>
901
- <Spinner className="wp-block-navigation__loading-indicator" />
883
+ <div className="wp-block-navigation__loading-indicator-container">
884
+ <Spinner className="wp-block-navigation__loading-indicator" />
885
+ </div>
902
886
  </TagName>
903
887
  ) }
904
888