@wordpress/block-editor 9.8.1-next.957ca95e4c.0 → 10.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 (456) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +13 -1
  3. package/build/components/alignment-control/ui.js +6 -5
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-actions/index.js +5 -9
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +5 -5
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js +2 -4
  10. package/build/components/block-content-overlay/index.js.map +1 -1
  11. package/build/components/block-draggable/draggable-chip.js +2 -1
  12. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  13. package/build/components/block-edit/edit.js +1 -1
  14. package/build/components/block-edit/edit.js.map +1 -1
  15. package/build/components/block-inspector/index.js +125 -17
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block.js +40 -9
  18. package/build/components/block-list/block.js.map +1 -1
  19. package/build/components/block-list/index.js +4 -4
  20. package/build/components/block-list/index.js.map +1 -1
  21. package/build/components/block-list/use-block-props/index.js +14 -11
  22. package/build/components/block-list/use-block-props/index.js.map +1 -1
  23. package/build/components/block-list/use-block-props/use-block-class-names.js +3 -2
  24. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-focus-first-element.js +3 -9
  26. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-is-hovered.js +1 -2
  28. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  29. package/build/components/block-list/use-in-between-inserter.js +7 -12
  30. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  31. package/build/components/block-list-appender/index.js +20 -21
  32. package/build/components/block-list-appender/index.js.map +1 -1
  33. package/build/components/block-list-appender/index.native.js +1 -7
  34. package/build/components/block-list-appender/index.native.js.map +1 -1
  35. package/build/components/block-lock/use-block-lock.js +3 -1
  36. package/build/components/block-lock/use-block-lock.js.map +1 -1
  37. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +20 -10
  38. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  39. package/build/components/block-mover/button.js +4 -6
  40. package/build/components/block-mover/button.js.map +1 -1
  41. package/build/components/block-mover/index.js +4 -6
  42. package/build/components/block-mover/index.js.map +1 -1
  43. package/build/components/block-mover/index.native.js +24 -8
  44. package/build/components/block-mover/index.native.js.map +1 -1
  45. package/build/components/block-popover/inbetween.js +58 -16
  46. package/build/components/block-popover/inbetween.js.map +1 -1
  47. package/build/components/block-popover/index.js +3 -2
  48. package/build/components/block-popover/index.js.map +1 -1
  49. package/build/components/block-preview/auto.js +4 -2
  50. package/build/components/block-preview/auto.js.map +1 -1
  51. package/build/components/block-settings-menu/block-settings-dropdown.js +3 -1
  52. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  53. package/build/components/block-settings-menu-controls/index.js +3 -1
  54. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  55. package/build/components/block-styles/preview-panel.js +7 -1
  56. package/build/components/block-styles/preview-panel.js.map +1 -1
  57. package/build/components/block-switcher/block-transformations-menu.js +114 -25
  58. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  59. package/build/components/block-toolbar/index.js +9 -8
  60. package/build/components/block-toolbar/index.js.map +1 -1
  61. package/build/components/block-tools/block-contextual-toolbar.js +3 -2
  62. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  63. package/build/components/block-tools/block-selection-button.js +13 -5
  64. package/build/components/block-tools/block-selection-button.js.map +1 -1
  65. package/build/components/block-tools/index.js +33 -15
  66. package/build/components/block-tools/index.js.map +1 -1
  67. package/build/components/block-tools/insertion-point.js +4 -9
  68. package/build/components/block-tools/insertion-point.js.map +1 -1
  69. package/build/components/block-tools/selected-block-popover.js +9 -8
  70. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  71. package/build/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  72. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  73. package/build/components/block-tools/zoom-out-mode-inserters.js +71 -0
  74. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  75. package/build/components/block-vertical-alignment-control/ui.js +5 -2
  76. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +1 -1
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/iframe/index.js +31 -4
  80. package/build/components/iframe/index.js.map +1 -1
  81. package/build/components/inner-blocks/default-block-appender.js +1 -7
  82. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  83. package/build/components/inner-blocks/index.js +2 -2
  84. package/build/components/inner-blocks/index.js.map +1 -1
  85. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -5
  86. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  87. package/build/components/inner-blocks/use-nested-settings-update.js +1 -1
  88. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  89. package/build/components/inserter/index.js +3 -6
  90. package/build/components/inserter/index.js.map +1 -1
  91. package/build/components/inserter/library.js +14 -3
  92. package/build/components/inserter/library.js.map +1 -1
  93. package/build/components/inserter/menu.js +21 -8
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter/preview-panel.js +1 -1
  96. package/build/components/inserter/preview-panel.js.map +1 -1
  97. package/build/components/inserter/tabs.js +11 -4
  98. package/build/components/inserter/tabs.js.map +1 -1
  99. package/build/components/link-control/link-preview.js +1 -1
  100. package/build/components/link-control/link-preview.js.map +1 -1
  101. package/build/components/link-control/search-input.js +6 -3
  102. package/build/components/link-control/search-input.js.map +1 -1
  103. package/build/components/link-control/search-item.js +36 -5
  104. package/build/components/link-control/search-item.js.map +1 -1
  105. package/build/components/list-view/block.js +23 -11
  106. package/build/components/list-view/block.js.map +1 -1
  107. package/build/components/list-view/branch.js +19 -2
  108. package/build/components/list-view/branch.js.map +1 -1
  109. package/build/components/list-view/index.js +8 -4
  110. package/build/components/list-view/index.js.map +1 -1
  111. package/build/components/list-view/use-block-selection.js +0 -1
  112. package/build/components/list-view/use-block-selection.js.map +1 -1
  113. package/build/components/provider/use-block-sync.js +1 -7
  114. package/build/components/provider/use-block-sync.js.map +1 -1
  115. package/build/components/publish-date-time-picker/index.js +1 -1
  116. package/build/components/publish-date-time-picker/index.js.map +1 -1
  117. package/build/components/rich-text/index.js +27 -19
  118. package/build/components/rich-text/index.js.map +1 -1
  119. package/build/components/rich-text/index.native.js +11 -20
  120. package/build/components/rich-text/index.native.js.map +1 -1
  121. package/build/components/text-decoration-control/index.js +1 -1
  122. package/build/components/text-decoration-control/index.js.map +1 -1
  123. package/build/components/text-transform-control/index.js +1 -1
  124. package/build/components/text-transform-control/index.js.map +1 -1
  125. package/build/components/tool-selector/index.js +6 -11
  126. package/build/components/tool-selector/index.js.map +1 -1
  127. package/build/components/url-popover/index.js +1 -1
  128. package/build/components/url-popover/index.js.map +1 -1
  129. package/build/components/use-block-drop-zone/index.js +7 -4
  130. package/build/components/use-block-drop-zone/index.js.map +1 -1
  131. package/build/components/use-moving-animation/index.js +9 -28
  132. package/build/components/use-moving-animation/index.js.map +1 -1
  133. package/build/components/writing-flow/use-select-all.js +1 -7
  134. package/build/components/writing-flow/use-select-all.js.map +1 -1
  135. package/build/hooks/align.js +14 -2
  136. package/build/hooks/align.js.map +1 -1
  137. package/build/hooks/color-panel.js +2 -1
  138. package/build/hooks/color-panel.js.map +1 -1
  139. package/build/hooks/content-lock-ui.js +145 -0
  140. package/build/hooks/content-lock-ui.js.map +1 -0
  141. package/build/hooks/duotone.js +8 -1
  142. package/build/hooks/duotone.js.map +1 -1
  143. package/build/hooks/index.js +14 -0
  144. package/build/hooks/index.js.map +1 -1
  145. package/build/hooks/layout.js +11 -9
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/metadata-name.js +55 -0
  148. package/build/hooks/metadata-name.js.map +1 -0
  149. package/build/hooks/metadata.js +65 -0
  150. package/build/hooks/metadata.js.map +1 -0
  151. package/build/hooks/use-typography-props.js +51 -0
  152. package/build/hooks/use-typography-props.js.map +1 -0
  153. package/build/hooks/utils.js +3 -1
  154. package/build/hooks/utils.js.map +1 -1
  155. package/build/index.js +7 -0
  156. package/build/index.js.map +1 -1
  157. package/build/layouts/constrained.js +59 -20
  158. package/build/layouts/constrained.js.map +1 -1
  159. package/build/store/actions.js +65 -21
  160. package/build/store/actions.js.map +1 -1
  161. package/build/store/reducer.js +39 -18
  162. package/build/store/reducer.js.map +1 -1
  163. package/build/store/selectors.js +95 -9
  164. package/build/store/selectors.js.map +1 -1
  165. package/build/utils/parse-css-unit-to-px.js +1 -1
  166. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  167. package/build-module/components/alignment-control/ui.js +6 -5
  168. package/build-module/components/alignment-control/ui.js.map +1 -1
  169. package/build-module/components/block-actions/index.js +5 -8
  170. package/build-module/components/block-actions/index.js.map +1 -1
  171. package/build-module/components/block-alignment-control/ui.js +5 -5
  172. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  173. package/build-module/components/block-content-overlay/index.js +2 -4
  174. package/build-module/components/block-content-overlay/index.js.map +1 -1
  175. package/build-module/components/block-draggable/draggable-chip.js +2 -1
  176. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  177. package/build-module/components/block-edit/edit.js +1 -1
  178. package/build-module/components/block-edit/edit.js.map +1 -1
  179. package/build-module/components/block-inspector/index.js +127 -19
  180. package/build-module/components/block-inspector/index.js.map +1 -1
  181. package/build-module/components/block-list/block.js +41 -9
  182. package/build-module/components/block-list/block.js.map +1 -1
  183. package/build-module/components/block-list/index.js +4 -4
  184. package/build-module/components/block-list/index.js.map +1 -1
  185. package/build-module/components/block-list/use-block-props/index.js +13 -11
  186. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  187. package/build-module/components/block-list/use-block-props/use-block-class-names.js +3 -2
  188. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  189. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  190. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  191. package/build-module/components/block-list/use-block-props/use-is-hovered.js +1 -2
  192. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  193. package/build-module/components/block-list/use-in-between-inserter.js +7 -12
  194. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  195. package/build-module/components/block-list-appender/index.js +20 -20
  196. package/build-module/components/block-list-appender/index.js.map +1 -1
  197. package/build-module/components/block-list-appender/index.native.js +1 -6
  198. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  199. package/build-module/components/block-lock/use-block-lock.js +3 -1
  200. package/build-module/components/block-lock/use-block-lock.js.map +1 -1
  201. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +20 -9
  202. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  203. package/build-module/components/block-mover/button.js +4 -5
  204. package/build-module/components/block-mover/button.js.map +1 -1
  205. package/build-module/components/block-mover/index.js +4 -5
  206. package/build-module/components/block-mover/index.js.map +1 -1
  207. package/build-module/components/block-mover/index.native.js +24 -7
  208. package/build-module/components/block-mover/index.native.js.map +1 -1
  209. package/build-module/components/block-popover/inbetween.js +59 -17
  210. package/build-module/components/block-popover/inbetween.js.map +1 -1
  211. package/build-module/components/block-popover/index.js +3 -2
  212. package/build-module/components/block-popover/index.js.map +1 -1
  213. package/build-module/components/block-preview/auto.js +4 -2
  214. package/build-module/components/block-preview/auto.js.map +1 -1
  215. package/build-module/components/block-settings-menu/block-settings-dropdown.js +3 -1
  216. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  217. package/build-module/components/block-settings-menu-controls/index.js +3 -1
  218. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  219. package/build-module/components/block-styles/preview-panel.js +6 -1
  220. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  221. package/build-module/components/block-switcher/block-transformations-menu.js +115 -27
  222. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  223. package/build-module/components/block-toolbar/index.js +9 -8
  224. package/build-module/components/block-toolbar/index.js.map +1 -1
  225. package/build-module/components/block-tools/block-contextual-toolbar.js +3 -2
  226. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  227. package/build-module/components/block-tools/block-selection-button.js +12 -5
  228. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  229. package/build-module/components/block-tools/index.js +30 -15
  230. package/build-module/components/block-tools/index.js.map +1 -1
  231. package/build-module/components/block-tools/insertion-point.js +4 -9
  232. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  233. package/build-module/components/block-tools/selected-block-popover.js +9 -8
  234. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  235. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +13 -8
  236. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  237. package/build-module/components/block-tools/zoom-out-mode-inserters.js +59 -0
  238. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -0
  239. package/build-module/components/block-vertical-alignment-control/ui.js +5 -2
  240. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  241. package/build-module/components/colors-gradients/dropdown.js +1 -1
  242. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  243. package/build-module/components/iframe/index.js +32 -5
  244. package/build-module/components/iframe/index.js.map +1 -1
  245. package/build-module/components/inner-blocks/default-block-appender.js +1 -6
  246. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  247. package/build-module/components/inner-blocks/index.js +2 -2
  248. package/build-module/components/inner-blocks/index.js.map +1 -1
  249. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -5
  250. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  251. package/build-module/components/inner-blocks/use-nested-settings-update.js +1 -1
  252. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  253. package/build-module/components/inserter/index.js +3 -6
  254. package/build-module/components/inserter/index.js.map +1 -1
  255. package/build-module/components/inserter/library.js +14 -3
  256. package/build-module/components/inserter/library.js.map +1 -1
  257. package/build-module/components/inserter/menu.js +20 -8
  258. package/build-module/components/inserter/menu.js.map +1 -1
  259. package/build-module/components/inserter/preview-panel.js +1 -1
  260. package/build-module/components/inserter/preview-panel.js.map +1 -1
  261. package/build-module/components/inserter/tabs.js +11 -4
  262. package/build-module/components/inserter/tabs.js.map +1 -1
  263. package/build-module/components/link-control/link-preview.js +1 -1
  264. package/build-module/components/link-control/link-preview.js.map +1 -1
  265. package/build-module/components/link-control/search-input.js +6 -2
  266. package/build-module/components/link-control/search-input.js.map +1 -1
  267. package/build-module/components/link-control/search-item.js +37 -6
  268. package/build-module/components/link-control/search-item.js.map +1 -1
  269. package/build-module/components/list-view/block.js +23 -11
  270. package/build-module/components/list-view/block.js.map +1 -1
  271. package/build-module/components/list-view/branch.js +19 -3
  272. package/build-module/components/list-view/branch.js.map +1 -1
  273. package/build-module/components/list-view/index.js +8 -4
  274. package/build-module/components/list-view/index.js.map +1 -1
  275. package/build-module/components/list-view/use-block-selection.js +0 -1
  276. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  277. package/build-module/components/provider/use-block-sync.js +1 -6
  278. package/build-module/components/provider/use-block-sync.js.map +1 -1
  279. package/build-module/components/publish-date-time-picker/index.js +1 -1
  280. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  281. package/build-module/components/rich-text/index.js +27 -18
  282. package/build-module/components/rich-text/index.js.map +1 -1
  283. package/build-module/components/rich-text/index.native.js +11 -18
  284. package/build-module/components/rich-text/index.native.js.map +1 -1
  285. package/build-module/components/text-decoration-control/index.js +1 -1
  286. package/build-module/components/text-decoration-control/index.js.map +1 -1
  287. package/build-module/components/text-transform-control/index.js +1 -1
  288. package/build-module/components/text-transform-control/index.js.map +1 -1
  289. package/build-module/components/tool-selector/index.js +6 -11
  290. package/build-module/components/tool-selector/index.js.map +1 -1
  291. package/build-module/components/url-popover/index.js +1 -1
  292. package/build-module/components/url-popover/index.js.map +1 -1
  293. package/build-module/components/use-block-drop-zone/index.js +7 -4
  294. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  295. package/build-module/components/use-moving-animation/index.js +9 -28
  296. package/build-module/components/use-moving-animation/index.js.map +1 -1
  297. package/build-module/components/writing-flow/use-select-all.js +1 -6
  298. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  299. package/build-module/hooks/align.js +12 -2
  300. package/build-module/hooks/align.js.map +1 -1
  301. package/build-module/hooks/color-panel.js +2 -1
  302. package/build-module/hooks/color-panel.js.map +1 -1
  303. package/build-module/hooks/content-lock-ui.js +128 -0
  304. package/build-module/hooks/content-lock-ui.js.map +1 -0
  305. package/build-module/hooks/duotone.js +6 -1
  306. package/build-module/hooks/duotone.js.map +1 -1
  307. package/build-module/hooks/index.js +4 -0
  308. package/build-module/hooks/index.js.map +1 -1
  309. package/build-module/hooks/layout.js +11 -9
  310. package/build-module/hooks/layout.js.map +1 -1
  311. package/build-module/hooks/metadata-name.js +45 -0
  312. package/build-module/hooks/metadata-name.js.map +1 -0
  313. package/build-module/hooks/metadata.js +50 -0
  314. package/build-module/hooks/metadata.js.map +1 -0
  315. package/build-module/hooks/use-typography-props.js +38 -0
  316. package/build-module/hooks/use-typography-props.js.map +1 -0
  317. package/build-module/hooks/utils.js +4 -2
  318. package/build-module/hooks/utils.js.map +1 -1
  319. package/build-module/index.js +1 -1
  320. package/build-module/index.js.map +1 -1
  321. package/build-module/layouts/constrained.js +61 -22
  322. package/build-module/layouts/constrained.js.map +1 -1
  323. package/build-module/store/actions.js +58 -20
  324. package/build-module/store/actions.js.map +1 -1
  325. package/build-module/store/reducer.js +37 -18
  326. package/build-module/store/reducer.js.map +1 -1
  327. package/build-module/store/selectors.js +80 -9
  328. package/build-module/store/selectors.js.map +1 -1
  329. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  330. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  331. package/build-style/style-rtl.css +95 -45
  332. package/build-style/style.css +95 -45
  333. package/package.json +28 -28
  334. package/src/components/alignment-control/test/__snapshots__/index.js.snap +137 -108
  335. package/src/components/alignment-control/test/index.js +124 -33
  336. package/src/components/alignment-control/ui.js +8 -3
  337. package/src/components/block-actions/index.js +9 -8
  338. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +108 -65
  339. package/src/components/block-alignment-control/test/index.js +95 -31
  340. package/src/components/block-alignment-control/ui.js +2 -2
  341. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +28 -26
  342. package/src/components/block-compare/test/block-view.js +3 -3
  343. package/src/components/block-content-overlay/index.js +2 -6
  344. package/src/components/block-content-overlay/style.scss +24 -3
  345. package/src/components/block-draggable/draggable-chip.js +4 -1
  346. package/src/components/block-edit/edit.js +5 -1
  347. package/src/components/block-edit/test/edit.js +23 -21
  348. package/src/components/block-icon/test/__snapshots__/index.js.snap +22 -0
  349. package/src/components/block-icon/test/index.js +31 -16
  350. package/src/components/block-inspector/index.js +126 -12
  351. package/src/components/block-inspector/style.scss +7 -1
  352. package/src/components/block-list/block.js +53 -13
  353. package/src/components/block-list/index.js +4 -4
  354. package/src/components/block-list/style.scss +39 -12
  355. package/src/components/block-list/test/block-list-context.native.js +11 -13
  356. package/src/components/block-list/use-block-props/index.js +10 -10
  357. package/src/components/block-list/use-block-props/use-block-class-names.js +4 -1
  358. package/src/components/block-list/use-block-props/use-focus-first-element.js +3 -8
  359. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -2
  360. package/src/components/block-list/use-in-between-inserter.js +11 -13
  361. package/src/components/block-list-appender/index.js +27 -18
  362. package/src/components/block-list-appender/index.native.js +3 -6
  363. package/src/components/block-lock/use-block-lock.js +2 -0
  364. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +15 -9
  365. package/src/components/block-mover/button.js +6 -5
  366. package/src/components/block-mover/index.js +8 -7
  367. package/src/components/block-mover/index.native.js +20 -13
  368. package/src/components/block-popover/inbetween.js +85 -21
  369. package/src/components/block-popover/index.js +3 -2
  370. package/src/components/block-popover/style.scss +3 -4
  371. package/src/components/block-preview/auto.js +4 -2
  372. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  373. package/src/components/block-settings-menu-controls/README.md +9 -0
  374. package/src/components/block-settings-menu-controls/index.js +13 -2
  375. package/src/components/block-styles/preview-panel.js +3 -0
  376. package/src/components/block-switcher/block-transformations-menu.js +127 -33
  377. package/src/components/block-switcher/style.scss +4 -2
  378. package/src/components/block-title/test/index.js +28 -25
  379. package/src/components/block-toolbar/index.js +27 -17
  380. package/src/components/block-tools/block-contextual-toolbar.js +10 -3
  381. package/src/components/block-tools/block-selection-button.js +35 -16
  382. package/src/components/block-tools/index.js +40 -24
  383. package/src/components/block-tools/insertion-point.js +3 -7
  384. package/src/components/block-tools/selected-block-popover.js +9 -7
  385. package/src/components/block-tools/style.scss +5 -0
  386. package/src/components/block-tools/use-block-toolbar-popover-props.js +19 -6
  387. package/src/components/block-tools/zoom-out-mode-inserters.js +57 -0
  388. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +91 -51
  389. package/src/components/block-vertical-alignment-control/test/index.js +92 -23
  390. package/src/components/block-vertical-alignment-control/ui.js +3 -2
  391. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -12
  392. package/src/components/colors/test/with-colors.js +37 -12
  393. package/src/components/colors-gradients/dropdown.js +1 -1
  394. package/src/components/contrast-checker/test/index.js +135 -116
  395. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +39 -57
  396. package/src/components/default-block-appender/test/index.js +32 -18
  397. package/src/components/font-sizes/README.MD +9 -0
  398. package/src/components/iframe/index.js +64 -5
  399. package/src/components/inner-blocks/README.md +2 -1
  400. package/src/components/inner-blocks/default-block-appender.js +1 -6
  401. package/src/components/inner-blocks/index.js +3 -2
  402. package/src/components/inner-blocks/use-inner-block-template-sync.js +9 -5
  403. package/src/components/inner-blocks/use-nested-settings-update.js +3 -1
  404. package/src/components/inserter/index.js +2 -8
  405. package/src/components/inserter/library.js +11 -5
  406. package/src/components/inserter/menu.js +42 -29
  407. package/src/components/inserter/preview-panel.js +1 -1
  408. package/src/components/inserter/stories/fixtures.js +44 -0
  409. package/src/components/inserter/stories/index.js +90 -0
  410. package/src/components/inserter/style.scss +21 -27
  411. package/src/components/inserter/tabs.js +8 -4
  412. package/src/components/link-control/link-preview.js +5 -3
  413. package/src/components/link-control/search-input.js +2 -2
  414. package/src/components/link-control/search-item.js +39 -7
  415. package/src/components/list-view/block.js +29 -10
  416. package/src/components/list-view/branch.js +27 -4
  417. package/src/components/list-view/index.js +8 -3
  418. package/src/components/list-view/use-block-selection.js +0 -1
  419. package/src/components/media-placeholder/test/index.js +2 -2
  420. package/src/components/media-replace-flow/README.md +1 -1
  421. package/src/components/provider/use-block-sync.js +3 -6
  422. package/src/components/publish-date-time-picker/index.js +1 -1
  423. package/src/components/rich-text/index.js +24 -35
  424. package/src/components/rich-text/index.native.js +8 -21
  425. package/src/components/text-decoration-control/index.js +1 -1
  426. package/src/components/text-transform-control/index.js +1 -1
  427. package/src/components/tool-selector/index.js +9 -11
  428. package/src/components/url-input/test/button.js +145 -71
  429. package/src/components/url-popover/index.js +1 -1
  430. package/src/components/url-popover/test/__snapshots__/index.js.snap +108 -80
  431. package/src/components/url-popover/test/index.js +14 -12
  432. package/src/components/use-block-drop-zone/index.js +15 -4
  433. package/src/components/use-moving-animation/index.js +9 -24
  434. package/src/components/warning/test/__snapshots__/index.js.snap +11 -14
  435. package/src/components/warning/test/index.js +32 -29
  436. package/src/components/writing-flow/use-select-all.js +4 -6
  437. package/src/hooks/align.js +22 -13
  438. package/src/hooks/color-panel.js +2 -1
  439. package/src/hooks/content-lock-ui.js +161 -0
  440. package/src/hooks/duotone.js +13 -1
  441. package/src/hooks/index.js +4 -0
  442. package/src/hooks/layout.js +25 -19
  443. package/src/hooks/layout.scss +7 -1
  444. package/src/hooks/metadata-name.js +48 -0
  445. package/src/hooks/metadata.js +64 -0
  446. package/src/hooks/test/use-typography-props.js +28 -0
  447. package/src/hooks/use-typography-props.js +41 -0
  448. package/src/hooks/utils.js +2 -11
  449. package/src/index.js +1 -0
  450. package/src/layouts/constrained.js +73 -24
  451. package/src/store/actions.js +45 -4
  452. package/src/store/reducer.js +33 -21
  453. package/src/store/selectors.js +98 -19
  454. package/src/store/test/reducer.js +8 -5
  455. package/src/utils/parse-css-unit-to-px.js +1 -1
  456. package/src/components/colors/test/__snapshots__/with-colors.js.snap +0 -23
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { shallow } from 'enzyme';
4
+ import { render, screen } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -9,42 +10,55 @@ import { shallow } from 'enzyme';
9
10
  import { DefaultBlockAppender, ZWNBSP } from '../';
10
11
 
11
12
  describe( 'DefaultBlockAppender', () => {
12
- const expectOnAppendCalled = ( onAppend ) => {
13
- expect( onAppend ).toHaveBeenCalledTimes( 1 );
14
- expect( onAppend ).toHaveBeenCalledWith();
15
- };
16
-
17
13
  it( 'should match snapshot', () => {
18
14
  const onAppend = jest.fn();
19
- const wrapper = shallow(
15
+
16
+ const { container } = render(
20
17
  <DefaultBlockAppender onAppend={ onAppend } showPrompt />
21
18
  );
22
19
 
23
- expect( wrapper ).toMatchSnapshot();
20
+ expect( container ).toMatchSnapshot();
24
21
  } );
25
22
 
26
- it( 'should append a default block when input focused', () => {
23
+ it( 'should append a default block when input focused', async () => {
24
+ const user = userEvent.setup( {
25
+ advanceTimers: jest.advanceTimersByTime,
26
+ } );
27
27
  const onAppend = jest.fn();
28
- const wrapper = shallow(
28
+
29
+ const { container } = render(
29
30
  <DefaultBlockAppender onAppend={ onAppend } showPrompt />
30
31
  );
31
32
 
32
- wrapper.find( 'p' ).simulate( 'click' );
33
+ await user.click(
34
+ screen.getByRole( 'button', { name: 'Add default block' } )
35
+ );
33
36
 
34
- expect( wrapper ).toMatchSnapshot();
37
+ expect( container ).toMatchSnapshot();
35
38
 
36
- expectOnAppendCalled( onAppend );
39
+ // Called once for focusing and once for clicking.
40
+ expect( onAppend ).toHaveBeenCalledTimes( 2 );
41
+ expect( onAppend ).toHaveBeenCalledWith();
37
42
  } );
38
43
 
39
- it( 'should optionally show without prompt', () => {
44
+ it( 'should optionally show without prompt', async () => {
45
+ const user = userEvent.setup( {
46
+ advanceTimers: jest.advanceTimersByTime,
47
+ } );
40
48
  const onAppend = jest.fn();
41
- const wrapper = shallow(
49
+
50
+ const { container } = render(
42
51
  <DefaultBlockAppender onAppend={ onAppend } showPrompt={ false } />
43
52
  );
44
- const input = wrapper.find( 'p' );
45
53
 
46
- expect( input.prop( 'children' ) ).toEqual( ZWNBSP );
54
+ const appender = screen.getByRole( 'button', {
55
+ name: 'Add default block',
56
+ } );
57
+
58
+ await user.click( appender );
59
+
60
+ expect( appender ).toContainHTML( ZWNBSP );
47
61
 
48
- expect( wrapper ).toMatchSnapshot();
62
+ expect( container ).toMatchSnapshot();
49
63
  } );
50
64
  } );
@@ -31,6 +31,7 @@ const MyFontSizePicker = () => {
31
31
 
32
32
  return (
33
33
  <FontSizePicker
34
+ __nextHasNoMarginBottom
34
35
  value={ fontSize }
35
36
  fallbackFontSize={ fallbackFontSize }
36
37
  onChange={ ( newFontSize ) => {
@@ -79,3 +80,11 @@ If `true`, the UI will contain a slider, instead of a numeric text input field.
79
80
  - Type: `Boolean`
80
81
  - Required: no
81
82
  - Default: `false`
83
+
84
+ ### __nextHasNoMarginBottom
85
+
86
+ Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 6.4. (The prop can be safely removed once this happens.)
87
+
88
+ - Type: `Boolean`
89
+ - Required: no
90
+ - Default: `false`
@@ -14,7 +14,11 @@ import {
14
14
  useReducer,
15
15
  } from '@wordpress/element';
16
16
  import { __ } from '@wordpress/i18n';
17
- import { useMergeRefs, useRefEffect } from '@wordpress/compose';
17
+ import {
18
+ useResizeObserver,
19
+ useMergeRefs,
20
+ useRefEffect,
21
+ } from '@wordpress/compose';
18
22
  import { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';
19
23
 
20
24
  /**
@@ -184,7 +188,7 @@ async function loadScript( head, { id, src } ) {
184
188
  }
185
189
 
186
190
  function Iframe(
187
- { contentRef, children, head, tabIndex = 0, assets, ...props },
191
+ { contentRef, children, head, tabIndex = 0, assets, isZoomedOut, ...props },
188
192
  ref
189
193
  ) {
190
194
  const [ , forceRender ] = useReducer( () => ( {} ) );
@@ -194,10 +198,18 @@ function Iframe(
194
198
  const scripts = useParsedAssets( assets?.scripts );
195
199
  const clearerRef = useBlockSelectionClearer();
196
200
  const [ before, writingFlowRef, after ] = useWritingFlow();
201
+ const [ contentResizeListener, { height: contentHeight } ] =
202
+ useResizeObserver();
197
203
  const setRef = useRefEffect( ( node ) => {
204
+ let iFrameDocument;
205
+ // Prevent the default browser action for files dropped outside of dropzones.
206
+ function preventFileDropDefault( event ) {
207
+ event.preventDefault();
208
+ }
198
209
  function setDocumentIfReady() {
199
210
  const { contentDocument, ownerDocument } = node;
200
211
  const { readyState, documentElement } = contentDocument;
212
+ iFrameDocument = contentDocument;
201
213
 
202
214
  if ( readyState !== 'interactive' && readyState !== 'complete' ) {
203
215
  return false;
@@ -223,14 +235,35 @@ function Iframe(
223
235
  documentElement.removeChild( contentDocument.head );
224
236
  documentElement.removeChild( contentDocument.body );
225
237
 
238
+ iFrameDocument.addEventListener(
239
+ 'dragover',
240
+ preventFileDropDefault,
241
+ false
242
+ );
243
+ iFrameDocument.addEventListener(
244
+ 'drop',
245
+ preventFileDropDefault,
246
+ false
247
+ );
226
248
  return true;
227
249
  }
228
250
 
229
251
  // Document set with srcDoc is not immediately ready.
230
252
  node.addEventListener( 'load', setDocumentIfReady );
231
253
 
232
- return () => node.removeEventListener( 'load', setDocumentIfReady );
254
+ return () => {
255
+ node.removeEventListener( 'load', setDocumentIfReady );
256
+ iFrameDocument?.removeEventListener(
257
+ 'dragover',
258
+ preventFileDropDefault
259
+ );
260
+ iFrameDocument?.removeEventListener(
261
+ 'drop',
262
+ preventFileDropDefault
263
+ );
264
+ };
233
265
  }, [] );
266
+
234
267
  const headRef = useRefEffect( ( element ) => {
235
268
  scripts
236
269
  .reduce(
@@ -285,14 +318,40 @@ function Iframe(
285
318
  { iframeDocument &&
286
319
  createPortal(
287
320
  <>
288
- <head ref={ headRef }>{ head }</head>
321
+ <head ref={ headRef }>
322
+ { head }
323
+ <style>
324
+ { `html { transition: background 5s; ${
325
+ isZoomedOut
326
+ ? 'background: #2f2f2f; transition: background 0s;'
327
+ : ''
328
+ } }` }
329
+ </style>
330
+ </head>
289
331
  <body
290
332
  ref={ bodyRef }
291
333
  className={ classnames(
334
+ 'block-editor-iframe__body',
292
335
  BODY_CLASS_NAME,
293
- ...bodyClasses
336
+ ...bodyClasses,
337
+ {
338
+ 'is-zoomed-out': isZoomedOut,
339
+ }
294
340
  ) }
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
+ }
295
353
  >
354
+ { contentResizeListener }
296
355
  { /*
297
356
  * This is a wrapper for the extra styles and scripts
298
357
  * rendered imperatively by cloning the parent,
@@ -125,11 +125,12 @@ Template locking of `InnerBlocks` is similar to [Custom Post Type templates lock
125
125
  Template locking allows locking the `InnerBlocks` area for the current template.
126
126
  _Options:_
127
127
 
128
+ - `noContent` — prevents all operations. Additionally, the block types that don't have content are hidden from the list view and can't gain focus within the block list. Unlike the other lock types, this is not overrideable by children.
128
129
  - `'all'` — prevents all operations. It is not possible to insert new blocks. Move existing blocks or delete them.
129
130
  - `'insert'` — prevents inserting or removing blocks, but allows moving existing ones.
130
131
  - `false` — prevents locking from being applied to an `InnerBlocks` area even if a parent block contains locking. ( Boolean )
131
132
 
132
- If locking is not set in an `InnerBlocks` area: the locking of the parent `InnerBlocks` area is used.
133
+ If locking is not set in an `InnerBlocks` area: the locking of the parent `InnerBlocks` area is used. Note that `noContent` can't be overriden: it's present, the `templateLock` value of any children is ignored.
133
134
 
134
135
  If the block is a top level block: the locking of the Custom Post Type is used.
135
136
 
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { last } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -28,7 +23,7 @@ export default compose( [
28
23
  const blockClientIds = getBlockOrder( clientId );
29
24
 
30
25
  return {
31
- lastBlockClientId: last( blockClientIds ),
26
+ lastBlockClientId: blockClientIds[ blockClientIds.length - 1 ],
32
27
  };
33
28
  } ),
34
29
  ] )( DefaultBlockAppender );
@@ -155,10 +155,11 @@ export function useInnerBlocksProps( props = {}, options = {} ) {
155
155
  getBlockName,
156
156
  isBlockSelected,
157
157
  hasSelectedInnerBlock,
158
- isNavigationMode,
158
+ __unstableGetEditorMode,
159
159
  } = select( blockEditorStore );
160
160
  const blockName = getBlockName( clientId );
161
- const enableClickThrough = isNavigationMode() || isSmallScreen;
161
+ const enableClickThrough =
162
+ __unstableGetEditorMode() === 'navigation' || isSmallScreen;
162
163
  return {
163
164
  __experimentalCaptureToolbars: select(
164
165
  blocksStore
@@ -19,8 +19,8 @@ import { store as blockEditorStore } from '../../store';
19
19
  * This hook makes sure that a block's inner blocks stay in sync with the given
20
20
  * block "template". The template is a block hierarchy to which inner blocks must
21
21
  * conform. If the blocks get "out of sync" with the template and the template
22
- * is meant to be locked (e.g. templateLock = "all"), then we replace the inner
23
- * blocks with the correct value after synchronizing it with the template.
22
+ * is meant to be locked (e.g. templateLock = "all" or templateLock = "noContent"),
23
+ * then we replace the inner blocks with the correct value after synchronizing it with the template.
24
24
  *
25
25
  * @param {string} clientId The block client ID.
26
26
  * @param {Object} template The template to match.
@@ -51,9 +51,13 @@ export default function useInnerBlockTemplateSync(
51
51
  // Maintain a reference to the previous value so we can do a deep equality check.
52
52
  const existingTemplate = useRef( null );
53
53
  useLayoutEffect( () => {
54
- // Only synchronize innerBlocks with template if innerBlocks are empty or
55
- // a locking all exists directly on the block.
56
- if ( innerBlocks.length === 0 || templateLock === 'all' ) {
54
+ // Only synchronize innerBlocks with template if innerBlocks are empty
55
+ // or a locking "all" or "noContent" exists directly on the block.
56
+ if (
57
+ innerBlocks.length === 0 ||
58
+ templateLock === 'all' ||
59
+ templateLock === 'noContent'
60
+ ) {
57
61
  const hasTemplateChanged = ! isEqual(
58
62
  template,
59
63
  existingTemplate.current
@@ -69,7 +69,9 @@ export default function useNestedSettingsUpdate(
69
69
  const newSettings = {
70
70
  allowedBlocks: _allowedBlocks,
71
71
  templateLock:
72
- templateLock === undefined ? parentLock : templateLock,
72
+ templateLock === undefined || parentLock === 'noContent'
73
+ ? parentLock
74
+ : templateLock,
73
75
  };
74
76
 
75
77
  // These values are not defined for RN, so only include them if they
@@ -168,6 +168,7 @@ class Inserter extends Component {
168
168
  clientId={ clientId }
169
169
  isAppender={ isAppender }
170
170
  showInserterHelpPanel={ showInserterHelpPanel }
171
+ prioritizePatterns={ prioritizePatterns }
171
172
  />
172
173
  );
173
174
  }
@@ -212,8 +213,6 @@ export default compose( [
212
213
  hasInserterItems,
213
214
  __experimentalGetAllowedBlocks,
214
215
  __experimentalGetDirectInsertBlock,
215
- getBlockIndex,
216
- getBlockCount,
217
216
  getSettings,
218
217
  } = select( blockEditorStore );
219
218
 
@@ -227,8 +226,6 @@ export default compose( [
227
226
  const directInsertBlock =
228
227
  __experimentalGetDirectInsertBlock( rootClientId );
229
228
 
230
- const index = getBlockIndex( clientId );
231
- const blockCount = getBlockCount();
232
229
  const settings = getSettings();
233
230
 
234
231
  const hasSingleBlockType =
@@ -249,10 +246,7 @@ export default compose( [
249
246
  directInsertBlock,
250
247
  rootClientId,
251
248
  prioritizePatterns:
252
- settings.__experimentalPreferPatternsOnRoot &&
253
- ! rootClientId &&
254
- index > 0 &&
255
- ( index < blockCount || blockCount === 0 ),
249
+ settings.__experimentalPreferPatternsOnRoot && ! rootClientId,
256
250
  };
257
251
  } ),
258
252
  withDispatch( ( dispatch, ownProps, { select } ) => {
@@ -26,13 +26,18 @@ function InserterLibrary(
26
26
  },
27
27
  ref
28
28
  ) {
29
- const destinationRootClientId = useSelect(
29
+ const { destinationRootClientId, prioritizePatterns } = useSelect(
30
30
  ( select ) => {
31
- const { getBlockRootClientId } = select( blockEditorStore );
31
+ const { getBlockRootClientId, getSettings } =
32
+ select( blockEditorStore );
32
33
 
33
- return (
34
- rootClientId || getBlockRootClientId( clientId ) || undefined
35
- );
34
+ const _rootClientId =
35
+ rootClientId || getBlockRootClientId( clientId ) || undefined;
36
+ return {
37
+ destinationRootClientId: _rootClientId,
38
+ prioritizePatterns:
39
+ getSettings().__experimentalPreferPatternsOnRoot,
40
+ };
36
41
  },
37
42
  [ clientId, rootClientId ]
38
43
  );
@@ -48,6 +53,7 @@ function InserterLibrary(
48
53
  __experimentalInsertionIndex={ __experimentalInsertionIndex }
49
54
  __experimentalFilterValue={ __experimentalFilterValue }
50
55
  shouldFocusBlock={ shouldFocusBlock }
56
+ prioritizePatterns={ prioritizePatterns }
51
57
  ref={ ref }
52
58
  />
53
59
  );
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -37,6 +42,7 @@ function InserterMenu(
37
42
  showMostUsedBlocks,
38
43
  __experimentalFilterValue = '',
39
44
  shouldFocusBlock = true,
45
+ prioritizePatterns,
40
46
  },
41
47
  ref
42
48
  ) {
@@ -180,23 +186,28 @@ function InserterMenu(
180
186
  },
181
187
  } ) );
182
188
 
189
+ const showAsTabs = ! filterValue && ( showPatterns || hasReusableBlocks );
190
+
183
191
  return (
184
192
  <div className="block-editor-inserter__menu">
185
- <div className="block-editor-inserter__main-area">
186
- { /* The following div is necessary to fix the sticky position of the search form. */ }
187
- <div className="block-editor-inserter__content">
188
- <SearchControl
189
- className="block-editor-inserter__search"
190
- onChange={ ( value ) => {
191
- if ( hoveredItem ) setHoveredItem( null );
192
- setFilterValue( value );
193
- } }
194
- value={ filterValue }
195
- label={ __( 'Search for blocks and patterns' ) }
196
- placeholder={ __( 'Search' ) }
197
- ref={ searchRef }
198
- />
199
- { !! filterValue && (
193
+ <div
194
+ className={ classnames( 'block-editor-inserter__main-area', {
195
+ 'show-as-tabs': showAsTabs,
196
+ } ) }
197
+ >
198
+ <SearchControl
199
+ className="block-editor-inserter__search"
200
+ onChange={ ( value ) => {
201
+ if ( hoveredItem ) setHoveredItem( null );
202
+ setFilterValue( value );
203
+ } }
204
+ value={ filterValue }
205
+ label={ __( 'Search for blocks and patterns' ) }
206
+ placeholder={ __( 'Search' ) }
207
+ ref={ searchRef }
208
+ />
209
+ { !! filterValue && (
210
+ <div className="block-editor-inserter__no-tab-container">
200
211
  <InserterSearchResults
201
212
  filterValue={ filterValue }
202
213
  onSelect={ onSelect }
@@ -210,20 +221,22 @@ function InserterMenu(
210
221
  showBlockDirectory
211
222
  shouldFocusBlock={ shouldFocusBlock }
212
223
  />
213
- ) }
214
- { ! filterValue && ( showPatterns || hasReusableBlocks ) && (
215
- <InserterTabs
216
- showPatterns={ showPatterns }
217
- showReusableBlocks={ hasReusableBlocks }
218
- >
219
- { getCurrentTab }
220
- </InserterTabs>
221
- ) }
222
- { ! filterValue &&
223
- ! showPatterns &&
224
- ! hasReusableBlocks &&
225
- blocksTab }
226
- </div>
224
+ </div>
225
+ ) }
226
+ { showAsTabs && (
227
+ <InserterTabs
228
+ showPatterns={ showPatterns }
229
+ showReusableBlocks={ hasReusableBlocks }
230
+ prioritizePatterns={ prioritizePatterns }
231
+ >
232
+ { getCurrentTab }
233
+ </InserterTabs>
234
+ ) }
235
+ { ! filterValue && ! showAsTabs && (
236
+ <div className="block-editor-inserter__no-tab-container">
237
+ { blocksTab }
238
+ </div>
239
+ ) }
227
240
  </div>
228
241
  { showInserterHelpPanel && hoveredItem && (
229
242
  <InserterPreviewPanel item={ hoveredItem } />
@@ -27,7 +27,7 @@ function InserterPreviewPanel( { item } ) {
27
27
  viewportWidth={ example?.viewportWidth ?? 500 }
28
28
  blocks={
29
29
  example
30
- ? getBlockFromExample( item.name, {
30
+ ? getBlockFromExample( name, {
31
31
  attributes: {
32
32
  ...example.attributes,
33
33
  ...initialAttributes,
@@ -0,0 +1,44 @@
1
+ export const patterns = [
2
+ {
3
+ categories: [ 'featured', 'text' ],
4
+ content:
5
+ '<!-- wp:heading {"align":"wide","style":{"typography":{"fontSize":"48px","lineHeight":"1.1"}}} -->\n<h2 class="alignwide" id="we-re-a-studio-in-berlin-with-an-international-practice-in-architecture-urban-planning-and-interior-design-we-believe-in-sharing-knowledge-and-promoting-dialogue-to-increase-the-creative-potential-of-collaboration" style="font-size:48px;line-height:1.1">We\'re a studio in Berlin with an international practice in architecture, urban planning and interior design. We believe in sharing knowledge and promoting dialogue to increase the creative potential of collaboration.</h2>\n<!-- /wp:heading -->',
6
+ description: 'Heading text',
7
+ keywords: [ 'large text', 'title' ],
8
+ name: 'heading',
9
+ title: 'Heading',
10
+ },
11
+ ];
12
+
13
+ export const patternCategories = [
14
+ {
15
+ name: 'featured',
16
+ label: 'Featured',
17
+ },
18
+ {
19
+ name: 'text',
20
+ label: 'Text',
21
+ },
22
+ ];
23
+
24
+ export const reusableBlocks = [
25
+ {
26
+ content: {
27
+ raw: '\x3C!-- wp:paragraph -->\n<p>This is reusable</p>\n\x3C!-- /wp:paragraph -->',
28
+ protected: false,
29
+ block_version: 1,
30
+ },
31
+ date: '2022-09-12T13:28:06',
32
+ date_gmt: '2022-09-12T13:28:06',
33
+ id: 70,
34
+ link: 'http://localhost:8888/?p=70',
35
+ modified: '2022-09-12T13:28:06',
36
+ modified_gmt: '2022-09-12T13:28:06',
37
+ password: '',
38
+ slug: 'simple-paragraph',
39
+ status: 'publish',
40
+ template: '',
41
+ title: { raw: 'Simple paragraph' },
42
+ type: 'wp_block',
43
+ },
44
+ ];
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import BlockLibrary from '../library';
5
+ import BlockEditorProvider from '../../provider';
6
+ import { patternCategories, patterns, reusableBlocks } from './fixtures';
7
+ import Inserter from '../';
8
+
9
+ export default { title: 'BlockEditor/Inserter' };
10
+
11
+ export const libraryWithoutPatterns = () => {
12
+ const wrapperStyle = {
13
+ margin: '24px',
14
+ height: 400,
15
+ border: '1px solid #f3f3f3',
16
+ display: 'inline-block',
17
+ };
18
+ return (
19
+ <BlockEditorProvider>
20
+ <div style={ wrapperStyle }>
21
+ <BlockLibrary showInserterHelpPanel />
22
+ </div>
23
+ </BlockEditorProvider>
24
+ );
25
+ };
26
+
27
+ export const libraryWithPatterns = () => {
28
+ const wrapperStyle = {
29
+ margin: '24px',
30
+ height: 400,
31
+ border: '1px solid #f3f3f3',
32
+ display: 'inline-block',
33
+ };
34
+ return (
35
+ <BlockEditorProvider
36
+ settings={ {
37
+ __experimentalBlockPatternCategories: patternCategories,
38
+ __experimentalBlockPatterns: patterns,
39
+ } }
40
+ >
41
+ <div style={ wrapperStyle }>
42
+ <BlockLibrary showInserterHelpPanel />
43
+ </div>
44
+ </BlockEditorProvider>
45
+ );
46
+ };
47
+
48
+ export const libraryWithPatternsAndReusableBlocks = () => {
49
+ const wrapperStyle = {
50
+ margin: '24px',
51
+ height: 400,
52
+ border: '1px solid #f3f3f3',
53
+ display: 'inline-block',
54
+ };
55
+ return (
56
+ <BlockEditorProvider
57
+ settings={ {
58
+ __experimentalBlockPatternCategories: patternCategories,
59
+ __experimentalBlockPatterns: patterns,
60
+ __experimentalReusableBlocks: reusableBlocks,
61
+ } }
62
+ >
63
+ <div style={ wrapperStyle }>
64
+ <BlockLibrary showInserterHelpPanel />
65
+ </div>
66
+ </BlockEditorProvider>
67
+ );
68
+ };
69
+
70
+ export const quickInserter = () => {
71
+ const wrapperStyle = {
72
+ margin: '24px',
73
+ height: 400,
74
+ border: '1px solid #f3f3f3',
75
+ display: 'inline-block',
76
+ };
77
+ return (
78
+ <BlockEditorProvider
79
+ settings={ {
80
+ __experimentalBlockPatternCategories: patternCategories,
81
+ __experimentalBlockPatterns: patterns,
82
+ __experimentalReusableBlocks: reusableBlocks,
83
+ } }
84
+ >
85
+ <div style={ wrapperStyle }>
86
+ <Inserter __experimentalIsQuick />
87
+ </div>
88
+ </BlockEditorProvider>
89
+ );
90
+ };