@wordpress/block-library 8.24.1 → 8.25.1-next.79a6196f.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 (509) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/build/audio/edit.js +15 -62
  4. package/build/audio/edit.js.map +1 -1
  5. package/build/audio/edit.native.js +1 -1
  6. package/build/audio/edit.native.js.map +1 -1
  7. package/build/audio/index.js +2 -2
  8. package/build/block/edit.js +157 -19
  9. package/build/block/edit.js.map +1 -1
  10. package/build/block/index.js +3 -2
  11. package/build/block/index.js.map +1 -1
  12. package/build/block/v1/edit.js +116 -0
  13. package/build/block/v1/edit.js.map +1 -0
  14. package/build/block/{edit.native.js → v1/edit.native.js} +2 -2
  15. package/build/block/v1/edit.native.js.map +1 -0
  16. package/build/button/index.js +2 -2
  17. package/build/button/save.js +1 -1
  18. package/build/button/save.js.map +1 -1
  19. package/build/code/edit.native.js +13 -14
  20. package/build/code/edit.native.js.map +1 -1
  21. package/build/code/index.js +2 -2
  22. package/build/code/save.js +6 -2
  23. package/build/code/save.js.map +1 -1
  24. package/build/comments-title/deprecated.js +1 -1
  25. package/build/comments-title/index.js +1 -1
  26. package/build/cover/edit/inspector-controls.js +1 -1
  27. package/build/cover/edit/inspector-controls.js.map +1 -1
  28. package/build/cover/edit.native.js +1 -0
  29. package/build/cover/edit.native.js.map +1 -1
  30. package/build/details/index.js +2 -2
  31. package/build/embed/deprecated.js +2 -2
  32. package/build/embed/embed-preview.native.js +1 -1
  33. package/build/embed/embed-preview.native.js.map +1 -1
  34. package/build/embed/icons.js +1 -1
  35. package/build/embed/icons.js.map +1 -1
  36. package/build/embed/index.js +2 -2
  37. package/build/embed/transforms.js +2 -2
  38. package/build/embed/util.js +6 -6
  39. package/build/embed/util.js.map +1 -1
  40. package/build/file/edit.js +20 -28
  41. package/build/file/edit.js.map +1 -1
  42. package/build/file/edit.native.js +1 -1
  43. package/build/file/edit.native.js.map +1 -1
  44. package/build/file/index.js +4 -4
  45. package/build/file/save.js +4 -1
  46. package/build/file/save.js.map +1 -1
  47. package/build/form-input/deprecated.js +147 -0
  48. package/build/form-input/deprecated.js.map +1 -0
  49. package/build/form-input/edit.js +1 -1
  50. package/build/form-input/edit.js.map +1 -1
  51. package/build/form-input/index.js +4 -2
  52. package/build/form-input/index.js.map +1 -1
  53. package/build/form-input/save.js +7 -9
  54. package/build/form-input/save.js.map +1 -1
  55. package/build/gallery/edit.js +38 -58
  56. package/build/gallery/edit.js.map +1 -1
  57. package/build/gallery/gallery.js +19 -24
  58. package/build/gallery/gallery.js.map +1 -1
  59. package/build/gallery/gallery.native.js +1 -1
  60. package/build/gallery/gallery.native.js.map +1 -1
  61. package/build/gallery/index.js +8 -4
  62. package/build/gallery/index.js.map +1 -1
  63. package/build/gallery/transforms.js +4 -68
  64. package/build/gallery/transforms.js.map +1 -1
  65. package/build/gallery/v1/gallery.native.js +1 -1
  66. package/build/gallery/v1/gallery.native.js.map +1 -1
  67. package/build/group/edit.js +6 -1
  68. package/build/group/edit.js.map +1 -1
  69. package/build/group/index.js +5 -1
  70. package/build/group/index.js.map +1 -1
  71. package/build/heading/index.js +3 -6
  72. package/build/heading/index.js.map +1 -1
  73. package/build/image/deprecated.js +11 -0
  74. package/build/image/deprecated.js.map +1 -1
  75. package/build/image/edit.native.js +4 -1
  76. package/build/image/edit.native.js.map +1 -1
  77. package/build/image/image.js +35 -71
  78. package/build/image/image.js.map +1 -1
  79. package/build/image/index.js +2 -2
  80. package/build/image/save.js +3 -1
  81. package/build/image/save.js.map +1 -1
  82. package/build/image/view.js +7 -1
  83. package/build/image/view.js.map +1 -1
  84. package/build/list/edit.js +10 -15
  85. package/build/list/edit.js.map +1 -1
  86. package/build/list-item/edit.js +17 -2
  87. package/build/list-item/edit.js.map +1 -1
  88. package/build/list-item/hooks/use-enter.js +5 -3
  89. package/build/list-item/hooks/use-enter.js.map +1 -1
  90. package/build/list-item/hooks/use-enter.native.js +4 -3
  91. package/build/list-item/hooks/use-enter.native.js.map +1 -1
  92. package/build/list-item/hooks/use-indent-list-item.js +2 -3
  93. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  94. package/build/list-item/hooks/use-merge.js +1 -1
  95. package/build/list-item/hooks/use-merge.js.map +1 -1
  96. package/build/list-item/hooks/use-outdent-list-item.js +3 -17
  97. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  98. package/build/list-item/hooks/use-space.js +8 -4
  99. package/build/list-item/hooks/use-space.js.map +1 -1
  100. package/build/list-item/index.js +10 -3
  101. package/build/list-item/index.js.map +1 -1
  102. package/build/media-text/media-container.native.js +3 -0
  103. package/build/media-text/media-container.native.js.map +1 -1
  104. package/build/navigation/constants.js +3 -1
  105. package/build/navigation/constants.js.map +1 -1
  106. package/build/navigation/edit/index.js +5 -1
  107. package/build/navigation/edit/index.js.map +1 -1
  108. package/build/navigation/view.js +25 -1
  109. package/build/navigation/view.js.map +1 -1
  110. package/build/page-list/convert-to-links-modal.js +2 -2
  111. package/build/page-list/convert-to-links-modal.js.map +1 -1
  112. package/build/paragraph/edit.js +54 -32
  113. package/build/paragraph/edit.js.map +1 -1
  114. package/build/paragraph/index.js +2 -4
  115. package/build/paragraph/index.js.map +1 -1
  116. package/build/paragraph/transforms.js +2 -4
  117. package/build/paragraph/transforms.js.map +1 -1
  118. package/build/pattern/edit.js +24 -2
  119. package/build/pattern/edit.js.map +1 -1
  120. package/build/pattern/recursion-detector.js +147 -0
  121. package/build/pattern/recursion-detector.js.map +1 -0
  122. package/build/post-featured-image/edit.js +19 -2
  123. package/build/post-featured-image/edit.js.map +1 -1
  124. package/build/post-featured-image/index.js +4 -0
  125. package/build/post-featured-image/index.js.map +1 -1
  126. package/build/post-title/index.js +1 -3
  127. package/build/post-title/index.js.map +1 -1
  128. package/build/preformatted/index.js +2 -3
  129. package/build/preformatted/index.js.map +1 -1
  130. package/build/pullquote/index.js +5 -7
  131. package/build/pullquote/index.js.map +1 -1
  132. package/build/query/edit/inspector-controls/index.js +3 -1
  133. package/build/query/edit/inspector-controls/index.js.map +1 -1
  134. package/build/query/edit/inspector-controls/taxonomy-controls.js +2 -0
  135. package/build/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  136. package/build/query-pagination-numbers/index.js +1 -1
  137. package/build/query-title/index.js +1 -3
  138. package/build/query-title/index.js.map +1 -1
  139. package/build/quote/index.js +3 -5
  140. package/build/quote/index.js.map +1 -1
  141. package/build/quote/transforms.js +7 -6
  142. package/build/quote/transforms.js.map +1 -1
  143. package/build/search/edit.js +3 -5
  144. package/build/search/edit.js.map +1 -1
  145. package/build/search/index.js +0 -4
  146. package/build/search/index.js.map +1 -1
  147. package/build/site-logo/edit.js +7 -6
  148. package/build/site-logo/edit.js.map +1 -1
  149. package/build/site-title/index.js +1 -5
  150. package/build/site-title/index.js.map +1 -1
  151. package/build/social-link/icons/gravatar.js +22 -0
  152. package/build/social-link/icons/gravatar.js.map +1 -0
  153. package/build/social-link/icons/index.js +11 -0
  154. package/build/social-link/icons/index.js.map +1 -1
  155. package/build/social-link/variations.js +7 -0
  156. package/build/social-link/variations.js.map +1 -1
  157. package/build/spacer/edit.native.js +2 -2
  158. package/build/spacer/edit.native.js.map +1 -1
  159. package/build/table/edit.js +3 -1
  160. package/build/table/edit.js.map +1 -1
  161. package/build/table/index.js +9 -10
  162. package/build/table/index.js.map +1 -1
  163. package/build/table-of-contents/edit.js +2 -2
  164. package/build/table-of-contents/edit.js.map +1 -1
  165. package/build/table-of-contents/index.js +5 -2
  166. package/build/table-of-contents/index.js.map +1 -1
  167. package/build/tag-cloud/edit.js +5 -9
  168. package/build/tag-cloud/edit.js.map +1 -1
  169. package/build/utils/caption.js +90 -0
  170. package/build/utils/caption.js.map +1 -0
  171. package/build/utils/constants.js +16 -0
  172. package/build/utils/constants.js.map +1 -0
  173. package/build/utils/remove-anchor-tag.js +2 -1
  174. package/build/utils/remove-anchor-tag.js.map +1 -1
  175. package/build/verse/index.js +3 -5
  176. package/build/verse/index.js.map +1 -1
  177. package/build/video/deprecated.js +2 -2
  178. package/build/video/edit.js +16 -57
  179. package/build/video/edit.js.map +1 -1
  180. package/build/video/edit.native.js +1 -1
  181. package/build/video/edit.native.js.map +1 -1
  182. package/build/video/index.js +2 -2
  183. package/build-module/audio/edit.js +19 -66
  184. package/build-module/audio/edit.js.map +1 -1
  185. package/build-module/audio/edit.native.js +2 -2
  186. package/build-module/audio/edit.native.js.map +1 -1
  187. package/build-module/audio/index.js +2 -2
  188. package/build-module/block/edit.js +160 -22
  189. package/build-module/block/edit.js.map +1 -1
  190. package/build-module/block/index.js +3 -2
  191. package/build-module/block/index.js.map +1 -1
  192. package/build-module/block/v1/edit.js +108 -0
  193. package/build-module/block/v1/edit.js.map +1 -0
  194. package/build-module/block/{edit.native.js → v1/edit.native.js} +2 -2
  195. package/build-module/block/v1/edit.native.js.map +1 -0
  196. package/build-module/button/index.js +2 -2
  197. package/build-module/button/save.js +1 -1
  198. package/build-module/button/save.js.map +1 -1
  199. package/build-module/code/edit.native.js +14 -16
  200. package/build-module/code/edit.native.js.map +1 -1
  201. package/build-module/code/index.js +2 -2
  202. package/build-module/code/save.js +6 -2
  203. package/build-module/code/save.js.map +1 -1
  204. package/build-module/comments-title/deprecated.js +1 -1
  205. package/build-module/comments-title/index.js +1 -1
  206. package/build-module/cover/edit/inspector-controls.js +1 -1
  207. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  208. package/build-module/cover/edit.native.js +1 -0
  209. package/build-module/cover/edit.native.js.map +1 -1
  210. package/build-module/details/index.js +2 -2
  211. package/build-module/embed/deprecated.js +2 -2
  212. package/build-module/embed/embed-preview.native.js +2 -2
  213. package/build-module/embed/embed-preview.native.js.map +1 -1
  214. package/build-module/embed/icons.js +1 -1
  215. package/build-module/embed/icons.js.map +1 -1
  216. package/build-module/embed/index.js +2 -2
  217. package/build-module/embed/transforms.js +2 -2
  218. package/build-module/embed/util.js +6 -6
  219. package/build-module/embed/util.js.map +1 -1
  220. package/build-module/file/edit.js +20 -28
  221. package/build-module/file/edit.js.map +1 -1
  222. package/build-module/file/edit.native.js +1 -1
  223. package/build-module/file/edit.native.js.map +1 -1
  224. package/build-module/file/index.js +4 -4
  225. package/build-module/file/save.js +4 -1
  226. package/build-module/file/save.js.map +1 -1
  227. package/build-module/form-input/deprecated.js +138 -0
  228. package/build-module/form-input/deprecated.js.map +1 -0
  229. package/build-module/form-input/edit.js +1 -1
  230. package/build-module/form-input/edit.js.map +1 -1
  231. package/build-module/form-input/index.js +4 -2
  232. package/build-module/form-input/index.js.map +1 -1
  233. package/build-module/form-input/save.js +8 -10
  234. package/build-module/form-input/save.js.map +1 -1
  235. package/build-module/gallery/edit.js +41 -61
  236. package/build-module/gallery/edit.js.map +1 -1
  237. package/build-module/gallery/gallery.js +18 -21
  238. package/build-module/gallery/gallery.js.map +1 -1
  239. package/build-module/gallery/gallery.native.js +2 -2
  240. package/build-module/gallery/gallery.native.js.map +1 -1
  241. package/build-module/gallery/index.js +8 -4
  242. package/build-module/gallery/index.js.map +1 -1
  243. package/build-module/gallery/transforms.js +4 -68
  244. package/build-module/gallery/transforms.js.map +1 -1
  245. package/build-module/gallery/v1/gallery.native.js +2 -2
  246. package/build-module/gallery/v1/gallery.native.js.map +1 -1
  247. package/build-module/group/edit.js +6 -1
  248. package/build-module/group/edit.js.map +1 -1
  249. package/build-module/group/index.js +5 -1
  250. package/build-module/group/index.js.map +1 -1
  251. package/build-module/heading/index.js +3 -6
  252. package/build-module/heading/index.js.map +1 -1
  253. package/build-module/image/deprecated.js +11 -0
  254. package/build-module/image/deprecated.js.map +1 -1
  255. package/build-module/image/edit.native.js +5 -2
  256. package/build-module/image/edit.native.js.map +1 -1
  257. package/build-module/image/image.js +35 -71
  258. package/build-module/image/image.js.map +1 -1
  259. package/build-module/image/index.js +2 -2
  260. package/build-module/image/save.js +3 -1
  261. package/build-module/image/save.js.map +1 -1
  262. package/build-module/image/view.js +7 -1
  263. package/build-module/image/view.js.map +1 -1
  264. package/build-module/list/edit.js +10 -15
  265. package/build-module/list/edit.js.map +1 -1
  266. package/build-module/list-item/edit.js +18 -3
  267. package/build-module/list-item/edit.js.map +1 -1
  268. package/build-module/list-item/hooks/use-enter.js +5 -3
  269. package/build-module/list-item/hooks/use-enter.js.map +1 -1
  270. package/build-module/list-item/hooks/use-enter.native.js +4 -3
  271. package/build-module/list-item/hooks/use-enter.native.js.map +1 -1
  272. package/build-module/list-item/hooks/use-indent-list-item.js +2 -3
  273. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  274. package/build-module/list-item/hooks/use-merge.js +1 -1
  275. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  276. package/build-module/list-item/hooks/use-outdent-list-item.js +3 -17
  277. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  278. package/build-module/list-item/hooks/use-space.js +8 -4
  279. package/build-module/list-item/hooks/use-space.js.map +1 -1
  280. package/build-module/list-item/index.js +10 -3
  281. package/build-module/list-item/index.js.map +1 -1
  282. package/build-module/media-text/media-container.native.js +3 -0
  283. package/build-module/media-text/media-container.native.js.map +1 -1
  284. package/build-module/navigation/constants.js +1 -0
  285. package/build-module/navigation/constants.js.map +1 -1
  286. package/build-module/navigation/edit/index.js +7 -3
  287. package/build-module/navigation/edit/index.js.map +1 -1
  288. package/build-module/navigation/view.js +25 -1
  289. package/build-module/navigation/view.js.map +1 -1
  290. package/build-module/page-list/convert-to-links-modal.js +2 -2
  291. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  292. package/build-module/paragraph/edit.js +54 -32
  293. package/build-module/paragraph/edit.js.map +1 -1
  294. package/build-module/paragraph/index.js +2 -4
  295. package/build-module/paragraph/index.js.map +1 -1
  296. package/build-module/paragraph/transforms.js +2 -4
  297. package/build-module/paragraph/transforms.js.map +1 -1
  298. package/build-module/pattern/edit.js +26 -4
  299. package/build-module/pattern/edit.js.map +1 -1
  300. package/build-module/pattern/recursion-detector.js +139 -0
  301. package/build-module/pattern/recursion-detector.js.map +1 -0
  302. package/build-module/post-featured-image/edit.js +19 -2
  303. package/build-module/post-featured-image/edit.js.map +1 -1
  304. package/build-module/post-featured-image/index.js +4 -0
  305. package/build-module/post-featured-image/index.js.map +1 -1
  306. package/build-module/post-title/index.js +1 -3
  307. package/build-module/post-title/index.js.map +1 -1
  308. package/build-module/preformatted/index.js +2 -3
  309. package/build-module/preformatted/index.js.map +1 -1
  310. package/build-module/pullquote/index.js +5 -7
  311. package/build-module/pullquote/index.js.map +1 -1
  312. package/build-module/query/edit/inspector-controls/index.js +3 -1
  313. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  314. package/build-module/query/edit/inspector-controls/taxonomy-controls.js +2 -0
  315. package/build-module/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  316. package/build-module/query-pagination-numbers/index.js +1 -1
  317. package/build-module/query-title/index.js +1 -3
  318. package/build-module/query-title/index.js.map +1 -1
  319. package/build-module/quote/index.js +3 -5
  320. package/build-module/quote/index.js.map +1 -1
  321. package/build-module/quote/transforms.js +7 -6
  322. package/build-module/quote/transforms.js.map +1 -1
  323. package/build-module/search/edit.js +3 -5
  324. package/build-module/search/edit.js.map +1 -1
  325. package/build-module/search/index.js +0 -4
  326. package/build-module/search/index.js.map +1 -1
  327. package/build-module/site-logo/edit.js +7 -6
  328. package/build-module/site-logo/edit.js.map +1 -1
  329. package/build-module/site-title/index.js +1 -5
  330. package/build-module/site-title/index.js.map +1 -1
  331. package/build-module/social-link/icons/gravatar.js +14 -0
  332. package/build-module/social-link/icons/gravatar.js.map +1 -0
  333. package/build-module/social-link/icons/index.js +1 -0
  334. package/build-module/social-link/icons/index.js.map +1 -1
  335. package/build-module/social-link/variations.js +8 -1
  336. package/build-module/social-link/variations.js.map +1 -1
  337. package/build-module/spacer/edit.native.js +2 -2
  338. package/build-module/spacer/edit.native.js.map +1 -1
  339. package/build-module/table/edit.js +3 -1
  340. package/build-module/table/edit.js.map +1 -1
  341. package/build-module/table/index.js +9 -10
  342. package/build-module/table/index.js.map +1 -1
  343. package/build-module/table-of-contents/edit.js +1 -1
  344. package/build-module/table-of-contents/edit.js.map +1 -1
  345. package/build-module/table-of-contents/index.js +5 -1
  346. package/build-module/table-of-contents/index.js.map +1 -1
  347. package/build-module/tag-cloud/edit.js +6 -10
  348. package/build-module/tag-cloud/edit.js.map +1 -1
  349. package/build-module/utils/caption.js +82 -0
  350. package/build-module/utils/caption.js.map +1 -0
  351. package/build-module/utils/constants.js +9 -0
  352. package/build-module/utils/constants.js.map +1 -0
  353. package/build-module/utils/remove-anchor-tag.js +2 -1
  354. package/build-module/utils/remove-anchor-tag.js.map +1 -1
  355. package/build-module/verse/index.js +3 -5
  356. package/build-module/verse/index.js.map +1 -1
  357. package/build-module/video/deprecated.js +2 -2
  358. package/build-module/video/edit.js +21 -62
  359. package/build-module/video/edit.js.map +1 -1
  360. package/build-module/video/edit.native.js +2 -2
  361. package/build-module/video/edit.native.js.map +1 -1
  362. package/build-module/video/index.js +2 -2
  363. package/build-style/button/editor-rtl.css +0 -37
  364. package/build-style/button/editor.css +0 -37
  365. package/build-style/button/style-rtl.css +6 -6
  366. package/build-style/button/style.css +6 -6
  367. package/build-style/editor-rtl.css +3 -55
  368. package/build-style/editor.css +3 -55
  369. package/build-style/navigation/editor-rtl.css +2 -4
  370. package/build-style/navigation/editor.css +2 -4
  371. package/build-style/navigation/style-rtl.css +14 -18
  372. package/build-style/navigation/style.css +14 -18
  373. package/build-style/search/style-rtl.css +26 -27
  374. package/build-style/search/style.css +26 -27
  375. package/build-style/social-links/style-rtl.css +14 -2
  376. package/build-style/social-links/style.css +14 -2
  377. package/build-style/style-rtl.css +60 -53
  378. package/build-style/style.css +60 -53
  379. package/build-style/table/editor-rtl.css +1 -14
  380. package/build-style/table/editor.css +1 -14
  381. package/package.json +32 -32
  382. package/src/audio/block.json +2 -2
  383. package/src/audio/edit.js +29 -92
  384. package/src/audio/edit.native.js +2 -1
  385. package/src/audio/test/__snapshots__/edit.native.js.snap +12 -0
  386. package/src/audio/test/edit.native.js +29 -0
  387. package/src/block/edit.js +218 -37
  388. package/src/block/index.js +3 -2
  389. package/src/block/index.php +48 -0
  390. package/src/block/v1/edit.js +163 -0
  391. package/src/block/{edit.native.js → v1/edit.native.js} +2 -2
  392. package/src/button/block.json +2 -2
  393. package/src/button/editor.scss +0 -43
  394. package/src/button/save.js +1 -1
  395. package/src/button/style.scss +6 -6
  396. package/src/buttons/test/__snapshots__/edit.native.js.snap +6 -0
  397. package/src/buttons/test/edit.native.js +49 -0
  398. package/src/code/block.json +2 -2
  399. package/src/code/edit.native.js +11 -13
  400. package/src/code/save.js +4 -1
  401. package/src/code/test/edit.native.js +2 -2
  402. package/src/comments-title/block.json +1 -1
  403. package/src/cover/edit/inspector-controls.js +1 -1
  404. package/src/cover/edit.native.js +1 -0
  405. package/src/cover/test/edit.native.js +7 -1
  406. package/src/details/block.json +2 -2
  407. package/src/embed/block.json +2 -2
  408. package/src/embed/embed-preview.native.js +2 -1
  409. package/src/embed/icons.js +1 -1
  410. package/src/embed/util.js +2 -2
  411. package/src/file/block.json +4 -4
  412. package/src/file/edit.js +18 -25
  413. package/src/file/edit.native.js +1 -1
  414. package/src/file/save.js +5 -1
  415. package/src/form-input/block.json +2 -2
  416. package/src/form-input/deprecated.js +142 -0
  417. package/src/form-input/edit.js +1 -1
  418. package/src/form-input/index.js +2 -0
  419. package/src/form-input/save.js +27 -24
  420. package/src/gallery/block.json +8 -4
  421. package/src/gallery/edit.js +70 -98
  422. package/src/gallery/gallery.js +22 -36
  423. package/src/gallery/gallery.native.js +6 -2
  424. package/src/gallery/index.php +15 -0
  425. package/src/gallery/transforms.js +2 -55
  426. package/src/gallery/v1/gallery.native.js +2 -1
  427. package/src/group/block.json +5 -1
  428. package/src/group/edit.js +4 -1
  429. package/src/heading/block.json +3 -6
  430. package/src/image/block.json +2 -2
  431. package/src/image/deprecated.js +8 -0
  432. package/src/image/edit.native.js +5 -3
  433. package/src/image/image.js +77 -127
  434. package/src/image/index.php +1 -6
  435. package/src/image/save.js +3 -1
  436. package/src/image/view.js +5 -2
  437. package/src/list/edit.js +27 -35
  438. package/src/list-item/block.json +10 -3
  439. package/src/list-item/edit.js +18 -2
  440. package/src/list-item/hooks/use-enter.js +63 -62
  441. package/src/list-item/hooks/use-enter.native.js +9 -5
  442. package/src/list-item/hooks/use-indent-list-item.js +43 -53
  443. package/src/list-item/hooks/use-merge.js +1 -1
  444. package/src/list-item/hooks/use-outdent-list-item.js +50 -69
  445. package/src/list-item/hooks/use-space.js +7 -4
  446. package/src/media-text/media-container.native.js +3 -1
  447. package/src/navigation/constants.js +2 -0
  448. package/src/navigation/edit/index.js +18 -3
  449. package/src/navigation/editor.scss +1 -1
  450. package/src/navigation/index.php +1 -1
  451. package/src/navigation/style.scss +18 -16
  452. package/src/navigation/view.js +29 -3
  453. package/src/navigation-link/test/__snapshots__/hooks.js.snap +6 -3
  454. package/src/page-list/convert-to-links-modal.js +2 -2
  455. package/src/paragraph/block.json +2 -4
  456. package/src/paragraph/edit.js +53 -40
  457. package/src/paragraph/test/__snapshots__/edit.native.js.snap +12 -0
  458. package/src/paragraph/test/edit.native.js +114 -0
  459. package/src/pattern/edit.js +35 -3
  460. package/src/pattern/index.php +16 -0
  461. package/src/pattern/recursion-detector.js +145 -0
  462. package/src/pattern/test/index.js +74 -0
  463. package/src/post-featured-image/block.json +4 -0
  464. package/src/post-featured-image/edit.js +32 -1
  465. package/src/post-featured-image/index.php +31 -0
  466. package/src/post-title/block.json +1 -3
  467. package/src/preformatted/block.json +2 -3
  468. package/src/pullquote/block.json +5 -7
  469. package/src/query/edit/inspector-controls/index.js +2 -0
  470. package/src/query/edit/inspector-controls/taxonomy-controls.js +2 -0
  471. package/src/query-pagination-numbers/block.json +1 -1
  472. package/src/query-title/block.json +1 -3
  473. package/src/quote/block.json +3 -5
  474. package/src/quote/transforms.js +12 -11
  475. package/src/search/block.json +0 -4
  476. package/src/search/edit.js +2 -8
  477. package/src/search/index.php +3 -7
  478. package/src/search/style.scss +27 -29
  479. package/src/site-logo/edit.js +3 -4
  480. package/src/site-title/block.json +1 -5
  481. package/src/social-link/icons/gravatar.js +10 -0
  482. package/src/social-link/icons/index.js +1 -0
  483. package/src/social-link/index.php +5 -1
  484. package/src/social-link/socials-with-bg.scss +5 -0
  485. package/src/social-link/socials-without-bg.scss +4 -0
  486. package/src/social-link/variations.js +7 -0
  487. package/src/social-links/style.scss +14 -8
  488. package/src/spacer/edit.native.js +4 -2
  489. package/src/table/block.json +9 -10
  490. package/src/table/edit.js +3 -1
  491. package/src/table/editor.scss +1 -17
  492. package/src/table-of-contents/edit.js +1 -1
  493. package/src/table-of-contents/index.js +5 -1
  494. package/src/tag-cloud/edit.js +7 -7
  495. package/src/template-part/index.php +6 -0
  496. package/src/utils/caption.js +108 -0
  497. package/src/utils/constants.js +8 -0
  498. package/src/utils/remove-anchor-tag.js +2 -1
  499. package/src/verse/block.json +3 -5
  500. package/src/video/block.json +2 -2
  501. package/src/video/edit.js +40 -100
  502. package/src/video/edit.native.js +2 -1
  503. package/build/block/edit.native.js.map +0 -1
  504. package/build/table-of-contents/icon.js +0 -22
  505. package/build/table-of-contents/icon.js.map +0 -1
  506. package/build-module/block/edit.native.js.map +0 -1
  507. package/build-module/table-of-contents/icon.js +0 -15
  508. package/build-module/table-of-contents/icon.js.map +0 -1
  509. package/src/table-of-contents/icon.js +0 -18
@@ -7,11 +7,13 @@ import classnames from 'classnames';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { useEntityBlockEditor, useEntityProp, useEntityRecord } from '@wordpress/core-data';
11
- import { Placeholder, Spinner, TextControl, PanelBody } from '@wordpress/components';
10
+ import { useRegistry, useSelect, useDispatch } from '@wordpress/data';
11
+ import { useRef, useMemo, useEffect } from '@wordpress/element';
12
+ import { useEntityRecord, store as coreStore } from '@wordpress/core-data';
13
+ import { Placeholder, Spinner, ToolbarButton, ToolbarGroup } from '@wordpress/components';
12
14
  import { __ } from '@wordpress/i18n';
13
- import { useInnerBlocksProps, __experimentalRecursionProvider as RecursionProvider, __experimentalUseHasRecursion as useHasRecursion, InnerBlocks, InspectorControls, useBlockProps, Warning, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
14
- import { useRef, useMemo } from '@wordpress/element';
15
+ import { useInnerBlocksProps, __experimentalRecursionProvider as RecursionProvider, __experimentalUseHasRecursion as useHasRecursion, InnerBlocks, useBlockProps, Warning, privateApis as blockEditorPrivateApis, store as blockEditorStore, BlockControls } from '@wordpress/block-editor';
16
+ import { parse, cloneBlock } from '@wordpress/blocks';
15
17
 
16
18
  /**
17
19
  * Internal dependencies
@@ -20,6 +22,12 @@ import { unlock } from '../lock-unlock';
20
22
  const {
21
23
  useLayoutClasses
22
24
  } = unlock(blockEditorPrivateApis);
25
+ function isPartiallySynced(block) {
26
+ return 'core/paragraph' === block.name && !!block.attributes.metadata?.bindings && Object.values(block.attributes.metadata.bindings).some(binding => binding.source.name === 'pattern_attributes');
27
+ }
28
+ function getPartiallySyncedAttributes(block) {
29
+ return Object.entries(block.attributes.metadata.bindings).filter(([, binding]) => binding.source.name === 'pattern_attributes').map(([attributeKey]) => attributeKey);
30
+ }
23
31
  const fullAlignments = ['full', 'wide', 'left', 'right'];
24
32
  const useInferredLayout = (blocks, parentLayout) => {
25
33
  const initialInferredAlignmentRef = useRef();
@@ -45,27 +53,138 @@ const useInferredLayout = (blocks, parentLayout) => {
45
53
  };
46
54
  }, [blocks, parentLayout]);
47
55
  };
56
+ function applyInitialOverrides(blocks, overrides = {}, defaultValues) {
57
+ return blocks.map(block => {
58
+ const innerBlocks = applyInitialOverrides(block.innerBlocks, overrides, defaultValues);
59
+ const blockId = block.attributes.metadata?.id;
60
+ if (!isPartiallySynced(block) || !blockId) return {
61
+ ...block,
62
+ innerBlocks
63
+ };
64
+ const attributes = getPartiallySyncedAttributes(block);
65
+ const newAttributes = {
66
+ ...block.attributes
67
+ };
68
+ for (const attributeKey of attributes) {
69
+ var _defaultValues$blockI;
70
+ (_defaultValues$blockI = defaultValues[blockId]) !== null && _defaultValues$blockI !== void 0 ? _defaultValues$blockI : defaultValues[blockId] = {};
71
+ defaultValues[blockId][attributeKey] = block.attributes[attributeKey];
72
+ if (overrides[blockId]) {
73
+ newAttributes[attributeKey] = overrides[blockId][attributeKey];
74
+ }
75
+ }
76
+ return {
77
+ ...block,
78
+ attributes: newAttributes,
79
+ innerBlocks
80
+ };
81
+ });
82
+ }
83
+ function getOverridesFromBlocks(blocks, defaultValues) {
84
+ /** @type {Record<string, Record<string, unknown>>} */
85
+ const overrides = {};
86
+ for (const block of blocks) {
87
+ Object.assign(overrides, getOverridesFromBlocks(block.innerBlocks, defaultValues));
88
+ const blockId = block.attributes.metadata?.id;
89
+ if (!isPartiallySynced(block) || !blockId) continue;
90
+ const attributes = getPartiallySyncedAttributes(block);
91
+ for (const attributeKey of attributes) {
92
+ if (block.attributes[attributeKey] !== defaultValues[blockId][attributeKey]) {
93
+ var _overrides$blockId;
94
+ (_overrides$blockId = overrides[blockId]) !== null && _overrides$blockId !== void 0 ? _overrides$blockId : overrides[blockId] = {};
95
+ overrides[blockId][attributeKey] = block.attributes[attributeKey];
96
+ }
97
+ }
98
+ }
99
+ return Object.keys(overrides).length > 0 ? overrides : undefined;
100
+ }
101
+ function setBlockEditMode(setEditMode, blocks, mode) {
102
+ blocks.forEach(block => {
103
+ const editMode = mode || (isPartiallySynced(block) ? 'contentOnly' : 'disabled');
104
+ setEditMode(block.clientId, editMode);
105
+ setBlockEditMode(setEditMode, block.innerBlocks, mode);
106
+ });
107
+ }
48
108
  export default function ReusableBlockEdit({
49
109
  name,
50
110
  attributes: {
51
- ref
111
+ ref,
112
+ overrides
52
113
  },
53
- __unstableParentLayout: parentLayout
114
+ __unstableParentLayout: parentLayout,
115
+ clientId: patternClientId,
116
+ setAttributes
54
117
  }) {
118
+ const registry = useRegistry();
55
119
  const hasAlreadyRendered = useHasRecursion(ref);
56
120
  const {
57
121
  record,
122
+ editedRecord,
58
123
  hasResolved
59
124
  } = useEntityRecord('postType', 'wp_block', ref);
60
125
  const isMissing = hasResolved && !record;
61
- const [blocks, onInput, onChange] = useEntityBlockEditor('postType', 'wp_block', {
62
- id: ref
63
- });
64
- const [title, setTitle] = useEntityProp('postType', 'wp_block', 'title', ref);
126
+ const initialOverrides = useRef(overrides);
127
+ const defaultValuesRef = useRef({});
128
+ const {
129
+ replaceInnerBlocks,
130
+ __unstableMarkNextChangeAsNotPersistent,
131
+ setBlockEditingMode
132
+ } = useDispatch(blockEditorStore);
133
+ const {
134
+ syncDerivedUpdates
135
+ } = unlock(useDispatch(blockEditorStore));
136
+ const {
137
+ innerBlocks,
138
+ userCanEdit,
139
+ getBlockEditingMode,
140
+ getPostLinkProps
141
+ } = useSelect(select => {
142
+ const {
143
+ canUser
144
+ } = select(coreStore);
145
+ const {
146
+ getBlocks,
147
+ getBlockEditingMode: editingMode,
148
+ getSettings
149
+ } = select(blockEditorStore);
150
+ const blocks = getBlocks(patternClientId);
151
+ const canEdit = canUser('update', 'blocks', ref);
152
+
153
+ // For editing link to the site editor if the theme and user permissions support it.
154
+ return {
155
+ innerBlocks: blocks,
156
+ userCanEdit: canEdit,
157
+ getBlockEditingMode: editingMode,
158
+ getPostLinkProps: getSettings().getPostLinkProps
159
+ };
160
+ }, [patternClientId, ref]);
161
+ const editOriginalProps = getPostLinkProps ? getPostLinkProps({
162
+ postId: ref,
163
+ postType: 'wp_block',
164
+ canvas: 'edit'
165
+ }) : {};
166
+ useEffect(() => setBlockEditMode(setBlockEditingMode, innerBlocks), [innerBlocks, setBlockEditingMode]);
167
+
168
+ // Apply the initial overrides from the pattern block to the inner blocks.
169
+ useEffect(() => {
170
+ var _editedRecord$blocks$;
171
+ const initialBlocks = // Clone the blocks to generate new client IDs.
172
+ (_editedRecord$blocks$ = editedRecord.blocks?.map(block => cloneBlock(block))) !== null && _editedRecord$blocks$ !== void 0 ? _editedRecord$blocks$ : editedRecord.content && typeof editedRecord.content !== 'function' ? parse(editedRecord.content) : [];
173
+ defaultValuesRef.current = {};
174
+ const editingMode = getBlockEditingMode(patternClientId);
175
+ // Replace the contents of the blocks with the overrides.
176
+ registry.batch(() => {
177
+ setBlockEditingMode(patternClientId, 'default');
178
+ syncDerivedUpdates(() => {
179
+ replaceInnerBlocks(patternClientId, applyInitialOverrides(initialBlocks, initialOverrides.current, defaultValuesRef.current));
180
+ });
181
+ setBlockEditingMode(patternClientId, editingMode);
182
+ });
183
+ }, [__unstableMarkNextChangeAsNotPersistent, patternClientId, editedRecord, replaceInnerBlocks, registry, getBlockEditingMode, setBlockEditingMode, syncDerivedUpdates]);
65
184
  const {
66
185
  alignment,
67
186
  layout
68
- } = useInferredLayout(blocks, parentLayout);
187
+ } = useInferredLayout(innerBlocks, parentLayout);
69
188
  const layoutClasses = useLayoutClasses({
70
189
  layout
71
190
  }, name);
@@ -75,12 +194,34 @@ export default function ReusableBlockEdit({
75
194
  })
76
195
  });
77
196
  const innerBlocksProps = useInnerBlocksProps(blockProps, {
78
- value: blocks,
197
+ templateLock: 'all',
79
198
  layout,
80
- onInput,
81
- onChange,
82
- renderAppender: blocks?.length ? undefined : InnerBlocks.ButtonBlockAppender
199
+ renderAppender: innerBlocks?.length ? undefined : InnerBlocks.ButtonBlockAppender
83
200
  });
201
+
202
+ // Sync the `overrides` attribute from the updated blocks to the pattern block.
203
+ // `syncDerivedUpdates` is used here to avoid creating an additional undo level.
204
+ useEffect(() => {
205
+ const {
206
+ getBlocks
207
+ } = registry.select(blockEditorStore);
208
+ let prevBlocks = getBlocks(patternClientId);
209
+ return registry.subscribe(() => {
210
+ const blocks = getBlocks(patternClientId);
211
+ if (blocks !== prevBlocks) {
212
+ prevBlocks = blocks;
213
+ syncDerivedUpdates(() => {
214
+ setAttributes({
215
+ overrides: getOverridesFromBlocks(blocks, defaultValuesRef.current)
216
+ });
217
+ });
218
+ }
219
+ }, blockEditorStore);
220
+ }, [syncDerivedUpdates, patternClientId, registry, setAttributes]);
221
+ const handleEditOriginal = event => {
222
+ setBlockEditMode(setBlockEditingMode, innerBlocks, 'default');
223
+ editOriginalProps.onClick(event);
224
+ };
84
225
  let children = null;
85
226
  if (hasAlreadyRendered) {
86
227
  children = createElement(Warning, null, __('Block cannot be rendered inside itself.'));
@@ -93,13 +234,10 @@ export default function ReusableBlockEdit({
93
234
  }
94
235
  return createElement(RecursionProvider, {
95
236
  uniqueId: ref
96
- }, createElement(InspectorControls, null, createElement(PanelBody, null, createElement(TextControl, {
97
- label: __('Name'),
98
- value: title,
99
- onChange: setTitle,
100
- __nextHasNoMarginBottom: true,
101
- __next40pxDefaultSize: true
102
- }))), children === null ? createElement("div", {
237
+ }, userCanEdit && editOriginalProps && createElement(BlockControls, null, createElement(ToolbarGroup, null, createElement(ToolbarButton, {
238
+ href: editOriginalProps.href,
239
+ onClick: handleEditOriginal
240
+ }, __('Edit original')))), children === null ? createElement("div", {
103
241
  ...innerBlocksProps
104
242
  }) : createElement("div", {
105
243
  ...blockProps
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useEntityBlockEditor","useEntityProp","useEntityRecord","Placeholder","Spinner","TextControl","PanelBody","__","useInnerBlocksProps","__experimentalRecursionProvider","RecursionProvider","__experimentalUseHasRecursion","useHasRecursion","InnerBlocks","InspectorControls","useBlockProps","Warning","privateApis","blockEditorPrivateApis","useRef","useMemo","unlock","useLayoutClasses","fullAlignments","useInferredLayout","blocks","parentLayout","initialInferredAlignmentRef","length","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","block","includes","attributes","align","layout","ReusableBlockEdit","name","ref","__unstableParentLayout","hasAlreadyRendered","record","hasResolved","isMissing","onInput","onChange","id","title","setTitle","layoutClasses","blockProps","className","innerBlocksProps","value","renderAppender","ButtonBlockAppender","children","createElement","uniqueId","label","__nextHasNoMarginBottom","__next40pxDefaultSize"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseEntityBlockEditor,\n\tuseEntityProp,\n\tuseEntityRecord,\n} from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tTextControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n\tInnerBlocks,\n\tInspectorControls,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { useRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref },\n\t__unstableParentLayout: parentLayout,\n} ) {\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_block',\n\t\t{ id: ref }\n\t);\n\n\tconst [ title, setTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_block',\n\t\t'title',\n\t\tref\n\t);\n\n\tconst { alignment, layout } = useInferredLayout( blocks, parentLayout );\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tlayout,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: blocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\tlet children = null;\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","useRegistry","useSelect","useDispatch","useRef","useMemo","useEffect","useEntityRecord","store","coreStore","Placeholder","Spinner","ToolbarButton","ToolbarGroup","__","useInnerBlocksProps","__experimentalRecursionProvider","RecursionProvider","__experimentalUseHasRecursion","useHasRecursion","InnerBlocks","useBlockProps","Warning","privateApis","blockEditorPrivateApis","blockEditorStore","BlockControls","parse","cloneBlock","unlock","useLayoutClasses","isPartiallySynced","block","name","attributes","metadata","bindings","Object","values","some","binding","source","getPartiallySyncedAttributes","entries","filter","map","attributeKey","fullAlignments","useInferredLayout","blocks","parentLayout","initialInferredAlignmentRef","length","alignment","current","undefined","isConstrained","type","hasFullAlignment","includes","align","layout","applyInitialOverrides","overrides","defaultValues","innerBlocks","blockId","id","newAttributes","_defaultValues$blockI","getOverridesFromBlocks","assign","_overrides$blockId","keys","setBlockEditMode","setEditMode","mode","forEach","editMode","clientId","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","hasAlreadyRendered","record","editedRecord","hasResolved","isMissing","initialOverrides","defaultValuesRef","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","syncDerivedUpdates","userCanEdit","getBlockEditingMode","getPostLinkProps","select","canUser","getBlocks","editingMode","getSettings","canEdit","editOriginalProps","postId","postType","canvas","_editedRecord$blocks$","initialBlocks","content","batch","layoutClasses","blockProps","className","innerBlocksProps","templateLock","renderAppender","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","event","onClick","children","createElement","uniqueId","href"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { parse, cloneBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\n\nfunction isPartiallySynced( block ) {\n\treturn (\n\t\t'core/paragraph' === block.name &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source.name === 'pattern_attributes'\n\t\t)\n\t);\n}\nfunction getPartiallySyncedAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source.name === 'pattern_attributes'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction applyInitialOverrides( blocks, overrides = {}, defaultValues ) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialOverrides(\n\t\t\tblock.innerBlocks,\n\t\t\toverrides,\n\t\t\tdefaultValues\n\t\t);\n\t\tconst blockId = block.attributes.metadata?.id;\n\t\tif ( ! isPartiallySynced( block ) || ! blockId )\n\t\t\treturn { ...block, innerBlocks };\n\t\tconst attributes = getPartiallySyncedAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ blockId ] ??= {};\n\t\t\tdefaultValues[ blockId ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\t\t\tif ( overrides[ blockId ] ) {\n\t\t\t\tnewAttributes[ attributeKey ] =\n\t\t\t\t\toverrides[ blockId ][ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction getOverridesFromBlocks( blocks, defaultValues ) {\n\t/** @type {Record<string, Record<string, unknown>>} */\n\tconst overrides = {};\n\tfor ( const block of blocks ) {\n\t\tObject.assign(\n\t\t\toverrides,\n\t\t\tgetOverridesFromBlocks( block.innerBlocks, defaultValues )\n\t\t);\n\t\tconst blockId = block.attributes.metadata?.id;\n\t\tif ( ! isPartiallySynced( block ) || ! blockId ) continue;\n\t\tconst attributes = getPartiallySyncedAttributes( block );\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\tblock.attributes[ attributeKey ] !==\n\t\t\t\tdefaultValues[ blockId ][ attributeKey ]\n\t\t\t) {\n\t\t\t\toverrides[ blockId ] ??= {};\n\t\t\t\toverrides[ blockId ][ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( overrides ).length > 0 ? overrides : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode || ( isPartiallySynced( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\t\tsetBlockEditMode( setEditMode, block.innerBlocks, mode );\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, overrides },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\tconst initialOverrides = useRef( overrides );\n\tconst defaultValuesRef = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst { innerBlocks, userCanEdit, getBlockEditingMode, getPostLinkProps } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { canUser } = select( coreStore );\n\t\t\t\tconst {\n\t\t\t\t\tgetBlocks,\n\t\t\t\t\tgetBlockEditingMode: editingMode,\n\t\t\t\t\tgetSettings,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\t\treturn {\n\t\t\t\t\tinnerBlocks: blocks,\n\t\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\t\tgetBlockEditingMode: editingMode,\n\t\t\t\t\tgetPostLinkProps: getSettings().getPostLinkProps,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ patternClientId, ref ]\n\t\t);\n\n\tconst editOriginalProps = getPostLinkProps\n\t\t? getPostLinkProps( {\n\t\t\t\tpostId: ref,\n\t\t\t\tpostType: 'wp_block',\n\t\t\t\tcanvas: 'edit',\n\t\t } )\n\t\t: {};\n\n\tuseEffect(\n\t\t() => setBlockEditMode( setBlockEditingMode, innerBlocks ),\n\t\t[ innerBlocks, setBlockEditingMode ]\n\t);\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\tconst initialBlocks =\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] );\n\n\t\tdefaultValuesRef.current = {};\n\t\tconst editingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tpatternClientId,\n\t\t\t\t\tapplyInitialOverrides(\n\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\tinitialOverrides.current,\n\t\t\t\t\t\tdefaultValuesRef.current\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, editingMode );\n\t\t} );\n\t}, [\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\teditedRecord,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `overrides` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\toverrides: getOverridesFromBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultValuesRef.current\n\t\t\t\t\t\t),\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\t\t}, blockEditorStore );\n\t}, [ syncDerivedUpdates, patternClientId, registry, setAttributes ] );\n\n\tconst handleEditOriginal = ( event ) => {\n\t\tsetBlockEditMode( setBlockEditingMode, innerBlocks, 'default' );\n\t\teditOriginalProps.onClick( event );\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && editOriginalProps && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\thref={ editOriginalProps.href }\n\t\t\t\t\t\t\tonClick={ handleEditOriginal }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
@@ -28,13 +28,14 @@ const metadata = {
28
28
  renaming: false
29
29
  }
30
30
  };
31
- import edit from './edit';
31
+ import editV1 from './v1/edit';
32
+ import editV2 from './edit';
32
33
  const {
33
34
  name
34
35
  } = metadata;
35
36
  export { metadata, name };
36
37
  export const settings = {
37
- edit,
38
+ edit: window.__experimentalPatternPartialSyncing ? editV2 : editV1,
38
39
  icon
39
40
  };
40
41
  export const init = () => initBlock({
@@ -1 +1 @@
1
- {"version":3,"names":["symbol","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","ref","type","supports","customClassName","html","inserter","renaming","edit","settings","init"],"sources":["@wordpress/block-library/src/block/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { symbol as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\tedit,\n\ticon,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,IAAIC,IAAI,QAAQ,kBAAkB;;AAEjD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,GAAA;MAAAC,IAAA;IAAA;EAAA;EAAAC,QAAA;IAAAC,eAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;EAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAEd;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMe,QAAQ,GAAG;EACvBD,IAAI;EACJnB;AACD,CAAC;AAED,OAAO,MAAMqB,IAAI,GAAGA,CAAA,KAAMpB,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEkB;AAAS,CAAE,CAAC"}
1
+ {"version":3,"names":["symbol","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","ref","type","supports","customClassName","html","inserter","renaming","editV1","editV2","settings","edit","window","__experimentalPatternPartialSyncing","init"],"sources":["@wordpress/block-library/src/block/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { symbol as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport editV1 from './v1/edit';\nimport editV2 from './edit';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\tedit: window.__experimentalPatternPartialSyncing ? editV2 : editV1,\n\ticon,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,IAAIC,IAAI,QAAQ,kBAAkB;;AAEjD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,GAAA;MAAAC,IAAA;IAAA;EAAA;EAAAC,QAAA;IAAAC,eAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;EAAA;AAAA;AAE5C,OAAOC,MAAM,MAAM,WAAW;AAC9B,OAAOC,MAAM,MAAM,QAAQ;AAE3B,MAAM;EAAEf;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMgB,QAAQ,GAAG;EACvBC,IAAI,EAAEC,MAAM,CAACC,mCAAmC,GAAGJ,MAAM,GAAGD,MAAM;EAClEnB;AACD,CAAC;AAED,OAAO,MAAMyB,IAAI,GAAGA,CAAA,KAAMxB,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEmB;AAAS,CAAE,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { createElement } from "react";
2
+ /**
3
+ * External dependencies
4
+ */
5
+ import classnames from 'classnames';
6
+
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { useEntityBlockEditor, useEntityProp, useEntityRecord } from '@wordpress/core-data';
11
+ import { Placeholder, Spinner, TextControl, PanelBody } from '@wordpress/components';
12
+ import { __ } from '@wordpress/i18n';
13
+ import { useInnerBlocksProps, __experimentalRecursionProvider as RecursionProvider, __experimentalUseHasRecursion as useHasRecursion, InnerBlocks, InspectorControls, useBlockProps, Warning, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
14
+ import { useRef, useMemo } from '@wordpress/element';
15
+
16
+ /**
17
+ * Internal dependencies
18
+ */
19
+ import { unlock } from '../../lock-unlock';
20
+ const {
21
+ useLayoutClasses
22
+ } = unlock(blockEditorPrivateApis);
23
+ const fullAlignments = ['full', 'wide', 'left', 'right'];
24
+ const useInferredLayout = (blocks, parentLayout) => {
25
+ const initialInferredAlignmentRef = useRef();
26
+ return useMemo(() => {
27
+ // Exit early if the pattern's blocks haven't loaded yet.
28
+ if (!blocks?.length) {
29
+ return {};
30
+ }
31
+ let alignment = initialInferredAlignmentRef.current;
32
+
33
+ // Only track the initial alignment so that temporarily removed
34
+ // alignments can be reapplied.
35
+ if (alignment === undefined) {
36
+ const isConstrained = parentLayout?.type === 'constrained';
37
+ const hasFullAlignment = blocks.some(block => fullAlignments.includes(block.attributes.align));
38
+ alignment = isConstrained && hasFullAlignment ? 'full' : null;
39
+ initialInferredAlignmentRef.current = alignment;
40
+ }
41
+ const layout = alignment ? parentLayout : undefined;
42
+ return {
43
+ alignment,
44
+ layout
45
+ };
46
+ }, [blocks, parentLayout]);
47
+ };
48
+ export default function ReusableBlockEdit({
49
+ name,
50
+ attributes: {
51
+ ref
52
+ },
53
+ __unstableParentLayout: parentLayout
54
+ }) {
55
+ const hasAlreadyRendered = useHasRecursion(ref);
56
+ const {
57
+ record,
58
+ hasResolved
59
+ } = useEntityRecord('postType', 'wp_block', ref);
60
+ const isMissing = hasResolved && !record;
61
+ const [blocks, onInput, onChange] = useEntityBlockEditor('postType', 'wp_block', {
62
+ id: ref
63
+ });
64
+ const [title, setTitle] = useEntityProp('postType', 'wp_block', 'title', ref);
65
+ const {
66
+ alignment,
67
+ layout
68
+ } = useInferredLayout(blocks, parentLayout);
69
+ const layoutClasses = useLayoutClasses({
70
+ layout
71
+ }, name);
72
+ const blockProps = useBlockProps({
73
+ className: classnames('block-library-block__reusable-block-container', layout && layoutClasses, {
74
+ [`align${alignment}`]: alignment
75
+ })
76
+ });
77
+ const innerBlocksProps = useInnerBlocksProps(blockProps, {
78
+ value: blocks,
79
+ layout,
80
+ onInput,
81
+ onChange,
82
+ renderAppender: blocks?.length ? undefined : InnerBlocks.ButtonBlockAppender
83
+ });
84
+ let children = null;
85
+ if (hasAlreadyRendered) {
86
+ children = createElement(Warning, null, __('Block cannot be rendered inside itself.'));
87
+ }
88
+ if (isMissing) {
89
+ children = createElement(Warning, null, __('Block has been deleted or is unavailable.'));
90
+ }
91
+ if (!hasResolved) {
92
+ children = createElement(Placeholder, null, createElement(Spinner, null));
93
+ }
94
+ return createElement(RecursionProvider, {
95
+ uniqueId: ref
96
+ }, createElement(InspectorControls, null, createElement(PanelBody, null, createElement(TextControl, {
97
+ label: __('Name'),
98
+ value: title,
99
+ onChange: setTitle,
100
+ __nextHasNoMarginBottom: true,
101
+ __next40pxDefaultSize: true
102
+ }))), children === null ? createElement("div", {
103
+ ...innerBlocksProps
104
+ }) : createElement("div", {
105
+ ...blockProps
106
+ }, children));
107
+ }
108
+ //# sourceMappingURL=edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["classnames","useEntityBlockEditor","useEntityProp","useEntityRecord","Placeholder","Spinner","TextControl","PanelBody","__","useInnerBlocksProps","__experimentalRecursionProvider","RecursionProvider","__experimentalUseHasRecursion","useHasRecursion","InnerBlocks","InspectorControls","useBlockProps","Warning","privateApis","blockEditorPrivateApis","useRef","useMemo","unlock","useLayoutClasses","fullAlignments","useInferredLayout","blocks","parentLayout","initialInferredAlignmentRef","length","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","block","includes","attributes","align","layout","ReusableBlockEdit","name","ref","__unstableParentLayout","hasAlreadyRendered","record","hasResolved","isMissing","onInput","onChange","id","title","setTitle","layoutClasses","blockProps","className","innerBlocksProps","value","renderAppender","ButtonBlockAppender","children","createElement","uniqueId","label","__nextHasNoMarginBottom","__next40pxDefaultSize"],"sources":["@wordpress/block-library/src/block/v1/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseEntityBlockEditor,\n\tuseEntityProp,\n\tuseEntityRecord,\n} from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tTextControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n\tInnerBlocks,\n\tInspectorControls,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { useRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref },\n\t__unstableParentLayout: parentLayout,\n} ) {\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_block',\n\t\t{ id: ref }\n\t);\n\n\tconst [ title, setTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_block',\n\t\t'title',\n\t\tref\n\t);\n\n\tconst { alignment, layout } = useInferredLayout( blocks, parentLayout );\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tlayout,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: blocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
@@ -22,8 +22,8 @@ import { store as noticesStore } from '@wordpress/notices';
22
22
  /**
23
23
  * Internal dependencies
24
24
  */
25
- import styles from './editor.scss';
26
- import EditTitle from './edit-title';
25
+ import styles from '../editor.scss';
26
+ import EditTitle from '../edit-title';
27
27
  export default function ReusableBlockEdit({
28
28
  attributes: {
29
29
  ref
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ActivityIndicator","Platform","Text","TouchableWithoutFeedback","View","useState","useCallback","useEntityBlockEditor","useEntityProp","store","coreStore","BottomSheet","Icon","Disabled","TextControl","useSelect","useDispatch","__","sprintf","__experimentalRecursionProvider","RecursionProvider","__experimentalUseHasRecursion","useHasRecursion","InnerBlocks","Warning","blockEditorStore","usePreferredColorSchemeStyle","help","reusableBlocksStore","editorStore","noticesStore","styles","EditTitle","ReusableBlockEdit","attributes","ref","clientId","isSelected","hasAlreadyRendered","showHelp","setShowHelp","infoTextStyle","infoText","infoTextDark","infoTitleStyle","infoTitle","infoTitleDark","infoSheetIconStyle","infoSheetIcon","infoSheetIconDark","infoDescriptionStyle","infoDescription","infoDescriptionDark","actionButtonStyle","actionButton","actionButtonDark","spinnerStyle","spinner","spinnerDark","hasResolved","isEditing","isMissing","select","persistedBlock","getEntityRecord","hasResolvedBlock","hasFinishedResolution","getBlockCount","__experimentalIsEditingReusableBlock","innerBlockCount","hostAppNamespace","getEditorSettings","createSuccessNotice","__experimentalConvertBlockToStatic","convertBlockToStatic","clearSelectedBlock","blocks","onInput","onChange","id","title","openSheet","closeSheet","onConvertToRegularBlocks","successNotice","setImmediate","renderSheet","OS","createElement","isVisible","hideHeader","onClose","style","infoContainer","icon","color","size","label","separatorType","onPress","labelStyle","message","animating","element","value","uniqueId","disabled","accessibilityLabel","accessibilityRole","accessibilityHint"],"sources":["@wordpress/block-library/src/block/v1/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tActivityIndicator,\n\tPlatform,\n\tText,\n\tTouchableWithoutFeedback,\n\tView,\n} from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useCallback } from '@wordpress/element';\nimport {\n\tuseEntityBlockEditor,\n\tuseEntityProp,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport {\n\tBottomSheet,\n\tIcon,\n\tDisabled,\n\tTextControl,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n\tInnerBlocks,\n\tWarning,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { help } from '@wordpress/icons';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport styles from '../editor.scss';\nimport EditTitle from '../edit-title';\n\nexport default function ReusableBlockEdit( {\n\tattributes: { ref },\n\tclientId,\n\tisSelected,\n} ) {\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\n\tconst [ showHelp, setShowHelp ] = useState( false );\n\tconst infoTextStyle = usePreferredColorSchemeStyle(\n\t\tstyles.infoText,\n\t\tstyles.infoTextDark\n\t);\n\tconst infoTitleStyle = usePreferredColorSchemeStyle(\n\t\tstyles.infoTitle,\n\t\tstyles.infoTitleDark\n\t);\n\tconst infoSheetIconStyle = usePreferredColorSchemeStyle(\n\t\tstyles.infoSheetIcon,\n\t\tstyles.infoSheetIconDark\n\t);\n\tconst infoDescriptionStyle = usePreferredColorSchemeStyle(\n\t\tstyles.infoDescription,\n\t\tstyles.infoDescriptionDark\n\t);\n\tconst actionButtonStyle = usePreferredColorSchemeStyle(\n\t\tstyles.actionButton,\n\t\tstyles.actionButtonDark\n\t);\n\tconst spinnerStyle = usePreferredColorSchemeStyle(\n\t\tstyles.spinner,\n\t\tstyles.spinnerDark\n\t);\n\n\tconst { hasResolved, isEditing, isMissing } = useSelect(\n\t\t( select ) => {\n\t\t\tconst persistedBlock = select( coreStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\tref\n\t\t\t);\n\t\t\tconst hasResolvedBlock = select( coreStore ).hasFinishedResolution(\n\t\t\t\t'getEntityRecord',\n\t\t\t\t[ 'postType', 'wp_block', ref ]\n\t\t\t);\n\n\t\t\tconst { getBlockCount } = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\thasResolved: hasResolvedBlock,\n\t\t\t\tisEditing:\n\t\t\t\t\tselect(\n\t\t\t\t\t\treusableBlocksStore\n\t\t\t\t\t).__experimentalIsEditingReusableBlock( clientId ),\n\t\t\t\tisMissing: hasResolvedBlock && ! persistedBlock,\n\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ ref, clientId ]\n\t);\n\tconst hostAppNamespace = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).getEditorSettings().hostAppNamespace,\n\t\t[]\n\t);\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\tuseDispatch( reusableBlocksStore );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_block',\n\t\t{ id: ref }\n\t);\n\n\tconst [ title ] = useEntityProp( 'postType', 'wp_block', 'title', ref );\n\n\tfunction openSheet() {\n\t\tsetShowHelp( true );\n\t}\n\n\tfunction closeSheet() {\n\t\tsetShowHelp( false );\n\t}\n\n\tconst onConvertToRegularBlocks = useCallback( () => {\n\t\t/* translators: %s: name of the synced block */\n\t\tconst successNotice = __( '%s detached' );\n\t\tcreateSuccessNotice( sprintf( successNotice, title ) );\n\n\t\tclearSelectedBlock();\n\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t// to prevent issues related to undo/redo actions.\n\t\tsetImmediate( () => convertBlockToStatic( clientId ) );\n\t}, [ title, clientId ] );\n\n\tfunction renderSheet() {\n\t\tconst infoTitle =\n\t\t\tPlatform.OS === 'android'\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %s: name of the host app (e.g. WordPress) */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Editing synced patterns is not yet supported on %s for Android'\n\t\t\t\t\t\t),\n\t\t\t\t\t\thostAppNamespace\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: name of the host app (e.g. WordPress) */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Editing synced patterns is not yet supported on %s for iOS'\n\t\t\t\t\t\t),\n\t\t\t\t\t\thostAppNamespace\n\t\t\t\t );\n\n\t\treturn (\n\t\t\t<BottomSheet\n\t\t\t\tisVisible={ showHelp }\n\t\t\t\thideHeader\n\t\t\t\tonClose={ closeSheet }\n\t\t\t>\n\t\t\t\t<View style={ styles.infoContainer }>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ help }\n\t\t\t\t\t\tcolor={ infoSheetIconStyle.color }\n\t\t\t\t\t\tsize={ styles.infoSheetIcon.size }\n\t\t\t\t\t/>\n\t\t\t\t\t<Text style={ [ infoTextStyle, infoTitleStyle ] }>\n\t\t\t\t\t\t{ infoTitle }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Text style={ [ infoTextStyle, infoDescriptionStyle ] }>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Alternatively, you can detach and edit this block separately by tapping “Detach”.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Detach' ) }\n\t\t\t\t\t\tseparatorType=\"topFullWidth\"\n\t\t\t\t\t\tonPress={ onConvertToRegularBlocks }\n\t\t\t\t\t\tlabelStyle={ actionButtonStyle }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</BottomSheet>\n\t\t);\n\t}\n\n\tif ( hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<Warning\n\t\t\t\tmessage={ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\treturn (\n\t\t\t<Warning\n\t\t\t\tmessage={ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\treturn (\n\t\t\t<View style={ spinnerStyle }>\n\t\t\t\t<ActivityIndicator animating />\n\t\t\t</View>\n\t\t);\n\t}\n\n\tlet element = (\n\t\t<InnerBlocks\n\t\t\tvalue={ blocks }\n\t\t\tonChange={ onChange }\n\t\t\tonInput={ onInput }\n\t\t/>\n\t);\n\n\tif ( ! isEditing ) {\n\t\telement = <Disabled>{ element }</Disabled>;\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t<TouchableWithoutFeedback\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\taccessibilityLabel={ __( 'Help button' ) }\n\t\t\t\taccessibilityRole={ 'button' }\n\t\t\t\taccessibilityHint={ __( 'Tap here to show help' ) }\n\t\t\t\tonPress={ openSheet }\n\t\t\t>\n\t\t\t\t<View>\n\t\t\t\t\t{ isSelected && <EditTitle title={ title } /> }\n\t\t\t\t\t{ element }\n\t\t\t\t\t{ renderSheet() }\n\t\t\t\t</View>\n\t\t\t</TouchableWithoutFeedback>\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
@@ -48,8 +48,8 @@ const metadata = {
48
48
  __experimentalRole: "content"
49
49
  },
50
50
  text: {
51
- type: "string",
52
- source: "html",
51
+ type: "rich-text",
52
+ source: "rich-text",
53
53
  selector: "a,button",
54
54
  __experimentalRole: "content"
55
55
  },
@@ -25,7 +25,7 @@ export default function save({
25
25
  url,
26
26
  width
27
27
  } = attributes;
28
- if (!text) {
28
+ if (RichText.isEmpty(text)) {
29
29
  return null;
30
30
  }
31
31
  const TagName = tagName || 'a';
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","RichText","useBlockProps","__experimentalGetBorderClassesAndStyles","getBorderClassesAndStyles","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","__experimentalGetSpacingClassesAndStyles","getSpacingClassesAndStyles","__experimentalGetElementClassName","save","attributes","className","tagName","type","textAlign","fontSize","linkTarget","rel","style","text","title","url","width","TagName","isButtonTag","buttonType","borderProps","colorProps","spacingProps","buttonClasses","border","radius","buttonStyle","wrapperClasses","typography","createElement","Content","href","value","target"],"sources":["@wordpress/block-library/src/button/save.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes, className } ) {\n\tconst {\n\t\ttagName,\n\t\ttype,\n\t\ttextAlign,\n\t\tfontSize,\n\t\tlinkTarget,\n\t\trel,\n\t\tstyle,\n\t\ttext,\n\t\ttitle,\n\t\turl,\n\t\twidth,\n\t} = attributes;\n\n\tif ( ! text ) {\n\t\treturn null;\n\t}\n\n\tconst TagName = tagName || 'a';\n\tconst isButtonTag = 'button' === TagName;\n\tconst buttonType = type || 'button';\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst buttonClasses = classnames(\n\t\t'wp-block-button__link',\n\t\tcolorProps.className,\n\t\tborderProps.className,\n\t\t{\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t// For backwards compatibility add style that isn't provided via\n\t\t\t// block support.\n\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t},\n\t\t__experimentalGetElementClassName( 'button' )\n\t);\n\tconst buttonStyle = {\n\t\t...borderProps.style,\n\t\t...colorProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t// if it had already been assigned, for the sake of backward-compatibility.\n\t// A title will no longer be assigned for new or updated button block links.\n\n\tconst wrapperClasses = classnames( className, {\n\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t[ `has-custom-font-size` ]: fontSize || style?.typography?.fontSize,\n\t} );\n\n\treturn (\n\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName={ TagName }\n\t\t\t\ttype={ isButtonTag ? buttonType : null }\n\t\t\t\tclassName={ buttonClasses }\n\t\t\t\thref={ isButtonTag ? null : url }\n\t\t\t\ttitle={ title }\n\t\t\t\tstyle={ buttonStyle }\n\t\t\t\tvalue={ text }\n\t\t\t\ttarget={ isButtonTag ? null : linkTarget }\n\t\t\t\trel={ isButtonTag ? null : rel }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SACCC,QAAQ,EACRC,aAAa,EACbC,uCAAuC,IAAIC,yBAAyB,EACpEC,sCAAsC,IAAIC,wBAAwB,EAClEC,wCAAwC,IAAIC,0BAA0B,EACtEC,iCAAiC,QAC3B,yBAAyB;AAEhC,eAAe,SAASC,IAAIA,CAAE;EAAEC,UAAU;EAAEC;AAAU,CAAC,EAAG;EACzD,MAAM;IACLC,OAAO;IACPC,IAAI;IACJC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACVC,GAAG;IACHC,KAAK;IACLC,IAAI;IACJC,KAAK;IACLC,GAAG;IACHC;EACD,CAAC,GAAGZ,UAAU;EAEd,IAAK,CAAES,IAAI,EAAG;IACb,OAAO,IAAI;EACZ;EAEA,MAAMI,OAAO,GAAGX,OAAO,IAAI,GAAG;EAC9B,MAAMY,WAAW,GAAG,QAAQ,KAAKD,OAAO;EACxC,MAAME,UAAU,GAAGZ,IAAI,IAAI,QAAQ;EACnC,MAAMa,WAAW,GAAGvB,yBAAyB,CAAEO,UAAW,CAAC;EAC3D,MAAMiB,UAAU,GAAGtB,wBAAwB,CAAEK,UAAW,CAAC;EACzD,MAAMkB,YAAY,GAAGrB,0BAA0B,CAAEG,UAAW,CAAC;EAC7D,MAAMmB,aAAa,GAAG9B,UAAU,CAC/B,uBAAuB,EACvB4B,UAAU,CAAChB,SAAS,EACpBe,WAAW,CAACf,SAAS,EACrB;IACC,CAAG,kBAAkBG,SAAW,EAAC,GAAIA,SAAS;IAC9C;IACA;IACA,kBAAkB,EAAEI,KAAK,EAAEY,MAAM,EAAEC,MAAM,KAAK;EAC/C,CAAC,EACDvB,iCAAiC,CAAE,QAAS,CAC7C,CAAC;EACD,MAAMwB,WAAW,GAAG;IACnB,GAAGN,WAAW,CAACR,KAAK;IACpB,GAAGS,UAAU,CAACT,KAAK;IACnB,GAAGU,YAAY,CAACV;EACjB,CAAC;;EAED;EACA;EACA;;EAEA,MAAMe,cAAc,GAAGlC,UAAU,CAAEY,SAAS,EAAE;IAC7C,CAAG,2CAA2CW,KAAO,EAAC,GAAIA,KAAK;IAC/D,CAAG,sBAAqB,GAAIP,QAAQ,IAAIG,KAAK,EAAEgB,UAAU,EAAEnB;EAC5D,CAAE,CAAC;EAEH,OACCoB,aAAA;IAAA,GAAUlC,aAAa,CAACQ,IAAI,CAAE;MAAEE,SAAS,EAAEsB;IAAe,CAAE;EAAC,GAC5DE,aAAA,CAACnC,QAAQ,CAACoC,OAAO;IAChBxB,OAAO,EAAGW,OAAS;IACnBV,IAAI,EAAGW,WAAW,GAAGC,UAAU,GAAG,IAAM;IACxCd,SAAS,EAAGkB,aAAe;IAC3BQ,IAAI,EAAGb,WAAW,GAAG,IAAI,GAAGH,GAAK;IACjCD,KAAK,EAAGA,KAAO;IACfF,KAAK,EAAGc,WAAa;IACrBM,KAAK,EAAGnB,IAAM;IACdoB,MAAM,EAAGf,WAAW,GAAG,IAAI,GAAGR,UAAY;IAC1CC,GAAG,EAAGO,WAAW,GAAG,IAAI,GAAGP;EAAK,CAChC,CACG,CAAC;AAER"}
1
+ {"version":3,"names":["classnames","RichText","useBlockProps","__experimentalGetBorderClassesAndStyles","getBorderClassesAndStyles","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","__experimentalGetSpacingClassesAndStyles","getSpacingClassesAndStyles","__experimentalGetElementClassName","save","attributes","className","tagName","type","textAlign","fontSize","linkTarget","rel","style","text","title","url","width","isEmpty","TagName","isButtonTag","buttonType","borderProps","colorProps","spacingProps","buttonClasses","border","radius","buttonStyle","wrapperClasses","typography","createElement","Content","href","value","target"],"sources":["@wordpress/block-library/src/button/save.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes, className } ) {\n\tconst {\n\t\ttagName,\n\t\ttype,\n\t\ttextAlign,\n\t\tfontSize,\n\t\tlinkTarget,\n\t\trel,\n\t\tstyle,\n\t\ttext,\n\t\ttitle,\n\t\turl,\n\t\twidth,\n\t} = attributes;\n\n\tif ( RichText.isEmpty( text ) ) {\n\t\treturn null;\n\t}\n\n\tconst TagName = tagName || 'a';\n\tconst isButtonTag = 'button' === TagName;\n\tconst buttonType = type || 'button';\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst buttonClasses = classnames(\n\t\t'wp-block-button__link',\n\t\tcolorProps.className,\n\t\tborderProps.className,\n\t\t{\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t// For backwards compatibility add style that isn't provided via\n\t\t\t// block support.\n\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t},\n\t\t__experimentalGetElementClassName( 'button' )\n\t);\n\tconst buttonStyle = {\n\t\t...borderProps.style,\n\t\t...colorProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t// if it had already been assigned, for the sake of backward-compatibility.\n\t// A title will no longer be assigned for new or updated button block links.\n\n\tconst wrapperClasses = classnames( className, {\n\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t[ `has-custom-font-size` ]: fontSize || style?.typography?.fontSize,\n\t} );\n\n\treturn (\n\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName={ TagName }\n\t\t\t\ttype={ isButtonTag ? buttonType : null }\n\t\t\t\tclassName={ buttonClasses }\n\t\t\t\thref={ isButtonTag ? null : url }\n\t\t\t\ttitle={ title }\n\t\t\t\tstyle={ buttonStyle }\n\t\t\t\tvalue={ text }\n\t\t\t\ttarget={ isButtonTag ? null : linkTarget }\n\t\t\t\trel={ isButtonTag ? null : rel }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SACCC,QAAQ,EACRC,aAAa,EACbC,uCAAuC,IAAIC,yBAAyB,EACpEC,sCAAsC,IAAIC,wBAAwB,EAClEC,wCAAwC,IAAIC,0BAA0B,EACtEC,iCAAiC,QAC3B,yBAAyB;AAEhC,eAAe,SAASC,IAAIA,CAAE;EAAEC,UAAU;EAAEC;AAAU,CAAC,EAAG;EACzD,MAAM;IACLC,OAAO;IACPC,IAAI;IACJC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACVC,GAAG;IACHC,KAAK;IACLC,IAAI;IACJC,KAAK;IACLC,GAAG;IACHC;EACD,CAAC,GAAGZ,UAAU;EAEd,IAAKV,QAAQ,CAACuB,OAAO,CAAEJ,IAAK,CAAC,EAAG;IAC/B,OAAO,IAAI;EACZ;EAEA,MAAMK,OAAO,GAAGZ,OAAO,IAAI,GAAG;EAC9B,MAAMa,WAAW,GAAG,QAAQ,KAAKD,OAAO;EACxC,MAAME,UAAU,GAAGb,IAAI,IAAI,QAAQ;EACnC,MAAMc,WAAW,GAAGxB,yBAAyB,CAAEO,UAAW,CAAC;EAC3D,MAAMkB,UAAU,GAAGvB,wBAAwB,CAAEK,UAAW,CAAC;EACzD,MAAMmB,YAAY,GAAGtB,0BAA0B,CAAEG,UAAW,CAAC;EAC7D,MAAMoB,aAAa,GAAG/B,UAAU,CAC/B,uBAAuB,EACvB6B,UAAU,CAACjB,SAAS,EACpBgB,WAAW,CAAChB,SAAS,EACrB;IACC,CAAG,kBAAkBG,SAAW,EAAC,GAAIA,SAAS;IAC9C;IACA;IACA,kBAAkB,EAAEI,KAAK,EAAEa,MAAM,EAAEC,MAAM,KAAK;EAC/C,CAAC,EACDxB,iCAAiC,CAAE,QAAS,CAC7C,CAAC;EACD,MAAMyB,WAAW,GAAG;IACnB,GAAGN,WAAW,CAACT,KAAK;IACpB,GAAGU,UAAU,CAACV,KAAK;IACnB,GAAGW,YAAY,CAACX;EACjB,CAAC;;EAED;EACA;EACA;;EAEA,MAAMgB,cAAc,GAAGnC,UAAU,CAAEY,SAAS,EAAE;IAC7C,CAAG,2CAA2CW,KAAO,EAAC,GAAIA,KAAK;IAC/D,CAAG,sBAAqB,GAAIP,QAAQ,IAAIG,KAAK,EAAEiB,UAAU,EAAEpB;EAC5D,CAAE,CAAC;EAEH,OACCqB,aAAA;IAAA,GAAUnC,aAAa,CAACQ,IAAI,CAAE;MAAEE,SAAS,EAAEuB;IAAe,CAAE;EAAC,GAC5DE,aAAA,CAACpC,QAAQ,CAACqC,OAAO;IAChBzB,OAAO,EAAGY,OAAS;IACnBX,IAAI,EAAGY,WAAW,GAAGC,UAAU,GAAG,IAAM;IACxCf,SAAS,EAAGmB,aAAe;IAC3BQ,IAAI,EAAGb,WAAW,GAAG,IAAI,GAAGJ,GAAK;IACjCD,KAAK,EAAGA,KAAO;IACfF,KAAK,EAAGe,WAAa;IACrBM,KAAK,EAAGpB,IAAM;IACdqB,MAAM,EAAGf,WAAW,GAAG,IAAI,GAAGT,UAAY;IAC1CC,GAAG,EAAGQ,WAAW,GAAG,IAAI,GAAGR;EAAK,CAChC,CACG,CAAC;AAER"}
@@ -7,7 +7,7 @@ import { View } from 'react-native';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { PlainText } from '@wordpress/block-editor';
10
+ import { RichText } from '@wordpress/block-editor';
11
11
  import { __ } from '@wordpress/i18n';
12
12
  import { usePreferredColorSchemeStyle } from '@wordpress/compose';
13
13
  import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
@@ -20,42 +20,40 @@ import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
20
20
  * Block code style
21
21
  */
22
22
  import styles from './theme.scss';
23
-
24
- // Note: styling is applied directly to the (nested) PlainText component. Web-side components
25
- // apply it to the container 'div' but we don't have a proper proposal for cascading styling yet.
26
23
  export function CodeEdit(props) {
27
24
  const {
28
25
  attributes,
29
26
  setAttributes,
30
- onFocus,
31
- onBlur,
27
+ onRemove,
32
28
  style,
33
29
  insertBlocksAfter,
34
30
  mergeBlocks
35
31
  } = props;
36
32
  const codeStyle = {
37
- ...usePreferredColorSchemeStyle(styles.blockCode, styles.blockCodeDark),
38
- ...(style?.fontSize && {
39
- fontSize: style.fontSize
40
- })
33
+ ...usePreferredColorSchemeStyle(styles.blockCode, styles.blockCodeDark)
41
34
  };
35
+ const textStyle = style?.fontSize ? {
36
+ fontSize: style.fontSize
37
+ } : {};
42
38
  const placeholderStyle = usePreferredColorSchemeStyle(styles.placeholder, styles.placeholderDark);
43
- return createElement(View, null, createElement(PlainText, {
39
+ return createElement(View, {
40
+ style: codeStyle
41
+ }, createElement(RichText, {
42
+ tagName: "pre",
44
43
  value: attributes.content,
45
44
  identifier: "content",
46
- style: codeStyle,
47
- multiline: true,
45
+ style: textStyle,
48
46
  underlineColorAndroid: "transparent",
49
47
  onChange: content => setAttributes({
50
48
  content
51
49
  }),
52
50
  onMerge: mergeBlocks,
51
+ onRemove: onRemove,
53
52
  placeholder: __('Write code…'),
54
53
  "aria-label": __('Code'),
55
- isSelected: props.isSelected,
56
- onFocus: onFocus,
57
- onBlur: onBlur,
58
54
  placeholderTextColor: placeholderStyle.color,
55
+ preserveWhiteSpace: true,
56
+ __unstablePastePlainText: true,
59
57
  __unstableOnSplitAtDoubleLineEnd: () => insertBlocksAfter(createBlock(getDefaultBlockName()))
60
58
  }));
61
59
  }