@wordpress/block-editor 10.5.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 (488) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/autocompleters/block.js +2 -6
  3. package/build/autocompleters/block.js.map +1 -1
  4. package/build/autocompleters/link.js +2 -0
  5. package/build/autocompleters/link.js.map +1 -1
  6. package/build/components/block-card/index.js +51 -3
  7. package/build/components/block-card/index.js.map +1 -1
  8. package/build/components/block-draggable/index.native.js +46 -39
  9. package/build/components/block-draggable/index.native.js.map +1 -1
  10. package/build/components/block-edit/edit.js +4 -3
  11. package/build/components/block-edit/edit.js.map +1 -1
  12. package/build/components/block-edit/edit.native.js +4 -7
  13. package/build/components/block-edit/edit.native.js.map +1 -1
  14. package/build/components/block-inspector/index.js +35 -33
  15. package/build/components/block-inspector/index.js.map +1 -1
  16. package/build/components/block-list/block-list-context.native.js +5 -8
  17. package/build/components/block-list/block-list-context.native.js.map +1 -1
  18. package/build/components/block-list/block.js +55 -24
  19. package/build/components/block-list/block.js.map +1 -1
  20. package/build/components/block-list/block.native.js +61 -28
  21. package/build/components/block-list/block.native.js.map +1 -1
  22. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +12 -4
  23. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  24. package/build/components/block-pattern-setup/index.js +3 -2
  25. package/build/components/block-pattern-setup/index.js.map +1 -1
  26. package/build/components/block-patterns-list/index.js +33 -11
  27. package/build/components/block-patterns-list/index.js.map +1 -1
  28. package/build/components/block-preview/auto.js +9 -3
  29. package/build/components/block-preview/auto.js.map +1 -1
  30. package/build/components/block-preview/index.js +5 -9
  31. package/build/components/block-preview/index.js.map +1 -1
  32. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  33. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  34. package/build/components/block-toolbar/index.js +5 -1
  35. package/build/components/block-toolbar/index.js.map +1 -1
  36. package/build/components/block-tools/insertion-point.js +8 -49
  37. package/build/components/block-tools/insertion-point.js.map +1 -1
  38. package/build/components/block-variation-picker/index.js +1 -2
  39. package/build/components/block-variation-picker/index.js.map +1 -1
  40. package/build/components/height-control/index.js +115 -0
  41. package/build/components/height-control/index.js.map +1 -0
  42. package/build/components/iframe/index.js +11 -8
  43. package/build/components/iframe/index.js.map +1 -1
  44. package/build/components/image-editor/use-save-image.js +2 -0
  45. package/build/components/image-editor/use-save-image.js.map +1 -1
  46. package/build/components/image-editor/zoom-dropdown.js +1 -0
  47. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  48. package/build/components/index.js +9 -0
  49. package/build/components/index.js.map +1 -1
  50. package/build/components/inner-blocks/index.js +20 -6
  51. package/build/components/inner-blocks/index.js.map +1 -1
  52. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  53. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  54. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  55. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  56. package/build/components/inserter/block-patterns-tab.js +25 -46
  57. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  58. package/build/components/inserter/block-types-tab.js +3 -1
  59. package/build/components/inserter/block-types-tab.js.map +1 -1
  60. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  61. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  62. package/build/components/inserter/index.js +8 -3
  63. package/build/components/inserter/index.js.map +1 -1
  64. package/build/components/inserter/index.native.js +3 -4
  65. package/build/components/inserter/index.native.js.map +1 -1
  66. package/build/components/inserter/media-tab/hooks.js +103 -0
  67. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  68. package/build/components/inserter/media-tab/index.js +32 -0
  69. package/build/components/inserter/media-tab/index.js.map +1 -0
  70. package/build/components/inserter/media-tab/media-list.js +100 -0
  71. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  72. package/build/components/inserter/media-tab/media-panel.js +96 -0
  73. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  74. package/build/components/inserter/media-tab/media-tab.js +120 -0
  75. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  76. package/build/components/inserter/media-tab/utils.js +54 -0
  77. package/build/components/inserter/media-tab/utils.js.map +1 -0
  78. package/build/components/inserter/menu.js +35 -12
  79. package/build/components/inserter/menu.js.map +1 -1
  80. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  81. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  82. package/build/components/inserter/quick-inserter.js +1 -0
  83. package/build/components/inserter/quick-inserter.js.map +1 -1
  84. package/build/components/inserter/search-results.js +3 -1
  85. package/build/components/inserter/search-results.js.map +1 -1
  86. package/build/components/inserter/tabs.js +16 -2
  87. package/build/components/inserter/tabs.js.map +1 -1
  88. package/build/components/inserter-list-item/index.js +4 -1
  89. package/build/components/inserter-list-item/index.js.map +1 -1
  90. package/build/components/inspector-controls/groups.js +2 -0
  91. package/build/components/inspector-controls/groups.js.map +1 -1
  92. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  93. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  94. package/build/components/inspector-controls-tabs/index.js +71 -0
  95. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  96. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  97. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  98. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  99. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  100. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  101. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  102. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  103. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  104. package/build/components/inspector-controls-tabs/utils.js +37 -0
  105. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  106. package/build/components/link-control/index.js +1 -0
  107. package/build/components/link-control/index.js.map +1 -1
  108. package/build/components/link-control/search-input.js +0 -1
  109. package/build/components/link-control/search-input.js.map +1 -1
  110. package/build/components/link-control/use-internal-input-value.js +3 -3
  111. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  112. package/build/components/list-view/block.js +5 -2
  113. package/build/components/list-view/block.js.map +1 -1
  114. package/build/components/list-view/branch.js +13 -12
  115. package/build/components/list-view/branch.js.map +1 -1
  116. package/build/components/media-upload/index.native.js +2 -3
  117. package/build/components/media-upload/index.native.js.map +1 -1
  118. package/build/components/off-canvas-editor/appender.js +104 -0
  119. package/build/components/off-canvas-editor/appender.js.map +1 -0
  120. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  121. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  122. package/build/components/off-canvas-editor/block.js +36 -4
  123. package/build/components/off-canvas-editor/block.js.map +1 -1
  124. package/build/components/off-canvas-editor/branch.js +3 -5
  125. package/build/components/off-canvas-editor/branch.js.map +1 -1
  126. package/build/components/off-canvas-editor/index.js +20 -11
  127. package/build/components/off-canvas-editor/index.js.map +1 -1
  128. package/build/components/off-canvas-editor/leaf.js +1 -1
  129. package/build/components/off-canvas-editor/leaf.js.map +1 -1
  130. package/build/components/off-canvas-editor/link-ui.js +185 -0
  131. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  132. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  133. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  134. package/build/components/rich-text/format-toolbar/index.js +8 -4
  135. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  136. package/build/components/rich-text/index.js +3 -3
  137. package/build/components/rich-text/index.js.map +1 -1
  138. package/build/components/rich-text/index.native.js +0 -2
  139. package/build/components/rich-text/index.native.js.map +1 -1
  140. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  141. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  142. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  143. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  144. package/build/components/rich-text/utils.js +1 -19
  145. package/build/components/rich-text/utils.js.map +1 -1
  146. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  147. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  148. package/build/components/ungroup-button/index.native.js +4 -2
  149. package/build/components/ungroup-button/index.native.js.map +1 -1
  150. package/build/components/url-input/index.js +46 -43
  151. package/build/components/url-input/index.js.map +1 -1
  152. package/build/components/use-block-display-information/index.js +8 -4
  153. package/build/components/use-block-display-information/index.js.map +1 -1
  154. package/build/components/use-setting/index.js +9 -1
  155. package/build/components/use-setting/index.js.map +1 -1
  156. package/build/hooks/child-layout.js +209 -0
  157. package/build/hooks/child-layout.js.map +1 -0
  158. package/build/hooks/content-lock-ui.js +1 -1
  159. package/build/hooks/content-lock-ui.js.map +1 -1
  160. package/build/hooks/dimensions.js +25 -7
  161. package/build/hooks/dimensions.js.map +1 -1
  162. package/build/hooks/layout.js +57 -1
  163. package/build/hooks/layout.js.map +1 -1
  164. package/build/hooks/min-height.js +4 -10
  165. package/build/hooks/min-height.js.map +1 -1
  166. package/build/store/reducer.js +393 -270
  167. package/build/store/reducer.js.map +1 -1
  168. package/build/store/selectors.js +57 -47
  169. package/build/store/selectors.js.map +1 -1
  170. package/build/utils/sorting.js +63 -0
  171. package/build/utils/sorting.js.map +1 -0
  172. package/build-module/autocompleters/block.js +2 -6
  173. package/build-module/autocompleters/block.js.map +1 -1
  174. package/build-module/autocompleters/link.js +2 -0
  175. package/build-module/autocompleters/link.js.map +1 -1
  176. package/build-module/components/block-card/index.js +45 -3
  177. package/build-module/components/block-card/index.js.map +1 -1
  178. package/build-module/components/block-draggable/index.native.js +40 -31
  179. package/build-module/components/block-draggable/index.native.js.map +1 -1
  180. package/build-module/components/block-edit/edit.js +4 -2
  181. package/build-module/components/block-edit/edit.js.map +1 -1
  182. package/build-module/components/block-edit/edit.native.js +4 -6
  183. package/build-module/components/block-edit/edit.native.js.map +1 -1
  184. package/build-module/components/block-inspector/index.js +32 -30
  185. package/build-module/components/block-inspector/index.js.map +1 -1
  186. package/build-module/components/block-list/block-list-context.native.js +5 -8
  187. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  188. package/build-module/components/block-list/block.js +55 -25
  189. package/build-module/components/block-list/block.js.map +1 -1
  190. package/build-module/components/block-list/block.native.js +61 -28
  191. package/build-module/components/block-list/block.native.js.map +1 -1
  192. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +13 -6
  193. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  194. package/build-module/components/block-pattern-setup/index.js +3 -2
  195. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  196. package/build-module/components/block-patterns-list/index.js +35 -13
  197. package/build-module/components/block-patterns-list/index.js.map +1 -1
  198. package/build-module/components/block-preview/auto.js +9 -3
  199. package/build-module/components/block-preview/auto.js.map +1 -1
  200. package/build-module/components/block-preview/index.js +5 -8
  201. package/build-module/components/block-preview/index.js.map +1 -1
  202. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  203. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  204. package/build-module/components/block-toolbar/index.js +6 -2
  205. package/build-module/components/block-toolbar/index.js.map +1 -1
  206. package/build-module/components/block-tools/insertion-point.js +8 -49
  207. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  208. package/build-module/components/block-variation-picker/index.js +1 -2
  209. package/build-module/components/block-variation-picker/index.js.map +1 -1
  210. package/build-module/components/height-control/index.js +103 -0
  211. package/build-module/components/height-control/index.js.map +1 -0
  212. package/build-module/components/iframe/index.js +11 -8
  213. package/build-module/components/iframe/index.js.map +1 -1
  214. package/build-module/components/image-editor/use-save-image.js +2 -0
  215. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  216. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  217. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  218. package/build-module/components/index.js +1 -0
  219. package/build-module/components/index.js.map +1 -1
  220. package/build-module/components/inner-blocks/index.js +22 -8
  221. package/build-module/components/inner-blocks/index.js.map +1 -1
  222. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  223. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  224. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  225. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  226. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  227. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  228. package/build-module/components/inserter/block-types-tab.js +3 -2
  229. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  230. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  231. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  232. package/build-module/components/inserter/index.js +8 -3
  233. package/build-module/components/inserter/index.js.map +1 -1
  234. package/build-module/components/inserter/index.native.js +3 -5
  235. package/build-module/components/inserter/index.native.js.map +1 -1
  236. package/build-module/components/inserter/media-tab/hooks.js +89 -0
  237. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  238. package/build-module/components/inserter/media-tab/index.js +4 -0
  239. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  240. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  241. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  242. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  243. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  244. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  245. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  246. package/build-module/components/inserter/media-tab/utils.js +45 -0
  247. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  248. package/build-module/components/inserter/menu.js +33 -12
  249. package/build-module/components/inserter/menu.js.map +1 -1
  250. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  251. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  252. package/build-module/components/inserter/quick-inserter.js +1 -0
  253. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  254. package/build-module/components/inserter/search-results.js +3 -2
  255. package/build-module/components/inserter/search-results.js.map +1 -1
  256. package/build-module/components/inserter/tabs.js +15 -2
  257. package/build-module/components/inserter/tabs.js.map +1 -1
  258. package/build-module/components/inserter-list-item/index.js +5 -2
  259. package/build-module/components/inserter-list-item/index.js.map +1 -1
  260. package/build-module/components/inspector-controls/groups.js +2 -0
  261. package/build-module/components/inspector-controls/groups.js.map +1 -1
  262. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  263. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  264. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  265. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  266. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  267. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  268. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  269. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  270. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  271. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  272. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  273. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  274. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  275. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  276. package/build-module/components/link-control/index.js +1 -0
  277. package/build-module/components/link-control/index.js.map +1 -1
  278. package/build-module/components/link-control/search-input.js +0 -1
  279. package/build-module/components/link-control/search-input.js.map +1 -1
  280. package/build-module/components/link-control/use-internal-input-value.js +3 -3
  281. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  282. package/build-module/components/list-view/block.js +5 -2
  283. package/build-module/components/list-view/block.js.map +1 -1
  284. package/build-module/components/list-view/branch.js +12 -11
  285. package/build-module/components/list-view/branch.js.map +1 -1
  286. package/build-module/components/media-upload/index.native.js +2 -4
  287. package/build-module/components/media-upload/index.native.js.map +1 -1
  288. package/build-module/components/off-canvas-editor/appender.js +89 -0
  289. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  290. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  291. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  292. package/build-module/components/off-canvas-editor/block.js +36 -6
  293. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  294. package/build-module/components/off-canvas-editor/branch.js +3 -4
  295. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  296. package/build-module/components/off-canvas-editor/index.js +20 -12
  297. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  298. package/build-module/components/off-canvas-editor/leaf.js +1 -1
  299. package/build-module/components/off-canvas-editor/leaf.js.map +1 -1
  300. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  301. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  302. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  303. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  304. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  305. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  306. package/build-module/components/rich-text/index.js +2 -3
  307. package/build-module/components/rich-text/index.js.map +1 -1
  308. package/build-module/components/rich-text/index.native.js +0 -2
  309. package/build-module/components/rich-text/index.native.js.map +1 -1
  310. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  311. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  312. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  313. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  314. package/build-module/components/rich-text/utils.js +1 -16
  315. package/build-module/components/rich-text/utils.js.map +1 -1
  316. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  317. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  318. package/build-module/components/ungroup-button/index.native.js +3 -2
  319. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  320. package/build-module/components/url-input/index.js +46 -43
  321. package/build-module/components/url-input/index.js.map +1 -1
  322. package/build-module/components/use-block-display-information/index.js +9 -5
  323. package/build-module/components/use-block-display-information/index.js.map +1 -1
  324. package/build-module/components/use-setting/index.js +8 -1
  325. package/build-module/components/use-setting/index.js.map +1 -1
  326. package/build-module/hooks/child-layout.js +189 -0
  327. package/build-module/hooks/child-layout.js.map +1 -0
  328. package/build-module/hooks/content-lock-ui.js +1 -1
  329. package/build-module/hooks/content-lock-ui.js.map +1 -1
  330. package/build-module/hooks/dimensions.js +25 -8
  331. package/build-module/hooks/dimensions.js.map +1 -1
  332. package/build-module/hooks/layout.js +55 -0
  333. package/build-module/hooks/layout.js.map +1 -1
  334. package/build-module/hooks/min-height.js +3 -9
  335. package/build-module/hooks/min-height.js.map +1 -1
  336. package/build-module/store/reducer.js +391 -271
  337. package/build-module/store/reducer.js.map +1 -1
  338. package/build-module/store/selectors.js +54 -47
  339. package/build-module/store/selectors.js.map +1 -1
  340. package/build-module/utils/sorting.js +56 -0
  341. package/build-module/utils/sorting.js.map +1 -0
  342. package/build-style/content-rtl.css +701 -0
  343. package/build-style/content.css +701 -0
  344. package/build-style/default-editor-styles-rtl.css +14 -0
  345. package/build-style/default-editor-styles.css +14 -0
  346. package/build-style/style-rtl.css +286 -662
  347. package/build-style/style.css +286 -662
  348. package/package.json +32 -30
  349. package/src/autocompleters/block.js +2 -6
  350. package/src/autocompleters/link.js +2 -0
  351. package/src/components/alignment-control/test/index.js +4 -1
  352. package/src/components/block-alignment-control/test/index.js +4 -1
  353. package/src/components/block-card/index.js +46 -2
  354. package/src/components/block-card/style.scss +4 -0
  355. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  356. package/src/components/block-draggable/content.scss +20 -0
  357. package/src/components/block-draggable/index.native.js +54 -40
  358. package/src/components/block-draggable/style.scss +0 -21
  359. package/src/components/block-draggable/test/helpers.native.js +7 -9
  360. package/src/components/block-draggable/test/index.native.js +35 -45
  361. package/src/components/block-edit/edit.js +5 -2
  362. package/src/components/block-edit/edit.native.js +5 -6
  363. package/src/components/block-inspector/index.js +96 -81
  364. package/src/components/block-inspector/style.scss +9 -1
  365. package/src/components/block-list/block-list-context.native.js +5 -8
  366. package/src/components/block-list/block.js +74 -23
  367. package/src/components/block-list/block.native.js +78 -23
  368. package/src/components/block-list/{style.scss → content.scss} +1 -15
  369. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  370. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +24 -6
  371. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -2
  372. package/src/components/block-pattern-setup/index.js +2 -1
  373. package/src/components/block-patterns-list/index.js +47 -24
  374. package/src/components/block-preview/README.md +15 -10
  375. package/src/components/block-preview/auto.js +7 -1
  376. package/src/components/block-preview/content.scss +4 -0
  377. package/src/components/block-preview/index.js +7 -12
  378. package/src/components/block-preview/style.scss +0 -7
  379. package/src/components/block-preview/test/index.js +18 -35
  380. package/src/components/block-selection-clearer/test/index.js +12 -12
  381. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  382. package/src/components/block-switcher/test/index.js +4 -0
  383. package/src/components/block-toolbar/index.js +12 -5
  384. package/src/components/block-toolbar/style.scss +10 -0
  385. package/src/components/block-tools/insertion-point.js +3 -47
  386. package/src/components/block-tools/style.scss +12 -5
  387. package/src/components/block-variation-picker/index.js +1 -4
  388. package/src/components/block-vertical-alignment-control/test/index.js +4 -1
  389. package/src/components/default-block-appender/{style.scss → content.scss} +0 -0
  390. package/src/components/height-control/index.js +123 -0
  391. package/src/components/height-control/stories/index.js +21 -0
  392. package/src/components/height-control/style.scss +5 -0
  393. package/src/components/iframe/index.js +25 -18
  394. package/src/components/image-editor/use-save-image.js +2 -0
  395. package/src/components/image-editor/zoom-dropdown.js +1 -0
  396. package/src/components/index.js +1 -0
  397. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  398. package/src/components/inner-blocks/index.js +23 -6
  399. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  400. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  401. package/src/components/inserter/block-patterns-tab.js +28 -71
  402. package/src/components/inserter/block-types-tab.js +3 -2
  403. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  404. package/src/components/inserter/index.js +10 -2
  405. package/src/components/inserter/index.native.js +1 -1
  406. package/src/components/inserter/media-tab/hooks.js +88 -0
  407. package/src/components/inserter/media-tab/index.js +3 -0
  408. package/src/components/inserter/media-tab/media-list.js +93 -0
  409. package/src/components/inserter/media-tab/media-panel.js +83 -0
  410. package/src/components/inserter/media-tab/media-tab.js +135 -0
  411. package/src/components/inserter/media-tab/utils.js +37 -0
  412. package/src/components/inserter/menu.js +55 -13
  413. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  414. package/src/components/inserter/quick-inserter.js +1 -0
  415. package/src/components/inserter/search-results.js +3 -2
  416. package/src/components/inserter/stories/index.js +1 -1
  417. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  418. package/src/components/inserter/style.scss +176 -11
  419. package/src/components/inserter/tabs.js +12 -1
  420. package/src/components/inserter-list-item/index.js +11 -1
  421. package/src/components/inserter-list-item/style.scss +26 -0
  422. package/src/components/inspector-controls/groups.js +2 -0
  423. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  424. package/src/components/inspector-controls-tabs/index.js +62 -0
  425. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  426. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  427. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  428. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  429. package/src/components/inspector-controls-tabs/utils.js +28 -0
  430. package/src/components/line-height-control/test/index.js +5 -5
  431. package/src/components/link-control/README.md +1 -1
  432. package/src/components/link-control/index.js +1 -0
  433. package/src/components/link-control/search-input.js +0 -1
  434. package/src/components/link-control/test/index.js +188 -401
  435. package/src/components/link-control/use-internal-input-value.js +3 -3
  436. package/src/components/list-view/block.js +3 -0
  437. package/src/components/list-view/branch.js +10 -8
  438. package/src/components/list-view/style.scss +20 -9
  439. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  440. package/src/components/media-replace-flow/test/index.js +37 -9
  441. package/src/components/media-upload/test/index.native.js +2 -0
  442. package/src/components/off-canvas-editor/appender.js +93 -0
  443. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  444. package/src/components/off-canvas-editor/block.js +88 -22
  445. package/src/components/off-canvas-editor/branch.js +3 -5
  446. package/src/components/off-canvas-editor/index.js +59 -33
  447. package/src/components/off-canvas-editor/leaf.js +5 -1
  448. package/src/components/off-canvas-editor/link-ui.js +166 -0
  449. package/src/components/off-canvas-editor/style.scss +17 -388
  450. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  451. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  452. package/src/components/recursion-provider/test/index.js +27 -29
  453. package/src/components/rich-text/content.scss +42 -0
  454. package/src/components/rich-text/format-toolbar/index.js +6 -4
  455. package/src/components/rich-text/index.js +2 -2
  456. package/src/components/rich-text/index.native.js +0 -2
  457. package/src/components/rich-text/style.scss +0 -43
  458. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  459. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  460. package/src/components/rich-text/utils.js +2 -21
  461. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  462. package/src/components/ungroup-button/index.native.js +6 -2
  463. package/src/components/url-input/index.js +57 -73
  464. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  465. package/src/components/url-popover/test/index.js +21 -9
  466. package/src/components/use-block-display-information/index.js +14 -5
  467. package/src/components/use-setting/index.js +13 -1
  468. package/src/components/use-setting/test/index.js +99 -0
  469. package/src/content.scss +10 -0
  470. package/src/hooks/child-layout.js +190 -0
  471. package/src/hooks/content-lock-ui.js +1 -1
  472. package/src/hooks/dimensions.js +45 -7
  473. package/src/hooks/layout.js +60 -0
  474. package/src/hooks/min-height.js +2 -19
  475. package/src/store/reducer.js +459 -423
  476. package/src/store/selectors.js +56 -57
  477. package/src/store/test/performance.js +71 -0
  478. package/src/store/test/reducer.js +623 -491
  479. package/src/store/test/selectors.js +1820 -1306
  480. package/src/style.scss +4 -7
  481. package/src/utils/sorting.js +54 -0
  482. package/src/utils/test/sorting.js +49 -0
  483. package/tsconfig.tsbuildinfo +1 -1
  484. package/build/components/block-preview/live.js +0 -30
  485. package/build/components/block-preview/live.js.map +0 -1
  486. package/build-module/components/block-preview/live.js +0 -20
  487. package/build-module/components/block-preview/live.js.map +0 -1
  488. package/src/components/block-preview/live.js +0 -19
@@ -79,7 +79,6 @@ function InbetweenInsertionPointPopover( {
79
79
  isInserterShown: insertionPoint?.__unstableWithInserter,
80
80
  };
81
81
  }, [] );
82
- const isVertical = orientation === 'vertical';
83
82
 
84
83
  const disableMotion = useReducedMotion();
85
84
 
@@ -105,65 +104,22 @@ function InbetweenInsertionPointPopover( {
105
104
  }
106
105
  }
107
106
 
108
- // Define animation variants for the line element.
109
- const horizontalLine = {
110
- start: {
111
- width: 0,
112
- top: '50%',
113
- bottom: '50%',
114
- x: 0,
115
- },
116
- rest: {
117
- width: 4,
118
- top: 0,
119
- bottom: 0,
120
- x: -2,
121
- },
122
- hover: {
123
- width: 4,
124
- top: 0,
125
- bottom: 0,
126
- x: -2,
127
- },
128
- };
129
- const verticalLine = {
130
- start: {
131
- height: 0,
132
- left: '50%',
133
- right: '50%',
134
- y: 0,
135
- },
136
- rest: {
137
- height: 4,
138
- left: 0,
139
- right: 0,
140
- y: -2,
141
- },
142
- hover: {
143
- height: 4,
144
- left: 0,
145
- right: 0,
146
- y: -2,
147
- },
148
- };
149
107
  const lineVariants = {
150
108
  // Initial position starts from the center and invisible.
151
109
  start: {
152
- ...( ! isVertical ? horizontalLine.start : verticalLine.start ),
153
110
  opacity: 0,
111
+ scale: 0,
154
112
  },
155
113
  // The line expands to fill the container. If the inserter is visible it
156
114
  // is delayed so it appears orchestrated.
157
115
  rest: {
158
- ...( ! isVertical ? horizontalLine.rest : verticalLine.rest ),
159
116
  opacity: 1,
160
- borderRadius: '2px',
117
+ scale: 1,
161
118
  transition: { delay: isInserterShown ? 0.5 : 0, type: 'tween' },
162
119
  },
163
120
  hover: {
164
- ...( ! isVertical ? horizontalLine.hover : verticalLine.hover ),
165
121
  opacity: 1,
166
- borderRadius: '2px',
122
+ scale: 1,
167
123
  transition: { delay: 0.5, type: 'tween' },
168
124
  },
169
125
  };
@@ -13,17 +13,22 @@
13
13
  .block-editor-block-list__insertion-point-indicator {
14
14
  position: absolute;
15
15
  background: var(--wp-admin-theme-color);
16
+ border-radius: 2px;
17
+ transform-origin: center;
18
+ opacity: 0;
19
+ will-change: transform, opacity;
16
20
 
17
21
  .block-editor-block-list__insertion-point.is-vertical > & {
18
- top: 50%;
19
- height: $border-width;
22
+ top: calc(50% - 2px);
23
+ height: 4px;
24
+ width: 100%;
20
25
  }
21
26
 
22
27
  .block-editor-block-list__insertion-point.is-horizontal > & {
23
28
  top: 0;
24
- right: 0;
25
- left: 50%;
26
- width: $border-width;
29
+ bottom: 0;
30
+ left: calc(50% - 2px);
31
+ width: 4px;
27
32
  }
28
33
  }
29
34
 
@@ -32,6 +37,8 @@
32
37
  // Don't show on mobile.
33
38
  display: none;
34
39
  position: absolute;
40
+ will-change: transform;
41
+
35
42
  @include break-mobile() {
36
43
  display: flex;
37
44
  }
@@ -49,10 +49,7 @@ function BlockVariationPicker( {
49
49
  className="block-editor-block-variation-picker__variation"
50
50
  label={ variation.description || variation.title }
51
51
  />
52
- <span
53
- className="block-editor-block-variation-picker__variation-label"
54
- role="presentation"
55
- >
52
+ <span className="block-editor-block-variation-picker__variation-label">
56
53
  { variation.title }
57
54
  </span>
58
55
  </li>
@@ -45,7 +45,7 @@ describe( 'BlockVerticalAlignmentUI', () => {
45
45
  advanceTimers: jest.advanceTimersByTime,
46
46
  } );
47
47
 
48
- render(
48
+ const { unmount } = render(
49
49
  <BlockVerticalAlignmentUI
50
50
  isToolbar
51
51
  value={ alignment }
@@ -70,6 +70,9 @@ describe( 'BlockVerticalAlignmentUI', () => {
70
70
  name: /^Align \w+$/,
71
71
  } )
72
72
  ).toHaveLength( 3 );
73
+
74
+ // Cancel running effects, like delayed dropdown menu popover positioning.
75
+ unmount();
73
76
  } );
74
77
 
75
78
  it( 'should call onChange with undefined, when the control is already active', async () => {
@@ -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,
@@ -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
  />
@@ -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' ) }