@wordpress/block-editor 12.0.0 → 12.1.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 (311) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/build/components/block-controls/slot.js +12 -4
  4. package/build/components/block-controls/slot.js.map +1 -1
  5. package/build/components/block-controls/slot.native.js +10 -1
  6. package/build/components/block-controls/slot.native.js.map +1 -1
  7. package/build/components/block-draggable/index.js +11 -7
  8. package/build/components/block-draggable/index.js.map +1 -1
  9. package/build/components/block-draggable/use-scroll-when-dragging.js +2 -2
  10. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  11. package/build/components/block-list/block-invalid-warning.native.js +15 -7
  12. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  13. package/build/components/block-list/block-list-item-cell.native.js +15 -2
  14. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  15. package/build/components/block-list/block-list-item.native.js +158 -195
  16. package/build/components/block-list/block-list-item.native.js.map +1 -1
  17. package/build/components/block-list/block-outline.native.js +57 -0
  18. package/build/components/block-list/block-outline.native.js.map +1 -0
  19. package/build/components/block-list/block.native.js +343 -299
  20. package/build/components/block-list/block.native.js.map +1 -1
  21. package/build/components/block-list/index.native.js +202 -298
  22. package/build/components/block-list/index.native.js.map +1 -1
  23. package/build/components/block-list/insertion-point.native.js +4 -2
  24. package/build/components/block-list/insertion-point.native.js.map +1 -1
  25. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  26. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  27. package/build/components/block-settings-menu/block-settings-dropdown.js +8 -10
  28. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  29. package/build/components/block-settings-menu-controls/index.js +15 -4
  30. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  31. package/build/components/block-tools/block-contextual-toolbar.js +17 -62
  32. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  33. package/build/components/block-tools/selected-block-popover.js +3 -8
  34. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  35. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  36. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  37. package/build/components/global-styles/advanced-panel.js +86 -0
  38. package/build/components/global-styles/advanced-panel.js.map +1 -0
  39. package/build/components/global-styles/color-panel.js +4 -1
  40. package/build/components/global-styles/color-panel.js.map +1 -1
  41. package/build/components/global-styles/dimensions-panel.js +6 -6
  42. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  43. package/build/components/global-styles/hooks.js +1 -2
  44. package/build/components/global-styles/hooks.js.map +1 -1
  45. package/build/components/global-styles/index.js +24 -0
  46. package/build/components/global-styles/index.js.map +1 -1
  47. package/build/components/global-styles/typography-panel.js +1 -1
  48. package/build/components/global-styles/typography-panel.js.map +1 -1
  49. package/build/components/global-styles/use-global-styles-output.js +27 -4
  50. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  51. package/build/components/global-styles/utils.js +30 -0
  52. package/build/components/global-styles/utils.js.map +1 -1
  53. package/build/components/image-editor/use-save-image.js +24 -8
  54. package/build/components/image-editor/use-save-image.js.map +1 -1
  55. package/build/components/inserter-draggable-blocks/index.js +5 -0
  56. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  57. package/build/components/inspector-controls/fill.js +1 -1
  58. package/build/components/inspector-controls/fill.js.map +1 -1
  59. package/build/components/inspector-controls/fill.native.js +1 -1
  60. package/build/components/inspector-controls/fill.native.js.map +1 -1
  61. package/build/components/inspector-controls/slot.js +3 -6
  62. package/build/components/inspector-controls/slot.js.map +1 -1
  63. package/build/components/inspector-controls/slot.native.js +1 -1
  64. package/build/components/inspector-controls/slot.native.js.map +1 -1
  65. package/build/components/line-height-control/index.js +7 -2
  66. package/build/components/line-height-control/index.js.map +1 -1
  67. package/build/components/link-control/use-internal-input-value.js +9 -8
  68. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  69. package/build/components/list-view/block-contents.js +7 -2
  70. package/build/components/list-view/block-contents.js.map +1 -1
  71. package/build/components/list-view/block-select-button.js +2 -1
  72. package/build/components/list-view/block-select-button.js.map +1 -1
  73. package/build/components/list-view/block.js +4 -4
  74. package/build/components/list-view/block.js.map +1 -1
  75. package/build/components/list-view/index.js +32 -18
  76. package/build/components/list-view/index.js.map +1 -1
  77. package/build/components/list-view/use-list-view-drop-zone.js +163 -11
  78. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  79. package/build/components/media-placeholder/index.js +68 -7
  80. package/build/components/media-placeholder/index.js.map +1 -1
  81. package/build/components/multi-selection-inspector/index.js +2 -2
  82. package/build/components/multi-selection-inspector/index.js.map +1 -1
  83. package/build/components/off-canvas-editor/leaf-more-menu.js +3 -1
  84. package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  85. package/build/components/preview-options/index.js +6 -1
  86. package/build/components/preview-options/index.js.map +1 -1
  87. package/build/components/spacing-sizes-control/spacing-input-control.js +1 -1
  88. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  89. package/build/components/url-input/index.js +1 -2
  90. package/build/components/url-input/index.js.map +1 -1
  91. package/build/hooks/align.js +1 -1
  92. package/build/hooks/align.js.map +1 -1
  93. package/build/hooks/border.js +1 -1
  94. package/build/hooks/border.js.map +1 -1
  95. package/build/hooks/color.js +1 -1
  96. package/build/hooks/color.js.map +1 -1
  97. package/build/hooks/content-lock-ui.js +8 -12
  98. package/build/hooks/content-lock-ui.js.map +1 -1
  99. package/build/hooks/duotone.js +1 -1
  100. package/build/hooks/duotone.js.map +1 -1
  101. package/build/hooks/index.native.js +8 -0
  102. package/build/hooks/index.native.js.map +1 -1
  103. package/build/hooks/layout.js +2 -2
  104. package/build/hooks/layout.js.map +1 -1
  105. package/build/hooks/position.js +1 -1
  106. package/build/hooks/position.js.map +1 -1
  107. package/build/hooks/style.js +1 -1
  108. package/build/hooks/style.js.map +1 -1
  109. package/build/hooks/use-editor-wrapper-styles.native.js +255 -0
  110. package/build/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  111. package/build/hooks/use-typography-props.js +14 -10
  112. package/build/hooks/use-typography-props.js.map +1 -1
  113. package/build/index.native.js +31 -0
  114. package/build/index.native.js.map +1 -0
  115. package/build/utils/use-should-contextual-toolbar-show.js +16 -12
  116. package/build/utils/use-should-contextual-toolbar-show.js.map +1 -1
  117. package/build-module/components/block-controls/slot.js +11 -4
  118. package/build-module/components/block-controls/slot.js.map +1 -1
  119. package/build-module/components/block-controls/slot.native.js +9 -1
  120. package/build-module/components/block-controls/slot.native.js.map +1 -1
  121. package/build-module/components/block-draggable/index.js +10 -6
  122. package/build-module/components/block-draggable/index.js.map +1 -1
  123. package/build-module/components/block-draggable/use-scroll-when-dragging.js +2 -2
  124. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  125. package/build-module/components/block-list/block-invalid-warning.native.js +16 -8
  126. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  127. package/build-module/components/block-list/block-list-item-cell.native.js +13 -2
  128. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  129. package/build-module/components/block-list/block-list-item.native.js +160 -190
  130. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  131. package/build-module/components/block-list/block-outline.native.js +44 -0
  132. package/build-module/components/block-list/block-outline.native.js.map +1 -0
  133. package/build-module/components/block-list/block.native.js +341 -298
  134. package/build-module/components/block-list/block.native.js.map +1 -1
  135. package/build-module/components/block-list/index.native.js +203 -293
  136. package/build-module/components/block-list/index.native.js.map +1 -1
  137. package/build-module/components/block-list/insertion-point.native.js +4 -2
  138. package/build-module/components/block-list/insertion-point.native.js.map +1 -1
  139. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  140. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  141. package/build-module/components/block-settings-menu/block-settings-dropdown.js +8 -9
  142. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  143. package/build-module/components/block-settings-menu-controls/index.js +13 -5
  144. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  145. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -62
  146. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  147. package/build-module/components/block-tools/selected-block-popover.js +3 -7
  148. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  149. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  150. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  151. package/build-module/components/global-styles/advanced-panel.js +74 -0
  152. package/build-module/components/global-styles/advanced-panel.js.map +1 -0
  153. package/build-module/components/global-styles/color-panel.js +5 -2
  154. package/build-module/components/global-styles/color-panel.js.map +1 -1
  155. package/build-module/components/global-styles/dimensions-panel.js +6 -6
  156. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  157. package/build-module/components/global-styles/hooks.js +1 -2
  158. package/build-module/components/global-styles/hooks.js.map +1 -1
  159. package/build-module/components/global-styles/index.js +3 -1
  160. package/build-module/components/global-styles/index.js.map +1 -1
  161. package/build-module/components/global-styles/typography-panel.js +1 -1
  162. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  163. package/build-module/components/global-styles/use-global-styles-output.js +25 -4
  164. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  165. package/build-module/components/global-styles/utils.js +25 -0
  166. package/build-module/components/global-styles/utils.js.map +1 -1
  167. package/build-module/components/image-editor/use-save-image.js +24 -8
  168. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  169. package/build-module/components/inserter-draggable-blocks/index.js +4 -0
  170. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  171. package/build-module/components/inspector-controls/fill.js +1 -1
  172. package/build-module/components/inspector-controls/fill.js.map +1 -1
  173. package/build-module/components/inspector-controls/fill.native.js +1 -1
  174. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  175. package/build-module/components/inspector-controls/slot.js +4 -7
  176. package/build-module/components/inspector-controls/slot.js.map +1 -1
  177. package/build-module/components/inspector-controls/slot.native.js +1 -1
  178. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  179. package/build-module/components/line-height-control/index.js +7 -2
  180. package/build-module/components/line-height-control/index.js.map +1 -1
  181. package/build-module/components/link-control/use-internal-input-value.js +9 -8
  182. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  183. package/build-module/components/list-view/block-contents.js +7 -3
  184. package/build-module/components/list-view/block-contents.js.map +1 -1
  185. package/build-module/components/list-view/block-select-button.js +2 -1
  186. package/build-module/components/list-view/block-select-button.js.map +1 -1
  187. package/build-module/components/list-view/block.js +4 -4
  188. package/build-module/components/list-view/block.js.map +1 -1
  189. package/build-module/components/list-view/index.js +32 -18
  190. package/build-module/components/list-view/index.js.map +1 -1
  191. package/build-module/components/list-view/use-list-view-drop-zone.js +160 -11
  192. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  193. package/build-module/components/media-placeholder/index.js +66 -7
  194. package/build-module/components/media-placeholder/index.js.map +1 -1
  195. package/build-module/components/multi-selection-inspector/index.js +2 -2
  196. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  197. package/build-module/components/off-canvas-editor/leaf-more-menu.js +3 -1
  198. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
  199. package/build-module/components/preview-options/index.js +7 -2
  200. package/build-module/components/preview-options/index.js.map +1 -1
  201. package/build-module/components/spacing-sizes-control/spacing-input-control.js +1 -1
  202. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  203. package/build-module/components/url-input/index.js +1 -2
  204. package/build-module/components/url-input/index.js.map +1 -1
  205. package/build-module/hooks/align.js +1 -1
  206. package/build-module/hooks/align.js.map +1 -1
  207. package/build-module/hooks/border.js +1 -1
  208. package/build-module/hooks/border.js.map +1 -1
  209. package/build-module/hooks/color.js +1 -1
  210. package/build-module/hooks/color.js.map +1 -1
  211. package/build-module/hooks/content-lock-ui.js +8 -11
  212. package/build-module/hooks/content-lock-ui.js.map +1 -1
  213. package/build-module/hooks/duotone.js +1 -1
  214. package/build-module/hooks/duotone.js.map +1 -1
  215. package/build-module/hooks/index.native.js +1 -0
  216. package/build-module/hooks/index.native.js.map +1 -1
  217. package/build-module/hooks/layout.js +2 -2
  218. package/build-module/hooks/layout.js.map +1 -1
  219. package/build-module/hooks/position.js +1 -1
  220. package/build-module/hooks/position.js.map +1 -1
  221. package/build-module/hooks/style.js +1 -1
  222. package/build-module/hooks/style.js.map +1 -1
  223. package/build-module/hooks/use-editor-wrapper-styles.native.js +242 -0
  224. package/build-module/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  225. package/build-module/hooks/use-typography-props.js +14 -10
  226. package/build-module/hooks/use-typography-props.js.map +1 -1
  227. package/build-module/index.native.js +6 -0
  228. package/build-module/index.native.js.map +1 -0
  229. package/build-module/utils/use-should-contextual-toolbar-show.js +16 -12
  230. package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -1
  231. package/build-style/content-rtl.css +0 -1
  232. package/build-style/content.css +0 -1
  233. package/build-style/style-rtl.css +37 -13
  234. package/build-style/style.css +37 -13
  235. package/package.json +31 -31
  236. package/src/components/block-breadcrumb/style.scss +2 -1
  237. package/src/components/block-controls/slot.js +8 -4
  238. package/src/components/block-controls/slot.native.js +6 -1
  239. package/src/components/block-draggable/index.js +10 -6
  240. package/src/components/block-draggable/use-scroll-when-dragging.js +8 -2
  241. package/src/components/block-list/block-invalid-warning.native.js +17 -9
  242. package/src/components/block-list/block-list-item-cell.native.js +10 -1
  243. package/src/components/block-list/block-list-item.native.js +180 -208
  244. package/src/components/block-list/block-outline.native.js +58 -0
  245. package/src/components/block-list/block.native.js +564 -523
  246. package/src/components/block-list/content.scss +0 -1
  247. package/src/components/block-list/index.native.js +229 -298
  248. package/src/components/block-list/insertion-point.native.js +2 -2
  249. package/src/components/block-list/test/block-invalid-warning.native.js +48 -0
  250. package/src/components/block-list/test/index.native.js +205 -0
  251. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -1
  252. package/src/components/block-pattern-setup/style.scss +1 -4
  253. package/src/components/block-patterns-list/style.scss +1 -4
  254. package/src/components/block-settings-menu/block-settings-dropdown.js +10 -17
  255. package/src/components/block-settings-menu-controls/index.js +24 -4
  256. package/src/components/block-styles/style.scss +4 -4
  257. package/src/components/block-tools/block-contextual-toolbar.js +28 -62
  258. package/src/components/block-tools/selected-block-popover.js +3 -5
  259. package/src/components/block-tools/style.scss +8 -0
  260. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +16 -2
  261. package/src/components/global-styles/advanced-panel.js +82 -0
  262. package/src/components/global-styles/color-panel.js +6 -1
  263. package/src/components/global-styles/dimensions-panel.js +6 -6
  264. package/src/components/global-styles/hooks.js +1 -5
  265. package/src/components/global-styles/index.js +6 -1
  266. package/src/components/global-styles/style.scss +14 -0
  267. package/src/components/global-styles/test/utils.js +57 -1
  268. package/src/components/global-styles/typography-panel.js +1 -1
  269. package/src/components/global-styles/use-global-styles-output.js +21 -3
  270. package/src/components/global-styles/utils.js +27 -0
  271. package/src/components/image-editor/use-save-image.js +20 -9
  272. package/src/components/inserter-draggable-blocks/index.js +4 -0
  273. package/src/components/inspector-controls/fill.js +1 -1
  274. package/src/components/inspector-controls/fill.native.js +1 -1
  275. package/src/components/inspector-controls/slot.js +4 -9
  276. package/src/components/inspector-controls/slot.native.js +1 -1
  277. package/src/components/line-height-control/index.js +7 -2
  278. package/src/components/line-height-control/stories/index.js +1 -1
  279. package/src/components/link-control/test/index.js +42 -0
  280. package/src/components/link-control/use-internal-input-value.js +8 -7
  281. package/src/components/list-view/block-contents.js +26 -20
  282. package/src/components/list-view/block-select-button.js +5 -1
  283. package/src/components/list-view/block.js +5 -2
  284. package/src/components/list-view/index.js +26 -14
  285. package/src/components/list-view/style.scss +5 -2
  286. package/src/components/list-view/test/use-list-view-drop-zone.js +88 -12
  287. package/src/components/list-view/use-list-view-drop-zone.js +194 -11
  288. package/src/components/media-placeholder/index.js +74 -1
  289. package/src/components/multi-selection-inspector/index.js +2 -2
  290. package/src/components/off-canvas-editor/leaf-more-menu.js +2 -1
  291. package/src/components/preview-options/index.js +9 -2
  292. package/src/components/spacing-sizes-control/spacing-input-control.js +1 -0
  293. package/src/components/url-input/index.js +1 -2
  294. package/src/hooks/align.js +2 -1
  295. package/src/hooks/border.js +2 -1
  296. package/src/hooks/color.js +2 -1
  297. package/src/hooks/content-lock-ui.js +3 -15
  298. package/src/hooks/duotone.js +1 -0
  299. package/src/hooks/index.native.js +1 -0
  300. package/src/hooks/layout.js +4 -2
  301. package/src/hooks/position.js +2 -1
  302. package/src/hooks/style.js +2 -1
  303. package/src/hooks/test/use-editor-wrapper-styles.native.js +282 -0
  304. package/src/hooks/test/use-typography-props.js +47 -2
  305. package/src/hooks/use-editor-wrapper-styles.native.js +250 -0
  306. package/src/hooks/use-editor-wrapper-styles.native.scss +11 -0
  307. package/src/hooks/use-typography-props.js +10 -11
  308. package/src/index.native.js +6 -0
  309. package/src/utils/use-should-contextual-toolbar-show.js +19 -9
  310. package/tsconfig.json +1 -0
  311. package/tsconfig.tsbuildinfo +1 -1
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.BlockList = void 0;
8
+ exports.default = BlockList;
9
9
 
10
10
  var _element = require("@wordpress/element");
11
11
 
@@ -15,8 +15,6 @@ var _reactNative = require("react-native");
15
15
 
16
16
  var _data = require("@wordpress/data");
17
17
 
18
- var _compose = require("@wordpress/compose");
19
-
20
18
  var _blocks = require("@wordpress/blocks");
21
19
 
22
20
  var _components = require("@wordpress/components");
@@ -68,74 +66,98 @@ const getStyles = (isRootList, isStackedHorizontally, horizontalAlignment) => {
68
66
  return computedStyles;
69
67
  };
70
68
 
71
- class BlockList extends _element.Component {
72
- constructor() {
73
- super(...arguments);
74
- this.extraData = {
75
- parentWidth: this.props.parentWidth,
76
- renderFooterAppender: this.props.renderFooterAppender,
77
- renderAppender: this.props.renderAppender,
78
- onDeleteBlock: this.props.onDeleteBlock,
79
- contentStyle: this.props.contentStyle
80
- };
81
- this.renderItem = this.renderItem.bind(this);
82
- this.renderBlockListFooter = this.renderBlockListFooter.bind(this);
83
- this.scrollViewInnerRef = this.scrollViewInnerRef.bind(this);
84
- this.addBlockToEndOfPost = this.addBlockToEndOfPost.bind(this);
85
- this.shouldFlatListPreventAutomaticScroll = this.shouldFlatListPreventAutomaticScroll.bind(this);
86
- this.shouldShowInnerBlockAppender = this.shouldShowInnerBlockAppender.bind(this);
87
- this.renderEmptyList = this.renderEmptyList.bind(this);
88
- this.getExtraData = this.getExtraData.bind(this);
89
- this.getCellRendererComponent = this.getCellRendererComponent.bind(this);
90
- this.onLayout = this.onLayout.bind(this);
91
- this.state = {
92
- blockWidth: this.props.blockWidth || 0
93
- };
94
- }
95
-
96
- addBlockToEndOfPost(newBlock) {
97
- this.props.insertBlock(newBlock, this.props.blockCount);
98
- }
99
-
100
- scrollViewInnerRef(ref) {
101
- this.scrollViewRef = ref;
102
- }
103
-
104
- shouldFlatListPreventAutomaticScroll() {
105
- return this.props.isBlockInsertionPointVisible;
106
- }
69
+ function BlockList(_ref) {
70
+ let {
71
+ blockWidth: initialBlockWidth,
72
+ contentResizeMode,
73
+ contentStyle,
74
+ filterInnerBlocks,
75
+ gridProperties,
76
+ header,
77
+ horizontal,
78
+ horizontalAlignment,
79
+ marginHorizontal = _style.default.defaultBlock.marginLeft,
80
+ marginVertical = _style.default.defaultBlock.marginTop,
81
+ onAddBlock,
82
+ onDeleteBlock,
83
+ orientation,
84
+ parentWidth,
85
+ renderAppender,
86
+ renderFooterAppender,
87
+ rootClientId,
88
+ title,
89
+ withFooter = true
90
+ } = _ref;
91
+ const {
92
+ blockClientIds,
93
+ blockCount,
94
+ blockInsertionPointIsVisible,
95
+ isReadOnly,
96
+ isRootList,
97
+ isFloatingToolbarVisible,
98
+ isStackedHorizontally,
99
+ maxWidth,
100
+ isRTL
101
+ } = (0, _data.useSelect)(select => {
102
+ const {
103
+ getBlockCount,
104
+ getBlockHierarchyRootClientId,
105
+ getBlockOrder,
106
+ getSelectedBlockClientId,
107
+ isBlockInsertionPointVisible,
108
+ getSettings
109
+ } = select(_store.store);
110
+ const selectedBlockClientId = getSelectedBlockClientId();
111
+ const rootBlockId = getBlockHierarchyRootClientId(selectedBlockClientId);
112
+ let blockOrder = getBlockOrder(rootClientId); // Display only block which fulfill the condition in passed `filterInnerBlocks` function.
113
+
114
+ if (filterInnerBlocks) {
115
+ blockOrder = filterInnerBlocks(blockOrder);
116
+ }
107
117
 
108
- shouldShowInnerBlockAppender() {
109
118
  const {
110
- blockClientIds,
111
- renderAppender
112
- } = this.props;
113
- return renderAppender && blockClientIds.length > 0;
114
- }
119
+ isRTL: isRTLSetting,
120
+ maxWidth: maxWidthSetting,
121
+ readOnly
122
+ } = getSettings();
123
+ return {
124
+ blockClientIds: blockOrder,
125
+ blockCount: getBlockCount(),
126
+ blockInsertionPointIsVisible: _reactNative.Platform.OS === 'ios' && isBlockInsertionPointVisible(),
127
+ isReadOnly: readOnly,
128
+ isRootList: rootClientId === undefined,
129
+ isFloatingToolbarVisible: !!selectedBlockClientId && !!getBlockCount(rootBlockId),
130
+ isStackedHorizontally: orientation === 'horizontal',
131
+ maxWidth: maxWidthSetting,
132
+ isRTL: isRTLSetting
133
+ };
134
+ }, [filterInnerBlocks, orientation, rootClientId]);
135
+ const {
136
+ insertBlock,
137
+ clearSelectedBlock
138
+ } = (0, _data.useDispatch)(_store.store);
139
+ const extraData = (0, _element.useRef)({
140
+ parentWidth,
141
+ renderFooterAppender,
142
+ renderAppender,
143
+ onDeleteBlock,
144
+ contentStyle
145
+ });
146
+ const [blockWidth, setBlockWidth] = (0, _element.useState)(initialBlockWidth || 0);
147
+
148
+ const addBlockToEndOfPost = newBlock => {
149
+ insertBlock(newBlock, blockCount);
150
+ };
115
151
 
116
- renderEmptyList() {
117
- return (0, _element.createElement)(EmptyListComponentCompose, {
118
- rootClientId: this.props.rootClientId,
119
- renderAppender: this.props.renderAppender,
120
- renderFooterAppender: this.props.renderFooterAppender
121
- });
122
- }
152
+ const scrollViewRef = (0, _element.useRef)(null);
123
153
 
124
- getExtraData() {
125
- const {
126
- parentWidth,
127
- renderFooterAppender,
128
- onDeleteBlock,
129
- contentStyle,
130
- renderAppender,
131
- gridProperties
132
- } = this.props;
133
- const {
134
- blockWidth
135
- } = this.state;
154
+ const shouldFlatListPreventAutomaticScroll = () => blockInsertionPointIsVisible;
136
155
 
137
- if (this.extraData.parentWidth !== parentWidth || this.extraData.renderFooterAppender !== renderFooterAppender || this.extraData.onDeleteBlock !== onDeleteBlock || this.extraData.contentStyle !== contentStyle || this.extraData.renderAppender !== renderAppender || this.extraData.blockWidth !== blockWidth || this.extraData.gridProperties !== gridProperties) {
138
- this.extraData = {
156
+ const shouldShowInnerBlockAppender = () => renderAppender && blockClientIds.length > 0;
157
+
158
+ const getExtraData = () => {
159
+ if (extraData.current.parentWidth !== parentWidth || extraData.current.renderFooterAppender !== renderFooterAppender || extraData.current.onDeleteBlock !== onDeleteBlock || extraData.current.contentStyle !== contentStyle || extraData.current.renderAppender !== renderAppender || extraData.current.blockWidth !== blockWidth || extraData.current.gridProperties !== gridProperties) {
160
+ extraData.current = {
139
161
  parentWidth,
140
162
  renderFooterAppender,
141
163
  onDeleteBlock,
@@ -146,101 +168,27 @@ class BlockList extends _element.Component {
146
168
  };
147
169
  }
148
170
 
149
- return this.extraData;
150
- }
151
-
152
- getCellRendererComponent(_ref) {
153
- let {
154
- children,
155
- item,
156
- onLayout
157
- } = _ref;
158
- const {
159
- rootClientId
160
- } = this.props;
161
- return (0, _element.createElement)(_blockListItemCell.default, {
162
- children: children,
163
- clientId: item,
164
- onLayout: onLayout,
165
- rootClientId: rootClientId
166
- });
167
- }
171
+ return extraData.current;
172
+ };
168
173
 
169
- onLayout(_ref2) {
174
+ const onLayout = _ref2 => {
170
175
  let {
171
176
  nativeEvent
172
177
  } = _ref2;
173
178
  const {
174
179
  layout
175
180
  } = nativeEvent;
176
- const {
177
- blockWidth
178
- } = this.state;
179
- const {
180
- isRootList,
181
- maxWidth
182
- } = this.props;
183
181
  const layoutWidth = Math.floor(layout.width);
184
182
 
185
183
  if (isRootList && blockWidth !== layoutWidth) {
186
- this.setState({
187
- blockWidth: Math.min(layoutWidth, maxWidth)
188
- });
184
+ setBlockWidth(Math.min(layoutWidth, maxWidth));
189
185
  } else if (!isRootList && !blockWidth) {
190
- this.setState({
191
- blockWidth: Math.min(layoutWidth, maxWidth)
192
- });
186
+ setBlockWidth(Math.min(layoutWidth, maxWidth));
193
187
  }
194
- }
195
-
196
- render() {
197
- const {
198
- isRootList,
199
- isRTL
200
- } = this.props; // Use of Context to propagate the main scroll ref to its children e.g InnerBlocks.
201
-
202
- const blockList = isRootList ? (0, _element.createElement)(_blockListContext.BlockListProvider, {
203
- value: { ..._blockListContext.DEFAULT_BLOCK_LIST_CONTEXT,
204
- scrollRef: this.scrollViewRef
205
- }
206
- }, (0, _element.createElement)(_blockDraggable.BlockDraggableWrapper, {
207
- isRTL: isRTL
208
- }, _ref3 => {
209
- let {
210
- onScroll
211
- } = _ref3;
212
- return this.renderList({
213
- onScroll
214
- });
215
- })) : (0, _element.createElement)(_blockListContext.BlockListConsumer, null, _ref4 => {
216
- let {
217
- scrollRef
218
- } = _ref4;
219
- return this.renderList({
220
- parentScrollRef: scrollRef
221
- });
222
- });
223
- return blockList;
224
- }
188
+ };
225
189
 
226
- renderList() {
190
+ const renderList = function () {
227
191
  let extraProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
228
- const {
229
- clearSelectedBlock,
230
- blockClientIds,
231
- title,
232
- header,
233
- isReadOnly,
234
- isRootList,
235
- horizontal,
236
- marginVertical = _style.default.defaultBlock.marginTop,
237
- marginHorizontal = _style.default.defaultBlock.marginLeft,
238
- isFloatingToolbarVisible,
239
- isStackedHorizontally,
240
- horizontalAlignment,
241
- contentResizeMode,
242
- blockWidth
243
- } = this.props;
244
192
  const {
245
193
  parentScrollRef,
246
194
  onScroll
@@ -268,7 +216,7 @@ class BlockList extends _element.Component {
268
216
  return (0, _element.createElement)(_reactNative.View, {
269
217
  style: containerStyle,
270
218
  onAccessibilityEscape: clearSelectedBlock,
271
- onLayout: this.onLayout,
219
+ onLayout: onLayout,
272
220
  testID: "block-list-wrapper"
273
221
  }, (0, _element.createElement)(_components.KeyboardAwareFlatList, (0, _extends2.default)({}, _reactNative.Platform.OS === 'android' ? {
274
222
  removeClippedSubviews: false
@@ -276,58 +224,54 @@ class BlockList extends _element.Component {
276
224
  // Disable clipping on Android to fix focus losing. See https://github.com/wordpress-mobile/gutenberg-mobile/pull/741#issuecomment-472746541
277
225
  accessibilityLabel: "block-list",
278
226
  innerRef: ref => {
279
- this.scrollViewInnerRef(parentScrollRef || ref);
227
+ scrollViewRef.current = parentScrollRef || ref;
280
228
  },
281
229
  extraScrollHeight: extraScrollHeight,
282
230
  keyboardShouldPersistTaps: "always",
283
231
  scrollViewStyle: scrollViewStyle,
284
- extraData: this.getExtraData(),
232
+ extraData: getExtraData(),
285
233
  scrollEnabled: isRootList,
286
234
  contentContainerStyle: [horizontal && _style.default.horizontalContentContainer, isWider(blockWidth, 'medium') && (isContentStretch && isMultiBlocks ? _style.default.horizontalContentContainerStretch : _style.default.horizontalContentContainerCenter)],
287
235
  style: getStyles(isRootList, isStackedHorizontally, horizontalAlignment),
288
236
  data: blockClientIds,
289
237
  keyExtractor: identity,
290
- renderItem: this.renderItem,
291
- CellRendererComponent: this.getCellRendererComponent,
292
- shouldPreventAutomaticScroll: this.shouldFlatListPreventAutomaticScroll,
238
+ listKey: rootClientId ? `list-${rootClientId}` : 'list-root',
239
+ renderItem: renderItem,
240
+ CellRendererComponent: _blockListItemCell.default,
241
+ shouldPreventAutomaticScroll: shouldFlatListPreventAutomaticScroll,
293
242
  title: title,
294
243
  ListHeaderComponent: header,
295
- ListEmptyComponent: !isReadOnly && this.renderEmptyList,
296
- ListFooterComponent: this.renderBlockListFooter,
244
+ ListEmptyComponent: !isReadOnly && (0, _element.createElement)(EmptyList, {
245
+ orientation: orientation,
246
+ rootClientId: rootClientId,
247
+ renderAppender: renderAppender,
248
+ renderFooterAppender: renderFooterAppender
249
+ }),
250
+ ListFooterComponent: (0, _element.createElement)(Footer, {
251
+ addBlockToEndOfPost: addBlockToEndOfPost,
252
+ isReadOnly: isReadOnly,
253
+ renderFooterAppender: renderFooterAppender,
254
+ withFooter: withFooter
255
+ }),
297
256
  onScroll: onScroll
298
- })), this.shouldShowInnerBlockAppender() && (0, _element.createElement)(_reactNative.View, {
257
+ })), shouldShowInnerBlockAppender() && (0, _element.createElement)(_reactNative.View, {
299
258
  style: {
300
259
  marginHorizontal: marginHorizontal - _style.default.innerAppender.marginLeft
301
260
  }
302
261
  }, (0, _element.createElement)(_blockListAppender.default, {
303
- rootClientId: this.props.rootClientId,
304
- renderAppender: this.props.renderAppender,
262
+ rootClientId: rootClientId,
263
+ renderAppender: renderAppender,
305
264
  showSeparator: true
306
265
  })));
307
- }
266
+ };
308
267
 
309
- renderItem(_ref5) {
268
+ const renderItem = _ref3 => {
310
269
  let {
311
- item: clientId
312
- } = _ref5;
313
- const {
314
- contentResizeMode,
315
- contentStyle,
316
- onAddBlock,
317
- onDeleteBlock,
318
- rootClientId,
319
- isStackedHorizontally,
320
- blockClientIds,
321
- parentWidth,
322
- marginVertical = _style.default.defaultBlock.marginTop,
323
- marginHorizontal = _style.default.defaultBlock.marginLeft,
324
- gridProperties
325
- } = this.props;
326
- const {
327
- blockWidth
328
- } = this.state; // Extracting the grid item properties here to avoid
270
+ item: clientId,
271
+ index
272
+ } = _ref3;
273
+ // Extracting the grid item properties here to avoid
329
274
  // re-renders in the blockListItem component.
330
-
331
275
  const isGridItem = !!gridProperties;
332
276
  const gridItemProps = gridProperties && {
333
277
  numOfColumns: gridProperties.numColumns,
@@ -335,6 +279,7 @@ class BlockList extends _element.Component {
335
279
  tileIndex: blockClientIds.indexOf(clientId)
336
280
  };
337
281
  return (0, _element.createElement)(_blockListItem.default, (0, _extends2.default)({
282
+ index: index,
338
283
  isStackedHorizontally: isStackedHorizontally,
339
284
  rootClientId: rootClientId,
340
285
  clientId: clientId,
@@ -345,142 +290,101 @@ class BlockList extends _element.Component {
345
290
  marginVertical: marginVertical,
346
291
  marginHorizontal: marginHorizontal,
347
292
  onDeleteBlock: onDeleteBlock,
348
- shouldShowInnerBlockAppender: this.shouldShowInnerBlockAppender,
293
+ shouldShowInnerBlockAppender: shouldShowInnerBlockAppender,
349
294
  blockWidth: blockWidth,
350
295
  isGridItem: isGridItem
351
296
  }, gridItemProps));
352
- }
297
+ }; // Use of Context to propagate the main scroll ref to its children e.g InnerBlocks.
353
298
 
354
- renderBlockListFooter() {
355
- const paragraphBlock = (0, _blocks.createBlock)('core/paragraph');
356
- const {
357
- isReadOnly,
358
- withFooter = true,
359
- renderFooterAppender
360
- } = this.props;
361
-
362
- if (!isReadOnly && withFooter) {
363
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_reactNative.TouchableWithoutFeedback, {
364
- accessibilityLabel: (0, _i18n.__)('Add paragraph block'),
365
- testID: (0, _i18n.__)('Add paragraph block'),
366
- onPress: () => {
367
- this.addBlockToEndOfPost(paragraphBlock);
368
- }
369
- }, (0, _element.createElement)(_reactNative.View, {
370
- style: _style.default.blockListFooter
371
- })));
372
- } else if (renderFooterAppender) {
373
- return renderFooterAppender();
374
- }
375
-
376
- return null;
377
- }
378
299
 
300
+ const blockList = isRootList ? (0, _element.createElement)(_blockListContext.BlockListProvider, {
301
+ value: { ..._blockListContext.DEFAULT_BLOCK_LIST_CONTEXT,
302
+ scrollRef: scrollViewRef.current
303
+ }
304
+ }, (0, _element.createElement)(_blockDraggable.BlockDraggableWrapper, {
305
+ isRTL: isRTL
306
+ }, _ref4 => {
307
+ let {
308
+ onScroll
309
+ } = _ref4;
310
+ return renderList({
311
+ onScroll
312
+ });
313
+ })) : (0, _element.createElement)(_blockListContext.BlockListConsumer, null, _ref5 => {
314
+ let {
315
+ scrollRef
316
+ } = _ref5;
317
+ return renderList({
318
+ parentScrollRef: scrollRef
319
+ });
320
+ });
321
+ return blockList;
379
322
  }
380
323
 
381
- exports.BlockList = BlockList;
382
-
383
- var _default = (0, _compose.compose)([(0, _data.withSelect)((select, _ref6) => {
324
+ function Footer(_ref6) {
384
325
  let {
385
- rootClientId,
386
- orientation,
387
- filterInnerBlocks
388
- } = _ref6;
389
- const {
390
- getBlockCount,
391
- getBlockHierarchyRootClientId,
392
- getBlockOrder,
393
- getSelectedBlockClientId,
394
- isBlockInsertionPointVisible,
395
- getSettings
396
- } = select(_store.store);
397
- const isStackedHorizontally = orientation === 'horizontal';
398
- const selectedBlockClientId = getSelectedBlockClientId();
399
- let blockClientIds = getBlockOrder(rootClientId); // Display only block which fulfill the condition in passed `filterInnerBlocks` function.
400
-
401
- if (filterInnerBlocks) {
402
- blockClientIds = filterInnerBlocks(blockClientIds);
403
- }
404
-
405
- const {
406
- maxWidth
407
- } = getSettings();
408
- const isReadOnly = getSettings().readOnly;
409
- const blockCount = getBlockCount();
410
- const rootBlockId = getBlockHierarchyRootClientId(selectedBlockClientId);
411
- const isFloatingToolbarVisible = !!selectedBlockClientId && !!getBlockCount(rootBlockId);
412
- const isRTL = getSettings().isRTL;
413
- return {
414
- blockClientIds,
415
- blockCount,
416
- isBlockInsertionPointVisible: _reactNative.Platform.OS === 'ios' && isBlockInsertionPointVisible(),
326
+ addBlockToEndOfPost,
417
327
  isReadOnly,
418
- isRootList: rootClientId === undefined,
419
- isFloatingToolbarVisible,
420
- isStackedHorizontally,
421
- maxWidth,
422
- isRTL
423
- };
424
- }), (0, _data.withDispatch)(dispatch => {
425
- const {
426
- insertBlock,
427
- replaceBlock,
428
- clearSelectedBlock
429
- } = dispatch(_store.store);
430
- return {
431
- clearSelectedBlock,
432
- insertBlock,
433
- replaceBlock
434
- };
435
- }), _compose.withPreferredColorScheme])(BlockList);
436
-
437
- exports.default = _default;
438
-
439
- class EmptyListComponent extends _element.Component {
440
- render() {
441
- const {
442
- shouldShowInsertionPoint,
443
- rootClientId,
444
- renderAppender,
445
- renderFooterAppender
446
- } = this.props;
447
-
448
- if (renderFooterAppender || renderAppender === false) {
449
- return null;
450
- }
328
+ renderFooterAppender,
329
+ withFooter
330
+ } = _ref6;
451
331
 
452
- return (0, _element.createElement)(_reactNative.View, {
453
- style: _style.default.defaultAppender
454
- }, (0, _element.createElement)(_components.ReadableContentView, {
455
- align: renderAppender ? _components.WIDE_ALIGNMENTS.alignments.full : undefined
456
- }, (0, _element.createElement)(_blockListAppender.default, {
457
- rootClientId: rootClientId,
458
- renderAppender: renderAppender,
459
- showSeparator: shouldShowInsertionPoint
332
+ if (!isReadOnly && withFooter) {
333
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_reactNative.TouchableWithoutFeedback, {
334
+ accessibilityLabel: (0, _i18n.__)('Add paragraph block'),
335
+ testID: (0, _i18n.__)('Add paragraph block'),
336
+ onPress: () => {
337
+ const paragraphBlock = (0, _blocks.createBlock)('core/paragraph');
338
+ addBlockToEndOfPost(paragraphBlock);
339
+ }
340
+ }, (0, _element.createElement)(_reactNative.View, {
341
+ style: _style.default.blockListFooter
460
342
  })));
343
+ } else if (renderFooterAppender) {
344
+ return renderFooterAppender();
461
345
  }
462
346
 
347
+ return null;
463
348
  }
464
349
 
465
- const EmptyListComponentCompose = (0, _compose.compose)([(0, _data.withSelect)((select, _ref7) => {
350
+ function EmptyList(_ref7) {
466
351
  let {
467
- rootClientId,
468
- orientation
352
+ orientation,
353
+ renderAppender,
354
+ renderFooterAppender,
355
+ rootClientId
469
356
  } = _ref7;
470
357
  const {
471
- getBlockOrder,
472
- getBlockInsertionPoint,
473
- isBlockInsertionPointVisible
474
- } = select(_store.store);
475
- const isStackedHorizontally = orientation === 'horizontal';
476
- const blockClientIds = getBlockOrder(rootClientId);
477
- const insertionPoint = getBlockInsertionPoint();
478
- const blockInsertionPointIsVisible = isBlockInsertionPointVisible();
479
- const shouldShowInsertionPoint = !isStackedHorizontally && blockInsertionPointIsVisible && insertionPoint.rootClientId === rootClientId && ( // If list is empty, show the insertion point (via the default appender)
480
- blockClientIds.length === 0 || // Or if the insertion point is right before the denoted block.
481
- !blockClientIds[insertionPoint.index]);
482
- return {
483
358
  shouldShowInsertionPoint
484
- };
485
- })])(EmptyListComponent);
359
+ } = (0, _data.useSelect)(select => {
360
+ const {
361
+ getBlockOrder,
362
+ getBlockInsertionPoint,
363
+ isBlockInsertionPointVisible
364
+ } = select(_store.store);
365
+ const isStackedHorizontally = orientation === 'horizontal';
366
+ const blockClientIds = getBlockOrder(rootClientId);
367
+ const insertionPoint = getBlockInsertionPoint();
368
+ const blockInsertionPointIsVisible = isBlockInsertionPointVisible();
369
+ return {
370
+ shouldShowInsertionPoint: !isStackedHorizontally && blockInsertionPointIsVisible && insertionPoint.rootClientId === rootClientId && ( // If list is empty, show the insertion point (via the default appender)
371
+ blockClientIds.length === 0 || // Or if the insertion point is right before the denoted block.
372
+ !blockClientIds[insertionPoint.index])
373
+ };
374
+ });
375
+
376
+ if (renderFooterAppender || renderAppender === false) {
377
+ return null;
378
+ }
379
+
380
+ return (0, _element.createElement)(_reactNative.View, {
381
+ style: _style.default.defaultAppender
382
+ }, (0, _element.createElement)(_components.ReadableContentView, {
383
+ align: renderAppender ? _components.WIDE_ALIGNMENTS.alignments.full : undefined
384
+ }, (0, _element.createElement)(_blockListAppender.default, {
385
+ rootClientId: rootClientId,
386
+ renderAppender: renderAppender,
387
+ showSeparator: shouldShowInsertionPoint
388
+ })));
389
+ }
486
390
  //# sourceMappingURL=index.native.js.map