@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
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = EffectsPanel;
9
+ exports.useHasEffectsPanel = useHasEffectsPanel;
10
+
11
+ var _element = require("@wordpress/element");
12
+
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+
15
+ var _components = require("@wordpress/components");
16
+
17
+ var _i18n = require("@wordpress/i18n");
18
+
19
+ var _icons = require("@wordpress/icons");
20
+
21
+ var _utils = require("./utils");
22
+
23
+ var _object = require("../../utils/object");
24
+
25
+ /**
26
+ * External dependencies
27
+ */
28
+
29
+ /**
30
+ * WordPress dependencies
31
+ */
32
+
33
+ /**
34
+ * Internal dependencies
35
+ */
36
+ function useHasEffectsPanel(settings) {
37
+ const hasShadowControl = useHasShadowControl(settings);
38
+ return hasShadowControl;
39
+ }
40
+
41
+ function useHasShadowControl(settings) {
42
+ return !!(settings !== null && settings !== void 0 && settings.shadow);
43
+ }
44
+
45
+ function EffectsToolsPanel(_ref) {
46
+ let {
47
+ resetAllFilter,
48
+ onChange,
49
+ value,
50
+ panelId,
51
+ children
52
+ } = _ref;
53
+
54
+ const resetAll = () => {
55
+ const updatedValue = resetAllFilter(value);
56
+ onChange(updatedValue);
57
+ };
58
+
59
+ return (0, _element.createElement)(_components.__experimentalToolsPanel, {
60
+ label: (0, _i18n.__)('Effects'),
61
+ resetAll: resetAll,
62
+ panelId: panelId
63
+ }, children);
64
+ }
65
+
66
+ const DEFAULT_CONTROLS = {
67
+ shadow: true
68
+ };
69
+
70
+ function EffectsPanel(_ref2) {
71
+ let {
72
+ as: Wrapper = EffectsToolsPanel,
73
+ value,
74
+ onChange,
75
+ inheritedValue = value,
76
+ settings,
77
+ panelId,
78
+ defaultControls = DEFAULT_CONTROLS
79
+ } = _ref2;
80
+
81
+ const decodeValue = rawValue => (0, _utils.getValueFromVariable)({
82
+ settings
83
+ }, '', rawValue); // Shadow
84
+
85
+
86
+ const hasShadowEnabled = useHasShadowControl(settings);
87
+ const shadow = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : inheritedValue.shadow);
88
+
89
+ const setShadow = newValue => {
90
+ onChange((0, _object.setImmutably)(value, ['shadow'], newValue));
91
+ };
92
+
93
+ const hasShadow = () => !!(value !== null && value !== void 0 && value.shadow);
94
+
95
+ const resetShadow = () => setShadow(undefined);
96
+
97
+ const resetAllFilter = (0, _element.useCallback)(previousValue => {
98
+ return { ...previousValue,
99
+ shadow: undefined
100
+ };
101
+ }, []);
102
+ return (0, _element.createElement)(Wrapper, {
103
+ resetAllFilter: resetAllFilter,
104
+ value: value,
105
+ onChange: onChange,
106
+ panelId: panelId
107
+ }, hasShadowEnabled && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
108
+ label: (0, _i18n.__)('Shadow'),
109
+ hasValue: hasShadow,
110
+ onDeselect: resetShadow,
111
+ isShownByDefault: defaultControls.shadow,
112
+ panelId: panelId
113
+ }, (0, _element.createElement)(_components.__experimentalItemGroup, {
114
+ isBordered: true,
115
+ isSeparated: true
116
+ }, (0, _element.createElement)(ShadowPopover, {
117
+ shadow: shadow,
118
+ onShadowChange: setShadow,
119
+ settings: settings
120
+ }))));
121
+ }
122
+
123
+ const ShadowPopover = _ref3 => {
124
+ let {
125
+ shadow,
126
+ onShadowChange,
127
+ settings
128
+ } = _ref3;
129
+ const popoverProps = {
130
+ placement: 'left-start',
131
+ offset: 36,
132
+ shift: true
133
+ };
134
+ return (0, _element.createElement)(_components.Dropdown, {
135
+ popoverProps: popoverProps,
136
+ className: "block-editor-global-styles-effects-panel__shadow-dropdown",
137
+ renderToggle: renderShadowToggle(),
138
+ renderContent: () => (0, _element.createElement)(_components.__experimentalDropdownContentWrapper, {
139
+ paddingSize: "medium"
140
+ }, (0, _element.createElement)(ShadowPopoverContainer, {
141
+ shadow: shadow,
142
+ onShadowChange: onShadowChange,
143
+ settings: settings
144
+ }))
145
+ });
146
+ };
147
+
148
+ function renderShadowToggle() {
149
+ return _ref4 => {
150
+ let {
151
+ onToggle,
152
+ isOpen
153
+ } = _ref4;
154
+ const toggleProps = {
155
+ onClick: onToggle,
156
+ className: (0, _classnames.default)({
157
+ 'is-open': isOpen
158
+ }),
159
+ 'aria-expanded': isOpen
160
+ };
161
+ return (0, _element.createElement)(_components.Button, toggleProps, (0, _element.createElement)(_components.__experimentalHStack, {
162
+ justify: "flex-start"
163
+ }, (0, _element.createElement)(_icons.Icon, {
164
+ className: "block-editor-global-styles-effects-panel__toggle-icon",
165
+ icon: _icons.shadow,
166
+ size: 24
167
+ }), (0, _element.createElement)(_components.FlexItem, null, (0, _i18n.__)('Shadow'))));
168
+ };
169
+ }
170
+
171
+ function ShadowPopoverContainer(_ref5) {
172
+ var _settings$shadow, _settings$shadow$pres, _settings$shadow2, _settings$shadow2$pre, _settings$shadow3;
173
+
174
+ let {
175
+ shadow,
176
+ onShadowChange,
177
+ settings
178
+ } = _ref5;
179
+ const defaultShadows = settings === null || settings === void 0 ? void 0 : (_settings$shadow = settings.shadow) === null || _settings$shadow === void 0 ? void 0 : (_settings$shadow$pres = _settings$shadow.presets) === null || _settings$shadow$pres === void 0 ? void 0 : _settings$shadow$pres.default;
180
+ const themeShadows = settings === null || settings === void 0 ? void 0 : (_settings$shadow2 = settings.shadow) === null || _settings$shadow2 === void 0 ? void 0 : (_settings$shadow2$pre = _settings$shadow2.presets) === null || _settings$shadow2$pre === void 0 ? void 0 : _settings$shadow2$pre.theme;
181
+ const defaultPresetsEnabled = settings === null || settings === void 0 ? void 0 : (_settings$shadow3 = settings.shadow) === null || _settings$shadow3 === void 0 ? void 0 : _settings$shadow3.defaultPresets;
182
+ const shadows = [...(defaultPresetsEnabled ? defaultShadows : []), ...(themeShadows || [])];
183
+ return (0, _element.createElement)("div", {
184
+ className: "block-editor-global-styles-effects-panel__shadow-popover-container"
185
+ }, (0, _element.createElement)(_components.__experimentalVStack, {
186
+ spacing: 4
187
+ }, (0, _element.createElement)(_components.__experimentalHeading, {
188
+ level: 5
189
+ }, (0, _i18n.__)('Shadow')), (0, _element.createElement)(ShadowPresets, {
190
+ presets: shadows,
191
+ activeShadow: shadow,
192
+ onSelect: onShadowChange
193
+ })));
194
+ }
195
+
196
+ function ShadowPresets(_ref6) {
197
+ let {
198
+ presets,
199
+ activeShadow,
200
+ onSelect
201
+ } = _ref6;
202
+ return !presets ? null : (0, _element.createElement)(_components.__experimentalGrid, {
203
+ columns: 6,
204
+ gap: 0,
205
+ align: "center",
206
+ justify: "center"
207
+ }, presets.map(_ref7 => {
208
+ let {
209
+ name,
210
+ slug,
211
+ shadow
212
+ } = _ref7;
213
+ return (0, _element.createElement)(ShadowIndicator, {
214
+ key: slug,
215
+ label: name,
216
+ isActive: shadow === activeShadow,
217
+ onSelect: () => onSelect(shadow === activeShadow ? undefined : shadow),
218
+ shadow: shadow
219
+ });
220
+ }));
221
+ }
222
+
223
+ function ShadowIndicator(_ref8) {
224
+ let {
225
+ label,
226
+ isActive,
227
+ onSelect,
228
+ shadow
229
+ } = _ref8;
230
+ return (0, _element.createElement)("div", {
231
+ className: "block-editor-global-styles-effects-panel__shadow-indicator-wrapper"
232
+ }, (0, _element.createElement)(_components.Button, {
233
+ className: "block-editor-global-styles-effects-panel__shadow-indicator",
234
+ onClick: onSelect,
235
+ label: label,
236
+ style: {
237
+ boxShadow: shadow
238
+ },
239
+ showTooltip: true
240
+ }, isActive && (0, _element.createElement)(_icons.Icon, {
241
+ icon: _icons.check
242
+ })));
243
+ }
244
+ //# sourceMappingURL=effects-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/effects-panel.js"],"names":["useHasEffectsPanel","settings","hasShadowControl","useHasShadowControl","shadow","EffectsToolsPanel","resetAllFilter","onChange","value","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","EffectsPanel","as","Wrapper","inheritedValue","defaultControls","decodeValue","rawValue","hasShadowEnabled","setShadow","newValue","hasShadow","resetShadow","undefined","previousValue","ShadowPopover","onShadowChange","popoverProps","placement","offset","shift","renderShadowToggle","onToggle","isOpen","toggleProps","onClick","className","shadowIcon","ShadowPopoverContainer","defaultShadows","presets","default","themeShadows","theme","defaultPresetsEnabled","defaultPresets","shadows","ShadowPresets","activeShadow","onSelect","map","name","slug","ShadowIndicator","label","isActive","boxShadow","check"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalGrid as Grid,\n\t__experimentalHeading as Heading,\n\tFlexItem,\n\tDropdown,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback } from '@wordpress/element';\nimport { shadow as shadowIcon, Icon, check } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable } from './utils';\nimport { setImmutably } from '../../utils/object';\n\nexport function useHasEffectsPanel( settings ) {\n\tconst hasShadowControl = useHasShadowControl( settings );\n\treturn hasShadowControl;\n}\n\nfunction useHasShadowControl( settings ) {\n\treturn !! settings?.shadow;\n}\n\nfunction EffectsToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Effects' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tshadow: true,\n};\n\nexport default function EffectsPanel( {\n\tas: Wrapper = EffectsToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\t// Shadow\n\tconst hasShadowEnabled = useHasShadowControl( settings );\n\tconst shadow = decodeValue( inheritedValue?.shadow );\n\tconst setShadow = ( newValue ) => {\n\t\tonChange( setImmutably( value, [ 'shadow' ], newValue ) );\n\t};\n\tconst hasShadow = () => !! value?.shadow;\n\tconst resetShadow = () => setShadow( undefined );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tshadow: undefined,\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ hasShadowEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\t\thasValue={ hasShadow }\n\t\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\t\tisShownByDefault={ defaultControls.shadow }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\t\tonShadowChange={ setShadow }\n\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n\nconst ShadowPopover = ( { shadow, onShadowChange, settings } ) => {\n\tconst popoverProps = {\n\t\tplacement: 'left-start',\n\t\toffset: 36,\n\t\tshift: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tclassName=\"block-editor-global-styles-effects-panel__shadow-dropdown\"\n\t\t\trenderToggle={ renderShadowToggle() }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper paddingSize=\"medium\">\n\t\t\t\t\t<ShadowPopoverContainer\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ onShadowChange }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\nfunction renderShadowToggle() {\n\treturn ( { onToggle, isOpen } ) => {\n\t\tconst toggleProps = {\n\t\t\tonClick: onToggle,\n\t\t\tclassName: classnames( { 'is-open': isOpen } ),\n\t\t\t'aria-expanded': isOpen,\n\t\t};\n\n\t\treturn (\n\t\t\t<Button { ...toggleProps }>\n\t\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-effects-panel__toggle-icon\"\n\t\t\t\t\t\ticon={ shadowIcon }\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t\t<FlexItem>{ __( 'Shadow' ) }</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t);\n\t};\n}\n\nfunction ShadowPopoverContainer( { shadow, onShadowChange, settings } ) {\n\tconst defaultShadows = settings?.shadow?.presets?.default;\n\tconst themeShadows = settings?.shadow?.presets?.theme;\n\tconst defaultPresetsEnabled = settings?.shadow?.defaultPresets;\n\n\tconst shadows = [\n\t\t...( defaultPresetsEnabled ? defaultShadows : [] ),\n\t\t...( themeShadows || [] ),\n\t];\n\n\treturn (\n\t\t<div className=\"block-editor-global-styles-effects-panel__shadow-popover-container\">\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<Heading level={ 5 }>{ __( 'Shadow' ) }</Heading>\n\t\t\t\t<ShadowPresets\n\t\t\t\t\tpresets={ shadows }\n\t\t\t\t\tactiveShadow={ shadow }\n\t\t\t\t\tonSelect={ onShadowChange }\n\t\t\t\t/>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nfunction ShadowPresets( { presets, activeShadow, onSelect } ) {\n\treturn ! presets ? null : (\n\t\t<Grid columns={ 6 } gap={ 0 } align=\"center\" justify=\"center\">\n\t\t\t{ presets.map( ( { name, slug, shadow } ) => (\n\t\t\t\t<ShadowIndicator\n\t\t\t\t\tkey={ slug }\n\t\t\t\t\tlabel={ name }\n\t\t\t\t\tisActive={ shadow === activeShadow }\n\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\tonSelect( shadow === activeShadow ? undefined : shadow )\n\t\t\t\t\t}\n\t\t\t\t\tshadow={ shadow }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Grid>\n\t);\n}\n\nfunction ShadowIndicator( { label, isActive, onSelect, shadow } ) {\n\treturn (\n\t\t<div className=\"block-editor-global-styles-effects-panel__shadow-indicator-wrapper\">\n\t\t\t<Button\n\t\t\t\tclassName=\"block-editor-global-styles-effects-panel__shadow-indicator\"\n\t\t\t\tonClick={ onSelect }\n\t\t\t\tlabel={ label }\n\t\t\t\tstyle={ { boxShadow: shadow } }\n\t\t\t\tshowTooltip\n\t\t\t>\n\t\t\t\t{ isActive && <Icon icon={ check } /> }\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = FiltersPanel;
9
+ exports.useHasFiltersPanel = useHasFiltersPanel;
10
+
11
+ var _element = require("@wordpress/element");
12
+
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+
15
+ var _components = require("@wordpress/components");
16
+
17
+ var _i18n = require("@wordpress/i18n");
18
+
19
+ var _utils = require("./utils");
20
+
21
+ var _object = require("../../utils/object");
22
+
23
+ /**
24
+ * External dependencies
25
+ */
26
+
27
+ /**
28
+ * WordPress dependencies
29
+ */
30
+
31
+ /**
32
+ * Internal dependencies
33
+ */
34
+ const EMPTY_ARRAY = [];
35
+
36
+ function useMultiOriginColorPresets(settings, _ref) {
37
+ var _settings$color, _settings$color2, _settings$color2$pres, _settings$color3, _settings$color3$pres, _settings$color4, _settings$color4$pres;
38
+
39
+ let {
40
+ presetSetting,
41
+ defaultSetting
42
+ } = _ref;
43
+ const disableDefault = !(settings !== null && settings !== void 0 && (_settings$color = settings.color) !== null && _settings$color !== void 0 && _settings$color[defaultSetting]);
44
+ const userPresets = (settings === null || settings === void 0 ? void 0 : (_settings$color2 = settings.color) === null || _settings$color2 === void 0 ? void 0 : (_settings$color2$pres = _settings$color2[presetSetting]) === null || _settings$color2$pres === void 0 ? void 0 : _settings$color2$pres.custom) || EMPTY_ARRAY;
45
+ const themePresets = (settings === null || settings === void 0 ? void 0 : (_settings$color3 = settings.color) === null || _settings$color3 === void 0 ? void 0 : (_settings$color3$pres = _settings$color3[presetSetting]) === null || _settings$color3$pres === void 0 ? void 0 : _settings$color3$pres.theme) || EMPTY_ARRAY;
46
+ const defaultPresets = (settings === null || settings === void 0 ? void 0 : (_settings$color4 = settings.color) === null || _settings$color4 === void 0 ? void 0 : (_settings$color4$pres = _settings$color4[presetSetting]) === null || _settings$color4$pres === void 0 ? void 0 : _settings$color4$pres.default) || EMPTY_ARRAY;
47
+ return (0, _element.useMemo)(() => [...userPresets, ...themePresets, ...(disableDefault ? EMPTY_ARRAY : defaultPresets)], [disableDefault, userPresets, themePresets, defaultPresets]);
48
+ }
49
+
50
+ function useHasFiltersPanel(settings) {
51
+ const hasDuotone = useHasDuotoneControl(settings);
52
+ return hasDuotone;
53
+ }
54
+
55
+ function useHasDuotoneControl(settings) {
56
+ return settings.color.customDuotone || settings.color.defaultDuotone;
57
+ }
58
+
59
+ function FiltersToolsPanel(_ref2) {
60
+ let {
61
+ resetAllFilter,
62
+ onChange,
63
+ value,
64
+ panelId,
65
+ children
66
+ } = _ref2;
67
+
68
+ const resetAll = () => {
69
+ const updatedValue = resetAllFilter(value);
70
+ onChange(updatedValue);
71
+ };
72
+
73
+ return (0, _element.createElement)(_components.__experimentalToolsPanel, {
74
+ label: (0, _i18n.__)('Filters'),
75
+ resetAll: resetAll,
76
+ panelId: panelId
77
+ }, children);
78
+ }
79
+
80
+ const DEFAULT_CONTROLS = {
81
+ duotone: true
82
+ };
83
+ const popoverProps = {
84
+ placement: 'left-start',
85
+ offset: 36,
86
+ shift: true,
87
+ className: 'block-editor-duotone-control__popover',
88
+ headerTitle: (0, _i18n.__)('Duotone')
89
+ };
90
+
91
+ const LabeledColorIndicator = _ref3 => {
92
+ let {
93
+ indicator,
94
+ label
95
+ } = _ref3;
96
+ return (0, _element.createElement)(_components.__experimentalHStack, {
97
+ justify: "flex-start"
98
+ }, (0, _element.createElement)(_components.__experimentalZStack, {
99
+ isLayered: false,
100
+ offset: -8
101
+ }, (0, _element.createElement)(_components.Flex, {
102
+ expanded: false
103
+ }, indicator === 'unset' || !indicator ? (0, _element.createElement)(_components.ColorIndicator, {
104
+ className: "block-editor-duotone-control__unset-indicator"
105
+ }) : (0, _element.createElement)(_components.DuotoneSwatch, {
106
+ values: indicator
107
+ }))), (0, _element.createElement)(_components.FlexItem, {
108
+ title: label
109
+ }, label));
110
+ };
111
+
112
+ function FiltersPanel(_ref4) {
113
+ var _inheritedValue$filte, _settings$color5, _settings$color6;
114
+
115
+ let {
116
+ as: Wrapper = FiltersToolsPanel,
117
+ value,
118
+ onChange,
119
+ inheritedValue = value,
120
+ settings,
121
+ panelId,
122
+ defaultControls = DEFAULT_CONTROLS
123
+ } = _ref4;
124
+
125
+ const decodeValue = rawValue => (0, _utils.getValueFromVariable)({
126
+ settings
127
+ }, '', rawValue); // Duotone
128
+
129
+
130
+ const hasDuotoneEnabled = useHasDuotoneControl(settings);
131
+ const duotonePalette = useMultiOriginColorPresets(settings, {
132
+ presetSetting: 'duotone',
133
+ defaultSetting: 'defaultDuotone'
134
+ });
135
+ const colorPalette = useMultiOriginColorPresets(settings, {
136
+ presetSetting: 'palette',
137
+ defaultSetting: 'defaultPalette'
138
+ });
139
+ const duotone = decodeValue(inheritedValue === null || inheritedValue === void 0 ? void 0 : (_inheritedValue$filte = inheritedValue.filter) === null || _inheritedValue$filte === void 0 ? void 0 : _inheritedValue$filte.duotone);
140
+
141
+ const setDuotone = newValue => {
142
+ const duotonePreset = duotonePalette.find(_ref5 => {
143
+ let {
144
+ colors
145
+ } = _ref5;
146
+ return colors === newValue;
147
+ });
148
+ const settedValue = duotonePreset ? `var:preset|duotone|${duotonePreset.slug}` : newValue;
149
+ onChange((0, _object.setImmutably)(value, ['filter', 'duotone'], settedValue));
150
+ };
151
+
152
+ const hasDuotone = () => {
153
+ var _value$filter;
154
+
155
+ return !!(value !== null && value !== void 0 && (_value$filter = value.filter) !== null && _value$filter !== void 0 && _value$filter.duotone);
156
+ };
157
+
158
+ const resetDuotone = () => setDuotone(undefined);
159
+
160
+ const disableCustomColors = !(settings !== null && settings !== void 0 && (_settings$color5 = settings.color) !== null && _settings$color5 !== void 0 && _settings$color5.custom);
161
+ const disableCustomDuotone = !(settings !== null && settings !== void 0 && (_settings$color6 = settings.color) !== null && _settings$color6 !== void 0 && _settings$color6.customDuotone) || (colorPalette === null || colorPalette === void 0 ? void 0 : colorPalette.length) === 0 && disableCustomColors;
162
+ const resetAllFilter = (0, _element.useCallback)(previousValue => {
163
+ return { ...previousValue,
164
+ filter: { ...previousValue.filter,
165
+ duotone: undefined
166
+ }
167
+ };
168
+ }, []);
169
+ return (0, _element.createElement)(Wrapper, {
170
+ resetAllFilter: resetAllFilter,
171
+ value: value,
172
+ onChange: onChange,
173
+ panelId: panelId
174
+ }, hasDuotoneEnabled && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
175
+ label: (0, _i18n.__)('Duotone'),
176
+ hasValue: hasDuotone,
177
+ onDeselect: resetDuotone,
178
+ isShownByDefault: defaultControls.duotone,
179
+ panelId: panelId
180
+ }, (0, _element.createElement)(_components.Dropdown, {
181
+ popoverProps: popoverProps,
182
+ className: "block-editor-global-styles-filters-panel__dropdown",
183
+ renderToggle: _ref6 => {
184
+ let {
185
+ onToggle,
186
+ isOpen
187
+ } = _ref6;
188
+ const toggleProps = {
189
+ onClick: onToggle,
190
+ className: (0, _classnames.default)({
191
+ 'is-open': isOpen
192
+ }),
193
+ 'aria-expanded': isOpen
194
+ };
195
+ return (0, _element.createElement)(_components.__experimentalItemGroup, {
196
+ isBordered: true,
197
+ isSeparated: true
198
+ }, (0, _element.createElement)(_components.Button, toggleProps, (0, _element.createElement)(LabeledColorIndicator, {
199
+ indicator: duotone,
200
+ label: (0, _i18n.__)('Duotone')
201
+ })));
202
+ },
203
+ renderContent: () => (0, _element.createElement)(_components.__experimentalDropdownContentWrapper, {
204
+ paddingSize: "medium"
205
+ }, (0, _element.createElement)(_components.__experimentalVStack, null, (0, _element.createElement)("p", null, (0, _i18n.__)('Create a two-tone color effect without losing your original image.')), (0, _element.createElement)(_components.DuotonePicker, {
206
+ colorPalette: colorPalette,
207
+ duotonePalette: duotonePalette,
208
+ disableCustomColors: disableCustomColors,
209
+ disableCustomDuotone: disableCustomDuotone,
210
+ value: duotone,
211
+ onChange: setDuotone
212
+ })))
213
+ })));
214
+ }
215
+ //# sourceMappingURL=filters-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/filters-panel.js"],"names":["EMPTY_ARRAY","useMultiOriginColorPresets","settings","presetSetting","defaultSetting","disableDefault","color","userPresets","custom","themePresets","theme","defaultPresets","default","useHasFiltersPanel","hasDuotone","useHasDuotoneControl","customDuotone","defaultDuotone","FiltersToolsPanel","resetAllFilter","onChange","value","panelId","children","resetAll","updatedValue","DEFAULT_CONTROLS","duotone","popoverProps","placement","offset","shift","className","headerTitle","LabeledColorIndicator","indicator","label","FiltersPanel","as","Wrapper","inheritedValue","defaultControls","decodeValue","rawValue","hasDuotoneEnabled","duotonePalette","colorPalette","filter","setDuotone","newValue","duotonePreset","find","colors","settedValue","slug","resetDuotone","undefined","disableCustomColors","disableCustomDuotone","length","previousValue","onToggle","isOpen","toggleProps","onClick"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalZStack as ZStack,\n\t__experimentalVStack as VStack,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n\tColorIndicator,\n\tDuotonePicker,\n\tDuotoneSwatch,\n\tDropdown,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getValueFromVariable } from './utils';\nimport { setImmutably } from '../../utils/object';\n\nconst EMPTY_ARRAY = [];\nfunction useMultiOriginColorPresets(\n\tsettings,\n\t{ presetSetting, defaultSetting }\n) {\n\tconst disableDefault = ! settings?.color?.[ defaultSetting ];\n\tconst userPresets =\n\t\tsettings?.color?.[ presetSetting ]?.custom || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tsettings?.color?.[ presetSetting ]?.theme || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tsettings?.color?.[ presetSetting ]?.default || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nexport function useHasFiltersPanel( settings ) {\n\tconst hasDuotone = useHasDuotoneControl( settings );\n\n\treturn hasDuotone;\n}\n\nfunction useHasDuotoneControl( settings ) {\n\treturn settings.color.customDuotone || settings.color.defaultDuotone;\n}\n\nfunction FiltersToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ __( 'Filters' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tduotone: true,\n};\n\nconst popoverProps = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-duotone-control__popover',\n\theaderTitle: __( 'Duotone' ),\n};\n\nconst LabeledColorIndicator = ( { indicator, label } ) => (\n\t<HStack justify=\"flex-start\">\n\t\t<ZStack isLayered={ false } offset={ -8 }>\n\t\t\t<Flex expanded={ false }>\n\t\t\t\t{ indicator === 'unset' || ! indicator ? (\n\t\t\t\t\t<ColorIndicator className=\"block-editor-duotone-control__unset-indicator\" />\n\t\t\t\t) : (\n\t\t\t\t\t<DuotoneSwatch values={ indicator } />\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t</ZStack>\n\t\t<FlexItem title={ label }>{ label }</FlexItem>\n\t</HStack>\n);\n\nexport default function FiltersPanel( {\n\tas: Wrapper = FiltersToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst decodeValue = ( rawValue ) =>\n\t\tgetValueFromVariable( { settings }, '', rawValue );\n\n\t// Duotone\n\tconst hasDuotoneEnabled = useHasDuotoneControl( settings );\n\tconst duotonePalette = useMultiOriginColorPresets( settings, {\n\t\tpresetSetting: 'duotone',\n\t\tdefaultSetting: 'defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginColorPresets( settings, {\n\t\tpresetSetting: 'palette',\n\t\tdefaultSetting: 'defaultPalette',\n\t} );\n\tconst duotone = decodeValue( inheritedValue?.filter?.duotone );\n\tconst setDuotone = ( newValue ) => {\n\t\tconst duotonePreset = duotonePalette.find( ( { colors } ) => {\n\t\t\treturn colors === newValue;\n\t\t} );\n\t\tconst settedValue = duotonePreset\n\t\t\t? `var:preset|duotone|${ duotonePreset.slug }`\n\t\t\t: newValue;\n\t\tonChange( setImmutably( value, [ 'filter', 'duotone' ], settedValue ) );\n\t};\n\tconst hasDuotone = () => !! value?.filter?.duotone;\n\tconst resetDuotone = () => setDuotone( undefined );\n\n\tconst disableCustomColors = ! settings?.color?.custom;\n\tconst disableCustomDuotone =\n\t\t! settings?.color?.customDuotone ||\n\t\t( colorPalette?.length === 0 && disableCustomColors );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tfilter: {\n\t\t\t\t...previousValue.filter,\n\t\t\t\tduotone: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t{ hasDuotoneEnabled && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Duotone' ) }\n\t\t\t\t\thasValue={ hasDuotone }\n\t\t\t\t\tonDeselect={ resetDuotone }\n\t\t\t\t\tisShownByDefault={ defaultControls.duotone }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-filters-panel__dropdown\"\n\t\t\t\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\t\t\t\tconst toggleProps = {\n\t\t\t\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\t\t\t\tclassName: classnames( { 'is-open': isOpen } ),\n\t\t\t\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t\t\t\t\t<Button { ...toggleProps }>\n\t\t\t\t\t\t\t\t\t\t<LabeledColorIndicator\n\t\t\t\t\t\t\t\t\t\t\tindicator={ duotone }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Duotone' ) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<DropdownContentWrapper paddingSize=\"medium\">\n\t\t\t\t\t\t\t\t<VStack>\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Create a two-tone color effect without losing your original image.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<DuotonePicker\n\t\t\t\t\t\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\t\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\t\t\t\t\t\tdisableCustomColors={\n\t\t\t\t\t\t\t\t\t\t\tdisableCustomColors\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdisableCustomDuotone={\n\t\t\t\t\t\t\t\t\t\t\tdisableCustomDuotone\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvalue={ duotone }\n\t\t\t\t\t\t\t\t\t\tonChange={ setDuotone }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t</DropdownContentWrapper>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"]}
@@ -45,21 +45,10 @@ function getBlockCSSSelector(blockType) {
45
45
  supports
46
46
  } = blockType;
47
47
  const hasSelectors = !(0, _lodash.isEmpty)(selectors);
48
- const path = Array.isArray(target) ? target.join('.') : target; // Duotone ( no fallback selectors for Duotone ).
49
-
50
- if (path === 'filter.duotone') {
51
- // If selectors API in use, only use its value or null.
52
- if (hasSelectors) {
53
- return (0, _lodash.get)(selectors, path, null);
54
- } // Selectors API, not available, check for old experimental selector.
55
-
56
-
57
- return (0, _lodash.get)(supports, 'color.__experimentalDuotone', null);
58
- } // Root selector.
48
+ const path = Array.isArray(target) ? target.join('.') : target; // Root selector.
59
49
  // Calculated before returning as it can be used as a fallback for feature
60
50
  // selectors later on.
61
51
 
62
-
63
52
  let rootSelector = null;
64
53
 
65
54
  if (hasSelectors && selectors.root) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/get-block-css-selector.js"],"names":["getBlockCSSSelector","blockType","target","options","fallback","name","selectors","supports","hasSelectors","path","Array","isArray","join","rootSelector","root","__experimentalSelector","replace","pathArray","split","length","fallbackSelector","featureSelector","subfeatureSelector"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, isEmpty } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { scopeSelector } from './utils';\n\n/**\n * Determine the CSS selector for the block type and target provided, returning\n * it if available.\n *\n * @param {import('@wordpress/blocks').Block} blockType The block's type.\n * @param {string|string[]} target The desired selector's target e.g. `root`, delimited string, or array path.\n * @param {Object} options Options object.\n * @param {boolean} options.fallback Whether or not to fallback to broader selector.\n *\n * @return {?string} The CSS selector or `null` if no selector available.\n */\nexport function getBlockCSSSelector(\n\tblockType,\n\ttarget = 'root',\n\toptions = {}\n) {\n\tif ( ! target ) {\n\t\treturn null;\n\t}\n\n\tconst { fallback = false } = options;\n\tconst { name, selectors, supports } = blockType;\n\n\tconst hasSelectors = ! isEmpty( selectors );\n\tconst path = Array.isArray( target ) ? target.join( '.' ) : target;\n\n\t// Duotone ( no fallback selectors for Duotone ).\n\tif ( path === 'filter.duotone' ) {\n\t\t// If selectors API in use, only use its value or null.\n\t\tif ( hasSelectors ) {\n\t\t\treturn get( selectors, path, null );\n\t\t}\n\n\t\t// Selectors API, not available, check for old experimental selector.\n\t\treturn get( supports, 'color.__experimentalDuotone', null );\n\t}\n\n\t// Root selector.\n\n\t// Calculated before returning as it can be used as a fallback for feature\n\t// selectors later on.\n\tlet rootSelector = null;\n\n\tif ( hasSelectors && selectors.root ) {\n\t\t// Use the selectors API if available.\n\t\trootSelector = selectors?.root;\n\t} else if ( supports?.__experimentalSelector ) {\n\t\t// Use the old experimental selector supports property if set.\n\t\trootSelector = supports.__experimentalSelector;\n\t} else {\n\t\t// If no root selector found, generate default block class selector.\n\t\trootSelector =\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t}\n\n\t// Return selector if it's the root target we are looking for.\n\tif ( path === 'root' ) {\n\t\treturn rootSelector;\n\t}\n\n\t// If target is not `root` or `duotone` we have a feature or subfeature\n\t// as the target. If the target is a string convert to an array.\n\tconst pathArray = Array.isArray( target ) ? target : target.split( '.' );\n\n\t// Feature selectors ( may fallback to root selector );\n\tif ( pathArray.length === 1 ) {\n\t\tconst fallbackSelector = fallback ? rootSelector : null;\n\n\t\t// Prefer the selectors API if available.\n\t\tif ( hasSelectors ) {\n\t\t\t// Get selector from either `feature.root` or shorthand path.\n\t\t\tconst featureSelector =\n\t\t\t\tget( selectors, `${ path }.root`, null ) ||\n\t\t\t\tget( selectors, path, null );\n\n\t\t\t// Return feature selector if found or any available fallback.\n\t\t\treturn featureSelector || fallbackSelector;\n\t\t}\n\n\t\t// Try getting old experimental supports selector value.\n\t\tconst featureSelector = get(\n\t\t\tsupports,\n\t\t\t`${ path }.__experimentalSelector`,\n\t\t\tnull\n\t\t);\n\n\t\t// If nothing to work with, provide fallback selector if available.\n\t\tif ( ! featureSelector ) {\n\t\t\treturn fallbackSelector;\n\t\t}\n\n\t\t// Scope the feature selector by the block's root selector.\n\t\treturn scopeSelector( rootSelector, featureSelector );\n\t}\n\n\t// Subfeature selector.\n\t// This may fallback either to parent feature or root selector.\n\tlet subfeatureSelector;\n\n\t// Use selectors API if available.\n\tif ( hasSelectors ) {\n\t\tsubfeatureSelector = get( selectors, path, null );\n\t}\n\n\t// Only return if we have a subfeature selector.\n\tif ( subfeatureSelector ) {\n\t\treturn subfeatureSelector;\n\t}\n\n\t// To this point we don't have a subfeature selector. If a fallback has been\n\t// requested, remove subfeature from target path and return results of a\n\t// call for the parent feature's selector.\n\tif ( fallback ) {\n\t\treturn getBlockCSSSelector( blockType, pathArray[ 0 ], options );\n\t}\n\n\t// We tried.\n\treturn null;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/global-styles/get-block-css-selector.js"],"names":["getBlockCSSSelector","blockType","target","options","fallback","name","selectors","supports","hasSelectors","path","Array","isArray","join","rootSelector","root","__experimentalSelector","replace","pathArray","split","length","fallbackSelector","featureSelector","subfeatureSelector"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, isEmpty } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { scopeSelector } from './utils';\n\n/**\n * Determine the CSS selector for the block type and target provided, returning\n * it if available.\n *\n * @param {import('@wordpress/blocks').Block} blockType The block's type.\n * @param {string|string[]} target The desired selector's target e.g. `root`, delimited string, or array path.\n * @param {Object} options Options object.\n * @param {boolean} options.fallback Whether or not to fallback to broader selector.\n *\n * @return {?string} The CSS selector or `null` if no selector available.\n */\nexport function getBlockCSSSelector(\n\tblockType,\n\ttarget = 'root',\n\toptions = {}\n) {\n\tif ( ! target ) {\n\t\treturn null;\n\t}\n\n\tconst { fallback = false } = options;\n\tconst { name, selectors, supports } = blockType;\n\n\tconst hasSelectors = ! isEmpty( selectors );\n\tconst path = Array.isArray( target ) ? target.join( '.' ) : target;\n\n\t// Root selector.\n\n\t// Calculated before returning as it can be used as a fallback for feature\n\t// selectors later on.\n\tlet rootSelector = null;\n\n\tif ( hasSelectors && selectors.root ) {\n\t\t// Use the selectors API if available.\n\t\trootSelector = selectors?.root;\n\t} else if ( supports?.__experimentalSelector ) {\n\t\t// Use the old experimental selector supports property if set.\n\t\trootSelector = supports.__experimentalSelector;\n\t} else {\n\t\t// If no root selector found, generate default block class selector.\n\t\trootSelector =\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t}\n\n\t// Return selector if it's the root target we are looking for.\n\tif ( path === 'root' ) {\n\t\treturn rootSelector;\n\t}\n\n\t// If target is not `root` or `duotone` we have a feature or subfeature\n\t// as the target. If the target is a string convert to an array.\n\tconst pathArray = Array.isArray( target ) ? target : target.split( '.' );\n\n\t// Feature selectors ( may fallback to root selector );\n\tif ( pathArray.length === 1 ) {\n\t\tconst fallbackSelector = fallback ? rootSelector : null;\n\n\t\t// Prefer the selectors API if available.\n\t\tif ( hasSelectors ) {\n\t\t\t// Get selector from either `feature.root` or shorthand path.\n\t\t\tconst featureSelector =\n\t\t\t\tget( selectors, `${ path }.root`, null ) ||\n\t\t\t\tget( selectors, path, null );\n\n\t\t\t// Return feature selector if found or any available fallback.\n\t\t\treturn featureSelector || fallbackSelector;\n\t\t}\n\n\t\t// Try getting old experimental supports selector value.\n\t\tconst featureSelector = get(\n\t\t\tsupports,\n\t\t\t`${ path }.__experimentalSelector`,\n\t\t\tnull\n\t\t);\n\n\t\t// If nothing to work with, provide fallback selector if available.\n\t\tif ( ! featureSelector ) {\n\t\t\treturn fallbackSelector;\n\t\t}\n\n\t\t// Scope the feature selector by the block's root selector.\n\t\treturn scopeSelector( rootSelector, featureSelector );\n\t}\n\n\t// Subfeature selector.\n\t// This may fallback either to parent feature or root selector.\n\tlet subfeatureSelector;\n\n\t// Use selectors API if available.\n\tif ( hasSelectors ) {\n\t\tsubfeatureSelector = get( selectors, path, null );\n\t}\n\n\t// Only return if we have a subfeature selector.\n\tif ( subfeatureSelector ) {\n\t\treturn subfeatureSelector;\n\t}\n\n\t// To this point we don't have a subfeature selector. If a fallback has been\n\t// requested, remove subfeature from target path and return results of a\n\t// call for the parent feature's selector.\n\tif ( fallback ) {\n\t\treturn getBlockCSSSelector( blockType, pathArray[ 0 ], options );\n\t}\n\n\t// We tried.\n\treturn null;\n}\n"]}
@@ -209,6 +209,12 @@ function useSettingsForBlockElement(parentSettings, blockName, element) {
209
209
  if (!supportedStyles.includes('background')) {
210
210
  updatedSettings.color.gradients = [];
211
211
  updatedSettings.color.customGradient = false;
212
+ } // If filters are not supported by the block/element, disable duotone.
213
+
214
+
215
+ if (!supportedStyles.includes('filter')) {
216
+ updatedSettings.color.defaultDuotone = false;
217
+ updatedSettings.color.customDuotone = false;
212
218
  }
213
219
 
214
220
  ['lineHeight', 'fontStyle', 'fontWeight', 'letterSpacing', 'textTransform', 'textDecoration'].forEach(key => {
@@ -269,6 +275,7 @@ function useSettingsForBlockElement(parentSettings, blockName, element) {
269
275
  };
270
276
  }
271
277
  });
278
+ updatedSettings.shadow = supportedStyles.includes('shadow') ? updatedSettings.shadow : false;
272
279
  return updatedSettings;
273
280
  }, [parentSettings, supportedStyles, supports]);
274
281
  }