@wordpress/block-editor 12.21.0 → 12.23.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 (408) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +4 -0
  3. package/build/components/block-actions/index.js +2 -4
  4. package/build/components/block-actions/index.js.map +1 -1
  5. package/build/components/block-heading-level-dropdown/index.js +5 -5
  6. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  7. package/build/components/block-heading-level-dropdown/index.native.js +5 -4
  8. package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
  9. package/build/components/block-list/block-crash-boundary.native.js +49 -0
  10. package/build/components/block-list/block-crash-boundary.native.js.map +1 -0
  11. package/build/components/block-list/block-crash-warning.native.js +24 -0
  12. package/build/components/block-list/block-crash-warning.native.js.map +1 -0
  13. package/build/components/block-list/block.js +11 -3
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-list/block.native.js +7 -2
  16. package/build/components/block-list/block.native.js.map +1 -1
  17. package/build/components/block-mover/button.js +4 -1
  18. package/build/components/block-mover/button.js.map +1 -1
  19. package/build/components/block-mover/index.js +5 -1
  20. package/build/components/block-mover/index.js.map +1 -1
  21. package/build/components/block-patterns-list/index.js +4 -1
  22. package/build/components/block-patterns-list/index.js.map +1 -1
  23. package/build/components/block-settings/container.native.js +2 -1
  24. package/build/components/block-settings/container.native.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +36 -32
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-settings-menu-controls/index.js +1 -3
  28. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  29. package/build/components/block-switcher/index.js +4 -3
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-toolbar/index.js +8 -5
  32. package/build/components/block-toolbar/index.js.map +1 -1
  33. package/build/components/block-toolbar/shuffle.js +19 -10
  34. package/build/components/block-toolbar/shuffle.js.map +1 -1
  35. package/build/components/block-tools/block-selection-button.js +48 -8
  36. package/build/components/block-tools/block-selection-button.js.map +1 -1
  37. package/build/components/block-tools/index.js +14 -2
  38. package/build/components/block-tools/index.js.map +1 -1
  39. package/build/components/child-layout-control/index.js +108 -11
  40. package/build/components/child-layout-control/index.js.map +1 -1
  41. package/build/components/convert-to-group-buttons/toolbar.js +11 -0
  42. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  43. package/build/components/global-styles/advanced-panel.js +9 -2
  44. package/build/components/global-styles/advanced-panel.js.map +1 -1
  45. package/build/components/global-styles/background-panel.js +444 -0
  46. package/build/components/global-styles/background-panel.js.map +1 -0
  47. package/build/components/global-styles/color-panel.js +2 -1
  48. package/build/components/global-styles/color-panel.js.map +1 -1
  49. package/build/components/global-styles/dimensions-panel.js +8 -33
  50. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  51. package/build/components/global-styles/get-global-styles-changes.js +3 -0
  52. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  53. package/build/components/global-styles/hooks.js +1 -1
  54. package/build/components/global-styles/hooks.js.map +1 -1
  55. package/build/components/global-styles/index.js +13 -0
  56. package/build/components/global-styles/index.js.map +1 -1
  57. package/build/components/global-styles/use-global-styles-output.js +16 -15
  58. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  59. package/build/components/global-styles/utils.js +2 -3
  60. package/build/components/global-styles/utils.js.map +1 -1
  61. package/build/components/iframe/index.js +43 -34
  62. package/build/components/iframe/index.js.map +1 -1
  63. package/build/components/inserter/block-patterns-explorer/index.js +3 -6
  64. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
  65. package/build/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
  66. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  67. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  68. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
  69. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  70. package/build/components/inserter/library.js +2 -0
  71. package/build/components/inserter/library.js.map +1 -1
  72. package/build/components/inserter/menu.js +11 -11
  73. package/build/components/inserter/menu.js.map +1 -1
  74. package/build/components/inserter/mobile-tab-navigation.js +1 -1
  75. package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
  76. package/build/components/inserter/search-items.js +36 -15
  77. package/build/components/inserter/search-items.js.map +1 -1
  78. package/build/components/inserter/search-results.js +2 -3
  79. package/build/components/inserter/search-results.js.map +1 -1
  80. package/build/components/inserter/tabs.js +1 -2
  81. package/build/components/inserter/tabs.js.map +1 -1
  82. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +36 -0
  83. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
  84. package/build/components/keyboard-shortcuts/index.js +11 -0
  85. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  86. package/build/components/list-view/block-select-button.js +18 -12
  87. package/build/components/list-view/block-select-button.js.map +1 -1
  88. package/build/components/list-view/block.js +4 -11
  89. package/build/components/list-view/block.js.map +1 -1
  90. package/build/components/list-view/index.js +17 -2
  91. package/build/components/list-view/index.js.map +1 -1
  92. package/build/components/list-view/use-list-view-collapse-items.js +47 -0
  93. package/build/components/list-view/use-list-view-collapse-items.js.map +1 -0
  94. package/build/components/list-view/utils.js +5 -3
  95. package/build/components/list-view/utils.js.map +1 -1
  96. package/build/components/rich-text/index.js +14 -11
  97. package/build/components/rich-text/index.js.map +1 -1
  98. package/build/components/rich-text/index.native.js +17 -11
  99. package/build/components/rich-text/index.native.js.map +1 -1
  100. package/build/components/rich-text/native/get-format-colors.native.js +1 -1
  101. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  102. package/build/components/rich-text/native/index.native.js +2 -2
  103. package/build/components/rich-text/native/index.native.js.map +1 -1
  104. package/build/components/rich-text/with-deprecations.js +0 -3
  105. package/build/components/rich-text/with-deprecations.js.map +1 -1
  106. package/build/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  107. package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
  108. package/build/components/url-popover/image-url-input-ui.js +50 -36
  109. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  110. package/build/components/use-block-display-information/index.js +4 -6
  111. package/build/components/use-block-display-information/index.js.map +1 -1
  112. package/build/components/use-moving-animation/index.js +4 -0
  113. package/build/components/use-moving-animation/index.js.map +1 -1
  114. package/build/components/warning/index.native.js +9 -4
  115. package/build/components/warning/index.native.js.map +1 -1
  116. package/build/hooks/anchor.js +9 -10
  117. package/build/hooks/anchor.js.map +1 -1
  118. package/build/hooks/background.js +85 -402
  119. package/build/hooks/background.js.map +1 -1
  120. package/build/hooks/index.js +9 -1
  121. package/build/hooks/index.js.map +1 -1
  122. package/build/hooks/layout-child.js +28 -6
  123. package/build/hooks/layout-child.js.map +1 -1
  124. package/build/hooks/layout.js +21 -10
  125. package/build/hooks/layout.js.map +1 -1
  126. package/build/hooks/position.js +1 -1
  127. package/build/hooks/position.js.map +1 -1
  128. package/build/hooks/use-zoom-out.js +47 -0
  129. package/build/hooks/use-zoom-out.js.map +1 -0
  130. package/build/index.js +7 -0
  131. package/build/index.js.map +1 -1
  132. package/build/private-apis.js +6 -1
  133. package/build/private-apis.js.map +1 -1
  134. package/build/private-apis.native.js +5 -1
  135. package/build/private-apis.native.js.map +1 -1
  136. package/build/store/private-actions.js +13 -0
  137. package/build/store/private-actions.js.map +1 -1
  138. package/build/store/private-keys.js +2 -1
  139. package/build/store/private-keys.js.map +1 -1
  140. package/build/store/private-selectors.js +24 -3
  141. package/build/store/private-selectors.js.map +1 -1
  142. package/build/store/reducer.js +53 -26
  143. package/build/store/reducer.js.map +1 -1
  144. package/build/store/selectors.js +34 -32
  145. package/build/store/selectors.js.map +1 -1
  146. package/build/store/utils.js +7 -1
  147. package/build/store/utils.js.map +1 -1
  148. package/build/utils/transform-styles/index.js +2 -1
  149. package/build/utils/transform-styles/index.js.map +1 -1
  150. package/build-module/components/block-actions/index.js +2 -4
  151. package/build-module/components/block-actions/index.js.map +1 -1
  152. package/build-module/components/block-heading-level-dropdown/index.js +5 -5
  153. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  154. package/build-module/components/block-heading-level-dropdown/index.native.js +5 -4
  155. package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
  156. package/build-module/components/block-list/block-crash-boundary.native.js +42 -0
  157. package/build-module/components/block-list/block-crash-boundary.native.js.map +1 -0
  158. package/build-module/components/block-list/block-crash-warning.native.js +15 -0
  159. package/build-module/components/block-list/block-crash-warning.native.js.map +1 -0
  160. package/build-module/components/block-list/block.js +11 -3
  161. package/build-module/components/block-list/block.js.map +1 -1
  162. package/build-module/components/block-list/block.native.js +7 -2
  163. package/build-module/components/block-list/block.native.js.map +1 -1
  164. package/build-module/components/block-mover/button.js +4 -1
  165. package/build-module/components/block-mover/button.js.map +1 -1
  166. package/build-module/components/block-mover/index.js +5 -1
  167. package/build-module/components/block-mover/index.js.map +1 -1
  168. package/build-module/components/block-patterns-list/index.js +4 -1
  169. package/build-module/components/block-patterns-list/index.js.map +1 -1
  170. package/build-module/components/block-settings/container.native.js +3 -2
  171. package/build-module/components/block-settings/container.native.js.map +1 -1
  172. package/build-module/components/block-settings-menu/block-settings-dropdown.js +37 -33
  173. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  174. package/build-module/components/block-settings-menu-controls/index.js +1 -3
  175. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  176. package/build-module/components/block-switcher/index.js +4 -3
  177. package/build-module/components/block-switcher/index.js.map +1 -1
  178. package/build-module/components/block-toolbar/index.js +8 -5
  179. package/build-module/components/block-toolbar/index.js.map +1 -1
  180. package/build-module/components/block-toolbar/shuffle.js +19 -10
  181. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  182. package/build-module/components/block-tools/block-selection-button.js +50 -10
  183. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  184. package/build-module/components/block-tools/index.js +14 -2
  185. package/build-module/components/block-tools/index.js.map +1 -1
  186. package/build-module/components/child-layout-control/index.js +109 -12
  187. package/build-module/components/child-layout-control/index.js.map +1 -1
  188. package/build-module/components/convert-to-group-buttons/toolbar.js +12 -1
  189. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  190. package/build-module/components/global-styles/advanced-panel.js +9 -2
  191. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  192. package/build-module/components/global-styles/background-panel.js +430 -0
  193. package/build-module/components/global-styles/background-panel.js.map +1 -0
  194. package/build-module/components/global-styles/color-panel.js +2 -1
  195. package/build-module/components/global-styles/color-panel.js.map +1 -1
  196. package/build-module/components/global-styles/dimensions-panel.js +9 -34
  197. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  198. package/build-module/components/global-styles/get-global-styles-changes.js +3 -0
  199. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  200. package/build-module/components/global-styles/hooks.js +1 -1
  201. package/build-module/components/global-styles/hooks.js.map +1 -1
  202. package/build-module/components/global-styles/index.js +1 -0
  203. package/build-module/components/global-styles/index.js.map +1 -1
  204. package/build-module/components/global-styles/use-global-styles-output.js +17 -16
  205. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  206. package/build-module/components/global-styles/utils.js +1 -2
  207. package/build-module/components/global-styles/utils.js.map +1 -1
  208. package/build-module/components/iframe/index.js +43 -34
  209. package/build-module/components/iframe/index.js.map +1 -1
  210. package/build-module/components/inserter/block-patterns-explorer/index.js +3 -6
  211. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
  212. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
  213. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  214. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
  216. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  217. package/build-module/components/inserter/library.js +2 -0
  218. package/build-module/components/inserter/library.js.map +1 -1
  219. package/build-module/components/inserter/menu.js +11 -11
  220. package/build-module/components/inserter/menu.js.map +1 -1
  221. package/build-module/components/inserter/mobile-tab-navigation.js +1 -1
  222. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
  223. package/build-module/components/inserter/search-items.js +33 -15
  224. package/build-module/components/inserter/search-items.js.map +1 -1
  225. package/build-module/components/inserter/search-results.js +2 -3
  226. package/build-module/components/inserter/search-results.js.map +1 -1
  227. package/build-module/components/inserter/tabs.js +1 -2
  228. package/build-module/components/inserter/tabs.js.map +1 -1
  229. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +28 -0
  230. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
  231. package/build-module/components/keyboard-shortcuts/index.js +11 -0
  232. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  233. package/build-module/components/list-view/block-select-button.js +19 -13
  234. package/build-module/components/list-view/block-select-button.js.map +1 -1
  235. package/build-module/components/list-view/block.js +6 -13
  236. package/build-module/components/list-view/block.js.map +1 -1
  237. package/build-module/components/list-view/index.js +17 -2
  238. package/build-module/components/list-view/index.js.map +1 -1
  239. package/build-module/components/list-view/use-list-view-collapse-items.js +40 -0
  240. package/build-module/components/list-view/use-list-view-collapse-items.js.map +1 -0
  241. package/build-module/components/list-view/utils.js +2 -1
  242. package/build-module/components/list-view/utils.js.map +1 -1
  243. package/build-module/components/rich-text/index.js +15 -12
  244. package/build-module/components/rich-text/index.js.map +1 -1
  245. package/build-module/components/rich-text/index.native.js +16 -11
  246. package/build-module/components/rich-text/index.native.js.map +1 -1
  247. package/build-module/components/rich-text/native/get-format-colors.native.js +1 -1
  248. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  249. package/build-module/components/rich-text/native/index.native.js +2 -2
  250. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  251. package/build-module/components/rich-text/with-deprecations.js +0 -3
  252. package/build-module/components/rich-text/with-deprecations.js.map +1 -1
  253. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  254. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
  255. package/build-module/components/url-popover/image-url-input-ui.js +50 -36
  256. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  257. package/build-module/components/use-block-display-information/index.js +5 -7
  258. package/build-module/components/use-block-display-information/index.js.map +1 -1
  259. package/build-module/components/use-moving-animation/index.js +4 -0
  260. package/build-module/components/use-moving-animation/index.js.map +1 -1
  261. package/build-module/components/warning/index.native.js +9 -4
  262. package/build-module/components/warning/index.native.js.map +1 -1
  263. package/build-module/hooks/anchor.js +10 -11
  264. package/build-module/hooks/anchor.js.map +1 -1
  265. package/build-module/hooks/background.js +82 -397
  266. package/build-module/hooks/background.js.map +1 -1
  267. package/build-module/hooks/index.js +3 -1
  268. package/build-module/hooks/index.js.map +1 -1
  269. package/build-module/hooks/layout-child.js +28 -6
  270. package/build-module/hooks/layout-child.js.map +1 -1
  271. package/build-module/hooks/layout.js +21 -10
  272. package/build-module/hooks/layout.js.map +1 -1
  273. package/build-module/hooks/position.js +1 -1
  274. package/build-module/hooks/position.js.map +1 -1
  275. package/build-module/hooks/use-zoom-out.js +41 -0
  276. package/build-module/hooks/use-zoom-out.js.map +1 -0
  277. package/build-module/index.js +1 -1
  278. package/build-module/index.js.map +1 -1
  279. package/build-module/private-apis.js +7 -2
  280. package/build-module/private-apis.js.map +1 -1
  281. package/build-module/private-apis.native.js +5 -1
  282. package/build-module/private-apis.native.js.map +1 -1
  283. package/build-module/store/private-actions.js +12 -0
  284. package/build-module/store/private-actions.js.map +1 -1
  285. package/build-module/store/private-keys.js +1 -0
  286. package/build-module/store/private-keys.js.map +1 -1
  287. package/build-module/store/private-selectors.js +22 -4
  288. package/build-module/store/private-selectors.js.map +1 -1
  289. package/build-module/store/reducer.js +52 -26
  290. package/build-module/store/reducer.js.map +1 -1
  291. package/build-module/store/selectors.js +35 -33
  292. package/build-module/store/selectors.js.map +1 -1
  293. package/build-module/store/utils.js +6 -1
  294. package/build-module/store/utils.js.map +1 -1
  295. package/build-module/utils/transform-styles/index.js +2 -1
  296. package/build-module/utils/transform-styles/index.js.map +1 -1
  297. package/build-style/content-rtl.css +18 -1
  298. package/build-style/content.css +18 -1
  299. package/build-style/style-rtl.css +92 -99
  300. package/build-style/style.css +92 -99
  301. package/package.json +31 -31
  302. package/src/components/block-actions/index.js +2 -8
  303. package/src/components/block-bindings-toolbar-indicator/style.scss +10 -8
  304. package/src/components/block-heading-level-dropdown/README.md +5 -5
  305. package/src/components/block-heading-level-dropdown/index.js +5 -5
  306. package/src/components/block-heading-level-dropdown/index.native.js +5 -4
  307. package/src/components/block-list/block-crash-boundary.native.js +43 -0
  308. package/src/components/block-list/block-crash-warning.native.js +19 -0
  309. package/src/components/block-list/block.js +19 -3
  310. package/src/components/block-list/block.native.js +14 -7
  311. package/src/components/block-list/content.scss +16 -0
  312. package/src/components/block-mover/button.js +4 -1
  313. package/src/components/block-mover/index.js +8 -1
  314. package/src/components/block-patterns-list/index.js +22 -17
  315. package/src/components/block-preview/style.scss +28 -0
  316. package/src/components/block-settings/container.native.js +5 -1
  317. package/src/components/block-settings-menu/block-settings-dropdown.js +49 -58
  318. package/src/components/block-settings-menu-controls/README.md +0 -9
  319. package/src/components/block-settings-menu-controls/index.js +1 -6
  320. package/src/components/block-switcher/index.js +5 -3
  321. package/src/components/block-switcher/style.scss +1 -1
  322. package/src/components/block-toolbar/index.js +25 -20
  323. package/src/components/block-toolbar/shuffle.js +20 -14
  324. package/src/components/block-toolbar/style.scss +1 -1
  325. package/src/components/block-toolbar/test/index.native.js +1 -7
  326. package/src/components/block-tools/block-selection-button.js +66 -9
  327. package/src/components/block-tools/index.js +18 -1
  328. package/src/components/button-block-appender/content.scss +5 -1
  329. package/src/components/child-layout-control/index.js +147 -35
  330. package/src/components/convert-to-group-buttons/toolbar.js +13 -1
  331. package/src/components/default-block-appender/content.scss +2 -2
  332. package/src/components/global-styles/advanced-panel.js +8 -2
  333. package/src/components/global-styles/background-panel.js +591 -0
  334. package/src/components/global-styles/color-panel.js +2 -1
  335. package/src/components/global-styles/dimensions-panel.js +9 -34
  336. package/src/components/global-styles/get-global-styles-changes.js +3 -0
  337. package/src/components/global-styles/hooks.js +1 -0
  338. package/src/components/global-styles/index.js +4 -0
  339. package/src/components/global-styles/style.scss +78 -1
  340. package/src/{hooks/test/background.js → components/global-styles/test/background-panel.js} +36 -1
  341. package/src/components/global-styles/test/get-global-styles-changes.js +22 -3
  342. package/src/components/global-styles/test/use-global-styles-output.js +40 -9
  343. package/src/components/global-styles/use-global-styles-output.js +30 -17
  344. package/src/components/global-styles/utils.js +1 -18
  345. package/src/components/iframe/index.js +79 -53
  346. package/src/components/inserter/block-patterns-explorer/index.js +2 -9
  347. package/src/components/inserter/block-patterns-explorer/pattern-list.js +7 -1
  348. package/src/components/inserter/block-patterns-tab/index.js +1 -0
  349. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
  350. package/src/components/inserter/library.js +4 -0
  351. package/src/components/inserter/menu.js +12 -11
  352. package/src/components/inserter/mobile-tab-navigation.js +1 -1
  353. package/src/components/inserter/search-items.js +37 -15
  354. package/src/components/inserter/search-results.js +1 -2
  355. package/src/components/inserter/style.scss +6 -12
  356. package/src/components/inserter/tabs.js +1 -2
  357. package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +31 -0
  358. package/src/components/keyboard-shortcuts/index.js +11 -0
  359. package/src/components/link-control/style.scss +0 -5
  360. package/src/components/list-view/block-select-button.js +15 -19
  361. package/src/components/list-view/block.js +12 -21
  362. package/src/components/list-view/index.js +18 -1
  363. package/src/components/list-view/style.scss +38 -28
  364. package/src/components/list-view/use-list-view-collapse-items.js +33 -0
  365. package/src/components/list-view/utils.js +4 -1
  366. package/src/components/rich-text/README.md +6 -0
  367. package/src/components/rich-text/index.js +30 -13
  368. package/src/components/rich-text/index.native.js +14 -11
  369. package/src/components/rich-text/native/get-format-colors.native.js +1 -1
  370. package/src/components/rich-text/native/index.native.js +2 -2
  371. package/src/components/rich-text/with-deprecations.js +0 -3
  372. package/src/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  373. package/src/components/url-popover/image-url-input-ui.js +68 -51
  374. package/src/components/use-block-display-information/index.js +8 -10
  375. package/src/components/use-moving-animation/index.js +1 -0
  376. package/src/components/warning/index.native.js +19 -15
  377. package/src/hooks/anchor.js +43 -61
  378. package/src/hooks/background.js +100 -516
  379. package/src/hooks/index.js +3 -0
  380. package/src/hooks/layout-child.js +44 -8
  381. package/src/hooks/layout.js +22 -18
  382. package/src/hooks/position.js +1 -1
  383. package/src/hooks/test/__snapshots__/anchor.native.js.snap +7 -0
  384. package/src/hooks/test/anchor.native.js +32 -0
  385. package/src/hooks/use-zoom-out.js +36 -0
  386. package/src/index.js +1 -0
  387. package/src/private-apis.js +13 -1
  388. package/src/private-apis.native.js +4 -0
  389. package/src/store/private-actions.js +12 -0
  390. package/src/store/private-keys.js +1 -0
  391. package/src/store/private-selectors.js +54 -27
  392. package/src/store/reducer.js +63 -41
  393. package/src/store/selectors.js +195 -180
  394. package/src/store/test/private-actions.js +10 -0
  395. package/src/store/test/private-selectors.js +13 -0
  396. package/src/store/test/reducer.js +26 -0
  397. package/src/store/test/selectors.js +90 -199
  398. package/src/store/utils.js +13 -0
  399. package/src/style.scss +0 -2
  400. package/src/utils/transform-styles/index.js +2 -1
  401. package/tsconfig.json +1 -0
  402. package/build/utils/calculate-scale.js +0 -17
  403. package/build/utils/calculate-scale.js.map +0 -1
  404. package/build-module/utils/calculate-scale.js +0 -11
  405. package/build-module/utils/calculate-scale.js.map +0 -1
  406. package/src/hooks/anchor.scss +0 -4
  407. package/src/hooks/background.scss +0 -75
  408. package/src/utils/calculate-scale.js +0 -20
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","helpText","selfStretch","parentLayout","orientation","__","ChildLayoutControl","value","childLayout","onChange","flexSize","columnSpan","rowSpan","type","parentType","default","defaultParentType","parentLayoutType","useEffect","_react","createElement","Fragment","__experimentalToggleGroupControl","__nextHasNoMarginBottom","size","label","childLayoutOrientation","help","newFlexSize","isBlock","__experimentalToggleGroupControlOption","key","__experimentalUnitControl","__experimentalHStack","__experimentalInputControl","min"],"sources":["@wordpress/block-editor/src/components/child-layout-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalInputControl as InputControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\nfunction helpText( selfStretch, parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\tif ( selfStretch === 'fill' ) {\n\t\treturn __( 'Stretch to fill available space.' );\n\t}\n\tif ( selfStretch === 'fixed' && orientation === 'horizontal' ) {\n\t\treturn __( 'Specify a fixed width.' );\n\t} else if ( selfStretch === 'fixed' ) {\n\t\treturn __( 'Specify a fixed height.' );\n\t}\n\treturn __( 'Fit contents.' );\n}\n\n/**\n * Form to edit the child layout value.\n *\n * @param {Object} props Props.\n * @param {Object} props.value The child layout value.\n * @param {Function} props.onChange Function to update the child layout value.\n * @param {Object} props.parentLayout The parent layout value.\n *\n * @return {Element} child layout edit element.\n */\nexport default function ChildLayoutControl( {\n\tvalue: childLayout = {},\n\tonChange,\n\tparentLayout,\n} ) {\n\tconst { selfStretch, flexSize, columnSpan, rowSpan } = childLayout;\n\tconst {\n\t\ttype: parentType,\n\t\tdefault: { type: defaultParentType = 'default' } = {},\n\t} = parentLayout ?? {};\n\tconst parentLayoutType = parentType || defaultParentType;\n\n\tuseEffect( () => {\n\t\tif ( selfStretch === 'fixed' && ! flexSize ) {\n\t\t\tonChange( {\n\t\t\t\t...childLayout,\n\t\t\t\tselfStretch: 'fit',\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t{ parentLayoutType === 'flex' && (\n\t\t\t\t<>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ childLayoutOrientation( parentLayout ) }\n\t\t\t\t\t\tvalue={ selfStretch || 'fit' }\n\t\t\t\t\t\thelp={ helpText( selfStretch, parentLayout ) }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tconst newFlexSize =\n\t\t\t\t\t\t\t\tvalue !== 'fixed' ? null : flexSize;\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tselfStretch: value,\n\t\t\t\t\t\t\t\tflexSize: newFlexSize,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fit' }\n\t\t\t\t\t\t\tvalue={ 'fit' }\n\t\t\t\t\t\t\tlabel={ __( 'Fit' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fill' }\n\t\t\t\t\t\t\tvalue={ 'fill' }\n\t\t\t\t\t\t\tlabel={ __( 'Fill' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fixed' }\n\t\t\t\t\t\t\tvalue={ 'fixed' }\n\t\t\t\t\t\t\tlabel={ __( 'Fixed' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t{ selfStretch === 'fixed' && (\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tselfStretch,\n\t\t\t\t\t\t\t\t\tflexSize: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ flexSize }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ parentLayoutType === 'grid' && (\n\t\t\t\t<HStack>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ __( 'Column Span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\tcolumnSpan: value,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ columnSpan }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t/>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ __( 'Row Span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\trowSpan: value,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ rowSpan }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function childLayoutOrientation( parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\treturn orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_i18n","_element","helpText","selfStretch","parentLayout","orientation","__","ChildLayoutControl","value","childLayout","onChange","isShownByDefault","panelId","flexSize","columnStart","rowStart","columnSpan","rowSpan","type","parentType","default","defaultParentType","parentLayoutType","hasFlexValue","flexResetLabel","resetFlex","undefined","hasStartValue","hasSpanValue","resetGridStarts","resetGridSpans","useEffect","_react","createElement","Fragment","__experimentalVStack","as","ToolsPanelItem","spacing","hasValue","label","onDeselect","__experimentalToggleGroupControl","__nextHasNoMarginBottom","size","childLayoutOrientation","help","newFlexSize","isBlock","__experimentalToggleGroupControlOption","key","__experimentalUnitControl","__experimentalHStack","__experimentalInputControl","min","window","__experimentalEnableGridInteractivity","Flex","FlexItem","style","width","max","columnCount"],"sources":["@wordpress/block-editor/src/components/child-layout-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalInputControl as InputControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\nfunction helpText( selfStretch, parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\tif ( selfStretch === 'fill' ) {\n\t\treturn __( 'Stretch to fill available space.' );\n\t}\n\tif ( selfStretch === 'fixed' && orientation === 'horizontal' ) {\n\t\treturn __( 'Specify a fixed width.' );\n\t} else if ( selfStretch === 'fixed' ) {\n\t\treturn __( 'Specify a fixed height.' );\n\t}\n\treturn __( 'Fit contents.' );\n}\n\n/**\n * Form to edit the child layout value.\n *\n * @param {Object} props Props.\n * @param {Object} props.value The child layout value.\n * @param {Function} props.onChange Function to update the child layout value.\n * @param {Object} props.parentLayout The parent layout value.\n *\n * @param {boolean} props.isShownByDefault\n * @param {string} props.panelId\n * @return {Element} child layout edit element.\n */\nexport default function ChildLayoutControl( {\n\tvalue: childLayout = {},\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n} ) {\n\tconst {\n\t\tselfStretch,\n\t\tflexSize,\n\t\tcolumnStart,\n\t\trowStart,\n\t\tcolumnSpan,\n\t\trowSpan,\n\t} = childLayout;\n\tconst {\n\t\ttype: parentType,\n\t\tdefault: { type: defaultParentType = 'default' } = {},\n\t\torientation = 'horizontal',\n\t} = parentLayout ?? {};\n\tconst parentLayoutType = parentType || defaultParentType;\n\n\tconst hasFlexValue = () => !! selfStretch;\n\tconst flexResetLabel =\n\t\torientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n\tconst resetFlex = () => {\n\t\tonChange( {\n\t\t\tselfStretch: undefined,\n\t\t\tflexSize: undefined,\n\t\t} );\n\t};\n\n\tconst hasStartValue = () => !! columnStart || !! rowStart;\n\tconst hasSpanValue = () => !! columnSpan || !! rowSpan;\n\tconst resetGridStarts = () => {\n\t\tonChange( {\n\t\t\tcolumnStart: undefined,\n\t\t\trowStart: undefined,\n\t\t} );\n\t};\n\tconst resetGridSpans = () => {\n\t\tonChange( {\n\t\t\tcolumnSpan: undefined,\n\t\t\trowSpan: undefined,\n\t\t} );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( selfStretch === 'fixed' && ! flexSize ) {\n\t\t\tonChange( {\n\t\t\t\t...childLayout,\n\t\t\t\tselfStretch: 'fit',\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t{ parentLayoutType === 'flex' && (\n\t\t\t\t<VStack\n\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\thasValue={ hasFlexValue }\n\t\t\t\t\tlabel={ flexResetLabel }\n\t\t\t\t\tonDeselect={ resetFlex }\n\t\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ childLayoutOrientation( parentLayout ) }\n\t\t\t\t\t\tvalue={ selfStretch || 'fit' }\n\t\t\t\t\t\thelp={ helpText( selfStretch, parentLayout ) }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tconst newFlexSize =\n\t\t\t\t\t\t\t\tvalue !== 'fixed' ? null : flexSize;\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tselfStretch: value,\n\t\t\t\t\t\t\t\tflexSize: newFlexSize,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fit' }\n\t\t\t\t\t\t\tvalue={ 'fit' }\n\t\t\t\t\t\t\tlabel={ __( 'Fit' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fill' }\n\t\t\t\t\t\t\tvalue={ 'fill' }\n\t\t\t\t\t\t\tlabel={ __( 'Fill' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fixed' }\n\t\t\t\t\t\t\tvalue={ 'fixed' }\n\t\t\t\t\t\t\tlabel={ __( 'Fixed' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t{ selfStretch === 'fixed' && (\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tselfStretch,\n\t\t\t\t\t\t\t\t\tflexSize: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ flexSize }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t\t{ parentLayoutType === 'grid' && (\n\t\t\t\t<>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\t\thasValue={ hasSpanValue }\n\t\t\t\t\t\tlabel={ __( 'Grid span' ) }\n\t\t\t\t\t\tonDeselect={ resetGridSpans }\n\t\t\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tlabel={ __( 'Column span' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t\tcolumnSpan: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ columnSpan }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tlabel={ __( 'Row span' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\trowSpan: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ rowSpan }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t{ window.__experimentalEnableGridInteractivity && (\n\t\t\t\t\t\t// Use Flex with an explicit width on the FlexItem instead of HStack to\n\t\t\t\t\t\t// work around an issue in webkit where inputs with a max attribute are\n\t\t\t\t\t\t// sized incorrectly.\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\t\t\thasValue={ hasStartValue }\n\t\t\t\t\t\t\tlabel={ __( 'Grid placement' ) }\n\t\t\t\t\t\t\tonDeselect={ resetGridStarts }\n\t\t\t\t\t\t\tisShownByDefault={ false }\n\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Column' ) }\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t\tcolumnStart: value,\n\t\t\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tvalue={ columnStart }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tmax={ parentLayout?.columnCount }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Row' ) }\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\t\t\trowStart: value,\n\t\t\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tvalue={ rowStart }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tmax={ parentLayout?.columnCount }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function childLayoutOrientation( parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\treturn orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n}\n"],"mappings":"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"}
@@ -31,6 +31,9 @@ const layouts = {
31
31
  stack: {
32
32
  type: 'flex',
33
33
  orientation: 'vertical'
34
+ },
35
+ grid: {
36
+ type: 'grid'
34
37
  }
35
38
  };
36
39
  function BlockGroupToolbar() {
@@ -72,6 +75,7 @@ function BlockGroupToolbar() {
72
75
  };
73
76
  const onConvertToRow = () => onConvertToGroup('row');
74
77
  const onConvertToStack = () => onConvertToGroup('stack');
78
+ const onConvertToGrid = () => onConvertToGroup('grid');
75
79
 
76
80
  // Don't render the button if the current selection cannot be grouped.
77
81
  // A good example is selecting multiple button blocks within a Buttons block:
@@ -86,6 +90,9 @@ function BlockGroupToolbar() {
86
90
  const canInsertStack = !!variations.find(({
87
91
  name
88
92
  }) => name === 'group-stack');
93
+ const canInsertGrid = !!variations.find(({
94
+ name
95
+ }) => name === 'group-grid');
89
96
  return (0, _react.createElement)(_components.ToolbarGroup, null, (0, _react.createElement)(_components.ToolbarButton, {
90
97
  icon: _icons.group,
91
98
  label: (0, _i18n._x)('Group', 'verb'),
@@ -98,6 +105,10 @@ function BlockGroupToolbar() {
98
105
  icon: _icons.stack,
99
106
  label: (0, _i18n._x)('Stack', 'verb'),
100
107
  onClick: onConvertToStack
108
+ }), canInsertGrid && (0, _react.createElement)(_components.ToolbarButton, {
109
+ icon: _icons.grid,
110
+ label: (0, _i18n._x)('Grid', 'verb'),
111
+ onClick: onConvertToGrid
101
112
  }));
102
113
  }
103
114
  var _default = exports.default = BlockGroupToolbar;
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_blocks","_components","_icons","_i18n","_convertToGroupButtons","_store","layouts","group","type","row","flexWrap","stack","orientation","BlockGroupToolbar","blocksSelection","clientIds","groupingBlockName","isGroupable","useConvertToGroupButtonProps","replaceBlocks","useDispatch","blockEditorStore","canRemove","variations","useSelect","select","canRemoveBlocks","getBlockVariations","blocksStore","onConvertToGroup","layout","newBlocks","switchToBlockType","length","attributes","onConvertToRow","onConvertToStack","canInsertRow","find","name","canInsertStack","_react","createElement","ToolbarGroup","ToolbarButton","icon","label","_x","onClick","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/convert-to-group-buttons/toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { switchToBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { group, row, stack } from '@wordpress/icons';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useConvertToGroupButtonProps } from '../convert-to-group-buttons';\nimport { store as blockEditorStore } from '../../store';\n\nconst layouts = {\n\tgroup: { type: 'constrained' },\n\trow: { type: 'flex', flexWrap: 'nowrap' },\n\tstack: { type: 'flex', orientation: 'vertical' },\n};\n\nfunction BlockGroupToolbar() {\n\tconst { blocksSelection, clientIds, groupingBlockName, isGroupable } =\n\t\tuseConvertToGroupButtonProps();\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst { canRemove, variations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\tvariations: getBlockVariations(\n\t\t\t\t\tgroupingBlockName,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, groupingBlockName ]\n\t);\n\n\tconst onConvertToGroup = ( layout ) => {\n\t\tconst newBlocks = switchToBlockType(\n\t\t\tblocksSelection,\n\t\t\tgroupingBlockName\n\t\t);\n\n\t\tif ( typeof layout !== 'string' ) {\n\t\t\tlayout = 'group';\n\t\t}\n\n\t\tif ( newBlocks && newBlocks.length > 0 ) {\n\t\t\t// Because the block is not in the store yet we can't use\n\t\t\t// updateBlockAttributes so need to manually update attributes.\n\t\t\tnewBlocks[ 0 ].attributes.layout = layouts[ layout ];\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t}\n\t};\n\n\tconst onConvertToRow = () => onConvertToGroup( 'row' );\n\tconst onConvertToStack = () => onConvertToGroup( 'stack' );\n\n\t// Don't render the button if the current selection cannot be grouped.\n\t// A good example is selecting multiple button blocks within a Buttons block:\n\t// The group block is not a valid child of Buttons, so we should not show the button.\n\t// Any blocks that are locked against removal also cannot be grouped.\n\tif ( ! isGroupable || ! canRemove ) {\n\t\treturn null;\n\t}\n\n\tconst canInsertRow = !! variations.find(\n\t\t( { name } ) => name === 'group-row'\n\t);\n\tconst canInsertStack = !! variations.find(\n\t\t( { name } ) => name === 'group-stack'\n\t);\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ group }\n\t\t\t\tlabel={ _x( 'Group', 'verb' ) }\n\t\t\t\tonClick={ onConvertToGroup }\n\t\t\t/>\n\t\t\t{ canInsertRow && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ row }\n\t\t\t\t\tlabel={ _x( 'Row', 'single horizontal line' ) }\n\t\t\t\t\tonClick={ onConvertToRow }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertStack && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ stack }\n\t\t\t\t\tlabel={ _x( 'Stack', 'verb' ) }\n\t\t\t\t\tonClick={ onConvertToStack }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default BlockGroupToolbar;\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAKA,IAAAK,sBAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAbA;AACA;AACA;;AAOA;AACA;AACA;;AAIA,MAAMO,OAAO,GAAG;EACfC,KAAK,EAAE;IAAEC,IAAI,EAAE;EAAc,CAAC;EAC9BC,GAAG,EAAE;IAAED,IAAI,EAAE,MAAM;IAAEE,QAAQ,EAAE;EAAS,CAAC;EACzCC,KAAK,EAAE;IAAEH,IAAI,EAAE,MAAM;IAAEI,WAAW,EAAE;EAAW;AAChD,CAAC;AAED,SAASC,iBAAiBA,CAAA,EAAG;EAC5B,MAAM;IAAEC,eAAe;IAAEC,SAAS;IAAEC,iBAAiB;IAAEC;EAAY,CAAC,GACnE,IAAAC,mDAA4B,EAAC,CAAC;EAC/B,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAiB,CAAC;EAEzD,MAAM;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAG,IAAAC,eAAS,EACxCC,MAAM,IAAM;IACb,MAAM;MAAEC;IAAgB,CAAC,GAAGD,MAAM,CAAEJ,YAAiB,CAAC;IACtD,MAAM;MAAEM;IAAmB,CAAC,GAAGF,MAAM,CAAEG,aAAY,CAAC;IAEpD,OAAO;MACNN,SAAS,EAAEI,eAAe,CAAEX,SAAU,CAAC;MACvCQ,UAAU,EAAEI,kBAAkB,CAC7BX,iBAAiB,EACjB,WACD;IACD,CAAC;EACF,CAAC,EACD,CAAED,SAAS,EAAEC,iBAAiB,CAC/B,CAAC;EAED,MAAMa,gBAAgB,GAAKC,MAAM,IAAM;IACtC,MAAMC,SAAS,GAAG,IAAAC,yBAAiB,EAClClB,eAAe,EACfE,iBACD,CAAC;IAED,IAAK,OAAOc,MAAM,KAAK,QAAQ,EAAG;MACjCA,MAAM,GAAG,OAAO;IACjB;IAEA,IAAKC,SAAS,IAAIA,SAAS,CAACE,MAAM,GAAG,CAAC,EAAG;MACxC;MACA;MACAF,SAAS,CAAE,CAAC,CAAE,CAACG,UAAU,CAACJ,MAAM,GAAGxB,OAAO,CAAEwB,MAAM,CAAE;MACpDX,aAAa,CAAEJ,SAAS,EAAEgB,SAAU,CAAC;IACtC;EACD,CAAC;EAED,MAAMI,cAAc,GAAGA,CAAA,KAAMN,gBAAgB,CAAE,KAAM,CAAC;EACtD,MAAMO,gBAAgB,GAAGA,CAAA,KAAMP,gBAAgB,CAAE,OAAQ,CAAC;;EAE1D;EACA;EACA;EACA;EACA,IAAK,CAAEZ,WAAW,IAAI,CAAEK,SAAS,EAAG;IACnC,OAAO,IAAI;EACZ;EAEA,MAAMe,YAAY,GAAG,CAAC,CAAEd,UAAU,CAACe,IAAI,CACtC,CAAE;IAAEC;EAAK,CAAC,KAAMA,IAAI,KAAK,WAC1B,CAAC;EACD,MAAMC,cAAc,GAAG,CAAC,CAAEjB,UAAU,CAACe,IAAI,CACxC,CAAE;IAAEC;EAAK,CAAC,KAAMA,IAAI,KAAK,aAC1B,CAAC;EAED,OACC,IAAAE,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAA0C,YAAY,QACZ,IAAAF,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAA2C,aAAa;IACbC,IAAI,EAAGtC,YAAO;IACduC,KAAK,EAAG,IAAAC,QAAE,EAAE,OAAO,EAAE,MAAO,CAAG;IAC/BC,OAAO,EAAGnB;EAAkB,CAC5B,CAAC,EACAQ,YAAY,IACb,IAAAI,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAA2C,aAAa;IACbC,IAAI,EAAGpC,UAAK;IACZqC,KAAK,EAAG,IAAAC,QAAE,EAAE,KAAK,EAAE,wBAAyB,CAAG;IAC/CC,OAAO,EAAGb;EAAgB,CAC1B,CACD,EACCK,cAAc,IACf,IAAAC,MAAA,CAAAC,aAAA,EAACzC,WAAA,CAAA2C,aAAa;IACbC,IAAI,EAAGlC,YAAO;IACdmC,KAAK,EAAG,IAAAC,QAAE,EAAE,OAAO,EAAE,MAAO,CAAG;IAC/BC,OAAO,EAAGZ;EAAkB,CAC5B,CAEW,CAAC;AAEjB;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEctC,iBAAiB"}
1
+ {"version":3,"names":["_data","require","_blocks","_components","_icons","_i18n","_convertToGroupButtons","_store","layouts","group","type","row","flexWrap","stack","orientation","grid","BlockGroupToolbar","blocksSelection","clientIds","groupingBlockName","isGroupable","useConvertToGroupButtonProps","replaceBlocks","useDispatch","blockEditorStore","canRemove","variations","useSelect","select","canRemoveBlocks","getBlockVariations","blocksStore","onConvertToGroup","layout","newBlocks","switchToBlockType","length","attributes","onConvertToRow","onConvertToStack","onConvertToGrid","canInsertRow","find","name","canInsertStack","canInsertGrid","_react","createElement","ToolbarGroup","ToolbarButton","icon","label","_x","onClick","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/convert-to-group-buttons/toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { switchToBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { group, row, stack, grid } from '@wordpress/icons';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useConvertToGroupButtonProps } from '../convert-to-group-buttons';\nimport { store as blockEditorStore } from '../../store';\n\nconst layouts = {\n\tgroup: { type: 'constrained' },\n\trow: { type: 'flex', flexWrap: 'nowrap' },\n\tstack: { type: 'flex', orientation: 'vertical' },\n\tgrid: { type: 'grid' },\n};\n\nfunction BlockGroupToolbar() {\n\tconst { blocksSelection, clientIds, groupingBlockName, isGroupable } =\n\t\tuseConvertToGroupButtonProps();\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst { canRemove, variations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\tvariations: getBlockVariations(\n\t\t\t\t\tgroupingBlockName,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, groupingBlockName ]\n\t);\n\n\tconst onConvertToGroup = ( layout ) => {\n\t\tconst newBlocks = switchToBlockType(\n\t\t\tblocksSelection,\n\t\t\tgroupingBlockName\n\t\t);\n\n\t\tif ( typeof layout !== 'string' ) {\n\t\t\tlayout = 'group';\n\t\t}\n\n\t\tif ( newBlocks && newBlocks.length > 0 ) {\n\t\t\t// Because the block is not in the store yet we can't use\n\t\t\t// updateBlockAttributes so need to manually update attributes.\n\t\t\tnewBlocks[ 0 ].attributes.layout = layouts[ layout ];\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t}\n\t};\n\n\tconst onConvertToRow = () => onConvertToGroup( 'row' );\n\tconst onConvertToStack = () => onConvertToGroup( 'stack' );\n\tconst onConvertToGrid = () => onConvertToGroup( 'grid' );\n\n\t// Don't render the button if the current selection cannot be grouped.\n\t// A good example is selecting multiple button blocks within a Buttons block:\n\t// The group block is not a valid child of Buttons, so we should not show the button.\n\t// Any blocks that are locked against removal also cannot be grouped.\n\tif ( ! isGroupable || ! canRemove ) {\n\t\treturn null;\n\t}\n\n\tconst canInsertRow = !! variations.find(\n\t\t( { name } ) => name === 'group-row'\n\t);\n\tconst canInsertStack = !! variations.find(\n\t\t( { name } ) => name === 'group-stack'\n\t);\n\tconst canInsertGrid = !! variations.find(\n\t\t( { name } ) => name === 'group-grid'\n\t);\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ group }\n\t\t\t\tlabel={ _x( 'Group', 'verb' ) }\n\t\t\t\tonClick={ onConvertToGroup }\n\t\t\t/>\n\t\t\t{ canInsertRow && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ row }\n\t\t\t\t\tlabel={ _x( 'Row', 'single horizontal line' ) }\n\t\t\t\t\tonClick={ onConvertToRow }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertStack && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ stack }\n\t\t\t\t\tlabel={ _x( 'Stack', 'verb' ) }\n\t\t\t\t\tonClick={ onConvertToStack }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertGrid && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ grid }\n\t\t\t\t\tlabel={ _x( 'Grid', 'verb' ) }\n\t\t\t\t\tonClick={ onConvertToGrid }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default BlockGroupToolbar;\n"],"mappings":"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"}
@@ -32,9 +32,12 @@ function AdvancedPanel({
32
32
  css: newValue
33
33
  });
34
34
  if (cssError) {
35
+ // Check if the new value is valid CSS, and pass a wrapping selector
36
+ // to ensure that `transformStyles` validates the CSS. Note that the
37
+ // wrapping selector here is not used in the actual output of any styles.
35
38
  const [transformed] = (0, _transformStyles.default)([{
36
39
  css: newValue
37
- }], '.editor-styles-wrapper');
40
+ }], '.for-validation-only');
38
41
  if (transformed) {
39
42
  setCSSError(null);
40
43
  }
@@ -45,9 +48,13 @@ function AdvancedPanel({
45
48
  setCSSError(null);
46
49
  return;
47
50
  }
51
+
52
+ // Check if the new value is valid CSS, and pass a wrapping selector
53
+ // to ensure that `transformStyles` validates the CSS. Note that the
54
+ // wrapping selector here is not used in the actual output of any styles.
48
55
  const [transformed] = (0, _transformStyles.default)([{
49
56
  css: event.target.value
50
- }], '.editor-styles-wrapper');
57
+ }], '.for-validation-only');
51
58
  setCSSError(transformed === null ? (0, _i18n.__)('There is an error with your CSS structure.') : null);
52
59
  }
53
60
  return (0, _react.createElement)(_components.__experimentalVStack, {
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_i18n","_transformStyles","_interopRequireDefault","AdvancedPanel","value","onChange","inheritedValue","cssError","setCSSError","useState","customCSS","css","handleOnChange","newValue","transformed","transformStyles","handleOnBlur","event","target","__","_react","createElement","__experimentalVStack","spacing","Notice","status","onRemove","TextareaControl","label","__nextHasNoMarginBottom","onBlur","className","spellCheck"],"sources":["@wordpress/block-editor/src/components/global-styles/advanced-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tTextareaControl,\n\tNotice,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { default as transformStyles } from '../../utils/transform-styles';\n\nexport default function AdvancedPanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n} ) {\n\t// Custom CSS\n\tconst [ cssError, setCSSError ] = useState( null );\n\tconst customCSS = inheritedValue?.css;\n\tfunction handleOnChange( newValue ) {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tcss: newValue,\n\t\t} );\n\t\tif ( cssError ) {\n\t\t\tconst [ transformed ] = transformStyles(\n\t\t\t\t[ { css: newValue } ],\n\t\t\t\t'.editor-styles-wrapper'\n\t\t\t);\n\t\t\tif ( transformed ) {\n\t\t\t\tsetCSSError( null );\n\t\t\t}\n\t\t}\n\t}\n\tfunction handleOnBlur( event ) {\n\t\tif ( ! event?.target?.value ) {\n\t\t\tsetCSSError( null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ transformed ] = transformStyles(\n\t\t\t[ { css: event.target.value } ],\n\t\t\t'.editor-styles-wrapper'\n\t\t);\n\n\t\tsetCSSError(\n\t\t\ttransformed === null\n\t\t\t\t? __( 'There is an error with your CSS structure.' )\n\t\t\t\t: null\n\t\t);\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t{ cssError && (\n\t\t\t\t<Notice status=\"error\" onRemove={ () => setCSSError( null ) }>\n\t\t\t\t\t{ cssError }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ __( 'Additional CSS' ) }\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tvalue={ customCSS }\n\t\t\t\tonChange={ ( newValue ) => handleOnChange( newValue ) }\n\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\tclassName=\"block-editor-global-styles-advanced-panel__custom-css-input\"\n\t\t\t\tspellCheck={ false }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,gBAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAdA;AACA;AACA;;AASA;AACA;AACA;;AAGe,SAASK,aAAaA,CAAE;EACtCC,KAAK;EACLC,QAAQ;EACRC,cAAc,GAAGF;AAClB,CAAC,EAAG;EACH;EACA,MAAM,CAAEG,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAC,iBAAQ,EAAE,IAAK,CAAC;EAClD,MAAMC,SAAS,GAAGJ,cAAc,EAAEK,GAAG;EACrC,SAASC,cAAcA,CAAEC,QAAQ,EAAG;IACnCR,QAAQ,CAAE;MACT,GAAGD,KAAK;MACRO,GAAG,EAAEE;IACN,CAAE,CAAC;IACH,IAAKN,QAAQ,EAAG;MACf,MAAM,CAAEO,WAAW,CAAE,GAAG,IAAAC,wBAAe,EACtC,CAAE;QAAEJ,GAAG,EAAEE;MAAS,CAAC,CAAE,EACrB,wBACD,CAAC;MACD,IAAKC,WAAW,EAAG;QAClBN,WAAW,CAAE,IAAK,CAAC;MACpB;IACD;EACD;EACA,SAASQ,YAAYA,CAAEC,KAAK,EAAG;IAC9B,IAAK,CAAEA,KAAK,EAAEC,MAAM,EAAEd,KAAK,EAAG;MAC7BI,WAAW,CAAE,IAAK,CAAC;MACnB;IACD;IAEA,MAAM,CAAEM,WAAW,CAAE,GAAG,IAAAC,wBAAe,EACtC,CAAE;MAAEJ,GAAG,EAAEM,KAAK,CAACC,MAAM,CAACd;IAAM,CAAC,CAAE,EAC/B,wBACD,CAAC;IAEDI,WAAW,CACVM,WAAW,KAAK,IAAI,GACjB,IAAAK,QAAE,EAAE,4CAA6C,CAAC,GAClD,IACJ,CAAC;EACF;EAEA,OACC,IAAAC,MAAA,CAAAC,aAAA,EAACxB,WAAA,CAAAyB,oBAAM;IAACC,OAAO,EAAG;EAAG,GAClBhB,QAAQ,IACT,IAAAa,MAAA,CAAAC,aAAA,EAACxB,WAAA,CAAA2B,MAAM;IAACC,MAAM,EAAC,OAAO;IAACC,QAAQ,EAAGA,CAAA,KAAMlB,WAAW,CAAE,IAAK;EAAG,GAC1DD,QACK,CACR,EACD,IAAAa,MAAA,CAAAC,aAAA,EAACxB,WAAA,CAAA8B,eAAe;IACfC,KAAK,EAAG,IAAAT,QAAE,EAAE,gBAAiB,CAAG;IAChCU,uBAAuB;IACvBzB,KAAK,EAAGM,SAAW;IACnBL,QAAQ,EAAKQ,QAAQ,IAAMD,cAAc,CAAEC,QAAS,CAAG;IACvDiB,MAAM,EAAGd,YAAc;IACvBe,SAAS,EAAC,6DAA6D;IACvEC,UAAU,EAAG;EAAO,CACpB,CACM,CAAC;AAEX"}
1
+ {"version":3,"names":["_components","require","_element","_i18n","_transformStyles","_interopRequireDefault","AdvancedPanel","value","onChange","inheritedValue","cssError","setCSSError","useState","customCSS","css","handleOnChange","newValue","transformed","transformStyles","handleOnBlur","event","target","__","_react","createElement","__experimentalVStack","spacing","Notice","status","onRemove","TextareaControl","label","__nextHasNoMarginBottom","onBlur","className","spellCheck"],"sources":["@wordpress/block-editor/src/components/global-styles/advanced-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tTextareaControl,\n\tNotice,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { default as transformStyles } from '../../utils/transform-styles';\n\nexport default function AdvancedPanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n} ) {\n\t// Custom CSS\n\tconst [ cssError, setCSSError ] = useState( null );\n\tconst customCSS = inheritedValue?.css;\n\tfunction handleOnChange( newValue ) {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tcss: newValue,\n\t\t} );\n\t\tif ( cssError ) {\n\t\t\t// Check if the new value is valid CSS, and pass a wrapping selector\n\t\t\t// to ensure that `transformStyles` validates the CSS. Note that the\n\t\t\t// wrapping selector here is not used in the actual output of any styles.\n\t\t\tconst [ transformed ] = transformStyles(\n\t\t\t\t[ { css: newValue } ],\n\t\t\t\t'.for-validation-only'\n\t\t\t);\n\t\t\tif ( transformed ) {\n\t\t\t\tsetCSSError( null );\n\t\t\t}\n\t\t}\n\t}\n\tfunction handleOnBlur( event ) {\n\t\tif ( ! event?.target?.value ) {\n\t\t\tsetCSSError( null );\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the new value is valid CSS, and pass a wrapping selector\n\t\t// to ensure that `transformStyles` validates the CSS. Note that the\n\t\t// wrapping selector here is not used in the actual output of any styles.\n\t\tconst [ transformed ] = transformStyles(\n\t\t\t[ { css: event.target.value } ],\n\t\t\t'.for-validation-only'\n\t\t);\n\n\t\tsetCSSError(\n\t\t\ttransformed === null\n\t\t\t\t? __( 'There is an error with your CSS structure.' )\n\t\t\t\t: null\n\t\t);\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t{ cssError && (\n\t\t\t\t<Notice status=\"error\" onRemove={ () => setCSSError( null ) }>\n\t\t\t\t\t{ cssError }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ __( 'Additional CSS' ) }\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tvalue={ customCSS }\n\t\t\t\tonChange={ ( newValue ) => handleOnChange( newValue ) }\n\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\tclassName=\"block-editor-global-styles-advanced-panel__custom-css-input\"\n\t\t\t\tspellCheck={ false }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,gBAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAdA;AACA;AACA;;AASA;AACA;AACA;;AAGe,SAASK,aAAaA,CAAE;EACtCC,KAAK;EACLC,QAAQ;EACRC,cAAc,GAAGF;AAClB,CAAC,EAAG;EACH;EACA,MAAM,CAAEG,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAC,iBAAQ,EAAE,IAAK,CAAC;EAClD,MAAMC,SAAS,GAAGJ,cAAc,EAAEK,GAAG;EACrC,SAASC,cAAcA,CAAEC,QAAQ,EAAG;IACnCR,QAAQ,CAAE;MACT,GAAGD,KAAK;MACRO,GAAG,EAAEE;IACN,CAAE,CAAC;IACH,IAAKN,QAAQ,EAAG;MACf;MACA;MACA;MACA,MAAM,CAAEO,WAAW,CAAE,GAAG,IAAAC,wBAAe,EACtC,CAAE;QAAEJ,GAAG,EAAEE;MAAS,CAAC,CAAE,EACrB,sBACD,CAAC;MACD,IAAKC,WAAW,EAAG;QAClBN,WAAW,CAAE,IAAK,CAAC;MACpB;IACD;EACD;EACA,SAASQ,YAAYA,CAAEC,KAAK,EAAG;IAC9B,IAAK,CAAEA,KAAK,EAAEC,MAAM,EAAEd,KAAK,EAAG;MAC7BI,WAAW,CAAE,IAAK,CAAC;MACnB;IACD;;IAEA;IACA;IACA;IACA,MAAM,CAAEM,WAAW,CAAE,GAAG,IAAAC,wBAAe,EACtC,CAAE;MAAEJ,GAAG,EAAEM,KAAK,CAACC,MAAM,CAACd;IAAM,CAAC,CAAE,EAC/B,sBACD,CAAC;IAEDI,WAAW,CACVM,WAAW,KAAK,IAAI,GACjB,IAAAK,QAAE,EAAE,4CAA6C,CAAC,GAClD,IACJ,CAAC;EACF;EAEA,OACC,IAAAC,MAAA,CAAAC,aAAA,EAACxB,WAAA,CAAAyB,oBAAM;IAACC,OAAO,EAAG;EAAG,GAClBhB,QAAQ,IACT,IAAAa,MAAA,CAAAC,aAAA,EAACxB,WAAA,CAAA2B,MAAM;IAACC,MAAM,EAAC,OAAO;IAACC,QAAQ,EAAGA,CAAA,KAAMlB,WAAW,CAAE,IAAK;EAAG,GAC1DD,QACK,CACR,EACD,IAAAa,MAAA,CAAAC,aAAA,EAACxB,WAAA,CAAA8B,eAAe;IACfC,KAAK,EAAG,IAAAT,QAAE,EAAE,gBAAiB,CAAG;IAChCU,uBAAuB;IACvBzB,KAAK,EAAGM,SAAW;IACnBL,QAAQ,EAAKQ,QAAQ,IAAMD,cAAc,CAAEC,QAAS,CAAG;IACvDiB,MAAM,EAAGd,YAAc;IACvBe,SAAS,EAAC,6DAA6D;IACvEC,UAAU,EAAG;EAAO,CACpB,CACM,CAAC;AAEX"}
@@ -0,0 +1,444 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.coordsToBackgroundPosition = exports.backgroundPositionToCoords = void 0;
8
+ exports.default = BackgroundPanel;
9
+ exports.hasBackgroundImageValue = hasBackgroundImageValue;
10
+ exports.hasBackgroundSizeValue = hasBackgroundSizeValue;
11
+ exports.useHasBackgroundPanel = useHasBackgroundPanel;
12
+ var _react = require("react");
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+ var _components = require("@wordpress/components");
15
+ var _i18n = require("@wordpress/i18n");
16
+ var _notices = require("@wordpress/notices");
17
+ var _url = require("@wordpress/url");
18
+ var _element = require("@wordpress/element");
19
+ var _data = require("@wordpress/data");
20
+ var _dom = require("@wordpress/dom");
21
+ var _blob = require("@wordpress/blob");
22
+ var _utils = require("./utils");
23
+ var _object = require("../../utils/object");
24
+ var _mediaReplaceFlow = _interopRequireDefault(require("../media-replace-flow"));
25
+ var _store = require("../../store");
26
+ /**
27
+ * External dependencies
28
+ */
29
+
30
+ /**
31
+ * WordPress dependencies
32
+ */
33
+
34
+ /**
35
+ * Internal dependencies
36
+ */
37
+
38
+ const IMAGE_BACKGROUND_TYPE = 'image';
39
+
40
+ /**
41
+ * Checks site settings to see if the background panel may be used.
42
+ * `settings.background.backgroundSize` exists also,
43
+ * but can only be used if settings?.background?.backgroundImage is `true`.
44
+ *
45
+ * @param {Object} settings Site settings
46
+ * @return {boolean} Whether site settings has activated background panel.
47
+ */
48
+ function useHasBackgroundPanel(settings) {
49
+ return _element.Platform.OS === 'web' && settings?.background?.backgroundImage;
50
+ }
51
+
52
+ /**
53
+ * Checks if there is a current value in the background size block support
54
+ * attributes. Background size values include background size as well
55
+ * as background position.
56
+ *
57
+ * @param {Object} style Style attribute.
58
+ * @return {boolean} Whether the block has a background size value set.
59
+ */
60
+ function hasBackgroundSizeValue(style) {
61
+ return style?.background?.backgroundPosition !== undefined || style?.background?.backgroundSize !== undefined;
62
+ }
63
+
64
+ /**
65
+ * Checks if there is a current value in the background image block support
66
+ * attributes.
67
+ *
68
+ * @param {Object} style Style attribute.
69
+ * @return {boolean} Whether the block has a background image value set.
70
+ */
71
+ function hasBackgroundImageValue(style) {
72
+ return !!style?.background?.backgroundImage?.id || !!style?.background?.backgroundImage?.url;
73
+ }
74
+
75
+ /**
76
+ * Get the help text for the background size control.
77
+ *
78
+ * @param {string} value backgroundSize value.
79
+ * @return {string} Translated help text.
80
+ */
81
+ function backgroundSizeHelpText(value) {
82
+ if (value === 'cover' || value === undefined) {
83
+ return (0, _i18n.__)('Image covers the space evenly.');
84
+ }
85
+ if (value === 'contain') {
86
+ return (0, _i18n.__)('Image is contained without distortion.');
87
+ }
88
+ return (0, _i18n.__)('Specify a fixed width.');
89
+ }
90
+
91
+ /**
92
+ * Converts decimal x and y coords from FocalPointPicker to percentage-based values
93
+ * to use as backgroundPosition value.
94
+ *
95
+ * @param {{x?:number, y?:number}} value FocalPointPicker coords.
96
+ * @return {string} backgroundPosition value.
97
+ */
98
+ const coordsToBackgroundPosition = value => {
99
+ if (!value || isNaN(value.x) && isNaN(value.y)) {
100
+ return undefined;
101
+ }
102
+ const x = isNaN(value.x) ? 0.5 : value.x;
103
+ const y = isNaN(value.y) ? 0.5 : value.y;
104
+ return `${x * 100}% ${y * 100}%`;
105
+ };
106
+
107
+ /**
108
+ * Converts backgroundPosition value to x and y coords for FocalPointPicker.
109
+ *
110
+ * @param {string} value backgroundPosition value.
111
+ * @return {{x?:number, y?:number}} FocalPointPicker coords.
112
+ */
113
+ exports.coordsToBackgroundPosition = coordsToBackgroundPosition;
114
+ const backgroundPositionToCoords = value => {
115
+ if (!value) {
116
+ return {
117
+ x: undefined,
118
+ y: undefined
119
+ };
120
+ }
121
+ let [x, y] = value.split(' ').map(v => parseFloat(v) / 100);
122
+ x = isNaN(x) ? undefined : x;
123
+ y = isNaN(y) ? x : y;
124
+ return {
125
+ x,
126
+ y
127
+ };
128
+ };
129
+ exports.backgroundPositionToCoords = backgroundPositionToCoords;
130
+ function InspectorImagePreview({
131
+ label,
132
+ filename,
133
+ url: imgUrl
134
+ }) {
135
+ const imgLabel = label || (0, _url.getFilename)(imgUrl);
136
+ return (0, _react.createElement)(_components.__experimentalItemGroup, {
137
+ as: "span"
138
+ }, (0, _react.createElement)(_components.__experimentalHStack, {
139
+ justify: "flex-start",
140
+ as: "span"
141
+ }, (0, _react.createElement)("span", {
142
+ className: (0, _classnames.default)('block-editor-global-styles-background-panel__inspector-image-indicator-wrapper', {
143
+ 'has-image': imgUrl
144
+ }),
145
+ "aria-hidden": true
146
+ }, imgUrl && (0, _react.createElement)("span", {
147
+ className: "block-editor-global-styles-background-panel__inspector-image-indicator",
148
+ style: {
149
+ backgroundImage: `url(${imgUrl})`
150
+ }
151
+ })), (0, _react.createElement)(_components.FlexItem, {
152
+ as: "span"
153
+ }, (0, _react.createElement)(_components.__experimentalTruncate, {
154
+ numberOfLines: 1,
155
+ className: "block-editor-global-styles-background-panel__inspector-media-replace-title"
156
+ }, imgLabel), (0, _react.createElement)(_components.VisuallyHidden, {
157
+ as: "span"
158
+ }, filename ? (0, _i18n.sprintf)( /* translators: %s: file name */
159
+ (0, _i18n.__)('Selected image: %s'), filename) : (0, _i18n.__)('No image selected')))));
160
+ }
161
+ function BackgroundImageToolsPanelItem({
162
+ panelId,
163
+ isShownByDefault,
164
+ onChange,
165
+ style,
166
+ inheritedValue
167
+ }) {
168
+ const mediaUpload = (0, _data.useSelect)(select => select(_store.store).getSettings().mediaUpload, []);
169
+ const {
170
+ id,
171
+ title,
172
+ url
173
+ } = style?.background?.backgroundImage || {
174
+ ...inheritedValue?.background?.backgroundImage
175
+ };
176
+ const replaceContainerRef = (0, _element.useRef)();
177
+ const {
178
+ createErrorNotice
179
+ } = (0, _data.useDispatch)(_notices.store);
180
+ const onUploadError = message => {
181
+ createErrorNotice(message, {
182
+ type: 'snackbar'
183
+ });
184
+ };
185
+ const resetBackgroundImage = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], undefined));
186
+ const onSelectMedia = media => {
187
+ if (!media || !media.url) {
188
+ resetBackgroundImage();
189
+ return;
190
+ }
191
+ if ((0, _blob.isBlobURL)(media.url)) {
192
+ return;
193
+ }
194
+
195
+ // For media selections originated from a file upload.
196
+ if (media.media_type && media.media_type !== IMAGE_BACKGROUND_TYPE || !media.media_type && media.type && media.type !== IMAGE_BACKGROUND_TYPE) {
197
+ onUploadError((0, _i18n.__)('Only images can be used as a background image.'));
198
+ return;
199
+ }
200
+ onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], {
201
+ url: media.url,
202
+ id: media.id,
203
+ source: 'file',
204
+ title: media.title || undefined
205
+ }));
206
+ };
207
+ const onFilesDrop = filesList => {
208
+ mediaUpload({
209
+ allowedTypes: ['image'],
210
+ filesList,
211
+ onFileChange([image]) {
212
+ if ((0, _blob.isBlobURL)(image?.url)) {
213
+ return;
214
+ }
215
+ onSelectMedia(image);
216
+ },
217
+ onError: onUploadError
218
+ });
219
+ };
220
+ const resetAllFilter = (0, _element.useCallback)(previousValue => {
221
+ return {
222
+ ...previousValue,
223
+ style: {
224
+ ...previousValue.style,
225
+ background: undefined
226
+ }
227
+ };
228
+ }, []);
229
+ const hasValue = hasBackgroundImageValue(style) || hasBackgroundImageValue(inheritedValue);
230
+ return (0, _react.createElement)(_components.__experimentalToolsPanelItem, {
231
+ className: "single-column",
232
+ hasValue: () => hasValue,
233
+ label: (0, _i18n.__)('Background image'),
234
+ onDeselect: resetBackgroundImage,
235
+ isShownByDefault: isShownByDefault,
236
+ resetAllFilter: resetAllFilter,
237
+ panelId: panelId
238
+ }, (0, _react.createElement)("div", {
239
+ className: "block-editor-global-styles-background-panel__inspector-media-replace-container",
240
+ ref: replaceContainerRef
241
+ }, (0, _react.createElement)(_mediaReplaceFlow.default, {
242
+ mediaId: id,
243
+ mediaURL: url,
244
+ allowedTypes: [IMAGE_BACKGROUND_TYPE],
245
+ accept: "image/*",
246
+ onSelect: onSelectMedia,
247
+ name: (0, _react.createElement)(InspectorImagePreview, {
248
+ label: (0, _i18n.__)('Background image'),
249
+ filename: title || (0, _i18n.__)('Untitled'),
250
+ url: url
251
+ }),
252
+ variant: "secondary"
253
+ }, hasValue && (0, _react.createElement)(_components.MenuItem, {
254
+ onClick: () => {
255
+ const [toggleButton] = _dom.focus.tabbable.find(replaceContainerRef.current);
256
+ // Focus the toggle button and close the dropdown menu.
257
+ // This ensures similar behaviour as to selecting an image, where the dropdown is
258
+ // closed and focus is redirected to the dropdown toggle button.
259
+ toggleButton?.focus();
260
+ toggleButton?.click();
261
+ resetBackgroundImage();
262
+ }
263
+ }, (0, _i18n.__)('Reset '))), (0, _react.createElement)(_components.DropZone, {
264
+ onFilesDrop: onFilesDrop,
265
+ label: (0, _i18n.__)('Drop to upload')
266
+ })));
267
+ }
268
+ function BackgroundSizeToolsPanelItem({
269
+ panelId,
270
+ isShownByDefault,
271
+ onChange,
272
+ style,
273
+ inheritedValue,
274
+ defaultValues
275
+ }) {
276
+ const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
277
+ const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
278
+ const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
279
+ const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
280
+
281
+ /*
282
+ * An `undefined` value is replaced with any supplied
283
+ * default control value for the toggle group control.
284
+ * An empty string is treated as `auto` - this allows a user
285
+ * to select "Size" and then enter a custom value, with an
286
+ * empty value being treated as `auto`.
287
+ */
288
+ const currentValueForToggle = sizeValue !== undefined && sizeValue !== 'cover' && sizeValue !== 'contain' || sizeValue === '' ? 'auto' : sizeValue || defaultValues?.backgroundSize;
289
+
290
+ /*
291
+ * If the current value is `cover` and the repeat value is `undefined`, then
292
+ * the toggle should be unchecked as the default state. Otherwise, the toggle
293
+ * should reflect the current repeat value.
294
+ */
295
+ const repeatCheckedValue = !(repeatValue === 'no-repeat' || currentValueForToggle === 'cover' && repeatValue === undefined);
296
+ const hasValue = hasBackgroundSizeValue(style);
297
+ const resetAllFilter = (0, _element.useCallback)(previousValue => {
298
+ return {
299
+ ...previousValue,
300
+ style: {
301
+ ...previousValue.style,
302
+ background: {
303
+ ...previousValue.style?.background,
304
+ backgroundRepeat: undefined,
305
+ backgroundSize: undefined
306
+ }
307
+ }
308
+ };
309
+ }, []);
310
+ const updateBackgroundSize = next => {
311
+ // When switching to 'contain' toggle the repeat off.
312
+ let nextRepeat = repeatValue;
313
+ if (next === 'contain') {
314
+ nextRepeat = 'no-repeat';
315
+ }
316
+ if (next === 'cover') {
317
+ nextRepeat = undefined;
318
+ }
319
+ if ((currentValueForToggle === 'cover' || currentValueForToggle === 'contain') && next === 'auto') {
320
+ nextRepeat = undefined;
321
+ }
322
+ onChange((0, _object.setImmutably)(style, ['background'], {
323
+ ...style?.background,
324
+ backgroundRepeat: nextRepeat,
325
+ backgroundSize: next
326
+ }));
327
+ };
328
+ const updateBackgroundPosition = next => {
329
+ onChange((0, _object.setImmutably)(style, ['background', 'backgroundPosition'], coordsToBackgroundPosition(next)));
330
+ };
331
+ const toggleIsRepeated = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : undefined));
332
+ const resetBackgroundSize = () => onChange((0, _object.setImmutably)(style, ['background'], {
333
+ ...style?.background,
334
+ backgroundPosition: undefined,
335
+ backgroundRepeat: undefined,
336
+ backgroundSize: undefined
337
+ }));
338
+ return (0, _react.createElement)(_components.__experimentalVStack, {
339
+ as: _components.__experimentalToolsPanelItem,
340
+ spacing: 2,
341
+ className: "single-column",
342
+ hasValue: () => hasValue,
343
+ label: (0, _i18n.__)('Size'),
344
+ onDeselect: resetBackgroundSize,
345
+ isShownByDefault: isShownByDefault,
346
+ resetAllFilter: resetAllFilter,
347
+ panelId: panelId
348
+ }, (0, _react.createElement)(_components.FocalPointPicker, {
349
+ __next40pxDefaultSize: true,
350
+ label: (0, _i18n.__)('Position'),
351
+ url: imageValue,
352
+ value: backgroundPositionToCoords(positionValue),
353
+ onChange: updateBackgroundPosition
354
+ }), (0, _react.createElement)(_components.__experimentalToggleGroupControl, {
355
+ size: '__unstable-large',
356
+ label: (0, _i18n.__)('Size'),
357
+ value: currentValueForToggle,
358
+ onChange: updateBackgroundSize,
359
+ isBlock: true,
360
+ help: backgroundSizeHelpText(sizeValue)
361
+ }, (0, _react.createElement)(_components.__experimentalToggleGroupControlOption, {
362
+ key: 'cover',
363
+ value: 'cover',
364
+ label: (0, _i18n.__)('Cover')
365
+ }), (0, _react.createElement)(_components.__experimentalToggleGroupControlOption, {
366
+ key: 'contain',
367
+ value: 'contain',
368
+ label: (0, _i18n.__)('Contain')
369
+ }), (0, _react.createElement)(_components.__experimentalToggleGroupControlOption, {
370
+ key: 'fixed',
371
+ value: 'auto',
372
+ label: (0, _i18n.__)('Fixed')
373
+ })), sizeValue !== undefined && sizeValue !== 'cover' && sizeValue !== 'contain' ? (0, _react.createElement)(_components.__experimentalUnitControl, {
374
+ size: '__unstable-large',
375
+ onChange: updateBackgroundSize,
376
+ value: sizeValue
377
+ }) : null, currentValueForToggle !== 'cover' && (0, _react.createElement)(_components.ToggleControl, {
378
+ label: (0, _i18n.__)('Repeat'),
379
+ checked: repeatCheckedValue,
380
+ onChange: toggleIsRepeated
381
+ }));
382
+ }
383
+ function BackgroundToolsPanel({
384
+ resetAllFilter,
385
+ onChange,
386
+ value,
387
+ panelId,
388
+ children
389
+ }) {
390
+ const resetAll = () => {
391
+ const updatedValue = resetAllFilter(value);
392
+ onChange(updatedValue);
393
+ };
394
+ return (0, _react.createElement)(_components.__experimentalVStack, {
395
+ as: _components.__experimentalToolsPanel,
396
+ spacing: 6,
397
+ label: (0, _i18n.__)('Background'),
398
+ resetAll: resetAll,
399
+ panelId: panelId,
400
+ dropdownMenuProps: _utils.TOOLSPANEL_DROPDOWNMENU_PROPS
401
+ }, children);
402
+ }
403
+ const DEFAULT_CONTROLS = {
404
+ backgroundImage: true,
405
+ backgroundSize: true
406
+ };
407
+ function BackgroundPanel({
408
+ as: Wrapper = BackgroundToolsPanel,
409
+ value,
410
+ onChange,
411
+ inheritedValue = value,
412
+ settings,
413
+ panelId,
414
+ defaultControls = DEFAULT_CONTROLS,
415
+ defaultValues = {}
416
+ }) {
417
+ const resetAllFilter = (0, _element.useCallback)(previousValue => {
418
+ return {
419
+ ...previousValue,
420
+ background: {}
421
+ };
422
+ }, []);
423
+ const shouldShowBackgroundSizeControls = settings?.background?.backgroundSize;
424
+ return (0, _react.createElement)(Wrapper, {
425
+ resetAllFilter: resetAllFilter,
426
+ value: value,
427
+ onChange: onChange,
428
+ panelId: panelId
429
+ }, (0, _react.createElement)(BackgroundImageToolsPanelItem, {
430
+ onChange: onChange,
431
+ panelId: panelId,
432
+ isShownByDefault: defaultControls.backgroundImage,
433
+ style: value,
434
+ inheritedValue: inheritedValue
435
+ }), shouldShowBackgroundSizeControls && (0, _react.createElement)(BackgroundSizeToolsPanelItem, {
436
+ onChange: onChange,
437
+ panelId: panelId,
438
+ isShownByDefault: defaultControls.backgroundSize,
439
+ style: value,
440
+ inheritedValue: inheritedValue,
441
+ defaultValues: defaultValues
442
+ }));
443
+ }
444
+ //# sourceMappingURL=background-panel.js.map