@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,94 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render } from '@testing-library/react';
5
+ /**
6
+ * WordPress dependencies
7
+ */
8
+ import { useRegistry } from '@wordpress/data';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { BlockEditorProvider, ExperimentalBlockEditorProvider } from '../';
14
+ import { store as blockEditorStore } from '../../../store';
15
+
16
+ const HasEditorSetting = ( props ) => {
17
+ const registry = useRegistry();
18
+ if ( props.setRegistry ) {
19
+ props.setRegistry( registry );
20
+ }
21
+ return <p>Test.</p>;
22
+ };
23
+
24
+ describe( 'BlockEditorProvider', () => {
25
+ let registry;
26
+ const setRegistry = ( reg ) => {
27
+ registry = reg;
28
+ };
29
+ beforeEach( () => {
30
+ registry = undefined;
31
+ } );
32
+ it( 'should strip experimental settings', async () => {
33
+ render(
34
+ <BlockEditorProvider
35
+ settings={ {
36
+ inserterMediaCategories: true,
37
+ } }
38
+ >
39
+ <HasEditorSetting setRegistry={ setRegistry } />
40
+ </BlockEditorProvider>
41
+ );
42
+ const settings = registry.select( blockEditorStore ).getSettings();
43
+ expect( settings ).not.toHaveProperty( 'inserterMediaCategories' );
44
+ } );
45
+ it( 'should preserve stable settings', async () => {
46
+ render(
47
+ <BlockEditorProvider
48
+ settings={ {
49
+ stableSetting: 'https://example.com',
50
+ } }
51
+ >
52
+ <HasEditorSetting setRegistry={ setRegistry } />
53
+ </BlockEditorProvider>
54
+ );
55
+ const settings = registry.select( blockEditorStore ).getSettings();
56
+ expect( settings ).toHaveProperty( 'stableSetting' );
57
+ } );
58
+ } );
59
+
60
+ describe( 'ExperimentalBlockEditorProvider', () => {
61
+ let registry;
62
+ const setRegistry = ( reg ) => {
63
+ registry = reg;
64
+ };
65
+ beforeEach( () => {
66
+ registry = undefined;
67
+ } );
68
+ it( 'should preserve experimental settings', async () => {
69
+ render(
70
+ <ExperimentalBlockEditorProvider
71
+ settings={ {
72
+ inserterMediaCategories: true,
73
+ } }
74
+ >
75
+ <HasEditorSetting setRegistry={ setRegistry } />
76
+ </ExperimentalBlockEditorProvider>
77
+ );
78
+ const settings = registry.select( blockEditorStore ).getSettings();
79
+ expect( settings ).toHaveProperty( 'inserterMediaCategories' );
80
+ } );
81
+ it( 'should preserve stable settings', async () => {
82
+ render(
83
+ <ExperimentalBlockEditorProvider
84
+ settings={ {
85
+ stableSetting: 'https://example.com',
86
+ } }
87
+ >
88
+ <HasEditorSetting setRegistry={ setRegistry } />
89
+ </ExperimentalBlockEditorProvider>
90
+ );
91
+ const settings = registry.select( blockEditorStore ).getSettings();
92
+ expect( settings ).toHaveProperty( 'stableSetting' );
93
+ } );
94
+ } );
@@ -14,7 +14,17 @@ import { render } from '@testing-library/react';
14
14
  import useBlockSync from '../use-block-sync';
15
15
  import withRegistryProvider from '../with-registry-provider';
16
16
  import * as blockEditorActions from '../../../store/actions';
17
+
17
18
  import { store as blockEditorStore } from '../../../store';
19
+ jest.mock( '../../../store/actions', () => {
20
+ const actions = jest.requireActual( '../../../store/actions' );
21
+ return {
22
+ ...actions,
23
+ resetBlocks: jest.fn( actions.resetBlocks ),
24
+ replaceInnerBlocks: jest.fn( actions.replaceInnerBlocks ),
25
+ setHasControlledInnerBlocks: jest.fn( actions.replaceInnerBlocks ),
26
+ };
27
+ } );
18
28
 
19
29
  const TestWrapper = withRegistryProvider( ( props ) => {
20
30
  if ( props.setRegistry ) {
@@ -15,8 +15,6 @@ import { SelectControl } from '@wordpress/components';
15
15
  */
16
16
  import ResponsiveBlockControl from '../index';
17
17
 
18
- jest.useFakeTimers();
19
-
20
18
  const inputId = 'input-12345678';
21
19
 
22
20
  const sizeOptions = [
@@ -246,9 +244,7 @@ describe( 'Default and Responsive modes', () => {
246
244
  } );
247
245
 
248
246
  it( 'should switch between default and responsive modes when interacting with toggle control', async () => {
249
- const user = userEvent.setup( {
250
- advanceTimers: jest.advanceTimersByTime,
251
- } );
247
+ const user = userEvent.setup();
252
248
  const ResponsiveBlockControlConsumer = () => {
253
249
  const [ isResponsive, setIsResponsive ] = useState( false );
254
250
 
@@ -77,9 +77,17 @@ export function useBeforeInputRules( props ) {
77
77
  const { defaultView } = ownerDocument;
78
78
  const newEvent = new defaultView.InputEvent( 'input', init );
79
79
 
80
- // Dispatch an input event with the new data. This will trigger the
80
+ // Dispatch an `input` event with the new data. This will trigger the
81
81
  // input rules.
82
- event.target.dispatchEvent( newEvent );
82
+ // Postpone the `input` to the next event loop tick so that the dispatch
83
+ // doesn't happen synchronously in the middle of `beforeinput` dispatch.
84
+ // This is closer to how native `input` event would be timed, and also
85
+ // makes sure that the `input` event is dispatched only after the `onChange`
86
+ // call few lines above has fully updated the data store state and rerendered
87
+ // all affected components.
88
+ window.queueMicrotask( () => {
89
+ event.target.dispatchEvent( newEvent );
90
+ } );
83
91
  event.preventDefault();
84
92
  }
85
93
 
@@ -23,7 +23,7 @@ export function addActiveFormats( value, activeFormats ) {
23
23
  *
24
24
  * @param {?(string|boolean)} multiline The multiline prop.
25
25
  *
26
- * @return {?string} The multiline tag.
26
+ * @return {string | undefined} The multiline tag.
27
27
  */
28
28
  export function getMultilineTag( multiline ) {
29
29
  if ( multiline !== true && multiline !== 'p' && multiline !== 'li' ) {
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { isEmpty } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -75,7 +70,7 @@ export function getPresetValueFromCustomValue( value, spacingSizes ) {
75
70
  *
76
71
  * @param {string} value Value to convert.
77
72
  *
78
- * @return {string} CSS var string for given spacing preset value.
73
+ * @return {string | undefined} CSS var string for given spacing preset value.
79
74
  */
80
75
  export function getSpacingPresetCssVar( value ) {
81
76
  if ( ! value ) {
@@ -211,5 +206,5 @@ export function isValuesDefined( values ) {
211
206
  if ( values === undefined || values === null ) {
212
207
  return false;
213
208
  }
214
- return ! isEmpty( Object.values( values ).filter( ( value ) => !! value ) );
209
+ return Object.values( values ).filter( ( value ) => !! value ).length > 0;
215
210
  }
@@ -51,7 +51,7 @@ function ToolSelector( props, ref ) {
51
51
  label={ __( 'Tools' ) }
52
52
  />
53
53
  ) }
54
- position="bottom right"
54
+ popoverProps={ { placement: 'bottom-start' } }
55
55
  renderContent={ () => (
56
56
  <>
57
57
  <NavigableMenu role="menu" aria-label={ __( 'Tools' ) }>
@@ -4,13 +4,16 @@
4
4
  import { render, screen } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { useState } from '@wordpress/element';
11
+
7
12
  /**
8
13
  * Internal dependencies
9
14
  */
10
15
  import URLInputButton from '../button';
11
16
 
12
- jest.useFakeTimers();
13
-
14
17
  describe( 'URLInputButton', () => {
15
18
  it( 'should render a `Insert link` button and not be pressed when `url` is not provided', () => {
16
19
  render( <URLInputButton /> );
@@ -57,9 +60,7 @@ describe( 'URLInputButton', () => {
57
60
  } );
58
61
 
59
62
  it( 'should render a form when `Insert link` button is clicked', async () => {
60
- const user = userEvent.setup( {
61
- advanceTimers: jest.advanceTimersByTime,
62
- } );
63
+ const user = userEvent.setup();
63
64
  render( <URLInputButton /> );
64
65
 
65
66
  // Click the button to insert a link.
@@ -76,9 +77,7 @@ describe( 'URLInputButton', () => {
76
77
  } );
77
78
 
78
79
  it( 'should call `onChange` function once per each value change', async () => {
79
- const user = userEvent.setup( {
80
- advanceTimers: jest.advanceTimersByTime,
81
- } );
80
+ const user = userEvent.setup();
82
81
  const onChangeMock = jest.fn();
83
82
 
84
83
  render( <URLInputButton onChange={ onChangeMock } /> );
@@ -104,9 +103,7 @@ describe( 'URLInputButton', () => {
104
103
  } );
105
104
 
106
105
  it( 'should close the form when the user clicks the `Close` button', async () => {
107
- const user = userEvent.setup( {
108
- advanceTimers: jest.advanceTimersByTime,
109
- } );
106
+ const user = userEvent.setup();
110
107
 
111
108
  render( <URLInputButton /> );
112
109
 
@@ -135,12 +132,15 @@ describe( 'URLInputButton', () => {
135
132
  } );
136
133
 
137
134
  it( 'should close the form when user submits it', async () => {
138
- const user = userEvent.setup( {
139
- advanceTimers: jest.advanceTimersByTime,
140
- } );
141
- const onChangeMock = jest.fn();
135
+ const user = userEvent.setup();
142
136
 
143
- render( <URLInputButton onChange={ onChangeMock } /> );
137
+ function TestURLInputButton() {
138
+ // maintain state for the controlled component and process value changes
139
+ const [ url, setUrl ] = useState( '' );
140
+ return <URLInputButton url={ url } onChange={ setUrl } />;
141
+ }
142
+
143
+ render( <TestURLInputButton /> );
144
144
 
145
145
  // Click the button to insert a link.
146
146
  await user.click(
@@ -153,15 +153,15 @@ describe( 'URLInputButton', () => {
153
153
  // Type something into the URL field.
154
154
  await user.type( screen.getByRole( 'combobox' ), 'foo' );
155
155
 
156
+ const submitButton = screen.getByRole( 'button', {
157
+ name: 'Submit',
158
+ } );
159
+
160
+ expect( submitButton ).toBeInTheDocument();
161
+
156
162
  // Submit the form.
157
- await user.click(
158
- screen.getByRole( 'button', {
159
- name: 'Submit',
160
- } )
161
- );
163
+ await user.click( submitButton );
162
164
 
163
- expect(
164
- screen.queryByRole( 'button', { name: 'Submit' } )
165
- ).not.toBeInTheDocument();
165
+ expect( submitButton ).not.toBeInTheDocument();
166
166
  } );
167
167
  } );
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { map } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -17,6 +12,7 @@ import {
17
12
  TextControl,
18
13
  SVG,
19
14
  Path,
15
+ __experimentalVStack as VStack,
20
16
  } from '@wordpress/components';
21
17
  import { link as linkIcon, close } from '@wordpress/icons';
22
18
 
@@ -214,23 +210,26 @@ const ImageURLInputUI = ( {
214
210
  };
215
211
 
216
212
  const advancedOptions = (
217
- <>
213
+ <VStack spacing="3">
218
214
  <ToggleControl
215
+ __nextHasNoMarginBottom
219
216
  label={ __( 'Open in new tab' ) }
220
217
  onChange={ onSetNewTab }
221
218
  checked={ linkTarget === '_blank' }
222
219
  />
223
220
  <TextControl
221
+ __nextHasNoMarginBottom
224
222
  label={ __( 'Link rel' ) }
225
223
  value={ rel ?? '' }
226
224
  onChange={ onSetLinkRel }
227
225
  />
228
226
  <TextControl
227
+ __nextHasNoMarginBottom
229
228
  label={ __( 'Link CSS Class' ) }
230
229
  value={ linkClass || '' }
231
230
  onChange={ onSetLinkClass }
232
231
  />
233
- </>
232
+ </VStack>
234
233
  );
235
234
 
236
235
  const linkEditorValue = urlInput !== null ? urlInput : url;
@@ -260,7 +259,7 @@ const ImageURLInputUI = ( {
260
259
  additionalControls={
261
260
  ! linkEditorValue && (
262
261
  <NavigableMenu>
263
- { map( getLinkDestinations(), ( link ) => (
262
+ { getLinkDestinations().map( ( link ) => (
264
263
  <MenuItem
265
264
  key={ link.linkDestination }
266
265
  icon={ link.icon }
@@ -52,12 +52,6 @@
52
52
  transform: rotate(180deg);
53
53
  }
54
54
  }
55
- .block-editor-url-popover__input-container {
56
- .components-base-control:last-child,
57
- .components-base-control:last-child .components-base-control__field {
58
- margin-bottom: 0;
59
- }
60
- }
61
55
 
62
56
  .block-editor-url-popover__settings {
63
57
  display: block;
@@ -68,10 +62,6 @@
68
62
  .block-editor-url-popover__link-editor,
69
63
  .block-editor-url-popover__link-viewer {
70
64
  display: flex;
71
-
72
- .block-editor-url-input .components-base-control__field {
73
- margin-bottom: 0;
74
- }
75
65
  }
76
66
 
77
67
  .block-editor-url-popover__link-viewer-url {
@@ -34,7 +34,7 @@ import { store as blockEditorStore } from '../../store';
34
34
  * 1. Block's client id to extract it's current attributes.
35
35
  * 2. A block variation should have set `isActive` prop to a proper function.
36
36
  *
37
- * If for any reason a block variaton match cannot be found,
37
+ * If for any reason a block variation match cannot be found,
38
38
  * the returned information come from the Block Type.
39
39
  * If no blockType is found with the provided clientId, returns null.
40
40
  *
@@ -9,8 +9,6 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import Warning from '../index';
11
11
 
12
- jest.useFakeTimers();
13
-
14
12
  describe( 'Warning', () => {
15
13
  it( 'should match snapshot', () => {
16
14
  const { container } = render( <Warning>error</Warning> );
@@ -33,9 +31,7 @@ describe( 'Warning', () => {
33
31
  } );
34
32
 
35
33
  it( 'should show hidden secondary actions', async () => {
36
- const user = userEvent.setup( {
37
- advanceTimers: jest.advanceTimersByTime,
38
- } );
34
+ const user = userEvent.setup();
39
35
 
40
36
  render(
41
37
  <Warning secondaryActions={ [ { title: 'test', onClick: null } ] }>
package/src/content.scss CHANGED
@@ -1,11 +1,18 @@
1
+ @import "./components/block-icon/content.scss";
1
2
  @import "./components/block-list/content.scss";
2
3
  @import "./components/block-list-appender/content.scss";
3
4
  @import "./components/block-content-overlay/content.scss";
4
5
  @import "./components/block-draggable/content.scss";
5
6
  @import "./components/block-preview/content.scss";
7
+ @import "./components/block-variation-picker/content.scss";
6
8
  @import "./components/button-block-appender/content.scss";
7
9
  @import "./components/default-block-appender/content.scss";
8
10
  @import "./components/inner-blocks/content.scss";
9
11
  @import "./components/media-placeholder/content.scss";
10
12
  @import "./components/plain-text/content.scss";
11
13
  @import "./components/rich-text/content.scss";
14
+ @import "./components/warning/content.scss";
15
+
16
+ // To do: ideally the iframe does not contain UI, but there's still the block
17
+ // placeholders that will be moved to shadow DOM in the future.
18
+ @include wordpress-admin-schemes();
@@ -0,0 +1,27 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/experiments';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import * as globalStyles from './components/global-styles';
10
+ import { ExperimentalBlockEditorProvider } from './components/provider';
11
+ import OffCanvasEditor from './components/off-canvas-editor';
12
+
13
+ export const { lock, unlock } =
14
+ __dangerousOptInToUnstableAPIsOnlyForCoreModules(
15
+ 'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',
16
+ '@wordpress/block-editor'
17
+ );
18
+
19
+ /**
20
+ * Experimental @wordpress/block-editor APIs.
21
+ */
22
+ export const experiments = {};
23
+ lock( experiments, {
24
+ ...globalStyles,
25
+ ExperimentalBlockEditorProvider,
26
+ OffCanvasEditor,
27
+ } );
@@ -0,0 +1,25 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/experiments';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import * as globalStyles from './components/global-styles';
10
+ import { ExperimentalBlockEditorProvider } from './components/provider';
11
+
12
+ export const { lock, unlock } =
13
+ __dangerousOptInToUnstableAPIsOnlyForCoreModules(
14
+ 'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',
15
+ '@wordpress/block-editor'
16
+ );
17
+
18
+ /**
19
+ * Experimental @wordpress/block-editor APIs.
20
+ */
21
+ export const experiments = {};
22
+ lock( experiments, {
23
+ ...globalStyles,
24
+ ExperimentalBlockEditorProvider,
25
+ } );
@@ -68,6 +68,7 @@ export const withInspectorControl = createHigherOrderComponent(
68
68
  const isWeb = Platform.OS === 'web';
69
69
  const textControl = (
70
70
  <TextControl
71
+ __nextHasNoMarginBottom
71
72
  className="html-anchor-control"
72
73
  label={ __( 'HTML anchor' ) }
73
74
  help={
@@ -104,7 +105,7 @@ export const withInspectorControl = createHigherOrderComponent(
104
105
  <>
105
106
  <BlockEdit { ...props } />
106
107
  { isWeb && (
107
- <InspectorControls __experimentalGroup="advanced">
108
+ <InspectorControls group="advanced">
108
109
  { textControl }
109
110
  </InspectorControls>
110
111
  ) }
@@ -255,7 +255,7 @@ export function BorderPanel( props ) {
255
255
  const hydratedBorder = getBorderObject( attributes, colors );
256
256
 
257
257
  return (
258
- <InspectorControls __experimentalGroup="border">
258
+ <InspectorControls group="border">
259
259
  { ( isWidthSupported || isColorSupported ) && (
260
260
  <ToolsPanelItem
261
261
  hasValue={ () => hasBorderValue( props ) }
@@ -65,6 +65,7 @@ export function ChildLayoutEdit( {
65
65
  return (
66
66
  <>
67
67
  <ToggleGroupControl
68
+ __nextHasNoMarginBottom
68
69
  size={ '__unstable-large' }
69
70
  label={ childLayoutOrientation( parentLayout ) }
70
71
  value={ selfStretch || 'fit' }
@@ -134,9 +135,13 @@ export function hasChildLayoutSupport( {
134
135
  } ) {
135
136
  const {
136
137
  type: parentLayoutType = 'default',
138
+ default: { type: defaultParentLayoutType = 'default' } = {},
137
139
  allowSizingOnChildren = false,
138
140
  } = parentLayout;
139
- const support = parentLayoutType === 'flex' && allowSizingOnChildren;
141
+
142
+ const support =
143
+ ( defaultParentLayoutType === 'flex' || parentLayoutType === 'flex' ) &&
144
+ allowSizingOnChildren;
140
145
 
141
146
  return support;
142
147
  }
@@ -75,7 +75,7 @@ export default function ColorPanel( {
75
75
  const colorGradientSettings = useMultipleOriginColorsAndGradients();
76
76
 
77
77
  return (
78
- <InspectorControls __experimentalGroup="color">
78
+ <InspectorControls group="color">
79
79
  <ColorGradientSettingsDropdown
80
80
  enableAlpha={ enableAlpha }
81
81
  panelId={ clientId }
@@ -544,9 +544,9 @@ export const withColorPaletteStyles = createHigherOrderComponent(
544
544
  ( BlockListBlock ) => ( props ) => {
545
545
  const { name, attributes } = props;
546
546
  const { backgroundColor, textColor } = attributes;
547
- const userPalette = useSetting( 'color.palette.custom' ) || [];
548
- const themePalette = useSetting( 'color.palette.theme' ) || [];
549
- const defaultPalette = useSetting( 'color.palette.default' ) || [];
547
+ const userPalette = useSetting( 'color.palette.custom' );
548
+ const themePalette = useSetting( 'color.palette.theme' );
549
+ const defaultPalette = useSetting( 'color.palette.default' );
550
550
  const colors = useMemo(
551
551
  () => [
552
552
  ...( userPalette || [] ),
@@ -59,8 +59,9 @@ export const withInspectorControl = createHigherOrderComponent(
59
59
  return (
60
60
  <>
61
61
  <BlockEdit { ...props } />
62
- <InspectorControls __experimentalGroup="advanced">
62
+ <InspectorControls group="advanced">
63
63
  <TextControl
64
+ __nextHasNoMarginBottom
64
65
  autoComplete="off"
65
66
  label={ __( 'Additional CSS class(es)' ) }
66
67
  value={ props.attributes.className || '' }
@@ -59,6 +59,7 @@ import {
59
59
  } from './child-layout';
60
60
  import useSetting from '../components/use-setting';
61
61
  import { store as blockEditorStore } from '../store';
62
+ import { unlock } from '../experiments';
62
63
 
63
64
  export const DIMENSIONS_SUPPORT_KEY = 'dimensions';
64
65
  export const SPACING_SUPPORT_KEY = 'spacing';
@@ -67,10 +68,9 @@ export const AXIAL_SIDES = [ 'vertical', 'horizontal' ];
67
68
 
68
69
  function useVisualizerMouseOver() {
69
70
  const [ isMouseOver, setIsMouseOver ] = useState( false );
70
- const {
71
- __experimentalHideBlockInterface: hideBlockInterface,
72
- __experimentalShowBlockInterface: showBlockInterface,
73
- } = useDispatch( blockEditorStore );
71
+ const { hideBlockInterface, showBlockInterface } = unlock(
72
+ useDispatch( blockEditorStore )
73
+ );
74
74
  const onMouseOver = ( e ) => {
75
75
  e.stopPropagation();
76
76
  hideBlockInterface();
@@ -137,7 +137,7 @@ export function DimensionsPanel( props ) {
137
137
 
138
138
  return (
139
139
  <>
140
- <InspectorControls __experimentalGroup="dimensions">
140
+ <InspectorControls group="dimensions">
141
141
  { ! isPaddingDisabled && (
142
142
  <ToolsPanelItem
143
143
  className={ spacingClassnames }
@@ -301,7 +301,7 @@ const useIsDimensionsDisabled = ( props = {} ) => {
301
301
  * @param {string} blockName Block name.
302
302
  * @param {string} feature The feature custom sides relate to e.g. padding or margins.
303
303
  *
304
- * @return {?string[]} Strings representing the custom sides available.
304
+ * @return {string[] | undefined} Strings representing the custom sides available.
305
305
  */
306
306
  export function useCustomSides( blockName, feature ) {
307
307
  const support = getBlockSupport( blockName, SPACING_SUPPORT_KEY );
@@ -12,6 +12,10 @@
12
12
  }
13
13
  }
14
14
 
15
+ .block-editor-block-inspector .block-editor-hooks__layout-controls-unit-input {
16
+ margin-bottom: 0;
17
+ }
18
+
15
19
  .block-editor-hooks__layout-controls-reset {
16
20
  display: flex;
17
21
  justify-content: flex-end;
@@ -237,6 +237,7 @@ export function MarginVisualizer( { clientId, attributes, forceShow } ) {
237
237
  clientId={ clientId }
238
238
  __unstableCoverTarget
239
239
  __unstableRefreshSize={ margin }
240
+ __unstablePopoverSlot="block-toolbar"
240
241
  shift={ false }
241
242
  >
242
243
  <div className="block-editor__padding-visualizer" style={ style } />
@@ -226,6 +226,7 @@ export function PaddingVisualizer( { clientId, attributes, forceShow } ) {
226
226
  clientId={ clientId }
227
227
  __unstableCoverTarget
228
228
  __unstableRefreshSize={ padding }
229
+ __unstablePopoverSlot="block-toolbar"
229
230
  shift={ false }
230
231
  >
231
232
  <div className="block-editor__padding-visualizer" style={ style } />