@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
@@ -139,8 +139,9 @@ export default function PostFeaturedImageEdit( {
139
139
  imageSizeOptions={ imageSizeOptions }
140
140
  />
141
141
  <InspectorControls>
142
- <PanelBody title={ __( 'Link settings' ) }>
142
+ <PanelBody title={ __( 'Settings' ) }>
143
143
  <ToggleControl
144
+ __nextHasNoMarginBottom
144
145
  label={
145
146
  postType?.labels.singular_name
146
147
  ? sprintf(
@@ -156,6 +157,7 @@ export default function PostFeaturedImageEdit( {
156
157
  { isLink && (
157
158
  <>
158
159
  <ToggleControl
160
+ __nextHasNoMarginBottom
159
161
  label={ __( 'Open in new tab' ) }
160
162
  onChange={ ( value ) =>
161
163
  setAttributes( {
@@ -3,6 +3,7 @@
3
3
  margin-right: 0;
4
4
  a {
5
5
  display: block;
6
+ height: 100%;
6
7
  }
7
8
  img {
8
9
  max-width: 100%;
@@ -52,6 +52,7 @@ export default function PostNavigationLinkEdit( {
52
52
  <InspectorControls>
53
53
  <PanelBody>
54
54
  <ToggleControl
55
+ __nextHasNoMarginBottom
55
56
  label={ __( 'Display the title as a link' ) }
56
57
  help={ __(
57
58
  'If you have entered a custom label, it will be prepended before the title.'
@@ -65,6 +66,7 @@ export default function PostNavigationLinkEdit( {
65
66
  />
66
67
  { showTitle && (
67
68
  <ToggleControl
69
+ __nextHasNoMarginBottom
68
70
  label={ __(
69
71
  'Include the label as part of the link'
70
72
  ) }
@@ -87,6 +87,7 @@ function register_block_core_post_terms() {
87
87
  'term' => $taxonomy->name,
88
88
  ),
89
89
  'isActive' => array( 'term' ),
90
+ 'scope' => array( 'inserter', 'transform' ),
90
91
  );
91
92
  // Set the category variation as the default one.
92
93
  if ( 'category' === $taxonomy->name ) {
@@ -36,6 +36,6 @@ export default function usePostTerms( { postId, term } ) {
36
36
  hasPostTerms: !! terms?.length,
37
37
  };
38
38
  },
39
- [ postId, term?.visibility?.publicly_queryable ]
39
+ [ postId, term?.visibility?.publicly_queryable, slug ]
40
40
  );
41
41
  }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://schemas.wp.org/trunk/block.json",
3
+ "apiVersion": 2,
4
+ "__experimental": true,
5
+ "name": "core/post-time-to-read",
6
+ "title": "Time To Read",
7
+ "category": "theme",
8
+ "description": "Show minutes required to finish reading the post.",
9
+ "textdomain": "default",
10
+ "usesContext": [ "postId", "postType" ],
11
+ "attributes": {
12
+ "textAlign": {
13
+ "type": "string"
14
+ }
15
+ },
16
+ "supports": {
17
+ "html": false,
18
+ "multiple": false
19
+ }
20
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { _x, _n, sprintf } from '@wordpress/i18n';
10
+ import { useMemo } from '@wordpress/element';
11
+ import {
12
+ AlignmentControl,
13
+ BlockControls,
14
+ useBlockProps,
15
+ } from '@wordpress/block-editor';
16
+ import { __unstableSerializeAndClean } from '@wordpress/blocks';
17
+ import { useEntityProp, useEntityBlockEditor } from '@wordpress/core-data';
18
+ import { count as wordCount } from '@wordpress/wordcount';
19
+
20
+ /**
21
+ * Average reading rate - based on average taken from
22
+ * https://irisreading.com/average-reading-speed-in-various-languages/
23
+ * (Characters/minute used for Chinese rather than words).
24
+ */
25
+ const AVERAGE_READING_RATE = 189;
26
+
27
+ function PostTimeToReadEdit( { attributes, setAttributes, context } ) {
28
+ const { textAlign } = attributes;
29
+ const { postId, postType } = context;
30
+
31
+ const [ contentStructure ] = useEntityProp(
32
+ 'postType',
33
+ postType,
34
+ 'content',
35
+ postId
36
+ );
37
+
38
+ const [ blocks ] = useEntityBlockEditor( 'postType', postType, {
39
+ id: postId,
40
+ } );
41
+
42
+ const minutesToReadString = useMemo( () => {
43
+ // Replicates the logic found in getEditedPostContent().
44
+ let content;
45
+ if ( contentStructure instanceof Function ) {
46
+ content = contentStructure( { blocks } );
47
+ } else if ( blocks ) {
48
+ // If we have parsed blocks already, they should be our source of truth.
49
+ // Parsing applies block deprecations and legacy block conversions that
50
+ // unparsed content will not have.
51
+ content = __unstableSerializeAndClean( blocks );
52
+ } else {
53
+ content = contentStructure;
54
+ }
55
+
56
+ /*
57
+ * translators: If your word count is based on single characters (e.g. East Asian characters),
58
+ * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
59
+ * Do not translate into your own language.
60
+ */
61
+ const wordCountType = _x(
62
+ 'words',
63
+ 'Word count type. Do not translate!'
64
+ );
65
+
66
+ const minutesToRead = Math.max(
67
+ 1,
68
+ Math.round(
69
+ wordCount( content, wordCountType ) / AVERAGE_READING_RATE
70
+ )
71
+ );
72
+
73
+ return sprintf(
74
+ /* translators: %d is the number of minutes the post will take to read. */
75
+ _n( '%d minute', '%d minutes', minutesToRead ),
76
+ minutesToRead
77
+ );
78
+ }, [ contentStructure, blocks ] );
79
+
80
+ const blockProps = useBlockProps( {
81
+ className: classnames( {
82
+ [ `has-text-align-${ textAlign }` ]: textAlign,
83
+ } ),
84
+ } );
85
+
86
+ return (
87
+ <>
88
+ <BlockControls group="block">
89
+ <AlignmentControl
90
+ value={ textAlign }
91
+ onChange={ ( nextAlign ) => {
92
+ setAttributes( { textAlign: nextAlign } );
93
+ } }
94
+ />
95
+ </BlockControls>
96
+ <p { ...blockProps }>{ minutesToReadString }</p>
97
+ </>
98
+ );
99
+ }
100
+
101
+ export default PostTimeToReadEdit;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { SVG, Path } from '@wordpress/components';
5
+
6
+ export default (
7
+ <SVG
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ width="24"
10
+ height="24"
11
+ viewBox="0 0 24 24"
12
+ >
13
+ <Path d="M12 3c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16.5c-4.1 0-7.5-3.4-7.5-7.5S7.9 4.5 12 4.5s7.5 3.4 7.5 7.5-3.4 7.5-7.5 7.5zM12 7l-1 5c0 .3.2.6.4.8l4.2 2.8-2.7-4.1L12 7z" />
14
+ </SVG>
15
+ );
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import initBlock from '../utils/init-block';
5
+ import metadata from './block.json';
6
+ import edit from './edit';
7
+ import icon from './icon';
8
+
9
+ const { name } = metadata;
10
+ export { metadata, name };
11
+
12
+ export const settings = {
13
+ icon,
14
+ edit,
15
+ };
16
+
17
+ export const init = () => initBlock( { name, metadata, settings } );
@@ -0,0 +1,62 @@
1
+ <?php
2
+ /**
3
+ * Server-side rendering of the `core/post-time-to-read` block.
4
+ *
5
+ * @package WordPress
6
+ */
7
+
8
+ /**
9
+ * Renders the `core/post-time-to-read` block on the server.
10
+ *
11
+ * @param array $attributes Block attributes.
12
+ * @param string $content Block default content.
13
+ * @param WP_Block $block Block instance.
14
+ * @return string Returns the rendered post author name block.
15
+ */
16
+ function render_block_core_post_time_to_read( $attributes, $content, $block ) {
17
+ if ( ! isset( $block->context['postId'] ) ) {
18
+ return '';
19
+ }
20
+
21
+ $content = get_the_content();
22
+
23
+ /*
24
+ * Average reading rate - based on average taken from
25
+ * https://irisreading.com/average-reading-speed-in-various-languages/
26
+ * (Characters/minute used for Chinese rather than words).
27
+ */
28
+ $average_reading_rate = 189;
29
+
30
+ $word_count_type = wp_get_word_count_type();
31
+
32
+ $minutes_to_read = max( 1, (int) round( wp_word_count( $content, $word_count_type ) / $average_reading_rate ) );
33
+
34
+ $minutes_to_read_string = sprintf(
35
+ /* translators: %d is the number of minutes the post will take to read. */
36
+ _n( '%d minute', '%d minutes', $minutes_to_read ),
37
+ $minutes_to_read
38
+ );
39
+
40
+ $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}";
41
+
42
+ $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) );
43
+
44
+ return sprintf(
45
+ '<p %1$s>%2$s</p>',
46
+ $wrapper_attributes,
47
+ $minutes_to_read_string
48
+ );
49
+ }
50
+
51
+ /**
52
+ * Registers the `core/post-time-to-read` block on the server.
53
+ */
54
+ function register_block_core_post_time_to_read() {
55
+ register_block_type_from_metadata(
56
+ __DIR__ . '/post-time-to-read',
57
+ array(
58
+ 'render_callback' => 'render_block_core_post_time_to_read',
59
+ )
60
+ );
61
+ }
62
+ add_action( 'init', 'register_block_core_post_time_to_read' );
@@ -118,6 +118,7 @@ export default function PostTitleEdit( {
118
118
  <InspectorControls>
119
119
  <PanelBody title={ __( 'Link settings' ) }>
120
120
  <ToggleControl
121
+ __nextHasNoMarginBottom
121
122
  label={ __( 'Make title a link' ) }
122
123
  onChange={ () => setAttributes( { isLink: ! isLink } ) }
123
124
  checked={ isLink }
@@ -125,6 +126,7 @@ export default function PostTitleEdit( {
125
126
  { isLink && (
126
127
  <>
127
128
  <ToggleControl
129
+ __nextHasNoMarginBottom
128
130
  label={ __( 'Open in new tab' ) }
129
131
  onChange={ ( value ) =>
130
132
  setAttributes( {
@@ -3,7 +3,7 @@
3
3
  exports[`core/more/edit/native should match snapshot when content is empty 1`] = `
4
4
  <View
5
5
  style={
6
- Array [
6
+ [
7
7
  undefined,
8
8
  undefined,
9
9
  undefined,
@@ -12,7 +12,7 @@ exports[`core/more/edit/native should match snapshot when content is empty 1`] =
12
12
  >
13
13
  <View
14
14
  style={
15
- Array [
15
+ [
16
16
  undefined,
17
17
  undefined,
18
18
  ]
@@ -20,9 +20,9 @@ exports[`core/more/edit/native should match snapshot when content is empty 1`] =
20
20
  >
21
21
  <TextInput
22
22
  accessibilityLabel="Text input. Empty"
23
- activeFormats={Array []}
23
+ activeFormats={[]}
24
24
  blockType={
25
- Object {
25
+ {
26
26
  "tag": "pre",
27
27
  }
28
28
  }
@@ -39,7 +39,7 @@ exports[`core/more/edit/native should match snapshot when content is empty 1`] =
39
39
  onSelectionChange={[Function]}
40
40
  placeholder="Write preformatted text…"
41
41
  placeholderTextColor="gray"
42
- triggerKeyCodes={Array []}
42
+ triggerKeyCodes={[]}
43
43
  value=""
44
44
  />
45
45
  </View>
@@ -49,7 +49,7 @@ exports[`core/more/edit/native should match snapshot when content is empty 1`] =
49
49
  exports[`core/more/edit/native should match snapshot when content is not empty 1`] = `
50
50
  <View
51
51
  style={
52
- Array [
52
+ [
53
53
  undefined,
54
54
  undefined,
55
55
  undefined,
@@ -58,7 +58,7 @@ exports[`core/more/edit/native should match snapshot when content is not empty 1
58
58
  >
59
59
  <View
60
60
  style={
61
- Array [
61
+ [
62
62
  undefined,
63
63
  undefined,
64
64
  ]
@@ -66,9 +66,9 @@ exports[`core/more/edit/native should match snapshot when content is not empty 1
66
66
  >
67
67
  <TextInput
68
68
  accessibilityLabel="Text input. <pre>Hello World!</pre>"
69
- activeFormats={Array []}
69
+ activeFormats={[]}
70
70
  blockType={
71
- Object {
71
+ {
72
72
  "tag": "pre",
73
73
  }
74
74
  }
@@ -85,7 +85,7 @@ exports[`core/more/edit/native should match snapshot when content is not empty 1
85
85
  onSelectionChange={[Function]}
86
86
  placeholder="Write preformatted text…"
87
87
  placeholderTextColor="gray"
88
- triggerKeyCodes={Array []}
88
+ triggerKeyCodes={[]}
89
89
  value="<pre>Hello World!</pre>"
90
90
  />
91
91
  </View>
@@ -0,0 +1,31 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Preformatted block transforms to Code block 1`] = `
4
+ "<!-- wp:code -->
5
+ <pre class="wp-block-code"><code>Some <em>preformatted</em> text...<br />And more!</code></pre>
6
+ <!-- /wp:code -->"
7
+ `;
8
+
9
+ exports[`Preformatted block transforms to Columns block 1`] = `
10
+ "<!-- wp:columns -->
11
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
12
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:preformatted -->
13
+ <pre class="wp-block-preformatted">Some <em>preformatted</em> text...<br />And more!</pre>
14
+ <!-- /wp:preformatted --></div>
15
+ <!-- /wp:column --></div>
16
+ <!-- /wp:columns -->"
17
+ `;
18
+
19
+ exports[`Preformatted block transforms to Group block 1`] = `
20
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
21
+ <div class="wp-block-group"><!-- wp:preformatted -->
22
+ <pre class="wp-block-preformatted">Some <em>preformatted</em> text...<br />And more!</pre>
23
+ <!-- /wp:preformatted --></div>
24
+ <!-- /wp:group -->"
25
+ `;
26
+
27
+ exports[`Preformatted block transforms to Paragraph block 1`] = `
28
+ "<!-- wp:paragraph -->
29
+ <p>Some <em>preformatted</em> text...<br />And more!</p>
30
+ <!-- /wp:paragraph -->"
31
+ `;
@@ -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 = 'Preformatted';
13
+ const initialHtml = `
14
+ <!-- wp:preformatted -->
15
+ <pre class="wp-block-preformatted">Some <em>preformatted</em> text...<br>And more!</pre>
16
+ <!-- /wp:preformatted -->`;
17
+
18
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
19
+ const blockTransforms = [ 'Paragraph', 'Code', ...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
+ } );
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { get } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -435,11 +434,8 @@ const v2 = {
435
434
  // Is normal style and a named color is being used, we need to retrieve the color value to set the style,
436
435
  // as there is no expectation that themes create classes that set border colors.
437
436
  } else if ( mainColor ) {
438
- const colors = get(
439
- select( blockEditorStore ).getSettings(),
440
- [ 'colors' ],
441
- []
442
- );
437
+ const colors =
438
+ select( blockEditorStore ).getSettings().colors ?? [];
443
439
  const colorObject = getColorObjectByAttributeValues(
444
440
  colors,
445
441
  mainColor
@@ -0,0 +1,47 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Pullquote 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:pullquote -->
7
+ <figure class="wp-block-pullquote"><blockquote><p>One of the hardest things to do in technology is disrupt yourself.</p><cite>Matt Mullenweg</cite></blockquote></figure>
8
+ <!-- /wp:pullquote --></div>
9
+ <!-- /wp:column --></div>
10
+ <!-- /wp:columns -->"
11
+ `;
12
+
13
+ exports[`Pullquote block transforms to Group block 1`] = `
14
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
15
+ <div class="wp-block-group"><!-- wp:pullquote -->
16
+ <figure class="wp-block-pullquote"><blockquote><p>One of the hardest things to do in technology is disrupt yourself.</p><cite>Matt Mullenweg</cite></blockquote></figure>
17
+ <!-- /wp:pullquote --></div>
18
+ <!-- /wp:group -->"
19
+ `;
20
+
21
+ exports[`Pullquote block transforms to Heading block 1`] = `
22
+ "<!-- wp:heading -->
23
+ <h2 class="wp-block-heading">One of the hardest things to do in technology is disrupt yourself.</h2>
24
+ <!-- /wp:heading -->
25
+
26
+ <!-- wp:heading -->
27
+ <h2 class="wp-block-heading">Matt Mullenweg</h2>
28
+ <!-- /wp:heading -->"
29
+ `;
30
+
31
+ exports[`Pullquote block transforms to Paragraph block 1`] = `
32
+ "<!-- wp:paragraph -->
33
+ <p>One of the hardest things to do in technology is disrupt yourself.</p>
34
+ <!-- /wp:paragraph -->
35
+
36
+ <!-- wp:paragraph -->
37
+ <p>Matt Mullenweg</p>
38
+ <!-- /wp:paragraph -->"
39
+ `;
40
+
41
+ exports[`Pullquote block transforms to Quote block 1`] = `
42
+ "<!-- wp:quote -->
43
+ <blockquote class="wp-block-quote"><!-- wp:paragraph -->
44
+ <p>One of the hardest things to do in technology is disrupt yourself.</p>
45
+ <!-- /wp:paragraph --><cite>Matt Mullenweg</cite></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 = 'Pullquote';
13
+ const initialHtml = `
14
+ <!-- wp:pullquote -->
15
+ <figure class="wp-block-pullquote"><blockquote><p>One of the hardest things to do in technology is disrupt yourself.</p><cite>Matt Mullenweg</cite></blockquote></figure>
16
+ <!-- /wp:pullquote -->`;
17
+
18
+ const transformsWithInnerBlocks = [ 'Quote', 'Columns', 'Group' ];
19
+ const blockTransforms = [
20
+ 'Paragraph',
21
+ 'Heading',
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
+ } );
@@ -132,6 +132,7 @@ export default function QueryInspectorControls( {
132
132
  <PanelBody title={ __( 'Settings' ) }>
133
133
  { showInheritControl && (
134
134
  <ToggleControl
135
+ __nextHasNoMarginBottom
135
136
  label={ __( 'Inherit query from template' ) }
136
137
  help={ __(
137
138
  'Toggle to use the global query context that is set with the current template, such as an archive or search. Disable to customize the settings independently.'
@@ -19,7 +19,7 @@ import { __ } from '@wordpress/i18n';
19
19
  /**
20
20
  * Internal dependencies
21
21
  */
22
- import { useScopedBlockVariations } from '../utils';
22
+ import { useScopedBlockVariations, useBlockNameForPatterns } from '../utils';
23
23
 
24
24
  export default function QueryPlaceholder( {
25
25
  attributes,
@@ -30,6 +30,10 @@ export default function QueryPlaceholder( {
30
30
  } ) {
31
31
  const [ isStartingBlank, setIsStartingBlank ] = useState( false );
32
32
  const blockProps = useBlockProps();
33
+ const blockNameForPatterns = useBlockNameForPatterns(
34
+ clientId,
35
+ attributes
36
+ );
33
37
 
34
38
  const { blockType, allVariations, hasPatterns } = useSelect(
35
39
  ( select ) => {
@@ -37,15 +41,16 @@ export default function QueryPlaceholder( {
37
41
  const { getBlockRootClientId, getPatternsByBlockTypes } =
38
42
  select( blockEditorStore );
39
43
  const rootClientId = getBlockRootClientId( clientId );
40
-
41
44
  return {
42
45
  blockType: getBlockType( name ),
43
46
  allVariations: getBlockVariations( name ),
44
- hasPatterns: !! getPatternsByBlockTypes( name, rootClientId )
45
- .length,
47
+ hasPatterns: !! getPatternsByBlockTypes(
48
+ blockNameForPatterns,
49
+ rootClientId
50
+ ).length,
46
51
  };
47
52
  },
48
- [ name, clientId ]
53
+ [ name, blockNameForPatterns, clientId ]
49
54
  );
50
55
 
51
56
  const matchingVariation = getMatchingVariation( attributes, allVariations );
@@ -42,6 +42,7 @@
42
42
  position: sticky;
43
43
  top: 0;
44
44
  padding: $grid-unit-20 0;
45
+ margin-bottom: 2px;
45
46
  z-index: z-index(".block-library-query-pattern__selection-search");
46
47
  }
47
48
  }
@@ -2,7 +2,7 @@
2
2
  * Internal dependencies
3
3
  */
4
4
  import { terms } from './fixtures';
5
- import { getEntitiesInfo } from '../utils';
5
+ import { getEntitiesInfo, getValueFromObjectPath } from '../utils';
6
6
 
7
7
  describe( 'Query block utils', () => {
8
8
  describe( 'getEntitiesInfo', () => {
@@ -29,4 +29,36 @@ describe( 'Query block utils', () => {
29
29
  );
30
30
  } );
31
31
  } );
32
+
33
+ describe( 'getValueFromObjectPath', () => {
34
+ it( 'should return undefined when path is empty', () => {
35
+ const object = { foo: 'bar' };
36
+ const result = getValueFromObjectPath( object, '' );
37
+ expect( result ).toBeUndefined();
38
+ } );
39
+
40
+ it( 'should return undefined when path does not exist', () => {
41
+ const object = { foo: 'bar' };
42
+ const result = getValueFromObjectPath( object, 'baz' );
43
+ expect( result ).toBeUndefined();
44
+ } );
45
+
46
+ it( 'should return undefined when a deeper path does not exist', () => {
47
+ const object = { foo: { bar: 'baz' } };
48
+ const result = getValueFromObjectPath( object, 'foo.test' );
49
+ expect( result ).toBeUndefined();
50
+ } );
51
+
52
+ it( 'should return the corresponding value of a single level path', () => {
53
+ const object = { foo: 'bar' };
54
+ const result = getValueFromObjectPath( object, 'foo' );
55
+ expect( result ).toBe( 'bar' );
56
+ } );
57
+
58
+ it( 'should return the value of a deeper path', () => {
59
+ const object = { foo: { bar: { baz: 'test' } } };
60
+ const result = getValueFromObjectPath( object, 'foo.bar.baz' );
61
+ expect( result ).toBe( 'test' );
62
+ } );
63
+ } );
32
64
  } );