@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,237 +1,209 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { View, Dimensions } from 'react-native';
4
+ import { View } from 'react-native';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { Component } from '@wordpress/element';
10
- import { withSelect } from '@wordpress/data';
11
- import { compose } from '@wordpress/compose';
12
- import { ReadableContentView, alignmentHelpers } from '@wordpress/components';
9
+ import { useSelect } from '@wordpress/data';
13
10
 
14
11
  /**
15
12
  * Internal dependencies
16
13
  */
17
- import BlockListBlock from './block';
18
- import BlockInsertionPoint from './insertion-point';
14
+ import Block from './block';
19
15
  import Grid from './grid-item';
20
-
21
- import styles from './block-list-item.native.scss';
16
+ import BlockInsertionPoint from './insertion-point';
22
17
  import { store as blockEditorStore } from '../../store';
18
+ import { useEditorWrapperStyles } from '../../hooks/use-editor-wrapper-styles';
23
19
 
24
- const stretchStyle = {
25
- flex: 1,
26
- };
27
-
28
- export class BlockListItem extends Component {
29
- getMarginHorizontal() {
30
- const {
31
- blockAlignment,
32
- marginHorizontal,
33
- parentBlockAlignment,
34
- hasParents,
35
- blockName,
36
- parentBlockName,
37
- parentWidth,
38
- blockWidth,
39
- } = this.props;
40
- const { isFullWidth, isWideWidth, isWider, isContainerRelated } =
41
- alignmentHelpers;
42
-
43
- if ( isFullWidth( blockAlignment ) ) {
44
- if ( ! hasParents ) {
45
- return 0;
46
- }
47
- return marginHorizontal;
48
- }
49
- if ( isWideWidth( blockAlignment ) ) {
50
- return marginHorizontal;
51
- }
52
-
53
- const screenWidth = Math.floor( Dimensions.get( 'window' ).width );
54
-
55
- if (
56
- isFullWidth( parentBlockAlignment ) &&
57
- ! isWider( blockWidth, 'medium' )
58
- ) {
59
- if (
60
- isContainerRelated( blockName ) ||
61
- isWider( screenWidth, 'mobile' )
62
- ) {
63
- return marginHorizontal;
64
- }
65
- return marginHorizontal * 2;
66
- }
67
-
68
- if (
69
- isContainerRelated( parentBlockName ) &&
70
- ! isContainerRelated( blockName )
71
- ) {
72
- const isScreenWidthEqual = parentWidth === screenWidth;
73
- if ( isScreenWidthEqual || isWider( screenWidth, 'mobile' ) ) {
74
- return marginHorizontal;
75
- }
76
- }
77
-
78
- return marginHorizontal;
79
- }
80
-
81
- getContentStyles( readableContentViewStyle ) {
82
- const { blockAlignment, blockName, hasParents, parentBlockName } =
83
- this.props;
84
- const { isFullWidth, isContainerRelated } = alignmentHelpers;
85
-
86
- return [
87
- readableContentViewStyle,
88
- isFullWidth( blockAlignment ) &&
89
- ! hasParents && {
90
- width: styles.fullAlignment.width,
91
- },
92
- ! blockAlignment &&
93
- hasParents &&
94
- ! isContainerRelated( parentBlockName ) &&
95
- isContainerRelated( blockName ) && {
96
- paddingHorizontal: styles.fullAlignmentPadding.paddingLeft,
97
- },
98
- ];
99
- }
100
-
101
- renderContent() {
102
- const {
103
- blockAlignment,
104
- clientId,
105
- isReadOnly,
106
- shouldShowInsertionPointBefore,
107
- shouldShowInsertionPointAfter,
108
- contentResizeMode,
109
- shouldShowInnerBlockAppender,
110
- parentWidth,
111
- marginHorizontal,
112
- blockName,
113
- blockWidth,
114
- ...restProps
115
- } = this.props;
116
-
117
- const readableContentViewStyle =
118
- contentResizeMode === 'stretch' && stretchStyle;
119
- const { isContainerRelated } = alignmentHelpers;
120
-
121
- return (
122
- <ReadableContentView
123
- align={ blockAlignment }
124
- style={ [
125
- readableContentViewStyle,
126
- isContainerRelated( blockName ) &&
127
- parentWidth && {
128
- maxWidth: parentWidth + 2 * marginHorizontal,
129
- },
130
- ] }
131
- >
132
- <View
133
- style={ this.getContentStyles( readableContentViewStyle ) }
134
- pointerEvents={ isReadOnly ? 'box-only' : 'auto' }
135
- >
136
- { shouldShowInsertionPointBefore && (
137
- <BlockInsertionPoint />
138
- ) }
139
- <BlockListBlock
140
- key={ clientId }
141
- showTitle={ false }
142
- clientId={ clientId }
143
- parentWidth={ parentWidth }
144
- { ...restProps }
145
- marginHorizontal={ this.getMarginHorizontal() }
146
- blockWidth={ blockWidth }
147
- />
148
- { ! shouldShowInnerBlockAppender() &&
149
- shouldShowInsertionPointAfter && (
150
- <BlockInsertionPoint />
151
- ) }
152
- </View>
153
- </ReadableContentView>
154
- );
155
- }
156
-
157
- render() {
158
- const { parentWidth, blockWidth, isGridItem } = this.props;
159
-
160
- if ( ! blockWidth ) {
161
- return null;
162
- }
163
-
164
- if ( isGridItem ) {
165
- const { numOfColumns, tileCount, tileIndex } = this.props;
166
- return (
167
- <Grid
168
- maxWidth={ parentWidth }
169
- numOfColumns={ numOfColumns }
170
- tileCount={ tileCount }
171
- index={ tileIndex }
172
- >
173
- { this.renderContent() }
174
- </Grid>
175
- );
176
- }
177
- return this.renderContent();
178
- }
179
- }
180
-
181
- export default compose( [
182
- withSelect(
183
- ( select, { rootClientId, isStackedHorizontally, clientId } ) => {
20
+ /**
21
+ * BlockListItemContent component. Renders a block with an optional insertion point.
22
+ *
23
+ * @param {Object} props Component properties.
24
+ * @param {number} props.blockWidth The width of the block.
25
+ * @param {string} props.clientId The block client ID.
26
+ * @param {string} props.contentResizeMode The content resize mode, e.g "stretch".
27
+ * @param {Object} props.contentStyle Styles for the block content
28
+ * @param {Object} props.index Block item index
29
+ * @param {boolean} props.isStackedHorizontally Whether the block is stacked horizontally.
30
+ * @param {number} props.marginHorizontal The horizontal margin.
31
+ * @param {number} props.marginVertical The vertical margin.
32
+ * @param {Function} props.onAddBlock On add block callback.
33
+ * @param {Function} props.onDeleteBlock On delete block callback.
34
+ * @param {number} props.parentWidth The width of the parent block.
35
+ * @param {string} props.rootClientId The root client ID.
36
+ * @param {Function} props.shouldShowInnerBlockAppender Whether to show the inner block appender.
37
+ *
38
+ * @return {WPComponent} The rendered block list item content.
39
+ */
40
+ function BlockListItemContent( {
41
+ blockWidth,
42
+ clientId,
43
+ contentResizeMode,
44
+ contentStyle,
45
+ index,
46
+ isStackedHorizontally,
47
+ marginHorizontal,
48
+ marginVertical,
49
+ onAddBlock,
50
+ onDeleteBlock,
51
+ parentWidth,
52
+ rootClientId,
53
+ shouldShowInnerBlockAppender,
54
+ } ) {
55
+ const {
56
+ blockAlignment,
57
+ blockName,
58
+ hasParents,
59
+ parentBlockAlignment,
60
+ parentBlockName,
61
+ shouldShowInsertionPointAfter,
62
+ shouldShowInsertionPointBefore,
63
+ } = useSelect(
64
+ ( select ) => {
184
65
  const {
185
- getBlockOrder,
66
+ getBlockAttributes,
186
67
  getBlockInsertionPoint,
68
+ getBlockName,
69
+ getBlockOrder,
187
70
  isBlockInsertionPointVisible,
188
- getSettings,
189
- getBlockParents,
190
- getBlock,
191
71
  } = select( blockEditorStore );
192
-
193
72
  const blockClientIds = getBlockOrder( rootClientId );
194
73
  const insertionPoint = getBlockInsertionPoint();
195
- const blockInsertionPointIsVisible = isBlockInsertionPointVisible();
196
- const shouldShowInsertionPointBefore =
197
- ! isStackedHorizontally &&
198
- blockInsertionPointIsVisible &&
199
- insertionPoint.rootClientId === rootClientId &&
200
- // If list is empty, show the insertion point (via the default appender)
201
- ( blockClientIds.length === 0 ||
202
- // Or if the insertion point is right before the denoted block.
203
- blockClientIds[ insertionPoint.index ] === clientId );
204
-
205
- const shouldShowInsertionPointAfter =
74
+
75
+ const insertionPointVisibleInCurrentRoot =
206
76
  ! isStackedHorizontally &&
207
- blockInsertionPointIsVisible &&
208
- insertionPoint.rootClientId === rootClientId &&
209
- // If the insertion point is at the end of the list.
210
- blockClientIds.length === insertionPoint.index &&
211
- // And the denoted block is the last one on the list, show the indicator at the end of the block.
77
+ isBlockInsertionPointVisible() &&
78
+ insertionPoint.rootClientId === rootClientId;
79
+
80
+ const isListEmpty = blockClientIds.length === 0;
81
+ const isInsertionPointBeforeBlock =
82
+ blockClientIds[ insertionPoint.index ] === clientId;
83
+ const isInsertionPointAtEnd =
84
+ blockClientIds.length === insertionPoint.index;
85
+ const isBlockLastInList =
212
86
  blockClientIds[ insertionPoint.index - 1 ] === clientId;
213
87
 
214
- const isReadOnly = getSettings().readOnly;
88
+ const showInsertionPointBefore =
89
+ insertionPointVisibleInCurrentRoot &&
90
+ ( isListEmpty || isInsertionPointBeforeBlock );
91
+
92
+ const showInsertionPointAfter =
93
+ insertionPointVisibleInCurrentRoot &&
94
+ isInsertionPointAtEnd &&
95
+ isBlockLastInList;
215
96
 
216
- const { attributes, name } = getBlock( clientId ) || {};
217
- const { align } = attributes || {};
218
- const parents = getBlockParents( clientId, true );
219
- const hasParents = !! parents.length;
220
- const parentBlock = hasParents ? getBlock( parents[ 0 ] ) : {};
221
- const { align: parentBlockAlignment } =
222
- parentBlock?.attributes || {};
223
- const { name: parentBlockName } = parentBlock || {};
97
+ const blockHasParents = !! rootClientId;
98
+ const name = getBlockName( clientId );
99
+ const parentName = getBlockName( rootClientId );
100
+ const { align } = getBlockAttributes( clientId ) || {};
101
+ const { align: parentBlockAlign } =
102
+ getBlockAttributes( rootClientId ) || {};
224
103
 
225
104
  return {
226
- shouldShowInsertionPointBefore,
227
- shouldShowInsertionPointAfter,
228
- isReadOnly,
229
- hasParents,
230
105
  blockAlignment: align,
231
- parentBlockAlignment,
232
106
  blockName: name,
233
- parentBlockName,
107
+ hasParents: blockHasParents,
108
+ parentBlockAlignment: parentBlockAlign,
109
+ parentBlockName: parentName,
110
+ shouldShowInsertionPointAfter: showInsertionPointAfter,
111
+ shouldShowInsertionPointBefore: showInsertionPointBefore,
234
112
  };
235
- }
236
- ),
237
- ] )( BlockListItem );
113
+ },
114
+ [ isStackedHorizontally, rootClientId, clientId ]
115
+ );
116
+
117
+ const [ wrapperStyles, margin ] = useEditorWrapperStyles( {
118
+ align: blockAlignment,
119
+ blockName,
120
+ blockWidth,
121
+ contentResizeMode,
122
+ hasParents,
123
+ marginHorizontal,
124
+ parentBlockAlignment,
125
+ parentBlockName,
126
+ parentWidth,
127
+ } );
128
+
129
+ const shouldShowBlockInsertionPointAfter =
130
+ ! shouldShowInnerBlockAppender() && shouldShowInsertionPointAfter;
131
+
132
+ return (
133
+ <View style={ wrapperStyles }>
134
+ { shouldShowInsertionPointBefore && (
135
+ <BlockInsertionPoint
136
+ testID={ `block-insertion-point-before-row-${ index + 1 }` }
137
+ />
138
+ ) }
139
+ <Block
140
+ blockWidth={ blockWidth }
141
+ clientId={ clientId }
142
+ contentStyle={ contentStyle }
143
+ isStackedHorizontally={ isStackedHorizontally }
144
+ marginHorizontal={ margin }
145
+ marginVertical={ marginVertical }
146
+ onAddBlock={ onAddBlock }
147
+ parentBlockAlignment={ parentBlockAlignment }
148
+ onDeleteBlock={ onDeleteBlock }
149
+ parentWidth={ parentWidth }
150
+ rootClientId={ rootClientId }
151
+ />
152
+ { shouldShowBlockInsertionPointAfter && (
153
+ <BlockInsertionPoint
154
+ testID={ `block-insertion-point-after-row-${ index + 1 }` }
155
+ />
156
+ ) }
157
+ </View>
158
+ );
159
+ }
160
+
161
+ /**
162
+ * BlockListItem component. Renders a block list item either as a grid item or as a standalone item.
163
+ *
164
+ * @param {Object} props Component properties.
165
+ * @param {boolean} props.isGridItem Whether the block is a grid item.
166
+ * @param {number} props.numOfColumns The number of columns for grid layout.
167
+ * @param {number} props.parentWidth The width of the parent block.
168
+ * @param {number} props.tileCount The total number of tiles in the grid.
169
+ * @param {number} props.tileIndex The index of the current tile in the grid.
170
+ * @param {number} props.blockWidth The width of the block.
171
+ * @param {string} props.clientId The block client ID.
172
+ * @param {string} props.contentResizeMode The content resize mode, e.g "stretch".
173
+ * @param {Object} props.contentStyle Styles for the block content
174
+ * @param {Object} props.index Block item index
175
+ * @param {boolean} props.isStackedHorizontally Whether the block is stacked horizontally.
176
+ * @param {number} props.marginHorizontal The horizontal margin.
177
+ * @param {number} props.marginVertical The vertical margin.
178
+ * @param {Function} props.onAddBlock On add block callback.
179
+ * @param {Function} props.onDeleteBlock On delete block callback.
180
+ * @param {string} props.rootClientId The root client ID.
181
+ * @param {Function} props.shouldShowInnerBlockAppender Whether to show the inner block appender.
182
+ *
183
+ * @return {WPComponent|null} The rendered block list item or null if the block width is not provided.
184
+ */
185
+ function BlockListItem( props ) {
186
+ const { isGridItem, numOfColumns, tileCount, tileIndex, ...restProps } =
187
+ props;
188
+
189
+ if ( ! props?.blockWidth ) {
190
+ return null;
191
+ }
192
+
193
+ if ( isGridItem ) {
194
+ return (
195
+ <Grid
196
+ maxWidth={ props?.parentWidth }
197
+ numOfColumns={ numOfColumns }
198
+ tileCount={ tileCount }
199
+ index={ tileIndex }
200
+ >
201
+ <BlockListItemContent { ...restProps } />
202
+ </Grid>
203
+ );
204
+ }
205
+
206
+ return <BlockListItemContent { ...restProps } />;
207
+ }
208
+
209
+ export default BlockListItem;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { View } from 'react-native';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { usePreferredColorSchemeStyle } from '@wordpress/compose';
10
+ import { alignmentHelpers } from '@wordpress/components';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import styles from './block.scss';
16
+
17
+ function BlockOutline( {
18
+ align,
19
+ blockWidth,
20
+ isParentSelected,
21
+ isSelected,
22
+ name,
23
+ screenWidth,
24
+ } ) {
25
+ const { isFullWidth, isContainerRelated } = alignmentHelpers;
26
+ const isScreenWidthWider = blockWidth < screenWidth;
27
+
28
+ const styleSolidBorder = [
29
+ styles.solidBorder,
30
+ isFullWidth( align ) && isScreenWidthWider && styles.borderFullWidth,
31
+ isFullWidth( align ) &&
32
+ isContainerRelated( name ) &&
33
+ isScreenWidthWider &&
34
+ styles.containerBorderFullWidth,
35
+ usePreferredColorSchemeStyle(
36
+ styles.solidBorderColor,
37
+ styles.solidBorderColorDark
38
+ ),
39
+ ];
40
+ const styleDashedBorder = [
41
+ styles.dashedBorder,
42
+ usePreferredColorSchemeStyle(
43
+ styles.dashedBorderColor,
44
+ styles.dashedBorderColorDark
45
+ ),
46
+ ];
47
+
48
+ return (
49
+ <>
50
+ { isSelected && (
51
+ <View pointerEvents="box-none" style={ styleSolidBorder } />
52
+ ) }
53
+ { isParentSelected && <View style={ styleDashedBorder } /> }
54
+ </>
55
+ );
56
+ }
57
+
58
+ export default BlockOutline;
@@ -6,19 +6,13 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import {
10
- createContext,
11
- useMemo,
12
- useCallback,
13
- RawHTML,
14
- } from '@wordpress/element';
9
+ import { useMemo, useCallback, RawHTML } from '@wordpress/element';
15
10
  import {
16
11
  getBlockType,
17
12
  getSaveContent,
18
13
  isUnmodifiedDefaultBlock,
19
14
  serializeRawBlock,
20
15
  switchToBlockType,
21
- store as blocksStore,
22
16
  getDefaultBlockName,
23
17
  isUnmodifiedBlock,
24
18
  } from '@wordpress/blocks';
@@ -43,7 +37,8 @@ import BlockHtml from './block-html';
43
37
  import { useBlockProps } from './use-block-props';
44
38
  import { store as blockEditorStore } from '../../store';
45
39
  import { useLayout } from './layout';
46
- export const BlockListBlockContext = createContext();
40
+ import { unlock } from '../../lock-unlock';
41
+ import { BlockListBlockContext } from './block-list-block-context';
47
42
 
48
43
  /**
49
44
  * Merges wrapper props with special handling for classNames and styles.
@@ -99,35 +94,23 @@ function BlockListBlock( {
99
94
  } ) {
100
95
  const {
101
96
  themeSupportsLayout,
102
- hasContentLockedParent,
103
- isContentBlock,
104
- isContentLocking,
105
97
  isTemporarilyEditingAsBlocks,
98
+ blockEditingMode,
106
99
  } = useSelect(
107
100
  ( select ) => {
108
101
  const {
109
102
  getSettings,
110
- __unstableGetContentLockingParent,
111
- getTemplateLock,
112
103
  __unstableGetTemporarilyEditingAsBlocks,
113
- } = select( blockEditorStore );
114
- const _hasContentLockedParent =
115
- !! __unstableGetContentLockingParent( clientId );
104
+ getBlockEditingMode,
105
+ } = unlock( select( blockEditorStore ) );
116
106
  return {
117
107
  themeSupportsLayout: getSettings().supportsLayout,
118
- isContentBlock:
119
- select( blocksStore ).__experimentalHasContentRoleAttribute(
120
- name
121
- ),
122
- hasContentLockedParent: _hasContentLockedParent,
123
- isContentLocking:
124
- getTemplateLock( clientId ) === 'contentOnly' &&
125
- ! _hasContentLockedParent,
126
108
  isTemporarilyEditingAsBlocks:
127
109
  __unstableGetTemporarilyEditingAsBlocks() === clientId,
110
+ blockEditingMode: getBlockEditingMode( clientId ),
128
111
  };
129
112
  },
130
- [ name, clientId ]
113
+ [ clientId ]
131
114
  );
132
115
  const { removeBlock } = useDispatch( blockEditorStore );
133
116
  const onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );
@@ -160,7 +143,7 @@ function BlockListBlock( {
160
143
 
161
144
  const blockType = getBlockType( name );
162
145
 
163
- if ( hasContentLockedParent && ! isContentBlock ) {
146
+ if ( blockEditingMode === 'disabled' ) {
164
147
  wrapperProps = {
165
148
  ...wrapperProps,
166
149
  tabIndex: -1,
@@ -234,10 +217,9 @@ function BlockListBlock( {
234
217
  clientId,
235
218
  className: classnames(
236
219
  {
237
- 'is-content-locked': isContentLocking,
220
+ 'is-editing-disabled': blockEditingMode === 'disabled',
238
221
  'is-content-locked-temporarily-editing-as-blocks':
239
222
  isTemporarilyEditingAsBlocks,
240
- 'is-content-block': hasContentLockedParent && isContentBlock,
241
223
  },
242
224
  dataAlign && themeSupportsLayout && `align${ dataAlign }`,
243
225
  className
@@ -376,26 +358,26 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
376
358
  ) {
377
359
  removeBlock( _clientId );
378
360
  } else {
379
- if (
380
- canInsertBlockType(
381
- getBlockName( firstClientId ),
382
- targetRootClientId
383
- )
384
- ) {
385
- moveBlocksToPosition(
386
- [ firstClientId ],
387
- _clientId,
388
- targetRootClientId,
389
- getBlockIndex( _clientId )
390
- );
391
- } else {
392
- const replacement = switchToBlockType(
393
- getBlock( firstClientId ),
394
- getDefaultBlockName()
395
- );
396
-
397
- if ( replacement && replacement.length ) {
398
- registry.batch( () => {
361
+ registry.batch( () => {
362
+ if (
363
+ canInsertBlockType(
364
+ getBlockName( firstClientId ),
365
+ targetRootClientId
366
+ )
367
+ ) {
368
+ moveBlocksToPosition(
369
+ [ firstClientId ],
370
+ _clientId,
371
+ targetRootClientId,
372
+ getBlockIndex( _clientId )
373
+ );
374
+ } else {
375
+ const replacement = switchToBlockType(
376
+ getBlock( firstClientId ),
377
+ getDefaultBlockName()
378
+ );
379
+
380
+ if ( replacement && replacement.length ) {
399
381
  insertBlocks(
400
382
  replacement,
401
383
  getBlockIndex( _clientId ),
@@ -403,16 +385,16 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
403
385
  changeSelection
404
386
  );
405
387
  removeBlock( firstClientId, false );
406
- } );
388
+ }
407
389
  }
408
- }
409
390
 
410
- if (
411
- ! getBlockOrder( _clientId ).length &&
412
- isUnmodifiedBlock( getBlock( _clientId ) )
413
- ) {
414
- removeBlock( _clientId, false );
415
- }
391
+ if (
392
+ ! getBlockOrder( _clientId ).length &&
393
+ isUnmodifiedBlock( getBlock( _clientId ) )
394
+ ) {
395
+ removeBlock( _clientId, false );
396
+ }
397
+ } );
416
398
  }
417
399
  }
418
400