@wordpress/block-editor 12.0.0 → 12.2.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 (627) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/build/autocompleters/block.js +13 -5
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +6 -3
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-controls/slot.js +12 -4
  8. package/build/components/block-controls/slot.js.map +1 -1
  9. package/build/components/block-controls/slot.native.js +10 -1
  10. package/build/components/block-controls/slot.native.js.map +1 -1
  11. package/build/components/block-draggable/index.js +11 -7
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.js +2 -2
  14. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  15. package/build/components/block-editing-mode/index.js +84 -0
  16. package/build/components/block-editing-mode/index.js.map +1 -0
  17. package/build/components/block-list/block-invalid-warning.native.js +15 -7
  18. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  19. package/build/components/block-list/block-list-block-context.js +15 -0
  20. package/build/components/block-list/block-list-block-context.js.map +1 -0
  21. package/build/components/block-list/block-list-item-cell.native.js +15 -2
  22. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  23. package/build/components/block-list/block-list-item.native.js +158 -195
  24. package/build/components/block-list/block-list-item.native.js.map +1 -1
  25. package/build/components/block-list/block-outline.native.js +57 -0
  26. package/build/components/block-list/block-outline.native.js.map +1 -0
  27. package/build/components/block-list/block.js +29 -37
  28. package/build/components/block-list/block.js.map +1 -1
  29. package/build/components/block-list/block.native.js +347 -311
  30. package/build/components/block-list/block.native.js.map +1 -1
  31. package/build/components/block-list/index.native.js +260 -357
  32. package/build/components/block-list/index.native.js.map +1 -1
  33. package/build/components/block-list/insertion-point.native.js +4 -2
  34. package/build/components/block-list/insertion-point.native.js.map +1 -1
  35. package/build/components/block-list/use-block-props/index.js +2 -2
  36. package/build/components/block-list/use-block-props/index.js.map +1 -1
  37. package/build/components/block-list/use-in-between-inserter.js +7 -5
  38. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  39. package/build/components/block-list-appender/index.js +15 -1
  40. package/build/components/block-list-appender/index.js.map +1 -1
  41. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +19 -4
  42. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  43. package/build/components/block-settings-menu/block-settings-dropdown.js +8 -10
  44. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  45. package/build/components/block-settings-menu-controls/index.js +15 -4
  46. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  47. package/build/components/block-styles/preview-panel.js +1 -2
  48. package/build/components/block-styles/preview-panel.js.map +1 -1
  49. package/build/components/block-switcher/block-transformations-menu.js +8 -0
  50. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  51. package/build/components/block-switcher/block-variation-transformations.js +125 -0
  52. package/build/components/block-switcher/block-variation-transformations.js.map +1 -0
  53. package/build/components/block-switcher/index.js +34 -12
  54. package/build/components/block-switcher/index.js.map +1 -1
  55. package/build/components/block-switcher/pattern-transformations-menu.js +3 -3
  56. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  57. package/build/components/block-toolbar/index.js +9 -7
  58. package/build/components/block-toolbar/index.js.map +1 -1
  59. package/build/components/block-tools/block-contextual-toolbar.js +22 -65
  60. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  61. package/build/components/block-tools/insertion-point.js +11 -5
  62. package/build/components/block-tools/insertion-point.js.map +1 -1
  63. package/build/components/block-tools/selected-block-popover.js +3 -8
  64. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  65. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  66. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  67. package/build/components/convert-to-group-buttons/index.js +7 -2
  68. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  69. package/build/components/convert-to-group-buttons/index.native.js +87 -3
  70. package/build/components/convert-to-group-buttons/index.native.js.map +1 -1
  71. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +23 -37
  72. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  73. package/build/components/global-styles/advanced-panel.js +86 -0
  74. package/build/components/global-styles/advanced-panel.js.map +1 -0
  75. package/build/components/global-styles/color-panel.js +4 -1
  76. package/build/components/global-styles/color-panel.js.map +1 -1
  77. package/build/components/global-styles/dimensions-panel.js +9 -8
  78. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  79. package/build/components/global-styles/hooks.js +1 -2
  80. package/build/components/global-styles/hooks.js.map +1 -1
  81. package/build/components/global-styles/index.js +24 -0
  82. package/build/components/global-styles/index.js.map +1 -1
  83. package/build/components/global-styles/typography-panel.js +1 -1
  84. package/build/components/global-styles/typography-panel.js.map +1 -1
  85. package/build/components/global-styles/use-global-styles-output.js +27 -4
  86. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  87. package/build/components/global-styles/utils.js +30 -0
  88. package/build/components/global-styles/utils.js.map +1 -1
  89. package/build/components/iframe/index.js +14 -7
  90. package/build/components/iframe/index.js.map +1 -1
  91. package/build/components/image-editor/use-save-image.js +24 -8
  92. package/build/components/image-editor/use-save-image.js.map +1 -1
  93. package/build/components/inner-blocks/index.js +2 -1
  94. package/build/components/inner-blocks/index.js.map +1 -1
  95. package/build/components/inner-blocks/index.native.js +7 -7
  96. package/build/components/inner-blocks/index.native.js.map +1 -1
  97. package/build/components/inner-blocks/use-nested-settings-update.js +13 -5
  98. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  99. package/build/components/inserter/index.js +3 -7
  100. package/build/components/inserter/index.js.map +1 -1
  101. package/build/components/inserter/quick-inserter.js +2 -4
  102. package/build/components/inserter/quick-inserter.js.map +1 -1
  103. package/build/components/inserter/search-results.js +19 -6
  104. package/build/components/inserter/search-results.js.map +1 -1
  105. package/build/components/inserter-draggable-blocks/index.js +5 -0
  106. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  107. package/build/components/inspector-controls/fill.js +1 -1
  108. package/build/components/inspector-controls/fill.js.map +1 -1
  109. package/build/components/inspector-controls/fill.native.js +1 -1
  110. package/build/components/inspector-controls/fill.native.js.map +1 -1
  111. package/build/components/inspector-controls/slot.js +3 -6
  112. package/build/components/inspector-controls/slot.js.map +1 -1
  113. package/build/components/inspector-controls/slot.native.js +1 -1
  114. package/build/components/inspector-controls/slot.native.js.map +1 -1
  115. package/build/components/line-height-control/index.js +7 -2
  116. package/build/components/line-height-control/index.js.map +1 -1
  117. package/build/components/link-control/use-internal-input-value.js +9 -8
  118. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  119. package/build/components/list-view/appender.js +6 -1
  120. package/build/components/list-view/appender.js.map +1 -1
  121. package/build/components/list-view/block-contents.js +9 -2
  122. package/build/components/list-view/block-contents.js.map +1 -1
  123. package/build/components/list-view/block-select-button.js +2 -1
  124. package/build/components/list-view/block-select-button.js.map +1 -1
  125. package/build/components/list-view/block.js +25 -29
  126. package/build/components/list-view/block.js.map +1 -1
  127. package/build/components/list-view/branch.js +1 -3
  128. package/build/components/list-view/branch.js.map +1 -1
  129. package/build/components/list-view/index.js +43 -22
  130. package/build/components/list-view/index.js.map +1 -1
  131. package/build/components/list-view/use-list-view-client-ids.js +27 -3
  132. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  133. package/build/components/list-view/use-list-view-drop-zone.js +163 -11
  134. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  135. package/build/components/media-placeholder/index.js +68 -7
  136. package/build/components/media-placeholder/index.js.map +1 -1
  137. package/build/components/multi-selection-inspector/index.js +2 -2
  138. package/build/components/multi-selection-inspector/index.js.map +1 -1
  139. package/build/components/preview-options/index.js +6 -1
  140. package/build/components/preview-options/index.js.map +1 -1
  141. package/build/components/publish-date-time-picker/index.js +0 -2
  142. package/build/components/publish-date-time-picker/index.js.map +1 -1
  143. package/build/components/spacing-sizes-control/spacing-input-control.js +1 -1
  144. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  145. package/build/components/url-input/index.js +4 -2
  146. package/build/components/url-input/index.js.map +1 -1
  147. package/build/components/use-block-drop-zone/index.js +25 -15
  148. package/build/components/use-block-drop-zone/index.js.map +1 -1
  149. package/build/components/use-resize-canvas/index.js +8 -1
  150. package/build/components/use-resize-canvas/index.js.map +1 -1
  151. package/build/components/writing-flow/use-arrow-nav.js +13 -7
  152. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  153. package/build/hooks/align.js +4 -8
  154. package/build/hooks/align.js.map +1 -1
  155. package/build/hooks/behaviors.js +115 -0
  156. package/build/hooks/behaviors.js.map +1 -0
  157. package/build/hooks/border.js +1 -1
  158. package/build/hooks/border.js.map +1 -1
  159. package/build/hooks/color.js +1 -1
  160. package/build/hooks/color.js.map +1 -1
  161. package/build/hooks/content-lock-ui.js +8 -12
  162. package/build/hooks/content-lock-ui.js.map +1 -1
  163. package/build/hooks/dimensions.js +0 -30
  164. package/build/hooks/dimensions.js.map +1 -1
  165. package/build/hooks/duotone.js +5 -9
  166. package/build/hooks/duotone.js.map +1 -1
  167. package/build/hooks/index.js +2 -0
  168. package/build/hooks/index.js.map +1 -1
  169. package/build/hooks/index.native.js +8 -0
  170. package/build/hooks/index.native.js.map +1 -1
  171. package/build/hooks/layout.js +10 -11
  172. package/build/hooks/layout.js.map +1 -1
  173. package/build/hooks/position.js +1 -1
  174. package/build/hooks/position.js.map +1 -1
  175. package/build/hooks/style.js +1 -1
  176. package/build/hooks/style.js.map +1 -1
  177. package/build/hooks/use-editor-wrapper-styles.native.js +255 -0
  178. package/build/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  179. package/build/hooks/use-typography-props.js +14 -10
  180. package/build/hooks/use-typography-props.js.map +1 -1
  181. package/build/index.native.js +31 -0
  182. package/build/index.native.js.map +1 -0
  183. package/build/private-apis.js +4 -7
  184. package/build/private-apis.js.map +1 -1
  185. package/build/store/private-actions.js +46 -0
  186. package/build/store/private-actions.js.map +1 -1
  187. package/build/store/private-selectors.js +88 -0
  188. package/build/store/private-selectors.js.map +1 -1
  189. package/build/store/reducer.js +36 -1
  190. package/build/store/reducer.js.map +1 -1
  191. package/build/store/selectors.js +28 -18
  192. package/build/store/selectors.js.map +1 -1
  193. package/build/utils/order-inserter-block-items.js +41 -0
  194. package/build/utils/order-inserter-block-items.js.map +1 -0
  195. package/build/utils/use-should-contextual-toolbar-show.js +16 -12
  196. package/build/utils/use-should-contextual-toolbar-show.js.map +1 -1
  197. package/build-module/autocompleters/block.js +12 -5
  198. package/build-module/autocompleters/block.js.map +1 -1
  199. package/build-module/components/block-breadcrumb/index.js +5 -3
  200. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  201. package/build-module/components/block-controls/slot.js +11 -4
  202. package/build-module/components/block-controls/slot.js.map +1 -1
  203. package/build-module/components/block-controls/slot.native.js +9 -1
  204. package/build-module/components/block-controls/slot.native.js.map +1 -1
  205. package/build-module/components/block-draggable/index.js +10 -6
  206. package/build-module/components/block-draggable/index.js.map +1 -1
  207. package/build-module/components/block-draggable/use-scroll-when-dragging.js +2 -2
  208. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  209. package/build-module/components/block-editing-mode/index.js +72 -0
  210. package/build-module/components/block-editing-mode/index.js.map +1 -0
  211. package/build-module/components/block-list/block-invalid-warning.native.js +16 -8
  212. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  213. package/build-module/components/block-list/block-list-block-context.js +6 -0
  214. package/build-module/components/block-list/block-list-block-context.js.map +1 -0
  215. package/build-module/components/block-list/block-list-item-cell.native.js +13 -2
  216. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  217. package/build-module/components/block-list/block-list-item.native.js +160 -190
  218. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  219. package/build-module/components/block-list/block-outline.native.js +44 -0
  220. package/build-module/components/block-list/block-outline.native.js.map +1 -0
  221. package/build-module/components/block-list/block.js +26 -34
  222. package/build-module/components/block-list/block.js.map +1 -1
  223. package/build-module/components/block-list/block.native.js +345 -310
  224. package/build-module/components/block-list/block.native.js.map +1 -1
  225. package/build-module/components/block-list/index.native.js +263 -355
  226. package/build-module/components/block-list/index.native.js.map +1 -1
  227. package/build-module/components/block-list/insertion-point.native.js +4 -2
  228. package/build-module/components/block-list/insertion-point.native.js.map +1 -1
  229. package/build-module/components/block-list/use-block-props/index.js +1 -1
  230. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  231. package/build-module/components/block-list/use-in-between-inserter.js +6 -5
  232. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  233. package/build-module/components/block-list-appender/index.js +15 -1
  234. package/build-module/components/block-list-appender/index.js.map +1 -1
  235. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -4
  236. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  237. package/build-module/components/block-settings-menu/block-settings-dropdown.js +8 -9
  238. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  239. package/build-module/components/block-settings-menu-controls/index.js +13 -5
  240. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  241. package/build-module/components/block-styles/preview-panel.js +1 -2
  242. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  243. package/build-module/components/block-switcher/block-transformations-menu.js +7 -0
  244. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  245. package/build-module/components/block-switcher/block-variation-transformations.js +108 -0
  246. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -0
  247. package/build-module/components/block-switcher/index.js +33 -12
  248. package/build-module/components/block-switcher/index.js.map +1 -1
  249. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -3
  250. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  251. package/build-module/components/block-toolbar/index.js +8 -7
  252. package/build-module/components/block-toolbar/index.js.map +1 -1
  253. package/build-module/components/block-tools/block-contextual-toolbar.js +22 -65
  254. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  255. package/build-module/components/block-tools/insertion-point.js +11 -5
  256. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  257. package/build-module/components/block-tools/selected-block-popover.js +3 -7
  258. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  259. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  260. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  261. package/build-module/components/convert-to-group-buttons/index.js +7 -2
  262. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  263. package/build-module/components/convert-to-group-buttons/index.native.js +76 -1
  264. package/build-module/components/convert-to-group-buttons/index.native.js.map +1 -1
  265. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +22 -36
  266. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  267. package/build-module/components/global-styles/advanced-panel.js +74 -0
  268. package/build-module/components/global-styles/advanced-panel.js.map +1 -0
  269. package/build-module/components/global-styles/color-panel.js +5 -2
  270. package/build-module/components/global-styles/color-panel.js.map +1 -1
  271. package/build-module/components/global-styles/dimensions-panel.js +9 -8
  272. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  273. package/build-module/components/global-styles/hooks.js +1 -2
  274. package/build-module/components/global-styles/hooks.js.map +1 -1
  275. package/build-module/components/global-styles/index.js +3 -1
  276. package/build-module/components/global-styles/index.js.map +1 -1
  277. package/build-module/components/global-styles/typography-panel.js +1 -1
  278. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  279. package/build-module/components/global-styles/use-global-styles-output.js +25 -4
  280. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  281. package/build-module/components/global-styles/utils.js +25 -0
  282. package/build-module/components/global-styles/utils.js.map +1 -1
  283. package/build-module/components/iframe/index.js +15 -8
  284. package/build-module/components/iframe/index.js.map +1 -1
  285. package/build-module/components/image-editor/use-save-image.js +24 -8
  286. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  287. package/build-module/components/inner-blocks/index.js +2 -1
  288. package/build-module/components/inner-blocks/index.js.map +1 -1
  289. package/build-module/components/inner-blocks/index.native.js +7 -6
  290. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  291. package/build-module/components/inner-blocks/use-nested-settings-update.js +13 -5
  292. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  293. package/build-module/components/inserter/index.js +3 -7
  294. package/build-module/components/inserter/index.js.map +1 -1
  295. package/build-module/components/inserter/quick-inserter.js +2 -4
  296. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  297. package/build-module/components/inserter/search-results.js +16 -6
  298. package/build-module/components/inserter/search-results.js.map +1 -1
  299. package/build-module/components/inserter-draggable-blocks/index.js +4 -0
  300. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  301. package/build-module/components/inspector-controls/fill.js +1 -1
  302. package/build-module/components/inspector-controls/fill.js.map +1 -1
  303. package/build-module/components/inspector-controls/fill.native.js +1 -1
  304. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  305. package/build-module/components/inspector-controls/slot.js +4 -7
  306. package/build-module/components/inspector-controls/slot.js.map +1 -1
  307. package/build-module/components/inspector-controls/slot.native.js +1 -1
  308. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  309. package/build-module/components/line-height-control/index.js +7 -2
  310. package/build-module/components/line-height-control/index.js.map +1 -1
  311. package/build-module/components/link-control/use-internal-input-value.js +9 -8
  312. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  313. package/build-module/components/list-view/appender.js +6 -2
  314. package/build-module/components/list-view/appender.js.map +1 -1
  315. package/build-module/components/list-view/block-contents.js +9 -3
  316. package/build-module/components/list-view/block-contents.js.map +1 -1
  317. package/build-module/components/list-view/block-select-button.js +2 -1
  318. package/build-module/components/list-view/block-select-button.js.map +1 -1
  319. package/build-module/components/list-view/block.js +24 -29
  320. package/build-module/components/list-view/block.js.map +1 -1
  321. package/build-module/components/list-view/branch.js +1 -3
  322. package/build-module/components/list-view/branch.js.map +1 -1
  323. package/build-module/components/list-view/index.js +44 -23
  324. package/build-module/components/list-view/index.js.map +1 -1
  325. package/build-module/components/list-view/use-list-view-client-ids.js +26 -3
  326. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  327. package/build-module/components/list-view/use-list-view-drop-zone.js +160 -11
  328. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  329. package/build-module/components/media-placeholder/index.js +66 -7
  330. package/build-module/components/media-placeholder/index.js.map +1 -1
  331. package/build-module/components/multi-selection-inspector/index.js +2 -2
  332. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  333. package/build-module/components/preview-options/index.js +7 -2
  334. package/build-module/components/preview-options/index.js.map +1 -1
  335. package/build-module/components/publish-date-time-picker/index.js +0 -2
  336. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  337. package/build-module/components/spacing-sizes-control/spacing-input-control.js +1 -1
  338. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  339. package/build-module/components/url-input/index.js +4 -2
  340. package/build-module/components/url-input/index.js.map +1 -1
  341. package/build-module/components/use-block-drop-zone/index.js +25 -16
  342. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  343. package/build-module/components/use-resize-canvas/index.js +8 -1
  344. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  345. package/build-module/components/writing-flow/use-arrow-nav.js +13 -7
  346. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  347. package/build-module/hooks/align.js +4 -7
  348. package/build-module/hooks/align.js.map +1 -1
  349. package/build-module/hooks/behaviors.js +97 -0
  350. package/build-module/hooks/behaviors.js.map +1 -0
  351. package/build-module/hooks/border.js +1 -1
  352. package/build-module/hooks/border.js.map +1 -1
  353. package/build-module/hooks/color.js +1 -1
  354. package/build-module/hooks/color.js.map +1 -1
  355. package/build-module/hooks/content-lock-ui.js +8 -11
  356. package/build-module/hooks/content-lock-ui.js.map +1 -1
  357. package/build-module/hooks/dimensions.js +0 -28
  358. package/build-module/hooks/dimensions.js.map +1 -1
  359. package/build-module/hooks/duotone.js +4 -7
  360. package/build-module/hooks/duotone.js.map +1 -1
  361. package/build-module/hooks/index.js +1 -0
  362. package/build-module/hooks/index.js.map +1 -1
  363. package/build-module/hooks/index.native.js +1 -0
  364. package/build-module/hooks/index.native.js.map +1 -1
  365. package/build-module/hooks/layout.js +9 -11
  366. package/build-module/hooks/layout.js.map +1 -1
  367. package/build-module/hooks/position.js +1 -1
  368. package/build-module/hooks/position.js.map +1 -1
  369. package/build-module/hooks/style.js +1 -1
  370. package/build-module/hooks/style.js.map +1 -1
  371. package/build-module/hooks/use-editor-wrapper-styles.native.js +242 -0
  372. package/build-module/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  373. package/build-module/hooks/use-typography-props.js +14 -10
  374. package/build-module/hooks/use-typography-props.js.map +1 -1
  375. package/build-module/index.native.js +6 -0
  376. package/build-module/index.native.js.map +1 -0
  377. package/build-module/private-apis.js +3 -5
  378. package/build-module/private-apis.js.map +1 -1
  379. package/build-module/store/private-actions.js +42 -0
  380. package/build-module/store/private-actions.js.map +1 -1
  381. package/build-module/store/private-selectors.js +79 -0
  382. package/build-module/store/private-selectors.js.map +1 -1
  383. package/build-module/store/reducer.js +34 -1
  384. package/build-module/store/reducer.js.map +1 -1
  385. package/build-module/store/selectors.js +26 -17
  386. package/build-module/store/selectors.js.map +1 -1
  387. package/build-module/utils/order-inserter-block-items.js +32 -0
  388. package/build-module/utils/order-inserter-block-items.js.map +1 -0
  389. package/build-module/utils/use-should-contextual-toolbar-show.js +16 -12
  390. package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -1
  391. package/build-style/content-rtl.css +32 -14
  392. package/build-style/content.css +32 -14
  393. package/build-style/default-editor-styles-rtl.css +1 -1
  394. package/build-style/default-editor-styles.css +1 -1
  395. package/build-style/style-rtl.css +56 -77
  396. package/build-style/style.css +57 -77
  397. package/package.json +32 -31
  398. package/src/autocompleters/block.js +15 -7
  399. package/src/components/block-breadcrumb/index.js +11 -3
  400. package/src/components/block-breadcrumb/style.scss +2 -1
  401. package/src/components/block-controls/slot.js +8 -4
  402. package/src/components/block-controls/slot.native.js +6 -1
  403. package/src/components/block-draggable/index.js +10 -6
  404. package/src/components/block-draggable/use-scroll-when-dragging.js +8 -2
  405. package/src/components/block-editing-mode/index.js +71 -0
  406. package/src/components/block-list/block-invalid-warning.native.js +17 -9
  407. package/src/components/block-list/block-list-block-context.js +6 -0
  408. package/src/components/block-list/block-list-item-cell.native.js +10 -1
  409. package/src/components/block-list/block-list-item.native.js +180 -208
  410. package/src/components/block-list/block-outline.native.js +58 -0
  411. package/src/components/block-list/block.js +38 -56
  412. package/src/components/block-list/block.native.js +531 -501
  413. package/src/components/block-list/content.scss +5 -6
  414. package/src/components/block-list/index.native.js +324 -382
  415. package/src/components/block-list/insertion-point.native.js +2 -2
  416. package/src/components/block-list/test/block-invalid-warning.native.js +48 -0
  417. package/src/components/block-list/test/index.native.js +205 -0
  418. package/src/components/block-list/use-block-props/index.js +1 -1
  419. package/src/components/block-list/use-in-between-inserter.js +7 -3
  420. package/src/components/block-list-appender/index.js +22 -4
  421. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +26 -1
  422. package/src/components/block-mover/style.scss +1 -0
  423. package/src/components/block-pattern-setup/style.scss +1 -4
  424. package/src/components/block-patterns-list/style.scss +1 -4
  425. package/src/components/block-settings-menu/block-settings-dropdown.js +10 -17
  426. package/src/components/block-settings-menu-controls/index.js +24 -4
  427. package/src/components/block-styles/preview-panel.js +1 -3
  428. package/src/components/block-styles/style.scss +4 -4
  429. package/src/components/block-switcher/block-transformations-menu.js +12 -0
  430. package/src/components/block-switcher/block-variation-transformations.js +115 -0
  431. package/src/components/block-switcher/index.js +38 -5
  432. package/src/components/block-switcher/pattern-transformations-menu.js +5 -5
  433. package/src/components/block-switcher/style.scss +6 -5
  434. package/src/components/block-toolbar/index.js +10 -11
  435. package/src/components/block-tools/block-contextual-toolbar.js +32 -67
  436. package/src/components/block-tools/insertion-point.js +23 -9
  437. package/src/components/block-tools/selected-block-popover.js +3 -5
  438. package/src/components/block-tools/style.scss +8 -0
  439. package/src/components/button-block-appender/content.scss +22 -0
  440. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +16 -2
  441. package/src/components/convert-to-group-buttons/index.js +9 -2
  442. package/src/components/convert-to-group-buttons/index.native.js +79 -1
  443. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -38
  444. package/src/components/global-styles/advanced-panel.js +82 -0
  445. package/src/components/global-styles/color-panel.js +6 -1
  446. package/src/components/global-styles/dimensions-panel.js +9 -8
  447. package/src/components/global-styles/hooks.js +1 -5
  448. package/src/components/global-styles/index.js +6 -1
  449. package/src/components/global-styles/style.scss +17 -0
  450. package/src/components/global-styles/test/utils.js +57 -1
  451. package/src/components/global-styles/typography-panel.js +1 -1
  452. package/src/components/global-styles/use-global-styles-output.js +21 -3
  453. package/src/components/global-styles/utils.js +27 -0
  454. package/src/components/iframe/index.js +22 -12
  455. package/src/components/image-editor/use-save-image.js +20 -9
  456. package/src/components/inner-blocks/README.md +5 -0
  457. package/src/components/inner-blocks/index.js +2 -0
  458. package/src/components/inner-blocks/index.native.js +16 -6
  459. package/src/components/inner-blocks/use-nested-settings-update.js +20 -3
  460. package/src/components/inserter/index.js +1 -9
  461. package/src/components/inserter/quick-inserter.js +0 -2
  462. package/src/components/inserter/search-results.js +32 -6
  463. package/src/components/inserter-draggable-blocks/index.js +4 -0
  464. package/src/components/inspector-controls/fill.js +1 -1
  465. package/src/components/inspector-controls/fill.native.js +1 -1
  466. package/src/components/inspector-controls/slot.js +4 -9
  467. package/src/components/inspector-controls/slot.native.js +1 -1
  468. package/src/components/line-height-control/index.js +7 -2
  469. package/src/components/line-height-control/stories/index.js +1 -1
  470. package/src/components/link-control/test/index.js +42 -0
  471. package/src/components/link-control/use-internal-input-value.js +8 -7
  472. package/src/components/list-view/appender.js +3 -2
  473. package/src/components/list-view/block-contents.js +32 -20
  474. package/src/components/list-view/block-select-button.js +5 -1
  475. package/src/components/list-view/block.js +34 -37
  476. package/src/components/list-view/branch.js +1 -7
  477. package/src/components/list-view/index.js +42 -17
  478. package/src/components/list-view/style.scss +7 -7
  479. package/src/components/list-view/test/use-list-view-drop-zone.js +88 -12
  480. package/src/components/list-view/use-list-view-client-ids.js +21 -4
  481. package/src/components/list-view/use-list-view-drop-zone.js +194 -11
  482. package/src/components/media-placeholder/index.js +74 -1
  483. package/src/components/multi-selection-inspector/index.js +2 -2
  484. package/src/components/preview-options/index.js +9 -2
  485. package/src/components/publish-date-time-picker/index.js +0 -2
  486. package/src/components/spacing-sizes-control/spacing-input-control.js +1 -0
  487. package/src/components/url-input/README.md +6 -0
  488. package/src/components/url-input/index.js +2 -2
  489. package/src/components/use-block-drop-zone/index.js +31 -17
  490. package/src/components/use-resize-canvas/index.js +9 -1
  491. package/src/components/writing-flow/test/index.js +15 -0
  492. package/src/components/writing-flow/use-arrow-nav.js +17 -4
  493. package/src/hooks/align.js +5 -12
  494. package/src/hooks/behaviors.js +104 -0
  495. package/src/hooks/border.js +2 -1
  496. package/src/hooks/color.js +2 -1
  497. package/src/hooks/content-lock-ui.js +3 -15
  498. package/src/hooks/dimensions.js +0 -40
  499. package/src/hooks/duotone.js +4 -11
  500. package/src/hooks/index.js +1 -0
  501. package/src/hooks/index.native.js +1 -0
  502. package/src/hooks/layout.js +14 -20
  503. package/src/hooks/position.js +2 -1
  504. package/src/hooks/style.js +2 -1
  505. package/src/hooks/test/use-editor-wrapper-styles.native.js +282 -0
  506. package/src/hooks/test/use-typography-props.js +47 -2
  507. package/src/hooks/use-editor-wrapper-styles.native.js +250 -0
  508. package/src/hooks/use-editor-wrapper-styles.native.scss +11 -0
  509. package/src/hooks/use-typography-props.js +10 -11
  510. package/src/index.native.js +6 -0
  511. package/src/private-apis.js +2 -4
  512. package/src/store/private-actions.js +39 -0
  513. package/src/store/private-selectors.js +95 -0
  514. package/src/store/reducer.js +27 -0
  515. package/src/store/selectors.js +25 -15
  516. package/src/store/test/private-actions.js +32 -1
  517. package/src/store/test/private-selectors.js +158 -0
  518. package/src/store/test/reducer.js +48 -0
  519. package/src/style.scss +0 -3
  520. package/src/utils/order-inserter-block-items.js +26 -0
  521. package/src/utils/use-should-contextual-toolbar-show.js +19 -9
  522. package/tsconfig.json +1 -0
  523. package/tsconfig.tsbuildinfo +1 -1
  524. package/build/components/block-list/block-list-compact.native.js +0 -75
  525. package/build/components/block-list/block-list-compact.native.js.map +0 -1
  526. package/build/components/off-canvas-editor/appender.js +0 -125
  527. package/build/components/off-canvas-editor/appender.js.map +0 -1
  528. package/build/components/off-canvas-editor/block-contents.js +0 -141
  529. package/build/components/off-canvas-editor/block-contents.js.map +0 -1
  530. package/build/components/off-canvas-editor/block-select-button.js +0 -126
  531. package/build/components/off-canvas-editor/block-select-button.js.map +0 -1
  532. package/build/components/off-canvas-editor/block.js +0 -297
  533. package/build/components/off-canvas-editor/block.js.map +0 -1
  534. package/build/components/off-canvas-editor/branch.js +0 -197
  535. package/build/components/off-canvas-editor/branch.js.map +0 -1
  536. package/build/components/off-canvas-editor/context.js +0 -19
  537. package/build/components/off-canvas-editor/context.js.map +0 -1
  538. package/build/components/off-canvas-editor/drop-indicator.js +0 -118
  539. package/build/components/off-canvas-editor/drop-indicator.js.map +0 -1
  540. package/build/components/off-canvas-editor/expander.js +0 -41
  541. package/build/components/off-canvas-editor/expander.js.map +0 -1
  542. package/build/components/off-canvas-editor/index.js +0 -236
  543. package/build/components/off-canvas-editor/index.js.map +0 -1
  544. package/build/components/off-canvas-editor/leaf-more-menu.js +0 -146
  545. package/build/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  546. package/build/components/off-canvas-editor/leaf.js +0 -60
  547. package/build/components/off-canvas-editor/leaf.js.map +0 -1
  548. package/build/components/off-canvas-editor/link-ui.js +0 -186
  549. package/build/components/off-canvas-editor/link-ui.js.map +0 -1
  550. package/build/components/off-canvas-editor/update-attributes.js +0 -108
  551. package/build/components/off-canvas-editor/update-attributes.js.map +0 -1
  552. package/build/components/off-canvas-editor/use-block-selection.js +0 -139
  553. package/build/components/off-canvas-editor/use-block-selection.js.map +0 -1
  554. package/build/components/off-canvas-editor/use-inserted-block.js +0 -58
  555. package/build/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  556. package/build/components/off-canvas-editor/use-list-view-client-ids.js +0 -33
  557. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  558. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +0 -235
  559. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  560. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -60
  561. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  562. package/build/components/off-canvas-editor/utils.js +0 -60
  563. package/build/components/off-canvas-editor/utils.js.map +0 -1
  564. package/build-module/components/block-list/block-list-compact.native.js +0 -60
  565. package/build-module/components/block-list/block-list-compact.native.js.map +0 -1
  566. package/build-module/components/off-canvas-editor/appender.js +0 -108
  567. package/build-module/components/off-canvas-editor/appender.js.map +0 -1
  568. package/build-module/components/off-canvas-editor/block-contents.js +0 -121
  569. package/build-module/components/off-canvas-editor/block-contents.js.map +0 -1
  570. package/build-module/components/off-canvas-editor/block-select-button.js +0 -107
  571. package/build-module/components/off-canvas-editor/block-select-button.js.map +0 -1
  572. package/build-module/components/off-canvas-editor/block.js +0 -273
  573. package/build-module/components/off-canvas-editor/block.js.map +0 -1
  574. package/build-module/components/off-canvas-editor/branch.js +0 -179
  575. package/build-module/components/off-canvas-editor/branch.js.map +0 -1
  576. package/build-module/components/off-canvas-editor/context.js +0 -7
  577. package/build-module/components/off-canvas-editor/context.js.map +0 -1
  578. package/build-module/components/off-canvas-editor/drop-indicator.js +0 -111
  579. package/build-module/components/off-canvas-editor/drop-indicator.js.map +0 -1
  580. package/build-module/components/off-canvas-editor/expander.js +0 -32
  581. package/build-module/components/off-canvas-editor/expander.js.map +0 -1
  582. package/build-module/components/off-canvas-editor/index.js +0 -213
  583. package/build-module/components/off-canvas-editor/index.js.map +0 -1
  584. package/build-module/components/off-canvas-editor/leaf-more-menu.js +0 -128
  585. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  586. package/build-module/components/off-canvas-editor/leaf.js +0 -45
  587. package/build-module/components/off-canvas-editor/leaf.js.map +0 -1
  588. package/build-module/components/off-canvas-editor/link-ui.js +0 -166
  589. package/build-module/components/off-canvas-editor/link-ui.js.map +0 -1
  590. package/build-module/components/off-canvas-editor/update-attributes.js +0 -97
  591. package/build-module/components/off-canvas-editor/update-attributes.js.map +0 -1
  592. package/build-module/components/off-canvas-editor/use-block-selection.js +0 -124
  593. package/build-module/components/off-canvas-editor/use-block-selection.js.map +0 -1
  594. package/build-module/components/off-canvas-editor/use-inserted-block.js +0 -47
  595. package/build-module/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  596. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +0 -24
  597. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  598. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +0 -220
  599. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  600. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -50
  601. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  602. package/build-module/components/off-canvas-editor/utils.js +0 -44
  603. package/build-module/components/off-canvas-editor/utils.js.map +0 -1
  604. package/src/components/block-list/block-list-compact.native.js +0 -63
  605. package/src/components/off-canvas-editor/README.md +0 -5
  606. package/src/components/off-canvas-editor/appender.js +0 -124
  607. package/src/components/off-canvas-editor/block-contents.js +0 -156
  608. package/src/components/off-canvas-editor/block-select-button.js +0 -128
  609. package/src/components/off-canvas-editor/block.js +0 -347
  610. package/src/components/off-canvas-editor/branch.js +0 -238
  611. package/src/components/off-canvas-editor/context.js +0 -8
  612. package/src/components/off-canvas-editor/drop-indicator.js +0 -126
  613. package/src/components/off-canvas-editor/expander.js +0 -26
  614. package/src/components/off-canvas-editor/index.js +0 -271
  615. package/src/components/off-canvas-editor/leaf-more-menu.js +0 -157
  616. package/src/components/off-canvas-editor/leaf.js +0 -52
  617. package/src/components/off-canvas-editor/link-ui.js +0 -167
  618. package/src/components/off-canvas-editor/style.scss +0 -34
  619. package/src/components/off-canvas-editor/test/use-inserted-block.js +0 -108
  620. package/src/components/off-canvas-editor/test/utils.js +0 -50
  621. package/src/components/off-canvas-editor/update-attributes.js +0 -99
  622. package/src/components/off-canvas-editor/use-block-selection.js +0 -169
  623. package/src/components/off-canvas-editor/use-inserted-block.js +0 -47
  624. package/src/components/off-canvas-editor/use-list-view-client-ids.js +0 -29
  625. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +0 -260
  626. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -58
  627. package/src/components/off-canvas-editor/utils.js +0 -58
@@ -1,238 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- __experimentalTreeGridRow as TreeGridRow,
6
- __experimentalTreeGridCell as TreeGridCell,
7
- } from '@wordpress/components';
8
- import { AsyncModeProvider, useSelect } from '@wordpress/data';
9
- import { memo } from '@wordpress/element';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
-
15
- import { Appender } from './appender';
16
- import ListViewBlock from './block';
17
- import { useListViewContext } from './context';
18
- import { isClientIdSelected } from './utils';
19
- import { store as blockEditorStore } from '../../store';
20
-
21
- /**
22
- * Given a block, returns the total number of blocks in that subtree. This is used to help determine
23
- * the list position of a block.
24
- *
25
- * When a block is collapsed, we do not count their children as part of that total. In the current drag
26
- * implementation dragged blocks and their children are not counted.
27
- *
28
- * @param {Object} block block tree
29
- * @param {Object} expandedState state that notes which branches are collapsed
30
- * @param {Array} draggedClientIds a list of dragged client ids
31
- * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.
32
- * @return {number} block count
33
- */
34
- function countBlocks(
35
- block,
36
- expandedState,
37
- draggedClientIds,
38
- isExpandedByDefault
39
- ) {
40
- const isDragged = draggedClientIds?.includes( block.clientId );
41
- if ( isDragged ) {
42
- return 0;
43
- }
44
- const isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;
45
-
46
- if ( isExpanded ) {
47
- return (
48
- 1 +
49
- block.innerBlocks.reduce(
50
- countReducer(
51
- expandedState,
52
- draggedClientIds,
53
- isExpandedByDefault
54
- ),
55
- 0
56
- )
57
- );
58
- }
59
- return 1;
60
- }
61
- const countReducer =
62
- ( expandedState, draggedClientIds, isExpandedByDefault ) =>
63
- ( count, block ) => {
64
- const isDragged = draggedClientIds?.includes( block.clientId );
65
- if ( isDragged ) {
66
- return count;
67
- }
68
- const isExpanded =
69
- expandedState[ block.clientId ] ?? isExpandedByDefault;
70
- if ( isExpanded && block.innerBlocks.length > 0 ) {
71
- return (
72
- count +
73
- countBlocks(
74
- block,
75
- expandedState,
76
- draggedClientIds,
77
- isExpandedByDefault
78
- )
79
- );
80
- }
81
- return count + 1;
82
- };
83
-
84
- const noop = () => {};
85
-
86
- function ListViewBranch( props ) {
87
- const {
88
- blocks,
89
- selectBlock = noop,
90
- showBlockMovers,
91
- selectedClientIds,
92
- level = 1,
93
- path = '',
94
- isBranchSelected = false,
95
- listPosition = 0,
96
- fixedListWindow,
97
- isExpanded,
98
- parentId,
99
- shouldShowInnerBlocks = true,
100
- showAppender: showAppenderProp = true,
101
- } = props;
102
-
103
- const isContentLocked = useSelect(
104
- ( select ) => {
105
- return !! (
106
- parentId &&
107
- select( blockEditorStore ).getTemplateLock( parentId ) ===
108
- 'contentOnly'
109
- );
110
- },
111
- [ parentId ]
112
- );
113
-
114
- const { expandedState, draggedClientIds } = useListViewContext();
115
-
116
- if ( isContentLocked ) {
117
- return null;
118
- }
119
-
120
- // Only show the appender at the first level.
121
- const showAppender = showAppenderProp && level === 1;
122
-
123
- const filteredBlocks = blocks.filter( Boolean );
124
- const blockCount = filteredBlocks.length;
125
-
126
- // The appender means an extra row in List View, so add 1 to the row count.
127
- const rowCount = showAppender ? blockCount + 1 : blockCount;
128
- let nextPosition = listPosition;
129
-
130
- return (
131
- <>
132
- { filteredBlocks.map( ( block, index ) => {
133
- const { clientId, innerBlocks } = block;
134
-
135
- if ( index > 0 ) {
136
- nextPosition += countBlocks(
137
- filteredBlocks[ index - 1 ],
138
- expandedState,
139
- draggedClientIds,
140
- isExpanded
141
- );
142
- }
143
-
144
- const { itemInView } = fixedListWindow;
145
- const blockInView = itemInView( nextPosition );
146
-
147
- const position = index + 1;
148
- const updatedPath =
149
- path.length > 0
150
- ? `${ path }_${ position }`
151
- : `${ position }`;
152
- const hasNestedBlocks = !! innerBlocks?.length;
153
-
154
- const shouldExpand =
155
- hasNestedBlocks && shouldShowInnerBlocks
156
- ? expandedState[ clientId ] ?? isExpanded
157
- : undefined;
158
-
159
- const isDragged = !! draggedClientIds?.includes( clientId );
160
-
161
- const showBlock = isDragged || blockInView;
162
-
163
- // Make updates to the selected or dragged blocks synchronous,
164
- // but asynchronous for any other block.
165
- const isSelected = isClientIdSelected(
166
- clientId,
167
- selectedClientIds
168
- );
169
- const isSelectedBranch =
170
- isBranchSelected || ( isSelected && hasNestedBlocks );
171
- return (
172
- <AsyncModeProvider key={ clientId } value={ ! isSelected }>
173
- { showBlock && (
174
- <ListViewBlock
175
- block={ block }
176
- selectBlock={ selectBlock }
177
- isSelected={ isSelected }
178
- isBranchSelected={ isSelectedBranch }
179
- isDragged={ isDragged }
180
- level={ level }
181
- position={ position }
182
- rowCount={ rowCount }
183
- siblingBlockCount={ blockCount }
184
- showBlockMovers={ showBlockMovers }
185
- path={ updatedPath }
186
- isExpanded={ shouldExpand }
187
- listPosition={ nextPosition }
188
- selectedClientIds={ selectedClientIds }
189
- />
190
- ) }
191
- { ! showBlock && (
192
- <tr>
193
- <td className="block-editor-list-view-placeholder" />
194
- </tr>
195
- ) }
196
- { hasNestedBlocks && shouldExpand && ! isDragged && (
197
- <ListViewBranch
198
- parentId={ clientId }
199
- blocks={ innerBlocks }
200
- selectBlock={ selectBlock }
201
- showBlockMovers={ showBlockMovers }
202
- level={ level + 1 }
203
- path={ updatedPath }
204
- listPosition={ nextPosition + 1 }
205
- fixedListWindow={ fixedListWindow }
206
- isBranchSelected={ isSelectedBranch }
207
- selectedClientIds={ selectedClientIds }
208
- isExpanded={ isExpanded }
209
- showAppender={ showAppenderProp }
210
- />
211
- ) }
212
- </AsyncModeProvider>
213
- );
214
- } ) }
215
- { showAppender && (
216
- <TreeGridRow
217
- level={ level }
218
- setSize={ rowCount }
219
- positionInSet={ rowCount }
220
- isExpanded={ true }
221
- >
222
- <TreeGridCell>
223
- { ( treeGridCellProps ) => (
224
- <Appender
225
- clientId={ parentId }
226
- nestingLevel={ level }
227
- blockCount={ blockCount }
228
- { ...treeGridCellProps }
229
- />
230
- ) }
231
- </TreeGridCell>
232
- </TreeGridRow>
233
- ) }
234
- </>
235
- );
236
- }
237
-
238
- export default memo( ListViewBranch );
@@ -1,8 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { createContext, useContext } from '@wordpress/element';
5
-
6
- export const ListViewContext = createContext( {} );
7
-
8
- export const useListViewContext = () => useContext( ListViewContext );
@@ -1,126 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { Popover } from '@wordpress/components';
5
- import { useCallback, useMemo } from '@wordpress/element';
6
-
7
- export default function ListViewDropIndicator( {
8
- listViewRef,
9
- blockDropTarget,
10
- } ) {
11
- const { rootClientId, clientId, dropPosition } = blockDropTarget || {};
12
-
13
- const [ rootBlockElement, blockElement ] = useMemo( () => {
14
- if ( ! listViewRef.current ) {
15
- return [];
16
- }
17
-
18
- // The rootClientId will be defined whenever dropping into inner
19
- // block lists, but is undefined when dropping at the root level.
20
- const _rootBlockElement = rootClientId
21
- ? listViewRef.current.querySelector(
22
- `[data-block="${ rootClientId }"]`
23
- )
24
- : undefined;
25
-
26
- // The clientId represents the sibling block, the dragged block will
27
- // usually be inserted adjacent to it. It will be undefined when
28
- // dropping a block into an empty block list.
29
- const _blockElement = clientId
30
- ? listViewRef.current.querySelector(
31
- `[data-block="${ clientId }"]`
32
- )
33
- : undefined;
34
-
35
- return [ _rootBlockElement, _blockElement ];
36
- }, [ rootClientId, clientId ] );
37
-
38
- // The targetElement is the element that the drop indicator will appear
39
- // before or after. When dropping into an empty block list, blockElement
40
- // is undefined, so the indicator will appear after the rootBlockElement.
41
- const targetElement = blockElement || rootBlockElement;
42
-
43
- const getDropIndicatorIndent = useCallback( () => {
44
- if ( ! rootBlockElement ) {
45
- return 0;
46
- }
47
-
48
- // Calculate the indent using the block icon of the root block.
49
- // Using a classname selector here might be flaky and could be
50
- // improved.
51
- const targetElementRect = targetElement.getBoundingClientRect();
52
- const rootBlockIconElement = rootBlockElement.querySelector(
53
- '.block-editor-block-icon'
54
- );
55
- const rootBlockIconRect = rootBlockIconElement.getBoundingClientRect();
56
- return rootBlockIconRect.right - targetElementRect.left;
57
- }, [ rootBlockElement, targetElement ] );
58
-
59
- const style = useMemo( () => {
60
- if ( ! targetElement ) {
61
- return {};
62
- }
63
-
64
- const indent = getDropIndicatorIndent();
65
-
66
- return {
67
- width: targetElement.offsetWidth - indent,
68
- };
69
- }, [ getDropIndicatorIndent, targetElement ] );
70
-
71
- const popoverAnchor = useMemo( () => {
72
- const isValidDropPosition =
73
- dropPosition === 'top' ||
74
- dropPosition === 'bottom' ||
75
- dropPosition === 'inside';
76
- if ( ! targetElement || ! isValidDropPosition ) {
77
- return undefined;
78
- }
79
-
80
- return {
81
- ownerDocument: targetElement.ownerDocument,
82
- getBoundingClientRect() {
83
- const rect = targetElement.getBoundingClientRect();
84
- const indent = getDropIndicatorIndent();
85
-
86
- const left = rect.left + indent;
87
- const right = rect.right;
88
- let top = 0;
89
- let bottom = 0;
90
-
91
- if ( dropPosition === 'top' ) {
92
- top = rect.top;
93
- bottom = rect.top;
94
- } else {
95
- // `dropPosition` is either `bottom` or `inside`
96
- top = rect.bottom;
97
- bottom = rect.bottom;
98
- }
99
-
100
- const width = right - left;
101
- const height = bottom - top;
102
-
103
- return new window.DOMRect( left, top, width, height );
104
- },
105
- };
106
- }, [ targetElement, dropPosition, getDropIndicatorIndent ] );
107
-
108
- if ( ! targetElement ) {
109
- return null;
110
- }
111
-
112
- return (
113
- <Popover
114
- animate={ false }
115
- anchor={ popoverAnchor }
116
- focusOnMount={ false }
117
- className="block-editor-list-view-drop-indicator"
118
- variant="unstyled"
119
- >
120
- <div
121
- style={ style }
122
- className="block-editor-list-view-drop-indicator__line"
123
- />
124
- </Popover>
125
- );
126
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { chevronRightSmall, chevronLeftSmall, Icon } from '@wordpress/icons';
5
- import { isRTL } from '@wordpress/i18n';
6
-
7
- export default function ListViewExpander( { onClick } ) {
8
- return (
9
- // Keyboard events are handled by TreeGrid see: components/src/tree-grid/index.js
10
- //
11
- // The expander component is implemented as a pseudo element in the w3 example
12
- // https://www.w3.org/TR/wai-aria-practices/examples/treegrid/treegrid-1.html
13
- //
14
- // We've mimicked this by adding an icon with aria-hidden set to true to hide this from the accessibility tree.
15
- // For the current tree grid implementation, please do not try to make this a button.
16
- //
17
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
18
- <span
19
- className="block-editor-list-view__expander"
20
- onClick={ ( event ) => onClick( event, { forceToggle: true } ) }
21
- aria-hidden="true"
22
- >
23
- <Icon icon={ isRTL() ? chevronLeftSmall : chevronRightSmall } />
24
- </span>
25
- );
26
- }
@@ -1,271 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- useMergeRefs,
6
- __experimentalUseFixedWindowList as useFixedWindowList,
7
- } from '@wordpress/compose';
8
- import {
9
- __experimentalTreeGrid as TreeGrid,
10
- __experimentalTreeGridRow as TreeGridRow,
11
- __experimentalTreeGridCell as TreeGridCell,
12
- } from '@wordpress/components';
13
- import { AsyncModeProvider, useSelect } from '@wordpress/data';
14
- import {
15
- useCallback,
16
- useEffect,
17
- useMemo,
18
- useRef,
19
- useReducer,
20
- forwardRef,
21
- } from '@wordpress/element';
22
- import { __ } from '@wordpress/i18n';
23
-
24
- /**
25
- * Internal dependencies
26
- */
27
- import ListViewBranch from './branch';
28
- import { ListViewContext } from './context';
29
- import ListViewDropIndicator from './drop-indicator';
30
- import useBlockSelection from './use-block-selection';
31
- import useListViewClientIds from './use-list-view-client-ids';
32
- import useListViewDropZone from './use-list-view-drop-zone';
33
- import useListViewExpandSelectedItem from './use-list-view-expand-selected-item';
34
- import { store as blockEditorStore } from '../../store';
35
-
36
- const expanded = ( state, action ) => {
37
- if ( Array.isArray( action.clientIds ) ) {
38
- return {
39
- ...state,
40
- ...action.clientIds.reduce(
41
- ( newState, id ) => ( {
42
- ...newState,
43
- [ id ]: action.type === 'expand',
44
- } ),
45
- {}
46
- ),
47
- };
48
- }
49
- return state;
50
- };
51
-
52
- export const BLOCK_LIST_ITEM_HEIGHT = 36;
53
-
54
- /**
55
- * Show a hierarchical list of blocks.
56
- *
57
- * @param {Object} props Components props.
58
- * @param {string} props.id An HTML element id for the root element of ListView.
59
- * @param {string} props.parentClientId The client id of the parent block.
60
- * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
61
- * @param {boolean} props.showBlockMovers Flag to enable block movers
62
- * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
63
- * @param {Object} props.LeafMoreMenu Optional more menu substitution.
64
- * @param {string} props.description Optional accessible description for the tree grid component.
65
- * @param {string} props.onSelect Optional callback to be invoked when a block is selected.
66
- * @param {string} props.showAppender Flag to show or hide the block appender.
67
- * @param {Function} props.renderAdditionalBlockUI Function that renders additional block content UI.
68
- * @param {Object} ref Forwarded ref.
69
- */
70
- function OffCanvasEditor(
71
- {
72
- id,
73
- parentClientId,
74
- blocks,
75
- showBlockMovers = false,
76
- isExpanded = false,
77
- showAppender = true,
78
- LeafMoreMenu,
79
- description = __( 'Block navigation structure' ),
80
- onSelect,
81
- renderAdditionalBlockUI,
82
- },
83
- ref
84
- ) {
85
- const { getBlock } = useSelect( blockEditorStore );
86
- const { clientIdsTree, draggedClientIds, selectedClientIds } =
87
- useListViewClientIds( blocks );
88
-
89
- const { visibleBlockCount, shouldShowInnerBlocks } = useSelect(
90
- ( select ) => {
91
- const {
92
- getGlobalBlockCount,
93
- getClientIdsOfDescendants,
94
- __unstableGetEditorMode,
95
- } = select( blockEditorStore );
96
- const draggedBlockCount =
97
- draggedClientIds?.length > 0
98
- ? getClientIdsOfDescendants( draggedClientIds ).length + 1
99
- : 0;
100
- return {
101
- visibleBlockCount: getGlobalBlockCount() - draggedBlockCount,
102
- shouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',
103
- };
104
- },
105
- [ draggedClientIds, blocks ]
106
- );
107
-
108
- const { updateBlockSelection } = useBlockSelection();
109
-
110
- const [ expandedState, setExpandedState ] = useReducer( expanded, {} );
111
-
112
- const { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();
113
- const elementRef = useRef();
114
- const treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );
115
-
116
- const isMounted = useRef( false );
117
- const { setSelectedTreeId } = useListViewExpandSelectedItem( {
118
- firstSelectedBlockClientId: selectedClientIds[ 0 ],
119
- setExpandedState,
120
- } );
121
- const selectEditorBlock = useCallback(
122
- ( event, blockClientId ) => {
123
- updateBlockSelection( event, blockClientId );
124
- setSelectedTreeId( blockClientId );
125
- if ( onSelect ) {
126
- onSelect( getBlock( blockClientId ) );
127
- }
128
- },
129
- [ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]
130
- );
131
- useEffect( () => {
132
- isMounted.current = true;
133
- }, [] );
134
-
135
- // List View renders a fixed number of items and relies on each having a fixed item height of 36px.
136
- // If this value changes, we should also change the itemHeight value set in useFixedWindowList.
137
- // See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.
138
- const [ fixedListWindow ] = useFixedWindowList(
139
- elementRef,
140
- BLOCK_LIST_ITEM_HEIGHT,
141
- visibleBlockCount,
142
- {
143
- useWindowing: true,
144
- windowOverscan: 40,
145
- }
146
- );
147
-
148
- const expand = useCallback(
149
- ( blockClientId ) => {
150
- if ( ! blockClientId ) {
151
- return;
152
- }
153
- setExpandedState( {
154
- type: 'expand',
155
- clientIds: [ blockClientId ],
156
- } );
157
- },
158
- [ setExpandedState ]
159
- );
160
- const collapse = useCallback(
161
- ( blockClientId ) => {
162
- if ( ! blockClientId ) {
163
- return;
164
- }
165
- setExpandedState( {
166
- type: 'collapse',
167
- clientIds: [ blockClientId ],
168
- } );
169
- },
170
- [ setExpandedState ]
171
- );
172
- const expandRow = useCallback(
173
- ( row ) => {
174
- expand( row?.dataset?.block );
175
- },
176
- [ expand ]
177
- );
178
- const collapseRow = useCallback(
179
- ( row ) => {
180
- collapse( row?.dataset?.block );
181
- },
182
- [ collapse ]
183
- );
184
- const focusRow = useCallback(
185
- ( event, startRow, endRow ) => {
186
- if ( event.shiftKey ) {
187
- updateBlockSelection(
188
- event,
189
- startRow?.dataset?.block,
190
- endRow?.dataset?.block
191
- );
192
- }
193
- },
194
- [ updateBlockSelection ]
195
- );
196
-
197
- const contextValue = useMemo(
198
- () => ( {
199
- isTreeGridMounted: isMounted.current,
200
- draggedClientIds,
201
- expandedState,
202
- expand,
203
- collapse,
204
- LeafMoreMenu,
205
- renderAdditionalBlockUI,
206
- } ),
207
- [
208
- isMounted.current,
209
- draggedClientIds,
210
- expandedState,
211
- expand,
212
- collapse,
213
- LeafMoreMenu,
214
- renderAdditionalBlockUI,
215
- ]
216
- );
217
-
218
- return (
219
- <AsyncModeProvider value={ true }>
220
- <ListViewDropIndicator
221
- listViewRef={ elementRef }
222
- blockDropTarget={ blockDropTarget }
223
- />
224
- <div className="offcanvas-editor-list-view-tree-wrapper">
225
- <TreeGrid
226
- id={ id }
227
- className="block-editor-list-view-tree"
228
- aria-label={ __( 'Block navigation structure' ) }
229
- ref={ treeGridRef }
230
- onCollapseRow={ collapseRow }
231
- onExpandRow={ expandRow }
232
- onFocusRow={ focusRow }
233
- // eslint-disable-next-line jsx-a11y/aria-props
234
- aria-description={ description }
235
- >
236
- <ListViewContext.Provider value={ contextValue }>
237
- <ListViewBranch
238
- parentId={ parentClientId }
239
- blocks={ clientIdsTree }
240
- selectBlock={ selectEditorBlock }
241
- showBlockMovers={ showBlockMovers }
242
- fixedListWindow={ fixedListWindow }
243
- selectedClientIds={ selectedClientIds }
244
- isExpanded={ isExpanded }
245
- shouldShowInnerBlocks={ shouldShowInnerBlocks }
246
- showAppender={ showAppender }
247
- />
248
- <TreeGridRow
249
- level={ 1 }
250
- setSize={ 1 }
251
- positionInSet={ 1 }
252
- isExpanded={ true }
253
- >
254
- { ! clientIdsTree.length && (
255
- <TreeGridCell withoutGridItem>
256
- <div className="offcanvas-editor-list-view-is-empty">
257
- { __(
258
- 'Your menu is currently empty. Add your first menu item to get started.'
259
- ) }
260
- </div>
261
- </TreeGridCell>
262
- ) }
263
- </TreeGridRow>
264
- </ListViewContext.Provider>
265
- </TreeGrid>
266
- </div>
267
- </AsyncModeProvider>
268
- );
269
- }
270
-
271
- export default forwardRef( OffCanvasEditor );