@wordpress/block-editor 10.4.0 → 11.0.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 (638) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +0 -1
  3. package/build/autocompleters/block.js +2 -6
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/autocompleters/link.js +2 -0
  6. package/build/autocompleters/link.js.map +1 -1
  7. package/build/components/block-card/index.js +51 -3
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-draggable/index.native.js +46 -39
  10. package/build/components/block-draggable/index.native.js.map +1 -1
  11. package/build/components/block-edit/edit.js +4 -3
  12. package/build/components/block-edit/edit.js.map +1 -1
  13. package/build/components/block-edit/edit.native.js +4 -7
  14. package/build/components/block-edit/edit.native.js.map +1 -1
  15. package/build/components/block-inspector/index.js +35 -33
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block-list-context.native.js +5 -8
  18. package/build/components/block-list/block-list-context.native.js.map +1 -1
  19. package/build/components/block-list/block.js +55 -24
  20. package/build/components/block-list/block.js.map +1 -1
  21. package/build/components/block-list/block.native.js +61 -28
  22. package/build/components/block-list/block.native.js.map +1 -1
  23. package/build/components/block-lock/menu-item.js +1 -1
  24. package/build/components/block-lock/menu-item.js.map +1 -1
  25. package/build/components/block-lock/modal.js +16 -9
  26. package/build/components/block-lock/modal.js.map +1 -1
  27. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +12 -4
  28. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  29. package/build/components/block-pattern-setup/index.js +3 -2
  30. package/build/components/block-pattern-setup/index.js.map +1 -1
  31. package/build/components/block-patterns-list/index.js +33 -11
  32. package/build/components/block-patterns-list/index.js.map +1 -1
  33. package/build/components/block-preview/auto.js +9 -3
  34. package/build/components/block-preview/auto.js.map +1 -1
  35. package/build/components/block-preview/index.js +5 -9
  36. package/build/components/block-preview/index.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-styles/utils.js +3 -3
  40. package/build/components/block-styles/utils.js.map +1 -1
  41. package/build/components/block-switcher/index.js +19 -4
  42. package/build/components/block-switcher/index.js.map +1 -1
  43. package/build/components/block-toolbar/index.js +5 -1
  44. package/build/components/block-toolbar/index.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +8 -49
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/selected-block-popover.js +27 -4
  48. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  49. package/build/components/block-variation-picker/index.js +1 -2
  50. package/build/components/block-variation-picker/index.js.map +1 -1
  51. package/build/components/colors/with-colors.js +4 -3
  52. package/build/components/colors/with-colors.js.map +1 -1
  53. package/build/components/font-sizes/fluid-utils.js +24 -40
  54. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  55. package/build/components/font-sizes/with-font-sizes.js +7 -5
  56. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  57. package/build/components/height-control/index.js +115 -0
  58. package/build/components/height-control/index.js.map +1 -0
  59. package/build/components/iframe/index.js +11 -8
  60. package/build/components/iframe/index.js.map +1 -1
  61. package/build/components/image-editor/use-save-image.js +2 -0
  62. package/build/components/image-editor/use-save-image.js.map +1 -1
  63. package/build/components/image-editor/zoom-dropdown.js +1 -0
  64. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  65. package/build/components/index.js +18 -0
  66. package/build/components/index.js.map +1 -1
  67. package/build/components/inner-blocks/index.js +25 -9
  68. package/build/components/inner-blocks/index.js.map +1 -1
  69. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  70. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  71. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  72. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  73. package/build/components/inserter/block-patterns-tab.js +25 -46
  74. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  75. package/build/components/inserter/block-types-tab.js +3 -1
  76. package/build/components/inserter/block-types-tab.js.map +1 -1
  77. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  78. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  79. package/build/components/inserter/index.js +8 -3
  80. package/build/components/inserter/index.js.map +1 -1
  81. package/build/components/inserter/index.native.js +3 -4
  82. package/build/components/inserter/index.native.js.map +1 -1
  83. package/build/components/inserter/media-tab/hooks.js +103 -0
  84. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  85. package/build/components/inserter/media-tab/index.js +32 -0
  86. package/build/components/inserter/media-tab/index.js.map +1 -0
  87. package/build/components/inserter/media-tab/media-list.js +100 -0
  88. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  89. package/build/components/inserter/media-tab/media-panel.js +96 -0
  90. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  91. package/build/components/inserter/media-tab/media-tab.js +120 -0
  92. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  93. package/build/components/inserter/media-tab/utils.js +54 -0
  94. package/build/components/inserter/media-tab/utils.js.map +1 -0
  95. package/build/components/inserter/menu.js +35 -12
  96. package/build/components/inserter/menu.js.map +1 -1
  97. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  98. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  99. package/build/components/inserter/quick-inserter.js +1 -0
  100. package/build/components/inserter/quick-inserter.js.map +1 -1
  101. package/build/components/inserter/reusable-blocks-tab.js +4 -1
  102. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  103. package/build/components/inserter/search-results.js +3 -1
  104. package/build/components/inserter/search-results.js.map +1 -1
  105. package/build/components/inserter/tabs.js +16 -2
  106. package/build/components/inserter/tabs.js.map +1 -1
  107. package/build/components/inserter-list-item/index.js +4 -1
  108. package/build/components/inserter-list-item/index.js.map +1 -1
  109. package/build/components/inspector-controls/groups.js +2 -0
  110. package/build/components/inspector-controls/groups.js.map +1 -1
  111. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  112. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  113. package/build/components/inspector-controls-tabs/index.js +71 -0
  114. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  115. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  116. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  117. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  118. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  119. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  120. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  121. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  122. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  123. package/build/components/inspector-controls-tabs/utils.js +37 -0
  124. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  125. package/build/components/link-control/index.js +19 -34
  126. package/build/components/link-control/index.js.map +1 -1
  127. package/build/components/link-control/search-input.js +1 -2
  128. package/build/components/link-control/search-input.js.map +1 -1
  129. package/build/components/link-control/use-internal-input-value.js +26 -0
  130. package/build/components/link-control/use-internal-input-value.js.map +1 -0
  131. package/build/components/list-view/block.js +10 -5
  132. package/build/components/list-view/block.js.map +1 -1
  133. package/build/components/list-view/branch.js +22 -15
  134. package/build/components/list-view/branch.js.map +1 -1
  135. package/build/components/media-upload/index.native.js +2 -3
  136. package/build/components/media-upload/index.native.js.map +1 -1
  137. package/build/components/off-canvas-editor/appender.js +104 -0
  138. package/build/components/off-canvas-editor/appender.js.map +1 -0
  139. package/build/components/off-canvas-editor/block-contents.js +100 -0
  140. package/build/components/off-canvas-editor/block-contents.js.map +1 -0
  141. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  142. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  143. package/build/components/off-canvas-editor/block-select-button.js +119 -0
  144. package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
  145. package/build/components/off-canvas-editor/block.js +324 -0
  146. package/build/components/off-canvas-editor/block.js.map +1 -0
  147. package/build/components/off-canvas-editor/branch.js +179 -0
  148. package/build/components/off-canvas-editor/branch.js.map +1 -0
  149. package/build/components/off-canvas-editor/context.js +19 -0
  150. package/build/components/off-canvas-editor/context.js.map +1 -0
  151. package/build/components/off-canvas-editor/drop-indicator.js +118 -0
  152. package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
  153. package/build/components/off-canvas-editor/expander.js +41 -0
  154. package/build/components/off-canvas-editor/expander.js.map +1 -0
  155. package/build/components/off-canvas-editor/index.js +213 -0
  156. package/build/components/off-canvas-editor/index.js.map +1 -0
  157. package/build/components/off-canvas-editor/leaf.js +60 -0
  158. package/build/components/off-canvas-editor/leaf.js.map +1 -0
  159. package/build/components/off-canvas-editor/link-ui.js +185 -0
  160. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  161. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  162. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  163. package/build/components/off-canvas-editor/use-block-selection.js +139 -0
  164. package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
  165. package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
  166. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  167. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
  168. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  169. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
  170. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  171. package/build/components/off-canvas-editor/utils.js +60 -0
  172. package/build/components/off-canvas-editor/utils.js.map +1 -0
  173. package/build/components/rich-text/format-toolbar/index.js +8 -4
  174. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  175. package/build/components/rich-text/index.js +3 -3
  176. package/build/components/rich-text/index.js.map +1 -1
  177. package/build/components/rich-text/index.native.js +0 -2
  178. package/build/components/rich-text/index.native.js.map +1 -1
  179. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  180. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  181. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  182. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  183. package/build/components/rich-text/utils.js +1 -19
  184. package/build/components/rich-text/utils.js.map +1 -1
  185. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  186. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  187. package/build/components/ungroup-button/index.native.js +4 -2
  188. package/build/components/ungroup-button/index.native.js.map +1 -1
  189. package/build/components/url-input/index.js +46 -43
  190. package/build/components/url-input/index.js.map +1 -1
  191. package/build/components/url-popover/index.js +31 -2
  192. package/build/components/url-popover/index.js.map +1 -1
  193. package/build/components/use-block-display-information/index.js +8 -4
  194. package/build/components/use-block-display-information/index.js.map +1 -1
  195. package/build/components/use-setting/index.js +10 -2
  196. package/build/components/use-setting/index.js.map +1 -1
  197. package/build/hooks/child-layout.js +209 -0
  198. package/build/hooks/child-layout.js.map +1 -0
  199. package/build/hooks/color-panel.js +17 -1
  200. package/build/hooks/color-panel.js.map +1 -1
  201. package/build/hooks/color.js +1 -1
  202. package/build/hooks/color.js.map +1 -1
  203. package/build/hooks/content-lock-ui.js +14 -7
  204. package/build/hooks/content-lock-ui.js.map +1 -1
  205. package/build/hooks/dimensions.js +65 -16
  206. package/build/hooks/dimensions.js.map +1 -1
  207. package/build/hooks/layout.js +59 -3
  208. package/build/hooks/layout.js.map +1 -1
  209. package/build/hooks/margin.js +4 -2
  210. package/build/hooks/margin.js.map +1 -1
  211. package/build/hooks/min-height.js +139 -0
  212. package/build/hooks/min-height.js.map +1 -0
  213. package/build/hooks/padding.js +4 -2
  214. package/build/hooks/padding.js.map +1 -1
  215. package/build/hooks/style.js +3 -2
  216. package/build/hooks/style.js.map +1 -1
  217. package/build/layouts/flex.js +22 -21
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/store/actions.js +26 -0
  220. package/build/store/actions.js.map +1 -1
  221. package/build/store/reducer.js +420 -265
  222. package/build/store/reducer.js.map +1 -1
  223. package/build/store/selectors.js +73 -49
  224. package/build/store/selectors.js.map +1 -1
  225. package/build/utils/sorting.js +63 -0
  226. package/build/utils/sorting.js.map +1 -0
  227. package/build-module/autocompleters/block.js +2 -6
  228. package/build-module/autocompleters/block.js.map +1 -1
  229. package/build-module/autocompleters/link.js +2 -0
  230. package/build-module/autocompleters/link.js.map +1 -1
  231. package/build-module/components/block-card/index.js +45 -3
  232. package/build-module/components/block-card/index.js.map +1 -1
  233. package/build-module/components/block-draggable/index.native.js +40 -31
  234. package/build-module/components/block-draggable/index.native.js.map +1 -1
  235. package/build-module/components/block-edit/edit.js +4 -2
  236. package/build-module/components/block-edit/edit.js.map +1 -1
  237. package/build-module/components/block-edit/edit.native.js +4 -6
  238. package/build-module/components/block-edit/edit.native.js.map +1 -1
  239. package/build-module/components/block-inspector/index.js +32 -30
  240. package/build-module/components/block-inspector/index.js.map +1 -1
  241. package/build-module/components/block-list/block-list-context.native.js +5 -8
  242. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  243. package/build-module/components/block-list/block.js +55 -25
  244. package/build-module/components/block-list/block.js.map +1 -1
  245. package/build-module/components/block-list/block.native.js +61 -28
  246. package/build-module/components/block-list/block.native.js.map +1 -1
  247. package/build-module/components/block-lock/menu-item.js +2 -2
  248. package/build-module/components/block-lock/menu-item.js.map +1 -1
  249. package/build-module/components/block-lock/modal.js +17 -10
  250. package/build-module/components/block-lock/modal.js.map +1 -1
  251. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +13 -6
  252. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  253. package/build-module/components/block-pattern-setup/index.js +3 -2
  254. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  255. package/build-module/components/block-patterns-list/index.js +35 -13
  256. package/build-module/components/block-patterns-list/index.js.map +1 -1
  257. package/build-module/components/block-preview/auto.js +9 -3
  258. package/build-module/components/block-preview/auto.js.map +1 -1
  259. package/build-module/components/block-preview/index.js +5 -8
  260. package/build-module/components/block-preview/index.js.map +1 -1
  261. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  262. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  263. package/build-module/components/block-styles/utils.js +3 -3
  264. package/build-module/components/block-styles/utils.js.map +1 -1
  265. package/build-module/components/block-switcher/index.js +19 -4
  266. package/build-module/components/block-switcher/index.js.map +1 -1
  267. package/build-module/components/block-toolbar/index.js +6 -2
  268. package/build-module/components/block-toolbar/index.js.map +1 -1
  269. package/build-module/components/block-tools/insertion-point.js +8 -49
  270. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  271. package/build-module/components/block-tools/selected-block-popover.js +27 -5
  272. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  273. package/build-module/components/block-variation-picker/index.js +1 -2
  274. package/build-module/components/block-variation-picker/index.js.map +1 -1
  275. package/build-module/components/colors/with-colors.js +5 -4
  276. package/build-module/components/colors/with-colors.js.map +1 -1
  277. package/build-module/components/font-sizes/fluid-utils.js +24 -40
  278. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  279. package/build-module/components/font-sizes/with-font-sizes.js +8 -6
  280. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  281. package/build-module/components/height-control/index.js +103 -0
  282. package/build-module/components/height-control/index.js.map +1 -0
  283. package/build-module/components/iframe/index.js +11 -8
  284. package/build-module/components/iframe/index.js.map +1 -1
  285. package/build-module/components/image-editor/use-save-image.js +2 -0
  286. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  287. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  288. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  289. package/build-module/components/index.js +2 -0
  290. package/build-module/components/index.js.map +1 -1
  291. package/build-module/components/inner-blocks/index.js +27 -11
  292. package/build-module/components/inner-blocks/index.js.map +1 -1
  293. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  294. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  295. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  296. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  297. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  298. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  299. package/build-module/components/inserter/block-types-tab.js +3 -2
  300. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  301. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  302. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  303. package/build-module/components/inserter/index.js +8 -3
  304. package/build-module/components/inserter/index.js.map +1 -1
  305. package/build-module/components/inserter/index.native.js +3 -5
  306. package/build-module/components/inserter/index.native.js.map +1 -1
  307. package/build-module/components/inserter/media-tab/hooks.js +89 -0
  308. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  309. package/build-module/components/inserter/media-tab/index.js +4 -0
  310. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  311. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  312. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  313. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  314. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  315. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  316. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  317. package/build-module/components/inserter/media-tab/utils.js +45 -0
  318. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  319. package/build-module/components/inserter/menu.js +33 -12
  320. package/build-module/components/inserter/menu.js.map +1 -1
  321. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  322. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  323. package/build-module/components/inserter/quick-inserter.js +1 -0
  324. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  325. package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
  326. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  327. package/build-module/components/inserter/search-results.js +3 -2
  328. package/build-module/components/inserter/search-results.js.map +1 -1
  329. package/build-module/components/inserter/tabs.js +15 -2
  330. package/build-module/components/inserter/tabs.js.map +1 -1
  331. package/build-module/components/inserter-list-item/index.js +5 -2
  332. package/build-module/components/inserter-list-item/index.js.map +1 -1
  333. package/build-module/components/inspector-controls/groups.js +2 -0
  334. package/build-module/components/inspector-controls/groups.js.map +1 -1
  335. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  336. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  337. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  338. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  339. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  340. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  341. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  342. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  343. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  344. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  345. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  346. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  347. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  348. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  349. package/build-module/components/link-control/index.js +18 -34
  350. package/build-module/components/link-control/index.js.map +1 -1
  351. package/build-module/components/link-control/search-input.js +1 -2
  352. package/build-module/components/link-control/search-input.js.map +1 -1
  353. package/build-module/components/link-control/use-internal-input-value.js +18 -0
  354. package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
  355. package/build-module/components/list-view/block.js +10 -5
  356. package/build-module/components/list-view/block.js.map +1 -1
  357. package/build-module/components/list-view/branch.js +21 -14
  358. package/build-module/components/list-view/branch.js.map +1 -1
  359. package/build-module/components/media-upload/index.native.js +2 -4
  360. package/build-module/components/media-upload/index.native.js.map +1 -1
  361. package/build-module/components/off-canvas-editor/appender.js +89 -0
  362. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  363. package/build-module/components/off-canvas-editor/block-contents.js +85 -0
  364. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
  365. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  366. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  367. package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
  368. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
  369. package/build-module/components/off-canvas-editor/block.js +298 -0
  370. package/build-module/components/off-canvas-editor/block.js.map +1 -0
  371. package/build-module/components/off-canvas-editor/branch.js +164 -0
  372. package/build-module/components/off-canvas-editor/branch.js.map +1 -0
  373. package/build-module/components/off-canvas-editor/context.js +7 -0
  374. package/build-module/components/off-canvas-editor/context.js.map +1 -0
  375. package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
  376. package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
  377. package/build-module/components/off-canvas-editor/expander.js +32 -0
  378. package/build-module/components/off-canvas-editor/expander.js.map +1 -0
  379. package/build-module/components/off-canvas-editor/index.js +189 -0
  380. package/build-module/components/off-canvas-editor/index.js.map +1 -0
  381. package/build-module/components/off-canvas-editor/leaf.js +45 -0
  382. package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
  383. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  384. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  385. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  386. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  387. package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
  388. package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
  389. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
  390. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  391. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
  392. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  393. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
  394. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  395. package/build-module/components/off-canvas-editor/utils.js +44 -0
  396. package/build-module/components/off-canvas-editor/utils.js.map +1 -0
  397. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  398. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  399. package/build-module/components/rich-text/index.js +2 -3
  400. package/build-module/components/rich-text/index.js.map +1 -1
  401. package/build-module/components/rich-text/index.native.js +0 -2
  402. package/build-module/components/rich-text/index.native.js.map +1 -1
  403. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  404. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  405. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  406. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  407. package/build-module/components/rich-text/utils.js +1 -16
  408. package/build-module/components/rich-text/utils.js.map +1 -1
  409. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  410. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  411. package/build-module/components/ungroup-button/index.native.js +3 -2
  412. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  413. package/build-module/components/url-input/index.js +46 -43
  414. package/build-module/components/url-input/index.js.map +1 -1
  415. package/build-module/components/url-popover/index.js +30 -3
  416. package/build-module/components/url-popover/index.js.map +1 -1
  417. package/build-module/components/use-block-display-information/index.js +9 -5
  418. package/build-module/components/use-block-display-information/index.js.map +1 -1
  419. package/build-module/components/use-setting/index.js +9 -2
  420. package/build-module/components/use-setting/index.js.map +1 -1
  421. package/build-module/hooks/child-layout.js +189 -0
  422. package/build-module/hooks/child-layout.js.map +1 -0
  423. package/build-module/hooks/color-panel.js +17 -1
  424. package/build-module/hooks/color-panel.js.map +1 -1
  425. package/build-module/hooks/color.js +1 -1
  426. package/build-module/hooks/color.js.map +1 -1
  427. package/build-module/hooks/content-lock-ui.js +16 -9
  428. package/build-module/hooks/content-lock-ui.js.map +1 -1
  429. package/build-module/hooks/dimensions.js +60 -16
  430. package/build-module/hooks/dimensions.js.map +1 -1
  431. package/build-module/hooks/layout.js +57 -2
  432. package/build-module/hooks/layout.js.map +1 -1
  433. package/build-module/hooks/margin.js +4 -2
  434. package/build-module/hooks/margin.js.map +1 -1
  435. package/build-module/hooks/min-height.js +116 -0
  436. package/build-module/hooks/min-height.js.map +1 -0
  437. package/build-module/hooks/padding.js +4 -2
  438. package/build-module/hooks/padding.js.map +1 -1
  439. package/build-module/hooks/style.js +4 -3
  440. package/build-module/hooks/style.js.map +1 -1
  441. package/build-module/layouts/flex.js +23 -22
  442. package/build-module/layouts/flex.js.map +1 -1
  443. package/build-module/store/actions.js +22 -0
  444. package/build-module/store/actions.js.map +1 -1
  445. package/build-module/store/reducer.js +415 -265
  446. package/build-module/store/reducer.js.map +1 -1
  447. package/build-module/store/selectors.js +66 -48
  448. package/build-module/store/selectors.js.map +1 -1
  449. package/build-module/utils/sorting.js +56 -0
  450. package/build-module/utils/sorting.js.map +1 -0
  451. package/build-style/content-rtl.css +701 -0
  452. package/build-style/content.css +701 -0
  453. package/build-style/default-editor-styles-rtl.css +14 -0
  454. package/build-style/default-editor-styles.css +14 -0
  455. package/build-style/style-rtl.css +305 -668
  456. package/build-style/style.css +305 -668
  457. package/package.json +32 -30
  458. package/src/autocompleters/block.js +2 -6
  459. package/src/autocompleters/link.js +2 -0
  460. package/src/components/alignment-control/README.md +1 -1
  461. package/src/components/alignment-control/test/index.js +4 -1
  462. package/src/components/block-alignment-control/test/index.js +4 -1
  463. package/src/components/block-alignment-control/test/index.native.js +4 -4
  464. package/src/components/block-card/index.js +46 -2
  465. package/src/components/block-card/style.scss +4 -0
  466. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  467. package/src/components/block-draggable/content.scss +20 -0
  468. package/src/components/block-draggable/index.native.js +54 -40
  469. package/src/components/block-draggable/style.scss +0 -21
  470. package/src/components/block-draggable/test/helpers.native.js +7 -9
  471. package/src/components/block-draggable/test/index.native.js +35 -45
  472. package/src/components/block-edit/edit.js +5 -2
  473. package/src/components/block-edit/edit.native.js +5 -6
  474. package/src/components/block-inspector/index.js +96 -81
  475. package/src/components/block-inspector/style.scss +9 -1
  476. package/src/components/block-list/block-list-context.native.js +5 -8
  477. package/src/components/block-list/block.js +74 -23
  478. package/src/components/block-list/block.native.js +78 -23
  479. package/src/components/block-list/{style.scss → content.scss} +11 -20
  480. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  481. package/src/components/block-lock/menu-item.js +5 -2
  482. package/src/components/block-lock/modal.js +19 -36
  483. package/src/components/block-lock/style.scss +8 -17
  484. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +24 -6
  485. package/src/components/block-mover/style.scss +0 -1
  486. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -2
  487. package/src/components/block-pattern-setup/index.js +2 -1
  488. package/src/components/block-patterns-list/index.js +47 -24
  489. package/src/components/block-popover/style.scss +1 -1
  490. package/src/components/block-preview/README.md +15 -10
  491. package/src/components/block-preview/auto.js +7 -1
  492. package/src/components/block-preview/content.scss +4 -0
  493. package/src/components/block-preview/index.js +7 -12
  494. package/src/components/block-preview/style.scss +0 -7
  495. package/src/components/block-preview/test/index.js +18 -35
  496. package/src/components/block-selection-clearer/test/index.js +12 -12
  497. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  498. package/src/components/block-styles/utils.js +3 -3
  499. package/src/components/block-switcher/index.js +19 -4
  500. package/src/components/block-switcher/test/index.js +4 -0
  501. package/src/components/block-toolbar/index.js +12 -5
  502. package/src/components/block-toolbar/style.scss +10 -0
  503. package/src/components/block-tools/insertion-point.js +3 -47
  504. package/src/components/block-tools/selected-block-popover.js +80 -34
  505. package/src/components/block-tools/style.scss +27 -5
  506. package/src/components/block-variation-picker/index.js +1 -4
  507. package/src/components/block-vertical-alignment-control/test/index.js +4 -1
  508. package/src/components/colors/with-colors.js +13 -23
  509. package/src/components/default-block-appender/{style.scss → content.scss} +1 -0
  510. package/src/components/font-sizes/fluid-utils.js +37 -64
  511. package/src/components/font-sizes/test/fluid-utils.js +5 -5
  512. package/src/components/font-sizes/with-font-sizes.js +14 -11
  513. package/src/components/height-control/index.js +123 -0
  514. package/src/components/height-control/stories/index.js +21 -0
  515. package/src/components/height-control/style.scss +5 -0
  516. package/src/components/iframe/index.js +25 -18
  517. package/src/components/image-editor/use-save-image.js +2 -0
  518. package/src/components/image-editor/zoom-dropdown.js +1 -0
  519. package/src/components/index.js +2 -0
  520. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  521. package/src/components/inner-blocks/index.js +30 -10
  522. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  523. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  524. package/src/components/inserter/block-patterns-tab.js +28 -71
  525. package/src/components/inserter/block-types-tab.js +3 -2
  526. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  527. package/src/components/inserter/index.js +10 -2
  528. package/src/components/inserter/index.native.js +1 -1
  529. package/src/components/inserter/media-tab/hooks.js +88 -0
  530. package/src/components/inserter/media-tab/index.js +3 -0
  531. package/src/components/inserter/media-tab/media-list.js +93 -0
  532. package/src/components/inserter/media-tab/media-panel.js +83 -0
  533. package/src/components/inserter/media-tab/media-tab.js +135 -0
  534. package/src/components/inserter/media-tab/utils.js +37 -0
  535. package/src/components/inserter/menu.js +55 -13
  536. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  537. package/src/components/inserter/quick-inserter.js +1 -0
  538. package/src/components/inserter/reusable-blocks-tab.js +4 -2
  539. package/src/components/inserter/search-results.js +3 -2
  540. package/src/components/inserter/stories/index.js +1 -1
  541. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  542. package/src/components/inserter/style.scss +184 -18
  543. package/src/components/inserter/tabs.js +12 -1
  544. package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
  545. package/src/components/inserter-list-item/index.js +11 -1
  546. package/src/components/inserter-list-item/style.scss +26 -0
  547. package/src/components/inspector-controls/groups.js +2 -0
  548. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  549. package/src/components/inspector-controls-tabs/index.js +62 -0
  550. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  551. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  552. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  553. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  554. package/src/components/inspector-controls-tabs/utils.js +28 -0
  555. package/src/components/line-height-control/test/index.js +5 -5
  556. package/src/components/link-control/README.md +1 -1
  557. package/src/components/link-control/index.js +24 -39
  558. package/src/components/link-control/search-input.js +1 -2
  559. package/src/components/link-control/test/index.js +400 -582
  560. package/src/components/link-control/use-internal-input-value.js +22 -0
  561. package/src/components/list-view/block.js +7 -3
  562. package/src/components/list-view/branch.js +21 -14
  563. package/src/components/list-view/style.scss +20 -9
  564. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  565. package/src/components/media-replace-flow/test/index.js +37 -9
  566. package/src/components/media-upload/test/index.native.js +2 -0
  567. package/src/components/off-canvas-editor/README.md +5 -0
  568. package/src/components/off-canvas-editor/appender.js +93 -0
  569. package/src/components/off-canvas-editor/block-contents.js +89 -0
  570. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  571. package/src/components/off-canvas-editor/block-select-button.js +113 -0
  572. package/src/components/off-canvas-editor/block.js +401 -0
  573. package/src/components/off-canvas-editor/branch.js +208 -0
  574. package/src/components/off-canvas-editor/context.js +8 -0
  575. package/src/components/off-canvas-editor/drop-indicator.js +126 -0
  576. package/src/components/off-canvas-editor/expander.js +26 -0
  577. package/src/components/off-canvas-editor/index.js +242 -0
  578. package/src/components/off-canvas-editor/leaf.js +52 -0
  579. package/src/components/off-canvas-editor/link-ui.js +166 -0
  580. package/src/components/off-canvas-editor/style.scss +26 -0
  581. package/src/components/off-canvas-editor/test/utils.js +50 -0
  582. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  583. package/src/components/off-canvas-editor/use-block-selection.js +169 -0
  584. package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
  585. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
  586. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
  587. package/src/components/off-canvas-editor/utils.js +58 -0
  588. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  589. package/src/components/recursion-provider/test/index.js +27 -29
  590. package/src/components/responsive-block-control/test/index.js +69 -92
  591. package/src/components/rich-text/content.scss +42 -0
  592. package/src/components/rich-text/format-toolbar/index.js +6 -4
  593. package/src/components/rich-text/index.js +2 -2
  594. package/src/components/rich-text/index.native.js +0 -2
  595. package/src/components/rich-text/style.scss +0 -43
  596. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  597. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  598. package/src/components/rich-text/utils.js +2 -21
  599. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  600. package/src/components/ungroup-button/index.native.js +6 -2
  601. package/src/components/url-input/index.js +57 -73
  602. package/src/components/url-popover/README.md +12 -3
  603. package/src/components/url-popover/index.js +33 -3
  604. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  605. package/src/components/url-popover/test/index.js +21 -9
  606. package/src/components/use-block-display-information/index.js +14 -5
  607. package/src/components/use-setting/index.js +20 -2
  608. package/src/components/use-setting/test/index.js +99 -0
  609. package/src/content.scss +10 -0
  610. package/src/hooks/child-layout.js +190 -0
  611. package/src/hooks/color-panel.js +13 -1
  612. package/src/hooks/color.js +2 -0
  613. package/src/hooks/content-lock-ui.js +47 -35
  614. package/src/hooks/dimensions.js +119 -21
  615. package/src/hooks/layout.js +62 -3
  616. package/src/hooks/margin.js +4 -3
  617. package/src/hooks/min-height.js +104 -0
  618. package/src/hooks/padding.js +4 -3
  619. package/src/hooks/style.js +10 -2
  620. package/src/hooks/test/style.js +4 -0
  621. package/src/hooks/test/use-typography-props.js +1 -1
  622. package/src/layouts/flex.js +43 -38
  623. package/src/store/actions.js +22 -0
  624. package/src/store/reducer.js +480 -434
  625. package/src/store/selectors.js +70 -64
  626. package/src/store/test/actions.js +18 -0
  627. package/src/store/test/performance.js +71 -0
  628. package/src/store/test/reducer.js +662 -490
  629. package/src/store/test/selectors.js +1839 -1306
  630. package/src/style.scss +4 -7
  631. package/src/utils/sorting.js +54 -0
  632. package/src/utils/test/sorting.js +49 -0
  633. package/tsconfig.tsbuildinfo +1 -1
  634. package/build/components/block-preview/live.js +0 -30
  635. package/build/components/block-preview/live.js.map +0 -1
  636. package/build-module/components/block-preview/live.js +0 -20
  637. package/build-module/components/block-preview/live.js.map +0 -1
  638. package/src/components/block-preview/live.js +0 -19
@@ -0,0 +1,123 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useMemo } from '@wordpress/element';
5
+ import {
6
+ BaseControl,
7
+ RangeControl,
8
+ Flex,
9
+ FlexItem,
10
+ __experimentalSpacer as Spacer,
11
+ __experimentalUseCustomUnits as useCustomUnits,
12
+ __experimentalUnitControl as UnitControl,
13
+ __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,
14
+ } from '@wordpress/components';
15
+ import { __ } from '@wordpress/i18n';
16
+
17
+ /**
18
+ * Internal dependencies
19
+ */
20
+ import useSetting from '../use-setting';
21
+
22
+ const RANGE_CONTROL_CUSTOM_SETTINGS = {
23
+ px: { max: 1000, step: 1 },
24
+ '%': { max: 100, step: 1 },
25
+ vw: { max: 100, step: 1 },
26
+ vh: { max: 100, step: 1 },
27
+ em: { max: 50, step: 0.1 },
28
+ rem: { max: 50, step: 0.1 },
29
+ };
30
+
31
+ export default function HeightControl( {
32
+ onChange,
33
+ label = __( 'Height' ),
34
+ value,
35
+ } ) {
36
+ const customRangeValue = parseFloat( value );
37
+
38
+ const units = useCustomUnits( {
39
+ availableUnits: useSetting( 'spacing.units' ) || [
40
+ '%',
41
+ 'px',
42
+ 'em',
43
+ 'rem',
44
+ 'vh',
45
+ 'vw',
46
+ ],
47
+ } );
48
+
49
+ const selectedUnit =
50
+ useMemo(
51
+ () => parseQuantityAndUnitFromRawValue( value ),
52
+ [ value ]
53
+ )[ 1 ] ||
54
+ units[ 0 ]?.value ||
55
+ 'px';
56
+
57
+ const handleSliderChange = ( next ) => {
58
+ onChange( [ next, selectedUnit ].join( '' ) );
59
+ };
60
+
61
+ const handleUnitChange = ( newUnit ) => {
62
+ // Attempt to smooth over differences between currentUnit and newUnit.
63
+ // This should slightly improve the experience of switching between unit types.
64
+ const [ currentValue, currentUnit ] =
65
+ parseQuantityAndUnitFromRawValue( value );
66
+
67
+ if ( [ 'em', 'rem' ].includes( newUnit ) && currentUnit === 'px' ) {
68
+ // Convert pixel value to an approximate of the new unit, assuming a root size of 16px.
69
+ onChange( ( currentValue / 16 ).toFixed( 2 ) + newUnit );
70
+ } else if (
71
+ [ 'em', 'rem' ].includes( currentUnit ) &&
72
+ newUnit === 'px'
73
+ ) {
74
+ // Convert to pixel value assuming a root size of 16px.
75
+ onChange( Math.round( currentValue * 16 ) + newUnit );
76
+ } else if (
77
+ [ 'vh', 'vw', '%' ].includes( newUnit ) &&
78
+ currentValue > 100
79
+ ) {
80
+ // When converting to `vh`, `vw`, or `%` units, cap the new value at 100.
81
+ onChange( 100 + newUnit );
82
+ }
83
+ };
84
+
85
+ return (
86
+ <fieldset className="block-editor-height-control">
87
+ <BaseControl.VisualLabel as="legend">
88
+ { label }
89
+ </BaseControl.VisualLabel>
90
+ <Flex>
91
+ <FlexItem isBlock>
92
+ <UnitControl
93
+ value={ value }
94
+ units={ units }
95
+ onChange={ onChange }
96
+ onUnitChange={ handleUnitChange }
97
+ min={ 0 }
98
+ size={ '__unstable-large' }
99
+ />
100
+ </FlexItem>
101
+ <FlexItem isBlock>
102
+ <Spacer marginX={ 2 } marginBottom={ 0 }>
103
+ <RangeControl
104
+ value={ customRangeValue }
105
+ min={ 0 }
106
+ max={
107
+ RANGE_CONTROL_CUSTOM_SETTINGS[ selectedUnit ]
108
+ ?.max ?? 100
109
+ }
110
+ step={
111
+ RANGE_CONTROL_CUSTOM_SETTINGS[ selectedUnit ]
112
+ ?.step ?? 0.1
113
+ }
114
+ withInputField={ false }
115
+ onChange={ handleSliderChange }
116
+ __nextHasNoMarginBottom
117
+ />
118
+ </Spacer>
119
+ </FlexItem>
120
+ </Flex>
121
+ </fieldset>
122
+ );
123
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useState } from '@wordpress/element';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import HeightControl from '../';
10
+
11
+ export default {
12
+ component: HeightControl,
13
+ title: 'BlockEditor/HeightControl',
14
+ };
15
+
16
+ const Template = ( props ) => {
17
+ const [ value, setValue ] = useState();
18
+ return <HeightControl onChange={ setValue } value={ value } { ...props } />;
19
+ };
20
+
21
+ export const Default = Template.bind( {} );
@@ -0,0 +1,5 @@
1
+ .block-editor-height-control {
2
+ border: 0;
3
+ margin: 0;
4
+ padding: 0;
5
+ }
@@ -188,7 +188,17 @@ async function loadScript( head, { id, src } ) {
188
188
  }
189
189
 
190
190
  function Iframe(
191
- { contentRef, children, head, tabIndex = 0, assets, isZoomedOut, ...props },
191
+ {
192
+ contentRef,
193
+ children,
194
+ head,
195
+ tabIndex = 0,
196
+ assets,
197
+ scale = 1,
198
+ frameSize = 0,
199
+ readonly,
200
+ ...props
201
+ },
192
202
  ref
193
203
  ) {
194
204
  const [ , forceRender ] = useReducer( () => ( {} ) );
@@ -322,7 +332,7 @@ function Iframe(
322
332
  { head }
323
333
  <style>
324
334
  { `html { transition: background 5s; ${
325
- isZoomedOut
335
+ frameSize
326
336
  ? 'background: #2f2f2f; transition: background 0s;'
327
337
  : ''
328
338
  } }` }
@@ -333,23 +343,20 @@ function Iframe(
333
343
  className={ classnames(
334
344
  'block-editor-iframe__body',
335
345
  BODY_CLASS_NAME,
336
- ...bodyClasses,
337
- {
338
- 'is-zoomed-out': isZoomedOut,
339
- }
346
+ ...bodyClasses
340
347
  ) }
341
- style={
342
- isZoomedOut
343
- ? {
344
- // This is the remaining percentage from the scaling down
345
- // of the iframe body(`scale(0.45)`). We also need to subtract
346
- // the body's bottom margin.
347
- marginBottom: `-${
348
- contentHeight * 0.55 - 100
349
- }px`,
350
- }
351
- : {}
352
- }
348
+ style={ {
349
+ // This is the remaining percentage from the scaling down
350
+ // of the iframe body(`scale(0.45)`). We also need to subtract
351
+ // the body's bottom margin.
352
+ marginBottom: `-${
353
+ contentHeight * ( 1 - scale ) -
354
+ frameSize
355
+ }px`,
356
+ marginTop: frameSize,
357
+ transform: `scale( ${ scale } )`,
358
+ } }
359
+ inert={ readonly ? 'true' : undefined }
353
360
  >
354
361
  { contentResizeListener }
355
362
  { /*
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
+ // Disable Reason: Needs to be refactored.
5
+ // eslint-disable-next-line no-restricted-imports
4
6
  import apiFetch from '@wordpress/api-fetch';
5
7
  import { useDispatch } from '@wordpress/data';
6
8
  import { useCallback, useMemo, useState } from '@wordpress/element';
@@ -28,6 +28,7 @@ export default function ZoomDropdown() {
28
28
  ) }
29
29
  renderContent={ () => (
30
30
  <RangeControl
31
+ __nextHasNoMarginBottom
31
32
  label={ __( 'Zoom' ) }
32
33
  min={ MIN_ZOOM }
33
34
  max={ MAX_ZOOM }
@@ -53,6 +53,7 @@ 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';
56
57
  export {
57
58
  default as __experimentalImageEditor,
58
59
  ImageEditingProvider as __experimentalImageEditingProvider,
@@ -73,6 +74,7 @@ export { default as __experimentalLinkControlSearchResults } from './link-contro
73
74
  export { default as __experimentalLinkControlSearchItem } from './link-control/search-item';
74
75
  export { default as LineHeightControl } from './line-height-control';
75
76
  export { default as __experimentalListView } from './list-view';
77
+ export { default as __experimentalOffCanvasEditor } from './off-canvas-editor';
76
78
  export { default as MediaReplaceFlow } from './media-replace-flow';
77
79
  export { default as MediaPlaceholder } from './media-placeholder';
78
80
  export { default as MediaUpload } from './media-upload';
@@ -7,9 +7,10 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { useViewportMatch, useMergeRefs } from '@wordpress/compose';
10
- import { forwardRef } from '@wordpress/element';
10
+ import { forwardRef, useMemo } from '@wordpress/element';
11
11
  import { useSelect } from '@wordpress/data';
12
12
  import {
13
+ getBlockSupport,
13
14
  getBlockType,
14
15
  store as blocksStore,
15
16
  __unstableGetInnerBlocksProps as getInnerBlocksProps,
@@ -74,27 +75,43 @@ function UncontrolledInnerBlocks( props ) {
74
75
  templateInsertUpdatesSelection
75
76
  );
76
77
 
77
- const context = useSelect(
78
+ const { context, name } = useSelect(
78
79
  ( select ) => {
79
80
  const block = select( blockEditorStore ).getBlock( clientId );
80
81
 
81
82
  // This check is here to avoid the Redux zombie bug where a child subscription
82
83
  // is called before a parent, causing potential JS errors when the child has been removed.
83
84
  if ( ! block ) {
84
- return;
85
+ return {};
85
86
  }
86
87
 
87
88
  const blockType = getBlockType( block.name );
88
89
 
89
90
  if ( ! blockType || ! blockType.providesContext ) {
90
- return;
91
+ return {};
91
92
  }
92
93
 
93
- return getBlockContext( block.attributes, blockType );
94
+ return {
95
+ context: getBlockContext( block.attributes, blockType ),
96
+ name: block.name,
97
+ };
94
98
  },
95
99
  [ clientId ]
96
100
  );
97
101
 
102
+ const { allowSizingOnChildren = false } =
103
+ getBlockSupport( name, '__experimentalLayout' ) || {};
104
+
105
+ const layout = useMemo(
106
+ () => ( {
107
+ ...__experimentalLayout,
108
+ ...( allowSizingOnChildren && {
109
+ allowSizingOnChildren: true,
110
+ } ),
111
+ } ),
112
+ [ __experimentalLayout, allowSizingOnChildren ]
113
+ );
114
+
98
115
  // This component needs to always be synchronous as it's the one changing
99
116
  // the async mode depending on the block selection.
100
117
  return (
@@ -103,7 +120,7 @@ function UncontrolledInnerBlocks( props ) {
103
120
  rootClientId={ clientId }
104
121
  renderAppender={ renderAppender }
105
122
  __experimentalAppenderTagName={ __experimentalAppenderTagName }
106
- __experimentalLayout={ __experimentalLayout }
123
+ __experimentalLayout={ layout }
107
124
  wrapperRef={ wrapperRef }
108
125
  placeholder={ placeholder }
109
126
  />
@@ -150,7 +167,8 @@ const ForwardedInnerBlocks = forwardRef( ( props, ref ) => {
150
167
  * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/inner-blocks/README.md
151
168
  */
152
169
  export function useInnerBlocksProps( props = {}, options = {} ) {
153
- const { __unstableDisableLayoutClassNames } = options;
170
+ const { __unstableDisableLayoutClassNames, __unstableDisableDropZone } =
171
+ options;
154
172
  const { clientId, __unstableLayoutClassNames: layoutClassNames = '' } =
155
173
  useBlockEditContext();
156
174
  const isSmallScreen = useViewportMatch( 'medium', '<' );
@@ -187,11 +205,13 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
187
205
  [ clientId, isSmallScreen ]
188
206
  );
189
207
 
208
+ const blockDropZoneRef = useBlockDropZone( {
209
+ rootClientId: clientId,
210
+ } );
211
+
190
212
  const ref = useMergeRefs( [
191
213
  props.ref,
192
- useBlockDropZone( {
193
- rootClientId: clientId,
194
- } ),
214
+ __unstableDisableDropZone ? null : blockDropZoneRef,
195
215
  ] );
196
216
 
197
217
  const innerBlocksProps = {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEqual } from 'lodash';
4
+ import fastDeepEqual from 'fast-deep-equal/es6';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -40,23 +40,36 @@ export default function useInnerBlockTemplateSync(
40
40
  templateLock,
41
41
  templateInsertUpdatesSelection
42
42
  ) {
43
- const { getSelectedBlocksInitialCaretPosition, isBlockSelected } =
44
- useSelect( blockEditorStore );
45
- const { replaceInnerBlocks } = useDispatch( blockEditorStore );
46
- const innerBlocks = useSelect(
47
- ( select ) => select( blockEditorStore ).getBlocks( clientId ),
43
+ const {
44
+ getBlocks,
45
+ getSelectedBlocksInitialCaretPosition,
46
+ isBlockSelected,
47
+ } = useSelect( blockEditorStore );
48
+ const { replaceInnerBlocks, __unstableMarkNextChangeAsNotPersistent } =
49
+ useDispatch( blockEditorStore );
50
+
51
+ const { innerBlocks } = useSelect(
52
+ ( select ) => ( {
53
+ innerBlocks: select( blockEditorStore ).getBlocks( clientId ),
54
+ } ),
48
55
  [ clientId ]
49
56
  );
50
- const { getBlocks } = useSelect( blockEditorStore );
51
57
 
52
58
  // Maintain a reference to the previous value so we can do a deep equality check.
53
59
  const existingTemplate = useRef( null );
60
+
54
61
  useLayoutEffect( () => {
62
+ let isCancelled = false;
63
+
55
64
  // There's an implicit dependency between useInnerBlockTemplateSync and useNestedSettingsUpdate
56
65
  // The former needs to happen after the latter and since the latter is using microtasks to batch updates (performance optimization),
57
66
  // we need to schedule this one in a microtask as well.
58
- // Exemple: If you remove queueMicrotask here, ctrl + click to insert quote block won't close the inserter.
67
+ // Example: If you remove queueMicrotask here, ctrl + click to insert quote block won't close the inserter.
59
68
  window.queueMicrotask( () => {
69
+ if ( isCancelled ) {
70
+ return;
71
+ }
72
+
60
73
  // Only synchronize innerBlocks with template if innerBlocks are empty
61
74
  // or a locking "all" or "contentOnly" exists directly on the block.
62
75
  const currentInnerBlocks = getBlocks( clientId );
@@ -65,7 +78,7 @@ export default function useInnerBlockTemplateSync(
65
78
  templateLock === 'all' ||
66
79
  templateLock === 'contentOnly';
67
80
 
68
- const hasTemplateChanged = ! isEqual(
81
+ const hasTemplateChanged = ! fastDeepEqual(
69
82
  template,
70
83
  existingTemplate.current
71
84
  );
@@ -80,7 +93,8 @@ export default function useInnerBlockTemplateSync(
80
93
  template
81
94
  );
82
95
 
83
- if ( ! isEqual( nextBlocks, currentInnerBlocks ) ) {
96
+ if ( ! fastDeepEqual( nextBlocks, currentInnerBlocks ) ) {
97
+ __unstableMarkNextChangeAsNotPersistent();
84
98
  replaceInnerBlocks(
85
99
  clientId,
86
100
  nextBlocks,
@@ -96,5 +110,9 @@ export default function useInnerBlockTemplateSync(
96
110
  );
97
111
  }
98
112
  } );
113
+
114
+ return () => {
115
+ isCancelled = true;
116
+ };
99
117
  }, [ innerBlocks, template, templateLock, clientId ] );
100
118
  }
@@ -36,6 +36,7 @@ function PatternsExplorerSearch( { filterValue, setFilterValue } ) {
36
36
  return (
37
37
  <div className={ baseClassName }>
38
38
  <SearchControl
39
+ __nextHasNoMarginBottom
39
40
  onChange={ setFilterValue }
40
41
  value={ filterValue }
41
42
  label={ __( 'Search for patterns' ) }
@@ -8,20 +8,16 @@ import {
8
8
  useRef,
9
9
  useEffect,
10
10
  } from '@wordpress/element';
11
- import { _x, __, isRTL } from '@wordpress/i18n';
11
+ import { _x, __ } from '@wordpress/i18n';
12
12
  import { useAsyncList, useViewportMatch } from '@wordpress/compose';
13
13
  import {
14
14
  __experimentalItemGroup as ItemGroup,
15
15
  __experimentalItem as Item,
16
16
  __experimentalHStack as HStack,
17
- __experimentalNavigatorProvider as NavigatorProvider,
18
- __experimentalNavigatorScreen as NavigatorScreen,
19
- __experimentalNavigatorButton as NavigatorButton,
20
- __experimentalNavigatorBackButton as NavigatorBackButton,
21
17
  FlexBlock,
22
18
  Button,
23
19
  } from '@wordpress/components';
24
- import { Icon, chevronRight, chevronLeft } from '@wordpress/icons';
20
+ import { Icon, chevronRight } from '@wordpress/icons';
25
21
  import { focus } from '@wordpress/dom';
26
22
 
27
23
  /**
@@ -30,6 +26,7 @@ import { focus } from '@wordpress/dom';
30
26
  import usePatternsState from './hooks/use-patterns-state';
31
27
  import BlockPatternList from '../block-patterns-list';
32
28
  import PatternsExplorerModal from './block-patterns-explorer/explorer';
29
+ import MobileTabNavigation from './mobile-tab-navigation';
33
30
 
34
31
  function usePatternsCategories() {
35
32
  const [ allPatterns, allCategories ] = usePatternsState();
@@ -56,10 +53,17 @@ function usePatternsCategories() {
56
53
  )
57
54
  )
58
55
  .sort( ( { name: currentName }, { name: nextName } ) => {
59
- if ( ! [ currentName, nextName ].includes( 'featured' ) ) {
56
+ if (
57
+ ! [ currentName, nextName ].some( ( categoryName ) =>
58
+ [ 'featured', 'text' ].includes( categoryName )
59
+ )
60
+ ) {
60
61
  return 0;
61
62
  }
62
- return currentName === 'featured' ? -1 : 1;
63
+ // Move `featured` category to the top and `text` to the bottom.
64
+ return currentName === 'featured' || nextName === 'text'
65
+ ? -1
66
+ : 1;
63
67
  } );
64
68
 
65
69
  if (
@@ -86,6 +90,7 @@ export function BlockPatternsCategoryDialog( {
86
90
  rootClientId,
87
91
  onInsert,
88
92
  category,
93
+ showTitlesAsTooltip,
89
94
  } ) {
90
95
  const container = useRef();
91
96
 
@@ -100,12 +105,13 @@ export function BlockPatternsCategoryDialog( {
100
105
  return (
101
106
  <div
102
107
  ref={ container }
103
- className="block-editor-inserter__patterns-category-panel"
108
+ className="block-editor-inserter__patterns-category-dialog"
104
109
  >
105
110
  <BlockPatternsCategoryPanel
106
111
  rootClientId={ rootClientId }
107
112
  onInsert={ onInsert }
108
113
  category={ category }
114
+ showTitlesAsTooltip={ showTitlesAsTooltip }
109
115
  />
110
116
  </div>
111
117
  );
@@ -115,6 +121,7 @@ export function BlockPatternsCategoryPanel( {
115
121
  rootClientId,
116
122
  onInsert,
117
123
  category,
124
+ showTitlesAsTooltip,
118
125
  } ) {
119
126
  const [ allPatterns, , onClick ] = usePatternsState(
120
127
  onInsert,
@@ -151,7 +158,7 @@ export function BlockPatternsCategoryPanel( {
151
158
  }
152
159
 
153
160
  return (
154
- <div>
161
+ <div className="block-editor-inserter__patterns-category-panel">
155
162
  <div className="block-editor-inserter__patterns-category-panel-title">
156
163
  { category.label }
157
164
  </div>
@@ -164,6 +171,7 @@ export function BlockPatternsCategoryPanel( {
164
171
  orientation="vertical"
165
172
  category={ category.label }
166
173
  isDraggable
174
+ showTitlesAsTooltip={ showTitlesAsTooltip }
167
175
  />
168
176
  </div>
169
177
  );
@@ -178,7 +186,6 @@ function BlockPatternsTabs( {
178
186
  const [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );
179
187
  const categories = usePatternsCategories();
180
188
  const isMobile = useViewportMatch( 'medium', '<' );
181
-
182
189
  return (
183
190
  <>
184
191
  { ! isMobile && (
@@ -215,12 +222,6 @@ function BlockPatternsTabs( {
215
222
  </HStack>
216
223
  </Item>
217
224
  ) ) }
218
-
219
- <div
220
- role="presentation"
221
- className="block-editor-inserter__patterns-fill-space"
222
- />
223
-
224
225
  <div role="listitem">
225
226
  <Button
226
227
  className="block-editor-inserter__patterns-explore-button"
@@ -237,10 +238,16 @@ function BlockPatternsTabs( {
237
238
  </div>
238
239
  ) }
239
240
  { isMobile && (
240
- <BlockPatternsTabNavigation
241
- onInsert={ onInsert }
242
- rootClientId={ rootClientId }
243
- />
241
+ <MobileTabNavigation categories={ categories }>
242
+ { ( category ) => (
243
+ <BlockPatternsCategoryPanel
244
+ onInsert={ onInsert }
245
+ rootClientId={ rootClientId }
246
+ category={ category }
247
+ showTitlesAsTooltip={ false }
248
+ />
249
+ ) }
250
+ </MobileTabNavigation>
244
251
  ) }
245
252
  { showPatternsExplorer && (
246
253
  <PatternsExplorerModal
@@ -253,54 +260,4 @@ function BlockPatternsTabs( {
253
260
  );
254
261
  }
255
262
 
256
- function BlockPatternsTabNavigation( { onInsert, rootClientId } ) {
257
- const categories = usePatternsCategories();
258
-
259
- return (
260
- <NavigatorProvider initialPath="/">
261
- <NavigatorScreen path="/">
262
- <ItemGroup>
263
- { categories.map( ( category ) => (
264
- <NavigatorButton
265
- key={ category.name }
266
- path={ `/category/${ category.name }` }
267
- as={ Item }
268
- isAction
269
- >
270
- <HStack>
271
- <FlexBlock>{ category.label }</FlexBlock>
272
- <Icon
273
- icon={
274
- isRTL() ? chevronLeft : chevronRight
275
- }
276
- />
277
- </HStack>
278
- </NavigatorButton>
279
- ) ) }
280
- </ItemGroup>
281
- </NavigatorScreen>
282
-
283
- { categories.map( ( category ) => (
284
- <NavigatorScreen
285
- key={ category.name }
286
- path={ `/category/${ category.name }` }
287
- >
288
- <NavigatorBackButton
289
- icon={ isRTL() ? chevronRight : chevronLeft }
290
- isSmall
291
- aria-label={ __( 'Navigate to the categories list' ) }
292
- >
293
- { __( 'Back' ) }
294
- </NavigatorBackButton>
295
- <BlockPatternsCategoryPanel
296
- category={ category }
297
- rootClientId={ rootClientId }
298
- onInsert={ onInsert }
299
- />
300
- </NavigatorScreen>
301
- ) ) }
302
- </NavigatorProvider>
303
- );
304
- }
305
-
306
263
  export default BlockPatternsTabs;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { map, groupBy, orderBy } from 'lodash';
4
+ import { map, groupBy } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -17,6 +17,7 @@ import BlockTypesList from '../block-types-list';
17
17
  import InserterPanel from './panel';
18
18
  import useBlockTypesState from './hooks/use-block-types-state';
19
19
  import InserterListbox from '../inserter-listbox';
20
+ import { orderBy } from '../../utils/sorting';
20
21
 
21
22
  const getBlockNamespace = ( item ) => item.name.split( '/' )[ 0 ];
22
23
 
@@ -42,7 +43,7 @@ export function BlockTypesTab( {
42
43
  );
43
44
 
44
45
  const suggestedItems = useMemo( () => {
45
- return orderBy( items, [ 'frecency' ], [ 'desc' ] ).slice(
46
+ return orderBy( items, 'frecency', 'desc' ).slice(
46
47
  0,
47
48
  MAX_SUGGESTED_ITEMS
48
49
  );
@@ -0,0 +1,17 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useEffect, useState } from '@wordpress/element';
5
+ import { useDebounce } from '@wordpress/compose';
6
+
7
+ export default function useDebouncedInput( defaultValue = '' ) {
8
+ const [ input, setInput ] = useState( defaultValue );
9
+ const [ debounced, setter ] = useState( defaultValue );
10
+ const setDebounced = useDebounce( setter, 250 );
11
+ useEffect( () => {
12
+ if ( debounced !== input ) {
13
+ setDebounced( input );
14
+ }
15
+ }, [ debounced, input ] );
16
+ return [ input, setInput, debounced ];
17
+ }