@wordpress/block-editor 11.7.0 → 12.0.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 (357) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +56 -57
  3. package/build/components/block-info-slot-fill/index.js +47 -0
  4. package/build/components/block-info-slot-fill/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -2
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-list/index.native.js +11 -21
  8. package/build/components/block-list/index.native.js.map +1 -1
  9. package/build/components/block-list/use-in-between-inserter.js +3 -1
  10. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  11. package/build/components/block-popover/inbetween.js +2 -9
  12. package/build/components/block-popover/inbetween.js.map +1 -1
  13. package/build/components/block-settings-menu/block-settings-dropdown.js +1 -10
  14. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  15. package/build/components/block-toolbar/index.js +2 -1
  16. package/build/components/block-toolbar/index.js.map +1 -1
  17. package/build/components/block-tools/block-contextual-toolbar.js +83 -9
  18. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  19. package/build/components/block-tools/selected-block-popover.js +11 -28
  20. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  21. package/build/components/caption/index.native.js +0 -1
  22. package/build/components/caption/index.native.js.map +1 -1
  23. package/build/components/date-format-picker/index.js +1 -1
  24. package/build/components/date-format-picker/index.js.map +1 -1
  25. package/build/components/editor-styles/index.js +4 -3
  26. package/build/components/editor-styles/index.js.map +1 -1
  27. package/build/components/font-sizes/fluid-utils.js +21 -14
  28. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  29. package/build/components/global-styles/border-panel.js +15 -59
  30. package/build/components/global-styles/border-panel.js.map +1 -1
  31. package/build/components/global-styles/color-panel.js +12 -12
  32. package/build/components/global-styles/color-panel.js.map +1 -1
  33. package/build/components/global-styles/color-panel.native.js +174 -0
  34. package/build/components/global-styles/color-panel.native.js.map +1 -0
  35. package/build/components/global-styles/dimensions-panel.js +21 -20
  36. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  37. package/build/components/global-styles/effects-panel.js +244 -0
  38. package/build/components/global-styles/effects-panel.js.map +1 -0
  39. package/build/components/global-styles/filters-panel.js +215 -0
  40. package/build/components/global-styles/filters-panel.js.map +1 -0
  41. package/build/components/global-styles/get-block-css-selector.js +1 -12
  42. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  43. package/build/components/global-styles/hooks.js +7 -0
  44. package/build/components/global-styles/hooks.js.map +1 -1
  45. package/build/components/global-styles/index.js +28 -0
  46. package/build/components/global-styles/index.js.map +1 -1
  47. package/build/components/global-styles/typography-panel.js +9 -9
  48. package/build/components/global-styles/typography-panel.js.map +1 -1
  49. package/build/components/global-styles/use-global-styles-output.js +100 -82
  50. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  51. package/build/components/iframe/index.js +1 -1
  52. package/build/components/iframe/index.js.map +1 -1
  53. package/build/components/image-size-control/use-dimension-handler.js +5 -3
  54. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  55. package/build/components/index.js +23 -0
  56. package/build/components/index.js.map +1 -1
  57. package/build/components/inserter/block-patterns-tab.js +4 -2
  58. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  59. package/build/components/inserter/block-types-tab.js +12 -7
  60. package/build/components/inserter/block-types-tab.js.map +1 -1
  61. package/build/components/inserter/index.js +2 -1
  62. package/build/components/inserter/index.js.map +1 -1
  63. package/build/components/inspector-controls/groups.js +2 -0
  64. package/build/components/inspector-controls/groups.js.map +1 -1
  65. package/build/components/inspector-controls-tabs/styles-tab.js +2 -0
  66. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  67. package/build/components/inspector-controls-tabs/utils.js +5 -3
  68. package/build/components/inspector-controls-tabs/utils.js.map +1 -1
  69. package/build/components/list-view/block-select-button.js +7 -2
  70. package/build/components/list-view/block-select-button.js.map +1 -1
  71. package/build/components/list-view/block.js +13 -21
  72. package/build/components/list-view/block.js.map +1 -1
  73. package/build/components/list-view/drop-indicator.js +37 -10
  74. package/build/components/list-view/drop-indicator.js.map +1 -1
  75. package/build/components/list-view/index.js +31 -7
  76. package/build/components/list-view/index.js.map +1 -1
  77. package/build/components/list-view/leaf.js +2 -1
  78. package/build/components/list-view/leaf.js.map +1 -1
  79. package/build/components/list-view/use-block-selection.js +1 -1
  80. package/build/components/list-view/use-block-selection.js.map +1 -1
  81. package/build/components/list-view/use-list-view-client-ids.js +7 -3
  82. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  83. package/build/components/list-view/use-list-view-drop-zone.js +8 -2
  84. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  85. package/build/components/media-replace-flow/index.js +5 -5
  86. package/build/components/media-replace-flow/index.js.map +1 -1
  87. package/build/components/navigable-toolbar/index.js +12 -4
  88. package/build/components/navigable-toolbar/index.js.map +1 -1
  89. package/build/components/off-canvas-editor/appender.js +2 -7
  90. package/build/components/off-canvas-editor/appender.js.map +1 -1
  91. package/build/components/off-canvas-editor/block-contents.js +6 -1
  92. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  93. package/build/components/off-canvas-editor/index.js +17 -14
  94. package/build/components/off-canvas-editor/index.js.map +1 -1
  95. package/build/components/resizable-box-popover/index.js +38 -0
  96. package/build/components/resizable-box-popover/index.js.map +1 -0
  97. package/build/components/rich-text/index.js +0 -1
  98. package/build/components/rich-text/index.js.map +1 -1
  99. package/build/components/rich-text/index.native.js +7 -11
  100. package/build/components/rich-text/index.native.js.map +1 -1
  101. package/build/components/spacing-sizes-control/spacing-input-control.js +8 -0
  102. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  103. package/build/hooks/anchor.js +1 -1
  104. package/build/hooks/anchor.js.map +1 -1
  105. package/build/hooks/border.js +1 -1
  106. package/build/hooks/border.js.map +1 -1
  107. package/build/hooks/duotone.js +121 -70
  108. package/build/hooks/duotone.js.map +1 -1
  109. package/build/hooks/margin.js +27 -17
  110. package/build/hooks/margin.js.map +1 -1
  111. package/build/hooks/padding.js +19 -9
  112. package/build/hooks/padding.js.map +1 -1
  113. package/build/hooks/utils.js +22 -7
  114. package/build/hooks/utils.js.map +1 -1
  115. package/build/layouts/utils.js +3 -2
  116. package/build/layouts/utils.js.map +1 -1
  117. package/build/private-apis.js +13 -1
  118. package/build/private-apis.js.map +1 -1
  119. package/build/store/actions.js +8 -1
  120. package/build/store/actions.js.map +1 -1
  121. package/build/utils/object.js +6 -6
  122. package/build/utils/object.js.map +1 -1
  123. package/build/utils/transform-styles/index.js +2 -2
  124. package/build/utils/transform-styles/index.js.map +1 -1
  125. package/build/utils/use-should-contextual-toolbar-show.js +68 -0
  126. package/build/utils/use-should-contextual-toolbar-show.js.map +1 -0
  127. package/build-module/components/block-info-slot-fill/index.js +34 -0
  128. package/build-module/components/block-info-slot-fill/index.js.map +1 -0
  129. package/build-module/components/block-inspector/index.js +3 -2
  130. package/build-module/components/block-inspector/index.js.map +1 -1
  131. package/build-module/components/block-list/index.native.js +11 -19
  132. package/build-module/components/block-list/index.native.js.map +1 -1
  133. package/build-module/components/block-list/use-in-between-inserter.js +2 -1
  134. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  135. package/build-module/components/block-popover/inbetween.js +2 -9
  136. package/build-module/components/block-popover/inbetween.js.map +1 -1
  137. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -9
  138. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  139. package/build-module/components/block-toolbar/index.js +2 -1
  140. package/build-module/components/block-toolbar/index.js.map +1 -1
  141. package/build-module/components/block-tools/block-contextual-toolbar.js +79 -9
  142. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  143. package/build-module/components/block-tools/selected-block-popover.js +10 -27
  144. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  145. package/build-module/components/caption/index.native.js +0 -1
  146. package/build-module/components/caption/index.native.js.map +1 -1
  147. package/build-module/components/date-format-picker/index.js +1 -1
  148. package/build-module/components/date-format-picker/index.js.map +1 -1
  149. package/build-module/components/editor-styles/index.js +4 -3
  150. package/build-module/components/editor-styles/index.js.map +1 -1
  151. package/build-module/components/font-sizes/fluid-utils.js +21 -14
  152. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  153. package/build-module/components/global-styles/border-panel.js +15 -59
  154. package/build-module/components/global-styles/border-panel.js.map +1 -1
  155. package/build-module/components/global-styles/color-panel.js +13 -13
  156. package/build-module/components/global-styles/color-panel.js.map +1 -1
  157. package/build-module/components/global-styles/color-panel.native.js +150 -0
  158. package/build-module/components/global-styles/color-panel.native.js.map +1 -0
  159. package/build-module/components/global-styles/dimensions-panel.js +22 -21
  160. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  161. package/build-module/components/global-styles/effects-panel.js +228 -0
  162. package/build-module/components/global-styles/effects-panel.js.map +1 -0
  163. package/build-module/components/global-styles/filters-panel.js +201 -0
  164. package/build-module/components/global-styles/filters-panel.js.map +1 -0
  165. package/build-module/components/global-styles/get-block-css-selector.js +1 -12
  166. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  167. package/build-module/components/global-styles/hooks.js +7 -0
  168. package/build-module/components/global-styles/hooks.js.map +1 -1
  169. package/build-module/components/global-styles/index.js +2 -0
  170. package/build-module/components/global-styles/index.js.map +1 -1
  171. package/build-module/components/global-styles/typography-panel.js +10 -10
  172. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  173. package/build-module/components/global-styles/use-global-styles-output.js +101 -83
  174. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  175. package/build-module/components/iframe/index.js +1 -1
  176. package/build-module/components/iframe/index.js.map +1 -1
  177. package/build-module/components/image-size-control/use-dimension-handler.js +5 -3
  178. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  179. package/build-module/components/index.js +1 -0
  180. package/build-module/components/index.js.map +1 -1
  181. package/build-module/components/inserter/block-patterns-tab.js +5 -2
  182. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  183. package/build-module/components/inserter/block-types-tab.js +12 -6
  184. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  185. package/build-module/components/inserter/index.js +2 -1
  186. package/build-module/components/inserter/index.js.map +1 -1
  187. package/build-module/components/inspector-controls/groups.js +2 -0
  188. package/build-module/components/inspector-controls/groups.js.map +1 -1
  189. package/build-module/components/inspector-controls-tabs/styles-tab.js +2 -0
  190. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  191. package/build-module/components/inspector-controls-tabs/utils.js +4 -3
  192. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
  193. package/build-module/components/list-view/block-select-button.js +7 -2
  194. package/build-module/components/list-view/block-select-button.js.map +1 -1
  195. package/build-module/components/list-view/block.js +15 -22
  196. package/build-module/components/list-view/block.js.map +1 -1
  197. package/build-module/components/list-view/drop-indicator.js +36 -10
  198. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  199. package/build-module/components/list-view/index.js +31 -8
  200. package/build-module/components/list-view/index.js.map +1 -1
  201. package/build-module/components/list-view/leaf.js +2 -1
  202. package/build-module/components/list-view/leaf.js.map +1 -1
  203. package/build-module/components/list-view/use-block-selection.js +1 -1
  204. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  205. package/build-module/components/list-view/use-list-view-client-ids.js +7 -3
  206. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  207. package/build-module/components/list-view/use-list-view-drop-zone.js +8 -4
  208. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  209. package/build-module/components/media-replace-flow/index.js +5 -5
  210. package/build-module/components/media-replace-flow/index.js.map +1 -1
  211. package/build-module/components/navigable-toolbar/index.js +12 -4
  212. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  213. package/build-module/components/off-canvas-editor/appender.js +1 -5
  214. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  215. package/build-module/components/off-canvas-editor/block-contents.js +5 -1
  216. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  217. package/build-module/components/off-canvas-editor/index.js +17 -14
  218. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  219. package/build-module/components/resizable-box-popover/index.js +26 -0
  220. package/build-module/components/resizable-box-popover/index.js.map +1 -0
  221. package/build-module/components/rich-text/index.js +0 -1
  222. package/build-module/components/rich-text/index.js.map +1 -1
  223. package/build-module/components/rich-text/index.native.js +7 -10
  224. package/build-module/components/rich-text/index.native.js.map +1 -1
  225. package/build-module/components/spacing-sizes-control/spacing-input-control.js +7 -0
  226. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  227. package/build-module/hooks/anchor.js +1 -1
  228. package/build-module/hooks/anchor.js.map +1 -1
  229. package/build-module/hooks/border.js +1 -1
  230. package/build-module/hooks/border.js.map +1 -1
  231. package/build-module/hooks/duotone.js +118 -71
  232. package/build-module/hooks/duotone.js.map +1 -1
  233. package/build-module/hooks/margin.js +29 -18
  234. package/build-module/hooks/margin.js.map +1 -1
  235. package/build-module/hooks/padding.js +21 -10
  236. package/build-module/hooks/padding.js.map +1 -1
  237. package/build-module/hooks/utils.js +24 -9
  238. package/build-module/hooks/utils.js.map +1 -1
  239. package/build-module/layouts/utils.js +3 -2
  240. package/build-module/layouts/utils.js.map +1 -1
  241. package/build-module/private-apis.js +9 -1
  242. package/build-module/private-apis.js.map +1 -1
  243. package/build-module/store/actions.js +8 -1
  244. package/build-module/store/actions.js.map +1 -1
  245. package/build-module/utils/object.js +5 -5
  246. package/build-module/utils/object.js.map +1 -1
  247. package/build-module/utils/transform-styles/index.js +2 -2
  248. package/build-module/utils/transform-styles/index.js.map +1 -1
  249. package/build-module/utils/use-should-contextual-toolbar-show.js +56 -0
  250. package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -0
  251. package/build-style/content-rtl.css +9 -6
  252. package/build-style/content.css +9 -6
  253. package/build-style/style-rtl.css +272 -54
  254. package/build-style/style.css +272 -54
  255. package/package.json +32 -32
  256. package/src/components/block-info-slot-fill/index.js +24 -0
  257. package/src/components/block-inspector/index.js +3 -0
  258. package/src/components/block-inspector/style.scss +6 -4
  259. package/src/components/block-list/content.scss +16 -15
  260. package/src/components/block-list/index.native.js +19 -38
  261. package/src/components/block-list/use-in-between-inserter.js +4 -1
  262. package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +9 -9
  263. package/src/components/block-mover/style.scss +10 -4
  264. package/src/components/block-mover/test/index.native.js +4 -4
  265. package/src/components/block-popover/inbetween.js +2 -13
  266. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -12
  267. package/src/components/block-toolbar/index.js +4 -3
  268. package/src/components/block-toolbar/style.scss +56 -33
  269. package/src/components/block-tools/block-contextual-toolbar.js +94 -11
  270. package/src/components/block-tools/selected-block-popover.js +11 -44
  271. package/src/components/block-tools/style.scss +157 -3
  272. package/src/components/caption/index.native.js +0 -1
  273. package/src/components/date-format-picker/index.js +1 -1
  274. package/src/components/editor-styles/index.js +9 -5
  275. package/src/components/font-sizes/fluid-utils.js +31 -14
  276. package/src/components/font-sizes/test/fluid-utils.js +5 -16
  277. package/src/components/global-styles/README.md +129 -16
  278. package/src/components/global-styles/border-panel.js +13 -61
  279. package/src/components/global-styles/color-panel.js +13 -13
  280. package/src/components/global-styles/color-panel.native.js +207 -0
  281. package/src/components/global-styles/dimensions-panel.js +47 -20
  282. package/src/components/global-styles/effects-panel.js +228 -0
  283. package/src/components/global-styles/filters-panel.js +230 -0
  284. package/src/components/global-styles/get-block-css-selector.js +0 -11
  285. package/src/components/global-styles/hooks.js +10 -0
  286. package/src/components/global-styles/index.js +2 -0
  287. package/src/components/global-styles/style.scss +43 -0
  288. package/src/components/global-styles/test/typography-utils.js +63 -22
  289. package/src/components/global-styles/test/use-global-styles-output.js +130 -8
  290. package/src/components/global-styles/typography-panel.js +37 -11
  291. package/src/components/global-styles/use-global-styles-output.js +88 -72
  292. package/src/components/iframe/index.js +1 -1
  293. package/src/components/image-size-control/use-dimension-handler.js +4 -3
  294. package/src/components/index.js +5 -1
  295. package/src/components/inserter/block-patterns-tab.js +3 -1
  296. package/src/components/inserter/block-types-tab.js +9 -6
  297. package/src/components/inserter/index.js +1 -1
  298. package/src/components/inspector-controls/groups.js +2 -0
  299. package/src/components/inspector-controls-tabs/styles-tab.js +1 -0
  300. package/src/components/inspector-controls-tabs/utils.js +4 -3
  301. package/src/components/list-view/README.md +2 -0
  302. package/src/components/list-view/block-select-button.js +6 -1
  303. package/src/components/list-view/block.js +24 -31
  304. package/src/components/list-view/drop-indicator.js +67 -22
  305. package/src/components/list-view/index.js +26 -3
  306. package/src/components/list-view/leaf.js +1 -0
  307. package/src/components/list-view/style.scss +18 -4
  308. package/src/components/list-view/test/use-list-view-drop-zone.js +188 -0
  309. package/src/components/list-view/use-block-selection.js +1 -1
  310. package/src/components/list-view/use-list-view-client-ids.js +5 -3
  311. package/src/components/list-view/use-list-view-drop-zone.js +9 -3
  312. package/src/components/media-replace-flow/README.md +3 -2
  313. package/src/components/media-replace-flow/index.js +4 -5
  314. package/src/components/navigable-toolbar/index.js +12 -3
  315. package/src/components/off-canvas-editor/appender.js +1 -4
  316. package/src/components/off-canvas-editor/block-contents.js +4 -0
  317. package/src/components/off-canvas-editor/index.js +15 -11
  318. package/src/components/resizable-box-popover/index.js +27 -0
  319. package/src/components/rich-text/index.js +0 -1
  320. package/src/components/rich-text/index.native.js +2 -5
  321. package/src/components/spacing-sizes-control/spacing-input-control.js +10 -0
  322. package/src/components/spacing-sizes-control/style.scss +7 -7
  323. package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -3
  324. package/src/hooks/anchor.js +1 -1
  325. package/src/hooks/border.js +1 -1
  326. package/src/hooks/duotone.js +162 -99
  327. package/src/hooks/margin.js +31 -26
  328. package/src/hooks/padding.js +24 -18
  329. package/src/hooks/test/anchor.js +113 -0
  330. package/src/hooks/test/color.js +0 -9
  331. package/src/hooks/test/use-typography-props.js +2 -2
  332. package/src/hooks/test/utils.js +20 -101
  333. package/src/hooks/utils.js +23 -6
  334. package/src/layouts/utils.js +2 -2
  335. package/src/private-apis.js +8 -0
  336. package/src/store/actions.js +8 -1
  337. package/src/style.scss +1 -0
  338. package/src/utils/object.js +5 -5
  339. package/src/utils/test/object.js +53 -15
  340. package/src/utils/transform-styles/index.js +2 -2
  341. package/src/utils/use-should-contextual-toolbar-show.js +75 -0
  342. package/tsconfig.json +1 -0
  343. package/build/components/rich-text/use-native-props.js +0 -11
  344. package/build/components/rich-text/use-native-props.js.map +0 -1
  345. package/build/components/rich-text/use-native-props.native.js +0 -24
  346. package/build/components/rich-text/use-native-props.native.js.map +0 -1
  347. package/build/hooks/color-panel.native.js +0 -77
  348. package/build/hooks/color-panel.native.js.map +0 -1
  349. package/build-module/components/rich-text/use-native-props.js +0 -4
  350. package/build-module/components/rich-text/use-native-props.js.map +0 -1
  351. package/build-module/components/rich-text/use-native-props.native.js +0 -15
  352. package/build-module/components/rich-text/use-native-props.native.js.map +0 -1
  353. package/build-module/hooks/color-panel.native.js +0 -62
  354. package/build-module/hooks/color-panel.native.js.map +0 -1
  355. package/src/components/rich-text/use-native-props.js +0 -3
  356. package/src/components/rich-text/use-native-props.native.js +0 -17
  357. package/src/hooks/color-panel.native.js +0 -63
@@ -28,7 +28,7 @@ import SpacingSizesControl from '../spacing-sizes-control';
28
28
  import HeightControl from '../height-control';
29
29
  import ChildLayoutControl from '../child-layout-control';
30
30
  import { cleanEmptyObject } from '../../hooks/utils';
31
- import { immutableSet } from '../../utils/object';
31
+ import { setImmutably } from '../../utils/object';
32
32
 
33
33
  const AXIAL_SIDES = [ 'horizontal', 'vertical' ];
34
34
 
@@ -184,12 +184,13 @@ function DimensionsToolsPanel( {
184
184
  }
185
185
 
186
186
  const DEFAULT_CONTROLS = {
187
- contentSize: true,
188
- wideSize: true,
189
- padding: true,
190
- margin: true,
191
- blockGap: true,
192
- minHeight: true,
187
+ contentSize: false,
188
+ wideSize: false,
189
+ padding: false,
190
+ margin: false,
191
+ blockGap: false,
192
+ minHeight: false,
193
+ childLayout: true,
193
194
  };
194
195
 
195
196
  export default function DimensionsPanel( {
@@ -225,7 +226,11 @@ export default function DimensionsPanel( {
225
226
  const contentSizeValue = decodeValue( inheritedValue?.layout?.contentSize );
226
227
  const setContentSizeValue = ( newValue ) => {
227
228
  onChange(
228
- immutableSet( value, [ 'layout', 'contentSize' ], newValue )
229
+ setImmutably(
230
+ value,
231
+ [ 'layout', 'contentSize' ],
232
+ newValue || undefined
233
+ )
229
234
  );
230
235
  };
231
236
  const hasUserSetContentSizeValue = () => !! value?.layout?.contentSize;
@@ -236,7 +241,13 @@ export default function DimensionsPanel( {
236
241
  useHasWideSize( settings ) && includeLayoutControls;
237
242
  const wideSizeValue = decodeValue( inheritedValue?.layout?.wideSize );
238
243
  const setWideSizeValue = ( newValue ) => {
239
- onChange( immutableSet( value, [ 'layout', 'wideSize' ], newValue ) );
244
+ onChange(
245
+ setImmutably(
246
+ value,
247
+ [ 'layout', 'wideSize' ],
248
+ newValue || undefined
249
+ )
250
+ );
240
251
  };
241
252
  const hasUserSetWideSizeValue = () => !! value?.layout?.wideSize;
242
253
  const resetWideSizeValue = () => setWideSizeValue( undefined );
@@ -253,7 +264,7 @@ export default function DimensionsPanel( {
253
264
  paddingSides.some( ( side ) => AXIAL_SIDES.includes( side ) );
254
265
  const setPaddingValues = ( newPaddingValues ) => {
255
266
  const padding = filterValuesBySides( newPaddingValues, paddingSides );
256
- onChange( immutableSet( value, [ 'spacing', 'padding' ], padding ) );
267
+ onChange( setImmutably( value, [ 'spacing', 'padding' ], padding ) );
257
268
  };
258
269
  const hasPaddingValue = () =>
259
270
  !! value?.spacing?.padding &&
@@ -273,7 +284,7 @@ export default function DimensionsPanel( {
273
284
  marginSides.some( ( side ) => AXIAL_SIDES.includes( side ) );
274
285
  const setMarginValues = ( newMarginValues ) => {
275
286
  const margin = filterValuesBySides( newMarginValues, marginSides );
276
- onChange( immutableSet( value, [ 'spacing', 'margin' ], margin ) );
287
+ onChange( setImmutably( value, [ 'spacing', 'margin' ], margin ) );
277
288
  };
278
289
  const hasMarginValue = () =>
279
290
  !! value?.spacing?.margin &&
@@ -292,7 +303,7 @@ export default function DimensionsPanel( {
292
303
  gapSides && gapSides.some( ( side ) => AXIAL_SIDES.includes( side ) );
293
304
  const setGapValue = ( newGapValue ) => {
294
305
  onChange(
295
- immutableSet( value, [ 'spacing', 'blockGap' ], newGapValue )
306
+ setImmutably( value, [ 'spacing', 'blockGap' ], newGapValue )
296
307
  );
297
308
  };
298
309
  const setGapValues = ( nextBoxGapValue ) => {
@@ -317,7 +328,7 @@ export default function DimensionsPanel( {
317
328
  const minHeightValue = decodeValue( inheritedValue?.dimensions?.minHeight );
318
329
  const setMinHeightValue = ( newValue ) => {
319
330
  onChange(
320
- immutableSet( value, [ 'dimensions', 'minHeight' ], newValue )
331
+ setImmutably( value, [ 'dimensions', 'minHeight' ], newValue )
321
332
  );
322
333
  };
323
334
  const resetMinHeightValue = () => {
@@ -391,7 +402,10 @@ export default function DimensionsPanel( {
391
402
  label={ __( 'Content size' ) }
392
403
  hasValue={ hasUserSetContentSizeValue }
393
404
  onDeselect={ resetContentSizeValue }
394
- isShownByDefault={ defaultControls.contentSize }
405
+ isShownByDefault={
406
+ defaultControls.contentSize ??
407
+ DEFAULT_CONTROLS.contentSize
408
+ }
395
409
  panelId={ panelId }
396
410
  >
397
411
  <HStack alignment="flex-end" justify="flex-start">
@@ -417,7 +431,9 @@ export default function DimensionsPanel( {
417
431
  label={ __( 'Wide size' ) }
418
432
  hasValue={ hasUserSetWideSizeValue }
419
433
  onDeselect={ resetWideSizeValue }
420
- isShownByDefault={ defaultControls.wideSize }
434
+ isShownByDefault={
435
+ defaultControls.wideSize ?? DEFAULT_CONTROLS.wideSize
436
+ }
421
437
  panelId={ panelId }
422
438
  >
423
439
  <HStack alignment="flex-end" justify="flex-start">
@@ -442,7 +458,9 @@ export default function DimensionsPanel( {
442
458
  hasValue={ hasPaddingValue }
443
459
  label={ __( 'Padding' ) }
444
460
  onDeselect={ resetPaddingValue }
445
- isShownByDefault={ defaultControls.padding }
461
+ isShownByDefault={
462
+ defaultControls.padding ?? DEFAULT_CONTROLS.padding
463
+ }
446
464
  className={ classnames( {
447
465
  'tools-panel-item-spacing': showSpacingPresetsControl,
448
466
  } ) }
@@ -481,7 +499,9 @@ export default function DimensionsPanel( {
481
499
  hasValue={ hasMarginValue }
482
500
  label={ __( 'Margin' ) }
483
501
  onDeselect={ resetMarginValue }
484
- isShownByDefault={ defaultControls.margin }
502
+ isShownByDefault={
503
+ defaultControls.margin ?? DEFAULT_CONTROLS.margin
504
+ }
485
505
  className={ classnames( {
486
506
  'tools-panel-item-spacing': showSpacingPresetsControl,
487
507
  } ) }
@@ -520,7 +540,9 @@ export default function DimensionsPanel( {
520
540
  hasValue={ hasGapValue }
521
541
  label={ __( 'Block spacing' ) }
522
542
  onDeselect={ resetGapValue }
523
- isShownByDefault={ defaultControls.blockGap }
543
+ isShownByDefault={
544
+ defaultControls.blockGap ?? DEFAULT_CONTROLS.blockGap
545
+ }
524
546
  className={ classnames( {
525
547
  'tools-panel-item-spacing': showSpacingPresetsControl,
526
548
  } ) }
@@ -566,7 +588,9 @@ export default function DimensionsPanel( {
566
588
  hasValue={ hasMinHeightValue }
567
589
  label={ __( 'Min. height' ) }
568
590
  onDeselect={ resetMinHeightValue }
569
- isShownByDefault={ defaultControls.minHeight }
591
+ isShownByDefault={
592
+ defaultControls.minHeight ?? DEFAULT_CONTROLS.minHeight
593
+ }
570
594
  panelId={ panelId }
571
595
  >
572
596
  <HeightControl
@@ -583,7 +607,10 @@ export default function DimensionsPanel( {
583
607
  hasValue={ hasChildLayoutValue }
584
608
  label={ childLayoutOrientationLabel }
585
609
  onDeselect={ resetChildLayoutValue }
586
- isShownByDefault={ defaultControls.childLayout }
610
+ isShownByDefault={
611
+ defaultControls.childLayout ??
612
+ DEFAULT_CONTROLS.childLayout
613
+ }
587
614
  panelId={ panelId }
588
615
  >
589
616
  <ChildLayoutControl
@@ -0,0 +1,228 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ __experimentalToolsPanel as ToolsPanel,
11
+ __experimentalToolsPanelItem as ToolsPanelItem,
12
+ __experimentalItemGroup as ItemGroup,
13
+ __experimentalHStack as HStack,
14
+ __experimentalVStack as VStack,
15
+ __experimentalGrid as Grid,
16
+ __experimentalHeading as Heading,
17
+ FlexItem,
18
+ Dropdown,
19
+ __experimentalDropdownContentWrapper as DropdownContentWrapper,
20
+ Button,
21
+ } from '@wordpress/components';
22
+ import { __ } from '@wordpress/i18n';
23
+ import { useCallback } from '@wordpress/element';
24
+ import { shadow as shadowIcon, Icon, check } from '@wordpress/icons';
25
+
26
+ /**
27
+ * Internal dependencies
28
+ */
29
+ import { getValueFromVariable } from './utils';
30
+ import { setImmutably } from '../../utils/object';
31
+
32
+ export function useHasEffectsPanel( settings ) {
33
+ const hasShadowControl = useHasShadowControl( settings );
34
+ return hasShadowControl;
35
+ }
36
+
37
+ function useHasShadowControl( settings ) {
38
+ return !! settings?.shadow;
39
+ }
40
+
41
+ function EffectsToolsPanel( {
42
+ resetAllFilter,
43
+ onChange,
44
+ value,
45
+ panelId,
46
+ children,
47
+ } ) {
48
+ const resetAll = () => {
49
+ const updatedValue = resetAllFilter( value );
50
+ onChange( updatedValue );
51
+ };
52
+
53
+ return (
54
+ <ToolsPanel
55
+ label={ __( 'Effects' ) }
56
+ resetAll={ resetAll }
57
+ panelId={ panelId }
58
+ >
59
+ { children }
60
+ </ToolsPanel>
61
+ );
62
+ }
63
+
64
+ const DEFAULT_CONTROLS = {
65
+ shadow: true,
66
+ };
67
+
68
+ export default function EffectsPanel( {
69
+ as: Wrapper = EffectsToolsPanel,
70
+ value,
71
+ onChange,
72
+ inheritedValue = value,
73
+ settings,
74
+ panelId,
75
+ defaultControls = DEFAULT_CONTROLS,
76
+ } ) {
77
+ const decodeValue = ( rawValue ) =>
78
+ getValueFromVariable( { settings }, '', rawValue );
79
+
80
+ // Shadow
81
+ const hasShadowEnabled = useHasShadowControl( settings );
82
+ const shadow = decodeValue( inheritedValue?.shadow );
83
+ const setShadow = ( newValue ) => {
84
+ onChange( setImmutably( value, [ 'shadow' ], newValue ) );
85
+ };
86
+ const hasShadow = () => !! value?.shadow;
87
+ const resetShadow = () => setShadow( undefined );
88
+
89
+ const resetAllFilter = useCallback( ( previousValue ) => {
90
+ return {
91
+ ...previousValue,
92
+ shadow: undefined,
93
+ };
94
+ }, [] );
95
+
96
+ return (
97
+ <Wrapper
98
+ resetAllFilter={ resetAllFilter }
99
+ value={ value }
100
+ onChange={ onChange }
101
+ panelId={ panelId }
102
+ >
103
+ { hasShadowEnabled && (
104
+ <ToolsPanelItem
105
+ label={ __( 'Shadow' ) }
106
+ hasValue={ hasShadow }
107
+ onDeselect={ resetShadow }
108
+ isShownByDefault={ defaultControls.shadow }
109
+ panelId={ panelId }
110
+ >
111
+ <ItemGroup isBordered isSeparated>
112
+ <ShadowPopover
113
+ shadow={ shadow }
114
+ onShadowChange={ setShadow }
115
+ settings={ settings }
116
+ />
117
+ </ItemGroup>
118
+ </ToolsPanelItem>
119
+ ) }
120
+ </Wrapper>
121
+ );
122
+ }
123
+
124
+ const ShadowPopover = ( { shadow, onShadowChange, settings } ) => {
125
+ const popoverProps = {
126
+ placement: 'left-start',
127
+ offset: 36,
128
+ shift: true,
129
+ };
130
+
131
+ return (
132
+ <Dropdown
133
+ popoverProps={ popoverProps }
134
+ className="block-editor-global-styles-effects-panel__shadow-dropdown"
135
+ renderToggle={ renderShadowToggle() }
136
+ renderContent={ () => (
137
+ <DropdownContentWrapper paddingSize="medium">
138
+ <ShadowPopoverContainer
139
+ shadow={ shadow }
140
+ onShadowChange={ onShadowChange }
141
+ settings={ settings }
142
+ />
143
+ </DropdownContentWrapper>
144
+ ) }
145
+ />
146
+ );
147
+ };
148
+
149
+ function renderShadowToggle() {
150
+ return ( { onToggle, isOpen } ) => {
151
+ const toggleProps = {
152
+ onClick: onToggle,
153
+ className: classnames( { 'is-open': isOpen } ),
154
+ 'aria-expanded': isOpen,
155
+ };
156
+
157
+ return (
158
+ <Button { ...toggleProps }>
159
+ <HStack justify="flex-start">
160
+ <Icon
161
+ className="block-editor-global-styles-effects-panel__toggle-icon"
162
+ icon={ shadowIcon }
163
+ size={ 24 }
164
+ />
165
+ <FlexItem>{ __( 'Shadow' ) }</FlexItem>
166
+ </HStack>
167
+ </Button>
168
+ );
169
+ };
170
+ }
171
+
172
+ function ShadowPopoverContainer( { shadow, onShadowChange, settings } ) {
173
+ const defaultShadows = settings?.shadow?.presets?.default;
174
+ const themeShadows = settings?.shadow?.presets?.theme;
175
+ const defaultPresetsEnabled = settings?.shadow?.defaultPresets;
176
+
177
+ const shadows = [
178
+ ...( defaultPresetsEnabled ? defaultShadows : [] ),
179
+ ...( themeShadows || [] ),
180
+ ];
181
+
182
+ return (
183
+ <div className="block-editor-global-styles-effects-panel__shadow-popover-container">
184
+ <VStack spacing={ 4 }>
185
+ <Heading level={ 5 }>{ __( 'Shadow' ) }</Heading>
186
+ <ShadowPresets
187
+ presets={ shadows }
188
+ activeShadow={ shadow }
189
+ onSelect={ onShadowChange }
190
+ />
191
+ </VStack>
192
+ </div>
193
+ );
194
+ }
195
+
196
+ function ShadowPresets( { presets, activeShadow, onSelect } ) {
197
+ return ! presets ? null : (
198
+ <Grid columns={ 6 } gap={ 0 } align="center" justify="center">
199
+ { presets.map( ( { name, slug, shadow } ) => (
200
+ <ShadowIndicator
201
+ key={ slug }
202
+ label={ name }
203
+ isActive={ shadow === activeShadow }
204
+ onSelect={ () =>
205
+ onSelect( shadow === activeShadow ? undefined : shadow )
206
+ }
207
+ shadow={ shadow }
208
+ />
209
+ ) ) }
210
+ </Grid>
211
+ );
212
+ }
213
+
214
+ function ShadowIndicator( { label, isActive, onSelect, shadow } ) {
215
+ return (
216
+ <div className="block-editor-global-styles-effects-panel__shadow-indicator-wrapper">
217
+ <Button
218
+ className="block-editor-global-styles-effects-panel__shadow-indicator"
219
+ onClick={ onSelect }
220
+ label={ label }
221
+ style={ { boxShadow: shadow } }
222
+ showTooltip
223
+ >
224
+ { isActive && <Icon icon={ check } /> }
225
+ </Button>
226
+ </div>
227
+ );
228
+ }
@@ -0,0 +1,230 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ __experimentalToolsPanel as ToolsPanel,
11
+ __experimentalToolsPanelItem as ToolsPanelItem,
12
+ __experimentalItemGroup as ItemGroup,
13
+ __experimentalHStack as HStack,
14
+ __experimentalZStack as ZStack,
15
+ __experimentalVStack as VStack,
16
+ __experimentalDropdownContentWrapper as DropdownContentWrapper,
17
+ Button,
18
+ ColorIndicator,
19
+ DuotonePicker,
20
+ DuotoneSwatch,
21
+ Dropdown,
22
+ Flex,
23
+ FlexItem,
24
+ } from '@wordpress/components';
25
+ import { __ } from '@wordpress/i18n';
26
+ import { useCallback, useMemo } from '@wordpress/element';
27
+
28
+ /**
29
+ * Internal dependencies
30
+ */
31
+ import { getValueFromVariable } from './utils';
32
+ import { setImmutably } from '../../utils/object';
33
+
34
+ const EMPTY_ARRAY = [];
35
+ function useMultiOriginColorPresets(
36
+ settings,
37
+ { presetSetting, defaultSetting }
38
+ ) {
39
+ const disableDefault = ! settings?.color?.[ defaultSetting ];
40
+ const userPresets =
41
+ settings?.color?.[ presetSetting ]?.custom || EMPTY_ARRAY;
42
+ const themePresets =
43
+ settings?.color?.[ presetSetting ]?.theme || EMPTY_ARRAY;
44
+ const defaultPresets =
45
+ settings?.color?.[ presetSetting ]?.default || EMPTY_ARRAY;
46
+ return useMemo(
47
+ () => [
48
+ ...userPresets,
49
+ ...themePresets,
50
+ ...( disableDefault ? EMPTY_ARRAY : defaultPresets ),
51
+ ],
52
+ [ disableDefault, userPresets, themePresets, defaultPresets ]
53
+ );
54
+ }
55
+
56
+ export function useHasFiltersPanel( settings ) {
57
+ const hasDuotone = useHasDuotoneControl( settings );
58
+
59
+ return hasDuotone;
60
+ }
61
+
62
+ function useHasDuotoneControl( settings ) {
63
+ return settings.color.customDuotone || settings.color.defaultDuotone;
64
+ }
65
+
66
+ function FiltersToolsPanel( {
67
+ resetAllFilter,
68
+ onChange,
69
+ value,
70
+ panelId,
71
+ children,
72
+ } ) {
73
+ const resetAll = () => {
74
+ const updatedValue = resetAllFilter( value );
75
+ onChange( updatedValue );
76
+ };
77
+
78
+ return (
79
+ <ToolsPanel
80
+ label={ __( 'Filters' ) }
81
+ resetAll={ resetAll }
82
+ panelId={ panelId }
83
+ >
84
+ { children }
85
+ </ToolsPanel>
86
+ );
87
+ }
88
+
89
+ const DEFAULT_CONTROLS = {
90
+ duotone: true,
91
+ };
92
+
93
+ const popoverProps = {
94
+ placement: 'left-start',
95
+ offset: 36,
96
+ shift: true,
97
+ className: 'block-editor-duotone-control__popover',
98
+ headerTitle: __( 'Duotone' ),
99
+ };
100
+
101
+ const LabeledColorIndicator = ( { indicator, label } ) => (
102
+ <HStack justify="flex-start">
103
+ <ZStack isLayered={ false } offset={ -8 }>
104
+ <Flex expanded={ false }>
105
+ { indicator === 'unset' || ! indicator ? (
106
+ <ColorIndicator className="block-editor-duotone-control__unset-indicator" />
107
+ ) : (
108
+ <DuotoneSwatch values={ indicator } />
109
+ ) }
110
+ </Flex>
111
+ </ZStack>
112
+ <FlexItem title={ label }>{ label }</FlexItem>
113
+ </HStack>
114
+ );
115
+
116
+ export default function FiltersPanel( {
117
+ as: Wrapper = FiltersToolsPanel,
118
+ value,
119
+ onChange,
120
+ inheritedValue = value,
121
+ settings,
122
+ panelId,
123
+ defaultControls = DEFAULT_CONTROLS,
124
+ } ) {
125
+ const decodeValue = ( rawValue ) =>
126
+ getValueFromVariable( { settings }, '', rawValue );
127
+
128
+ // Duotone
129
+ const hasDuotoneEnabled = useHasDuotoneControl( settings );
130
+ const duotonePalette = useMultiOriginColorPresets( settings, {
131
+ presetSetting: 'duotone',
132
+ defaultSetting: 'defaultDuotone',
133
+ } );
134
+ const colorPalette = useMultiOriginColorPresets( settings, {
135
+ presetSetting: 'palette',
136
+ defaultSetting: 'defaultPalette',
137
+ } );
138
+ const duotone = decodeValue( inheritedValue?.filter?.duotone );
139
+ const setDuotone = ( newValue ) => {
140
+ const duotonePreset = duotonePalette.find( ( { colors } ) => {
141
+ return colors === newValue;
142
+ } );
143
+ const settedValue = duotonePreset
144
+ ? `var:preset|duotone|${ duotonePreset.slug }`
145
+ : newValue;
146
+ onChange( setImmutably( value, [ 'filter', 'duotone' ], settedValue ) );
147
+ };
148
+ const hasDuotone = () => !! value?.filter?.duotone;
149
+ const resetDuotone = () => setDuotone( undefined );
150
+
151
+ const disableCustomColors = ! settings?.color?.custom;
152
+ const disableCustomDuotone =
153
+ ! settings?.color?.customDuotone ||
154
+ ( colorPalette?.length === 0 && disableCustomColors );
155
+
156
+ const resetAllFilter = useCallback( ( previousValue ) => {
157
+ return {
158
+ ...previousValue,
159
+ filter: {
160
+ ...previousValue.filter,
161
+ duotone: undefined,
162
+ },
163
+ };
164
+ }, [] );
165
+
166
+ return (
167
+ <Wrapper
168
+ resetAllFilter={ resetAllFilter }
169
+ value={ value }
170
+ onChange={ onChange }
171
+ panelId={ panelId }
172
+ >
173
+ { hasDuotoneEnabled && (
174
+ <ToolsPanelItem
175
+ label={ __( 'Duotone' ) }
176
+ hasValue={ hasDuotone }
177
+ onDeselect={ resetDuotone }
178
+ isShownByDefault={ defaultControls.duotone }
179
+ panelId={ panelId }
180
+ >
181
+ <Dropdown
182
+ popoverProps={ popoverProps }
183
+ className="block-editor-global-styles-filters-panel__dropdown"
184
+ renderToggle={ ( { onToggle, isOpen } ) => {
185
+ const toggleProps = {
186
+ onClick: onToggle,
187
+ className: classnames( { 'is-open': isOpen } ),
188
+ 'aria-expanded': isOpen,
189
+ };
190
+
191
+ return (
192
+ <ItemGroup isBordered isSeparated>
193
+ <Button { ...toggleProps }>
194
+ <LabeledColorIndicator
195
+ indicator={ duotone }
196
+ label={ __( 'Duotone' ) }
197
+ />
198
+ </Button>
199
+ </ItemGroup>
200
+ );
201
+ } }
202
+ renderContent={ () => (
203
+ <DropdownContentWrapper paddingSize="medium">
204
+ <VStack>
205
+ <p>
206
+ { __(
207
+ 'Create a two-tone color effect without losing your original image.'
208
+ ) }
209
+ </p>
210
+ <DuotonePicker
211
+ colorPalette={ colorPalette }
212
+ duotonePalette={ duotonePalette }
213
+ disableCustomColors={
214
+ disableCustomColors
215
+ }
216
+ disableCustomDuotone={
217
+ disableCustomDuotone
218
+ }
219
+ value={ duotone }
220
+ onChange={ setDuotone }
221
+ />
222
+ </VStack>
223
+ </DropdownContentWrapper>
224
+ ) }
225
+ />
226
+ </ToolsPanelItem>
227
+ ) }
228
+ </Wrapper>
229
+ );
230
+ }
@@ -34,17 +34,6 @@ export function getBlockCSSSelector(
34
34
  const hasSelectors = ! isEmpty( selectors );
35
35
  const path = Array.isArray( target ) ? target.join( '.' ) : target;
36
36
 
37
- // Duotone ( no fallback selectors for Duotone ).
38
- if ( path === 'filter.duotone' ) {
39
- // If selectors API in use, only use its value or null.
40
- if ( hasSelectors ) {
41
- return get( selectors, path, null );
42
- }
43
-
44
- // Selectors API, not available, check for old experimental selector.
45
- return get( supports, 'color.__experimentalDuotone', null );
46
- }
47
-
48
37
  // Root selector.
49
38
 
50
39
  // Calculated before returning as it can be used as a fallback for feature
@@ -283,6 +283,12 @@ export function useSettingsForBlockElement(
283
283
  updatedSettings.color.customGradient = false;
284
284
  }
285
285
 
286
+ // If filters are not supported by the block/element, disable duotone.
287
+ if ( ! supportedStyles.includes( 'filter' ) ) {
288
+ updatedSettings.color.defaultDuotone = false;
289
+ updatedSettings.color.customDuotone = false;
290
+ }
291
+
286
292
  [
287
293
  'lineHeight',
288
294
  'fontStyle',
@@ -360,6 +366,10 @@ export function useSettingsForBlockElement(
360
366
  }
361
367
  } );
362
368
 
369
+ updatedSettings.shadow = supportedStyles.includes( 'shadow' )
370
+ ? updatedSettings.shadow
371
+ : false;
372
+
363
373
  return updatedSettings;
364
374
  }, [ parentSettings, supportedStyles, supports ] );
365
375
  }
@@ -17,3 +17,5 @@ export {
17
17
  } from './dimensions-panel';
18
18
  export { default as BorderPanel, useHasBorderPanel } from './border-panel';
19
19
  export { default as ColorPanel, useHasColorPanel } from './color-panel';
20
+ export { default as EffectsPanel, useHasEffectsPanel } from './effects-panel';
21
+ export { default as FiltersPanel, useHasFiltersPanel } from './filters-panel';