@wordpress/block-editor 16.0.1-next.v.202607070741.0 → 16.1.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 (679) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/README.md +8 -0
  3. package/build/components/alignment-control/ui.cjs +2 -4
  4. package/build/components/alignment-control/ui.cjs.map +2 -2
  5. package/build/components/background-image-control/index.cjs +40 -10
  6. package/build/components/background-image-control/index.cjs.map +2 -2
  7. package/build/components/block-alignment-control/ui.cjs +5 -3
  8. package/build/components/block-alignment-control/ui.cjs.map +2 -2
  9. package/build/components/block-canvas/index.cjs +6 -1
  10. package/build/components/block-canvas/index.cjs.map +2 -2
  11. package/build/components/block-controls/groups.cjs +3 -1
  12. package/build/components/block-controls/groups.cjs.map +2 -2
  13. package/build/components/block-edit/edit.cjs +10 -18
  14. package/build/components/block-edit/edit.cjs.map +2 -2
  15. package/build/components/block-inspector/index.cjs +73 -46
  16. package/build/components/block-inspector/index.cjs.map +2 -2
  17. package/build/components/block-list/block-html.cjs +4 -1
  18. package/build/components/block-list/block-html.cjs.map +2 -2
  19. package/build/components/block-list/block.cjs +9 -3
  20. package/build/components/block-list/block.cjs.map +3 -3
  21. package/build/components/block-list/index.cjs +1 -3
  22. package/build/components/block-list/index.cjs.map +2 -2
  23. package/build/components/block-list/use-block-props/index.cjs +7 -2
  24. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  25. package/build/components/block-list/use-block-props/use-focus-first-element.cjs +9 -4
  26. package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
  27. package/build/components/block-list/use-block-props/use-focus-handler.cjs +11 -4
  28. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
  29. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs +48 -0
  30. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs.map +7 -0
  31. package/build/components/block-parent-selector/index.cjs +2 -2
  32. package/build/components/block-parent-selector/index.cjs.map +2 -2
  33. package/build/components/block-toolbar/index.cjs +43 -24
  34. package/build/components/block-toolbar/index.cjs.map +2 -2
  35. package/build/components/block-toolbar/switch-section-style.cjs +4 -2
  36. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  37. package/build/components/block-tools/empty-block-inserter.cjs +2 -7
  38. package/build/components/block-tools/empty-block-inserter.cjs.map +2 -2
  39. package/build/components/block-tools/index.cjs +7 -2
  40. package/build/components/block-tools/index.cjs.map +2 -2
  41. package/build/components/block-vertical-alignment-control/ui.cjs +3 -5
  42. package/build/components/block-vertical-alignment-control/ui.cjs.map +2 -2
  43. package/build/components/block-visibility/modal.cjs +20 -6
  44. package/build/components/block-visibility/modal.cjs.map +2 -2
  45. package/build/components/block-visibility/use-block-visibility.cjs +16 -6
  46. package/build/components/block-visibility/use-block-visibility.cjs.map +3 -3
  47. package/build/components/block-visibility/utils.cjs +15 -2
  48. package/build/components/block-visibility/utils.cjs.map +3 -3
  49. package/build/components/block-visibility/viewport-menu-item.cjs +7 -1
  50. package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
  51. package/build/components/block-visibility/viewport-toolbar.cjs +5 -0
  52. package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
  53. package/build/components/block-visibility/viewport-visibility-info.cjs +5 -1
  54. package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
  55. package/build/components/border-radius-control/utils.cjs +8 -58
  56. package/build/components/border-radius-control/utils.cjs.map +2 -2
  57. package/build/components/child-layout-control/index.cjs +0 -4
  58. package/build/components/child-layout-control/index.cjs.map +2 -2
  59. package/build/components/colors-gradients/control.cjs +5 -3
  60. package/build/components/colors-gradients/control.cjs.map +2 -2
  61. package/build/components/dimension-control/index.cjs +30 -20
  62. package/build/components/dimension-control/index.cjs.map +3 -3
  63. package/build/components/dimensions-tool/aspect-ratio-tool.cjs +9 -2
  64. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
  65. package/build/components/editor-styles/index.cjs +9 -1
  66. package/build/components/editor-styles/index.cjs.map +2 -2
  67. package/build/components/global-styles/background-panel.cjs +66 -25
  68. package/build/components/global-styles/background-panel.cjs.map +3 -3
  69. package/build/components/global-styles/border-panel.cjs +153 -55
  70. package/build/components/global-styles/border-panel.cjs.map +3 -3
  71. package/build/components/global-styles/color-gradient-dropdown-item.cjs +46 -14
  72. package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +3 -3
  73. package/build/components/global-styles/color-panel.cjs +63 -17
  74. package/build/components/global-styles/color-panel.cjs.map +2 -2
  75. package/build/components/global-styles/dimensions-panel.cjs +242 -64
  76. package/build/components/global-styles/dimensions-panel.cjs.map +3 -3
  77. package/build/components/global-styles/filters-panel.cjs +59 -20
  78. package/build/components/global-styles/filters-panel.cjs.map +3 -3
  79. package/build/components/global-styles/hooks.cjs +4 -1
  80. package/build/components/global-styles/hooks.cjs.map +2 -2
  81. package/build/components/global-styles/inheritance/index.cjs +142 -0
  82. package/build/components/global-styles/inheritance/index.cjs.map +7 -0
  83. package/build/components/global-styles/inherited-value-context.cjs +173 -0
  84. package/build/components/global-styles/inherited-value-context.cjs.map +7 -0
  85. package/build/components/global-styles/shadow-panel-components.cjs +38 -20
  86. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  87. package/build/components/global-styles/state-control-badges.cjs +39 -3
  88. package/build/components/global-styles/state-control-badges.cjs.map +2 -2
  89. package/build/components/global-styles/state-control.cjs +1 -1
  90. package/build/components/global-styles/state-control.cjs.map +2 -2
  91. package/build/components/global-styles/typography-panel.cjs +271 -79
  92. package/build/components/global-styles/typography-panel.cjs.map +3 -3
  93. package/build/components/image-size-control/index.cjs +2 -4
  94. package/build/components/image-size-control/index.cjs.map +2 -2
  95. package/build/components/inserter/media-tab/hooks.cjs +33 -6
  96. package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
  97. package/build/components/inserter/media-tab/media-panel.cjs +78 -16
  98. package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
  99. package/build/components/inspector-controls-tabs/styles-tab.cjs +10 -1
  100. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
  101. package/build/components/keyboard-shortcuts/index.cjs +19 -11
  102. package/build/components/keyboard-shortcuts/index.cjs.map +2 -2
  103. package/build/components/line-height-control/index.cjs +1 -2
  104. package/build/components/line-height-control/index.cjs.map +2 -2
  105. package/build/components/link-control/index.cjs +3 -1
  106. package/build/components/link-control/index.cjs.map +2 -2
  107. package/build/components/list-view/block.cjs +13 -4
  108. package/build/components/list-view/block.cjs.map +2 -2
  109. package/build/components/media-placeholder/index.cjs +0 -1
  110. package/build/components/media-placeholder/index.cjs.map +2 -2
  111. package/build/components/preset-input-control/index.cjs +2 -1
  112. package/build/components/preset-input-control/index.cjs.map +2 -2
  113. package/build/components/provider/block-refs-provider.cjs +8 -2
  114. package/build/components/provider/block-refs-provider.cjs.map +2 -2
  115. package/build/components/provider/index.cjs +1 -1
  116. package/build/components/provider/index.cjs.map +2 -2
  117. package/build/components/provider/use-block-sync.cjs +18 -6
  118. package/build/components/provider/use-block-sync.cjs.map +2 -2
  119. package/build/components/provider/use-media-upload-settings.cjs +3 -1
  120. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  121. package/build/components/rich-text/event-listeners/before-input-rules.cjs +3 -4
  122. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  123. package/build/components/rich-text/event-listeners/delete.cjs +2 -3
  124. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  125. package/build/components/rich-text/event-listeners/enter.cjs +3 -2
  126. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  127. package/build/components/rich-text/event-listeners/input-events.cjs +3 -3
  128. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  129. package/build/components/rich-text/event-listeners/input-rules.cjs +3 -4
  130. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  131. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +3 -3
  132. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  133. package/build/components/rich-text/event-listeners/paste-handler.cjs +2 -1
  134. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  135. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +3 -3
  136. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  137. package/build/components/rich-text/event-listeners/shortcuts.cjs +3 -3
  138. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  139. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +3 -3
  140. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  141. package/build/components/rich-text/index.cjs +76 -17
  142. package/build/components/rich-text/index.cjs.map +2 -2
  143. package/build/components/spacing-sizes-control/utils.cjs +6 -19
  144. package/build/components/spacing-sizes-control/utils.cjs.map +2 -2
  145. package/build/components/text-indent-control/index.cjs +8 -2
  146. package/build/components/text-indent-control/index.cjs.map +2 -2
  147. package/build/components/typewriter/index.cjs +129 -136
  148. package/build/components/typewriter/index.cjs.map +3 -3
  149. package/build/components/url-input/index.cjs +303 -344
  150. package/build/components/url-input/index.cjs.map +3 -3
  151. package/build/components/use-block-commands/index.cjs +21 -17
  152. package/build/components/use-block-commands/index.cjs.map +2 -2
  153. package/build/components/use-on-block-drop/index.cjs +1 -1
  154. package/build/components/use-on-block-drop/index.cjs.map +2 -2
  155. package/build/components/writing-flow/index.cjs +14 -1
  156. package/build/components/writing-flow/index.cjs.map +3 -3
  157. package/build/components/writing-flow/use-arrow-nav.cjs +42 -6
  158. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  159. package/build/components/writing-flow/use-click-selection.cjs +29 -3
  160. package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
  161. package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
  162. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  163. package/build/components/writing-flow/use-drag-selection.cjs +3 -8
  164. package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
  165. package/build/components/writing-flow/use-editable-root-event-handlers.cjs +179 -0
  166. package/build/components/writing-flow/use-editable-root-event-handlers.cjs.map +7 -0
  167. package/build/components/writing-flow/use-editable-root.cjs +75 -0
  168. package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
  169. package/build/components/writing-flow/use-home-end.cjs +64 -0
  170. package/build/components/writing-flow/use-home-end.cjs.map +7 -0
  171. package/build/components/writing-flow/use-input.cjs +15 -5
  172. package/build/components/writing-flow/use-input.cjs.map +2 -2
  173. package/build/components/writing-flow/use-multi-selection.cjs +2 -2
  174. package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
  175. package/build/components/writing-flow/use-select-all.cjs +14 -2
  176. package/build/components/writing-flow/use-select-all.cjs.map +2 -2
  177. package/build/components/writing-flow/use-selection-observer.cjs +132 -22
  178. package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
  179. package/build/components/writing-flow/utils.cjs +28 -2
  180. package/build/components/writing-flow/utils.cjs.map +2 -2
  181. package/build/hooks/background.cjs +14 -10
  182. package/build/hooks/background.cjs.map +2 -2
  183. package/build/hooks/block-fields/rich-text/index.cjs +2 -3
  184. package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
  185. package/build/hooks/block-style-variation.cjs +4 -45
  186. package/build/hooks/block-style-variation.cjs.map +3 -3
  187. package/build/hooks/border.cjs +19 -4
  188. package/build/hooks/border.cjs.map +2 -2
  189. package/build/hooks/custom-css.cjs +6 -2
  190. package/build/hooks/custom-css.cjs.map +2 -2
  191. package/build/hooks/dimensions.cjs +15 -4
  192. package/build/hooks/dimensions.cjs.map +2 -2
  193. package/build/hooks/duotone.cjs +26 -14
  194. package/build/hooks/duotone.cjs.map +3 -3
  195. package/build/hooks/elements.cjs +15 -5
  196. package/build/hooks/elements.cjs.map +2 -2
  197. package/build/hooks/grid-visualizer.cjs +5 -3
  198. package/build/hooks/grid-visualizer.cjs.map +2 -2
  199. package/build/hooks/layout-child.cjs +22 -12
  200. package/build/hooks/layout-child.cjs.map +3 -3
  201. package/build/hooks/layout.cjs +28 -13
  202. package/build/hooks/layout.cjs.map +3 -3
  203. package/build/hooks/line-height.cjs +1 -2
  204. package/build/hooks/line-height.cjs.map +2 -2
  205. package/build/hooks/states.cjs +27 -7
  206. package/build/hooks/states.cjs.map +3 -3
  207. package/build/hooks/style.cjs +31 -9
  208. package/build/hooks/style.cjs.map +3 -3
  209. package/build/hooks/text-align.cjs +36 -6
  210. package/build/hooks/text-align.cjs.map +3 -3
  211. package/build/hooks/typography.cjs +14 -5
  212. package/build/hooks/typography.cjs.map +2 -2
  213. package/build/layouts/constrained.cjs +14 -6
  214. package/build/layouts/constrained.cjs.map +2 -2
  215. package/build/layouts/flex.cjs +27 -19
  216. package/build/layouts/flex.cjs.map +2 -2
  217. package/build/layouts/grid.cjs +0 -2
  218. package/build/layouts/grid.cjs.map +2 -2
  219. package/build/private-apis.cjs +9 -5
  220. package/build/private-apis.cjs.map +3 -3
  221. package/build/store/actions.cjs +11 -6
  222. package/build/store/actions.cjs.map +2 -2
  223. package/build/store/private-selectors.cjs +41 -3
  224. package/build/store/private-selectors.cjs.map +3 -3
  225. package/build/store/reducer.cjs +6 -6
  226. package/build/store/reducer.cjs.map +2 -2
  227. package/build/store/selectors.cjs +23 -0
  228. package/build/store/selectors.cjs.map +2 -2
  229. package/build/utils/block-bindings.cjs +29 -0
  230. package/build/utils/block-bindings.cjs.map +2 -2
  231. package/build/utils/dom.cjs +14 -0
  232. package/build/utils/dom.cjs.map +2 -2
  233. package/build/{components/rich-text/input-event.cjs → utils/native-undo.cjs} +29 -24
  234. package/build/utils/native-undo.cjs.map +7 -0
  235. package/build-module/components/alignment-control/ui.mjs +2 -4
  236. package/build-module/components/alignment-control/ui.mjs.map +2 -2
  237. package/build-module/components/background-image-control/index.mjs +43 -10
  238. package/build-module/components/background-image-control/index.mjs.map +2 -2
  239. package/build-module/components/block-alignment-control/ui.mjs +5 -3
  240. package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
  241. package/build-module/components/block-canvas/index.mjs +7 -2
  242. package/build-module/components/block-canvas/index.mjs.map +2 -2
  243. package/build-module/components/block-controls/groups.mjs +3 -1
  244. package/build-module/components/block-controls/groups.mjs.map +2 -2
  245. package/build-module/components/block-edit/edit.mjs +11 -18
  246. package/build-module/components/block-edit/edit.mjs.map +2 -2
  247. package/build-module/components/block-inspector/index.mjs +74 -46
  248. package/build-module/components/block-inspector/index.mjs.map +2 -2
  249. package/build-module/components/block-list/block-html.mjs +4 -1
  250. package/build-module/components/block-list/block-html.mjs.map +2 -2
  251. package/build-module/components/block-list/block.mjs +9 -3
  252. package/build-module/components/block-list/block.mjs.map +3 -3
  253. package/build-module/components/block-list/index.mjs +1 -3
  254. package/build-module/components/block-list/index.mjs.map +2 -2
  255. package/build-module/components/block-list/use-block-props/index.mjs +7 -2
  256. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  257. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
  258. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
  259. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +11 -4
  260. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  261. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs +28 -0
  262. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs.map +7 -0
  263. package/build-module/components/block-parent-selector/index.mjs +2 -2
  264. package/build-module/components/block-parent-selector/index.mjs.map +2 -2
  265. package/build-module/components/block-toolbar/index.mjs +43 -24
  266. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  267. package/build-module/components/block-toolbar/switch-section-style.mjs +4 -2
  268. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  269. package/build-module/components/block-tools/empty-block-inserter.mjs +2 -7
  270. package/build-module/components/block-tools/empty-block-inserter.mjs.map +2 -2
  271. package/build-module/components/block-tools/index.mjs +7 -2
  272. package/build-module/components/block-tools/index.mjs.map +2 -2
  273. package/build-module/components/block-vertical-alignment-control/ui.mjs +4 -6
  274. package/build-module/components/block-vertical-alignment-control/ui.mjs.map +2 -2
  275. package/build-module/components/block-visibility/modal.mjs +22 -10
  276. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  277. package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
  278. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  279. package/build-module/components/block-visibility/utils.mjs +18 -3
  280. package/build-module/components/block-visibility/utils.mjs.map +2 -2
  281. package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
  282. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
  283. package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
  284. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
  285. package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
  286. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  287. package/build-module/components/border-radius-control/utils.mjs +11 -53
  288. package/build-module/components/border-radius-control/utils.mjs.map +2 -2
  289. package/build-module/components/child-layout-control/index.mjs +0 -4
  290. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  291. package/build-module/components/colors-gradients/control.mjs +5 -3
  292. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  293. package/build-module/components/dimension-control/index.mjs +30 -20
  294. package/build-module/components/dimension-control/index.mjs.map +2 -2
  295. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +10 -6
  296. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  297. package/build-module/components/editor-styles/index.mjs +9 -1
  298. package/build-module/components/editor-styles/index.mjs.map +2 -2
  299. package/build-module/components/global-styles/background-panel.mjs +71 -29
  300. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  301. package/build-module/components/global-styles/border-panel.mjs +157 -56
  302. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  303. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +51 -15
  304. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
  305. package/build-module/components/global-styles/color-panel.mjs +63 -17
  306. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  307. package/build-module/components/global-styles/dimensions-panel.mjs +248 -66
  308. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  309. package/build-module/components/global-styles/filters-panel.mjs +64 -21
  310. package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
  311. package/build-module/components/global-styles/hooks.mjs +4 -1
  312. package/build-module/components/global-styles/hooks.mjs.map +2 -2
  313. package/build-module/components/global-styles/inheritance/index.mjs +108 -0
  314. package/build-module/components/global-styles/inheritance/index.mjs.map +7 -0
  315. package/build-module/components/global-styles/inherited-value-context.mjs +141 -0
  316. package/build-module/components/global-styles/inherited-value-context.mjs.map +7 -0
  317. package/build-module/components/global-styles/shadow-panel-components.mjs +38 -20
  318. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  319. package/build-module/components/global-styles/state-control-badges.mjs +41 -5
  320. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  321. package/build-module/components/global-styles/state-control.mjs +1 -1
  322. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  323. package/build-module/components/global-styles/typography-panel.mjs +276 -80
  324. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  325. package/build-module/components/image-size-control/index.mjs +2 -4
  326. package/build-module/components/image-size-control/index.mjs.map +2 -2
  327. package/build-module/components/inserter/media-tab/hooks.mjs +33 -6
  328. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  329. package/build-module/components/inserter/media-tab/media-panel.mjs +86 -18
  330. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  331. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +6 -1
  332. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  333. package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
  334. package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
  335. package/build-module/components/line-height-control/index.mjs +1 -2
  336. package/build-module/components/line-height-control/index.mjs.map +2 -2
  337. package/build-module/components/link-control/index.mjs +4 -2
  338. package/build-module/components/link-control/index.mjs.map +2 -2
  339. package/build-module/components/list-view/block.mjs +13 -4
  340. package/build-module/components/list-view/block.mjs.map +2 -2
  341. package/build-module/components/media-placeholder/index.mjs +0 -1
  342. package/build-module/components/media-placeholder/index.mjs.map +2 -2
  343. package/build-module/components/preset-input-control/index.mjs +2 -1
  344. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  345. package/build-module/components/provider/block-refs-provider.mjs +8 -2
  346. package/build-module/components/provider/block-refs-provider.mjs.map +2 -2
  347. package/build-module/components/provider/index.mjs +1 -1
  348. package/build-module/components/provider/index.mjs.map +2 -2
  349. package/build-module/components/provider/use-block-sync.mjs +18 -6
  350. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  351. package/build-module/components/provider/use-media-upload-settings.mjs +3 -1
  352. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  353. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
  354. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  355. package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
  356. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  357. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
  358. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  359. package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
  360. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  361. package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
  362. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  363. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
  364. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  365. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
  366. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  367. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
  368. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  369. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
  370. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  371. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
  372. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  373. package/build-module/components/rich-text/index.mjs +79 -14
  374. package/build-module/components/rich-text/index.mjs.map +2 -2
  375. package/build-module/components/spacing-sizes-control/utils.mjs +6 -18
  376. package/build-module/components/spacing-sizes-control/utils.mjs.map +2 -2
  377. package/build-module/components/text-indent-control/index.mjs +8 -2
  378. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  379. package/build-module/components/typewriter/index.mjs +129 -136
  380. package/build-module/components/typewriter/index.mjs.map +2 -2
  381. package/build-module/components/url-input/index.mjs +306 -353
  382. package/build-module/components/url-input/index.mjs.map +2 -2
  383. package/build-module/components/use-block-commands/index.mjs +21 -17
  384. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  385. package/build-module/components/use-on-block-drop/index.mjs +2 -2
  386. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  387. package/build-module/components/writing-flow/index.mjs +14 -1
  388. package/build-module/components/writing-flow/index.mjs.map +2 -2
  389. package/build-module/components/writing-flow/use-arrow-nav.mjs +43 -7
  390. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  391. package/build-module/components/writing-flow/use-click-selection.mjs +29 -3
  392. package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
  393. package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
  394. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  395. package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
  396. package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
  397. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs +154 -0
  398. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs.map +7 -0
  399. package/build-module/components/writing-flow/use-editable-root.mjs +54 -0
  400. package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
  401. package/build-module/components/writing-flow/use-home-end.mjs +43 -0
  402. package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
  403. package/build-module/components/writing-flow/use-input.mjs +15 -5
  404. package/build-module/components/writing-flow/use-input.mjs.map +2 -2
  405. package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
  406. package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
  407. package/build-module/components/writing-flow/use-select-all.mjs +19 -3
  408. package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
  409. package/build-module/components/writing-flow/use-selection-observer.mjs +134 -21
  410. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  411. package/build-module/components/writing-flow/utils.mjs +26 -1
  412. package/build-module/components/writing-flow/utils.mjs.map +2 -2
  413. package/build-module/hooks/background.mjs +14 -10
  414. package/build-module/hooks/background.mjs.map +2 -2
  415. package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
  416. package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
  417. package/build-module/hooks/block-style-variation.mjs +8 -44
  418. package/build-module/hooks/block-style-variation.mjs.map +2 -2
  419. package/build-module/hooks/border.mjs +19 -4
  420. package/build-module/hooks/border.mjs.map +2 -2
  421. package/build-module/hooks/custom-css.mjs +7 -3
  422. package/build-module/hooks/custom-css.mjs.map +2 -2
  423. package/build-module/hooks/dimensions.mjs +15 -4
  424. package/build-module/hooks/dimensions.mjs.map +2 -2
  425. package/build-module/hooks/duotone.mjs +20 -9
  426. package/build-module/hooks/duotone.mjs.map +2 -2
  427. package/build-module/hooks/elements.mjs +15 -5
  428. package/build-module/hooks/elements.mjs.map +2 -2
  429. package/build-module/hooks/grid-visualizer.mjs +5 -3
  430. package/build-module/hooks/grid-visualizer.mjs.map +2 -2
  431. package/build-module/hooks/layout-child.mjs +22 -12
  432. package/build-module/hooks/layout-child.mjs.map +2 -2
  433. package/build-module/hooks/layout.mjs +28 -13
  434. package/build-module/hooks/layout.mjs.map +2 -2
  435. package/build-module/hooks/line-height.mjs +1 -2
  436. package/build-module/hooks/line-height.mjs.map +2 -2
  437. package/build-module/hooks/states.mjs +27 -7
  438. package/build-module/hooks/states.mjs.map +2 -2
  439. package/build-module/hooks/style.mjs +40 -11
  440. package/build-module/hooks/style.mjs.map +2 -2
  441. package/build-module/hooks/text-align.mjs +39 -10
  442. package/build-module/hooks/text-align.mjs.map +2 -2
  443. package/build-module/hooks/typography.mjs +14 -5
  444. package/build-module/hooks/typography.mjs.map +2 -2
  445. package/build-module/layouts/constrained.mjs +14 -6
  446. package/build-module/layouts/constrained.mjs.map +2 -2
  447. package/build-module/layouts/flex.mjs +27 -19
  448. package/build-module/layouts/flex.mjs.map +2 -2
  449. package/build-module/layouts/grid.mjs +0 -2
  450. package/build-module/layouts/grid.mjs.map +2 -2
  451. package/build-module/private-apis.mjs +7 -3
  452. package/build-module/private-apis.mjs.map +2 -2
  453. package/build-module/store/actions.mjs +12 -7
  454. package/build-module/store/actions.mjs.map +2 -2
  455. package/build-module/store/private-selectors.mjs +42 -3
  456. package/build-module/store/private-selectors.mjs.map +2 -2
  457. package/build-module/store/reducer.mjs +6 -6
  458. package/build-module/store/reducer.mjs.map +2 -2
  459. package/build-module/store/selectors.mjs +23 -0
  460. package/build-module/store/selectors.mjs.map +2 -2
  461. package/build-module/utils/block-bindings.mjs +28 -0
  462. package/build-module/utils/block-bindings.mjs.map +2 -2
  463. package/build-module/utils/dom.mjs +13 -0
  464. package/build-module/utils/dom.mjs.map +2 -2
  465. package/build-module/utils/native-undo.mjs +29 -0
  466. package/build-module/utils/native-undo.mjs.map +7 -0
  467. package/build-style/content-rtl.css +14 -27
  468. package/build-style/content.css +14 -27
  469. package/build-style/default-editor-styles-rtl.css +1 -1
  470. package/build-style/default-editor-styles.css +1 -1
  471. package/build-style/style-rtl.css +191 -61
  472. package/build-style/style.css +191 -61
  473. package/build-types/components/block-context/index.d.ts +7 -0
  474. package/build-types/components/block-context/index.d.ts.map +1 -1
  475. package/build-types/utils/block-bindings.d.ts +19 -0
  476. package/build-types/utils/block-bindings.d.ts.map +1 -1
  477. package/build-types/utils/dom.d.ts +11 -0
  478. package/build-types/utils/dom.d.ts.map +1 -1
  479. package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
  480. package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
  481. package/build-types/utils/pasting.d.ts +1 -1
  482. package/build-types/utils/pasting.d.ts.map +1 -1
  483. package/package.json +43 -44
  484. package/src/components/alignment-control/test/__snapshots__/index.js.snap +1 -1
  485. package/src/components/alignment-control/ui.js +2 -4
  486. package/src/components/background-image-control/index.js +74 -37
  487. package/src/components/background-image-control/style.scss +13 -4
  488. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +3 -3
  489. package/src/components/block-alignment-control/test/index.js +1 -1
  490. package/src/components/block-alignment-control/ui.js +4 -2
  491. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +1 -1
  492. package/src/components/block-canvas/index.js +9 -2
  493. package/src/components/block-card/style.scss +1 -1
  494. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  495. package/src/components/block-controls/groups.js +2 -0
  496. package/src/components/block-edit/edit.js +13 -31
  497. package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -1
  498. package/src/components/block-inspector/index.js +60 -31
  499. package/src/components/block-list/block-html.js +5 -0
  500. package/src/components/block-list/block.js +6 -0
  501. package/src/components/block-list/content.scss +1 -11
  502. package/src/components/block-list/index.js +0 -2
  503. package/src/components/block-list/use-block-props/index.js +7 -1
  504. package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
  505. package/src/components/block-list/use-block-props/use-focus-handler.js +35 -9
  506. package/src/components/block-list/use-block-props/use-register-block-event-handlers.js +45 -0
  507. package/src/components/block-lock/style.scss +1 -1
  508. package/src/components/block-manager/style.scss +1 -1
  509. package/src/components/block-navigation/style.scss +1 -1
  510. package/src/components/block-parent-selector/index.js +5 -2
  511. package/src/components/block-quick-navigation/style.scss +1 -3
  512. package/src/components/block-styles/style.scss +2 -2
  513. package/src/components/block-toolbar/index.js +41 -18
  514. package/src/components/block-toolbar/switch-section-style.js +5 -2
  515. package/src/components/block-tools/empty-block-inserter.js +3 -7
  516. package/src/components/block-tools/index.js +7 -0
  517. package/src/components/block-types-list/style.scss +0 -1
  518. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +3 -3
  519. package/src/components/block-vertical-alignment-control/test/index.js +18 -2
  520. package/src/components/block-vertical-alignment-control/ui.js +3 -5
  521. package/src/components/block-visibility/modal.js +24 -10
  522. package/src/components/block-visibility/style.scss +1 -1
  523. package/src/components/block-visibility/test/use-block-visibility.js +128 -35
  524. package/src/components/block-visibility/test/utils.js +11 -0
  525. package/src/components/block-visibility/use-block-visibility.js +33 -11
  526. package/src/components/block-visibility/utils.js +31 -6
  527. package/src/components/block-visibility/viewport-menu-item.js +10 -1
  528. package/src/components/block-visibility/viewport-toolbar.js +6 -0
  529. package/src/components/block-visibility/viewport-visibility-info.js +5 -1
  530. package/src/components/border-radius-control/test/utils.js +0 -41
  531. package/src/components/border-radius-control/utils.js +16 -107
  532. package/src/components/button-block-appender/content.scss +7 -9
  533. package/src/components/child-layout-control/index.js +0 -4
  534. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -3
  535. package/src/components/colors-gradients/control.js +6 -3
  536. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +1 -1
  537. package/src/components/dimension-control/index.js +13 -1
  538. package/src/components/dimensions-tool/aspect-ratio-tool.js +13 -6
  539. package/src/components/editor-styles/index.js +16 -1
  540. package/src/components/font-family/stories/index.story.jsx +1 -1
  541. package/src/components/global-styles/background-panel.js +107 -34
  542. package/src/components/global-styles/border-panel.js +219 -48
  543. package/src/components/global-styles/color-gradient-dropdown-item.js +93 -28
  544. package/src/components/global-styles/color-panel.js +92 -11
  545. package/src/components/global-styles/dimensions-panel.js +422 -71
  546. package/src/components/global-styles/filters-panel.js +88 -28
  547. package/src/components/global-styles/hooks.js +8 -1
  548. package/src/components/global-styles/inheritance/index.js +204 -0
  549. package/src/components/global-styles/inheritance/style.scss +184 -0
  550. package/src/components/global-styles/inheritance/test/index.js +281 -0
  551. package/src/components/global-styles/inherited-value-context.js +271 -0
  552. package/src/components/global-styles/shadow-panel-components.js +48 -26
  553. package/src/components/global-styles/state-control-badges.js +45 -6
  554. package/src/components/global-styles/state-control.js +2 -2
  555. package/src/components/global-styles/style.scss +5 -0
  556. package/src/components/global-styles/test/background-panel.js +338 -1
  557. package/src/components/global-styles/test/border-panel.js +441 -0
  558. package/src/components/global-styles/test/color-panel.js +182 -2
  559. package/src/components/global-styles/test/dimensions-panel.js +753 -0
  560. package/src/components/global-styles/test/filters-panel.js +194 -0
  561. package/src/components/global-styles/test/inherited-value-context-core.js +98 -0
  562. package/src/components/global-styles/test/inherited-value-context.js +454 -0
  563. package/src/components/global-styles/test/state-control-badges.js +65 -0
  564. package/src/components/global-styles/test/typography-panel-core.js +185 -0
  565. package/src/components/global-styles/test/typography-panel.js +849 -12
  566. package/src/components/global-styles/typography-panel.js +449 -101
  567. package/src/components/image-editor/style.scss +33 -0
  568. package/src/components/image-size-control/index.js +0 -2
  569. package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
  570. package/src/components/inserter/media-tab/hooks.js +55 -7
  571. package/src/components/inserter/media-tab/media-panel.js +117 -21
  572. package/src/components/inserter/media-tab/test/hooks.js +63 -0
  573. package/src/components/inserter/media-tab/test/media-panel.js +127 -0
  574. package/src/components/inserter/style.scss +19 -16
  575. package/src/components/inserter-list-item/style.scss +0 -15
  576. package/src/components/inspector-controls-tabs/styles-tab.js +5 -1
  577. package/src/components/keyboard-shortcuts/index.js +28 -11
  578. package/src/components/line-height-control/index.js +1 -2
  579. package/src/components/link-control/index.js +7 -2
  580. package/src/components/link-control/style.scss +2 -2
  581. package/src/components/link-control/test/index.js +6 -6
  582. package/src/components/link-picker/style.scss +1 -2
  583. package/src/components/list-view/block.js +13 -4
  584. package/src/components/list-view/style.scss +4 -5
  585. package/src/components/media-placeholder/index.js +0 -1
  586. package/src/components/multi-selection-inspector/style.scss +1 -1
  587. package/src/components/preset-input-control/index.js +4 -1
  588. package/src/components/provider/block-refs-provider.js +12 -2
  589. package/src/components/provider/index.js +2 -2
  590. package/src/components/provider/use-block-sync.js +18 -6
  591. package/src/components/provider/use-media-upload-settings.js +2 -0
  592. package/src/components/responsive-block-control/style.scss +1 -1
  593. package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
  594. package/src/components/rich-text/event-listeners/delete.js +7 -4
  595. package/src/components/rich-text/event-listeners/enter.js +10 -4
  596. package/src/components/rich-text/event-listeners/input-events.js +4 -3
  597. package/src/components/rich-text/event-listeners/input-rules.js +8 -5
  598. package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
  599. package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
  600. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
  601. package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
  602. package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
  603. package/src/components/rich-text/index.js +116 -26
  604. package/src/components/skip-to-selected-block/style.scss +1 -1
  605. package/src/components/spacing-sizes-control/test/utils.js +16 -5
  606. package/src/components/spacing-sizes-control/utils.js +11 -28
  607. package/src/components/text-indent-control/index.js +8 -0
  608. package/src/components/typewriter/index.js +228 -224
  609. package/src/components/url-input/index.js +363 -431
  610. package/src/components/url-input/test/index.js +592 -0
  611. package/src/components/use-block-commands/index.js +27 -17
  612. package/src/components/use-on-block-drop/index.js +2 -2
  613. package/src/components/warning/test/__snapshots__/index.js.snap +1 -1
  614. package/src/components/writing-flow/index.js +17 -1
  615. package/src/components/writing-flow/use-arrow-nav.js +90 -13
  616. package/src/components/writing-flow/use-click-selection.js +55 -5
  617. package/src/components/writing-flow/use-clipboard-handler.js +5 -2
  618. package/src/components/writing-flow/use-drag-selection.js +1 -14
  619. package/src/components/writing-flow/use-editable-root-event-handlers.js +266 -0
  620. package/src/components/writing-flow/use-editable-root.js +112 -0
  621. package/src/components/writing-flow/use-home-end.js +71 -0
  622. package/src/components/writing-flow/use-input.js +25 -8
  623. package/src/components/writing-flow/use-multi-selection.js +2 -3
  624. package/src/components/writing-flow/use-select-all.js +33 -3
  625. package/src/components/writing-flow/use-selection-observer.js +218 -42
  626. package/src/components/writing-flow/utils.js +62 -0
  627. package/src/hooks/background.js +27 -24
  628. package/src/hooks/block-fields/link/styles.scss +1 -6
  629. package/src/hooks/block-fields/media/styles.scss +1 -6
  630. package/src/hooks/block-fields/rich-text/index.js +6 -9
  631. package/src/hooks/block-fields/rich-text/styles.scss +1 -1
  632. package/src/hooks/block-style-variation.js +8 -74
  633. package/src/hooks/border.js +19 -4
  634. package/src/hooks/custom-css.js +15 -6
  635. package/src/hooks/dimensions.js +17 -4
  636. package/src/hooks/duotone.js +26 -8
  637. package/src/hooks/elements.js +14 -4
  638. package/src/hooks/grid-visualizer.js +40 -36
  639. package/src/hooks/layout-child.js +19 -9
  640. package/src/hooks/layout.js +48 -31
  641. package/src/hooks/line-height.js +0 -1
  642. package/src/hooks/states.js +38 -9
  643. package/src/hooks/style.js +67 -17
  644. package/src/hooks/test/inherited-value-wiring.js +411 -0
  645. package/src/hooks/test/preset-round-trip.js +456 -0
  646. package/src/hooks/test/style.js +29 -0
  647. package/src/hooks/test/text-align.js +34 -1
  648. package/src/hooks/text-align.js +41 -10
  649. package/src/hooks/typography.js +35 -24
  650. package/src/layouts/constrained.js +5 -1
  651. package/src/layouts/flex.js +5 -1
  652. package/src/layouts/grid.js +0 -2
  653. package/src/private-apis.js +11 -2
  654. package/src/store/actions.js +53 -19
  655. package/src/store/private-selectors.js +82 -6
  656. package/src/store/reducer.js +9 -9
  657. package/src/store/selectors.js +56 -8
  658. package/src/store/test/actions.js +1 -1
  659. package/src/store/test/private-selectors.js +271 -1
  660. package/src/style.scss +2 -0
  661. package/src/utils/block-bindings.ts +50 -0
  662. package/src/utils/dom.ts +33 -0
  663. package/src/utils/native-undo.js +56 -0
  664. package/src/utils/test/block-bindings.js +181 -0
  665. package/build/components/duotone/utils.cjs +0 -87
  666. package/build/components/duotone/utils.cjs.map +0 -7
  667. package/build/components/rich-text/input-event.cjs.map +0 -7
  668. package/build/components/rich-text/shortcut.cjs +0 -51
  669. package/build/components/rich-text/shortcut.cjs.map +0 -7
  670. package/build-module/components/duotone/utils.mjs +0 -59
  671. package/build-module/components/duotone/utils.mjs.map +0 -7
  672. package/build-module/components/rich-text/input-event.mjs +0 -25
  673. package/build-module/components/rich-text/input-event.mjs.map +0 -7
  674. package/build-module/components/rich-text/shortcut.mjs +0 -26
  675. package/build-module/components/rich-text/shortcut.mjs.map +0 -7
  676. package/src/components/duotone/utils.js +0 -90
  677. package/src/components/rich-text/input-event.js +0 -31
  678. package/src/components/rich-text/shortcut.js +0 -32
  679. package/src/hooks/test/get-variation-styles-with-ref-values.js +0 -91
@@ -8,9 +8,8 @@ import clsx from 'clsx';
8
8
  */
9
9
  import {
10
10
  __experimentalToolsPanel as ToolsPanel,
11
- __experimentalToolsPanelItem as ToolsPanelItem,
12
- __experimentalHStack as HStack,
13
- __experimentalZStack as ZStack,
11
+ __experimentalHStack as HStack, // eslint-disable-line @wordpress/use-recommended-components
12
+ __experimentalZStack as ZStack, // eslint-disable-line @wordpress/use-recommended-components
14
13
  __experimentalDropdownContentWrapper as DropdownContentWrapper,
15
14
  MenuGroup,
16
15
  ColorIndicator,
@@ -31,6 +30,12 @@ import { getValueFromVariable } from '@wordpress/global-styles-engine';
31
30
  */
32
31
  import { useToolsPanelDropdownMenuProps } from './utils';
33
32
  import { setImmutably } from '../../utils/object';
33
+ import {
34
+ getInheritanceProps,
35
+ InheritanceToolsPanelItem,
36
+ InheritanceResetButton,
37
+ isGlobalStylesInheritanceEnabled,
38
+ } from './inheritance';
34
39
 
35
40
  const EMPTY_ARRAY = [];
36
41
  function useMultiOriginColorPresets(
@@ -114,12 +119,18 @@ const LabeledColorIndicator = ( { indicator, label } ) => (
114
119
  ) }
115
120
  </Flex>
116
121
  </ZStack>
117
- <FlexItem title={ label }>{ label }</FlexItem>
122
+ <FlexItem
123
+ className="block-editor-panel-duotone-settings__label"
124
+ title={ label }
125
+ >
126
+ { label }
127
+ </FlexItem>
118
128
  </HStack>
119
129
  );
120
130
 
121
- const renderToggle = ( duotone, resetDuotone ) =>
131
+ const renderToggle = ( duotone, resetConfig ) =>
122
132
  function Toggle( { onToggle, isOpen } ) {
133
+ const { hasLocalValue, hasLocalOverride, onReset } = resetConfig;
123
134
  const duotoneButtonRef = useRef( undefined );
124
135
 
125
136
  const toggleProps = {
@@ -132,17 +143,13 @@ const renderToggle = ( duotone, resetDuotone ) =>
132
143
  ref: duotoneButtonRef,
133
144
  };
134
145
 
135
- const removeButtonProps = {
136
- onClick: () => {
137
- if ( isOpen ) {
138
- onToggle();
139
- }
140
- resetDuotone();
141
- // Return focus to parent button.
142
- duotoneButtonRef.current?.focus();
143
- },
144
- className: 'block-editor-panel-duotone-settings__reset',
145
- label: __( 'Reset' ),
146
+ const handleReset = () => {
147
+ if ( isOpen ) {
148
+ onToggle();
149
+ }
150
+ onReset();
151
+ // Return focus to parent button.
152
+ duotoneButtonRef.current?.focus();
146
153
  };
147
154
 
148
155
  return (
@@ -153,13 +160,21 @@ const renderToggle = ( duotone, resetDuotone ) =>
153
160
  label={ __( 'Duotone' ) }
154
161
  />
155
162
  </Button>
156
- { duotone && (
157
- <Button
158
- size="small"
159
- icon={ resetIcon }
160
- { ...removeButtonProps }
161
- />
162
- ) }
163
+ { hasLocalValue &&
164
+ ( hasLocalOverride ? (
165
+ <InheritanceResetButton
166
+ className="block-editor-panel-duotone-settings__reset"
167
+ onResetToInherited={ handleReset }
168
+ />
169
+ ) : (
170
+ <Button
171
+ size="small"
172
+ icon={ resetIcon }
173
+ label={ __( 'Reset' ) }
174
+ className="block-editor-panel-duotone-settings__reset"
175
+ onClick={ handleReset }
176
+ />
177
+ ) ) }
163
178
  </>
164
179
  );
165
180
  };
@@ -172,9 +187,18 @@ export default function FiltersPanel( {
172
187
  settings,
173
188
  panelId,
174
189
  defaultControls = DEFAULT_CONTROLS,
190
+ showInheritanceLabelIndicators = isGlobalStylesInheritanceEnabled(),
175
191
  } ) {
176
192
  const decodeValue = ( rawValue ) =>
177
193
  getValueFromVariable( { settings }, '', rawValue );
194
+ // Always keep the layout className (e.g. `single-column`); only the
195
+ // inheritance treatment is gated on `showInheritanceLabelIndicators`.
196
+ const inheritanceProps = ( isInherited, hasLocalOverride, className ) =>
197
+ getInheritanceProps(
198
+ showInheritanceLabelIndicators && isInherited,
199
+ showInheritanceLabelIndicators && hasLocalOverride,
200
+ className
201
+ );
178
202
 
179
203
  // Duotone
180
204
  const hasDuotoneEnabled = useHasDuotoneControl( settings );
@@ -186,7 +210,11 @@ export default function FiltersPanel( {
186
210
  presetSetting: 'palette',
187
211
  defaultSetting: 'defaultPalette',
188
212
  } );
189
- const duotone = decodeValue( inheritedValue?.filter?.duotone );
213
+ const localDuotone = decodeValue( value?.filter?.duotone );
214
+ const inheritedDuotone = decodeValue( inheritedValue?.filter?.duotone );
215
+ const duotone = localDuotone ?? inheritedDuotone;
216
+ const isDuotonePlaceholder =
217
+ localDuotone === undefined && inheritedDuotone !== undefined;
190
218
  const setDuotone = ( newValue ) => {
191
219
  const duotonePreset = duotonePalette.find( ( { colors } ) => {
192
220
  return colors === newValue;
@@ -198,8 +226,26 @@ export default function FiltersPanel( {
198
226
  setImmutably( value, [ 'filter', 'duotone' ], duotoneValue )
199
227
  );
200
228
  };
229
+ // Commit the inherited value when the user clicks the active preset
230
+ // while the picker is showing inherited duotone at rest.
231
+ const setDuotoneWithInheritedCommit = ( newValue ) => {
232
+ if (
233
+ newValue === undefined &&
234
+ isDuotonePlaceholder &&
235
+ inheritedDuotone !== undefined
236
+ ) {
237
+ setDuotone( inheritedDuotone );
238
+ return;
239
+ }
240
+ setDuotone( newValue );
241
+ };
201
242
  const hasDuotone = () => !! value?.filter?.duotone;
202
243
  const resetDuotone = () => setDuotone( undefined );
244
+ // Only a local value shadowing an inherited one shows the blue-dot reset.
245
+ const hasDuotoneLocalOverride =
246
+ showInheritanceLabelIndicators &&
247
+ hasDuotone() &&
248
+ inheritedDuotone !== undefined;
203
249
 
204
250
  const resetAllFilter = useCallback( ( previousValue ) => {
205
251
  return {
@@ -219,17 +265,29 @@ export default function FiltersPanel( {
219
265
  panelId={ panelId }
220
266
  >
221
267
  { hasDuotoneEnabled && (
222
- <ToolsPanelItem
268
+ <InheritanceToolsPanelItem
269
+ { ...inheritanceProps(
270
+ isDuotonePlaceholder,
271
+ localDuotone !== undefined &&
272
+ inheritedDuotone !== undefined
273
+ ) }
223
274
  label={ __( 'Duotone' ) }
224
275
  hasValue={ hasDuotone }
225
276
  onDeselect={ resetDuotone }
226
277
  isShownByDefault={ defaultControls.duotone }
278
+ // Toggle renders its own reset dot, so the item must not
279
+ // add a second.
280
+ showLocalOverrideActionsInLabel={ false }
227
281
  panelId={ panelId }
228
282
  >
229
283
  <Dropdown
230
284
  popoverProps={ popoverProps }
231
285
  className="block-editor-global-styles-filters-panel__dropdown"
232
- renderToggle={ renderToggle( duotone, resetDuotone ) }
286
+ renderToggle={ renderToggle( duotone, {
287
+ hasLocalValue: hasDuotone(),
288
+ hasLocalOverride: hasDuotoneLocalOverride,
289
+ onReset: resetDuotone,
290
+ } ) }
233
291
  renderContent={ () => (
234
292
  <DropdownContentWrapper paddingSize="small">
235
293
  <MenuGroup label={ __( 'Duotone' ) }>
@@ -245,13 +303,15 @@ export default function FiltersPanel( {
245
303
  disableCustomColors
246
304
  disableCustomDuotone
247
305
  value={ duotone }
248
- onChange={ setDuotone }
306
+ onChange={
307
+ setDuotoneWithInheritedCommit
308
+ }
249
309
  />
250
310
  </MenuGroup>
251
311
  </DropdownContentWrapper>
252
312
  ) }
253
313
  />
254
- </ToolsPanelItem>
314
+ </InheritanceToolsPanelItem>
255
315
  ) }
256
316
  </Wrapper>
257
317
  );
@@ -328,7 +328,14 @@ export function useColorGradientSettings( settings ) {
328
328
  );
329
329
  const decodeValue = ( rawValue ) =>
330
330
  getValueFromVariable( { settings }, '', rawValue );
331
- const encodeGradientValue = ( gradientValue ) => {
331
+ // When a slug is provided it is used directly: two presets can share the
332
+ // same gradient string, and matching by string alone would collapse them
333
+ // onto whichever entry appears first. Without a slug, fall back to
334
+ // matching the gradient string against the presets.
335
+ const encodeGradientValue = ( gradientValue, slug ) => {
336
+ if ( slug ) {
337
+ return 'var:preset|gradient|' + slug;
338
+ }
332
339
  const allGradients = gradients.flatMap(
333
340
  ( { gradients: originGradients } ) => originGradients
334
341
  );
@@ -0,0 +1,204 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import {
10
+ Button,
11
+ Icon as WCIcon,
12
+ __experimentalToolsPanelItem as ToolsPanelItem,
13
+ } from '@wordpress/components';
14
+ import { reset as resetIcon } from '@wordpress/icons';
15
+ import { __ } from '@wordpress/i18n';
16
+
17
+ /**
18
+ * Whether the inspector surfaces inherited Global Styles values.
19
+ *
20
+ * Behind the `gutenberg-global-styles-inheritance-ui` Gutenberg experiment,
21
+ * so the treatment is off unless someone opts in on the Experiments screen.
22
+ * With it off, the panels show locally-set values alone.
23
+ *
24
+ * Evaluated per call rather than once at module scope, so tests can toggle
25
+ * the experiment and so a later move to a store-backed setting only has to
26
+ * change this one place. Always returns a boolean: callers pass the result
27
+ * down as a prop, and `undefined` would trigger a receiving component's own
28
+ * default parameter.
29
+ *
30
+ * @return {boolean} Whether the inherited-value treatment is enabled.
31
+ */
32
+ export const isGlobalStylesInheritanceEnabled = () =>
33
+ !! window.__experimentalGlobalStylesInheritanceUI;
34
+
35
+ /**
36
+ * Returns props to spread onto a wrapping `<InheritanceToolsPanelItem>`
37
+ * so its descendant label picks up the inherited-from-Global-Styles
38
+ * visual treatment.
39
+ *
40
+ * When `isInherited` is true without a local override, the descendant
41
+ * label text receives the inherited-from-Global-Styles treatment
42
+ * (dotted underline). No dot is shown.
43
+ *
44
+ * When `hasLocalOverride` is true, a small reset dot is rendered as a
45
+ * sibling of the control exposing a "Reset to inherited value" action.
46
+ *
47
+ * The two states are mutually exclusive at the source. If both are passed,
48
+ * only the local-override class is returned.
49
+ *
50
+ * Returned object shape allows direct spread:
51
+ *
52
+ * <InheritanceToolsPanelItem
53
+ * { ...getInheritanceProps( isInherited, hasLocalOverride ) }
54
+ * label={ __( 'Line height' ) }
55
+ * …
56
+ * >
57
+ *
58
+ * @param {boolean} isInherited Control is inheriting at rest.
59
+ * @param {boolean} hasLocalOverride Local override is set AND
60
+ * there is an inherited value
61
+ * being overridden.
62
+ * @param {string|Array|Object} [baseClassName] Optional className(s) to fold
63
+ * into the returned `className`.
64
+ *
65
+ * @return {{ className?: string, isInherited: boolean, hasLocalOverride: boolean }} Props for the wrapping
66
+ * `InheritanceToolsPanelItem`.
67
+ */
68
+ export function getInheritanceProps(
69
+ isInherited,
70
+ hasLocalOverride,
71
+ baseClassName
72
+ ) {
73
+ const inheritedOnly = !! isInherited && ! hasLocalOverride;
74
+ const className = clsx( baseClassName, {
75
+ 'is-inherited-from-global-styles': inheritedOnly,
76
+ 'has-local-override-from-global-styles': !! hasLocalOverride,
77
+ } );
78
+ return {
79
+ ...( className ? { className } : {} ),
80
+ isInherited: inheritedOnly,
81
+ hasLocalOverride: !! hasLocalOverride,
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Renders the small always-visible reset button shown next to a control
87
+ * that holds a local override of an inherited Global Styles value. Used by
88
+ * `<InheritanceToolsPanelItem>` and the color/gradient controls.
89
+ *
90
+ * At rest the button shows a blue dot signalling the local override. On
91
+ * hover/focus the dot morphs into the `reset` (dash) icon and the button
92
+ * exposes a "Reset to inherited value" tooltip. Activating it clears the
93
+ * override so the control falls back to its inherited value — the same
94
+ * action the `ToolsPanel` menu performs via `onDeselect`.
95
+ *
96
+ * @param {Object} props
97
+ * @param {Function} props.onResetToInherited Reset handler.
98
+ * @param {string} [props.className] Optional className for the button.
99
+ *
100
+ * @return {Element} The reset button.
101
+ */
102
+ export function InheritanceResetButton( { onResetToInherited, className } ) {
103
+ return (
104
+ // Intentionally small (14×14) circular control; exempt from the
105
+ // 40px default-size enforcement rule.
106
+ // eslint-disable-next-line @wordpress/components-no-missing-40px-size-prop
107
+ <Button
108
+ __next40pxDefaultSize={ false }
109
+ label={ __( 'Reset to inherited value' ) }
110
+ // The button has children (the dot + reset icon), so the tooltip
111
+ // is not shown automatically; opt in explicitly.
112
+ showTooltip
113
+ className={ clsx(
114
+ 'has-local-override-from-global-styles__reset',
115
+ className
116
+ ) }
117
+ onClick={ ( event ) => {
118
+ // Prevent the click from reaching any wrapping
119
+ // `<label htmlFor>` association, which would otherwise
120
+ // focus/activate the inner control.
121
+ event.preventDefault();
122
+ event.stopPropagation();
123
+ onResetToInherited?.();
124
+ } }
125
+ >
126
+ <span
127
+ aria-hidden="true"
128
+ className="has-local-override-from-global-styles__dot"
129
+ />
130
+ <WCIcon
131
+ className="has-local-override-from-global-styles__reset-icon"
132
+ icon={ resetIcon }
133
+ />
134
+ </Button>
135
+ );
136
+ }
137
+
138
+ /**
139
+ * A `ToolsPanelItem` that reflects whether its control's value is inherited
140
+ * from Global Styles or locally overridden. The two states are mutually
141
+ * exclusive.
142
+ *
143
+ * - Inherited: the control label receives the inherited-from-Global-Styles
144
+ * treatment (dotted underline) via the `is-inherited-from-global-styles`
145
+ * class applied through `getInheritanceProps`. No dot is shown.
146
+ * - Local override: a reset dot is rendered as a plain sibling of the control
147
+ * at the item's inline-end — never nested in the label — exposing the same
148
+ * one-click reset the `ToolsPanel` options menu performs via `onDeselect`.
149
+ *
150
+ * Controls that render their own reset control next to a custom toggle (color,
151
+ * background image) pass `showLocalOverrideActionsInLabel={ false }` so the
152
+ * item does not render a second reset dot.
153
+ *
154
+ * @param {Object} props
155
+ * @param {?string} props.className Item className.
156
+ * @param {boolean} props.isInherited Value is inherited at rest. Accepted so the `getInheritanceProps` spread does not leak onto the underlying `ToolsPanelItem`; the inherited treatment is applied via `className`.
157
+ * @param {boolean} props.hasLocalOverride Local override is set.
158
+ * @param {import('react').ReactNode} props.label Control label.
159
+ * @param {?Function} props.onDeselect Reset handler.
160
+ * @param {boolean} [props.showLocalOverrideActionsInLabel] Render the reset dot here (default true).
161
+ * @param {boolean} [props.hasInlineEndToggle] The control renders a 24x24 toggle (linked/unlink, units switch) at its inline-end; offset the reset dot to sit just to its inline-start (default false).
162
+ * @param {import('react').ReactNode} props.children The control.
163
+ *
164
+ * @return {Element} The panel item.
165
+ */
166
+ export function InheritanceToolsPanelItem( {
167
+ className,
168
+ // Destructured (and unused) so the `getInheritanceProps` spread does not
169
+ // leak `isInherited` onto the underlying `ToolsPanelItem`. The inherited
170
+ // treatment is applied purely via `className`
171
+ // (`is-inherited-from-global-styles`).
172
+ isInherited,
173
+ hasLocalOverride,
174
+ label,
175
+ onDeselect,
176
+ showLocalOverrideActionsInLabel = true,
177
+ hasInlineEndToggle = false,
178
+ children,
179
+ ...rest
180
+ } ) {
181
+ const showResetAffordance =
182
+ hasLocalOverride && showLocalOverrideActionsInLabel;
183
+
184
+ return (
185
+ <ToolsPanelItem
186
+ className={ className }
187
+ label={ label }
188
+ onDeselect={ onDeselect }
189
+ { ...rest }
190
+ >
191
+ { children }
192
+ { showResetAffordance && (
193
+ <div
194
+ className={ clsx( 'global-styles-inheritance-affordance', {
195
+ 'global-styles-inheritance-affordance--offset-toggle':
196
+ hasInlineEndToggle,
197
+ } ) }
198
+ >
199
+ <InheritanceResetButton onResetToInherited={ onDeselect } />
200
+ </div>
201
+ ) }
202
+ </ToolsPanelItem>
203
+ );
204
+ }
@@ -0,0 +1,184 @@
1
+ @use "@wordpress/base-styles/variables" as *;
2
+
3
+ // Inherited Global Styles values — visual treatment for inspector control
4
+ // labels.
5
+ //
6
+ // `.is-inherited-from-global-styles` marks controls displaying inherited
7
+ // values: the label gets a dotted underline.
8
+ // `.has-local-override-from-global-styles` marks controls that locally override
9
+ // inherited values: a blue reset dot is rendered as a sibling at the item's
10
+ // inline-end. The states are mutually exclusive.
11
+ .is-inherited-from-global-styles {
12
+ // `.components-base-control__label` covers most controls (ToggleGroup,
13
+ // selects, the visible `<span>` label some controls render). Controls
14
+ // built on a bare `UnitControl`/`NumberControl` (Line height, Letter
15
+ // spacing, Columns, and unit-based dimension inputs) instead expose their
16
+ // visible label as `.components-input-control__label`, so it must be
17
+ // targeted too or those controls silently miss the inherited treatment.
18
+ .components-base-control__label,
19
+ .components-input-control__label {
20
+ text-decoration-line: underline;
21
+ text-decoration-style: dotted;
22
+ text-decoration-thickness: 1px;
23
+ text-underline-offset: 0.2em;
24
+ }
25
+
26
+ // These labels sit in truncated flex containers where an underline is
27
+ // clipped by `overflow: hidden`; a dotted bottom border stays visible.
28
+ .block-editor-panel-color-gradient-settings__color-name,
29
+ .block-editor-global-styles-background-panel__inspector-media-replace-title,
30
+ .block-editor-panel-duotone-settings__label {
31
+ border-bottom: 1px dotted currentColor;
32
+ }
33
+ }
34
+
35
+ // Local-override reset dot — a sibling of the control positioned at the item's
36
+ // inline-end.
37
+ .has-local-override-from-global-styles {
38
+ position: relative;
39
+ }
40
+
41
+ .global-styles-inheritance-affordance {
42
+ position: absolute;
43
+ inset-block-start: 0;
44
+ inset-inline-end: 0;
45
+ z-index: 1;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ pointer-events: none;
50
+
51
+ // Match the label line height so the shorter (14px) reset dot centers on
52
+ // the 16px label rather than pinning to its top.
53
+ height: $grid-unit-20;
54
+
55
+ // Controls that render a 24px toggle at the item's inline-end (linked/
56
+ // unlink, units switch): shift the dot one toggle width plus an 8px gap
57
+ // toward the inline-start so it sits just to the left of that toggle and
58
+ // the two never overlap.
59
+ &--offset-toggle {
60
+ inset-inline-end: calc(24px + 8px);
61
+ }
62
+
63
+ .has-local-override-from-global-styles__reset {
64
+ pointer-events: auto;
65
+ // The affordance wrapper handles placement; drop the inline margin the
66
+ // shared rule adds for the in-label (color/background) context.
67
+ margin-inline-start: 0 !important;
68
+ }
69
+ }
70
+
71
+ // Local-override reset button. At rest it shows the blue dot signalling a local
72
+ // override; on hover/focus the dot is swapped for the `reset` (dash) icon and a
73
+ // "Reset to inherited value" tooltip.
74
+ .has-local-override-from-global-styles__reset {
75
+ display: inline-flex !important;
76
+ align-items: center;
77
+ justify-content: center;
78
+ vertical-align: middle;
79
+ position: relative;
80
+ margin-inline-start: 6px;
81
+
82
+ // Override the default IconButton chrome so the trigger appears as a
83
+ // tight inline circle that never shifts the sibling label text.
84
+ min-width: 14px !important;
85
+ width: 14px !important;
86
+ height: 14px !important;
87
+ padding: 0 !important;
88
+ border-radius: 50% !important;
89
+ background: transparent !important;
90
+ box-shadow: none !important;
91
+ overflow: hidden;
92
+
93
+ // `<Button>` does not preserve text-transform overrides from its parent
94
+ // label. Belt-and-braces: ensure the trigger never inherits an uppercase
95
+ // transform from a label that happens to use one.
96
+ text-transform: none;
97
+ letter-spacing: normal;
98
+
99
+ // Some `<label>` rules style descendant text/buttons (legacy
100
+ // pre-existing CSS). Reset to the design-system pointer token.
101
+ cursor: var(--wpds-cursor-control);
102
+
103
+ &:hover,
104
+ &:focus {
105
+ background: transparent !important;
106
+
107
+ .has-local-override-from-global-styles__dot {
108
+ display: none;
109
+ }
110
+
111
+ .has-local-override-from-global-styles__reset-icon {
112
+ display: block;
113
+ }
114
+ }
115
+
116
+ &:focus-visible {
117
+ // Inset focus ring so it doesn't push other text around.
118
+ outline: 1.5px solid var(--wp-admin-theme-color, #007cba);
119
+ outline-offset: 1px;
120
+ }
121
+
122
+ // Color/gradient control context: the button is positioned by
123
+ // `block-editor-panel-color-gradient-settings__reset` (absolute,
124
+ // hover-revealed) as a sibling of the toggle. The shared rule above sets
125
+ // `position: relative`; re-assert `position: absolute` here (this compound
126
+ // selector wins on specificity) to sit in the reset slot.
127
+ &.block-editor-panel-color-gradient-settings__reset {
128
+ position: absolute;
129
+ justify-content: center;
130
+ top: 50%;
131
+ transform: translateY(-50%);
132
+ margin-block: 0;
133
+ margin-inline-start: 0;
134
+ opacity: 1;
135
+ }
136
+
137
+ // Shadow control context: the blue-dot override reset reuses the shadow
138
+ // remove-button slot, which is absolutely positioned and hover-revealed
139
+ // (`opacity: 0`). The override dot must stay visible, so re-assert
140
+ // placement and force `opacity: 1` (this compound selector wins on
141
+ // specificity).
142
+ &.block-editor-global-styles__shadow-editor__remove-button {
143
+ position: absolute;
144
+ justify-content: center;
145
+ inset-inline-end: 8px;
146
+ top: 50%;
147
+ transform: translateY(-50%);
148
+ margin-block: 0;
149
+ margin-inline-start: 0;
150
+ opacity: 1;
151
+ }
152
+
153
+ // Reuses the hover-revealed remove-button slot; keep the override dot
154
+ // placed and always visible.
155
+ &.block-editor-panel-duotone-settings__reset {
156
+ position: absolute;
157
+ justify-content: center;
158
+ inset-inline-end: 8px;
159
+ top: 50%;
160
+ transform: translateY(-50%);
161
+ margin-block: 0;
162
+ margin-inline-start: 0;
163
+ opacity: 1;
164
+ }
165
+ }
166
+
167
+ .has-local-override-from-global-styles__dot {
168
+ display: block;
169
+ width: 8px;
170
+ height: 8px;
171
+ background-color: var(--wp-admin-theme-color, #007cba);
172
+ border-radius: 50%;
173
+ }
174
+
175
+ // The dash icon revealed on hover/focus, centered over the dot's slot and
176
+ // clipped to the circular button bounds so the box size stays stable.
177
+ .has-local-override-from-global-styles__reset-icon {
178
+ display: none;
179
+ position: absolute;
180
+ top: 50%;
181
+ left: 50%;
182
+ transform: translate(-50%, -50%);
183
+ color: var(--wp-admin-theme-color, #007cba);
184
+ }