@wordpress/block-library 8.4.0 → 8.6.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 (607) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/archives/edit.js +3 -0
  3. package/build/archives/edit.js.map +1 -1
  4. package/build/audio/edit.js +2 -0
  5. package/build/audio/edit.js.map +1 -1
  6. package/build/avatar/edit.js +5 -9
  7. package/build/avatar/edit.js.map +1 -1
  8. package/build/buttons/edit.native.js +1 -1
  9. package/build/buttons/edit.native.js.map +1 -1
  10. package/build/categories/edit.js +5 -0
  11. package/build/categories/edit.js.map +1 -1
  12. package/build/columns/edit.js +11 -8
  13. package/build/columns/edit.js.map +1 -1
  14. package/build/columns/edit.native.js +1 -1
  15. package/build/columns/edit.native.js.map +1 -1
  16. package/build/columns/utils.js +2 -2
  17. package/build/columns/utils.js.map +1 -1
  18. package/build/comment-author-name/edit.js +2 -0
  19. package/build/comment-author-name/edit.js.map +1 -1
  20. package/build/comment-date/edit.js +1 -0
  21. package/build/comment-date/edit.js.map +1 -1
  22. package/build/comment-edit-link/edit.js +1 -0
  23. package/build/comment-edit-link/edit.js.map +1 -1
  24. package/build/comments/edit/placeholder.js +8 -5
  25. package/build/comments/edit/placeholder.js.map +1 -1
  26. package/build/comments-title/edit.js +2 -0
  27. package/build/comments-title/edit.js.map +1 -1
  28. package/build/cover/edit/inspector-controls.js +2 -0
  29. package/build/cover/edit/inspector-controls.js.map +1 -1
  30. package/build/cover/index.js +13 -4
  31. package/build/cover/index.js.map +1 -1
  32. package/build/cover/variations.js +29 -0
  33. package/build/cover/variations.js.map +1 -0
  34. package/build/embed/edit.js +13 -14
  35. package/build/embed/edit.js.map +1 -1
  36. package/build/embed/edit.native.js +18 -14
  37. package/build/embed/edit.native.js.map +1 -1
  38. package/build/embed/embed-controls.js +1 -0
  39. package/build/embed/embed-controls.js.map +1 -1
  40. package/build/embed/util.js +39 -12
  41. package/build/embed/util.js.map +1 -1
  42. package/build/file/inspector.js +3 -0
  43. package/build/file/inspector.js.map +1 -1
  44. package/build/freeform/modal.js +1 -1
  45. package/build/freeform/modal.js.map +1 -1
  46. package/build/gallery/edit.js +3 -0
  47. package/build/gallery/edit.js.map +1 -1
  48. package/build/gallery/shared.js +4 -8
  49. package/build/gallery/shared.js.map +1 -1
  50. package/build/gallery/use-image-sizes.js +4 -8
  51. package/build/gallery/use-image-sizes.js.map +1 -1
  52. package/build/gallery/v1/edit.js +8 -3
  53. package/build/gallery/v1/edit.js.map +1 -1
  54. package/build/gallery/v1/gallery-image.js +1 -3
  55. package/build/gallery/v1/gallery-image.js.map +1 -1
  56. package/build/gallery/v1/shared.js +4 -7
  57. package/build/gallery/v1/shared.js.map +1 -1
  58. package/build/image/edit.js +6 -4
  59. package/build/image/edit.js.map +1 -1
  60. package/build/image/image.js +6 -2
  61. package/build/image/image.js.map +1 -1
  62. package/build/image/utils.js +3 -1
  63. package/build/image/utils.js.map +1 -1
  64. package/build/index.js +3 -1
  65. package/build/index.js.map +1 -1
  66. package/build/latest-comments/edit.js +3 -0
  67. package/build/latest-comments/edit.js.map +1 -1
  68. package/build/latest-posts/edit.js +14 -10
  69. package/build/latest-posts/edit.js.map +1 -1
  70. package/build/latest-posts/edit.native.js +3 -3
  71. package/build/latest-posts/edit.native.js.map +1 -1
  72. package/build/list/ordered-list-settings.js +1 -0
  73. package/build/list/ordered-list-settings.js.map +1 -1
  74. package/build/list-item/edit.js +2 -2
  75. package/build/list-item/edit.js.map +1 -1
  76. package/build/list-item/hooks/use-outdent-list-item.js +2 -1
  77. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  78. package/build/loginout/edit.js +2 -0
  79. package/build/loginout/edit.js.map +1 -1
  80. package/build/media-text/constants.js +17 -1
  81. package/build/media-text/constants.js.map +1 -1
  82. package/build/media-text/edit.js +9 -19
  83. package/build/media-text/edit.js.map +1 -1
  84. package/build/media-text/edit.native.js +6 -5
  85. package/build/media-text/edit.native.js.map +1 -1
  86. package/build/media-text/transforms.js +32 -44
  87. package/build/media-text/transforms.js.map +1 -1
  88. package/build/more/edit.js +1 -0
  89. package/build/more/edit.js.map +1 -1
  90. package/build/navigation/edit/index.js +64 -68
  91. package/build/navigation/edit/index.js.map +1 -1
  92. package/build/navigation/edit/inner-blocks.js +4 -1
  93. package/build/navigation/edit/inner-blocks.js.map +1 -1
  94. package/build/navigation/edit/menu-inspector-controls.js +2 -5
  95. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  96. package/build/navigation/edit/navigation-menu-selector.js +26 -22
  97. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  98. package/build/navigation/edit/overlay-menu-preview.js +1 -0
  99. package/build/navigation/edit/overlay-menu-preview.js.map +1 -1
  100. package/build/navigation/edit/placeholder/index.js +1 -1
  101. package/build/navigation/edit/placeholder/index.js.map +1 -1
  102. package/build/navigation/edit/unsaved-inner-blocks.js +14 -1
  103. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  104. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +3 -5
  105. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  106. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  107. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  108. package/build/navigation/edit/use-generate-default-navigation-title.js +1 -1
  109. package/build/navigation/edit/use-generate-default-navigation-title.js.map +1 -1
  110. package/build/navigation/edit/use-navigation-notice.js +4 -7
  111. package/build/navigation/edit/use-navigation-notice.js.map +1 -1
  112. package/build/navigation-link/edit.js +0 -11
  113. package/build/navigation-link/edit.js.map +1 -1
  114. package/build/navigation-submenu/edit.js +1 -13
  115. package/build/navigation-submenu/edit.js.map +1 -1
  116. package/build/page-list/convert-to-links-modal.js +47 -0
  117. package/build/page-list/convert-to-links-modal.js.map +1 -0
  118. package/build/page-list/edit.js +62 -62
  119. package/build/page-list/edit.js.map +1 -1
  120. package/build/page-list-item/edit.js +3 -2
  121. package/build/page-list-item/edit.js.map +1 -1
  122. package/build/paragraph/edit.js +1 -0
  123. package/build/paragraph/edit.js.map +1 -1
  124. package/build/post-author/edit.js +4 -0
  125. package/build/post-author/edit.js.map +1 -1
  126. package/build/post-author-name/edit.js +2 -0
  127. package/build/post-author-name/edit.js.map +1 -1
  128. package/build/post-content/edit.js +6 -1
  129. package/build/post-content/edit.js.map +1 -1
  130. package/build/post-date/edit.js +2 -0
  131. package/build/post-date/edit.js.map +1 -1
  132. package/build/post-excerpt/edit.js +1 -0
  133. package/build/post-excerpt/edit.js.map +1 -1
  134. package/build/post-featured-image/dimension-controls.js +0 -6
  135. package/build/post-featured-image/dimension-controls.js.map +1 -1
  136. package/build/post-featured-image/edit.js +3 -1
  137. package/build/post-featured-image/edit.js.map +1 -1
  138. package/build/post-navigation-link/edit.js +2 -0
  139. package/build/post-navigation-link/edit.js.map +1 -1
  140. package/build/post-terms/use-post-terms.js +1 -1
  141. package/build/post-terms/use-post-terms.js.map +1 -1
  142. package/build/post-time-to-read/edit.js +104 -0
  143. package/build/post-time-to-read/edit.js.map +1 -0
  144. package/build/post-time-to-read/icon.js +25 -0
  145. package/build/post-time-to-read/icon.js.map +1 -0
  146. package/build/post-time-to-read/index.js +57 -0
  147. package/build/post-time-to-read/index.js.map +1 -0
  148. package/build/post-title/edit.js +2 -0
  149. package/build/post-title/edit.js.map +1 -1
  150. package/build/pullquote/deprecated.js +3 -3
  151. package/build/pullquote/deprecated.js.map +1 -1
  152. package/build/query/edit/inspector-controls/index.js +1 -0
  153. package/build/query/edit/inspector-controls/index.js.map +1 -1
  154. package/build/query/edit/query-placeholder.js +3 -2
  155. package/build/query/edit/query-placeholder.js.map +1 -1
  156. package/build/query/utils.js +26 -9
  157. package/build/query/utils.js.map +1 -1
  158. package/build/query-title/edit.js +2 -0
  159. package/build/query-title/edit.js.map +1 -1
  160. package/build/read-more/edit.js +1 -0
  161. package/build/read-more/edit.js.map +1 -1
  162. package/build/rss/edit.js +3 -0
  163. package/build/rss/edit.js.map +1 -1
  164. package/build/site-logo/edit.js +3 -0
  165. package/build/site-logo/edit.js.map +1 -1
  166. package/build/site-tagline/index.js +1 -0
  167. package/build/site-tagline/index.js.map +1 -1
  168. package/build/site-title/edit/index.js +2 -0
  169. package/build/site-title/edit/index.js.map +1 -1
  170. package/build/social-links/edit.js +4 -1
  171. package/build/social-links/edit.js.map +1 -1
  172. package/build/spacer/controls.native.js +10 -8
  173. package/build/spacer/controls.native.js.map +1 -1
  174. package/build/spacer/edit.native.js +43 -5
  175. package/build/spacer/edit.native.js.map +1 -1
  176. package/build/spacer/save.native.js +30 -0
  177. package/build/spacer/save.native.js.map +1 -0
  178. package/build/table/edit.js +3 -0
  179. package/build/table/edit.js.map +1 -1
  180. package/build/table/state.js +12 -4
  181. package/build/table/state.js.map +1 -1
  182. package/build/table-of-contents/edit.js +1 -0
  183. package/build/table-of-contents/edit.js.map +1 -1
  184. package/build/tag-cloud/edit.js +1 -0
  185. package/build/tag-cloud/edit.js.map +1 -1
  186. package/build/template-part/edit/import-controls.js +33 -30
  187. package/build/template-part/edit/import-controls.js.map +1 -1
  188. package/build/template-part/edit/utils/transformers.js +69 -19
  189. package/build/template-part/edit/utils/transformers.js.map +1 -1
  190. package/build/text-columns/edit.js +3 -7
  191. package/build/text-columns/edit.js.map +1 -1
  192. package/build/text-columns/save.js +11 -13
  193. package/build/text-columns/save.js.map +1 -1
  194. package/build/video/edit-common-settings.js +5 -0
  195. package/build/video/edit-common-settings.js.map +1 -1
  196. package/build-module/archives/edit.js +3 -0
  197. package/build-module/archives/edit.js.map +1 -1
  198. package/build-module/audio/edit.js +2 -0
  199. package/build-module/audio/edit.js.map +1 -1
  200. package/build-module/avatar/edit.js +5 -8
  201. package/build-module/avatar/edit.js.map +1 -1
  202. package/build-module/buttons/edit.native.js +1 -1
  203. package/build-module/buttons/edit.native.js.map +1 -1
  204. package/build-module/categories/edit.js +5 -0
  205. package/build-module/categories/edit.js.map +1 -1
  206. package/build-module/columns/edit.js +11 -7
  207. package/build-module/columns/edit.js.map +1 -1
  208. package/build-module/columns/edit.native.js +1 -1
  209. package/build-module/columns/edit.native.js.map +1 -1
  210. package/build-module/columns/utils.js +3 -3
  211. package/build-module/columns/utils.js.map +1 -1
  212. package/build-module/comment-author-name/edit.js +2 -0
  213. package/build-module/comment-author-name/edit.js.map +1 -1
  214. package/build-module/comment-date/edit.js +1 -0
  215. package/build-module/comment-date/edit.js.map +1 -1
  216. package/build-module/comment-edit-link/edit.js +1 -0
  217. package/build-module/comment-edit-link/edit.js.map +1 -1
  218. package/build-module/comments/edit/placeholder.js +9 -5
  219. package/build-module/comments/edit/placeholder.js.map +1 -1
  220. package/build-module/comments-title/edit.js +2 -0
  221. package/build-module/comments-title/edit.js.map +1 -1
  222. package/build-module/cover/edit/inspector-controls.js +2 -0
  223. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  224. package/build-module/cover/index.js +12 -4
  225. package/build-module/cover/index.js.map +1 -1
  226. package/build-module/cover/variations.js +19 -0
  227. package/build-module/cover/variations.js.map +1 -0
  228. package/build-module/embed/edit.js +14 -15
  229. package/build-module/embed/edit.js.map +1 -1
  230. package/build-module/embed/edit.native.js +19 -15
  231. package/build-module/embed/edit.native.js.map +1 -1
  232. package/build-module/embed/embed-controls.js +1 -0
  233. package/build-module/embed/embed-controls.js.map +1 -1
  234. package/build-module/embed/util.js +34 -10
  235. package/build-module/embed/util.js.map +1 -1
  236. package/build-module/file/inspector.js +3 -0
  237. package/build-module/file/inspector.js.map +1 -1
  238. package/build-module/freeform/modal.js +1 -1
  239. package/build-module/freeform/modal.js.map +1 -1
  240. package/build-module/gallery/edit.js +3 -0
  241. package/build-module/gallery/edit.js.map +1 -1
  242. package/build-module/gallery/shared.js +4 -7
  243. package/build-module/gallery/shared.js.map +1 -1
  244. package/build-module/gallery/use-image-sizes.js +4 -7
  245. package/build-module/gallery/use-image-sizes.js.map +1 -1
  246. package/build-module/gallery/v1/edit.js +9 -4
  247. package/build-module/gallery/v1/edit.js.map +1 -1
  248. package/build-module/gallery/v1/gallery-image.js +1 -2
  249. package/build-module/gallery/v1/gallery-image.js.map +1 -1
  250. package/build-module/gallery/v1/shared.js +4 -6
  251. package/build-module/gallery/v1/shared.js.map +1 -1
  252. package/build-module/image/edit.js +7 -5
  253. package/build-module/image/edit.js.map +1 -1
  254. package/build-module/image/image.js +7 -3
  255. package/build-module/image/image.js.map +1 -1
  256. package/build-module/image/utils.js +4 -2
  257. package/build-module/image/utils.js.map +1 -1
  258. package/build-module/index.js +2 -1
  259. package/build-module/index.js.map +1 -1
  260. package/build-module/latest-comments/edit.js +3 -0
  261. package/build-module/latest-comments/edit.js.map +1 -1
  262. package/build-module/latest-posts/edit.js +14 -9
  263. package/build-module/latest-posts/edit.js.map +1 -1
  264. package/build-module/latest-posts/edit.native.js +3 -3
  265. package/build-module/latest-posts/edit.native.js.map +1 -1
  266. package/build-module/list/ordered-list-settings.js +1 -0
  267. package/build-module/list/ordered-list-settings.js.map +1 -1
  268. package/build-module/list-item/edit.js +2 -2
  269. package/build-module/list-item/edit.js.map +1 -1
  270. package/build-module/list-item/hooks/use-outdent-list-item.js +2 -1
  271. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  272. package/build-module/loginout/edit.js +2 -0
  273. package/build-module/loginout/edit.js.map +1 -1
  274. package/build-module/media-text/constants.js +10 -0
  275. package/build-module/media-text/constants.js.map +1 -1
  276. package/build-module/media-text/edit.js +4 -14
  277. package/build-module/media-text/edit.js.map +1 -1
  278. package/build-module/media-text/edit.native.js +4 -3
  279. package/build-module/media-text/edit.native.js.map +1 -1
  280. package/build-module/media-text/transforms.js +32 -44
  281. package/build-module/media-text/transforms.js.map +1 -1
  282. package/build-module/more/edit.js +1 -0
  283. package/build-module/more/edit.js.map +1 -1
  284. package/build-module/navigation/edit/index.js +65 -69
  285. package/build-module/navigation/edit/index.js.map +1 -1
  286. package/build-module/navigation/edit/inner-blocks.js +4 -1
  287. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  288. package/build-module/navigation/edit/menu-inspector-controls.js +2 -5
  289. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  290. package/build-module/navigation/edit/navigation-menu-selector.js +25 -22
  291. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  292. package/build-module/navigation/edit/overlay-menu-preview.js +1 -0
  293. package/build-module/navigation/edit/overlay-menu-preview.js.map +1 -1
  294. package/build-module/navigation/edit/placeholder/index.js +1 -1
  295. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  296. package/build-module/navigation/edit/unsaved-inner-blocks.js +14 -1
  297. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  298. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +3 -5
  299. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  300. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  301. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  302. package/build-module/navigation/edit/use-generate-default-navigation-title.js +1 -1
  303. package/build-module/navigation/edit/use-generate-default-navigation-title.js.map +1 -1
  304. package/build-module/navigation/edit/use-navigation-notice.js +5 -8
  305. package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
  306. package/build-module/navigation-link/edit.js +0 -11
  307. package/build-module/navigation-link/edit.js.map +1 -1
  308. package/build-module/navigation-submenu/edit.js +1 -13
  309. package/build-module/navigation-submenu/edit.js.map +1 -1
  310. package/build-module/page-list/convert-to-links-modal.js +35 -0
  311. package/build-module/page-list/convert-to-links-modal.js.map +1 -0
  312. package/build-module/page-list/edit.js +64 -65
  313. package/build-module/page-list/edit.js.map +1 -1
  314. package/build-module/page-list-item/edit.js +3 -2
  315. package/build-module/page-list-item/edit.js.map +1 -1
  316. package/build-module/paragraph/edit.js +1 -0
  317. package/build-module/paragraph/edit.js.map +1 -1
  318. package/build-module/post-author/edit.js +4 -0
  319. package/build-module/post-author/edit.js.map +1 -1
  320. package/build-module/post-author-name/edit.js +2 -0
  321. package/build-module/post-author-name/edit.js.map +1 -1
  322. package/build-module/post-content/edit.js +6 -1
  323. package/build-module/post-content/edit.js.map +1 -1
  324. package/build-module/post-date/edit.js +2 -0
  325. package/build-module/post-date/edit.js.map +1 -1
  326. package/build-module/post-excerpt/edit.js +1 -0
  327. package/build-module/post-excerpt/edit.js.map +1 -1
  328. package/build-module/post-featured-image/dimension-controls.js +0 -6
  329. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  330. package/build-module/post-featured-image/edit.js +3 -1
  331. package/build-module/post-featured-image/edit.js.map +1 -1
  332. package/build-module/post-navigation-link/edit.js +2 -0
  333. package/build-module/post-navigation-link/edit.js.map +1 -1
  334. package/build-module/post-terms/use-post-terms.js +1 -1
  335. package/build-module/post-terms/use-post-terms.js.map +1 -1
  336. package/build-module/post-time-to-read/edit.js +90 -0
  337. package/build-module/post-time-to-read/edit.js.map +1 -0
  338. package/build-module/post-time-to-read/icon.js +15 -0
  339. package/build-module/post-time-to-read/icon.js.map +1 -0
  340. package/build-module/post-time-to-read/index.js +40 -0
  341. package/build-module/post-time-to-read/index.js.map +1 -0
  342. package/build-module/post-title/edit.js +2 -0
  343. package/build-module/post-title/edit.js.map +1 -1
  344. package/build-module/pullquote/deprecated.js +3 -2
  345. package/build-module/pullquote/deprecated.js.map +1 -1
  346. package/build-module/query/edit/inspector-controls/index.js +1 -0
  347. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  348. package/build-module/query/edit/query-placeholder.js +4 -3
  349. package/build-module/query/edit/query-placeholder.js.map +1 -1
  350. package/build-module/query/utils.js +21 -6
  351. package/build-module/query/utils.js.map +1 -1
  352. package/build-module/query-title/edit.js +2 -0
  353. package/build-module/query-title/edit.js.map +1 -1
  354. package/build-module/read-more/edit.js +1 -0
  355. package/build-module/read-more/edit.js.map +1 -1
  356. package/build-module/rss/edit.js +3 -0
  357. package/build-module/rss/edit.js.map +1 -1
  358. package/build-module/site-logo/edit.js +3 -0
  359. package/build-module/site-logo/edit.js.map +1 -1
  360. package/build-module/site-tagline/index.js +1 -0
  361. package/build-module/site-tagline/index.js.map +1 -1
  362. package/build-module/site-title/edit/index.js +2 -0
  363. package/build-module/site-title/edit/index.js.map +1 -1
  364. package/build-module/social-links/edit.js +4 -1
  365. package/build-module/social-links/edit.js.map +1 -1
  366. package/build-module/spacer/controls.native.js +9 -8
  367. package/build-module/spacer/controls.native.js.map +1 -1
  368. package/build-module/spacer/edit.native.js +39 -7
  369. package/build-module/spacer/edit.native.js.map +1 -1
  370. package/build-module/spacer/save.native.js +22 -0
  371. package/build-module/spacer/save.native.js.map +1 -0
  372. package/build-module/table/edit.js +3 -0
  373. package/build-module/table/edit.js.map +1 -1
  374. package/build-module/table/state.js +13 -5
  375. package/build-module/table/state.js.map +1 -1
  376. package/build-module/table-of-contents/edit.js +1 -0
  377. package/build-module/table-of-contents/edit.js.map +1 -1
  378. package/build-module/tag-cloud/edit.js +1 -0
  379. package/build-module/tag-cloud/edit.js.map +1 -1
  380. package/build-module/template-part/edit/import-controls.js +32 -29
  381. package/build-module/template-part/edit/import-controls.js.map +1 -1
  382. package/build-module/template-part/edit/utils/transformers.js +69 -20
  383. package/build-module/template-part/edit/utils/transformers.js.map +1 -1
  384. package/build-module/text-columns/edit.js +3 -6
  385. package/build-module/text-columns/edit.js.map +1 -1
  386. package/build-module/text-columns/save.js +11 -12
  387. package/build-module/text-columns/save.js.map +1 -1
  388. package/build-module/video/edit-common-settings.js +5 -0
  389. package/build-module/video/edit-common-settings.js.map +1 -1
  390. package/build-style/cover/style-rtl.css +11 -5
  391. package/build-style/cover/style.css +11 -5
  392. package/build-style/editor-rtl.css +9 -4
  393. package/build-style/editor.css +9 -4
  394. package/build-style/navigation/editor-rtl.css +1 -1
  395. package/build-style/navigation/editor.css +1 -1
  396. package/build-style/page-list/editor-rtl.css +4 -0
  397. package/build-style/page-list/editor.css +4 -0
  398. package/build-style/post-excerpt/editor-rtl.css +1 -1
  399. package/build-style/post-excerpt/editor.css +1 -1
  400. package/build-style/post-featured-image/style-rtl.css +1 -0
  401. package/build-style/post-featured-image/style.css +1 -0
  402. package/build-style/query/editor-rtl.css +1 -0
  403. package/build-style/query/editor.css +1 -0
  404. package/build-style/site-logo/editor-rtl.css +2 -2
  405. package/build-style/site-logo/editor.css +2 -2
  406. package/build-style/style-rtl.css +12 -5
  407. package/build-style/style.css +12 -5
  408. package/package.json +31 -30
  409. package/src/archives/edit.js +3 -0
  410. package/src/audio/edit.js +2 -0
  411. package/src/audio/test/__snapshots__/edit.native.js.snap +82 -42
  412. package/src/audio/test/__snapshots__/transforms.native.js.snap +25 -0
  413. package/src/audio/test/transforms.native.js +42 -0
  414. package/src/avatar/edit.js +2 -4
  415. package/src/block/test/__snapshots__/transforms.native.js.snap +15 -0
  416. package/src/block/test/transforms.native.js +40 -0
  417. package/src/buttons/edit.native.js +1 -1
  418. package/src/buttons/test/__snapshots__/edit.native.js.snap +11 -11
  419. package/src/buttons/test/__snapshots__/transforms.native.js.snap +31 -0
  420. package/src/buttons/test/transforms.native.js +48 -0
  421. package/src/categories/edit.js +5 -0
  422. package/src/code/test/__snapshots__/edit.native.js.snap +2 -2
  423. package/src/columns/edit.js +29 -17
  424. package/src/columns/edit.native.js +1 -1
  425. package/src/columns/test/__snapshots__/edit.native.js.snap +66 -66
  426. package/src/columns/test/__snapshots__/transforms.native.js.snap +61 -0
  427. package/src/columns/test/transforms.native.js +91 -0
  428. package/src/columns/test/utils.js +54 -0
  429. package/src/columns/utils.js +8 -8
  430. package/src/comment-author-name/edit.js +2 -0
  431. package/src/comment-date/edit.js +1 -0
  432. package/src/comment-edit-link/edit.js +1 -0
  433. package/src/comment-template/index.php +1 -2
  434. package/src/comments/edit/placeholder.js +16 -4
  435. package/src/comments-title/edit.js +2 -0
  436. package/src/cover/block.json +9 -3
  437. package/src/cover/edit/inspector-controls.js +2 -0
  438. package/src/cover/index.js +2 -0
  439. package/src/cover/index.php +4 -6
  440. package/src/cover/style.scss +16 -7
  441. package/src/cover/test/__snapshots__/edit.native.js.snap +36 -36
  442. package/src/cover/test/__snapshots__/transforms.native.js.snap +73 -0
  443. package/src/cover/test/transforms.native.js +112 -0
  444. package/src/cover/variations.js +20 -0
  445. package/src/embed/edit.js +16 -12
  446. package/src/embed/edit.native.js +28 -18
  447. package/src/embed/embed-controls.js +1 -0
  448. package/src/embed/test/__snapshots__/index.native.js.snap +52 -52
  449. package/src/embed/test/__snapshots__/transforms.native.js.snap +23 -0
  450. package/src/embed/test/index.js +12 -0
  451. package/src/embed/test/transforms.native.js +44 -0
  452. package/src/embed/util.js +29 -8
  453. package/src/file/inspector.js +3 -0
  454. package/src/file/test/__snapshots__/edit.native.js.snap +67 -51
  455. package/src/file/test/__snapshots__/transforms.native.js.snap +19 -0
  456. package/src/file/test/transforms.native.js +42 -0
  457. package/src/freeform/modal.js +1 -1
  458. package/src/freeform/test/__snapshots__/transforms.native.js.snap +19 -0
  459. package/src/freeform/test/transforms.native.js +39 -0
  460. package/src/gallery/edit.js +5 -0
  461. package/src/gallery/shared.js +6 -11
  462. package/src/gallery/test/__snapshots__/index.native.js.snap +71 -71
  463. package/src/gallery/test/__snapshots__/transforms.native.js.snap +53 -0
  464. package/src/gallery/test/transforms.native.js +52 -0
  465. package/src/gallery/use-image-sizes.js +3 -16
  466. package/src/gallery/v1/edit.js +8 -16
  467. package/src/gallery/v1/gallery-image.js +1 -2
  468. package/src/gallery/v1/shared.js +5 -10
  469. package/src/group/test/__snapshots__/edit.native.js.snap +5 -5
  470. package/src/group/test/__snapshots__/transforms.native.js.snap +35 -0
  471. package/src/group/test/transforms.native.js +75 -0
  472. package/src/heading/test/__snapshots__/index.native.js.snap +1 -1
  473. package/src/heading/test/__snapshots__/transforms.native.js.snap +47 -0
  474. package/src/heading/test/transforms.native.js +46 -0
  475. package/src/image/edit.js +4 -4
  476. package/src/image/image.js +4 -9
  477. package/src/image/index.php +4 -4
  478. package/src/image/test/__snapshots__/transforms.native.js.snap +49 -0
  479. package/src/image/test/transforms.native.js +48 -0
  480. package/src/image/utils.js +2 -2
  481. package/src/index.js +2 -0
  482. package/src/latest-comments/edit.js +3 -0
  483. package/src/latest-posts/edit.js +15 -16
  484. package/src/latest-posts/edit.native.js +3 -3
  485. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +15 -0
  486. package/src/latest-posts/test/transforms.native.js +61 -0
  487. package/src/list/ordered-list-settings.js +1 -0
  488. package/src/list/test/__snapshots__/edit.native.js.snap +4 -4
  489. package/src/list/test/__snapshots__/transforms.native.js.snap +85 -0
  490. package/src/list/test/transforms.native.js +56 -0
  491. package/src/list-item/edit.js +10 -3
  492. package/src/list-item/hooks/use-outdent-list-item.js +2 -1
  493. package/src/loginout/edit.js +2 -0
  494. package/src/media-text/constants.js +16 -0
  495. package/src/media-text/edit.js +10 -18
  496. package/src/media-text/edit.native.js +3 -9
  497. package/src/media-text/test/__snapshots__/transforms.native.js.snap +73 -0
  498. package/src/media-text/test/transforms.native.js +112 -0
  499. package/src/media-text/transforms.js +24 -51
  500. package/src/missing/test/__snapshots__/edit.native.js.snap +21 -3
  501. package/src/more/edit.js +1 -0
  502. package/src/more/test/__snapshots__/transforms.native.js.snap +19 -0
  503. package/src/more/test/transforms.native.js +42 -0
  504. package/src/navigation/edit/index.js +121 -76
  505. package/src/navigation/edit/inner-blocks.js +3 -0
  506. package/src/navigation/edit/menu-inspector-controls.js +2 -7
  507. package/src/navigation/edit/navigation-menu-selector.js +41 -25
  508. package/src/navigation/edit/overlay-menu-preview.js +1 -0
  509. package/src/navigation/edit/placeholder/index.js +1 -1
  510. package/src/navigation/edit/unsaved-inner-blocks.js +46 -32
  511. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +124 -122
  512. package/src/navigation/edit/use-create-navigation-menu.js +1 -1
  513. package/src/navigation/edit/use-generate-default-navigation-title.js +1 -1
  514. package/src/navigation/edit/use-navigation-notice.js +16 -13
  515. package/src/navigation/editor.scss +23 -20
  516. package/src/navigation/index.php +5 -3
  517. package/src/navigation-link/edit.js +0 -9
  518. package/src/navigation-link/index.php +5 -8
  519. package/src/navigation-link/test/__snapshots__/hooks.js.snap +12 -12
  520. package/src/navigation-submenu/edit.js +0 -10
  521. package/src/navigation-submenu/index.php +23 -6
  522. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +19 -0
  523. package/src/nextpage/test/transforms.native.js +42 -0
  524. package/src/page-list/convert-to-links-modal.js +38 -0
  525. package/src/page-list/edit.js +82 -69
  526. package/src/page-list/editor.scss +6 -0
  527. package/src/page-list-item/edit.js +2 -3
  528. package/src/paragraph/edit.js +1 -0
  529. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +59 -0
  530. package/src/paragraph/test/transforms.native.js +50 -0
  531. package/src/post-author/edit.js +4 -0
  532. package/src/post-author-name/edit.js +2 -0
  533. package/src/post-content/edit.js +5 -1
  534. package/src/post-date/edit.js +2 -0
  535. package/src/post-excerpt/edit.js +1 -0
  536. package/src/post-excerpt/editor.scss +1 -1
  537. package/src/post-excerpt/index.php +1 -2
  538. package/src/post-featured-image/dimension-controls.js +0 -8
  539. package/src/post-featured-image/edit.js +3 -1
  540. package/src/post-featured-image/style.scss +1 -0
  541. package/src/post-navigation-link/edit.js +2 -0
  542. package/src/post-terms/index.php +1 -0
  543. package/src/post-terms/use-post-terms.js +1 -1
  544. package/src/post-time-to-read/block.json +20 -0
  545. package/src/post-time-to-read/edit.js +101 -0
  546. package/src/post-time-to-read/icon.js +15 -0
  547. package/src/post-time-to-read/index.js +17 -0
  548. package/src/post-time-to-read/index.php +62 -0
  549. package/src/post-title/edit.js +2 -0
  550. package/src/preformatted/test/__snapshots__/edit.native.js.snap +10 -10
  551. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +31 -0
  552. package/src/preformatted/test/transforms.native.js +42 -0
  553. package/src/pullquote/deprecated.js +2 -6
  554. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +47 -0
  555. package/src/pullquote/test/transforms.native.js +46 -0
  556. package/src/query/edit/inspector-controls/index.js +1 -0
  557. package/src/query/edit/query-placeholder.js +10 -5
  558. package/src/query/editor.scss +1 -0
  559. package/src/query/test/utils.js +33 -1
  560. package/src/query/utils.js +19 -6
  561. package/src/query-title/edit.js +2 -0
  562. package/src/quote/test/__snapshots__/transforms.native.js.snap +39 -0
  563. package/src/quote/test/transforms.native.js +67 -0
  564. package/src/read-more/edit.js +1 -0
  565. package/src/rss/edit.js +3 -0
  566. package/src/search/test/__snapshots__/edit.native.js.snap +71 -61
  567. package/src/search/test/__snapshots__/transforms.native.js.snap +15 -0
  568. package/src/search/test/transforms.native.js +40 -0
  569. package/src/separator/test/__snapshots__/edit.native.js.snap +1 -1
  570. package/src/separator/test/__snapshots__/transforms.native.js.snap +19 -0
  571. package/src/separator/test/transforms.native.js +42 -0
  572. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +19 -0
  573. package/src/shortcode/test/transforms.native.js +42 -0
  574. package/src/site-logo/edit.js +3 -0
  575. package/src/site-logo/editor.scss +3 -3
  576. package/src/site-logo/index.php +7 -2
  577. package/src/site-tagline/block.json +1 -0
  578. package/src/site-title/edit/index.js +2 -0
  579. package/src/social-link/index.php +6 -6
  580. package/src/social-links/edit.js +3 -0
  581. package/src/social-links/test/__snapshots__/edit.native.js.snap +16 -16
  582. package/src/social-links/test/__snapshots__/transforms.native.js.snap +31 -0
  583. package/src/social-links/test/transforms.native.js +53 -0
  584. package/src/spacer/controls.native.js +13 -5
  585. package/src/spacer/edit.native.js +45 -6
  586. package/src/spacer/save.native.js +18 -0
  587. package/src/spacer/test/__snapshots__/index.native.js.snap +21 -9
  588. package/src/spacer/test/__snapshots__/transforms.native.js.snap +19 -0
  589. package/src/spacer/test/index.native.js +81 -0
  590. package/src/spacer/test/transforms.native.js +42 -0
  591. package/src/table/edit.js +3 -0
  592. package/src/table/state.js +8 -17
  593. package/src/table-of-contents/edit.js +1 -0
  594. package/src/tag-cloud/edit.js +1 -0
  595. package/src/template-part/edit/import-controls.js +26 -34
  596. package/src/template-part/edit/utils/transformers.js +96 -19
  597. package/src/template-part/index.php +7 -6
  598. package/src/text-columns/edit.js +1 -6
  599. package/src/text-columns/save.js +1 -6
  600. package/src/verse/test/__snapshots__/edit.native.js.snap +2 -2
  601. package/src/verse/test/__snapshots__/transforms.native.js.snap +25 -0
  602. package/src/verse/test/transforms.native.js +42 -0
  603. package/src/video/edit-common-settings.js +5 -0
  604. package/src/video/test/__snapshots__/transforms.native.js.snap +41 -0
  605. package/src/video/test/transforms.native.js +48 -0
  606. package/tsconfig.json +2 -1
  607. package/tsconfig.tsbuildinfo +1 -1
@@ -1,31 +1,43 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`Spacer block decrements height 1`] = `
4
- "<!-- wp:spacer {\\"height\\":\\"99px\\"} -->
5
- <div style=\\"height:99px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
4
+ "<!-- wp:spacer {"height":"99px"} -->
5
+ <div style="height:99px" aria-hidden="true" class="wp-block-spacer"></div>
6
6
  <!-- /wp:spacer -->"
7
7
  `;
8
8
 
9
9
  exports[`Spacer block increments height 1`] = `
10
- "<!-- wp:spacer {\\"height\\":\\"101px\\"} -->
11
- <div style=\\"height:101px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
10
+ "<!-- wp:spacer {"height":"101px"} -->
11
+ <div style="height:101px" aria-hidden="true" class="wp-block-spacer"></div>
12
12
  <!-- /wp:spacer -->"
13
13
  `;
14
14
 
15
15
  exports[`Spacer block inserts block 1`] = `
16
16
  "<!-- wp:spacer -->
17
- <div style=\\"height:100px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
17
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
18
+ <!-- /wp:spacer -->"
19
+ `;
20
+
21
+ exports[`Spacer block inserts block with spacingSizes preset 1`] = `
22
+ "<!-- wp:spacer {"height":"70px"} -->
23
+ <div style="height:70px" aria-hidden="true" class="wp-block-spacer"></div>
24
+ <!-- /wp:spacer -->"
25
+ `;
26
+
27
+ exports[`Spacer block inserts block with spacingSizes preset without matching global styles values 1`] = `
28
+ "<!-- wp:spacer {"height":"120px"} -->
29
+ <div style="height:120px" aria-hidden="true" class="wp-block-spacer"></div>
18
30
  <!-- /wp:spacer -->"
19
31
  `;
20
32
 
21
33
  exports[`Spacer block updates height to 25vh 1`] = `
22
- "<!-- wp:spacer {\\"height\\":\\"25vh\\"} -->
23
- <div style=\\"height:25vh\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
34
+ "<!-- wp:spacer {"height":"25vh"} -->
35
+ <div style="height:25vh" aria-hidden="true" class="wp-block-spacer"></div>
24
36
  <!-- /wp:spacer -->"
25
37
  `;
26
38
 
27
39
  exports[`Spacer block updates height to 50px 1`] = `
28
- "<!-- wp:spacer {\\"height\\":\\"50px\\"} -->
29
- <div style=\\"height:50px\\" aria-hidden=\\"true\\" class=\\"wp-block-spacer\\"></div>
40
+ "<!-- wp:spacer {"height":"50px"} -->
41
+ <div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>
30
42
  <!-- /wp:spacer -->"
31
43
  `;
@@ -0,0 +1,19 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Spacer 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:spacer -->
7
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
8
+ <!-- /wp:spacer --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Spacer block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:spacer -->
16
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
17
+ <!-- /wp:spacer --></div>
18
+ <!-- /wp:group -->"
19
+ `;
@@ -169,4 +169,85 @@ describe( 'Spacer block', () => {
169
169
 
170
170
  expect( getEditorHtml() ).toMatchSnapshot();
171
171
  } );
172
+
173
+ it( 'inserts block with spacingSizes preset', async () => {
174
+ // Mock spacingSizes presets
175
+ const RAW_STYLES = {
176
+ typography: {
177
+ fontSize: 16,
178
+ },
179
+ };
180
+ const RAW_FEATURES = {
181
+ spacing: {
182
+ spacingSizes: {
183
+ theme: [
184
+ {
185
+ size: '3.125rem',
186
+ slug: '100',
187
+ name: '100',
188
+ },
189
+ {
190
+ size: '3.75rem',
191
+ slug: '110',
192
+ name: '110',
193
+ },
194
+ ],
195
+ },
196
+ },
197
+ };
198
+
199
+ const initialHtml = `<!-- wp:spacer {"height":"var:preset|spacing|110"} -->
200
+ <div style="height:var(--wp--preset--spacing--110)" aria-hidden="true" class="wp-block-spacer"></div>
201
+ <!-- /wp:spacer -->`;
202
+ const screen = await initializeEditor( {
203
+ initialHtml,
204
+ rawStyles: JSON.stringify( RAW_STYLES ),
205
+ rawFeatures: JSON.stringify( RAW_FEATURES ),
206
+ } );
207
+
208
+ // Select Spacer block
209
+ const [ spacerBlock ] =
210
+ screen.getAllByLabelText( /Spacer Block\. Row 1/ );
211
+ fireEvent.press( spacerBlock );
212
+
213
+ // Open block settings
214
+ fireEvent.press( screen.getByLabelText( 'Open Settings' ) );
215
+ await waitFor(
216
+ () => screen.getByTestId( 'block-settings-modal' ).props.isVisible
217
+ );
218
+
219
+ // Update height attribute
220
+ fireEvent.press( screen.getByText( '60' ) );
221
+ const heightTextInput = screen.getByDisplayValue( '60' );
222
+ fireEvent.changeText( heightTextInput, '70' );
223
+
224
+ expect( getEditorHtml() ).toMatchSnapshot();
225
+ } );
226
+
227
+ it( 'inserts block with spacingSizes preset without matching global styles values', async () => {
228
+ const initialHtml = `<!-- wp:spacer {"height":"var:preset|spacing|30"} -->
229
+ <div style="height:var(--wp--preset--spacing--30)" aria-hidden="true" class="wp-block-spacer"></div>
230
+ <!-- /wp:spacer -->`;
231
+ const screen = await initializeEditor( {
232
+ initialHtml,
233
+ } );
234
+
235
+ // Select Spacer block
236
+ const [ spacerBlock ] =
237
+ screen.getAllByLabelText( /Spacer Block\. Row 1/ );
238
+ fireEvent.press( spacerBlock );
239
+
240
+ // Open block settings
241
+ fireEvent.press( screen.getByLabelText( 'Open Settings' ) );
242
+ await waitFor(
243
+ () => screen.getByTestId( 'block-settings-modal' ).props.isVisible
244
+ );
245
+
246
+ // Update height attribute
247
+ fireEvent.press( screen.getByText( '100' ) );
248
+ const heightTextInput = screen.getByDisplayValue( '100' );
249
+ fireEvent.changeText( heightTextInput, '120' );
250
+
251
+ expect( getEditorHtml() ).toMatchSnapshot();
252
+ } );
172
253
  } );
@@ -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 = 'Spacer';
13
+ const initialHtml = `
14
+ <!-- wp:spacer -->
15
+ <div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
16
+ <!-- /wp:spacer -->`;
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
+ } );
package/src/table/edit.js CHANGED
@@ -478,6 +478,7 @@ function TableEdit( {
478
478
  className="blocks-table-settings"
479
479
  >
480
480
  <ToggleControl
481
+ __nextHasNoMarginBottom
481
482
  label={ __( 'Fixed width table cells' ) }
482
483
  checked={ !! hasFixedLayout }
483
484
  onChange={ onChangeFixedLayout }
@@ -485,11 +486,13 @@ function TableEdit( {
485
486
  { ! isEmpty && (
486
487
  <>
487
488
  <ToggleControl
489
+ __nextHasNoMarginBottom
488
490
  label={ __( 'Header section' ) }
489
491
  checked={ !! ( head && head.length ) }
490
492
  onChange={ onToggleHeaderSection }
491
493
  />
492
494
  <ToggleControl
495
+ __nextHasNoMarginBottom
493
496
  label={ __( 'Footer section' ) }
494
497
  checked={ !! ( foot && foot.length ) }
495
498
  onChange={ onToggleFooterSection }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get, mapValues } from 'lodash';
4
+ import { mapValues } from 'lodash';
5
5
 
6
6
  const INHERITED_COLUMN_ATTRIBUTES = [ 'align' ];
7
7
 
@@ -55,13 +55,9 @@ export function getFirstRow( state ) {
55
55
  */
56
56
  export function getCellAttribute( state, cellLocation, attributeName ) {
57
57
  const { sectionName, rowIndex, columnIndex } = cellLocation;
58
- return get( state, [
59
- sectionName,
60
- rowIndex,
61
- 'cells',
62
- columnIndex,
63
- attributeName,
64
- ] );
58
+ return state[ sectionName ]?.[ rowIndex ]?.cells?.[ columnIndex ]?.[
59
+ attributeName
60
+ ];
65
61
  }
66
62
 
67
63
  /**
@@ -158,9 +154,7 @@ export function isCellSelected( cellLocation, selection ) {
158
154
  export function insertRow( state, { sectionName, rowIndex, columnCount } ) {
159
155
  const firstRow = getFirstRow( state );
160
156
  const cellCount =
161
- columnCount === undefined
162
- ? get( firstRow, [ 'cells', 'length' ] )
163
- : columnCount;
157
+ columnCount === undefined ? firstRow?.cells?.length : columnCount;
164
158
 
165
159
  // Bail early if the function cannot determine how many cells to add.
166
160
  if ( ! cellCount ) {
@@ -173,11 +167,8 @@ export function insertRow( state, { sectionName, rowIndex, columnCount } ) {
173
167
  {
174
168
  cells: Array.from( { length: cellCount } ).map(
175
169
  ( _, index ) => {
176
- const firstCellInColumn = get(
177
- firstRow,
178
- [ 'cells', index ],
179
- {}
180
- );
170
+ const firstCellInColumn =
171
+ firstRow?.cells?.[ index ] ?? {};
181
172
 
182
173
  const inheritedAttributes = Object.fromEntries(
183
174
  Object.entries( firstCellInColumn ).filter(
@@ -310,7 +301,7 @@ export function toggleSection( state, sectionName ) {
310
301
  }
311
302
 
312
303
  // Get the length of the first row of the body to use when creating the header.
313
- const columnCount = get( state, [ 'body', 0, 'cells', 'length' ], 1 );
304
+ const columnCount = state.body?.[ 0 ]?.cells?.length ?? 1;
314
305
 
315
306
  // Section doesn't exist, insert an empty row to create the section.
316
307
  return insertRow( state, { sectionName, rowIndex: 0, columnCount } );
@@ -251,6 +251,7 @@ export default function TableOfContentsEdit( {
251
251
  <InspectorControls>
252
252
  <PanelBody title={ __( 'Settings' ) }>
253
253
  <ToggleControl
254
+ __nextHasNoMarginBottom
254
255
  label={ __( 'Only include current page' ) }
255
256
  checked={ onlyIncludeCurrentPage }
256
257
  onChange={ ( value ) =>
@@ -113,6 +113,7 @@ function TagCloudEdit( { attributes, setAttributes, taxonomies } ) {
113
113
  }
114
114
  />
115
115
  <ToggleControl
116
+ __nextHasNoMarginBottom
116
117
  label={ __( 'Show post counts' ) }
117
118
  checked={ showTagCounts }
118
119
  onChange={ () =>
@@ -12,10 +12,6 @@ import {
12
12
  __experimentalHStack as HStack,
13
13
  __experimentalSpacer as Spacer,
14
14
  } from '@wordpress/components';
15
- import {
16
- switchToBlockType,
17
- getPossibleBlockTransformations,
18
- } from '@wordpress/blocks';
19
15
  import { store as coreStore } from '@wordpress/core-data';
20
16
  import { store as noticesStore } from '@wordpress/notices';
21
17
 
@@ -25,16 +21,25 @@ import { store as noticesStore } from '@wordpress/notices';
25
21
  import { useCreateTemplatePartFromBlocks } from './utils/hooks';
26
22
  import { transformWidgetToBlock } from './utils/transformers';
27
23
 
24
+ const SIDEBARS_QUERY = {
25
+ per_page: -1,
26
+ _fields: 'id,name,description,status,widgets',
27
+ };
28
+
28
29
  export function TemplatePartImportControls( { area, setAttributes } ) {
29
30
  const [ selectedSidebar, setSelectedSidebar ] = useState( '' );
30
31
  const [ isBusy, setIsBusy ] = useState( false );
31
32
 
32
33
  const registry = useRegistry();
33
- const sidebars = useSelect( ( select ) => {
34
- return select( coreStore ).getSidebars( {
35
- per_page: -1,
36
- _fields: 'id,name,description,status,widgets',
37
- } );
34
+ const { sidebars, hasResolved } = useSelect( ( select ) => {
35
+ const { getSidebars, hasFinishedResolution } = select( coreStore );
36
+
37
+ return {
38
+ sidebars: getSidebars( SIDEBARS_QUERY ),
39
+ hasResolved: hasFinishedResolution( 'getSidebars', [
40
+ SIDEBARS_QUERY,
41
+ ] ),
42
+ };
38
43
  }, [] );
39
44
  const { createErrorNotice } = useDispatch( noticesStore );
40
45
 
@@ -67,6 +72,16 @@ export function TemplatePartImportControls( { area, setAttributes } ) {
67
72
  ];
68
73
  }, [ sidebars ] );
69
74
 
75
+ // Render an empty node while data is loading to avoid SlotFill re-positioning bug.
76
+ // See: https://github.com/WordPress/gutenberg/issues/15641.
77
+ if ( ! hasResolved ) {
78
+ return <Spacer marginBottom="0" />;
79
+ }
80
+
81
+ if ( hasResolved && ! options.length ) {
82
+ return null;
83
+ }
84
+
70
85
  async function createFromWidgets( event ) {
71
86
  event.preventDefault();
72
87
 
@@ -91,36 +106,13 @@ export function TemplatePartImportControls( { area, setAttributes } ) {
91
106
  const blocks = widgets.flatMap( ( widget ) => {
92
107
  const block = transformWidgetToBlock( widget );
93
108
 
94
- if ( block.name !== 'core/legacy-widget' ) {
95
- return block;
96
- }
97
-
98
- const transforms = getPossibleBlockTransformations( [
99
- block,
100
- ] ).filter( ( item ) => {
101
- // The block without any transformations can't be a wildcard.
102
- if ( ! item.transforms ) {
103
- return true;
104
- }
105
-
106
- const hasWildCardFrom = item.transforms?.from?.find(
107
- ( from ) => from.blocks && from.blocks.includes( '*' )
108
- );
109
- const hasWildCardTo = item.transforms?.to?.find(
110
- ( to ) => to.blocks && to.blocks.includes( '*' )
111
- );
112
-
113
- return ! hasWildCardFrom && ! hasWildCardTo;
114
- } );
115
-
116
109
  // Skip the block if we have no matching transformations.
117
- if ( ! transforms.length ) {
110
+ if ( ! block ) {
118
111
  skippedWidgets.add( widget.id_base );
119
112
  return [];
120
113
  }
121
114
 
122
- // Try transforming the Legacy Widget into a first matching block.
123
- return switchToBlockType( block, transforms[ 0 ].name );
115
+ return block;
124
116
  } );
125
117
 
126
118
  await createFromBlocks(
@@ -1,7 +1,14 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { createBlock, parse } from '@wordpress/blocks';
4
+ import {
5
+ parse,
6
+ cloneBlock,
7
+ createBlock,
8
+ getGroupingBlockName,
9
+ getPossibleBlockTransformations,
10
+ switchToBlockType,
11
+ } from '@wordpress/blocks';
5
12
 
6
13
  /**
7
14
  * Converts a widget entity record into a block.
@@ -10,28 +17,98 @@ import { createBlock, parse } from '@wordpress/blocks';
10
17
  * @return {Object} a block (converted from the entity record).
11
18
  */
12
19
  export function transformWidgetToBlock( widget ) {
13
- if ( widget.id_base === 'block' ) {
14
- const parsedBlocks = parse( widget.instance.raw.content, {
15
- __unstableSkipAutop: true,
16
- } );
17
- if ( ! parsedBlocks.length ) {
18
- return createBlock( 'core/paragraph', {}, [] );
20
+ if ( widget.id_base !== 'block' ) {
21
+ let attributes;
22
+ if ( widget._embedded.about[ 0 ].is_multi ) {
23
+ attributes = {
24
+ idBase: widget.id_base,
25
+ instance: widget.instance,
26
+ };
27
+ } else {
28
+ attributes = {
29
+ id: widget.id,
30
+ };
19
31
  }
20
32
 
21
- return parsedBlocks[ 0 ];
33
+ return switchLegacyWidgetType(
34
+ createBlock( 'core/legacy-widget', attributes )
35
+ );
22
36
  }
23
37
 
24
- let attributes;
25
- if ( widget._embedded.about[ 0 ].is_multi ) {
26
- attributes = {
27
- idBase: widget.id_base,
28
- instance: widget.instance,
29
- };
30
- } else {
31
- attributes = {
32
- id: widget.id,
33
- };
38
+ const parsedBlocks = parse( widget.instance.raw.content, {
39
+ __unstableSkipAutop: true,
40
+ } );
41
+
42
+ if ( ! parsedBlocks.length ) {
43
+ return undefined;
44
+ }
45
+
46
+ const block = parsedBlocks[ 0 ];
47
+
48
+ if ( block.name === 'core/widget-group' ) {
49
+ return createBlock(
50
+ getGroupingBlockName(),
51
+ undefined,
52
+ transformInnerBlocks( block.innerBlocks )
53
+ );
54
+ }
55
+
56
+ if ( block.innerBlocks.length > 0 ) {
57
+ return cloneBlock(
58
+ block,
59
+ undefined,
60
+ transformInnerBlocks( block.innerBlocks )
61
+ );
62
+ }
63
+
64
+ return block;
65
+ }
66
+
67
+ /**
68
+ * Switch Legacy Widget to the first matching transformation block.
69
+ *
70
+ * @param {Object} block Legacy Widget block object
71
+ * @return {Object|undefined} a block
72
+ */
73
+ function switchLegacyWidgetType( block ) {
74
+ const transforms = getPossibleBlockTransformations( [ block ] ).filter(
75
+ ( item ) => {
76
+ // The block without any transformations can't be a wildcard.
77
+ if ( ! item.transforms ) {
78
+ return true;
79
+ }
80
+
81
+ const hasWildCardFrom = item.transforms?.from?.find(
82
+ ( from ) => from.blocks && from.blocks.includes( '*' )
83
+ );
84
+ const hasWildCardTo = item.transforms?.to?.find(
85
+ ( to ) => to.blocks && to.blocks.includes( '*' )
86
+ );
87
+
88
+ // Skip wildcard transformations.
89
+ return ! hasWildCardFrom && ! hasWildCardTo;
90
+ }
91
+ );
92
+
93
+ if ( ! transforms.length ) {
94
+ return undefined;
34
95
  }
35
96
 
36
- return createBlock( 'core/legacy-widget', attributes, [] );
97
+ return switchToBlockType( block, transforms[ 0 ].name );
98
+ }
99
+
100
+ function transformInnerBlocks( innerBlocks = [] ) {
101
+ return innerBlocks
102
+ .flatMap( ( block ) => {
103
+ if ( block.name === 'core/legacy-widget' ) {
104
+ return switchLegacyWidgetType( block );
105
+ }
106
+
107
+ return createBlock(
108
+ block.name,
109
+ block.attributes,
110
+ transformInnerBlocks( block.innerBlocks )
111
+ );
112
+ } )
113
+ .filter( ( block ) => !! block );
37
114
  }
@@ -27,18 +27,19 @@ function render_block_core_template_part( $attributes ) {
27
27
  $template_part_id = $attributes['theme'] . '//' . $attributes['slug'];
28
28
  $template_part_query = new WP_Query(
29
29
  array(
30
- 'post_type' => 'wp_template_part',
31
- 'post_status' => 'publish',
32
- 'post_name__in' => array( $attributes['slug'] ),
33
- 'tax_query' => array(
30
+ 'post_type' => 'wp_template_part',
31
+ 'post_status' => 'publish',
32
+ 'post_name__in' => array( $attributes['slug'] ),
33
+ 'tax_query' => array(
34
34
  array(
35
35
  'taxonomy' => 'wp_theme',
36
36
  'field' => 'name',
37
37
  'terms' => $attributes['theme'],
38
38
  ),
39
39
  ),
40
- 'posts_per_page' => 1,
41
- 'no_found_rows' => true,
40
+ 'posts_per_page' => 1,
41
+ 'no_found_rows' => true,
42
+ 'lazy_load_term_meta' => false, // Do not lazy load term meta, as template parts only have one term.
42
43
  )
43
44
  );
44
45
  $template_part_post = $template_part_query->have_posts() ? $template_part_query->next_post() : null;
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { get } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -64,7 +59,7 @@ export default function TextColumnsEdit( { attributes, setAttributes } ) {
64
59
  >
65
60
  <RichText
66
61
  tagName="p"
67
- value={ get( content, [ index, 'children' ] ) }
62
+ value={ content?.[ index ]?.children }
68
63
  onChange={ ( nextContent ) => {
69
64
  setAttributes( {
70
65
  content: [
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { get } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -20,7 +15,7 @@ export default function save( { attributes } ) {
20
15
  <div className="wp-block-column" key={ `column-${ index }` }>
21
16
  <RichText.Content
22
17
  tagName="p"
23
- value={ get( content, [ index, 'children' ] ) }
18
+ value={ content?.[ index ]?.children }
24
19
  />
25
20
  </div>
26
21
  ) ) }
@@ -2,12 +2,12 @@
2
2
 
3
3
  exports[`Verse block inserts block 1`] = `
4
4
  "<!-- wp:verse -->
5
- <pre class=\\"wp-block-verse\\"></pre>
5
+ <pre class="wp-block-verse"></pre>
6
6
  <!-- /wp:verse -->"
7
7
  `;
8
8
 
9
9
  exports[`Verse block renders block text set as initial content 1`] = `
10
10
  "<!-- wp:verse -->
11
- <pre class=\\"wp-block-verse\\">Sample text</pre>
11
+ <pre class="wp-block-verse">Sample text</pre>
12
12
  <!-- /wp:verse -->"
13
13
  `;
@@ -0,0 +1,25 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Verse 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:verse {"textAlign":"center"} -->
7
+ <pre class="wp-block-verse has-text-align-center">Come<br />Home.</pre>
8
+ <!-- /wp:verse --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Verse block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:verse {"textAlign":"center"} -->
16
+ <pre class="wp-block-verse has-text-align-center">Come<br />Home.</pre>
17
+ <!-- /wp:verse --></div>
18
+ <!-- /wp:group -->"
19
+ `;
20
+
21
+ exports[`Verse block transforms to Paragraph block 1`] = `
22
+ "<!-- wp:paragraph -->
23
+ <p>Come<br />Home.</p>
24
+ <!-- /wp:paragraph -->"
25
+ `;