@wordpress/block-library 8.14.0 → 8.15.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 (260) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/avatar/edit.js +1 -0
  3. package/build/avatar/edit.js.map +1 -1
  4. package/build/block/index.js +2 -1
  5. package/build/block/index.js.map +1 -1
  6. package/build/buttons/edit.js +2 -2
  7. package/build/buttons/edit.js.map +1 -1
  8. package/build/column/edit.native.js +1 -4
  9. package/build/column/edit.native.js.map +1 -1
  10. package/build/columns/edit.js +1 -0
  11. package/build/columns/edit.js.map +1 -1
  12. package/build/comment-author-avatar/edit.js +1 -0
  13. package/build/comment-author-avatar/edit.js.map +1 -1
  14. package/build/cover/deprecated.js +4 -2
  15. package/build/cover/deprecated.js.map +1 -1
  16. package/build/embed/embed-placeholder.native.js +37 -13
  17. package/build/embed/embed-placeholder.native.js.map +1 -1
  18. package/build/file/index.js +1 -2
  19. package/build/file/index.js.map +1 -1
  20. package/build/file/inspector.js +1 -0
  21. package/build/file/inspector.js.map +1 -1
  22. package/build/file/view-interactivity.js +23 -0
  23. package/build/file/view-interactivity.js.map +1 -0
  24. package/build/file/view.js +1 -15
  25. package/build/file/view.js.map +1 -1
  26. package/build/footnotes/edit.js +20 -1
  27. package/build/footnotes/edit.js.map +1 -1
  28. package/build/footnotes/format.js +19 -16
  29. package/build/footnotes/format.js.map +1 -1
  30. package/build/footnotes/index.js +0 -1
  31. package/build/footnotes/index.js.map +1 -1
  32. package/build/gallery/edit.js +1 -1
  33. package/build/gallery/edit.js.map +1 -1
  34. package/build/latest-comments/edit.js +1 -0
  35. package/build/latest-comments/edit.js.map +1 -1
  36. package/build/latest-posts/edit.js +2 -0
  37. package/build/latest-posts/edit.js.map +1 -1
  38. package/build/list/edit.js +4 -4
  39. package/build/list/edit.js.map +1 -1
  40. package/build/media-text/media-container.native.js +2 -1
  41. package/build/media-text/media-container.native.js.map +1 -1
  42. package/build/missing/edit.native.js +7 -5
  43. package/build/missing/edit.native.js.map +1 -1
  44. package/build/navigation/constants.js +10 -4
  45. package/build/navigation/constants.js.map +1 -1
  46. package/build/navigation/edit/index.js +16 -2
  47. package/build/navigation/edit/index.js.map +1 -1
  48. package/build/navigation/edit/inner-blocks.js +2 -2
  49. package/build/navigation/edit/inner-blocks.js.map +1 -1
  50. package/build/navigation/edit/unsaved-inner-blocks.js +2 -2
  51. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  52. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -15
  53. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  54. package/build/navigation/index.js +2 -3
  55. package/build/navigation/index.js.map +1 -1
  56. package/build/navigation/use-navigation-menu.js +33 -45
  57. package/build/navigation/use-navigation-menu.js.map +1 -1
  58. package/build/navigation/view-interactivity.js +185 -0
  59. package/build/navigation/view-interactivity.js.map +1 -0
  60. package/build/navigation/view-modal.js +64 -0
  61. package/build/navigation/view-modal.js.map +1 -0
  62. package/build/navigation/view.js +50 -174
  63. package/build/navigation/view.js.map +1 -1
  64. package/build/navigation-link/edit.js +12 -7
  65. package/build/navigation-link/edit.js.map +1 -1
  66. package/build/navigation-submenu/edit.js +2 -2
  67. package/build/navigation-submenu/edit.js.map +1 -1
  68. package/build/query-pagination/edit.js +1 -1
  69. package/build/query-pagination/edit.js.map +1 -1
  70. package/build/query-title/edit.js +43 -1
  71. package/build/query-title/edit.js.map +1 -1
  72. package/build/quote/transforms.js +8 -0
  73. package/build/quote/transforms.js.map +1 -1
  74. package/build/rss/edit.js +3 -0
  75. package/build/rss/edit.js.map +1 -1
  76. package/build/search/edit.js +4 -3
  77. package/build/search/edit.js.map +1 -1
  78. package/build/search/index.js +1 -0
  79. package/build/search/index.js.map +1 -1
  80. package/build/site-logo/edit.js +1 -0
  81. package/build/site-logo/edit.js.map +1 -1
  82. package/build/tag-cloud/edit.js +1 -0
  83. package/build/tag-cloud/edit.js.map +1 -1
  84. package/build/template-part/edit/index.js +1 -1
  85. package/build/template-part/edit/index.js.map +1 -1
  86. package/build/text-columns/edit.js +1 -0
  87. package/build/text-columns/edit.js.map +1 -1
  88. package/build-module/avatar/edit.js +1 -0
  89. package/build-module/avatar/edit.js.map +1 -1
  90. package/build-module/block/index.js +2 -1
  91. package/build-module/block/index.js.map +1 -1
  92. package/build-module/buttons/edit.js +2 -2
  93. package/build-module/buttons/edit.js.map +1 -1
  94. package/build-module/column/edit.native.js +1 -4
  95. package/build-module/column/edit.native.js.map +1 -1
  96. package/build-module/columns/edit.js +1 -0
  97. package/build-module/columns/edit.js.map +1 -1
  98. package/build-module/comment-author-avatar/edit.js +1 -0
  99. package/build-module/comment-author-avatar/edit.js.map +1 -1
  100. package/build-module/cover/deprecated.js +4 -2
  101. package/build-module/cover/deprecated.js.map +1 -1
  102. package/build-module/embed/embed-placeholder.native.js +37 -14
  103. package/build-module/embed/embed-placeholder.native.js.map +1 -1
  104. package/build-module/file/index.js +1 -2
  105. package/build-module/file/index.js.map +1 -1
  106. package/build-module/file/inspector.js +1 -0
  107. package/build-module/file/inspector.js.map +1 -1
  108. package/build-module/file/view-interactivity.js +19 -0
  109. package/build-module/file/view-interactivity.js.map +1 -0
  110. package/build-module/file/view.js +2 -15
  111. package/build-module/file/view.js.map +1 -1
  112. package/build-module/footnotes/edit.js +18 -2
  113. package/build-module/footnotes/edit.js.map +1 -1
  114. package/build-module/footnotes/format.js +19 -16
  115. package/build-module/footnotes/format.js.map +1 -1
  116. package/build-module/footnotes/index.js +0 -1
  117. package/build-module/footnotes/index.js.map +1 -1
  118. package/build-module/gallery/edit.js +1 -1
  119. package/build-module/gallery/edit.js.map +1 -1
  120. package/build-module/latest-comments/edit.js +1 -0
  121. package/build-module/latest-comments/edit.js.map +1 -1
  122. package/build-module/latest-posts/edit.js +2 -0
  123. package/build-module/latest-posts/edit.js.map +1 -1
  124. package/build-module/list/edit.js +4 -4
  125. package/build-module/list/edit.js.map +1 -1
  126. package/build-module/media-text/media-container.native.js +2 -1
  127. package/build-module/media-text/media-container.native.js.map +1 -1
  128. package/build-module/missing/edit.native.js +8 -6
  129. package/build-module/missing/edit.native.js.map +1 -1
  130. package/build-module/navigation/constants.js +8 -3
  131. package/build-module/navigation/constants.js.map +1 -1
  132. package/build-module/navigation/edit/index.js +17 -3
  133. package/build-module/navigation/edit/index.js.map +1 -1
  134. package/build-module/navigation/edit/inner-blocks.js +2 -2
  135. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  136. package/build-module/navigation/edit/unsaved-inner-blocks.js +2 -2
  137. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  138. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +10 -14
  139. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  140. package/build-module/navigation/index.js +2 -3
  141. package/build-module/navigation/index.js.map +1 -1
  142. package/build-module/navigation/use-navigation-menu.js +35 -47
  143. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  144. package/build-module/navigation/view-interactivity.js +182 -0
  145. package/build-module/navigation/view-interactivity.js.map +1 -0
  146. package/build-module/navigation/view-modal.js +58 -0
  147. package/build-module/navigation/view-modal.js.map +1 -0
  148. package/build-module/navigation/view.js +50 -173
  149. package/build-module/navigation/view.js.map +1 -1
  150. package/build-module/navigation-link/edit.js +12 -7
  151. package/build-module/navigation-link/edit.js.map +1 -1
  152. package/build-module/navigation-submenu/edit.js +2 -2
  153. package/build-module/navigation-submenu/edit.js.map +1 -1
  154. package/build-module/query-pagination/edit.js +1 -1
  155. package/build-module/query-pagination/edit.js.map +1 -1
  156. package/build-module/query-title/edit.js +44 -3
  157. package/build-module/query-title/edit.js.map +1 -1
  158. package/build-module/quote/transforms.js +8 -0
  159. package/build-module/quote/transforms.js.map +1 -1
  160. package/build-module/rss/edit.js +3 -0
  161. package/build-module/rss/edit.js.map +1 -1
  162. package/build-module/search/edit.js +4 -3
  163. package/build-module/search/edit.js.map +1 -1
  164. package/build-module/search/index.js +1 -0
  165. package/build-module/search/index.js.map +1 -1
  166. package/build-module/site-logo/edit.js +1 -0
  167. package/build-module/site-logo/edit.js.map +1 -1
  168. package/build-module/tag-cloud/edit.js +1 -0
  169. package/build-module/tag-cloud/edit.js.map +1 -1
  170. package/build-module/template-part/edit/index.js +1 -1
  171. package/build-module/template-part/edit/index.js.map +1 -1
  172. package/build-module/text-columns/edit.js +1 -0
  173. package/build-module/text-columns/edit.js.map +1 -1
  174. package/build-style/details/style-rtl.css +4 -2
  175. package/build-style/details/style.css +4 -2
  176. package/build-style/footnotes/style-rtl.css +4 -3
  177. package/build-style/footnotes/style.css +4 -3
  178. package/build-style/navigation/style-rtl.css +14 -2
  179. package/build-style/navigation/style.css +14 -2
  180. package/build-style/query-pagination/style-rtl.css +4 -2
  181. package/build-style/query-pagination/style.css +4 -2
  182. package/build-style/style-rtl.css +26 -9
  183. package/build-style/style.css +26 -9
  184. package/package.json +33 -32
  185. package/src/audio/test/__snapshots__/edit.native.js.snap +58 -33
  186. package/src/avatar/edit.js +1 -0
  187. package/src/block/block.json +2 -1
  188. package/src/block/editor.native.scss +2 -2
  189. package/src/buttons/edit.js +2 -2
  190. package/src/column/edit.native.js +4 -10
  191. package/src/column/editor.native.scss +0 -4
  192. package/src/columns/edit.js +1 -0
  193. package/src/comment-author-avatar/edit.js +1 -0
  194. package/src/comment-template/index.php +5 -2
  195. package/src/cover/deprecated.js +2 -0
  196. package/src/embed/embed-placeholder.native.js +80 -47
  197. package/src/embed/styles.native.scss +54 -18
  198. package/src/embed/test/index.native.js +5 -5
  199. package/src/file/block.json +1 -2
  200. package/src/file/index.php +19 -1
  201. package/src/file/inspector.js +1 -0
  202. package/src/file/test/__snapshots__/edit.native.js.snap +58 -33
  203. package/src/file/view-interactivity.js +18 -0
  204. package/src/file/view.js +5 -14
  205. package/src/footnotes/block.json +0 -1
  206. package/src/footnotes/edit.js +21 -2
  207. package/src/footnotes/format.js +22 -20
  208. package/src/footnotes/style.scss +6 -3
  209. package/src/gallery/edit.js +1 -1
  210. package/src/gallery/test/index.native.js +17 -16
  211. package/src/home-link/index.php +15 -2
  212. package/src/image/index.php +47 -8
  213. package/src/image/test/edit.native.js +1 -1
  214. package/src/latest-comments/edit.js +1 -0
  215. package/src/latest-posts/edit.js +2 -0
  216. package/src/list/edit.js +6 -4
  217. package/src/list/test/edit.native.js +129 -33
  218. package/src/media-text/media-container.native.js +1 -0
  219. package/src/missing/edit.native.js +12 -10
  220. package/src/missing/style.native.scss +19 -12
  221. package/src/missing/test/__snapshots__/edit.native.js.snap +21 -13
  222. package/src/navigation/block.json +2 -3
  223. package/src/navigation/constants.js +12 -6
  224. package/src/navigation/edit/index.js +29 -1
  225. package/src/navigation/edit/inner-blocks.js +2 -2
  226. package/src/navigation/edit/unsaved-inner-blocks.js +2 -2
  227. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +17 -21
  228. package/src/navigation/index.php +24 -6
  229. package/src/navigation/style.scss +27 -8
  230. package/src/navigation/use-navigation-menu.js +39 -63
  231. package/src/navigation/view-interactivity.js +196 -0
  232. package/src/navigation/view-modal.js +78 -0
  233. package/src/navigation/view.js +67 -189
  234. package/src/navigation-link/edit.js +61 -47
  235. package/src/navigation-submenu/edit.js +2 -2
  236. package/src/paragraph/test/__snapshots__/edit.native.js.snap +1 -0
  237. package/src/paragraph/test/edit.native.js +26 -0
  238. package/src/post-template/index.php +4 -2
  239. package/src/post-title/index.php +6 -3
  240. package/src/preformatted/test/__snapshots__/edit.native.js.snap +2 -0
  241. package/src/query-pagination/edit.js +17 -14
  242. package/src/query-title/edit.js +48 -6
  243. package/src/quote/test/__snapshots__/transforms.native.js.snap +10 -0
  244. package/src/quote/test/transforms.native.js +5 -1
  245. package/src/quote/transforms.js +13 -0
  246. package/src/rss/edit.js +3 -0
  247. package/src/search/block.json +1 -0
  248. package/src/search/edit.js +4 -3
  249. package/src/search/index.php +22 -4
  250. package/src/search/test/__snapshots__/edit.native.js.snap +7 -0
  251. package/src/site-logo/edit.js +1 -0
  252. package/src/tag-cloud/edit.js +1 -0
  253. package/src/template-part/edit/index.js +1 -1
  254. package/src/template-part/index.php +9 -15
  255. package/src/text-columns/edit.js +1 -0
  256. package/build/gallery/shared-icon.native.js +0 -38
  257. package/build/gallery/shared-icon.native.js.map +0 -1
  258. package/build-module/gallery/shared-icon.native.js +0 -24
  259. package/build-module/gallery/shared-icon.native.js.map +0 -1
  260. package/src/gallery/shared-icon.native.js +0 -23
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/file/view.js"],"names":["store","browserSupportsPdfs","hasPdfPreview","selectors","core","file"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,0BAAtB;AACA;AACA;AACA;;AACA,SAASC,mBAAmB,IAAIC,aAAhC,QAAqD,SAArD;AAEAF,KAAK,CAAE;AACNG,EAAAA,SAAS,EAAE;AACVC,IAAAA,IAAI,EAAE;AACLC,MAAAA,IAAI,EAAE;AACLH,QAAAA;AADK;AADD;AADI;AADL,CAAF,CAAL","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store } from '@wordpress/interactivity';\n/**\n * Internal dependencies\n */\nimport { browserSupportsPdfs as hasPdfPreview } from './utils';\n\nstore( {\n\tselectors: {\n\t\tcore: {\n\t\t\tfile: {\n\t\t\t\thasPdfPreview,\n\t\t\t},\n\t\t},\n\t},\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/file/view.js"],"names":["hidePdfEmbedsOnUnsupportedBrowsers","document","addEventListener"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,kCAAT,QAAmD,SAAnD;AAEAC,QAAQ,CAACC,gBAAT,CACC,kBADD,EAECF,kCAFD","sourcesContent":["/**\n * Internal dependencies\n */\nimport { hidePdfEmbedsOnUnsupportedBrowsers } from './utils';\n\ndocument.addEventListener(\n\t'DOMContentLoaded',\n\thidePdfEmbedsOnUnsupportedBrowsers\n);\n"]}
@@ -3,8 +3,11 @@ import { createElement } from "@wordpress/element";
3
3
  /**
4
4
  * WordPress dependencies
5
5
  */
6
- import { RichText, useBlockProps } from '@wordpress/block-editor';
6
+ import { BlockIcon, RichText, useBlockProps } from '@wordpress/block-editor';
7
7
  import { useEntityProp } from '@wordpress/core-data';
8
+ import { __ } from '@wordpress/i18n';
9
+ import { Placeholder } from '@wordpress/components';
10
+ import { formatListNumbered as icon } from '@wordpress/icons';
8
11
  export default function FootnotesEdit({
9
12
  context: {
10
13
  postType,
@@ -13,7 +16,20 @@ export default function FootnotesEdit({
13
16
  }) {
14
17
  const [meta, updateMeta] = useEntityProp('postType', postType, 'meta', postId);
15
18
  const footnotes = meta?.footnotes ? JSON.parse(meta.footnotes) : [];
16
- return createElement("ol", { ...useBlockProps()
19
+ const blockProps = useBlockProps();
20
+
21
+ if (!footnotes.length) {
22
+ return createElement("div", { ...blockProps
23
+ }, createElement(Placeholder, {
24
+ icon: createElement(BlockIcon, {
25
+ icon: icon
26
+ }),
27
+ label: __('Footnotes'),
28
+ instructions: __('Footnotes found in blocks within this document will be displayed here.')
29
+ }));
30
+ }
31
+
32
+ return createElement("ol", { ...blockProps
17
33
  }, footnotes.map(({
18
34
  id,
19
35
  content
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/footnotes/edit.js"],"names":["RichText","useBlockProps","useEntityProp","FootnotesEdit","context","postType","postId","meta","updateMeta","footnotes","JSON","parse","map","id","content","event","target","textContent","trim","scrollIntoView","nextFootnote","stringify","footnote"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,EAAmBC,aAAnB,QAAwC,yBAAxC;AACA,SAASC,aAAT,QAA8B,sBAA9B;AAEA,eAAe,SAASC,aAAT,CAAwB;AAAEC,EAAAA,OAAO,EAAE;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ;AAAX,CAAxB,EAA4D;AAC1E,QAAM,CAAEC,IAAF,EAAQC,UAAR,IAAuBN,aAAa,CACzC,UADyC,EAEzCG,QAFyC,EAGzC,MAHyC,EAIzCC,MAJyC,CAA1C;AAMA,QAAMG,SAAS,GAAGF,IAAI,EAAEE,SAAN,GAAkBC,IAAI,CAACC,KAAL,CAAYJ,IAAI,CAACE,SAAjB,CAAlB,GAAiD,EAAnE;AACA,SACC,yBAASR,aAAa;AAAtB,KACGQ,SAAS,CAACG,GAAV,CAAe,CAAE;AAAEC,IAAAA,EAAF;AAAMC,IAAAA;AAAN,GAAF,KAChB;AAAI,IAAA,GAAG,EAAGD;AAAV,KACC,cAAC,QAAD;AACC,IAAA,EAAE,EAAGA,EADN;AAEC,IAAA,OAAO,EAAC,MAFT;AAGC,IAAA,KAAK,EAAGC,OAHT;AAIC,IAAA,UAAU,EAAGD,EAJd,CAKC;AACA;AAND;AAOC,IAAA,OAAO,EAAKE,KAAF,IAAa;AACtB,UAAK,CAAEA,KAAK,CAACC,MAAN,CAAaC,WAAb,CAAyBC,IAAzB,EAAP,EAAyC;AACxCH,QAAAA,KAAK,CAACC,MAAN,CAAaG,cAAb;AACA;AACD,KAXF;AAYC,IAAA,QAAQ,EAAKC,YAAF,IAAoB;AAC9BZ,MAAAA,UAAU,CAAE,EACX,GAAGD,IADQ;AAEXE,QAAAA,SAAS,EAAEC,IAAI,CAACW,SAAL,CACVZ,SAAS,CAACG,GAAV,CAAiBU,QAAF,IAAgB;AAC9B,iBAAOA,QAAQ,CAACT,EAAT,KAAgBA,EAAhB,GACJ;AACAC,YAAAA,OAAO,EAAEM,YADT;AAEAP,YAAAA;AAFA,WADI,GAKJS,QALH;AAMA,SAPD,CADU;AAFA,OAAF,CAAV;AAaA;AA1BF,IADD,EA4BK,GA5BL,EA6BC;AAAG,IAAA,IAAI,EAAI,IAAIT,EAAI;AAAnB,oBA7BD,CADC,CADH,CADD;AAqCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\nimport { useEntityProp } from '@wordpress/core-data';\n\nexport default function FootnotesEdit( { context: { postType, postId } } ) {\n\tconst [ meta, updateMeta ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'meta',\n\t\tpostId\n\t);\n\tconst footnotes = meta?.footnotes ? JSON.parse( meta.footnotes ) : [];\n\treturn (\n\t\t<ol { ...useBlockProps() }>\n\t\t\t{ footnotes.map( ( { id, content } ) => (\n\t\t\t\t<li key={ id }>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\tidentifier={ id }\n\t\t\t\t\t\t// To do: figure out why the browser is not scrolling\n\t\t\t\t\t\t// into view when it receives focus.\n\t\t\t\t\t\tonFocus={ ( event ) => {\n\t\t\t\t\t\t\tif ( ! event.target.textContent.trim() ) {\n\t\t\t\t\t\t\t\tevent.target.scrollIntoView();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( nextFootnote ) => {\n\t\t\t\t\t\t\tupdateMeta( {\n\t\t\t\t\t\t\t\t...meta,\n\t\t\t\t\t\t\t\tfootnotes: JSON.stringify(\n\t\t\t\t\t\t\t\t\tfootnotes.map( ( footnote ) => {\n\t\t\t\t\t\t\t\t\t\treturn footnote.id === id\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: nextFootnote,\n\t\t\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t: footnote;\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>{ ' ' }\n\t\t\t\t\t<a href={ `#${ id }-link` }>↩︎</a>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t</ol>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/footnotes/edit.js"],"names":["BlockIcon","RichText","useBlockProps","useEntityProp","__","Placeholder","formatListNumbered","icon","FootnotesEdit","context","postType","postId","meta","updateMeta","footnotes","JSON","parse","blockProps","length","map","id","content","event","target","textContent","trim","scrollIntoView","nextFootnote","stringify","footnote"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,QAApB,EAA8BC,aAA9B,QAAmD,yBAAnD;AACA,SAASC,aAAT,QAA8B,sBAA9B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,kBAAkB,IAAIC,IAA/B,QAA2C,kBAA3C;AAEA,eAAe,SAASC,aAAT,CAAwB;AAAEC,EAAAA,OAAO,EAAE;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ;AAAX,CAAxB,EAA4D;AAC1E,QAAM,CAAEC,IAAF,EAAQC,UAAR,IAAuBV,aAAa,CACzC,UADyC,EAEzCO,QAFyC,EAGzC,MAHyC,EAIzCC,MAJyC,CAA1C;AAMA,QAAMG,SAAS,GAAGF,IAAI,EAAEE,SAAN,GAAkBC,IAAI,CAACC,KAAL,CAAYJ,IAAI,CAACE,SAAjB,CAAlB,GAAiD,EAAnE;AACA,QAAMG,UAAU,GAAGf,aAAa,EAAhC;;AAEA,MAAK,CAAEY,SAAS,CAACI,MAAjB,EAA0B;AACzB,WACC,0BAAUD;AAAV,OACC,cAAC,WAAD;AACC,MAAA,IAAI,EAAG,cAAC,SAAD;AAAW,QAAA,IAAI,EAAGV;AAAlB,QADR;AAEC,MAAA,KAAK,EAAGH,EAAE,CAAE,WAAF,CAFX;AAGC,MAAA,YAAY,EAAGA,EAAE,CAChB,wEADgB;AAHlB,MADD,CADD;AAWA;;AAED,SACC,yBAASa;AAAT,KACGH,SAAS,CAACK,GAAV,CAAe,CAAE;AAAEC,IAAAA,EAAF;AAAMC,IAAAA;AAAN,GAAF,KAChB;AAAI,IAAA,GAAG,EAAGD;AAAV,KACC,cAAC,QAAD;AACC,IAAA,EAAE,EAAGA,EADN;AAEC,IAAA,OAAO,EAAC,MAFT;AAGC,IAAA,KAAK,EAAGC,OAHT;AAIC,IAAA,UAAU,EAAGD,EAJd,CAKC;AACA;AAND;AAOC,IAAA,OAAO,EAAKE,KAAF,IAAa;AACtB,UAAK,CAAEA,KAAK,CAACC,MAAN,CAAaC,WAAb,CAAyBC,IAAzB,EAAP,EAAyC;AACxCH,QAAAA,KAAK,CAACC,MAAN,CAAaG,cAAb;AACA;AACD,KAXF;AAYC,IAAA,QAAQ,EAAKC,YAAF,IAAoB;AAC9Bd,MAAAA,UAAU,CAAE,EACX,GAAGD,IADQ;AAEXE,QAAAA,SAAS,EAAEC,IAAI,CAACa,SAAL,CACVd,SAAS,CAACK,GAAV,CAAiBU,QAAF,IAAgB;AAC9B,iBAAOA,QAAQ,CAACT,EAAT,KAAgBA,EAAhB,GACJ;AACAC,YAAAA,OAAO,EAAEM,YADT;AAEAP,YAAAA;AAFA,WADI,GAKJS,QALH;AAMA,SAPD,CADU;AAFA,OAAF,CAAV;AAaA;AA1BF,IADD,EA4BK,GA5BL,EA6BC;AAAG,IAAA,IAAI,EAAI,IAAIT,EAAI;AAAnB,oBA7BD,CADC,CADH,CADD;AAqCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { BlockIcon, RichText, useBlockProps } from '@wordpress/block-editor';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { Placeholder } from '@wordpress/components';\nimport { formatListNumbered as icon } from '@wordpress/icons';\n\nexport default function FootnotesEdit( { context: { postType, postId } } ) {\n\tconst [ meta, updateMeta ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'meta',\n\t\tpostId\n\t);\n\tconst footnotes = meta?.footnotes ? JSON.parse( meta.footnotes ) : [];\n\tconst blockProps = useBlockProps();\n\n\tif ( ! footnotes.length ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabel={ __( 'Footnotes' ) }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Footnotes found in blocks within this document will be displayed here.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ol { ...blockProps }>\n\t\t\t{ footnotes.map( ( { id, content } ) => (\n\t\t\t\t<li key={ id }>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\tidentifier={ id }\n\t\t\t\t\t\t// To do: figure out why the browser is not scrolling\n\t\t\t\t\t\t// into view when it receives focus.\n\t\t\t\t\t\tonFocus={ ( event ) => {\n\t\t\t\t\t\t\tif ( ! event.target.textContent.trim() ) {\n\t\t\t\t\t\t\t\tevent.target.scrollIntoView();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( nextFootnote ) => {\n\t\t\t\t\t\t\tupdateMeta( {\n\t\t\t\t\t\t\t\t...meta,\n\t\t\t\t\t\t\t\tfootnotes: JSON.stringify(\n\t\t\t\t\t\t\t\t\tfootnotes.map( ( footnote ) => {\n\t\t\t\t\t\t\t\t\t\treturn footnote.id === id\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: nextFootnote,\n\t\t\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t: footnote;\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>{ ' ' }\n\t\t\t\t\t<a href={ `#${ id }-link` }>↩︎</a>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t</ol>\n\t);\n}\n"]}
@@ -33,7 +33,6 @@ const {
33
33
  supports: {
34
34
  html: false,
35
35
  multiple: false,
36
- inserter: false,
37
36
  reusable: false
38
37
  },
39
38
  style: "wp-block-footnotes"
@@ -41,11 +40,9 @@ const {
41
40
  export const formatName = 'core/footnote';
42
41
  export const format = {
43
42
  title: __('Footnote'),
44
- tagName: 'a',
43
+ tagName: 'sup',
45
44
  className: 'fn',
46
45
  attributes: {
47
- id: 'id',
48
- href: 'href',
49
46
  'data-fn': 'data-fn'
50
47
  },
51
48
  contentEditable: false,
@@ -68,18 +65,24 @@ export const format = {
68
65
 
69
66
  function onClick() {
70
67
  registry.batch(() => {
71
- const id = createId();
72
- const newValue = insertObject(value, {
73
- type: formatName,
74
- attributes: {
75
- href: '#' + id,
76
- id: `${id}-link`,
77
- 'data-fn': id
78
- },
79
- innerHTML: '*'
80
- }, value.end, value.end);
81
- newValue.start = newValue.end - 1;
82
- onChange(newValue); // BFS search to find the first footnote block.
68
+ let id;
69
+
70
+ if (isObjectActive) {
71
+ const object = value.replacements[value.start];
72
+ id = object?.attributes?.['data-fn'];
73
+ } else {
74
+ id = createId();
75
+ const newValue = insertObject(value, {
76
+ type: formatName,
77
+ attributes: {
78
+ 'data-fn': id
79
+ },
80
+ innerHTML: `<a href="#${id}" id="${id}-link">*</a>`
81
+ }, value.end, value.end);
82
+ newValue.start = newValue.end - 1;
83
+ onChange(newValue);
84
+ } // BFS search to find the first footnote block.
85
+
83
86
 
84
87
  let fnBlock = null;
85
88
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/footnotes/format.js"],"names":["v4","createId","__","formatListNumbered","icon","insertObject","RichTextToolbarButton","store","blockEditorStore","useSelect","useDispatch","useRegistry","createBlock","formatName","format","title","tagName","className","attributes","id","href","contentEditable","edit","Edit","value","onChange","isObjectActive","registry","getSelectedBlockClientId","getBlockRootClientId","getBlockName","getBlocks","selectionChange","insertBlock","onClick","batch","newValue","type","innerHTML","end","start","fnBlock","queue","length","block","shift","name","push","innerBlocks","clientId","rootClientId","undefined"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { v4 as createId } from 'uuid';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { formatListNumbered as icon } from '@wordpress/icons';\nimport { insertObject } from '@wordpress/rich-text';\nimport {\n\tRichTextToolbarButton,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\n\nexport const formatName = 'core/footnote';\nexport const format = {\n\ttitle: __( 'Footnote' ),\n\ttagName: 'a',\n\tclassName: 'fn',\n\tattributes: {\n\t\tid: 'id',\n\t\thref: 'href',\n\t\t'data-fn': 'data-fn',\n\t},\n\tcontentEditable: false,\n\tedit: function Edit( { value, onChange, isObjectActive } ) {\n\t\tconst registry = useRegistry();\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockName,\n\t\t\tgetBlocks,\n\t\t} = useSelect( blockEditorStore );\n\t\tconst { selectionChange, insertBlock } =\n\t\t\tuseDispatch( blockEditorStore );\n\t\tfunction onClick() {\n\t\t\tregistry.batch( () => {\n\t\t\t\tconst id = createId();\n\t\t\t\tconst newValue = insertObject(\n\t\t\t\t\tvalue,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: formatName,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\thref: '#' + id,\n\t\t\t\t\t\t\tid: `${ id }-link`,\n\t\t\t\t\t\t\t'data-fn': id,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinnerHTML: '*',\n\t\t\t\t\t},\n\t\t\t\t\tvalue.end,\n\t\t\t\t\tvalue.end\n\t\t\t\t);\n\t\t\t\tnewValue.start = newValue.end - 1;\n\n\t\t\t\tonChange( newValue );\n\n\t\t\t\t// BFS search to find the first footnote block.\n\t\t\t\tlet fnBlock = null;\n\t\t\t\t{\n\t\t\t\t\tconst queue = [ ...getBlocks() ];\n\t\t\t\t\twhile ( queue.length ) {\n\t\t\t\t\t\tconst block = queue.shift();\n\t\t\t\t\t\tif ( block.name === name ) {\n\t\t\t\t\t\t\tfnBlock = block;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqueue.push( ...block.innerBlocks );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Maybe this should all also be moved to the entity provider.\n\t\t\t\t// When there is no footnotes block in the post, create one and\n\t\t\t\t// insert it at the bottom.\n\t\t\t\tif ( ! fnBlock ) {\n\t\t\t\t\tconst clientId = getSelectedBlockClientId();\n\t\t\t\t\tlet rootClientId = getBlockRootClientId( clientId );\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\trootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) !== 'core/post-content'\n\t\t\t\t\t) {\n\t\t\t\t\t\trootClientId = getBlockRootClientId( rootClientId );\n\t\t\t\t\t}\n\n\t\t\t\t\tfnBlock = createBlock( name );\n\n\t\t\t\t\tinsertBlock( fnBlock, undefined, rootClientId );\n\t\t\t\t}\n\n\t\t\t\tselectionChange( fnBlock.clientId, id, 0, 0 );\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<RichTextToolbarButton\n\t\t\t\ticon={ icon }\n\t\t\t\ttitle={ __( 'Footnote' ) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tisActive={ isObjectActive }\n\t\t\t/>\n\t\t);\n\t},\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/footnotes/format.js"],"names":["v4","createId","__","formatListNumbered","icon","insertObject","RichTextToolbarButton","store","blockEditorStore","useSelect","useDispatch","useRegistry","createBlock","formatName","format","title","tagName","className","attributes","contentEditable","edit","Edit","value","onChange","isObjectActive","registry","getSelectedBlockClientId","getBlockRootClientId","getBlockName","getBlocks","selectionChange","insertBlock","onClick","batch","id","object","replacements","start","newValue","type","innerHTML","end","fnBlock","queue","length","block","shift","name","push","innerBlocks","clientId","rootClientId","undefined"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { v4 as createId } from 'uuid';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { formatListNumbered as icon } from '@wordpress/icons';\nimport { insertObject } from '@wordpress/rich-text';\nimport {\n\tRichTextToolbarButton,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\n\nexport const formatName = 'core/footnote';\nexport const format = {\n\ttitle: __( 'Footnote' ),\n\ttagName: 'sup',\n\tclassName: 'fn',\n\tattributes: {\n\t\t'data-fn': 'data-fn',\n\t},\n\tcontentEditable: false,\n\tedit: function Edit( { value, onChange, isObjectActive } ) {\n\t\tconst registry = useRegistry();\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockName,\n\t\t\tgetBlocks,\n\t\t} = useSelect( blockEditorStore );\n\t\tconst { selectionChange, insertBlock } =\n\t\t\tuseDispatch( blockEditorStore );\n\n\t\tfunction onClick() {\n\t\t\tregistry.batch( () => {\n\t\t\t\tlet id;\n\t\t\t\tif ( isObjectActive ) {\n\t\t\t\t\tconst object = value.replacements[ value.start ];\n\t\t\t\t\tid = object?.attributes?.[ 'data-fn' ];\n\t\t\t\t} else {\n\t\t\t\t\tid = createId();\n\t\t\t\t\tconst newValue = insertObject(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: formatName,\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t'data-fn': id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tinnerHTML: `<a href=\"#${ id }\" id=\"${ id }-link\">*</a>`,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvalue.end,\n\t\t\t\t\t\tvalue.end\n\t\t\t\t\t);\n\t\t\t\t\tnewValue.start = newValue.end - 1;\n\t\t\t\t\tonChange( newValue );\n\t\t\t\t}\n\n\t\t\t\t// BFS search to find the first footnote block.\n\t\t\t\tlet fnBlock = null;\n\t\t\t\t{\n\t\t\t\t\tconst queue = [ ...getBlocks() ];\n\t\t\t\t\twhile ( queue.length ) {\n\t\t\t\t\t\tconst block = queue.shift();\n\t\t\t\t\t\tif ( block.name === name ) {\n\t\t\t\t\t\t\tfnBlock = block;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqueue.push( ...block.innerBlocks );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Maybe this should all also be moved to the entity provider.\n\t\t\t\t// When there is no footnotes block in the post, create one and\n\t\t\t\t// insert it at the bottom.\n\t\t\t\tif ( ! fnBlock ) {\n\t\t\t\t\tconst clientId = getSelectedBlockClientId();\n\t\t\t\t\tlet rootClientId = getBlockRootClientId( clientId );\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\trootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) !== 'core/post-content'\n\t\t\t\t\t) {\n\t\t\t\t\t\trootClientId = getBlockRootClientId( rootClientId );\n\t\t\t\t\t}\n\n\t\t\t\t\tfnBlock = createBlock( name );\n\n\t\t\t\t\tinsertBlock( fnBlock, undefined, rootClientId );\n\t\t\t\t}\n\n\t\t\t\tselectionChange( fnBlock.clientId, id, 0, 0 );\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<RichTextToolbarButton\n\t\t\t\ticon={ icon }\n\t\t\t\ttitle={ __( 'Footnote' ) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tisActive={ isObjectActive }\n\t\t\t/>\n\t\t);\n\t},\n};\n"]}
@@ -22,7 +22,6 @@ const metadata = {
22
22
  supports: {
23
23
  html: false,
24
24
  multiple: false,
25
- inserter: false,
26
25
  reusable: false
27
26
  },
28
27
  style: "wp-block-footnotes"
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/footnotes/index.js"],"names":["formatListNumbered","icon","registerFormatType","initBlock","edit","formatName","format","name","metadata","settings","init"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,kBAAkB,IAAIC,IAA/B,QAA2C,kBAA3C;AACA,SAASC,kBAAT,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,qBAAtB;AACA,OAAOC,IAAP,MAAiB,QAAjB;;;;;;;;;;;;;;;;;;;AAEA,SAASC,UAAT,EAAqBC,MAArB,QAAmC,UAAnC;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AAEA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBR,EAAAA,IADuB;AAEvBG,EAAAA;AAFuB,CAAjB,C,CAKP;;AACAF,kBAAkB,CAAEG,UAAF,EAAcC,MAAd,CAAlB;AAEA,OAAO,MAAMI,IAAI,GAAG,MAAM;AACzBP,EAAAA,SAAS,CAAE;AAAEI,IAAAA,IAAF;AAAQC,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,GAAF,CAAT;AACA,CAFM","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { formatListNumbered as icon } from '@wordpress/icons';\nimport { registerFormatType } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport metadata from './block.json';\nimport { formatName, format } from './format';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n};\n\n// Would be good to remove the format and HoR if the block is unregistered.\nregisterFormatType( formatName, format );\n\nexport const init = () => {\n\tinitBlock( { name, metadata, settings } );\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/footnotes/index.js"],"names":["formatListNumbered","icon","registerFormatType","initBlock","edit","formatName","format","name","metadata","settings","init"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,kBAAkB,IAAIC,IAA/B,QAA2C,kBAA3C;AACA,SAASC,kBAAT,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,qBAAtB;AACA,OAAOC,IAAP,MAAiB,QAAjB;;;;;;;;;;;;;;;;;;AAEA,SAASC,UAAT,EAAqBC,MAArB,QAAmC,UAAnC;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AAEA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBR,EAAAA,IADuB;AAEvBG,EAAAA;AAFuB,CAAjB,C,CAKP;;AACAF,kBAAkB,CAAEG,UAAF,EAAcC,MAAd,CAAlB;AAEA,OAAO,MAAMI,IAAI,GAAG,MAAM;AACzBP,EAAAA,SAAS,CAAE;AAAEI,IAAAA,IAAF;AAAQC,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,GAAF,CAAT;AACA,CAFM","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { formatListNumbered as icon } from '@wordpress/icons';\nimport { registerFormatType } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport metadata from './block.json';\nimport { formatName, format } from './format';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n};\n\n// Would be good to remove the format and HoR if the block is unregistered.\nregisterFormatType( formatName, format );\n\nexport const init = () => {\n\tinitBlock( { name, metadata, settings } );\n};\n"]}
@@ -409,7 +409,7 @@ function GalleryEdit(props) {
409
409
  max: Math.min(MAX_COLUMNS, images.length),
410
410
  ...MOBILE_CONTROL_PROPS_RANGE_CONTROL,
411
411
  required: true,
412
- size: "__unstable-large"
412
+ __next40pxDefaultSize: true
413
413
  }), createElement(ToggleControl, {
414
414
  __nextHasNoMarginBottom: true,
415
415
  label: __('Crop images'),
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/gallery/edit.js"],"names":["classnames","compose","usePrevious","BaseControl","PanelBody","SelectControl","ToggleControl","RangeControl","Spinner","ToolbarButton","store","blockEditorStore","MediaPlaceholder","InspectorControls","useBlockProps","useInnerBlocksProps","BlockControls","MediaReplaceFlow","Platform","useCallback","useEffect","useState","useMemo","__","_x","sprintf","useSelect","useDispatch","withViewportMatch","View","createBlock","createBlobURL","noticesStore","caption","captionIcon","sharedIcon","defaultColumnsNumber","pickRelevantMediaFiles","getHrefAndDestination","getUpdatedLinkTargetSettings","getImageSizeAttributes","Gallery","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","useImageSizes","useGetNewImages","useGetMedia","GapStyles","MAX_COLUMNS","linkOptions","value","label","ALLOWED_MEDIA_TYPES","allowedBlocks","PLACEHOLDER_TEXT","isNative","MOBILE_CONTROL_PROPS_RANGE_CONTROL","type","GalleryEdit","props","setAttributes","attributes","className","clientId","isSelected","insertBlocksAfter","isContentLocked","columns","imageCrop","linkTarget","linkTo","sizeSlug","showCaption","setShowCaption","prevCaption","captionRef","node","focus","__unstableMarkNextChangeAsNotPersistent","replaceInnerBlocks","updateBlockAttributes","selectBlock","createSuccessNotice","createErrorNotice","getBlock","getSettings","preferredStyle","select","settings","preferredStyleVariations","__experimentalPreferredStyleVariations","innerBlockImages","innerBlocks","wasBlockJustInserted","images","map","block","id","url","fromSavedContent","Boolean","originalContent","imageData","newImages","forEach","newImage","buildImageAttributes","align","undefined","imageSizeOptions","imageAttributes","image","find","newClassName","newLinkTarget","rel","linkDestination","raw","alt","alt_text","isValidFileType","file","nativeFileData","mediaTypeSelector","media_type","some","mediaType","indexOf","updateImages","selectedImages","newFileUploads","Object","prototype","toString","call","imageArray","Array","from","every","processedImages","filter","newOrderMap","reduce","result","index","existingImageBlocks","img","newImageList","existingImg","newBlocks","concat","sort","a","b","length","onUploadError","message","setLinkTo","changedAttributes","blocks","push","linkToText","linkType","setColumnsNumber","toggleImageCrop","getImageCropHelp","checked","toggleOpenInNewTab","openInNewTab","noticeText","updateImagesSize","newSizeSlug","imageSize","size","window","wp","media","view","defaultProps","link","hasImages","hasImageIds","imagesUploading","mediaPlaceholderProps","web","addToGallery","disableMediaButtons","native","isAppender","autoOpenMediaUpload","mediaPlaceholder","title","instructions","blockProps","nativeInnerBlockProps","marginHorizontal","marginVertical","innerBlocksProps","orientation","renderAppender","children","hasLinkTo","Math","min","isWeb","style","spacing","blockGap","isNarrow"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { compose, usePrevious } from '@wordpress/compose';\nimport {\n\tBaseControl,\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\tRangeControl,\n\tSpinner,\n\tToolbarButton,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tMediaReplaceFlow,\n} from '@wordpress/block-editor';\nimport {\n\tPlatform,\n\tuseCallback,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n} from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { caption as captionIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from './shared-icon';\nimport { defaultColumnsNumber, pickRelevantMediaFiles } from './shared';\nimport { getHrefAndDestination } from './utils';\nimport {\n\tgetUpdatedLinkTargetSettings,\n\tgetImageSizeAttributes,\n} from '../image/utils';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\nimport useImageSizes from './use-image-sizes';\nimport useGetNewImages from './use-get-new-images';\nimport useGetMedia from './use-get-media';\nimport GapStyles from './gap-styles';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{\n\t\tvalue: LINK_DESTINATION_NONE,\n\t\tlabel: _x( 'None', 'Media item link option' ),\n\t},\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst allowedBlocks = [ 'core/image' ];\n\nconst PLACEHOLDER_TEXT = Platform.isNative\n\t? __( 'ADD MEDIA' )\n\t: __( 'Drag images, upload new ones or select files from your library.' );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.isNative\n\t? { type: 'stepper' }\n\t: {};\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tsetAttributes,\n\t\tattributes,\n\t\tclassName,\n\t\tclientId,\n\t\tisSelected,\n\t\tinsertBlocksAfter,\n\t\tisContentLocked,\n\t} = props;\n\n\tconst { columns, imageCrop, linkTarget, linkTo, sizeSlug, caption } =\n\t\tattributes;\n\tconst [ showCaption, setShowCaption ] = useState( !! caption );\n\tconst prevCaption = usePrevious( caption );\n\n\t// We need to show the caption when changes come from\n\t// history navigation(undo/redo).\n\tuseEffect( () => {\n\t\tif ( caption && ! prevCaption ) {\n\t\t\tsetShowCaption( true );\n\t\t}\n\t}, [ caption, prevCaption ] );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected && ! caption ) {\n\t\t\tsetShowCaption( false );\n\t\t}\n\t}, [ isSelected, caption ] );\n\n\t// Focus the caption when we click to add one.\n\tconst captionRef = useCallback(\n\t\t( node ) => {\n\t\t\tif ( node && ! caption ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ caption ]\n\t);\n\n\tconst {\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceInnerBlocks,\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst { getBlock, getSettings, preferredStyle } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\tconst preferredStyleVariations =\n\t\t\tsettings.__experimentalPreferredStyleVariations;\n\t\treturn {\n\t\t\tgetBlock: select( blockEditorStore ).getBlock,\n\t\t\tgetSettings: select( blockEditorStore ).getSettings,\n\t\t\tpreferredStyle: preferredStyleVariations?.value?.[ 'core/image' ],\n\t\t};\n\t}, [] );\n\n\tconst innerBlockImages = useSelect(\n\t\t( select ) => {\n\t\t\tconst innerBlocks =\n\t\t\t\tselect( blockEditorStore ).getBlock( clientId )?.innerBlocks ??\n\t\t\t\t[];\n\t\t\treturn innerBlocks;\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst wasBlockJustInserted = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).wasBlockJustInserted(\n\t\t\t\tclientId,\n\t\t\t\t'inserter_menu'\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo(\n\t\t() =>\n\t\t\tinnerBlockImages?.map( ( block ) => ( {\n\t\t\t\tclientId: block.clientId,\n\t\t\t\tid: block.attributes.id,\n\t\t\t\turl: block.attributes.url,\n\t\t\t\tattributes: block.attributes,\n\t\t\t\tfromSavedContent: Boolean( block.originalContent ),\n\t\t\t} ) ),\n\t\t[ innerBlockImages ]\n\t);\n\n\tconst imageData = useGetMedia( innerBlockImages );\n\n\tconst newImages = useGetNewImages( images, imageData );\n\n\tuseEffect( () => {\n\t\tnewImages?.forEach( ( newImage ) => {\n\t\t\t// Update the images data without creating new undo levels.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( newImage.clientId, {\n\t\t\t\t...buildImageAttributes( newImage.attributes ),\n\t\t\t\tid: newImage.id,\n\t\t\t\talign: undefined,\n\t\t\t} );\n\t\t} );\n\t}, [ newImages ] );\n\n\tconst imageSizeOptions = useImageSizes(\n\t\timageData,\n\t\tisSelected,\n\t\tgetSettings\n\t);\n\n\t/**\n\t * Determines the image attributes that should be applied to an image block\n\t * after the gallery updates.\n\t *\n\t * The gallery will receive the full collection of images when a new image\n\t * is added. As a result we need to reapply the image's original settings if\n\t * it already existed in the gallery. If the image is in fact new, we need\n\t * to apply the gallery's current settings to the image.\n\t *\n\t * @param {Object} imageAttributes Media object for the actual image.\n\t * @return {Object} Attributes to set on the new image block.\n\t */\n\tfunction buildImageAttributes( imageAttributes ) {\n\t\tconst image = imageAttributes.id\n\t\t\t? imageData.find( ( { id } ) => id === imageAttributes.id )\n\t\t\t: null;\n\n\t\tlet newClassName;\n\t\tif ( imageAttributes.className && imageAttributes.className !== '' ) {\n\t\t\tnewClassName = imageAttributes.className;\n\t\t} else {\n\t\t\tnewClassName = preferredStyle\n\t\t\t\t? `is-style-${ preferredStyle }`\n\t\t\t\t: undefined;\n\t\t}\n\n\t\tlet newLinkTarget;\n\t\tif ( imageAttributes.linkTarget || imageAttributes.rel ) {\n\t\t\t// When transformed from image blocks, the link destination and rel attributes are inherited.\n\t\t\tnewLinkTarget = {\n\t\t\t\tlinkTarget: imageAttributes.linkTarget,\n\t\t\t\trel: imageAttributes.rel,\n\t\t\t};\n\t\t} else {\n\t\t\t// When an image is added, update the link destination and rel attributes according to the gallery settings\n\t\t\tnewLinkTarget = getUpdatedLinkTargetSettings(\n\t\t\t\tlinkTarget,\n\t\t\t\tattributes\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t...pickRelevantMediaFiles( image, sizeSlug ),\n\t\t\t...getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tlinkTo,\n\t\t\t\timageAttributes?.linkDestination\n\t\t\t),\n\t\t\t...newLinkTarget,\n\t\t\tclassName: newClassName,\n\t\t\tsizeSlug,\n\t\t\tcaption: imageAttributes.caption || image.caption?.raw,\n\t\t\talt: imageAttributes.alt || image.alt_text,\n\t\t};\n\t}\n\n\tfunction isValidFileType( file ) {\n\t\t// It's necessary to retrieve the media type from the raw image data for already-uploaded images on native.\n\t\tconst nativeFileData =\n\t\t\tPlatform.isNative && file.id\n\t\t\t\t? imageData.find( ( { id } ) => id === file.id )\n\t\t\t\t: null;\n\n\t\tconst mediaTypeSelector = nativeFileData\n\t\t\t? nativeFileData?.media_type\n\t\t\t: file.type;\n\n\t\treturn (\n\t\t\tALLOWED_MEDIA_TYPES.some(\n\t\t\t\t( mediaType ) => mediaTypeSelector?.indexOf( mediaType ) === 0\n\t\t\t) || file.url?.indexOf( 'blob:' ) === 0\n\t\t);\n\t}\n\n\tfunction updateImages( selectedImages ) {\n\t\tconst newFileUploads =\n\t\t\tObject.prototype.toString.call( selectedImages ) ===\n\t\t\t'[object FileList]';\n\n\t\tconst imageArray = newFileUploads\n\t\t\t? Array.from( selectedImages ).map( ( file ) => {\n\t\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn file;\n\t\t\t } )\n\t\t\t: selectedImages;\n\n\t\tif ( ! imageArray.every( isValidFileType ) ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\t__(\n\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t),\n\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t);\n\t\t}\n\n\t\tconst processedImages = imageArray\n\t\t\t.filter( ( file ) => file.url || isValidFileType( file ) )\n\t\t\t.map( ( file ) => {\n\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn file;\n\t\t\t} );\n\n\t\t// Because we are reusing existing innerImage blocks any reordering\n\t\t// done in the media library will be lost so we need to reapply that ordering\n\t\t// once the new image blocks are merged in with existing.\n\t\tconst newOrderMap = processedImages.reduce(\n\t\t\t( result, image, index ) => (\n\t\t\t\t( result[ image.id ] = index ), result\n\t\t\t),\n\t\t\t{}\n\t\t);\n\n\t\tconst existingImageBlocks = ! newFileUploads\n\t\t\t? innerBlockImages.filter( ( block ) =>\n\t\t\t\t\tprocessedImages.find(\n\t\t\t\t\t\t( img ) => img.id === block.attributes.id\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: innerBlockImages;\n\n\t\tconst newImageList = processedImages.filter(\n\t\t\t( img ) =>\n\t\t\t\t! existingImageBlocks.find(\n\t\t\t\t\t( existingImg ) => img.id === existingImg.attributes.id\n\t\t\t\t)\n\t\t);\n\n\t\tconst newBlocks = newImageList.map( ( image ) => {\n\t\t\treturn createBlock( 'core/image', {\n\t\t\t\tid: image.id,\n\t\t\t\turl: image.url,\n\t\t\t\tcaption: image.caption,\n\t\t\t\talt: image.alt,\n\t\t\t} );\n\t\t} );\n\n\t\treplaceInnerBlocks(\n\t\t\tclientId,\n\t\t\texistingImageBlocks\n\t\t\t\t.concat( newBlocks )\n\t\t\t\t.sort(\n\t\t\t\t\t( a, b ) =>\n\t\t\t\t\t\tnewOrderMap[ a.attributes.id ] -\n\t\t\t\t\t\tnewOrderMap[ b.attributes.id ]\n\t\t\t\t)\n\t\t);\n\n\t\t// Select the first block to scroll into view when new blocks are added.\n\t\tif ( newBlocks?.length > 0 ) {\n\t\t\tselectBlock( newBlocks[ 0 ].clientId );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tvalue\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst linkToText = [ ...linkOptions ].find(\n\t\t\t( linkType ) => linkType.value === value\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image links updated to: %s' ),\n\t\t\t\tlinkToText.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-linkTo',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction toggleOpenInNewTab( openInNewTab ) {\n\t\tconst newLinkTarget = openInNewTab ? '_blank' : undefined;\n\t\tsetAttributes( { linkTarget: newLinkTarget } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tchangedAttributes[ block.clientId ] = getUpdatedLinkTargetSettings(\n\t\t\t\tnewLinkTarget,\n\t\t\t\tblock.attributes\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst noticeText = openInNewTab\n\t\t\t? __( 'All gallery images updated to open in new tab' )\n\t\t\t: __( 'All gallery images updated to not open in new tab' );\n\t\tcreateSuccessNotice( noticeText, {\n\t\t\tid: 'gallery-attributes-openInNewTab',\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tsetAttributes( { sizeSlug: newSizeSlug } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getImageSizeAttributes(\n\t\t\t\timage,\n\t\t\t\tnewSizeSlug\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst imageSize = imageSizeOptions.find(\n\t\t\t( size ) => size.value === newSizeSlug\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image sizes updated to: %s' ),\n\t\t\t\timageSize.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-sizeSlug',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\tconst imagesUploading = images.some( ( img ) =>\n\t\t! Platform.isNative\n\t\t\t? ! img.id && img.url?.indexOf( 'blob:' ) === 0\n\t\t\t: img.url?.indexOf( 'file:' ) === 0\n\t);\n\n\t// MediaPlaceholder props are different between web and native hence, we provide a platform-specific set.\n\tconst mediaPlaceholderProps = Platform.select( {\n\t\tweb: {\n\t\t\taddToGallery: false,\n\t\t\tdisableMediaButtons: imagesUploading,\n\t\t\tvalue: {},\n\t\t},\n\t\tnative: {\n\t\t\taddToGallery: hasImageIds,\n\t\t\tisAppender: hasImages,\n\t\t\tdisableMediaButtons:\n\t\t\t\t( hasImages && ! isSelected ) || imagesUploading,\n\t\t\tvalue: hasImageIds ? images : {},\n\t\t\tautoOpenMediaUpload:\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted,\n\t\t},\n\t} );\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\thandleUpload={ false }\n\t\t\ticon={ sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Gallery' ),\n\t\t\t\tinstructions: PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ updateImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tonError={ onUploadError }\n\t\t\t{ ...mediaPlaceholderProps }\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( className, 'has-nested-images' ),\n\t} );\n\n\tconst nativeInnerBlockProps = Platform.isNative && {\n\t\tmarginHorizontal: 0,\n\t\tmarginVertical: 0,\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t\t...nativeInnerBlockProps,\n\t} );\n\n\tif ( ! hasImages ) {\n\t\treturn (\n\t\t\t<View { ...innerBlocksProps }>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t{ mediaPlaceholder }\n\t\t\t</View>\n\t\t);\n\t}\n\n\tconst hasLinkTo = linkTo && linkTo !== 'none';\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t: defaultColumnsNumber( images.length )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t\t{ hasLinkTo && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ Platform.isWeb && ! imageSizeOptions && hasImageIds && (\n\t\t\t\t\t\t<BaseControl className={ 'gallery-image-sizes' }>\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Resolution' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<View className={ 'gallery-image-sizes__loading' }>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t{ __( 'Loading options…' ) }\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ ! isContentLocked && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetShowCaption( ! showCaption );\n\t\t\t\t\t\t\tif ( showCaption && caption ) {\n\t\t\t\t\t\t\t\tsetAttributes( { caption: undefined } );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={ captionIcon }\n\t\t\t\t\t\tisPressed={ showCaption }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tshowCaption\n\t\t\t\t\t\t\t\t? __( 'Remove caption' )\n\t\t\t\t\t\t\t\t: __( 'Add caption' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\tonSelect={ updateImages }\n\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\tmultiple={ true }\n\t\t\t\t\tmediaIds={ images\n\t\t\t\t\t\t.filter( ( image ) => image.id )\n\t\t\t\t\t\t.map( ( image ) => image.id ) }\n\t\t\t\t\taddToGallery={ hasImageIds }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ Platform.isWeb && (\n\t\t\t\t<GapStyles\n\t\t\t\t\tblockGap={ attributes.style?.spacing?.blockGap }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\tshowCaption={ showCaption }\n\t\t\t\tref={ Platform.isWeb ? captionRef : undefined }\n\t\t\t\timages={ images }\n\t\t\t\tmediaPlaceholder={\n\t\t\t\t\t! hasImages || Platform.isNative\n\t\t\t\t\t\t? mediaPlaceholder\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tblockProps={ innerBlocksProps }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t/>\n\t\t</>\n\t);\n}\nexport default compose( [ withViewportMatch( { isNarrow: '< small' } ) ] )(\n\tGalleryEdit\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/gallery/edit.js"],"names":["classnames","compose","usePrevious","BaseControl","PanelBody","SelectControl","ToggleControl","RangeControl","Spinner","ToolbarButton","store","blockEditorStore","MediaPlaceholder","InspectorControls","useBlockProps","useInnerBlocksProps","BlockControls","MediaReplaceFlow","Platform","useCallback","useEffect","useState","useMemo","__","_x","sprintf","useSelect","useDispatch","withViewportMatch","View","createBlock","createBlobURL","noticesStore","caption","captionIcon","sharedIcon","defaultColumnsNumber","pickRelevantMediaFiles","getHrefAndDestination","getUpdatedLinkTargetSettings","getImageSizeAttributes","Gallery","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","useImageSizes","useGetNewImages","useGetMedia","GapStyles","MAX_COLUMNS","linkOptions","value","label","ALLOWED_MEDIA_TYPES","allowedBlocks","PLACEHOLDER_TEXT","isNative","MOBILE_CONTROL_PROPS_RANGE_CONTROL","type","GalleryEdit","props","setAttributes","attributes","className","clientId","isSelected","insertBlocksAfter","isContentLocked","columns","imageCrop","linkTarget","linkTo","sizeSlug","showCaption","setShowCaption","prevCaption","captionRef","node","focus","__unstableMarkNextChangeAsNotPersistent","replaceInnerBlocks","updateBlockAttributes","selectBlock","createSuccessNotice","createErrorNotice","getBlock","getSettings","preferredStyle","select","settings","preferredStyleVariations","__experimentalPreferredStyleVariations","innerBlockImages","innerBlocks","wasBlockJustInserted","images","map","block","id","url","fromSavedContent","Boolean","originalContent","imageData","newImages","forEach","newImage","buildImageAttributes","align","undefined","imageSizeOptions","imageAttributes","image","find","newClassName","newLinkTarget","rel","linkDestination","raw","alt","alt_text","isValidFileType","file","nativeFileData","mediaTypeSelector","media_type","some","mediaType","indexOf","updateImages","selectedImages","newFileUploads","Object","prototype","toString","call","imageArray","Array","from","every","processedImages","filter","newOrderMap","reduce","result","index","existingImageBlocks","img","newImageList","existingImg","newBlocks","concat","sort","a","b","length","onUploadError","message","setLinkTo","changedAttributes","blocks","push","linkToText","linkType","setColumnsNumber","toggleImageCrop","getImageCropHelp","checked","toggleOpenInNewTab","openInNewTab","noticeText","updateImagesSize","newSizeSlug","imageSize","size","window","wp","media","view","defaultProps","link","hasImages","hasImageIds","imagesUploading","mediaPlaceholderProps","web","addToGallery","disableMediaButtons","native","isAppender","autoOpenMediaUpload","mediaPlaceholder","title","instructions","blockProps","nativeInnerBlockProps","marginHorizontal","marginVertical","innerBlocksProps","orientation","renderAppender","children","hasLinkTo","Math","min","isWeb","style","spacing","blockGap","isNarrow"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { compose, usePrevious } from '@wordpress/compose';\nimport {\n\tBaseControl,\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\tRangeControl,\n\tSpinner,\n\tToolbarButton,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tMediaReplaceFlow,\n} from '@wordpress/block-editor';\nimport {\n\tPlatform,\n\tuseCallback,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n} from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { caption as captionIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from './shared-icon';\nimport { defaultColumnsNumber, pickRelevantMediaFiles } from './shared';\nimport { getHrefAndDestination } from './utils';\nimport {\n\tgetUpdatedLinkTargetSettings,\n\tgetImageSizeAttributes,\n} from '../image/utils';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\nimport useImageSizes from './use-image-sizes';\nimport useGetNewImages from './use-get-new-images';\nimport useGetMedia from './use-get-media';\nimport GapStyles from './gap-styles';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{\n\t\tvalue: LINK_DESTINATION_NONE,\n\t\tlabel: _x( 'None', 'Media item link option' ),\n\t},\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst allowedBlocks = [ 'core/image' ];\n\nconst PLACEHOLDER_TEXT = Platform.isNative\n\t? __( 'ADD MEDIA' )\n\t: __( 'Drag images, upload new ones or select files from your library.' );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.isNative\n\t? { type: 'stepper' }\n\t: {};\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tsetAttributes,\n\t\tattributes,\n\t\tclassName,\n\t\tclientId,\n\t\tisSelected,\n\t\tinsertBlocksAfter,\n\t\tisContentLocked,\n\t} = props;\n\n\tconst { columns, imageCrop, linkTarget, linkTo, sizeSlug, caption } =\n\t\tattributes;\n\tconst [ showCaption, setShowCaption ] = useState( !! caption );\n\tconst prevCaption = usePrevious( caption );\n\n\t// We need to show the caption when changes come from\n\t// history navigation(undo/redo).\n\tuseEffect( () => {\n\t\tif ( caption && ! prevCaption ) {\n\t\t\tsetShowCaption( true );\n\t\t}\n\t}, [ caption, prevCaption ] );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected && ! caption ) {\n\t\t\tsetShowCaption( false );\n\t\t}\n\t}, [ isSelected, caption ] );\n\n\t// Focus the caption when we click to add one.\n\tconst captionRef = useCallback(\n\t\t( node ) => {\n\t\t\tif ( node && ! caption ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ caption ]\n\t);\n\n\tconst {\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceInnerBlocks,\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst { getBlock, getSettings, preferredStyle } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\tconst preferredStyleVariations =\n\t\t\tsettings.__experimentalPreferredStyleVariations;\n\t\treturn {\n\t\t\tgetBlock: select( blockEditorStore ).getBlock,\n\t\t\tgetSettings: select( blockEditorStore ).getSettings,\n\t\t\tpreferredStyle: preferredStyleVariations?.value?.[ 'core/image' ],\n\t\t};\n\t}, [] );\n\n\tconst innerBlockImages = useSelect(\n\t\t( select ) => {\n\t\t\tconst innerBlocks =\n\t\t\t\tselect( blockEditorStore ).getBlock( clientId )?.innerBlocks ??\n\t\t\t\t[];\n\t\t\treturn innerBlocks;\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst wasBlockJustInserted = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).wasBlockJustInserted(\n\t\t\t\tclientId,\n\t\t\t\t'inserter_menu'\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo(\n\t\t() =>\n\t\t\tinnerBlockImages?.map( ( block ) => ( {\n\t\t\t\tclientId: block.clientId,\n\t\t\t\tid: block.attributes.id,\n\t\t\t\turl: block.attributes.url,\n\t\t\t\tattributes: block.attributes,\n\t\t\t\tfromSavedContent: Boolean( block.originalContent ),\n\t\t\t} ) ),\n\t\t[ innerBlockImages ]\n\t);\n\n\tconst imageData = useGetMedia( innerBlockImages );\n\n\tconst newImages = useGetNewImages( images, imageData );\n\n\tuseEffect( () => {\n\t\tnewImages?.forEach( ( newImage ) => {\n\t\t\t// Update the images data without creating new undo levels.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( newImage.clientId, {\n\t\t\t\t...buildImageAttributes( newImage.attributes ),\n\t\t\t\tid: newImage.id,\n\t\t\t\talign: undefined,\n\t\t\t} );\n\t\t} );\n\t}, [ newImages ] );\n\n\tconst imageSizeOptions = useImageSizes(\n\t\timageData,\n\t\tisSelected,\n\t\tgetSettings\n\t);\n\n\t/**\n\t * Determines the image attributes that should be applied to an image block\n\t * after the gallery updates.\n\t *\n\t * The gallery will receive the full collection of images when a new image\n\t * is added. As a result we need to reapply the image's original settings if\n\t * it already existed in the gallery. If the image is in fact new, we need\n\t * to apply the gallery's current settings to the image.\n\t *\n\t * @param {Object} imageAttributes Media object for the actual image.\n\t * @return {Object} Attributes to set on the new image block.\n\t */\n\tfunction buildImageAttributes( imageAttributes ) {\n\t\tconst image = imageAttributes.id\n\t\t\t? imageData.find( ( { id } ) => id === imageAttributes.id )\n\t\t\t: null;\n\n\t\tlet newClassName;\n\t\tif ( imageAttributes.className && imageAttributes.className !== '' ) {\n\t\t\tnewClassName = imageAttributes.className;\n\t\t} else {\n\t\t\tnewClassName = preferredStyle\n\t\t\t\t? `is-style-${ preferredStyle }`\n\t\t\t\t: undefined;\n\t\t}\n\n\t\tlet newLinkTarget;\n\t\tif ( imageAttributes.linkTarget || imageAttributes.rel ) {\n\t\t\t// When transformed from image blocks, the link destination and rel attributes are inherited.\n\t\t\tnewLinkTarget = {\n\t\t\t\tlinkTarget: imageAttributes.linkTarget,\n\t\t\t\trel: imageAttributes.rel,\n\t\t\t};\n\t\t} else {\n\t\t\t// When an image is added, update the link destination and rel attributes according to the gallery settings\n\t\t\tnewLinkTarget = getUpdatedLinkTargetSettings(\n\t\t\t\tlinkTarget,\n\t\t\t\tattributes\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t...pickRelevantMediaFiles( image, sizeSlug ),\n\t\t\t...getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tlinkTo,\n\t\t\t\timageAttributes?.linkDestination\n\t\t\t),\n\t\t\t...newLinkTarget,\n\t\t\tclassName: newClassName,\n\t\t\tsizeSlug,\n\t\t\tcaption: imageAttributes.caption || image.caption?.raw,\n\t\t\talt: imageAttributes.alt || image.alt_text,\n\t\t};\n\t}\n\n\tfunction isValidFileType( file ) {\n\t\t// It's necessary to retrieve the media type from the raw image data for already-uploaded images on native.\n\t\tconst nativeFileData =\n\t\t\tPlatform.isNative && file.id\n\t\t\t\t? imageData.find( ( { id } ) => id === file.id )\n\t\t\t\t: null;\n\n\t\tconst mediaTypeSelector = nativeFileData\n\t\t\t? nativeFileData?.media_type\n\t\t\t: file.type;\n\n\t\treturn (\n\t\t\tALLOWED_MEDIA_TYPES.some(\n\t\t\t\t( mediaType ) => mediaTypeSelector?.indexOf( mediaType ) === 0\n\t\t\t) || file.url?.indexOf( 'blob:' ) === 0\n\t\t);\n\t}\n\n\tfunction updateImages( selectedImages ) {\n\t\tconst newFileUploads =\n\t\t\tObject.prototype.toString.call( selectedImages ) ===\n\t\t\t'[object FileList]';\n\n\t\tconst imageArray = newFileUploads\n\t\t\t? Array.from( selectedImages ).map( ( file ) => {\n\t\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn file;\n\t\t\t } )\n\t\t\t: selectedImages;\n\n\t\tif ( ! imageArray.every( isValidFileType ) ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\t__(\n\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t),\n\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t);\n\t\t}\n\n\t\tconst processedImages = imageArray\n\t\t\t.filter( ( file ) => file.url || isValidFileType( file ) )\n\t\t\t.map( ( file ) => {\n\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn file;\n\t\t\t} );\n\n\t\t// Because we are reusing existing innerImage blocks any reordering\n\t\t// done in the media library will be lost so we need to reapply that ordering\n\t\t// once the new image blocks are merged in with existing.\n\t\tconst newOrderMap = processedImages.reduce(\n\t\t\t( result, image, index ) => (\n\t\t\t\t( result[ image.id ] = index ), result\n\t\t\t),\n\t\t\t{}\n\t\t);\n\n\t\tconst existingImageBlocks = ! newFileUploads\n\t\t\t? innerBlockImages.filter( ( block ) =>\n\t\t\t\t\tprocessedImages.find(\n\t\t\t\t\t\t( img ) => img.id === block.attributes.id\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: innerBlockImages;\n\n\t\tconst newImageList = processedImages.filter(\n\t\t\t( img ) =>\n\t\t\t\t! existingImageBlocks.find(\n\t\t\t\t\t( existingImg ) => img.id === existingImg.attributes.id\n\t\t\t\t)\n\t\t);\n\n\t\tconst newBlocks = newImageList.map( ( image ) => {\n\t\t\treturn createBlock( 'core/image', {\n\t\t\t\tid: image.id,\n\t\t\t\turl: image.url,\n\t\t\t\tcaption: image.caption,\n\t\t\t\talt: image.alt,\n\t\t\t} );\n\t\t} );\n\n\t\treplaceInnerBlocks(\n\t\t\tclientId,\n\t\t\texistingImageBlocks\n\t\t\t\t.concat( newBlocks )\n\t\t\t\t.sort(\n\t\t\t\t\t( a, b ) =>\n\t\t\t\t\t\tnewOrderMap[ a.attributes.id ] -\n\t\t\t\t\t\tnewOrderMap[ b.attributes.id ]\n\t\t\t\t)\n\t\t);\n\n\t\t// Select the first block to scroll into view when new blocks are added.\n\t\tif ( newBlocks?.length > 0 ) {\n\t\t\tselectBlock( newBlocks[ 0 ].clientId );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tvalue\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst linkToText = [ ...linkOptions ].find(\n\t\t\t( linkType ) => linkType.value === value\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image links updated to: %s' ),\n\t\t\t\tlinkToText.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-linkTo',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction toggleOpenInNewTab( openInNewTab ) {\n\t\tconst newLinkTarget = openInNewTab ? '_blank' : undefined;\n\t\tsetAttributes( { linkTarget: newLinkTarget } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tchangedAttributes[ block.clientId ] = getUpdatedLinkTargetSettings(\n\t\t\t\tnewLinkTarget,\n\t\t\t\tblock.attributes\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst noticeText = openInNewTab\n\t\t\t? __( 'All gallery images updated to open in new tab' )\n\t\t\t: __( 'All gallery images updated to not open in new tab' );\n\t\tcreateSuccessNotice( noticeText, {\n\t\t\tid: 'gallery-attributes-openInNewTab',\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tsetAttributes( { sizeSlug: newSizeSlug } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? imageData.find( ( { id } ) => id === block.attributes.id )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getImageSizeAttributes(\n\t\t\t\timage,\n\t\t\t\tnewSizeSlug\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst imageSize = imageSizeOptions.find(\n\t\t\t( size ) => size.value === newSizeSlug\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image sizes updated to: %s' ),\n\t\t\t\timageSize.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-sizeSlug',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\tconst imagesUploading = images.some( ( img ) =>\n\t\t! Platform.isNative\n\t\t\t? ! img.id && img.url?.indexOf( 'blob:' ) === 0\n\t\t\t: img.url?.indexOf( 'file:' ) === 0\n\t);\n\n\t// MediaPlaceholder props are different between web and native hence, we provide a platform-specific set.\n\tconst mediaPlaceholderProps = Platform.select( {\n\t\tweb: {\n\t\t\taddToGallery: false,\n\t\t\tdisableMediaButtons: imagesUploading,\n\t\t\tvalue: {},\n\t\t},\n\t\tnative: {\n\t\t\taddToGallery: hasImageIds,\n\t\t\tisAppender: hasImages,\n\t\t\tdisableMediaButtons:\n\t\t\t\t( hasImages && ! isSelected ) || imagesUploading,\n\t\t\tvalue: hasImageIds ? images : {},\n\t\t\tautoOpenMediaUpload:\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted,\n\t\t},\n\t} );\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\thandleUpload={ false }\n\t\t\ticon={ sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Gallery' ),\n\t\t\t\tinstructions: PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ updateImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tonError={ onUploadError }\n\t\t\t{ ...mediaPlaceholderProps }\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( className, 'has-nested-images' ),\n\t} );\n\n\tconst nativeInnerBlockProps = Platform.isNative && {\n\t\tmarginHorizontal: 0,\n\t\tmarginVertical: 0,\n\t};\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t\t...nativeInnerBlockProps,\n\t} );\n\n\tif ( ! hasImages ) {\n\t\treturn (\n\t\t\t<View { ...innerBlocksProps }>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t{ mediaPlaceholder }\n\t\t\t</View>\n\t\t);\n\t}\n\n\tconst hasLinkTo = linkTo && linkTo !== 'none';\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t: defaultColumnsNumber( images.length )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t/>\n\t\t\t\t\t{ hasLinkTo && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Select the size of the source images.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ Platform.isWeb && ! imageSizeOptions && hasImageIds && (\n\t\t\t\t\t\t<BaseControl className={ 'gallery-image-sizes' }>\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Resolution' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<View className={ 'gallery-image-sizes__loading' }>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t{ __( 'Loading options…' ) }\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ ! isContentLocked && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetShowCaption( ! showCaption );\n\t\t\t\t\t\t\tif ( showCaption && caption ) {\n\t\t\t\t\t\t\t\tsetAttributes( { caption: undefined } );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={ captionIcon }\n\t\t\t\t\t\tisPressed={ showCaption }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tshowCaption\n\t\t\t\t\t\t\t\t? __( 'Remove caption' )\n\t\t\t\t\t\t\t\t: __( 'Add caption' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\tonSelect={ updateImages }\n\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\tmultiple={ true }\n\t\t\t\t\tmediaIds={ images\n\t\t\t\t\t\t.filter( ( image ) => image.id )\n\t\t\t\t\t\t.map( ( image ) => image.id ) }\n\t\t\t\t\taddToGallery={ hasImageIds }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ Platform.isWeb && (\n\t\t\t\t<GapStyles\n\t\t\t\t\tblockGap={ attributes.style?.spacing?.blockGap }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\tshowCaption={ showCaption }\n\t\t\t\tref={ Platform.isWeb ? captionRef : undefined }\n\t\t\t\timages={ images }\n\t\t\t\tmediaPlaceholder={\n\t\t\t\t\t! hasImages || Platform.isNative\n\t\t\t\t\t\t? mediaPlaceholder\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tblockProps={ innerBlocksProps }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t/>\n\t\t</>\n\t);\n}\nexport default compose( [ withViewportMatch( { isNarrow: '< small' } ) ] )(\n\tGalleryEdit\n);\n"]}
@@ -62,6 +62,7 @@ export default function LatestComments({
62
62
  })
63
63
  }), createElement(RangeControl, {
64
64
  __nextHasNoMarginBottom: true,
65
+ __next40pxDefaultSize: true,
65
66
  label: __('Number of comments'),
66
67
  value: commentsToShow,
67
68
  onChange: value => setAttributes({
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/latest-comments/edit.js"],"names":["InspectorControls","useBlockProps","Disabled","PanelBody","RangeControl","ToggleControl","ServerSideRender","__","MIN_COMMENTS","MAX_COMMENTS","LatestComments","attributes","setAttributes","commentsToShow","displayAvatar","displayDate","displayExcerpt","serverSideAttributes","style","spacing","undefined","value","_locale"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,iBAAT,EAA4BC,aAA5B,QAAiD,yBAAjD;AACA,SACCC,QADD,EAECC,SAFD,EAGCC,YAHD,EAICC,aAJD,QAKO,uBALP;AAMA,OAAOC,gBAAP,MAA6B,+BAA7B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAG,CAArB;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAG,GAArB;AAEA,eAAe,SAASC,cAAT,CAAyB;AAAEC,EAAAA,UAAF;AAAcC,EAAAA;AAAd,CAAzB,EAAyD;AACvE,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,aAAlB;AAAiCC,IAAAA,WAAjC;AAA8CC,IAAAA;AAA9C,MACLL,UADD;AAGA,QAAMM,oBAAoB,GAAG,EAC5B,GAAGN,UADyB;AAE5BO,IAAAA,KAAK,EAAE,EACN,GAAGP,UAAU,EAAEO,KADT;AAENC,MAAAA,OAAO,EAAEC;AAFH;AAFqB,GAA7B;AAQA,SACC,0BAAUnB,aAAa;AAAvB,KACC,cAAC,iBAAD,QACC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAGM,EAAE,CAAE,UAAF;AAArB,KACC,cAAC,aAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGA,EAAE,CAAE,gBAAF,CAFX;AAGC,IAAA,OAAO,EAAGO,aAHX;AAIC,IAAA,QAAQ,EAAG,MACVF,aAAa,CAAE;AAAEE,MAAAA,aAAa,EAAE,CAAEA;AAAnB,KAAF;AALf,IADD,EASC,cAAC,aAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGP,EAAE,CAAE,cAAF,CAFX;AAGC,IAAA,OAAO,EAAGQ,WAHX;AAIC,IAAA,QAAQ,EAAG,MACVH,aAAa,CAAE;AAAEG,MAAAA,WAAW,EAAE,CAAEA;AAAjB,KAAF;AALf,IATD,EAiBC,cAAC,aAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGR,EAAE,CAAE,iBAAF,CAFX;AAGC,IAAA,OAAO,EAAGS,cAHX;AAIC,IAAA,QAAQ,EAAG,MACVJ,aAAa,CAAE;AACdI,MAAAA,cAAc,EAAE,CAAEA;AADJ,KAAF;AALf,IAjBD,EA2BC,cAAC,YAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGT,EAAE,CAAE,oBAAF,CAFX;AAGC,IAAA,KAAK,EAAGM,cAHT;AAIC,IAAA,QAAQ,EAAKQ,KAAF,IACVT,aAAa,CAAE;AAAEC,MAAAA,cAAc,EAAEQ;AAAlB,KAAF,CALf;AAOC,IAAA,GAAG,EAAGb,YAPP;AAQC,IAAA,GAAG,EAAGC,YARP;AASC,IAAA,QAAQ;AATT,IA3BD,CADD,CADD,EA0CC,cAAC,QAAD,QACC,cAAC,gBAAD;AACC,IAAA,KAAK,EAAC,sBADP;AAEC,IAAA,UAAU,EAAGQ,oBAFd,CAGC;AACA;AACA;AALD;AAMC,IAAA,YAAY,EAAG;AAAEK,MAAAA,OAAO,EAAE;AAAX;AANhB,IADD,CA1CD,CADD;AAuDA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport {\n\tDisabled,\n\tPanelBody,\n\tRangeControl,\n\tToggleControl,\n} from '@wordpress/components';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Minimum number of comments a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_COMMENTS = 1;\n/**\n * Maximum number of comments a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_COMMENTS = 100;\n\nexport default function LatestComments( { attributes, setAttributes } ) {\n\tconst { commentsToShow, displayAvatar, displayDate, displayExcerpt } =\n\t\tattributes;\n\n\tconst serverSideAttributes = {\n\t\t...attributes,\n\t\tstyle: {\n\t\t\t...attributes?.style,\n\t\t\tspacing: undefined,\n\t\t},\n\t};\n\n\treturn (\n\t\t<div { ...useBlockProps() }>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Display avatar' ) }\n\t\t\t\t\t\tchecked={ displayAvatar }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { displayAvatar: ! displayAvatar } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Display date' ) }\n\t\t\t\t\t\tchecked={ displayDate }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { displayDate: ! displayDate } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Display excerpt' ) }\n\t\t\t\t\t\tchecked={ displayExcerpt }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayExcerpt: ! displayExcerpt,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Number of comments' ) }\n\t\t\t\t\t\tvalue={ commentsToShow }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { commentsToShow: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ MIN_COMMENTS }\n\t\t\t\t\t\tmax={ MAX_COMMENTS }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender\n\t\t\t\t\tblock=\"core/latest-comments\"\n\t\t\t\t\tattributes={ serverSideAttributes }\n\t\t\t\t\t// The preview uses the site's locale to make it more true to how\n\t\t\t\t\t// the block appears on the frontend. Setting the locale\n\t\t\t\t\t// explicitly prevents any middleware from setting it to 'user'.\n\t\t\t\t\turlQueryArgs={ { _locale: 'site' } }\n\t\t\t\t/>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/latest-comments/edit.js"],"names":["InspectorControls","useBlockProps","Disabled","PanelBody","RangeControl","ToggleControl","ServerSideRender","__","MIN_COMMENTS","MAX_COMMENTS","LatestComments","attributes","setAttributes","commentsToShow","displayAvatar","displayDate","displayExcerpt","serverSideAttributes","style","spacing","undefined","value","_locale"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,iBAAT,EAA4BC,aAA5B,QAAiD,yBAAjD;AACA,SACCC,QADD,EAECC,SAFD,EAGCC,YAHD,EAICC,aAJD,QAKO,uBALP;AAMA,OAAOC,gBAAP,MAA6B,+BAA7B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAG,CAArB;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAG,GAArB;AAEA,eAAe,SAASC,cAAT,CAAyB;AAAEC,EAAAA,UAAF;AAAcC,EAAAA;AAAd,CAAzB,EAAyD;AACvE,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,aAAlB;AAAiCC,IAAAA,WAAjC;AAA8CC,IAAAA;AAA9C,MACLL,UADD;AAGA,QAAMM,oBAAoB,GAAG,EAC5B,GAAGN,UADyB;AAE5BO,IAAAA,KAAK,EAAE,EACN,GAAGP,UAAU,EAAEO,KADT;AAENC,MAAAA,OAAO,EAAEC;AAFH;AAFqB,GAA7B;AAQA,SACC,0BAAUnB,aAAa;AAAvB,KACC,cAAC,iBAAD,QACC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAGM,EAAE,CAAE,UAAF;AAArB,KACC,cAAC,aAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGA,EAAE,CAAE,gBAAF,CAFX;AAGC,IAAA,OAAO,EAAGO,aAHX;AAIC,IAAA,QAAQ,EAAG,MACVF,aAAa,CAAE;AAAEE,MAAAA,aAAa,EAAE,CAAEA;AAAnB,KAAF;AALf,IADD,EASC,cAAC,aAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGP,EAAE,CAAE,cAAF,CAFX;AAGC,IAAA,OAAO,EAAGQ,WAHX;AAIC,IAAA,QAAQ,EAAG,MACVH,aAAa,CAAE;AAAEG,MAAAA,WAAW,EAAE,CAAEA;AAAjB,KAAF;AALf,IATD,EAiBC,cAAC,aAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAGR,EAAE,CAAE,iBAAF,CAFX;AAGC,IAAA,OAAO,EAAGS,cAHX;AAIC,IAAA,QAAQ,EAAG,MACVJ,aAAa,CAAE;AACdI,MAAAA,cAAc,EAAE,CAAEA;AADJ,KAAF;AALf,IAjBD,EA2BC,cAAC,YAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,qBAAqB,MAFtB;AAGC,IAAA,KAAK,EAAGT,EAAE,CAAE,oBAAF,CAHX;AAIC,IAAA,KAAK,EAAGM,cAJT;AAKC,IAAA,QAAQ,EAAKQ,KAAF,IACVT,aAAa,CAAE;AAAEC,MAAAA,cAAc,EAAEQ;AAAlB,KAAF,CANf;AAQC,IAAA,GAAG,EAAGb,YARP;AASC,IAAA,GAAG,EAAGC,YATP;AAUC,IAAA,QAAQ;AAVT,IA3BD,CADD,CADD,EA2CC,cAAC,QAAD,QACC,cAAC,gBAAD;AACC,IAAA,KAAK,EAAC,sBADP;AAEC,IAAA,UAAU,EAAGQ,oBAFd,CAGC;AACA;AACA;AALD;AAMC,IAAA,YAAY,EAAG;AAAEK,MAAAA,OAAO,EAAE;AAAX;AANhB,IADD,CA3CD,CADD;AAwDA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport {\n\tDisabled,\n\tPanelBody,\n\tRangeControl,\n\tToggleControl,\n} from '@wordpress/components';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Minimum number of comments a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_COMMENTS = 1;\n/**\n * Maximum number of comments a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_COMMENTS = 100;\n\nexport default function LatestComments( { attributes, setAttributes } ) {\n\tconst { commentsToShow, displayAvatar, displayDate, displayExcerpt } =\n\t\tattributes;\n\n\tconst serverSideAttributes = {\n\t\t...attributes,\n\t\tstyle: {\n\t\t\t...attributes?.style,\n\t\t\tspacing: undefined,\n\t\t},\n\t};\n\n\treturn (\n\t\t<div { ...useBlockProps() }>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Display avatar' ) }\n\t\t\t\t\t\tchecked={ displayAvatar }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { displayAvatar: ! displayAvatar } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Display date' ) }\n\t\t\t\t\t\tchecked={ displayDate }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { displayDate: ! displayDate } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Display excerpt' ) }\n\t\t\t\t\t\tchecked={ displayExcerpt }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayExcerpt: ! displayExcerpt,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Number of comments' ) }\n\t\t\t\t\t\tvalue={ commentsToShow }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { commentsToShow: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ MIN_COMMENTS }\n\t\t\t\t\t\tmax={ MAX_COMMENTS }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender\n\t\t\t\t\tblock=\"core/latest-comments\"\n\t\t\t\t\tattributes={ serverSideAttributes }\n\t\t\t\t\t// The preview uses the site's locale to make it more true to how\n\t\t\t\t\t// the block appears on the frontend. Setting the locale\n\t\t\t\t\t// explicitly prevents any middleware from setting it to 'user'.\n\t\t\t\t\turlQueryArgs={ { _locale: 'site' } }\n\t\t\t\t/>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n"]}
@@ -185,6 +185,7 @@ export default function LatestPostsEdit({
185
185
  })
186
186
  }), displayPostContent && displayPostContentRadio === 'excerpt' && createElement(RangeControl, {
187
187
  __nextHasNoMarginBottom: true,
188
+ __next40pxDefaultSize: true,
188
189
  label: __('Max number of words'),
189
190
  value: excerptLength,
190
191
  onChange: value => setAttributes({
@@ -284,6 +285,7 @@ export default function LatestPostsEdit({
284
285
  selectedAuthorId: selectedAuthor
285
286
  }), postLayout === 'grid' && createElement(RangeControl, {
286
287
  __nextHasNoMarginBottom: true,
288
+ __next40pxDefaultSize: true,
287
289
  label: __('Columns'),
288
290
  value: columns,
289
291
  onChange: value => setAttributes({