@wordpress/block-editor 9.1.0 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/autocompleters/block.js +3 -1
  3. package/build/autocompleters/block.js.map +1 -1
  4. package/build/components/block-actions/index.js.map +1 -1
  5. package/build/components/block-alignment-control/ui.js.map +1 -1
  6. package/build/components/block-alignment-matrix-control/index.js +3 -7
  7. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  8. package/build/components/block-breadcrumb/index.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js.map +1 -1
  10. package/build/components/block-context/index.js.map +1 -1
  11. package/build/components/block-controls/hook.js.map +1 -1
  12. package/build/components/block-draggable/draggable-chip.native.js +2 -1
  13. package/build/components/block-draggable/draggable-chip.native.js.map +1 -1
  14. package/build/components/block-draggable/index.js.map +1 -1
  15. package/build/components/block-draggable/index.native.js +7 -3
  16. package/build/components/block-draggable/index.native.js.map +1 -1
  17. package/build/components/block-list/block-list-item.native.js.map +1 -1
  18. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  19. package/build/components/block-list/block.js.map +1 -1
  20. package/build/components/block-list/block.native.js +2 -1
  21. package/build/components/block-list/block.native.js.map +1 -1
  22. package/build/components/block-list/index.js +34 -32
  23. package/build/components/block-list/index.js.map +1 -1
  24. package/build/components/block-list/index.native.js.map +1 -1
  25. package/build/components/block-list/use-block-props/index.js.map +1 -1
  26. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  28. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  29. package/build/components/block-list-appender/index.js.map +1 -1
  30. package/build/components/block-list-appender/index.native.js.map +1 -1
  31. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  32. package/build/components/block-mobile-toolbar/index.native.js +2 -1
  33. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  34. package/build/components/block-mover/button.js.map +1 -1
  35. package/build/components/block-mover/index.native.js.map +1 -1
  36. package/build/components/block-parent-selector/index.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +3 -9
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-pattern-setup/setup-toolbar.js +3 -8
  40. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  41. package/build/components/block-popover/inbetween.js +9 -6
  42. package/build/components/block-popover/inbetween.js.map +1 -1
  43. package/build/components/block-popover/index.js +2 -1
  44. package/build/components/block-popover/index.js.map +1 -1
  45. package/build/components/block-preview/auto.js +21 -5
  46. package/build/components/block-preview/auto.js.map +1 -1
  47. package/build/components/block-selection-clearer/index.js.map +1 -1
  48. package/build/components/block-settings-menu/block-edit-visually-button.js +70 -0
  49. package/build/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
  50. package/build/components/block-settings-menu/block-mode-toggle.js +3 -7
  51. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  52. package/build/components/block-settings-menu/block-settings-dropdown.js +6 -3
  53. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  54. package/build/components/block-settings-menu/index.js +6 -2
  55. package/build/components/block-settings-menu/index.js.map +1 -1
  56. package/build/components/block-settings-menu-controls/index.js +4 -1
  57. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  58. package/build/components/block-styles/index.js +6 -3
  59. package/build/components/block-styles/index.js.map +1 -1
  60. package/build/components/block-styles/menu-items.js +3 -7
  61. package/build/components/block-styles/menu-items.js.map +1 -1
  62. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  63. package/build/components/block-title/use-block-display-title.js +3 -10
  64. package/build/components/block-title/use-block-display-title.js.map +1 -1
  65. package/build/components/block-toolbar/index.native.js.map +1 -1
  66. package/build/components/block-toolbar/utils.js +5 -8
  67. package/build/components/block-toolbar/utils.js.map +1 -1
  68. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  69. package/build/components/block-tools/block-selection-button.js +1 -0
  70. package/build/components/block-tools/block-selection-button.js.map +1 -1
  71. package/build/components/block-tools/index.js.map +1 -1
  72. package/build/components/block-types-list/index.native.js.map +1 -1
  73. package/build/components/block-variation-transforms/index.js +16 -2
  74. package/build/components/block-variation-transforms/index.js.map +1 -1
  75. package/build/components/color-style-selector/index.js.map +1 -1
  76. package/build/components/colors/with-colors.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +72 -95
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/colors-gradients/panel-color-gradient-settings.js +35 -60
  80. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  81. package/build/components/convert-to-group-buttons/toolbar.js +22 -5
  82. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  83. package/build/components/copy-handler/index.js +17 -1
  84. package/build/components/copy-handler/index.js.map +1 -1
  85. package/build/components/default-block-appender/index.js.map +1 -1
  86. package/build/components/default-block-appender/index.native.js.map +1 -1
  87. package/build/components/default-style-picker/index.js.map +1 -1
  88. package/build/components/duotone/components.js +145 -0
  89. package/build/components/duotone/components.js.map +1 -0
  90. package/build/components/duotone/index.js +40 -0
  91. package/build/components/duotone/index.js.map +1 -0
  92. package/build/components/duotone/utils.js +38 -0
  93. package/build/components/duotone/utils.js.map +1 -0
  94. package/build/components/duotone-control/index.js +17 -5
  95. package/build/components/duotone-control/index.js.map +1 -1
  96. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  97. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  98. package/build/components/image-size-control/index.js +3 -1
  99. package/build/components/image-size-control/index.js.map +1 -1
  100. package/build/components/index.js +41 -0
  101. package/build/components/index.js.map +1 -1
  102. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  103. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  104. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  105. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  106. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  107. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  108. package/build/components/inserter/index.js +3 -3
  109. package/build/components/inserter/index.js.map +1 -1
  110. package/build/components/inserter/index.native.js.map +1 -1
  111. package/build/components/inserter/library.js +3 -7
  112. package/build/components/inserter/library.js.map +1 -1
  113. package/build/components/inserter/menu.js.map +1 -1
  114. package/build/components/inserter/menu.native.js.map +1 -1
  115. package/build/components/inserter/no-results.native.js.map +1 -1
  116. package/build/components/inserter/quick-inserter.js.map +1 -1
  117. package/build/components/inserter/search-items.js +1 -1
  118. package/build/components/inserter/search-items.js.map +1 -1
  119. package/build/components/inserter/search-results.native.js.map +1 -1
  120. package/build/components/inspector-popover-header/index.js +56 -0
  121. package/build/components/inspector-popover-header/index.js.map +1 -0
  122. package/build/components/line-height-control/index.js.map +1 -1
  123. package/build/components/link-control/index.js +4 -4
  124. package/build/components/link-control/index.js.map +1 -1
  125. package/build/components/link-control/search-create-button.js +1 -3
  126. package/build/components/link-control/search-create-button.js.map +1 -1
  127. package/build/components/link-control/search-input.js +5 -3
  128. package/build/components/link-control/search-input.js.map +1 -1
  129. package/build/components/link-control/settings-drawer.js +3 -7
  130. package/build/components/link-control/settings-drawer.js.map +1 -1
  131. package/build/components/link-control/use-search-handler.js.map +1 -1
  132. package/build/components/list-view/block-contents.js.map +1 -1
  133. package/build/components/list-view/branch.js.map +1 -1
  134. package/build/components/list-view/index.js.map +1 -1
  135. package/build/components/list-view/use-block-selection.js.map +1 -1
  136. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  137. package/build/components/list-view/utils.js +1 -7
  138. package/build/components/list-view/utils.js.map +1 -1
  139. package/build/components/media-placeholder/index.js +5 -6
  140. package/build/components/media-placeholder/index.js.map +1 -1
  141. package/build/components/media-placeholder/index.native.js +4 -4
  142. package/build/components/media-placeholder/index.native.js.map +1 -1
  143. package/build/components/media-replace-flow/index.js +23 -14
  144. package/build/components/media-replace-flow/index.js.map +1 -1
  145. package/build/components/media-upload/index.native.js +10 -4
  146. package/build/components/media-upload/index.native.js.map +1 -1
  147. package/build/components/navigable-toolbar/index.js.map +1 -1
  148. package/build/components/plain-text/index.native.js +62 -7
  149. package/build/components/plain-text/index.native.js.map +1 -1
  150. package/build/components/preview-options/index.js +4 -0
  151. package/build/components/preview-options/index.js.map +1 -1
  152. package/build/components/provider/use-block-sync.js +5 -3
  153. package/build/components/provider/use-block-sync.js.map +1 -1
  154. package/build/components/publish-date-time-picker/index.js +56 -0
  155. package/build/components/publish-date-time-picker/index.js.map +1 -0
  156. package/build/components/rich-text/embed-handler-picker.native.js +4 -8
  157. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -1
  158. package/build/components/rich-text/index.js +1 -1
  159. package/build/components/rich-text/index.js.map +1 -1
  160. package/build/components/rich-text/index.native.js +5 -1
  161. package/build/components/rich-text/index.native.js.map +1 -1
  162. package/build/components/rich-text/use-format-types.js.map +1 -1
  163. package/build/components/rich-text/use-input-rules.js +4 -13
  164. package/build/components/rich-text/use-input-rules.js.map +1 -1
  165. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  166. package/build/components/rich-text/use-paste-handler.js +20 -5
  167. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  168. package/build/components/skip-to-selected-block/index.js.map +1 -1
  169. package/build/components/ungroup-button/index.native.js +3 -7
  170. package/build/components/ungroup-button/index.native.js.map +1 -1
  171. package/build/components/url-input/index.js +14 -3
  172. package/build/components/url-input/index.js.map +1 -1
  173. package/build/components/use-block-display-information/index.js.map +1 -1
  174. package/build/components/use-block-drop-zone/index.js.map +1 -1
  175. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  176. package/build/components/use-display-block-controls/index.native.js.map +1 -1
  177. package/build/components/use-on-block-drop/index.js.map +1 -1
  178. package/build/components/use-on-block-drop/index.native.js.map +1 -1
  179. package/build/components/use-setting/index.js.map +1 -1
  180. package/build/components/writing-flow/use-arrow-nav.js +12 -12
  181. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  182. package/build/components/writing-flow/use-click-selection.js.map +1 -1
  183. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  184. package/build/components/writing-flow/use-input.js +15 -0
  185. package/build/components/writing-flow/use-input.js.map +1 -1
  186. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  187. package/build/components/writing-flow/use-select-all.js.map +1 -1
  188. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  189. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  190. package/build/elements/index.js +17 -0
  191. package/build/elements/index.js.map +1 -0
  192. package/build/hooks/aria-label.js +71 -0
  193. package/build/hooks/aria-label.js.map +1 -0
  194. package/build/hooks/color-panel.js.map +1 -1
  195. package/build/hooks/color-panel.native.js.map +1 -1
  196. package/build/hooks/color.js +8 -88
  197. package/build/hooks/color.js.map +1 -1
  198. package/build/hooks/dimensions.js +14 -4
  199. package/build/hooks/dimensions.js.map +1 -1
  200. package/build/hooks/duotone.js +33 -160
  201. package/build/hooks/duotone.js.map +1 -1
  202. package/build/hooks/font-family.js.map +1 -1
  203. package/build/hooks/gap.js.map +1 -1
  204. package/build/hooks/index.js +3 -7
  205. package/build/hooks/index.js.map +1 -1
  206. package/build/hooks/layout.js +44 -5
  207. package/build/hooks/layout.js.map +1 -1
  208. package/build/index.js +14 -7
  209. package/build/index.js.map +1 -1
  210. package/build/layouts/flex.js +7 -4
  211. package/build/layouts/flex.js.map +1 -1
  212. package/build/store/actions.js +24 -14
  213. package/build/store/actions.js.map +1 -1
  214. package/build/store/reducer.js +35 -11
  215. package/build/store/reducer.js.map +1 -1
  216. package/build/store/selectors.js +30 -2
  217. package/build/store/selectors.js.map +1 -1
  218. package/build/utils/pasting.js.map +1 -1
  219. package/build/utils/selection.js +34 -0
  220. package/build/utils/selection.js.map +1 -0
  221. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  222. package/build-module/autocompleters/block.js +4 -1
  223. package/build-module/autocompleters/block.js.map +1 -1
  224. package/build-module/components/block-actions/index.js.map +1 -1
  225. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  226. package/build-module/components/block-alignment-matrix-control/index.js +2 -5
  227. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  228. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  229. package/build-module/components/block-content-overlay/index.js.map +1 -1
  230. package/build-module/components/block-context/index.js.map +1 -1
  231. package/build-module/components/block-controls/hook.js.map +1 -1
  232. package/build-module/components/block-draggable/draggable-chip.native.js +2 -1
  233. package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -1
  234. package/build-module/components/block-draggable/index.js.map +1 -1
  235. package/build-module/components/block-draggable/index.native.js +7 -3
  236. package/build-module/components/block-draggable/index.native.js.map +1 -1
  237. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  238. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  239. package/build-module/components/block-list/block.js.map +1 -1
  240. package/build-module/components/block-list/block.native.js +2 -1
  241. package/build-module/components/block-list/block.native.js.map +1 -1
  242. package/build-module/components/block-list/index.js +35 -33
  243. package/build-module/components/block-list/index.js.map +1 -1
  244. package/build-module/components/block-list/index.native.js.map +1 -1
  245. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  246. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  247. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  248. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  249. package/build-module/components/block-list-appender/index.js.map +1 -1
  250. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  251. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  252. package/build-module/components/block-mobile-toolbar/index.native.js +2 -1
  253. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  254. package/build-module/components/block-mover/button.js.map +1 -1
  255. package/build-module/components/block-mover/index.native.js.map +1 -1
  256. package/build-module/components/block-parent-selector/index.js.map +1 -1
  257. package/build-module/components/block-pattern-setup/index.js +3 -9
  258. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  259. package/build-module/components/block-pattern-setup/setup-toolbar.js +3 -8
  260. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  261. package/build-module/components/block-popover/inbetween.js +9 -6
  262. package/build-module/components/block-popover/inbetween.js.map +1 -1
  263. package/build-module/components/block-popover/index.js +2 -1
  264. package/build-module/components/block-popover/index.js.map +1 -1
  265. package/build-module/components/block-preview/auto.js +20 -5
  266. package/build-module/components/block-preview/auto.js.map +1 -1
  267. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  268. package/build-module/components/block-settings-menu/block-edit-visually-button.js +56 -0
  269. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
  270. package/build-module/components/block-settings-menu/block-mode-toggle.js +3 -5
  271. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  272. package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -2
  273. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  274. package/build-module/components/block-settings-menu/index.js +6 -3
  275. package/build-module/components/block-settings-menu/index.js.map +1 -1
  276. package/build-module/components/block-settings-menu-controls/index.js +5 -2
  277. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  278. package/build-module/components/block-styles/index.js +5 -2
  279. package/build-module/components/block-styles/index.js.map +1 -1
  280. package/build-module/components/block-styles/menu-items.js +3 -5
  281. package/build-module/components/block-styles/menu-items.js.map +1 -1
  282. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  283. package/build-module/components/block-title/use-block-display-title.js +3 -9
  284. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  285. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  286. package/build-module/components/block-toolbar/utils.js +3 -5
  287. package/build-module/components/block-toolbar/utils.js.map +1 -1
  288. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  289. package/build-module/components/block-tools/block-selection-button.js +1 -0
  290. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  291. package/build-module/components/block-tools/index.js.map +1 -1
  292. package/build-module/components/block-types-list/index.native.js.map +1 -1
  293. package/build-module/components/block-variation-transforms/index.js +13 -2
  294. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  295. package/build-module/components/color-style-selector/index.js.map +1 -1
  296. package/build-module/components/colors/with-colors.js.map +1 -1
  297. package/build-module/components/colors-gradients/dropdown.js +74 -97
  298. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  299. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +36 -64
  300. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  301. package/build-module/components/convert-to-group-buttons/toolbar.js +23 -6
  302. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  303. package/build-module/components/copy-handler/index.js +18 -2
  304. package/build-module/components/copy-handler/index.js.map +1 -1
  305. package/build-module/components/default-block-appender/index.js.map +1 -1
  306. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  307. package/build-module/components/default-style-picker/index.js.map +1 -1
  308. package/build-module/components/duotone/components.js +130 -0
  309. package/build-module/components/duotone/components.js.map +1 -0
  310. package/build-module/components/duotone/index.js +3 -0
  311. package/build-module/components/duotone/index.js.map +1 -0
  312. package/build-module/components/duotone/utils.js +30 -0
  313. package/build-module/components/duotone/utils.js.map +1 -0
  314. package/build-module/components/duotone-control/index.js +18 -6
  315. package/build-module/components/duotone-control/index.js.map +1 -1
  316. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  317. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  318. package/build-module/components/image-size-control/index.js +4 -1
  319. package/build-module/components/image-size-control/index.js.map +1 -1
  320. package/build-module/components/index.js +4 -0
  321. package/build-module/components/index.js.map +1 -1
  322. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  323. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  324. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  325. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  326. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  327. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  328. package/build-module/components/inserter/index.js +3 -2
  329. package/build-module/components/inserter/index.js.map +1 -1
  330. package/build-module/components/inserter/index.native.js.map +1 -1
  331. package/build-module/components/inserter/library.js +2 -5
  332. package/build-module/components/inserter/library.js.map +1 -1
  333. package/build-module/components/inserter/menu.js.map +1 -1
  334. package/build-module/components/inserter/menu.native.js.map +1 -1
  335. package/build-module/components/inserter/no-results.native.js.map +1 -1
  336. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  337. package/build-module/components/inserter/search-items.js +2 -2
  338. package/build-module/components/inserter/search-items.js.map +1 -1
  339. package/build-module/components/inserter/search-results.native.js.map +1 -1
  340. package/build-module/components/inspector-popover-header/index.js +46 -0
  341. package/build-module/components/inspector-popover-header/index.js.map +1 -0
  342. package/build-module/components/line-height-control/index.js.map +1 -1
  343. package/build-module/components/link-control/index.js +2 -1
  344. package/build-module/components/link-control/index.js.map +1 -1
  345. package/build-module/components/link-control/search-create-button.js +1 -2
  346. package/build-module/components/link-control/search-create-button.js.map +1 -1
  347. package/build-module/components/link-control/search-input.js +3 -1
  348. package/build-module/components/link-control/search-input.js.map +1 -1
  349. package/build-module/components/link-control/settings-drawer.js +2 -5
  350. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  351. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  352. package/build-module/components/list-view/block-contents.js.map +1 -1
  353. package/build-module/components/list-view/branch.js.map +1 -1
  354. package/build-module/components/list-view/index.js.map +1 -1
  355. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  356. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  357. package/build-module/components/list-view/utils.js +1 -6
  358. package/build-module/components/list-view/utils.js.map +1 -1
  359. package/build-module/components/media-placeholder/index.js +3 -3
  360. package/build-module/components/media-placeholder/index.js.map +1 -1
  361. package/build-module/components/media-placeholder/index.native.js +5 -3
  362. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  363. package/build-module/components/media-replace-flow/index.js +24 -14
  364. package/build-module/components/media-replace-flow/index.js.map +1 -1
  365. package/build-module/components/media-upload/index.native.js +8 -3
  366. package/build-module/components/media-upload/index.native.js.map +1 -1
  367. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  368. package/build-module/components/plain-text/index.native.js +63 -8
  369. package/build-module/components/plain-text/index.native.js.map +1 -1
  370. package/build-module/components/preview-options/index.js +4 -0
  371. package/build-module/components/preview-options/index.js.map +1 -1
  372. package/build-module/components/provider/use-block-sync.js +4 -1
  373. package/build-module/components/provider/use-block-sync.js.map +1 -1
  374. package/build-module/components/publish-date-time-picker/index.js +42 -0
  375. package/build-module/components/publish-date-time-picker/index.js.map +1 -0
  376. package/build-module/components/rich-text/embed-handler-picker.native.js +3 -5
  377. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -1
  378. package/build-module/components/rich-text/index.js +1 -1
  379. package/build-module/components/rich-text/index.js.map +1 -1
  380. package/build-module/components/rich-text/index.native.js +5 -1
  381. package/build-module/components/rich-text/index.native.js.map +1 -1
  382. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  383. package/build-module/components/rich-text/use-input-rules.js +3 -11
  384. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  385. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  386. package/build-module/components/rich-text/use-paste-handler.js +20 -5
  387. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  388. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  389. package/build-module/components/ungroup-button/index.native.js +3 -5
  390. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  391. package/build-module/components/url-input/index.js +11 -1
  392. package/build-module/components/url-input/index.js.map +1 -1
  393. package/build-module/components/use-block-display-information/index.js.map +1 -1
  394. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  395. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  396. package/build-module/components/use-display-block-controls/index.native.js.map +1 -1
  397. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  398. package/build-module/components/use-on-block-drop/index.native.js.map +1 -1
  399. package/build-module/components/use-setting/index.js.map +1 -1
  400. package/build-module/components/writing-flow/use-arrow-nav.js +12 -11
  401. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  402. package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
  403. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  404. package/build-module/components/writing-flow/use-input.js +15 -0
  405. package/build-module/components/writing-flow/use-input.js.map +1 -1
  406. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  407. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  408. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  409. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  410. package/build-module/elements/index.js +8 -0
  411. package/build-module/elements/index.js.map +1 -0
  412. package/build-module/hooks/aria-label.js +59 -0
  413. package/build-module/hooks/aria-label.js.map +1 -0
  414. package/build-module/hooks/color-panel.js.map +1 -1
  415. package/build-module/hooks/color-panel.native.js.map +1 -1
  416. package/build-module/hooks/color.js +8 -88
  417. package/build-module/hooks/color.js.map +1 -1
  418. package/build-module/hooks/dimensions.js +14 -4
  419. package/build-module/hooks/dimensions.js.map +1 -1
  420. package/build-module/hooks/duotone.js +22 -140
  421. package/build-module/hooks/duotone.js.map +1 -1
  422. package/build-module/hooks/font-family.js.map +1 -1
  423. package/build-module/hooks/gap.js.map +1 -1
  424. package/build-module/hooks/index.js +1 -1
  425. package/build-module/hooks/index.js.map +1 -1
  426. package/build-module/hooks/layout.js +45 -6
  427. package/build-module/hooks/layout.js.map +1 -1
  428. package/build-module/index.js +2 -1
  429. package/build-module/index.js.map +1 -1
  430. package/build-module/layouts/flex.js +6 -4
  431. package/build-module/layouts/flex.js.map +1 -1
  432. package/build-module/store/actions.js +18 -11
  433. package/build-module/store/actions.js.map +1 -1
  434. package/build-module/store/reducer.js +36 -12
  435. package/build-module/store/reducer.js.map +1 -1
  436. package/build-module/store/selectors.js +25 -2
  437. package/build-module/store/selectors.js.map +1 -1
  438. package/build-module/utils/pasting.js.map +1 -1
  439. package/build-module/utils/selection.js +24 -0
  440. package/build-module/utils/selection.js.map +1 -0
  441. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  442. package/build-style/style-rtl.css +37 -37
  443. package/build-style/style.css +37 -37
  444. package/package.json +30 -30
  445. package/src/autocompleters/block.js +2 -1
  446. package/src/components/block-actions/index.js +2 -3
  447. package/src/components/block-alignment-control/ui.js +4 -6
  448. package/src/components/block-alignment-matrix-control/index.js +2 -4
  449. package/src/components/block-breadcrumb/index.js +2 -5
  450. package/src/components/block-compare/test/block-view.js +2 -1
  451. package/src/components/block-content-overlay/index.js +2 -5
  452. package/src/components/block-context/index.js +4 -4
  453. package/src/components/block-controls/hook.js +2 -3
  454. package/src/components/block-draggable/draggable-chip.native.js +1 -1
  455. package/src/components/block-draggable/index.js +6 -13
  456. package/src/components/block-draggable/index.native.js +10 -14
  457. package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +73 -0
  458. package/src/components/block-draggable/test/helpers.native.js +183 -0
  459. package/src/components/block-draggable/test/index.native.js +493 -0
  460. package/src/components/block-edit/test/edit.js +2 -1
  461. package/src/components/block-list/block-list-item.native.js +4 -12
  462. package/src/components/block-list/block-selection-button.native.js +2 -3
  463. package/src/components/block-list/block.js +8 -10
  464. package/src/components/block-list/block.native.js +11 -15
  465. package/src/components/block-list/index.js +46 -47
  466. package/src/components/block-list/index.native.js +12 -21
  467. package/src/components/block-list/style.scss +1 -1
  468. package/src/components/block-list/test/block-list-context.native.js +8 -16
  469. package/src/components/block-list/use-block-props/index.js +6 -3
  470. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +2 -3
  471. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +2 -3
  472. package/src/components/block-list/use-in-between-inserter.js +2 -3
  473. package/src/components/block-list-appender/index.js +2 -5
  474. package/src/components/block-list-appender/index.native.js +2 -3
  475. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +4 -6
  476. package/src/components/block-mobile-toolbar/index.native.js +1 -0
  477. package/src/components/block-mover/button.js +2 -3
  478. package/src/components/block-mover/index.native.js +4 -6
  479. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +4 -0
  480. package/src/components/block-parent-selector/index.js +2 -3
  481. package/src/components/block-pattern-setup/index.js +4 -14
  482. package/src/components/block-pattern-setup/setup-toolbar.js +2 -9
  483. package/src/components/block-popover/inbetween.js +12 -7
  484. package/src/components/block-popover/index.js +1 -0
  485. package/src/components/block-preview/auto.js +21 -11
  486. package/src/components/block-selection-clearer/index.js +2 -3
  487. package/src/components/block-settings-menu/block-edit-visually-button.js +52 -0
  488. package/src/components/block-settings-menu/block-mode-toggle.js +4 -8
  489. package/src/components/block-settings-menu/block-settings-dropdown.js +9 -8
  490. package/src/components/block-settings-menu/index.js +15 -11
  491. package/src/components/block-settings-menu-controls/index.js +3 -2
  492. package/src/components/block-styles/index.js +3 -1
  493. package/src/components/block-styles/menu-items.js +2 -5
  494. package/src/components/block-switcher/block-transformations-menu.js +2 -4
  495. package/src/components/block-title/use-block-display-title.js +9 -7
  496. package/src/components/block-toolbar/index.native.js +2 -5
  497. package/src/components/block-toolbar/utils.js +3 -11
  498. package/src/components/block-tools/block-contextual-toolbar.js +2 -5
  499. package/src/components/block-tools/block-selection-button.js +1 -0
  500. package/src/components/block-tools/index.js +2 -3
  501. package/src/components/block-types-list/index.native.js +2 -4
  502. package/src/components/block-variation-transforms/index.js +10 -8
  503. package/src/components/color-palette/test/control.js +2 -1
  504. package/src/components/color-style-selector/index.js +27 -28
  505. package/src/components/colors/test/with-colors.js +14 -14
  506. package/src/components/colors/with-colors.js +8 -12
  507. package/src/components/colors-gradients/dropdown.js +49 -69
  508. package/src/components/colors-gradients/panel-color-gradient-settings.js +30 -76
  509. package/src/components/colors-gradients/style.scss +11 -37
  510. package/src/components/colors-gradients/test/control.js +10 -10
  511. package/src/components/convert-to-group-buttons/toolbar.js +32 -19
  512. package/src/components/copy-handler/README.md +7 -2
  513. package/src/components/copy-handler/index.js +26 -6
  514. package/src/components/default-block-appender/index.js +4 -6
  515. package/src/components/default-block-appender/index.native.js +4 -9
  516. package/src/components/default-style-picker/index.js +20 -21
  517. package/src/components/duotone/components.js +133 -0
  518. package/src/components/duotone/index.js +7 -0
  519. package/src/components/duotone/utils.js +25 -0
  520. package/src/components/duotone-control/index.js +12 -7
  521. package/src/components/duotone-control/style.scss +5 -0
  522. package/src/components/font-sizes/with-font-sizes.js +2 -3
  523. package/src/components/image-editor/aspect-ratio-dropdown.js +2 -6
  524. package/src/components/image-size-control/index.js +4 -7
  525. package/src/components/index.js +4 -0
  526. package/src/components/inner-blocks/use-inner-block-template-sync.js +2 -3
  527. package/src/components/inner-blocks/use-nested-settings-update.js +6 -9
  528. package/src/components/inserter/block-types-tab.native.js +2 -3
  529. package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -3
  530. package/src/components/inserter/hooks/use-insertion-point.js +3 -2
  531. package/src/components/inserter/hooks/use-patterns-state.js +4 -5
  532. package/src/components/inserter/index.js +7 -11
  533. package/src/components/inserter/index.native.js +6 -11
  534. package/src/components/inserter/library.js +2 -5
  535. package/src/components/inserter/menu.js +14 -19
  536. package/src/components/inserter/menu.native.js +8 -6
  537. package/src/components/inserter/no-results.native.js +2 -1
  538. package/src/components/inserter/quick-inserter.js +2 -3
  539. package/src/components/inserter/search-items.js +6 -6
  540. package/src/components/inserter/search-results.native.js +4 -6
  541. package/src/components/inspector-popover-header/README.md +76 -0
  542. package/src/components/inspector-popover-header/index.js +56 -0
  543. package/src/components/inspector-popover-header/style.scss +16 -0
  544. package/src/components/line-height-control/index.js +1 -2
  545. package/src/components/link-control/index.js +4 -4
  546. package/src/components/link-control/search-create-button.js +4 -2
  547. package/src/components/link-control/search-input.js +3 -1
  548. package/src/components/link-control/settings-drawer.js +2 -5
  549. package/src/components/link-control/test/fixtures/index.js +5 -7
  550. package/src/components/link-control/test/index.js +79 -102
  551. package/src/components/link-control/use-search-handler.js +2 -2
  552. package/src/components/list-view/block-contents.js +2 -4
  553. package/src/components/list-view/branch.js +22 -23
  554. package/src/components/list-view/index.js +4 -8
  555. package/src/components/list-view/use-block-selection.js +5 -5
  556. package/src/components/list-view/use-list-view-drop-zone.js +2 -1
  557. package/src/components/list-view/utils.js +1 -6
  558. package/src/components/media-placeholder/index.js +3 -3
  559. package/src/components/media-placeholder/index.native.js +9 -5
  560. package/src/components/media-replace-flow/index.js +78 -55
  561. package/src/components/media-upload/README.md +8 -0
  562. package/src/components/media-upload/index.native.js +6 -2
  563. package/src/components/media-upload/test/index.native.js +31 -6
  564. package/src/components/navigable-toolbar/index.js +1 -2
  565. package/src/components/panel-color-settings/test/index.js +2 -1
  566. package/src/components/plain-text/index.native.js +60 -8
  567. package/src/components/preview-options/index.js +4 -0
  568. package/src/components/provider/use-block-sync.js +5 -2
  569. package/src/components/publish-date-time-picker/README.md +52 -0
  570. package/src/components/publish-date-time-picker/index.js +41 -0
  571. package/src/components/responsive-block-control/README.md +3 -1
  572. package/src/components/responsive-block-control/test/index.js +4 -4
  573. package/src/components/rich-text/embed-handler-picker.native.js +2 -5
  574. package/src/components/rich-text/index.js +9 -4
  575. package/src/components/rich-text/index.native.js +4 -0
  576. package/src/components/rich-text/use-format-types.js +16 -16
  577. package/src/components/rich-text/use-input-rules.js +6 -15
  578. package/src/components/rich-text/use-mark-persistent.js +2 -3
  579. package/src/components/rich-text/use-paste-handler.js +17 -5
  580. package/src/components/skip-to-selected-block/index.js +2 -3
  581. package/src/components/ungroup-button/index.native.js +4 -8
  582. package/src/components/url-input/index.js +21 -20
  583. package/src/components/use-block-display-information/index.js +4 -6
  584. package/src/components/use-block-drop-zone/index.js +2 -3
  585. package/src/components/use-block-drop-zone/index.native.js +2 -4
  586. package/src/components/use-block-drop-zone/test/index.js +22 -23
  587. package/src/components/use-display-block-controls/index.native.js +2 -3
  588. package/src/components/use-no-recursive-renders/test/use-no-recursive-renders.js +2 -3
  589. package/src/components/use-on-block-drop/index.js +2 -5
  590. package/src/components/use-on-block-drop/index.native.js +4 -8
  591. package/src/components/use-setting/index.js +8 -6
  592. package/src/components/writing-flow/test/index.js +22 -4
  593. package/src/components/writing-flow/use-arrow-nav.js +22 -10
  594. package/src/components/writing-flow/use-click-selection.js +2 -5
  595. package/src/components/writing-flow/use-drag-selection.js +6 -9
  596. package/src/components/writing-flow/use-input.js +12 -0
  597. package/src/components/writing-flow/use-multi-selection.js +2 -4
  598. package/src/components/writing-flow/use-select-all.js +2 -5
  599. package/src/components/writing-flow/use-selection-observer.js +4 -6
  600. package/src/components/writing-flow/use-tab-nav.js +2 -5
  601. package/src/elements/index.js +8 -0
  602. package/src/elements/test/index.js +18 -0
  603. package/src/hooks/aria-label.js +67 -0
  604. package/src/hooks/color-panel.js +4 -4
  605. package/src/hooks/color-panel.native.js +2 -2
  606. package/src/hooks/color.js +7 -76
  607. package/src/hooks/color.scss +9 -0
  608. package/src/hooks/dimensions.js +11 -3
  609. package/src/hooks/duotone.js +18 -139
  610. package/src/hooks/font-family.js +4 -2
  611. package/src/hooks/gap.js +2 -3
  612. package/src/hooks/index.js +1 -1
  613. package/src/hooks/layout.js +74 -13
  614. package/src/hooks/test/align.js +2 -1
  615. package/src/hooks/test/generated-class-name.js +2 -5
  616. package/src/hooks/test/utils.js +2 -5
  617. package/src/index.js +1 -1
  618. package/src/layouts/flex.js +13 -5
  619. package/src/store/actions.js +772 -729
  620. package/src/store/reducer.js +219 -183
  621. package/src/store/selectors.js +82 -54
  622. package/src/store/test/actions.js +2 -1
  623. package/src/store/test/reducer.js +145 -10
  624. package/src/store/test/selectors.js +20 -27
  625. package/src/style.scss +1 -0
  626. package/src/utils/pasting.js +3 -3
  627. package/src/utils/selection.js +26 -0
  628. package/src/utils/test/selection.js +39 -0
  629. package/src/utils/transform-styles/transforms/wrap.js +30 -28
  630. package/tsconfig.tsbuildinfo +1 -1
  631. package/build/components/colors/color-panel.js +0 -82
  632. package/build/components/colors/color-panel.js.map +0 -1
  633. package/build/components/colors/color-panel.native.js +0 -11
  634. package/build/components/colors/color-panel.native.js.map +0 -1
  635. package/build-module/components/colors/color-panel.js +0 -70
  636. package/build-module/components/colors/color-panel.js.map +0 -1
  637. package/build-module/components/colors/color-panel.native.js +0 -4
  638. package/build-module/components/colors/color-panel.native.js.map +0 -1
  639. package/src/components/colors/color-panel.js +0 -91
  640. package/src/components/colors/color-panel.native.js +0 -3
@@ -74,10 +74,8 @@ export default function useMultiSelection() {
74
74
 
75
75
  if ( selection.rangeCount && ! selection.isCollapsed ) {
76
76
  const blockNode = selectedRef.current;
77
- const {
78
- startContainer,
79
- endContainer,
80
- } = selection.getRangeAt( 0 );
77
+ const { startContainer, endContainer } =
78
+ selection.getRangeAt( 0 );
81
79
 
82
80
  if (
83
81
  !! blockNode &&
@@ -17,11 +17,8 @@ import { useRefEffect } from '@wordpress/compose';
17
17
  import { store as blockEditorStore } from '../../store';
18
18
 
19
19
  export default function useSelectAll() {
20
- const {
21
- getBlockOrder,
22
- getSelectedBlockClientIds,
23
- getBlockRootClientId,
24
- } = useSelect( blockEditorStore );
20
+ const { getBlockOrder, getSelectedBlockClientIds, getBlockRootClientId } =
21
+ useSelect( blockEditorStore );
25
22
  const { multiSelect } = useDispatch( blockEditorStore );
26
23
  const isMatch = useShortcutEventMatch();
27
24
 
@@ -73,12 +73,10 @@ function setContentEditableWrapper( node, value ) {
73
73
  * Sets a multi-selection based on the native selection across blocks.
74
74
  */
75
75
  export default function useSelectionObserver() {
76
- const { multiSelect, selectBlock, selectionChange } = useDispatch(
77
- blockEditorStore
78
- );
79
- const { getBlockParents, getBlockSelectionStart } = useSelect(
80
- blockEditorStore
81
- );
76
+ const { multiSelect, selectBlock, selectionChange } =
77
+ useDispatch( blockEditorStore );
78
+ const { getBlockParents, getBlockSelectionStart } =
79
+ useSelect( blockEditorStore );
82
80
  return useRefEffect(
83
81
  ( node ) => {
84
82
  const { ownerDocument } = node;
@@ -17,11 +17,8 @@ export default function useTabNav() {
17
17
  const focusCaptureBeforeRef = useRef();
18
18
  const focusCaptureAfterRef = useRef();
19
19
  const lastFocus = useRef();
20
- const {
21
- hasMultiSelection,
22
- getSelectedBlockClientId,
23
- getBlockCount,
24
- } = useSelect( blockEditorStore );
20
+ const { hasMultiSelection, getSelectedBlockClientId, getBlockCount } =
21
+ useSelect( blockEditorStore );
25
22
  const { setNavigationMode } = useDispatch( blockEditorStore );
26
23
  const isNavigationMode = useSelect(
27
24
  ( select ) => select( blockEditorStore ).isNavigationMode(),
@@ -0,0 +1,8 @@
1
+ const ELEMENT_CLASS_NAMES = {
2
+ button: 'wp-element-button',
3
+ caption: 'wp-element-caption',
4
+ };
5
+
6
+ export const __experimentalGetElementClassName = ( element ) => {
7
+ return ELEMENT_CLASS_NAMES[ element ] ? ELEMENT_CLASS_NAMES[ element ] : '';
8
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __experimentalGetElementClassName } from '@wordpress/block-editor';
5
+
6
+ describe( 'element class names', () => {
7
+ it( 'should return the correct class name for button', () => {
8
+ expect( __experimentalGetElementClassName( 'button' ) ).toEqual(
9
+ 'wp-element-button'
10
+ );
11
+ } );
12
+
13
+ it( 'should return an empty string for an unknown element', () => {
14
+ expect(
15
+ __experimentalGetElementClassName( 'unknown-element' )
16
+ ).toEqual( '' );
17
+ } );
18
+ } );
@@ -0,0 +1,67 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { addFilter } from '@wordpress/hooks';
5
+ import { hasBlockSupport } from '@wordpress/blocks';
6
+
7
+ const ARIA_LABEL_SCHEMA = {
8
+ type: 'string',
9
+ source: 'attribute',
10
+ attribute: 'aria-label',
11
+ selector: '*',
12
+ };
13
+
14
+ /**
15
+ * Filters registered block settings, extending attributes with ariaLabel using aria-label
16
+ * of the first node.
17
+ *
18
+ * @param {Object} settings Original block settings.
19
+ *
20
+ * @return {Object} Filtered block settings.
21
+ */
22
+ export function addAttribute( settings ) {
23
+ // Allow blocks to specify their own attribute definition with default values if needed.
24
+ if ( settings?.attributes?.ariaLabel?.type ) {
25
+ return settings;
26
+ }
27
+ if ( hasBlockSupport( settings, 'ariaLabel' ) ) {
28
+ // Gracefully handle if settings.attributes is undefined.
29
+ settings.attributes = {
30
+ ...settings.attributes,
31
+ ariaLabel: ARIA_LABEL_SCHEMA,
32
+ };
33
+ }
34
+
35
+ return settings;
36
+ }
37
+
38
+ /**
39
+ * Override props assigned to save component to inject aria-label, if block
40
+ * supports ariaLabel. This is only applied if the block's save result is an
41
+ * element and not a markup string.
42
+ *
43
+ * @param {Object} extraProps Additional props applied to save element.
44
+ * @param {Object} blockType Block type.
45
+ * @param {Object} attributes Current block attributes.
46
+ *
47
+ * @return {Object} Filtered props applied to save element.
48
+ */
49
+ export function addSaveProps( extraProps, blockType, attributes ) {
50
+ if ( hasBlockSupport( blockType, 'ariaLabel' ) ) {
51
+ extraProps[ 'aria-label' ] =
52
+ attributes.ariaLabel === '' ? null : attributes.ariaLabel;
53
+ }
54
+
55
+ return extraProps;
56
+ }
57
+
58
+ addFilter(
59
+ 'blocks.registerBlockType',
60
+ 'core/ariaLabel/attribute',
61
+ addAttribute
62
+ );
63
+ addFilter(
64
+ 'blocks.getSaveContent.extraProps',
65
+ 'core/ariaLabel/save-props',
66
+ addSaveProps
67
+ );
@@ -43,8 +43,8 @@ export default function ColorPanel( {
43
43
  }
44
44
 
45
45
  let backgroundColorNode = ref.current;
46
- let backgroundColor = getComputedStyle( backgroundColorNode )
47
- .backgroundColor;
46
+ let backgroundColor =
47
+ getComputedStyle( backgroundColorNode ).backgroundColor;
48
48
  while (
49
49
  backgroundColor === 'rgba(0, 0, 0, 0)' &&
50
50
  backgroundColorNode.parentNode &&
@@ -52,8 +52,8 @@ export default function ColorPanel( {
52
52
  backgroundColorNode.parentNode.ELEMENT_NODE
53
53
  ) {
54
54
  backgroundColorNode = backgroundColorNode.parentNode;
55
- backgroundColor = getComputedStyle( backgroundColorNode )
56
- .backgroundColor;
55
+ backgroundColor =
56
+ getComputedStyle( backgroundColorNode ).backgroundColor;
57
57
  }
58
58
 
59
59
  setDetectedBackgroundColor( backgroundColor );
@@ -23,8 +23,8 @@ const ColorPanel = ( { settings } ) => {
23
23
  const { baseGlobalStyles } = useSelect( ( select ) => {
24
24
  const { getSettings } = select( blockEditorStore );
25
25
  return {
26
- baseGlobalStyles: getSettings()
27
- ?.__experimentalGlobalStylesBaseStyles?.color,
26
+ baseGlobalStyles:
27
+ getSettings()?.__experimentalGlobalStylesBaseStyles?.color,
28
28
  };
29
29
  } );
30
30
 
@@ -76,34 +76,6 @@ const hasTextColorSupport = ( blockType ) => {
76
76
  return colorSupport && colorSupport.text !== false;
77
77
  };
78
78
 
79
- /**
80
- * Checks whether a color has been set either with a named preset color in
81
- * a top level block attribute or as a custom value within the style attribute
82
- * object.
83
- *
84
- * @param {string} name Name of the color to check.
85
- * @return {boolean} Whether or not a color has a value.
86
- */
87
- const hasColor = ( name ) => ( props ) => {
88
- if ( name === 'background' ) {
89
- return (
90
- !! props.attributes.backgroundColor ||
91
- !! props.attributes.style?.color?.background ||
92
- !! props.attributes.gradient ||
93
- !! props.attributes.style?.color?.gradient
94
- );
95
- }
96
-
97
- if ( name === 'link' ) {
98
- return !! props.attributes.style?.elements?.link?.color?.text;
99
- }
100
-
101
- return (
102
- !! props.attributes[ `${ name }Color` ] ||
103
- !! props.attributes.style?.color?.[ name ]
104
- );
105
- };
106
-
107
79
  /**
108
80
  * Clears a single color property from a style object.
109
81
  *
@@ -114,20 +86,6 @@ const hasColor = ( name ) => ( props ) => {
114
86
  const clearColorFromStyles = ( path, style ) =>
115
87
  cleanEmptyObject( immutableSet( style, path, undefined ) );
116
88
 
117
- /**
118
- * Resets the block attributes for text color.
119
- *
120
- * @param {Object} props Current block props.
121
- * @param {Object} props.attributes Block attributes.
122
- * @param {Function} props.setAttributes Block's setAttributes prop used to apply reset.
123
- */
124
- const resetTextColor = ( { attributes, setAttributes } ) => {
125
- setAttributes( {
126
- textColor: undefined,
127
- style: clearColorFromStyles( [ 'color', 'text' ], attributes.style ),
128
- } );
129
- };
130
-
131
89
  /**
132
90
  * Clears text color related properties from supplied attributes.
133
91
  *
@@ -139,18 +97,6 @@ const resetAllTextFilter = ( attributes ) => ( {
139
97
  style: clearColorFromStyles( [ 'color', 'text' ], attributes.style ),
140
98
  } );
141
99
 
142
- /**
143
- * Resets the block attributes for link color.
144
- *
145
- * @param {Object} props Current block props.
146
- * @param {Object} props.attributes Block attributes.
147
- * @param {Function} props.setAttributes Block's setAttributes prop used to apply reset.
148
- */
149
- const resetLinkColor = ( { attributes, setAttributes } ) => {
150
- const path = [ 'elements', 'link', 'color', 'text' ];
151
- setAttributes( { style: clearColorFromStyles( path, attributes.style ) } );
152
- };
153
-
154
100
  /**
155
101
  * Clears link color related properties from supplied attributes.
156
102
  *
@@ -184,17 +130,6 @@ const clearBackgroundAndGradient = ( attributes ) => ( {
184
130
  },
185
131
  } );
186
132
 
187
- /**
188
- * Resets the block attributes for both background color and gradient.
189
- *
190
- * @param {Object} props Current block props.
191
- * @param {Object} props.attributes Block attributes.
192
- * @param {Function} props.setAttributes Block's setAttributes prop used to apply reset.
193
- */
194
- const resetBackgroundAndGradient = ( { attributes, setAttributes } ) => {
195
- setAttributes( clearBackgroundAndGradient( attributes ) );
196
- };
197
-
198
133
  /**
199
134
  * Filters registered block settings, extending attributes to include
200
135
  * `backgroundColor` and `textColor` attribute.
@@ -496,12 +431,16 @@ export function ColorEdit( props ) {
496
431
 
497
432
  const newStyle = cleanEmptyObject(
498
433
  immutableSet(
499
- style,
434
+ localAttributes.current?.style,
500
435
  [ 'elements', 'link', 'color', 'text' ],
501
436
  newLinkColorValue
502
437
  )
503
438
  );
504
439
  props.setAttributes( { style: newStyle } );
440
+ localAttributes.current = {
441
+ ...localAttributes.current,
442
+ ...{ style: newStyle },
443
+ };
505
444
  };
506
445
 
507
446
  const enableContrastChecking =
@@ -529,8 +468,6 @@ export function ColorEdit( props ) {
529
468
  style?.color?.text
530
469
  ).color,
531
470
  isShownByDefault: defaultColorControls?.text,
532
- hasValue: () => hasColor( 'text' )( props ),
533
- onDeselect: () => resetTextColor( props ),
534
471
  resetAllFilter: resetAllTextFilter,
535
472
  },
536
473
  ]
@@ -553,10 +490,6 @@ export function ColorEdit( props ) {
553
490
  : undefined,
554
491
  isShownByDefault:
555
492
  defaultColorControls?.background,
556
- hasValue: () =>
557
- hasColor( 'background' )( props ),
558
- onDeselect: () =>
559
- resetBackgroundAndGradient( props ),
560
493
  resetAllFilter: clearBackgroundAndGradient,
561
494
  },
562
495
  ]
@@ -570,11 +503,9 @@ export function ColorEdit( props ) {
570
503
  allSolids,
571
504
  style?.elements?.link?.color?.text
572
505
  ),
573
- clearable: !! style?.elements?.link?.color
574
- ?.text,
506
+ clearable:
507
+ !! style?.elements?.link?.color?.text,
575
508
  isShownByDefault: defaultColorControls?.link,
576
- hasValue: () => hasColor( 'link' )( props ),
577
- onDeselect: () => resetLinkColor( props ),
578
509
  resetAllFilter: resetAllLinkFilter,
579
510
  },
580
511
  ]
@@ -20,4 +20,13 @@
20
20
  row-gap: 0;
21
21
  }
22
22
  }
23
+
24
+ /**
25
+ * After converting PanelColorGradientSettings to render as a ToolsPanel
26
+ * we need to remove the top margin when wrapping inner content due to
27
+ * rendering via SlotFills.
28
+ */
29
+ .block-editor-tools-panel-color-gradient-settings__item.first {
30
+ margin-top: 0;
31
+ }
23
32
  }
@@ -153,7 +153,7 @@ const useIsDimensionsDisabled = ( props = {} ) => {
153
153
  };
154
154
 
155
155
  /**
156
- * Custom hook to retrieve which padding/margin is supported
156
+ * Custom hook to retrieve which padding/margin/blockGap is supported
157
157
  * e.g. top, right, bottom or left.
158
158
  *
159
159
  * Sides are opted into by default. It is only if a specific side is set to
@@ -162,7 +162,7 @@ const useIsDimensionsDisabled = ( props = {} ) => {
162
162
  * @param {string} blockName Block name.
163
163
  * @param {string} feature The feature custom sides relate to e.g. padding or margins.
164
164
  *
165
- * @return {Object} Sides supporting custom margin.
165
+ * @return {?string[]} Strings representing the custom sides available.
166
166
  */
167
167
  export function useCustomSides( blockName, feature ) {
168
168
  const support = getBlockSupport( blockName, SPACING_SUPPORT_KEY );
@@ -172,7 +172,15 @@ export function useCustomSides( blockName, feature ) {
172
172
  return;
173
173
  }
174
174
 
175
- return support[ feature ];
175
+ // Return if the setting is an array of sides (e.g. `[ 'top', 'bottom' ]`).
176
+ if ( Array.isArray( support[ feature ] ) ) {
177
+ return support[ feature ];
178
+ }
179
+
180
+ // Finally, attempt to return `.sides` if the setting is an object.
181
+ if ( support[ feature ]?.sides ) {
182
+ return support[ feature ].sides;
183
+ }
176
184
  }
177
185
 
178
186
  /**
@@ -2,14 +2,13 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { colord, extend } from 'colord';
5
+ import { extend } from 'colord';
6
6
  import namesPlugin from 'colord/plugins/names';
7
7
 
8
8
  /**
9
9
  * WordPress dependencies
10
10
  */
11
11
  import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
12
- import { SVG } from '@wordpress/components';
13
12
  import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
14
13
  import { addFilter } from '@wordpress/hooks';
15
14
  import { useMemo, useContext, createPortal } from '@wordpress/element';
@@ -23,145 +22,34 @@ import {
23
22
  useSetting,
24
23
  } from '../components';
25
24
  import BlockList from '../components/block-list';
25
+ import {
26
+ __unstableDuotoneFilter as DuotoneFilter,
27
+ __unstableDuotoneStylesheet as DuotoneStylesheet,
28
+ __unstableDuotoneUnsetStylesheet as DuotoneUnsetStylesheet,
29
+ } from '../components/duotone';
26
30
 
27
31
  const EMPTY_ARRAY = [];
28
32
 
29
33
  extend( [ namesPlugin ] );
30
34
 
31
- /**
32
- * Convert a list of colors to an object of R, G, and B values.
33
- *
34
- * @param {string[]} colors Array of RBG color strings.
35
- *
36
- * @return {Object} R, G, and B values.
37
- */
38
- export function getValuesFromColors( colors = [] ) {
39
- const values = { r: [], g: [], b: [], a: [] };
40
-
41
- colors.forEach( ( color ) => {
42
- const rgbColor = colord( color ).toRgb();
43
- values.r.push( rgbColor.r / 255 );
44
- values.g.push( rgbColor.g / 255 );
45
- values.b.push( rgbColor.b / 255 );
46
- values.a.push( rgbColor.a );
47
- } );
48
-
49
- return values;
50
- }
51
-
52
- /**
53
- * Values for the SVG `feComponentTransfer`.
54
- *
55
- * @typedef Values {Object}
56
- * @property {number[]} r Red values.
57
- * @property {number[]} g Green values.
58
- * @property {number[]} b Blue values.
59
- * @property {number[]} a Alpha values.
60
- */
61
-
62
- /**
63
- * Stylesheet for rendering the duotone filter.
64
- *
65
- * @param {Object} props Duotone props.
66
- * @param {string} props.selector Selector to apply the filter to.
67
- * @param {string} props.id Unique id for this duotone filter.
68
- *
69
- * @return {WPElement} Duotone element.
70
- */
71
- function DuotoneStylesheet( { selector, id } ) {
72
- const css = `
73
- ${ selector } {
74
- filter: url( #${ id } );
75
- }
76
- `;
77
- return <style>{ css }</style>;
78
- }
79
-
80
- /**
81
- * SVG for rendering the duotone filter.
82
- *
83
- * @param {Object} props Duotone props.
84
- * @param {string} props.id Unique id for this duotone filter.
85
- * @param {Values} props.values R, G, B, and A values to filter with.
86
- *
87
- * @return {WPElement} Duotone element.
88
- */
89
- function DuotoneFilter( { id, values } ) {
90
- return (
91
- <SVG
92
- xmlnsXlink="http://www.w3.org/1999/xlink"
93
- viewBox="0 0 0 0"
94
- width="0"
95
- height="0"
96
- focusable="false"
97
- role="none"
98
- style={ {
99
- visibility: 'hidden',
100
- position: 'absolute',
101
- left: '-9999px',
102
- overflow: 'hidden',
103
- } }
104
- >
105
- <defs>
106
- <filter id={ id }>
107
- <feColorMatrix
108
- // Use sRGB instead of linearRGB so transparency looks correct.
109
- colorInterpolationFilters="sRGB"
110
- type="matrix"
111
- // Use perceptual brightness to convert to grayscale.
112
- values="
113
- .299 .587 .114 0 0
114
- .299 .587 .114 0 0
115
- .299 .587 .114 0 0
116
- .299 .587 .114 0 0
117
- "
118
- />
119
- <feComponentTransfer
120
- // Use sRGB instead of linearRGB to be consistent with how CSS gradients work.
121
- colorInterpolationFilters="sRGB"
122
- >
123
- <feFuncR
124
- type="table"
125
- tableValues={ values.r.join( ' ' ) }
126
- />
127
- <feFuncG
128
- type="table"
129
- tableValues={ values.g.join( ' ' ) }
130
- />
131
- <feFuncB
132
- type="table"
133
- tableValues={ values.b.join( ' ' ) }
134
- />
135
- <feFuncA
136
- type="table"
137
- tableValues={ values.a.join( ' ' ) }
138
- />
139
- </feComponentTransfer>
140
- <feComposite
141
- // Re-mask the image with the original transparency since the feColorMatrix above loses that information.
142
- in2="SourceGraphic"
143
- operator="in"
144
- />
145
- </filter>
146
- </defs>
147
- </SVG>
148
- );
149
- }
150
-
151
35
  /**
152
36
  * SVG and stylesheet needed for rendering the duotone filter.
153
37
  *
154
- * @param {Object} props Duotone props.
38
+ * @param {Object} props Duotone props.
155
39
  * @param {string} props.selector Selector to apply the filter to.
156
- * @param {string} props.id Unique id for this duotone filter.
157
- * @param {Values} props.values R, G, B, and A values to filter with.
40
+ * @param {string} props.id Unique id for this duotone filter.
41
+ * @param {string[]|"unset"} props.colors Array of RGB color strings ordered from dark to light.
158
42
  *
159
43
  * @return {WPElement} Duotone element.
160
44
  */
161
- function InlineDuotone( { selector, id, values } ) {
45
+ function InlineDuotone( { selector, id, colors } ) {
46
+ if ( colors === 'unset' ) {
47
+ return <DuotoneUnsetStylesheet selector={ selector } />;
48
+ }
49
+
162
50
  return (
163
51
  <>
164
- <DuotoneFilter id={ id } values={ values } />
52
+ <DuotoneFilter id={ id } colors={ colors } />
165
53
  <DuotoneStylesheet id={ id } selector={ selector } />
166
54
  </>
167
55
  );
@@ -324,9 +212,9 @@ const withDuotoneStyles = createHigherOrderComponent(
324
212
  props.name,
325
213
  'color.__experimentalDuotone'
326
214
  );
327
- const values = props?.attributes?.style?.color?.duotone;
215
+ const colors = props?.attributes?.style?.color?.duotone;
328
216
 
329
- if ( ! duotoneSupport || ! values ) {
217
+ if ( ! duotoneSupport || ! colors ) {
330
218
  return <BlockListBlock { ...props } />;
331
219
  }
332
220
 
@@ -351,7 +239,7 @@ const withDuotoneStyles = createHigherOrderComponent(
351
239
  <InlineDuotone
352
240
  selector={ selectorsGroup }
353
241
  id={ id }
354
- values={ getValuesFromColors( values ) }
242
+ colors={ colors }
355
243
  />,
356
244
  element
357
245
  ) }
@@ -362,15 +250,6 @@ const withDuotoneStyles = createHigherOrderComponent(
362
250
  'withDuotoneStyles'
363
251
  );
364
252
 
365
- export function PresetDuotoneFilter( { preset } ) {
366
- return (
367
- <DuotoneFilter
368
- id={ `wp-duotone-${ preset.slug }` }
369
- values={ getValuesFromColors( preset.colors ) }
370
- />
371
- );
372
- }
373
-
374
253
  addFilter(
375
254
  'blocks.registerBlockType',
376
255
  'core/editor/duotone/add-attributes',
@@ -111,8 +111,10 @@ export function FontFamilyEdit( {
111
111
  } ) {
112
112
  const fontFamilies = useSetting( 'typography.fontFamilies' );
113
113
 
114
- const value = find( fontFamilies, ( { slug } ) => fontFamily === slug )
115
- ?.fontFamily;
114
+ const value = find(
115
+ fontFamilies,
116
+ ( { slug } ) => fontFamily === slug
117
+ )?.fontFamily;
116
118
 
117
119
  function onChange( newValue ) {
118
120
  const predefinedFontFamily = find(
package/src/hooks/gap.js CHANGED
@@ -67,9 +67,8 @@ export function getGapBoxControlValueFromStyle( blockGapValue ) {
67
67
  * @return {string|null} The concatenated gap value (row and column).
68
68
  */
69
69
  export function getGapCSSValue( blockGapValue, defaultValue = '0' ) {
70
- const blockGapBoxControlValue = getGapBoxControlValueFromStyle(
71
- blockGapValue
72
- );
70
+ const blockGapBoxControlValue =
71
+ getGapBoxControlValueFromStyle( blockGapValue );
73
72
  if ( ! blockGapBoxControlValue ) {
74
73
  return null;
75
74
  }
@@ -5,6 +5,7 @@ import './compat';
5
5
  import './align';
6
6
  import './lock';
7
7
  import './anchor';
8
+ import './aria-label';
8
9
  import './custom-class-name';
9
10
  import './generated-class-name';
10
11
  import './style';
@@ -20,4 +21,3 @@ export { getBorderClassesAndStyles, useBorderProps } from './use-border-props';
20
21
  export { getColorClassesAndStyles, useColorProps } from './use-color-props';
21
22
  export { getSpacingClassesAndStyles } from './use-spacing-props';
22
23
  export { useCachedTruthy } from './use-cached-truthy';
23
- export { PresetDuotoneFilter } from './duotone';