@wordpress/block-editor 12.16.0 → 12.17.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 (646) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +3 -6
  4. package/build/components/block-canvas/index.js +0 -2
  5. package/build/components/block-canvas/index.js.map +1 -1
  6. package/build/components/block-card/index.js +1 -1
  7. package/build/components/block-card/index.js.map +1 -1
  8. package/build/components/block-draggable/draggable-chip.js +6 -1
  9. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  10. package/build/components/block-draggable/index.js +76 -6
  11. package/build/components/block-draggable/index.js.map +1 -1
  12. package/build/components/block-draggable/index.native.js +0 -6
  13. package/build/components/block-draggable/index.native.js.map +1 -1
  14. package/build/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  15. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  16. package/build/components/block-editing-mode/index.js +2 -3
  17. package/build/components/block-editing-mode/index.js.map +1 -1
  18. package/build/components/block-inspector/index.js +1 -1
  19. package/build/components/block-inspector/index.js.map +1 -1
  20. package/build/components/block-list/block-list-item-cell.native.js +1 -0
  21. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  22. package/build/components/block-list/block.js +245 -102
  23. package/build/components/block-list/block.js.map +1 -1
  24. package/build/components/block-list/block.native.js +46 -20
  25. package/build/components/block-list/block.native.js.map +1 -1
  26. package/build/components/block-list/index.native.js +3 -5
  27. package/build/components/block-list/index.native.js.map +1 -1
  28. package/build/components/block-list/private-block-context.js +14 -0
  29. package/build/components/block-list/private-block-context.js.map +1 -0
  30. package/build/components/block-list/use-block-props/index.js +33 -96
  31. package/build/components/block-list/use-block-props/index.js.map +1 -1
  32. package/build/components/block-list/use-in-between-inserter.js +3 -2
  33. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  34. package/build/components/block-list/use-scroll-upon-insertion.native.js +41 -0
  35. package/build/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  36. package/build/components/block-lock/toolbar.js +15 -27
  37. package/build/components/block-lock/toolbar.js.map +1 -1
  38. package/build/components/block-mover/index.js +2 -1
  39. package/build/components/block-mover/index.js.map +1 -1
  40. package/build/components/block-patterns-list/index.js +4 -4
  41. package/build/components/block-patterns-list/index.js.map +1 -1
  42. package/build/components/block-switcher/index.js +4 -4
  43. package/build/components/block-switcher/index.js.map +1 -1
  44. package/build/components/block-toolbar/index.js +1 -2
  45. package/build/components/block-toolbar/index.js.map +1 -1
  46. package/build/components/block-tools/block-toolbar-popover.js +0 -2
  47. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  48. package/build/components/block-variation-transforms/index.js +29 -2
  49. package/build/components/block-variation-transforms/index.js.map +1 -1
  50. package/build/components/border-radius-control/linked-button.js +1 -1
  51. package/build/components/border-radius-control/linked-button.js.map +1 -1
  52. package/build/components/colors/utils.js +10 -2
  53. package/build/components/colors/utils.js.map +1 -1
  54. package/build/components/colors/with-colors.js +6 -2
  55. package/build/components/colors/with-colors.js.map +1 -1
  56. package/build/components/font-sizes/utils.js +10 -2
  57. package/build/components/font-sizes/utils.js.map +1 -1
  58. package/build/components/global-styles/border-panel.js +2 -1
  59. package/build/components/global-styles/border-panel.js.map +1 -1
  60. package/build/components/global-styles/color-panel.js +2 -1
  61. package/build/components/global-styles/color-panel.js.map +1 -1
  62. package/build/components/global-styles/dimensions-panel.js +4 -3
  63. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  64. package/build/components/global-styles/effects-panel.js +2 -1
  65. package/build/components/global-styles/effects-panel.js.map +1 -1
  66. package/build/components/global-styles/filters-panel.js +1 -4
  67. package/build/components/global-styles/filters-panel.js.map +1 -1
  68. package/build/components/global-styles/get-global-styles-changes.js +192 -0
  69. package/build/components/global-styles/get-global-styles-changes.js.map +1 -0
  70. package/build/components/global-styles/hooks.js +1 -1
  71. package/build/components/global-styles/hooks.js.map +1 -1
  72. package/build/components/global-styles/image-settings-panel.js +7 -1
  73. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  74. package/build/components/global-styles/index.js +7 -0
  75. package/build/components/global-styles/index.js.map +1 -1
  76. package/build/components/global-styles/typography-panel.js +2 -1
  77. package/build/components/global-styles/typography-panel.js.map +1 -1
  78. package/build/components/global-styles/use-global-styles-output.js +22 -8
  79. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  80. package/build/components/global-styles/utils.js +8 -1
  81. package/build/components/global-styles/utils.js.map +1 -1
  82. package/build/components/height-control/index.js +6 -2
  83. package/build/components/height-control/index.js.map +1 -1
  84. package/build/components/image-size-control/index.js +2 -2
  85. package/build/components/image-size-control/index.js.map +1 -1
  86. package/build/components/index.native.js +6 -5
  87. package/build/components/index.native.js.map +1 -1
  88. package/build/components/inner-blocks/index.js +61 -22
  89. package/build/components/inner-blocks/index.js.map +1 -1
  90. package/build/components/inner-blocks/index.native.js +18 -4
  91. package/build/components/inner-blocks/index.native.js.map +1 -1
  92. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  93. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  94. package/build/components/inner-blocks/use-nested-settings-update.js +5 -9
  95. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  96. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  97. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  98. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -9
  99. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  100. package/build/components/inserter/block-patterns-tab/patterns-filter.js +10 -10
  101. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  102. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +9 -9
  103. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  104. package/build/components/inserter/block-patterns-tab/utils.js +10 -14
  105. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  106. package/build/components/inserter/hooks/use-block-types-state.js +4 -14
  107. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  108. package/build/components/inserter/hooks/use-patterns-state.js +1 -1
  109. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  110. package/build/components/inserter/index.js +1 -2
  111. package/build/components/inserter/index.js.map +1 -1
  112. package/build/components/inserter/library.js +3 -7
  113. package/build/components/inserter/library.js.map +1 -1
  114. package/build/components/inserter/menu.js +14 -28
  115. package/build/components/inserter/menu.js.map +1 -1
  116. package/build/components/inserter/tabs.js +21 -21
  117. package/build/components/inserter/tabs.js.map +1 -1
  118. package/build/components/inserter-draggable-blocks/index.js +1 -1
  119. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  120. package/build/components/inserter-list-item/index.js +2 -4
  121. package/build/components/inserter-list-item/index.js.map +1 -1
  122. package/build/components/inspector-controls/block-support-tools-panel.js +3 -1
  123. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  124. package/build/components/inspector-controls-tabs/index.js +34 -23
  125. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  126. package/build/components/list-view/block-select-button.js +4 -0
  127. package/build/components/list-view/block-select-button.js.map +1 -1
  128. package/build/components/list-view/block.js +57 -3
  129. package/build/components/list-view/block.js.map +1 -1
  130. package/build/components/media-upload-progress/constants.js +19 -0
  131. package/build/components/media-upload-progress/constants.js.map +1 -0
  132. package/build/components/media-upload-progress/index.native.js +42 -17
  133. package/build/components/media-upload-progress/index.native.js.map +1 -1
  134. package/build/components/navigable-toolbar/index.js +9 -14
  135. package/build/components/navigable-toolbar/index.js.map +1 -1
  136. package/build/components/plain-text/index.native.js +8 -3
  137. package/build/components/plain-text/index.native.js.map +1 -1
  138. package/build/components/provider/index.js +3 -1
  139. package/build/components/provider/index.js.map +1 -1
  140. package/build/components/provider/use-block-sync.js +7 -1
  141. package/build/components/provider/use-block-sync.js.map +1 -1
  142. package/build/components/rich-text/index.js +17 -7
  143. package/build/components/rich-text/index.js.map +1 -1
  144. package/build/components/rich-text/native/index.native.js +16 -24
  145. package/build/components/rich-text/native/index.native.js.map +1 -1
  146. package/build/components/rich-text/use-input-rules.js +2 -2
  147. package/build/components/rich-text/use-input-rules.js.map +1 -1
  148. package/build/components/rich-text/use-mark-persistent.js +1 -1
  149. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  150. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  151. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  152. package/build/components/url-input/index.js +9 -6
  153. package/build/components/url-input/index.js.map +1 -1
  154. package/build/components/use-block-commands/index.js +14 -18
  155. package/build/components/use-block-commands/index.js.map +1 -1
  156. package/build/components/use-block-drop-zone/index.js +51 -22
  157. package/build/components/use-block-drop-zone/index.js.map +1 -1
  158. package/build/components/use-moving-animation/index.js +100 -92
  159. package/build/components/use-moving-animation/index.js.map +1 -1
  160. package/build/components/use-on-block-drop/index.js +8 -11
  161. package/build/components/use-on-block-drop/index.js.map +1 -1
  162. package/build/components/writing-flow/index.js +0 -1
  163. package/build/components/writing-flow/index.js.map +1 -1
  164. package/build/components/writing-flow/use-drag-selection.js +15 -4
  165. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  166. package/build/components/writing-flow/use-selection-observer.js +73 -27
  167. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  168. package/build/components/writing-flow/use-tab-nav.js +7 -4
  169. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  170. package/build/hooks/align.js +1 -1
  171. package/build/hooks/align.js.map +1 -1
  172. package/build/hooks/anchor.js +1 -1
  173. package/build/hooks/anchor.js.map +1 -1
  174. package/build/hooks/aria-label.js +9 -1
  175. package/build/hooks/aria-label.js.map +1 -1
  176. package/build/hooks/background.js +185 -20
  177. package/build/hooks/background.js.map +1 -1
  178. package/build/hooks/border.js +5 -10
  179. package/build/hooks/border.js.map +1 -1
  180. package/build/hooks/color.js +13 -11
  181. package/build/hooks/color.js.map +1 -1
  182. package/build/hooks/custom-class-name.js +1 -1
  183. package/build/hooks/custom-class-name.js.map +1 -1
  184. package/build/hooks/custom-class-name.native.js +9 -1
  185. package/build/hooks/custom-class-name.native.js.map +1 -1
  186. package/build/hooks/dimensions.js +4 -9
  187. package/build/hooks/dimensions.js.map +1 -1
  188. package/build/hooks/font-family.js +7 -3
  189. package/build/hooks/font-family.js.map +1 -1
  190. package/build/hooks/font-size.js +1 -1
  191. package/build/hooks/font-size.js.map +1 -1
  192. package/build/hooks/index.js +4 -3
  193. package/build/hooks/index.js.map +1 -1
  194. package/build/hooks/index.native.js +5 -3
  195. package/build/hooks/index.native.js.map +1 -1
  196. package/build/hooks/layout.js +10 -4
  197. package/build/hooks/layout.js.map +1 -1
  198. package/build/hooks/style.js +1 -1
  199. package/build/hooks/style.js.map +1 -1
  200. package/build/hooks/typography.js +4 -9
  201. package/build/hooks/typography.js.map +1 -1
  202. package/build/hooks/typography.native.js +43 -18
  203. package/build/hooks/typography.native.js.map +1 -1
  204. package/build/hooks/use-typography-props.js +10 -2
  205. package/build/hooks/use-typography-props.js.map +1 -1
  206. package/build/hooks/utils.js +44 -4
  207. package/build/hooks/utils.js.map +1 -1
  208. package/build/private-apis.js +2 -4
  209. package/build/private-apis.js.map +1 -1
  210. package/build/private-apis.native.js +0 -2
  211. package/build/private-apis.native.js.map +1 -1
  212. package/build/store/actions.js +0 -16
  213. package/build/store/actions.js.map +1 -1
  214. package/build/store/private-actions.js +51 -5
  215. package/build/store/private-actions.js.map +1 -1
  216. package/build/store/private-selectors.js +12 -0
  217. package/build/store/private-selectors.js.map +1 -1
  218. package/build/store/reducer.js +14 -6
  219. package/build/store/reducer.js.map +1 -1
  220. package/build/store/selectors.js +1 -13
  221. package/build/store/selectors.js.map +1 -1
  222. package/build/store/undo-ignore.js +12 -0
  223. package/build/store/undo-ignore.js.map +1 -0
  224. package/build/store/utils.js +1 -1
  225. package/build/store/utils.js.map +1 -1
  226. package/build/utils/get-px-from-css-unit.js +16 -0
  227. package/build/utils/get-px-from-css-unit.js.map +1 -0
  228. package/build/utils/index.js +2 -2
  229. package/build/utils/index.js.map +1 -1
  230. package/build/utils/object.js +0 -38
  231. package/build/utils/object.js.map +1 -1
  232. package/build/utils/use-can-block-toolbar-be-focused.js +46 -0
  233. package/build/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  234. package/build-module/components/block-canvas/index.js +0 -2
  235. package/build-module/components/block-canvas/index.js.map +1 -1
  236. package/build-module/components/block-card/index.js +1 -1
  237. package/build-module/components/block-card/index.js.map +1 -1
  238. package/build-module/components/block-draggable/draggable-chip.js +6 -1
  239. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  240. package/build-module/components/block-draggable/index.js +76 -6
  241. package/build-module/components/block-draggable/index.js.map +1 -1
  242. package/build-module/components/block-draggable/index.native.js +1 -7
  243. package/build-module/components/block-draggable/index.native.js.map +1 -1
  244. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  245. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  246. package/build-module/components/block-editing-mode/index.js +3 -4
  247. package/build-module/components/block-editing-mode/index.js.map +1 -1
  248. package/build-module/components/block-inspector/index.js +1 -1
  249. package/build-module/components/block-inspector/index.js.map +1 -1
  250. package/build-module/components/block-list/block-list-item-cell.native.js +1 -0
  251. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  252. package/build-module/components/block-list/block.js +249 -106
  253. package/build-module/components/block-list/block.js.map +1 -1
  254. package/build-module/components/block-list/block.native.js +48 -22
  255. package/build-module/components/block-list/block.native.js.map +1 -1
  256. package/build-module/components/block-list/index.native.js +3 -5
  257. package/build-module/components/block-list/index.native.js.map +1 -1
  258. package/build-module/components/block-list/private-block-context.js +6 -0
  259. package/build-module/components/block-list/private-block-context.js.map +1 -0
  260. package/build-module/components/block-list/use-block-props/index.js +34 -97
  261. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  262. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  263. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  264. package/build-module/components/block-list/use-scroll-upon-insertion.native.js +33 -0
  265. package/build-module/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  266. package/build-module/components/block-lock/toolbar.js +16 -28
  267. package/build-module/components/block-lock/toolbar.js.map +1 -1
  268. package/build-module/components/block-mover/index.js +2 -1
  269. package/build-module/components/block-mover/index.js.map +1 -1
  270. package/build-module/components/block-patterns-list/index.js +5 -5
  271. package/build-module/components/block-patterns-list/index.js.map +1 -1
  272. package/build-module/components/block-switcher/index.js +4 -4
  273. package/build-module/components/block-switcher/index.js.map +1 -1
  274. package/build-module/components/block-toolbar/index.js +1 -2
  275. package/build-module/components/block-toolbar/index.js.map +1 -1
  276. package/build-module/components/block-tools/block-toolbar-popover.js +0 -2
  277. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  278. package/build-module/components/block-variation-transforms/index.js +30 -3
  279. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  280. package/build-module/components/border-radius-control/linked-button.js +1 -1
  281. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  282. package/build-module/components/colors/utils.js +9 -1
  283. package/build-module/components/colors/utils.js.map +1 -1
  284. package/build-module/components/colors/with-colors.js +5 -1
  285. package/build-module/components/colors/with-colors.js.map +1 -1
  286. package/build-module/components/font-sizes/utils.js +9 -1
  287. package/build-module/components/font-sizes/utils.js.map +1 -1
  288. package/build-module/components/global-styles/border-panel.js +3 -2
  289. package/build-module/components/global-styles/border-panel.js.map +1 -1
  290. package/build-module/components/global-styles/color-panel.js +3 -2
  291. package/build-module/components/global-styles/color-panel.js.map +1 -1
  292. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  293. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  294. package/build-module/components/global-styles/effects-panel.js +3 -2
  295. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  296. package/build-module/components/global-styles/filters-panel.js +2 -5
  297. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  298. package/build-module/components/global-styles/get-global-styles-changes.js +184 -0
  299. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -0
  300. package/build-module/components/global-styles/hooks.js +1 -1
  301. package/build-module/components/global-styles/hooks.js.map +1 -1
  302. package/build-module/components/global-styles/image-settings-panel.js +7 -1
  303. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  304. package/build-module/components/global-styles/index.js +1 -0
  305. package/build-module/components/global-styles/index.js.map +1 -1
  306. package/build-module/components/global-styles/typography-panel.js +3 -2
  307. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  308. package/build-module/components/global-styles/use-global-styles-output.js +15 -1
  309. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  310. package/build-module/components/global-styles/utils.js +7 -0
  311. package/build-module/components/global-styles/utils.js.map +1 -1
  312. package/build-module/components/height-control/index.js +6 -2
  313. package/build-module/components/height-control/index.js.map +1 -1
  314. package/build-module/components/image-size-control/index.js +2 -2
  315. package/build-module/components/image-size-control/index.js.map +1 -1
  316. package/build-module/components/index.native.js +2 -1
  317. package/build-module/components/index.native.js.map +1 -1
  318. package/build-module/components/inner-blocks/index.js +62 -23
  319. package/build-module/components/inner-blocks/index.js.map +1 -1
  320. package/build-module/components/inner-blocks/index.native.js +18 -4
  321. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  322. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  323. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  324. package/build-module/components/inner-blocks/use-nested-settings-update.js +6 -10
  325. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  326. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  327. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  328. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +11 -10
  329. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  330. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +11 -11
  331. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  332. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +11 -11
  333. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  334. package/build-module/components/inserter/block-patterns-tab/utils.js +7 -11
  335. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  336. package/build-module/components/inserter/hooks/use-block-types-state.js +4 -14
  337. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  338. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -2
  339. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  340. package/build-module/components/inserter/index.js +1 -2
  341. package/build-module/components/inserter/index.js.map +1 -1
  342. package/build-module/components/inserter/library.js +3 -7
  343. package/build-module/components/inserter/library.js.map +1 -1
  344. package/build-module/components/inserter/menu.js +14 -28
  345. package/build-module/components/inserter/menu.js.map +1 -1
  346. package/build-module/components/inserter/tabs.js +22 -22
  347. package/build-module/components/inserter/tabs.js.map +1 -1
  348. package/build-module/components/inserter-draggable-blocks/index.js +2 -2
  349. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  350. package/build-module/components/inserter-list-item/index.js +2 -4
  351. package/build-module/components/inserter-list-item/index.js.map +1 -1
  352. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -1
  353. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  354. package/build-module/components/inspector-controls-tabs/index.js +35 -24
  355. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  356. package/build-module/components/list-view/block-select-button.js +4 -0
  357. package/build-module/components/list-view/block-select-button.js.map +1 -1
  358. package/build-module/components/list-view/block.js +58 -4
  359. package/build-module/components/list-view/block.js.map +1 -1
  360. package/build-module/components/media-upload-progress/constants.js +7 -0
  361. package/build-module/components/media-upload-progress/constants.js.map +1 -0
  362. package/build-module/components/media-upload-progress/index.native.js +37 -8
  363. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  364. package/build-module/components/navigable-toolbar/index.js +9 -14
  365. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  366. package/build-module/components/plain-text/index.native.js +6 -1
  367. package/build-module/components/plain-text/index.native.js.map +1 -1
  368. package/build-module/components/provider/index.js +3 -1
  369. package/build-module/components/provider/index.js.map +1 -1
  370. package/build-module/components/provider/use-block-sync.js +7 -1
  371. package/build-module/components/provider/use-block-sync.js.map +1 -1
  372. package/build-module/components/rich-text/index.js +17 -7
  373. package/build-module/components/rich-text/index.js.map +1 -1
  374. package/build-module/components/rich-text/native/index.native.js +16 -23
  375. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  376. package/build-module/components/rich-text/use-input-rules.js +2 -2
  377. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  378. package/build-module/components/rich-text/use-mark-persistent.js +1 -1
  379. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  380. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  381. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  382. package/build-module/components/url-input/index.js +9 -6
  383. package/build-module/components/url-input/index.js.map +1 -1
  384. package/build-module/components/use-block-commands/index.js +14 -18
  385. package/build-module/components/use-block-commands/index.js.map +1 -1
  386. package/build-module/components/use-block-drop-zone/index.js +51 -23
  387. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  388. package/build-module/components/use-moving-animation/index.js +102 -94
  389. package/build-module/components/use-moving-animation/index.js.map +1 -1
  390. package/build-module/components/use-on-block-drop/index.js +8 -11
  391. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  392. package/build-module/components/writing-flow/index.js +0 -1
  393. package/build-module/components/writing-flow/index.js.map +1 -1
  394. package/build-module/components/writing-flow/use-drag-selection.js +15 -4
  395. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  396. package/build-module/components/writing-flow/use-selection-observer.js +73 -27
  397. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  398. package/build-module/components/writing-flow/use-tab-nav.js +7 -4
  399. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  400. package/build-module/hooks/align.js +1 -1
  401. package/build-module/hooks/align.js.map +1 -1
  402. package/build-module/hooks/anchor.js +1 -1
  403. package/build-module/hooks/anchor.js.map +1 -1
  404. package/build-module/hooks/aria-label.js +7 -1
  405. package/build-module/hooks/aria-label.js.map +1 -1
  406. package/build-module/hooks/background.js +181 -19
  407. package/build-module/hooks/background.js.map +1 -1
  408. package/build-module/hooks/border.js +2 -8
  409. package/build-module/hooks/border.js.map +1 -1
  410. package/build-module/hooks/color.js +11 -9
  411. package/build-module/hooks/color.js.map +1 -1
  412. package/build-module/hooks/custom-class-name.js +1 -1
  413. package/build-module/hooks/custom-class-name.js.map +1 -1
  414. package/build-module/hooks/custom-class-name.native.js +7 -1
  415. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  416. package/build-module/hooks/dimensions.js +1 -7
  417. package/build-module/hooks/dimensions.js.map +1 -1
  418. package/build-module/hooks/font-family.js +6 -2
  419. package/build-module/hooks/font-family.js.map +1 -1
  420. package/build-module/hooks/font-size.js +1 -1
  421. package/build-module/hooks/font-size.js.map +1 -1
  422. package/build-module/hooks/index.js +5 -4
  423. package/build-module/hooks/index.js.map +1 -1
  424. package/build-module/hooks/index.native.js +6 -4
  425. package/build-module/hooks/index.native.js.map +1 -1
  426. package/build-module/hooks/layout.js +9 -3
  427. package/build-module/hooks/layout.js.map +1 -1
  428. package/build-module/hooks/style.js +1 -1
  429. package/build-module/hooks/style.js.map +1 -1
  430. package/build-module/hooks/typography.js +1 -7
  431. package/build-module/hooks/typography.js.map +1 -1
  432. package/build-module/hooks/typography.native.js +43 -17
  433. package/build-module/hooks/typography.native.js.map +1 -1
  434. package/build-module/hooks/use-typography-props.js +9 -1
  435. package/build-module/hooks/use-typography-props.js.map +1 -1
  436. package/build-module/hooks/utils.js +43 -4
  437. package/build-module/hooks/utils.js.map +1 -1
  438. package/build-module/private-apis.js +2 -4
  439. package/build-module/private-apis.js.map +1 -1
  440. package/build-module/private-apis.native.js +0 -2
  441. package/build-module/private-apis.native.js.map +1 -1
  442. package/build-module/store/actions.js +0 -15
  443. package/build-module/store/actions.js.map +1 -1
  444. package/build-module/store/private-actions.js +49 -4
  445. package/build-module/store/private-actions.js.map +1 -1
  446. package/build-module/store/private-selectors.js +11 -0
  447. package/build-module/store/private-selectors.js.map +1 -1
  448. package/build-module/store/reducer.js +14 -6
  449. package/build-module/store/reducer.js.map +1 -1
  450. package/build-module/store/selectors.js +1 -12
  451. package/build-module/store/selectors.js.map +1 -1
  452. package/build-module/store/undo-ignore.js +5 -0
  453. package/build-module/store/undo-ignore.js.map +1 -0
  454. package/build-module/store/utils.js +2 -2
  455. package/build-module/store/utils.js.map +1 -1
  456. package/build-module/utils/get-px-from-css-unit.js +9 -0
  457. package/build-module/utils/get-px-from-css-unit.js.map +1 -0
  458. package/build-module/utils/index.js +1 -1
  459. package/build-module/utils/index.js.map +1 -1
  460. package/build-module/utils/object.js +0 -37
  461. package/build-module/utils/object.js.map +1 -1
  462. package/build-module/utils/use-can-block-toolbar-be-focused.js +40 -0
  463. package/build-module/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  464. package/build-style/content-rtl.css +7 -6
  465. package/build-style/content.css +7 -6
  466. package/build-style/style-rtl.css +51 -8
  467. package/build-style/style.css +51 -8
  468. package/package.json +31 -31
  469. package/src/components/alignment-control/README.md +0 -5
  470. package/src/components/block-alignment-control/README.md +0 -5
  471. package/src/components/block-alignment-matrix-control/README.md +0 -10
  472. package/src/components/block-breadcrumb/README.md +0 -5
  473. package/src/components/block-canvas/index.js +0 -2
  474. package/src/components/block-canvas/style.scss +6 -0
  475. package/src/components/block-caption/README.md +0 -5
  476. package/src/components/block-card/README.md +0 -5
  477. package/src/components/block-card/index.js +1 -1
  478. package/src/components/block-draggable/draggable-chip.js +11 -1
  479. package/src/components/block-draggable/index.js +116 -4
  480. package/src/components/block-draggable/index.native.js +0 -5
  481. package/src/components/block-draggable/style.scss +35 -0
  482. package/src/components/block-draggable/test/helpers.native.js +8 -7
  483. package/src/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  484. package/src/components/block-editing-mode/index.js +3 -3
  485. package/src/components/block-icon/README.md +0 -5
  486. package/src/components/block-inspector/README.md +0 -5
  487. package/src/components/block-inspector/index.js +3 -1
  488. package/src/components/block-list/block-list-item-cell.native.js +5 -1
  489. package/src/components/block-list/block.js +290 -119
  490. package/src/components/block-list/block.native.js +55 -21
  491. package/src/components/block-list/content.scss +14 -10
  492. package/src/components/block-list/index.native.js +3 -5
  493. package/src/components/block-list/{block-list-block-context.js → private-block-context.js} +1 -1
  494. package/src/components/block-list/use-block-props/index.js +32 -128
  495. package/src/components/block-list/use-in-between-inserter.js +4 -1
  496. package/src/components/block-list/use-scroll-upon-insertion.native.js +52 -0
  497. package/src/components/block-lock/toolbar.js +15 -34
  498. package/src/components/block-mover/README.md +0 -5
  499. package/src/components/block-mover/index.js +1 -1
  500. package/src/components/block-parent-selector/README.md +0 -5
  501. package/src/components/block-patterns-list/README.md +0 -5
  502. package/src/components/block-patterns-list/index.js +8 -5
  503. package/src/components/block-switcher/index.js +49 -59
  504. package/src/components/block-toolbar/README.md +0 -5
  505. package/src/components/block-toolbar/index.js +1 -2
  506. package/src/components/block-tools/block-toolbar-popover.js +4 -10
  507. package/src/components/block-types-list/README.md +0 -5
  508. package/src/components/block-variation-picker/README.md +0 -5
  509. package/src/components/block-variation-transforms/README.md +0 -5
  510. package/src/components/block-variation-transforms/index.js +49 -3
  511. package/src/components/border-radius-control/linked-button.js +1 -1
  512. package/src/components/caption/README.md +0 -5
  513. package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -1
  514. package/src/components/colors/utils.js +8 -1
  515. package/src/components/colors/with-colors.js +3 -1
  516. package/src/components/contrast-checker/README.md +0 -4
  517. package/src/components/copy-handler/README.md +0 -10
  518. package/src/components/font-sizes/utils.js +7 -1
  519. package/src/components/global-styles/border-panel.js +2 -1
  520. package/src/components/global-styles/color-panel.js +2 -1
  521. package/src/components/global-styles/dimensions-panel.js +4 -3
  522. package/src/components/global-styles/effects-panel.js +2 -1
  523. package/src/components/global-styles/filters-panel.js +2 -5
  524. package/src/components/global-styles/get-global-styles-changes.js +210 -0
  525. package/src/components/global-styles/hooks.js +3 -0
  526. package/src/components/global-styles/image-settings-panel.js +6 -0
  527. package/src/components/global-styles/index.js +1 -0
  528. package/src/components/global-styles/test/get-global-styles-changes.js +234 -0
  529. package/src/components/global-styles/typography-panel.js +2 -1
  530. package/src/components/global-styles/use-global-styles-output.js +9 -5
  531. package/src/components/global-styles/utils.js +7 -0
  532. package/src/components/height-control/README.md +2 -7
  533. package/src/components/height-control/index.js +4 -0
  534. package/src/components/image-size-control/index.js +5 -2
  535. package/src/components/index.native.js +2 -2
  536. package/src/components/inner-blocks/index.js +68 -29
  537. package/src/components/inner-blocks/index.native.js +19 -7
  538. package/src/components/inner-blocks/use-inner-block-template-sync.js +5 -7
  539. package/src/components/inner-blocks/use-nested-settings-update.js +6 -13
  540. package/src/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  541. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +15 -15
  542. package/src/components/inserter/block-patterns-tab/patterns-filter.js +15 -13
  543. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +15 -18
  544. package/src/components/inserter/block-patterns-tab/utils.js +11 -12
  545. package/src/components/inserter/hooks/use-block-types-state.js +9 -11
  546. package/src/components/inserter/hooks/use-patterns-state.js +2 -2
  547. package/src/components/inserter/index.js +0 -1
  548. package/src/components/inserter/library.js +2 -8
  549. package/src/components/inserter/menu.js +13 -31
  550. package/src/components/inserter/style.scss +6 -4
  551. package/src/components/inserter/tabs.js +34 -25
  552. package/src/components/inserter-draggable-blocks/index.js +2 -2
  553. package/src/components/inserter-list-item/index.js +6 -6
  554. package/src/components/inspector-controls/block-support-tools-panel.js +2 -0
  555. package/src/components/inspector-controls-tabs/index.js +39 -28
  556. package/src/components/inspector-controls-tabs/style.scss +3 -2
  557. package/src/components/letter-spacing-control/README.md +0 -5
  558. package/src/components/line-height-control/README.md +0 -5
  559. package/src/components/list-view/README.md +0 -5
  560. package/src/components/list-view/block-select-button.js +4 -0
  561. package/src/components/list-view/block.js +73 -2
  562. package/src/components/list-view/style.scss +6 -0
  563. package/src/components/media-upload-progress/constants.js +6 -0
  564. package/src/components/media-upload-progress/index.native.js +66 -14
  565. package/src/components/media-upload-progress/test/index.native.js +2 -2
  566. package/src/components/multi-selection-inspector/README.md +0 -5
  567. package/src/components/navigable-toolbar/index.js +13 -11
  568. package/src/components/plain-text/index.native.js +6 -1
  569. package/src/components/provider/index.js +1 -1
  570. package/src/components/provider/test/use-block-sync.js +20 -17
  571. package/src/components/provider/use-block-sync.js +6 -0
  572. package/src/components/rich-text/index.js +18 -6
  573. package/src/components/rich-text/native/index.native.js +16 -24
  574. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +3 -3
  575. package/src/components/rich-text/native/test/index.native.js +72 -5
  576. package/src/components/rich-text/use-input-rules.js +2 -2
  577. package/src/components/rich-text/use-mark-persistent.js +1 -2
  578. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  579. package/src/components/text-decoration-control/README.md +40 -0
  580. package/src/components/text-transform-control/README.md +0 -4
  581. package/src/components/ungroup-button/README.md +0 -5
  582. package/src/components/unit-control/README.md +0 -4
  583. package/src/components/url-input/index.js +11 -11
  584. package/src/components/use-block-commands/index.js +18 -21
  585. package/src/components/use-block-drop-zone/index.js +85 -34
  586. package/src/components/use-moving-animation/index.js +107 -103
  587. package/src/components/use-on-block-drop/index.js +7 -23
  588. package/src/components/use-on-block-drop/test/index.js +12 -26
  589. package/src/components/use-resize-canvas/README.md +0 -4
  590. package/src/components/use-settings/README.md +0 -4
  591. package/src/components/writing-flow/index.js +0 -1
  592. package/src/components/writing-flow/use-drag-selection.js +18 -4
  593. package/src/components/writing-flow/use-selection-observer.js +99 -37
  594. package/src/components/writing-flow/use-tab-nav.js +7 -7
  595. package/src/hooks/align.js +1 -5
  596. package/src/hooks/anchor.js +1 -5
  597. package/src/hooks/aria-label.js +8 -5
  598. package/src/hooks/background.js +253 -21
  599. package/src/hooks/border.js +2 -13
  600. package/src/hooks/color.js +19 -14
  601. package/src/hooks/custom-class-name.js +1 -5
  602. package/src/hooks/custom-class-name.native.js +8 -5
  603. package/src/hooks/dimensions.js +1 -7
  604. package/src/hooks/font-family.js +4 -7
  605. package/src/hooks/font-size.js +1 -6
  606. package/src/hooks/index.js +19 -3
  607. package/src/hooks/index.native.js +17 -4
  608. package/src/hooks/layout.js +5 -2
  609. package/src/hooks/style.js +1 -6
  610. package/src/hooks/test/anchor.js +4 -9
  611. package/src/hooks/test/custom-class-name.js +3 -8
  612. package/src/hooks/test/style.js +4 -14
  613. package/src/hooks/typography.js +1 -7
  614. package/src/hooks/typography.native.js +31 -33
  615. package/src/hooks/use-typography-props.js +7 -1
  616. package/src/hooks/utils.js +60 -2
  617. package/src/private-apis.js +2 -4
  618. package/src/private-apis.native.js +0 -2
  619. package/src/store/actions.js +0 -15
  620. package/src/store/private-actions.js +44 -4
  621. package/src/store/private-selectors.js +11 -0
  622. package/src/store/reducer.js +16 -5
  623. package/src/store/selectors.js +5 -13
  624. package/src/store/undo-ignore.js +4 -0
  625. package/src/store/utils.js +2 -2
  626. package/src/style.scss +1 -0
  627. package/src/utils/get-px-from-css-unit.js +8 -0
  628. package/src/utils/index.js +1 -1
  629. package/src/utils/object.js +0 -35
  630. package/src/utils/test/object.js +1 -96
  631. package/src/utils/use-can-block-toolbar-be-focused.js +48 -0
  632. package/build/components/block-list/block-list-block-context.js +0 -14
  633. package/build/components/block-list/block-list-block-context.js.map +0 -1
  634. package/build/utils/parse-css-unit-to-px.js +0 -302
  635. package/build/utils/parse-css-unit-to-px.js.map +0 -1
  636. package/build/utils/use-should-contextual-toolbar-show.js +0 -63
  637. package/build/utils/use-should-contextual-toolbar-show.js.map +0 -1
  638. package/build-module/components/block-list/block-list-block-context.js +0 -6
  639. package/build-module/components/block-list/block-list-block-context.js.map +0 -1
  640. package/build-module/utils/parse-css-unit-to-px.js +0 -294
  641. package/build-module/utils/parse-css-unit-to-px.js.map +0 -1
  642. package/build-module/utils/use-should-contextual-toolbar-show.js +0 -57
  643. package/build-module/utils/use-should-contextual-toolbar-show.js.map +0 -1
  644. package/src/utils/parse-css-unit-to-px.js +0 -329
  645. package/src/utils/test/parse-css-unit-to-px.js +0 -172
  646. package/src/utils/use-should-contextual-toolbar-show.js +0 -85
@@ -39,15 +39,16 @@ function InserterListItem( {
39
39
  color: item.icon.foreground,
40
40
  }
41
41
  : {};
42
- const blocks = useMemo( () => {
43
- return [
42
+ const blocks = useMemo(
43
+ () => [
44
44
  createBlock(
45
45
  item.name,
46
46
  item.initialAttributes,
47
47
  createBlocksFromInnerBlocksTemplate( item.innerBlocks )
48
48
  ),
49
- ];
50
- }, [ item.name, item.initialAttributes, item.initialAttributes ] );
49
+ ],
50
+ [ item.name, item.initialAttributes, item.innerBlocks ]
51
+ );
51
52
 
52
53
  const isSynced =
53
54
  ( isReusableBlock( item ) && item.syncStatus !== 'unsynced' ) ||
@@ -55,7 +56,7 @@ function InserterListItem( {
55
56
 
56
57
  return (
57
58
  <InserterDraggableBlocks
58
- isEnabled={ isDraggable && ! item.disabled }
59
+ isEnabled={ isDraggable && ! item.isDisabled }
59
60
  blocks={ blocks }
60
61
  icon={ item.icon }
61
62
  >
@@ -63,7 +64,6 @@ function InserterListItem( {
63
64
  <div
64
65
  className={ classnames(
65
66
  'block-editor-block-types-list__list-item',
66
-
67
67
  {
68
68
  'is-synced': isSynced,
69
69
  }
@@ -10,6 +10,7 @@ import { useCallback } from '@wordpress/element';
10
10
  */
11
11
  import { store as blockEditorStore } from '../../store';
12
12
  import { cleanEmptyObject } from '../../hooks/utils';
13
+ import { TOOLSPANEL_DROPDOWNMENU_PROPS } from '../global-styles/utils';
13
14
 
14
15
  export default function BlockSupportToolsPanel( { children, group, label } ) {
15
16
  const { updateBlockAttributes } = useDispatch( blockEditorStore );
@@ -71,6 +72,7 @@ export default function BlockSupportToolsPanel( { children, group, label } ) {
71
72
  shouldRenderPlaceholderItems={ true } // Required to maintain fills ordering.
72
73
  __experimentalFirstVisibleItemClass="first"
73
74
  __experimentalLastVisibleItemClass="last"
75
+ dropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }
74
76
  >
75
77
  { children }
76
78
  </ToolsPanel>
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { TabPanel } from '@wordpress/components';
4
+ import {
5
+ Button,
6
+ privateApis as componentsPrivateApis,
7
+ } from '@wordpress/components';
5
8
 
6
9
  /**
7
10
  * Internal dependencies
@@ -11,6 +14,9 @@ import SettingsTab from './settings-tab';
11
14
  import StylesTab from './styles-tab';
12
15
  import InspectorControls from '../inspector-controls';
13
16
  import useIsListViewTabDisabled from './use-is-list-view-tab-disabled';
17
+ import { unlock } from '../../lock-unlock';
18
+
19
+ const { Tabs } = unlock( componentsPrivateApis );
14
20
 
15
21
  export default function InspectorControlsTabs( {
16
22
  blockName,
@@ -26,34 +32,39 @@ export default function InspectorControlsTabs( {
26
32
  const initialTabName = ! useIsListViewTabDisabled( blockName )
27
33
  ? TAB_LIST_VIEW.name
28
34
  : undefined;
29
- return (
30
- <TabPanel
31
- className="block-editor-block-inspector__tabs"
32
- tabs={ tabs }
33
- initialTabName={ initialTabName }
34
- key={ clientId }
35
- >
36
- { ( tab ) => {
37
- if ( tab.name === TAB_SETTINGS.name ) {
38
- return (
39
- <SettingsTab showAdvancedControls={ !! blockName } />
40
- );
41
- }
42
35
 
43
- if ( tab.name === TAB_STYLES.name ) {
44
- return (
45
- <StylesTab
46
- blockName={ blockName }
47
- clientId={ clientId }
48
- hasBlockStyles={ hasBlockStyles }
36
+ return (
37
+ <div className="block-editor-block-inspector__tabs">
38
+ <Tabs initialTabId={ initialTabName } key={ clientId }>
39
+ <Tabs.TabList>
40
+ { tabs.map( ( tab ) => (
41
+ <Tabs.Tab
42
+ key={ tab.name }
43
+ tabId={ tab.name }
44
+ render={
45
+ <Button
46
+ icon={ tab.icon }
47
+ label={ tab.title }
48
+ className={ tab.className }
49
+ />
50
+ }
49
51
  />
50
- );
51
- }
52
-
53
- if ( tab.name === TAB_LIST_VIEW.name ) {
54
- return <InspectorControls.Slot group="list" />;
55
- }
56
- } }
57
- </TabPanel>
52
+ ) ) }
53
+ </Tabs.TabList>
54
+ <Tabs.TabPanel tabId={ TAB_SETTINGS.name } focusable={ false }>
55
+ <SettingsTab showAdvancedControls={ !! blockName } />
56
+ </Tabs.TabPanel>
57
+ <Tabs.TabPanel tabId={ TAB_STYLES.name } focusable={ false }>
58
+ <StylesTab
59
+ blockName={ blockName }
60
+ clientId={ clientId }
61
+ hasBlockStyles={ hasBlockStyles }
62
+ />
63
+ </Tabs.TabPanel>
64
+ <Tabs.TabPanel tabId={ TAB_LIST_VIEW.name } focusable={ false }>
65
+ <InspectorControls.Slot group="list" />
66
+ </Tabs.TabPanel>
67
+ </Tabs>
68
+ </div>
58
69
  );
59
70
  }
@@ -1,5 +1,5 @@
1
1
  .show-icon-labels {
2
- .block-editor-block-inspector__tabs .components-tab-panel__tabs {
2
+ .block-editor-block-inspector__tabs [role="tablist"] {
3
3
  .components-button.has-icon {
4
4
  // Hide the button icons when labels are set to display...
5
5
  svg {
@@ -15,13 +15,14 @@
15
15
  }
16
16
 
17
17
  .block-editor-inspector-controls-tabs__hint {
18
- align-items: top;
18
+ align-items: flex-start;
19
19
  background: $gray-100;
20
20
  border-radius: $radius-block-ui;
21
21
  color: $gray-900;
22
22
  display: flex;
23
23
  flex-direction: row;
24
24
  margin: $grid-unit-20;
25
+ font-size: $default-font-size;
25
26
  }
26
27
 
27
28
  .block-editor-inspector-controls-tabs__hint-content {
@@ -5,11 +5,6 @@ The `LetterSpacingControl` component renders a [`UnitControl`](https://github.co
5
5
  This component is used for blocks that display text, commonly inside a
6
6
  [`ToolsPanelItem`](https://github.com/WordPress/gutenberg/blob/trunk/packages/components/src/tools-panel/tools-panel-item/README.md).
7
7
 
8
- ## Table of contents
9
-
10
- 1. [Development guidelines](#development-guidelines)
11
- 2. [Related components](#related-components)
12
-
13
8
  ## Development guidelines
14
9
 
15
10
  ### Usage
@@ -6,11 +6,6 @@ The `LineHeightControl` component adds a lineHeight attribute to the core Paragr
6
6
 
7
7
  _Note:_ It is worth noting that the line height setting option is an opt-in feature. [Themes need to declare support for it](/docs/how-to-guides/themes/theme-support.md#supporting-custom-line-heights) before it'll be available.
8
8
 
9
- ## Table of contents
10
-
11
- 1. [Development guidelines](#development-guidelines)
12
- 2. [Related components](#related-components)
13
-
14
9
  ## Development guidelines
15
10
 
16
11
  ### Usage
@@ -11,11 +11,6 @@ In addition to presenting the structure of the blocks in the editor, the ListVie
11
11
  ![List view](https://make.wordpress.org/core/files/2020/08/block-navigation.png)
12
12
  ![View of a group list view](https://make.wordpress.org/core/files/2020/08/view-of-group-block-navigation.png)
13
13
 
14
- ## Table of contents
15
-
16
- 1. [Development guidelines](#development-guidelines)
17
- 2. [Related components](#related-components)
18
-
19
14
  ## Development guidelines
20
15
 
21
16
  ### Usage
@@ -38,6 +38,8 @@ function ListViewBlockSelectButton(
38
38
  className,
39
39
  block: { clientId },
40
40
  onClick,
41
+ onContextMenu,
42
+ onMouseDown,
41
43
  onToggleExpanded,
42
44
  tabIndex,
43
45
  onFocus,
@@ -237,7 +239,9 @@ function ListViewBlockSelectButton(
237
239
  className
238
240
  ) }
239
241
  onClick={ onClick }
242
+ onContextMenu={ onContextMenu }
240
243
  onKeyDown={ onKeyDownHandler }
244
+ onMouseDown={ onMouseDown }
241
245
  ref={ ref }
242
246
  tabIndex={ tabIndex }
243
247
  onFocus={ onFocus }
@@ -13,7 +13,13 @@ import {
13
13
  } from '@wordpress/components';
14
14
  import { useInstanceId } from '@wordpress/compose';
15
15
  import { moreVertical } from '@wordpress/icons';
16
- import { useState, useRef, useCallback, memo } from '@wordpress/element';
16
+ import {
17
+ useCallback,
18
+ useMemo,
19
+ useState,
20
+ useRef,
21
+ memo,
22
+ } from '@wordpress/element';
17
23
  import { useDispatch, useSelect } from '@wordpress/data';
18
24
  import { sprintf, __ } from '@wordpress/i18n';
19
25
  import { ESCAPE } from '@wordpress/keycodes';
@@ -53,9 +59,11 @@ function ListViewBlock( {
53
59
  } ) {
54
60
  const cellRef = useRef( null );
55
61
  const rowRef = useRef( null );
62
+ const settingsRef = useRef( null );
56
63
  const [ isHovered, setIsHovered ] = useState( false );
64
+ const [ settingsAnchorRect, setSettingsAnchorRect ] = useState();
57
65
 
58
- const { isLocked, canEdit } = useBlockLock( clientId );
66
+ const { isLocked, canEdit, canMove } = useBlockLock( clientId );
59
67
 
60
68
  const isFirstSelectedBlock =
61
69
  isSelected && selectedClientIds[ 0 ] === clientId;
@@ -82,6 +90,11 @@ function ListViewBlock( {
82
90
  },
83
91
  [ clientId ]
84
92
  );
93
+ const allowRightClickOverrides = useSelect(
94
+ ( select ) =>
95
+ select( blockEditorStore ).getSettings().allowRightClickOverrides,
96
+ []
97
+ );
85
98
 
86
99
  const showBlockActions =
87
100
  // When a block hides its toolbar it also hides the block settings menu,
@@ -190,6 +203,56 @@ function ListViewBlock( {
190
203
  [ clientId, expand, collapse, isExpanded ]
191
204
  );
192
205
 
206
+ // Allow right-clicking an item in the List View to open up the block settings dropdown.
207
+ const onContextMenu = useCallback(
208
+ ( event ) => {
209
+ if ( showBlockActions && allowRightClickOverrides ) {
210
+ settingsRef.current?.click();
211
+ // Ensure the position of the settings dropdown is at the cursor.
212
+ setSettingsAnchorRect(
213
+ new window.DOMRect( event.clientX, event.clientY, 0, 0 )
214
+ );
215
+ event.preventDefault();
216
+ }
217
+ },
218
+ [ allowRightClickOverrides, settingsRef, showBlockActions ]
219
+ );
220
+
221
+ const onMouseDown = useCallback(
222
+ ( event ) => {
223
+ // Prevent right-click from focusing the block,
224
+ // because focus will be handled when opening the block settings dropdown.
225
+ if ( allowRightClickOverrides && event.button === 2 ) {
226
+ event.preventDefault();
227
+ }
228
+ },
229
+ [ allowRightClickOverrides ]
230
+ );
231
+
232
+ const settingsPopoverAnchor = useMemo( () => {
233
+ const { ownerDocument } = rowRef?.current || {};
234
+
235
+ // If no custom position is set, the settings dropdown will be anchored to the
236
+ // DropdownMenu toggle button.
237
+ if ( ! settingsAnchorRect || ! ownerDocument ) {
238
+ return undefined;
239
+ }
240
+
241
+ // Position the settings dropdown at the cursor when right-clicking a block.
242
+ return {
243
+ ownerDocument,
244
+ getBoundingClientRect() {
245
+ return settingsAnchorRect;
246
+ },
247
+ };
248
+ }, [ settingsAnchorRect ] );
249
+
250
+ const clearSettingsAnchorRect = useCallback( () => {
251
+ // Clear the custom position for the settings dropdown so that it is restored back
252
+ // to being anchored to the DropdownMenu toggle button.
253
+ setSettingsAnchorRect( undefined );
254
+ }, [ setSettingsAnchorRect ] );
255
+
193
256
  let colSpan;
194
257
  if ( hasRenderedMovers ) {
195
258
  colSpan = 2;
@@ -206,6 +269,7 @@ function ListViewBlock( {
206
269
  'is-dragging': isDragged,
207
270
  'has-single-cell': ! showBlockActions,
208
271
  'is-synced': blockInformation?.isSynced,
272
+ 'is-draggable': canMove,
209
273
  } );
210
274
 
211
275
  // Only include all selected blocks if the currently clicked on block
@@ -257,6 +321,8 @@ function ListViewBlock( {
257
321
  <ListViewBlockContents
258
322
  block={ block }
259
323
  onClick={ selectEditorBlock }
324
+ onContextMenu={ onContextMenu }
325
+ onMouseDown={ onMouseDown }
260
326
  onToggleExpanded={ toggleExpanded }
261
327
  isSelected={ isSelected }
262
328
  position={ position }
@@ -315,6 +381,7 @@ function ListViewBlock( {
315
381
  <TreeGridCell
316
382
  className={ listViewBlockSettingsClassName }
317
383
  aria-selected={ !! isSelected }
384
+ ref={ settingsRef }
318
385
  >
319
386
  { ( { ref, tabIndex, onFocus } ) => (
320
387
  <BlockSettingsMenu
@@ -322,10 +389,14 @@ function ListViewBlock( {
322
389
  block={ block }
323
390
  icon={ moreVertical }
324
391
  label={ settingsAriaLabel }
392
+ popoverProps={ {
393
+ anchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.
394
+ } }
325
395
  toggleProps={ {
326
396
  ref,
327
397
  className: 'block-editor-list-view-block__menu',
328
398
  tabIndex,
399
+ onClick: clearSettingsAnchorRect,
329
400
  onFocus,
330
401
  } }
331
402
  disableOpenOnArrowDown
@@ -15,6 +15,11 @@
15
15
  // Use position relative for row animation.
16
16
  position: relative;
17
17
 
18
+ &.is-draggable,
19
+ &.is-draggable .block-editor-list-view-block-contents {
20
+ cursor: grab;
21
+ }
22
+
18
23
  .block-editor-list-view-block-select-button {
19
24
  // When a row is expanded, retain the dark color.
20
25
  &[aria-expanded="true"] {
@@ -378,6 +383,7 @@
378
383
  height: $icon-size;
379
384
  margin-left: $grid-unit-05;
380
385
  width: $icon-size;
386
+ cursor: pointer;
381
387
  }
382
388
 
383
389
  // First level of indentation is aria-level 2, max indent is 8.
@@ -0,0 +1,6 @@
1
+ export const MEDIA_UPLOAD_STATE_IDLE = 0;
2
+ export const MEDIA_UPLOAD_STATE_UPLOADING = 1;
3
+ export const MEDIA_UPLOAD_STATE_SUCCEEDED = 2;
4
+ export const MEDIA_UPLOAD_STATE_FAILED = 3;
5
+ export const MEDIA_UPLOAD_STATE_RESET = 4;
6
+ export const MEDIA_UPLOAD_STATE_PAUSED = 11;
@@ -15,23 +15,28 @@ import { subscribeMediaUpload } from '@wordpress/react-native-bridge';
15
15
  * Internal dependencies
16
16
  */
17
17
  import styles from './styles.scss';
18
-
19
- export const MEDIA_UPLOAD_STATE_UPLOADING = 1;
20
- export const MEDIA_UPLOAD_STATE_SUCCEEDED = 2;
21
- export const MEDIA_UPLOAD_STATE_FAILED = 3;
22
- export const MEDIA_UPLOAD_STATE_RESET = 4;
18
+ import {
19
+ MEDIA_UPLOAD_STATE_IDLE,
20
+ MEDIA_UPLOAD_STATE_UPLOADING,
21
+ MEDIA_UPLOAD_STATE_SUCCEEDED,
22
+ MEDIA_UPLOAD_STATE_FAILED,
23
+ MEDIA_UPLOAD_STATE_RESET,
24
+ MEDIA_UPLOAD_STATE_PAUSED,
25
+ } from './constants';
23
26
 
24
27
  export class MediaUploadProgress extends Component {
25
28
  constructor( props ) {
26
29
  super( props );
27
30
 
28
31
  this.state = {
32
+ uploadState: MEDIA_UPLOAD_STATE_IDLE,
29
33
  progress: 0,
30
34
  isUploadInProgress: false,
31
35
  isUploadFailed: false,
32
36
  };
33
37
 
34
38
  this.mediaUpload = this.mediaUpload.bind( this );
39
+ this.getRetryMessage = this.getRetryMessage.bind( this );
35
40
  }
36
41
 
37
42
  componentDidMount() {
@@ -45,7 +50,11 @@ export class MediaUploadProgress extends Component {
45
50
  mediaUpload( payload ) {
46
51
  const { mediaId } = this.props;
47
52
 
48
- if ( payload.mediaId !== mediaId ) {
53
+ if (
54
+ payload.mediaId !== mediaId ||
55
+ ( payload.state === this.state.uploadState &&
56
+ payload.progress === this.state.progress )
57
+ ) {
49
58
  return;
50
59
  }
51
60
 
@@ -56,6 +65,9 @@ export class MediaUploadProgress extends Component {
56
65
  case MEDIA_UPLOAD_STATE_SUCCEEDED:
57
66
  this.finishMediaUploadWithSuccess( payload );
58
67
  break;
68
+ case MEDIA_UPLOAD_STATE_PAUSED:
69
+ this.finishMediaUploadWithPause( payload );
70
+ break;
59
71
  case MEDIA_UPLOAD_STATE_FAILED:
60
72
  this.finishMediaUploadWithFailure( payload );
61
73
  break;
@@ -68,6 +80,7 @@ export class MediaUploadProgress extends Component {
68
80
  updateMediaProgress( payload ) {
69
81
  this.setState( {
70
82
  progress: payload.progress,
83
+ uploadState: payload.state,
71
84
  isUploadInProgress: true,
72
85
  isUploadFailed: false,
73
86
  } );
@@ -77,21 +90,48 @@ export class MediaUploadProgress extends Component {
77
90
  }
78
91
 
79
92
  finishMediaUploadWithSuccess( payload ) {
80
- this.setState( { isUploadInProgress: false } );
93
+ this.setState( {
94
+ uploadState: payload.state,
95
+ isUploadInProgress: false,
96
+ } );
81
97
  if ( this.props.onFinishMediaUploadWithSuccess ) {
82
98
  this.props.onFinishMediaUploadWithSuccess( payload );
83
99
  }
84
100
  }
85
101
 
102
+ finishMediaUploadWithPause( payload ) {
103
+ if ( ! this.props.enablePausedUploads ) {
104
+ this.finishMediaUploadWithFailure( payload );
105
+ return;
106
+ }
107
+
108
+ this.setState( {
109
+ uploadState: payload.state,
110
+ isUploadInProgress: true,
111
+ isUploadFailed: false,
112
+ } );
113
+ if ( this.props.onFinishMediaUploadWithFailure ) {
114
+ this.props.onFinishMediaUploadWithFailure( payload );
115
+ }
116
+ }
117
+
86
118
  finishMediaUploadWithFailure( payload ) {
87
- this.setState( { isUploadInProgress: false, isUploadFailed: true } );
119
+ this.setState( {
120
+ uploadState: payload.state,
121
+ isUploadInProgress: false,
122
+ isUploadFailed: true,
123
+ } );
88
124
  if ( this.props.onFinishMediaUploadWithFailure ) {
89
125
  this.props.onFinishMediaUploadWithFailure( payload );
90
126
  }
91
127
  }
92
128
 
93
129
  mediaUploadStateReset( payload ) {
94
- this.setState( { isUploadInProgress: false, isUploadFailed: false } );
130
+ this.setState( {
131
+ uploadState: payload.state,
132
+ isUploadInProgress: false,
133
+ isUploadFailed: false,
134
+ } );
95
135
  if ( this.props.onMediaUploadStateReset ) {
96
136
  this.props.onMediaUploadStateReset( payload );
97
137
  }
@@ -115,15 +155,24 @@ export class MediaUploadProgress extends Component {
115
155
  }
116
156
  }
117
157
 
158
+ getRetryMessage() {
159
+ if (
160
+ this.state.uploadState === MEDIA_UPLOAD_STATE_PAUSED &&
161
+ this.props.enablePausedUploads
162
+ ) {
163
+ return __( 'Waiting for connection' );
164
+ }
165
+
166
+ // eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace
167
+ return __( 'Failed to insert media.\nTap for more info.' );
168
+ }
169
+
118
170
  render() {
119
171
  const { renderContent = () => null } = this.props;
120
- const { isUploadInProgress, isUploadFailed } = this.state;
172
+ const { isUploadInProgress, isUploadFailed, uploadState } = this.state;
121
173
  const showSpinner = this.state.isUploadInProgress;
122
174
  const progress = this.state.progress * 100;
123
- // eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace
124
- const retryMessage = __(
125
- 'Failed to insert media.\nTap for more info.'
126
- );
175
+ const retryMessage = this.getRetryMessage();
127
176
 
128
177
  const progressBarStyle = [
129
178
  styles.progressBar,
@@ -149,6 +198,9 @@ export class MediaUploadProgress extends Component {
149
198
  ) }
150
199
  </View>
151
200
  { renderContent( {
201
+ isUploadPaused:
202
+ uploadState === MEDIA_UPLOAD_STATE_PAUSED &&
203
+ this.props.enablePausedUploads,
152
204
  isUploadInProgress,
153
205
  isUploadFailed,
154
206
  retryMessage,
@@ -14,13 +14,13 @@ import {
14
14
  /**
15
15
  * Internal dependencies
16
16
  */
17
+ import { MediaUploadProgress } from '../';
17
18
  import {
18
- MediaUploadProgress,
19
19
  MEDIA_UPLOAD_STATE_UPLOADING,
20
20
  MEDIA_UPLOAD_STATE_SUCCEEDED,
21
21
  MEDIA_UPLOAD_STATE_FAILED,
22
22
  MEDIA_UPLOAD_STATE_RESET,
23
- } from '../';
23
+ } from '../constants';
24
24
 
25
25
  let uploadCallBack;
26
26
  subscribeMediaUpload.mockImplementation( ( callback ) => {
@@ -6,11 +6,6 @@ This card contains information on the number of blocks selected, and in the case
6
6
 
7
7
  ![Multi selection inspector card](https://make.wordpress.org/core/files/2020/09/multi-selection-inspector-card.png)
8
8
 
9
- ## Table of contents
10
-
11
- 1. [Development guidelines](#development-guidelines)
12
- 2. [Related components](#related-components)
13
-
14
9
  ## Development guidelines
15
10
 
16
11
  ### Usage
@@ -19,14 +19,19 @@ import { ESCAPE } from '@wordpress/keycodes';
19
19
  * Internal dependencies
20
20
  */
21
21
  import { store as blockEditorStore } from '../../store';
22
+ import { unlock } from '../../lock-unlock';
22
23
 
23
24
  function hasOnlyToolbarItem( elements ) {
24
25
  const dataProp = 'toolbarItem';
25
26
  return ! elements.some( ( element ) => ! ( dataProp in element.dataset ) );
26
27
  }
27
28
 
28
- function getAllToolbarItemsIn( container ) {
29
- return Array.from( container.querySelectorAll( '[data-toolbar-item]' ) );
29
+ function getAllFocusableToolbarItemsIn( container ) {
30
+ return Array.from(
31
+ container.querySelectorAll(
32
+ '[data-toolbar-item]:not([disabled]):not([aria-disabled="true"])'
33
+ )
34
+ );
30
35
  }
31
36
 
32
37
  function hasFocusWithin( container ) {
@@ -141,7 +146,8 @@ function useToolbarFocus( {
141
146
  let raf = 0;
142
147
  if ( ! initialFocusOnMount ) {
143
148
  raf = window.requestAnimationFrame( () => {
144
- const items = getAllToolbarItemsIn( navigableToolbarRef );
149
+ const items =
150
+ getAllFocusableToolbarItemsIn( navigableToolbarRef );
145
151
  const index = initialIndex || 0;
146
152
  if ( items[ index ] && hasFocusWithin( navigableToolbarRef ) ) {
147
153
  items[ index ].focus( {
@@ -158,18 +164,13 @@ function useToolbarFocus( {
158
164
  if ( ! onIndexChange || ! navigableToolbarRef ) return;
159
165
  // When the toolbar element is unmounted and onIndexChange is passed, we
160
166
  // pass the focused toolbar item index so it can be hydrated later.
161
- const items = getAllToolbarItemsIn( navigableToolbarRef );
167
+ const items = getAllFocusableToolbarItemsIn( navigableToolbarRef );
162
168
  const index = items.findIndex( ( item ) => item.tabIndex === 0 );
163
169
  onIndexChange( index );
164
170
  };
165
171
  }, [ initialIndex, initialFocusOnMount, onIndexChange, toolbarRef ] );
166
172
 
167
- const { lastFocus } = useSelect( ( select ) => {
168
- const { getLastFocus } = select( blockEditorStore );
169
- return {
170
- lastFocus: getLastFocus(),
171
- };
172
- }, [] );
173
+ const { getLastFocus } = unlock( useSelect( blockEditorStore ) );
173
174
  /**
174
175
  * Handles returning focus to the block editor canvas when pressing escape.
175
176
  */
@@ -178,6 +179,7 @@ function useToolbarFocus( {
178
179
 
179
180
  if ( focusEditorOnEscape ) {
180
181
  const handleKeyDown = ( event ) => {
182
+ const lastFocus = getLastFocus();
181
183
  if ( event.keyCode === ESCAPE && lastFocus?.current ) {
182
184
  // Focus the last focused element when pressing escape.
183
185
  event.preventDefault();
@@ -192,7 +194,7 @@ function useToolbarFocus( {
192
194
  );
193
195
  };
194
196
  }
195
- }, [ focusEditorOnEscape, lastFocus, toolbarRef ] );
197
+ }, [ focusEditorOnEscape, getLastFocus, toolbarRef ] );
196
198
  }
197
199
 
198
200
  export default function NavigableToolbar( {
@@ -7,7 +7,12 @@ import { TextInput, Platform, Dimensions } from 'react-native';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { Component } from '@wordpress/element';
10
- import { RichText, getPxFromCssUnit } from '@wordpress/block-editor';
10
+ import { getPxFromCssUnit } from '@wordpress/components';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import RichText from '../rich-text';
11
16
 
12
17
  /**
13
18
  * Internal dependencies
@@ -45,7 +45,7 @@ export const ExperimentalBlockEditorProvider = withRegistryProvider(
45
45
  useBlockSync( props );
46
46
 
47
47
  return (
48
- <SlotFillProvider>
48
+ <SlotFillProvider passthrough>
49
49
  <KeyboardShortcuts.Register />
50
50
  <BlockRefsProvider>{ children }</BlockRefsProvider>
51
51
  </SlotFillProvider>