@wordpress/block-editor 10.4.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +0 -1
  3. package/build/autocompleters/block.js +2 -6
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/autocompleters/link.js +2 -0
  6. package/build/autocompleters/link.js.map +1 -1
  7. package/build/components/block-card/index.js +51 -3
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-draggable/index.native.js +46 -39
  10. package/build/components/block-draggable/index.native.js.map +1 -1
  11. package/build/components/block-edit/edit.js +4 -3
  12. package/build/components/block-edit/edit.js.map +1 -1
  13. package/build/components/block-edit/edit.native.js +4 -7
  14. package/build/components/block-edit/edit.native.js.map +1 -1
  15. package/build/components/block-inspector/index.js +35 -33
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block-list-context.native.js +5 -8
  18. package/build/components/block-list/block-list-context.native.js.map +1 -1
  19. package/build/components/block-list/block.js +55 -24
  20. package/build/components/block-list/block.js.map +1 -1
  21. package/build/components/block-list/block.native.js +61 -28
  22. package/build/components/block-list/block.native.js.map +1 -1
  23. package/build/components/block-lock/menu-item.js +1 -1
  24. package/build/components/block-lock/menu-item.js.map +1 -1
  25. package/build/components/block-lock/modal.js +16 -9
  26. package/build/components/block-lock/modal.js.map +1 -1
  27. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +12 -4
  28. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  29. package/build/components/block-pattern-setup/index.js +3 -2
  30. package/build/components/block-pattern-setup/index.js.map +1 -1
  31. package/build/components/block-patterns-list/index.js +33 -11
  32. package/build/components/block-patterns-list/index.js.map +1 -1
  33. package/build/components/block-preview/auto.js +9 -3
  34. package/build/components/block-preview/auto.js.map +1 -1
  35. package/build/components/block-preview/index.js +5 -9
  36. package/build/components/block-preview/index.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-styles/utils.js +3 -3
  40. package/build/components/block-styles/utils.js.map +1 -1
  41. package/build/components/block-switcher/index.js +19 -4
  42. package/build/components/block-switcher/index.js.map +1 -1
  43. package/build/components/block-toolbar/index.js +5 -1
  44. package/build/components/block-toolbar/index.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +8 -49
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/selected-block-popover.js +27 -4
  48. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  49. package/build/components/block-variation-picker/index.js +1 -2
  50. package/build/components/block-variation-picker/index.js.map +1 -1
  51. package/build/components/colors/with-colors.js +4 -3
  52. package/build/components/colors/with-colors.js.map +1 -1
  53. package/build/components/font-sizes/fluid-utils.js +24 -40
  54. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  55. package/build/components/font-sizes/with-font-sizes.js +7 -5
  56. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  57. package/build/components/height-control/index.js +115 -0
  58. package/build/components/height-control/index.js.map +1 -0
  59. package/build/components/iframe/index.js +11 -8
  60. package/build/components/iframe/index.js.map +1 -1
  61. package/build/components/image-editor/use-save-image.js +2 -0
  62. package/build/components/image-editor/use-save-image.js.map +1 -1
  63. package/build/components/image-editor/zoom-dropdown.js +1 -0
  64. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  65. package/build/components/index.js +18 -0
  66. package/build/components/index.js.map +1 -1
  67. package/build/components/inner-blocks/index.js +25 -9
  68. package/build/components/inner-blocks/index.js.map +1 -1
  69. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  70. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  71. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  72. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  73. package/build/components/inserter/block-patterns-tab.js +25 -46
  74. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  75. package/build/components/inserter/block-types-tab.js +3 -1
  76. package/build/components/inserter/block-types-tab.js.map +1 -1
  77. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  78. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  79. package/build/components/inserter/index.js +8 -3
  80. package/build/components/inserter/index.js.map +1 -1
  81. package/build/components/inserter/index.native.js +3 -4
  82. package/build/components/inserter/index.native.js.map +1 -1
  83. package/build/components/inserter/media-tab/hooks.js +103 -0
  84. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  85. package/build/components/inserter/media-tab/index.js +32 -0
  86. package/build/components/inserter/media-tab/index.js.map +1 -0
  87. package/build/components/inserter/media-tab/media-list.js +100 -0
  88. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  89. package/build/components/inserter/media-tab/media-panel.js +96 -0
  90. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  91. package/build/components/inserter/media-tab/media-tab.js +120 -0
  92. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  93. package/build/components/inserter/media-tab/utils.js +54 -0
  94. package/build/components/inserter/media-tab/utils.js.map +1 -0
  95. package/build/components/inserter/menu.js +35 -12
  96. package/build/components/inserter/menu.js.map +1 -1
  97. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  98. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  99. package/build/components/inserter/quick-inserter.js +1 -0
  100. package/build/components/inserter/quick-inserter.js.map +1 -1
  101. package/build/components/inserter/reusable-blocks-tab.js +4 -1
  102. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  103. package/build/components/inserter/search-results.js +3 -1
  104. package/build/components/inserter/search-results.js.map +1 -1
  105. package/build/components/inserter/tabs.js +16 -2
  106. package/build/components/inserter/tabs.js.map +1 -1
  107. package/build/components/inserter-list-item/index.js +4 -1
  108. package/build/components/inserter-list-item/index.js.map +1 -1
  109. package/build/components/inspector-controls/groups.js +2 -0
  110. package/build/components/inspector-controls/groups.js.map +1 -1
  111. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  112. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  113. package/build/components/inspector-controls-tabs/index.js +71 -0
  114. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  115. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  116. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  117. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  118. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  119. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  120. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  121. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  122. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  123. package/build/components/inspector-controls-tabs/utils.js +37 -0
  124. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  125. package/build/components/link-control/index.js +19 -34
  126. package/build/components/link-control/index.js.map +1 -1
  127. package/build/components/link-control/search-input.js +1 -2
  128. package/build/components/link-control/search-input.js.map +1 -1
  129. package/build/components/link-control/use-internal-input-value.js +26 -0
  130. package/build/components/link-control/use-internal-input-value.js.map +1 -0
  131. package/build/components/list-view/block.js +10 -5
  132. package/build/components/list-view/block.js.map +1 -1
  133. package/build/components/list-view/branch.js +22 -15
  134. package/build/components/list-view/branch.js.map +1 -1
  135. package/build/components/media-upload/index.native.js +2 -3
  136. package/build/components/media-upload/index.native.js.map +1 -1
  137. package/build/components/off-canvas-editor/appender.js +104 -0
  138. package/build/components/off-canvas-editor/appender.js.map +1 -0
  139. package/build/components/off-canvas-editor/block-contents.js +100 -0
  140. package/build/components/off-canvas-editor/block-contents.js.map +1 -0
  141. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  142. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  143. package/build/components/off-canvas-editor/block-select-button.js +119 -0
  144. package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
  145. package/build/components/off-canvas-editor/block.js +324 -0
  146. package/build/components/off-canvas-editor/block.js.map +1 -0
  147. package/build/components/off-canvas-editor/branch.js +179 -0
  148. package/build/components/off-canvas-editor/branch.js.map +1 -0
  149. package/build/components/off-canvas-editor/context.js +19 -0
  150. package/build/components/off-canvas-editor/context.js.map +1 -0
  151. package/build/components/off-canvas-editor/drop-indicator.js +118 -0
  152. package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
  153. package/build/components/off-canvas-editor/expander.js +41 -0
  154. package/build/components/off-canvas-editor/expander.js.map +1 -0
  155. package/build/components/off-canvas-editor/index.js +213 -0
  156. package/build/components/off-canvas-editor/index.js.map +1 -0
  157. package/build/components/off-canvas-editor/leaf.js +60 -0
  158. package/build/components/off-canvas-editor/leaf.js.map +1 -0
  159. package/build/components/off-canvas-editor/link-ui.js +185 -0
  160. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  161. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  162. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  163. package/build/components/off-canvas-editor/use-block-selection.js +139 -0
  164. package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
  165. package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
  166. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  167. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
  168. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  169. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
  170. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  171. package/build/components/off-canvas-editor/utils.js +60 -0
  172. package/build/components/off-canvas-editor/utils.js.map +1 -0
  173. package/build/components/rich-text/format-toolbar/index.js +8 -4
  174. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  175. package/build/components/rich-text/index.js +3 -3
  176. package/build/components/rich-text/index.js.map +1 -1
  177. package/build/components/rich-text/index.native.js +0 -2
  178. package/build/components/rich-text/index.native.js.map +1 -1
  179. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  180. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  181. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  182. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  183. package/build/components/rich-text/utils.js +1 -19
  184. package/build/components/rich-text/utils.js.map +1 -1
  185. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  186. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  187. package/build/components/ungroup-button/index.native.js +4 -2
  188. package/build/components/ungroup-button/index.native.js.map +1 -1
  189. package/build/components/url-input/index.js +46 -43
  190. package/build/components/url-input/index.js.map +1 -1
  191. package/build/components/url-popover/index.js +31 -2
  192. package/build/components/url-popover/index.js.map +1 -1
  193. package/build/components/use-block-display-information/index.js +8 -4
  194. package/build/components/use-block-display-information/index.js.map +1 -1
  195. package/build/components/use-setting/index.js +10 -2
  196. package/build/components/use-setting/index.js.map +1 -1
  197. package/build/hooks/child-layout.js +209 -0
  198. package/build/hooks/child-layout.js.map +1 -0
  199. package/build/hooks/color-panel.js +17 -1
  200. package/build/hooks/color-panel.js.map +1 -1
  201. package/build/hooks/color.js +1 -1
  202. package/build/hooks/color.js.map +1 -1
  203. package/build/hooks/content-lock-ui.js +14 -7
  204. package/build/hooks/content-lock-ui.js.map +1 -1
  205. package/build/hooks/dimensions.js +65 -16
  206. package/build/hooks/dimensions.js.map +1 -1
  207. package/build/hooks/layout.js +59 -3
  208. package/build/hooks/layout.js.map +1 -1
  209. package/build/hooks/margin.js +4 -2
  210. package/build/hooks/margin.js.map +1 -1
  211. package/build/hooks/min-height.js +139 -0
  212. package/build/hooks/min-height.js.map +1 -0
  213. package/build/hooks/padding.js +4 -2
  214. package/build/hooks/padding.js.map +1 -1
  215. package/build/hooks/style.js +3 -2
  216. package/build/hooks/style.js.map +1 -1
  217. package/build/layouts/flex.js +22 -21
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/store/actions.js +26 -0
  220. package/build/store/actions.js.map +1 -1
  221. package/build/store/reducer.js +420 -265
  222. package/build/store/reducer.js.map +1 -1
  223. package/build/store/selectors.js +73 -49
  224. package/build/store/selectors.js.map +1 -1
  225. package/build/utils/sorting.js +63 -0
  226. package/build/utils/sorting.js.map +1 -0
  227. package/build-module/autocompleters/block.js +2 -6
  228. package/build-module/autocompleters/block.js.map +1 -1
  229. package/build-module/autocompleters/link.js +2 -0
  230. package/build-module/autocompleters/link.js.map +1 -1
  231. package/build-module/components/block-card/index.js +45 -3
  232. package/build-module/components/block-card/index.js.map +1 -1
  233. package/build-module/components/block-draggable/index.native.js +40 -31
  234. package/build-module/components/block-draggable/index.native.js.map +1 -1
  235. package/build-module/components/block-edit/edit.js +4 -2
  236. package/build-module/components/block-edit/edit.js.map +1 -1
  237. package/build-module/components/block-edit/edit.native.js +4 -6
  238. package/build-module/components/block-edit/edit.native.js.map +1 -1
  239. package/build-module/components/block-inspector/index.js +32 -30
  240. package/build-module/components/block-inspector/index.js.map +1 -1
  241. package/build-module/components/block-list/block-list-context.native.js +5 -8
  242. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  243. package/build-module/components/block-list/block.js +55 -25
  244. package/build-module/components/block-list/block.js.map +1 -1
  245. package/build-module/components/block-list/block.native.js +61 -28
  246. package/build-module/components/block-list/block.native.js.map +1 -1
  247. package/build-module/components/block-lock/menu-item.js +2 -2
  248. package/build-module/components/block-lock/menu-item.js.map +1 -1
  249. package/build-module/components/block-lock/modal.js +17 -10
  250. package/build-module/components/block-lock/modal.js.map +1 -1
  251. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +13 -6
  252. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  253. package/build-module/components/block-pattern-setup/index.js +3 -2
  254. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  255. package/build-module/components/block-patterns-list/index.js +35 -13
  256. package/build-module/components/block-patterns-list/index.js.map +1 -1
  257. package/build-module/components/block-preview/auto.js +9 -3
  258. package/build-module/components/block-preview/auto.js.map +1 -1
  259. package/build-module/components/block-preview/index.js +5 -8
  260. package/build-module/components/block-preview/index.js.map +1 -1
  261. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  262. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  263. package/build-module/components/block-styles/utils.js +3 -3
  264. package/build-module/components/block-styles/utils.js.map +1 -1
  265. package/build-module/components/block-switcher/index.js +19 -4
  266. package/build-module/components/block-switcher/index.js.map +1 -1
  267. package/build-module/components/block-toolbar/index.js +6 -2
  268. package/build-module/components/block-toolbar/index.js.map +1 -1
  269. package/build-module/components/block-tools/insertion-point.js +8 -49
  270. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  271. package/build-module/components/block-tools/selected-block-popover.js +27 -5
  272. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  273. package/build-module/components/block-variation-picker/index.js +1 -2
  274. package/build-module/components/block-variation-picker/index.js.map +1 -1
  275. package/build-module/components/colors/with-colors.js +5 -4
  276. package/build-module/components/colors/with-colors.js.map +1 -1
  277. package/build-module/components/font-sizes/fluid-utils.js +24 -40
  278. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  279. package/build-module/components/font-sizes/with-font-sizes.js +8 -6
  280. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  281. package/build-module/components/height-control/index.js +103 -0
  282. package/build-module/components/height-control/index.js.map +1 -0
  283. package/build-module/components/iframe/index.js +11 -8
  284. package/build-module/components/iframe/index.js.map +1 -1
  285. package/build-module/components/image-editor/use-save-image.js +2 -0
  286. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  287. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  288. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  289. package/build-module/components/index.js +2 -0
  290. package/build-module/components/index.js.map +1 -1
  291. package/build-module/components/inner-blocks/index.js +27 -11
  292. package/build-module/components/inner-blocks/index.js.map +1 -1
  293. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  294. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  295. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  296. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  297. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  298. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  299. package/build-module/components/inserter/block-types-tab.js +3 -2
  300. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  301. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  302. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  303. package/build-module/components/inserter/index.js +8 -3
  304. package/build-module/components/inserter/index.js.map +1 -1
  305. package/build-module/components/inserter/index.native.js +3 -5
  306. package/build-module/components/inserter/index.native.js.map +1 -1
  307. package/build-module/components/inserter/media-tab/hooks.js +89 -0
  308. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  309. package/build-module/components/inserter/media-tab/index.js +4 -0
  310. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  311. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  312. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  313. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  314. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  315. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  316. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  317. package/build-module/components/inserter/media-tab/utils.js +45 -0
  318. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  319. package/build-module/components/inserter/menu.js +33 -12
  320. package/build-module/components/inserter/menu.js.map +1 -1
  321. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  322. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  323. package/build-module/components/inserter/quick-inserter.js +1 -0
  324. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  325. package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
  326. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  327. package/build-module/components/inserter/search-results.js +3 -2
  328. package/build-module/components/inserter/search-results.js.map +1 -1
  329. package/build-module/components/inserter/tabs.js +15 -2
  330. package/build-module/components/inserter/tabs.js.map +1 -1
  331. package/build-module/components/inserter-list-item/index.js +5 -2
  332. package/build-module/components/inserter-list-item/index.js.map +1 -1
  333. package/build-module/components/inspector-controls/groups.js +2 -0
  334. package/build-module/components/inspector-controls/groups.js.map +1 -1
  335. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  336. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  337. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  338. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  339. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  340. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  341. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  342. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  343. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  344. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  345. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  346. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  347. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  348. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  349. package/build-module/components/link-control/index.js +18 -34
  350. package/build-module/components/link-control/index.js.map +1 -1
  351. package/build-module/components/link-control/search-input.js +1 -2
  352. package/build-module/components/link-control/search-input.js.map +1 -1
  353. package/build-module/components/link-control/use-internal-input-value.js +18 -0
  354. package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
  355. package/build-module/components/list-view/block.js +10 -5
  356. package/build-module/components/list-view/block.js.map +1 -1
  357. package/build-module/components/list-view/branch.js +21 -14
  358. package/build-module/components/list-view/branch.js.map +1 -1
  359. package/build-module/components/media-upload/index.native.js +2 -4
  360. package/build-module/components/media-upload/index.native.js.map +1 -1
  361. package/build-module/components/off-canvas-editor/appender.js +89 -0
  362. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  363. package/build-module/components/off-canvas-editor/block-contents.js +85 -0
  364. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
  365. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  366. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  367. package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
  368. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
  369. package/build-module/components/off-canvas-editor/block.js +298 -0
  370. package/build-module/components/off-canvas-editor/block.js.map +1 -0
  371. package/build-module/components/off-canvas-editor/branch.js +164 -0
  372. package/build-module/components/off-canvas-editor/branch.js.map +1 -0
  373. package/build-module/components/off-canvas-editor/context.js +7 -0
  374. package/build-module/components/off-canvas-editor/context.js.map +1 -0
  375. package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
  376. package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
  377. package/build-module/components/off-canvas-editor/expander.js +32 -0
  378. package/build-module/components/off-canvas-editor/expander.js.map +1 -0
  379. package/build-module/components/off-canvas-editor/index.js +189 -0
  380. package/build-module/components/off-canvas-editor/index.js.map +1 -0
  381. package/build-module/components/off-canvas-editor/leaf.js +45 -0
  382. package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
  383. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  384. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  385. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  386. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  387. package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
  388. package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
  389. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
  390. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  391. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
  392. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  393. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
  394. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  395. package/build-module/components/off-canvas-editor/utils.js +44 -0
  396. package/build-module/components/off-canvas-editor/utils.js.map +1 -0
  397. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  398. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  399. package/build-module/components/rich-text/index.js +2 -3
  400. package/build-module/components/rich-text/index.js.map +1 -1
  401. package/build-module/components/rich-text/index.native.js +0 -2
  402. package/build-module/components/rich-text/index.native.js.map +1 -1
  403. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  404. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  405. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  406. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  407. package/build-module/components/rich-text/utils.js +1 -16
  408. package/build-module/components/rich-text/utils.js.map +1 -1
  409. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  410. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  411. package/build-module/components/ungroup-button/index.native.js +3 -2
  412. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  413. package/build-module/components/url-input/index.js +46 -43
  414. package/build-module/components/url-input/index.js.map +1 -1
  415. package/build-module/components/url-popover/index.js +30 -3
  416. package/build-module/components/url-popover/index.js.map +1 -1
  417. package/build-module/components/use-block-display-information/index.js +9 -5
  418. package/build-module/components/use-block-display-information/index.js.map +1 -1
  419. package/build-module/components/use-setting/index.js +9 -2
  420. package/build-module/components/use-setting/index.js.map +1 -1
  421. package/build-module/hooks/child-layout.js +189 -0
  422. package/build-module/hooks/child-layout.js.map +1 -0
  423. package/build-module/hooks/color-panel.js +17 -1
  424. package/build-module/hooks/color-panel.js.map +1 -1
  425. package/build-module/hooks/color.js +1 -1
  426. package/build-module/hooks/color.js.map +1 -1
  427. package/build-module/hooks/content-lock-ui.js +16 -9
  428. package/build-module/hooks/content-lock-ui.js.map +1 -1
  429. package/build-module/hooks/dimensions.js +60 -16
  430. package/build-module/hooks/dimensions.js.map +1 -1
  431. package/build-module/hooks/layout.js +57 -2
  432. package/build-module/hooks/layout.js.map +1 -1
  433. package/build-module/hooks/margin.js +4 -2
  434. package/build-module/hooks/margin.js.map +1 -1
  435. package/build-module/hooks/min-height.js +116 -0
  436. package/build-module/hooks/min-height.js.map +1 -0
  437. package/build-module/hooks/padding.js +4 -2
  438. package/build-module/hooks/padding.js.map +1 -1
  439. package/build-module/hooks/style.js +4 -3
  440. package/build-module/hooks/style.js.map +1 -1
  441. package/build-module/layouts/flex.js +23 -22
  442. package/build-module/layouts/flex.js.map +1 -1
  443. package/build-module/store/actions.js +22 -0
  444. package/build-module/store/actions.js.map +1 -1
  445. package/build-module/store/reducer.js +415 -265
  446. package/build-module/store/reducer.js.map +1 -1
  447. package/build-module/store/selectors.js +66 -48
  448. package/build-module/store/selectors.js.map +1 -1
  449. package/build-module/utils/sorting.js +56 -0
  450. package/build-module/utils/sorting.js.map +1 -0
  451. package/build-style/content-rtl.css +701 -0
  452. package/build-style/content.css +701 -0
  453. package/build-style/default-editor-styles-rtl.css +14 -0
  454. package/build-style/default-editor-styles.css +14 -0
  455. package/build-style/style-rtl.css +305 -668
  456. package/build-style/style.css +305 -668
  457. package/package.json +32 -30
  458. package/src/autocompleters/block.js +2 -6
  459. package/src/autocompleters/link.js +2 -0
  460. package/src/components/alignment-control/README.md +1 -1
  461. package/src/components/alignment-control/test/index.js +4 -1
  462. package/src/components/block-alignment-control/test/index.js +4 -1
  463. package/src/components/block-alignment-control/test/index.native.js +4 -4
  464. package/src/components/block-card/index.js +46 -2
  465. package/src/components/block-card/style.scss +4 -0
  466. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  467. package/src/components/block-draggable/content.scss +20 -0
  468. package/src/components/block-draggable/index.native.js +54 -40
  469. package/src/components/block-draggable/style.scss +0 -21
  470. package/src/components/block-draggable/test/helpers.native.js +7 -9
  471. package/src/components/block-draggable/test/index.native.js +35 -45
  472. package/src/components/block-edit/edit.js +5 -2
  473. package/src/components/block-edit/edit.native.js +5 -6
  474. package/src/components/block-inspector/index.js +96 -81
  475. package/src/components/block-inspector/style.scss +9 -1
  476. package/src/components/block-list/block-list-context.native.js +5 -8
  477. package/src/components/block-list/block.js +74 -23
  478. package/src/components/block-list/block.native.js +78 -23
  479. package/src/components/block-list/{style.scss → content.scss} +11 -20
  480. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  481. package/src/components/block-lock/menu-item.js +5 -2
  482. package/src/components/block-lock/modal.js +19 -36
  483. package/src/components/block-lock/style.scss +8 -17
  484. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +24 -6
  485. package/src/components/block-mover/style.scss +0 -1
  486. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -2
  487. package/src/components/block-pattern-setup/index.js +2 -1
  488. package/src/components/block-patterns-list/index.js +47 -24
  489. package/src/components/block-popover/style.scss +1 -1
  490. package/src/components/block-preview/README.md +15 -10
  491. package/src/components/block-preview/auto.js +7 -1
  492. package/src/components/block-preview/content.scss +4 -0
  493. package/src/components/block-preview/index.js +7 -12
  494. package/src/components/block-preview/style.scss +0 -7
  495. package/src/components/block-preview/test/index.js +18 -35
  496. package/src/components/block-selection-clearer/test/index.js +12 -12
  497. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  498. package/src/components/block-styles/utils.js +3 -3
  499. package/src/components/block-switcher/index.js +19 -4
  500. package/src/components/block-switcher/test/index.js +4 -0
  501. package/src/components/block-toolbar/index.js +12 -5
  502. package/src/components/block-toolbar/style.scss +10 -0
  503. package/src/components/block-tools/insertion-point.js +3 -47
  504. package/src/components/block-tools/selected-block-popover.js +80 -34
  505. package/src/components/block-tools/style.scss +27 -5
  506. package/src/components/block-variation-picker/index.js +1 -4
  507. package/src/components/block-vertical-alignment-control/test/index.js +4 -1
  508. package/src/components/colors/with-colors.js +13 -23
  509. package/src/components/default-block-appender/{style.scss → content.scss} +1 -0
  510. package/src/components/font-sizes/fluid-utils.js +37 -64
  511. package/src/components/font-sizes/test/fluid-utils.js +5 -5
  512. package/src/components/font-sizes/with-font-sizes.js +14 -11
  513. package/src/components/height-control/index.js +123 -0
  514. package/src/components/height-control/stories/index.js +21 -0
  515. package/src/components/height-control/style.scss +5 -0
  516. package/src/components/iframe/index.js +25 -18
  517. package/src/components/image-editor/use-save-image.js +2 -0
  518. package/src/components/image-editor/zoom-dropdown.js +1 -0
  519. package/src/components/index.js +2 -0
  520. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  521. package/src/components/inner-blocks/index.js +30 -10
  522. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  523. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  524. package/src/components/inserter/block-patterns-tab.js +28 -71
  525. package/src/components/inserter/block-types-tab.js +3 -2
  526. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  527. package/src/components/inserter/index.js +10 -2
  528. package/src/components/inserter/index.native.js +1 -1
  529. package/src/components/inserter/media-tab/hooks.js +88 -0
  530. package/src/components/inserter/media-tab/index.js +3 -0
  531. package/src/components/inserter/media-tab/media-list.js +93 -0
  532. package/src/components/inserter/media-tab/media-panel.js +83 -0
  533. package/src/components/inserter/media-tab/media-tab.js +135 -0
  534. package/src/components/inserter/media-tab/utils.js +37 -0
  535. package/src/components/inserter/menu.js +55 -13
  536. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  537. package/src/components/inserter/quick-inserter.js +1 -0
  538. package/src/components/inserter/reusable-blocks-tab.js +4 -2
  539. package/src/components/inserter/search-results.js +3 -2
  540. package/src/components/inserter/stories/index.js +1 -1
  541. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  542. package/src/components/inserter/style.scss +184 -18
  543. package/src/components/inserter/tabs.js +12 -1
  544. package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
  545. package/src/components/inserter-list-item/index.js +11 -1
  546. package/src/components/inserter-list-item/style.scss +26 -0
  547. package/src/components/inspector-controls/groups.js +2 -0
  548. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  549. package/src/components/inspector-controls-tabs/index.js +62 -0
  550. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  551. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  552. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  553. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  554. package/src/components/inspector-controls-tabs/utils.js +28 -0
  555. package/src/components/line-height-control/test/index.js +5 -5
  556. package/src/components/link-control/README.md +1 -1
  557. package/src/components/link-control/index.js +24 -39
  558. package/src/components/link-control/search-input.js +1 -2
  559. package/src/components/link-control/test/index.js +400 -582
  560. package/src/components/link-control/use-internal-input-value.js +22 -0
  561. package/src/components/list-view/block.js +7 -3
  562. package/src/components/list-view/branch.js +21 -14
  563. package/src/components/list-view/style.scss +20 -9
  564. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  565. package/src/components/media-replace-flow/test/index.js +37 -9
  566. package/src/components/media-upload/test/index.native.js +2 -0
  567. package/src/components/off-canvas-editor/README.md +5 -0
  568. package/src/components/off-canvas-editor/appender.js +93 -0
  569. package/src/components/off-canvas-editor/block-contents.js +89 -0
  570. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  571. package/src/components/off-canvas-editor/block-select-button.js +113 -0
  572. package/src/components/off-canvas-editor/block.js +401 -0
  573. package/src/components/off-canvas-editor/branch.js +208 -0
  574. package/src/components/off-canvas-editor/context.js +8 -0
  575. package/src/components/off-canvas-editor/drop-indicator.js +126 -0
  576. package/src/components/off-canvas-editor/expander.js +26 -0
  577. package/src/components/off-canvas-editor/index.js +242 -0
  578. package/src/components/off-canvas-editor/leaf.js +52 -0
  579. package/src/components/off-canvas-editor/link-ui.js +166 -0
  580. package/src/components/off-canvas-editor/style.scss +26 -0
  581. package/src/components/off-canvas-editor/test/utils.js +50 -0
  582. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  583. package/src/components/off-canvas-editor/use-block-selection.js +169 -0
  584. package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
  585. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
  586. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
  587. package/src/components/off-canvas-editor/utils.js +58 -0
  588. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  589. package/src/components/recursion-provider/test/index.js +27 -29
  590. package/src/components/responsive-block-control/test/index.js +69 -92
  591. package/src/components/rich-text/content.scss +42 -0
  592. package/src/components/rich-text/format-toolbar/index.js +6 -4
  593. package/src/components/rich-text/index.js +2 -2
  594. package/src/components/rich-text/index.native.js +0 -2
  595. package/src/components/rich-text/style.scss +0 -43
  596. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  597. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  598. package/src/components/rich-text/utils.js +2 -21
  599. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  600. package/src/components/ungroup-button/index.native.js +6 -2
  601. package/src/components/url-input/index.js +57 -73
  602. package/src/components/url-popover/README.md +12 -3
  603. package/src/components/url-popover/index.js +33 -3
  604. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  605. package/src/components/url-popover/test/index.js +21 -9
  606. package/src/components/use-block-display-information/index.js +14 -5
  607. package/src/components/use-setting/index.js +20 -2
  608. package/src/components/use-setting/test/index.js +99 -0
  609. package/src/content.scss +10 -0
  610. package/src/hooks/child-layout.js +190 -0
  611. package/src/hooks/color-panel.js +13 -1
  612. package/src/hooks/color.js +2 -0
  613. package/src/hooks/content-lock-ui.js +47 -35
  614. package/src/hooks/dimensions.js +119 -21
  615. package/src/hooks/layout.js +62 -3
  616. package/src/hooks/margin.js +4 -3
  617. package/src/hooks/min-height.js +104 -0
  618. package/src/hooks/padding.js +4 -3
  619. package/src/hooks/style.js +10 -2
  620. package/src/hooks/test/style.js +4 -0
  621. package/src/hooks/test/use-typography-props.js +1 -1
  622. package/src/layouts/flex.js +43 -38
  623. package/src/store/actions.js +22 -0
  624. package/src/store/reducer.js +480 -434
  625. package/src/store/selectors.js +70 -64
  626. package/src/store/test/actions.js +18 -0
  627. package/src/store/test/performance.js +71 -0
  628. package/src/store/test/reducer.js +662 -490
  629. package/src/store/test/selectors.js +1839 -1306
  630. package/src/style.scss +4 -7
  631. package/src/utils/sorting.js +54 -0
  632. package/src/utils/test/sorting.js +49 -0
  633. package/tsconfig.tsbuildinfo +1 -1
  634. package/build/components/block-preview/live.js +0 -30
  635. package/build/components/block-preview/live.js.map +0 -1
  636. package/build-module/components/block-preview/live.js +0 -20
  637. package/build-module/components/block-preview/live.js.map +0 -1
  638. package/src/components/block-preview/live.js +0 -19
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
@@ -19,12 +19,12 @@ function Edit( { attributes: { uniqueId } } ) {
19
19
  const hasRecursion = useHasRecursion( uniqueId );
20
20
 
21
21
  if ( hasRecursion ) {
22
- return <div className={ `wp-block__${ name }--halted` }>Halt</div>;
22
+ return <div data-testid={ `wp-block__${ name }--halted` }>Halt</div>;
23
23
  }
24
24
 
25
25
  return (
26
26
  <RecursionProvider uniqueId={ uniqueId }>
27
- <div className={ `wp-block__${ name }` }>
27
+ <div data-testid={ `wp-block__${ name }` }>
28
28
  { uniqueId === 'SIMPLE' && <p>Done</p> }
29
29
  { uniqueId === 'SINGLY-RECURSIVE' && (
30
30
  <Edit attributes={ { uniqueId } } />
@@ -51,76 +51,74 @@ describe( 'useHasRecursion/RecursionProvider', () => {
51
51
  const context = { name: 'reusable-block' };
52
52
 
53
53
  it( 'allows a single block to render', () => {
54
- const { container } = render(
54
+ render(
55
55
  <BlockEditContextProvider value={ context }>
56
56
  <Edit attributes={ { uniqueId: 'SIMPLE' } } />
57
57
  </BlockEditContextProvider>
58
58
  );
59
59
  expect(
60
- container.querySelectorAll( '.wp-block__reusable-block' )
61
- ).toHaveLength( 1 );
60
+ screen.getByTestId( 'wp-block__reusable-block' )
61
+ ).toBeVisible();
62
62
  expect(
63
- container.querySelectorAll( '.wp-block__reusable-block--halted' )
64
- ).toHaveLength( 0 );
63
+ screen.queryByTestId( 'wp-block__reusable-block--halted' )
64
+ ).not.toBeInTheDocument();
65
65
  } );
66
66
 
67
67
  it( 'allows equal but sibling blocks to render', () => {
68
- const { container } = render(
68
+ render(
69
69
  <BlockEditContextProvider value={ context }>
70
70
  <Edit attributes={ { uniqueId: 'SIMPLE' } } />
71
71
  <Edit attributes={ { uniqueId: 'SIMPLE' } } />
72
72
  </BlockEditContextProvider>
73
73
  );
74
74
  expect(
75
- container.querySelectorAll( '.wp-block__reusable-block' )
75
+ screen.getAllByTestId( 'wp-block__reusable-block' )
76
76
  ).toHaveLength( 2 );
77
77
  expect(
78
- container.querySelectorAll( '.wp-block__reusable-block--halted' )
79
- ).toHaveLength( 0 );
78
+ screen.queryByTestId( 'wp-block__reusable-block--halted' )
79
+ ).not.toBeInTheDocument();
80
80
  } );
81
81
 
82
82
  it( 'prevents a block from rendering itself', () => {
83
- const { container } = render(
83
+ render(
84
84
  <BlockEditContextProvider value={ context }>
85
85
  <Edit attributes={ { uniqueId: 'SINGLY-RECURSIVE' } } />
86
86
  </BlockEditContextProvider>
87
87
  );
88
88
  expect(
89
- container.querySelectorAll( '.wp-block__reusable-block' )
90
- ).toHaveLength( 1 );
89
+ screen.getByTestId( 'wp-block__reusable-block' )
90
+ ).toBeVisible();
91
91
  expect(
92
- container.querySelectorAll( '.wp-block__reusable-block--halted' )
93
- ).toHaveLength( 1 );
92
+ screen.getByTestId( 'wp-block__reusable-block--halted' )
93
+ ).toBeVisible();
94
94
  } );
95
95
 
96
96
  it( 'prevents a block from rendering itself only when the same block type', () => {
97
- const { container } = render(
97
+ render(
98
98
  <BlockEditContextProvider value={ context }>
99
99
  <Edit attributes={ { uniqueId: 'ANOTHER-BLOCK-SAME-ID' } } />
100
100
  </BlockEditContextProvider>
101
101
  );
102
102
  expect(
103
- container.querySelectorAll( '.wp-block__reusable-block' )
104
- ).toHaveLength( 1 );
103
+ screen.getByTestId( 'wp-block__reusable-block' )
104
+ ).toBeVisible();
105
+ expect( screen.getByTestId( 'wp-block__another-block' ) ).toBeVisible();
105
106
  expect(
106
- container.querySelectorAll( '.wp-block__another-block' )
107
- ).toHaveLength( 1 );
108
- expect(
109
- container.querySelectorAll( '.wp-block__another-block--halted' )
110
- ).toHaveLength( 1 );
107
+ screen.getByTestId( 'wp-block__another-block--halted' )
108
+ ).toBeVisible();
111
109
  } );
112
110
 
113
111
  it( 'prevents mutual recursion between two blocks', () => {
114
- const { container } = render(
112
+ render(
115
113
  <BlockEditContextProvider value={ context }>
116
114
  <Edit attributes={ { uniqueId: 'MUTUALLY-RECURSIVE-1' } } />
117
115
  </BlockEditContextProvider>
118
116
  );
119
117
  expect(
120
- container.querySelectorAll( '.wp-block__reusable-block' )
118
+ screen.getAllByTestId( 'wp-block__reusable-block' )
121
119
  ).toHaveLength( 2 );
122
120
  expect(
123
- container.querySelectorAll( '.wp-block__reusable-block--halted' )
124
- ).toHaveLength( 1 );
121
+ screen.getByTestId( 'wp-block__reusable-block--halted' )
122
+ ).toBeVisible();
125
123
  } );
126
124
  } );
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
@@ -48,6 +48,20 @@ const renderTestDefaultControlComponent = ( labelComponent, device ) => {
48
48
  );
49
49
  };
50
50
 
51
+ function getDefaultControlGroup( container ) {
52
+ // TODO: Use a user-facing query to fetch this.
53
+ return container.querySelector(
54
+ '.block-editor-responsive-block-control__group:not(.is-responsive)'
55
+ );
56
+ }
57
+
58
+ function getResponsiveControlGroup( container ) {
59
+ // TODO: Use a user-facing query to fetch this.
60
+ return container.querySelector(
61
+ '.block-editor-responsive-block-control__group.is-responsive'
62
+ );
63
+ }
64
+
51
65
  describe( 'Basic rendering', () => {
52
66
  it( 'should render with required props', () => {
53
67
  const { container } = render(
@@ -58,48 +72,30 @@ describe( 'Basic rendering', () => {
58
72
  />
59
73
  );
60
74
 
61
- const activePropertyLabel = Array.from(
62
- container.querySelectorAll( 'legend' )
63
- ).find( ( legend ) => legend.innerHTML === 'Padding' );
64
-
65
- const activeViewportLabel = Array.from(
66
- container.querySelectorAll( 'label' )
67
- ).find( ( label ) => label.innerHTML.includes( 'All' ) );
68
-
69
- const defaultControl = container.querySelector(
70
- `#${ activeViewportLabel.getAttribute( 'for' ) }`
71
- );
72
-
73
- const toggleLabel = Array.from(
74
- container.querySelectorAll( 'label' )
75
- ).filter( ( label ) =>
76
- label.innerHTML.includes(
77
- 'Use the same padding on all screensizes'
78
- )
79
- );
75
+ const activePropertyLabel = screen.getByRole( 'group', {
76
+ name: 'Padding',
77
+ } );
80
78
 
81
- const toggleState = container.querySelector(
82
- 'input[type="checkbox"]'
83
- ).checked;
79
+ const defaultControl = screen.getByRole( 'combobox', {
80
+ name: 'All Controls the padding property for All viewports.',
81
+ } );
84
82
 
85
- const defaultControlGroup = container.querySelector(
86
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
87
- );
83
+ const toggleState = screen.getByRole( 'checkbox', {
84
+ name: 'Use the same padding on all screensizes.',
85
+ checked: true,
86
+ } );
88
87
 
89
- const responsiveControlGroup = container.querySelector(
90
- '.block-editor-responsive-block-control__group.is-responsive'
91
- );
88
+ const defaultControlGroup = getDefaultControlGroup( container );
89
+ const responsiveControlGroup = getResponsiveControlGroup( container );
92
90
 
93
91
  expect( container ).not.toBeEmptyDOMElement();
94
92
 
95
93
  expect( defaultControlGroup ).not.toBeNull();
96
94
  expect( responsiveControlGroup ).toBeNull();
97
95
 
98
- expect( activeViewportLabel ).not.toBeNull();
99
- expect( activePropertyLabel ).not.toBeNull();
100
- expect( defaultControl ).not.toBeNull();
101
- expect( toggleLabel ).not.toBeNull();
102
- expect( toggleState ).toBe( true );
96
+ expect( activePropertyLabel ).toBeVisible();
97
+ expect( defaultControl ).toBeVisible();
98
+ expect( toggleState ).toBeVisible();
103
99
  } );
104
100
 
105
101
  it( 'should not render without valid legend', () => {
@@ -135,7 +131,7 @@ describe( 'Basic rendering', () => {
135
131
  it( 'should render with custom label for toggle control when provided', () => {
136
132
  const customToggleLabel =
137
133
  'Utilise a matching padding value on all viewports';
138
- const { container } = render(
134
+ render(
139
135
  <ResponsiveBlockControl
140
136
  title="Padding"
141
137
  property="padding"
@@ -144,17 +140,21 @@ describe( 'Basic rendering', () => {
144
140
  />
145
141
  );
146
142
 
147
- const actualToggleLabel = container.querySelector(
148
- 'label.components-toggle-control__label'
149
- ).innerHTML;
150
-
151
- expect( actualToggleLabel ).toEqual( customToggleLabel );
143
+ expect(
144
+ screen.getByRole( 'checkbox', {
145
+ name: customToggleLabel,
146
+ checked: true,
147
+ } )
148
+ ).toBeVisible();
152
149
  } );
153
150
 
154
151
  it( 'should pass custom label for default control group to the renderDefaultControl function when provided', () => {
155
- const customDefaultControlGroupLabel = 'Everything';
152
+ const customDefaultControlGroupLabel = {
153
+ id: 'everything',
154
+ label: 'Everything',
155
+ };
156
156
 
157
- const { container } = render(
157
+ render(
158
158
  <ResponsiveBlockControl
159
159
  title="Padding"
160
160
  property="padding"
@@ -163,11 +163,11 @@ describe( 'Basic rendering', () => {
163
163
  />
164
164
  );
165
165
 
166
- const defaultControlLabel = Array.from(
167
- container.querySelectorAll( 'label' )
168
- ).find( ( label ) => label.innerHTML.includes( 'Everything' ) );
166
+ const defaultControlLabel = screen.getByRole( 'combobox', {
167
+ name: 'Everything Controls the padding property for Everything viewports.',
168
+ } );
169
169
 
170
- expect( defaultControlLabel ).not.toBeNull();
170
+ expect( defaultControlLabel ).toBeVisible();
171
171
  } );
172
172
  } );
173
173
 
@@ -182,12 +182,8 @@ describe( 'Default and Responsive modes', () => {
182
182
  />
183
183
  );
184
184
 
185
- const defaultControlGroup = container.querySelector(
186
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
187
- );
188
- const responsiveControlGroup = container.querySelector(
189
- '.block-editor-responsive-block-control__group.is-responsive'
190
- );
185
+ const defaultControlGroup = getDefaultControlGroup( container );
186
+ const responsiveControlGroup = getResponsiveControlGroup( container );
191
187
 
192
188
  expect( defaultControlGroup ).toBeNull();
193
189
  expect( responsiveControlGroup ).not.toBeNull();
@@ -217,7 +213,7 @@ describe( 'Default and Responsive modes', () => {
217
213
  renderTestDefaultControlComponent
218
214
  );
219
215
 
220
- const { container } = render(
216
+ render(
221
217
  <ResponsiveBlockControl
222
218
  title="Padding"
223
219
  property="padding"
@@ -230,13 +226,12 @@ describe( 'Default and Responsive modes', () => {
230
226
  const defaultRenderControlCall = 1;
231
227
 
232
228
  // Get array of labels which match those in the custom viewports provided
233
- const responsiveViewportsLabels = Array.from(
234
- container.querySelectorAll( 'label' )
235
- ).filter( ( label ) => {
236
- const labelText = label.innerHTML;
237
- // Is the label one of those in the custom device set?
238
- return !! customViewportSet.find( ( deviceName ) =>
239
- labelText.includes( deviceName.label )
229
+ const responsiveViewportsLabels = [];
230
+ customViewportSet.forEach( ( { label } ) => {
231
+ responsiveViewportsLabels.push(
232
+ screen.getByRole( 'combobox', {
233
+ name: `${ label } Controls the padding property for ${ label } viewports.`,
234
+ } )
240
235
  );
241
236
  } );
242
237
 
@@ -270,24 +265,14 @@ describe( 'Default and Responsive modes', () => {
270
265
 
271
266
  const { container } = render( <ResponsiveBlockControlConsumer /> );
272
267
 
273
- let defaultControlGroup = container.querySelector(
274
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
275
- );
276
- let responsiveControlGroup = container.querySelector(
277
- '.block-editor-responsive-block-control__group.is-responsive'
278
- );
268
+ let defaultControlGroup = getDefaultControlGroup( container );
269
+ let responsiveControlGroup = getResponsiveControlGroup( container );
279
270
 
280
271
  // Select elements based on what the user can see.
281
- const toggleLabel = Array.from(
282
- container.querySelectorAll( 'label' )
283
- ).find( ( label ) =>
284
- label.innerHTML.includes(
285
- 'Use the same padding on all screensizes'
286
- )
287
- );
288
- const toggleInput = container.querySelector(
289
- `#${ toggleLabel.getAttribute( 'for' ) }`
290
- );
272
+ const toggleInput = screen.getByRole( 'checkbox', {
273
+ name: 'Use the same padding on all screensizes.',
274
+ checked: true,
275
+ } );
291
276
 
292
277
  // Initial mode (default)
293
278
  expect( defaultControlGroup ).not.toBeNull();
@@ -296,12 +281,8 @@ describe( 'Default and Responsive modes', () => {
296
281
  // Toggle to "responsive" mode.
297
282
  await user.click( toggleInput );
298
283
 
299
- defaultControlGroup = container.querySelector(
300
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
301
- );
302
- responsiveControlGroup = container.querySelector(
303
- '.block-editor-responsive-block-control__group.is-responsive'
304
- );
284
+ defaultControlGroup = getDefaultControlGroup( container );
285
+ responsiveControlGroup = getResponsiveControlGroup( container );
305
286
 
306
287
  expect( defaultControlGroup ).toBeNull();
307
288
  expect( responsiveControlGroup ).not.toBeNull();
@@ -309,12 +290,8 @@ describe( 'Default and Responsive modes', () => {
309
290
  // Toggle back to "default" mode.
310
291
  await user.click( toggleInput );
311
292
 
312
- defaultControlGroup = container.querySelector(
313
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
314
- );
315
- responsiveControlGroup = container.querySelector(
316
- '.block-editor-responsive-block-control__group.is-responsive'
317
- );
293
+ defaultControlGroup = getDefaultControlGroup( container );
294
+ responsiveControlGroup = getResponsiveControlGroup( container );
318
295
 
319
296
  expect( defaultControlGroup ).not.toBeNull();
320
297
  expect( responsiveControlGroup ).toBeNull();
@@ -340,7 +317,7 @@ describe( 'Default and Responsive modes', () => {
340
317
  } );
341
318
  } );
342
319
 
343
- const { container } = render(
320
+ render(
344
321
  <ResponsiveBlockControl
345
322
  title="Padding"
346
323
  property="padding"
@@ -351,9 +328,9 @@ describe( 'Default and Responsive modes', () => {
351
328
  );
352
329
 
353
330
  // The user should see "range" controls so we can legitimately query for them here.
354
- const customControls = Array.from(
355
- container.querySelectorAll( 'input[type="range"]' )
356
- );
331
+ const customControls = screen.getAllByRole( 'slider', {
332
+ name: /\w+ screens$/,
333
+ } );
357
334
 
358
335
  // Also called because default control rendeer function is always called
359
336
  // (for convenience) even though it's not displayed in output.
@@ -0,0 +1,42 @@
1
+ .rich-text {
2
+ [data-rich-text-placeholder] {
3
+ pointer-events: none;
4
+ }
5
+
6
+ [data-rich-text-placeholder]::after {
7
+ content: attr(data-rich-text-placeholder);
8
+ // Use opacity to work in various editor styles.
9
+ // We don't specify the color here, because blocks or editor styles might provide their own.
10
+ opacity: 0.62;
11
+ }
12
+
13
+ &:focus {
14
+ // Removes outline added by the browser.
15
+ outline: none;
16
+
17
+ [data-rich-text-format-boundary] {
18
+ border-radius: 2px;
19
+ }
20
+ }
21
+ }
22
+
23
+ .block-editor-rich-text__editable {
24
+ > p:first-child {
25
+ margin-top: 0;
26
+ }
27
+ }
28
+
29
+ // Captions may have lighter (gray) text, or be shown on a range of different background luminosites.
30
+ // To ensure legibility, we increase the default placeholder opacity to ensure contrast.
31
+ figcaption.block-editor-rich-text__editable [data-rich-text-placeholder]::before {
32
+ opacity: 0.8;
33
+ }
34
+
35
+ [data-rich-text-script] {
36
+ display: inline;
37
+
38
+ &::before {
39
+ content: "</>";
40
+ background: rgb(255, 255, 0);
41
+ }
42
+ }
@@ -1,18 +1,20 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
-
5
- import { orderBy } from 'lodash';
6
4
  import classnames from 'classnames';
7
5
 
8
6
  /**
9
7
  * WordPress dependencies
10
8
  */
11
-
12
9
  import { __ } from '@wordpress/i18n';
13
10
  import { ToolbarItem, DropdownMenu, Slot } from '@wordpress/components';
14
11
  import { chevronDown } from '@wordpress/icons';
15
12
 
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { orderBy } from '../../../utils/sorting';
17
+
16
18
  const POPOVER_PROPS = {
17
19
  position: 'bottom right',
18
20
  variant: 'toolbar',
@@ -21,7 +23,7 @@ const POPOVER_PROPS = {
21
23
  const FormatToolbar = () => {
22
24
  return (
23
25
  <>
24
- { [ 'bold', 'italic', 'link' ].map( ( format ) => (
26
+ { [ 'bold', 'italic', 'link', 'unknown' ].map( ( format ) => (
25
27
  <Slot
26
28
  name={ `RichText.ToolbarControls.${ format }` }
27
29
  key={ format }
@@ -44,6 +44,7 @@ import { useFormatTypes } from './use-format-types';
44
44
  import { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';
45
45
  import { useShortcuts } from './use-shortcuts';
46
46
  import { useInputEvents } from './use-input-events';
47
+ import { useInsertReplacementText } from './use-insert-replacement-text';
47
48
  import { useFirefoxCompat } from './use-firefox-compat';
48
49
  import FormatEdit from './format-edit';
49
50
  import { getMultilineTag, getAllowedFormats } from './utils';
@@ -97,7 +98,6 @@ function RichTextWrapper(
97
98
  onReplace,
98
99
  placeholder,
99
100
  allowedFormats,
100
- formattingControls,
101
101
  withoutInteractiveFormatting,
102
102
  onRemove,
103
103
  onMerge,
@@ -165,7 +165,6 @@ function RichTextWrapper(
165
165
  const multilineTag = getMultilineTag( multiline );
166
166
  const adjustedAllowedFormats = getAllowedFormats( {
167
167
  allowedFormats,
168
- formattingControls,
169
168
  disableFormats,
170
169
  } );
171
170
  const hasFormats =
@@ -408,6 +407,7 @@ function RichTextWrapper(
408
407
  onReplace,
409
408
  selectionChange,
410
409
  } ),
410
+ useInsertReplacementText(),
411
411
  useRemoveBrowserShortcuts(),
412
412
  useShortcuts( keyboardShortcuts ),
413
413
  useInputEvents( inputEvents ),
@@ -75,7 +75,6 @@ function RichTextWrapper(
75
75
  onReplace,
76
76
  placeholder,
77
77
  allowedFormats,
78
- formattingControls,
79
78
  withoutInteractiveFormatting,
80
79
  onRemove,
81
80
  onMerge,
@@ -194,7 +193,6 @@ function RichTextWrapper(
194
193
  const multilineTag = getMultilineTag( multiline );
195
194
  const adjustedAllowedFormats = getAllowedFormats( {
196
195
  allowedFormats,
197
- formattingControls,
198
196
  disableFormats,
199
197
  } );
200
198
  const hasFormats =
@@ -1,37 +1,3 @@
1
- .rich-text {
2
- [data-rich-text-placeholder] {
3
- pointer-events: none;
4
- }
5
-
6
- [data-rich-text-placeholder]::after {
7
- content: attr(data-rich-text-placeholder);
8
- // Use opacity to work in various editor styles.
9
- // We don't specify the color here, because blocks or editor styles might provide their own.
10
- opacity: 0.62;
11
- }
12
-
13
- &:focus {
14
- // Removes outline added by the browser.
15
- outline: none;
16
-
17
- [data-rich-text-format-boundary] {
18
- border-radius: 2px;
19
- }
20
- }
21
- }
22
-
23
- .block-editor-rich-text__editable {
24
- > p:first-child {
25
- margin-top: 0;
26
- }
27
- }
28
-
29
- // Captions may have lighter (gray) text, or be shown on a range of different background luminosites.
30
- // To ensure legibility, we increase the default placeholder opacity to ensure contrast.
31
- figcaption.block-editor-rich-text__editable [data-rich-text-placeholder]::before {
32
- opacity: 0.8;
33
- }
34
-
35
1
  .components-popover.block-editor-rich-text__inline-format-toolbar {
36
2
  // Set z-index as if it's displayed on the bottom, otherwise the block
37
3
  // switcher popover might overlap if displayed on the bottom.
@@ -80,12 +46,3 @@ figcaption.block-editor-rich-text__editable [data-rich-text-placeholder]::before
80
46
  }
81
47
  }
82
48
  }
83
-
84
- [data-rich-text-script] {
85
- display: inline;
86
-
87
- &::before {
88
- content: "</>";
89
- background: rgb(255, 255, 0);
90
- }
91
- }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useRefEffect } from '@wordpress/compose';
5
+ import { useDispatch } from '@wordpress/data';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { store as blockEditorStore } from '../../store';
11
+
12
+ /**
13
+ * When the browser is about to auto correct, add an undo level so the user can
14
+ * revert the change.
15
+ */
16
+ export function useInsertReplacementText() {
17
+ const { __unstableMarkLastChangeAsPersistent } =
18
+ useDispatch( blockEditorStore );
19
+ return useRefEffect( ( element ) => {
20
+ function onInput( event ) {
21
+ if ( event.inputType === 'insertReplacementText' ) {
22
+ __unstableMarkLastChangeAsPersistent();
23
+ }
24
+ }
25
+
26
+ element.addEventListener( 'beforeinput', onInput );
27
+ return () => {
28
+ element.removeEventListener( 'beforeinput', onInput );
29
+ };
30
+ }, [] );
31
+ }
@@ -28,12 +28,18 @@ export function useUndoAutomaticChange() {
28
28
  return;
29
29
  }
30
30
 
31
+ const { __experimentalUndo } = getSettings();
32
+
33
+ if ( ! __experimentalUndo ) {
34
+ return;
35
+ }
36
+
31
37
  if ( ! didAutomaticChange() ) {
32
38
  return;
33
39
  }
34
40
 
35
41
  event.preventDefault();
36
- getSettings().__experimentalUndo();
42
+ __experimentalUndo();
37
43
  }
38
44
 
39
45
  element.addEventListener( 'keydown', onKeyDown );
@@ -2,7 +2,6 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { regexp } from '@wordpress/shortcode';
5
- import deprecated from '@wordpress/deprecated';
6
5
  import { renderToString } from '@wordpress/element';
7
6
  import { createBlock } from '@wordpress/blocks';
8
7
 
@@ -34,30 +33,12 @@ export function getMultilineTag( multiline ) {
34
33
  return multiline === true ? 'p' : multiline;
35
34
  }
36
35
 
37
- export function getAllowedFormats( {
38
- allowedFormats,
39
- formattingControls,
40
- disableFormats,
41
- } ) {
36
+ export function getAllowedFormats( { allowedFormats, disableFormats } ) {
42
37
  if ( disableFormats ) {
43
38
  return getAllowedFormats.EMPTY_ARRAY;
44
39
  }
45
40
 
46
- if ( ! allowedFormats && ! formattingControls ) {
47
- return;
48
- }
49
-
50
- if ( allowedFormats ) {
51
- return allowedFormats;
52
- }
53
-
54
- deprecated( 'wp.blockEditor.RichText formattingControls prop', {
55
- since: '5.4',
56
- alternative: 'allowedFormats',
57
- version: '6.2',
58
- } );
59
-
60
- return formattingControls.map( ( name ) => `core/${ name }` );
41
+ return allowedFormats;
61
42
  }
62
43
 
63
44
  getAllowedFormats.EMPTY_ARRAY = [];