@wordpress/block-editor 12.15.0 → 12.16.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 (500) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +9 -4
  3. package/build/components/block-canvas/index.js +22 -6
  4. package/build/components/block-canvas/index.js.map +1 -1
  5. package/build/components/block-card/index.js +1 -1
  6. package/build/components/block-card/index.js.map +1 -1
  7. package/build/components/block-controls/hook.js +3 -23
  8. package/build/components/block-controls/hook.js.map +1 -1
  9. package/build/components/block-edit/context.js +5 -1
  10. package/build/components/block-edit/context.js.map +1 -1
  11. package/build/components/block-edit/index.js +18 -9
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-info-slot-fill/index.js +3 -4
  14. package/build/components/block-info-slot-fill/index.js.map +1 -1
  15. package/build/components/block-list/block.js +28 -9
  16. package/build/components/block-list/block.js.map +1 -1
  17. package/build/components/block-list/block.native.js +14 -5
  18. package/build/components/block-list/block.native.js.map +1 -1
  19. package/build/components/block-list/use-block-props/index.js +61 -18
  20. package/build/components/block-list/use-block-props/index.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  22. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  23. package/build/components/block-list/use-block-props/use-is-hovered.js +4 -14
  24. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  26. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  27. package/build/components/block-patterns-list/index.js +1 -1
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-removal-warning-modal/index.js +2 -9
  30. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  31. package/build/components/block-rename/modal.js +3 -0
  32. package/build/components/block-rename/modal.js.map +1 -1
  33. package/build/components/block-settings/container.native.js +6 -4
  34. package/build/components/block-settings/container.native.js.map +1 -1
  35. package/build/components/block-styles/index.js +1 -1
  36. package/build/components/block-styles/index.js.map +1 -1
  37. package/build/components/block-styles/index.native.js +3 -2
  38. package/build/components/block-styles/index.native.js.map +1 -1
  39. package/build/components/block-toolbar/index.js +89 -27
  40. package/build/components/block-toolbar/index.js.map +1 -1
  41. package/build/components/block-tools/block-toolbar-breadcrumb.js +49 -0
  42. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  43. package/build/components/block-tools/block-toolbar-popover.js +86 -0
  44. package/build/components/block-tools/block-toolbar-popover.js.map +1 -0
  45. package/build/components/block-tools/index.js +27 -24
  46. package/build/components/block-tools/index.js.map +1 -1
  47. package/build/components/block-types-list/index.native.js +4 -3
  48. package/build/components/block-types-list/index.native.js.map +1 -1
  49. package/build/components/block-variation-picker/index.native.js +2 -1
  50. package/build/components/block-variation-picker/index.native.js.map +1 -1
  51. package/build/components/colors-gradients/control.js +28 -17
  52. package/build/components/colors-gradients/control.js.map +1 -1
  53. package/build/components/duotone-control/index.js +1 -4
  54. package/build/components/duotone-control/index.js.map +1 -1
  55. package/build/components/global-styles/color-panel.js +22 -20
  56. package/build/components/global-styles/color-panel.js.map +1 -1
  57. package/build/components/global-styles/filters-panel.js +9 -3
  58. package/build/components/global-styles/filters-panel.js.map +1 -1
  59. package/build/components/global-styles/typography-panel.js +20 -31
  60. package/build/components/global-styles/typography-panel.js.map +1 -1
  61. package/build/components/image-link-destinations/index.native.js +118 -0
  62. package/build/components/image-link-destinations/index.native.js.map +1 -0
  63. package/build/components/index.native.js +8 -0
  64. package/build/components/index.native.js.map +1 -1
  65. package/build/components/inserter/media-tab/media-panel.js +2 -2
  66. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  67. package/build/components/inserter/menu.js +14 -7
  68. package/build/components/inserter/menu.js.map +1 -1
  69. package/build/components/inserter/preview-panel.js +2 -2
  70. package/build/components/inserter/preview-panel.js.map +1 -1
  71. package/build/components/inserter-button/index.native.js +98 -0
  72. package/build/components/inserter-button/index.native.js.map +1 -0
  73. package/build/components/inserter-button/sparkles.js +23 -0
  74. package/build/components/inserter-button/sparkles.js.map +1 -0
  75. package/build/components/inserter-draggable-blocks/index.js +8 -4
  76. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  77. package/build/components/inspector-controls/fill.js +3 -3
  78. package/build/components/inspector-controls/fill.js.map +1 -1
  79. package/build/components/inspector-controls/fill.native.js +3 -3
  80. package/build/components/inspector-controls/fill.native.js.map +1 -1
  81. package/build/components/navigable-toolbar/index.js +2 -2
  82. package/build/components/navigable-toolbar/index.js.map +1 -1
  83. package/build/components/preview-options/index.js +6 -62
  84. package/build/components/preview-options/index.js.map +1 -1
  85. package/build/components/rich-text/content.js +26 -23
  86. package/build/components/rich-text/content.js.map +1 -1
  87. package/build/components/rich-text/get-rich-text-values.js +2 -1
  88. package/build/components/rich-text/get-rich-text-values.js.map +1 -1
  89. package/build/components/rich-text/index.js +2 -30
  90. package/build/components/rich-text/index.js.map +1 -1
  91. package/build/components/rich-text/index.native.js +9 -16
  92. package/build/components/rich-text/index.native.js.map +1 -1
  93. package/build/components/rich-text/native/get-format-colors.native.js +22 -24
  94. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  95. package/build/components/rich-text/native/index.native.js +7 -34
  96. package/build/components/rich-text/native/index.native.js.map +1 -1
  97. package/build/components/rich-text/use-input-rules.js +5 -1
  98. package/build/components/rich-text/use-input-rules.js.map +1 -1
  99. package/build/components/rich-text/with-deprecations.js +50 -0
  100. package/build/components/rich-text/with-deprecations.js.map +1 -0
  101. package/build/components/use-block-drop-zone/index.js +70 -8
  102. package/build/components/use-block-drop-zone/index.js.map +1 -1
  103. package/build/components/use-on-block-drop/index.js +1 -1
  104. package/build/components/use-on-block-drop/index.js.map +1 -1
  105. package/build/components/use-resize-canvas/index.js +4 -1
  106. package/build/components/use-resize-canvas/index.js.map +1 -1
  107. package/build/components/use-settings/index.js +14 -0
  108. package/build/components/use-settings/index.js.map +1 -1
  109. package/build/hooks/align.js +20 -68
  110. package/build/hooks/align.js.map +1 -1
  111. package/build/hooks/align.native.js +11 -1
  112. package/build/hooks/align.native.js.map +1 -1
  113. package/build/hooks/anchor.js +13 -29
  114. package/build/hooks/anchor.js.map +1 -1
  115. package/build/hooks/background.js +28 -31
  116. package/build/hooks/background.js.map +1 -1
  117. package/build/hooks/block-hooks.js +24 -32
  118. package/build/hooks/block-hooks.js.map +1 -1
  119. package/build/hooks/block-renaming.js +18 -22
  120. package/build/hooks/block-renaming.js.map +1 -1
  121. package/build/hooks/border.js +58 -80
  122. package/build/hooks/border.js.map +1 -1
  123. package/build/hooks/color.js +76 -89
  124. package/build/hooks/color.js.map +1 -1
  125. package/build/hooks/content-lock-ui.js +29 -29
  126. package/build/hooks/content-lock-ui.js.map +1 -1
  127. package/build/hooks/custom-class-name.js +12 -29
  128. package/build/hooks/custom-class-name.js.map +1 -1
  129. package/build/hooks/custom-fields.js +24 -38
  130. package/build/hooks/custom-fields.js.map +1 -1
  131. package/build/hooks/dimensions.js +21 -17
  132. package/build/hooks/dimensions.js.map +1 -1
  133. package/build/hooks/duotone.js +31 -61
  134. package/build/hooks/duotone.js.map +1 -1
  135. package/build/hooks/font-family.js +16 -25
  136. package/build/hooks/font-family.js.map +1 -1
  137. package/build/hooks/font-size.js +51 -119
  138. package/build/hooks/font-size.js.map +1 -1
  139. package/build/hooks/index.js +25 -14
  140. package/build/hooks/index.js.map +1 -1
  141. package/build/hooks/index.native.js +10 -3
  142. package/build/hooks/index.native.js.map +1 -1
  143. package/build/hooks/layout-child.js +68 -0
  144. package/build/hooks/layout-child.js.map +1 -0
  145. package/build/hooks/layout.js +16 -101
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/padding.js +2 -2
  148. package/build/hooks/padding.js.map +1 -1
  149. package/build/hooks/position.js +40 -62
  150. package/build/hooks/position.js.map +1 -1
  151. package/build/hooks/style.js +51 -88
  152. package/build/hooks/style.js.map +1 -1
  153. package/build/hooks/typography.js +34 -14
  154. package/build/hooks/typography.js.map +1 -1
  155. package/build/hooks/utils.js +154 -7
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/private-apis.js +0 -2
  158. package/build/private-apis.js.map +1 -1
  159. package/build/store/private-actions.js +8 -0
  160. package/build/store/private-actions.js.map +1 -1
  161. package/build/store/private-selectors.js +34 -0
  162. package/build/store/private-selectors.js.map +1 -1
  163. package/build/store/reducer.js +8 -0
  164. package/build/store/reducer.js.map +1 -1
  165. package/build/store/selectors.js +10 -60
  166. package/build/store/selectors.js.map +1 -1
  167. package/build/store/utils.js +66 -0
  168. package/build/store/utils.js.map +1 -0
  169. package/build/utils/object.js +21 -61
  170. package/build/utils/object.js.map +1 -1
  171. package/build/utils/selection.js +9 -1
  172. package/build/utils/selection.js.map +1 -1
  173. package/build-module/components/block-canvas/index.js +23 -7
  174. package/build-module/components/block-canvas/index.js.map +1 -1
  175. package/build-module/components/block-card/index.js +1 -1
  176. package/build-module/components/block-card/index.js.map +1 -1
  177. package/build-module/components/block-controls/hook.js +4 -24
  178. package/build-module/components/block-controls/hook.js.map +1 -1
  179. package/build-module/components/block-edit/context.js +2 -0
  180. package/build-module/components/block-edit/context.js.map +1 -1
  181. package/build-module/components/block-edit/index.js +19 -10
  182. package/build-module/components/block-edit/index.js.map +1 -1
  183. package/build-module/components/block-info-slot-fill/index.js +3 -3
  184. package/build-module/components/block-info-slot-fill/index.js.map +1 -1
  185. package/build-module/components/block-list/block.js +29 -10
  186. package/build-module/components/block-list/block.js.map +1 -1
  187. package/build-module/components/block-list/block.native.js +14 -5
  188. package/build-module/components/block-list/block.native.js.map +1 -1
  189. package/build-module/components/block-list/use-block-props/index.js +62 -19
  190. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  191. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  192. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  193. package/build-module/components/block-list/use-block-props/use-is-hovered.js +4 -14
  194. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  195. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  196. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  197. package/build-module/components/block-patterns-list/index.js +1 -1
  198. package/build-module/components/block-patterns-list/index.js.map +1 -1
  199. package/build-module/components/block-removal-warning-modal/index.js +3 -10
  200. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  201. package/build-module/components/block-rename/modal.js +3 -0
  202. package/build-module/components/block-rename/modal.js.map +1 -1
  203. package/build-module/components/block-settings/container.native.js +4 -2
  204. package/build-module/components/block-settings/container.native.js.map +1 -1
  205. package/build-module/components/block-styles/index.js +1 -1
  206. package/build-module/components/block-styles/index.js.map +1 -1
  207. package/build-module/components/block-styles/index.native.js +3 -2
  208. package/build-module/components/block-styles/index.native.js.map +1 -1
  209. package/build-module/components/block-toolbar/index.js +88 -25
  210. package/build-module/components/block-toolbar/index.js.map +1 -1
  211. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +41 -0
  212. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  213. package/build-module/components/block-tools/block-toolbar-popover.js +76 -0
  214. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -0
  215. package/build-module/components/block-tools/index.js +27 -24
  216. package/build-module/components/block-tools/index.js.map +1 -1
  217. package/build-module/components/block-types-list/index.native.js +2 -1
  218. package/build-module/components/block-types-list/index.native.js.map +1 -1
  219. package/build-module/components/block-variation-picker/index.native.js +2 -1
  220. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  221. package/build-module/components/colors-gradients/control.js +29 -18
  222. package/build-module/components/colors-gradients/control.js.map +1 -1
  223. package/build-module/components/duotone-control/index.js +1 -4
  224. package/build-module/components/duotone-control/index.js.map +1 -1
  225. package/build-module/components/global-styles/color-panel.js +23 -21
  226. package/build-module/components/global-styles/color-panel.js.map +1 -1
  227. package/build-module/components/global-styles/filters-panel.js +10 -4
  228. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  229. package/build-module/components/global-styles/typography-panel.js +20 -31
  230. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  231. package/build-module/components/image-link-destinations/index.native.js +109 -0
  232. package/build-module/components/image-link-destinations/index.native.js.map +1 -0
  233. package/build-module/components/index.native.js +1 -0
  234. package/build-module/components/index.native.js.map +1 -1
  235. package/build-module/components/inserter/media-tab/media-panel.js +1 -1
  236. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  237. package/build-module/components/inserter/menu.js +14 -7
  238. package/build-module/components/inserter/menu.js.map +1 -1
  239. package/build-module/components/inserter/preview-panel.js +2 -2
  240. package/build-module/components/inserter/preview-panel.js.map +1 -1
  241. package/build-module/components/inserter-button/index.native.js +89 -0
  242. package/build-module/components/inserter-button/index.native.js.map +1 -0
  243. package/build-module/components/inserter-button/sparkles.js +15 -0
  244. package/build-module/components/inserter-button/sparkles.js.map +1 -0
  245. package/build-module/components/inserter-draggable-blocks/index.js +9 -5
  246. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  247. package/build-module/components/inspector-controls/fill.js +3 -3
  248. package/build-module/components/inspector-controls/fill.js.map +1 -1
  249. package/build-module/components/inspector-controls/fill.native.js +3 -3
  250. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  251. package/build-module/components/navigable-toolbar/index.js +2 -2
  252. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  253. package/build-module/components/preview-options/index.js +6 -62
  254. package/build-module/components/preview-options/index.js.map +1 -1
  255. package/build-module/components/rich-text/content.js +25 -21
  256. package/build-module/components/rich-text/content.js.map +1 -1
  257. package/build-module/components/rich-text/get-rich-text-values.js +2 -1
  258. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
  259. package/build-module/components/rich-text/index.js +4 -32
  260. package/build-module/components/rich-text/index.js.map +1 -1
  261. package/build-module/components/rich-text/index.native.js +10 -18
  262. package/build-module/components/rich-text/index.native.js.map +1 -1
  263. package/build-module/components/rich-text/native/get-format-colors.native.js +22 -24
  264. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  265. package/build-module/components/rich-text/native/index.native.js +7 -34
  266. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  267. package/build-module/components/rich-text/use-input-rules.js +5 -1
  268. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  269. package/build-module/components/rich-text/with-deprecations.js +42 -0
  270. package/build-module/components/rich-text/with-deprecations.js.map +1 -0
  271. package/build-module/components/use-block-drop-zone/index.js +69 -8
  272. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  273. package/build-module/components/use-on-block-drop/index.js +1 -1
  274. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  275. package/build-module/components/use-resize-canvas/index.js +4 -1
  276. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  277. package/build-module/components/use-settings/index.js +13 -1
  278. package/build-module/components/use-settings/index.js.map +1 -1
  279. package/build-module/hooks/align.js +19 -66
  280. package/build-module/hooks/align.js.map +1 -1
  281. package/build-module/hooks/align.native.js +1 -0
  282. package/build-module/hooks/align.native.js.map +1 -1
  283. package/build-module/hooks/anchor.js +11 -26
  284. package/build-module/hooks/anchor.js.map +1 -1
  285. package/build-module/hooks/background.js +26 -28
  286. package/build-module/hooks/background.js.map +1 -1
  287. package/build-module/hooks/block-hooks.js +22 -30
  288. package/build-module/hooks/block-hooks.js.map +1 -1
  289. package/build-module/hooks/block-renaming.js +17 -21
  290. package/build-module/hooks/block-renaming.js.map +1 -1
  291. package/build-module/hooks/border.js +57 -78
  292. package/build-module/hooks/border.js.map +1 -1
  293. package/build-module/hooks/color.js +74 -86
  294. package/build-module/hooks/color.js.map +1 -1
  295. package/build-module/hooks/content-lock-ui.js +27 -27
  296. package/build-module/hooks/content-lock-ui.js.map +1 -1
  297. package/build-module/hooks/custom-class-name.js +11 -27
  298. package/build-module/hooks/custom-class-name.js.map +1 -1
  299. package/build-module/hooks/custom-fields.js +20 -39
  300. package/build-module/hooks/custom-fields.js.map +1 -1
  301. package/build-module/hooks/dimensions.js +21 -16
  302. package/build-module/hooks/dimensions.js.map +1 -1
  303. package/build-module/hooks/duotone.js +30 -61
  304. package/build-module/hooks/duotone.js.map +1 -1
  305. package/build-module/hooks/font-family.js +14 -23
  306. package/build-module/hooks/font-family.js.map +1 -1
  307. package/build-module/hooks/font-size.js +49 -119
  308. package/build-module/hooks/font-size.js.map +1 -1
  309. package/build-module/hooks/index.js +18 -14
  310. package/build-module/hooks/index.js.map +1 -1
  311. package/build-module/hooks/index.native.js +5 -3
  312. package/build-module/hooks/index.native.js.map +1 -1
  313. package/build-module/hooks/layout-child.js +60 -0
  314. package/build-module/hooks/layout-child.js.map +1 -0
  315. package/build-module/hooks/layout.js +13 -98
  316. package/build-module/hooks/layout.js.map +1 -1
  317. package/build-module/hooks/padding.js +2 -2
  318. package/build-module/hooks/padding.js.map +1 -1
  319. package/build-module/hooks/position.js +38 -59
  320. package/build-module/hooks/position.js.map +1 -1
  321. package/build-module/hooks/style.js +51 -84
  322. package/build-module/hooks/style.js.map +1 -1
  323. package/build-module/hooks/typography.js +33 -12
  324. package/build-module/hooks/typography.js.map +1 -1
  325. package/build-module/hooks/utils.js +149 -6
  326. package/build-module/hooks/utils.js.map +1 -1
  327. package/build-module/private-apis.js +0 -2
  328. package/build-module/private-apis.js.map +1 -1
  329. package/build-module/store/private-actions.js +7 -0
  330. package/build-module/store/private-actions.js.map +1 -1
  331. package/build-module/store/private-selectors.js +33 -1
  332. package/build-module/store/private-selectors.js.map +1 -1
  333. package/build-module/store/reducer.js +8 -0
  334. package/build-module/store/reducer.js.map +1 -1
  335. package/build-module/store/selectors.js +3 -53
  336. package/build-module/store/selectors.js.map +1 -1
  337. package/build-module/store/utils.js +56 -0
  338. package/build-module/store/utils.js.map +1 -0
  339. package/build-module/utils/object.js +21 -60
  340. package/build-module/utils/object.js.map +1 -1
  341. package/build-module/utils/selection.js +9 -1
  342. package/build-module/utils/selection.js.map +1 -1
  343. package/build-style/style-rtl.css +113 -293
  344. package/build-style/style.css +113 -293
  345. package/package.json +31 -31
  346. package/src/components/block-canvas/index.js +31 -17
  347. package/src/components/block-caption/README.md +2 -2
  348. package/src/components/block-card/index.js +5 -3
  349. package/src/components/block-card/style.scss +7 -3
  350. package/src/components/block-controls/hook.js +8 -30
  351. package/src/components/block-controls/test/index.js +3 -3
  352. package/src/components/block-edit/context.js +3 -0
  353. package/src/components/block-edit/index.js +36 -10
  354. package/src/components/block-info-slot-fill/index.js +6 -3
  355. package/src/components/block-inspector/style.scss +0 -4
  356. package/src/components/block-list/block.js +39 -5
  357. package/src/components/block-list/block.native.js +18 -4
  358. package/src/components/block-list/use-block-props/index.js +74 -21
  359. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -34
  360. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -13
  361. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +1 -5
  362. package/src/components/block-patterns-list/index.js +1 -1
  363. package/src/components/block-removal-warning-modal/index.js +7 -14
  364. package/src/components/block-rename/modal.js +7 -1
  365. package/src/components/block-settings/container.native.js +3 -5
  366. package/src/components/block-styles/index.js +1 -1
  367. package/src/components/block-styles/index.native.js +4 -2
  368. package/src/components/block-styles/style.scss +0 -11
  369. package/src/components/block-switcher/test/__snapshots__/index.js.snap +3 -1
  370. package/src/components/block-toolbar/index.js +180 -95
  371. package/src/components/block-toolbar/style.scss +50 -66
  372. package/src/components/block-tools/block-toolbar-breadcrumb.js +46 -0
  373. package/src/components/block-tools/block-toolbar-popover.js +90 -0
  374. package/src/components/block-tools/index.js +42 -29
  375. package/src/components/block-tools/style.scss +60 -172
  376. package/src/components/block-types-list/index.native.js +2 -1
  377. package/src/components/block-variation-picker/index.native.js +1 -1
  378. package/src/components/colors-gradients/control.js +49 -30
  379. package/src/components/colors-gradients/style.scss +0 -7
  380. package/src/components/duotone-control/index.js +2 -5
  381. package/src/components/duotone-control/style.scss +1 -6
  382. package/src/components/global-styles/color-panel.js +34 -25
  383. package/src/components/global-styles/filters-panel.js +8 -4
  384. package/src/components/global-styles/typography-panel.js +23 -43
  385. package/src/components/image-link-destinations/index.native.js +152 -0
  386. package/src/components/image-link-destinations/style.native.scss +16 -0
  387. package/src/components/index.native.js +1 -0
  388. package/src/components/inner-blocks/README.md +13 -2
  389. package/src/components/inserter/media-tab/media-panel.js +1 -1
  390. package/src/components/inserter/menu.js +16 -8
  391. package/src/components/inserter/preview-panel.js +2 -2
  392. package/src/components/inserter/style.scss +15 -17
  393. package/src/components/inserter-button/README.md +62 -0
  394. package/src/components/inserter-button/index.native.js +116 -0
  395. package/src/components/inserter-button/sparkles.js +15 -0
  396. package/src/components/inserter-button/style.native.scss +72 -0
  397. package/src/components/inserter-draggable-blocks/index.js +18 -5
  398. package/src/components/inspector-controls/fill.js +6 -3
  399. package/src/components/inspector-controls/fill.native.js +6 -3
  400. package/src/components/link-control/style.scss +1 -1
  401. package/src/components/link-control/test/index.js +1 -1
  402. package/src/components/navigable-toolbar/README.md +2 -0
  403. package/src/components/navigable-toolbar/index.js +2 -2
  404. package/src/components/preview-options/index.js +6 -86
  405. package/src/components/rich-text/content.js +27 -20
  406. package/src/components/rich-text/get-rich-text-values.js +6 -1
  407. package/src/components/rich-text/index.js +5 -46
  408. package/src/components/rich-text/index.native.js +8 -25
  409. package/src/components/rich-text/native/get-format-colors.native.js +33 -40
  410. package/src/components/rich-text/native/index.native.js +7 -48
  411. package/src/components/rich-text/use-input-rules.js +6 -1
  412. package/src/components/rich-text/with-deprecations.js +51 -0
  413. package/src/components/use-block-drop-zone/index.js +114 -14
  414. package/src/components/use-on-block-drop/index.js +2 -1
  415. package/src/components/use-resize-canvas/README.md +3 -3
  416. package/src/components/use-resize-canvas/index.js +4 -1
  417. package/src/components/use-settings/index.js +15 -1
  418. package/src/hooks/align.js +15 -76
  419. package/src/hooks/align.native.js +1 -0
  420. package/src/hooks/anchor.js +13 -33
  421. package/src/hooks/background.js +28 -23
  422. package/src/hooks/block-hooks.js +22 -51
  423. package/src/hooks/block-renaming.js +23 -37
  424. package/src/hooks/border.js +67 -118
  425. package/src/hooks/color.js +100 -132
  426. package/src/hooks/content-lock-ui.js +110 -122
  427. package/src/hooks/custom-class-name.js +8 -40
  428. package/src/hooks/custom-fields.js +20 -47
  429. package/src/hooks/dimensions.js +20 -16
  430. package/src/hooks/duotone.js +70 -127
  431. package/src/hooks/font-family.js +10 -29
  432. package/src/hooks/font-size.js +66 -162
  433. package/src/hooks/index.js +42 -14
  434. package/src/hooks/index.native.js +6 -3
  435. package/src/hooks/layout-child.js +53 -0
  436. package/src/hooks/layout.js +13 -102
  437. package/src/hooks/padding.js +2 -2
  438. package/src/hooks/position.js +50 -90
  439. package/src/hooks/style.js +117 -187
  440. package/src/hooks/test/align.js +1 -178
  441. package/src/hooks/typography.js +20 -16
  442. package/src/hooks/utils.js +187 -6
  443. package/src/private-apis.js +0 -2
  444. package/src/store/private-actions.js +8 -0
  445. package/src/store/private-selectors.js +45 -0
  446. package/src/store/reducer.js +8 -0
  447. package/src/store/selectors.js +5 -69
  448. package/src/store/utils.js +74 -0
  449. package/src/style.scss +0 -2
  450. package/src/utils/object.js +18 -69
  451. package/src/utils/selection.js +9 -2
  452. package/build/components/block-list/use-block-props/use-block-class-names.js +0 -67
  453. package/build/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  454. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +0 -46
  455. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  456. package/build/components/block-list/use-block-props/use-block-default-class-name.js +0 -37
  457. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  458. package/build/components/block-tools/back-compat.js +0 -45
  459. package/build/components/block-tools/back-compat.js.map +0 -1
  460. package/build/components/block-tools/block-contextual-toolbar.js +0 -91
  461. package/build/components/block-tools/block-contextual-toolbar.js.map +0 -1
  462. package/build/components/block-tools/selected-block-tools.js +0 -113
  463. package/build/components/block-tools/selected-block-tools.js.map +0 -1
  464. package/build/components/inserter/hooks/use-debounced-input.js +0 -22
  465. package/build/components/inserter/hooks/use-debounced-input.js.map +0 -1
  466. package/build/components/use-display-block-controls/index.js +0 -39
  467. package/build/components/use-display-block-controls/index.js.map +0 -1
  468. package/build/components/use-display-block-controls/index.native.js +0 -39
  469. package/build/components/use-display-block-controls/index.native.js.map +0 -1
  470. package/build-module/components/block-list/use-block-props/use-block-class-names.js +0 -60
  471. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  472. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +0 -40
  473. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  474. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +0 -31
  475. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  476. package/build-module/components/block-tools/back-compat.js +0 -35
  477. package/build-module/components/block-tools/back-compat.js.map +0 -1
  478. package/build-module/components/block-tools/block-contextual-toolbar.js +0 -83
  479. package/build-module/components/block-tools/block-contextual-toolbar.js.map +0 -1
  480. package/build-module/components/block-tools/selected-block-tools.js +0 -105
  481. package/build-module/components/block-tools/selected-block-tools.js.map +0 -1
  482. package/build-module/components/inserter/hooks/use-debounced-input.js +0 -15
  483. package/build-module/components/inserter/hooks/use-debounced-input.js.map +0 -1
  484. package/build-module/components/use-display-block-controls/index.js +0 -32
  485. package/build-module/components/use-display-block-controls/index.js.map +0 -1
  486. package/build-module/components/use-display-block-controls/index.native.js +0 -32
  487. package/build-module/components/use-display-block-controls/index.native.js.map +0 -1
  488. package/src/components/block-list/use-block-props/use-block-class-names.js +0 -66
  489. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +0 -44
  490. package/src/components/block-list/use-block-props/use-block-default-class-name.js +0 -35
  491. package/src/components/block-parent-selector/style.scss +0 -11
  492. package/src/components/block-tools/back-compat.js +0 -35
  493. package/src/components/block-tools/block-contextual-toolbar.js +0 -100
  494. package/src/components/block-tools/selected-block-tools.js +0 -127
  495. package/src/components/inserter/hooks/use-debounced-input.js +0 -18
  496. package/src/components/preview-options/README.md +0 -94
  497. package/src/components/preview-options/style.scss +0 -64
  498. package/src/components/use-display-block-controls/index.js +0 -36
  499. package/src/components/use-display-block-controls/index.native.js +0 -37
  500. package/src/hooks/test/color.js +0 -112
@@ -1,35 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useSelect } from '@wordpress/data';
5
- import { getBlockType, getBlockDefaultClassName } from '@wordpress/blocks';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import { store as blockEditorStore } from '../../../store';
11
-
12
- /**
13
- * Returns the default class name if the block is a light block and it supports
14
- * `className`.
15
- *
16
- * @param {string} clientId The block client ID.
17
- *
18
- * @return {string} The class name, e.g. `wp-block-paragraph`.
19
- */
20
- export function useBlockDefaultClassName( clientId ) {
21
- return useSelect(
22
- ( select ) => {
23
- const name = select( blockEditorStore ).getBlockName( clientId );
24
- const blockType = getBlockType( name );
25
- const hasLightBlockWrapper = blockType?.apiVersion > 1;
26
-
27
- if ( ! hasLightBlockWrapper ) {
28
- return;
29
- }
30
-
31
- return getBlockDefaultClassName( name );
32
- },
33
- [ clientId ]
34
- );
35
- }
@@ -1,11 +0,0 @@
1
- .block-editor-block-parent-selector {
2
- background: $white;
3
- border-radius: $radius-block-ui;
4
-
5
- .block-editor-block-parent-selector__button {
6
- width: $grid-unit-60;
7
- height: $grid-unit-60;
8
- border: $border-width solid $gray-900;
9
- border-radius: $radius-block-ui;
10
- }
11
- }
@@ -1,35 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useContext } from '@wordpress/element';
5
- import { Disabled } from '@wordpress/components';
6
- import deprecated from '@wordpress/deprecated';
7
-
8
- /**
9
- * Internal dependencies
10
- */
11
- import InsertionPoint, { InsertionPointOpenRef } from './insertion-point';
12
- import BlockPopover from './selected-block-tools';
13
-
14
- export default function BlockToolsBackCompat( { children } ) {
15
- const openRef = useContext( InsertionPointOpenRef );
16
- const isDisabled = useContext( Disabled.Context );
17
-
18
- // If context is set, `BlockTools` is a parent component.
19
- if ( openRef || isDisabled ) {
20
- return children;
21
- }
22
-
23
- deprecated( 'wp.components.Popover.Slot name="block-toolbar"', {
24
- alternative: 'wp.blockEditor.BlockTools',
25
- since: '5.8',
26
- version: '6.3',
27
- } );
28
-
29
- return (
30
- <InsertionPoint __unstablePopoverSlot="block-toolbar">
31
- <BlockPopover __unstablePopoverSlot="block-toolbar" />
32
- { children }
33
- </InsertionPoint>
34
- );
35
- }
@@ -1,100 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { __ } from '@wordpress/i18n';
10
- import { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';
11
- import { useSelect } from '@wordpress/data';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import NavigableToolbar from '../navigable-toolbar';
17
- import BlockToolbar from '../block-toolbar';
18
- import { store as blockEditorStore } from '../../store';
19
- import { useHasAnyBlockControls } from '../block-controls/use-has-block-controls';
20
-
21
- export default function BlockContextualToolbar( {
22
- focusOnMount,
23
- isFixed,
24
- ...props
25
- } ) {
26
- const {
27
- blockType,
28
- blockEditingMode,
29
- hasParents,
30
- showParentSelector,
31
- selectedBlockClientId,
32
- } = useSelect( ( select ) => {
33
- const {
34
- getBlockName,
35
- getBlockParents,
36
- getSelectedBlockClientIds,
37
- getBlockEditingMode,
38
- } = select( blockEditorStore );
39
- const { getBlockType } = select( blocksStore );
40
- const selectedBlockClientIds = getSelectedBlockClientIds();
41
- const _selectedBlockClientId = selectedBlockClientIds[ 0 ];
42
- const parents = getBlockParents( _selectedBlockClientId );
43
- const firstParentClientId = parents[ parents.length - 1 ];
44
- const parentBlockName = getBlockName( firstParentClientId );
45
- const parentBlockType = getBlockType( parentBlockName );
46
-
47
- return {
48
- selectedBlockClientId: _selectedBlockClientId,
49
- blockType:
50
- _selectedBlockClientId &&
51
- getBlockType( getBlockName( _selectedBlockClientId ) ),
52
- blockEditingMode: getBlockEditingMode( _selectedBlockClientId ),
53
- hasParents: parents.length,
54
- showParentSelector:
55
- parentBlockType &&
56
- getBlockEditingMode( firstParentClientId ) === 'default' &&
57
- hasBlockSupport(
58
- parentBlockType,
59
- '__experimentalParentSelector',
60
- true
61
- ) &&
62
- selectedBlockClientIds.length <= 1 &&
63
- getBlockEditingMode( _selectedBlockClientId ) === 'default',
64
- };
65
- }, [] );
66
-
67
- const isToolbarEnabled =
68
- blockType &&
69
- hasBlockSupport( blockType, '__experimentalToolbar', true );
70
- const hasAnyBlockControls = useHasAnyBlockControls();
71
- if (
72
- ! isToolbarEnabled ||
73
- ( blockEditingMode !== 'default' && ! hasAnyBlockControls )
74
- ) {
75
- return null;
76
- }
77
-
78
- // Shifts the toolbar to make room for the parent block selector.
79
- const classes = classnames( 'block-editor-block-contextual-toolbar', {
80
- 'has-parent': hasParents && showParentSelector,
81
- 'is-fixed': isFixed,
82
- } );
83
-
84
- return (
85
- <NavigableToolbar
86
- focusOnMount={ focusOnMount }
87
- focusEditorOnEscape
88
- className={ classes }
89
- /* translators: accessibility text for the block toolbar */
90
- aria-label={ __( 'Block tools' ) }
91
- variant={ isFixed ? 'unstyled' : undefined }
92
- // Resets the index whenever the active block changes so
93
- // this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169
94
- key={ selectedBlockClientId }
95
- { ...props }
96
- >
97
- <BlockToolbar hideDragHandle={ isFixed } />
98
- </NavigableToolbar>
99
- );
100
- }
@@ -1,127 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { useRef, useEffect } from '@wordpress/element';
10
- import { useDispatch, useSelect } from '@wordpress/data';
11
- import { useShortcut } from '@wordpress/keyboard-shortcuts';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import BlockSelectionButton from './block-selection-button';
17
- import BlockContextualToolbar from './block-contextual-toolbar';
18
- import { store as blockEditorStore } from '../../store';
19
- import BlockPopover from '../block-popover';
20
- import useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';
21
- import useSelectedBlockToolProps from './use-selected-block-tool-props';
22
- import { useShouldContextualToolbarShow } from '../../utils/use-should-contextual-toolbar-show';
23
-
24
- export default function SelectedBlockTools( {
25
- clientId,
26
- showEmptyBlockSideInserter,
27
- __unstableContentRef,
28
- } ) {
29
- const {
30
- capturingClientId,
31
- isInsertionPointVisible,
32
- lastClientId,
33
- rootClientId,
34
- } = useSelectedBlockToolProps( clientId );
35
-
36
- const { shouldShowBreadcrumb } = useSelect( ( select ) => {
37
- const { hasMultiSelection, __unstableGetEditorMode } =
38
- select( blockEditorStore );
39
-
40
- const editorMode = __unstableGetEditorMode();
41
-
42
- return {
43
- shouldShowBreadcrumb:
44
- ! hasMultiSelection() &&
45
- ( editorMode === 'navigation' || editorMode === 'zoom-out' ),
46
- };
47
- }, [] );
48
-
49
- const isToolbarForced = useRef( false );
50
- const { shouldShowContextualToolbar, canFocusHiddenToolbar } =
51
- useShouldContextualToolbarShow();
52
-
53
- const { stopTyping } = useDispatch( blockEditorStore );
54
-
55
- useShortcut(
56
- 'core/block-editor/focus-toolbar',
57
- () => {
58
- isToolbarForced.current = true;
59
- stopTyping( true );
60
- },
61
- {
62
- isDisabled: ! canFocusHiddenToolbar,
63
- }
64
- );
65
-
66
- useEffect( () => {
67
- isToolbarForced.current = false;
68
- } );
69
-
70
- // Stores the active toolbar item index so the block toolbar can return focus
71
- // to it when re-mounting.
72
- const initialToolbarItemIndexRef = useRef();
73
-
74
- useEffect( () => {
75
- // Resets the index whenever the active block changes so this is not
76
- // persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169
77
- initialToolbarItemIndexRef.current = undefined;
78
- }, [ clientId ] );
79
-
80
- const popoverProps = useBlockToolbarPopoverProps( {
81
- contentElement: __unstableContentRef?.current,
82
- clientId,
83
- } );
84
-
85
- if ( showEmptyBlockSideInserter ) {
86
- return null;
87
- }
88
-
89
- if ( shouldShowBreadcrumb || shouldShowContextualToolbar ) {
90
- return (
91
- <BlockPopover
92
- clientId={ capturingClientId || clientId }
93
- bottomClientId={ lastClientId }
94
- className={ classnames(
95
- 'block-editor-block-list__block-popover',
96
- {
97
- 'is-insertion-point-visible': isInsertionPointVisible,
98
- }
99
- ) }
100
- resize={ false }
101
- { ...popoverProps }
102
- >
103
- { shouldShowContextualToolbar && (
104
- <BlockContextualToolbar
105
- // If the toolbar is being shown because of being forced
106
- // it should focus the toolbar right after the mount.
107
- focusOnMount={ isToolbarForced.current }
108
- __experimentalInitialIndex={
109
- initialToolbarItemIndexRef.current
110
- }
111
- __experimentalOnIndexChange={ ( index ) => {
112
- initialToolbarItemIndexRef.current = index;
113
- } }
114
- />
115
- ) }
116
- { shouldShowBreadcrumb && (
117
- <BlockSelectionButton
118
- clientId={ clientId }
119
- rootClientId={ rootClientId }
120
- />
121
- ) }
122
- </BlockPopover>
123
- );
124
- }
125
-
126
- return null;
127
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useEffect, useState } from '@wordpress/element';
5
- import { useDebounce } from '@wordpress/compose';
6
-
7
- export default function useDebouncedInput( defaultValue = '' ) {
8
- const [ input, setInput ] = useState( defaultValue );
9
- const [ debouncedInput, setDebouncedState ] = useState( defaultValue );
10
-
11
- const setDebouncedInput = useDebounce( setDebouncedState, 250 );
12
-
13
- useEffect( () => {
14
- setDebouncedInput( input );
15
- }, [ input ] );
16
-
17
- return [ input, setInput, debouncedInput ];
18
- }
@@ -1,94 +0,0 @@
1
- # Preview Options
2
-
3
- The `PreviewOptions` component displays the list of different preview options available in the editor.
4
-
5
- It returns a [`DropdownMenu`](https://github.com/WordPress/gutenberg/tree/HEAD/packages/components/src/dropdown-menu) component with these different options. The options currently available in the editor are Desktop, Mobile, Tablet and "Preview in new tab".
6
-
7
- ![Preview options dropdown menu](https://make.wordpress.org/core/files/2020/09/preview-options-dropdown-menu.png)
8
-
9
- ## Table of contents
10
-
11
- 1. [Development guidelines](#development-guidelines)
12
- 2. [Related components](#related-components)
13
-
14
- ## Development guidelines
15
-
16
- ### Usage
17
-
18
- Renders the previews options of the editor in a dropdown menu.
19
-
20
- ```jsx
21
- import { Icon, MenuGroup } from '@wordpress/components';
22
- import { PostPreviewButton } from '@wordpress/editor';
23
- import { __experimentalPreviewOptions as PreviewOptions } from '@wordpress/block-editor';
24
-
25
- const MyPreviewOptions = () => (
26
- <PreviewOptions
27
- isEnabled={ true }
28
- className="edit-post-post-preview-dropdown"
29
- deviceType={ deviceType }
30
- setDeviceType={ setPreviewDeviceType }
31
- > { ( { onClose } ) => (
32
- <MenuGroup>
33
- <div className="edit-post-header-preview__grouping-external">
34
- <PostPreviewButton
35
- className="edit-post-header-preview__button-external"
36
- role="menuitem"
37
- forceIsAutosaveable={ hasActiveMetaboxes }
38
- textContent={
39
- <>
40
- { __( 'Preview in new tab' ) }
41
- <Icon icon={ external } />
42
- </>
43
- }
44
- onPreview={ onClose }
45
- />
46
- </div>
47
- </MenuGroup>
48
- ) }
49
- </PreviewOptions>
50
- );
51
- ```
52
-
53
- ### Props
54
-
55
- #### className
56
-
57
- The CSS classes added to the component.
58
-
59
- - Type: `String`
60
- - Required: no
61
-
62
- #### isEnabled
63
-
64
- Wheter or not the preview options are enabled for the current post.
65
- And example of when the preview options are not enabled is when the current post is not savable.
66
-
67
- - Type: `boolean`
68
- - Required: no
69
- - Default: true
70
-
71
- #### deviceType
72
-
73
- The device type in the preview options. It can be either Desktop or Tablet or Mobile among others.
74
-
75
- - Type: `String`
76
- - Required: yes
77
-
78
- #### setDeviceType
79
-
80
- Used to set the device type that will be used to display the preview inside the editor.
81
-
82
- - Type: `func`
83
- - Required: yes
84
-
85
- #### children
86
-
87
- A function that returns nodes to be rendered within the dropdown.
88
-
89
- - Type: `Function`
90
- - Required: No
91
-
92
- ## Related components
93
-
94
- Block Editor components are components that can be used to compose the UI of your block editor. Thus, they can only be used under a [`BlockEditorProvider`](https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/provider/README.md) in the components tree.
@@ -1,64 +0,0 @@
1
- .block-editor-post-preview__dropdown {
2
- padding: 0;
3
- }
4
-
5
- .block-editor-post-preview__button-resize.block-editor-post-preview__button-resize {
6
- padding-left: $button-size-small + $grid-unit-10 + $grid-unit-10;
7
-
8
- &.has-icon {
9
- padding-left: $grid-unit-10;
10
- }
11
- }
12
-
13
- .block-editor-post-preview__dropdown-content {
14
- &.edit-post-post-preview-dropdown {
15
- .components-menu-group {
16
- &:first-child {
17
- padding-bottom: $grid-unit-10;
18
- }
19
- &:last-child {
20
- margin-bottom: 0;
21
- }
22
- }
23
- }
24
-
25
- .components-menu-group + .components-menu-group {
26
- padding: $grid-unit-10;
27
- }
28
- }
29
-
30
- .edit-post-header__settings,
31
- .edit-site-header-edit-mode__actions {
32
- @include break-small () {
33
- .editor-post-preview {
34
- display: none;
35
- }
36
- }
37
- }
38
-
39
- // Reduced UI.
40
- .edit-post-header.has-reduced-ui {
41
- @include break-small() {
42
- // Apply transition to first two buttons.
43
- .edit-post-header__settings .editor-post-save-draft,
44
- .edit-post-header__settings .editor-post-saved-state,
45
- .edit-post-header__settings .block-editor-post-preview__button-toggle {
46
- transition: opacity 0.1s linear;
47
- @include reduce-motion("transition");
48
- }
49
-
50
- // Zero out opacity unless hovered.
51
- &:not(:hover) {
52
- .edit-post-header__settings .editor-post-save-draft,
53
- .edit-post-header__settings .editor-post-saved-state,
54
- .edit-post-header__settings .block-editor-post-preview__button-toggle {
55
- opacity: 0;
56
- }
57
-
58
- // ... or opened.
59
- .edit-post-header__settings .block-editor-post-preview__button-toggle.is-opened {
60
- opacity: 1;
61
- }
62
- }
63
- }
64
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useSelect } from '@wordpress/data';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import { useBlockEditContext } from '../block-edit/context';
10
- import { store as blockEditorStore } from '../../store';
11
-
12
- export default function useDisplayBlockControls() {
13
- const { isSelected, clientId, name } = useBlockEditContext();
14
- return useSelect(
15
- ( select ) => {
16
- if ( isSelected ) {
17
- return true;
18
- }
19
-
20
- const {
21
- getBlockName,
22
- isFirstMultiSelectedBlock,
23
- getMultiSelectedBlockClientIds,
24
- } = select( blockEditorStore );
25
-
26
- if ( isFirstMultiSelectedBlock( clientId ) ) {
27
- return getMultiSelectedBlockClientIds().every(
28
- ( id ) => getBlockName( id ) === name
29
- );
30
- }
31
-
32
- return false;
33
- },
34
- [ clientId, isSelected, name ]
35
- );
36
- }
@@ -1,37 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useSelect } from '@wordpress/data';
5
- import { hasBlockSupport } from '@wordpress/blocks';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import { useBlockEditContext } from '../block-edit/context';
11
- import { store as blockEditorStore } from '../../store';
12
-
13
- export default function useDisplayBlockControls() {
14
- const { isSelected, clientId, name } = useBlockEditContext();
15
- return useSelect(
16
- ( select ) => {
17
- const { getBlockName, getBlockRootClientId } =
18
- select( blockEditorStore );
19
-
20
- const parentId = getBlockRootClientId( clientId );
21
- const parentBlockName = getBlockName( parentId );
22
-
23
- const hideControls = hasBlockSupport(
24
- parentBlockName,
25
- '__experimentalHideChildBlockControls',
26
- false
27
- );
28
-
29
- if ( ! hideControls && isSelected ) {
30
- return true;
31
- }
32
-
33
- return false;
34
- },
35
- [ clientId, isSelected, name ]
36
- );
37
- }
@@ -1,112 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { render } from '@testing-library/react';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { registerBlockType, unregisterBlockType } from '@wordpress/blocks';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import BlockEditorProvider from '../../components/provider';
15
- import { withColorPaletteStyles } from '../color';
16
-
17
- describe( 'withColorPaletteStyles', () => {
18
- const settings = {
19
- __experimentalFeatures: {
20
- color: {
21
- palette: {
22
- default: [
23
- {
24
- name: 'Pale pink',
25
- slug: 'pale-pink',
26
- color: '#f78da7',
27
- },
28
- {
29
- name: 'Vivid green cyan',
30
- slug: 'vivid-green-cyan',
31
- color: '#00d084',
32
- },
33
- ],
34
- },
35
- },
36
- },
37
- };
38
-
39
- const EnhancedComponent = withColorPaletteStyles(
40
- ( { getStyleObj, wrapperProps } ) => (
41
- <div>{ getStyleObj( wrapperProps.style ) }</div>
42
- )
43
- );
44
-
45
- beforeAll( () => {
46
- registerBlockType( 'core/test-block', {
47
- save: () => undefined,
48
- edit: () => undefined,
49
- category: 'text',
50
- title: 'test block',
51
- supports: {
52
- color: {
53
- text: true,
54
- background: true,
55
- },
56
- },
57
- } );
58
- } );
59
-
60
- afterAll( () => {
61
- unregisterBlockType( 'core/test-block' );
62
- } );
63
-
64
- it( 'should add color styles from attributes', () => {
65
- const getStyleObj = jest.fn();
66
-
67
- render(
68
- <BlockEditorProvider settings={ settings } value={ [] }>
69
- <EnhancedComponent
70
- attributes={ {
71
- backgroundColor: 'vivid-green-cyan',
72
- textColor: 'pale-pink',
73
- } }
74
- name="core/test-block"
75
- getStyleObj={ getStyleObj }
76
- />
77
- </BlockEditorProvider>
78
- );
79
-
80
- expect( getStyleObj ).toHaveBeenLastCalledWith( {
81
- color: '#f78da7',
82
- backgroundColor: '#00d084',
83
- } );
84
- } );
85
-
86
- it( 'should not add undefined style values', () => {
87
- // This test ensures that undefined `color` and `backgroundColor` styles
88
- // are not added to the styles object. An undefined `backgroundColor`
89
- // style causes a React warning when gradients are used, as the gradient
90
- // style currently uses the `background` shorthand syntax.
91
- // See: https://github.com/WordPress/gutenberg/issues/36899.
92
- const getStyleObj = jest.fn();
93
-
94
- render(
95
- <BlockEditorProvider settings={ settings } value={ [] }>
96
- <EnhancedComponent
97
- attributes={ {
98
- backgroundColor: undefined,
99
- textColor: undefined,
100
- } }
101
- name="core/test-block"
102
- getStyleObj={ getStyleObj }
103
- />
104
- </BlockEditorProvider>
105
- );
106
- // Check explictly for the object used in the call, because
107
- // `toHaveBeenCalledWith` does not check for empty keys.
108
- expect(
109
- getStyleObj.mock.calls[ getStyleObj.mock.calls.length - 1 ][ 0 ]
110
- ).toStrictEqual( {} );
111
- } );
112
- } );