@wordpress/block-editor 8.0.12-next.33ec3857e2.0 → 8.0.12

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 (363) hide show
  1. package/README.md +0 -4
  2. package/build/components/block-caption/index.native.js +3 -14
  3. package/build/components/block-caption/index.native.js.map +1 -1
  4. package/build/components/block-inspector/index.js +33 -12
  5. package/build/components/block-inspector/index.js.map +1 -1
  6. package/build/components/block-list/block.js +1 -1
  7. package/build/components/block-list/block.js.map +1 -1
  8. package/build/components/block-list/block.native.js +2 -3
  9. package/build/components/block-list/block.native.js.map +1 -1
  10. package/build/components/block-list/use-block-props/index.js +1 -3
  11. package/build/components/block-list/use-block-props/index.js.map +1 -1
  12. package/build/components/block-list/use-in-between-inserter.js +1 -1
  13. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  14. package/build/components/block-list-appender/index.js +11 -3
  15. package/build/components/block-list-appender/index.js.map +1 -1
  16. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
  17. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  18. package/build/components/block-mover/button.js +2 -2
  19. package/build/components/block-mover/button.js.map +1 -1
  20. package/build/components/block-mover/index.js +2 -2
  21. package/build/components/block-mover/index.js.map +1 -1
  22. package/build/components/block-mover/index.native.js +2 -2
  23. package/build/components/block-mover/index.native.js.map +1 -1
  24. package/build/components/block-preview/auto.js +2 -10
  25. package/build/components/block-preview/auto.js.map +1 -1
  26. package/build/components/block-settings/container.native.js +1 -2
  27. package/build/components/block-settings/container.native.js.map +1 -1
  28. package/build/components/block-styles/index.js +134 -110
  29. package/build/components/block-styles/index.js.map +1 -1
  30. package/build/components/block-styles/utils.js +0 -39
  31. package/build/components/block-styles/utils.js.map +1 -1
  32. package/build/components/block-switcher/block-styles-menu.js +23 -3
  33. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  34. package/build/components/block-tools/back-compat.js +1 -2
  35. package/build/components/block-tools/back-compat.js.map +1 -1
  36. package/build/components/block-tools/block-selection-button.js +3 -3
  37. package/build/components/block-tools/block-selection-button.js.map +1 -1
  38. package/build/components/block-tools/insertion-point.js +1 -11
  39. package/build/components/block-tools/insertion-point.js.map +1 -1
  40. package/build/components/button-block-appender/index.js +1 -2
  41. package/build/components/button-block-appender/index.js.map +1 -1
  42. package/build/components/colors-gradients/panel-color-gradient-settings.js +10 -51
  43. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  44. package/build/components/default-block-appender/index.js +19 -16
  45. package/build/components/default-block-appender/index.js.map +1 -1
  46. package/build/components/default-style-picker/index.js +3 -18
  47. package/build/components/default-style-picker/index.js.map +1 -1
  48. package/build/components/iframe/index.js +4 -3
  49. package/build/components/iframe/index.js.map +1 -1
  50. package/build/components/index.js +9 -9
  51. package/build/components/index.js.map +1 -1
  52. package/build/components/inner-blocks/default-block-appender.js +4 -2
  53. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  54. package/build/components/inserter/hooks/use-insertion-point.js +2 -2
  55. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  56. package/build/components/inserter/index.js +2 -2
  57. package/build/components/inserter/index.js.map +1 -1
  58. package/build/components/inserter/index.native.js +3 -3
  59. package/build/components/inserter/index.native.js.map +1 -1
  60. package/build/components/inserter/quick-inserter.js +1 -1
  61. package/build/components/inserter/quick-inserter.js.map +1 -1
  62. package/build/components/inserter/tabs.native.js +4 -7
  63. package/build/components/inserter/tabs.native.js.map +1 -1
  64. package/build/components/inspector-controls/block-support-slot-container.js +1 -2
  65. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  66. package/build/components/inspector-controls/block-support-tools-panel.js +50 -22
  67. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  68. package/build/components/inspector-controls/fill.native.js +5 -3
  69. package/build/components/inspector-controls/fill.native.js.map +1 -1
  70. package/build/components/inspector-controls/groups.js +0 -2
  71. package/build/components/inspector-controls/groups.js.map +1 -1
  72. package/build/components/inspector-controls/slot.js +3 -1
  73. package/build/components/inspector-controls/slot.js.map +1 -1
  74. package/build/components/letter-spacing-control/index.js +6 -6
  75. package/build/components/letter-spacing-control/index.js.map +1 -1
  76. package/build/components/list-view/block-select-button.js +3 -23
  77. package/build/components/list-view/block-select-button.js.map +1 -1
  78. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  79. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  80. package/build/components/media-placeholder/index.js +0 -2
  81. package/build/components/media-placeholder/index.js.map +1 -1
  82. package/build/components/media-replace-flow/index.js +0 -2
  83. package/build/components/media-replace-flow/index.js.map +1 -1
  84. package/build/components/provider/use-block-sync.js +37 -10
  85. package/build/components/provider/use-block-sync.js.map +1 -1
  86. package/build/components/rich-text/file-paste-handler.js +1 -1
  87. package/build/components/rich-text/file-paste-handler.js.map +1 -1
  88. package/build/components/rich-text/use-input-rules.js +1 -3
  89. package/build/components/rich-text/use-input-rules.js.map +1 -1
  90. package/build/components/selection-scroll-into-view/index.js +1 -2
  91. package/build/components/selection-scroll-into-view/index.js.map +1 -1
  92. package/build/components/use-canvas-click-redirect/index.js +66 -0
  93. package/build/components/use-canvas-click-redirect/index.js.map +1 -0
  94. package/build/components/use-on-block-drop/index.js +4 -8
  95. package/build/components/use-on-block-drop/index.js.map +1 -1
  96. package/build/components/use-setting/index.js +7 -0
  97. package/build/components/use-setting/index.js.map +1 -1
  98. package/build/components/writing-flow/use-multi-selection.js +1 -3
  99. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  100. package/build/hooks/border-color.js +5 -63
  101. package/build/hooks/border-color.js.map +1 -1
  102. package/build/hooks/border-radius.js +0 -47
  103. package/build/hooks/border-radius.js.map +1 -1
  104. package/build/hooks/border-style.js +0 -41
  105. package/build/hooks/border-style.js.map +1 -1
  106. package/build/hooks/border-width.js +31 -70
  107. package/build/hooks/border-width.js.map +1 -1
  108. package/build/hooks/border.js +11 -81
  109. package/build/hooks/border.js.map +1 -1
  110. package/build/hooks/letter-spacing.js +1 -1
  111. package/build/hooks/letter-spacing.js.map +1 -1
  112. package/build/hooks/typography.js +1 -1
  113. package/build/hooks/typography.js.map +1 -1
  114. package/build/layouts/flex.js +3 -27
  115. package/build/layouts/flex.js.map +1 -1
  116. package/build/store/actions.js +5 -4
  117. package/build/store/actions.js.map +1 -1
  118. package/build/store/defaults.js +1 -5
  119. package/build/store/defaults.js.map +1 -1
  120. package/build/store/reducer.js +24 -1
  121. package/build/store/reducer.js.map +1 -1
  122. package/build/store/selectors.js +9 -27
  123. package/build/store/selectors.js.map +1 -1
  124. package/build/utils/get-paste-event-data.js +1 -1
  125. package/build/utils/get-paste-event-data.js.map +1 -1
  126. package/build/utils/parse-css-unit-to-px.js +1 -1
  127. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  128. package/build-module/components/block-caption/index.native.js +3 -13
  129. package/build-module/components/block-caption/index.native.js.map +1 -1
  130. package/build-module/components/block-inspector/index.js +33 -12
  131. package/build-module/components/block-inspector/index.js.map +1 -1
  132. package/build-module/components/block-list/block.js +1 -1
  133. package/build-module/components/block-list/block.js.map +1 -1
  134. package/build-module/components/block-list/block.native.js +2 -3
  135. package/build-module/components/block-list/block.native.js.map +1 -1
  136. package/build-module/components/block-list/use-block-props/index.js +1 -3
  137. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  138. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  139. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  140. package/build-module/components/block-list-appender/index.js +10 -3
  141. package/build-module/components/block-list-appender/index.js.map +1 -1
  142. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
  143. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  144. package/build-module/components/block-mover/button.js +2 -2
  145. package/build-module/components/block-mover/button.js.map +1 -1
  146. package/build-module/components/block-mover/index.js +2 -2
  147. package/build-module/components/block-mover/index.js.map +1 -1
  148. package/build-module/components/block-mover/index.native.js +2 -2
  149. package/build-module/components/block-mover/index.native.js.map +1 -1
  150. package/build-module/components/block-preview/auto.js +2 -10
  151. package/build-module/components/block-preview/auto.js.map +1 -1
  152. package/build-module/components/block-settings/container.native.js +1 -2
  153. package/build-module/components/block-settings/container.native.js.map +1 -1
  154. package/build-module/components/block-styles/index.js +133 -112
  155. package/build-module/components/block-styles/index.js.map +1 -1
  156. package/build-module/components/block-styles/utils.js +0 -34
  157. package/build-module/components/block-styles/utils.js.map +1 -1
  158. package/build-module/components/block-switcher/block-styles-menu.js +21 -3
  159. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  160. package/build-module/components/block-tools/back-compat.js +1 -2
  161. package/build-module/components/block-tools/back-compat.js.map +1 -1
  162. package/build-module/components/block-tools/block-selection-button.js +3 -3
  163. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  164. package/build-module/components/block-tools/insertion-point.js +1 -11
  165. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  166. package/build-module/components/button-block-appender/index.js +1 -2
  167. package/build-module/components/button-block-appender/index.js.map +1 -1
  168. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +13 -54
  169. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  170. package/build-module/components/default-block-appender/index.js +18 -15
  171. package/build-module/components/default-block-appender/index.js.map +1 -1
  172. package/build-module/components/default-style-picker/index.js +3 -17
  173. package/build-module/components/default-style-picker/index.js.map +1 -1
  174. package/build-module/components/iframe/index.js +4 -3
  175. package/build-module/components/iframe/index.js.map +1 -1
  176. package/build-module/components/index.js +1 -1
  177. package/build-module/components/index.js.map +1 -1
  178. package/build-module/components/inner-blocks/default-block-appender.js +4 -2
  179. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  180. package/build-module/components/inserter/hooks/use-insertion-point.js +2 -2
  181. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  182. package/build-module/components/inserter/index.js +2 -2
  183. package/build-module/components/inserter/index.js.map +1 -1
  184. package/build-module/components/inserter/index.native.js +4 -4
  185. package/build-module/components/inserter/index.native.js.map +1 -1
  186. package/build-module/components/inserter/quick-inserter.js +1 -1
  187. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  188. package/build-module/components/inserter/tabs.native.js +4 -7
  189. package/build-module/components/inserter/tabs.native.js.map +1 -1
  190. package/build-module/components/inspector-controls/block-support-slot-container.js +1 -2
  191. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  192. package/build-module/components/inspector-controls/block-support-tools-panel.js +50 -22
  193. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  194. package/build-module/components/inspector-controls/fill.native.js +5 -3
  195. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  196. package/build-module/components/inspector-controls/groups.js +0 -2
  197. package/build-module/components/inspector-controls/groups.js.map +1 -1
  198. package/build-module/components/inspector-controls/slot.js +3 -1
  199. package/build-module/components/inspector-controls/slot.js.map +1 -1
  200. package/build-module/components/letter-spacing-control/index.js +6 -6
  201. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  202. package/build-module/components/list-view/block-select-button.js +3 -22
  203. package/build-module/components/list-view/block-select-button.js.map +1 -1
  204. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  205. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  206. package/build-module/components/media-placeholder/index.js +0 -2
  207. package/build-module/components/media-placeholder/index.js.map +1 -1
  208. package/build-module/components/media-replace-flow/index.js +0 -2
  209. package/build-module/components/media-replace-flow/index.js.map +1 -1
  210. package/build-module/components/provider/use-block-sync.js +41 -14
  211. package/build-module/components/provider/use-block-sync.js.map +1 -1
  212. package/build-module/components/rich-text/file-paste-handler.js +1 -1
  213. package/build-module/components/rich-text/file-paste-handler.js.map +1 -1
  214. package/build-module/components/rich-text/use-input-rules.js +1 -2
  215. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  216. package/build-module/components/selection-scroll-into-view/index.js +1 -2
  217. package/build-module/components/selection-scroll-into-view/index.js.map +1 -1
  218. package/build-module/components/use-canvas-click-redirect/index.js +54 -0
  219. package/build-module/components/use-canvas-click-redirect/index.js.map +1 -0
  220. package/build-module/components/use-on-block-drop/index.js +4 -8
  221. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  222. package/build-module/components/use-setting/index.js +7 -0
  223. package/build-module/components/use-setting/index.js.map +1 -1
  224. package/build-module/components/writing-flow/use-multi-selection.js +4 -3
  225. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  226. package/build-module/hooks/border-color.js +7 -61
  227. package/build-module/hooks/border-color.js.map +1 -1
  228. package/build-module/hooks/border-radius.js +0 -42
  229. package/build-module/hooks/border-radius.js.map +1 -1
  230. package/build-module/hooks/border-style.js +0 -36
  231. package/build-module/hooks/border-style.js.map +1 -1
  232. package/build-module/hooks/border-width.js +32 -66
  233. package/build-module/hooks/border-width.js.map +1 -1
  234. package/build-module/hooks/border.js +12 -80
  235. package/build-module/hooks/border.js.map +1 -1
  236. package/build-module/hooks/letter-spacing.js +1 -1
  237. package/build-module/hooks/letter-spacing.js.map +1 -1
  238. package/build-module/hooks/typography.js +1 -1
  239. package/build-module/hooks/typography.js.map +1 -1
  240. package/build-module/layouts/flex.js +3 -27
  241. package/build-module/layouts/flex.js.map +1 -1
  242. package/build-module/store/actions.js +5 -4
  243. package/build-module/store/actions.js.map +1 -1
  244. package/build-module/store/defaults.js +1 -5
  245. package/build-module/store/defaults.js.map +1 -1
  246. package/build-module/store/reducer.js +24 -1
  247. package/build-module/store/reducer.js.map +1 -1
  248. package/build-module/store/selectors.js +9 -26
  249. package/build-module/store/selectors.js.map +1 -1
  250. package/build-module/utils/get-paste-event-data.js +1 -1
  251. package/build-module/utils/get-paste-event-data.js.map +1 -1
  252. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  253. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  254. package/build-style/style-rtl.css +180 -212
  255. package/build-style/style.css +180 -212
  256. package/package.json +27 -27
  257. package/src/components/block-caption/index.native.js +4 -22
  258. package/src/components/block-inspector/index.js +32 -13
  259. package/src/components/block-list/block.js +1 -1
  260. package/src/components/block-list/block.native.js +2 -2
  261. package/src/components/block-list/use-block-props/index.js +1 -3
  262. package/src/components/block-list/use-in-between-inserter.js +1 -1
  263. package/src/components/block-list-appender/index.js +21 -5
  264. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +2 -5
  265. package/src/components/block-mover/button.js +2 -6
  266. package/src/components/block-mover/index.js +2 -5
  267. package/src/components/block-mover/index.native.js +2 -5
  268. package/src/components/block-preview/auto.js +2 -7
  269. package/src/components/block-settings/container.native.js +0 -1
  270. package/src/components/block-styles/index.js +145 -125
  271. package/src/components/block-styles/style.scss +51 -59
  272. package/src/components/block-styles/test/{utils.js → index.js} +1 -60
  273. package/src/components/block-styles/utils.js +0 -39
  274. package/src/components/block-switcher/block-styles-menu.js +38 -3
  275. package/src/components/block-tools/back-compat.js +0 -1
  276. package/src/components/block-tools/block-selection-button.js +3 -9
  277. package/src/components/block-tools/insertion-point.js +1 -10
  278. package/src/components/border-style-control/style.scss +1 -0
  279. package/src/components/button-block-appender/index.js +0 -1
  280. package/src/components/colors-gradients/panel-color-gradient-settings.js +19 -75
  281. package/src/components/colors-gradients/style.scss +5 -42
  282. package/src/components/default-block-appender/index.js +24 -17
  283. package/src/components/default-block-appender/style.scss +0 -4
  284. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +24 -12
  285. package/src/components/default-block-appender/test/index.js +14 -4
  286. package/src/components/default-style-picker/index.js +6 -18
  287. package/src/components/iframe/index.js +3 -6
  288. package/src/components/index.js +1 -1
  289. package/src/components/inner-blocks/README.md +0 -2
  290. package/src/components/inner-blocks/default-block-appender.js +7 -2
  291. package/src/components/inserter/hooks/use-insertion-point.js +2 -9
  292. package/src/components/inserter/index.js +2 -2
  293. package/src/components/inserter/index.native.js +4 -7
  294. package/src/components/inserter/quick-inserter.js +1 -1
  295. package/src/components/inserter/tabs.native.js +4 -5
  296. package/src/components/inspector-controls/block-support-slot-container.js +1 -3
  297. package/src/components/inspector-controls/block-support-tools-panel.js +57 -21
  298. package/src/components/inspector-controls/fill.native.js +3 -4
  299. package/src/components/inspector-controls/groups.js +0 -2
  300. package/src/components/inspector-controls/slot.js +7 -2
  301. package/src/components/letter-spacing-control/index.js +6 -6
  302. package/src/components/link-control/README.md +1 -1
  303. package/src/components/link-control/test/index.js +0 -2
  304. package/src/components/list-view/block-select-button.js +1 -20
  305. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  306. package/src/components/media-placeholder/index.js +0 -2
  307. package/src/components/media-replace-flow/index.js +0 -2
  308. package/src/components/provider/use-block-sync.js +45 -11
  309. package/src/components/rich-text/file-paste-handler.js +1 -3
  310. package/src/components/rich-text/use-input-rules.js +1 -2
  311. package/src/components/selection-scroll-into-view/index.js +0 -1
  312. package/src/components/url-input/README.md +0 -5
  313. package/src/components/use-canvas-click-redirect/index.js +57 -0
  314. package/src/components/use-on-block-drop/index.js +4 -11
  315. package/src/components/use-setting/index.js +9 -0
  316. package/src/components/writing-flow/use-multi-selection.js +9 -12
  317. package/src/hooks/border-color.js +3 -55
  318. package/src/hooks/border-radius.js +0 -32
  319. package/src/hooks/border-style.js +0 -26
  320. package/src/hooks/border-width.js +32 -56
  321. package/src/hooks/border.js +20 -115
  322. package/src/hooks/border.scss +17 -3
  323. package/src/hooks/letter-spacing.js +1 -1
  324. package/src/hooks/typography.js +1 -1
  325. package/src/layouts/flex.js +4 -25
  326. package/src/store/actions.js +5 -5
  327. package/src/store/defaults.js +0 -2
  328. package/src/store/reducer.js +23 -1
  329. package/src/store/selectors.js +9 -39
  330. package/src/store/test/reducer.js +35 -0
  331. package/src/store/test/selectors.js +1 -1
  332. package/src/style.scss +3 -4
  333. package/src/utils/get-paste-event-data.js +1 -1
  334. package/src/utils/parse-css-unit-to-px.js +1 -1
  335. package/src/utils/test/parse-css-unit-to-px.js +0 -1
  336. package/tsconfig.tsbuildinfo +1 -1
  337. package/build/components/block-styles/menu-items.js +0 -63
  338. package/build/components/block-styles/menu-items.js.map +0 -1
  339. package/build/components/block-styles/preview-panel.js +0 -45
  340. package/build/components/block-styles/preview-panel.js.map +0 -1
  341. package/build/components/block-styles/use-styles-for-block.js +0 -119
  342. package/build/components/block-styles/use-styles-for-block.js.map +0 -1
  343. package/build/components/rich-text/prevent-event-discovery.js +0 -33
  344. package/build/components/rich-text/prevent-event-discovery.js.map +0 -1
  345. package/build/components/use-display-block-controls/index.native.js +0 -45
  346. package/build/components/use-display-block-controls/index.native.js.map +0 -1
  347. package/build-module/components/block-styles/menu-items.js +0 -50
  348. package/build-module/components/block-styles/menu-items.js.map +0 -1
  349. package/build-module/components/block-styles/preview-panel.js +0 -35
  350. package/build-module/components/block-styles/preview-panel.js.map +0 -1
  351. package/build-module/components/block-styles/use-styles-for-block.js +0 -107
  352. package/build-module/components/block-styles/use-styles-for-block.js.map +0 -1
  353. package/build-module/components/rich-text/prevent-event-discovery.js +0 -25
  354. package/build-module/components/rich-text/prevent-event-discovery.js.map +0 -1
  355. package/build-module/components/use-display-block-controls/index.native.js +0 -34
  356. package/build-module/components/use-display-block-controls/index.native.js.map +0 -1
  357. package/src/components/block-styles/menu-items.js +0 -49
  358. package/src/components/block-styles/preview-panel.js +0 -36
  359. package/src/components/block-styles/use-styles-for-block.js +0 -99
  360. package/src/components/rich-text/prevent-event-discovery.js +0 -23
  361. package/src/components/use-display-block-controls/index.native.js +0 -38
  362. package/src/components/writing-flow/test/use-multi-selection.js +0 -36
  363. package/src/hooks/dimensions.scss +0 -5
@@ -259,7 +259,7 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {
259
259
  onInsertBlocksAfter( blocks ) {
260
260
  const { clientId, rootClientId } = ownProps;
261
261
  const { getBlockIndex } = select( blockEditorStore );
262
- const index = getBlockIndex( clientId, rootClientId );
262
+ const index = getBlockIndex( clientId );
263
263
  insertBlocks( blocks, index + 1, rootClientId );
264
264
  },
265
265
  onMerge( forward ) {
@@ -302,7 +302,7 @@ function getWrapperProps( value, getWrapperPropsFunction ) {
302
302
  }
303
303
 
304
304
  export default compose( [
305
- withSelect( ( select, { clientId, rootClientId } ) => {
305
+ withSelect( ( select, { clientId } ) => {
306
306
  const {
307
307
  getBlockIndex,
308
308
  getSettings,
@@ -314,7 +314,7 @@ export default compose( [
314
314
  hasSelectedInnerBlock,
315
315
  } = select( blockEditorStore );
316
316
 
317
- const order = getBlockIndex( clientId, rootClientId );
317
+ const order = getBlockIndex( clientId );
318
318
  const isSelected = isBlockSelected( clientId );
319
319
  const isInnerBlockSelected = hasSelectedInnerBlock( clientId );
320
320
  const block = getBlock( clientId );
@@ -75,7 +75,6 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
75
75
  } = useSelect(
76
76
  ( select ) => {
77
77
  const {
78
- getBlockRootClientId,
79
78
  getBlockIndex,
80
79
  getBlockMode,
81
80
  getBlockName,
@@ -91,11 +90,10 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
91
90
  isBlockMultiSelected( clientId ) ||
92
91
  isAncestorMultiSelected( clientId );
93
92
  const blockName = getBlockName( clientId );
94
- const rootClientId = getBlockRootClientId( clientId );
95
93
  const blockType = getBlockType( blockName );
96
94
 
97
95
  return {
98
- index: getBlockIndex( clientId, rootClientId ),
96
+ index: getBlockIndex( clientId ),
99
97
  mode: getBlockMode( clientId ),
100
98
  name: blockName,
101
99
  blockApiVersion: blockType?.apiVersion || 1,
@@ -144,7 +144,7 @@ export function useInBetweenInserter() {
144
144
  return;
145
145
  }
146
146
 
147
- const index = getBlockIndex( clientId, rootClientId );
147
+ const index = getBlockIndex( clientId );
148
148
 
149
149
  // Don't show the in-between inserter before the first block in
150
150
  // the list (preserves the original behaviour).
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
+ import { last } from 'lodash';
4
5
  import classnames from 'classnames';
5
6
 
6
7
  /**
@@ -17,6 +18,7 @@ import ButtonBlockAppender from '../button-block-appender';
17
18
  import { store as blockEditorStore } from '../../store';
18
19
 
19
20
  function BlockListAppender( {
21
+ blockClientIds,
20
22
  rootClientId,
21
23
  canInsertDefaultBlock,
22
24
  isLocked,
@@ -34,18 +36,30 @@ function BlockListAppender( {
34
36
  // Prefer custom render prop if provided.
35
37
  appender = <CustomAppender />;
36
38
  } else {
37
- const isParentSelected =
38
- selectedBlockClientId === rootClientId ||
39
- ( ! rootClientId && ! selectedBlockClientId );
39
+ const isDocumentAppender = ! rootClientId;
40
+ const isParentSelected = selectedBlockClientId === rootClientId;
41
+ const isAnotherDefaultAppenderAlreadyDisplayed =
42
+ selectedBlockClientId &&
43
+ ! blockClientIds.includes( selectedBlockClientId );
40
44
 
41
- if ( ! isParentSelected ) {
45
+ if (
46
+ ! isDocumentAppender &&
47
+ ! isParentSelected &&
48
+ ( ! selectedBlockClientId ||
49
+ isAnotherDefaultAppenderAlreadyDisplayed )
50
+ ) {
42
51
  return null;
43
52
  }
44
53
 
45
54
  if ( canInsertDefaultBlock ) {
46
55
  // Render the default block appender when renderAppender has not been
47
56
  // provided and the context supports use of the default appender.
48
- appender = <DefaultBlockAppender rootClientId={ rootClientId } />;
57
+ appender = (
58
+ <DefaultBlockAppender
59
+ rootClientId={ rootClientId }
60
+ lastBlockClientId={ last( blockClientIds ) }
61
+ />
62
+ );
49
63
  } else {
50
64
  // Fallback in the case no renderAppender has been provided and the
51
65
  // default block can't be inserted.
@@ -89,6 +103,7 @@ function BlockListAppender( {
89
103
 
90
104
  export default withSelect( ( select, { rootClientId } ) => {
91
105
  const {
106
+ getBlockOrder,
92
107
  canInsertBlockType,
93
108
  getTemplateLock,
94
109
  getSelectedBlockClientId,
@@ -96,6 +111,7 @@ export default withSelect( ( select, { rootClientId } ) => {
96
111
 
97
112
  return {
98
113
  isLocked: !! getTemplateLock( rootClientId ),
114
+ blockClientIds: getBlockOrder( rootClientId ),
99
115
  canInsertDefaultBlock: canInsertBlockType(
100
116
  getDefaultBlockName(),
101
117
  rootClientId
@@ -316,11 +316,8 @@ export default compose(
316
316
  const rootClientId = getBlockRootClientId( firstClientId );
317
317
  const blockOrder = getBlockOrder( rootClientId );
318
318
 
319
- const firstIndex = getBlockIndex( firstClientId, rootClientId );
320
- const lastIndex = getBlockIndex(
321
- last( normalizedClientIds ),
322
- rootClientId
323
- );
319
+ const firstIndex = getBlockIndex( firstClientId );
320
+ const lastIndex = getBlockIndex( last( normalizedClientIds ) );
324
321
 
325
322
  const innerBlocks = getBlocksByClientId( clientIds );
326
323
 
@@ -84,13 +84,9 @@ const BlockMoverButton = forwardRef(
84
84
  const normalizedClientIds = castArray( clientIds );
85
85
  const firstClientId = first( normalizedClientIds );
86
86
  const blockRootClientId = getBlockRootClientId( firstClientId );
87
- const firstBlockIndex = getBlockIndex(
88
- firstClientId,
89
- blockRootClientId
90
- );
87
+ const firstBlockIndex = getBlockIndex( firstClientId );
91
88
  const lastBlockIndex = getBlockIndex(
92
- last( normalizedClientIds ),
93
- blockRootClientId
89
+ last( normalizedClientIds )
94
90
  );
95
91
  const blockOrder = getBlockOrder( blockRootClientId );
96
92
  const block = getBlock( firstClientId );
@@ -108,11 +108,8 @@ export default withSelect( ( select, { clientIds } ) => {
108
108
  const firstClientId = first( normalizedClientIds );
109
109
  const block = getBlock( firstClientId );
110
110
  const rootClientId = getBlockRootClientId( first( normalizedClientIds ) );
111
- const firstIndex = getBlockIndex( firstClientId, rootClientId );
112
- const lastIndex = getBlockIndex(
113
- last( normalizedClientIds ),
114
- rootClientId
115
- );
111
+ const firstIndex = getBlockIndex( firstClientId );
112
+ const lastIndex = getBlockIndex( last( normalizedClientIds ) );
116
113
  const blockOrder = getBlockOrder( rootClientId );
117
114
  const isFirst = firstIndex === 0;
118
115
  const isLast = lastIndex === blockOrder.length - 1;
@@ -138,11 +138,8 @@ export default compose(
138
138
  const firstClientId = first( normalizedClientIds );
139
139
  const rootClientId = getBlockRootClientId( firstClientId );
140
140
  const blockOrder = getBlockOrder( rootClientId );
141
- const firstIndex = getBlockIndex( firstClientId, rootClientId );
142
- const lastIndex = getBlockIndex(
143
- last( normalizedClientIds ),
144
- rootClientId
145
- );
141
+ const firstIndex = getBlockIndex( firstClientId );
142
+ const lastIndex = getBlockIndex( last( normalizedClientIds ) );
146
143
 
147
144
  return {
148
145
  firstIndex,
@@ -25,12 +25,8 @@ function AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {
25
25
  contentResizeListener,
26
26
  { height: contentHeight },
27
27
  ] = useResizeObserver();
28
- const { styles, assets } = useSelect( ( select ) => {
29
- const settings = select( store ).getSettings();
30
- return {
31
- styles: settings.styles,
32
- assets: settings.__unstableResolvedAssets,
33
- };
28
+ const styles = useSelect( ( select ) => {
29
+ return select( store ).getSettings().styles;
34
30
  }, [] );
35
31
 
36
32
  // Initialize on render instead of module top level, to avoid circular dependency issues.
@@ -50,7 +46,6 @@ function AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {
50
46
  >
51
47
  <Iframe
52
48
  head={ <EditorStyles styles={ styles } /> }
53
- assets={ assets }
54
49
  contentRef={ useRefEffect( ( bodyElement ) => {
55
50
  const {
56
51
  ownerDocument: { documentElement },
@@ -43,7 +43,6 @@ function BottomSheetSettings( {
43
43
  hideHeader
44
44
  contentStyle={ styles.content }
45
45
  hasNavigation
46
- testID="block-settings-modal"
47
46
  { ...props }
48
47
  >
49
48
  <BottomSheet.NavigationContainer animate main>
@@ -1,162 +1,182 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { noop, debounce } from 'lodash';
4
+ import { find, noop } from 'lodash';
5
5
  import classnames from 'classnames';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { useState, useLayoutEffect } from '@wordpress/element';
11
- import { useViewportMatch } from '@wordpress/compose';
10
+ import { useMemo } from '@wordpress/element';
11
+ import { useSelect, useDispatch } from '@wordpress/data';
12
12
  import { ENTER, SPACE } from '@wordpress/keycodes';
13
+ import { _x } from '@wordpress/i18n';
13
14
  import {
14
- Button,
15
- __experimentalText as Text,
16
- Slot,
17
- Fill,
18
- } from '@wordpress/components';
15
+ getBlockType,
16
+ cloneBlock,
17
+ getBlockFromExample,
18
+ store as blocksStore,
19
+ } from '@wordpress/blocks';
19
20
 
20
21
  /**
21
22
  * Internal dependencies
22
23
  */
23
- import BlockStylesPreviewPanel from './preview-panel';
24
- import useStylesForBlocks from './use-styles-for-block';
24
+ import { getActiveStyle, replaceActiveStyle } from './utils';
25
+ import BlockPreview from '../block-preview';
26
+ import { store as blockEditorStore } from '../../store';
25
27
 
26
- function BlockStylesPreviewPanelSlot( { scope } ) {
27
- return <Slot name={ `BlockStylesPreviewPanel/${ scope }` } />;
28
- }
28
+ const EMPTY_OBJECT = {};
29
29
 
30
- function BlockStylesPreviewPanelFill( { children, scope, ...props } ) {
31
- return (
32
- <Fill name={ `BlockStylesPreviewPanel/${ scope }` }>
33
- <div { ...props }>{ children }</div>
34
- </Fill>
35
- );
36
- }
30
+ function useGenericPreviewBlock( block, type ) {
31
+ return useMemo( () => {
32
+ const example = type?.example;
33
+ const blockName = type?.name;
37
34
 
38
- // Top position (in px) of the Block Styles container
39
- // relative to the editor pane.
40
- // The value is the equivalent of the container's right position.
41
- const DEFAULT_POSITION_TOP = 16;
35
+ if ( example && blockName ) {
36
+ return getBlockFromExample( blockName, {
37
+ attributes: example.attributes,
38
+ innerBlocks: example.innerBlocks,
39
+ } );
40
+ }
41
+
42
+ if ( block ) {
43
+ return cloneBlock( block );
44
+ }
45
+ }, [ type?.example ? block?.name : block, type ] );
46
+ }
42
47
 
43
- // Block Styles component for the Settings Sidebar.
44
48
  function BlockStyles( {
45
49
  clientId,
46
50
  onSwitch = noop,
47
51
  onHoverClassName = noop,
48
- scope,
52
+ itemRole,
49
53
  } ) {
50
- const {
51
- onSelect,
52
- stylesToRender,
53
- activeStyle,
54
- genericPreviewBlock,
55
- className: previewClassName,
56
- } = useStylesForBlocks( {
57
- clientId,
58
- onSwitch,
59
- } );
60
- const [ hoveredStyle, setHoveredStyle ] = useState( null );
61
- const [ containerScrollTop, setContainerScrollTop ] = useState( 0 );
62
- const isMobileViewport = useViewportMatch( 'medium', '<' );
63
-
64
- useLayoutEffect( () => {
65
- const scrollContainer = document.querySelector(
66
- '.interface-interface-skeleton__content'
67
- );
68
- const scrollTop = scrollContainer?.scrollTop || 0;
69
- setContainerScrollTop( scrollTop + DEFAULT_POSITION_TOP );
70
- }, [ hoveredStyle ] );
71
-
72
- if ( ! stylesToRender || stylesToRender.length === 0 ) {
73
- return null;
74
- }
54
+ const selector = ( select ) => {
55
+ const { getBlock } = select( blockEditorStore );
56
+ const block = getBlock( clientId );
75
57
 
76
- const debouncedSetHoveredStyle = debounce( setHoveredStyle, 250 );
58
+ if ( ! block ) {
59
+ return EMPTY_OBJECT;
60
+ }
77
61
 
78
- const onSelectStylePreview = ( style ) => {
79
- onSelect( style );
80
- onHoverClassName( null );
81
- setHoveredStyle( null );
82
- debouncedSetHoveredStyle.cancel();
62
+ const blockType = getBlockType( block.name );
63
+ const { getBlockStyles } = select( blocksStore );
64
+ return {
65
+ block,
66
+ type: blockType,
67
+ styles: getBlockStyles( block.name ),
68
+ className: block.attributes.className || '',
69
+ };
83
70
  };
84
71
 
85
- const styleItemHandler = ( item ) => {
86
- if ( hoveredStyle === item ) {
87
- debouncedSetHoveredStyle.cancel();
88
- return;
89
- }
90
- debouncedSetHoveredStyle( item );
91
- onHoverClassName( item?.name ?? null );
92
- };
72
+ const { styles, block, type, className } = useSelect( selector, [
73
+ clientId,
74
+ ] );
93
75
 
76
+ const { updateBlockAttributes } = useDispatch( blockEditorStore );
77
+ const genericPreviewBlock = useGenericPreviewBlock( block, type );
78
+
79
+ if ( ! styles || styles.length === 0 ) {
80
+ return null;
81
+ }
82
+
83
+ const renderedStyles = find( styles, 'isDefault' )
84
+ ? styles
85
+ : [
86
+ {
87
+ name: 'default',
88
+ label: _x( 'Default', 'block style' ),
89
+ isDefault: true,
90
+ },
91
+ ...styles,
92
+ ];
93
+
94
+ const activeStyle = getActiveStyle( renderedStyles, className );
94
95
  return (
95
96
  <div className="block-editor-block-styles">
96
- <div className="block-editor-block-styles__variants">
97
- { stylesToRender.map( ( style ) => {
98
- const buttonText = style.label || style.name;
99
-
100
- return (
101
- <Button
102
- className={ classnames(
103
- 'block-editor-block-styles__item',
104
- {
105
- 'is-active':
106
- activeStyle.name === style.name,
107
- }
108
- ) }
109
- key={ style.name }
110
- variant="secondary"
111
- label={ buttonText }
112
- onMouseEnter={ () => styleItemHandler( style ) }
113
- onFocus={ () => styleItemHandler( style ) }
114
- onMouseLeave={ () => styleItemHandler( null ) }
115
- onBlur={ () => styleItemHandler( null ) }
116
- onKeyDown={ ( event ) => {
117
- if (
118
- ENTER === event.keyCode ||
119
- SPACE === event.keyCode
120
- ) {
121
- event.preventDefault();
122
- onSelectStylePreview( style );
123
- }
124
- } }
125
- onClick={ () => onSelectStylePreview( style ) }
126
- role="button"
127
- tabIndex="0"
128
- >
129
- <Text
130
- as="span"
131
- limit={ 12 }
132
- ellipsizeMode="tail"
133
- className="block-editor-block-styles__item-text"
134
- truncate
135
- >
136
- { buttonText }
137
- </Text>
138
- </Button>
139
- );
140
- } ) }
141
- </div>
142
- { hoveredStyle && ! isMobileViewport && (
143
- <BlockStylesPreviewPanelFill
144
- scope={ scope }
145
- className="block-editor-block-styles__preview-panel"
146
- style={ { top: containerScrollTop } }
147
- onMouseLeave={ () => styleItemHandler( null ) }
148
- >
149
- <BlockStylesPreviewPanel
150
- activeStyle={ activeStyle }
151
- className={ previewClassName }
97
+ { renderedStyles.map( ( style ) => {
98
+ const styleClassName = replaceActiveStyle(
99
+ className,
100
+ activeStyle,
101
+ style
102
+ );
103
+ return (
104
+ <BlockStyleItem
152
105
  genericPreviewBlock={ genericPreviewBlock }
153
- style={ hoveredStyle }
106
+ viewportWidth={ type.example?.viewportWidth ?? 500 }
107
+ className={ className }
108
+ isActive={ activeStyle === style }
109
+ key={ style.name }
110
+ onSelect={ () => {
111
+ updateBlockAttributes( clientId, {
112
+ className: styleClassName,
113
+ } );
114
+ onHoverClassName( null );
115
+ onSwitch();
116
+ } }
117
+ onBlur={ () => onHoverClassName( null ) }
118
+ onHover={ () => onHoverClassName( styleClassName ) }
119
+ style={ style }
120
+ styleClassName={ styleClassName }
121
+ itemRole={ itemRole }
154
122
  />
155
- </BlockStylesPreviewPanelFill>
156
- ) }
123
+ );
124
+ } ) }
125
+ </div>
126
+ );
127
+ }
128
+
129
+ function BlockStyleItem( {
130
+ genericPreviewBlock,
131
+ viewportWidth,
132
+ style,
133
+ isActive,
134
+ onBlur,
135
+ onHover,
136
+ onSelect,
137
+ styleClassName,
138
+ itemRole,
139
+ } ) {
140
+ const previewBlocks = useMemo( () => {
141
+ return {
142
+ ...genericPreviewBlock,
143
+ attributes: {
144
+ ...genericPreviewBlock.attributes,
145
+ className: styleClassName,
146
+ },
147
+ };
148
+ }, [ genericPreviewBlock, styleClassName ] );
149
+
150
+ return (
151
+ <div
152
+ key={ style.name }
153
+ className={ classnames( 'block-editor-block-styles__item', {
154
+ 'is-active': isActive,
155
+ } ) }
156
+ onClick={ () => onSelect() }
157
+ onKeyDown={ ( event ) => {
158
+ if ( ENTER === event.keyCode || SPACE === event.keyCode ) {
159
+ event.preventDefault();
160
+ onSelect();
161
+ }
162
+ } }
163
+ onMouseEnter={ onHover }
164
+ onMouseLeave={ onBlur }
165
+ role={ itemRole || 'button' }
166
+ tabIndex="0"
167
+ aria-label={ style.label || style.name }
168
+ >
169
+ <div className="block-editor-block-styles__item-preview">
170
+ <BlockPreview
171
+ viewportWidth={ viewportWidth }
172
+ blocks={ previewBlocks }
173
+ />
174
+ </div>
175
+ <div className="block-editor-block-styles__item-label">
176
+ { style.label || style.name }
177
+ </div>
157
178
  </div>
158
179
  );
159
180
  }
160
181
 
161
- BlockStyles.Slot = BlockStylesPreviewPanelSlot;
162
182
  export default BlockStyles;
@@ -1,75 +1,67 @@
1
- .block-editor-block-styles + .default-style-picker__default-switcher {
2
- margin-top: $grid-unit-20;
1
+ .block-editor-block-styles {
2
+ display: flex;
3
+ flex-wrap: wrap;
4
+ justify-content: space-between;
3
5
  }
4
6
 
5
- .block-editor-block-styles__preview-panel {
6
- display: none;
7
- position: absolute;
8
- right: $grid-unit-20;
9
- left: auto;
10
- // Same layer as the sidebar from which it's triggered.
11
- z-index: z-index(".interface-interface-skeleton__sidebar {greater than small}");
7
+ .block-editor-block-styles__item {
8
+ width: calc(50% - #{ $grid-unit-05 });
9
+ margin: $grid-unit-05 0;
10
+ flex-shrink: 0;
11
+ cursor: pointer;
12
+ overflow: hidden;
13
+ border-radius: $radius-block-ui;
14
+ padding: $grid-unit-05 * 1.5;
15
+ display: flex;
16
+ flex-direction: column;
12
17
 
13
- // Only show in narrow widths.
14
- @include break-medium() {
15
- display: block;
16
- }
18
+ &:focus {
19
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
17
20
 
18
- // Overrides for InserterPreviewPanel.
19
- .block-editor-inserter__preview-container {
20
- left: auto;
21
- right: auto;
22
- top: auto;
23
- position: static;
21
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
22
+ outline: 2px solid transparent;
24
23
  }
25
24
 
26
- .block-editor-block-card__title.block-editor-block-card__title {
27
- margin: 0;
28
- }
29
- .block-editor-block-icon {
30
- display: none;
25
+ &:hover .block-editor-block-styles__item-preview {
26
+ border-color: var(--wp-admin-theme-color);
31
27
  }
32
- }
33
-
34
- .block-editor-block-styles__variants {
35
- display: flex;
36
- flex-wrap: wrap;
37
- justify-content: space-between;
38
- gap: $grid-unit-10;
39
28
 
40
- .block-editor-block-styles__item {
41
- color: $gray-800;
42
- box-shadow: inset 0 0 0 1px $gray-400;
43
- display: inline-block;
44
- width: calc(50% - #{$grid-unit-05});
45
-
46
- &:focus,
47
- &:hover {
48
- color: var(--wp-admin-theme-color);
49
- box-shadow: inset 0 0 0 2px var(--wp-admin-theme-color);
50
- }
51
-
52
- &.is-active,
53
- &.is-active:hover {
54
- background-color: $gray-800;
55
- box-shadow: none;
29
+ &.is-active {
30
+ .block-editor-block-styles__item-label {
31
+ font-weight: bold;
56
32
  }
57
33
 
58
- &.is-active .block-editor-block-styles__item-text,
59
- &.is-active:hover .block-editor-block-styles__item-text {
60
- color: $white;
34
+ .block-editor-block-styles__item-preview {
35
+ margin: 0;
36
+ border: 2px solid $gray-900;
61
37
  }
38
+ }
62
39
 
63
- &.is-active:focus {
64
- box-shadow: inset 0 0 0 1px $white, 0 0 0 2px var(--wp-admin-theme-color);
65
- }
40
+ .block-editor-block-preview__container {
41
+ cursor: inherit;
66
42
  }
67
43
  }
68
44
 
69
- // To prevent overflow in the preview container,
70
- // ensure that block contents' margin and padding
71
- // do not add to the block container's width.
72
- .block-editor-block-styles__block-preview-container,
73
- .block-editor-block-styles__block-preview-container * {
74
- box-sizing: border-box !important;
45
+ // Show a little preview thumbnail for style variations.
46
+ .block-editor-block-styles__item-preview {
47
+ outline: $border-width solid transparent; // Shown in Windows High Contrast mode.
48
+ padding: 0;
49
+ margin: 2px;
50
+ border-radius: $radius-block-ui;
51
+ display: flex;
52
+ overflow: hidden;
53
+ background: $white;
54
+ align-items: center;
55
+ flex-grow: 1;
56
+ min-height: 80px;
57
+ max-height: 160px;
58
+ }
59
+
60
+ .block-editor-block-switcher__styles__menugroup {
61
+ position: relative;
62
+ }
63
+
64
+ .block-editor-block-styles__item-label {
65
+ text-align: center;
66
+ padding: 4px 0;
75
67
  }