@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
@@ -2,6 +2,6 @@
2
2
 
3
3
  exports[`Heading block inserts block 1`] = `
4
4
  "<!-- wp:heading -->
5
- <h2 class=\\"wp-block-heading\\"></h2>
5
+ <h2 class="wp-block-heading"></h2>
6
6
  <!-- /wp:heading -->"
7
7
  `;
@@ -0,0 +1,47 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Heading 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:heading -->
7
+ <h2 class="wp-block-heading">Example text</h2>
8
+ <!-- /wp:heading --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Heading block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:heading -->
16
+ <h2 class="wp-block-heading">Example text</h2>
17
+ <!-- /wp:heading --></div>
18
+ <!-- /wp:group -->"
19
+ `;
20
+
21
+ exports[`Heading block transforms to List block 1`] = `
22
+ "<!-- wp:list -->
23
+ <ul><!-- wp:list-item -->
24
+ <li>Example text</li>
25
+ <!-- /wp:list-item --></ul>
26
+ <!-- /wp:list -->"
27
+ `;
28
+
29
+ exports[`Heading block transforms to Paragraph block 1`] = `
30
+ "<!-- wp:paragraph -->
31
+ <p>Example text</p>
32
+ <!-- /wp:paragraph -->"
33
+ `;
34
+
35
+ exports[`Heading block transforms to Pullquote block 1`] = `
36
+ "<!-- wp:pullquote -->
37
+ <figure class="wp-block-pullquote"><blockquote><p>Example text</p></blockquote></figure>
38
+ <!-- /wp:pullquote -->"
39
+ `;
40
+
41
+ exports[`Heading block transforms to Quote block 1`] = `
42
+ "<!-- wp:quote -->
43
+ <blockquote class="wp-block-quote"><!-- wp:heading -->
44
+ <h2 class="wp-block-heading">Example text</h2>
45
+ <!-- /wp:heading --></blockquote>
46
+ <!-- /wp:quote -->"
47
+ `;
@@ -0,0 +1,46 @@
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 = 'Heading';
13
+ const initialHtml = `
14
+ <!-- wp:heading -->
15
+ <h2 class="wp-block-heading">Example text</h2>
16
+ <!-- /wp:heading -->`;
17
+
18
+ const transformsWithInnerBlocks = [ 'List', 'Quote', 'Columns', 'Group' ];
19
+ const blockTransforms = [
20
+ 'Paragraph',
21
+ 'Pullquote',
22
+ ...transformsWithInnerBlocks,
23
+ ];
24
+
25
+ setupCoreBlocks();
26
+
27
+ describe( `${ block } block transforms`, () => {
28
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
29
+ const screen = await initializeEditor( { initialHtml } );
30
+ const newBlock = await transformBlock( screen, block, blockTransform, {
31
+ hasInnerBlocks:
32
+ transformsWithInnerBlocks.includes( blockTransform ),
33
+ } );
34
+ expect( newBlock ).toBeVisible();
35
+ expect( getEditorHtml() ).toMatchSnapshot();
36
+ } );
37
+
38
+ it( 'matches expected transformation options', async () => {
39
+ const screen = await initializeEditor( { initialHtml } );
40
+ const transformOptions = await getBlockTransformOptions(
41
+ screen,
42
+ block
43
+ );
44
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
45
+ } );
46
+ } );
package/src/image/edit.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { get, isEmpty } from 'lodash';
5
+ import { isEmpty } from 'lodash';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -65,8 +65,8 @@ export const pickRelevantMediaFiles = ( image, size ) => {
65
65
  );
66
66
 
67
67
  imageProps.url =
68
- get( image, [ 'sizes', size, 'url' ] ) ||
69
- get( image, [ 'media_details', 'sizes', size, 'source_url' ] ) ||
68
+ image?.sizes?.[ size ]?.url ||
69
+ image?.media_details?.sizes?.[ size ]?.source_url ||
70
70
  image.url;
71
71
  return imageProps;
72
72
  };
@@ -192,7 +192,7 @@ export function ImageEdit( {
192
192
 
193
193
  // If a caption text was meanwhile written by the user,
194
194
  // make sure the text is not overwritten by empty captions.
195
- if ( captionRef.current && ! get( mediaAttributes, [ 'caption' ] ) ) {
195
+ if ( captionRef.current && ! mediaAttributes.caption ) {
196
196
  const { caption: omittedCaption, ...restMediaAttributes } =
197
197
  mediaAttributes;
198
198
  mediaAttributes = restMediaAttributes;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get, isEmpty } from 'lodash';
4
+ import { isEmpty } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -166,8 +166,8 @@ export default function Image( {
166
166
  ! isContentLocked &&
167
167
  ! ( isWideAligned && isLargeViewport );
168
168
  const imageSizeOptions = imageSizes
169
- .filter( ( { slug } ) =>
170
- get( image, [ 'media_details', 'sizes', slug, 'source_url' ] )
169
+ .filter(
170
+ ( { slug } ) => image?.media_details?.sizes?.[ slug ]?.source_url
171
171
  )
172
172
  .map( ( { name, slug } ) => ( { value: slug, label: name } ) );
173
173
 
@@ -259,12 +259,7 @@ export default function Image( {
259
259
  }
260
260
 
261
261
  function updateImage( newSizeSlug ) {
262
- const newUrl = get( image, [
263
- 'media_details',
264
- 'sizes',
265
- newSizeSlug,
266
- 'source_url',
267
- ] );
262
+ const newUrl = image?.media_details?.sizes?.[ newSizeSlug ]?.source_url;
268
263
  if ( ! newUrl ) {
269
264
  return null;
270
265
  }
@@ -19,10 +19,10 @@ function render_block_core_image( $attributes, $content ) {
19
19
  // to provide backwards compatibility for the Gallery Block,
20
20
  // which now wraps Image Blocks within innerBlocks.
21
21
  // The data-id attribute is added in a core/gallery `render_block_data` hook.
22
- $data_id_attribute = 'data-id="' . esc_attr( $attributes['data-id'] ) . '"';
23
- if ( ! str_contains( $content, $data_id_attribute ) ) {
24
- $content = str_replace( '<img', '<img ' . $data_id_attribute . ' ', $content );
25
- }
22
+ $processor = new WP_HTML_Tag_Processor( $content );
23
+ $processor->next_tag( 'img' );
24
+ $processor->set_attribute( 'data-id', $attributes['data-id'] );
25
+ $content = $processor->get_updated_html();
26
26
  }
27
27
  return $content;
28
28
  }
@@ -0,0 +1,49 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Image block transformations 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:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
7
+ <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
8
+ <!-- /wp:image --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Image block transformations to Cover block 1`] = `
14
+ "<!-- wp:cover {"url":"https://cldup.com/cXyG__fTLN.jpg","id":1,"dimRatio":50,"style":{"color":{}}} -->
15
+ <div class="wp-block-cover"><span aria-hidden="true" class="wp-block-cover__background has-background-dim"></span><img class="wp-block-cover__image-background wp-image-1" alt="" src="https://cldup.com/cXyG__fTLN.jpg" data-object-fit="cover"/><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","fontSize":"large"} -->
16
+ <p class="has-text-align-center has-large-font-size">Mountain</p>
17
+ <!-- /wp:paragraph --></div></div>
18
+ <!-- /wp:cover -->"
19
+ `;
20
+
21
+ exports[`Image block transformations to File block 1`] = `
22
+ "<!-- wp:file {"id":1,"href":"https://cldup.com/cXyG__fTLN.jpg"} -->
23
+ <div class="wp-block-file"><a href="https://cldup.com/cXyG__fTLN.jpg">Mountain</a><a href="https://cldup.com/cXyG__fTLN.jpg" class="wp-block-file__button wp-element-button" download>Download</a></div>
24
+ <!-- /wp:file -->"
25
+ `;
26
+
27
+ exports[`Image block transformations to Gallery block 1`] = `
28
+ "<!-- wp:gallery {"linkTo":"none"} -->
29
+ <figure class="wp-block-gallery has-nested-images columns-default is-cropped"><!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
30
+ <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
31
+ <!-- /wp:image --></figure>
32
+ <!-- /wp:gallery -->"
33
+ `;
34
+
35
+ exports[`Image block transformations to Group block 1`] = `
36
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
37
+ <div class="wp-block-group"><!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
38
+ <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
39
+ <!-- /wp:image --></div>
40
+ <!-- /wp:group -->"
41
+ `;
42
+
43
+ exports[`Image block transformations to Media & Text block 1`] = `
44
+ "<!-- wp:media-text {"mediaId":1,"mediaType":"image"} -->
45
+ <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" alt="" class="wp-image-1 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:paragraph -->
46
+ <p></p>
47
+ <!-- /wp:paragraph --></div></div>
48
+ <!-- /wp:media-text -->"
49
+ `;
@@ -0,0 +1,48 @@
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 = 'Image';
13
+ const initialHtml = `
14
+ <!-- wp:image {"id":1,"sizeSlug":"large","linkDestination":"media","className":"is-style-default"} -->
15
+ <figure class="wp-block-image size-large is-style-default"><a href="https://cldup.com/cXyG__fTLN.jpg"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-1"/></a><figcaption class="wp-element-caption">Mountain</figcaption></figure>
16
+ <!-- /wp:image -->`;
17
+
18
+ const tranformsWithInnerBlocks = [ 'Gallery', 'Columns', 'Group' ];
19
+ const nonMediaTransforms = [ 'File' ];
20
+ const blockTransforms = [
21
+ 'Cover',
22
+ 'Media & Text',
23
+ ...tranformsWithInnerBlocks,
24
+ ...nonMediaTransforms,
25
+ ];
26
+
27
+ setupCoreBlocks();
28
+
29
+ describe( `${ block } block transformations`, () => {
30
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
31
+ const screen = await initializeEditor( { initialHtml } );
32
+ const newBlock = await transformBlock( screen, block, blockTransform, {
33
+ isMediaBlock: ! nonMediaTransforms.includes( blockTransform ),
34
+ hasInnerBlocks: tranformsWithInnerBlocks.includes( blockTransform ),
35
+ } );
36
+ expect( newBlock ).toBeVisible();
37
+ expect( getEditorHtml() ).toMatchSnapshot();
38
+ } );
39
+
40
+ it( 'matches expected transformation options', async () => {
41
+ const screen = await initializeEditor( { initialHtml } );
42
+ const transformOptions = await getBlockTransformOptions(
43
+ screen,
44
+ block
45
+ );
46
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
47
+ } );
48
+ } );
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEmpty, get } from 'lodash';
4
+ import { isEmpty } from 'lodash';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -64,7 +64,7 @@ export function getUpdatedLinkTargetSettings( value, { rel } ) {
64
64
  * @param {string} size Selected size slug to apply.
65
65
  */
66
66
  export function getImageSizeAttributes( image, size ) {
67
- const url = get( image, [ 'media_details', 'sizes', size, 'source_url' ] );
67
+ const url = image?.media_details?.sizes?.[ size ]?.source_url;
68
68
 
69
69
  if ( url ) {
70
70
  return { url, width: undefined, height: undefined, sizeSlug: size };
package/src/index.js CHANGED
@@ -83,6 +83,7 @@ import * as postFeaturedImage from './post-featured-image';
83
83
  import * as postNavigationLink from './post-navigation-link';
84
84
  import * as postTemplate from './post-template';
85
85
  import * as postTerms from './post-terms';
86
+ import * as postTimeToRead from './post-time-to-read';
86
87
  import * as postTitle from './post-title';
87
88
  import * as preformatted from './preformatted';
88
89
  import * as pullquote from './pullquote';
@@ -197,6 +198,7 @@ const getAllBlocks = () =>
197
198
  postTerms,
198
199
  postNavigationLink,
199
200
  postTemplate,
201
+ postTimeToRead,
200
202
  queryPagination,
201
203
  queryPaginationNext,
202
204
  queryPaginationNumbers,
@@ -41,6 +41,7 @@ export default function LatestComments( { attributes, setAttributes } ) {
41
41
  <InspectorControls>
42
42
  <PanelBody title={ __( 'Settings' ) }>
43
43
  <ToggleControl
44
+ __nextHasNoMarginBottom
44
45
  label={ __( 'Display avatar' ) }
45
46
  checked={ displayAvatar }
46
47
  onChange={ () =>
@@ -48,6 +49,7 @@ export default function LatestComments( { attributes, setAttributes } ) {
48
49
  }
49
50
  />
50
51
  <ToggleControl
52
+ __nextHasNoMarginBottom
51
53
  label={ __( 'Display date' ) }
52
54
  checked={ displayDate }
53
55
  onChange={ () =>
@@ -55,6 +57,7 @@ export default function LatestComments( { attributes, setAttributes } ) {
55
57
  }
56
58
  />
57
59
  <ToggleControl
60
+ __nextHasNoMarginBottom
58
61
  label={ __( 'Display excerpt' ) }
59
62
  checked={ displayExcerpt }
60
63
  onChange={ () =>
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get } from 'lodash';
5
4
  import classnames from 'classnames';
6
5
 
7
6
  /**
@@ -57,7 +56,7 @@ const USERS_LIST_QUERY = {
57
56
  };
58
57
 
59
58
  function getFeaturedImageDetails( post, size ) {
60
- const image = get( post, [ '_embedded', 'wp:featuredmedia', '0' ] );
59
+ const image = post._embedded?.[ 'wp:featuredmedia' ]?.[ '0' ];
61
60
 
62
61
  return {
63
62
  url:
@@ -116,16 +115,12 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
116
115
  );
117
116
 
118
117
  return {
119
- defaultImageWidth: get(
120
- settings.imageDimensions,
121
- [ featuredImageSizeSlug, 'width' ],
122
- 0
123
- ),
124
- defaultImageHeight: get(
125
- settings.imageDimensions,
126
- [ featuredImageSizeSlug, 'height' ],
127
- 0
128
- ),
118
+ defaultImageWidth:
119
+ settings.imageDimensions?.[ featuredImageSizeSlug ]
120
+ ?.width ?? 0,
121
+ defaultImageHeight:
122
+ settings.imageDimensions?.[ featuredImageSizeSlug ]
123
+ ?.height ?? 0,
129
124
  imageSizes: settings.imageSizes,
130
125
  latestPosts: getEntityRecords(
131
126
  'postType',
@@ -204,7 +199,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
204
199
  const hasPosts = !! latestPosts?.length;
205
200
  const inspectorControls = (
206
201
  <InspectorControls>
207
- <PanelBody title={ __( 'Post content settings' ) }>
202
+ <PanelBody title={ __( 'Post content' ) }>
208
203
  <ToggleControl
209
204
  label={ __( 'Post content' ) }
210
205
  checked={ displayPostContent }
@@ -234,7 +229,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
234
229
  displayPostContentRadio === 'excerpt' && (
235
230
  <RangeControl
236
231
  __nextHasNoMarginBottom
237
- label={ __( 'Max number of words in excerpt' ) }
232
+ label={ __( 'Max number of words' ) }
238
233
  value={ excerptLength }
239
234
  onChange={ ( value ) =>
240
235
  setAttributes( { excerptLength: value } )
@@ -245,8 +240,9 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
245
240
  ) }
246
241
  </PanelBody>
247
242
 
248
- <PanelBody title={ __( 'Post meta settings' ) }>
243
+ <PanelBody title={ __( 'Post meta' ) }>
249
244
  <ToggleControl
245
+ __nextHasNoMarginBottom
250
246
  label={ __( 'Display author name' ) }
251
247
  checked={ displayAuthor }
252
248
  onChange={ ( value ) =>
@@ -254,6 +250,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
254
250
  }
255
251
  />
256
252
  <ToggleControl
253
+ __nextHasNoMarginBottom
257
254
  label={ __( 'Display post date' ) }
258
255
  checked={ displayPostDate }
259
256
  onChange={ ( value ) =>
@@ -262,8 +259,9 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
262
259
  />
263
260
  </PanelBody>
264
261
 
265
- <PanelBody title={ __( 'Featured image settings' ) }>
262
+ <PanelBody title={ __( 'Featured image' ) }>
266
263
  <ToggleControl
264
+ __nextHasNoMarginBottom
267
265
  label={ __( 'Display featured image' ) }
268
266
  checked={ displayFeaturedImage }
269
267
  onChange={ ( value ) =>
@@ -315,6 +313,7 @@ export default function LatestPostsEdit( { attributes, setAttributes } ) {
315
313
  />
316
314
  </BaseControl>
317
315
  <ToggleControl
316
+ __nextHasNoMarginBottom
318
317
  label={ __( 'Add link to featured image' ) }
319
318
  checked={ addLinkToFeaturedImage }
320
319
  onChange={ ( value ) =>
@@ -160,7 +160,7 @@ class LatestPostsEdit extends Component {
160
160
 
161
161
  return (
162
162
  <InspectorControls>
163
- <PanelBody title={ __( 'Post content settings' ) }>
163
+ <PanelBody title={ __( 'Post content' ) }>
164
164
  <ToggleControl
165
165
  label={ __( 'Show post content' ) }
166
166
  checked={ displayPostContent }
@@ -184,7 +184,7 @@ class LatestPostsEdit extends Component {
184
184
  ) }
185
185
  </PanelBody>
186
186
 
187
- <PanelBody title={ __( 'Post meta settings' ) }>
187
+ <PanelBody title={ __( 'Post meta' ) }>
188
188
  <ToggleControl
189
189
  label={ __( 'Display post date' ) }
190
190
  checked={ displayPostDate }
@@ -192,7 +192,7 @@ class LatestPostsEdit extends Component {
192
192
  />
193
193
  </PanelBody>
194
194
 
195
- <PanelBody title={ __( 'Featured image settings' ) }>
195
+ <PanelBody title={ __( 'Featured image' ) }>
196
196
  <ToggleControl
197
197
  label={ __( 'Display featured image' ) }
198
198
  checked={ displayFeaturedImage }
@@ -0,0 +1,15 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Latest Posts 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:latest-posts {"displayPostContent":true,"displayPostDate":true} /--></div>
7
+ <!-- /wp:column --></div>
8
+ <!-- /wp:columns -->"
9
+ `;
10
+
11
+ exports[`Latest Posts block transforms to Group block 1`] = `
12
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
13
+ <div class="wp-block-group"><!-- wp:latest-posts {"displayPostContent":true,"displayPostDate":true} /--></div>
14
+ <!-- /wp:group -->"
15
+ `;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+ import apiFetch from '@wordpress/api-fetch';
15
+
16
+ const block = 'Latest Posts';
17
+ const initialHtml = `
18
+ <!-- wp:latest-posts {"displayPostContent":true,"displayPostDate":true} /-->`;
19
+
20
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
21
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
22
+
23
+ setupCoreBlocks();
24
+
25
+ describe( `${ block } block transforms`, () => {
26
+ beforeAll( () => {
27
+ // Mock response of the request made from Latest Posts block to path "/wp/v2/categories".
28
+ apiFetch.mockResolvedValue( [
29
+ {
30
+ slug: 'uncategorized',
31
+ parent: 0,
32
+ id: 1,
33
+ count: 6,
34
+ link: '',
35
+ meta: [],
36
+ description: '',
37
+ name: 'Uncategorized',
38
+ taxonomy: 'category',
39
+ },
40
+ ] );
41
+ } );
42
+
43
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
44
+ const screen = await initializeEditor( { initialHtml } );
45
+ const newBlock = await transformBlock( screen, block, blockTransform, {
46
+ hasInnerBlocks:
47
+ transformsWithInnerBlocks.includes( blockTransform ),
48
+ } );
49
+ expect( newBlock ).toBeVisible();
50
+ expect( getEditorHtml() ).toMatchSnapshot();
51
+ } );
52
+
53
+ it( 'matches expected transformation options', async () => {
54
+ const screen = await initializeEditor( { initialHtml } );
55
+ const transformOptions = await getBlockTransformOptions(
56
+ screen,
57
+ block
58
+ );
59
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
60
+ } );
61
+ } );
@@ -25,6 +25,7 @@ const OrderedListSettings = ( { setAttributes, reversed, start } ) => (
25
25
  step="1"
26
26
  />
27
27
  <ToggleControl
28
+ __nextHasNoMarginBottom
28
29
  label={ __( 'Reverse list numbering' ) }
29
30
  checked={ reversed || false }
30
31
  onChange={ ( value ) => {
@@ -21,7 +21,7 @@ exports[`List block changes the indentation level 1`] = `
21
21
  `;
22
22
 
23
23
  exports[`List block changes to ordered list 1`] = `
24
- "<!-- wp:list {\\"ordered\\":true} -->
24
+ "<!-- wp:list {"ordered":true} -->
25
25
  <ol><!-- wp:list-item -->
26
26
  <li>Item 1</li>
27
27
  <!-- /wp:list-item -->
@@ -37,7 +37,7 @@ exports[`List block changes to ordered list 1`] = `
37
37
  `;
38
38
 
39
39
  exports[`List block changes to reverse ordered list 1`] = `
40
- "<!-- wp:list {\\"ordered\\":true,\\"reversed\\":true} -->
40
+ "<!-- wp:list {"ordered":true,"reversed":true} -->
41
41
  <ol reversed><!-- wp:list-item -->
42
42
  <li>Item 1</li>
43
43
  <!-- /wp:list-item -->
@@ -73,8 +73,8 @@ exports[`List block removes the indentation level 1`] = `
73
73
  `;
74
74
 
75
75
  exports[`List block sets a start value to an ordered list 1`] = `
76
- "<!-- wp:list {\\"ordered\\":true,\\"start\\":25} -->
77
- <ol start=\\"25\\"><!-- wp:list-item -->
76
+ "<!-- wp:list {"ordered":true,"start":25} -->
77
+ <ol start="25"><!-- wp:list-item -->
78
78
  <li>Item 1</li>
79
79
  <!-- /wp:list-item -->
80
80
 
@@ -0,0 +1,85 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`List 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:list -->
7
+ <ul><!-- wp:list-item -->
8
+ <li>First Item</li>
9
+ <!-- /wp:list-item -->
10
+
11
+ <!-- wp:list-item -->
12
+ <li>Second Item</li>
13
+ <!-- /wp:list-item -->
14
+
15
+ <!-- wp:list-item -->
16
+ <li>Third Item</li>
17
+ <!-- /wp:list-item --></ul>
18
+ <!-- /wp:list --></div>
19
+ <!-- /wp:column --></div>
20
+ <!-- /wp:columns -->"
21
+ `;
22
+
23
+ exports[`List block transforms to Group block 1`] = `
24
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
25
+ <div class="wp-block-group"><!-- wp:list -->
26
+ <ul><!-- wp:list-item -->
27
+ <li>First Item</li>
28
+ <!-- /wp:list-item -->
29
+
30
+ <!-- wp:list-item -->
31
+ <li>Second Item</li>
32
+ <!-- /wp:list-item -->
33
+
34
+ <!-- wp:list-item -->
35
+ <li>Third Item</li>
36
+ <!-- /wp:list-item --></ul>
37
+ <!-- /wp:list --></div>
38
+ <!-- /wp:group -->"
39
+ `;
40
+
41
+ exports[`List block transforms to Heading block 1`] = `
42
+ "<!-- wp:heading -->
43
+ <h2 class="wp-block-heading">First Item</h2>
44
+ <!-- /wp:heading -->
45
+
46
+ <!-- wp:heading -->
47
+ <h2 class="wp-block-heading">Second Item</h2>
48
+ <!-- /wp:heading -->
49
+
50
+ <!-- wp:heading -->
51
+ <h2 class="wp-block-heading">Third Item</h2>
52
+ <!-- /wp:heading -->"
53
+ `;
54
+
55
+ exports[`List block transforms to Paragraph block 1`] = `
56
+ "<!-- wp:paragraph -->
57
+ <p>First Item</p>
58
+ <!-- /wp:paragraph -->
59
+
60
+ <!-- wp:paragraph -->
61
+ <p>Second Item</p>
62
+ <!-- /wp:paragraph -->
63
+
64
+ <!-- wp:paragraph -->
65
+ <p>Third Item</p>
66
+ <!-- /wp:paragraph -->"
67
+ `;
68
+
69
+ exports[`List block transforms to Quote block 1`] = `
70
+ "<!-- wp:quote -->
71
+ <blockquote class="wp-block-quote"><!-- wp:list -->
72
+ <ul><!-- wp:list-item -->
73
+ <li>First Item</li>
74
+ <!-- /wp:list-item -->
75
+
76
+ <!-- wp:list-item -->
77
+ <li>Second Item</li>
78
+ <!-- /wp:list-item -->
79
+
80
+ <!-- wp:list-item -->
81
+ <li>Third Item</li>
82
+ <!-- /wp:list-item --></ul>
83
+ <!-- /wp:list --></blockquote>
84
+ <!-- /wp:quote -->"
85
+ `;