@wordpress/block-editor 13.2.0 → 13.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +0 -5
  3. package/build/components/alignment-control/ui.js +2 -2
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/ui.js +1 -1
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +1 -1
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -1
  9. package/build/components/block-breadcrumb/index.js +12 -1
  10. package/build/components/block-breadcrumb/index.js.map +1 -1
  11. package/build/components/block-inspector/index.js +6 -3
  12. package/build/components/block-inspector/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/index.js +3 -1
  14. package/build/components/block-list/use-block-props/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-block-refs.js +9 -2
  16. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  17. package/build/components/block-list/use-block-props/use-is-hovered.js +25 -9
  18. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  19. package/build/components/block-list/use-in-between-inserter.js +3 -2
  20. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  21. package/build/components/block-lock/modal.js +2 -0
  22. package/build/components/block-lock/modal.js.map +1 -1
  23. package/build/components/block-lock/toolbar.js +0 -1
  24. package/build/components/block-lock/toolbar.js.map +1 -1
  25. package/build/components/block-mover/button.js +1 -1
  26. package/build/components/block-mover/button.js.map +1 -1
  27. package/build/components/block-mover/index.js +1 -1
  28. package/build/components/block-mover/index.js.map +1 -1
  29. package/build/components/block-pattern-setup/setup-toolbar.js +2 -2
  30. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  31. package/build/components/block-patterns-paging/index.js +5 -7
  32. package/build/components/block-patterns-paging/index.js.map +1 -1
  33. package/build/components/block-quick-navigation/index.js +20 -17
  34. package/build/components/block-quick-navigation/index.js.map +1 -1
  35. package/build/components/block-removal-warning-modal/index.js +2 -0
  36. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  37. package/build/components/block-rename/modal.js +4 -12
  38. package/build/components/block-rename/modal.js.map +1 -1
  39. package/build/components/block-switcher/index.js +1 -1
  40. package/build/components/block-switcher/index.js.map +1 -1
  41. package/build/components/block-switcher/pattern-transformations-menu.js +11 -12
  42. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  43. package/build/components/block-switcher/preview-block-popover.js +20 -17
  44. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  45. package/build/components/block-toolbar/shuffle.js +6 -2
  46. package/build/components/block-toolbar/shuffle.js.map +1 -1
  47. package/build/components/block-tools/block-selection-button.js +7 -58
  48. package/build/components/block-tools/block-selection-button.js.map +1 -1
  49. package/build/components/block-tools/block-toolbar-breadcrumb.js +9 -2
  50. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  51. package/build/components/block-tools/index.js +14 -1
  52. package/build/components/block-tools/index.js.map +1 -1
  53. package/build/components/block-tools/use-show-block-tools.js +9 -8
  54. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  55. package/build/components/block-tools/zoom-out-mode-inserter-button.js +45 -0
  56. package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  57. package/build/components/block-tools/zoom-out-mode-inserters.js +29 -28
  58. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  59. package/build/components/block-tools/zoom-out-popover.js +58 -0
  60. package/build/components/block-tools/zoom-out-popover.js.map +1 -0
  61. package/build/components/block-tools/zoom-out-toolbar.js +138 -0
  62. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -0
  63. package/build/components/button-block-appender/index.js +3 -1
  64. package/build/components/button-block-appender/index.js.map +1 -1
  65. package/build/components/child-layout-control/index.js +26 -18
  66. package/build/components/child-layout-control/index.js.map +1 -1
  67. package/build/components/date-format-picker/index.js +1 -1
  68. package/build/components/date-format-picker/index.js.map +1 -1
  69. package/build/components/default-block-appender/index.js +7 -4
  70. package/build/components/default-block-appender/index.js.map +1 -1
  71. package/build/components/dimensions-tool/index.js +6 -4
  72. package/build/components/dimensions-tool/index.js.map +1 -1
  73. package/build/components/font-appearance-control/index.js +22 -62
  74. package/build/components/font-appearance-control/index.js.map +1 -1
  75. package/build/components/global-styles/background-panel.js +185 -116
  76. package/build/components/global-styles/background-panel.js.map +1 -1
  77. package/build/components/global-styles/border-panel.js +2 -1
  78. package/build/components/global-styles/border-panel.js.map +1 -1
  79. package/build/components/global-styles/color-panel.js +2 -1
  80. package/build/components/global-styles/color-panel.js.map +1 -1
  81. package/build/components/global-styles/dimensions-panel.js +2 -1
  82. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  83. package/build/components/global-styles/filters-panel.js +2 -1
  84. package/build/components/global-styles/filters-panel.js.map +1 -1
  85. package/build/components/global-styles/hooks.js +13 -1
  86. package/build/components/global-styles/hooks.js.map +1 -1
  87. package/build/components/global-styles/image-settings-panel.js +2 -1
  88. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  89. package/build/components/global-styles/typography-panel.js +45 -24
  90. package/build/components/global-styles/typography-panel.js.map +1 -1
  91. package/build/components/global-styles/typography-utils.js +121 -0
  92. package/build/components/global-styles/typography-utils.js.map +1 -1
  93. package/build/components/global-styles/use-global-styles-output.js +47 -13
  94. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  95. package/build/components/global-styles/utils.js +17 -7
  96. package/build/components/global-styles/utils.js.map +1 -1
  97. package/build/components/grid/grid-item-movers.js +90 -48
  98. package/build/components/grid/grid-item-movers.js.map +1 -1
  99. package/build/components/grid/grid-item-resizer.js +2 -2
  100. package/build/components/grid/grid-item-resizer.js.map +1 -1
  101. package/build/components/grid/grid-visualizer.js +117 -37
  102. package/build/components/grid/grid-visualizer.js.map +1 -1
  103. package/build/components/grid/use-grid-layout-sync.js +60 -41
  104. package/build/components/grid/use-grid-layout-sync.js.map +1 -1
  105. package/build/components/index.js +1 -9
  106. package/build/components/index.js.map +1 -1
  107. package/build/components/inner-blocks/index.js +2 -2
  108. package/build/components/inner-blocks/index.js.map +1 -1
  109. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
  110. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  111. package/build/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  112. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  113. package/build/components/inserter/media-tab/media-panel.js +1 -0
  114. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  115. package/build/components/inserter/menu.js +26 -4
  116. package/build/components/inserter/menu.js.map +1 -1
  117. package/build/components/inserter/preview-panel.js +20 -3
  118. package/build/components/inserter/preview-panel.js.map +1 -1
  119. package/build/components/inserter/quick-inserter.js +2 -1
  120. package/build/components/inserter/quick-inserter.js.map +1 -1
  121. package/build/components/inserter-draggable-blocks/index.js +10 -3
  122. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  123. package/build/components/inspector-controls/block-support-tools-panel.js +2 -1
  124. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  125. package/build/components/inspector-controls-tabs/settings-tab.js +1 -2
  126. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  127. package/build/components/link-control/link-preview.js +1 -1
  128. package/build/components/link-control/link-preview.js.map +1 -1
  129. package/build/components/list-view/block-select-button.js +2 -6
  130. package/build/components/list-view/block-select-button.js.map +1 -1
  131. package/build/components/list-view/block.js +2 -2
  132. package/build/components/list-view/block.js.map +1 -1
  133. package/build/components/list-view/utils.js +3 -1
  134. package/build/components/list-view/utils.js.map +1 -1
  135. package/build/components/media-placeholder/index.js +19 -23
  136. package/build/components/media-placeholder/index.js.map +1 -1
  137. package/build/components/navigable-toolbar/index.js +3 -1
  138. package/build/components/navigable-toolbar/index.js.map +1 -1
  139. package/build/components/rich-text/format-toolbar/index.js +1 -1
  140. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  141. package/build/components/rich-text/index.js +1 -1
  142. package/build/components/rich-text/index.js.map +1 -1
  143. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +9 -3
  144. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  145. package/build/components/tabbed-sidebar/index.js +66 -0
  146. package/build/components/tabbed-sidebar/index.js.map +1 -0
  147. package/build/components/url-popover/image-url-input-ui.js +3 -3
  148. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  149. package/build/components/url-popover/index.js +3 -0
  150. package/build/components/url-popover/index.js.map +1 -1
  151. package/build/hooks/background.js +26 -4
  152. package/build/hooks/background.js.map +1 -1
  153. package/build/hooks/block-hooks.js +11 -17
  154. package/build/hooks/block-hooks.js.map +1 -1
  155. package/build/hooks/block-style-variation.js +169 -4
  156. package/build/hooks/block-style-variation.js.map +1 -1
  157. package/build/hooks/duotone.js +16 -11
  158. package/build/hooks/duotone.js.map +1 -1
  159. package/build/hooks/grid-visualizer.js +62 -0
  160. package/build/hooks/grid-visualizer.js.map +1 -0
  161. package/build/hooks/index.js +15 -2
  162. package/build/hooks/index.js.map +1 -1
  163. package/build/hooks/layout-child.js +47 -23
  164. package/build/hooks/layout-child.js.map +1 -1
  165. package/build/hooks/position.js +4 -15
  166. package/build/hooks/position.js.map +1 -1
  167. package/build/hooks/use-bindings-attributes.js +96 -55
  168. package/build/hooks/use-bindings-attributes.js.map +1 -1
  169. package/build/hooks/utils.js +2 -0
  170. package/build/hooks/utils.js.map +1 -1
  171. package/build/layouts/constrained.js +50 -4
  172. package/build/layouts/constrained.js.map +1 -1
  173. package/build/layouts/grid.js +92 -51
  174. package/build/layouts/grid.js.map +1 -1
  175. package/build/private-apis.js +6 -4
  176. package/build/private-apis.js.map +1 -1
  177. package/build/store/actions.js +18 -1
  178. package/build/store/actions.js.map +1 -1
  179. package/build/store/defaults.js +0 -2
  180. package/build/store/defaults.js.map +1 -1
  181. package/build/store/defaults.native.js +0 -3
  182. package/build/store/defaults.native.js.map +1 -1
  183. package/build/store/private-keys.js +2 -1
  184. package/build/store/private-keys.js.map +1 -1
  185. package/build/store/reducer.js +19 -1
  186. package/build/store/reducer.js.map +1 -1
  187. package/build/store/selectors.js +13 -1
  188. package/build/store/selectors.js.map +1 -1
  189. package/build/utils/format-font-style.js +45 -0
  190. package/build/utils/format-font-style.js.map +1 -0
  191. package/build/utils/format-font-weight.js +68 -0
  192. package/build/utils/format-font-weight.js.map +1 -0
  193. package/build/utils/get-editor-region.js +34 -0
  194. package/build/utils/get-editor-region.js.map +1 -0
  195. package/build/utils/get-font-styles-and-weights.js +167 -0
  196. package/build/utils/get-font-styles-and-weights.js.map +1 -0
  197. package/build/utils/pasting.js +5 -13
  198. package/build/utils/pasting.js.map +1 -1
  199. package/build-module/components/alignment-control/ui.js +2 -2
  200. package/build-module/components/alignment-control/ui.js.map +1 -1
  201. package/build-module/components/block-alignment-control/ui.js +1 -1
  202. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  203. package/build-module/components/block-alignment-control/ui.native.js +1 -1
  204. package/build-module/components/block-alignment-control/ui.native.js.map +1 -1
  205. package/build-module/components/block-breadcrumb/index.js +12 -1
  206. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  207. package/build-module/components/block-inspector/index.js +6 -3
  208. package/build-module/components/block-inspector/index.js.map +1 -1
  209. package/build-module/components/block-list/use-block-props/index.js +3 -1
  210. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  211. package/build-module/components/block-list/use-block-props/use-block-refs.js +11 -4
  212. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  213. package/build-module/components/block-list/use-block-props/use-is-hovered.js +26 -9
  214. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  215. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  216. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  217. package/build-module/components/block-lock/modal.js +2 -0
  218. package/build-module/components/block-lock/modal.js.map +1 -1
  219. package/build-module/components/block-lock/toolbar.js +0 -1
  220. package/build-module/components/block-lock/toolbar.js.map +1 -1
  221. package/build-module/components/block-mover/button.js +1 -1
  222. package/build-module/components/block-mover/button.js.map +1 -1
  223. package/build-module/components/block-mover/index.js +1 -1
  224. package/build-module/components/block-mover/index.js.map +1 -1
  225. package/build-module/components/block-pattern-setup/setup-toolbar.js +2 -2
  226. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  227. package/build-module/components/block-patterns-paging/index.js +5 -7
  228. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  229. package/build-module/components/block-quick-navigation/index.js +20 -17
  230. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  231. package/build-module/components/block-removal-warning-modal/index.js +2 -0
  232. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  233. package/build-module/components/block-rename/modal.js +5 -13
  234. package/build-module/components/block-rename/modal.js.map +1 -1
  235. package/build-module/components/block-switcher/index.js +1 -1
  236. package/build-module/components/block-switcher/index.js.map +1 -1
  237. package/build-module/components/block-switcher/pattern-transformations-menu.js +12 -13
  238. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  239. package/build-module/components/block-switcher/preview-block-popover.js +20 -17
  240. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  241. package/build-module/components/block-toolbar/shuffle.js +6 -2
  242. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  243. package/build-module/components/block-tools/block-selection-button.js +10 -61
  244. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  245. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +9 -2
  246. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  247. package/build-module/components/block-tools/index.js +14 -1
  248. package/build-module/components/block-tools/index.js.map +1 -1
  249. package/build-module/components/block-tools/use-show-block-tools.js +9 -8
  250. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  251. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +37 -0
  252. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  253. package/build-module/components/block-tools/zoom-out-mode-inserters.js +30 -29
  254. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  255. package/build-module/components/block-tools/zoom-out-popover.js +49 -0
  256. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -0
  257. package/build-module/components/block-tools/zoom-out-toolbar.js +131 -0
  258. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -0
  259. package/build-module/components/button-block-appender/index.js +3 -1
  260. package/build-module/components/button-block-appender/index.js.map +1 -1
  261. package/build-module/components/child-layout-control/index.js +27 -19
  262. package/build-module/components/child-layout-control/index.js.map +1 -1
  263. package/build-module/components/date-format-picker/index.js +2 -2
  264. package/build-module/components/date-format-picker/index.js.map +1 -1
  265. package/build-module/components/default-block-appender/index.js +7 -4
  266. package/build-module/components/default-block-appender/index.js.map +1 -1
  267. package/build-module/components/dimensions-tool/index.js +6 -4
  268. package/build-module/components/dimensions-tool/index.js.map +1 -1
  269. package/build-module/components/font-appearance-control/index.js +24 -62
  270. package/build-module/components/font-appearance-control/index.js.map +1 -1
  271. package/build-module/components/global-styles/background-panel.js +188 -119
  272. package/build-module/components/global-styles/background-panel.js.map +1 -1
  273. package/build-module/components/global-styles/border-panel.js +3 -2
  274. package/build-module/components/global-styles/border-panel.js.map +1 -1
  275. package/build-module/components/global-styles/color-panel.js +3 -2
  276. package/build-module/components/global-styles/color-panel.js.map +1 -1
  277. package/build-module/components/global-styles/dimensions-panel.js +3 -2
  278. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  279. package/build-module/components/global-styles/filters-panel.js +3 -2
  280. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  281. package/build-module/components/global-styles/hooks.js +13 -1
  282. package/build-module/components/global-styles/hooks.js.map +1 -1
  283. package/build-module/components/global-styles/image-settings-panel.js +3 -2
  284. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  285. package/build-module/components/global-styles/typography-panel.js +47 -26
  286. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  287. package/build-module/components/global-styles/typography-utils.js +117 -0
  288. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  289. package/build-module/components/global-styles/use-global-styles-output.js +47 -13
  290. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  291. package/build-module/components/global-styles/utils.js +15 -6
  292. package/build-module/components/global-styles/utils.js.map +1 -1
  293. package/build-module/components/grid/grid-item-movers.js +93 -50
  294. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  295. package/build-module/components/grid/grid-item-resizer.js +2 -2
  296. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  297. package/build-module/components/grid/grid-visualizer.js +118 -38
  298. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  299. package/build-module/components/grid/use-grid-layout-sync.js +61 -42
  300. package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
  301. package/build-module/components/index.js +0 -5
  302. package/build-module/components/index.js.map +1 -1
  303. package/build-module/components/inner-blocks/index.js +2 -2
  304. package/build-module/components/inner-blocks/index.js.map +1 -1
  305. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
  306. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  307. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  308. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  309. package/build-module/components/inserter/media-tab/media-panel.js +1 -0
  310. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  311. package/build-module/components/inserter/menu.js +26 -4
  312. package/build-module/components/inserter/menu.js.map +1 -1
  313. package/build-module/components/inserter/preview-panel.js +20 -3
  314. package/build-module/components/inserter/preview-panel.js.map +1 -1
  315. package/build-module/components/inserter/quick-inserter.js +2 -1
  316. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  317. package/build-module/components/inserter-draggable-blocks/index.js +10 -3
  318. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  319. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -2
  320. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  321. package/build-module/components/inspector-controls-tabs/settings-tab.js +1 -2
  322. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  323. package/build-module/components/link-control/link-preview.js +1 -1
  324. package/build-module/components/link-control/link-preview.js.map +1 -1
  325. package/build-module/components/list-view/block-select-button.js +3 -7
  326. package/build-module/components/list-view/block-select-button.js.map +1 -1
  327. package/build-module/components/list-view/block.js +2 -2
  328. package/build-module/components/list-view/block.js.map +1 -1
  329. package/build-module/components/list-view/utils.js +3 -1
  330. package/build-module/components/list-view/utils.js.map +1 -1
  331. package/build-module/components/media-placeholder/index.js +19 -23
  332. package/build-module/components/media-placeholder/index.js.map +1 -1
  333. package/build-module/components/navigable-toolbar/index.js +3 -1
  334. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  335. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  336. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  337. package/build-module/components/rich-text/index.js +1 -1
  338. package/build-module/components/rich-text/index.js.map +1 -1
  339. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +9 -3
  340. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  341. package/build-module/components/tabbed-sidebar/index.js +60 -0
  342. package/build-module/components/tabbed-sidebar/index.js.map +1 -0
  343. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  344. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  345. package/build-module/components/url-popover/index.js +3 -0
  346. package/build-module/components/url-popover/index.js.map +1 -1
  347. package/build-module/hooks/background.js +26 -4
  348. package/build-module/hooks/background.js.map +1 -1
  349. package/build-module/hooks/block-hooks.js +11 -17
  350. package/build-module/hooks/block-hooks.js.map +1 -1
  351. package/build-module/hooks/block-style-variation.js +168 -4
  352. package/build-module/hooks/block-style-variation.js.map +1 -1
  353. package/build-module/hooks/duotone.js +16 -11
  354. package/build-module/hooks/duotone.js.map +1 -1
  355. package/build-module/hooks/grid-visualizer.js +61 -0
  356. package/build-module/hooks/grid-visualizer.js.map +1 -0
  357. package/build-module/hooks/index.js +3 -0
  358. package/build-module/hooks/index.js.map +1 -1
  359. package/build-module/hooks/layout-child.js +47 -23
  360. package/build-module/hooks/layout-child.js.map +1 -1
  361. package/build-module/hooks/position.js +4 -15
  362. package/build-module/hooks/position.js.map +1 -1
  363. package/build-module/hooks/use-bindings-attributes.js +96 -56
  364. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  365. package/build-module/hooks/utils.js +2 -0
  366. package/build-module/hooks/utils.js.map +1 -1
  367. package/build-module/layouts/constrained.js +50 -4
  368. package/build-module/layouts/constrained.js.map +1 -1
  369. package/build-module/layouts/grid.js +92 -51
  370. package/build-module/layouts/grid.js.map +1 -1
  371. package/build-module/private-apis.js +8 -6
  372. package/build-module/private-apis.js.map +1 -1
  373. package/build-module/store/actions.js +15 -0
  374. package/build-module/store/actions.js.map +1 -1
  375. package/build-module/store/defaults.js +0 -2
  376. package/build-module/store/defaults.js.map +1 -1
  377. package/build-module/store/defaults.native.js +0 -3
  378. package/build-module/store/defaults.native.js.map +1 -1
  379. package/build-module/store/private-keys.js +1 -0
  380. package/build-module/store/private-keys.js.map +1 -1
  381. package/build-module/store/reducer.js +18 -1
  382. package/build-module/store/reducer.js.map +1 -1
  383. package/build-module/store/selectors.js +10 -0
  384. package/build-module/store/selectors.js.map +1 -1
  385. package/build-module/utils/format-font-style.js +39 -0
  386. package/build-module/utils/format-font-style.js.map +1 -0
  387. package/build-module/utils/format-font-weight.js +62 -0
  388. package/build-module/utils/format-font-weight.js.map +1 -0
  389. package/build-module/utils/get-editor-region.js +28 -0
  390. package/build-module/utils/get-editor-region.js.map +1 -0
  391. package/build-module/utils/get-font-styles-and-weights.js +160 -0
  392. package/build-module/utils/get-font-styles-and-weights.js.map +1 -0
  393. package/build-module/utils/pasting.js +5 -13
  394. package/build-module/utils/pasting.js.map +1 -1
  395. package/build-style/content-rtl.css +7 -6
  396. package/build-style/content.css +7 -6
  397. package/build-style/style-rtl.css +356 -181
  398. package/build-style/style.css +356 -181
  399. package/build-types/components/block-context/index.d.ts +2 -2
  400. package/build-types/components/block-context/index.d.ts.map +1 -1
  401. package/build-types/utils/dom.d.ts.map +1 -1
  402. package/package.json +32 -32
  403. package/src/components/alignment-control/ui.js +2 -2
  404. package/src/components/block-alignment-control/ui.js +1 -1
  405. package/src/components/block-alignment-control/ui.native.js +1 -1
  406. package/src/components/block-breadcrumb/index.js +16 -1
  407. package/src/components/block-context/README.md +4 -4
  408. package/src/components/block-inspector/index.js +8 -4
  409. package/src/components/block-list/content.scss +2 -16
  410. package/src/components/block-list/use-block-props/index.js +1 -1
  411. package/src/components/block-list/use-block-props/use-block-refs.js +19 -3
  412. package/src/components/block-list/use-block-props/use-is-hovered.js +26 -11
  413. package/src/components/block-list/use-in-between-inserter.js +5 -1
  414. package/src/components/block-lock/modal.js +10 -2
  415. package/src/components/block-lock/style.scss +4 -8
  416. package/src/components/block-lock/toolbar.js +0 -1
  417. package/src/components/block-mover/button.js +1 -1
  418. package/src/components/block-mover/index.js +1 -1
  419. package/src/components/block-pattern-setup/setup-toolbar.js +2 -2
  420. package/src/components/block-patterns-paging/index.js +8 -11
  421. package/src/components/block-patterns-paging/style.scss +0 -5
  422. package/src/components/block-quick-navigation/index.js +21 -28
  423. package/src/components/block-removal-warning-modal/index.js +10 -2
  424. package/src/components/block-rename/modal.js +2 -8
  425. package/src/components/block-switcher/index.js +1 -1
  426. package/src/components/block-switcher/pattern-transformations-menu.js +17 -15
  427. package/src/components/block-switcher/preview-block-popover.js +20 -14
  428. package/src/components/block-switcher/style.scss +8 -17
  429. package/src/components/block-switcher/test/index.js +6 -6
  430. package/src/components/block-toolbar/shuffle.js +9 -1
  431. package/src/components/block-toolbar/style.scss +1 -11
  432. package/src/components/block-tools/block-selection-button.js +11 -83
  433. package/src/components/block-tools/block-toolbar-breadcrumb.js +9 -4
  434. package/src/components/block-tools/index.js +21 -1
  435. package/src/components/block-tools/style.scss +23 -0
  436. package/src/components/block-tools/use-show-block-tools.js +21 -10
  437. package/src/components/block-tools/zoom-out-mode-inserter-button.js +47 -0
  438. package/src/components/block-tools/zoom-out-mode-inserters.js +44 -33
  439. package/src/components/block-tools/zoom-out-popover.js +50 -0
  440. package/src/components/block-tools/zoom-out-toolbar.js +140 -0
  441. package/src/components/button-block-appender/index.js +2 -1
  442. package/src/components/child-layout-control/index.js +41 -23
  443. package/src/components/date-format-picker/index.js +2 -2
  444. package/src/components/date-format-picker/style.scss +0 -9
  445. package/src/components/default-block-appender/index.js +11 -4
  446. package/src/components/dimensions-tool/index.js +97 -89
  447. package/src/components/font-appearance-control/index.js +24 -82
  448. package/src/components/font-appearance-control/style.scss +3 -5
  449. package/src/components/global-styles/background-panel.js +266 -167
  450. package/src/components/global-styles/border-panel.js +3 -2
  451. package/src/components/global-styles/color-panel.js +3 -2
  452. package/src/components/global-styles/dimensions-panel.js +3 -2
  453. package/src/components/global-styles/filters-panel.js +3 -2
  454. package/src/components/global-styles/hooks.js +14 -1
  455. package/src/components/global-styles/image-settings-panel.js +3 -2
  456. package/src/components/global-styles/style.scss +116 -19
  457. package/src/components/global-styles/test/typography-utils.js +594 -0
  458. package/src/components/global-styles/test/use-global-styles-output.js +3 -1
  459. package/src/components/global-styles/typography-panel.js +56 -27
  460. package/src/components/global-styles/typography-utils.js +159 -0
  461. package/src/components/global-styles/use-global-styles-output.js +45 -10
  462. package/src/components/global-styles/utils.js +17 -6
  463. package/src/components/grid/grid-item-movers.js +140 -86
  464. package/src/components/grid/grid-item-resizer.js +3 -2
  465. package/src/components/grid/grid-visualizer.js +172 -55
  466. package/src/components/grid/style.scss +157 -8
  467. package/src/components/grid/use-grid-layout-sync.js +88 -46
  468. package/src/components/iframe/content.scss +2 -1
  469. package/src/components/index.js +0 -5
  470. package/src/components/inner-blocks/index.js +6 -2
  471. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -16
  472. package/src/components/inserter/block-patterns-tab/patterns-filter.js +40 -44
  473. package/src/components/inserter/media-tab/media-panel.js +1 -0
  474. package/src/components/inserter/menu.js +47 -13
  475. package/src/components/inserter/preview-panel.js +27 -4
  476. package/src/components/inserter/quick-inserter.js +6 -1
  477. package/src/components/inserter/style.scss +58 -92
  478. package/src/components/inserter-draggable-blocks/index.js +11 -3
  479. package/src/components/inspector-controls/block-support-tools-panel.js +3 -3
  480. package/src/components/inspector-controls-tabs/settings-tab.js +0 -2
  481. package/src/components/inspector-controls-tabs/style.scss +0 -21
  482. package/src/components/link-control/link-preview.js +1 -1
  483. package/src/components/list-view/block-select-button.js +3 -13
  484. package/src/components/list-view/block.js +10 -3
  485. package/src/components/list-view/style.scss +2 -1
  486. package/src/components/list-view/utils.js +13 -2
  487. package/src/components/media-placeholder/index.js +22 -32
  488. package/src/components/navigable-toolbar/index.js +3 -1
  489. package/src/components/rich-text/format-toolbar/index.js +1 -1
  490. package/src/components/rich-text/index.js +1 -1
  491. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +9 -2
  492. package/src/components/tabbed-sidebar/README.md +76 -0
  493. package/src/components/tabbed-sidebar/index.js +70 -0
  494. package/src/components/tabbed-sidebar/style.scss +53 -0
  495. package/src/components/url-popover/image-url-input-ui.js +3 -3
  496. package/src/components/url-popover/index.js +3 -0
  497. package/src/components/url-popover/style.scss +1 -0
  498. package/src/hooks/background.js +25 -10
  499. package/src/hooks/block-hooks.js +9 -16
  500. package/src/hooks/block-style-variation.js +202 -3
  501. package/src/hooks/duotone.js +16 -12
  502. package/src/hooks/grid-visualizer.js +62 -0
  503. package/src/hooks/index.js +3 -0
  504. package/src/hooks/layout-child.js +64 -39
  505. package/src/hooks/position.js +3 -20
  506. package/src/hooks/test/get-variation-styles-with-ref-values.js +91 -0
  507. package/src/hooks/use-bindings-attributes.js +107 -63
  508. package/src/hooks/utils.js +2 -0
  509. package/src/layouts/constrained.js +53 -4
  510. package/src/layouts/grid.js +148 -51
  511. package/src/private-apis.js +12 -7
  512. package/src/store/actions.js +15 -0
  513. package/src/store/defaults.js +0 -2
  514. package/src/store/defaults.native.js +0 -3
  515. package/src/store/private-keys.js +1 -0
  516. package/src/store/reducer.js +18 -0
  517. package/src/store/selectors.js +10 -0
  518. package/src/style.scss +1 -1
  519. package/src/utils/format-font-style.js +40 -0
  520. package/src/utils/format-font-weight.js +63 -0
  521. package/src/utils/get-editor-region.js +31 -0
  522. package/src/utils/get-font-styles-and-weights.js +191 -0
  523. package/src/utils/pasting.js +5 -12
  524. package/src/utils/test/format-font-style.js +34 -0
  525. package/src/utils/test/format-font-weight.js +66 -0
  526. package/src/utils/test/get-font-styles-and-weights.js +513 -0
  527. package/tsconfig.tsbuildinfo +1 -1
  528. package/build/components/inserter/reusable-block-rename-hint.js +0 -71
  529. package/build/components/inserter/reusable-block-rename-hint.js.map +0 -1
  530. package/build/components/inspector-controls-tabs/settings-tab-hint.js +0 -53
  531. package/build/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  532. package/build-module/components/inserter/reusable-block-rename-hint.js +0 -64
  533. package/build-module/components/inserter/reusable-block-rename-hint.js.map +0 -1
  534. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js +0 -47
  535. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  536. package/src/components/inserter/reusable-block-rename-hint.js +0 -69
  537. package/src/components/inspector-controls-tabs/settings-tab-hint.js +0 -52
  538. package/src/hooks/position.scss +0 -18
@@ -38,9 +38,15 @@ var _jsxRuntime = require("react/jsx-runtime");
38
38
 
39
39
  const IMAGE_BACKGROUND_TYPE = 'image';
40
40
  const DEFAULT_CONTROLS = {
41
- backgroundImage: true,
42
- backgroundSize: false
41
+ backgroundImage: true
43
42
  };
43
+ const BACKGROUND_POPOVER_PROPS = {
44
+ placement: 'left-start',
45
+ offset: 36,
46
+ shift: true,
47
+ className: 'block-editor-global-styles-background-panel__popover'
48
+ };
49
+ const noop = () => {};
44
50
 
45
51
  /**
46
52
  * Checks site settings to see if the background panel may be used.
@@ -134,21 +140,30 @@ const backgroundPositionToCoords = value => {
134
140
  };
135
141
  };
136
142
  exports.backgroundPositionToCoords = backgroundPositionToCoords;
137
- function InspectorImagePreview({
138
- label,
143
+ function InspectorImagePreviewItem({
144
+ as = 'span',
145
+ imgUrl,
146
+ toggleProps = {},
139
147
  filename,
140
- url: imgUrl
148
+ label,
149
+ className,
150
+ onToggleCallback = noop
141
151
  }) {
142
- const imgLabel = label || (0, _url.getFilename)(imgUrl) || (0, _i18n.__)('Add background image');
152
+ (0, _element.useEffect)(() => {
153
+ if (typeof toggleProps?.isOpen !== 'undefined') {
154
+ onToggleCallback(toggleProps?.isOpen);
155
+ }
156
+ }, [toggleProps?.isOpen, onToggleCallback]);
143
157
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalItemGroup, {
144
- as: "span",
158
+ as: as,
159
+ className: className,
160
+ ...toggleProps,
145
161
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
146
- justify: imgUrl ? 'flex-start' : 'center',
162
+ justify: "flex-start",
147
163
  as: "span",
164
+ className: "block-editor-global-styles-background-panel__inspector-preview-inner",
148
165
  children: [imgUrl && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
149
- className: (0, _clsx.default)('block-editor-global-styles-background-panel__inspector-image-indicator-wrapper', {
150
- 'has-image': imgUrl
151
- }),
166
+ className: "block-editor-global-styles-background-panel__inspector-image-indicator-wrapper",
152
167
  "aria-hidden": true,
153
168
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
154
169
  className: "block-editor-global-styles-background-panel__inspector-image-indicator",
@@ -158,25 +173,69 @@ function InspectorImagePreview({
158
173
  })
159
174
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.FlexItem, {
160
175
  as: "span",
176
+ style: imgUrl ? {} : {
177
+ flexGrow: 1
178
+ },
161
179
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalTruncate, {
162
180
  numberOfLines: 1,
163
181
  className: "block-editor-global-styles-background-panel__inspector-media-replace-title",
164
- children: imgLabel
182
+ children: label
165
183
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.VisuallyHidden, {
166
184
  as: "span",
167
185
  children: imgUrl ? (0, _i18n.sprintf)( /* translators: %s: file name */
168
- (0, _i18n.__)('Background image: %s'), filename || imgLabel) : (0, _i18n.__)('No background image selected')
186
+ (0, _i18n.__)('Background image: %s'), filename || label) : (0, _i18n.__)('No background image selected')
169
187
  })]
170
188
  })]
171
189
  })
172
190
  });
173
191
  }
174
- function BackgroundImageToolsPanelItem({
175
- panelId,
176
- isShownByDefault,
192
+ function BackgroundControlsPanel({
193
+ label,
194
+ filename,
195
+ url: imgUrl,
196
+ children,
197
+ onToggle: onToggleCallback = noop,
198
+ hasImageValue
199
+ }) {
200
+ if (!hasImageValue) {
201
+ return;
202
+ }
203
+ const imgLabel = label || (0, _url.getFilename)(imgUrl) || (0, _i18n.__)('Add background image');
204
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Dropdown, {
205
+ popoverProps: BACKGROUND_POPOVER_PROPS,
206
+ renderToggle: ({
207
+ onToggle,
208
+ isOpen
209
+ }) => {
210
+ const toggleProps = {
211
+ onClick: onToggle,
212
+ className: 'block-editor-global-styles-background-panel__dropdown-toggle',
213
+ 'aria-expanded': isOpen,
214
+ 'aria-label': (0, _i18n.__)('Background size, position and repeat options.'),
215
+ isOpen
216
+ };
217
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(InspectorImagePreviewItem, {
218
+ imgUrl: imgUrl,
219
+ filename: filename,
220
+ label: imgLabel,
221
+ toggleProps: toggleProps,
222
+ as: "button",
223
+ onToggleCallback: onToggleCallback
224
+ });
225
+ },
226
+ renderContent: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalDropdownContentWrapper, {
227
+ className: "block-editor-global-styles-background-panel__dropdown-content-wrapper",
228
+ paddingSize: "medium",
229
+ children: children
230
+ })
231
+ });
232
+ }
233
+ function BackgroundImageControls({
177
234
  onChange,
178
235
  style,
179
236
  inheritedValue,
237
+ onRemoveImage = noop,
238
+ displayInPanel,
180
239
  themeFileURIs
181
240
  }) {
182
241
  const mediaUpload = (0, _data.useSelect)(select => select(_store.store).getSettings().mediaUpload, []);
@@ -237,15 +296,6 @@ function BackgroundImageToolsPanelItem({
237
296
  onError: onUploadError
238
297
  });
239
298
  };
240
- const resetAllFilter = (0, _element.useCallback)(previousValue => {
241
- return {
242
- ...previousValue,
243
- style: {
244
- ...previousValue.style,
245
- background: undefined
246
- }
247
- };
248
- }, []);
249
299
  const hasValue = hasBackgroundImageValue(style);
250
300
  const closeAndFocus = () => {
251
301
  const [toggleButton] = _dom.focus.tabbable.find(replaceContainerRef.current);
@@ -257,52 +307,48 @@ function BackgroundImageToolsPanelItem({
257
307
  };
258
308
  const onRemove = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], 'none'));
259
309
  const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
260
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalToolsPanelItem, {
261
- className: "single-column",
262
- hasValue: () => hasValue,
263
- label: (0, _i18n.__)('Background image'),
264
- onDeselect: resetBackgroundImage,
265
- isShownByDefault: isShownByDefault,
266
- resetAllFilter: resetAllFilter,
267
- panelId: panelId,
268
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
269
- className: "block-editor-global-styles-background-panel__inspector-media-replace-container",
270
- ref: replaceContainerRef,
271
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_mediaReplaceFlow.default, {
272
- mediaId: id,
273
- mediaURL: url,
274
- allowedTypes: [IMAGE_BACKGROUND_TYPE],
275
- accept: "image/*",
276
- onSelect: onSelectMedia,
277
- name: /*#__PURE__*/(0, _jsxRuntime.jsx)(InspectorImagePreview, {
278
- label: title,
279
- filename: title,
280
- url: (0, _themeFileUriUtils.getResolvedThemeFilePath)(url, themeFileURIs)
281
- }),
282
- variant: "secondary",
283
- children: [canRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
284
- onClick: () => {
285
- closeAndFocus();
286
- onRemove();
287
- },
288
- children: (0, _i18n.__)('Remove')
289
- }), hasValue && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
290
- onClick: () => {
291
- closeAndFocus();
292
- resetBackgroundImage();
293
- },
294
- children: (0, _i18n.__)('Reset ')
295
- })]
296
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropZone, {
297
- onFilesDrop: onFilesDrop,
298
- label: (0, _i18n.__)('Drop to upload')
310
+ const imgLabel = title || (0, _url.getFilename)(url) || (0, _i18n.__)('Add background image');
311
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
312
+ ref: replaceContainerRef,
313
+ className: "block-editor-global-styles-background-panel__image-tools-panel-item",
314
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_mediaReplaceFlow.default, {
315
+ mediaId: id,
316
+ mediaURL: url,
317
+ allowedTypes: [IMAGE_BACKGROUND_TYPE],
318
+ accept: "image/*",
319
+ onSelect: onSelectMedia,
320
+ popoverProps: {
321
+ className: (0, _clsx.default)({
322
+ 'block-editor-global-styles-background-panel__media-replace-popover': displayInPanel
323
+ })
324
+ },
325
+ name: /*#__PURE__*/(0, _jsxRuntime.jsx)(InspectorImagePreviewItem, {
326
+ className: "block-editor-global-styles-background-panel__image-preview",
327
+ imgUrl: (0, _themeFileUriUtils.getResolvedThemeFilePath)(url, themeFileURIs),
328
+ filename: title,
329
+ label: imgLabel
330
+ }),
331
+ variant: "secondary",
332
+ children: [canRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
333
+ onClick: () => {
334
+ closeAndFocus();
335
+ onRemove();
336
+ },
337
+ children: (0, _i18n.__)('Remove')
338
+ }), hasValue && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
339
+ onClick: () => {
340
+ closeAndFocus();
341
+ onRemoveImage();
342
+ },
343
+ children: (0, _i18n.__)('Reset ')
299
344
  })]
300
- })
345
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropZone, {
346
+ onFilesDrop: onFilesDrop,
347
+ label: (0, _i18n.__)('Drop to upload')
348
+ })]
301
349
  });
302
350
  }
303
- function BackgroundSizeToolsPanelItem({
304
- panelId,
305
- isShownByDefault,
351
+ function BackgroundSizeControls({
306
352
  onChange,
307
353
  style,
308
354
  inheritedValue,
@@ -313,6 +359,7 @@ function BackgroundSizeToolsPanelItem({
313
359
  const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
314
360
  const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
315
361
  const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
362
+ const attachmentValue = style?.background?.backgroundAttachment || inheritedValue?.background?.backgroundAttachment;
316
363
 
317
364
  /*
318
365
  * An `undefined` value is replaced with any supplied
@@ -329,20 +376,6 @@ function BackgroundSizeToolsPanelItem({
329
376
  * should reflect the current repeat value.
330
377
  */
331
378
  const repeatCheckedValue = !(repeatValue === 'no-repeat' || currentValueForToggle === 'cover' && repeatValue === undefined);
332
- const hasValue = hasBackgroundSizeValue(style);
333
- const resetAllFilter = (0, _element.useCallback)(previousValue => {
334
- return {
335
- ...previousValue,
336
- style: {
337
- ...previousValue.style,
338
- background: {
339
- ...previousValue.style?.background,
340
- backgroundRepeat: undefined,
341
- backgroundSize: undefined
342
- }
343
- }
344
- };
345
- }, []);
346
379
  const updateBackgroundSize = next => {
347
380
  // When switching to 'contain' toggle the repeat off.
348
381
  let nextRepeat = repeatValue;
@@ -386,28 +419,22 @@ function BackgroundSizeToolsPanelItem({
386
419
  onChange((0, _object.setImmutably)(style, ['background', 'backgroundPosition'], coordsToBackgroundPosition(next)));
387
420
  };
388
421
  const toggleIsRepeated = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
389
- const resetBackgroundSize = () => onChange((0, _object.setImmutably)(style, ['background'], {
390
- ...style?.background,
391
- backgroundPosition: undefined,
392
- backgroundRepeat: undefined,
393
- backgroundSize: undefined
394
- }));
422
+ const toggleScrollWithPage = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundAttachment'], attachmentValue === 'fixed' ? 'scroll' : 'fixed'));
395
423
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
396
- as: _components.__experimentalToolsPanelItem,
397
- spacing: 2,
424
+ spacing: 4,
398
425
  className: "single-column",
399
- hasValue: () => hasValue,
400
- label: (0, _i18n.__)('Size'),
401
- onDeselect: resetBackgroundSize,
402
- isShownByDefault: isShownByDefault,
403
- resetAllFilter: resetAllFilter,
404
- panelId: panelId,
405
426
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FocalPointPicker, {
406
427
  __next40pxDefaultSize: true,
407
- label: (0, _i18n.__)('Position'),
428
+ __nextHasNoMarginBottom: true,
429
+ label: (0, _i18n.__)('Focal point'),
408
430
  url: (0, _themeFileUriUtils.getResolvedThemeFilePath)(imageValue, themeFileURIs),
409
431
  value: backgroundPositionToCoords(positionValue),
410
432
  onChange: updateBackgroundPosition
433
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
434
+ label: (0, _i18n.__)('Fixed background'),
435
+ checked: attachmentValue === 'fixed',
436
+ onChange: toggleScrollWithPage,
437
+ help: (0, _i18n.__)('Whether your image should scroll with the page or stay fixed in place.')
411
438
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalToggleGroupControl, {
412
439
  size: "__unstable-large",
413
440
  label: (0, _i18n.__)('Size'),
@@ -429,18 +456,20 @@ function BackgroundSizeToolsPanelItem({
429
456
  justify: "flex-start",
430
457
  spacing: 2,
431
458
  as: "span",
432
- children: [currentValueForToggle !== undefined && currentValueForToggle !== 'cover' && currentValueForToggle !== 'contain' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalUnitControl, {
459
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalUnitControl, {
433
460
  "aria-label": (0, _i18n.__)('Background image width'),
434
461
  onChange: updateBackgroundSize,
435
462
  value: sizeValue,
436
463
  size: "__unstable-large",
437
464
  __unstableInputWidth: "100px",
438
465
  min: 0,
439
- placeholder: (0, _i18n.__)('Auto')
440
- }) : null, currentValueForToggle !== 'cover' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
466
+ placeholder: (0, _i18n.__)('Auto'),
467
+ disabled: currentValueForToggle !== 'auto' || currentValueForToggle === undefined
468
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
441
469
  label: (0, _i18n.__)('Repeat'),
442
470
  checked: repeatCheckedValue,
443
- onChange: toggleIsRepeated
471
+ onChange: toggleIsRepeated,
472
+ disabled: currentValueForToggle === 'cover'
444
473
  })]
445
474
  })]
446
475
  });
@@ -453,6 +482,7 @@ function BackgroundToolsPanel({
453
482
  children,
454
483
  headerLabel
455
484
  }) {
485
+ const dropdownMenuProps = (0, _utils.useToolsPanelDropdownMenuProps)();
456
486
  const resetAll = () => {
457
487
  const updatedValue = resetAllFilter(value);
458
488
  onChange(updatedValue);
@@ -463,7 +493,7 @@ function BackgroundToolsPanel({
463
493
  label: headerLabel,
464
494
  resetAll: resetAll,
465
495
  panelId: panelId,
466
- dropdownMenuProps: _utils.TOOLSPANEL_DROPDOWNMENU_PROPS,
496
+ dropdownMenuProps: dropdownMenuProps,
467
497
  children: children
468
498
  });
469
499
  }
@@ -485,28 +515,67 @@ function BackgroundPanel({
485
515
  background: {}
486
516
  };
487
517
  }, []);
488
- const shouldShowBackgroundSizeControls = settings?.background?.backgroundSize;
518
+ const resetBackground = () => onChange((0, _object.setImmutably)(value, ['background'], {}));
519
+ const {
520
+ title,
521
+ url
522
+ } = value?.background?.backgroundImage || {
523
+ ...inheritedValue?.background?.backgroundImage
524
+ };
525
+ const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(inheritedValue);
526
+ const shouldShowBackgroundImageControls = hasImageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
527
+ const [isDropDownOpen, setIsDropDownOpen] = (0, _element.useState)(false);
489
528
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Wrapper, {
490
529
  resetAllFilter: resetAllFilter,
491
530
  value: value,
492
531
  onChange: onChange,
493
532
  panelId: panelId,
494
533
  headerLabel: headerLabel,
495
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageToolsPanelItem, {
496
- onChange: onChange,
497
- panelId: panelId,
534
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
535
+ className: (0, _clsx.default)('block-editor-global-styles-background-panel__inspector-media-replace-container', {
536
+ 'is-open': isDropDownOpen
537
+ }),
538
+ children: shouldShowBackgroundImageControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundControlsPanel, {
539
+ label: title,
540
+ filename: title,
541
+ url: (0, _themeFileUriUtils.getResolvedThemeFilePath)(url, themeFileURIs),
542
+ onToggle: setIsDropDownOpen,
543
+ hasImageValue: hasImageValue,
544
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
545
+ spacing: 3,
546
+ className: "single-column",
547
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
548
+ onChange: onChange,
549
+ style: value,
550
+ inheritedValue: inheritedValue,
551
+ themeFileURIs: themeFileURIs,
552
+ displayInPanel: true,
553
+ onRemoveImage: () => {
554
+ setIsDropDownOpen(false);
555
+ resetBackground();
556
+ }
557
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundSizeControls, {
558
+ onChange: onChange,
559
+ panelId: panelId,
560
+ style: value,
561
+ defaultValues: defaultValues,
562
+ inheritedValue: inheritedValue,
563
+ themeFileURIs: themeFileURIs
564
+ })]
565
+ })
566
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
567
+ onChange: onChange,
568
+ style: value,
569
+ inheritedValue: inheritedValue,
570
+ themeFileURIs: themeFileURIs
571
+ })
572
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalToolsPanelItem, {
573
+ hasValue: () => hasImageValue,
574
+ label: (0, _i18n.__)('Image'),
575
+ onDeselect: resetBackground,
498
576
  isShownByDefault: defaultControls.backgroundImage,
499
- style: value,
500
- inheritedValue: inheritedValue,
501
- themeFileURIs: themeFileURIs
502
- }), shouldShowBackgroundSizeControls && /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundSizeToolsPanelItem, {
503
- onChange: onChange,
504
577
  panelId: panelId,
505
- isShownByDefault: defaultControls.backgroundSize,
506
- style: value,
507
- inheritedValue: inheritedValue,
508
- defaultValues: defaultValues,
509
- themeFileURIs: themeFileURIs
578
+ className: "block-editor-global-styles-background-panel__hidden-tools-panel-item"
510
579
  })]
511
580
  });
512
581
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_object","_mediaReplaceFlow","_store","_themeFileUriUtils","_jsxRuntime","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","backgroundSize","useHasBackgroundPanel","settings","Platform","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreview","label","filename","imgUrl","imgLabel","getFilename","jsx","__experimentalItemGroup","as","children","jsxs","__experimentalHStack","justify","className","clsx","FlexItem","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundImageToolsPanelItem","panelId","isShownByDefault","onChange","inheritedValue","themeFileURIs","mediaUpload","useSelect","select","blockEditorStore","getSettings","title","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","resetAllFilter","useCallback","previousValue","hasValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","__experimentalToolsPanelItem","onDeselect","ref","default","mediaId","mediaURL","accept","onSelect","name","getResolvedThemeFilePath","variant","MenuItem","onClick","DropZone","BackgroundSizeToolsPanelItem","defaultValues","repeatValue","backgroundRepeat","imageValue","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","resetBackgroundSize","__experimentalVStack","ToolsPanelItem","spacing","FocalPointPicker","__next40pxDefaultSize","__experimentalToggleGroupControl","size","isBlock","help","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","ToggleControl","checked","BackgroundToolsPanel","headerLabel","resetAll","updatedValue","ToolsPanel","dropdownMenuProps","TOOLSPANEL_DROPDOWNMENU_PROPS","BackgroundPanel","Wrapper","defaultControls","shouldShowBackgroundSizeControls"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\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} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useCallback, Platform, useRef } 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 { TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\nimport { getResolvedThemeFilePath } from './theme-file-uri-utils';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n\tbackgroundSize: false,\n};\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\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 InspectorImagePreview( { label, filename, url: imgUrl } ) {\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<ItemGroup as=\"span\">\n\t\t\t<HStack justify={ imgUrl ? 'flex-start' : 'center' } as=\"span\">\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-image-indicator-wrapper',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'has-image': imgUrl,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\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\">\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{ imgLabel }\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 || imgLabel\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 BackgroundImageToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tthemeFileURIs,\n} ) {\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\n\tconst replaceContainerRef = useRef();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\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\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\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 = style?.background?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\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! 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} )\n\t\t);\n\t};\n\n\tconst onFilesDrop = ( filesList ) => {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: undefined,\n\t\t\t},\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', 'backgroundImage' ], 'none' )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Background image' ) }\n\t\t\tonDeselect={ resetBackgroundImage }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-container\"\n\t\t\t\tref={ replaceContainerRef }\n\t\t\t>\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tname={\n\t\t\t\t\t\t<InspectorImagePreview\n\t\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\t\turl={ getResolvedThemeFilePath(\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\tthemeFileURIs\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ hasValue && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\t\tresetBackgroundImage();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t<DropZone\n\t\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</ToolsPanelItem>\n\t);\n}\n\nfunction BackgroundSizeToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n\tthemeFileURIs,\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 positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\n\t/*\n\t * An `undefined` value is replaced with any supplied\n\t * default control value for the toggle group control.\n\t * An empty string is treated as `auto` - this allows a user\n\t * to select \"Size\" and then enter a custom value, with an\n\t * empty value being treated as `auto`.\n\t */\n\tconst currentValueForToggle =\n\t\t( sizeValue !== undefined &&\n\t\t\tsizeValue !== 'cover' &&\n\t\t\tsizeValue !== 'contain' ) ||\n\t\tsizeValue === ''\n\t\t\t? 'auto'\n\t\t\t: sizeValue || defaultValues?.backgroundSize;\n\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 hasValue = hasBackgroundSizeValue( style );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: {\n\t\t\t\t\t...previousValue.style?.background,\n\t\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\t\tbackgroundSize: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\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 */\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 resetBackgroundSize = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: undefined,\n\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\tbackgroundSize: undefined,\n\t\t\t} )\n\t\t);\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanelItem }\n\t\t\tspacing={ 2 }\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Size' ) }\n\t\t\tonDeselect={ resetBackgroundSize }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<FocalPointPicker\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'Position' ) }\n\t\t\t\turl={ getResolvedThemeFilePath( imageValue, themeFileURIs ) }\n\t\t\t\tvalue={ backgroundPositionToCoords( positionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\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{ currentValueForToggle !== undefined &&\n\t\t\t\tcurrentValueForToggle !== 'cover' &&\n\t\t\t\tcurrentValueForToggle !== 'contain' ? (\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\t/>\n\t\t\t\t) : null }\n\t\t\t\t{ currentValueForToggle !== 'cover' && (\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\theaderLabel,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 4 }\n\t\t\tlabel={ headerLabel }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundPanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background image' ),\n\tthemeFileURIs,\n} ) {\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\tconst shouldShowBackgroundSizeControls =\n\t\tsettings?.background?.backgroundSize;\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t<BackgroundImageToolsPanelItem\n\t\t\t\tonChange={ onChange }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\tstyle={ value }\n\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t/>\n\t\t\t{ shouldShowBackgroundSizeControls && (\n\t\t\t\t<BackgroundSizeToolsPanelItem\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundSize }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\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","_object","_mediaReplaceFlow","_store","_themeFileUriUtils","_jsxRuntime","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","Platform","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","__","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","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","displayInPanel","themeFileURIs","mediaUpload","useSelect","select","blockEditorStore","getSettings","title","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","ref","default","mediaId","mediaURL","accept","onSelect","clsx","name","getResolvedThemeFilePath","variant","MenuItem","DropZone","BackgroundSizeControls","defaultValues","repeatValue","backgroundRepeat","imageValue","attachmentValue","backgroundAttachment","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","__experimentalVStack","spacing","FocalPointPicker","__next40pxDefaultSize","__nextHasNoMarginBottom","ToggleControl","checked","help","__experimentalToggleGroupControl","size","isBlock","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","ToolsPanel","BackgroundPanel","Wrapper","defaultControls","useCallback","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","useState","__experimentalToolsPanelItem","onDeselect","isShownByDefault"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\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\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 {\n\tuseCallback,\n\tPlatform,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} 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 { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\nimport { getResolvedThemeFilePath } from './theme-file-uri-utils';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\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 * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\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 BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tdisplayInPanel,\n\tthemeFileURIs,\n} ) {\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\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};\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\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\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 = style?.background?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\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! 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} )\n\t\t);\n\t};\n\n\tconst onFilesDrop = ( filesList ) => {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\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', 'backgroundImage' ], 'none' )\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<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={ getResolvedThemeFilePath(\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tthemeFileURIs\n\t\t\t\t\t\t) }\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>\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} }\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\t{ hasValue && (\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\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset ' ) }\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\tthemeFileURIs,\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 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 * An `undefined` value is replaced with any supplied\n\t * default control value for the toggle group control.\n\t * An empty string is treated as `auto` - this allows a user\n\t * to select \"Size\" and then enter a custom value, with an\n\t * empty value being treated as `auto`.\n\t */\n\tconst currentValueForToggle =\n\t\t( sizeValue !== undefined &&\n\t\t\tsizeValue !== 'cover' &&\n\t\t\tsizeValue !== 'contain' ) ||\n\t\tsizeValue === ''\n\t\t\t? 'auto'\n\t\t\t: sizeValue || defaultValues?.backgroundSize;\n\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 */\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\treturn (\n\t\t<VStack spacing={ 4 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ getResolvedThemeFilePath( imageValue, themeFileURIs ) }\n\t\t\t\tvalue={ backgroundPositionToCoords( positionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Whether your image should scroll with the page or stay fixed in place.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\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\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\nfunction BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\theaderLabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 4 }\n\t\t\tlabel={ headerLabel }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundPanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background image' ),\n\tthemeFileURIs,\n} ) {\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( inheritedValue );\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\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<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\turl={ getResolvedThemeFilePath( url, themeFileURIs ) }\n\t\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\t\tonRemoveImage={ () => {\n\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</BackgroundControlsPanel>\n\t\t\t\t) : (\n\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\n\t\t\t{ /* Dummy ToolsPanel items, so we can control what's in the dropdown popover */ }\n\t\t\t<ToolsPanelItem\n\t\t\t\thasValue={ () => hasImageValue }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tonDeselect={ resetBackground }\n\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__hidden-tools-panel-item\"\n\t\t\t/>\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -63,6 +63,7 @@ function BorderToolsPanel({
63
63
  children,
64
64
  label
65
65
  }) {
66
+ const dropdownMenuProps = (0, _utils.useToolsPanelDropdownMenuProps)();
66
67
  const resetAll = () => {
67
68
  const updatedValue = resetAllFilter(value);
68
69
  onChange(updatedValue);
@@ -71,7 +72,7 @@ function BorderToolsPanel({
71
72
  label: label,
72
73
  resetAll: resetAll,
73
74
  panelId: panelId,
74
- dropdownMenuProps: _utils.TOOLSPANEL_DROPDOWNMENU_PROPS,
75
+ dropdownMenuProps: dropdownMenuProps,
75
76
  children: children
76
77
  });
77
78
  }