@wordpress/block-library 10.1.1-next.v.202607070741.0 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/build/accordion/block.json +1 -0
  3. package/build/accordion-panel/block.json +1 -0
  4. package/build/button/edit.cjs +18 -8
  5. package/build/button/edit.cjs.map +2 -2
  6. package/build/code/edit.cjs +3 -1
  7. package/build/code/edit.cjs.map +2 -2
  8. package/build/cover/block.json +12 -0
  9. package/build/cover/edit/block-controls.cjs +14 -5
  10. package/build/cover/edit/block-controls.cjs.map +2 -2
  11. package/build/cover/edit/embed-video-url-input.cjs +5 -3
  12. package/build/cover/edit/embed-video-url-input.cjs.map +3 -3
  13. package/build/cover/edit/index.cjs +76 -32
  14. package/build/cover/edit/index.cjs.map +2 -2
  15. package/build/cover/embed-video-utils.cjs +17 -7
  16. package/build/cover/embed-video-utils.cjs.map +2 -2
  17. package/build/details/transforms.cjs +1 -3
  18. package/build/details/transforms.cjs.map +2 -2
  19. package/build/embed/edit.cjs +1 -1
  20. package/build/embed/edit.cjs.map +2 -2
  21. package/build/embed/embed-placeholder.cjs +1 -2
  22. package/build/embed/embed-placeholder.cjs.map +2 -2
  23. package/build/file/edit.cjs +4 -3
  24. package/build/file/edit.cjs.map +2 -2
  25. package/build/file/transforms.cjs +25 -60
  26. package/build/file/transforms.cjs.map +2 -2
  27. package/build/gallery/block.json +4 -2
  28. package/build/gallery/dynamic-gallery.cjs +104 -61
  29. package/build/gallery/dynamic-gallery.cjs.map +3 -3
  30. package/build/gallery/edit.cjs +1 -1
  31. package/build/gallery/edit.cjs.map +3 -3
  32. package/build/gallery/gap-styles.cjs +49 -13
  33. package/build/gallery/gap-styles.cjs.map +3 -3
  34. package/build/gallery/use-dynamic-gallery.cjs +15 -8
  35. package/build/gallery/use-dynamic-gallery.cjs.map +2 -2
  36. package/build/group/transforms.cjs +1 -1
  37. package/build/group/transforms.cjs.map +2 -2
  38. package/build/heading/edit.cjs +1 -1
  39. package/build/heading/edit.cjs.map +2 -2
  40. package/build/html/modal.cjs +63 -54
  41. package/build/html/modal.cjs.map +3 -3
  42. package/build/icon/block.json +5 -3
  43. package/build/icon/components/custom-inserter/icon-grid.cjs +25 -12
  44. package/build/icon/components/custom-inserter/icon-grid.cjs.map +2 -2
  45. package/build/icon/components/custom-inserter/index.cjs +100 -31
  46. package/build/icon/components/custom-inserter/index.cjs.map +3 -3
  47. package/build/icon/edit.cjs +11 -12
  48. package/build/icon/edit.cjs.map +2 -2
  49. package/build/image/block.json +1 -1
  50. package/build/image/edit.cjs +1 -35
  51. package/build/image/edit.cjs.map +2 -2
  52. package/build/image/image.cjs +23 -18
  53. package/build/image/image.cjs.map +3 -3
  54. package/build/image/transforms.cjs +78 -0
  55. package/build/image/transforms.cjs.map +3 -3
  56. package/build/image/use-open-image-media-editor-modal.cjs +6 -2
  57. package/build/image/use-open-image-media-editor-modal.cjs.map +2 -2
  58. package/build/index.cjs +18 -8
  59. package/build/index.cjs.map +2 -2
  60. package/build/latest-posts/edit.cjs +5 -8
  61. package/build/latest-posts/edit.cjs.map +2 -2
  62. package/build/list-item/edit.cjs +1 -1
  63. package/build/list-item/edit.cjs.map +2 -2
  64. package/build/list-item/hooks/use-enter.cjs +14 -17
  65. package/build/list-item/hooks/use-enter.cjs.map +3 -3
  66. package/build/list-item/hooks/use-indent-list-item.cjs +10 -2
  67. package/build/list-item/hooks/use-indent-list-item.cjs.map +2 -2
  68. package/build/list-item/hooks/use-space.cjs +3 -2
  69. package/build/list-item/hooks/use-space.cjs.map +3 -3
  70. package/build/math/edit.cjs +39 -56
  71. package/build/math/edit.cjs.map +3 -3
  72. package/build/media-text/edit.cjs +2 -1
  73. package/build/media-text/edit.cjs.map +2 -2
  74. package/build/more/edit.cjs +2 -2
  75. package/build/more/edit.cjs.map +2 -2
  76. package/build/navigation/edit/index.cjs +30 -16
  77. package/build/navigation/edit/index.cjs.map +3 -3
  78. package/build/navigation/edit/use-layout-custom-properties.cjs +72 -0
  79. package/build/navigation/edit/use-layout-custom-properties.cjs.map +7 -0
  80. package/build/navigation/view.cjs +9 -6
  81. package/build/navigation/view.cjs.map +2 -2
  82. package/build/navigation-link/edit.cjs +3 -3
  83. package/build/navigation-link/edit.cjs.map +2 -2
  84. package/build/navigation-link/link-ui/index.cjs +2 -2
  85. package/build/navigation-link/link-ui/index.cjs.map +2 -2
  86. package/build/paragraph/edit.cjs +5 -2
  87. package/build/paragraph/edit.cjs.map +3 -3
  88. package/build/paragraph/index.cjs +4 -1
  89. package/build/paragraph/index.cjs.map +2 -2
  90. package/build/paragraph/use-enter.cjs +3 -7
  91. package/build/paragraph/use-enter.cjs.map +3 -3
  92. package/build/playlist/block.json +29 -10
  93. package/build/playlist/context.cjs +2 -1
  94. package/build/playlist/context.cjs.map +2 -2
  95. package/build/playlist/edit.cjs +328 -39
  96. package/build/playlist/edit.cjs.map +3 -3
  97. package/build/playlist/index.cjs +1 -1
  98. package/build/playlist/index.cjs.map +2 -2
  99. package/build/playlist/utils.cjs +37 -8
  100. package/build/playlist/utils.cjs.map +2 -2
  101. package/build/playlist/view.cjs +83 -13
  102. package/build/playlist/view.cjs.map +2 -2
  103. package/build/playlist-track/block.json +4 -2
  104. package/build/playlist-track/edit.cjs +115 -70
  105. package/build/playlist-track/edit.cjs.map +2 -2
  106. package/build/post-content/block.json +1 -0
  107. package/build/post-content/edit.cjs +36 -15
  108. package/build/post-content/edit.cjs.map +2 -2
  109. package/build/post-featured-image/edit.cjs +3 -2
  110. package/build/post-featured-image/edit.cjs.map +2 -2
  111. package/build/post-template/block.json +2 -1
  112. package/build/post-template/edit.cjs +10 -1
  113. package/build/post-template/edit.cjs.map +2 -2
  114. package/build/post-terms/edit.cjs +2 -2
  115. package/build/post-terms/edit.cjs.map +2 -2
  116. package/build/post-title/edit.cjs +2 -2
  117. package/build/post-title/edit.cjs.map +2 -2
  118. package/build/preformatted/edit.cjs +3 -1
  119. package/build/preformatted/edit.cjs.map +2 -2
  120. package/build/pullquote/block.json +3 -1
  121. package/build/pullquote/edit.cjs +5 -3
  122. package/build/pullquote/edit.cjs.map +2 -2
  123. package/build/query/block.json +3 -2
  124. package/build/query/edit/inspector-controls/index.cjs +42 -5
  125. package/build/query/edit/inspector-controls/index.cjs.map +2 -2
  126. package/build/query/edit/inspector-controls/offset-controls.cjs +1 -2
  127. package/build/query/edit/inspector-controls/offset-controls.cjs.map +2 -2
  128. package/build/query/edit/inspector-controls/pages-control.cjs +0 -1
  129. package/build/query/edit/inspector-controls/pages-control.cjs.map +2 -2
  130. package/build/query/edit/query-content.cjs +10 -3
  131. package/build/query/edit/query-content.cjs.map +2 -2
  132. package/build/query/index.cjs +2 -1
  133. package/build/query/index.cjs.map +2 -2
  134. package/build/quote/block.json +3 -1
  135. package/build/quote/transforms.cjs +1 -3
  136. package/build/quote/transforms.cjs.map +2 -2
  137. package/build/read-more/edit.cjs +3 -1
  138. package/build/read-more/edit.cjs.map +2 -2
  139. package/build/rss/edit.cjs +0 -1
  140. package/build/rss/edit.cjs.map +2 -2
  141. package/build/site-tagline/edit.cjs +3 -1
  142. package/build/site-tagline/edit.cjs.map +2 -2
  143. package/build/site-title/edit.cjs +3 -1
  144. package/build/site-title/edit.cjs.map +2 -2
  145. package/build/social-links/edit.cjs +11 -4
  146. package/build/social-links/edit.cjs.map +2 -2
  147. package/build/tab-list/block.json +4 -3
  148. package/build/tab-list/edit.cjs +67 -11
  149. package/build/tab-list/edit.cjs.map +3 -3
  150. package/build/tab-list/tab-movers.cjs +87 -0
  151. package/build/tab-list/tab-movers.cjs.map +7 -0
  152. package/build/tab-panel/block.json +1 -6
  153. package/build/tab-panel/edit.cjs +16 -24
  154. package/build/tab-panel/edit.cjs.map +2 -2
  155. package/build/tab-panels/block.json +0 -1
  156. package/build/table/edit.cjs +1 -1
  157. package/build/table/edit.cjs.map +2 -2
  158. package/build/tabs/block.json +0 -5
  159. package/build/tabs/edit.cjs +4 -39
  160. package/build/tabs/edit.cjs.map +3 -3
  161. package/build/tabs/use-tab-actions.cjs +23 -1
  162. package/build/tabs/use-tab-actions.cjs.map +2 -2
  163. package/build/tabs/use-tab-list-items-sync.cjs +19 -1
  164. package/build/tabs/use-tab-list-items-sync.cjs.map +2 -2
  165. package/build/term-name/block.json +1 -3
  166. package/build/term-name/deprecated.cjs +105 -0
  167. package/build/term-name/deprecated.cjs.map +7 -0
  168. package/build/term-name/edit.cjs +11 -37
  169. package/build/term-name/edit.cjs.map +3 -3
  170. package/build/term-name/index.cjs +3 -1
  171. package/build/term-name/index.cjs.map +3 -3
  172. package/build/utils/caption.cjs +2 -2
  173. package/build/utils/caption.cjs.map +2 -2
  174. package/build/utils/waveform-player.cjs +138 -22
  175. package/build/utils/waveform-player.cjs.map +2 -2
  176. package/build/utils/waveform-utils.cjs +315 -17
  177. package/build/utils/waveform-utils.cjs.map +2 -2
  178. package/build/verse/edit.cjs +3 -1
  179. package/build/verse/edit.cjs.map +2 -2
  180. package/build/video/edit.cjs +2 -11
  181. package/build/video/edit.cjs.map +3 -3
  182. package/build/video/tracks-editor.cjs +0 -1
  183. package/build/video/tracks-editor.cjs.map +2 -2
  184. package/build-module/accordion/block.json +1 -0
  185. package/build-module/accordion-panel/block.json +1 -0
  186. package/build-module/button/edit.mjs +19 -14
  187. package/build-module/button/edit.mjs.map +2 -2
  188. package/build-module/code/edit.mjs +3 -1
  189. package/build-module/code/edit.mjs.map +2 -2
  190. package/build-module/cover/block.json +12 -0
  191. package/build-module/cover/edit/block-controls.mjs +14 -5
  192. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  193. package/build-module/cover/edit/embed-video-url-input.mjs +5 -4
  194. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  195. package/build-module/cover/edit/index.mjs +79 -35
  196. package/build-module/cover/edit/index.mjs.map +2 -2
  197. package/build-module/cover/embed-video-utils.mjs +16 -7
  198. package/build-module/cover/embed-video-utils.mjs.map +2 -2
  199. package/build-module/details/transforms.mjs +2 -7
  200. package/build-module/details/transforms.mjs.map +2 -2
  201. package/build-module/embed/edit.mjs +1 -1
  202. package/build-module/embed/edit.mjs.map +2 -2
  203. package/build-module/embed/embed-placeholder.mjs +1 -2
  204. package/build-module/embed/embed-placeholder.mjs.map +2 -2
  205. package/build-module/file/edit.mjs +4 -3
  206. package/build-module/file/edit.mjs.map +2 -2
  207. package/build-module/file/transforms.mjs +25 -60
  208. package/build-module/file/transforms.mjs.map +2 -2
  209. package/build-module/gallery/block.json +4 -2
  210. package/build-module/gallery/dynamic-gallery.mjs +104 -61
  211. package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
  212. package/build-module/gallery/edit.mjs +3 -3
  213. package/build-module/gallery/edit.mjs.map +2 -2
  214. package/build-module/gallery/gap-styles.mjs +53 -14
  215. package/build-module/gallery/gap-styles.mjs.map +2 -2
  216. package/build-module/gallery/use-dynamic-gallery.mjs +16 -9
  217. package/build-module/gallery/use-dynamic-gallery.mjs.map +2 -2
  218. package/build-module/group/transforms.mjs +2 -5
  219. package/build-module/group/transforms.mjs.map +2 -2
  220. package/build-module/heading/edit.mjs +1 -1
  221. package/build-module/heading/edit.mjs.map +2 -2
  222. package/build-module/html/modal.mjs +68 -55
  223. package/build-module/html/modal.mjs.map +2 -2
  224. package/build-module/icon/block.json +5 -3
  225. package/build-module/icon/components/custom-inserter/icon-grid.mjs +25 -12
  226. package/build-module/icon/components/custom-inserter/icon-grid.mjs.map +2 -2
  227. package/build-module/icon/components/custom-inserter/index.mjs +102 -33
  228. package/build-module/icon/components/custom-inserter/index.mjs.map +2 -2
  229. package/build-module/icon/edit.mjs +11 -12
  230. package/build-module/icon/edit.mjs.map +2 -2
  231. package/build-module/image/block.json +1 -1
  232. package/build-module/image/edit.mjs +1 -35
  233. package/build-module/image/edit.mjs.map +2 -2
  234. package/build-module/image/image.mjs +23 -18
  235. package/build-module/image/image.mjs.map +2 -2
  236. package/build-module/image/transforms.mjs +78 -0
  237. package/build-module/image/transforms.mjs.map +2 -2
  238. package/build-module/image/use-open-image-media-editor-modal.mjs +6 -2
  239. package/build-module/image/use-open-image-media-editor-modal.mjs.map +2 -2
  240. package/build-module/index.mjs +18 -8
  241. package/build-module/index.mjs.map +2 -2
  242. package/build-module/latest-posts/edit.mjs +5 -8
  243. package/build-module/latest-posts/edit.mjs.map +2 -2
  244. package/build-module/list-item/edit.mjs +1 -1
  245. package/build-module/list-item/edit.mjs.map +2 -2
  246. package/build-module/list-item/hooks/use-enter.mjs +15 -21
  247. package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
  248. package/build-module/list-item/hooks/use-indent-list-item.mjs +10 -2
  249. package/build-module/list-item/hooks/use-indent-list-item.mjs.map +2 -2
  250. package/build-module/list-item/hooks/use-space.mjs +4 -6
  251. package/build-module/list-item/hooks/use-space.mjs.map +2 -2
  252. package/build-module/math/edit.mjs +41 -60
  253. package/build-module/math/edit.mjs.map +2 -2
  254. package/build-module/media-text/edit.mjs +2 -1
  255. package/build-module/media-text/edit.mjs.map +2 -2
  256. package/build-module/more/edit.mjs +2 -2
  257. package/build-module/more/edit.mjs.map +2 -2
  258. package/build-module/navigation/edit/index.mjs +30 -16
  259. package/build-module/navigation/edit/index.mjs.map +2 -2
  260. package/build-module/navigation/edit/use-layout-custom-properties.mjs +51 -0
  261. package/build-module/navigation/edit/use-layout-custom-properties.mjs.map +7 -0
  262. package/build-module/navigation/view.mjs +9 -6
  263. package/build-module/navigation/view.mjs.map +2 -2
  264. package/build-module/navigation-link/edit.mjs +3 -3
  265. package/build-module/navigation-link/edit.mjs.map +2 -2
  266. package/build-module/navigation-link/link-ui/index.mjs +2 -2
  267. package/build-module/navigation-link/link-ui/index.mjs.map +2 -2
  268. package/build-module/paragraph/edit.mjs +6 -2
  269. package/build-module/paragraph/edit.mjs.map +2 -2
  270. package/build-module/paragraph/index.mjs +4 -1
  271. package/build-module/paragraph/index.mjs.map +2 -2
  272. package/build-module/paragraph/use-enter.mjs +4 -11
  273. package/build-module/paragraph/use-enter.mjs.map +2 -2
  274. package/build-module/playlist/block.json +29 -10
  275. package/build-module/playlist/context.mjs +2 -1
  276. package/build-module/playlist/context.mjs.map +2 -2
  277. package/build-module/playlist/edit.mjs +331 -41
  278. package/build-module/playlist/edit.mjs.map +2 -2
  279. package/build-module/playlist/index.mjs +1 -1
  280. package/build-module/playlist/index.mjs.map +2 -2
  281. package/build-module/playlist/utils.mjs +35 -7
  282. package/build-module/playlist/utils.mjs.map +2 -2
  283. package/build-module/playlist/view.mjs +89 -14
  284. package/build-module/playlist/view.mjs.map +2 -2
  285. package/build-module/playlist-track/block.json +4 -2
  286. package/build-module/playlist-track/edit.mjs +117 -71
  287. package/build-module/playlist-track/edit.mjs.map +2 -2
  288. package/build-module/post-content/block.json +1 -0
  289. package/build-module/post-content/edit.mjs +37 -15
  290. package/build-module/post-content/edit.mjs.map +2 -2
  291. package/build-module/post-featured-image/edit.mjs +3 -2
  292. package/build-module/post-featured-image/edit.mjs.map +2 -2
  293. package/build-module/post-template/block.json +2 -1
  294. package/build-module/post-template/edit.mjs +10 -1
  295. package/build-module/post-template/edit.mjs.map +2 -2
  296. package/build-module/post-terms/edit.mjs +2 -2
  297. package/build-module/post-terms/edit.mjs.map +2 -2
  298. package/build-module/post-title/edit.mjs +2 -2
  299. package/build-module/post-title/edit.mjs.map +2 -2
  300. package/build-module/preformatted/edit.mjs +3 -1
  301. package/build-module/preformatted/edit.mjs.map +2 -2
  302. package/build-module/pullquote/block.json +3 -1
  303. package/build-module/pullquote/edit.mjs +5 -3
  304. package/build-module/pullquote/edit.mjs.map +2 -2
  305. package/build-module/query/block.json +3 -2
  306. package/build-module/query/edit/inspector-controls/index.mjs +44 -6
  307. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  308. package/build-module/query/edit/inspector-controls/offset-controls.mjs +2 -3
  309. package/build-module/query/edit/inspector-controls/offset-controls.mjs.map +2 -2
  310. package/build-module/query/edit/inspector-controls/pages-control.mjs +0 -1
  311. package/build-module/query/edit/inspector-controls/pages-control.mjs.map +2 -2
  312. package/build-module/query/edit/query-content.mjs +10 -3
  313. package/build-module/query/edit/query-content.mjs.map +2 -2
  314. package/build-module/query/index.mjs +2 -1
  315. package/build-module/query/index.mjs.map +2 -2
  316. package/build-module/quote/block.json +3 -1
  317. package/build-module/quote/transforms.mjs +2 -4
  318. package/build-module/quote/transforms.mjs.map +2 -2
  319. package/build-module/read-more/edit.mjs +3 -1
  320. package/build-module/read-more/edit.mjs.map +2 -2
  321. package/build-module/rss/edit.mjs +0 -1
  322. package/build-module/rss/edit.mjs.map +2 -2
  323. package/build-module/site-tagline/edit.mjs +3 -1
  324. package/build-module/site-tagline/edit.mjs.map +2 -2
  325. package/build-module/site-title/edit.mjs +3 -1
  326. package/build-module/site-title/edit.mjs.map +2 -2
  327. package/build-module/social-links/edit.mjs +11 -4
  328. package/build-module/social-links/edit.mjs.map +2 -2
  329. package/build-module/tab-list/block.json +4 -3
  330. package/build-module/tab-list/edit.mjs +74 -13
  331. package/build-module/tab-list/edit.mjs.map +2 -2
  332. package/build-module/tab-list/tab-movers.mjs +59 -0
  333. package/build-module/tab-list/tab-movers.mjs.map +7 -0
  334. package/build-module/tab-panel/block.json +1 -6
  335. package/build-module/tab-panel/edit.mjs +17 -25
  336. package/build-module/tab-panel/edit.mjs.map +2 -2
  337. package/build-module/tab-panels/block.json +0 -1
  338. package/build-module/table/edit.mjs +1 -1
  339. package/build-module/table/edit.mjs.map +2 -2
  340. package/build-module/tabs/block.json +0 -5
  341. package/build-module/tabs/edit.mjs +5 -45
  342. package/build-module/tabs/edit.mjs.map +2 -2
  343. package/build-module/tabs/use-tab-actions.mjs +23 -1
  344. package/build-module/tabs/use-tab-actions.mjs.map +2 -2
  345. package/build-module/tabs/use-tab-list-items-sync.mjs +19 -1
  346. package/build-module/tabs/use-tab-list-items-sync.mjs.map +2 -2
  347. package/build-module/term-name/block.json +1 -3
  348. package/build-module/term-name/deprecated.mjs +74 -0
  349. package/build-module/term-name/deprecated.mjs.map +7 -0
  350. package/build-module/term-name/edit.mjs +11 -28
  351. package/build-module/term-name/edit.mjs.map +2 -2
  352. package/build-module/term-name/index.mjs +3 -1
  353. package/build-module/term-name/index.mjs.map +2 -2
  354. package/build-module/utils/caption.mjs +2 -2
  355. package/build-module/utils/caption.mjs.map +2 -2
  356. package/build-module/utils/waveform-player.mjs +144 -23
  357. package/build-module/utils/waveform-player.mjs.map +2 -2
  358. package/build-module/utils/waveform-utils.mjs +310 -16
  359. package/build-module/utils/waveform-utils.mjs.map +2 -2
  360. package/build-module/verse/edit.mjs +3 -1
  361. package/build-module/verse/edit.mjs.map +2 -2
  362. package/build-module/video/edit.mjs +2 -11
  363. package/build-module/video/edit.mjs.map +2 -2
  364. package/build-module/video/tracks-editor.mjs +0 -1
  365. package/build-module/video/tracks-editor.mjs.map +2 -2
  366. package/build-style/cover/editor-rtl.css +3 -0
  367. package/build-style/cover/editor.css +3 -0
  368. package/build-style/editor-rtl.css +61 -59
  369. package/build-style/editor.css +61 -59
  370. package/build-style/icon/editor-rtl.css +80 -10
  371. package/build-style/icon/editor.css +80 -10
  372. package/build-style/image/editor-rtl.css +3 -32
  373. package/build-style/image/editor.css +3 -32
  374. package/build-style/more/editor-rtl.css +2 -2
  375. package/build-style/more/editor.css +2 -2
  376. package/build-style/navigation/editor-rtl.css +3 -4
  377. package/build-style/navigation/editor.css +3 -4
  378. package/build-style/navigation-link/editor-rtl.css +1 -1
  379. package/build-style/navigation-link/editor.css +1 -1
  380. package/build-style/nextpage/editor-rtl.css +2 -2
  381. package/build-style/nextpage/editor.css +2 -2
  382. package/build-style/playlist/editor-rtl.css +4 -3
  383. package/build-style/playlist/editor.css +4 -3
  384. package/build-style/playlist/style-rtl.css +81 -5
  385. package/build-style/playlist/style.css +81 -5
  386. package/build-style/playlist-track/style-rtl.css +10 -0
  387. package/build-style/playlist-track/style.css +10 -0
  388. package/build-style/pullquote/editor-rtl.css +4 -0
  389. package/build-style/pullquote/editor.css +4 -0
  390. package/build-style/style-rtl.css +91 -5
  391. package/build-style/style.css +91 -5
  392. package/build-style/tab-list/editor-rtl.css +101 -0
  393. package/build-style/tab-list/editor.css +101 -0
  394. package/build-style/video/editor-rtl.css +1 -1
  395. package/build-style/video/editor.css +1 -1
  396. package/build-types/table-of-contents/list.d.ts +1 -1
  397. package/build-types/table-of-contents/list.d.ts.map +1 -1
  398. package/package.json +47 -45
  399. package/src/accordion/README.md +1 -0
  400. package/src/accordion/block.json +1 -0
  401. package/src/accordion-panel/block.json +1 -0
  402. package/src/breadcrumbs/index.php +3 -1
  403. package/src/button/edit.js +21 -15
  404. package/src/button/index.php +1 -1
  405. package/src/code/edit.js +7 -2
  406. package/src/cover/README.md +60 -0
  407. package/src/cover/block.json +12 -0
  408. package/src/cover/edit/block-controls.js +26 -11
  409. package/src/cover/edit/embed-video-url-input.js +5 -4
  410. package/src/cover/edit/index.js +109 -46
  411. package/src/cover/editor.scss +6 -0
  412. package/src/cover/embed-video-utils.js +38 -13
  413. package/src/cover/index.php +9 -2
  414. package/src/details/transforms.js +2 -7
  415. package/src/editor.scss +1 -0
  416. package/src/embed/edit.js +3 -1
  417. package/src/embed/embed-placeholder.js +9 -8
  418. package/src/file/edit.js +8 -8
  419. package/src/file/transforms.js +28 -60
  420. package/src/form/index.php +6 -4
  421. package/src/gallery/README.md +1 -1
  422. package/src/gallery/block.json +4 -2
  423. package/src/gallery/dynamic-gallery.js +133 -74
  424. package/src/gallery/edit.js +3 -3
  425. package/src/gallery/gap-styles.js +79 -20
  426. package/src/gallery/index.php +103 -43
  427. package/src/gallery/use-dynamic-gallery.js +27 -12
  428. package/src/group/transforms.js +2 -5
  429. package/src/heading/edit.js +1 -1
  430. package/src/html/modal.js +13 -2
  431. package/src/icon/README.md +1 -3
  432. package/src/icon/block.json +5 -3
  433. package/src/icon/components/custom-inserter/icon-grid.js +40 -11
  434. package/src/icon/components/custom-inserter/index.js +98 -25
  435. package/src/icon/edit.js +11 -17
  436. package/src/icon/editor.scss +33 -11
  437. package/src/image/README.md +1 -1
  438. package/src/image/block.json +1 -1
  439. package/src/image/edit.js +1 -57
  440. package/src/image/editor.scss +6 -44
  441. package/src/image/image.js +56 -27
  442. package/src/image/test/use-open-image-media-editor-modal.js +37 -1
  443. package/src/image/transforms.js +128 -0
  444. package/src/image/use-open-image-media-editor-modal.js +8 -1
  445. package/src/index.js +19 -7
  446. package/src/latest-posts/edit.js +5 -8
  447. package/src/latest-posts/index.php +49 -18
  448. package/src/list-item/edit.js +1 -1
  449. package/src/list-item/hooks/use-enter.js +15 -22
  450. package/src/list-item/hooks/use-indent-list-item.js +10 -1
  451. package/src/list-item/hooks/use-space.js +4 -6
  452. package/src/math/edit.js +42 -59
  453. package/src/media-text/edit.js +1 -0
  454. package/src/media-text/editor.scss +1 -0
  455. package/src/media-text/index.php +11 -2
  456. package/src/more/edit.js +7 -4
  457. package/src/more/editor.scss +1 -1
  458. package/src/navigation/edit/index.js +52 -36
  459. package/src/navigation/edit/test/layout-custom-properties.js +138 -0
  460. package/src/navigation/edit/use-layout-custom-properties.js +84 -0
  461. package/src/navigation/editor.scss +1 -2
  462. package/src/navigation/index.php +123 -12
  463. package/src/navigation/test/view.js +51 -0
  464. package/src/navigation/view.js +15 -14
  465. package/src/navigation-link/edit.js +11 -7
  466. package/src/navigation-link/editor.scss +1 -1
  467. package/src/navigation-link/index.php +70 -3
  468. package/src/navigation-link/link-ui/index.js +2 -1
  469. package/src/navigation-link/test/__snapshots__/hooks.js.snap +1 -1
  470. package/src/navigation-submenu/index.php +6 -3
  471. package/src/nextpage/editor.scss +1 -1
  472. package/src/page-list/index.php +4 -3
  473. package/src/paragraph/edit.js +9 -2
  474. package/src/paragraph/index.js +4 -1
  475. package/src/paragraph/use-enter.js +4 -11
  476. package/src/pattern/index.php +5 -5
  477. package/src/playlist/README.md +17 -18
  478. package/src/playlist/block.json +29 -10
  479. package/src/playlist/context.js +1 -0
  480. package/src/playlist/edit.js +395 -59
  481. package/src/playlist/editor.scss +4 -5
  482. package/src/playlist/index.js +1 -1
  483. package/src/playlist/index.php +71 -22
  484. package/src/playlist/style.scss +54 -1
  485. package/src/playlist/test/edit-component.js +139 -0
  486. package/src/playlist/test/edit.js +43 -2
  487. package/src/playlist/utils.js +49 -10
  488. package/src/playlist/view.js +97 -16
  489. package/src/playlist-track/README.md +3 -3
  490. package/src/playlist-track/block.json +4 -2
  491. package/src/playlist-track/edit.js +116 -75
  492. package/src/playlist-track/index.php +26 -11
  493. package/src/playlist-track/style.scss +10 -0
  494. package/src/playlist-track/test/edit.js +253 -0
  495. package/src/post-content/README.md +1 -0
  496. package/src/post-content/block.json +1 -0
  497. package/src/post-content/edit.js +45 -16
  498. package/src/post-excerpt/index.php +4 -1
  499. package/src/post-featured-image/edit.js +3 -2
  500. package/src/post-featured-image/index.php +4 -1
  501. package/src/post-template/README.md +1 -0
  502. package/src/post-template/block.json +2 -1
  503. package/src/post-template/edit.js +9 -0
  504. package/src/post-terms/edit.js +7 -4
  505. package/src/post-title/edit.js +5 -3
  506. package/src/preformatted/edit.js +7 -2
  507. package/src/pullquote/README.md +1 -0
  508. package/src/pullquote/block.json +3 -1
  509. package/src/pullquote/edit.js +9 -4
  510. package/src/pullquote/editor.scss +6 -0
  511. package/src/query/README.md +2 -1
  512. package/src/query/block.json +3 -2
  513. package/src/query/edit/inspector-controls/index.js +47 -4
  514. package/src/query/edit/inspector-controls/offset-controls.js +2 -3
  515. package/src/query/edit/inspector-controls/pages-control.js +0 -1
  516. package/src/query/edit/query-content.js +19 -3
  517. package/src/query/index.js +1 -0
  518. package/src/quote/README.md +1 -0
  519. package/src/quote/block.json +3 -1
  520. package/src/quote/transforms.js +2 -4
  521. package/src/read-more/edit.js +7 -2
  522. package/src/rss/edit.js +0 -1
  523. package/src/rss/index.php +10 -4
  524. package/src/site-tagline/edit.js +7 -2
  525. package/src/site-title/edit.js +7 -2
  526. package/src/social-link/index.php +19 -9
  527. package/src/social-links/edit.js +21 -12
  528. package/src/tab-list/README.md +4 -5
  529. package/src/tab-list/block.json +4 -3
  530. package/src/tab-list/edit.js +92 -28
  531. package/src/tab-list/editor.scss +9 -0
  532. package/src/tab-list/index.php +9 -4
  533. package/src/tab-list/tab-movers.js +72 -0
  534. package/src/tab-panel/README.md +4 -6
  535. package/src/tab-panel/block.json +1 -6
  536. package/src/tab-panel/edit.js +20 -33
  537. package/src/tab-panels/README.md +5 -3
  538. package/src/tab-panels/block.json +0 -1
  539. package/src/table/edit.js +1 -1
  540. package/src/table-of-contents/index.php +386 -1
  541. package/src/tabs/README.md +18 -9
  542. package/src/tabs/block.json +0 -5
  543. package/src/tabs/edit.js +7 -64
  544. package/src/tabs/use-tab-actions.js +32 -3
  545. package/src/tabs/use-tab-list-items-sync.js +24 -4
  546. package/src/tag-cloud/index.php +3 -2
  547. package/src/template-part/index.php +3 -17
  548. package/src/term-name/README.md +1 -1
  549. package/src/term-name/block.json +1 -3
  550. package/src/term-name/deprecated.js +74 -0
  551. package/src/term-name/edit.js +2 -18
  552. package/src/term-name/index.js +2 -0
  553. package/src/utils/caption.js +7 -4
  554. package/src/utils/media-control.scss +1 -5
  555. package/src/utils/test/waveform-player.js +297 -34
  556. package/src/utils/test/waveform-utils.js +473 -5
  557. package/src/utils/waveform-player.js +189 -59
  558. package/src/utils/waveform-utils.js +443 -40
  559. package/src/verse/edit.js +7 -2
  560. package/src/video/edit.js +0 -8
  561. package/src/video/editor.scss +1 -1
  562. package/src/video/index.php +2 -2
  563. package/src/video/tracks-editor.js +0 -1
  564. package/build/image/animated-gif-convert-control.cjs +0 -105
  565. package/build/image/animated-gif-convert-control.cjs.map +0 -7
  566. package/build/utils/gif-conversion-attributes.cjs +0 -40
  567. package/build/utils/gif-conversion-attributes.cjs.map +0 -7
  568. package/build/video/gif-restore-control.cjs +0 -73
  569. package/build/video/gif-restore-control.cjs.map +0 -7
  570. package/build-module/image/animated-gif-convert-control.mjs +0 -87
  571. package/build-module/image/animated-gif-convert-control.mjs.map +0 -7
  572. package/build-module/utils/gif-conversion-attributes.mjs +0 -15
  573. package/build-module/utils/gif-conversion-attributes.mjs.map +0 -7
  574. package/build-module/video/gif-restore-control.mjs +0 -55
  575. package/build-module/video/gif-restore-control.mjs.map +0 -7
  576. package/src/image/animated-gif-convert-control.js +0 -135
  577. package/src/image/test/animated-gif-convert-control.js +0 -276
  578. package/src/utils/gif-conversion-attributes.js +0 -30
  579. package/src/utils/test/gif-conversion-attributes.js +0 -60
  580. package/src/video/gif-restore-control.js +0 -92
@@ -35,7 +35,9 @@ function useIndentListItem(clientId) {
35
35
  getSelectionStart,
36
36
  getSelectionEnd,
37
37
  hasMultiSelection,
38
- getMultiSelectedBlockClientIds
38
+ getMultiSelectedBlockClientIds,
39
+ getBlockRootClientId,
40
+ getBlockAttributes
39
41
  } = (0, import_data.useSelect)(import_block_editor.store);
40
42
  return (0, import_element.useCallback)(() => {
41
43
  const _hasMultiSelection = hasMultiSelection();
@@ -45,8 +47,14 @@ function useIndentListItem(clientId) {
45
47
  );
46
48
  const previousSiblingId = getPreviousBlockClientId(clientId);
47
49
  const newListItem = (0, import_blocks.cloneBlock)(getBlock(previousSiblingId));
50
+ const parentListId = getBlockRootClientId(clientId);
51
+ const parentListAttributes = getBlockAttributes(parentListId);
48
52
  if (!newListItem.innerBlocks?.length) {
49
- newListItem.innerBlocks = [(0, import_blocks.createBlock)("core/list")];
53
+ newListItem.innerBlocks = [
54
+ (0, import_blocks.createBlock)("core/list", {
55
+ ordered: parentListAttributes.ordered
56
+ })
57
+ ];
50
58
  }
51
59
  newListItem.innerBlocks[newListItem.innerBlocks.length - 1].innerBlocks.push(...clonedBlocks);
52
60
  const selectionStart = getSelectionStart();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/list-item/hooks/use-indent-list-item.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { createBlock, cloneBlock } from '@wordpress/blocks';\n\nexport default function useIndentListItem( clientId ) {\n\tconst { replaceBlocks, selectionChange, multiSelect } =\n\t\tuseDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlock,\n\t\tgetPreviousBlockClientId,\n\t\tgetSelectionStart,\n\t\tgetSelectionEnd,\n\t\thasMultiSelection,\n\t\tgetMultiSelectedBlockClientIds,\n\t} = useSelect( blockEditorStore );\n\treturn useCallback( () => {\n\t\tconst _hasMultiSelection = hasMultiSelection();\n\t\tconst clientIds = _hasMultiSelection\n\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t: [ clientId ];\n\t\tconst clonedBlocks = clientIds.map( ( _clientId ) =>\n\t\t\tcloneBlock( getBlock( _clientId ) )\n\t\t);\n\t\tconst previousSiblingId = getPreviousBlockClientId( clientId );\n\t\tconst newListItem = cloneBlock( getBlock( previousSiblingId ) );\n\t\t// If the sibling has no innerBlocks, create a new `list` block.\n\t\tif ( ! newListItem.innerBlocks?.length ) {\n\t\t\tnewListItem.innerBlocks = [ createBlock( 'core/list' ) ];\n\t\t}\n\t\t// A list item usually has one `list`, but it's possible to have\n\t\t// more. So we need to preserve the previous `list` blocks and\n\t\t// merge the new blocks to the last `list`.\n\t\tnewListItem.innerBlocks[\n\t\t\tnewListItem.innerBlocks.length - 1\n\t\t].innerBlocks.push( ...clonedBlocks );\n\n\t\t// We get the selection start/end here, because when\n\t\t// we replace blocks, the selection is updated too.\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\t// Replace the previous sibling of the block being indented and the indented blocks,\n\t\t// with a new block whose attributes are equal to the ones of the previous sibling and\n\t\t// whose descendants are the children of the previous sibling, followed by the indented blocks.\n\t\treplaceBlocks( [ previousSiblingId, ...clientIds ], [ newListItem ] );\n\t\tif ( ! _hasMultiSelection ) {\n\t\t\tselectionChange(\n\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\tselectionEnd.attributeKey,\n\t\t\t\tselectionEnd.clientId === selectionStart.clientId\n\t\t\t\t\t? selectionStart.offset\n\t\t\t\t\t: selectionEnd.offset,\n\t\t\t\tselectionEnd.offset\n\t\t\t);\n\t\t} else {\n\t\t\tmultiSelect(\n\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\tclonedBlocks[ clonedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\n\t\treturn true;\n\t}, [ clientId ] );\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA4B;AAC5B,kBAAuC;AACvC,0BAA0C;AAC1C,oBAAwC;AAEzB,SAAR,kBAAoC,UAAW;AACrD,QAAM,EAAE,eAAe,iBAAiB,YAAY,QACnD,yBAAa,oBAAAA,KAAiB;AAC/B,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,uBAAW,oBAAAA,KAAiB;AAChC,aAAO,4BAAa,MAAM;AACzB,UAAM,qBAAqB,kBAAkB;AAC7C,UAAM,YAAY,qBACf,+BAA+B,IAC/B,CAAE,QAAS;AACd,UAAM,eAAe,UAAU;AAAA,MAAK,CAAE,kBACrC,0BAAY,SAAU,SAAU,CAAE;AAAA,IACnC;AACA,UAAM,oBAAoB,yBAA0B,QAAS;AAC7D,UAAM,kBAAc,0BAAY,SAAU,iBAAkB,CAAE;AAE9D,QAAK,CAAE,YAAY,aAAa,QAAS;AACxC,kBAAY,cAAc,KAAE,2BAAa,WAAY,CAAE;AAAA,IACxD;AAIA,gBAAY,YACX,YAAY,YAAY,SAAS,CAClC,EAAE,YAAY,KAAM,GAAG,YAAa;AAIpC,UAAM,iBAAiB,kBAAkB;AACzC,UAAM,eAAe,gBAAgB;AAIrC,kBAAe,CAAE,mBAAmB,GAAG,SAAU,GAAG,CAAE,WAAY,CAAE;AACpE,QAAK,CAAE,oBAAqB;AAC3B;AAAA,QACC,aAAc,CAAE,EAAE;AAAA,QAClB,aAAa;AAAA,QACb,aAAa,aAAa,eAAe,WACtC,eAAe,SACf,aAAa;AAAA,QAChB,aAAa;AAAA,MACd;AAAA,IACD,OAAO;AACN;AAAA,QACC,aAAc,CAAE,EAAE;AAAA,QAClB,aAAc,aAAa,SAAS,CAAE,EAAE;AAAA,MACzC;AAAA,IACD;AAEA,WAAO;AAAA,EACR,GAAG,CAAE,QAAS,CAAE;AACjB;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { createBlock, cloneBlock } from '@wordpress/blocks';\n\nexport default function useIndentListItem( clientId ) {\n\tconst { replaceBlocks, selectionChange, multiSelect } =\n\t\tuseDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlock,\n\t\tgetPreviousBlockClientId,\n\t\tgetSelectionStart,\n\t\tgetSelectionEnd,\n\t\thasMultiSelection,\n\t\tgetMultiSelectedBlockClientIds,\n\t\tgetBlockRootClientId,\n\t\tgetBlockAttributes,\n\t} = useSelect( blockEditorStore );\n\treturn useCallback( () => {\n\t\tconst _hasMultiSelection = hasMultiSelection();\n\t\tconst clientIds = _hasMultiSelection\n\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t: [ clientId ];\n\t\tconst clonedBlocks = clientIds.map( ( _clientId ) =>\n\t\t\tcloneBlock( getBlock( _clientId ) )\n\t\t);\n\t\tconst previousSiblingId = getPreviousBlockClientId( clientId );\n\t\tconst newListItem = cloneBlock( getBlock( previousSiblingId ) );\n\t\t// Get the parent list's attributes to inherit the ordered property\n\t\tconst parentListId = getBlockRootClientId( clientId );\n\t\tconst parentListAttributes = getBlockAttributes( parentListId );\n\t\t// If the sibling has no innerBlocks, create a new `list` block.\n\t\tif ( ! newListItem.innerBlocks?.length ) {\n\t\t\tnewListItem.innerBlocks = [\n\t\t\t\tcreateBlock( 'core/list', {\n\t\t\t\t\tordered: parentListAttributes.ordered,\n\t\t\t\t} ),\n\t\t\t];\n\t\t}\n\t\t// A list item usually has one `list`, but it's possible to have\n\t\t// more. So we need to preserve the previous `list` blocks and\n\t\t// merge the new blocks to the last `list`.\n\t\tnewListItem.innerBlocks[\n\t\t\tnewListItem.innerBlocks.length - 1\n\t\t].innerBlocks.push( ...clonedBlocks );\n\n\t\t// We get the selection start/end here, because when\n\t\t// we replace blocks, the selection is updated too.\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\t// Replace the previous sibling of the block being indented and the indented blocks,\n\t\t// with a new block whose attributes are equal to the ones of the previous sibling and\n\t\t// whose descendants are the children of the previous sibling, followed by the indented blocks.\n\t\treplaceBlocks( [ previousSiblingId, ...clientIds ], [ newListItem ] );\n\t\tif ( ! _hasMultiSelection ) {\n\t\t\tselectionChange(\n\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\tselectionEnd.attributeKey,\n\t\t\t\tselectionEnd.clientId === selectionStart.clientId\n\t\t\t\t\t? selectionStart.offset\n\t\t\t\t\t: selectionEnd.offset,\n\t\t\t\tselectionEnd.offset\n\t\t\t);\n\t\t} else {\n\t\t\tmultiSelect(\n\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\tclonedBlocks[ clonedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\n\t\treturn true;\n\t}, [ clientId ] );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA4B;AAC5B,kBAAuC;AACvC,0BAA0C;AAC1C,oBAAwC;AAEzB,SAAR,kBAAoC,UAAW;AACrD,QAAM,EAAE,eAAe,iBAAiB,YAAY,QACnD,yBAAa,oBAAAA,KAAiB;AAC/B,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,uBAAW,oBAAAA,KAAiB;AAChC,aAAO,4BAAa,MAAM;AACzB,UAAM,qBAAqB,kBAAkB;AAC7C,UAAM,YAAY,qBACf,+BAA+B,IAC/B,CAAE,QAAS;AACd,UAAM,eAAe,UAAU;AAAA,MAAK,CAAE,kBACrC,0BAAY,SAAU,SAAU,CAAE;AAAA,IACnC;AACA,UAAM,oBAAoB,yBAA0B,QAAS;AAC7D,UAAM,kBAAc,0BAAY,SAAU,iBAAkB,CAAE;AAE9D,UAAM,eAAe,qBAAsB,QAAS;AACpD,UAAM,uBAAuB,mBAAoB,YAAa;AAE9D,QAAK,CAAE,YAAY,aAAa,QAAS;AACxC,kBAAY,cAAc;AAAA,YACzB,2BAAa,aAAa;AAAA,UACzB,SAAS,qBAAqB;AAAA,QAC/B,CAAE;AAAA,MACH;AAAA,IACD;AAIA,gBAAY,YACX,YAAY,YAAY,SAAS,CAClC,EAAE,YAAY,KAAM,GAAG,YAAa;AAIpC,UAAM,iBAAiB,kBAAkB;AACzC,UAAM,eAAe,gBAAgB;AAIrC,kBAAe,CAAE,mBAAmB,GAAG,SAAU,GAAG,CAAE,WAAY,CAAE;AACpE,QAAK,CAAE,oBAAqB;AAC3B;AAAA,QACC,aAAc,CAAE,EAAE;AAAA,QAClB,aAAa;AAAA,QACb,aAAa,aAAa,eAAe,WACtC,eAAe,SACf,aAAa;AAAA,QAChB,aAAa;AAAA,MACd;AAAA,IACD,OAAO;AACN;AAAA,QACC,aAAc,CAAE,EAAE;AAAA,QAClB,aAAc,aAAa,SAAS,CAAE,EAAE;AAAA,MACzC;AAAA,IACD;AAEA,WAAO;AAAA,EACR,GAAG,CAAE,QAAS,CAAE;AACjB;",
6
6
  "names": ["blockEditorStore"]
7
7
  }
@@ -34,13 +34,14 @@ __export(use_space_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(use_space_exports);
36
36
  var import_compose = require("@wordpress/compose");
37
+ var import_rich_text = require("@wordpress/rich-text");
37
38
  var import_keycodes = require("@wordpress/keycodes");
38
39
  var import_block_editor = require("@wordpress/block-editor");
39
40
  var import_data = require("@wordpress/data");
40
41
  var import_use_indent_list_item = __toESM(require("./use-indent-list-item.cjs"));
41
42
  var import_use_outdent_list_item = __toESM(require("./use-outdent-list-item.cjs"));
42
43
  var import_lock_unlock = require("../../lock-unlock.cjs");
43
- var { subscribeDelegatedListener } = (0, import_lock_unlock.unlock)(import_compose.privateApis);
44
+ var { subscribeOwnedListener } = (0, import_lock_unlock.unlock)(import_rich_text.privateApis);
44
45
  function useSpace(clientId) {
45
46
  const { getSelectionStart, getSelectionEnd, getBlockIndex } = (0, import_data.useSelect)(import_block_editor.store);
46
47
  const indentListItem = (0, import_use_indent_list_item.default)(clientId);
@@ -69,7 +70,7 @@ function useSpace(clientId) {
69
70
  }
70
71
  }
71
72
  }
72
- return subscribeDelegatedListener(
73
+ return subscribeOwnedListener(
73
74
  element,
74
75
  "keydown",
75
76
  onKeyDown,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/list-item/hooks/use-space.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tuseRefEffect,\n\tprivateApis as composePrivateApis,\n} from '@wordpress/compose';\nimport { SPACE, TAB } from '@wordpress/keycodes';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useIndentListItem from './use-indent-list-item';\nimport useOutdentListItem from './use-outdent-list-item';\nimport { unlock } from '../../lock-unlock';\n\nconst { subscribeDelegatedListener } = unlock( composePrivateApis );\n\nexport default function useSpace( clientId ) {\n\tconst { getSelectionStart, getSelectionEnd, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst indentListItem = useIndentListItem( clientId );\n\tconst outdentListItem = useOutdentListItem();\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t( keyCode !== SPACE && keyCode !== TAB ) ||\n\t\t\t\t\t// Only override when no modifiers are pressed.\n\t\t\t\t\taltKey ||\n\t\t\t\t\tmetaKey ||\n\t\t\t\t\tctrlKey\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst selectionStart = getSelectionStart();\n\t\t\t\tconst selectionEnd = getSelectionEnd();\n\t\t\t\tif (\n\t\t\t\t\tselectionStart.offset === 0 &&\n\t\t\t\t\tselectionEnd.offset === 0\n\t\t\t\t) {\n\t\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\t\t// Note that backspace behaviour in defined in onMerge.\n\t\t\t\t\t\tif ( keyCode === TAB ) {\n\t\t\t\t\t\t\tif ( outdentListItem() ) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( getBlockIndex( clientId ) !== 0 ) {\n\t\t\t\t\t\tif ( indentListItem() ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Capture phase so we run before writing-flow's ancestor-bubble\n\t\t\t// keydown handlers that gate on `event.defaultPrevented`.\n\t\t\treturn subscribeDelegatedListener(\n\t\t\t\telement,\n\t\t\t\t'keydown',\n\t\t\t\tonKeyDown,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t\t[ clientId, indentListItem ]\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAGO;AACP,sBAA2B;AAC3B,0BAA0C;AAC1C,kBAA0B;AAK1B,kCAA8B;AAC9B,mCAA+B;AAC/B,yBAAuB;AAEvB,IAAM,EAAE,2BAA2B,QAAI,2BAAQ,eAAAA,WAAmB;AAEnD,SAAR,SAA2B,UAAW;AAC5C,QAAM,EAAE,mBAAmB,iBAAiB,cAAc,QACzD,uBAAW,oBAAAC,KAAiB;AAC7B,QAAM,qBAAiB,4BAAAC,SAAmB,QAAS;AACnD,QAAM,sBAAkB,6BAAAC,SAAmB;AAE3C,aAAO;AAAA,IACN,CAAE,YAAa;AACd,eAAS,UAAW,OAAQ;AAC3B,cAAM,EAAE,SAAS,UAAU,QAAQ,SAAS,QAAQ,IAAI;AAExD,YACC,MAAM,oBACJ,YAAY,yBAAS,YAAY;AAAA,QAEnC,UACA,WACA,SACC;AACD;AAAA,QACD;AAEA,cAAM,iBAAiB,kBAAkB;AACzC,cAAM,eAAe,gBAAgB;AACrC,YACC,eAAe,WAAW,KAC1B,aAAa,WAAW,GACvB;AACD,cAAK,UAAW;AAEf,gBAAK,YAAY,qBAAM;AACtB,kBAAK,gBAAgB,GAAI;AACxB,sBAAM,eAAe;AAAA,cACtB;AAAA,YACD;AAAA,UACD,WAAY,cAAe,QAAS,MAAM,GAAI;AAC7C,gBAAK,eAAe,GAAI;AACvB,oBAAM,eAAe;AAAA,YACtB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAIA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,UAAU,cAAe;AAAA,EAC5B;AACD;",
6
- "names": ["composePrivateApis", "blockEditorStore", "useIndentListItem", "useOutdentListItem"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { privateApis as richTextPrivateApis } from '@wordpress/rich-text';\nimport { SPACE, TAB } from '@wordpress/keycodes';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useIndentListItem from './use-indent-list-item';\nimport useOutdentListItem from './use-outdent-list-item';\nimport { unlock } from '../../lock-unlock';\n\nconst { subscribeOwnedListener } = unlock( richTextPrivateApis );\n\nexport default function useSpace( clientId ) {\n\tconst { getSelectionStart, getSelectionEnd, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst indentListItem = useIndentListItem( clientId );\n\tconst outdentListItem = useOutdentListItem();\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t( keyCode !== SPACE && keyCode !== TAB ) ||\n\t\t\t\t\t// Only override when no modifiers are pressed.\n\t\t\t\t\taltKey ||\n\t\t\t\t\tmetaKey ||\n\t\t\t\t\tctrlKey\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst selectionStart = getSelectionStart();\n\t\t\t\tconst selectionEnd = getSelectionEnd();\n\t\t\t\tif (\n\t\t\t\t\tselectionStart.offset === 0 &&\n\t\t\t\t\tselectionEnd.offset === 0\n\t\t\t\t) {\n\t\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\t\t// Note that backspace behaviour in defined in onMerge.\n\t\t\t\t\t\tif ( keyCode === TAB ) {\n\t\t\t\t\t\t\tif ( outdentListItem() ) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( getBlockIndex( clientId ) !== 0 ) {\n\t\t\t\t\t\tif ( indentListItem() ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Capture phase so we run before writing-flow's ancestor-bubble\n\t\t\t// keydown handlers that gate on `event.defaultPrevented`.\n\t\t\treturn subscribeOwnedListener(\n\t\t\t\telement,\n\t\t\t\t'keydown',\n\t\t\t\tonKeyDown,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t\t[ clientId, indentListItem ]\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA6B;AAC7B,uBAAmD;AACnD,sBAA2B;AAC3B,0BAA0C;AAC1C,kBAA0B;AAK1B,kCAA8B;AAC9B,mCAA+B;AAC/B,yBAAuB;AAEvB,IAAM,EAAE,uBAAuB,QAAI,2BAAQ,iBAAAA,WAAoB;AAEhD,SAAR,SAA2B,UAAW;AAC5C,QAAM,EAAE,mBAAmB,iBAAiB,cAAc,QACzD,uBAAW,oBAAAC,KAAiB;AAC7B,QAAM,qBAAiB,4BAAAC,SAAmB,QAAS;AACnD,QAAM,sBAAkB,6BAAAC,SAAmB;AAE3C,aAAO;AAAA,IACN,CAAE,YAAa;AACd,eAAS,UAAW,OAAQ;AAC3B,cAAM,EAAE,SAAS,UAAU,QAAQ,SAAS,QAAQ,IAAI;AAExD,YACC,MAAM,oBACJ,YAAY,yBAAS,YAAY;AAAA,QAEnC,UACA,WACA,SACC;AACD;AAAA,QACD;AAEA,cAAM,iBAAiB,kBAAkB;AACzC,cAAM,eAAe,gBAAgB;AACrC,YACC,eAAe,WAAW,KAC1B,aAAa,WAAW,GACvB;AACD,cAAK,UAAW;AAEf,gBAAK,YAAY,qBAAM;AACtB,kBAAK,gBAAgB,GAAI;AACxB,sBAAM,eAAe;AAAA,cACtB;AAAA,YACD;AAAA,UACD,WAAY,cAAe,QAAS,MAAM,GAAI;AAC7C,gBAAK,eAAe,GAAI;AACvB,oBAAM,eAAe;AAAA,YACtB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAIA,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,UAAU,cAAe;AAAA,EAC5B;AACD;",
6
+ "names": ["richTextPrivateApis", "blockEditorStore", "useIndentListItem", "useOutdentListItem"]
7
7
  }
@@ -38,16 +38,16 @@ var import_block_editor = require("@wordpress/block-editor");
38
38
  var import_components = require("@wordpress/components");
39
39
  var import_element = require("@wordpress/element");
40
40
  var import_data = require("@wordpress/data");
41
- var import_a11y = require("@wordpress/a11y");
42
41
  var import_lock_unlock = require("../lock-unlock.cjs");
43
42
  var import_jsx_runtime = require("react/jsx-runtime");
44
- var { Badge: WCBadge } = (0, import_lock_unlock.unlock)(import_components.privateApis);
43
+ var { ValidatedTextareaControl } = (0, import_lock_unlock.unlock)(import_components.privateApis);
45
44
  function MathEdit({ attributes, setAttributes, isSelected }) {
46
45
  const { latex, mathML } = attributes;
47
46
  const [blockRef, setBlockRef] = (0, import_element.useState)();
48
47
  const [error, setError] = (0, import_element.useState)(null);
49
48
  const [latexToMathML, setLatexToMathML] = (0, import_element.useState)();
50
49
  const initialLatex = (0, import_element.useRef)(latex);
50
+ const formRef = (0, import_element.useRef)();
51
51
  const { __unstableMarkNextChangeAsNotPersistent } = (0, import_data.useDispatch)(import_block_editor.store);
52
52
  (0, import_element.useEffect)(() => {
53
53
  import("@wordpress/latex-to-mathml").then((module2) => {
@@ -85,63 +85,46 @@ function MathEdit({ attributes, setAttributes, isSelected }) {
85
85
  offset: 8,
86
86
  anchor: blockRef,
87
87
  focusOnMount: false,
88
+ onFocusOutside: () => formRef.current?.reportValidity(),
88
89
  __unstableSlotName: "__unstable-block-tools-after",
89
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { padding: "4px", minWidth: "300px" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components.__experimentalVStack, { spacing: 1, children: [
90
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
91
- import_components.TextareaControl,
92
- {
93
- __next40pxDefaultSize: true,
94
- label: (0, import_i18n.__)("LaTeX math syntax"),
95
- hideLabelFromVision: true,
96
- value: latex,
97
- className: "wp-block-math__textarea-control",
98
- onChange: (newLatex) => {
99
- if (!latexToMathML) {
100
- setAttributes({ latex: newLatex });
101
- return;
102
- }
103
- let newMathML = "";
104
- try {
105
- newMathML = latexToMathML(newLatex, {
106
- displayMode: true
107
- });
108
- setError(null);
109
- } catch (err) {
110
- setError(err.message);
111
- (0, import_a11y.speak)(
112
- (0, import_i18n.sprintf)(
113
- /* translators: %s: error message returned when parsing LaTeX. */
114
- (0, import_i18n.__)(
115
- "Error parsing mathematical expression: %s"
116
- ),
117
- err.message
118
- )
119
- );
120
- }
121
- setAttributes({
122
- mathML: newMathML,
123
- latex: newLatex
124
- });
125
- },
126
- placeholder: (0, import_i18n.__)("e.g., x^2, \\frac{a}{b}")
127
- }
128
- ),
129
- error && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
130
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
131
- WCBadge,
90
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
91
+ "form",
92
+ {
93
+ ref: formRef,
94
+ style: { padding: "4px", minWidth: "300px" },
95
+ onSubmit: (event) => event.preventDefault(),
96
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
97
+ ValidatedTextareaControl,
132
98
  {
133
- intent: "error",
134
- className: "wp-block-math__error",
135
- children: (0, import_i18n.sprintf)(
136
- /* translators: %s: error message returned when parsing LaTeX. */
137
- (0, import_i18n.__)("Error: %s"),
138
- error
139
- )
99
+ label: (0, import_i18n.__)("LaTeX math syntax"),
100
+ hideLabelFromVision: true,
101
+ value: latex,
102
+ className: "wp-block-math__textarea-control",
103
+ customValidity: error ? { type: "invalid", message: error } : void 0,
104
+ onChange: (newLatex) => {
105
+ if (!latexToMathML) {
106
+ setAttributes({ latex: newLatex });
107
+ return;
108
+ }
109
+ let newMathML = "";
110
+ try {
111
+ newMathML = latexToMathML(newLatex, {
112
+ displayMode: true
113
+ });
114
+ setError(null);
115
+ } catch (err) {
116
+ setError(err.message);
117
+ }
118
+ setAttributes({
119
+ mathML: newMathML,
120
+ latex: newLatex
121
+ });
122
+ },
123
+ placeholder: (0, import_i18n.__)("e.g., x^2, \\frac{a}{b}")
140
124
  }
141
- ),
142
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { children: ".wp-block-math__error .components-badge__content{white-space:normal}" })
143
- ] })
144
- ] }) })
125
+ )
126
+ }
127
+ )
145
128
  }
146
129
  )
147
130
  ] });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/math/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tTextareaControl,\n\tPopover,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\nconst { Badge: WCBadge } = unlock( componentsPrivateApis );\n\nexport default function MathEdit( { attributes, setAttributes, isSelected } ) {\n\tconst { latex, mathML } = attributes;\n\tconst [ blockRef, setBlockRef ] = useState();\n\tconst [ error, setError ] = useState( null );\n\tconst [ latexToMathML, setLatexToMathML ] = useState();\n\tconst initialLatex = useRef( latex );\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\timport( '@wordpress/latex-to-mathml' ).then( ( module ) => {\n\t\t\tsetLatexToMathML( () => module.default );\n\t\t\tif ( initialLatex.current ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tmathML: module.default( initialLatex.current, {\n\t\t\t\t\t\tdisplayMode: true,\n\t\t\t\t\t} ),\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}, [\n\t\tinitialLatex,\n\t\tsetAttributes,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t] );\n\n\tconst blockProps = useBlockProps( {\n\t\tref: setBlockRef,\n\t\tposition: 'relative',\n\t} );\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ mathML ? (\n\t\t\t\t<math\n\t\t\t\t\t// We can't spread block props on the math element because\n\t\t\t\t\t// it only supports a limited amount of global attributes.\n\t\t\t\t\t// For example, draggable will have no effect.\n\t\t\t\t\tdisplay=\"block\"\n\t\t\t\t\tdangerouslySetInnerHTML={ { __html: mathML } }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t'\\u200B'\n\t\t\t) }\n\t\t\t{ isSelected && (\n\t\t\t\t<Popover\n\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\toffset={ 8 }\n\t\t\t\t\tanchor={ blockRef }\n\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\t__unstableSlotName=\"__unstable-block-tools-after\"\n\t\t\t\t>\n\t\t\t\t\t<div style={ { padding: '4px', minWidth: '300px' } }>\n\t\t\t\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'LaTeX math syntax' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\tvalue={ latex }\n\t\t\t\t\t\t\t\tclassName=\"wp-block-math__textarea-control\"\n\t\t\t\t\t\t\t\tonChange={ ( newLatex ) => {\n\t\t\t\t\t\t\t\t\tif ( ! latexToMathML ) {\n\t\t\t\t\t\t\t\t\t\tsetAttributes( { latex: newLatex } );\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlet newMathML = '';\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tnewMathML = latexToMathML( newLatex, {\n\t\t\t\t\t\t\t\t\t\t\tdisplayMode: true,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\tsetError( null );\n\t\t\t\t\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\t\t\t\t\tsetError( err.message );\n\t\t\t\t\t\t\t\t\t\tspeak(\n\t\t\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: error message returned when parsing LaTeX. */\n\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Error parsing mathematical expression: %s'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\terr.message\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tmathML: newMathML,\n\t\t\t\t\t\t\t\t\t\tlatex: newLatex,\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\tplaceholder={ __( 'e.g., x^2, \\\\frac{a}{b}' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ error && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<WCBadge\n\t\t\t\t\t\t\t\t\t\tintent=\"error\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-math__error\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: error message returned when parsing LaTeX. */\n\t\t\t\t\t\t\t\t\t\t\t__( 'Error: %s' ),\n\t\t\t\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</WCBadge>\n\t\t\t\t\t\t\t\t\t<style children=\".wp-block-math__error .components-badge__content{white-space:normal}\" />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</div>\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA4B;AAC5B,0BAGO;AACP,wBAKO;AACP,qBAA4C;AAC5C,kBAA4B;AAC5B,kBAAsB;AAKtB,yBAAuB;AAuCnB;AArCJ,IAAM,EAAE,OAAO,QAAQ,QAAI,2BAAQ,kBAAAA,WAAsB;AAE1C,SAAR,SAA2B,EAAE,YAAY,eAAe,WAAW,GAAI;AAC7E,QAAM,EAAE,OAAO,OAAO,IAAI;AAC1B,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAS;AAC3C,QAAM,CAAE,OAAO,QAAS,QAAI,yBAAU,IAAK;AAC3C,QAAM,CAAE,eAAe,gBAAiB,QAAI,yBAAS;AACrD,QAAM,mBAAe,uBAAQ,KAAM;AACnC,QAAM,EAAE,wCAAwC,QAC/C,yBAAa,oBAAAC,KAAiB;AAE/B,gCAAW,MAAM;AAChB,WAAQ,4BAA6B,EAAE,KAAM,CAAEC,YAAY;AAC1D,uBAAkB,MAAMA,QAAO,OAAQ;AACvC,UAAK,aAAa,SAAU;AAC3B,gDAAwC;AACxC,sBAAe;AAAA,UACd,QAAQA,QAAO,QAAS,aAAa,SAAS;AAAA,YAC7C,aAAa;AAAA,UACd,CAAE;AAAA,QACH,CAAE;AAAA,MACH;AAAA,IACD,CAAE;AAAA,EACH,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,QAAM,iBAAa,mCAAe;AAAA,IACjC,KAAK;AAAA,IACL,UAAU;AAAA,EACX,CAAE;AAEF,SACC,6CAAC,SAAM,GAAG,YACP;AAAA,aACD;AAAA,MAAC;AAAA;AAAA,QAIA,SAAQ;AAAA,QACR,yBAA0B,EAAE,QAAQ,OAAO;AAAA;AAAA,IAC5C,IAEA;AAAA,IAEC,cACD;AAAA,MAAC;AAAA;AAAA,QACA,WAAU;AAAA,QACV,QAAS;AAAA,QACT,QAAS;AAAA,QACT,cAAe;AAAA,QACf,oBAAmB;AAAA,QAEnB,sDAAC,SAAI,OAAQ,EAAE,SAAS,OAAO,UAAU,QAAQ,GAChD,uDAAC,kBAAAC,sBAAA,EAAO,SAAU,GACjB;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,uBAAqB;AAAA,cACrB,WAAQ,gBAAI,mBAAoB;AAAA,cAChC,qBAAmB;AAAA,cACnB,OAAQ;AAAA,cACR,WAAU;AAAA,cACV,UAAW,CAAE,aAAc;AAC1B,oBAAK,CAAE,eAAgB;AACtB,gCAAe,EAAE,OAAO,SAAS,CAAE;AACnC;AAAA,gBACD;AACA,oBAAI,YAAY;AAChB,oBAAI;AACH,8BAAY,cAAe,UAAU;AAAA,oBACpC,aAAa;AAAA,kBACd,CAAE;AACF,2BAAU,IAAK;AAAA,gBAChB,SAAU,KAAM;AACf,2BAAU,IAAI,OAAQ;AACtB;AAAA,wBACC;AAAA;AAAA,0BAEC;AAAA,wBACC;AAAA,sBACD;AAAA,sBACA,IAAI;AAAA,oBACL;AAAA,kBACD;AAAA,gBACD;AACA,8BAAe;AAAA,kBACd,QAAQ;AAAA,kBACR,OAAO;AAAA,gBACR,CAAE;AAAA,cACH;AAAA,cACA,iBAAc,gBAAI,yBAA0B;AAAA;AAAA,UAC7C;AAAA,UACE,SACD,4EACC;AAAA;AAAA,cAAC;AAAA;AAAA,gBACA,QAAO;AAAA,gBACP,WAAU;AAAA,gBAER;AAAA;AAAA,sBAED,gBAAI,WAAY;AAAA,kBAChB;AAAA,gBACD;AAAA;AAAA,YACD;AAAA,YACA,4CAAC,WAAM,UAAS,wEAAuE;AAAA,aACxF;AAAA,WAEF,GACD;AAAA;AAAA,IACD;AAAA,KAEF;AAEF;",
6
- "names": ["componentsPrivateApis", "blockEditorStore", "module", "VStack"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tPopover,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\nconst { ValidatedTextareaControl } = unlock( componentsPrivateApis );\n\nexport default function MathEdit( { attributes, setAttributes, isSelected } ) {\n\tconst { latex, mathML } = attributes;\n\tconst [ blockRef, setBlockRef ] = useState();\n\tconst [ error, setError ] = useState( null );\n\tconst [ latexToMathML, setLatexToMathML ] = useState();\n\tconst initialLatex = useRef( latex );\n\tconst formRef = useRef();\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\timport( '@wordpress/latex-to-mathml' ).then( ( module ) => {\n\t\t\tsetLatexToMathML( () => module.default );\n\t\t\tif ( initialLatex.current ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tmathML: module.default( initialLatex.current, {\n\t\t\t\t\t\tdisplayMode: true,\n\t\t\t\t\t} ),\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}, [\n\t\tinitialLatex,\n\t\tsetAttributes,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t] );\n\n\tconst blockProps = useBlockProps( {\n\t\tref: setBlockRef,\n\t\tposition: 'relative',\n\t} );\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ mathML ? (\n\t\t\t\t<math\n\t\t\t\t\t// We can't spread block props on the math element because\n\t\t\t\t\t// it only supports a limited amount of global attributes.\n\t\t\t\t\t// For example, draggable will have no effect.\n\t\t\t\t\tdisplay=\"block\"\n\t\t\t\t\tdangerouslySetInnerHTML={ { __html: mathML } }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t'\\u200B'\n\t\t\t) }\n\t\t\t{ isSelected && (\n\t\t\t\t<Popover\n\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\toffset={ 8 }\n\t\t\t\t\tanchor={ blockRef }\n\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\t// Surface any parsing error before focus leaves the block.\n\t\t\t\t\t// An invalid field is refocused, keeping the popover open.\n\t\t\t\t\tonFocusOutside={ () => formRef.current?.reportValidity() }\n\t\t\t\t\t__unstableSlotName=\"__unstable-block-tools-after\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tref={ formRef }\n\t\t\t\t\t\tstyle={ { padding: '4px', minWidth: '300px' } }\n\t\t\t\t\t\tonSubmit={ ( event ) => event.preventDefault() }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ValidatedTextareaControl\n\t\t\t\t\t\t\tlabel={ __( 'LaTeX math syntax' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ latex }\n\t\t\t\t\t\t\tclassName=\"wp-block-math__textarea-control\"\n\t\t\t\t\t\t\tcustomValidity={\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t\t\t\t? { type: 'invalid', message: error }\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ ( newLatex ) => {\n\t\t\t\t\t\t\t\tif ( ! latexToMathML ) {\n\t\t\t\t\t\t\t\t\tsetAttributes( { latex: newLatex } );\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet newMathML = '';\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tnewMathML = latexToMathML( newLatex, {\n\t\t\t\t\t\t\t\t\t\tdisplayMode: true,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\tsetError( null );\n\t\t\t\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\t\t\t\tsetError( err.message );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tmathML: newMathML,\n\t\t\t\t\t\t\t\t\tlatex: newLatex,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tplaceholder={ __( 'e.g., x^2, \\\\frac{a}{b}' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</form>\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,0BAGO;AACP,wBAGO;AACP,qBAA4C;AAC5C,kBAA4B;AAK5B,yBAAuB;AAsCrB;AApCF,IAAM,EAAE,yBAAyB,QAAI,2BAAQ,kBAAAA,WAAsB;AAEpD,SAAR,SAA2B,EAAE,YAAY,eAAe,WAAW,GAAI;AAC7E,QAAM,EAAE,OAAO,OAAO,IAAI;AAC1B,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAS;AAC3C,QAAM,CAAE,OAAO,QAAS,QAAI,yBAAU,IAAK;AAC3C,QAAM,CAAE,eAAe,gBAAiB,QAAI,yBAAS;AACrD,QAAM,mBAAe,uBAAQ,KAAM;AACnC,QAAM,cAAU,uBAAO;AACvB,QAAM,EAAE,wCAAwC,QAC/C,yBAAa,oBAAAC,KAAiB;AAE/B,gCAAW,MAAM;AAChB,WAAQ,4BAA6B,EAAE,KAAM,CAAEC,YAAY;AAC1D,uBAAkB,MAAMA,QAAO,OAAQ;AACvC,UAAK,aAAa,SAAU;AAC3B,gDAAwC;AACxC,sBAAe;AAAA,UACd,QAAQA,QAAO,QAAS,aAAa,SAAS;AAAA,YAC7C,aAAa;AAAA,UACd,CAAE;AAAA,QACH,CAAE;AAAA,MACH;AAAA,IACD,CAAE;AAAA,EACH,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,QAAM,iBAAa,mCAAe;AAAA,IACjC,KAAK;AAAA,IACL,UAAU;AAAA,EACX,CAAE;AAEF,SACC,6CAAC,SAAM,GAAG,YACP;AAAA,aACD;AAAA,MAAC;AAAA;AAAA,QAIA,SAAQ;AAAA,QACR,yBAA0B,EAAE,QAAQ,OAAO;AAAA;AAAA,IAC5C,IAEA;AAAA,IAEC,cACD;AAAA,MAAC;AAAA;AAAA,QACA,WAAU;AAAA,QACV,QAAS;AAAA,QACT,QAAS;AAAA,QACT,cAAe;AAAA,QAGf,gBAAiB,MAAM,QAAQ,SAAS,eAAe;AAAA,QACvD,oBAAmB;AAAA,QAEnB;AAAA,UAAC;AAAA;AAAA,YACA,KAAM;AAAA,YACN,OAAQ,EAAE,SAAS,OAAO,UAAU,QAAQ;AAAA,YAC5C,UAAW,CAAE,UAAW,MAAM,eAAe;AAAA,YAE7C;AAAA,cAAC;AAAA;AAAA,gBACA,WAAQ,gBAAI,mBAAoB;AAAA,gBAChC,qBAAmB;AAAA,gBACnB,OAAQ;AAAA,gBACR,WAAU;AAAA,gBACV,gBACC,QACG,EAAE,MAAM,WAAW,SAAS,MAAM,IAClC;AAAA,gBAEJ,UAAW,CAAE,aAAc;AAC1B,sBAAK,CAAE,eAAgB;AACtB,kCAAe,EAAE,OAAO,SAAS,CAAE;AACnC;AAAA,kBACD;AACA,sBAAI,YAAY;AAChB,sBAAI;AACH,gCAAY,cAAe,UAAU;AAAA,sBACpC,aAAa;AAAA,oBACd,CAAE;AACF,6BAAU,IAAK;AAAA,kBAChB,SAAU,KAAM;AACf,6BAAU,IAAI,OAAQ;AAAA,kBACvB;AACA,gCAAe;AAAA,oBACd,QAAQ;AAAA,oBACR,OAAO;AAAA,kBACR,CAAE;AAAA,gBACH;AAAA,gBACA,iBAAc,gBAAI,yBAA0B;AAAA;AAAA,YAC7C;AAAA;AAAA,QACD;AAAA;AAAA,IACD;AAAA,KAEF;AAEF;",
6
+ "names": ["componentsPrivateApis", "blockEditorStore", "module"]
7
7
  }
@@ -438,7 +438,8 @@ function MediaTextEdit({
438
438
  import_block_editor.BlockVerticalAlignmentControl,
439
439
  {
440
440
  onChange: onVerticalAlignmentChange,
441
- value: verticalAlignment
441
+ value: verticalAlignment,
442
+ label: (0, import_i18n.__)("Align media and text vertically")
442
443
  }
443
444
  ),
444
445
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/media-text/edit.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useRef } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tBlockVerticalAlignmentControl,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalImageURLInputUI as ImageURLInputUI,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tRangeControl,\n\tTextareaControl,\n\tToggleControl,\n\tToolbarButton,\n\tExternalLink,\n\tFocalPointPicker,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { isBlobURL, getBlobTypeByURL } from '@wordpress/blob';\nimport { pullLeft, pullRight } from '@wordpress/icons';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport MediaContainer from './media-container';\nimport {\n\tDEFAULT_MEDIA_SIZE_SLUG,\n\tWIDTH_CONSTRAINT_PERCENTAGE,\n\tLINK_DESTINATION_NONE,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_ATTACHMENT,\n\tTEMPLATE,\n} from './constants';\nimport { unlock } from '../lock-unlock';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst { ResolutionTool } = unlock( blockEditorPrivateApis );\n\n// this limits the resize to a safe zone to avoid making broken layouts\nconst applyWidthConstraints = ( width ) =>\n\tMath.max(\n\t\tWIDTH_CONSTRAINT_PERCENTAGE,\n\t\tMath.min( width, 100 - WIDTH_CONSTRAINT_PERCENTAGE )\n\t);\n\nfunction getImageSourceUrlBySizeSlug( image, slug ) {\n\treturn image?.media_details?.sizes?.[ slug ]?.source_url;\n}\n\nfunction attributesFromMedia( {\n\tattributes: { linkDestination, href },\n\tsetAttributes,\n} ) {\n\treturn ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmediaAlt: undefined,\n\t\t\t\tmediaId: undefined,\n\t\t\t\tmediaType: undefined,\n\t\t\t\tmediaUrl: undefined,\n\t\t\t\tmediaLink: undefined,\n\t\t\t\thref: undefined,\n\t\t\t\tfocalPoint: undefined,\n\t\t\t\tuseFeaturedImage: false,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tmedia.type = getBlobTypeByURL( media.url );\n\t\t}\n\n\t\tlet mediaType;\n\t\tlet src;\n\t\t// For media selections originated from a file upload.\n\t\tif ( media.media_type ) {\n\t\t\tif ( media.media_type === 'image' ) {\n\t\t\t\tmediaType = 'image';\n\t\t\t} else {\n\t\t\t\t// only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t\t// video contain the media type of 'file' in the object returned from the rest api.\n\t\t\t\tmediaType = 'video';\n\t\t\t}\n\t\t} else {\n\t\t\t// For media selections originated from existing files in the media library.\n\t\t\tmediaType = media.type;\n\t\t}\n\n\t\tif ( mediaType === 'image' ) {\n\t\t\t// Try the \"large\" size URL, falling back to the \"full\" size URL below.\n\t\t\tsrc =\n\t\t\t\tmedia.sizes?.large?.url ||\n\t\t\t\tmedia.media_details?.sizes?.large?.source_url;\n\t\t}\n\n\t\tlet newLinkDestination = linkDestination;\n\t\tlet newHref = href;\n\n\t\t// Only apply default link behavior for images (not videos).\n\t\tif ( mediaType === 'image' ) {\n\t\t\t// Check if default link setting should be used.\n\t\t\tif ( ! newLinkDestination ) {\n\t\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t\tswitch (\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t\t) {\n\t\t\t\t\tcase 'file':\n\t\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\t\tnewLinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'post':\n\t\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\t\tnewLinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tnewLinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set href based on linkDestination.\n\t\t\tswitch ( newLinkDestination ) {\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tnewHref = media.url;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tnewHref = media.link;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmediaAlt: media.alt,\n\t\t\tmediaId: media.id,\n\t\t\tmediaType,\n\t\t\tmediaUrl: src || media.url,\n\t\t\tmediaLink: media.link || undefined,\n\t\t\thref: newHref,\n\t\t\tlinkDestination: newLinkDestination,\n\t\t\tfocalPoint: undefined,\n\t\t\tuseFeaturedImage: false,\n\t\t} );\n\t};\n}\n\nfunction MediaTextResolutionTool( { image, value, onChange } ) {\n\tconst { imageSizes } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\timageSizes: getSettings().imageSizes,\n\t\t};\n\t}, [] );\n\n\tif ( ! imageSizes?.length ) {\n\t\treturn null;\n\t}\n\n\tconst imageSizeOptions = imageSizes\n\t\t.filter( ( { slug } ) => getImageSourceUrlBySizeSlug( image, slug ) )\n\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\n\treturn (\n\t\t<ResolutionTool\n\t\t\tvalue={ value }\n\t\t\tdefaultValue={ DEFAULT_MEDIA_SIZE_SLUG }\n\t\t\toptions={ imageSizeOptions }\n\t\t\tonChange={ onChange }\n\t\t/>\n\t);\n}\n\nfunction MediaTextEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tcontext: { postId, postType },\n} ) {\n\tconst {\n\t\tfocalPoint,\n\t\thref,\n\t\timageFill,\n\t\tisStackedOnMobile,\n\t\tlinkClass,\n\t\tlinkDestination,\n\t\tlinkTarget,\n\t\tmediaAlt,\n\t\tmediaId,\n\t\tmediaPosition,\n\t\tmediaType,\n\t\tmediaUrl,\n\t\tmediaWidth,\n\t\tmediaSizeSlug,\n\t\trel,\n\t\tverticalAlignment,\n\t\tallowedBlocks,\n\t\tuseFeaturedImage,\n\t} = attributes;\n\n\tconst [ featuredImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\n\tconst { featuredImageMedia } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tfeaturedImageMedia:\n\t\t\t\t\tfeaturedImage && useFeaturedImage\n\t\t\t\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\t\t\tfeaturedImage,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ featuredImage, useFeaturedImage ]\n\t);\n\n\tconst { image } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\timage:\n\t\t\t\t\tmediaId && isSelected\n\t\t\t\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\t\t\tmediaId,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: null,\n\t\t\t};\n\t\t},\n\t\t[ isSelected, mediaId ]\n\t);\n\n\tconst featuredImageURL = useFeaturedImage\n\t\t? featuredImageMedia?.source_url\n\t\t: '';\n\tconst featuredImageAlt = useFeaturedImage\n\t\t? featuredImageMedia?.alt_text\n\t\t: '';\n\n\tconst toggleUseFeaturedImage = () => {\n\t\tsetAttributes( {\n\t\t\timageFill: false,\n\t\t\tmediaType: 'image',\n\t\t\tmediaId: undefined,\n\t\t\tmediaUrl: undefined,\n\t\t\tmediaAlt: undefined,\n\t\t\tmediaLink: undefined,\n\t\t\tlinkDestination: undefined,\n\t\t\tlinkTarget: undefined,\n\t\t\tlinkClass: undefined,\n\t\t\trel: undefined,\n\t\t\thref: undefined,\n\t\t\tuseFeaturedImage: ! useFeaturedImage,\n\t\t} );\n\t};\n\n\tconst refMedia = useRef();\n\tconst imperativeFocalPointPreview = ( value ) => {\n\t\tconst { style } = refMedia.current;\n\t\tconst { x, y } = value;\n\t\tstyle.objectPosition = `${ x * 100 }% ${ y * 100 }%`;\n\t};\n\n\tconst [ temporaryMediaWidth, setTemporaryMediaWidth ] = useState( null );\n\n\tconst onSelectMedia = attributesFromMedia( { attributes, setAttributes } );\n\n\tconst onSetHref = ( props ) => {\n\t\tsetAttributes( props );\n\t};\n\n\tconst onWidthChange = ( width ) => {\n\t\tsetTemporaryMediaWidth( applyWidthConstraints( width ) );\n\t};\n\tconst commitWidthChange = ( width ) => {\n\t\tsetAttributes( {\n\t\t\tmediaWidth: applyWidthConstraints( width ),\n\t\t} );\n\t\tsetTemporaryMediaWidth( null );\n\t};\n\n\tconst classNames = clsx( {\n\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t'is-selected': isSelected,\n\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t\t'is-image-fill-element': imageFill,\n\t} );\n\tconst widthString = `${ temporaryMediaWidth || mediaWidth }%`;\n\tconst gridTemplateColumns =\n\t\t'right' === mediaPosition\n\t\t\t? `1fr ${ widthString }`\n\t\t\t: `${ widthString } 1fr`;\n\tconst style = {\n\t\tgridTemplateColumns,\n\t\tmsGridColumns: gridTemplateColumns,\n\t};\n\tconst onMediaAltChange = ( newMediaAlt ) => {\n\t\tsetAttributes( { mediaAlt: newMediaAlt } );\n\t};\n\tconst onVerticalAlignmentChange = ( alignment ) => {\n\t\tsetAttributes( { verticalAlignment: alignment } );\n\t};\n\tconst updateImage = ( newMediaSizeSlug ) => {\n\t\tconst newUrl = getImageSourceUrlBySizeSlug( image, newMediaSizeSlug );\n\n\t\tif ( ! newUrl ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmediaUrl: newUrl,\n\t\t\tmediaSizeSlug: newMediaSizeSlug,\n\t\t} );\n\t};\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst mediaTextGeneralSettings = (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Settings' ) }\n\t\t\tresetAll={ () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tisStackedOnMobile: true,\n\t\t\t\t\timageFill: false,\n\t\t\t\t\tmediaAlt: '',\n\t\t\t\t\tfocalPoint: undefined,\n\t\t\t\t\tmediaWidth: 50,\n\t\t\t\t} );\n\t\t\t\tupdateImage( DEFAULT_MEDIA_SIZE_SLUG );\n\t\t\t} }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<ToolsPanelItem\n\t\t\t\tlabel={ __( 'Media width' ) }\n\t\t\t\tisShownByDefault\n\t\t\t\thasValue={ () => mediaWidth !== 50 }\n\t\t\t\tonDeselect={ () => setAttributes( { mediaWidth: 50 } ) }\n\t\t\t>\n\t\t\t\t<RangeControl\n\t\t\t\t\tlabel={ __( 'Media width' ) }\n\t\t\t\t\tvalue={ temporaryMediaWidth || mediaWidth }\n\t\t\t\t\tonChange={ commitWidthChange }\n\t\t\t\t\tmin={ WIDTH_CONSTRAINT_PERCENTAGE }\n\t\t\t\t\tmax={ 100 - WIDTH_CONSTRAINT_PERCENTAGE }\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t<ToolsPanelItem\n\t\t\t\tlabel={ __( 'Stack on mobile' ) }\n\t\t\t\tisShownByDefault\n\t\t\t\thasValue={ () => ! isStackedOnMobile }\n\t\t\t\tonDeselect={ () =>\n\t\t\t\t\tsetAttributes( { isStackedOnMobile: true } )\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Stack on mobile' ) }\n\t\t\t\t\tchecked={ isStackedOnMobile }\n\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tisStackedOnMobile: ! isStackedOnMobile,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t{ mediaType === 'image' && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Crop image to fill' ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t\thasValue={ () => !! imageFill }\n\t\t\t\t\tonDeselect={ () => setAttributes( { imageFill: false } ) }\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Crop image to fill' ) }\n\t\t\t\t\t\tchecked={ !! imageFill }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\timageFill: ! imageFill,\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ imageFill &&\n\t\t\t\t( mediaUrl || featuredImageURL ) &&\n\t\t\t\tmediaType === 'image' && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! focalPoint }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { focalPoint: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FocalPointPicker\n\t\t\t\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\t\t\t\turl={\n\t\t\t\t\t\t\t\tuseFeaturedImage && featuredImageURL\n\t\t\t\t\t\t\t\t\t? featuredImageURL\n\t\t\t\t\t\t\t\t\t: mediaUrl\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalue={ focalPoint }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { focalPoint: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonDragStart={ imperativeFocalPointPreview }\n\t\t\t\t\t\t\tonDrag={ imperativeFocalPointPreview }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t{ mediaType === 'image' && mediaUrl && ! useFeaturedImage && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t\thasValue={ () => !! mediaAlt }\n\t\t\t\t\tonDeselect={ () => setAttributes( { mediaAlt: '' } ) }\n\t\t\t\t>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\tvalue={ mediaAlt }\n\t\t\t\t\t\tonChange={ onMediaAltChange }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={\n\t\t\t\t\t\t\t\t\t\t// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'https://www.w3.org/WAI/tutorials/images/decision-tree/'\n\t\t\t\t\t\t\t\t\t\t)\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\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t{ __( 'Leave empty if decorative.' ) }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ mediaType === 'image' && ! useFeaturedImage && (\n\t\t\t\t<MediaTextResolutionTool\n\t\t\t\t\timage={ image }\n\t\t\t\t\tvalue={ mediaSizeSlug }\n\t\t\t\t\tonChange={ updateImage }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolsPanel>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classNames,\n\t\tstyle,\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ className: 'wp-block-media-text__content' },\n\t\t{ template: TEMPLATE, allowedBlocks }\n\t);\n\n\tconst blockEditingMode = useBlockEditingMode();\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>{ mediaTextGeneralSettings }</InspectorControls>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockVerticalAlignmentControl\n\t\t\t\t\t\t\tonChange={ onVerticalAlignmentChange }\n\t\t\t\t\t\t\tvalue={ verticalAlignment }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ pullLeft }\n\t\t\t\t\t\t\ttitle={ __( 'Show media on left' ) }\n\t\t\t\t\t\t\tisActive={ mediaPosition === 'left' }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { mediaPosition: 'left' } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ pullRight }\n\t\t\t\t\t\t\ttitle={ __( 'Show media on right' ) }\n\t\t\t\t\t\t\tisActive={ mediaPosition === 'right' }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { mediaPosition: 'right' } )\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) }\n\n\t\t\t\t{ mediaType === 'image' && ! useFeaturedImage && (\n\t\t\t\t\t<ImageURLInputUI\n\t\t\t\t\t\turl={ href || '' }\n\t\t\t\t\t\tonChangeUrl={ onSetHref }\n\t\t\t\t\t\tlinkDestination={ linkDestination }\n\t\t\t\t\t\tmediaType={ mediaType }\n\t\t\t\t\t\tmediaUrl={ image && image.source_url }\n\t\t\t\t\t\tmediaLink={ image && image.link }\n\t\t\t\t\t\tlinkTarget={ linkTarget }\n\t\t\t\t\t\tlinkClass={ linkClass }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ mediaPosition === 'right' && <div { ...innerBlocksProps } /> }\n\t\t\t\t<MediaContainer\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\tonWidthChange={ onWidthChange }\n\t\t\t\t\tcommitWidthChange={ commitWidthChange }\n\t\t\t\t\trefMedia={ refMedia }\n\t\t\t\t\tenableResize={ blockEditingMode === 'default' }\n\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\t{ ...{\n\t\t\t\t\t\tfocalPoint,\n\t\t\t\t\t\timageFill,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisStackedOnMobile,\n\t\t\t\t\t\tmediaAlt,\n\t\t\t\t\t\tmediaId,\n\t\t\t\t\t\tmediaPosition,\n\t\t\t\t\t\tmediaType,\n\t\t\t\t\t\tmediaUrl,\n\t\t\t\t\t\tmediaWidth,\n\t\t\t\t\t\tuseFeaturedImage,\n\t\t\t\t\t\tfeaturedImageURL,\n\t\t\t\t\t\tfeaturedImageAlt,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ mediaPosition !== 'right' && <div { ...innerBlocksProps } /> }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default MediaTextEdit;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useRef } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tBlockVerticalAlignmentControl,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalImageURLInputUI as ImageURLInputUI,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tRangeControl,\n\tTextareaControl,\n\tToggleControl,\n\tToolbarButton,\n\tExternalLink,\n\tFocalPointPicker,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { isBlobURL, getBlobTypeByURL } from '@wordpress/blob';\nimport { pullLeft, pullRight } from '@wordpress/icons';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport MediaContainer from './media-container';\nimport {\n\tDEFAULT_MEDIA_SIZE_SLUG,\n\tWIDTH_CONSTRAINT_PERCENTAGE,\n\tLINK_DESTINATION_NONE,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_ATTACHMENT,\n\tTEMPLATE,\n} from './constants';\nimport { unlock } from '../lock-unlock';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst { ResolutionTool } = unlock( blockEditorPrivateApis );\n\n// this limits the resize to a safe zone to avoid making broken layouts\nconst applyWidthConstraints = ( width ) =>\n\tMath.max(\n\t\tWIDTH_CONSTRAINT_PERCENTAGE,\n\t\tMath.min( width, 100 - WIDTH_CONSTRAINT_PERCENTAGE )\n\t);\n\nfunction getImageSourceUrlBySizeSlug( image, slug ) {\n\treturn image?.media_details?.sizes?.[ slug ]?.source_url;\n}\n\nfunction attributesFromMedia( {\n\tattributes: { linkDestination, href },\n\tsetAttributes,\n} ) {\n\treturn ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmediaAlt: undefined,\n\t\t\t\tmediaId: undefined,\n\t\t\t\tmediaType: undefined,\n\t\t\t\tmediaUrl: undefined,\n\t\t\t\tmediaLink: undefined,\n\t\t\t\thref: undefined,\n\t\t\t\tfocalPoint: undefined,\n\t\t\t\tuseFeaturedImage: false,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tmedia.type = getBlobTypeByURL( media.url );\n\t\t}\n\n\t\tlet mediaType;\n\t\tlet src;\n\t\t// For media selections originated from a file upload.\n\t\tif ( media.media_type ) {\n\t\t\tif ( media.media_type === 'image' ) {\n\t\t\t\tmediaType = 'image';\n\t\t\t} else {\n\t\t\t\t// only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t\t// video contain the media type of 'file' in the object returned from the rest api.\n\t\t\t\tmediaType = 'video';\n\t\t\t}\n\t\t} else {\n\t\t\t// For media selections originated from existing files in the media library.\n\t\t\tmediaType = media.type;\n\t\t}\n\n\t\tif ( mediaType === 'image' ) {\n\t\t\t// Try the \"large\" size URL, falling back to the \"full\" size URL below.\n\t\t\tsrc =\n\t\t\t\tmedia.sizes?.large?.url ||\n\t\t\t\tmedia.media_details?.sizes?.large?.source_url;\n\t\t}\n\n\t\tlet newLinkDestination = linkDestination;\n\t\tlet newHref = href;\n\n\t\t// Only apply default link behavior for images (not videos).\n\t\tif ( mediaType === 'image' ) {\n\t\t\t// Check if default link setting should be used.\n\t\t\tif ( ! newLinkDestination ) {\n\t\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t\tswitch (\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t\t) {\n\t\t\t\t\tcase 'file':\n\t\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\t\tnewLinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'post':\n\t\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\t\tnewLinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tnewLinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set href based on linkDestination.\n\t\t\tswitch ( newLinkDestination ) {\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tnewHref = media.url;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tnewHref = media.link;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmediaAlt: media.alt,\n\t\t\tmediaId: media.id,\n\t\t\tmediaType,\n\t\t\tmediaUrl: src || media.url,\n\t\t\tmediaLink: media.link || undefined,\n\t\t\thref: newHref,\n\t\t\tlinkDestination: newLinkDestination,\n\t\t\tfocalPoint: undefined,\n\t\t\tuseFeaturedImage: false,\n\t\t} );\n\t};\n}\n\nfunction MediaTextResolutionTool( { image, value, onChange } ) {\n\tconst { imageSizes } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\timageSizes: getSettings().imageSizes,\n\t\t};\n\t}, [] );\n\n\tif ( ! imageSizes?.length ) {\n\t\treturn null;\n\t}\n\n\tconst imageSizeOptions = imageSizes\n\t\t.filter( ( { slug } ) => getImageSourceUrlBySizeSlug( image, slug ) )\n\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\n\treturn (\n\t\t<ResolutionTool\n\t\t\tvalue={ value }\n\t\t\tdefaultValue={ DEFAULT_MEDIA_SIZE_SLUG }\n\t\t\toptions={ imageSizeOptions }\n\t\t\tonChange={ onChange }\n\t\t/>\n\t);\n}\n\nfunction MediaTextEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tcontext: { postId, postType },\n} ) {\n\tconst {\n\t\tfocalPoint,\n\t\thref,\n\t\timageFill,\n\t\tisStackedOnMobile,\n\t\tlinkClass,\n\t\tlinkDestination,\n\t\tlinkTarget,\n\t\tmediaAlt,\n\t\tmediaId,\n\t\tmediaPosition,\n\t\tmediaType,\n\t\tmediaUrl,\n\t\tmediaWidth,\n\t\tmediaSizeSlug,\n\t\trel,\n\t\tverticalAlignment,\n\t\tallowedBlocks,\n\t\tuseFeaturedImage,\n\t} = attributes;\n\n\tconst [ featuredImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\n\tconst { featuredImageMedia } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tfeaturedImageMedia:\n\t\t\t\t\tfeaturedImage && useFeaturedImage\n\t\t\t\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\t\t\tfeaturedImage,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ featuredImage, useFeaturedImage ]\n\t);\n\n\tconst { image } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\timage:\n\t\t\t\t\tmediaId && isSelected\n\t\t\t\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\t\t\tmediaId,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: null,\n\t\t\t};\n\t\t},\n\t\t[ isSelected, mediaId ]\n\t);\n\n\tconst featuredImageURL = useFeaturedImage\n\t\t? featuredImageMedia?.source_url\n\t\t: '';\n\tconst featuredImageAlt = useFeaturedImage\n\t\t? featuredImageMedia?.alt_text\n\t\t: '';\n\n\tconst toggleUseFeaturedImage = () => {\n\t\tsetAttributes( {\n\t\t\timageFill: false,\n\t\t\tmediaType: 'image',\n\t\t\tmediaId: undefined,\n\t\t\tmediaUrl: undefined,\n\t\t\tmediaAlt: undefined,\n\t\t\tmediaLink: undefined,\n\t\t\tlinkDestination: undefined,\n\t\t\tlinkTarget: undefined,\n\t\t\tlinkClass: undefined,\n\t\t\trel: undefined,\n\t\t\thref: undefined,\n\t\t\tuseFeaturedImage: ! useFeaturedImage,\n\t\t} );\n\t};\n\n\tconst refMedia = useRef();\n\tconst imperativeFocalPointPreview = ( value ) => {\n\t\tconst { style } = refMedia.current;\n\t\tconst { x, y } = value;\n\t\tstyle.objectPosition = `${ x * 100 }% ${ y * 100 }%`;\n\t};\n\n\tconst [ temporaryMediaWidth, setTemporaryMediaWidth ] = useState( null );\n\n\tconst onSelectMedia = attributesFromMedia( { attributes, setAttributes } );\n\n\tconst onSetHref = ( props ) => {\n\t\tsetAttributes( props );\n\t};\n\n\tconst onWidthChange = ( width ) => {\n\t\tsetTemporaryMediaWidth( applyWidthConstraints( width ) );\n\t};\n\tconst commitWidthChange = ( width ) => {\n\t\tsetAttributes( {\n\t\t\tmediaWidth: applyWidthConstraints( width ),\n\t\t} );\n\t\tsetTemporaryMediaWidth( null );\n\t};\n\n\tconst classNames = clsx( {\n\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t'is-selected': isSelected,\n\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t\t'is-image-fill-element': imageFill,\n\t} );\n\tconst widthString = `${ temporaryMediaWidth || mediaWidth }%`;\n\tconst gridTemplateColumns =\n\t\t'right' === mediaPosition\n\t\t\t? `1fr ${ widthString }`\n\t\t\t: `${ widthString } 1fr`;\n\tconst style = {\n\t\tgridTemplateColumns,\n\t\tmsGridColumns: gridTemplateColumns,\n\t};\n\tconst onMediaAltChange = ( newMediaAlt ) => {\n\t\tsetAttributes( { mediaAlt: newMediaAlt } );\n\t};\n\tconst onVerticalAlignmentChange = ( alignment ) => {\n\t\tsetAttributes( { verticalAlignment: alignment } );\n\t};\n\tconst updateImage = ( newMediaSizeSlug ) => {\n\t\tconst newUrl = getImageSourceUrlBySizeSlug( image, newMediaSizeSlug );\n\n\t\tif ( ! newUrl ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmediaUrl: newUrl,\n\t\t\tmediaSizeSlug: newMediaSizeSlug,\n\t\t} );\n\t};\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tconst mediaTextGeneralSettings = (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Settings' ) }\n\t\t\tresetAll={ () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tisStackedOnMobile: true,\n\t\t\t\t\timageFill: false,\n\t\t\t\t\tmediaAlt: '',\n\t\t\t\t\tfocalPoint: undefined,\n\t\t\t\t\tmediaWidth: 50,\n\t\t\t\t} );\n\t\t\t\tupdateImage( DEFAULT_MEDIA_SIZE_SLUG );\n\t\t\t} }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<ToolsPanelItem\n\t\t\t\tlabel={ __( 'Media width' ) }\n\t\t\t\tisShownByDefault\n\t\t\t\thasValue={ () => mediaWidth !== 50 }\n\t\t\t\tonDeselect={ () => setAttributes( { mediaWidth: 50 } ) }\n\t\t\t>\n\t\t\t\t<RangeControl\n\t\t\t\t\tlabel={ __( 'Media width' ) }\n\t\t\t\t\tvalue={ temporaryMediaWidth || mediaWidth }\n\t\t\t\t\tonChange={ commitWidthChange }\n\t\t\t\t\tmin={ WIDTH_CONSTRAINT_PERCENTAGE }\n\t\t\t\t\tmax={ 100 - WIDTH_CONSTRAINT_PERCENTAGE }\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t<ToolsPanelItem\n\t\t\t\tlabel={ __( 'Stack on mobile' ) }\n\t\t\t\tisShownByDefault\n\t\t\t\thasValue={ () => ! isStackedOnMobile }\n\t\t\t\tonDeselect={ () =>\n\t\t\t\t\tsetAttributes( { isStackedOnMobile: true } )\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Stack on mobile' ) }\n\t\t\t\t\tchecked={ isStackedOnMobile }\n\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tisStackedOnMobile: ! isStackedOnMobile,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t{ mediaType === 'image' && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Crop image to fill' ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t\thasValue={ () => !! imageFill }\n\t\t\t\t\tonDeselect={ () => setAttributes( { imageFill: false } ) }\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Crop image to fill' ) }\n\t\t\t\t\t\tchecked={ !! imageFill }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\timageFill: ! imageFill,\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ imageFill &&\n\t\t\t\t( mediaUrl || featuredImageURL ) &&\n\t\t\t\tmediaType === 'image' && (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! focalPoint }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { focalPoint: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FocalPointPicker\n\t\t\t\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\t\t\t\turl={\n\t\t\t\t\t\t\t\tuseFeaturedImage && featuredImageURL\n\t\t\t\t\t\t\t\t\t? featuredImageURL\n\t\t\t\t\t\t\t\t\t: mediaUrl\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalue={ focalPoint }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { focalPoint: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonDragStart={ imperativeFocalPointPreview }\n\t\t\t\t\t\t\tonDrag={ imperativeFocalPointPreview }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t) }\n\t\t\t{ mediaType === 'image' && mediaUrl && ! useFeaturedImage && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t\thasValue={ () => !! mediaAlt }\n\t\t\t\t\tonDeselect={ () => setAttributes( { mediaAlt: '' } ) }\n\t\t\t\t>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\tvalue={ mediaAlt }\n\t\t\t\t\t\tonChange={ onMediaAltChange }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={\n\t\t\t\t\t\t\t\t\t\t// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'https://www.w3.org/WAI/tutorials/images/decision-tree/'\n\t\t\t\t\t\t\t\t\t\t)\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\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t{ __( 'Leave empty if decorative.' ) }\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</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ mediaType === 'image' && ! useFeaturedImage && (\n\t\t\t\t<MediaTextResolutionTool\n\t\t\t\t\timage={ image }\n\t\t\t\t\tvalue={ mediaSizeSlug }\n\t\t\t\t\tonChange={ updateImage }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolsPanel>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classNames,\n\t\tstyle,\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ className: 'wp-block-media-text__content' },\n\t\t{ template: TEMPLATE, allowedBlocks }\n\t);\n\n\tconst blockEditingMode = useBlockEditingMode();\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>{ mediaTextGeneralSettings }</InspectorControls>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockVerticalAlignmentControl\n\t\t\t\t\t\t\tonChange={ onVerticalAlignmentChange }\n\t\t\t\t\t\t\tvalue={ verticalAlignment }\n\t\t\t\t\t\t\tlabel={ __( 'Align media and text vertically' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ pullLeft }\n\t\t\t\t\t\t\ttitle={ __( 'Show media on left' ) }\n\t\t\t\t\t\t\tisActive={ mediaPosition === 'left' }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { mediaPosition: 'left' } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ pullRight }\n\t\t\t\t\t\t\ttitle={ __( 'Show media on right' ) }\n\t\t\t\t\t\t\tisActive={ mediaPosition === 'right' }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { mediaPosition: 'right' } )\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) }\n\n\t\t\t\t{ mediaType === 'image' && ! useFeaturedImage && (\n\t\t\t\t\t<ImageURLInputUI\n\t\t\t\t\t\turl={ href || '' }\n\t\t\t\t\t\tonChangeUrl={ onSetHref }\n\t\t\t\t\t\tlinkDestination={ linkDestination }\n\t\t\t\t\t\tmediaType={ mediaType }\n\t\t\t\t\t\tmediaUrl={ image && image.source_url }\n\t\t\t\t\t\tmediaLink={ image && image.link }\n\t\t\t\t\t\tlinkTarget={ linkTarget }\n\t\t\t\t\t\tlinkClass={ linkClass }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ mediaPosition === 'right' && <div { ...innerBlocksProps } /> }\n\t\t\t\t<MediaContainer\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\tonWidthChange={ onWidthChange }\n\t\t\t\t\tcommitWidthChange={ commitWidthChange }\n\t\t\t\t\trefMedia={ refMedia }\n\t\t\t\t\tenableResize={ blockEditingMode === 'default' }\n\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\t{ ...{\n\t\t\t\t\t\tfocalPoint,\n\t\t\t\t\t\timageFill,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisStackedOnMobile,\n\t\t\t\t\t\tmediaAlt,\n\t\t\t\t\t\tmediaId,\n\t\t\t\t\t\tmediaPosition,\n\t\t\t\t\t\tmediaType,\n\t\t\t\t\t\tmediaUrl,\n\t\t\t\t\t\tmediaWidth,\n\t\t\t\t\t\tuseFeaturedImage,\n\t\t\t\t\t\tfeaturedImageURL,\n\t\t\t\t\t\tfeaturedImageAlt,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ mediaPosition !== 'right' && <div { ...innerBlocksProps } /> }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default MediaTextEdit;\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorPrivateApis", "blockEditorStore", "coreStore", "style", "clsx", "ToolsPanel", "ToolsPanelItem", "ImageURLInputUI", "MediaContainer"]
7
7
  }
@@ -79,9 +79,9 @@ function MoreEdit({
79
79
  placeholder: DEFAULT_TEXT,
80
80
  onChange: (value) => setAttributes({ customText: value }),
81
81
  disableLineBreaks: true,
82
- __unstableOnSplitAtEnd: () => insertBlocksAfter(
82
+ __unstableOnSplitAtEnd: insertBlocksAfter ? () => insertBlocksAfter(
83
83
  (0, import_blocks.createBlock)((0, import_blocks.getDefaultBlockName)())
84
- )
84
+ ) : void 0
85
85
  }
86
86
  ) })
87
87
  ] });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/more/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tPlainText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { getDefaultBlockName, createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst DEFAULT_TEXT = __( 'Read more' );\n\nexport default function MoreEdit( {\n\tattributes: { customText, noTeaser },\n\tinsertBlocksAfter,\n\tsetAttributes,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tnoTeaser: false,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Hide excerpt' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => noTeaser }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { noTeaser: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t'Hide the excerpt on the full content page'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tchecked={ !! noTeaser }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { noTeaser: ! noTeaser } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={ ( checked ) =>\n\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t? __( 'The excerpt is hidden.' )\n\t\t\t\t\t\t\t\t\t: __( 'The excerpt is visible.' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t<PlainText\n\t\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\taria-label={ __( '\"Read more\" text' ) }\n\t\t\t\t\tvalue={ customText }\n\t\t\t\t\tplaceholder={ DEFAULT_TEXT }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { customText: value } )\n\t\t\t\t\t}\n\t\t\t\t\tdisableLineBreaks\n\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAIO;AACP,0BAIO;AACP,oBAAiD;AAKjD,mBAA+C;AAY7C;AAVF,IAAM,mBAAe,gBAAI,WAAY;AAEtB,SAAR,SAA2B;AAAA,EACjC,YAAY,EAAE,YAAY,SAAS;AAAA,EACnC;AAAA,EACA;AACD,GAAI;AACH,QAAM,wBAAoB,6CAA+B;AAEzD,SACC,4EACC;AAAA,gDAAC,yCACA;AAAA,MAAC,kBAAAA;AAAA,MAAA;AAAA,QACA,WAAQ,gBAAI,UAAW;AAAA,QACvB,UAAW,MAAM;AAChB,wBAAe;AAAA,YACd,UAAU;AAAA,UACX,CAAE;AAAA,QACH;AAAA,QACA;AAAA,QAEA;AAAA,UAAC,kBAAAC;AAAA,UAAA;AAAA,YACA,WAAQ,gBAAI,cAAe;AAAA,YAC3B,kBAAgB;AAAA,YAChB,UAAW,MAAM;AAAA,YACjB,YAAa,MACZ,cAAe,EAAE,UAAU,MAAM,CAAE;AAAA,YAGpC;AAAA,cAAC;AAAA;AAAA,gBACA,WAAQ;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,SAAU,CAAC,CAAE;AAAA,gBACb,UAAW,MACV,cAAe,EAAE,UAAU,CAAE,SAAS,CAAE;AAAA,gBAEzC,MAAO,CAAE,YACR,cACG,gBAAI,wBAAyB,QAC7B,gBAAI,yBAA0B;AAAA;AAAA,YAEnC;AAAA;AAAA,QACD;AAAA;AAAA,IACD,GACD;AAAA,IACA,4CAAC,SAAM,OAAG,mCAAc,GACvB;AAAA,MAAC;AAAA;AAAA,QACA,uBAAwB;AAAA,QACxB,SAAQ;AAAA,QACR,kBAAa,gBAAI,kBAAmB;AAAA,QACpC,OAAQ;AAAA,QACR,aAAc;AAAA,QACd,UAAW,CAAE,UACZ,cAAe,EAAE,YAAY,MAAM,CAAE;AAAA,QAEtC,mBAAiB;AAAA,QACjB,wBAAyB,MACxB;AAAA,cACC,+BAAa,mCAAoB,CAAE;AAAA,QACpC;AAAA;AAAA,IAEF,GACD;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tPlainText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { getDefaultBlockName, createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst DEFAULT_TEXT = __( 'Read more' );\n\nexport default function MoreEdit( {\n\tattributes: { customText, noTeaser },\n\tinsertBlocksAfter,\n\tsetAttributes,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tnoTeaser: false,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Hide excerpt' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => noTeaser }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { noTeaser: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t'Hide the excerpt on the full content page'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tchecked={ !! noTeaser }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { noTeaser: ! noTeaser } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={ ( checked ) =>\n\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t? __( 'The excerpt is hidden.' )\n\t\t\t\t\t\t\t\t\t: __( 'The excerpt is visible.' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t<PlainText\n\t\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\taria-label={ __( '\"Read more\" text' ) }\n\t\t\t\t\tvalue={ customText }\n\t\t\t\t\tplaceholder={ DEFAULT_TEXT }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { customText: value } )\n\t\t\t\t\t}\n\t\t\t\t\tdisableLineBreaks\n\t\t\t\t\t__unstableOnSplitAtEnd={\n\t\t\t\t\t\tinsertBlocksAfter\n\t\t\t\t\t\t\t? () =>\n\t\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAIO;AACP,0BAIO;AACP,oBAAiD;AAKjD,mBAA+C;AAY7C;AAVF,IAAM,mBAAe,gBAAI,WAAY;AAEtB,SAAR,SAA2B;AAAA,EACjC,YAAY,EAAE,YAAY,SAAS;AAAA,EACnC;AAAA,EACA;AACD,GAAI;AACH,QAAM,wBAAoB,6CAA+B;AAEzD,SACC,4EACC;AAAA,gDAAC,yCACA;AAAA,MAAC,kBAAAA;AAAA,MAAA;AAAA,QACA,WAAQ,gBAAI,UAAW;AAAA,QACvB,UAAW,MAAM;AAChB,wBAAe;AAAA,YACd,UAAU;AAAA,UACX,CAAE;AAAA,QACH;AAAA,QACA;AAAA,QAEA;AAAA,UAAC,kBAAAC;AAAA,UAAA;AAAA,YACA,WAAQ,gBAAI,cAAe;AAAA,YAC3B,kBAAgB;AAAA,YAChB,UAAW,MAAM;AAAA,YACjB,YAAa,MACZ,cAAe,EAAE,UAAU,MAAM,CAAE;AAAA,YAGpC;AAAA,cAAC;AAAA;AAAA,gBACA,WAAQ;AAAA,kBACP;AAAA,gBACD;AAAA,gBACA,SAAU,CAAC,CAAE;AAAA,gBACb,UAAW,MACV,cAAe,EAAE,UAAU,CAAE,SAAS,CAAE;AAAA,gBAEzC,MAAO,CAAE,YACR,cACG,gBAAI,wBAAyB,QAC7B,gBAAI,yBAA0B;AAAA;AAAA,YAEnC;AAAA;AAAA,QACD;AAAA;AAAA,IACD,GACD;AAAA,IACA,4CAAC,SAAM,OAAG,mCAAc,GACvB;AAAA,MAAC;AAAA;AAAA,QACA,uBAAwB;AAAA,QACxB,SAAQ;AAAA,QACR,kBAAa,gBAAI,kBAAmB;AAAA,QACpC,OAAQ;AAAA,QACR,aAAc;AAAA,QACd,UAAW,CAAE,UACZ,cAAe,EAAE,YAAY,MAAM,CAAE;AAAA,QAEtC,mBAAiB;AAAA,QACjB,wBACC,oBACG,MACA;AAAA,cACC,+BAAa,mCAAoB,CAAE;AAAA,QACpC,IACA;AAAA;AAAA,IAEL,GACD;AAAA,KACD;AAEF;",
6
6
  "names": ["ToolsPanel", "ToolsPanelItem"]
7
7
  }
@@ -66,6 +66,7 @@ var import_accessible_menu_description = __toESM(require("./accessible-menu-desc
66
66
  var import_lock_unlock = require("../../lock-unlock.cjs");
67
67
  var import_hooks = require("../../utils/hooks.cjs");
68
68
  var import_is_within_overlay = require("../../utils/is-within-overlay.cjs");
69
+ var import_use_layout_custom_properties = __toESM(require("./use-layout-custom-properties.cjs"));
69
70
  var import_constants = require("../constants.cjs");
70
71
  var import_jsx_runtime = require("react/jsx-runtime");
71
72
  var { isNavigationPostEditorKey } = (0, import_lock_unlock.unlock)(import_block_editor.privateApis);
@@ -233,6 +234,11 @@ function Navigation({
233
234
  icon = "handle"
234
235
  } = attributes;
235
236
  const ref = attributes.ref;
237
+ (0, import_use_layout_custom_properties.default)({
238
+ clientId,
239
+ layout: attributes.layout,
240
+ style: attributes.style
241
+ });
236
242
  const setRef = (0, import_element.useCallback)(
237
243
  (postId) => {
238
244
  setAttributes({ ref: postId });
@@ -245,21 +251,29 @@ function Navigation({
245
251
  isPreviewMode,
246
252
  onNavigateToEntityRecord,
247
253
  currentTheme,
248
- editorDisabledResponsive
249
- } = (0, import_data.useSelect)((select) => {
250
- const { getSettings } = select(import_block_editor.store);
251
- const settings = getSettings();
252
- return {
253
- isPreviewMode: settings.isPreviewMode,
254
- onNavigateToEntityRecord: settings?.onNavigateToEntityRecord,
255
- // Needed to construct the template part ID for the overlay preview.
256
- currentTheme: select(import_core_data.store).getCurrentTheme()?.stylesheet,
257
- // When editing a navigation post directly in an isolated editor,
258
- // always show navigation expanded (no hamburger) so users can see
259
- // and interact with all menu items.
260
- editorDisabledResponsive: !!settings?.[isNavigationPostEditorKey]
261
- };
262
- }, []);
254
+ editorDisabledResponsive,
255
+ hasSelectedStyleState
256
+ } = (0, import_data.useSelect)(
257
+ (select) => {
258
+ const {
259
+ getSettings,
260
+ hasSelectedStyleState: hasSelectedBlockStyleState
261
+ } = (0, import_lock_unlock.unlock)(select(import_block_editor.store));
262
+ const settings = getSettings();
263
+ return {
264
+ isPreviewMode: settings.isPreviewMode,
265
+ onNavigateToEntityRecord: settings?.onNavigateToEntityRecord,
266
+ // Needed to construct the template part ID for the overlay preview.
267
+ currentTheme: select(import_core_data.store).getCurrentTheme()?.stylesheet,
268
+ // When editing a navigation post directly in an isolated editor,
269
+ // always show navigation expanded (no hamburger) so users can see
270
+ // and interact with all menu items.
271
+ editorDisabledResponsive: !!settings?.[isNavigationPostEditorKey],
272
+ hasSelectedStyleState: hasSelectedBlockStyleState(clientId)
273
+ };
274
+ },
275
+ [clientId]
276
+ );
263
277
  const hasAlreadyRendered = isPreviewMode ? false : recursionDetected;
264
278
  const blockEditingMode = (0, import_block_editor.useBlockEditingMode)();
265
279
  const { records: classicMenus } = (0, import_core_data.useEntityRecords)("root", "menu", {
@@ -710,7 +724,7 @@ function Navigation({
710
724
  hasOverlays
711
725
  }
712
726
  ) }),
713
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.InspectorControls, { group: "color", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
727
+ !hasSelectedStyleState && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.InspectorControls, { group: "color", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
714
728
  ColorTools,
715
729
  {
716
730
  textColor,