@wordpress/block-editor 12.15.0 → 12.16.1-next.79a6196f.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 (927) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +12 -10
  4. package/build/components/block-canvas/index.js +21 -7
  5. package/build/components/block-canvas/index.js.map +1 -1
  6. package/build/components/block-card/index.js +2 -2
  7. package/build/components/block-card/index.js.map +1 -1
  8. package/build/components/block-controls/hook.js +3 -23
  9. package/build/components/block-controls/hook.js.map +1 -1
  10. package/build/components/block-draggable/draggable-chip.js +6 -1
  11. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  12. package/build/components/block-draggable/index.js +76 -6
  13. package/build/components/block-draggable/index.js.map +1 -1
  14. package/build/components/block-draggable/index.native.js +0 -6
  15. package/build/components/block-draggable/index.native.js.map +1 -1
  16. package/build/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  17. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  18. package/build/components/block-edit/context.js +5 -1
  19. package/build/components/block-edit/context.js.map +1 -1
  20. package/build/components/block-edit/index.js +18 -9
  21. package/build/components/block-edit/index.js.map +1 -1
  22. package/build/components/block-editing-mode/index.js +2 -3
  23. package/build/components/block-editing-mode/index.js.map +1 -1
  24. package/build/components/block-info-slot-fill/index.js +3 -4
  25. package/build/components/block-info-slot-fill/index.js.map +1 -1
  26. package/build/components/block-inspector/index.js +1 -1
  27. package/build/components/block-inspector/index.js.map +1 -1
  28. package/build/components/block-list/block-list-item-cell.native.js +1 -0
  29. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  30. package/build/components/block-list/block.js +257 -95
  31. package/build/components/block-list/block.js.map +1 -1
  32. package/build/components/block-list/block.native.js +58 -23
  33. package/build/components/block-list/block.native.js.map +1 -1
  34. package/build/components/block-list/index.native.js +3 -5
  35. package/build/components/block-list/index.native.js.map +1 -1
  36. package/build/components/block-list/private-block-context.js +14 -0
  37. package/build/components/block-list/private-block-context.js.map +1 -0
  38. package/build/components/block-list/use-block-props/index.js +49 -69
  39. package/build/components/block-list/use-block-props/index.js.map +1 -1
  40. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  41. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  42. package/build/components/block-list/use-block-props/use-is-hovered.js +4 -14
  43. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  44. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  45. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  46. package/build/components/block-list/use-in-between-inserter.js +3 -2
  47. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  48. package/build/components/block-list/use-scroll-upon-insertion.native.js +41 -0
  49. package/build/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  50. package/build/components/block-lock/toolbar.js +21 -27
  51. package/build/components/block-lock/toolbar.js.map +1 -1
  52. package/build/components/block-mover/index.js +2 -1
  53. package/build/components/block-mover/index.js.map +1 -1
  54. package/build/components/block-patterns-list/index.js +5 -5
  55. package/build/components/block-patterns-list/index.js.map +1 -1
  56. package/build/components/block-removal-warning-modal/index.js +2 -9
  57. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  58. package/build/components/block-rename/modal.js +3 -0
  59. package/build/components/block-rename/modal.js.map +1 -1
  60. package/build/components/block-settings/container.native.js +6 -4
  61. package/build/components/block-settings/container.native.js.map +1 -1
  62. package/build/components/block-styles/index.js +1 -1
  63. package/build/components/block-styles/index.js.map +1 -1
  64. package/build/components/block-styles/index.native.js +3 -2
  65. package/build/components/block-styles/index.native.js.map +1 -1
  66. package/build/components/block-switcher/index.js +4 -4
  67. package/build/components/block-switcher/index.js.map +1 -1
  68. package/build/components/block-toolbar/index.js +90 -29
  69. package/build/components/block-toolbar/index.js.map +1 -1
  70. package/build/components/block-tools/block-toolbar-breadcrumb.js +49 -0
  71. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  72. package/build/components/block-tools/block-toolbar-popover.js +84 -0
  73. package/build/components/block-tools/block-toolbar-popover.js.map +1 -0
  74. package/build/components/block-tools/index.js +27 -24
  75. package/build/components/block-tools/index.js.map +1 -1
  76. package/build/components/block-types-list/index.native.js +4 -3
  77. package/build/components/block-types-list/index.native.js.map +1 -1
  78. package/build/components/block-variation-picker/index.native.js +2 -1
  79. package/build/components/block-variation-picker/index.native.js.map +1 -1
  80. package/build/components/block-variation-transforms/index.js +29 -2
  81. package/build/components/block-variation-transforms/index.js.map +1 -1
  82. package/build/components/border-radius-control/linked-button.js +1 -1
  83. package/build/components/border-radius-control/linked-button.js.map +1 -1
  84. package/build/components/colors/utils.js +10 -2
  85. package/build/components/colors/utils.js.map +1 -1
  86. package/build/components/colors/with-colors.js +6 -2
  87. package/build/components/colors/with-colors.js.map +1 -1
  88. package/build/components/colors-gradients/control.js +28 -17
  89. package/build/components/colors-gradients/control.js.map +1 -1
  90. package/build/components/duotone-control/index.js +1 -4
  91. package/build/components/duotone-control/index.js.map +1 -1
  92. package/build/components/font-sizes/utils.js +10 -2
  93. package/build/components/font-sizes/utils.js.map +1 -1
  94. package/build/components/global-styles/border-panel.js +2 -1
  95. package/build/components/global-styles/border-panel.js.map +1 -1
  96. package/build/components/global-styles/color-panel.js +24 -21
  97. package/build/components/global-styles/color-panel.js.map +1 -1
  98. package/build/components/global-styles/dimensions-panel.js +4 -3
  99. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  100. package/build/components/global-styles/effects-panel.js +2 -1
  101. package/build/components/global-styles/effects-panel.js.map +1 -1
  102. package/build/components/global-styles/filters-panel.js +6 -3
  103. package/build/components/global-styles/filters-panel.js.map +1 -1
  104. package/build/components/global-styles/get-global-styles-changes.js +192 -0
  105. package/build/components/global-styles/get-global-styles-changes.js.map +1 -0
  106. package/build/components/global-styles/hooks.js +3 -2
  107. package/build/components/global-styles/hooks.js.map +1 -1
  108. package/build/components/global-styles/image-settings-panel.js +7 -1
  109. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  110. package/build/components/global-styles/index.js +7 -0
  111. package/build/components/global-styles/index.js.map +1 -1
  112. package/build/components/global-styles/typography-panel.js +43 -36
  113. package/build/components/global-styles/typography-panel.js.map +1 -1
  114. package/build/components/global-styles/use-global-styles-output.js +22 -8
  115. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  116. package/build/components/global-styles/utils.js +8 -1
  117. package/build/components/global-styles/utils.js.map +1 -1
  118. package/build/components/height-control/index.js +6 -2
  119. package/build/components/height-control/index.js.map +1 -1
  120. package/build/components/image-link-destinations/index.native.js +118 -0
  121. package/build/components/image-link-destinations/index.native.js.map +1 -0
  122. package/build/components/image-size-control/index.js +2 -2
  123. package/build/components/image-size-control/index.js.map +1 -1
  124. package/build/components/index.native.js +14 -5
  125. package/build/components/index.native.js.map +1 -1
  126. package/build/components/inner-blocks/index.js +61 -22
  127. package/build/components/inner-blocks/index.js.map +1 -1
  128. package/build/components/inner-blocks/index.native.js +18 -4
  129. package/build/components/inner-blocks/index.native.js.map +1 -1
  130. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  131. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  132. package/build/components/inner-blocks/use-nested-settings-update.js +5 -9
  133. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  134. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  135. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  136. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -9
  137. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  138. package/build/components/inserter/block-patterns-tab/patterns-filter.js +10 -10
  139. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  140. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +9 -9
  141. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  142. package/build/components/inserter/block-patterns-tab/utils.js +10 -14
  143. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  144. package/build/components/inserter/hooks/use-block-types-state.js +4 -14
  145. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  146. package/build/components/inserter/hooks/use-patterns-state.js +1 -1
  147. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  148. package/build/components/inserter/index.js +1 -2
  149. package/build/components/inserter/index.js.map +1 -1
  150. package/build/components/inserter/library.js +3 -7
  151. package/build/components/inserter/library.js.map +1 -1
  152. package/build/components/inserter/media-tab/media-panel.js +2 -2
  153. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  154. package/build/components/inserter/menu.js +26 -33
  155. package/build/components/inserter/menu.js.map +1 -1
  156. package/build/components/inserter/preview-panel.js +2 -2
  157. package/build/components/inserter/preview-panel.js.map +1 -1
  158. package/build/components/inserter/tabs.js +21 -21
  159. package/build/components/inserter/tabs.js.map +1 -1
  160. package/build/components/inserter-button/index.native.js +98 -0
  161. package/build/components/inserter-button/index.native.js.map +1 -0
  162. package/build/components/inserter-button/sparkles.js +23 -0
  163. package/build/components/inserter-button/sparkles.js.map +1 -0
  164. package/build/components/inserter-draggable-blocks/index.js +8 -4
  165. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  166. package/build/components/inserter-list-item/index.js +2 -4
  167. package/build/components/inserter-list-item/index.js.map +1 -1
  168. package/build/components/inspector-controls/block-support-tools-panel.js +3 -1
  169. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  170. package/build/components/inspector-controls/fill.js +3 -3
  171. package/build/components/inspector-controls/fill.js.map +1 -1
  172. package/build/components/inspector-controls/fill.native.js +3 -3
  173. package/build/components/inspector-controls/fill.native.js.map +1 -1
  174. package/build/components/inspector-controls-tabs/index.js +34 -23
  175. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  176. package/build/components/list-view/block-select-button.js +4 -0
  177. package/build/components/list-view/block-select-button.js.map +1 -1
  178. package/build/components/list-view/block.js +57 -3
  179. package/build/components/list-view/block.js.map +1 -1
  180. package/build/components/media-upload-progress/constants.js +19 -0
  181. package/build/components/media-upload-progress/constants.js.map +1 -0
  182. package/build/components/media-upload-progress/index.native.js +42 -17
  183. package/build/components/media-upload-progress/index.native.js.map +1 -1
  184. package/build/components/navigable-toolbar/index.js +11 -16
  185. package/build/components/navigable-toolbar/index.js.map +1 -1
  186. package/build/components/plain-text/index.native.js +8 -3
  187. package/build/components/plain-text/index.native.js.map +1 -1
  188. package/build/components/preview-options/index.js +6 -62
  189. package/build/components/preview-options/index.js.map +1 -1
  190. package/build/components/provider/index.js +3 -1
  191. package/build/components/provider/index.js.map +1 -1
  192. package/build/components/provider/use-block-sync.js +7 -1
  193. package/build/components/provider/use-block-sync.js.map +1 -1
  194. package/build/components/rich-text/content.js +26 -23
  195. package/build/components/rich-text/content.js.map +1 -1
  196. package/build/components/rich-text/get-rich-text-values.js +2 -1
  197. package/build/components/rich-text/get-rich-text-values.js.map +1 -1
  198. package/build/components/rich-text/index.js +19 -37
  199. package/build/components/rich-text/index.js.map +1 -1
  200. package/build/components/rich-text/index.native.js +9 -16
  201. package/build/components/rich-text/index.native.js.map +1 -1
  202. package/build/components/rich-text/native/get-format-colors.native.js +22 -24
  203. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  204. package/build/components/rich-text/native/index.native.js +22 -57
  205. package/build/components/rich-text/native/index.native.js.map +1 -1
  206. package/build/components/rich-text/use-input-rules.js +7 -3
  207. package/build/components/rich-text/use-input-rules.js.map +1 -1
  208. package/build/components/rich-text/use-mark-persistent.js +1 -1
  209. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  210. package/build/components/rich-text/with-deprecations.js +50 -0
  211. package/build/components/rich-text/with-deprecations.js.map +1 -0
  212. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  213. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  214. package/build/components/url-input/index.js +9 -6
  215. package/build/components/url-input/index.js.map +1 -1
  216. package/build/components/use-block-commands/index.js +14 -18
  217. package/build/components/use-block-commands/index.js.map +1 -1
  218. package/build/components/use-block-drop-zone/index.js +108 -17
  219. package/build/components/use-block-drop-zone/index.js.map +1 -1
  220. package/build/components/use-moving-animation/index.js +100 -92
  221. package/build/components/use-moving-animation/index.js.map +1 -1
  222. package/build/components/use-on-block-drop/index.js +9 -12
  223. package/build/components/use-on-block-drop/index.js.map +1 -1
  224. package/build/components/use-resize-canvas/index.js +4 -1
  225. package/build/components/use-resize-canvas/index.js.map +1 -1
  226. package/build/components/use-settings/index.js +14 -0
  227. package/build/components/use-settings/index.js.map +1 -1
  228. package/build/components/writing-flow/index.js +0 -1
  229. package/build/components/writing-flow/index.js.map +1 -1
  230. package/build/components/writing-flow/use-drag-selection.js +15 -4
  231. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  232. package/build/components/writing-flow/use-selection-observer.js +73 -27
  233. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  234. package/build/components/writing-flow/use-tab-nav.js +7 -4
  235. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  236. package/build/hooks/align.js +21 -69
  237. package/build/hooks/align.js.map +1 -1
  238. package/build/hooks/align.native.js +11 -1
  239. package/build/hooks/align.native.js.map +1 -1
  240. package/build/hooks/anchor.js +14 -30
  241. package/build/hooks/anchor.js.map +1 -1
  242. package/build/hooks/aria-label.js +9 -1
  243. package/build/hooks/aria-label.js.map +1 -1
  244. package/build/hooks/background.js +198 -36
  245. package/build/hooks/background.js.map +1 -1
  246. package/build/hooks/block-hooks.js +24 -32
  247. package/build/hooks/block-hooks.js.map +1 -1
  248. package/build/hooks/block-renaming.js +18 -22
  249. package/build/hooks/block-renaming.js.map +1 -1
  250. package/build/hooks/border.js +53 -80
  251. package/build/hooks/border.js.map +1 -1
  252. package/build/hooks/color.js +79 -90
  253. package/build/hooks/color.js.map +1 -1
  254. package/build/hooks/content-lock-ui.js +29 -29
  255. package/build/hooks/content-lock-ui.js.map +1 -1
  256. package/build/hooks/custom-class-name.js +13 -30
  257. package/build/hooks/custom-class-name.js.map +1 -1
  258. package/build/hooks/custom-class-name.native.js +9 -1
  259. package/build/hooks/custom-class-name.native.js.map +1 -1
  260. package/build/hooks/dimensions.js +13 -14
  261. package/build/hooks/dimensions.js.map +1 -1
  262. package/build/hooks/duotone.js +31 -61
  263. package/build/hooks/duotone.js.map +1 -1
  264. package/build/hooks/font-family.js +23 -28
  265. package/build/hooks/font-family.js.map +1 -1
  266. package/build/hooks/font-size.js +52 -120
  267. package/build/hooks/font-size.js.map +1 -1
  268. package/build/hooks/index.js +27 -16
  269. package/build/hooks/index.js.map +1 -1
  270. package/build/hooks/index.native.js +15 -6
  271. package/build/hooks/index.native.js.map +1 -1
  272. package/build/hooks/layout-child.js +68 -0
  273. package/build/hooks/layout-child.js.map +1 -0
  274. package/build/hooks/layout.js +25 -104
  275. package/build/hooks/layout.js.map +1 -1
  276. package/build/hooks/padding.js +2 -2
  277. package/build/hooks/padding.js.map +1 -1
  278. package/build/hooks/position.js +40 -62
  279. package/build/hooks/position.js.map +1 -1
  280. package/build/hooks/style.js +52 -89
  281. package/build/hooks/style.js.map +1 -1
  282. package/build/hooks/typography.js +25 -10
  283. package/build/hooks/typography.js.map +1 -1
  284. package/build/hooks/typography.native.js +43 -18
  285. package/build/hooks/typography.native.js.map +1 -1
  286. package/build/hooks/use-typography-props.js +10 -2
  287. package/build/hooks/use-typography-props.js.map +1 -1
  288. package/build/hooks/utils.js +200 -10
  289. package/build/hooks/utils.js.map +1 -1
  290. package/build/private-apis.js +2 -6
  291. package/build/private-apis.js.map +1 -1
  292. package/build/private-apis.native.js +0 -2
  293. package/build/private-apis.native.js.map +1 -1
  294. package/build/store/actions.js +0 -16
  295. package/build/store/actions.js.map +1 -1
  296. package/build/store/private-actions.js +54 -0
  297. package/build/store/private-actions.js.map +1 -1
  298. package/build/store/private-selectors.js +46 -0
  299. package/build/store/private-selectors.js.map +1 -1
  300. package/build/store/reducer.js +18 -2
  301. package/build/store/reducer.js.map +1 -1
  302. package/build/store/selectors.js +11 -73
  303. package/build/store/selectors.js.map +1 -1
  304. package/build/store/undo-ignore.js +12 -0
  305. package/build/store/undo-ignore.js.map +1 -0
  306. package/build/store/utils.js +66 -0
  307. package/build/store/utils.js.map +1 -0
  308. package/build/utils/get-px-from-css-unit.js +16 -0
  309. package/build/utils/get-px-from-css-unit.js.map +1 -0
  310. package/build/utils/index.js +2 -2
  311. package/build/utils/index.js.map +1 -1
  312. package/build/utils/object.js +38 -99
  313. package/build/utils/object.js.map +1 -1
  314. package/build/utils/selection.js +9 -1
  315. package/build/utils/selection.js.map +1 -1
  316. package/build/utils/use-can-block-toolbar-be-focused.js +46 -0
  317. package/build/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  318. package/build-module/components/block-canvas/index.js +22 -8
  319. package/build-module/components/block-canvas/index.js.map +1 -1
  320. package/build-module/components/block-card/index.js +2 -2
  321. package/build-module/components/block-card/index.js.map +1 -1
  322. package/build-module/components/block-controls/hook.js +4 -24
  323. package/build-module/components/block-controls/hook.js.map +1 -1
  324. package/build-module/components/block-draggable/draggable-chip.js +6 -1
  325. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  326. package/build-module/components/block-draggable/index.js +76 -6
  327. package/build-module/components/block-draggable/index.js.map +1 -1
  328. package/build-module/components/block-draggable/index.native.js +1 -7
  329. package/build-module/components/block-draggable/index.native.js.map +1 -1
  330. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  331. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  332. package/build-module/components/block-edit/context.js +2 -0
  333. package/build-module/components/block-edit/context.js.map +1 -1
  334. package/build-module/components/block-edit/index.js +19 -10
  335. package/build-module/components/block-edit/index.js.map +1 -1
  336. package/build-module/components/block-editing-mode/index.js +3 -4
  337. package/build-module/components/block-editing-mode/index.js.map +1 -1
  338. package/build-module/components/block-info-slot-fill/index.js +3 -3
  339. package/build-module/components/block-info-slot-fill/index.js.map +1 -1
  340. package/build-module/components/block-inspector/index.js +1 -1
  341. package/build-module/components/block-inspector/index.js.map +1 -1
  342. package/build-module/components/block-list/block-list-item-cell.native.js +1 -0
  343. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  344. package/build-module/components/block-list/block.js +261 -99
  345. package/build-module/components/block-list/block.js.map +1 -1
  346. package/build-module/components/block-list/block.native.js +60 -25
  347. package/build-module/components/block-list/block.native.js.map +1 -1
  348. package/build-module/components/block-list/index.native.js +3 -5
  349. package/build-module/components/block-list/index.native.js.map +1 -1
  350. package/build-module/components/block-list/private-block-context.js +6 -0
  351. package/build-module/components/block-list/private-block-context.js.map +1 -0
  352. package/build-module/components/block-list/use-block-props/index.js +50 -70
  353. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  354. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  355. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  356. package/build-module/components/block-list/use-block-props/use-is-hovered.js +4 -14
  357. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  358. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  359. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  360. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  361. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  362. package/build-module/components/block-list/use-scroll-upon-insertion.native.js +33 -0
  363. package/build-module/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  364. package/build-module/components/block-lock/toolbar.js +22 -28
  365. package/build-module/components/block-lock/toolbar.js.map +1 -1
  366. package/build-module/components/block-mover/index.js +2 -1
  367. package/build-module/components/block-mover/index.js.map +1 -1
  368. package/build-module/components/block-patterns-list/index.js +6 -6
  369. package/build-module/components/block-patterns-list/index.js.map +1 -1
  370. package/build-module/components/block-removal-warning-modal/index.js +3 -10
  371. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  372. package/build-module/components/block-rename/modal.js +3 -0
  373. package/build-module/components/block-rename/modal.js.map +1 -1
  374. package/build-module/components/block-settings/container.native.js +4 -2
  375. package/build-module/components/block-settings/container.native.js.map +1 -1
  376. package/build-module/components/block-styles/index.js +1 -1
  377. package/build-module/components/block-styles/index.js.map +1 -1
  378. package/build-module/components/block-styles/index.native.js +3 -2
  379. package/build-module/components/block-styles/index.native.js.map +1 -1
  380. package/build-module/components/block-switcher/index.js +4 -4
  381. package/build-module/components/block-switcher/index.js.map +1 -1
  382. package/build-module/components/block-toolbar/index.js +89 -27
  383. package/build-module/components/block-toolbar/index.js.map +1 -1
  384. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +41 -0
  385. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  386. package/build-module/components/block-tools/block-toolbar-popover.js +74 -0
  387. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -0
  388. package/build-module/components/block-tools/index.js +27 -24
  389. package/build-module/components/block-tools/index.js.map +1 -1
  390. package/build-module/components/block-types-list/index.native.js +2 -1
  391. package/build-module/components/block-types-list/index.native.js.map +1 -1
  392. package/build-module/components/block-variation-picker/index.native.js +2 -1
  393. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  394. package/build-module/components/block-variation-transforms/index.js +30 -3
  395. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  396. package/build-module/components/border-radius-control/linked-button.js +1 -1
  397. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  398. package/build-module/components/colors/utils.js +9 -1
  399. package/build-module/components/colors/utils.js.map +1 -1
  400. package/build-module/components/colors/with-colors.js +5 -1
  401. package/build-module/components/colors/with-colors.js.map +1 -1
  402. package/build-module/components/colors-gradients/control.js +29 -18
  403. package/build-module/components/colors-gradients/control.js.map +1 -1
  404. package/build-module/components/duotone-control/index.js +1 -4
  405. package/build-module/components/duotone-control/index.js.map +1 -1
  406. package/build-module/components/font-sizes/utils.js +9 -1
  407. package/build-module/components/font-sizes/utils.js.map +1 -1
  408. package/build-module/components/global-styles/border-panel.js +3 -2
  409. package/build-module/components/global-styles/border-panel.js.map +1 -1
  410. package/build-module/components/global-styles/color-panel.js +26 -23
  411. package/build-module/components/global-styles/color-panel.js.map +1 -1
  412. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  413. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  414. package/build-module/components/global-styles/effects-panel.js +3 -2
  415. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  416. package/build-module/components/global-styles/filters-panel.js +8 -5
  417. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  418. package/build-module/components/global-styles/get-global-styles-changes.js +184 -0
  419. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -0
  420. package/build-module/components/global-styles/hooks.js +3 -2
  421. package/build-module/components/global-styles/hooks.js.map +1 -1
  422. package/build-module/components/global-styles/image-settings-panel.js +7 -1
  423. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  424. package/build-module/components/global-styles/index.js +1 -0
  425. package/build-module/components/global-styles/index.js.map +1 -1
  426. package/build-module/components/global-styles/typography-panel.js +45 -38
  427. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  428. package/build-module/components/global-styles/use-global-styles-output.js +15 -1
  429. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  430. package/build-module/components/global-styles/utils.js +7 -0
  431. package/build-module/components/global-styles/utils.js.map +1 -1
  432. package/build-module/components/height-control/index.js +6 -2
  433. package/build-module/components/height-control/index.js.map +1 -1
  434. package/build-module/components/image-link-destinations/index.native.js +109 -0
  435. package/build-module/components/image-link-destinations/index.native.js.map +1 -0
  436. package/build-module/components/image-size-control/index.js +2 -2
  437. package/build-module/components/image-size-control/index.js.map +1 -1
  438. package/build-module/components/index.native.js +3 -1
  439. package/build-module/components/index.native.js.map +1 -1
  440. package/build-module/components/inner-blocks/index.js +62 -23
  441. package/build-module/components/inner-blocks/index.js.map +1 -1
  442. package/build-module/components/inner-blocks/index.native.js +18 -4
  443. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  444. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  445. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  446. package/build-module/components/inner-blocks/use-nested-settings-update.js +6 -10
  447. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  448. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  449. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  450. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +11 -10
  451. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  452. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +11 -11
  453. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  454. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +11 -11
  455. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  456. package/build-module/components/inserter/block-patterns-tab/utils.js +7 -11
  457. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  458. package/build-module/components/inserter/hooks/use-block-types-state.js +4 -14
  459. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  460. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -2
  461. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  462. package/build-module/components/inserter/index.js +1 -2
  463. package/build-module/components/inserter/index.js.map +1 -1
  464. package/build-module/components/inserter/library.js +3 -7
  465. package/build-module/components/inserter/library.js.map +1 -1
  466. package/build-module/components/inserter/media-tab/media-panel.js +1 -1
  467. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  468. package/build-module/components/inserter/menu.js +26 -33
  469. package/build-module/components/inserter/menu.js.map +1 -1
  470. package/build-module/components/inserter/preview-panel.js +2 -2
  471. package/build-module/components/inserter/preview-panel.js.map +1 -1
  472. package/build-module/components/inserter/tabs.js +22 -22
  473. package/build-module/components/inserter/tabs.js.map +1 -1
  474. package/build-module/components/inserter-button/index.native.js +89 -0
  475. package/build-module/components/inserter-button/index.native.js.map +1 -0
  476. package/build-module/components/inserter-button/sparkles.js +15 -0
  477. package/build-module/components/inserter-button/sparkles.js.map +1 -0
  478. package/build-module/components/inserter-draggable-blocks/index.js +9 -5
  479. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  480. package/build-module/components/inserter-list-item/index.js +2 -4
  481. package/build-module/components/inserter-list-item/index.js.map +1 -1
  482. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -1
  483. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  484. package/build-module/components/inspector-controls/fill.js +3 -3
  485. package/build-module/components/inspector-controls/fill.js.map +1 -1
  486. package/build-module/components/inspector-controls/fill.native.js +3 -3
  487. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  488. package/build-module/components/inspector-controls-tabs/index.js +35 -24
  489. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  490. package/build-module/components/list-view/block-select-button.js +4 -0
  491. package/build-module/components/list-view/block-select-button.js.map +1 -1
  492. package/build-module/components/list-view/block.js +58 -4
  493. package/build-module/components/list-view/block.js.map +1 -1
  494. package/build-module/components/media-upload-progress/constants.js +7 -0
  495. package/build-module/components/media-upload-progress/constants.js.map +1 -0
  496. package/build-module/components/media-upload-progress/index.native.js +37 -8
  497. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  498. package/build-module/components/navigable-toolbar/index.js +11 -16
  499. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  500. package/build-module/components/plain-text/index.native.js +6 -1
  501. package/build-module/components/plain-text/index.native.js.map +1 -1
  502. package/build-module/components/preview-options/index.js +6 -62
  503. package/build-module/components/preview-options/index.js.map +1 -1
  504. package/build-module/components/provider/index.js +3 -1
  505. package/build-module/components/provider/index.js.map +1 -1
  506. package/build-module/components/provider/use-block-sync.js +7 -1
  507. package/build-module/components/provider/use-block-sync.js.map +1 -1
  508. package/build-module/components/rich-text/content.js +25 -21
  509. package/build-module/components/rich-text/content.js.map +1 -1
  510. package/build-module/components/rich-text/get-rich-text-values.js +2 -1
  511. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
  512. package/build-module/components/rich-text/index.js +21 -39
  513. package/build-module/components/rich-text/index.js.map +1 -1
  514. package/build-module/components/rich-text/index.native.js +10 -18
  515. package/build-module/components/rich-text/index.native.js.map +1 -1
  516. package/build-module/components/rich-text/native/get-format-colors.native.js +22 -24
  517. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  518. package/build-module/components/rich-text/native/index.native.js +22 -56
  519. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  520. package/build-module/components/rich-text/use-input-rules.js +7 -3
  521. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  522. package/build-module/components/rich-text/use-mark-persistent.js +1 -1
  523. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  524. package/build-module/components/rich-text/with-deprecations.js +42 -0
  525. package/build-module/components/rich-text/with-deprecations.js.map +1 -0
  526. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  527. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  528. package/build-module/components/url-input/index.js +9 -6
  529. package/build-module/components/url-input/index.js.map +1 -1
  530. package/build-module/components/use-block-commands/index.js +14 -18
  531. package/build-module/components/use-block-commands/index.js.map +1 -1
  532. package/build-module/components/use-block-drop-zone/index.js +107 -18
  533. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  534. package/build-module/components/use-moving-animation/index.js +102 -94
  535. package/build-module/components/use-moving-animation/index.js.map +1 -1
  536. package/build-module/components/use-on-block-drop/index.js +9 -12
  537. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  538. package/build-module/components/use-resize-canvas/index.js +4 -1
  539. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  540. package/build-module/components/use-settings/index.js +13 -1
  541. package/build-module/components/use-settings/index.js.map +1 -1
  542. package/build-module/components/writing-flow/index.js +0 -1
  543. package/build-module/components/writing-flow/index.js.map +1 -1
  544. package/build-module/components/writing-flow/use-drag-selection.js +15 -4
  545. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  546. package/build-module/components/writing-flow/use-selection-observer.js +73 -27
  547. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  548. package/build-module/components/writing-flow/use-tab-nav.js +7 -4
  549. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  550. package/build-module/hooks/align.js +20 -67
  551. package/build-module/hooks/align.js.map +1 -1
  552. package/build-module/hooks/align.native.js +1 -0
  553. package/build-module/hooks/align.native.js.map +1 -1
  554. package/build-module/hooks/anchor.js +12 -27
  555. package/build-module/hooks/anchor.js.map +1 -1
  556. package/build-module/hooks/aria-label.js +7 -1
  557. package/build-module/hooks/aria-label.js.map +1 -1
  558. package/build-module/hooks/background.js +197 -37
  559. package/build-module/hooks/background.js.map +1 -1
  560. package/build-module/hooks/block-hooks.js +22 -30
  561. package/build-module/hooks/block-hooks.js.map +1 -1
  562. package/build-module/hooks/block-renaming.js +17 -21
  563. package/build-module/hooks/block-renaming.js.map +1 -1
  564. package/build-module/hooks/border.js +52 -79
  565. package/build-module/hooks/border.js.map +1 -1
  566. package/build-module/hooks/color.js +78 -88
  567. package/build-module/hooks/color.js.map +1 -1
  568. package/build-module/hooks/content-lock-ui.js +27 -27
  569. package/build-module/hooks/content-lock-ui.js.map +1 -1
  570. package/build-module/hooks/custom-class-name.js +12 -28
  571. package/build-module/hooks/custom-class-name.js.map +1 -1
  572. package/build-module/hooks/custom-class-name.native.js +7 -1
  573. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  574. package/build-module/hooks/dimensions.js +15 -16
  575. package/build-module/hooks/dimensions.js.map +1 -1
  576. package/build-module/hooks/duotone.js +30 -61
  577. package/build-module/hooks/duotone.js.map +1 -1
  578. package/build-module/hooks/font-family.js +20 -25
  579. package/build-module/hooks/font-family.js.map +1 -1
  580. package/build-module/hooks/font-size.js +50 -120
  581. package/build-module/hooks/font-size.js.map +1 -1
  582. package/build-module/hooks/index.js +20 -16
  583. package/build-module/hooks/index.js.map +1 -1
  584. package/build-module/hooks/index.native.js +10 -6
  585. package/build-module/hooks/index.native.js.map +1 -1
  586. package/build-module/hooks/layout-child.js +60 -0
  587. package/build-module/hooks/layout-child.js.map +1 -0
  588. package/build-module/hooks/layout.js +21 -100
  589. package/build-module/hooks/layout.js.map +1 -1
  590. package/build-module/hooks/padding.js +2 -2
  591. package/build-module/hooks/padding.js.map +1 -1
  592. package/build-module/hooks/position.js +38 -59
  593. package/build-module/hooks/position.js.map +1 -1
  594. package/build-module/hooks/style.js +52 -85
  595. package/build-module/hooks/style.js.map +1 -1
  596. package/build-module/hooks/typography.js +26 -11
  597. package/build-module/hooks/typography.js.map +1 -1
  598. package/build-module/hooks/typography.native.js +43 -17
  599. package/build-module/hooks/typography.native.js.map +1 -1
  600. package/build-module/hooks/use-typography-props.js +9 -1
  601. package/build-module/hooks/use-typography-props.js.map +1 -1
  602. package/build-module/hooks/utils.js +194 -9
  603. package/build-module/hooks/utils.js.map +1 -1
  604. package/build-module/private-apis.js +2 -6
  605. package/build-module/private-apis.js.map +1 -1
  606. package/build-module/private-apis.native.js +0 -2
  607. package/build-module/private-apis.native.js.map +1 -1
  608. package/build-module/store/actions.js +0 -15
  609. package/build-module/store/actions.js.map +1 -1
  610. package/build-module/store/private-actions.js +52 -0
  611. package/build-module/store/private-actions.js.map +1 -1
  612. package/build-module/store/private-selectors.js +44 -1
  613. package/build-module/store/private-selectors.js.map +1 -1
  614. package/build-module/store/reducer.js +18 -2
  615. package/build-module/store/reducer.js.map +1 -1
  616. package/build-module/store/selectors.js +4 -65
  617. package/build-module/store/selectors.js.map +1 -1
  618. package/build-module/store/undo-ignore.js +5 -0
  619. package/build-module/store/undo-ignore.js.map +1 -0
  620. package/build-module/store/utils.js +56 -0
  621. package/build-module/store/utils.js.map +1 -0
  622. package/build-module/utils/get-px-from-css-unit.js +9 -0
  623. package/build-module/utils/get-px-from-css-unit.js.map +1 -0
  624. package/build-module/utils/index.js +1 -1
  625. package/build-module/utils/index.js.map +1 -1
  626. package/build-module/utils/object.js +37 -97
  627. package/build-module/utils/object.js.map +1 -1
  628. package/build-module/utils/selection.js +9 -1
  629. package/build-module/utils/selection.js.map +1 -1
  630. package/build-module/utils/use-can-block-toolbar-be-focused.js +40 -0
  631. package/build-module/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  632. package/build-style/content-rtl.css +7 -6
  633. package/build-style/content.css +7 -6
  634. package/build-style/style-rtl.css +164 -301
  635. package/build-style/style.css +164 -301
  636. package/package.json +31 -31
  637. package/src/components/alignment-control/README.md +0 -5
  638. package/src/components/block-alignment-control/README.md +0 -5
  639. package/src/components/block-alignment-matrix-control/README.md +0 -10
  640. package/src/components/block-breadcrumb/README.md +0 -5
  641. package/src/components/block-canvas/index.js +29 -17
  642. package/src/components/block-canvas/style.scss +6 -0
  643. package/src/components/block-caption/README.md +2 -7
  644. package/src/components/block-card/README.md +0 -5
  645. package/src/components/block-card/index.js +6 -4
  646. package/src/components/block-card/style.scss +7 -3
  647. package/src/components/block-controls/hook.js +8 -30
  648. package/src/components/block-controls/test/index.js +3 -3
  649. package/src/components/block-draggable/draggable-chip.js +11 -1
  650. package/src/components/block-draggable/index.js +116 -4
  651. package/src/components/block-draggable/index.native.js +0 -5
  652. package/src/components/block-draggable/style.scss +35 -0
  653. package/src/components/block-draggable/test/helpers.native.js +8 -7
  654. package/src/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  655. package/src/components/block-edit/context.js +3 -0
  656. package/src/components/block-edit/index.js +36 -10
  657. package/src/components/block-editing-mode/index.js +3 -3
  658. package/src/components/block-icon/README.md +0 -5
  659. package/src/components/block-info-slot-fill/index.js +6 -3
  660. package/src/components/block-inspector/README.md +0 -5
  661. package/src/components/block-inspector/index.js +3 -1
  662. package/src/components/block-inspector/style.scss +0 -4
  663. package/src/components/block-list/block-list-item-cell.native.js +5 -1
  664. package/src/components/block-list/block.js +309 -104
  665. package/src/components/block-list/block.native.js +69 -21
  666. package/src/components/block-list/content.scss +14 -10
  667. package/src/components/block-list/index.native.js +3 -5
  668. package/src/components/block-list/{block-list-block-context.js → private-block-context.js} +1 -1
  669. package/src/components/block-list/use-block-props/index.js +43 -86
  670. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -34
  671. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -13
  672. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +1 -5
  673. package/src/components/block-list/use-in-between-inserter.js +4 -1
  674. package/src/components/block-list/use-scroll-upon-insertion.native.js +52 -0
  675. package/src/components/block-lock/toolbar.js +23 -34
  676. package/src/components/block-mover/README.md +0 -5
  677. package/src/components/block-mover/index.js +1 -1
  678. package/src/components/block-parent-selector/README.md +0 -5
  679. package/src/components/block-patterns-list/README.md +0 -5
  680. package/src/components/block-patterns-list/index.js +9 -6
  681. package/src/components/block-removal-warning-modal/index.js +7 -14
  682. package/src/components/block-rename/modal.js +7 -1
  683. package/src/components/block-settings/container.native.js +3 -5
  684. package/src/components/block-styles/index.js +1 -1
  685. package/src/components/block-styles/index.native.js +4 -2
  686. package/src/components/block-styles/style.scss +0 -11
  687. package/src/components/block-switcher/index.js +49 -59
  688. package/src/components/block-switcher/test/__snapshots__/index.js.snap +3 -1
  689. package/src/components/block-toolbar/README.md +0 -5
  690. package/src/components/block-toolbar/index.js +179 -95
  691. package/src/components/block-toolbar/style.scss +50 -66
  692. package/src/components/block-tools/block-toolbar-breadcrumb.js +46 -0
  693. package/src/components/block-tools/block-toolbar-popover.js +84 -0
  694. package/src/components/block-tools/index.js +42 -29
  695. package/src/components/block-tools/style.scss +60 -172
  696. package/src/components/block-types-list/README.md +0 -5
  697. package/src/components/block-types-list/index.native.js +2 -1
  698. package/src/components/block-variation-picker/README.md +0 -5
  699. package/src/components/block-variation-picker/index.native.js +1 -1
  700. package/src/components/block-variation-transforms/README.md +0 -5
  701. package/src/components/block-variation-transforms/index.js +49 -3
  702. package/src/components/border-radius-control/linked-button.js +1 -1
  703. package/src/components/caption/README.md +0 -5
  704. package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -1
  705. package/src/components/colors/utils.js +8 -1
  706. package/src/components/colors/with-colors.js +3 -1
  707. package/src/components/colors-gradients/control.js +49 -30
  708. package/src/components/colors-gradients/style.scss +0 -7
  709. package/src/components/contrast-checker/README.md +0 -4
  710. package/src/components/copy-handler/README.md +0 -10
  711. package/src/components/duotone-control/index.js +2 -5
  712. package/src/components/duotone-control/style.scss +1 -6
  713. package/src/components/font-sizes/utils.js +7 -1
  714. package/src/components/global-styles/border-panel.js +2 -1
  715. package/src/components/global-styles/color-panel.js +36 -26
  716. package/src/components/global-styles/dimensions-panel.js +4 -3
  717. package/src/components/global-styles/effects-panel.js +2 -1
  718. package/src/components/global-styles/filters-panel.js +6 -5
  719. package/src/components/global-styles/get-global-styles-changes.js +210 -0
  720. package/src/components/global-styles/hooks.js +5 -0
  721. package/src/components/global-styles/image-settings-panel.js +6 -0
  722. package/src/components/global-styles/index.js +1 -0
  723. package/src/components/global-styles/test/get-global-styles-changes.js +234 -0
  724. package/src/components/global-styles/typography-panel.js +60 -47
  725. package/src/components/global-styles/use-global-styles-output.js +9 -5
  726. package/src/components/global-styles/utils.js +7 -0
  727. package/src/components/height-control/README.md +2 -7
  728. package/src/components/height-control/index.js +4 -0
  729. package/src/components/image-link-destinations/index.native.js +152 -0
  730. package/src/components/image-link-destinations/style.native.scss +16 -0
  731. package/src/components/image-size-control/index.js +5 -2
  732. package/src/components/index.native.js +3 -2
  733. package/src/components/inner-blocks/README.md +13 -2
  734. package/src/components/inner-blocks/index.js +68 -29
  735. package/src/components/inner-blocks/index.native.js +19 -7
  736. package/src/components/inner-blocks/use-inner-block-template-sync.js +5 -7
  737. package/src/components/inner-blocks/use-nested-settings-update.js +6 -13
  738. package/src/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  739. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +15 -15
  740. package/src/components/inserter/block-patterns-tab/patterns-filter.js +15 -13
  741. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +15 -18
  742. package/src/components/inserter/block-patterns-tab/utils.js +11 -12
  743. package/src/components/inserter/hooks/use-block-types-state.js +9 -11
  744. package/src/components/inserter/hooks/use-patterns-state.js +2 -2
  745. package/src/components/inserter/index.js +0 -1
  746. package/src/components/inserter/library.js +2 -8
  747. package/src/components/inserter/media-tab/media-panel.js +1 -1
  748. package/src/components/inserter/menu.js +26 -36
  749. package/src/components/inserter/preview-panel.js +2 -2
  750. package/src/components/inserter/style.scss +21 -21
  751. package/src/components/inserter/tabs.js +34 -25
  752. package/src/components/inserter-button/README.md +62 -0
  753. package/src/components/inserter-button/index.native.js +116 -0
  754. package/src/components/inserter-button/sparkles.js +15 -0
  755. package/src/components/inserter-button/style.native.scss +72 -0
  756. package/src/components/inserter-draggable-blocks/index.js +18 -5
  757. package/src/components/inserter-list-item/index.js +6 -6
  758. package/src/components/inspector-controls/block-support-tools-panel.js +2 -0
  759. package/src/components/inspector-controls/fill.js +6 -3
  760. package/src/components/inspector-controls/fill.native.js +6 -3
  761. package/src/components/inspector-controls-tabs/index.js +39 -28
  762. package/src/components/inspector-controls-tabs/style.scss +3 -2
  763. package/src/components/letter-spacing-control/README.md +0 -5
  764. package/src/components/line-height-control/README.md +0 -5
  765. package/src/components/link-control/style.scss +1 -1
  766. package/src/components/link-control/test/index.js +1 -1
  767. package/src/components/list-view/README.md +0 -5
  768. package/src/components/list-view/block-select-button.js +4 -0
  769. package/src/components/list-view/block.js +73 -2
  770. package/src/components/list-view/style.scss +6 -0
  771. package/src/components/media-upload-progress/constants.js +6 -0
  772. package/src/components/media-upload-progress/index.native.js +66 -14
  773. package/src/components/media-upload-progress/test/index.native.js +2 -2
  774. package/src/components/multi-selection-inspector/README.md +0 -5
  775. package/src/components/navigable-toolbar/README.md +2 -0
  776. package/src/components/navigable-toolbar/index.js +15 -13
  777. package/src/components/plain-text/index.native.js +6 -1
  778. package/src/components/preview-options/index.js +6 -86
  779. package/src/components/provider/index.js +1 -1
  780. package/src/components/provider/test/use-block-sync.js +20 -17
  781. package/src/components/provider/use-block-sync.js +6 -0
  782. package/src/components/rich-text/content.js +27 -20
  783. package/src/components/rich-text/get-rich-text-values.js +6 -1
  784. package/src/components/rich-text/index.js +23 -52
  785. package/src/components/rich-text/index.native.js +8 -25
  786. package/src/components/rich-text/native/get-format-colors.native.js +33 -40
  787. package/src/components/rich-text/native/index.native.js +22 -71
  788. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +3 -3
  789. package/src/components/rich-text/native/test/index.native.js +72 -5
  790. package/src/components/rich-text/use-input-rules.js +8 -3
  791. package/src/components/rich-text/use-mark-persistent.js +1 -2
  792. package/src/components/rich-text/with-deprecations.js +51 -0
  793. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  794. package/src/components/text-decoration-control/README.md +40 -0
  795. package/src/components/text-transform-control/README.md +0 -4
  796. package/src/components/ungroup-button/README.md +0 -5
  797. package/src/components/unit-control/README.md +0 -4
  798. package/src/components/url-input/index.js +11 -11
  799. package/src/components/use-block-commands/index.js +18 -21
  800. package/src/components/use-block-drop-zone/index.js +181 -30
  801. package/src/components/use-moving-animation/index.js +107 -103
  802. package/src/components/use-on-block-drop/index.js +9 -24
  803. package/src/components/use-on-block-drop/test/index.js +12 -26
  804. package/src/components/use-resize-canvas/README.md +3 -7
  805. package/src/components/use-resize-canvas/index.js +4 -1
  806. package/src/components/use-settings/README.md +0 -4
  807. package/src/components/use-settings/index.js +15 -1
  808. package/src/components/writing-flow/index.js +0 -1
  809. package/src/components/writing-flow/use-drag-selection.js +18 -4
  810. package/src/components/writing-flow/use-selection-observer.js +99 -37
  811. package/src/components/writing-flow/use-tab-nav.js +7 -7
  812. package/src/hooks/align.js +16 -81
  813. package/src/hooks/align.native.js +1 -0
  814. package/src/hooks/anchor.js +14 -38
  815. package/src/hooks/aria-label.js +8 -5
  816. package/src/hooks/background.js +269 -32
  817. package/src/hooks/block-hooks.js +22 -51
  818. package/src/hooks/block-renaming.js +23 -37
  819. package/src/hooks/border.js +62 -124
  820. package/src/hooks/color.js +111 -138
  821. package/src/hooks/content-lock-ui.js +110 -122
  822. package/src/hooks/custom-class-name.js +9 -45
  823. package/src/hooks/custom-class-name.native.js +8 -5
  824. package/src/hooks/dimensions.js +14 -16
  825. package/src/hooks/duotone.js +70 -127
  826. package/src/hooks/font-family.js +14 -36
  827. package/src/hooks/font-size.js +67 -168
  828. package/src/hooks/index.js +58 -16
  829. package/src/hooks/index.native.js +22 -6
  830. package/src/hooks/layout-child.js +53 -0
  831. package/src/hooks/layout.js +17 -103
  832. package/src/hooks/padding.js +2 -2
  833. package/src/hooks/position.js +50 -90
  834. package/src/hooks/style.js +118 -193
  835. package/src/hooks/test/align.js +1 -178
  836. package/src/hooks/test/anchor.js +4 -9
  837. package/src/hooks/test/custom-class-name.js +3 -8
  838. package/src/hooks/test/style.js +4 -14
  839. package/src/hooks/typography.js +14 -16
  840. package/src/hooks/typography.native.js +31 -33
  841. package/src/hooks/use-typography-props.js +7 -1
  842. package/src/hooks/utils.js +261 -10
  843. package/src/private-apis.js +2 -6
  844. package/src/private-apis.native.js +0 -2
  845. package/src/store/actions.js +0 -15
  846. package/src/store/private-actions.js +48 -0
  847. package/src/store/private-selectors.js +56 -0
  848. package/src/store/reducer.js +20 -1
  849. package/src/store/selectors.js +10 -82
  850. package/src/store/undo-ignore.js +4 -0
  851. package/src/store/utils.js +74 -0
  852. package/src/style.scss +1 -2
  853. package/src/utils/get-px-from-css-unit.js +8 -0
  854. package/src/utils/index.js +1 -1
  855. package/src/utils/object.js +34 -104
  856. package/src/utils/selection.js +9 -2
  857. package/src/utils/test/object.js +1 -96
  858. package/src/utils/use-can-block-toolbar-be-focused.js +48 -0
  859. package/build/components/block-list/block-list-block-context.js +0 -14
  860. package/build/components/block-list/block-list-block-context.js.map +0 -1
  861. package/build/components/block-list/use-block-props/use-block-class-names.js +0 -67
  862. package/build/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  863. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +0 -46
  864. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  865. package/build/components/block-list/use-block-props/use-block-default-class-name.js +0 -37
  866. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  867. package/build/components/block-tools/back-compat.js +0 -45
  868. package/build/components/block-tools/back-compat.js.map +0 -1
  869. package/build/components/block-tools/block-contextual-toolbar.js +0 -91
  870. package/build/components/block-tools/block-contextual-toolbar.js.map +0 -1
  871. package/build/components/block-tools/selected-block-tools.js +0 -113
  872. package/build/components/block-tools/selected-block-tools.js.map +0 -1
  873. package/build/components/inserter/hooks/use-debounced-input.js +0 -22
  874. package/build/components/inserter/hooks/use-debounced-input.js.map +0 -1
  875. package/build/components/use-display-block-controls/index.js +0 -39
  876. package/build/components/use-display-block-controls/index.js.map +0 -1
  877. package/build/components/use-display-block-controls/index.native.js +0 -39
  878. package/build/components/use-display-block-controls/index.native.js.map +0 -1
  879. package/build/hooks/custom-fields.js +0 -120
  880. package/build/hooks/custom-fields.js.map +0 -1
  881. package/build/utils/parse-css-unit-to-px.js +0 -302
  882. package/build/utils/parse-css-unit-to-px.js.map +0 -1
  883. package/build/utils/use-should-contextual-toolbar-show.js +0 -63
  884. package/build/utils/use-should-contextual-toolbar-show.js.map +0 -1
  885. package/build-module/components/block-list/block-list-block-context.js +0 -6
  886. package/build-module/components/block-list/block-list-block-context.js.map +0 -1
  887. package/build-module/components/block-list/use-block-props/use-block-class-names.js +0 -60
  888. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  889. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +0 -40
  890. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  891. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +0 -31
  892. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  893. package/build-module/components/block-tools/back-compat.js +0 -35
  894. package/build-module/components/block-tools/back-compat.js.map +0 -1
  895. package/build-module/components/block-tools/block-contextual-toolbar.js +0 -83
  896. package/build-module/components/block-tools/block-contextual-toolbar.js.map +0 -1
  897. package/build-module/components/block-tools/selected-block-tools.js +0 -105
  898. package/build-module/components/block-tools/selected-block-tools.js.map +0 -1
  899. package/build-module/components/inserter/hooks/use-debounced-input.js +0 -15
  900. package/build-module/components/inserter/hooks/use-debounced-input.js.map +0 -1
  901. package/build-module/components/use-display-block-controls/index.js +0 -32
  902. package/build-module/components/use-display-block-controls/index.js.map +0 -1
  903. package/build-module/components/use-display-block-controls/index.native.js +0 -32
  904. package/build-module/components/use-display-block-controls/index.native.js.map +0 -1
  905. package/build-module/hooks/custom-fields.js +0 -118
  906. package/build-module/hooks/custom-fields.js.map +0 -1
  907. package/build-module/utils/parse-css-unit-to-px.js +0 -294
  908. package/build-module/utils/parse-css-unit-to-px.js.map +0 -1
  909. package/build-module/utils/use-should-contextual-toolbar-show.js +0 -57
  910. package/build-module/utils/use-should-contextual-toolbar-show.js.map +0 -1
  911. package/src/components/block-list/use-block-props/use-block-class-names.js +0 -66
  912. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +0 -44
  913. package/src/components/block-list/use-block-props/use-block-default-class-name.js +0 -35
  914. package/src/components/block-parent-selector/style.scss +0 -11
  915. package/src/components/block-tools/back-compat.js +0 -35
  916. package/src/components/block-tools/block-contextual-toolbar.js +0 -100
  917. package/src/components/block-tools/selected-block-tools.js +0 -127
  918. package/src/components/inserter/hooks/use-debounced-input.js +0 -18
  919. package/src/components/preview-options/README.md +0 -94
  920. package/src/components/preview-options/style.scss +0 -64
  921. package/src/components/use-display-block-controls/index.js +0 -36
  922. package/src/components/use-display-block-controls/index.native.js +0 -37
  923. package/src/hooks/custom-fields.js +0 -142
  924. package/src/hooks/test/color.js +0 -112
  925. package/src/utils/parse-css-unit-to-px.js +0 -329
  926. package/src/utils/test/parse-css-unit-to-px.js +0 -172
  927. package/src/utils/use-should-contextual-toolbar-show.js +0 -85
@@ -34,6 +34,8 @@ function ListViewBlockSelectButton({
34
34
  clientId
35
35
  },
36
36
  onClick,
37
+ onContextMenu,
38
+ onMouseDown,
37
39
  onToggleExpanded,
38
40
  tabIndex,
39
41
  onFocus,
@@ -196,7 +198,9 @@ function ListViewBlockSelectButton({
196
198
  return createElement(Fragment, null, createElement(Button, {
197
199
  className: classnames('block-editor-list-view-block-select-button', className),
198
200
  onClick: onClick,
201
+ onContextMenu: onContextMenu,
199
202
  onKeyDown: onKeyDownHandler,
203
+ onMouseDown: onMouseDown,
200
204
  ref: ref,
201
205
  tabIndex: tabIndex,
202
206
  onFocus: onFocus,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","hasBlockSupport","Button","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Tooltip","forwardRef","Icon","lockSmall","lock","pinSmall","SPACE","ENTER","BACKSPACE","DELETE","useSelect","useDispatch","__unstableUseShortcutEventMatch","useShortcutEventMatch","__","sprintf","isShallowEqual","BlockIcon","useBlockDisplayInformation","useBlockDisplayTitle","ListViewExpander","useBlockLock","store","blockEditorStore","useListViewImages","useListViewContext","ListViewBlockSelectButton","className","block","clientId","onClick","onToggleExpanded","tabIndex","onFocus","onDragStart","onDragEnd","draggable","isExpanded","ariaLabel","ariaDescribedBy","updateFocusAndSelection","ref","blockInformation","blockTitle","context","isLocked","canInsertBlockType","getSelectedBlockClientIds","getPreviousBlockClientId","getBlockRootClientId","getBlockOrder","getBlocksByClientId","canRemoveBlocks","duplicateBlocks","multiSelect","removeBlocks","isMatch","isSticky","positionType","images","rootClientId","positionLabel","onDragStartHandler","event","dataTransfer","clearData","getBlocksToUpdate","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","onKeyDownHandler","keyCode","_getPreviousBlockClie","blocksToDelete","blockToFocus","shouldUpdateSelection","length","defaultPrevented","preventDefault","canDuplicate","every","name","updatedBlocks","blockClientIds","createElement","Fragment","onKeyDown","href","icon","showColors","alignment","justify","spacing","ellipsizeMode","anchor","text","map","image","index","key","style","backgroundImage","url","zIndex"],"sources":["@wordpress/block-editor/src/components/list-view/block-select-button.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tTooltip,\n} from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\nimport { Icon, lockSmall as lock, pinSmall } from '@wordpress/icons';\nimport { SPACE, ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { __, sprintf } from '@wordpress/i18n';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport ListViewExpander from './expander';\nimport { useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport useListViewImages from './use-list-view-images';\nimport { useListViewContext } from './context';\n\nfunction ListViewBlockSelectButton(\n\t{\n\t\tclassName,\n\t\tblock: { clientId },\n\t\tonClick,\n\t\tonToggleExpanded,\n\t\ttabIndex,\n\t\tonFocus,\n\t\tonDragStart,\n\t\tonDragEnd,\n\t\tdraggable,\n\t\tisExpanded,\n\t\tariaLabel,\n\t\tariaDescribedBy,\n\t\tupdateFocusAndSelection,\n\t},\n\tref\n) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId,\n\t\tcontext: 'list-view',\n\t} );\n\tconst { isLocked } = useBlockLock( clientId );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetSelectedBlockClientIds,\n\t\tgetPreviousBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlockOrder,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { duplicateBlocks, multiSelect, removeBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst isMatch = useShortcutEventMatch();\n\tconst isSticky = blockInformation?.positionType === 'sticky';\n\tconst images = useListViewImages( { clientId, isExpanded } );\n\tconst { rootClientId } = useListViewContext();\n\n\tconst positionLabel = blockInformation?.positionLabel\n\t\t? sprintf(\n\t\t\t\t// translators: 1: Position of selected block, e.g. \"Sticky\" or \"Fixed\".\n\t\t\t\t__( 'Position: %1$s' ),\n\t\t\t\tblockInformation.positionLabel\n\t\t )\n\t\t: '';\n\n\t// The `href` attribute triggers the browser's native HTML drag operations.\n\t// When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.\n\t// We need to clear any HTML drag data to prevent `pasteHandler` from firing\n\t// inside the `useOnBlockDrop` hook.\n\tconst onDragStartHandler = ( event ) => {\n\t\tevent.dataTransfer.clearData();\n\t\tonDragStart?.( event );\n\t};\n\n\t// Determine which blocks to update:\n\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t// If the focused block is not part of the block selection, only update the focused block.\n\tfunction getBlocksToUpdate() {\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst isUpdatingSelectedBlocks =\n\t\t\tselectedBlockClientIds.includes( clientId );\n\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t: clientId;\n\t\tconst firstBlockRootClientId =\n\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn {\n\t\t\tblocksToUpdate,\n\t\t\tfirstBlockClientId,\n\t\t\tfirstBlockRootClientId,\n\t\t\tselectedBlockClientIds,\n\t\t};\n\t}\n\n\t/**\n\t * @param {KeyboardEvent} event\n\t */\n\tasync function onKeyDownHandler( event ) {\n\t\tif ( event.keyCode === ENTER || event.keyCode === SPACE ) {\n\t\t\tonClick( event );\n\t\t} else if (\n\t\t\tevent.keyCode === BACKSPACE ||\n\t\t\tevent.keyCode === DELETE ||\n\t\t\tisMatch( 'core/block-editor/remove', event )\n\t\t) {\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: blocksToDelete,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\tselectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate();\n\n\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\tif ( ! canRemoveBlocks( blocksToDelete, firstBlockRootClientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet blockToFocus =\n\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t// fallback to focus the parent block.\n\t\t\t\tfirstBlockRootClientId;\n\n\t\t\tremoveBlocks( blocksToDelete, false );\n\n\t\t\t// Update the selection if the original selection has been removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate, firstBlockRootClientId } =\n\t\t\t\tgetBlocksToUpdate();\n\n\t\t\tconst canDuplicate = getBlocksByClientId( blocksToUpdate ).every(\n\t\t\t\t( block ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\t\t\t\tcanInsertBlockType( block.name, firstBlockRootClientId )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( canDuplicate ) {\n\t\t\t\tconst updatedBlocks = await duplicateBlocks(\n\t\t\t\t\tblocksToUpdate,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tif ( updatedBlocks?.length ) {\n\t\t\t\t\t// If blocks have been duplicated, focus the first duplicated block.\n\t\t\t\t\tupdateFocusAndSelection( updatedBlocks[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { firstBlockRootClientId, selectedBlockClientIds } =\n\t\t\t\tgetBlocksToUpdate();\n\t\t\tconst blockClientIds = getBlockOrder( firstBlockRootClientId );\n\t\t\tif ( ! blockClientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a level.\n\t\t\t// This is a similar implementation to that used by `useSelectAll`.\n\t\t\t// `isShallowEqual` is used for the list view instead of a length check,\n\t\t\t// as the array of siblings of the currently focused block may be a different\n\t\t\t// set of blocks from the current block selection if the user is focused\n\t\t\t// on a different part of the list view from the block selection.\n\t\t\tif ( isShallowEqual( selectedBlockClientIds, blockClientIds ) ) {\n\t\t\t\t// Only select up a level if the first block is not the root block.\n\t\t\t\t// This ensures that the block selection can't break out of the root block\n\t\t\t\t// used by the list view, if the list view is only showing a partial hierarchy.\n\t\t\t\tif (\n\t\t\t\t\tfirstBlockRootClientId &&\n\t\t\t\t\tfirstBlockRootClientId !== rootClientId\n\t\t\t\t) {\n\t\t\t\t\tupdateFocusAndSelection( firstBlockRootClientId, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Select all while passing `null` to skip focusing to the editor canvas,\n\t\t\t// and retain focus within the list view.\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ],\n\t\t\t\tnull\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-list-view-block-select-button',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonKeyDown={ onKeyDownHandler }\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tonDragStart={ onDragStartHandler }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\thref={ `#block-${ clientId }` }\n\t\t\t\taria-label={ ariaLabel }\n\t\t\t\taria-describedby={ ariaDescribedBy }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t>\n\t\t\t\t<ListViewExpander onClick={ onToggleExpanded } />\n\t\t\t\t<BlockIcon\n\t\t\t\t\ticon={ blockInformation?.icon }\n\t\t\t\t\tshowColors\n\t\t\t\t\tcontext=\"list-view\"\n\t\t\t\t/>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__label-wrapper\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__title\">\n\t\t\t\t\t\t<Truncate ellipsizeMode=\"auto\">{ blockTitle }</Truncate>\n\t\t\t\t\t</span>\n\t\t\t\t\t{ blockInformation?.anchor && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__anchor-wrapper\">\n\t\t\t\t\t\t\t<Truncate\n\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__anchor\"\n\t\t\t\t\t\t\t\tellipsizeMode=\"auto\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ blockInformation.anchor }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ positionLabel && isSticky && (\n\t\t\t\t\t\t<Tooltip text={ positionLabel }>\n\t\t\t\t\t\t\t<Icon icon={ pinSmall } />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t{ images.length ? (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__images\"\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ images.map( ( image, index ) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__image\"\n\t\t\t\t\t\t\t\t\tkey={ image.clientId }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\tbackgroundImage: `url(${ image.url })`,\n\t\t\t\t\t\t\t\t\t\tzIndex: images.length - index, // Ensure the first image is on top, and subsequent images are behind.\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : null }\n\t\t\t\t\t{ isLocked && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__lock\">\n\t\t\t\t\t\t\t<Icon icon={ lock } />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport default forwardRef( ListViewBlockSelectButton );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","hasBlockSupport","Button","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Tooltip","forwardRef","Icon","lockSmall","lock","pinSmall","SPACE","ENTER","BACKSPACE","DELETE","useSelect","useDispatch","__unstableUseShortcutEventMatch","useShortcutEventMatch","__","sprintf","isShallowEqual","BlockIcon","useBlockDisplayInformation","useBlockDisplayTitle","ListViewExpander","useBlockLock","store","blockEditorStore","useListViewImages","useListViewContext","ListViewBlockSelectButton","className","block","clientId","onClick","onContextMenu","onMouseDown","onToggleExpanded","tabIndex","onFocus","onDragStart","onDragEnd","draggable","isExpanded","ariaLabel","ariaDescribedBy","updateFocusAndSelection","ref","blockInformation","blockTitle","context","isLocked","canInsertBlockType","getSelectedBlockClientIds","getPreviousBlockClientId","getBlockRootClientId","getBlockOrder","getBlocksByClientId","canRemoveBlocks","duplicateBlocks","multiSelect","removeBlocks","isMatch","isSticky","positionType","images","rootClientId","positionLabel","onDragStartHandler","event","dataTransfer","clearData","getBlocksToUpdate","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","onKeyDownHandler","keyCode","_getPreviousBlockClie","blocksToDelete","blockToFocus","shouldUpdateSelection","length","defaultPrevented","preventDefault","canDuplicate","every","name","updatedBlocks","blockClientIds","createElement","Fragment","onKeyDown","href","icon","showColors","alignment","justify","spacing","ellipsizeMode","anchor","text","map","image","index","key","style","backgroundImage","url","zIndex"],"sources":["@wordpress/block-editor/src/components/list-view/block-select-button.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tTooltip,\n} from '@wordpress/components';\nimport { forwardRef } from '@wordpress/element';\nimport { Icon, lockSmall as lock, pinSmall } from '@wordpress/icons';\nimport { SPACE, ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { __, sprintf } from '@wordpress/i18n';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport ListViewExpander from './expander';\nimport { useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport useListViewImages from './use-list-view-images';\nimport { useListViewContext } from './context';\n\nfunction ListViewBlockSelectButton(\n\t{\n\t\tclassName,\n\t\tblock: { clientId },\n\t\tonClick,\n\t\tonContextMenu,\n\t\tonMouseDown,\n\t\tonToggleExpanded,\n\t\ttabIndex,\n\t\tonFocus,\n\t\tonDragStart,\n\t\tonDragEnd,\n\t\tdraggable,\n\t\tisExpanded,\n\t\tariaLabel,\n\t\tariaDescribedBy,\n\t\tupdateFocusAndSelection,\n\t},\n\tref\n) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId,\n\t\tcontext: 'list-view',\n\t} );\n\tconst { isLocked } = useBlockLock( clientId );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetSelectedBlockClientIds,\n\t\tgetPreviousBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlockOrder,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { duplicateBlocks, multiSelect, removeBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst isMatch = useShortcutEventMatch();\n\tconst isSticky = blockInformation?.positionType === 'sticky';\n\tconst images = useListViewImages( { clientId, isExpanded } );\n\tconst { rootClientId } = useListViewContext();\n\n\tconst positionLabel = blockInformation?.positionLabel\n\t\t? sprintf(\n\t\t\t\t// translators: 1: Position of selected block, e.g. \"Sticky\" or \"Fixed\".\n\t\t\t\t__( 'Position: %1$s' ),\n\t\t\t\tblockInformation.positionLabel\n\t\t )\n\t\t: '';\n\n\t// The `href` attribute triggers the browser's native HTML drag operations.\n\t// When the link is dragged, the element's outerHTML is set in DataTransfer object as text/html.\n\t// We need to clear any HTML drag data to prevent `pasteHandler` from firing\n\t// inside the `useOnBlockDrop` hook.\n\tconst onDragStartHandler = ( event ) => {\n\t\tevent.dataTransfer.clearData();\n\t\tonDragStart?.( event );\n\t};\n\n\t// Determine which blocks to update:\n\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t// If the focused block is not part of the block selection, only update the focused block.\n\tfunction getBlocksToUpdate() {\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst isUpdatingSelectedBlocks =\n\t\t\tselectedBlockClientIds.includes( clientId );\n\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t: clientId;\n\t\tconst firstBlockRootClientId =\n\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn {\n\t\t\tblocksToUpdate,\n\t\t\tfirstBlockClientId,\n\t\t\tfirstBlockRootClientId,\n\t\t\tselectedBlockClientIds,\n\t\t};\n\t}\n\n\t/**\n\t * @param {KeyboardEvent} event\n\t */\n\tasync function onKeyDownHandler( event ) {\n\t\tif ( event.keyCode === ENTER || event.keyCode === SPACE ) {\n\t\t\tonClick( event );\n\t\t} else if (\n\t\t\tevent.keyCode === BACKSPACE ||\n\t\t\tevent.keyCode === DELETE ||\n\t\t\tisMatch( 'core/block-editor/remove', event )\n\t\t) {\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: blocksToDelete,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\tselectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate();\n\n\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\tif ( ! canRemoveBlocks( blocksToDelete, firstBlockRootClientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet blockToFocus =\n\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t// fallback to focus the parent block.\n\t\t\t\tfirstBlockRootClientId;\n\n\t\t\tremoveBlocks( blocksToDelete, false );\n\n\t\t\t// Update the selection if the original selection has been removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate, firstBlockRootClientId } =\n\t\t\t\tgetBlocksToUpdate();\n\n\t\t\tconst canDuplicate = getBlocksByClientId( blocksToUpdate ).every(\n\t\t\t\t( block ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\t\t\t\tcanInsertBlockType( block.name, firstBlockRootClientId )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( canDuplicate ) {\n\t\t\t\tconst updatedBlocks = await duplicateBlocks(\n\t\t\t\t\tblocksToUpdate,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tif ( updatedBlocks?.length ) {\n\t\t\t\t\t// If blocks have been duplicated, focus the first duplicated block.\n\t\t\t\t\tupdateFocusAndSelection( updatedBlocks[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { firstBlockRootClientId, selectedBlockClientIds } =\n\t\t\t\tgetBlocksToUpdate();\n\t\t\tconst blockClientIds = getBlockOrder( firstBlockRootClientId );\n\t\t\tif ( ! blockClientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a level.\n\t\t\t// This is a similar implementation to that used by `useSelectAll`.\n\t\t\t// `isShallowEqual` is used for the list view instead of a length check,\n\t\t\t// as the array of siblings of the currently focused block may be a different\n\t\t\t// set of blocks from the current block selection if the user is focused\n\t\t\t// on a different part of the list view from the block selection.\n\t\t\tif ( isShallowEqual( selectedBlockClientIds, blockClientIds ) ) {\n\t\t\t\t// Only select up a level if the first block is not the root block.\n\t\t\t\t// This ensures that the block selection can't break out of the root block\n\t\t\t\t// used by the list view, if the list view is only showing a partial hierarchy.\n\t\t\t\tif (\n\t\t\t\t\tfirstBlockRootClientId &&\n\t\t\t\t\tfirstBlockRootClientId !== rootClientId\n\t\t\t\t) {\n\t\t\t\t\tupdateFocusAndSelection( firstBlockRootClientId, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Select all while passing `null` to skip focusing to the editor canvas,\n\t\t\t// and retain focus within the list view.\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ],\n\t\t\t\tnull\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-list-view-block-select-button',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\tonKeyDown={ onKeyDownHandler }\n\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tonDragStart={ onDragStartHandler }\n\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\tdraggable={ draggable }\n\t\t\t\thref={ `#block-${ clientId }` }\n\t\t\t\taria-label={ ariaLabel }\n\t\t\t\taria-describedby={ ariaDescribedBy }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t>\n\t\t\t\t<ListViewExpander onClick={ onToggleExpanded } />\n\t\t\t\t<BlockIcon\n\t\t\t\t\ticon={ blockInformation?.icon }\n\t\t\t\t\tshowColors\n\t\t\t\t\tcontext=\"list-view\"\n\t\t\t\t/>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__label-wrapper\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\tspacing={ 1 }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__title\">\n\t\t\t\t\t\t<Truncate ellipsizeMode=\"auto\">{ blockTitle }</Truncate>\n\t\t\t\t\t</span>\n\t\t\t\t\t{ blockInformation?.anchor && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__anchor-wrapper\">\n\t\t\t\t\t\t\t<Truncate\n\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__anchor\"\n\t\t\t\t\t\t\t\tellipsizeMode=\"auto\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ blockInformation.anchor }\n\t\t\t\t\t\t\t</Truncate>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t\t{ positionLabel && isSticky && (\n\t\t\t\t\t\t<Tooltip text={ positionLabel }>\n\t\t\t\t\t\t\t<Icon icon={ pinSmall } />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t{ images.length ? (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__images\"\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ images.map( ( image, index ) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__image\"\n\t\t\t\t\t\t\t\t\tkey={ image.clientId }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\tbackgroundImage: `url(${ image.url })`,\n\t\t\t\t\t\t\t\t\t\tzIndex: images.length - index, // Ensure the first image is on top, and subsequent images are behind.\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) : null }\n\t\t\t\t\t{ isLocked && (\n\t\t\t\t\t\t<span className=\"block-editor-list-view-block-select-button__lock\">\n\t\t\t\t\t\t\t<Icon icon={ lock } />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n\nexport default forwardRef( ListViewBlockSelectButton );\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ import { hasBlockSupport } from '@wordpress/blocks';
11
11
  import { __experimentalTreeGridCell as TreeGridCell, __experimentalTreeGridItem as TreeGridItem } from '@wordpress/components';
12
12
  import { useInstanceId } from '@wordpress/compose';
13
13
  import { moreVertical } from '@wordpress/icons';
14
- import { useState, useRef, useCallback, memo } from '@wordpress/element';
14
+ import { useCallback, useMemo, useState, useRef, memo } from '@wordpress/element';
15
15
  import { useDispatch, useSelect } from '@wordpress/data';
16
16
  import { sprintf, __ } from '@wordpress/i18n';
17
17
  import { ESCAPE } from '@wordpress/keycodes';
@@ -49,10 +49,13 @@ function ListViewBlock({
49
49
  }) {
50
50
  const cellRef = useRef(null);
51
51
  const rowRef = useRef(null);
52
+ const settingsRef = useRef(null);
52
53
  const [isHovered, setIsHovered] = useState(false);
54
+ const [settingsAnchorRect, setSettingsAnchorRect] = useState();
53
55
  const {
54
56
  isLocked,
55
- canEdit
57
+ canEdit,
58
+ canMove
56
59
  } = useBlockLock(clientId);
57
60
  const isFirstSelectedBlock = isSelected && selectedClientIds[0] === clientId;
58
61
  const isLastSelectedBlock = isSelected && selectedClientIds[selectedClientIds.length - 1] === clientId;
@@ -77,6 +80,7 @@ function ListViewBlock({
77
80
  blockEditingMode: getBlockEditingMode(clientId)
78
81
  };
79
82
  }, [clientId]);
83
+ const allowRightClickOverrides = useSelect(select => select(blockEditorStore).getSettings().allowRightClickOverrides, []);
80
84
  const showBlockActions =
81
85
  // When a block hides its toolbar it also hides the block settings menu,
82
86
  // since that menu is part of the toolbar in the editor canvas.
@@ -148,6 +152,47 @@ function ListViewBlock({
148
152
  expand(clientId);
149
153
  }
150
154
  }, [clientId, expand, collapse, isExpanded]);
155
+
156
+ // Allow right-clicking an item in the List View to open up the block settings dropdown.
157
+ const onContextMenu = useCallback(event => {
158
+ if (showBlockActions && allowRightClickOverrides) {
159
+ settingsRef.current?.click();
160
+ // Ensure the position of the settings dropdown is at the cursor.
161
+ setSettingsAnchorRect(new window.DOMRect(event.clientX, event.clientY, 0, 0));
162
+ event.preventDefault();
163
+ }
164
+ }, [allowRightClickOverrides, settingsRef, showBlockActions]);
165
+ const onMouseDown = useCallback(event => {
166
+ // Prevent right-click from focusing the block,
167
+ // because focus will be handled when opening the block settings dropdown.
168
+ if (allowRightClickOverrides && event.button === 2) {
169
+ event.preventDefault();
170
+ }
171
+ }, [allowRightClickOverrides]);
172
+ const settingsPopoverAnchor = useMemo(() => {
173
+ const {
174
+ ownerDocument
175
+ } = rowRef?.current || {};
176
+
177
+ // If no custom position is set, the settings dropdown will be anchored to the
178
+ // DropdownMenu toggle button.
179
+ if (!settingsAnchorRect || !ownerDocument) {
180
+ return undefined;
181
+ }
182
+
183
+ // Position the settings dropdown at the cursor when right-clicking a block.
184
+ return {
185
+ ownerDocument,
186
+ getBoundingClientRect() {
187
+ return settingsAnchorRect;
188
+ }
189
+ };
190
+ }, [settingsAnchorRect]);
191
+ const clearSettingsAnchorRect = useCallback(() => {
192
+ // Clear the custom position for the settings dropdown so that it is restored back
193
+ // to being anchored to the DropdownMenu toggle button.
194
+ setSettingsAnchorRect(undefined);
195
+ }, [setSettingsAnchorRect]);
151
196
  let colSpan;
152
197
  if (hasRenderedMovers) {
153
198
  colSpan = 2;
@@ -162,7 +207,8 @@ function ListViewBlock({
162
207
  'is-synced-branch': isSyncedBranch,
163
208
  'is-dragging': isDragged,
164
209
  'has-single-cell': !showBlockActions,
165
- 'is-synced': blockInformation?.isSynced
210
+ 'is-synced': blockInformation?.isSynced,
211
+ 'is-draggable': canMove
166
212
  });
167
213
 
168
214
  // Only include all selected blocks if the currently clicked on block
@@ -211,6 +257,8 @@ function ListViewBlock({
211
257
  }, createElement(ListViewBlockContents, {
212
258
  block: block,
213
259
  onClick: selectEditorBlock,
260
+ onContextMenu: onContextMenu,
261
+ onMouseDown: onMouseDown,
214
262
  onToggleExpanded: toggleExpanded,
215
263
  isSelected: isSelected,
216
264
  position: position,
@@ -251,7 +299,8 @@ function ListViewBlock({
251
299
  onFocus: onFocus
252
300
  })))), showBlockActions && BlockSettingsMenu && createElement(TreeGridCell, {
253
301
  className: listViewBlockSettingsClassName,
254
- "aria-selected": !!isSelected
302
+ "aria-selected": !!isSelected,
303
+ ref: settingsRef
255
304
  }, ({
256
305
  ref,
257
306
  tabIndex,
@@ -261,10 +310,15 @@ function ListViewBlock({
261
310
  block: block,
262
311
  icon: moreVertical,
263
312
  label: settingsAriaLabel,
313
+ popoverProps: {
314
+ anchor: settingsPopoverAnchor // Used to position the settings at the cursor on right-click.
315
+ },
316
+
264
317
  toggleProps: {
265
318
  ref,
266
319
  className: 'block-editor-list-view-block__menu',
267
320
  tabIndex,
321
+ onClick: clearSettingsAnchorRect,
268
322
  onFocus
269
323
  },
270
324
  disableOpenOnArrowDown: true,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","hasBlockSupport","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useState","useRef","useCallback","memo","useDispatch","useSelect","sprintf","__","ESCAPE","ListViewLeaf","useListViewScrollIntoView","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","useListViewContext","getBlockPositionDescription","focusListItem","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","AriaReferencedText","ListViewBlock","block","clientId","isDragged","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","rowRef","isHovered","setIsHovered","isLocked","canEdit","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","blockTitle","name","title","blockName","blockEditingMode","select","getBlock","getBlockName","getBlockEditingMode","showBlockActions","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","settingsAriaLabel","expand","collapse","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","onKeyDown","event","keyCode","defaultPrevented","stopPropagation","preventDefault","undefined","onMouseEnter","onMouseLeave","selectEditorBlock","updateFocusAndSelection","focusClientId","shouldSelectBlock","toggleExpanded","colSpan","classes","isSynced","dropdownClientIds","includes","rowItemRef","currentlyEditingBlockInCanvas","createElement","className","onFocus","onBlur","id","ref","tabIndex","onClick","onToggleExpanded","ariaLabel","ariaDescribedBy","Fragment","withoutGridItem","orientation","clientIds","icon","label","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport { useState, useRef, useCallback, memo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription, focusListItem } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tisDragged,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst { isLocked, canEdit } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle =\n\t\tblockInformation?.name || blockInformation?.title || __( 'Untitled' );\n\n\tconst { block, blockName, blockEditingMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true ) &&\n\t\t// Don't show the settings menu if block is disabled or content only.\n\t\tblockEditingMode === 'default';\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__${ instanceId }`;\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockAriaLabel = isLocked\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the locked block.\n\t\t\t\t__( '%s (locked)' ),\n\t\t\t\tblockTitle\n\t\t )\n\t\t: blockTitle;\n\n\tconst settingsAriaLabel = sprintf(\n\t\t// translators: %s: The title of the block.\n\t\t__( 'Options for %s' ),\n\t\tblockTitle\n\t);\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t} = useListViewContext();\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\t// If multiple blocks are selected, deselect all blocks when the user\n\t// presses the escape key.\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\tevent.keyCode === ESCAPE &&\n\t\t\t! event.defaultPrevented &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t}\n\t};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaLabel={ blockAriaLabel }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t\tupdateFocusAndSelection={ updateFocusAndSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ settingsAriaLabel }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","hasBlockSupport","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useCallback","useMemo","useState","useRef","memo","useDispatch","useSelect","sprintf","__","ESCAPE","ListViewLeaf","useListViewScrollIntoView","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","useListViewContext","getBlockPositionDescription","focusListItem","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","AriaReferencedText","ListViewBlock","block","clientId","isDragged","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","rowRef","settingsRef","isHovered","setIsHovered","settingsAnchorRect","setSettingsAnchorRect","isLocked","canEdit","canMove","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","blockTitle","name","title","blockName","blockEditingMode","select","getBlock","getBlockName","getBlockEditingMode","allowRightClickOverrides","getSettings","showBlockActions","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","settingsAriaLabel","expand","collapse","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","onKeyDown","event","keyCode","defaultPrevented","stopPropagation","preventDefault","undefined","onMouseEnter","onMouseLeave","selectEditorBlock","updateFocusAndSelection","focusClientId","shouldSelectBlock","toggleExpanded","onContextMenu","current","click","window","DOMRect","clientX","clientY","onMouseDown","button","settingsPopoverAnchor","ownerDocument","getBoundingClientRect","clearSettingsAnchorRect","colSpan","classes","isSynced","dropdownClientIds","includes","rowItemRef","currentlyEditingBlockInCanvas","createElement","className","onFocus","onBlur","id","ref","tabIndex","onClick","onToggleExpanded","ariaLabel","ariaDescribedBy","Fragment","withoutGridItem","orientation","clientIds","icon","label","popoverProps","anchor","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseCallback,\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription, focusListItem } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tisDragged,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst settingsRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ settingsAnchorRect, setSettingsAnchorRect ] = useState();\n\n\tconst { isLocked, canEdit, canMove } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockTitle =\n\t\tblockInformation?.name || blockInformation?.title || __( 'Untitled' );\n\n\tconst { block, blockName, blockEditingMode } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tblockEditingMode: getBlockEditingMode( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst allowRightClickOverrides = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().allowRightClickOverrides,\n\t\t[]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true ) &&\n\t\t// Don't show the settings menu if block is disabled or content only.\n\t\tblockEditingMode === 'default';\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__${ instanceId }`;\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockAriaLabel = isLocked\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the locked block.\n\t\t\t\t__( '%s (locked)' ),\n\t\t\t\tblockTitle\n\t\t )\n\t\t: blockTitle;\n\n\tconst settingsAriaLabel = sprintf(\n\t\t// translators: %s: The title of the block.\n\t\t__( 'Options for %s' ),\n\t\tblockTitle\n\t);\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t} = useListViewContext();\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\t// If multiple blocks are selected, deselect all blocks when the user\n\t// presses the escape key.\n\tconst onKeyDown = ( event ) => {\n\t\tif (\n\t\t\tevent.keyCode === ESCAPE &&\n\t\t\t! event.defaultPrevented &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t}\n\t};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\t// Allow right-clicking an item in the List View to open up the block settings dropdown.\n\tconst onContextMenu = useCallback(\n\t\t( event ) => {\n\t\t\tif ( showBlockActions && allowRightClickOverrides ) {\n\t\t\t\tsettingsRef.current?.click();\n\t\t\t\t// Ensure the position of the settings dropdown is at the cursor.\n\t\t\t\tsetSettingsAnchorRect(\n\t\t\t\t\tnew window.DOMRect( event.clientX, event.clientY, 0, 0 )\n\t\t\t\t);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides, settingsRef, showBlockActions ]\n\t);\n\n\tconst onMouseDown = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent right-click from focusing the block,\n\t\t\t// because focus will be handled when opening the block settings dropdown.\n\t\t\tif ( allowRightClickOverrides && event.button === 2 ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides ]\n\t);\n\n\tconst settingsPopoverAnchor = useMemo( () => {\n\t\tconst { ownerDocument } = rowRef?.current || {};\n\n\t\t// If no custom position is set, the settings dropdown will be anchored to the\n\t\t// DropdownMenu toggle button.\n\t\tif ( ! settingsAnchorRect || ! ownerDocument ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Position the settings dropdown at the cursor when right-clicking a block.\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\treturn settingsAnchorRect;\n\t\t\t},\n\t\t};\n\t}, [ settingsAnchorRect ] );\n\n\tconst clearSettingsAnchorRect = useCallback( () => {\n\t\t// Clear the custom position for the settings dropdown so that it is restored back\n\t\t// to being anchored to the DropdownMenu toggle button.\n\t\tsetSettingsAnchorRect( undefined );\n\t}, [ setSettingsAnchorRect ] );\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t\t'is-draggable': canMove,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaLabel={ blockAriaLabel }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t\tupdateFocusAndSelection={ updateFocusAndSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t\tref={ settingsRef }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ settingsAriaLabel }\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\tanchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonClick: clearSettingsAnchorRect,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
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;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MEDIA_UPLOAD_STATE_IDLE","MEDIA_UPLOAD_STATE_UPLOADING","MEDIA_UPLOAD_STATE_SUCCEEDED","MEDIA_UPLOAD_STATE_FAILED","MEDIA_UPLOAD_STATE_RESET","MEDIA_UPLOAD_STATE_PAUSED"],"sources":["@wordpress/block-editor/src/components/media-upload-progress/constants.js"],"sourcesContent":["export const MEDIA_UPLOAD_STATE_IDLE = 0;\nexport const MEDIA_UPLOAD_STATE_UPLOADING = 1;\nexport const MEDIA_UPLOAD_STATE_SUCCEEDED = 2;\nexport const MEDIA_UPLOAD_STATE_FAILED = 3;\nexport const MEDIA_UPLOAD_STATE_RESET = 4;\nexport const MEDIA_UPLOAD_STATE_PAUSED = 11;\n"],"mappings":"AAAA,OAAO,MAAMA,uBAAuB,GAAG,CAAC;AACxC,OAAO,MAAMC,4BAA4B,GAAG,CAAC;AAC7C,OAAO,MAAMC,4BAA4B,GAAG,CAAC;AAC7C,OAAO,MAAMC,yBAAyB,GAAG,CAAC;AAC1C,OAAO,MAAMC,wBAAwB,GAAG,CAAC;AACzC,OAAO,MAAMC,yBAAyB,GAAG,EAAE"}
@@ -16,19 +16,18 @@ import { subscribeMediaUpload } from '@wordpress/react-native-bridge';
16
16
  * Internal dependencies
17
17
  */
18
18
  import styles from './styles.scss';
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;
19
+ import { MEDIA_UPLOAD_STATE_IDLE, MEDIA_UPLOAD_STATE_UPLOADING, MEDIA_UPLOAD_STATE_SUCCEEDED, MEDIA_UPLOAD_STATE_FAILED, MEDIA_UPLOAD_STATE_RESET, MEDIA_UPLOAD_STATE_PAUSED } from './constants';
23
20
  export class MediaUploadProgress extends Component {
24
21
  constructor(props) {
25
22
  super(props);
26
23
  this.state = {
24
+ uploadState: MEDIA_UPLOAD_STATE_IDLE,
27
25
  progress: 0,
28
26
  isUploadInProgress: false,
29
27
  isUploadFailed: false
30
28
  };
31
29
  this.mediaUpload = this.mediaUpload.bind(this);
30
+ this.getRetryMessage = this.getRetryMessage.bind(this);
32
31
  }
33
32
  componentDidMount() {
34
33
  this.addMediaUploadListener();
@@ -40,7 +39,7 @@ export class MediaUploadProgress extends Component {
40
39
  const {
41
40
  mediaId
42
41
  } = this.props;
43
- if (payload.mediaId !== mediaId) {
42
+ if (payload.mediaId !== mediaId || payload.state === this.state.uploadState && payload.progress === this.state.progress) {
44
43
  return;
45
44
  }
46
45
  switch (payload.state) {
@@ -50,6 +49,9 @@ export class MediaUploadProgress extends Component {
50
49
  case MEDIA_UPLOAD_STATE_SUCCEEDED:
51
50
  this.finishMediaUploadWithSuccess(payload);
52
51
  break;
52
+ case MEDIA_UPLOAD_STATE_PAUSED:
53
+ this.finishMediaUploadWithPause(payload);
54
+ break;
53
55
  case MEDIA_UPLOAD_STATE_FAILED:
54
56
  this.finishMediaUploadWithFailure(payload);
55
57
  break;
@@ -61,6 +63,7 @@ export class MediaUploadProgress extends Component {
61
63
  updateMediaProgress(payload) {
62
64
  this.setState({
63
65
  progress: payload.progress,
66
+ uploadState: payload.state,
64
67
  isUploadInProgress: true,
65
68
  isUploadFailed: false
66
69
  });
@@ -70,14 +73,30 @@ export class MediaUploadProgress extends Component {
70
73
  }
71
74
  finishMediaUploadWithSuccess(payload) {
72
75
  this.setState({
76
+ uploadState: payload.state,
73
77
  isUploadInProgress: false
74
78
  });
75
79
  if (this.props.onFinishMediaUploadWithSuccess) {
76
80
  this.props.onFinishMediaUploadWithSuccess(payload);
77
81
  }
78
82
  }
83
+ finishMediaUploadWithPause(payload) {
84
+ if (!this.props.enablePausedUploads) {
85
+ this.finishMediaUploadWithFailure(payload);
86
+ return;
87
+ }
88
+ this.setState({
89
+ uploadState: payload.state,
90
+ isUploadInProgress: true,
91
+ isUploadFailed: false
92
+ });
93
+ if (this.props.onFinishMediaUploadWithFailure) {
94
+ this.props.onFinishMediaUploadWithFailure(payload);
95
+ }
96
+ }
79
97
  finishMediaUploadWithFailure(payload) {
80
98
  this.setState({
99
+ uploadState: payload.state,
81
100
  isUploadInProgress: false,
82
101
  isUploadFailed: true
83
102
  });
@@ -87,6 +106,7 @@ export class MediaUploadProgress extends Component {
87
106
  }
88
107
  mediaUploadStateReset(payload) {
89
108
  this.setState({
109
+ uploadState: payload.state,
90
110
  isUploadInProgress: false,
91
111
  isUploadFailed: false
92
112
  });
@@ -108,18 +128,26 @@ export class MediaUploadProgress extends Component {
108
128
  this.subscriptionParentMediaUpload.remove();
109
129
  }
110
130
  }
131
+ getRetryMessage() {
132
+ if (this.state.uploadState === MEDIA_UPLOAD_STATE_PAUSED && this.props.enablePausedUploads) {
133
+ return __('Waiting for connection');
134
+ }
135
+
136
+ // eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace
137
+ return __('Failed to insert media.\nTap for more info.');
138
+ }
111
139
  render() {
112
140
  const {
113
141
  renderContent = () => null
114
142
  } = this.props;
115
143
  const {
116
144
  isUploadInProgress,
117
- isUploadFailed
145
+ isUploadFailed,
146
+ uploadState
118
147
  } = this.state;
119
148
  const showSpinner = this.state.isUploadInProgress;
120
149
  const progress = this.state.progress * 100;
121
- // eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace
122
- const retryMessage = __('Failed to insert media.\nTap for more info.');
150
+ const retryMessage = this.getRetryMessage();
123
151
  const progressBarStyle = [styles.progressBar, showSpinner || styles.progressBarHidden, this.props.progressBarStyle];
124
152
  return createElement(View, {
125
153
  style: [styles.mediaUploadProgress, this.props.containerStyle],
@@ -131,6 +159,7 @@ export class MediaUploadProgress extends Component {
131
159
  style: this.props.spinnerStyle,
132
160
  testID: "spinner"
133
161
  })), renderContent({
162
+ isUploadPaused: uploadState === MEDIA_UPLOAD_STATE_PAUSED && this.props.enablePausedUploads,
134
163
  isUploadInProgress,
135
164
  isUploadFailed,
136
165
  retryMessage
@@ -1 +1 @@
1
- {"version":3,"names":["View","Component","Spinner","__","subscribeMediaUpload","styles","MEDIA_UPLOAD_STATE_UPLOADING","MEDIA_UPLOAD_STATE_SUCCEEDED","MEDIA_UPLOAD_STATE_FAILED","MEDIA_UPLOAD_STATE_RESET","MediaUploadProgress","constructor","props","state","progress","isUploadInProgress","isUploadFailed","mediaUpload","bind","componentDidMount","addMediaUploadListener","componentWillUnmount","removeMediaUploadListener","payload","mediaId","updateMediaProgress","finishMediaUploadWithSuccess","finishMediaUploadWithFailure","mediaUploadStateReset","setState","onUpdateMediaProgress","onFinishMediaUploadWithSuccess","onFinishMediaUploadWithFailure","onMediaUploadStateReset","subscriptionParentMediaUpload","remove","render","renderContent","showSpinner","retryMessage","progressBarStyle","progressBar","progressBarHidden","createElement","style","mediaUploadProgress","containerStyle","pointerEvents","spinnerStyle","testID"],"sources":["@wordpress/block-editor/src/components/media-upload-progress/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { subscribeMediaUpload } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\n\nexport const MEDIA_UPLOAD_STATE_UPLOADING = 1;\nexport const MEDIA_UPLOAD_STATE_SUCCEEDED = 2;\nexport const MEDIA_UPLOAD_STATE_FAILED = 3;\nexport const MEDIA_UPLOAD_STATE_RESET = 4;\n\nexport class MediaUploadProgress extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tprogress: 0,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t};\n\n\t\tthis.mediaUpload = this.mediaUpload.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.addMediaUploadListener();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.removeMediaUploadListener();\n\t}\n\n\tmediaUpload( payload ) {\n\t\tconst { mediaId } = this.props;\n\n\t\tif ( payload.mediaId !== mediaId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( payload.state ) {\n\t\t\tcase MEDIA_UPLOAD_STATE_UPLOADING:\n\t\t\t\tthis.updateMediaProgress( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_SUCCEEDED:\n\t\t\t\tthis.finishMediaUploadWithSuccess( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_FAILED:\n\t\t\t\tthis.finishMediaUploadWithFailure( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_RESET:\n\t\t\t\tthis.mediaUploadStateReset( payload );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tupdateMediaProgress( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tisUploadInProgress: true,\n\t\t\tisUploadFailed: false,\n\t\t} );\n\t\tif ( this.props.onUpdateMediaProgress ) {\n\t\t\tthis.props.onUpdateMediaProgress( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tthis.setState( { isUploadInProgress: false } );\n\t\tif ( this.props.onFinishMediaUploadWithSuccess ) {\n\t\t\tthis.props.onFinishMediaUploadWithSuccess( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isUploadFailed: true } );\n\t\tif ( this.props.onFinishMediaUploadWithFailure ) {\n\t\t\tthis.props.onFinishMediaUploadWithFailure( payload );\n\t\t}\n\t}\n\n\tmediaUploadStateReset( payload ) {\n\t\tthis.setState( { isUploadInProgress: false, isUploadFailed: false } );\n\t\tif ( this.props.onMediaUploadStateReset ) {\n\t\t\tthis.props.onMediaUploadStateReset( payload );\n\t\t}\n\t}\n\n\taddMediaUploadListener() {\n\t\t// If we already have a subscription not worth doing it again.\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.subscriptionParentMediaUpload = subscribeMediaUpload(\n\t\t\t( payload ) => {\n\t\t\t\tthis.mediaUpload( payload );\n\t\t\t}\n\t\t);\n\t}\n\n\tremoveMediaUploadListener() {\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\tthis.subscriptionParentMediaUpload.remove();\n\t\t}\n\t}\n\n\trender() {\n\t\tconst { renderContent = () => null } = this.props;\n\t\tconst { isUploadInProgress, isUploadFailed } = this.state;\n\t\tconst showSpinner = this.state.isUploadInProgress;\n\t\tconst progress = this.state.progress * 100;\n\t\t// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace\n\t\tconst retryMessage = __(\n\t\t\t'Failed to insert media.\\nTap for more info.'\n\t\t);\n\n\t\tconst progressBarStyle = [\n\t\t\tstyles.progressBar,\n\t\t\tshowSpinner || styles.progressBarHidden,\n\t\t\tthis.props.progressBarStyle,\n\t\t];\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={ [\n\t\t\t\t\tstyles.mediaUploadProgress,\n\t\t\t\t\tthis.props.containerStyle,\n\t\t\t\t] }\n\t\t\t\tpointerEvents=\"box-none\"\n\t\t\t>\n\t\t\t\t<View style={ progressBarStyle }>\n\t\t\t\t\t{ showSpinner && (\n\t\t\t\t\t\t<Spinner\n\t\t\t\t\t\t\tprogress={ progress }\n\t\t\t\t\t\t\tstyle={ this.props.spinnerStyle }\n\t\t\t\t\t\t\ttestID=\"spinner\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</View>\n\t\t\t\t{ renderContent( {\n\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\tisUploadFailed,\n\t\t\t\t\tretryMessage,\n\t\t\t\t} ) }\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default MediaUploadProgress;\n"],"mappings":"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"}
1
+ {"version":3,"names":["View","Component","Spinner","__","subscribeMediaUpload","styles","MEDIA_UPLOAD_STATE_IDLE","MEDIA_UPLOAD_STATE_UPLOADING","MEDIA_UPLOAD_STATE_SUCCEEDED","MEDIA_UPLOAD_STATE_FAILED","MEDIA_UPLOAD_STATE_RESET","MEDIA_UPLOAD_STATE_PAUSED","MediaUploadProgress","constructor","props","state","uploadState","progress","isUploadInProgress","isUploadFailed","mediaUpload","bind","getRetryMessage","componentDidMount","addMediaUploadListener","componentWillUnmount","removeMediaUploadListener","payload","mediaId","updateMediaProgress","finishMediaUploadWithSuccess","finishMediaUploadWithPause","finishMediaUploadWithFailure","mediaUploadStateReset","setState","onUpdateMediaProgress","onFinishMediaUploadWithSuccess","enablePausedUploads","onFinishMediaUploadWithFailure","onMediaUploadStateReset","subscriptionParentMediaUpload","remove","render","renderContent","showSpinner","retryMessage","progressBarStyle","progressBar","progressBarHidden","createElement","style","mediaUploadProgress","containerStyle","pointerEvents","spinnerStyle","testID","isUploadPaused"],"sources":["@wordpress/block-editor/src/components/media-upload-progress/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { subscribeMediaUpload } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\nimport {\n\tMEDIA_UPLOAD_STATE_IDLE,\n\tMEDIA_UPLOAD_STATE_UPLOADING,\n\tMEDIA_UPLOAD_STATE_SUCCEEDED,\n\tMEDIA_UPLOAD_STATE_FAILED,\n\tMEDIA_UPLOAD_STATE_RESET,\n\tMEDIA_UPLOAD_STATE_PAUSED,\n} from './constants';\n\nexport class MediaUploadProgress extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tuploadState: MEDIA_UPLOAD_STATE_IDLE,\n\t\t\tprogress: 0,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t};\n\n\t\tthis.mediaUpload = this.mediaUpload.bind( this );\n\t\tthis.getRetryMessage = this.getRetryMessage.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.addMediaUploadListener();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.removeMediaUploadListener();\n\t}\n\n\tmediaUpload( payload ) {\n\t\tconst { mediaId } = this.props;\n\n\t\tif (\n\t\t\tpayload.mediaId !== mediaId ||\n\t\t\t( payload.state === this.state.uploadState &&\n\t\t\t\tpayload.progress === this.state.progress )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( payload.state ) {\n\t\t\tcase MEDIA_UPLOAD_STATE_UPLOADING:\n\t\t\t\tthis.updateMediaProgress( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_SUCCEEDED:\n\t\t\t\tthis.finishMediaUploadWithSuccess( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_PAUSED:\n\t\t\t\tthis.finishMediaUploadWithPause( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_FAILED:\n\t\t\t\tthis.finishMediaUploadWithFailure( payload );\n\t\t\t\tbreak;\n\t\t\tcase MEDIA_UPLOAD_STATE_RESET:\n\t\t\t\tthis.mediaUploadStateReset( payload );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tupdateMediaProgress( payload ) {\n\t\tthis.setState( {\n\t\t\tprogress: payload.progress,\n\t\t\tuploadState: payload.state,\n\t\t\tisUploadInProgress: true,\n\t\t\tisUploadFailed: false,\n\t\t} );\n\t\tif ( this.props.onUpdateMediaProgress ) {\n\t\t\tthis.props.onUpdateMediaProgress( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tthis.setState( {\n\t\t\tuploadState: payload.state,\n\t\t\tisUploadInProgress: false,\n\t\t} );\n\t\tif ( this.props.onFinishMediaUploadWithSuccess ) {\n\t\t\tthis.props.onFinishMediaUploadWithSuccess( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithPause( payload ) {\n\t\tif ( ! this.props.enablePausedUploads ) {\n\t\t\tthis.finishMediaUploadWithFailure( payload );\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tuploadState: payload.state,\n\t\t\tisUploadInProgress: true,\n\t\t\tisUploadFailed: false,\n\t\t} );\n\t\tif ( this.props.onFinishMediaUploadWithFailure ) {\n\t\t\tthis.props.onFinishMediaUploadWithFailure( payload );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tthis.setState( {\n\t\t\tuploadState: payload.state,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: true,\n\t\t} );\n\t\tif ( this.props.onFinishMediaUploadWithFailure ) {\n\t\t\tthis.props.onFinishMediaUploadWithFailure( payload );\n\t\t}\n\t}\n\n\tmediaUploadStateReset( payload ) {\n\t\tthis.setState( {\n\t\t\tuploadState: payload.state,\n\t\t\tisUploadInProgress: false,\n\t\t\tisUploadFailed: false,\n\t\t} );\n\t\tif ( this.props.onMediaUploadStateReset ) {\n\t\t\tthis.props.onMediaUploadStateReset( payload );\n\t\t}\n\t}\n\n\taddMediaUploadListener() {\n\t\t// If we already have a subscription not worth doing it again.\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tthis.subscriptionParentMediaUpload = subscribeMediaUpload(\n\t\t\t( payload ) => {\n\t\t\t\tthis.mediaUpload( payload );\n\t\t\t}\n\t\t);\n\t}\n\n\tremoveMediaUploadListener() {\n\t\tif ( this.subscriptionParentMediaUpload ) {\n\t\t\tthis.subscriptionParentMediaUpload.remove();\n\t\t}\n\t}\n\n\tgetRetryMessage() {\n\t\tif (\n\t\t\tthis.state.uploadState === MEDIA_UPLOAD_STATE_PAUSED &&\n\t\t\tthis.props.enablePausedUploads\n\t\t) {\n\t\t\treturn __( 'Waiting for connection' );\n\t\t}\n\n\t\t// eslint-disable-next-line @wordpress/i18n-no-collapsible-whitespace\n\t\treturn __( 'Failed to insert media.\\nTap for more info.' );\n\t}\n\n\trender() {\n\t\tconst { renderContent = () => null } = this.props;\n\t\tconst { isUploadInProgress, isUploadFailed, uploadState } = this.state;\n\t\tconst showSpinner = this.state.isUploadInProgress;\n\t\tconst progress = this.state.progress * 100;\n\t\tconst retryMessage = this.getRetryMessage();\n\n\t\tconst progressBarStyle = [\n\t\t\tstyles.progressBar,\n\t\t\tshowSpinner || styles.progressBarHidden,\n\t\t\tthis.props.progressBarStyle,\n\t\t];\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={ [\n\t\t\t\t\tstyles.mediaUploadProgress,\n\t\t\t\t\tthis.props.containerStyle,\n\t\t\t\t] }\n\t\t\t\tpointerEvents=\"box-none\"\n\t\t\t>\n\t\t\t\t<View style={ progressBarStyle }>\n\t\t\t\t\t{ showSpinner && (\n\t\t\t\t\t\t<Spinner\n\t\t\t\t\t\t\tprogress={ progress }\n\t\t\t\t\t\t\tstyle={ this.props.spinnerStyle }\n\t\t\t\t\t\t\ttestID=\"spinner\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</View>\n\t\t\t\t{ renderContent( {\n\t\t\t\t\tisUploadPaused:\n\t\t\t\t\t\tuploadState === MEDIA_UPLOAD_STATE_PAUSED &&\n\t\t\t\t\t\tthis.props.enablePausedUploads,\n\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\tisUploadFailed,\n\t\t\t\t\tretryMessage,\n\t\t\t\t} ) }\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nexport default MediaUploadProgress;\n"],"mappings":"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"}
@@ -14,12 +14,13 @@ import { ESCAPE } from '@wordpress/keycodes';
14
14
  * Internal dependencies
15
15
  */
16
16
  import { store as blockEditorStore } from '../../store';
17
+ import { unlock } from '../../lock-unlock';
17
18
  function hasOnlyToolbarItem(elements) {
18
19
  const dataProp = 'toolbarItem';
19
20
  return !elements.some(element => !(dataProp in element.dataset));
20
21
  }
21
- function getAllToolbarItemsIn(container) {
22
- return Array.from(container.querySelectorAll('[data-toolbar-item]'));
22
+ function getAllFocusableToolbarItemsIn(container) {
23
+ return Array.from(container.querySelectorAll('[data-toolbar-item]:not([disabled]):not([aria-disabled="true"])'));
23
24
  }
24
25
  function hasFocusWithin(container) {
25
26
  return container.contains(container.ownerDocument.activeElement);
@@ -117,7 +118,7 @@ function useToolbarFocus({
117
118
  let raf = 0;
118
119
  if (!initialFocusOnMount) {
119
120
  raf = window.requestAnimationFrame(() => {
120
- const items = getAllToolbarItemsIn(navigableToolbarRef);
121
+ const items = getAllFocusableToolbarItemsIn(navigableToolbarRef);
121
122
  const index = initialIndex || 0;
122
123
  if (items[index] && hasFocusWithin(navigableToolbarRef)) {
123
124
  items[index].focus({
@@ -134,21 +135,14 @@ function useToolbarFocus({
134
135
  if (!onIndexChange || !navigableToolbarRef) return;
135
136
  // When the toolbar element is unmounted and onIndexChange is passed, we
136
137
  // pass the focused toolbar item index so it can be hydrated later.
137
- const items = getAllToolbarItemsIn(navigableToolbarRef);
138
+ const items = getAllFocusableToolbarItemsIn(navigableToolbarRef);
138
139
  const index = items.findIndex(item => item.tabIndex === 0);
139
140
  onIndexChange(index);
140
141
  };
141
- }, [initialIndex, initialFocusOnMount, toolbarRef]);
142
+ }, [initialIndex, initialFocusOnMount, onIndexChange, toolbarRef]);
142
143
  const {
143
- lastFocus
144
- } = useSelect(select => {
145
- const {
146
- getLastFocus
147
- } = select(blockEditorStore);
148
- return {
149
- lastFocus: getLastFocus()
150
- };
151
- }, []);
144
+ getLastFocus
145
+ } = unlock(useSelect(blockEditorStore));
152
146
  /**
153
147
  * Handles returning focus to the block editor canvas when pressing escape.
154
148
  */
@@ -156,6 +150,7 @@ function useToolbarFocus({
156
150
  const navigableToolbarRef = toolbarRef.current;
157
151
  if (focusEditorOnEscape) {
158
152
  const handleKeyDown = event => {
153
+ const lastFocus = getLastFocus();
159
154
  if (event.keyCode === ESCAPE && lastFocus?.current) {
160
155
  // Focus the last focused element when pressing escape.
161
156
  event.preventDefault();
@@ -167,7 +162,7 @@ function useToolbarFocus({
167
162
  navigableToolbarRef.removeEventListener('keydown', handleKeyDown);
168
163
  };
169
164
  }
170
- }, [focusEditorOnEscape, lastFocus, toolbarRef]);
165
+ }, [focusEditorOnEscape, getLastFocus, toolbarRef]);
171
166
  }
172
167
  export default function NavigableToolbar({
173
168
  children,
@@ -183,9 +178,9 @@ export default function NavigableToolbar({
183
178
  useToolbarFocus({
184
179
  toolbarRef,
185
180
  focusOnMount,
186
- isAccessibleToolbar,
187
181
  defaultIndex: initialIndex,
188
182
  onIndexChange,
183
+ isAccessibleToolbar,
189
184
  shouldUseKeyboardFocusShortcut,
190
185
  focusEditorOnEscape
191
186
  });