@wordpress/block-editor 10.3.0 → 10.5.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 (460) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +0 -1
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/constants.js +1 -1
  6. package/build/components/block-alignment-control/constants.js.map +1 -1
  7. package/build/components/block-alignment-matrix-control/index.js +1 -1
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-compare/index.js +1 -3
  10. package/build/components/block-compare/index.js.map +1 -1
  11. package/build/components/block-edit/index.js +4 -2
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-list/block.js +3 -1
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-lock/menu-item.js +1 -1
  16. package/build/components/block-lock/menu-item.js.map +1 -1
  17. package/build/components/block-lock/modal.js +16 -9
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-popover/inbetween.js +2 -1
  20. package/build/components/block-popover/inbetween.js.map +1 -1
  21. package/build/components/block-popover/index.js +2 -1
  22. package/build/components/block-popover/index.js.map +1 -1
  23. package/build/components/block-preview/index.js +2 -4
  24. package/build/components/block-preview/index.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -8
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-styles/utils.js +3 -3
  28. package/build/components/block-styles/utils.js.map +1 -1
  29. package/build/components/block-switcher/index.js +21 -12
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-switcher/preview-block-popover.js +1 -1
  32. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  33. package/build/components/block-tools/insertion-point.js +12 -2
  34. package/build/components/block-tools/insertion-point.js.map +1 -1
  35. package/build/components/block-tools/selected-block-popover.js +27 -4
  36. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  37. package/build/components/block-vertical-alignment-control/ui.js +1 -1
  38. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  39. package/build/components/border-radius-control/all-input-control.js +2 -1
  40. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  41. package/build/components/border-radius-control/index.js +2 -1
  42. package/build/components/border-radius-control/index.js.map +1 -1
  43. package/build/components/border-radius-control/input-controls.js +2 -1
  44. package/build/components/border-radius-control/input-controls.js.map +1 -1
  45. package/build/components/colors/with-colors.js +4 -3
  46. package/build/components/colors/with-colors.js.map +1 -1
  47. package/build/components/duotone-control/index.js +1 -1
  48. package/build/components/duotone-control/index.js.map +1 -1
  49. package/build/components/font-sizes/fluid-utils.js +24 -40
  50. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  51. package/build/components/font-sizes/with-font-sizes.js +8 -6
  52. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  53. package/build/components/iframe/index.js +1 -1
  54. package/build/components/iframe/index.js.map +1 -1
  55. package/build/components/image-editor/constants.js +1 -1
  56. package/build/components/image-editor/constants.js.map +1 -1
  57. package/build/components/index.js +9 -0
  58. package/build/components/index.js.map +1 -1
  59. package/build/components/inner-blocks/index.js +10 -4
  60. package/build/components/inner-blocks/index.js.map +1 -1
  61. package/build/components/inserter/hooks/use-insertion-point.js +2 -7
  62. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  63. package/build/components/inserter/reusable-blocks-tab.js +4 -1
  64. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  65. package/build/components/inserter/search-items.js +23 -2
  66. package/build/components/inserter/search-items.js.map +1 -1
  67. package/build/components/line-height-control/index.js +2 -1
  68. package/build/components/line-height-control/index.js.map +1 -1
  69. package/build/components/link-control/index.js +18 -34
  70. package/build/components/link-control/index.js.map +1 -1
  71. package/build/components/link-control/search-input.js +1 -1
  72. package/build/components/link-control/search-input.js.map +1 -1
  73. package/build/components/link-control/use-internal-input-value.js +26 -0
  74. package/build/components/link-control/use-internal-input-value.js.map +1 -0
  75. package/build/components/list-view/block.js +5 -3
  76. package/build/components/list-view/block.js.map +1 -1
  77. package/build/components/list-view/branch.js +9 -3
  78. package/build/components/list-view/branch.js.map +1 -1
  79. package/build/components/list-view/drop-indicator.js +2 -1
  80. package/build/components/list-view/drop-indicator.js.map +1 -1
  81. package/build/components/media-replace-flow/index.js +1 -1
  82. package/build/components/media-replace-flow/index.js.map +1 -1
  83. package/build/components/off-canvas-editor/block-contents.js +100 -0
  84. package/build/components/off-canvas-editor/block-contents.js.map +1 -0
  85. package/build/components/off-canvas-editor/block-select-button.js +119 -0
  86. package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
  87. package/build/components/off-canvas-editor/block.js +292 -0
  88. package/build/components/off-canvas-editor/block.js.map +1 -0
  89. package/build/components/off-canvas-editor/branch.js +181 -0
  90. package/build/components/off-canvas-editor/branch.js.map +1 -0
  91. package/build/components/off-canvas-editor/context.js +19 -0
  92. package/build/components/off-canvas-editor/context.js.map +1 -0
  93. package/build/components/off-canvas-editor/drop-indicator.js +118 -0
  94. package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
  95. package/build/components/off-canvas-editor/expander.js +41 -0
  96. package/build/components/off-canvas-editor/expander.js.map +1 -0
  97. package/build/components/off-canvas-editor/index.js +204 -0
  98. package/build/components/off-canvas-editor/index.js.map +1 -0
  99. package/build/components/off-canvas-editor/leaf.js +60 -0
  100. package/build/components/off-canvas-editor/leaf.js.map +1 -0
  101. package/build/components/off-canvas-editor/use-block-selection.js +139 -0
  102. package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
  103. package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
  104. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  105. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
  106. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  107. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
  108. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  109. package/build/components/off-canvas-editor/utils.js +60 -0
  110. package/build/components/off-canvas-editor/utils.js.map +1 -0
  111. package/build/components/rich-text/format-toolbar/index.js +1 -1
  112. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  113. package/build/components/rich-text/format-toolbar-container.js +1 -1
  114. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  115. package/build/components/rich-text/use-paste-handler.js +1 -1
  116. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  117. package/build/components/spacing-sizes-control/all-input-control.js +6 -2
  118. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -1
  119. package/build/components/spacing-sizes-control/axial-input-controls.js +6 -2
  120. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  121. package/build/components/spacing-sizes-control/index.js +6 -2
  122. package/build/components/spacing-sizes-control/index.js.map +1 -1
  123. package/build/components/spacing-sizes-control/input-controls.js +6 -2
  124. package/build/components/spacing-sizes-control/input-controls.js.map +1 -1
  125. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -5
  126. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  127. package/build/components/url-input/index.js +1 -1
  128. package/build/components/url-input/index.js.map +1 -1
  129. package/build/components/url-popover/index.js +31 -2
  130. package/build/components/url-popover/index.js.map +1 -1
  131. package/build/components/use-setting/index.js +1 -1
  132. package/build/components/use-setting/index.js.map +1 -1
  133. package/build/hooks/border.js +1 -0
  134. package/build/hooks/border.js.map +1 -1
  135. package/build/hooks/color-panel.js +17 -1
  136. package/build/hooks/color-panel.js.map +1 -1
  137. package/build/hooks/color.js +1 -1
  138. package/build/hooks/color.js.map +1 -1
  139. package/build/hooks/content-lock-ui.js +13 -6
  140. package/build/hooks/content-lock-ui.js.map +1 -1
  141. package/build/hooks/dimensions.js +72 -13
  142. package/build/hooks/dimensions.js.map +1 -1
  143. package/build/hooks/font-size.js +1 -0
  144. package/build/hooks/font-size.js.map +1 -1
  145. package/build/hooks/layout.js +5 -4
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/margin.js +26 -18
  148. package/build/hooks/margin.js.map +1 -1
  149. package/build/hooks/min-height.js +145 -0
  150. package/build/hooks/min-height.js.map +1 -0
  151. package/build/hooks/padding.js +22 -13
  152. package/build/hooks/padding.js.map +1 -1
  153. package/build/hooks/style.js +3 -2
  154. package/build/hooks/style.js.map +1 -1
  155. package/build/hooks/utils.js +7 -6
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/layouts/constrained.js +0 -1
  158. package/build/layouts/constrained.js.map +1 -1
  159. package/build/layouts/flex.js +23 -22
  160. package/build/layouts/flex.js.map +1 -1
  161. package/build/store/actions.js +30 -0
  162. package/build/store/actions.js.map +1 -1
  163. package/build/store/array.js +1 -7
  164. package/build/store/array.js.map +1 -1
  165. package/build/store/reducer.js +46 -14
  166. package/build/store/reducer.js.map +1 -1
  167. package/build/store/selectors.js +62 -31
  168. package/build/store/selectors.js.map +1 -1
  169. package/build-module/components/alignment-control/ui.js +1 -1
  170. package/build-module/components/alignment-control/ui.js.map +1 -1
  171. package/build-module/components/block-alignment-control/constants.js +1 -1
  172. package/build-module/components/block-alignment-control/constants.js.map +1 -1
  173. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  174. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  175. package/build-module/components/block-compare/index.js +2 -3
  176. package/build-module/components/block-compare/index.js.map +1 -1
  177. package/build-module/components/block-edit/index.js +4 -2
  178. package/build-module/components/block-edit/index.js.map +1 -1
  179. package/build-module/components/block-list/block.js +3 -1
  180. package/build-module/components/block-list/block.js.map +1 -1
  181. package/build-module/components/block-lock/menu-item.js +2 -2
  182. package/build-module/components/block-lock/menu-item.js.map +1 -1
  183. package/build-module/components/block-lock/modal.js +17 -10
  184. package/build-module/components/block-lock/modal.js.map +1 -1
  185. package/build-module/components/block-popover/inbetween.js +2 -1
  186. package/build-module/components/block-popover/inbetween.js.map +1 -1
  187. package/build-module/components/block-popover/index.js +2 -1
  188. package/build-module/components/block-popover/index.js.map +1 -1
  189. package/build-module/components/block-preview/index.js +2 -3
  190. package/build-module/components/block-preview/index.js.map +1 -1
  191. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -7
  192. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  193. package/build-module/components/block-styles/utils.js +3 -3
  194. package/build-module/components/block-styles/utils.js.map +1 -1
  195. package/build-module/components/block-switcher/index.js +21 -11
  196. package/build-module/components/block-switcher/index.js.map +1 -1
  197. package/build-module/components/block-switcher/preview-block-popover.js +1 -1
  198. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  199. package/build-module/components/block-tools/insertion-point.js +12 -2
  200. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  201. package/build-module/components/block-tools/selected-block-popover.js +27 -5
  202. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  203. package/build-module/components/block-vertical-alignment-control/ui.js +1 -1
  204. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  205. package/build-module/components/border-radius-control/all-input-control.js +2 -1
  206. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  207. package/build-module/components/border-radius-control/index.js +2 -1
  208. package/build-module/components/border-radius-control/index.js.map +1 -1
  209. package/build-module/components/border-radius-control/input-controls.js +2 -1
  210. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  211. package/build-module/components/colors/with-colors.js +5 -4
  212. package/build-module/components/colors/with-colors.js.map +1 -1
  213. package/build-module/components/duotone-control/index.js +1 -1
  214. package/build-module/components/duotone-control/index.js.map +1 -1
  215. package/build-module/components/font-sizes/fluid-utils.js +24 -40
  216. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  217. package/build-module/components/font-sizes/with-font-sizes.js +9 -7
  218. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  219. package/build-module/components/iframe/index.js +1 -1
  220. package/build-module/components/iframe/index.js.map +1 -1
  221. package/build-module/components/image-editor/constants.js +1 -1
  222. package/build-module/components/image-editor/constants.js.map +1 -1
  223. package/build-module/components/index.js +1 -0
  224. package/build-module/components/index.js.map +1 -1
  225. package/build-module/components/inner-blocks/index.js +10 -4
  226. package/build-module/components/inner-blocks/index.js.map +1 -1
  227. package/build-module/components/inserter/hooks/use-insertion-point.js +2 -6
  228. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  229. package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
  230. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  231. package/build-module/components/inserter/search-items.js +23 -3
  232. package/build-module/components/inserter/search-items.js.map +1 -1
  233. package/build-module/components/line-height-control/index.js +2 -1
  234. package/build-module/components/line-height-control/index.js.map +1 -1
  235. package/build-module/components/link-control/index.js +17 -34
  236. package/build-module/components/link-control/index.js.map +1 -1
  237. package/build-module/components/link-control/search-input.js +1 -1
  238. package/build-module/components/link-control/search-input.js.map +1 -1
  239. package/build-module/components/link-control/use-internal-input-value.js +18 -0
  240. package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
  241. package/build-module/components/list-view/block.js +5 -3
  242. package/build-module/components/list-view/block.js.map +1 -1
  243. package/build-module/components/list-view/branch.js +9 -3
  244. package/build-module/components/list-view/branch.js.map +1 -1
  245. package/build-module/components/list-view/drop-indicator.js +2 -1
  246. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  247. package/build-module/components/media-replace-flow/index.js +1 -1
  248. package/build-module/components/media-replace-flow/index.js.map +1 -1
  249. package/build-module/components/off-canvas-editor/block-contents.js +85 -0
  250. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
  251. package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
  252. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
  253. package/build-module/components/off-canvas-editor/block.js +268 -0
  254. package/build-module/components/off-canvas-editor/block.js.map +1 -0
  255. package/build-module/components/off-canvas-editor/branch.js +165 -0
  256. package/build-module/components/off-canvas-editor/branch.js.map +1 -0
  257. package/build-module/components/off-canvas-editor/context.js +7 -0
  258. package/build-module/components/off-canvas-editor/context.js.map +1 -0
  259. package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
  260. package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
  261. package/build-module/components/off-canvas-editor/expander.js +32 -0
  262. package/build-module/components/off-canvas-editor/expander.js.map +1 -0
  263. package/build-module/components/off-canvas-editor/index.js +181 -0
  264. package/build-module/components/off-canvas-editor/index.js.map +1 -0
  265. package/build-module/components/off-canvas-editor/leaf.js +45 -0
  266. package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
  267. package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
  268. package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
  269. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
  270. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  271. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
  272. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  273. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
  274. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  275. package/build-module/components/off-canvas-editor/utils.js +44 -0
  276. package/build-module/components/off-canvas-editor/utils.js.map +1 -0
  277. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  278. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  279. package/build-module/components/rich-text/format-toolbar-container.js +1 -1
  280. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  281. package/build-module/components/rich-text/use-paste-handler.js +1 -1
  282. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  283. package/build-module/components/spacing-sizes-control/all-input-control.js +6 -2
  284. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -1
  285. package/build-module/components/spacing-sizes-control/axial-input-controls.js +6 -2
  286. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  287. package/build-module/components/spacing-sizes-control/index.js +6 -2
  288. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  289. package/build-module/components/spacing-sizes-control/input-controls.js +6 -2
  290. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -1
  291. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -5
  292. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  293. package/build-module/components/url-input/index.js +1 -1
  294. package/build-module/components/url-input/index.js.map +1 -1
  295. package/build-module/components/url-popover/index.js +30 -3
  296. package/build-module/components/url-popover/index.js.map +1 -1
  297. package/build-module/components/use-setting/index.js +1 -1
  298. package/build-module/components/use-setting/index.js.map +1 -1
  299. package/build-module/hooks/border.js +1 -0
  300. package/build-module/hooks/border.js.map +1 -1
  301. package/build-module/hooks/color-panel.js +17 -1
  302. package/build-module/hooks/color-panel.js.map +1 -1
  303. package/build-module/hooks/color.js +1 -1
  304. package/build-module/hooks/color.js.map +1 -1
  305. package/build-module/hooks/content-lock-ui.js +15 -8
  306. package/build-module/hooks/content-lock-ui.js.map +1 -1
  307. package/build-module/hooks/dimensions.js +67 -12
  308. package/build-module/hooks/dimensions.js.map +1 -1
  309. package/build-module/hooks/font-size.js +1 -0
  310. package/build-module/hooks/font-size.js.map +1 -1
  311. package/build-module/hooks/layout.js +6 -5
  312. package/build-module/hooks/layout.js.map +1 -1
  313. package/build-module/hooks/margin.js +27 -19
  314. package/build-module/hooks/margin.js.map +1 -1
  315. package/build-module/hooks/min-height.js +122 -0
  316. package/build-module/hooks/min-height.js.map +1 -0
  317. package/build-module/hooks/padding.js +23 -14
  318. package/build-module/hooks/padding.js.map +1 -1
  319. package/build-module/hooks/style.js +4 -3
  320. package/build-module/hooks/style.js.map +1 -1
  321. package/build-module/hooks/utils.js +7 -7
  322. package/build-module/hooks/utils.js.map +1 -1
  323. package/build-module/layouts/constrained.js +0 -1
  324. package/build-module/layouts/constrained.js.map +1 -1
  325. package/build-module/layouts/flex.js +24 -23
  326. package/build-module/layouts/flex.js.map +1 -1
  327. package/build-module/store/actions.js +26 -0
  328. package/build-module/store/actions.js.map +1 -1
  329. package/build-module/store/array.js +1 -6
  330. package/build-module/store/array.js.map +1 -1
  331. package/build-module/store/reducer.js +44 -14
  332. package/build-module/store/reducer.js.map +1 -1
  333. package/build-module/store/selectors.js +59 -31
  334. package/build-module/store/selectors.js.map +1 -1
  335. package/build-style/style-rtl.css +88 -88
  336. package/build-style/style.css +84 -84
  337. package/package.json +29 -28
  338. package/src/components/alignment-control/README.md +1 -1
  339. package/src/components/alignment-control/ui.js +1 -1
  340. package/src/components/block-alignment-control/constants.js +1 -1
  341. package/src/components/block-alignment-control/test/index.native.js +4 -4
  342. package/src/components/block-alignment-matrix-control/index.js +1 -1
  343. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +13 -11
  344. package/src/components/block-breadcrumb/test/index.js +1 -1
  345. package/src/components/block-compare/index.js +3 -2
  346. package/src/components/block-draggable/test/helpers.native.js +3 -3
  347. package/src/components/block-draggable/test/index.native.js +27 -27
  348. package/src/components/block-edit/index.js +2 -1
  349. package/src/components/block-list/block.js +2 -0
  350. package/src/components/block-list/style.scss +11 -6
  351. package/src/components/block-lock/menu-item.js +5 -2
  352. package/src/components/block-lock/modal.js +19 -36
  353. package/src/components/block-lock/style.scss +8 -17
  354. package/src/components/block-mover/stories/index.js +1 -1
  355. package/src/components/block-mover/style.scss +35 -1
  356. package/src/components/block-popover/inbetween.js +1 -0
  357. package/src/components/block-popover/index.js +1 -0
  358. package/src/components/block-popover/style.scss +1 -5
  359. package/src/components/block-preview/index.js +8 -3
  360. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -7
  361. package/src/components/block-styles/utils.js +3 -3
  362. package/src/components/block-switcher/index.js +21 -11
  363. package/src/components/block-switcher/preview-block-popover.js +1 -1
  364. package/src/components/block-tools/insertion-point.js +10 -1
  365. package/src/components/block-tools/selected-block-popover.js +80 -34
  366. package/src/components/block-tools/style.scss +15 -0
  367. package/src/components/block-variation-picker/README.md +1 -1
  368. package/src/components/block-vertical-alignment-control/ui.js +1 -1
  369. package/src/components/border-radius-control/all-input-control.js +1 -0
  370. package/src/components/border-radius-control/index.js +1 -0
  371. package/src/components/border-radius-control/input-controls.js +1 -0
  372. package/src/components/border-radius-control/style.scss +15 -24
  373. package/src/components/color-palette/test/__snapshots__/control.js.snap +85 -83
  374. package/src/components/color-palette/test/control.js +1 -1
  375. package/src/components/colors/with-colors.js +13 -23
  376. package/src/components/default-block-appender/style.scss +1 -0
  377. package/src/components/duotone-control/index.js +1 -1
  378. package/src/components/font-sizes/fluid-utils.js +37 -64
  379. package/src/components/font-sizes/test/fluid-utils.js +5 -5
  380. package/src/components/font-sizes/with-font-sizes.js +15 -13
  381. package/src/components/iframe/index.js +1 -1
  382. package/src/components/image-editor/constants.js +1 -1
  383. package/src/components/index.js +1 -0
  384. package/src/components/inner-blocks/index.js +11 -4
  385. package/src/components/inner-blocks/test/index.js +4 -0
  386. package/src/components/inserter/hooks/use-insertion-point.js +3 -11
  387. package/src/components/inserter/reusable-blocks-tab.js +4 -2
  388. package/src/components/inserter/search-items.js +23 -3
  389. package/src/components/inserter/style.scss +8 -7
  390. package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
  391. package/src/components/inserter/test/search-items.js +6 -0
  392. package/src/components/inserter-list-item/style.scss +2 -0
  393. package/src/components/letter-spacing-control/README.md +55 -0
  394. package/src/components/line-height-control/index.js +1 -0
  395. package/src/components/link-control/README.md +3 -3
  396. package/src/components/link-control/index.js +23 -39
  397. package/src/components/link-control/search-input.js +1 -1
  398. package/src/components/link-control/test/index.js +272 -241
  399. package/src/components/link-control/use-internal-input-value.js +22 -0
  400. package/src/components/list-view/block.js +4 -3
  401. package/src/components/list-view/branch.js +11 -6
  402. package/src/components/list-view/drop-indicator.js +1 -0
  403. package/src/components/list-view/style.scss +1 -36
  404. package/src/components/media-replace-flow/index.js +1 -1
  405. package/src/components/media-replace-flow/test/index.js +69 -51
  406. package/src/components/off-canvas-editor/README.md +5 -0
  407. package/src/components/off-canvas-editor/block-contents.js +89 -0
  408. package/src/components/off-canvas-editor/block-select-button.js +113 -0
  409. package/src/components/off-canvas-editor/block.js +335 -0
  410. package/src/components/off-canvas-editor/branch.js +210 -0
  411. package/src/components/off-canvas-editor/context.js +8 -0
  412. package/src/components/off-canvas-editor/drop-indicator.js +126 -0
  413. package/src/components/off-canvas-editor/expander.js +26 -0
  414. package/src/components/off-canvas-editor/index.js +216 -0
  415. package/src/components/off-canvas-editor/leaf.js +48 -0
  416. package/src/components/off-canvas-editor/style.scss +397 -0
  417. package/src/components/off-canvas-editor/test/utils.js +50 -0
  418. package/src/components/off-canvas-editor/use-block-selection.js +169 -0
  419. package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
  420. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
  421. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
  422. package/src/components/off-canvas-editor/utils.js +58 -0
  423. package/src/components/responsive-block-control/test/index.js +69 -92
  424. package/src/components/rich-text/format-toolbar/index.js +1 -1
  425. package/src/components/rich-text/format-toolbar-container.js +1 -1
  426. package/src/components/rich-text/use-paste-handler.js +1 -1
  427. package/src/components/spacing-sizes-control/all-input-control.js +4 -0
  428. package/src/components/spacing-sizes-control/axial-input-controls.js +4 -0
  429. package/src/components/spacing-sizes-control/index.js +4 -0
  430. package/src/components/spacing-sizes-control/input-controls.js +4 -0
  431. package/src/components/spacing-sizes-control/spacing-input-control.js +10 -1
  432. package/src/components/spacing-sizes-control/style.scss +1 -0
  433. package/src/components/url-input/index.js +1 -1
  434. package/src/components/url-popover/README.md +12 -3
  435. package/src/components/url-popover/index.js +33 -3
  436. package/src/components/use-setting/index.js +7 -1
  437. package/src/hooks/border.js +1 -0
  438. package/src/hooks/color-panel.js +13 -1
  439. package/src/hooks/color.js +2 -0
  440. package/src/hooks/content-lock-ui.js +46 -34
  441. package/src/hooks/dimensions.js +106 -19
  442. package/src/hooks/font-size.js +1 -0
  443. package/src/hooks/layout.js +8 -11
  444. package/src/hooks/margin.js +23 -17
  445. package/src/hooks/min-height.js +121 -0
  446. package/src/hooks/padding.js +23 -19
  447. package/src/hooks/style.js +10 -2
  448. package/src/hooks/test/align.js +96 -72
  449. package/src/hooks/test/style.js +4 -0
  450. package/src/hooks/test/use-typography-props.js +1 -1
  451. package/src/hooks/utils.js +5 -6
  452. package/src/layouts/constrained.js +0 -1
  453. package/src/layouts/flex.js +44 -39
  454. package/src/store/actions.js +26 -0
  455. package/src/store/array.js +1 -6
  456. package/src/store/reducer.js +50 -40
  457. package/src/store/selectors.js +43 -29
  458. package/src/store/test/actions.js +18 -0
  459. package/src/store/test/reducer.js +40 -0
  460. package/src/store/test/selectors.js +20 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { reduce, omit, mapValues, isEqual, isEmpty } from 'lodash';
4
+ import { omit, mapValues, isEqual, isEmpty } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -683,30 +683,22 @@ const withReplaceInnerBlocks = ( reducer ) => ( state, action ) => {
683
683
  // will be deleted entirely from its entity.
684
684
  stateAfterInsert.order = {
685
685
  ...stateAfterInsert.order,
686
- ...reduce(
687
- nestedControllers,
688
- ( result, value, key ) => {
689
- if ( state.order[ key ] ) {
690
- result[ key ] = state.order[ key ];
691
- }
692
- return result;
693
- },
694
- {}
695
- ),
686
+ ...Object.keys( nestedControllers ).reduce( ( result, key ) => {
687
+ if ( state.order[ key ] ) {
688
+ result[ key ] = state.order[ key ];
689
+ }
690
+ return result;
691
+ }, {} ),
696
692
  };
697
693
  stateAfterInsert.tree = {
698
694
  ...stateAfterInsert.tree,
699
- ...reduce(
700
- nestedControllers,
701
- ( result, value, _key ) => {
702
- const key = `controlled||${ _key }`;
703
- if ( state.tree[ key ] ) {
704
- result[ key ] = state.tree[ key ];
705
- }
706
- return result;
707
- },
708
- {}
709
- ),
695
+ ...Object.keys( nestedControllers ).reduce( ( result, _key ) => {
696
+ const key = `controlled||${ _key }`;
697
+ if ( state.tree[ key ] ) {
698
+ result[ key ] = state.tree[ key ];
699
+ }
700
+ return result;
701
+ }, {} ),
710
702
  };
711
703
  }
712
704
  return stateAfterInsert;
@@ -873,24 +865,22 @@ export const blocks = pipe(
873
865
  const next = action.clientIds.reduce(
874
866
  ( accumulator, id ) => ( {
875
867
  ...accumulator,
876
- [ id ]: reduce(
868
+ [ id ]: Object.entries(
877
869
  action.uniqueByBlock
878
870
  ? action.attributes[ id ]
879
- : action.attributes,
880
- ( result, value, key ) => {
881
- // Consider as updates only changed values.
882
- if ( value !== result[ key ] ) {
883
- result = getMutateSafeObject(
884
- state[ id ],
885
- result
886
- );
887
- result[ key ] = value;
888
- }
889
-
890
- return result;
891
- },
892
- state[ id ]
893
- ),
871
+ : action.attributes ?? {}
872
+ ).reduce( ( result, [ key, value ] ) => {
873
+ // Consider as updates only changed values.
874
+ if ( value !== result[ key ] ) {
875
+ result = getMutateSafeObject(
876
+ state[ id ],
877
+ result
878
+ );
879
+ result[ key ] = value;
880
+ }
881
+
882
+ return result;
883
+ }, state[ id ] ),
894
884
  } ),
895
885
  {}
896
886
  );
@@ -1056,8 +1046,7 @@ export const blocks = pipe(
1056
1046
  } ),
1057
1047
  ( nextState ) =>
1058
1048
  mapValues( nextState, ( subState ) =>
1059
- reduce(
1060
- subState,
1049
+ Object.values( subState ).reduce(
1061
1050
  ( result, clientId ) => {
1062
1051
  if ( clientId === clientIds[ 0 ] ) {
1063
1052
  return [
@@ -1160,6 +1149,26 @@ export const blocks = pipe(
1160
1149
  },
1161
1150
  } );
1162
1151
 
1152
+ /**
1153
+ * Reducer returning visibility status of block interface.
1154
+ *
1155
+ * @param {boolean} state Current state.
1156
+ * @param {Object} action Dispatched action.
1157
+ *
1158
+ * @return {boolean} Updated state.
1159
+ */
1160
+ export function isBlockInterfaceHidden( state = false, action ) {
1161
+ switch ( action.type ) {
1162
+ case 'HIDE_BLOCK_INTERFACE':
1163
+ return true;
1164
+
1165
+ case 'SHOW_BLOCK_INTERFACE':
1166
+ return false;
1167
+ }
1168
+
1169
+ return state;
1170
+ }
1171
+
1163
1172
  /**
1164
1173
  * Reducer returning typing state.
1165
1174
  *
@@ -1809,6 +1818,7 @@ export function temporarilyEditingAsBlocks( state = '', action ) {
1809
1818
  export default combineReducers( {
1810
1819
  blocks,
1811
1820
  isTyping,
1821
+ isBlockInterfaceHidden,
1812
1822
  draggedBlocks,
1813
1823
  selection,
1814
1824
  isMultiSelecting,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { castArray, map, reduce, some, find, filter, orderBy } from 'lodash';
4
+ import { map, find, filter, orderBy } from 'lodash';
5
5
  import createSelector from 'rememo';
6
6
 
7
7
  /**
@@ -273,14 +273,10 @@ export const getGlobalBlockCount = createSelector(
273
273
  if ( ! blockName ) {
274
274
  return clientIds.length;
275
275
  }
276
- return reduce(
277
- clientIds,
278
- ( accumulator, clientId ) => {
279
- const block = state.blocks.byClientId[ clientId ];
280
- return block.name === blockName ? accumulator + 1 : accumulator;
281
- },
282
- 0
283
- );
276
+ return clientIds.reduce( ( accumulator, clientId ) => {
277
+ const block = state.blocks.byClientId[ clientId ];
278
+ return block.name === blockName ? accumulator + 1 : accumulator;
279
+ }, 0 );
284
280
  },
285
281
  ( state ) => [ state.blocks.order, state.blocks.byClientId ]
286
282
  );
@@ -319,12 +315,13 @@ export const __experimentalGetGlobalBlocksByName = createSelector(
319
315
  */
320
316
  export const getBlocksByClientId = createSelector(
321
317
  ( state, clientIds ) =>
322
- map( castArray( clientIds ), ( clientId ) =>
323
- getBlock( state, clientId )
318
+ map(
319
+ Array.isArray( clientIds ) ? clientIds : [ clientIds ],
320
+ ( clientId ) => getBlock( state, clientId )
324
321
  ),
325
322
  ( state, clientIds ) =>
326
323
  map(
327
- castArray( clientIds ),
324
+ Array.isArray( clientIds ) ? clientIds : [ clientIds ],
328
325
  ( clientId ) => state.blocks.tree[ clientId ]
329
326
  )
330
327
  );
@@ -694,10 +691,7 @@ export const getSelectedBlockClientIds = createSelector(
694
691
  ( state ) => {
695
692
  const { selectionStart, selectionEnd } = state.selection;
696
693
 
697
- if (
698
- selectionStart.clientId === undefined ||
699
- selectionEnd.clientId === undefined
700
- ) {
694
+ if ( ! selectionStart.clientId || ! selectionEnd.clientId ) {
701
695
  return EMPTY_ARRAY;
702
696
  }
703
697
 
@@ -712,6 +706,7 @@ export const getSelectedBlockClientIds = createSelector(
712
706
  state,
713
707
  selectionStart.clientId
714
708
  );
709
+
715
710
  if ( rootClientId === null ) {
716
711
  return EMPTY_ARRAY;
717
712
  }
@@ -1183,8 +1178,7 @@ export function isBlockSelected( state, clientId ) {
1183
1178
  * @return {boolean} Whether the block as an inner block selected
1184
1179
  */
1185
1180
  export function hasSelectedInnerBlock( state, clientId, deep = false ) {
1186
- return some(
1187
- getBlockOrder( state, clientId ),
1181
+ return getBlockOrder( state, clientId ).some(
1188
1182
  ( innerClientId ) =>
1189
1183
  isBlockSelected( state, innerClientId ) ||
1190
1184
  isBlockMultiSelected( state, innerClientId ) ||
@@ -1276,6 +1270,17 @@ export function isTyping( state ) {
1276
1270
  return state.isTyping;
1277
1271
  }
1278
1272
 
1273
+ /**
1274
+ * Returns true if the the block interface should be hidden, or false otherwise.
1275
+ *
1276
+ * @param {Object} state Global application state.
1277
+ *
1278
+ * @return {boolean} Whether the block toolbar is hidden.
1279
+ */
1280
+ export function __experimentalIsBlockInterfaceHidden( state ) {
1281
+ return state.isBlockInterfaceHidden;
1282
+ }
1283
+
1279
1284
  /**
1280
1285
  * Returns true if the user is dragging blocks, or false otherwise.
1281
1286
  *
@@ -1332,7 +1337,7 @@ export function isAncestorBeingDragged( state, clientId ) {
1332
1337
  }
1333
1338
 
1334
1339
  const parents = getBlockParents( state, clientId );
1335
- return some( parents, ( parentClientId ) =>
1340
+ return parents.some( ( parentClientId ) =>
1336
1341
  isBlockBeingDragged( state, parentClientId )
1337
1342
  );
1338
1343
  }
@@ -1531,7 +1536,7 @@ const canInsertBlockTypeUnmemoized = (
1531
1536
  ...getBlockParents( state, rootClientId ),
1532
1537
  ];
1533
1538
 
1534
- hasBlockAllowedAncestor = some( ancestors, ( ancestorClientId ) =>
1539
+ hasBlockAllowedAncestor = ancestors.some( ( ancestorClientId ) =>
1535
1540
  checkAllowList(
1536
1541
  blockAllowedAncestorBlocks,
1537
1542
  getBlockName( state, ancestorClientId )
@@ -1845,13 +1850,10 @@ const buildBlockTypeItem =
1845
1850
 
1846
1851
  let isDisabled = false;
1847
1852
  if ( ! hasBlockSupport( blockType.name, 'multiple', true ) ) {
1848
- isDisabled = some(
1849
- getBlocksByClientId(
1850
- state,
1851
- getClientIdsWithDescendants( state )
1852
- ),
1853
- { name: blockType.name }
1854
- );
1853
+ isDisabled = getBlocksByClientId(
1854
+ state,
1855
+ getClientIdsWithDescendants( state )
1856
+ ).some( ( { name } ) => name === blockType.name );
1855
1857
  }
1856
1858
 
1857
1859
  const { time, count = 0 } = getInsertUsage( state, id ) || {};
@@ -2065,7 +2067,7 @@ export const getInserterItems = createSelector(
2065
2067
  */
2066
2068
  export const getBlockTransformItems = createSelector(
2067
2069
  ( state, blocks, rootClientId = null ) => {
2068
- const normalizedBlocks = castArray( blocks );
2070
+ const normalizedBlocks = Array.isArray( blocks ) ? blocks : [ blocks ];
2069
2071
  const [ sourceBlock ] = normalizedBlocks;
2070
2072
  const buildBlockTypeTransformItem = buildBlockTypeItem( state, {
2071
2073
  buildScope: 'transform',
@@ -2129,7 +2131,7 @@ export const getBlockTransformItems = createSelector(
2129
2131
  */
2130
2132
  export const hasInserterItems = createSelector(
2131
2133
  ( state, rootClientId = null ) => {
2132
- const hasBlockType = some( getBlockTypes(), ( blockType ) =>
2134
+ const hasBlockType = getBlockTypes().some( ( blockType ) =>
2133
2135
  canIncludeBlockTypeInInserter( state, blockType, rootClientId )
2134
2136
  );
2135
2137
  if ( hasBlockType ) {
@@ -2690,6 +2692,11 @@ export const __unstableGetVisibleBlocks = createSelector(
2690
2692
  ( state ) => [ state.blockVisibility ]
2691
2693
  );
2692
2694
 
2695
+ /**
2696
+ * DO-NOT-USE in production.
2697
+ * This selector is created for internal/experimental only usage and may be
2698
+ * removed anytime without any warning, causing breakage on any plugin or theme invoking it.
2699
+ */
2693
2700
  export const __unstableGetContentLockingParent = createSelector(
2694
2701
  ( state, clientId ) => {
2695
2702
  let current = clientId;
@@ -2705,6 +2712,13 @@ export const __unstableGetContentLockingParent = createSelector(
2705
2712
  ( state ) => [ state.blocks.parents, state.blockListSettings ]
2706
2713
  );
2707
2714
 
2715
+ /**
2716
+ * DO-NOT-USE in production.
2717
+ * This selector is created for internal/experimental only usage and may be
2718
+ * removed anytime without any warning, causing breakage on any plugin or theme invoking it.
2719
+ *
2720
+ * @param {Object} state Global application state.
2721
+ */
2708
2722
  export function __unstableGetTemporarilyEditingAsBlocks( state ) {
2709
2723
  return state.temporarilyEditingAsBlocks;
2710
2724
  }
@@ -27,6 +27,7 @@ const noop = () => {};
27
27
 
28
28
  const {
29
29
  clearSelectedBlock,
30
+ __experimentalHideBlockInterface: hideBlockInterface,
30
31
  insertBlock,
31
32
  insertBlocks,
32
33
  mergeBlocks,
@@ -39,6 +40,7 @@ const {
39
40
  replaceInnerBlocks,
40
41
  resetBlocks,
41
42
  selectBlock,
43
+ __experimentalShowBlockInterface: showBlockInterface,
42
44
  showInsertionPoint,
43
45
  startMultiSelect,
44
46
  startTyping,
@@ -775,6 +777,22 @@ describe( 'actions', () => {
775
777
  } );
776
778
  } );
777
779
 
780
+ describe( 'hideBlockInterface', () => {
781
+ it( 'should return the HIDE_BLOCK_INTERFACE action', () => {
782
+ expect( hideBlockInterface() ).toEqual( {
783
+ type: 'HIDE_BLOCK_INTERFACE',
784
+ } );
785
+ } );
786
+ } );
787
+
788
+ describe( 'showBlockInterface', () => {
789
+ it( 'should return the SHOW_BLOCK_INTERFACE action', () => {
790
+ expect( showBlockInterface() ).toEqual( {
791
+ type: 'SHOW_BLOCK_INTERFACE',
792
+ } );
793
+ } );
794
+ } );
795
+
778
796
  describe( 'startTyping', () => {
779
797
  it( 'should return the START_TYPING action', () => {
780
798
  expect( startTyping() ).toEqual( {
@@ -19,6 +19,7 @@ import {
19
19
  hasSameKeys,
20
20
  isUpdatingSameBlockAttribute,
21
21
  blocks,
22
+ isBlockInterfaceHidden,
22
23
  isTyping,
23
24
  draggedBlocks,
24
25
  selection,
@@ -1894,6 +1895,27 @@ describe( 'state', () => {
1894
1895
 
1895
1896
  expect( state.attributes ).toBe( state.attributes );
1896
1897
  } );
1898
+
1899
+ it( 'should handle undefined attributes', () => {
1900
+ const original = deepFreeze(
1901
+ blocks( undefined, {
1902
+ type: 'RESET_BLOCKS',
1903
+ blocks: [
1904
+ {
1905
+ clientId: 'kumquat',
1906
+ attributes: {},
1907
+ innerBlocks: [],
1908
+ },
1909
+ ],
1910
+ } )
1911
+ );
1912
+ const state = blocks( original, {
1913
+ type: 'UPDATE_BLOCK_ATTRIBUTES',
1914
+ clientIds: [ 'kumquat' ],
1915
+ } );
1916
+
1917
+ expect( state.attributes.kumquat ).toEqual( {} );
1918
+ } );
1897
1919
  } );
1898
1920
 
1899
1921
  describe( 'isPersistentChange', () => {
@@ -2253,6 +2275,24 @@ describe( 'state', () => {
2253
2275
  } );
2254
2276
  } );
2255
2277
 
2278
+ describe( 'isBlockInterfaceHidden()', () => {
2279
+ it( 'should set the hide block interface flag to true', () => {
2280
+ const state = isBlockInterfaceHidden( false, {
2281
+ type: 'HIDE_BLOCK_INTERFACE',
2282
+ } );
2283
+
2284
+ expect( state ).toBe( true );
2285
+ } );
2286
+
2287
+ it( 'should set the hide block interface flag to false', () => {
2288
+ const state = isBlockInterfaceHidden( false, {
2289
+ type: 'SHOW_BLOCK_INTERFACE',
2290
+ } );
2291
+
2292
+ expect( state ).toBe( false );
2293
+ } );
2294
+ } );
2295
+
2256
2296
  describe( 'isTyping()', () => {
2257
2297
  it( 'should set the typing flag to true', () => {
2258
2298
  const state = isTyping( false, {
@@ -44,6 +44,7 @@ const {
44
44
  isBlockMultiSelected,
45
45
  isFirstMultiSelectedBlock,
46
46
  getBlockMode,
47
+ __experimentalIsBlockInterfaceHidden: isBlockInterfaceHidden,
47
48
  isTyping,
48
49
  isDraggingBlocks,
49
50
  getDraggedBlockClientIds,
@@ -1940,6 +1941,24 @@ describe( 'selectors', () => {
1940
1941
  } );
1941
1942
  } );
1942
1943
 
1944
+ describe( 'isBlockInterfaceHidden', () => {
1945
+ it( 'should return the true if toggled true in state', () => {
1946
+ const state = {
1947
+ isBlockInterfaceHidden: true,
1948
+ };
1949
+
1950
+ expect( isBlockInterfaceHidden( state ) ).toBe( true );
1951
+ } );
1952
+
1953
+ it( 'should return false if toggled false in state', () => {
1954
+ const state = {
1955
+ isBlockInterfaceHidden: false,
1956
+ };
1957
+
1958
+ expect( isBlockInterfaceHidden( state ) ).toBe( false );
1959
+ } );
1960
+ } );
1961
+
1943
1962
  describe( 'isTyping', () => {
1944
1963
  it( 'should return the isTyping flag if the block is selected', () => {
1945
1964
  const state = {
@@ -3995,7 +4014,7 @@ describe( 'selectors', () => {
3995
4014
  } );
3996
4015
 
3997
4016
  describe( 'getInserterItems with core blocks prioritization', () => {
3998
- // This test is in a seperate `describe` because all other tests register
4017
+ // This test is in a separate `describe` because all other tests register
3999
4018
  // some test `core` blocks and interfere with the purpose of the specific test.
4000
4019
  // This tests the functionality to ensure core blocks are prioritized in the
4001
4020
  // returned results, because third party blocks can be registered earlier than