@wordpress/block-editor 11.2.0 → 11.3.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 (660) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +28 -4
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/autocomplete/index.js +2 -7
  6. package/build/components/autocomplete/index.js.map +1 -1
  7. package/build/components/block-alignment-matrix-control/index.js +2 -2
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-card/index.js +2 -4
  10. package/build/components/block-card/index.js.map +1 -1
  11. package/build/components/block-edit/index.js +8 -0
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-inspector/index.js +15 -14
  14. package/build/components/block-inspector/index.js.map +1 -1
  15. package/build/components/block-list/use-in-between-inserter.js +5 -0
  16. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  17. package/build/components/block-lock/modal.js +0 -1
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-mover/mover-description.js +2 -2
  20. package/build/components/block-mover/mover-description.js.map +1 -1
  21. package/build/components/block-navigation/dropdown.js +3 -1
  22. package/build/components/block-navigation/dropdown.js.map +1 -1
  23. package/build/components/block-pattern-setup/index.js +1 -1
  24. package/build/components/block-pattern-setup/index.js.map +1 -1
  25. package/build/components/block-pattern-setup/use-patterns-setup.js +2 -2
  26. package/build/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  27. package/build/components/block-patterns-list/index.js +31 -3
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-preview/auto.js +9 -11
  30. package/build/components/block-preview/auto.js.map +1 -1
  31. package/build/components/block-preview/index.js +32 -8
  32. package/build/components/block-preview/index.js.map +1 -1
  33. package/build/components/block-selection-clearer/index.js +1 -1
  34. package/build/components/block-selection-clearer/index.js.map +1 -1
  35. package/build/components/block-settings/container.native.js +7 -33
  36. package/build/components/block-settings/container.native.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -6
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-settings-menu-controls/index.js +2 -8
  40. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  41. package/build/components/block-switcher/utils.js +1 -1
  42. package/build/components/block-switcher/utils.js.map +1 -1
  43. package/build/components/block-tools/selected-block-popover.js +55 -47
  44. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  45. package/build/components/block-vertical-alignment-control/icons.js +15 -1
  46. package/build/components/block-vertical-alignment-control/icons.js.map +1 -1
  47. package/build/components/block-vertical-alignment-control/ui.js +9 -4
  48. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  49. package/build/components/color-style-selector/index.js +3 -1
  50. package/build/components/color-style-selector/index.js.map +1 -1
  51. package/build/components/date-format-picker/index.js +3 -4
  52. package/build/components/date-format-picker/index.js.map +1 -1
  53. package/build/components/font-family/index.js +1 -7
  54. package/build/components/font-family/index.js.map +1 -1
  55. package/build/components/font-sizes/fluid-utils.js +1 -1
  56. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  57. package/build/components/font-sizes/utils.js +1 -1
  58. package/build/components/font-sizes/utils.js.map +1 -1
  59. package/build/components/global-styles/context.js +22 -0
  60. package/build/components/global-styles/context.js.map +1 -0
  61. package/build/components/global-styles/hooks.js +142 -0
  62. package/build/components/global-styles/hooks.js.map +1 -0
  63. package/build/components/global-styles/index.js +42 -0
  64. package/build/components/global-styles/index.js.map +1 -0
  65. package/build/components/global-styles/typography-utils.js +92 -0
  66. package/build/components/global-styles/typography-utils.js.map +1 -0
  67. package/build/components/global-styles/use-global-styles-output.js +974 -0
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -0
  69. package/build/components/global-styles/utils.js +340 -0
  70. package/build/components/global-styles/utils.js.map +1 -0
  71. package/build/components/height-control/index.js +13 -1
  72. package/build/components/height-control/index.js.map +1 -1
  73. package/build/components/image-editor/constants.js +1 -1
  74. package/build/components/image-editor/constants.js.map +1 -1
  75. package/build/components/image-editor/context.js +1 -2
  76. package/build/components/image-editor/context.js.map +1 -1
  77. package/build/components/image-editor/cropper.js +3 -1
  78. package/build/components/image-editor/cropper.js.map +1 -1
  79. package/build/components/image-editor/index.js +13 -9
  80. package/build/components/image-editor/index.js.map +1 -1
  81. package/build/components/image-editor/use-transform-image.js +11 -35
  82. package/build/components/image-editor/use-transform-image.js.map +1 -1
  83. package/build/components/image-size-control/index.js +1 -7
  84. package/build/components/image-size-control/index.js.map +1 -1
  85. package/build/components/index.js +8 -24
  86. package/build/components/index.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +22 -32
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/index.native.js +8 -23
  90. package/build/components/inner-blocks/index.native.js.map +1 -1
  91. package/build/components/inner-blocks/use-block-context.js +53 -0
  92. package/build/components/inner-blocks/use-block-context.js.map +1 -0
  93. package/build/components/inserter/block-patterns-explorer/explorer.js +0 -1
  94. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  95. package/build/components/inserter/block-patterns-tab.js +7 -1
  96. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  97. package/build/components/inserter/block-types-tab.js +2 -2
  98. package/build/components/inserter/block-types-tab.js.map +1 -1
  99. package/build/components/inserter/hooks/use-patterns-state.js +1 -7
  100. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  101. package/build/components/inserter/index.js +5 -4
  102. package/build/components/inserter/index.js.map +1 -1
  103. package/build/components/inserter/media-tab/hooks.js +142 -56
  104. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  105. package/build/components/inserter/media-tab/media-list.js +74 -21
  106. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  107. package/build/components/inserter/media-tab/media-panel.js +11 -13
  108. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  109. package/build/components/inserter/media-tab/media-tab.js +6 -3
  110. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  111. package/build/components/inserter/media-tab/utils.js +26 -15
  112. package/build/components/inserter/media-tab/utils.js.map +1 -1
  113. package/build/components/inserter/menu.js +1 -0
  114. package/build/components/inserter/menu.js.map +1 -1
  115. package/build/components/inserter/preview-panel.js +5 -3
  116. package/build/components/inserter/preview-panel.js.map +1 -1
  117. package/build/components/inserter/search-results.js +2 -7
  118. package/build/components/inserter/search-results.js.map +1 -1
  119. package/build/components/inserter-list-item/index.js +1 -9
  120. package/build/components/inserter-list-item/index.js.map +1 -1
  121. package/build/components/inspector-controls/fill.js +15 -2
  122. package/build/components/inspector-controls/fill.js.map +1 -1
  123. package/build/components/inspector-controls/fill.native.js +14 -1
  124. package/build/components/inspector-controls/fill.native.js.map +1 -1
  125. package/build/components/inspector-controls/groups.js +4 -0
  126. package/build/components/inspector-controls/groups.js.map +1 -1
  127. package/build/components/inspector-controls/index.js +2 -2
  128. package/build/components/inspector-controls/index.js.map +1 -1
  129. package/build/components/inspector-controls/slot.js +14 -1
  130. package/build/components/inspector-controls/slot.js.map +1 -1
  131. package/build/components/inspector-controls/slot.native.js +14 -1
  132. package/build/components/inspector-controls/slot.native.js.map +1 -1
  133. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  134. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  135. package/build/components/inspector-controls-tabs/index.js +2 -2
  136. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  137. package/build/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  138. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/styles-tab.js +6 -4
  140. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  141. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  142. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  143. package/build/components/justify-content-control/ui.js +8 -1
  144. package/build/components/justify-content-control/ui.js.map +1 -1
  145. package/build/components/link-control/index.js +45 -17
  146. package/build/components/link-control/index.js.map +1 -1
  147. package/build/components/list-view/block.js +1 -1
  148. package/build/components/list-view/block.js.map +1 -1
  149. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  150. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  151. package/build/components/media-upload/index.native.js +4 -1
  152. package/build/components/media-upload/index.native.js.map +1 -1
  153. package/build/components/off-canvas-editor/appender.js +50 -3
  154. package/build/components/off-canvas-editor/appender.js.map +1 -1
  155. package/build/components/off-canvas-editor/block-select-button.js +10 -4
  156. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  157. package/build/components/off-canvas-editor/block.js +6 -27
  158. package/build/components/off-canvas-editor/block.js.map +1 -1
  159. package/build/components/off-canvas-editor/branch.js +25 -10
  160. package/build/components/off-canvas-editor/branch.js.map +1 -1
  161. package/build/components/off-canvas-editor/index.js +11 -16
  162. package/build/components/off-canvas-editor/index.js.map +1 -1
  163. package/build/components/off-canvas-editor/link-ui.js +2 -2
  164. package/build/components/off-canvas-editor/link-ui.js.map +1 -1
  165. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  166. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  167. package/build/components/provider/index.js +21 -9
  168. package/build/components/provider/index.js.map +1 -1
  169. package/build/components/provider/index.native.js +5 -6
  170. package/build/components/provider/index.native.js.map +1 -1
  171. package/build/components/rich-text/use-before-input-rules.js +11 -3
  172. package/build/components/rich-text/use-before-input-rules.js.map +1 -1
  173. package/build/components/rich-text/utils.js +1 -1
  174. package/build/components/rich-text/utils.js.map +1 -1
  175. package/build/components/spacing-sizes-control/utils.js +2 -8
  176. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  177. package/build/components/tool-selector/index.js +3 -1
  178. package/build/components/tool-selector/index.js.map +1 -1
  179. package/build/components/url-popover/image-url-input-ui.js +7 -8
  180. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  181. package/build/components/use-block-display-information/index.js +1 -1
  182. package/build/components/use-block-display-information/index.js.map +1 -1
  183. package/build/experiments.js +45 -0
  184. package/build/experiments.js.map +1 -0
  185. package/build/experiments.native.js +40 -0
  186. package/build/experiments.native.js.map +1 -0
  187. package/build/hooks/anchor.js +2 -1
  188. package/build/hooks/anchor.js.map +1 -1
  189. package/build/hooks/border.js +1 -1
  190. package/build/hooks/border.js.map +1 -1
  191. package/build/hooks/child-layout.js +5 -1
  192. package/build/hooks/child-layout.js.map +1 -1
  193. package/build/hooks/color-panel.js +1 -1
  194. package/build/hooks/color-panel.js.map +1 -1
  195. package/build/hooks/color.js +3 -3
  196. package/build/hooks/color.js.map +1 -1
  197. package/build/hooks/custom-class-name.js +2 -1
  198. package/build/hooks/custom-class-name.js.map +1 -1
  199. package/build/hooks/dimensions.js +7 -5
  200. package/build/hooks/dimensions.js.map +1 -1
  201. package/build/hooks/margin.js +1 -0
  202. package/build/hooks/margin.js.map +1 -1
  203. package/build/hooks/padding.js +1 -0
  204. package/build/hooks/padding.js.map +1 -1
  205. package/build/hooks/position.js +34 -15
  206. package/build/hooks/position.js.map +1 -1
  207. package/build/hooks/typography.js +1 -1
  208. package/build/hooks/typography.js.map +1 -1
  209. package/build/hooks/use-color-props.js +3 -3
  210. package/build/hooks/use-color-props.js.map +1 -1
  211. package/build/hooks/utils.js +69 -3
  212. package/build/hooks/utils.js.map +1 -1
  213. package/build/index.js +10 -1
  214. package/build/index.js.map +1 -1
  215. package/build/layouts/constrained.js +3 -0
  216. package/build/layouts/constrained.js.map +1 -1
  217. package/build/layouts/flex.js +59 -9
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/layouts/flow.js +0 -18
  220. package/build/layouts/flow.js.map +1 -1
  221. package/build/store/actions.js +3 -30
  222. package/build/store/actions.js.map +1 -1
  223. package/build/store/defaults.js +5 -2
  224. package/build/store/defaults.js.map +1 -1
  225. package/build/store/index.js +11 -2
  226. package/build/store/index.js.map +1 -1
  227. package/build/store/private-actions.js +78 -0
  228. package/build/store/private-actions.js.map +1 -0
  229. package/build/store/private-selectors.js +18 -0
  230. package/build/store/private-selectors.js.map +1 -0
  231. package/build/store/reducer.js +1 -1
  232. package/build/store/reducer.js.map +1 -1
  233. package/build/store/selectors.js +60 -34
  234. package/build/store/selectors.js.map +1 -1
  235. package/build/utils/block-variation-transforms.js +1 -1
  236. package/build/utils/block-variation-transforms.js.map +1 -1
  237. package/build/utils/parse-css-unit-to-px.js +1 -1
  238. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  239. package/build/utils/transform-styles/index.js +1 -7
  240. package/build/utils/transform-styles/index.js.map +1 -1
  241. package/build-module/components/alignment-control/ui.js +1 -1
  242. package/build-module/components/alignment-control/ui.js.map +1 -1
  243. package/build-module/components/autocomplete/index.js +2 -6
  244. package/build-module/components/autocomplete/index.js.map +1 -1
  245. package/build-module/components/block-alignment-matrix-control/index.js +2 -2
  246. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  247. package/build-module/components/block-card/index.js +2 -4
  248. package/build-module/components/block-card/index.js.map +1 -1
  249. package/build-module/components/block-edit/index.js +7 -0
  250. package/build-module/components/block-edit/index.js.map +1 -1
  251. package/build-module/components/block-inspector/index.js +15 -14
  252. package/build-module/components/block-inspector/index.js.map +1 -1
  253. package/build-module/components/block-list/use-in-between-inserter.js +5 -0
  254. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  255. package/build-module/components/block-lock/modal.js +0 -1
  256. package/build-module/components/block-lock/modal.js.map +1 -1
  257. package/build-module/components/block-mover/mover-description.js +2 -2
  258. package/build-module/components/block-mover/mover-description.js.map +1 -1
  259. package/build-module/components/block-navigation/dropdown.js +3 -1
  260. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  261. package/build-module/components/block-pattern-setup/index.js +1 -1
  262. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  263. package/build-module/components/block-pattern-setup/use-patterns-setup.js +2 -2
  264. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  265. package/build-module/components/block-patterns-list/index.js +32 -3
  266. package/build-module/components/block-patterns-list/index.js.map +1 -1
  267. package/build-module/components/block-preview/auto.js +9 -11
  268. package/build-module/components/block-preview/auto.js.map +1 -1
  269. package/build-module/components/block-preview/index.js +31 -8
  270. package/build-module/components/block-preview/index.js.map +1 -1
  271. package/build-module/components/block-selection-clearer/index.js +1 -1
  272. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  273. package/build-module/components/block-settings/container.native.js +6 -30
  274. package/build-module/components/block-settings/container.native.js.map +1 -1
  275. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -6
  276. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  277. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  278. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  279. package/build-module/components/block-switcher/utils.js +1 -1
  280. package/build-module/components/block-switcher/utils.js.map +1 -1
  281. package/build-module/components/block-tools/selected-block-popover.js +55 -48
  282. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  283. package/build-module/components/block-vertical-alignment-control/icons.js +12 -0
  284. package/build-module/components/block-vertical-alignment-control/icons.js.map +1 -1
  285. package/build-module/components/block-vertical-alignment-control/ui.js +10 -5
  286. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  287. package/build-module/components/color-style-selector/index.js +3 -1
  288. package/build-module/components/color-style-selector/index.js.map +1 -1
  289. package/build-module/components/date-format-picker/index.js +4 -5
  290. package/build-module/components/date-format-picker/index.js.map +1 -1
  291. package/build-module/components/font-family/index.js +1 -6
  292. package/build-module/components/font-family/index.js.map +1 -1
  293. package/build-module/components/font-sizes/fluid-utils.js +1 -1
  294. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  295. package/build-module/components/font-sizes/utils.js +1 -1
  296. package/build-module/components/font-sizes/utils.js.map +1 -1
  297. package/build-module/components/global-styles/context.js +12 -0
  298. package/build-module/components/global-styles/context.js.map +1 -0
  299. package/build-module/components/global-styles/hooks.js +121 -0
  300. package/build-module/components/global-styles/hooks.js.map +1 -0
  301. package/build-module/components/global-styles/index.js +4 -0
  302. package/build-module/components/global-styles/index.js.map +1 -0
  303. package/build-module/components/global-styles/typography-utils.js +84 -0
  304. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  305. package/build-module/components/global-styles/use-global-styles-output.js +930 -0
  306. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -0
  307. package/build-module/components/global-styles/utils.js +321 -0
  308. package/build-module/components/global-styles/utils.js.map +1 -0
  309. package/build-module/components/height-control/index.js +14 -1
  310. package/build-module/components/height-control/index.js.map +1 -1
  311. package/build-module/components/image-editor/constants.js +1 -1
  312. package/build-module/components/image-editor/constants.js.map +1 -1
  313. package/build-module/components/image-editor/context.js +1 -2
  314. package/build-module/components/image-editor/context.js.map +1 -1
  315. package/build-module/components/image-editor/cropper.js +3 -1
  316. package/build-module/components/image-editor/cropper.js.map +1 -1
  317. package/build-module/components/image-editor/index.js +13 -3
  318. package/build-module/components/image-editor/index.js.map +1 -1
  319. package/build-module/components/image-editor/use-transform-image.js +12 -37
  320. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  321. package/build-module/components/image-size-control/index.js +1 -6
  322. package/build-module/components/image-size-control/index.js.map +1 -1
  323. package/build-module/components/index.js +2 -3
  324. package/build-module/components/index.js.map +1 -1
  325. package/build-module/components/inner-blocks/index.js +21 -32
  326. package/build-module/components/inner-blocks/index.js.map +1 -1
  327. package/build-module/components/inner-blocks/index.native.js +9 -22
  328. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  329. package/build-module/components/inner-blocks/use-block-context.js +43 -0
  330. package/build-module/components/inner-blocks/use-block-context.js.map +1 -0
  331. package/build-module/components/inserter/block-patterns-explorer/explorer.js +0 -1
  332. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  333. package/build-module/components/inserter/block-patterns-tab.js +7 -1
  334. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  335. package/build-module/components/inserter/block-types-tab.js +3 -3
  336. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  337. package/build-module/components/inserter/hooks/use-patterns-state.js +1 -6
  338. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  339. package/build-module/components/inserter/index.js +5 -4
  340. package/build-module/components/inserter/index.js.map +1 -1
  341. package/build-module/components/inserter/media-tab/hooks.js +145 -56
  342. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  343. package/build-module/components/inserter/media-tab/media-list.js +74 -24
  344. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  345. package/build-module/components/inserter/media-tab/media-panel.js +14 -14
  346. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  347. package/build-module/components/inserter/media-tab/media-tab.js +7 -4
  348. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  349. package/build-module/components/inserter/media-tab/utils.js +27 -15
  350. package/build-module/components/inserter/media-tab/utils.js.map +1 -1
  351. package/build-module/components/inserter/menu.js +1 -0
  352. package/build-module/components/inserter/menu.js.map +1 -1
  353. package/build-module/components/inserter/preview-panel.js +5 -3
  354. package/build-module/components/inserter/preview-panel.js.map +1 -1
  355. package/build-module/components/inserter/search-results.js +2 -6
  356. package/build-module/components/inserter/search-results.js.map +1 -1
  357. package/build-module/components/inserter-list-item/index.js +1 -9
  358. package/build-module/components/inserter-list-item/index.js.map +1 -1
  359. package/build-module/components/inspector-controls/fill.js +14 -2
  360. package/build-module/components/inspector-controls/fill.js.map +1 -1
  361. package/build-module/components/inspector-controls/fill.native.js +13 -1
  362. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  363. package/build-module/components/inspector-controls/groups.js +4 -0
  364. package/build-module/components/inspector-controls/groups.js.map +1 -1
  365. package/build-module/components/inspector-controls/index.js +2 -2
  366. package/build-module/components/inspector-controls/index.js.map +1 -1
  367. package/build-module/components/inspector-controls/slot.js +13 -1
  368. package/build-module/components/inspector-controls/slot.js.map +1 -1
  369. package/build-module/components/inspector-controls/slot.native.js +13 -1
  370. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  371. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  372. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  373. package/build-module/components/inspector-controls-tabs/index.js +2 -2
  374. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  375. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  376. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  377. package/build-module/components/inspector-controls-tabs/styles-tab.js +6 -4
  378. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  379. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  380. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  381. package/build-module/components/justify-content-control/ui.js +9 -2
  382. package/build-module/components/justify-content-control/ui.js.map +1 -1
  383. package/build-module/components/link-control/index.js +45 -16
  384. package/build-module/components/link-control/index.js.map +1 -1
  385. package/build-module/components/list-view/block.js +1 -1
  386. package/build-module/components/list-view/block.js.map +1 -1
  387. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  388. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  389. package/build-module/components/media-upload/index.native.js +4 -1
  390. package/build-module/components/media-upload/index.native.js.map +1 -1
  391. package/build-module/components/off-canvas-editor/appender.js +47 -4
  392. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  393. package/build-module/components/off-canvas-editor/block-select-button.js +9 -4
  394. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  395. package/build-module/components/off-canvas-editor/block.js +6 -25
  396. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  397. package/build-module/components/off-canvas-editor/branch.js +23 -11
  398. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  399. package/build-module/components/off-canvas-editor/index.js +11 -15
  400. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  401. package/build-module/components/off-canvas-editor/link-ui.js +2 -2
  402. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
  403. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  404. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  405. package/build-module/components/provider/index.js +16 -9
  406. package/build-module/components/provider/index.js.map +1 -1
  407. package/build-module/components/provider/index.native.js +4 -4
  408. package/build-module/components/provider/index.native.js.map +1 -1
  409. package/build-module/components/rich-text/use-before-input-rules.js +10 -2
  410. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -1
  411. package/build-module/components/rich-text/utils.js +1 -1
  412. package/build-module/components/rich-text/utils.js.map +1 -1
  413. package/build-module/components/spacing-sizes-control/utils.js +2 -7
  414. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  415. package/build-module/components/tool-selector/index.js +3 -1
  416. package/build-module/components/tool-selector/index.js.map +1 -1
  417. package/build-module/components/url-popover/image-url-input-ui.js +8 -8
  418. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  419. package/build-module/components/use-block-display-information/index.js +1 -1
  420. package/build-module/components/use-block-display-information/index.js.map +1 -1
  421. package/build-module/experiments.js +25 -0
  422. package/build-module/experiments.js.map +1 -0
  423. package/build-module/experiments.native.js +23 -0
  424. package/build-module/experiments.native.js.map +1 -0
  425. package/build-module/hooks/anchor.js +2 -1
  426. package/build-module/hooks/anchor.js.map +1 -1
  427. package/build-module/hooks/border.js +1 -1
  428. package/build-module/hooks/border.js.map +1 -1
  429. package/build-module/hooks/child-layout.js +5 -1
  430. package/build-module/hooks/child-layout.js.map +1 -1
  431. package/build-module/hooks/color-panel.js +1 -1
  432. package/build-module/hooks/color-panel.js.map +1 -1
  433. package/build-module/hooks/color.js +3 -3
  434. package/build-module/hooks/color.js.map +1 -1
  435. package/build-module/hooks/custom-class-name.js +2 -1
  436. package/build-module/hooks/custom-class-name.js.map +1 -1
  437. package/build-module/hooks/dimensions.js +6 -5
  438. package/build-module/hooks/dimensions.js.map +1 -1
  439. package/build-module/hooks/margin.js +1 -0
  440. package/build-module/hooks/margin.js.map +1 -1
  441. package/build-module/hooks/padding.js +1 -0
  442. package/build-module/hooks/padding.js.map +1 -1
  443. package/build-module/hooks/position.js +31 -14
  444. package/build-module/hooks/position.js.map +1 -1
  445. package/build-module/hooks/typography.js +1 -1
  446. package/build-module/hooks/typography.js.map +1 -1
  447. package/build-module/hooks/use-color-props.js +3 -3
  448. package/build-module/hooks/use-color-props.js.map +1 -1
  449. package/build-module/hooks/utils.js +70 -4
  450. package/build-module/hooks/utils.js.map +1 -1
  451. package/build-module/index.js +1 -0
  452. package/build-module/index.js.map +1 -1
  453. package/build-module/layouts/constrained.js +3 -0
  454. package/build-module/layouts/constrained.js.map +1 -1
  455. package/build-module/layouts/flex.js +60 -10
  456. package/build-module/layouts/flex.js.map +1 -1
  457. package/build-module/layouts/flow.js +0 -18
  458. package/build-module/layouts/flow.js.map +1 -1
  459. package/build-module/store/actions.js +2 -26
  460. package/build-module/store/actions.js.map +1 -1
  461. package/build-module/store/defaults.js +5 -2
  462. package/build-module/store/defaults.js.map +1 -1
  463. package/build-module/store/index.js +8 -2
  464. package/build-module/store/index.js.map +1 -1
  465. package/build-module/store/private-actions.js +66 -0
  466. package/build-module/store/private-actions.js.map +1 -0
  467. package/build-module/store/private-selectors.js +11 -0
  468. package/build-module/store/private-selectors.js.map +1 -0
  469. package/build-module/store/reducer.js +1 -1
  470. package/build-module/store/reducer.js.map +1 -1
  471. package/build-module/store/selectors.js +48 -25
  472. package/build-module/store/selectors.js.map +1 -1
  473. package/build-module/utils/block-variation-transforms.js +1 -1
  474. package/build-module/utils/block-variation-transforms.js.map +1 -1
  475. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  476. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  477. package/build-module/utils/transform-styles/index.js +1 -6
  478. package/build-module/utils/transform-styles/index.js.map +1 -1
  479. package/build-style/content-rtl.css +283 -3
  480. package/build-style/content.css +283 -3
  481. package/build-style/style-rtl.css +105 -221
  482. package/build-style/style.css +105 -221
  483. package/package.json +30 -29
  484. package/src/components/alignment-control/test/__snapshots__/index.js.snap +3 -3
  485. package/src/components/alignment-control/test/index.js +5 -15
  486. package/src/components/alignment-control/ui.js +1 -1
  487. package/src/components/autocomplete/index.js +3 -6
  488. package/src/components/block-alignment-control/test/index.js +3 -11
  489. package/src/components/block-alignment-matrix-control/index.js +1 -2
  490. package/src/components/block-card/index.js +1 -4
  491. package/src/components/block-content-overlay/content.scss +4 -4
  492. package/src/components/block-edit/index.js +15 -1
  493. package/src/components/block-icon/content.scss +31 -0
  494. package/src/components/block-inspector/index.js +13 -17
  495. package/src/components/block-list/use-in-between-inserter.js +5 -0
  496. package/src/components/block-lock/modal.js +0 -1
  497. package/src/components/block-mover/mover-description.js +2 -2
  498. package/src/components/block-mover/stories/index.js +3 -3
  499. package/src/components/block-navigation/dropdown.js +1 -1
  500. package/src/components/block-pattern-setup/index.js +1 -4
  501. package/src/components/block-pattern-setup/use-patterns-setup.js +2 -5
  502. package/src/components/block-patterns-list/index.js +29 -3
  503. package/src/components/block-preview/README.md +9 -9
  504. package/src/components/block-preview/auto.js +9 -11
  505. package/src/components/block-preview/content.scss +23 -0
  506. package/src/components/block-preview/index.js +40 -10
  507. package/src/components/block-preview/style.scss +0 -23
  508. package/src/components/block-selection-clearer/index.js +1 -1
  509. package/src/components/block-selection-clearer/test/index.js +6 -6
  510. package/src/components/block-settings/container.native.js +7 -26
  511. package/src/components/block-settings-menu/block-settings-dropdown.js +13 -5
  512. package/src/components/block-settings-menu-controls/index.js +2 -10
  513. package/src/components/block-switcher/test/index.js +43 -44
  514. package/src/components/block-switcher/utils.js +1 -1
  515. package/src/components/block-tools/selected-block-popover.js +77 -80
  516. package/src/components/block-tools/style.scss +0 -1
  517. package/src/components/block-variation-picker/{style.scss → content.scss} +0 -0
  518. package/src/components/block-vertical-alignment-control/icons.js +12 -0
  519. package/src/components/block-vertical-alignment-control/test/index.js +3 -11
  520. package/src/components/block-vertical-alignment-control/ui.js +16 -6
  521. package/src/components/color-style-selector/index.js +1 -1
  522. package/src/components/colors/test/with-colors.js +2 -8
  523. package/src/components/date-format-picker/index.js +23 -24
  524. package/src/components/date-format-picker/style.scss +0 -6
  525. package/src/components/default-block-appender/content.scss +18 -0
  526. package/src/components/default-block-appender/test/index.js +2 -8
  527. package/src/components/font-family/index.js +1 -6
  528. package/src/components/font-sizes/fluid-utils.js +1 -1
  529. package/src/components/font-sizes/utils.js +1 -1
  530. package/src/components/global-styles/README.md +77 -0
  531. package/src/components/global-styles/context.js +15 -0
  532. package/src/components/global-styles/hooks.js +145 -0
  533. package/src/components/global-styles/index.js +7 -0
  534. package/src/components/global-styles/test/typography-utils.js +393 -0
  535. package/src/components/global-styles/test/use-global-styles-output.js +814 -0
  536. package/src/components/global-styles/test/utils.js +206 -0
  537. package/src/components/global-styles/typography-utils.js +87 -0
  538. package/src/components/global-styles/use-global-styles-output.js +1088 -0
  539. package/src/components/global-styles/utils.js +373 -0
  540. package/src/components/height-control/README.md +55 -0
  541. package/src/components/height-control/index.js +13 -1
  542. package/src/components/image-editor/constants.js +1 -1
  543. package/src/components/image-editor/context.js +5 -9
  544. package/src/components/image-editor/cropper.js +3 -1
  545. package/src/components/image-editor/index.js +13 -4
  546. package/src/components/image-editor/use-transform-image.js +14 -55
  547. package/src/components/image-size-control/index.js +1 -6
  548. package/src/components/index.js +2 -6
  549. package/src/components/inner-blocks/index.js +29 -33
  550. package/src/components/inner-blocks/index.native.js +27 -47
  551. package/src/components/inner-blocks/use-block-context.js +47 -0
  552. package/src/components/inserter/block-patterns-explorer/explorer.js +0 -1
  553. package/src/components/inserter/block-patterns-tab.js +7 -0
  554. package/src/components/inserter/block-types-tab.js +3 -4
  555. package/src/components/inserter/hooks/use-patterns-state.js +1 -6
  556. package/src/components/inserter/index.js +3 -4
  557. package/src/components/inserter/media-tab/hooks.js +167 -65
  558. package/src/components/inserter/media-tab/media-list.js +94 -26
  559. package/src/components/inserter/media-tab/media-panel.js +9 -20
  560. package/src/components/inserter/media-tab/media-tab.js +12 -4
  561. package/src/components/inserter/media-tab/utils.js +20 -10
  562. package/src/components/inserter/menu.js +1 -0
  563. package/src/components/inserter/preview-panel.js +4 -2
  564. package/src/components/inserter/search-results.js +2 -6
  565. package/src/components/inserter/stories/index.js +9 -9
  566. package/src/components/inserter/style.scss +58 -11
  567. package/src/components/inserter-list-item/index.js +0 -7
  568. package/src/components/inspector-controls/README.md +3 -7
  569. package/src/components/inspector-controls/fill.js +15 -1
  570. package/src/components/inspector-controls/fill.native.js +14 -1
  571. package/src/components/inspector-controls/groups.js +3 -0
  572. package/src/components/inspector-controls/index.js +2 -6
  573. package/src/components/inspector-controls/slot.js +14 -1
  574. package/src/components/inspector-controls/slot.native.js +14 -1
  575. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  576. package/src/components/inspector-controls-tabs/index.js +2 -4
  577. package/src/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  578. package/src/components/inspector-controls-tabs/styles-tab.js +5 -7
  579. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +21 -10
  580. package/src/components/justify-content-control/ui.js +9 -0
  581. package/src/components/link-control/index.js +59 -23
  582. package/src/components/link-control/style.scss +7 -24
  583. package/src/components/link-control/test/index.js +134 -5
  584. package/src/components/list-view/block.js +1 -1
  585. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  586. package/src/components/media-replace-flow/test/index.js +4 -12
  587. package/src/components/media-upload/index.native.js +2 -2
  588. package/src/components/off-canvas-editor/README.md +2 -2
  589. package/src/components/off-canvas-editor/appender.js +93 -37
  590. package/src/components/off-canvas-editor/block-select-button.js +12 -1
  591. package/src/components/off-canvas-editor/block.js +3 -42
  592. package/src/components/off-canvas-editor/branch.js +32 -5
  593. package/src/components/off-canvas-editor/index.js +10 -25
  594. package/src/components/off-canvas-editor/link-ui.js +2 -2
  595. package/src/components/off-canvas-editor/style.scss +5 -1
  596. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  597. package/src/components/provider/index.js +33 -14
  598. package/src/components/provider/index.native.js +4 -3
  599. package/src/components/provider/test/experimental-provider.js +94 -0
  600. package/src/components/provider/test/use-block-sync.js +10 -0
  601. package/src/components/responsive-block-control/test/index.js +1 -5
  602. package/src/components/rich-text/use-before-input-rules.js +10 -2
  603. package/src/components/rich-text/utils.js +1 -1
  604. package/src/components/spacing-sizes-control/utils.js +2 -7
  605. package/src/components/tool-selector/index.js +1 -1
  606. package/src/components/url-input/test/button.js +24 -24
  607. package/src/components/url-popover/image-url-input-ui.js +7 -8
  608. package/src/components/url-popover/style.scss +0 -10
  609. package/src/components/use-block-display-information/index.js +1 -1
  610. package/src/components/warning/{style.scss → content.scss} +0 -0
  611. package/src/components/warning/test/index.js +1 -5
  612. package/src/content.scss +7 -0
  613. package/src/experiments.js +27 -0
  614. package/src/experiments.native.js +25 -0
  615. package/src/hooks/anchor.js +2 -1
  616. package/src/hooks/border.js +1 -1
  617. package/src/hooks/child-layout.js +6 -1
  618. package/src/hooks/color-panel.js +1 -1
  619. package/src/hooks/color.js +3 -3
  620. package/src/hooks/custom-class-name.js +2 -1
  621. package/src/hooks/dimensions.js +6 -6
  622. package/src/hooks/layout.scss +4 -0
  623. package/src/hooks/margin.js +1 -0
  624. package/src/hooks/padding.js +1 -0
  625. package/src/hooks/position.js +52 -36
  626. package/src/hooks/test/align.native.js +1 -1
  627. package/src/hooks/test/utils.js +104 -0
  628. package/src/hooks/typography.js +1 -1
  629. package/src/hooks/use-color-props.js +3 -3
  630. package/src/hooks/utils.js +68 -2
  631. package/src/index.js +1 -0
  632. package/src/layouts/constrained.js +3 -0
  633. package/src/layouts/flex.js +66 -14
  634. package/src/layouts/flow.js +0 -9
  635. package/src/store/actions.js +2 -26
  636. package/src/store/defaults.js +7 -2
  637. package/src/store/index.js +8 -2
  638. package/src/store/private-actions.js +65 -0
  639. package/src/store/private-selectors.js +10 -0
  640. package/src/store/reducer.js +1 -1
  641. package/src/store/selectors.js +103 -52
  642. package/src/store/test/actions.js +0 -18
  643. package/src/store/test/private-actions.js +22 -0
  644. package/src/store/test/private-selectors.js +24 -0
  645. package/src/store/test/selectors.js +52 -30
  646. package/src/style.scss +3 -5
  647. package/src/utils/block-variation-transforms.js +1 -1
  648. package/src/utils/parse-css-unit-to-px.js +3 -1
  649. package/src/utils/test/parse-css-unit-to-px.js +16 -24
  650. package/src/utils/transform-styles/index.js +1 -6
  651. package/build/components/inner-blocks/get-block-context.js +0 -45
  652. package/build/components/inner-blocks/get-block-context.js.map +0 -1
  653. package/build/components/off-canvas-editor/block-edit-button.js +0 -50
  654. package/build/components/off-canvas-editor/block-edit-button.js.map +0 -1
  655. package/build-module/components/inner-blocks/get-block-context.js +0 -37
  656. package/build-module/components/inner-blocks/get-block-context.js.map +0 -1
  657. package/build-module/components/off-canvas-editor/block-edit-button.js +0 -35
  658. package/build-module/components/off-canvas-editor/block-edit-button.js.map +0 -1
  659. package/src/components/inner-blocks/get-block-context.js +0 -39
  660. package/src/components/off-canvas-editor/block-edit-button.js +0 -27
@@ -0,0 +1,373 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { get } from 'lodash';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { getTypographyFontSizeValue } from './typography-utils';
10
+
11
+ /* Supporting data. */
12
+ export const ROOT_BLOCK_NAME = 'root';
13
+ export const ROOT_BLOCK_SELECTOR = 'body';
14
+ export const ROOT_BLOCK_SUPPORTS = [
15
+ 'background',
16
+ 'backgroundColor',
17
+ 'color',
18
+ 'linkColor',
19
+ 'buttonColor',
20
+ 'fontFamily',
21
+ 'fontSize',
22
+ 'fontStyle',
23
+ 'fontWeight',
24
+ 'lineHeight',
25
+ 'textDecoration',
26
+ 'textTransform',
27
+ 'padding',
28
+ ];
29
+
30
+ export const PRESET_METADATA = [
31
+ {
32
+ path: [ 'color', 'palette' ],
33
+ valueKey: 'color',
34
+ cssVarInfix: 'color',
35
+ classes: [
36
+ { classSuffix: 'color', propertyName: 'color' },
37
+ {
38
+ classSuffix: 'background-color',
39
+ propertyName: 'background-color',
40
+ },
41
+ {
42
+ classSuffix: 'border-color',
43
+ propertyName: 'border-color',
44
+ },
45
+ ],
46
+ },
47
+ {
48
+ path: [ 'color', 'gradients' ],
49
+ valueKey: 'gradient',
50
+ cssVarInfix: 'gradient',
51
+ classes: [
52
+ {
53
+ classSuffix: 'gradient-background',
54
+ propertyName: 'background',
55
+ },
56
+ ],
57
+ },
58
+ {
59
+ path: [ 'color', 'duotone' ],
60
+ cssVarInfix: 'duotone',
61
+ valueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,
62
+ classes: [],
63
+ },
64
+ {
65
+ path: [ 'shadow', 'presets' ],
66
+ valueKey: 'shadow',
67
+ cssVarInfix: 'shadow',
68
+ classes: [],
69
+ },
70
+ {
71
+ path: [ 'typography', 'fontSizes' ],
72
+ valueFunc: ( preset, { typography: typographySettings } ) =>
73
+ getTypographyFontSizeValue( preset, typographySettings ),
74
+ valueKey: 'size',
75
+ cssVarInfix: 'font-size',
76
+ classes: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],
77
+ },
78
+ {
79
+ path: [ 'typography', 'fontFamilies' ],
80
+ valueKey: 'fontFamily',
81
+ cssVarInfix: 'font-family',
82
+ classes: [
83
+ { classSuffix: 'font-family', propertyName: 'font-family' },
84
+ ],
85
+ },
86
+ {
87
+ path: [ 'spacing', 'spacingSizes' ],
88
+ valueKey: 'size',
89
+ cssVarInfix: 'spacing',
90
+ valueFunc: ( { size } ) => size,
91
+ classes: [],
92
+ },
93
+ ];
94
+
95
+ export const STYLE_PATH_TO_CSS_VAR_INFIX = {
96
+ 'color.background': 'color',
97
+ 'color.text': 'color',
98
+ 'elements.link.color.text': 'color',
99
+ 'elements.link.:hover.color.text': 'color',
100
+ 'elements.link.typography.fontFamily': 'font-family',
101
+ 'elements.link.typography.fontSize': 'font-size',
102
+ 'elements.button.color.text': 'color',
103
+ 'elements.button.color.background': 'color',
104
+ 'elements.button.typography.fontFamily': 'font-family',
105
+ 'elements.button.typography.fontSize': 'font-size',
106
+ 'elements.heading.color': 'color',
107
+ 'elements.heading.color.background': 'color',
108
+ 'elements.heading.typography.fontFamily': 'font-family',
109
+ 'elements.heading.gradient': 'gradient',
110
+ 'elements.heading.color.gradient': 'gradient',
111
+ 'elements.h1.color': 'color',
112
+ 'elements.h1.color.background': 'color',
113
+ 'elements.h1.typography.fontFamily': 'font-family',
114
+ 'elements.h1.color.gradient': 'gradient',
115
+ 'elements.h2.color': 'color',
116
+ 'elements.h2.color.background': 'color',
117
+ 'elements.h2.typography.fontFamily': 'font-family',
118
+ 'elements.h2.color.gradient': 'gradient',
119
+ 'elements.h3.color': 'color',
120
+ 'elements.h3.color.background': 'color',
121
+ 'elements.h3.typography.fontFamily': 'font-family',
122
+ 'elements.h3.color.gradient': 'gradient',
123
+ 'elements.h4.color': 'color',
124
+ 'elements.h4.color.background': 'color',
125
+ 'elements.h4.typography.fontFamily': 'font-family',
126
+ 'elements.h4.color.gradient': 'gradient',
127
+ 'elements.h5.color': 'color',
128
+ 'elements.h5.color.background': 'color',
129
+ 'elements.h5.typography.fontFamily': 'font-family',
130
+ 'elements.h5.color.gradient': 'gradient',
131
+ 'elements.h6.color': 'color',
132
+ 'elements.h6.color.background': 'color',
133
+ 'elements.h6.typography.fontFamily': 'font-family',
134
+ 'elements.h6.color.gradient': 'gradient',
135
+ 'color.gradient': 'gradient',
136
+ shadow: 'shadow',
137
+ 'typography.fontSize': 'font-size',
138
+ 'typography.fontFamily': 'font-family',
139
+ };
140
+
141
+ // A static list of block attributes that store global style preset slugs.
142
+ export const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {
143
+ 'color.background': 'backgroundColor',
144
+ 'color.text': 'textColor',
145
+ 'color.gradient': 'gradient',
146
+ 'typography.fontSize': 'fontSize',
147
+ 'typography.fontFamily': 'fontFamily',
148
+ };
149
+
150
+ function findInPresetsBy(
151
+ features,
152
+ blockName,
153
+ presetPath,
154
+ presetProperty,
155
+ presetValueValue
156
+ ) {
157
+ // Block presets take priority above root level presets.
158
+ const orderedPresetsByOrigin = [
159
+ get( features, [ 'blocks', blockName, ...presetPath ] ),
160
+ get( features, presetPath ),
161
+ ];
162
+
163
+ for ( const presetByOrigin of orderedPresetsByOrigin ) {
164
+ if ( presetByOrigin ) {
165
+ // Preset origins ordered by priority.
166
+ const origins = [ 'custom', 'theme', 'default' ];
167
+ for ( const origin of origins ) {
168
+ const presets = presetByOrigin[ origin ];
169
+ if ( presets ) {
170
+ const presetObject = presets.find(
171
+ ( preset ) =>
172
+ preset[ presetProperty ] === presetValueValue
173
+ );
174
+ if ( presetObject ) {
175
+ if ( presetProperty === 'slug' ) {
176
+ return presetObject;
177
+ }
178
+ // If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.
179
+ const highestPresetObjectWithSameSlug = findInPresetsBy(
180
+ features,
181
+ blockName,
182
+ presetPath,
183
+ 'slug',
184
+ presetObject.slug
185
+ );
186
+ if (
187
+ highestPresetObjectWithSameSlug[
188
+ presetProperty
189
+ ] === presetObject[ presetProperty ]
190
+ ) {
191
+ return presetObject;
192
+ }
193
+ return undefined;
194
+ }
195
+ }
196
+ }
197
+ }
198
+ }
199
+ }
200
+
201
+ export function getPresetVariableFromValue(
202
+ features,
203
+ blockName,
204
+ variableStylePath,
205
+ presetPropertyValue
206
+ ) {
207
+ if ( ! presetPropertyValue ) {
208
+ return presetPropertyValue;
209
+ }
210
+
211
+ const cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];
212
+
213
+ const metadata = PRESET_METADATA.find(
214
+ ( data ) => data.cssVarInfix === cssVarInfix
215
+ );
216
+
217
+ if ( ! metadata ) {
218
+ // The property doesn't have preset data
219
+ // so the value should be returned as it is.
220
+ return presetPropertyValue;
221
+ }
222
+ const { valueKey, path } = metadata;
223
+
224
+ const presetObject = findInPresetsBy(
225
+ features,
226
+ blockName,
227
+ path,
228
+ valueKey,
229
+ presetPropertyValue
230
+ );
231
+
232
+ if ( ! presetObject ) {
233
+ // Value wasn't found in the presets,
234
+ // so it must be a custom value.
235
+ return presetPropertyValue;
236
+ }
237
+
238
+ return `var:preset|${ cssVarInfix }|${ presetObject.slug }`;
239
+ }
240
+
241
+ function getValueFromPresetVariable(
242
+ features,
243
+ blockName,
244
+ variable,
245
+ [ presetType, slug ]
246
+ ) {
247
+ const metadata = PRESET_METADATA.find(
248
+ ( data ) => data.cssVarInfix === presetType
249
+ );
250
+ if ( ! metadata ) {
251
+ return variable;
252
+ }
253
+
254
+ const presetObject = findInPresetsBy(
255
+ features.settings,
256
+ blockName,
257
+ metadata.path,
258
+ 'slug',
259
+ slug
260
+ );
261
+
262
+ if ( presetObject ) {
263
+ const { valueKey } = metadata;
264
+ const result = presetObject[ valueKey ];
265
+ return getValueFromVariable( features, blockName, result );
266
+ }
267
+
268
+ return variable;
269
+ }
270
+
271
+ function getValueFromCustomVariable( features, blockName, variable, path ) {
272
+ const result =
273
+ get( features.settings, [ 'blocks', blockName, 'custom', ...path ] ) ??
274
+ get( features.settings, [ 'custom', ...path ] );
275
+ if ( ! result ) {
276
+ return variable;
277
+ }
278
+ // A variable may reference another variable so we need recursion until we find the value.
279
+ return getValueFromVariable( features, blockName, result );
280
+ }
281
+
282
+ /**
283
+ * Attempts to fetch the value of a theme.json CSS variable.
284
+ *
285
+ * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.
286
+ * @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.
287
+ * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.
288
+ * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.
289
+ */
290
+ export function getValueFromVariable( features, blockName, variable ) {
291
+ if ( ! variable || typeof variable !== 'string' ) {
292
+ if ( variable?.ref && typeof variable?.ref === 'string' ) {
293
+ const refPath = variable.ref.split( '.' );
294
+ variable = get( features, refPath );
295
+ // Presence of another ref indicates a reference to another dynamic value.
296
+ // Pointing to another dynamic value is not supported.
297
+ if ( ! variable || !! variable?.ref ) {
298
+ return variable;
299
+ }
300
+ } else {
301
+ return variable;
302
+ }
303
+ }
304
+ const USER_VALUE_PREFIX = 'var:';
305
+ const THEME_VALUE_PREFIX = 'var(--wp--';
306
+ const THEME_VALUE_SUFFIX = ')';
307
+
308
+ let parsedVar;
309
+
310
+ if ( variable.startsWith( USER_VALUE_PREFIX ) ) {
311
+ parsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );
312
+ } else if (
313
+ variable.startsWith( THEME_VALUE_PREFIX ) &&
314
+ variable.endsWith( THEME_VALUE_SUFFIX )
315
+ ) {
316
+ parsedVar = variable
317
+ .slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )
318
+ .split( '--' );
319
+ } else {
320
+ // We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`
321
+ return variable;
322
+ }
323
+
324
+ const [ type, ...path ] = parsedVar;
325
+ if ( type === 'preset' ) {
326
+ return getValueFromPresetVariable(
327
+ features,
328
+ blockName,
329
+ variable,
330
+ path
331
+ );
332
+ }
333
+ if ( type === 'custom' ) {
334
+ return getValueFromCustomVariable(
335
+ features,
336
+ blockName,
337
+ variable,
338
+ path
339
+ );
340
+ }
341
+ return variable;
342
+ }
343
+
344
+ /**
345
+ * Function that scopes a selector with another one. This works a bit like
346
+ * SCSS nesting except the `&` operator isn't supported.
347
+ *
348
+ * @example
349
+ * ```js
350
+ * const scope = '.a, .b .c';
351
+ * const selector = '> .x, .y';
352
+ * const merged = scopeSelector( scope, selector );
353
+ * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'
354
+ * ```
355
+ *
356
+ * @param {string} scope Selector to scope to.
357
+ * @param {string} selector Original selector.
358
+ *
359
+ * @return {string} Scoped selector.
360
+ */
361
+ export function scopeSelector( scope, selector ) {
362
+ const scopes = scope.split( ',' );
363
+ const selectors = selector.split( ',' );
364
+
365
+ const selectorsScoped = [];
366
+ scopes.forEach( ( outer ) => {
367
+ selectors.forEach( ( inner ) => {
368
+ selectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );
369
+ } );
370
+ } );
371
+
372
+ return selectorsScoped.join( ', ' );
373
+ }
@@ -0,0 +1,55 @@
1
+ # Height Control
2
+
3
+ The `HeightControl` component adds a linked unit control and slider component for controlling the height of a block within the block editor. It supports passing a label, and is used for controlling the minimum height dimensions of Group blocks.
4
+
5
+ _Note:_ It is worth noting that the minimum height option is an opt-in feature. Themes need to declare support for it before it'll be available, and a convenient way to do that is via opting in to the [appearanceTools](/docs/how-to-guides/themes/theme-json/#opt-in-into-ui-controls) UI controls.
6
+
7
+ ## Table of contents
8
+
9
+ 1. [Development guidelines](#development-guidelines)
10
+ 2. [Related components](#related-components)
11
+
12
+ ## Development guidelines
13
+
14
+ ### Usage
15
+
16
+ Renders the markup for height control component, to be used in the block inspector.
17
+
18
+ ```jsx
19
+ import { HeightControl } from '@wordpress/block-editor';
20
+ import { useState } from '@wordpress/element';
21
+
22
+ const MyLineHeightControl = () => (
23
+ const [ value, setValue ] = useState();
24
+ <HeightControl
25
+ label={ 'My Height Control' }
26
+ onChange={ setValue }
27
+ value={ value }
28
+ />
29
+ );
30
+ ```
31
+
32
+ ### Props
33
+
34
+ #### `value`
35
+
36
+ - **Type:** `String` or `Number` or `Undefined`
37
+
38
+ The value of the current height.
39
+
40
+ #### `onChange`
41
+
42
+ - **Type:** `Function`
43
+
44
+ A callback function that handles the application of the height value.
45
+
46
+ #### `label`
47
+
48
+ - **Type:** `String`
49
+ - **Default:** `'Height'`
50
+
51
+ A label for the height control. This is useful when using the height control for a feature that is controlled in the same way as height, but requires a different label. For example, "Min. height".
52
+
53
+ ## Related components
54
+
55
+ 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.
@@ -28,9 +28,21 @@ const RANGE_CONTROL_CUSTOM_SETTINGS = {
28
28
  rem: { max: 50, step: 0.1 },
29
29
  };
30
30
 
31
+ /**
32
+ * HeightControl renders a linked unit control and range control for adjusting the height of a block.
33
+ *
34
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/height-control/README.md
35
+ *
36
+ * @param {Object} props
37
+ * @param {?string} props.label A label for the control.
38
+ * @param {( value: string ) => void } props.onChange Called when the height changes.
39
+ * @param {string} props.value The current height value.
40
+ *
41
+ * @return {WPComponent} The component to be rendered.
42
+ */
31
43
  export default function HeightControl( {
32
- onChange,
33
44
  label = __( 'Height' ),
45
+ onChange,
34
46
  value,
35
47
  } ) {
36
48
  const customRangeValue = parseFloat( value );
@@ -1,6 +1,6 @@
1
1
  export const MIN_ZOOM = 100;
2
2
  export const MAX_ZOOM = 300;
3
3
  export const POPOVER_PROPS = {
4
- position: 'bottom right',
4
+ placement: 'bottom-start',
5
5
  variant: 'toolbar',
6
6
  };
@@ -18,19 +18,15 @@ export default function ImageEditingProvider( {
18
18
  url,
19
19
  naturalWidth,
20
20
  naturalHeight,
21
- isEditing,
22
21
  onFinishEditing,
23
22
  onSaveImage,
24
23
  children,
25
24
  } ) {
26
- const transformImage = useTransformImage(
27
- {
28
- url,
29
- naturalWidth,
30
- naturalHeight,
31
- },
32
- isEditing
33
- );
25
+ const transformImage = useTransformImage( {
26
+ url,
27
+ naturalWidth,
28
+ naturalHeight,
29
+ } );
34
30
 
35
31
  const saveImage = useSaveImage( {
36
32
  id,
@@ -66,7 +66,9 @@ export default function ImageCropper( {
66
66
  crop={ position }
67
67
  zoom={ zoom / 100 }
68
68
  aspect={ aspect }
69
- onCropChange={ setPosition }
69
+ onCropChange={ ( pos ) => {
70
+ setPosition( pos );
71
+ } }
70
72
  onCropComplete={ ( newCropPercent ) => {
71
73
  setCrop( newCropPercent );
72
74
  } }
@@ -7,6 +7,7 @@ import { ToolbarGroup, ToolbarItem } from '@wordpress/components';
7
7
  * Internal dependencies
8
8
  */
9
9
  import BlockControls from '../block-controls';
10
+ import ImageEditingProvider from './context';
10
11
  import Cropper from './cropper';
11
12
  import ZoomDropdown from './zoom-dropdown';
12
13
  import AspectRatioDropdown from './aspect-ratio-dropdown';
@@ -14,16 +15,26 @@ import RotationButton from './rotation-button';
14
15
  import FormControls from './form-controls';
15
16
 
16
17
  export default function ImageEditor( {
18
+ id,
17
19
  url,
18
20
  width,
19
21
  height,
20
22
  clientWidth,
21
23
  naturalHeight,
22
24
  naturalWidth,
25
+ onSaveImage,
26
+ onFinishEditing,
23
27
  borderProps,
24
28
  } ) {
25
29
  return (
26
- <>
30
+ <ImageEditingProvider
31
+ id={ id }
32
+ url={ url }
33
+ naturalWidth={ naturalWidth }
34
+ naturalHeight={ naturalHeight }
35
+ onSaveImage={ onSaveImage }
36
+ onFinishEditing={ onFinishEditing }
37
+ >
27
38
  <Cropper
28
39
  borderProps={ borderProps }
29
40
  url={ url }
@@ -47,8 +58,6 @@ export default function ImageEditor( {
47
58
  <FormControls />
48
59
  </ToolbarGroup>
49
60
  </BlockControls>
50
- </>
61
+ </ImageEditingProvider>
51
62
  );
52
63
  }
53
-
54
- export { default as ImageEditingProvider } from './context';
@@ -1,47 +1,35 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useCallback, useEffect, useMemo, useState } from '@wordpress/element';
4
+ import { useCallback, useMemo, useState } from '@wordpress/element';
5
5
  import { applyFilters } from '@wordpress/hooks';
6
6
 
7
- function useTransformState( { url, naturalWidth, naturalHeight } ) {
7
+ export default function useTransformImage( {
8
+ url,
9
+ naturalWidth,
10
+ naturalHeight,
11
+ } ) {
8
12
  const [ editedUrl, setEditedUrl ] = useState();
9
13
  const [ crop, setCrop ] = useState();
10
14
  const [ position, setPosition ] = useState( { x: 0, y: 0 } );
11
- const [ zoom, setZoom ] = useState();
12
- const [ rotation, setRotation ] = useState();
13
- const [ aspect, setAspect ] = useState();
14
- const [ defaultAspect, setDefaultAspect ] = useState();
15
-
16
- const initializeTransformValues = useCallback( () => {
17
- setPosition( { x: 0, y: 0 } );
18
- setZoom( 100 );
19
- setRotation( 0 );
20
- setAspect( naturalWidth / naturalHeight );
21
- setDefaultAspect( naturalWidth / naturalHeight );
22
- }, [
23
- naturalWidth,
24
- naturalHeight,
25
- setPosition,
26
- setZoom,
27
- setRotation,
28
- setAspect,
29
- setDefaultAspect,
30
- ] );
15
+ const [ zoom, setZoom ] = useState( 100 );
16
+ const [ rotation, setRotation ] = useState( 0 );
17
+ const defaultAspect = naturalWidth / naturalHeight;
18
+ const [ aspect, setAspect ] = useState( defaultAspect );
31
19
 
32
20
  const rotateClockwise = useCallback( () => {
33
21
  const angle = ( rotation + 90 ) % 360;
34
22
 
35
- let naturalAspectRatio = naturalWidth / naturalHeight;
23
+ let naturalAspectRatio = defaultAspect;
36
24
 
37
25
  if ( rotation % 180 === 90 ) {
38
- naturalAspectRatio = naturalHeight / naturalWidth;
26
+ naturalAspectRatio = 1 / defaultAspect;
39
27
  }
40
28
 
41
29
  if ( angle === 0 ) {
42
30
  setEditedUrl();
43
31
  setRotation( angle );
44
- setAspect( naturalWidth / naturalHeight );
32
+ setAspect( defaultAspect );
45
33
  setPosition( {
46
34
  x: -( position.y * naturalAspectRatio ),
47
35
  y: position.x * naturalAspectRatio,
@@ -100,15 +88,7 @@ function useTransformState( { url, naturalWidth, naturalHeight } ) {
100
88
  if ( typeof imgCrossOrigin === 'string' ) {
101
89
  el.crossOrigin = imgCrossOrigin;
102
90
  }
103
- }, [
104
- rotation,
105
- naturalWidth,
106
- naturalHeight,
107
- setEditedUrl,
108
- setRotation,
109
- setAspect,
110
- setPosition,
111
- ] );
91
+ }, [ rotation, defaultAspect ] );
112
92
 
113
93
  return useMemo(
114
94
  () => ( {
@@ -126,37 +106,16 @@ function useTransformState( { url, naturalWidth, naturalHeight } ) {
126
106
  aspect,
127
107
  setAspect,
128
108
  defaultAspect,
129
- initializeTransformValues,
130
109
  } ),
131
110
  [
132
111
  editedUrl,
133
- setEditedUrl,
134
112
  crop,
135
- setCrop,
136
113
  position,
137
- setPosition,
138
114
  zoom,
139
- setZoom,
140
115
  rotation,
141
- setRotation,
142
116
  rotateClockwise,
143
117
  aspect,
144
- setAspect,
145
118
  defaultAspect,
146
- initializeTransformValues,
147
119
  ]
148
120
  );
149
121
  }
150
-
151
- export default function useTransformImage( imageProperties, isEditing ) {
152
- const transformState = useTransformState( imageProperties );
153
- const { initializeTransformValues } = transformState;
154
-
155
- useEffect( () => {
156
- if ( isEditing ) {
157
- initializeTransformValues();
158
- }
159
- }, [ isEditing, initializeTransformValues ] );
160
-
161
- return transformState;
162
- }
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { isEmpty } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -39,7 +34,7 @@ export default function ImageSizeControl( {
39
34
 
40
35
  return (
41
36
  <>
42
- { ! isEmpty( imageSizeOptions ) && (
37
+ { imageSizeOptions && imageSizeOptions.length > 0 && (
43
38
  <SelectControl
44
39
  __nextHasNoMarginBottom
45
40
  label={ __( 'Image size' ) }
@@ -53,11 +53,8 @@ export { default as __experimentalColorGradientControl } from './colors-gradient
53
53
  export { default as __experimentalColorGradientSettingsDropdown } from './colors-gradients/dropdown';
54
54
  export { default as __experimentalPanelColorGradientSettings } from './colors-gradients/panel-color-gradient-settings';
55
55
  export { default as __experimentalUseMultipleOriginColorsAndGradients } from './colors-gradients/use-multiple-origin-colors-and-gradients';
56
- export { default as __experimentalHeightControl } from './height-control';
57
- export {
58
- default as __experimentalImageEditor,
59
- ImageEditingProvider as __experimentalImageEditingProvider,
60
- } from './image-editor';
56
+ export { default as HeightControl } from './height-control';
57
+ export { default as __experimentalImageEditor } from './image-editor';
61
58
  export { default as __experimentalImageSizeControl } from './image-size-control';
62
59
  export { default as InnerBlocks, useInnerBlocksProps } from './inner-blocks';
63
60
  export {
@@ -74,7 +71,6 @@ export { default as __experimentalLinkControlSearchResults } from './link-contro
74
71
  export { default as __experimentalLinkControlSearchItem } from './link-control/search-item';
75
72
  export { default as LineHeightControl } from './line-height-control';
76
73
  export { default as __experimentalListView } from './list-view';
77
- export { default as __experimentalOffCanvasEditor } from './off-canvas-editor';
78
74
  export { default as MediaReplaceFlow } from './media-replace-flow';
79
75
  export { default as MediaPlaceholder } from './media-placeholder';
80
76
  export { default as MediaUpload } from './media-upload';