@wordpress/block-library 9.1.0 → 9.3.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 (387) hide show
  1. package/CHANGELOG.md +21 -17
  2. package/build/audio/edit.js +20 -8
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/audio/index.js +4 -0
  5. package/build/audio/index.js.map +1 -1
  6. package/build/audio/transforms.js +1 -1
  7. package/build/audio/transforms.js.map +1 -1
  8. package/build/block/edit.js +0 -1
  9. package/build/block/edit.js.map +1 -1
  10. package/build/block/index.js +5 -1
  11. package/build/block/index.js.map +1 -1
  12. package/build/button/index.js +1 -0
  13. package/build/button/index.js.map +1 -1
  14. package/build/embed/embed-preview.js +4 -4
  15. package/build/embed/embed-preview.js.map +1 -1
  16. package/build/file/edit.js +14 -6
  17. package/build/file/edit.js.map +1 -1
  18. package/build/file/index.js +4 -0
  19. package/build/file/index.js.map +1 -1
  20. package/build/file/transforms.js +2 -3
  21. package/build/file/transforms.js.map +1 -1
  22. package/build/gallery/deprecated.js +6 -54
  23. package/build/gallery/deprecated.js.map +1 -1
  24. package/build/gallery/edit.js +9 -8
  25. package/build/gallery/edit.js.map +1 -1
  26. package/build/gallery/index.js +2 -2
  27. package/build/gallery/index.js.map +1 -1
  28. package/build/gallery/save.js +0 -11
  29. package/build/gallery/save.js.map +1 -1
  30. package/build/gallery/shared.js +0 -27
  31. package/build/gallery/shared.js.map +1 -1
  32. package/build/gallery/transforms.js +29 -80
  33. package/build/gallery/transforms.js.map +1 -1
  34. package/build/group/index.js +1 -0
  35. package/build/group/index.js.map +1 -1
  36. package/build/group/placeholder.js +5 -0
  37. package/build/group/placeholder.js.map +1 -1
  38. package/build/image/edit.js +13 -21
  39. package/build/image/edit.js.map +1 -1
  40. package/build/image/image.js +33 -19
  41. package/build/image/image.js.map +1 -1
  42. package/build/image/index.js +4 -0
  43. package/build/image/index.js.map +1 -1
  44. package/build/image/transforms.js +1 -1
  45. package/build/image/transforms.js.map +1 -1
  46. package/build/list-item/edit.js +1 -1
  47. package/build/list-item/edit.js.map +1 -1
  48. package/build/list-item/hooks/use-merge.js +8 -1
  49. package/build/list-item/hooks/use-merge.js.map +1 -1
  50. package/build/list-item/index.js +11 -1
  51. package/build/list-item/index.js.map +1 -1
  52. package/build/lock-unlock.js +1 -1
  53. package/build/lock-unlock.js.map +1 -1
  54. package/build/loginout/index.js +3 -0
  55. package/build/loginout/index.js.map +1 -1
  56. package/build/media-text/edit.js +3 -2
  57. package/build/media-text/edit.js.map +1 -1
  58. package/build/navigation-submenu/edit.js +1 -1
  59. package/build/navigation-submenu/edit.js.map +1 -1
  60. package/build/page-list/convert-to-links-modal.js +1 -1
  61. package/build/page-list/convert-to-links-modal.js.map +1 -1
  62. package/build/page-list/edit.js +1 -1
  63. package/build/page-list/edit.js.map +1 -1
  64. package/build/post-content/index.js +3 -0
  65. package/build/post-content/index.js.map +1 -1
  66. package/build/post-date/edit.js +3 -1
  67. package/build/post-date/edit.js.map +1 -1
  68. package/build/post-excerpt/index.js +3 -0
  69. package/build/post-excerpt/index.js.map +1 -1
  70. package/build/post-title/index.js +3 -0
  71. package/build/post-title/index.js.map +1 -1
  72. package/build/query/edit/inspector-controls/index.js +3 -2
  73. package/build/query/edit/inspector-controls/index.js.map +1 -1
  74. package/build/query/edit/query-toolbar.js +54 -61
  75. package/build/query/edit/query-toolbar.js.map +1 -1
  76. package/build/query/index.js +34 -0
  77. package/build/query/index.js.map +1 -1
  78. package/build/quote/edit.js +1 -0
  79. package/build/quote/edit.js.map +1 -1
  80. package/build/site-tagline/index.js +1 -0
  81. package/build/site-tagline/index.js.map +1 -1
  82. package/build/site-title/index.js +1 -0
  83. package/build/site-title/index.js.map +1 -1
  84. package/build/social-link/edit.js +9 -3
  85. package/build/social-link/edit.js.map +1 -1
  86. package/build/table/edit.js +8 -17
  87. package/build/table/edit.js.map +1 -1
  88. package/build/table-of-contents/index.js +1 -1
  89. package/build/template-part/edit/title-modal.js +1 -1
  90. package/build/template-part/edit/title-modal.js.map +1 -1
  91. package/build/utils/caption.js +2 -1
  92. package/build/utils/caption.js.map +1 -1
  93. package/build/utils/hooks.js +12 -0
  94. package/build/utils/hooks.js.map +1 -1
  95. package/build/verse/index.js +1 -0
  96. package/build/verse/index.js.map +1 -1
  97. package/build/video/deprecated.js +4 -0
  98. package/build/video/deprecated.js.map +1 -1
  99. package/build/video/edit.js +17 -7
  100. package/build/video/edit.js.map +1 -1
  101. package/build/video/index.js +4 -0
  102. package/build/video/index.js.map +1 -1
  103. package/build/video/transforms.js +1 -1
  104. package/build/video/transforms.js.map +1 -1
  105. package/build-module/audio/edit.js +20 -8
  106. package/build-module/audio/edit.js.map +1 -1
  107. package/build-module/audio/index.js +4 -0
  108. package/build-module/audio/index.js.map +1 -1
  109. package/build-module/audio/transforms.js +1 -1
  110. package/build-module/audio/transforms.js.map +1 -1
  111. package/build-module/block/edit.js +0 -1
  112. package/build-module/block/edit.js.map +1 -1
  113. package/build-module/block/index.js +5 -1
  114. package/build-module/block/index.js.map +1 -1
  115. package/build-module/button/index.js +1 -0
  116. package/build-module/button/index.js.map +1 -1
  117. package/build-module/embed/embed-preview.js +4 -4
  118. package/build-module/embed/embed-preview.js.map +1 -1
  119. package/build-module/file/edit.js +15 -7
  120. package/build-module/file/edit.js.map +1 -1
  121. package/build-module/file/index.js +4 -0
  122. package/build-module/file/index.js.map +1 -1
  123. package/build-module/file/transforms.js +2 -3
  124. package/build-module/file/transforms.js.map +1 -1
  125. package/build-module/gallery/deprecated.js +6 -54
  126. package/build-module/gallery/deprecated.js.map +1 -1
  127. package/build-module/gallery/edit.js +10 -9
  128. package/build-module/gallery/edit.js.map +1 -1
  129. package/build-module/gallery/index.js +1 -1
  130. package/build-module/gallery/index.js.map +1 -1
  131. package/build-module/gallery/save.js +0 -11
  132. package/build-module/gallery/save.js.map +1 -1
  133. package/build-module/gallery/shared.js +0 -25
  134. package/build-module/gallery/shared.js.map +1 -1
  135. package/build-module/gallery/transforms.js +29 -80
  136. package/build-module/gallery/transforms.js.map +1 -1
  137. package/build-module/group/index.js +1 -0
  138. package/build-module/group/index.js.map +1 -1
  139. package/build-module/group/placeholder.js +5 -0
  140. package/build-module/group/placeholder.js.map +1 -1
  141. package/build-module/image/edit.js +12 -20
  142. package/build-module/image/edit.js.map +1 -1
  143. package/build-module/image/image.js +28 -14
  144. package/build-module/image/image.js.map +1 -1
  145. package/build-module/image/index.js +4 -0
  146. package/build-module/image/index.js.map +1 -1
  147. package/build-module/image/transforms.js +1 -1
  148. package/build-module/image/transforms.js.map +1 -1
  149. package/build-module/list-item/edit.js +1 -1
  150. package/build-module/list-item/edit.js.map +1 -1
  151. package/build-module/list-item/hooks/use-merge.js +8 -1
  152. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  153. package/build-module/list-item/index.js +11 -1
  154. package/build-module/list-item/index.js.map +1 -1
  155. package/build-module/lock-unlock.js +1 -1
  156. package/build-module/lock-unlock.js.map +1 -1
  157. package/build-module/loginout/index.js +3 -0
  158. package/build-module/loginout/index.js.map +1 -1
  159. package/build-module/media-text/edit.js +3 -2
  160. package/build-module/media-text/edit.js.map +1 -1
  161. package/build-module/navigation-submenu/edit.js +1 -1
  162. package/build-module/navigation-submenu/edit.js.map +1 -1
  163. package/build-module/page-list/convert-to-links-modal.js +1 -1
  164. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  165. package/build-module/page-list/edit.js +1 -1
  166. package/build-module/page-list/edit.js.map +1 -1
  167. package/build-module/post-content/index.js +3 -0
  168. package/build-module/post-content/index.js.map +1 -1
  169. package/build-module/post-date/edit.js +4 -2
  170. package/build-module/post-date/edit.js.map +1 -1
  171. package/build-module/post-excerpt/index.js +3 -0
  172. package/build-module/post-excerpt/index.js.map +1 -1
  173. package/build-module/post-title/index.js +3 -0
  174. package/build-module/post-title/index.js.map +1 -1
  175. package/build-module/query/edit/inspector-controls/index.js +3 -2
  176. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  177. package/build-module/query/edit/query-toolbar.js +55 -62
  178. package/build-module/query/edit/query-toolbar.js.map +1 -1
  179. package/build-module/query/index.js +34 -0
  180. package/build-module/query/index.js.map +1 -1
  181. package/build-module/quote/edit.js +1 -0
  182. package/build-module/quote/edit.js.map +1 -1
  183. package/build-module/site-tagline/index.js +1 -0
  184. package/build-module/site-tagline/index.js.map +1 -1
  185. package/build-module/site-title/index.js +1 -0
  186. package/build-module/site-title/index.js.map +1 -1
  187. package/build-module/social-link/edit.js +9 -3
  188. package/build-module/social-link/edit.js.map +1 -1
  189. package/build-module/table/edit.js +9 -18
  190. package/build-module/table/edit.js.map +1 -1
  191. package/build-module/table-of-contents/index.js +1 -1
  192. package/build-module/template-part/edit/title-modal.js +1 -1
  193. package/build-module/template-part/edit/title-modal.js.map +1 -1
  194. package/build-module/utils/caption.js +2 -1
  195. package/build-module/utils/caption.js.map +1 -1
  196. package/build-module/utils/hooks.js +11 -0
  197. package/build-module/utils/hooks.js.map +1 -1
  198. package/build-module/verse/index.js +1 -0
  199. package/build-module/verse/index.js.map +1 -1
  200. package/build-module/video/deprecated.js +4 -0
  201. package/build-module/video/deprecated.js.map +1 -1
  202. package/build-module/video/edit.js +18 -8
  203. package/build-module/video/edit.js.map +1 -1
  204. package/build-module/video/index.js +4 -0
  205. package/build-module/video/index.js.map +1 -1
  206. package/build-module/video/transforms.js +1 -1
  207. package/build-module/video/transforms.js.map +1 -1
  208. package/build-style/audio/style-rtl.css +1 -1
  209. package/build-style/audio/style.css +1 -1
  210. package/build-style/audio/theme-rtl.css +2 -2
  211. package/build-style/audio/theme.css +2 -2
  212. package/build-style/common-rtl.css +1 -3
  213. package/build-style/common.css +1 -3
  214. package/build-style/editor-rtl.css +3 -12
  215. package/build-style/editor.css +3 -12
  216. package/build-style/embed/style-rtl.css +1 -1
  217. package/build-style/embed/style.css +1 -1
  218. package/build-style/embed/theme-rtl.css +2 -2
  219. package/build-style/embed/theme.css +2 -2
  220. package/build-style/image/editor-rtl.css +0 -12
  221. package/build-style/image/editor.css +0 -12
  222. package/build-style/image/style-rtl.css +7 -1
  223. package/build-style/image/style.css +7 -1
  224. package/build-style/media-text/style-rtl.css +4 -0
  225. package/build-style/media-text/style.css +4 -0
  226. package/build-style/navigation/style-rtl.css +1 -0
  227. package/build-style/navigation/style.css +1 -0
  228. package/build-style/post-comments-form/style-rtl.css +11 -10
  229. package/build-style/post-comments-form/style.css +11 -10
  230. package/build-style/query/editor-rtl.css +3 -0
  231. package/build-style/query/editor.css +3 -0
  232. package/build-style/reset-rtl.css +1 -5
  233. package/build-style/reset.css +1 -5
  234. package/build-style/search/style-rtl.css +1 -2
  235. package/build-style/search/style.css +1 -2
  236. package/build-style/social-links/style-rtl.css +91 -91
  237. package/build-style/social-links/style.css +91 -91
  238. package/build-style/style-rtl.css +119 -110
  239. package/build-style/style.css +119 -110
  240. package/build-style/table/theme-rtl.css +2 -2
  241. package/build-style/table/theme.css +2 -2
  242. package/build-style/theme-rtl.css +8 -8
  243. package/build-style/theme.css +8 -8
  244. package/build-style/video/style-rtl.css +1 -1
  245. package/build-style/video/style.css +1 -1
  246. package/build-style/video/theme-rtl.css +2 -2
  247. package/build-style/video/theme.css +2 -2
  248. package/package.json +35 -35
  249. package/src/audio/block.json +4 -0
  250. package/src/audio/edit.js +19 -7
  251. package/src/audio/style.scss +1 -1
  252. package/src/audio/theme.scss +1 -1
  253. package/src/audio/transforms.js +1 -1
  254. package/src/block/block.json +5 -1
  255. package/src/block/edit.js +0 -1
  256. package/src/button/block.json +1 -0
  257. package/src/button/index.php +14 -1
  258. package/src/embed/embed-preview.js +4 -6
  259. package/src/embed/style.scss +1 -1
  260. package/src/embed/theme.scss +1 -1
  261. package/src/file/block.json +4 -0
  262. package/src/file/edit.js +19 -6
  263. package/src/file/transforms.js +1 -2
  264. package/src/gallery/deprecated.js +6 -55
  265. package/src/gallery/edit.js +13 -10
  266. package/src/gallery/gallery-styles.native.scss +0 -2
  267. package/src/gallery/index.js +1 -1
  268. package/src/gallery/save.js +0 -10
  269. package/src/gallery/shared.js +0 -28
  270. package/src/gallery/transforms.js +56 -99
  271. package/src/group/block.json +1 -0
  272. package/src/group/placeholder.js +7 -0
  273. package/src/image/block.json +4 -0
  274. package/src/image/edit.js +10 -19
  275. package/src/image/editor.scss +0 -13
  276. package/src/image/image.js +45 -16
  277. package/src/image/index.php +26 -5
  278. package/src/image/style.scss +11 -1
  279. package/src/image/transforms.js +1 -1
  280. package/src/list-item/block.json +11 -1
  281. package/src/list-item/edit.js +1 -1
  282. package/src/list-item/hooks/use-merge.js +19 -5
  283. package/src/lock-unlock.js +1 -1
  284. package/src/loginout/block.json +3 -0
  285. package/src/media-text/edit.js +3 -2
  286. package/src/media-text/index.php +68 -18
  287. package/src/media-text/style.scss +4 -0
  288. package/src/navigation/index.php +5 -3
  289. package/src/navigation/style.scss +1 -0
  290. package/src/navigation-submenu/edit.js +1 -1
  291. package/src/page-list/convert-to-links-modal.js +1 -1
  292. package/src/page-list/edit.js +1 -1
  293. package/src/paragraph/test/__snapshots__/edit.native.js.snap +30 -0
  294. package/src/paragraph/test/edit.native.js +99 -0
  295. package/src/post-comments-form/style.scss +15 -12
  296. package/src/post-content/block.json +3 -0
  297. package/src/post-date/edit.js +5 -1
  298. package/src/post-date/index.php +9 -3
  299. package/src/post-excerpt/block.json +3 -0
  300. package/src/post-title/block.json +3 -0
  301. package/src/query/edit/inspector-controls/index.js +3 -2
  302. package/src/query/edit/query-toolbar.js +60 -72
  303. package/src/query/editor.scss +4 -0
  304. package/src/query/index.js +40 -0
  305. package/src/quote/edit.js +1 -0
  306. package/src/reset.scss +11 -12
  307. package/src/site-tagline/block.json +1 -0
  308. package/src/site-title/block.json +1 -0
  309. package/src/social-link/edit.js +9 -3
  310. package/src/social-links/style.scss +2 -2
  311. package/src/table/edit.js +11 -24
  312. package/src/table/theme.scss +1 -1
  313. package/src/table-of-contents/block.json +1 -1
  314. package/src/template-part/edit/title-modal.js +1 -1
  315. package/src/template-part/index.php +1 -1
  316. package/src/utils/caption.js +5 -1
  317. package/src/utils/hooks.js +14 -1
  318. package/src/verse/block.json +1 -0
  319. package/src/video/block.json +4 -0
  320. package/src/video/edit.js +23 -8
  321. package/src/video/style.scss +1 -1
  322. package/src/video/theme.scss +1 -1
  323. package/src/video/transforms.js +1 -1
  324. package/tsconfig.tsbuildinfo +1 -1
  325. package/build/gallery/edit-wrapper.js +0 -37
  326. package/build/gallery/edit-wrapper.js.map +0 -1
  327. package/build/gallery/v1/constants.js +0 -10
  328. package/build/gallery/v1/constants.js.map +0 -1
  329. package/build/gallery/v1/edit.js +0 -399
  330. package/build/gallery/v1/edit.js.map +0 -1
  331. package/build/gallery/v1/gallery-button.native.js +0 -55
  332. package/build/gallery/v1/gallery-button.native.js.map +0 -1
  333. package/build/gallery/v1/gallery-image.js +0 -285
  334. package/build/gallery/v1/gallery-image.js.map +0 -1
  335. package/build/gallery/v1/gallery-image.native.js +0 -297
  336. package/build/gallery/v1/gallery-image.native.js.map +0 -1
  337. package/build/gallery/v1/gallery.js +0 -112
  338. package/build/gallery/v1/gallery.js.map +0 -1
  339. package/build/gallery/v1/gallery.native.js +0 -139
  340. package/build/gallery/v1/gallery.native.js.map +0 -1
  341. package/build/gallery/v1/save.js +0 -81
  342. package/build/gallery/v1/save.js.map +0 -1
  343. package/build/gallery/v1/shared.js +0 -17
  344. package/build/gallery/v1/shared.js.map +0 -1
  345. package/build/gallery/v1/tiles.native.js +0 -83
  346. package/build/gallery/v1/tiles.native.js.map +0 -1
  347. package/build/utils/constants.js +0 -15
  348. package/build/utils/constants.js.map +0 -1
  349. package/build-module/gallery/edit-wrapper.js +0 -31
  350. package/build-module/gallery/edit-wrapper.js.map +0 -1
  351. package/build-module/gallery/v1/constants.js +0 -4
  352. package/build-module/gallery/v1/constants.js.map +0 -1
  353. package/build-module/gallery/v1/edit.js +0 -393
  354. package/build-module/gallery/v1/edit.js.map +0 -1
  355. package/build-module/gallery/v1/gallery-button.native.js +0 -46
  356. package/build-module/gallery/v1/gallery-button.native.js.map +0 -1
  357. package/build-module/gallery/v1/gallery-image.js +0 -279
  358. package/build-module/gallery/v1/gallery-image.js.map +0 -1
  359. package/build-module/gallery/v1/gallery-image.native.js +0 -291
  360. package/build-module/gallery/v1/gallery-image.native.js.map +0 -1
  361. package/build-module/gallery/v1/gallery.js +0 -104
  362. package/build-module/gallery/v1/gallery.js.map +0 -1
  363. package/build-module/gallery/v1/gallery.native.js +0 -131
  364. package/build-module/gallery/v1/gallery.native.js.map +0 -1
  365. package/build-module/gallery/v1/save.js +0 -74
  366. package/build-module/gallery/v1/save.js.map +0 -1
  367. package/build-module/gallery/v1/shared.js +0 -10
  368. package/build-module/gallery/v1/shared.js.map +0 -1
  369. package/build-module/gallery/v1/tiles.native.js +0 -75
  370. package/build-module/gallery/v1/tiles.native.js.map +0 -1
  371. package/build-module/utils/constants.js +0 -9
  372. package/build-module/utils/constants.js.map +0 -1
  373. package/src/gallery/edit-wrapper.js +0 -27
  374. package/src/gallery/v1/constants.js +0 -3
  375. package/src/gallery/v1/edit.js +0 -450
  376. package/src/gallery/v1/gallery-button.native.js +0 -47
  377. package/src/gallery/v1/gallery-image-style.native.scss +0 -109
  378. package/src/gallery/v1/gallery-image.js +0 -293
  379. package/src/gallery/v1/gallery-image.native.js +0 -348
  380. package/src/gallery/v1/gallery-styles.native.scss +0 -8
  381. package/src/gallery/v1/gallery.js +0 -125
  382. package/src/gallery/v1/gallery.native.js +0 -162
  383. package/src/gallery/v1/save.js +0 -98
  384. package/src/gallery/v1/shared.js +0 -19
  385. package/src/gallery/v1/tiles-styles.native.scss +0 -11
  386. package/src/gallery/v1/tiles.native.js +0 -79
  387. package/src/utils/constants.js +0 -8
@@ -1,125 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import clsx from 'clsx';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import {
10
- RichText,
11
- __experimentalGetElementClassName,
12
- } from '@wordpress/block-editor';
13
- import { VisuallyHidden } from '@wordpress/components';
14
- import { __, sprintf } from '@wordpress/i18n';
15
- import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
16
-
17
- /**
18
- * Internal dependencies
19
- */
20
- import GalleryImage from './gallery-image';
21
- import { defaultColumnsNumberV1 } from '../deprecated';
22
-
23
- export const Gallery = ( props ) => {
24
- const {
25
- attributes,
26
- isSelected,
27
- setAttributes,
28
- selectedImage,
29
- mediaPlaceholder,
30
- onMoveBackward,
31
- onMoveForward,
32
- onRemoveImage,
33
- onSelectImage,
34
- onDeselectImage,
35
- onSetImageAttributes,
36
- insertBlocksAfter,
37
- blockProps,
38
- } = props;
39
-
40
- const {
41
- align,
42
- columns = defaultColumnsNumberV1( attributes ),
43
- caption,
44
- imageCrop,
45
- images,
46
- } = attributes;
47
-
48
- return (
49
- <figure
50
- { ...blockProps }
51
- className={ clsx( blockProps.className, {
52
- [ `align${ align }` ]: align,
53
- [ `columns-${ columns }` ]: columns,
54
- 'is-cropped': imageCrop,
55
- } ) }
56
- >
57
- <ul className="blocks-gallery-grid">
58
- { images.map( ( img, index ) => {
59
- const ariaLabel = sprintf(
60
- /* translators: 1: the order number of the image. 2: the total number of images. */
61
- __( 'image %1$d of %2$d in gallery' ),
62
- index + 1,
63
- images.length
64
- );
65
-
66
- return (
67
- <li
68
- className="blocks-gallery-item"
69
- key={ img.id ? `${ img.id }-${ index }` : img.url }
70
- >
71
- <GalleryImage
72
- url={ img.url }
73
- alt={ img.alt }
74
- id={ img.id }
75
- isFirstItem={ index === 0 }
76
- isLastItem={ index + 1 === images.length }
77
- isSelected={
78
- isSelected && selectedImage === index
79
- }
80
- onMoveBackward={ onMoveBackward( index ) }
81
- onMoveForward={ onMoveForward( index ) }
82
- onRemove={ onRemoveImage( index ) }
83
- onSelect={ onSelectImage( index ) }
84
- onDeselect={ onDeselectImage( index ) }
85
- setAttributes={ ( attrs ) =>
86
- onSetImageAttributes( index, attrs )
87
- }
88
- caption={ img.caption }
89
- aria-label={ ariaLabel }
90
- sizeSlug={ attributes.sizeSlug }
91
- />
92
- </li>
93
- );
94
- } ) }
95
- </ul>
96
- { mediaPlaceholder }
97
- <RichTextVisibilityHelper
98
- isHidden={ ! isSelected && RichText.isEmpty( caption ) }
99
- tagName="figcaption"
100
- className={ clsx(
101
- 'blocks-gallery-caption',
102
- __experimentalGetElementClassName( 'caption' )
103
- ) }
104
- aria-label={ __( 'Gallery caption text' ) }
105
- placeholder={ __( 'Write gallery caption…' ) }
106
- value={ caption }
107
- onChange={ ( value ) => setAttributes( { caption: value } ) }
108
- inlineToolbar
109
- __unstableOnSplitAtEnd={ () =>
110
- insertBlocksAfter( createBlock( getDefaultBlockName() ) )
111
- }
112
- />
113
- </figure>
114
- );
115
- };
116
-
117
- function RichTextVisibilityHelper( { isHidden, ...richTextProps } ) {
118
- return isHidden ? (
119
- <VisuallyHidden as={ RichText } { ...richTextProps } />
120
- ) : (
121
- <RichText { ...richTextProps } />
122
- );
123
- }
124
-
125
- export default Gallery;
@@ -1,162 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { View } from 'react-native';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import GalleryImage from './gallery-image';
10
- import { defaultColumnsNumberV1 } from '../deprecated';
11
- import styles from './gallery-styles.scss';
12
- import Tiles from './tiles';
13
-
14
- /**
15
- * WordPress dependencies
16
- */
17
- import { __, sprintf } from '@wordpress/i18n';
18
- import {
19
- BlockCaption,
20
- RichText,
21
- store as blockEditorStore,
22
- } from '@wordpress/block-editor';
23
- import { useState, useEffect } from '@wordpress/element';
24
- import { mediaUploadSync } from '@wordpress/react-native-bridge';
25
- import { useSelect } from '@wordpress/data';
26
- import { alignmentHelpers } from '@wordpress/components';
27
-
28
- const TILE_SPACING = 15;
29
-
30
- // we must limit displayed columns since readable content max-width is 580px
31
- const MAX_DISPLAYED_COLUMNS = 4;
32
- const MAX_DISPLAYED_COLUMNS_NARROW = 2;
33
-
34
- const { isFullWidth } = alignmentHelpers;
35
-
36
- export const Gallery = ( props ) => {
37
- const [ isCaptionSelected, setIsCaptionSelected ] = useState( false );
38
- useEffect( mediaUploadSync, [] );
39
-
40
- const isRTL = useSelect( ( select ) => {
41
- return !! select( blockEditorStore ).getSettings().isRTL;
42
- }, [] );
43
-
44
- const {
45
- clientId,
46
- selectedImage,
47
- mediaPlaceholder,
48
- onBlur,
49
- onMoveBackward,
50
- onMoveForward,
51
- onRemoveImage,
52
- onSelectImage,
53
- onSetImageAttributes,
54
- onFocusGalleryCaption,
55
- attributes,
56
- isSelected,
57
- isNarrow,
58
- onFocus,
59
- insertBlocksAfter,
60
- } = props;
61
-
62
- const {
63
- align,
64
- columns = defaultColumnsNumberV1( attributes ),
65
- imageCrop,
66
- images,
67
- } = attributes;
68
-
69
- // limit displayed columns when isNarrow is true (i.e. when viewport width is
70
- // less than "small", where small = 600)
71
- const displayedColumns = isNarrow
72
- ? Math.min( columns, MAX_DISPLAYED_COLUMNS_NARROW )
73
- : Math.min( columns, MAX_DISPLAYED_COLUMNS );
74
-
75
- const selectImage = ( index ) => {
76
- return () => {
77
- if ( isCaptionSelected ) {
78
- setIsCaptionSelected( false );
79
- }
80
- // We need to fully invoke the curried function here.
81
- onSelectImage( index )();
82
- };
83
- };
84
-
85
- const focusGalleryCaption = () => {
86
- if ( ! isCaptionSelected ) {
87
- setIsCaptionSelected( true );
88
- }
89
- onFocusGalleryCaption();
90
- };
91
-
92
- return (
93
- <View style={ { flex: 1 } }>
94
- <Tiles
95
- columns={ displayedColumns }
96
- spacing={ TILE_SPACING }
97
- style={
98
- isSelected
99
- ? styles.galleryTilesContainerSelected
100
- : undefined
101
- }
102
- >
103
- { images.map( ( img, index ) => {
104
- const ariaLabel = sprintf(
105
- /* translators: 1: the order number of the image. 2: the total number of images. */
106
- __( 'image %1$d of %2$d in gallery' ),
107
- index + 1,
108
- images.length
109
- );
110
-
111
- return (
112
- <GalleryImage
113
- key={ img.id ? `${ img.id }-${ index }` : img.url }
114
- url={ img.url }
115
- alt={ img.alt }
116
- id={ parseInt( img.id, 10 ) } // make id an integer explicitly
117
- isCropped={ imageCrop }
118
- isFirstItem={ index === 0 }
119
- isLastItem={ index + 1 === images.length }
120
- isSelected={ isSelected && selectedImage === index }
121
- isBlockSelected={ isSelected }
122
- onMoveBackward={ onMoveBackward( index ) }
123
- onMoveForward={ onMoveForward( index ) }
124
- onRemove={ onRemoveImage( index ) }
125
- onSelect={ selectImage( index ) }
126
- onSelectBlock={ onFocus }
127
- setAttributes={ ( attrs ) =>
128
- onSetImageAttributes( index, attrs )
129
- }
130
- caption={ img.caption }
131
- aria-label={ ariaLabel }
132
- isRTL={ isRTL }
133
- />
134
- );
135
- } ) }
136
- </Tiles>
137
- <View style={ isFullWidth( align ) && styles.fullWidth }>
138
- { mediaPlaceholder }
139
- </View>
140
- <BlockCaption
141
- clientId={ clientId }
142
- isSelected={ isCaptionSelected }
143
- accessible
144
- accessibilityLabelCreator={ ( caption ) =>
145
- RichText.isEmpty( caption )
146
- ? /* translators: accessibility text. Empty gallery caption. */
147
- 'Gallery caption. Empty'
148
- : sprintf(
149
- /* translators: accessibility text. %s: gallery caption. */
150
- __( 'Gallery caption. %s' ),
151
- caption
152
- )
153
- }
154
- onFocus={ focusGalleryCaption }
155
- onBlur={ onBlur } // Always assign onBlur as props.
156
- insertBlocksAfter={ insertBlocksAfter }
157
- />
158
- </View>
159
- );
160
- };
161
-
162
- export default Gallery;
@@ -1,98 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import clsx from 'clsx';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import {
10
- RichText,
11
- useBlockProps,
12
- __experimentalGetElementClassName,
13
- } from '@wordpress/block-editor';
14
-
15
- /**
16
- * Internal dependencies
17
- */
18
- import { defaultColumnsNumberV1 } from '../deprecated';
19
- import {
20
- LINK_DESTINATION_ATTACHMENT,
21
- LINK_DESTINATION_MEDIA,
22
- } from './constants';
23
-
24
- export default function saveV1( { attributes } ) {
25
- const {
26
- images,
27
- columns = defaultColumnsNumberV1( attributes ),
28
- imageCrop,
29
- caption,
30
- linkTo,
31
- } = attributes;
32
- const className = `columns-${ columns } ${ imageCrop ? 'is-cropped' : '' }`;
33
-
34
- return (
35
- <figure { ...useBlockProps.save( { className } ) }>
36
- <ul className="blocks-gallery-grid">
37
- { images.map( ( image ) => {
38
- let href;
39
-
40
- switch ( linkTo ) {
41
- case LINK_DESTINATION_MEDIA:
42
- href = image.fullUrl || image.url;
43
- break;
44
- case LINK_DESTINATION_ATTACHMENT:
45
- href = image.link;
46
- break;
47
- }
48
-
49
- const img = (
50
- <img
51
- src={ image.url }
52
- alt={ image.alt }
53
- data-id={ image.id }
54
- data-full-url={ image.fullUrl }
55
- data-link={ image.link }
56
- className={
57
- image.id ? `wp-image-${ image.id }` : null
58
- }
59
- />
60
- );
61
-
62
- return (
63
- <li
64
- key={ image.id || image.url }
65
- className="blocks-gallery-item"
66
- >
67
- <figure>
68
- { href ? <a href={ href }>{ img }</a> : img }
69
- { ! RichText.isEmpty( image.caption ) && (
70
- <RichText.Content
71
- tagName="figcaption"
72
- className={ clsx(
73
- 'blocks-gallery-item__caption',
74
- __experimentalGetElementClassName(
75
- 'caption'
76
- )
77
- ) }
78
- value={ image.caption }
79
- />
80
- ) }
81
- </figure>
82
- </li>
83
- );
84
- } ) }
85
- </ul>
86
- { ! RichText.isEmpty( caption ) && (
87
- <RichText.Content
88
- tagName="figcaption"
89
- className={ clsx(
90
- 'blocks-gallery-caption',
91
- __experimentalGetElementClassName( 'caption' )
92
- ) }
93
- value={ caption }
94
- />
95
- ) }
96
- </figure>
97
- );
98
- }
@@ -1,19 +0,0 @@
1
- export const pickRelevantMediaFiles = ( image, sizeSlug = 'large' ) => {
2
- const imageProps = Object.fromEntries(
3
- Object.entries( image ?? {} ).filter( ( [ key ] ) =>
4
- [ 'alt', 'id', 'link', 'caption' ].includes( key )
5
- )
6
- );
7
-
8
- imageProps.url =
9
- image?.sizes?.[ sizeSlug ]?.url ||
10
- image?.media_details?.sizes?.[ sizeSlug ]?.source_url ||
11
- image?.url;
12
- const fullUrl =
13
- image?.sizes?.full?.url ||
14
- image?.media_details?.sizes?.full?.source_url;
15
- if ( fullUrl ) {
16
- imageProps.fullUrl = fullUrl;
17
- }
18
- return imageProps;
19
- };
@@ -1,11 +0,0 @@
1
- .containerStyle {
2
- flex-direction: row;
3
- flex-wrap: wrap;
4
- }
5
-
6
- .tileStyle {
7
- overflow: hidden;
8
- flex-direction: row;
9
- align-items: center;
10
- border-color: transparent;
11
- }
@@ -1,79 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { View, StyleSheet } from 'react-native';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { Children } from '@wordpress/element';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import styles from './tiles-styles.scss';
15
-
16
- function Tiles( props ) {
17
- const { columns, children, spacing = 10, style } = props;
18
-
19
- const { compose } = StyleSheet;
20
-
21
- const tileCount = Children.count( children );
22
- const lastTile = tileCount - 1;
23
- const lastRow = Math.floor( lastTile / columns );
24
-
25
- const wrappedChildren = Children.map( children, ( child, index ) => {
26
- /**
27
- * Since we don't have `calc()`, we must calculate our spacings here in
28
- * order to preserve even spacing between tiles and equal width for tiles
29
- * in a given row.
30
- *
31
- * In order to ensure equal sizing of tile contents, we distribute the
32
- * spacing such that each tile has an equal "share" of the fixed spacing. To
33
- * keep the tiles properly aligned within their rows, we calculate the left
34
- * and right paddings based on the tile's relative position within the row.
35
- *
36
- * Note: we use padding instead of margins so that the fixed spacing is
37
- * included within the relative spacing (i.e. width percentage), and
38
- * wrapping behavior is preserved.
39
- *
40
- * - The left most tile in a row must have left padding of zero.
41
- * - The right most tile in a row must have a right padding of zero.
42
- *
43
- * The values of these left and right paddings are interpolated for tiles in
44
- * between. The right padding is complementary with the left padding of the
45
- * next tile (i.e. the right padding of [tile n] + the left padding of
46
- * [tile n + 1] will be equal for all tiles except the last one in a given
47
- * row).
48
- */
49
-
50
- const row = Math.floor( index / columns );
51
- const rowLength =
52
- row === lastRow ? ( lastTile % columns ) + 1 : columns;
53
- const indexInRow = index % columns;
54
-
55
- return (
56
- <View
57
- style={ [
58
- styles.tileStyle,
59
- {
60
- width: `${ 100 / rowLength }%`,
61
- paddingLeft: spacing * ( indexInRow / rowLength ),
62
- paddingRight:
63
- spacing * ( 1 - ( indexInRow + 1 ) / rowLength ),
64
- paddingTop: row === 0 ? 0 : spacing / 2,
65
- paddingBottom: row === lastRow ? 0 : spacing / 2,
66
- },
67
- ] }
68
- >
69
- { child }
70
- </View>
71
- );
72
- } );
73
-
74
- const containerStyle = compose( styles.containerStyle, style );
75
-
76
- return <View style={ containerStyle }>{ wrappedChildren }</View>;
77
- }
78
-
79
- export default Tiles;
@@ -1,8 +0,0 @@
1
- // The following dropdown menu props aim to provide a consistent offset and
2
- // placement for ToolsPanel menus for block controls to match color popovers.
3
- export const TOOLSPANEL_DROPDOWNMENU_PROPS = {
4
- popoverProps: {
5
- placement: 'left-start',
6
- offset: 259, // Inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)
7
- },
8
- };