@wordpress/block-editor 14.9.0 → 14.10.1

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 (370) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +40 -0
  4. package/build/components/audio-player/index.native.js +1 -1
  5. package/build/components/audio-player/index.native.js.map +1 -1
  6. package/build/components/background-image-control/index.js +4 -0
  7. package/build/components/background-image-control/index.js.map +1 -1
  8. package/build/components/block-alignment-matrix-control/index.js +32 -0
  9. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  10. package/build/components/block-card/index.js +45 -8
  11. package/build/components/block-card/index.js.map +1 -1
  12. package/build/components/block-edit/edit.js +147 -10
  13. package/build/components/block-edit/edit.js.map +1 -1
  14. package/build/components/block-list/index.js +1 -2
  15. package/build/components/block-list/index.js.map +1 -1
  16. package/build/components/block-list/use-block-props/index.js +2 -2
  17. package/build/components/block-list/use-block-props/index.js.map +1 -1
  18. package/build/components/block-list/zoom-out-separator.js +20 -3
  19. package/build/components/block-list/zoom-out-separator.js.map +1 -1
  20. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -8
  21. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  22. package/build/components/block-styles/utils.js +3 -3
  23. package/build/components/block-styles/utils.js.map +1 -1
  24. package/build/components/block-tools/zoom-out-mode-inserters.js +19 -6
  25. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  26. package/build/components/button-block-appender/index.js +1 -5
  27. package/build/components/button-block-appender/index.js.map +1 -1
  28. package/build/components/child-layout-control/index.js +6 -0
  29. package/build/components/child-layout-control/index.js.map +1 -1
  30. package/build/components/colors-gradients/dropdown.js +51 -11
  31. package/build/components/colors-gradients/dropdown.js.map +1 -1
  32. package/build/components/contrast-checker/index.native.js +1 -1
  33. package/build/components/contrast-checker/index.native.js.map +1 -1
  34. package/build/components/date-format-picker/index.js +7 -16
  35. package/build/components/date-format-picker/index.js.map +1 -1
  36. package/build/components/font-appearance-control/index.js +9 -0
  37. package/build/components/font-appearance-control/index.js.map +1 -1
  38. package/build/components/font-family/index.js +10 -1
  39. package/build/components/font-family/index.js.map +1 -1
  40. package/build/components/global-styles/color-panel.js +3 -0
  41. package/build/components/global-styles/color-panel.js.map +1 -1
  42. package/build/components/global-styles/typography-utils.js +1 -1
  43. package/build/components/global-styles/typography-utils.js.map +1 -1
  44. package/build/components/global-styles/use-global-styles-output.js +2 -2
  45. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  46. package/build/components/grid/grid-visualizer.js +9 -0
  47. package/build/components/grid/grid-visualizer.js.map +1 -1
  48. package/build/components/grid/utils.js +12 -1
  49. package/build/components/grid/utils.js.map +1 -1
  50. package/build/components/iframe/index.js +1 -1
  51. package/build/components/iframe/index.js.map +1 -1
  52. package/build/components/inner-blocks/use-inner-block-template-sync.js +11 -11
  53. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  54. package/build/components/inserter/block-patterns-explorer/index.js +1 -1
  55. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
  56. package/build/components/inserter/block-patterns-tab/index.js +1 -1
  57. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  58. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
  59. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  60. package/build/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
  61. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  62. package/build/components/inserter/category-tabs/index.js +1 -2
  63. package/build/components/inserter/category-tabs/index.js.map +1 -1
  64. package/build/components/inserter/index.js +6 -15
  65. package/build/components/inserter/index.js.map +1 -1
  66. package/build/components/inserter/quick-inserter.js +2 -13
  67. package/build/components/inserter/quick-inserter.js.map +1 -1
  68. package/build/components/keyboard-shortcuts/index.js +2 -2
  69. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  70. package/build/components/line-height-control/index.js +9 -0
  71. package/build/components/line-height-control/index.js.map +1 -1
  72. package/build/components/media-placeholder/index.js +2 -2
  73. package/build/components/media-placeholder/index.js.map +1 -1
  74. package/build/components/media-replace-flow/index.js +26 -26
  75. package/build/components/media-replace-flow/index.js.map +1 -1
  76. package/build/components/plain-text/index.js +34 -0
  77. package/build/components/plain-text/index.js.map +1 -1
  78. package/build/components/provider/index.js +61 -5
  79. package/build/components/provider/index.js.map +1 -1
  80. package/build/components/provider/use-media-upload-settings.js +28 -0
  81. package/build/components/provider/use-media-upload-settings.js.map +1 -0
  82. package/build/components/resolution-tool/index.js +3 -1
  83. package/build/components/resolution-tool/index.js.map +1 -1
  84. package/build/components/responsive-block-control/index.js +1 -1
  85. package/build/components/responsive-block-control/index.js.map +1 -1
  86. package/build/components/rich-text/event-listeners/delete.js +7 -1
  87. package/build/components/rich-text/event-listeners/delete.js.map +1 -1
  88. package/build/components/rich-text/index.js +2 -2
  89. package/build/components/rich-text/index.js.map +1 -1
  90. package/build/components/use-block-drop-zone/index.js +2 -1
  91. package/build/components/use-block-drop-zone/index.js.map +1 -1
  92. package/build/hooks/background.js +2 -0
  93. package/build/hooks/background.js.map +1 -1
  94. package/build/hooks/block-bindings.js +15 -14
  95. package/build/hooks/block-bindings.js.map +1 -1
  96. package/build/hooks/border.js +3 -3
  97. package/build/hooks/border.js.map +1 -1
  98. package/build/hooks/color.js +1 -1
  99. package/build/hooks/color.js.map +1 -1
  100. package/build/hooks/dimensions.js +2 -2
  101. package/build/hooks/dimensions.js.map +1 -1
  102. package/build/hooks/font-family.js +1 -1
  103. package/build/hooks/font-family.js.map +1 -1
  104. package/build/hooks/gap.js +2 -2
  105. package/build/hooks/gap.js.map +1 -1
  106. package/build/hooks/index.js +0 -1
  107. package/build/hooks/index.js.map +1 -1
  108. package/build/hooks/index.native.js +7 -0
  109. package/build/hooks/index.native.js.map +1 -1
  110. package/build/hooks/style.js +7 -7
  111. package/build/hooks/style.js.map +1 -1
  112. package/build/hooks/supports.js +7 -7
  113. package/build/hooks/supports.js.map +1 -1
  114. package/build/hooks/typography.js +6 -6
  115. package/build/hooks/typography.js.map +1 -1
  116. package/build/hooks/use-zoom-out.js +12 -1
  117. package/build/hooks/use-zoom-out.js.map +1 -1
  118. package/build/hooks/utils.js +1 -1
  119. package/build/hooks/utils.js.map +1 -1
  120. package/build/store/private-actions.js +1 -1
  121. package/build/store/private-actions.js.map +1 -1
  122. package/build/store/private-selectors.js +11 -1
  123. package/build/store/private-selectors.js.map +1 -1
  124. package/build/store/reducer.js +93 -12
  125. package/build/store/reducer.js.map +1 -1
  126. package/build/store/selectors.js +6 -8
  127. package/build/store/selectors.js.map +1 -1
  128. package/build/utils/block-bindings.js +95 -0
  129. package/build/utils/block-bindings.js.map +1 -1
  130. package/build-module/components/audio-player/index.native.js +2 -2
  131. package/build-module/components/audio-player/index.native.js.map +1 -1
  132. package/build-module/components/background-image-control/index.js +5 -1
  133. package/build-module/components/background-image-control/index.js.map +1 -1
  134. package/build-module/components/block-alignment-matrix-control/index.js +32 -0
  135. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  136. package/build-module/components/block-card/index.js +45 -8
  137. package/build-module/components/block-card/index.js.map +1 -1
  138. package/build-module/components/block-edit/edit.js +148 -11
  139. package/build-module/components/block-edit/edit.js.map +1 -1
  140. package/build-module/components/block-list/index.js +2 -3
  141. package/build-module/components/block-list/index.js.map +1 -1
  142. package/build-module/components/block-list/use-block-props/index.js +1 -1
  143. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  144. package/build-module/components/block-list/zoom-out-separator.js +20 -3
  145. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  146. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -8
  147. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  148. package/build-module/components/block-styles/utils.js +3 -3
  149. package/build-module/components/block-styles/utils.js.map +1 -1
  150. package/build-module/components/block-tools/zoom-out-mode-inserters.js +19 -6
  151. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  152. package/build-module/components/button-block-appender/index.js +2 -6
  153. package/build-module/components/button-block-appender/index.js.map +1 -1
  154. package/build-module/components/child-layout-control/index.js +7 -1
  155. package/build-module/components/child-layout-control/index.js.map +1 -1
  156. package/build-module/components/colors-gradients/dropdown.js +51 -11
  157. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  158. package/build-module/components/contrast-checker/index.native.js +2 -2
  159. package/build-module/components/contrast-checker/index.native.js.map +1 -1
  160. package/build-module/components/date-format-picker/index.js +7 -16
  161. package/build-module/components/date-format-picker/index.js.map +1 -1
  162. package/build-module/components/font-appearance-control/index.js +8 -0
  163. package/build-module/components/font-appearance-control/index.js.map +1 -1
  164. package/build-module/components/font-family/index.js +10 -1
  165. package/build-module/components/font-family/index.js.map +1 -1
  166. package/build-module/components/global-styles/color-panel.js +3 -0
  167. package/build-module/components/global-styles/color-panel.js.map +1 -1
  168. package/build-module/components/global-styles/typography-utils.js +1 -1
  169. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  170. package/build-module/components/global-styles/use-global-styles-output.js +2 -2
  171. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  172. package/build-module/components/grid/grid-visualizer.js +9 -0
  173. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  174. package/build-module/components/grid/utils.js +12 -1
  175. package/build-module/components/grid/utils.js.map +1 -1
  176. package/build-module/components/iframe/index.js +1 -1
  177. package/build-module/components/iframe/index.js.map +1 -1
  178. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +12 -12
  179. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  180. package/build-module/components/inserter/block-patterns-explorer/index.js +1 -1
  181. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
  182. package/build-module/components/inserter/block-patterns-tab/index.js +1 -1
  183. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  184. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
  185. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  186. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
  187. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  188. package/build-module/components/inserter/category-tabs/index.js +1 -2
  189. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  190. package/build-module/components/inserter/index.js +6 -15
  191. package/build-module/components/inserter/index.js.map +1 -1
  192. package/build-module/components/inserter/quick-inserter.js +2 -13
  193. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  194. package/build-module/components/keyboard-shortcuts/index.js +2 -2
  195. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  196. package/build-module/components/line-height-control/index.js +8 -0
  197. package/build-module/components/line-height-control/index.js.map +1 -1
  198. package/build-module/components/media-placeholder/index.js +3 -3
  199. package/build-module/components/media-placeholder/index.js.map +1 -1
  200. package/build-module/components/media-replace-flow/index.js +28 -28
  201. package/build-module/components/media-replace-flow/index.js.map +1 -1
  202. package/build-module/components/plain-text/index.js +34 -0
  203. package/build-module/components/plain-text/index.js.map +1 -1
  204. package/build-module/components/provider/index.js +62 -5
  205. package/build-module/components/provider/index.js.map +1 -1
  206. package/build-module/components/provider/use-media-upload-settings.js +22 -0
  207. package/build-module/components/provider/use-media-upload-settings.js.map +1 -0
  208. package/build-module/components/resolution-tool/index.js +3 -1
  209. package/build-module/components/resolution-tool/index.js.map +1 -1
  210. package/build-module/components/responsive-block-control/index.js +1 -1
  211. package/build-module/components/responsive-block-control/index.js.map +1 -1
  212. package/build-module/components/rich-text/event-listeners/delete.js +7 -1
  213. package/build-module/components/rich-text/event-listeners/delete.js.map +1 -1
  214. package/build-module/components/rich-text/index.js +1 -1
  215. package/build-module/components/rich-text/index.js.map +1 -1
  216. package/build-module/components/use-block-drop-zone/index.js +2 -1
  217. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  218. package/build-module/hooks/background.js +2 -0
  219. package/build-module/hooks/background.js.map +1 -1
  220. package/build-module/hooks/block-bindings.js +13 -12
  221. package/build-module/hooks/block-bindings.js.map +1 -1
  222. package/build-module/hooks/border.js +3 -3
  223. package/build-module/hooks/border.js.map +1 -1
  224. package/build-module/hooks/color.js +1 -1
  225. package/build-module/hooks/color.js.map +1 -1
  226. package/build-module/hooks/dimensions.js +2 -2
  227. package/build-module/hooks/dimensions.js.map +1 -1
  228. package/build-module/hooks/font-family.js +1 -1
  229. package/build-module/hooks/font-family.js.map +1 -1
  230. package/build-module/hooks/gap.js +2 -2
  231. package/build-module/hooks/gap.js.map +1 -1
  232. package/build-module/hooks/index.js +0 -1
  233. package/build-module/hooks/index.js.map +1 -1
  234. package/build-module/hooks/index.native.js +1 -0
  235. package/build-module/hooks/index.native.js.map +1 -1
  236. package/build-module/hooks/style.js +7 -7
  237. package/build-module/hooks/style.js.map +1 -1
  238. package/build-module/hooks/supports.js +7 -7
  239. package/build-module/hooks/supports.js.map +1 -1
  240. package/build-module/hooks/typography.js +6 -6
  241. package/build-module/hooks/typography.js.map +1 -1
  242. package/build-module/hooks/use-zoom-out.js +12 -2
  243. package/build-module/hooks/use-zoom-out.js.map +1 -1
  244. package/build-module/hooks/utils.js +1 -1
  245. package/build-module/hooks/utils.js.map +1 -1
  246. package/build-module/store/private-actions.js +1 -1
  247. package/build-module/store/private-actions.js.map +1 -1
  248. package/build-module/store/private-selectors.js +11 -1
  249. package/build-module/store/private-selectors.js.map +1 -1
  250. package/build-module/store/reducer.js +93 -12
  251. package/build-module/store/reducer.js.map +1 -1
  252. package/build-module/store/selectors.js +6 -8
  253. package/build-module/store/selectors.js.map +1 -1
  254. package/build-module/utils/block-bindings.js +90 -0
  255. package/build-module/utils/block-bindings.js.map +1 -1
  256. package/build-style/style-rtl.css +27 -9
  257. package/build-style/style.css +27 -9
  258. package/package.json +33 -33
  259. package/src/components/audio-player/index.native.js +2 -2
  260. package/src/components/background-image-control/index.js +4 -0
  261. package/src/components/background-image-control/style.scss +4 -2
  262. package/src/components/block-alignment-matrix-control/README.md +29 -6
  263. package/src/components/block-alignment-matrix-control/index.js +31 -0
  264. package/src/components/block-alignment-matrix-control/stories/index.story.js +78 -0
  265. package/src/components/block-card/README.md +7 -0
  266. package/src/components/block-card/index.js +41 -12
  267. package/src/components/block-card/stories/index.story.js +79 -0
  268. package/src/components/block-card/style.scss +9 -1
  269. package/src/components/block-edit/edit.js +218 -11
  270. package/src/components/block-list/index.js +2 -7
  271. package/src/components/block-list/use-block-props/index.js +1 -1
  272. package/src/components/block-list/zoom-out-separator.js +30 -0
  273. package/src/components/block-settings-menu/block-settings-dropdown.js +17 -20
  274. package/src/components/block-styles/utils.js +3 -3
  275. package/src/components/block-title/stories/index.story.js +76 -0
  276. package/src/components/block-tools/style.scss +1 -0
  277. package/src/components/block-tools/zoom-out-mode-inserters.js +21 -3
  278. package/src/components/border-radius-control/README.md +59 -0
  279. package/src/components/border-radius-control/stories/index.story.js +58 -0
  280. package/src/components/button-block-appender/index.js +2 -7
  281. package/src/components/child-layout-control/index.js +14 -0
  282. package/src/components/colors-gradients/dropdown.js +57 -8
  283. package/src/components/colors-gradients/style.scss +5 -0
  284. package/src/components/contrast-checker/index.native.js +2 -2
  285. package/src/components/contrast-checker/stories/index.story.js +117 -0
  286. package/src/components/date-format-picker/README.md +6 -13
  287. package/src/components/date-format-picker/index.js +10 -17
  288. package/src/components/date-format-picker/stories/index.story.js +69 -0
  289. package/src/components/date-format-picker/style.scss +3 -1
  290. package/src/components/default-block-appender/content.scss +1 -0
  291. package/src/components/dimensions-tool/stories/aspect-ratio-tool.story.js +2 -1
  292. package/src/components/dimensions-tool/stories/index.story.js +2 -1
  293. package/src/components/dimensions-tool/stories/scale-tool.story.js +2 -1
  294. package/src/components/dimensions-tool/stories/width-height-tool.story.js +2 -1
  295. package/src/components/font-appearance-control/index.js +15 -0
  296. package/src/components/font-family/README.md +1 -0
  297. package/src/components/font-family/index.js +17 -1
  298. package/src/components/font-family/stories/index.story.js +1 -0
  299. package/src/components/global-styles/color-panel.js +3 -0
  300. package/src/components/global-styles/test/use-global-styles-output.js +1 -1
  301. package/src/components/global-styles/typography-utils.js +1 -1
  302. package/src/components/global-styles/use-global-styles-output.js +2 -2
  303. package/src/components/grid/grid-visualizer.js +11 -0
  304. package/src/components/grid/utils.js +19 -1
  305. package/src/components/iframe/index.js +1 -1
  306. package/src/components/inner-blocks/use-inner-block-template-sync.js +17 -10
  307. package/src/components/inserter/block-patterns-explorer/index.js +2 -3
  308. package/src/components/inserter/block-patterns-tab/index.js +3 -1
  309. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
  310. package/src/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
  311. package/src/components/inserter/category-tabs/index.js +3 -2
  312. package/src/components/inserter/index.js +1 -13
  313. package/src/components/inserter/quick-inserter.js +2 -25
  314. package/src/components/keyboard-shortcuts/index.js +2 -2
  315. package/src/components/line-height-control/README.md +1 -0
  316. package/src/components/line-height-control/index.js +12 -0
  317. package/src/components/line-height-control/stories/index.story.js +1 -0
  318. package/src/components/line-height-control/test/index.js +7 -1
  319. package/src/components/list-view/style.scss +10 -5
  320. package/src/components/media-placeholder/index.js +3 -3
  321. package/src/components/media-replace-flow/README.md +7 -0
  322. package/src/components/media-replace-flow/index.js +28 -36
  323. package/src/components/media-replace-flow/style.scss +6 -6
  324. package/src/components/plain-text/README.md +2 -2
  325. package/src/components/plain-text/index.js +34 -0
  326. package/src/components/plain-text/stories/index.story.js +75 -0
  327. package/src/components/provider/index.js +81 -4
  328. package/src/components/provider/use-media-upload-settings.js +25 -0
  329. package/src/components/resolution-tool/index.js +2 -0
  330. package/src/components/resolution-tool/stories/index.story.js +36 -8
  331. package/src/components/responsive-block-control/index.js +1 -1
  332. package/src/components/rich-text/event-listeners/delete.js +6 -1
  333. package/src/components/rich-text/index.js +1 -1
  334. package/src/components/text-alignment-control/README.md +49 -0
  335. package/src/components/text-alignment-control/stories/index.story.js +56 -18
  336. package/src/components/text-decoration-control/README.md +0 -1
  337. package/src/components/text-decoration-control/stories/index.story.js +51 -16
  338. package/src/components/text-transform-control/README.md +3 -4
  339. package/src/components/text-transform-control/stories/index.story.js +53 -16
  340. package/src/components/use-block-drop-zone/index.js +8 -1
  341. package/src/components/warning/stories/index.story.js +86 -0
  342. package/src/hooks/background.js +6 -0
  343. package/src/hooks/block-bindings.js +17 -18
  344. package/src/hooks/border.js +9 -3
  345. package/src/hooks/color.js +1 -1
  346. package/src/hooks/dimensions.js +2 -2
  347. package/src/hooks/font-family.js +1 -1
  348. package/src/hooks/gap.js +2 -2
  349. package/src/hooks/index.js +0 -1
  350. package/src/hooks/index.native.js +1 -0
  351. package/src/hooks/style.js +13 -7
  352. package/src/hooks/supports.js +7 -7
  353. package/src/hooks/test/style.js +2 -1
  354. package/src/hooks/typography.js +6 -6
  355. package/src/hooks/use-zoom-out.js +10 -2
  356. package/src/hooks/utils.js +1 -1
  357. package/src/store/private-actions.js +1 -0
  358. package/src/store/private-selectors.js +15 -5
  359. package/src/store/reducer.js +112 -19
  360. package/src/store/selectors.js +6 -8
  361. package/src/store/test/private-selectors.js +53 -9
  362. package/src/store/test/reducer.js +172 -166
  363. package/src/store/test/selectors.js +23 -0
  364. package/src/utils/block-bindings.js +95 -0
  365. package/tsconfig.json +2 -5
  366. package/build/hooks/use-bindings-attributes.js +0 -262
  367. package/build/hooks/use-bindings-attributes.js.map +0 -1
  368. package/build-module/hooks/use-bindings-attributes.js +0 -253
  369. package/build-module/hooks/use-bindings-attributes.js.map +0 -1
  370. package/src/hooks/use-bindings-attributes.js +0 -322
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 14.10.0 (2025-01-02)
6
+
5
7
  ## 14.9.0 (2024-12-11)
6
8
 
7
9
  ## 14.8.0 (2024-11-27)
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Gutenberg
2
2
 
3
- Copyright 2016-2024 by the contributors
3
+ Copyright 2016-2025 by the contributors
4
4
 
5
5
  **License for Contributions (on and after April 15, 2021)**
6
6
 
package/README.md CHANGED
@@ -713,10 +713,50 @@ Undocumented declaration.
713
713
 
714
714
  ### PlainText
715
715
 
716
+ Render an auto-growing textarea allow users to fill any textual content.
717
+
716
718
  _Related_
717
719
 
718
720
  - <https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/plain-text/README.md>
719
721
 
722
+ _Usage_
723
+
724
+ ```jsx
725
+ import { registerBlockType } from '@wordpress/blocks';
726
+ import { PlainText } from '@wordpress/block-editor';
727
+
728
+ registerBlockType( 'my-plugin/example-block', {
729
+ // ...
730
+
731
+ attributes: {
732
+ content: {
733
+ type: 'string',
734
+ },
735
+ },
736
+
737
+ edit( { className, attributes, setAttributes } ) {
738
+ return (
739
+ <PlainText
740
+ className={ className }
741
+ value={ attributes.content }
742
+ onChange={ ( content ) => setAttributes( { content } ) }
743
+ />
744
+ );
745
+ },
746
+ } );
747
+ ```
748
+
749
+ _Parameters_
750
+
751
+ - _props_ `Object`: Component props.
752
+ - _props.value_ `string`: String value of the textarea.
753
+ - _props.onChange_ `Function`: Function called when the text value changes.
754
+ - _props.ref_ `[Object]`: The component forwards the `ref` property to the `TextareaAutosize` component.
755
+
756
+ _Returns_
757
+
758
+ - `Element`: Plain text component
759
+
720
760
  ### privateApis
721
761
 
722
762
  Private @wordpress/block-editor APIs.
@@ -127,7 +127,7 @@ function Player({
127
127
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_primitives.View, {
128
128
  style: _styles.default.subtitleContainer,
129
129
  children: [isUploadFailed && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
130
- icon: _icons.warning,
130
+ icon: _icons.cautionFilled,
131
131
  style: {
132
132
  ..._styles.default.errorIcon,
133
133
  ...uploadFailedStyle
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeVideo","_interopRequireDefault","_primitives","_components","_compose","_i18n","_icons","_reactNativeBridge","_url","_element","_styles","_audioUrlParser","_useGlobalStylesContext","_jsxRuntime","isIOS","Platform","OS","Player","isUploadInProgress","isUploadFailed","attributes","isSelected","id","src","paused","setPaused","useState","onPressListen","player","presentFullscreenPlayer","Linking","canOpenURL","then","supported","Alert","alert","__","openURL","catch","containerStyle","useEditorColorScheme","styles","container","containerDark","iconStyle","icon","iconDark","iconDisabledStyle","iconDisabled","iconDisabledDark","isDisabled","finalIconStyle","iconContainerStyle","iconContainer","iconContainerDark","titleContainerStyle","titleContainer","titleContainerIOS","titleContainerAndroid","titleStyle","title","titleDark","uploadFailedStyle","uploadFailed","uploadFailedDark","subtitleStyle","subtitle","subtitleDark","finalSubtitleStyle","buttonBackgroundStyle","buttonBackground","buttonBackgroundDark","extension","result","parseAudioUrl","getSubtitleValue","onAudioUploadCancelDialog","requestImageUploadCancelDialog","getProtocol","requestImageFailedRetryDialog","jsx","TouchableWithoutFeedback","accessible","disabled","onPress","children","jsxs","View","style","Icon","audio","size","Text","subtitleContainer","warning","errorIcon","accessibilityLabel","accessibilityRole","accessibilityHint","buttonText","default","source","uri","ref","controls","ignoreSilentSwitch","onFullscreenPlayerWillPresent","onFullscreenPlayerDidDismiss","_default","exports","withPreferredColorScheme"],"sources":["@wordpress/block-editor/src/components/audio-player/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tText,\n\tTouchableWithoutFeedback,\n\tLinking,\n\tAlert,\n\tPlatform,\n} from 'react-native';\nimport { default as VideoPlayer } from 'react-native-video';\n\n/**\n * WordPress dependencies\n */\nimport { View } from '@wordpress/primitives';\nimport { Icon } from '@wordpress/components';\nimport { withPreferredColorScheme } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { audio, warning } from '@wordpress/icons';\nimport {\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport { getProtocol } from '@wordpress/url';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\nimport { parseAudioUrl } from './audio-url-parser.native';\nimport { useEditorColorScheme } from '../global-styles/use-global-styles-context';\n\nconst isIOS = Platform.OS === 'ios';\n\nfunction Player( {\n\tisUploadInProgress,\n\tisUploadFailed,\n\tattributes,\n\tisSelected,\n} ) {\n\tconst { id, src } = attributes;\n\tconst [ paused, setPaused ] = useState( true );\n\n\tconst onPressListen = () => {\n\t\tif ( src ) {\n\t\t\tif ( isIOS && this.player ) {\n\t\t\t\tthis.player.presentFullscreenPlayer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tLinking.canOpenURL( src )\n\t\t\t\t.then( ( supported ) => {\n\t\t\t\t\tif ( ! supported ) {\n\t\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t\t__( 'No application can handle this request.' )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Linking.openURL( src );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t__( 'An unknown error occurred. Please try again.' )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t}\n\t};\n\n\tconst containerStyle = useEditorColorScheme(\n\t\tstyles.container,\n\t\tstyles.containerDark\n\t);\n\n\tconst iconStyle = useEditorColorScheme( styles.icon, styles.iconDark );\n\n\tconst iconDisabledStyle = useEditorColorScheme(\n\t\tstyles.iconDisabled,\n\t\tstyles.iconDisabledDark\n\t);\n\n\tconst isDisabled = isUploadFailed || isUploadInProgress;\n\n\tconst finalIconStyle = {\n\t\t...iconStyle,\n\t\t...( isDisabled && iconDisabledStyle ),\n\t};\n\n\tconst iconContainerStyle = useEditorColorScheme(\n\t\tstyles.iconContainer,\n\t\tstyles.iconContainerDark\n\t);\n\n\tconst titleContainerStyle = {\n\t\t...styles.titleContainer,\n\t\t...( isIOS ? styles.titleContainerIOS : styles.titleContainerAndroid ),\n\t};\n\n\tconst titleStyle = useEditorColorScheme( styles.title, styles.titleDark );\n\n\tconst uploadFailedStyle = useEditorColorScheme(\n\t\tstyles.uploadFailed,\n\t\tstyles.uploadFailedDark\n\t);\n\n\tconst subtitleStyle = useEditorColorScheme(\n\t\tstyles.subtitle,\n\t\tstyles.subtitleDark\n\t);\n\n\tconst finalSubtitleStyle = {\n\t\t...subtitleStyle,\n\t\t...( isUploadFailed && uploadFailedStyle ),\n\t};\n\n\tconst buttonBackgroundStyle = useEditorColorScheme(\n\t\tstyles.buttonBackground,\n\t\tstyles.buttonBackgroundDark\n\t);\n\n\tlet title = '';\n\tlet extension = '';\n\n\tif ( src ) {\n\t\tconst result = parseAudioUrl( src );\n\t\textension = result.extension;\n\t\ttitle = result.title;\n\t}\n\n\tconst getSubtitleValue = () => {\n\t\tif ( isUploadInProgress ) {\n\t\t\treturn __( 'Uploading…' );\n\t\t}\n\t\tif ( isUploadFailed ) {\n\t\t\treturn __( 'Failed to insert audio file. Please tap for options.' );\n\t\t}\n\t\treturn (\n\t\t\textension +\n\t\t\t// translators: displays audio file extension. e.g. MP3 audio file\n\t\t\t__( 'audio file' )\n\t\t);\n\t};\n\n\tfunction onAudioUploadCancelDialog() {\n\t\tif ( isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( id );\n\t\t} else if ( id && getProtocol( src ) === 'file:' ) {\n\t\t\trequestImageFailedRetryDialog( id );\n\t\t}\n\t}\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\taccessible={ ! isSelected }\n\t\t\tdisabled={ ! isSelected }\n\t\t\tonPress={ onAudioUploadCancelDialog }\n\t\t>\n\t\t\t<View style={ containerStyle }>\n\t\t\t\t<View style={ iconContainerStyle }>\n\t\t\t\t\t<Icon icon={ audio } style={ finalIconStyle } size={ 24 } />\n\t\t\t\t</View>\n\t\t\t\t<View style={ titleContainerStyle }>\n\t\t\t\t\t<Text style={ titleStyle }>{ title }</Text>\n\t\t\t\t\t<View style={ styles.subtitleContainer }>\n\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={ warning }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t...styles.errorIcon,\n\t\t\t\t\t\t\t\t\t...uploadFailedStyle,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tsize={ 16 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Text style={ finalSubtitleStyle }>\n\t\t\t\t\t\t\t{ getSubtitleValue() }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t\t{ ! isDisabled && (\n\t\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\t\taccessibilityLabel={ __( 'Audio Player' ) }\n\t\t\t\t\t\taccessibilityRole=\"button\"\n\t\t\t\t\t\taccessibilityHint={ __(\n\t\t\t\t\t\t\t'Double tap to listen the audio file'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonPress={ onPressListen }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={ buttonBackgroundStyle }>\n\t\t\t\t\t\t\t<Text style={ styles.buttonText }>\n\t\t\t\t\t\t\t\t{ __( 'OPEN' ) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t\t) }\n\t\t\t\t{ isIOS && (\n\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\tpaused={ paused }\n\t\t\t\t\t\tref={ ( ref ) => {\n\t\t\t\t\t\t\tthis.player = ref;\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tcontrols={ false }\n\t\t\t\t\t\tignoreSilentSwitch=\"ignore\"\n\t\t\t\t\t\tonFullscreenPlayerWillPresent={ () => {\n\t\t\t\t\t\t\tsetPaused( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFullscreenPlayerDidDismiss={ () => {\n\t\t\t\t\t\t\tsetPaused( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default withPreferredColorScheme( Player );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeVideo","_interopRequireDefault","_primitives","_components","_compose","_i18n","_icons","_reactNativeBridge","_url","_element","_styles","_audioUrlParser","_useGlobalStylesContext","_jsxRuntime","isIOS","Platform","OS","Player","isUploadInProgress","isUploadFailed","attributes","isSelected","id","src","paused","setPaused","useState","onPressListen","player","presentFullscreenPlayer","Linking","canOpenURL","then","supported","Alert","alert","__","openURL","catch","containerStyle","useEditorColorScheme","styles","container","containerDark","iconStyle","icon","iconDark","iconDisabledStyle","iconDisabled","iconDisabledDark","isDisabled","finalIconStyle","iconContainerStyle","iconContainer","iconContainerDark","titleContainerStyle","titleContainer","titleContainerIOS","titleContainerAndroid","titleStyle","title","titleDark","uploadFailedStyle","uploadFailed","uploadFailedDark","subtitleStyle","subtitle","subtitleDark","finalSubtitleStyle","buttonBackgroundStyle","buttonBackground","buttonBackgroundDark","extension","result","parseAudioUrl","getSubtitleValue","onAudioUploadCancelDialog","requestImageUploadCancelDialog","getProtocol","requestImageFailedRetryDialog","jsx","TouchableWithoutFeedback","accessible","disabled","onPress","children","jsxs","View","style","Icon","audio","size","Text","subtitleContainer","cautionFilled","errorIcon","accessibilityLabel","accessibilityRole","accessibilityHint","buttonText","default","source","uri","ref","controls","ignoreSilentSwitch","onFullscreenPlayerWillPresent","onFullscreenPlayerDidDismiss","_default","exports","withPreferredColorScheme"],"sources":["@wordpress/block-editor/src/components/audio-player/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tText,\n\tTouchableWithoutFeedback,\n\tLinking,\n\tAlert,\n\tPlatform,\n} from 'react-native';\nimport { default as VideoPlayer } from 'react-native-video';\n\n/**\n * WordPress dependencies\n */\nimport { View } from '@wordpress/primitives';\nimport { Icon } from '@wordpress/components';\nimport { withPreferredColorScheme } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { audio, cautionFilled } from '@wordpress/icons';\nimport {\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport { getProtocol } from '@wordpress/url';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\nimport { parseAudioUrl } from './audio-url-parser.native';\nimport { useEditorColorScheme } from '../global-styles/use-global-styles-context';\n\nconst isIOS = Platform.OS === 'ios';\n\nfunction Player( {\n\tisUploadInProgress,\n\tisUploadFailed,\n\tattributes,\n\tisSelected,\n} ) {\n\tconst { id, src } = attributes;\n\tconst [ paused, setPaused ] = useState( true );\n\n\tconst onPressListen = () => {\n\t\tif ( src ) {\n\t\t\tif ( isIOS && this.player ) {\n\t\t\t\tthis.player.presentFullscreenPlayer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tLinking.canOpenURL( src )\n\t\t\t\t.then( ( supported ) => {\n\t\t\t\t\tif ( ! supported ) {\n\t\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t\t__( 'No application can handle this request.' )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Linking.openURL( src );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t__( 'An unknown error occurred. Please try again.' )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t}\n\t};\n\n\tconst containerStyle = useEditorColorScheme(\n\t\tstyles.container,\n\t\tstyles.containerDark\n\t);\n\n\tconst iconStyle = useEditorColorScheme( styles.icon, styles.iconDark );\n\n\tconst iconDisabledStyle = useEditorColorScheme(\n\t\tstyles.iconDisabled,\n\t\tstyles.iconDisabledDark\n\t);\n\n\tconst isDisabled = isUploadFailed || isUploadInProgress;\n\n\tconst finalIconStyle = {\n\t\t...iconStyle,\n\t\t...( isDisabled && iconDisabledStyle ),\n\t};\n\n\tconst iconContainerStyle = useEditorColorScheme(\n\t\tstyles.iconContainer,\n\t\tstyles.iconContainerDark\n\t);\n\n\tconst titleContainerStyle = {\n\t\t...styles.titleContainer,\n\t\t...( isIOS ? styles.titleContainerIOS : styles.titleContainerAndroid ),\n\t};\n\n\tconst titleStyle = useEditorColorScheme( styles.title, styles.titleDark );\n\n\tconst uploadFailedStyle = useEditorColorScheme(\n\t\tstyles.uploadFailed,\n\t\tstyles.uploadFailedDark\n\t);\n\n\tconst subtitleStyle = useEditorColorScheme(\n\t\tstyles.subtitle,\n\t\tstyles.subtitleDark\n\t);\n\n\tconst finalSubtitleStyle = {\n\t\t...subtitleStyle,\n\t\t...( isUploadFailed && uploadFailedStyle ),\n\t};\n\n\tconst buttonBackgroundStyle = useEditorColorScheme(\n\t\tstyles.buttonBackground,\n\t\tstyles.buttonBackgroundDark\n\t);\n\n\tlet title = '';\n\tlet extension = '';\n\n\tif ( src ) {\n\t\tconst result = parseAudioUrl( src );\n\t\textension = result.extension;\n\t\ttitle = result.title;\n\t}\n\n\tconst getSubtitleValue = () => {\n\t\tif ( isUploadInProgress ) {\n\t\t\treturn __( 'Uploading…' );\n\t\t}\n\t\tif ( isUploadFailed ) {\n\t\t\treturn __( 'Failed to insert audio file. Please tap for options.' );\n\t\t}\n\t\treturn (\n\t\t\textension +\n\t\t\t// translators: displays audio file extension. e.g. MP3 audio file\n\t\t\t__( 'audio file' )\n\t\t);\n\t};\n\n\tfunction onAudioUploadCancelDialog() {\n\t\tif ( isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( id );\n\t\t} else if ( id && getProtocol( src ) === 'file:' ) {\n\t\t\trequestImageFailedRetryDialog( id );\n\t\t}\n\t}\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\taccessible={ ! isSelected }\n\t\t\tdisabled={ ! isSelected }\n\t\t\tonPress={ onAudioUploadCancelDialog }\n\t\t>\n\t\t\t<View style={ containerStyle }>\n\t\t\t\t<View style={ iconContainerStyle }>\n\t\t\t\t\t<Icon icon={ audio } style={ finalIconStyle } size={ 24 } />\n\t\t\t\t</View>\n\t\t\t\t<View style={ titleContainerStyle }>\n\t\t\t\t\t<Text style={ titleStyle }>{ title }</Text>\n\t\t\t\t\t<View style={ styles.subtitleContainer }>\n\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={ cautionFilled }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t...styles.errorIcon,\n\t\t\t\t\t\t\t\t\t...uploadFailedStyle,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tsize={ 16 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Text style={ finalSubtitleStyle }>\n\t\t\t\t\t\t\t{ getSubtitleValue() }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t\t{ ! isDisabled && (\n\t\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\t\taccessibilityLabel={ __( 'Audio Player' ) }\n\t\t\t\t\t\taccessibilityRole=\"button\"\n\t\t\t\t\t\taccessibilityHint={ __(\n\t\t\t\t\t\t\t'Double tap to listen the audio file'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonPress={ onPressListen }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={ buttonBackgroundStyle }>\n\t\t\t\t\t\t\t<Text style={ styles.buttonText }>\n\t\t\t\t\t\t\t\t{ __( 'OPEN' ) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t\t) }\n\t\t\t\t{ isIOS && (\n\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\tpaused={ paused }\n\t\t\t\t\t\tref={ ( ref ) => {\n\t\t\t\t\t\t\tthis.player = ref;\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tcontrols={ false }\n\t\t\t\t\t\tignoreSilentSwitch=\"ignore\"\n\t\t\t\t\t\tonFullscreenPlayerWillPresent={ () => {\n\t\t\t\t\t\t\tsetPaused( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFullscreenPlayerDidDismiss={ () => {\n\t\t\t\t\t\t\tsetPaused( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default withPreferredColorScheme( Player );\n"],"mappings":"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","ignoreList":[]}
@@ -315,6 +315,10 @@ function BackgroundImageControls({
315
315
  label: imgLabel
316
316
  }),
317
317
  variant: "secondary",
318
+ renderToggle: props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
319
+ ...props,
320
+ __next40pxDefaultSize: true
321
+ }),
318
322
  onError: onUploadError,
319
323
  onReset: () => {
320
324
  closeAndFocus();
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_backgroundPanel","_object","_mediaReplaceFlow","_store","_privateKeys","_jsxRuntime","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","backgroundSizeHelpText","value","undefined","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","useEffect","isOpen","jsx","__experimentalItemGroup","children","jsxs","__experimentalHStack","justify","style","backgroundImage","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundControlsPanel","url","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","LoadingSpinner","Placeholder","Spinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","useState","getSettings","useSelect","blockEditorStore","id","title","background","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","hasBackgroundImageValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","ref","default","mediaId","mediaURL","accept","onSelect","clsx","name","variant","onReset","MenuItem","DropZone","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","__experimentalVStack","spacing","FocalPointPicker","__nextHasNoMarginBottom","ToggleControl","checked","__experimentalToggleGroupControl","size","isBlock","help","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","globalStylesDataKey","globalStylesLinksDataKey","resolvedInheritedValue","useMemo","resolvedValues","Object","entries","forEach","key","backgroundValue","getResolvedValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen"],"sources":["@wordpress/block-editor/src/components/background-image-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useRef, useState, useEffect, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { getResolvedValue } from '../global-styles/utils';\nimport { hasBackgroundImageValue } from '../global-styles/background-panel';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nimport {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n} from '../../store/private-keys';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\n\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction LoadingSpinner() {\n\treturn (\n\t\t<Placeholder className=\"block-editor-global-styles-background-panel__loading\">\n\t\t\t<Spinner />\n\t\t</Placeholder>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tonResetImage = noop,\n\tdisplayInPanel,\n\tdefaultValues,\n} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\tif ( filesList?.length > 1 ) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only one image can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tonReset={ () => {\n\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\tonResetImage();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst isUploadedImage = style?.background?.backgroundImage?.id;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * Set default values for uploaded images.\n\t * The default values are passed by the consumer.\n\t * Block-level controls may have different defaults to root-level controls.\n\t * A falsy value is treated by default as `auto` (Tile).\n\t */\n\tlet currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\n\t/*\n\t * The incoming value could be a value + unit, e.g. '20px'.\n\t * In this case set the value to 'tile'.\n\t */\n\tcurrentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(\n\t\tcurrentValueForToggle\n\t)\n\t\t? 'auto'\n\t\t: currentValueForToggle;\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\t// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.\n\tconst backgroundPositionValue =\n\t\t! positionValue && isUploadedImage && 'contain' === sizeValue\n\t\t\t? defaultValues?.backgroundPosition\n\t\t\t: positionValue;\n\n\treturn (\n\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( backgroundPositionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundImagePanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tdefaultValues = {},\n} ) {\n\t/*\n\t * Resolve any inherited \"ref\" pointers.\n\t * Should the block editor need resolved, inherited values\n\t * across all controls, this could be abstracted into a hook,\n\t * e.g., useResolveGlobalStyle\n\t */\n\tconst { globalStyles, _links } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\t\treturn {\n\t\t\tglobalStyles: _settings[ globalStylesDataKey ],\n\t\t\t_links: _settings[ globalStylesLinksDataKey ],\n\t\t};\n\t}, [] );\n\tconst resolvedInheritedValue = useMemo( () => {\n\t\tconst resolvedValues = {\n\t\t\tbackground: {},\n\t\t};\n\n\t\tif ( ! inheritedValue?.background ) {\n\t\t\treturn inheritedValue;\n\t\t}\n\n\t\tObject.entries( inheritedValue?.background ).forEach(\n\t\t\t( [ key, backgroundValue ] ) => {\n\t\t\t\tresolvedValues.background[ key ] = getResolvedValue(\n\t\t\t\t\tbackgroundValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t\t\t_links,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\treturn resolvedValues;\n\t}, [ globalStyles, _links, inheritedValue ] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...resolvedInheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( resolvedInheritedValue );\n\n\tconst imageValue =\n\t\tvalue?.background?.backgroundImage ||\n\t\tinheritedValue?.background?.backgroundImage;\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t'none' !== imageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( false );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t{\n\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tfilename={ title }\n\t\t\t\t\turl={ url }\n\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</BackgroundControlsPanel>\n\t\t\t) : (\n\t\t\t\t<BackgroundImageControls\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t} }\n\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_backgroundPanel","_object","_mediaReplaceFlow","_store","_privateKeys","_jsxRuntime","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","backgroundSizeHelpText","value","undefined","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","useEffect","isOpen","jsx","__experimentalItemGroup","children","jsxs","__experimentalHStack","justify","style","backgroundImage","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundControlsPanel","url","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","LoadingSpinner","Placeholder","Spinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","useState","getSettings","useSelect","blockEditorStore","id","title","background","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","hasBackgroundImageValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","ref","default","mediaId","mediaURL","accept","onSelect","clsx","name","variant","props","Button","__next40pxDefaultSize","onReset","MenuItem","DropZone","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","__experimentalVStack","spacing","FocalPointPicker","__nextHasNoMarginBottom","ToggleControl","checked","__experimentalToggleGroupControl","size","isBlock","help","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","globalStylesDataKey","globalStylesLinksDataKey","resolvedInheritedValue","useMemo","resolvedValues","Object","entries","forEach","key","backgroundValue","getResolvedValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen"],"sources":["@wordpress/block-editor/src/components/background-image-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useRef, useState, useEffect, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { getResolvedValue } from '../global-styles/utils';\nimport { hasBackgroundImageValue } from '../global-styles/background-panel';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nimport {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n} from '../../store/private-keys';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\n\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction LoadingSpinner() {\n\treturn (\n\t\t<Placeholder className=\"block-editor-global-styles-background-panel__loading\">\n\t\t\t<Spinner />\n\t\t</Placeholder>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tonResetImage = noop,\n\tdisplayInPanel,\n\tdefaultValues,\n} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\tif ( filesList?.length > 1 ) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only one image can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\trenderToggle={ ( props ) => (\n\t\t\t\t\t<Button { ...props } __next40pxDefaultSize />\n\t\t\t\t) }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tonReset={ () => {\n\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\tonResetImage();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst isUploadedImage = style?.background?.backgroundImage?.id;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * Set default values for uploaded images.\n\t * The default values are passed by the consumer.\n\t * Block-level controls may have different defaults to root-level controls.\n\t * A falsy value is treated by default as `auto` (Tile).\n\t */\n\tlet currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\n\t/*\n\t * The incoming value could be a value + unit, e.g. '20px'.\n\t * In this case set the value to 'tile'.\n\t */\n\tcurrentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(\n\t\tcurrentValueForToggle\n\t)\n\t\t? 'auto'\n\t\t: currentValueForToggle;\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\t// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.\n\tconst backgroundPositionValue =\n\t\t! positionValue && isUploadedImage && 'contain' === sizeValue\n\t\t\t? defaultValues?.backgroundPosition\n\t\t\t: positionValue;\n\n\treturn (\n\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( backgroundPositionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundImagePanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tdefaultValues = {},\n} ) {\n\t/*\n\t * Resolve any inherited \"ref\" pointers.\n\t * Should the block editor need resolved, inherited values\n\t * across all controls, this could be abstracted into a hook,\n\t * e.g., useResolveGlobalStyle\n\t */\n\tconst { globalStyles, _links } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\t\treturn {\n\t\t\tglobalStyles: _settings[ globalStylesDataKey ],\n\t\t\t_links: _settings[ globalStylesLinksDataKey ],\n\t\t};\n\t}, [] );\n\tconst resolvedInheritedValue = useMemo( () => {\n\t\tconst resolvedValues = {\n\t\t\tbackground: {},\n\t\t};\n\n\t\tif ( ! inheritedValue?.background ) {\n\t\t\treturn inheritedValue;\n\t\t}\n\n\t\tObject.entries( inheritedValue?.background ).forEach(\n\t\t\t( [ key, backgroundValue ] ) => {\n\t\t\t\tresolvedValues.background[ key ] = getResolvedValue(\n\t\t\t\t\tbackgroundValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t\t\t_links,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\treturn resolvedValues;\n\t}, [ globalStyles, _links, inheritedValue ] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...resolvedInheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( resolvedInheritedValue );\n\n\tconst imageValue =\n\t\tvalue?.background?.backgroundImage ||\n\t\tinheritedValue?.background?.backgroundImage;\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t'none' !== imageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( false );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t{\n\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tfilename={ title }\n\t\t\t\t\turl={ url }\n\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</BackgroundControlsPanel>\n\t\t\t) : (\n\t\t\t\t<BackgroundImageControls\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t} }\n\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,38 @@ var _jsxRuntime = require("react/jsx-runtime");
13
13
  */
14
14
 
15
15
  const noop = () => {};
16
+
17
+ /**
18
+ * The alignment matrix control allows users to quickly adjust inner block alignment.
19
+ *
20
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-alignment-matrix-control/README.md
21
+ *
22
+ * @example
23
+ * ```jsx
24
+ * function Example() {
25
+ * return (
26
+ * <BlockControls>
27
+ * <BlockAlignmentMatrixControl
28
+ * label={ __( 'Change content position' ) }
29
+ * value="center"
30
+ * onChange={ ( nextPosition ) =>
31
+ * setAttributes( { contentPosition: nextPosition } )
32
+ * }
33
+ * />
34
+ * </BlockControls>
35
+ * );
36
+ * }
37
+ * ```
38
+ *
39
+ * @param {Object} props Component props.
40
+ * @param {string} props.label Label for the control. Defaults to 'Change matrix alignment'.
41
+ * @param {Function} props.onChange Function to execute upon change of matrix state.
42
+ * @param {string} props.value Content alignment location. One of: 'center', 'center center',
43
+ * 'center left', 'center right', 'top center', 'top left',
44
+ * 'top right', 'bottom center', 'bottom left', 'bottom right'.
45
+ * @param {boolean} props.isDisabled Whether the control should be disabled.
46
+ * @return {Element} The BlockAlignmentMatrixControl component.
47
+ */
16
48
  function BlockAlignmentMatrixControl(props) {
17
49
  const {
18
50
  label = (0, _i18n.__)('Change matrix alignment'),
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_keycodes","_components","_jsxRuntime","noop","BlockAlignmentMatrixControl","props","label","__","onChange","value","isDisabled","icon","jsx","AlignmentMatrixControl","Icon","Dropdown","popoverProps","placement","renderToggle","onToggle","isOpen","openOnArrowDown","event","keyCode","DOWN","preventDefault","ToolbarButton","onClick","onKeyDown","showTooltip","disabled","renderContent","hasFocusBorder","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/block-alignment-matrix-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tToolbarButton,\n\tDropdown,\n\tAlignmentMatrixControl,\n} from '@wordpress/components';\n\nconst noop = () => {};\n\nfunction BlockAlignmentMatrixControl( props ) {\n\tconst {\n\t\tlabel = __( 'Change matrix alignment' ),\n\t\tonChange = noop,\n\t\tvalue = 'center',\n\t\tisDisabled,\n\t} = props;\n\n\tconst icon = <AlignmentMatrixControl.Icon value={ value } />;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonToggle();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<AlignmentMatrixControl\n\t\t\t\t\thasFocusBorder={ false }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default BlockAlignmentMatrixControl;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAI+B,IAAAG,WAAA,GAAAH,OAAA;AAT/B;AACA;AACA;;AASA,MAAMI,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,SAASC,2BAA2BA,CAAEC,KAAK,EAAG;EAC7C,MAAM;IACLC,KAAK,GAAG,IAAAC,QAAE,EAAE,yBAA0B,CAAC;IACvCC,QAAQ,GAAGL,IAAI;IACfM,KAAK,GAAG,QAAQ;IAChBC;EACD,CAAC,GAAGL,KAAK;EAET,MAAMM,IAAI,gBAAG,IAAAT,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAY,sBAAsB,CAACC,IAAI;IAACL,KAAK,EAAGA;EAAO,CAAE,CAAC;EAE5D,oBACC,IAAAP,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAc,QAAQ;IACRC,YAAY,EAAG;MAAEC,SAAS,EAAE;IAAe,CAAG;IAC9CC,YAAY,EAAGA,CAAE;MAAEC,QAAQ;MAAEC;IAAO,CAAC,KAAM;MAC1C,MAAMC,eAAe,GAAKC,KAAK,IAAM;QACpC,IAAK,CAAEF,MAAM,IAAIE,KAAK,CAACC,OAAO,KAAKC,cAAI,EAAG;UACzCF,KAAK,CAACG,cAAc,CAAC,CAAC;UACtBN,QAAQ,CAAC,CAAC;QACX;MACD,CAAC;MAED,oBACC,IAAAjB,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAyB,aAAa;QACbC,OAAO,EAAGR,QAAU;QACpB,iBAAc,MAAM;QACpB,iBAAgBC,MAAQ;QACxBQ,SAAS,EAAGP,eAAiB;QAC7Bf,KAAK,EAAGA,KAAO;QACfK,IAAI,EAAGA,IAAM;QACbkB,WAAW;QACXC,QAAQ,EAAGpB;MAAY,CACvB,CAAC;IAEJ,CAAG;IACHqB,aAAa,EAAGA,CAAA,kBACf,IAAA7B,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAY,sBAAsB;MACtBmB,cAAc,EAAG,KAAO;MACxBxB,QAAQ,EAAGA,QAAU;MACrBC,KAAK,EAAGA;IAAO,CACf;EACC,CACH,CAAC;AAEJ;AAAC,IAAAwB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc/B,2BAA2B","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_keycodes","_components","_jsxRuntime","noop","BlockAlignmentMatrixControl","props","label","__","onChange","value","isDisabled","icon","jsx","AlignmentMatrixControl","Icon","Dropdown","popoverProps","placement","renderToggle","onToggle","isOpen","openOnArrowDown","event","keyCode","DOWN","preventDefault","ToolbarButton","onClick","onKeyDown","showTooltip","disabled","renderContent","hasFocusBorder","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/block-alignment-matrix-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tToolbarButton,\n\tDropdown,\n\tAlignmentMatrixControl,\n} from '@wordpress/components';\n\nconst noop = () => {};\n\n/**\n * The alignment matrix control allows users to quickly adjust inner block alignment.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-alignment-matrix-control/README.md\n *\n * @example\n * ```jsx\n * function Example() {\n * return (\n * <BlockControls>\n * <BlockAlignmentMatrixControl\n * label={ __( 'Change content position' ) }\n * value=\"center\"\n * onChange={ ( nextPosition ) =>\n * setAttributes( { contentPosition: nextPosition } )\n * }\n * />\n * </BlockControls>\n * );\n * }\n * ```\n *\n * @param {Object} props Component props.\n * @param {string} props.label Label for the control. Defaults to 'Change matrix alignment'.\n * @param {Function} props.onChange Function to execute upon change of matrix state.\n * @param {string} props.value Content alignment location. One of: 'center', 'center center',\n * 'center left', 'center right', 'top center', 'top left',\n * 'top right', 'bottom center', 'bottom left', 'bottom right'.\n * @param {boolean} props.isDisabled Whether the control should be disabled.\n * @return {Element} The BlockAlignmentMatrixControl component.\n */\nfunction BlockAlignmentMatrixControl( props ) {\n\tconst {\n\t\tlabel = __( 'Change matrix alignment' ),\n\t\tonChange = noop,\n\t\tvalue = 'center',\n\t\tisDisabled,\n\t} = props;\n\n\tconst icon = <AlignmentMatrixControl.Icon value={ value } />;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonToggle();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<AlignmentMatrixControl\n\t\t\t\t\thasFocusBorder={ false }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default BlockAlignmentMatrixControl;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAI+B,IAAAG,WAAA,GAAAH,OAAA;AAT/B;AACA;AACA;;AASA,MAAMI,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,2BAA2BA,CAAEC,KAAK,EAAG;EAC7C,MAAM;IACLC,KAAK,GAAG,IAAAC,QAAE,EAAE,yBAA0B,CAAC;IACvCC,QAAQ,GAAGL,IAAI;IACfM,KAAK,GAAG,QAAQ;IAChBC;EACD,CAAC,GAAGL,KAAK;EAET,MAAMM,IAAI,gBAAG,IAAAT,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAY,sBAAsB,CAACC,IAAI;IAACL,KAAK,EAAGA;EAAO,CAAE,CAAC;EAE5D,oBACC,IAAAP,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAc,QAAQ;IACRC,YAAY,EAAG;MAAEC,SAAS,EAAE;IAAe,CAAG;IAC9CC,YAAY,EAAGA,CAAE;MAAEC,QAAQ;MAAEC;IAAO,CAAC,KAAM;MAC1C,MAAMC,eAAe,GAAKC,KAAK,IAAM;QACpC,IAAK,CAAEF,MAAM,IAAIE,KAAK,CAACC,OAAO,KAAKC,cAAI,EAAG;UACzCF,KAAK,CAACG,cAAc,CAAC,CAAC;UACtBN,QAAQ,CAAC,CAAC;QACX;MACD,CAAC;MAED,oBACC,IAAAjB,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAyB,aAAa;QACbC,OAAO,EAAGR,QAAU;QACpB,iBAAc,MAAM;QACpB,iBAAgBC,MAAQ;QACxBQ,SAAS,EAAGP,eAAiB;QAC7Bf,KAAK,EAAGA,KAAO;QACfK,IAAI,EAAGA,IAAM;QACbkB,WAAW;QACXC,QAAQ,EAAGpB;MAAY,CACvB,CAAC;IAEJ,CAAG;IACHqB,aAAa,EAAGA,CAAA,kBACf,IAAA7B,WAAA,CAAAU,GAAA,EAACX,WAAA,CAAAY,sBAAsB;MACtBmB,cAAc,EAAG,KAAO;MACxBxB,QAAQ,EAAGA,QAAU;MACrBC,KAAK,EAAGA;IAAO,CACf;EACC,CACH,CAAC;AAEJ;AAAC,IAAAwB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc/B,2BAA2B","ignoreList":[]}
@@ -6,13 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _clsx = _interopRequireDefault(require("clsx"));
9
- var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
10
9
  var _components = require("@wordpress/components");
11
- var _icons = require("@wordpress/icons");
12
- var _i18n = require("@wordpress/i18n");
13
10
  var _data = require("@wordpress/data");
14
- var _blockIcon = _interopRequireDefault(require("../block-icon"));
11
+ var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
12
+ var _i18n = require("@wordpress/i18n");
13
+ var _icons = require("@wordpress/icons");
14
+ var _lockUnlock = require("../../lock-unlock");
15
15
  var _store = require("../../store");
16
+ var _blockIcon = _interopRequireDefault(require("../block-icon"));
16
17
  var _jsxRuntime = require("react/jsx-runtime");
17
18
  /**
18
19
  * External dependencies
@@ -26,6 +27,39 @@ var _jsxRuntime = require("react/jsx-runtime");
26
27
  * Internal dependencies
27
28
  */
28
29
 
30
+ const {
31
+ Badge
32
+ } = (0, _lockUnlock.unlock)(_components.privateApis);
33
+
34
+ /**
35
+ * A card component that displays block information including title, icon, and description.
36
+ * Can be used to show block metadata and navigation controls for parent blocks.
37
+ *
38
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-card/README.md
39
+ *
40
+ * @example
41
+ * ```jsx
42
+ * function Example() {
43
+ * return (
44
+ * <BlockCard
45
+ * title="My Block"
46
+ * icon="smiley"
47
+ * description="A simple block example"
48
+ * name="Custom Block"
49
+ * />
50
+ * );
51
+ * }
52
+ * ```
53
+ *
54
+ * @param {Object} props Component props.
55
+ * @param {string} props.title The title of the block.
56
+ * @param {string|Object} props.icon The icon of the block. This can be any of [WordPress' Dashicons](https://developer.wordpress.org/resource/dashicons/), or a custom `svg` element.
57
+ * @param {string} props.description The description of the block.
58
+ * @param {Object} [props.blockType] Deprecated: Object containing block type data.
59
+ * @param {string} [props.className] Additional classes to apply to the card.
60
+ * @param {string} [props.name] Custom block name to display before the title.
61
+ * @return {Element} Block card component.
62
+ */
29
63
  function BlockCard({
30
64
  title,
31
65
  icon,
@@ -82,11 +116,14 @@ function BlockCard({
82
116
  showColors: true
83
117
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
84
118
  spacing: 1,
85
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h2", {
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("h2", {
86
120
  className: "block-editor-block-card__title",
87
- children: name?.length ? (0, _i18n.sprintf)(
88
- // translators: 1: Custom block name. 2: Block title.
89
- (0, _i18n._x)('%1$s (%2$s)', 'block label'), name, title) : title
121
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
122
+ className: "block-editor-block-card__name",
123
+ children: !!name?.length ? name : title
124
+ }), !!name?.length && /*#__PURE__*/(0, _jsxRuntime.jsx)(Badge, {
125
+ children: title
126
+ })]
90
127
  }), description && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalText, {
91
128
  className: "block-editor-block-card__description",
92
129
  children: description
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_deprecated","_components","_icons","_i18n","_data","_blockIcon","_store","_jsxRuntime","BlockCard","title","icon","description","blockType","className","name","deprecated","since","alternative","parentNavBlockClientId","useSelect","select","getSelectedBlockClientId","getBlockParentsByBlockName","blockEditorStore","_selectedBlockClientId","selectBlock","useDispatch","jsxs","clsx","children","jsx","Button","onClick","label","__","style","minWidth","padding","isRTL","chevronRight","chevronLeft","size","default","showColors","__experimentalVStack","spacing","length","sprintf","_x","__experimentalText","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-card/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { chevronLeft, chevronRight } from '@wordpress/icons';\nimport { __, _x, isRTL, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nfunction BlockCard( { title, icon, description, blockType, className, name } ) {\n\tif ( blockType ) {\n\t\tdeprecated( '`blockType` property in `BlockCard component`', {\n\t\t\tsince: '5.7',\n\t\t\talternative: '`title, icon and description` properties',\n\t\t} );\n\t\t( { title, icon, description } = blockType );\n\t}\n\n\tconst { parentNavBlockClientId } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientId, getBlockParentsByBlockName } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\n\t\treturn {\n\t\t\tparentNavBlockClientId: getBlockParentsByBlockName(\n\t\t\t\t_selectedBlockClientId,\n\t\t\t\t'core/navigation',\n\t\t\t\ttrue\n\t\t\t)[ 0 ],\n\t\t};\n\t}, [] );\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<div className={ clsx( 'block-editor-block-card', className ) }>\n\t\t\t{ parentNavBlockClientId && ( // This is only used by the Navigation block for now. It's not ideal having Navigation block specific code here.\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ () => selectBlock( parentNavBlockClientId ) }\n\t\t\t\t\tlabel={ __( 'Go to parent Navigation block' ) }\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t// TODO: This style override is also used in ToolsPanelHeader.\n\t\t\t\t\t\t// It should be supported out-of-the-box by Button.\n\t\t\t\t\t\t{ minWidth: 24, padding: 0 }\n\t\t\t\t\t}\n\t\t\t\t\ticon={ isRTL() ? chevronRight : chevronLeft }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t<h2 className=\"block-editor-block-card__title\">\n\t\t\t\t\t{ name?.length\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: 1: Custom block name. 2: Block title.\n\t\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'block label' ),\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: title }\n\t\t\t\t</h2>\n\t\t\t\t{ description && (\n\t\t\t\t\t<Text className=\"block-editor-block-card__description\">\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport default BlockCard;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_data","_deprecated","_i18n","_icons","_lockUnlock","_store","_blockIcon","_jsxRuntime","Badge","unlock","componentsPrivateApis","BlockCard","title","icon","description","blockType","className","name","deprecated","since","alternative","parentNavBlockClientId","useSelect","select","getSelectedBlockClientId","getBlockParentsByBlockName","blockEditorStore","_selectedBlockClientId","selectBlock","useDispatch","jsxs","clsx","children","jsx","Button","onClick","label","__","style","minWidth","padding","isRTL","chevronRight","chevronLeft","size","default","showColors","__experimentalVStack","spacing","length","__experimentalText","_default","exports"],"sources":["@wordpress/block-editor/src/components/block-card/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { __, isRTL } from '@wordpress/i18n';\nimport { chevronLeft, chevronRight } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\n\nconst { Badge } = unlock( componentsPrivateApis );\n\n/**\n * A card component that displays block information including title, icon, and description.\n * Can be used to show block metadata and navigation controls for parent blocks.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-card/README.md\n *\n * @example\n * ```jsx\n * function Example() {\n * return (\n * <BlockCard\n * title=\"My Block\"\n * icon=\"smiley\"\n * description=\"A simple block example\"\n * name=\"Custom Block\"\n * />\n * );\n * }\n * ```\n *\n * @param {Object} props Component props.\n * @param {string} props.title The title of the block.\n * @param {string|Object} props.icon The icon of the block. This can be any of [WordPress' Dashicons](https://developer.wordpress.org/resource/dashicons/), or a custom `svg` element.\n * @param {string} props.description The description of the block.\n * @param {Object} [props.blockType] Deprecated: Object containing block type data.\n * @param {string} [props.className] Additional classes to apply to the card.\n * @param {string} [props.name] Custom block name to display before the title.\n * @return {Element} Block card component.\n */\nfunction BlockCard( { title, icon, description, blockType, className, name } ) {\n\tif ( blockType ) {\n\t\tdeprecated( '`blockType` property in `BlockCard component`', {\n\t\t\tsince: '5.7',\n\t\t\talternative: '`title, icon and description` properties',\n\t\t} );\n\t\t( { title, icon, description } = blockType );\n\t}\n\n\tconst { parentNavBlockClientId } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientId, getBlockParentsByBlockName } =\n\t\t\tselect( blockEditorStore );\n\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\n\t\treturn {\n\t\t\tparentNavBlockClientId: getBlockParentsByBlockName(\n\t\t\t\t_selectedBlockClientId,\n\t\t\t\t'core/navigation',\n\t\t\t\ttrue\n\t\t\t)[ 0 ],\n\t\t};\n\t}, [] );\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<div className={ clsx( 'block-editor-block-card', className ) }>\n\t\t\t{ parentNavBlockClientId && ( // This is only used by the Navigation block for now. It's not ideal having Navigation block specific code here.\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ () => selectBlock( parentNavBlockClientId ) }\n\t\t\t\t\tlabel={ __( 'Go to parent Navigation block' ) }\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t// TODO: This style override is also used in ToolsPanelHeader.\n\t\t\t\t\t\t// It should be supported out-of-the-box by Button.\n\t\t\t\t\t\t{ minWidth: 24, padding: 0 }\n\t\t\t\t\t}\n\t\t\t\t\ticon={ isRTL() ? chevronRight : chevronLeft }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t<VStack spacing={ 1 }>\n\t\t\t\t<h2 className=\"block-editor-block-card__title\">\n\t\t\t\t\t<span className=\"block-editor-block-card__name\">\n\t\t\t\t\t\t{ !! name?.length ? name : title }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ !! name?.length && <Badge>{ title }</Badge> }\n\t\t\t\t</h2>\n\t\t\t\t{ description && (\n\t\t\t\t\t<Text className=\"block-editor-block-card__description\">\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport default BlockCard;\n"],"mappings":"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","ignoreList":[]}