@wordpress/block-editor 10.5.0 → 11.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 (716) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +2 -1
  3. package/build/autocompleters/block.js +2 -6
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/autocompleters/link.js +2 -0
  6. package/build/autocompleters/link.js.map +1 -1
  7. package/build/components/alignment-control/ui.js +1 -7
  8. package/build/components/alignment-control/ui.js.map +1 -1
  9. package/build/components/block-alignment-control/use-available-alignments.js +4 -3
  10. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  11. package/build/components/block-card/index.js +51 -3
  12. package/build/components/block-card/index.js.map +1 -1
  13. package/build/components/block-draggable/index.native.js +46 -39
  14. package/build/components/block-draggable/index.native.js.map +1 -1
  15. package/build/components/block-edit/edit.js +4 -3
  16. package/build/components/block-edit/edit.js.map +1 -1
  17. package/build/components/block-edit/edit.native.js +4 -7
  18. package/build/components/block-edit/edit.native.js.map +1 -1
  19. package/build/components/block-icon/index.js +4 -2
  20. package/build/components/block-icon/index.js.map +1 -1
  21. package/build/components/block-inspector/index.js +90 -37
  22. package/build/components/block-inspector/index.js.map +1 -1
  23. package/build/components/block-list/block-list-context.native.js +5 -8
  24. package/build/components/block-list/block-list-context.native.js.map +1 -1
  25. package/build/components/block-list/block.js +55 -24
  26. package/build/components/block-list/block.js.map +1 -1
  27. package/build/components/block-list/block.native.js +61 -28
  28. package/build/components/block-list/block.native.js.map +1 -1
  29. package/build/components/block-list-appender/index.js +46 -34
  30. package/build/components/block-list-appender/index.js.map +1 -1
  31. package/build/components/block-list-appender/index.native.js +39 -34
  32. package/build/components/block-list-appender/index.native.js.map +1 -1
  33. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +30 -22
  34. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  35. package/build/components/block-mobile-toolbar/index.native.js +1 -1
  36. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +16 -8
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-patterns-list/index.js +33 -11
  40. package/build/components/block-patterns-list/index.js.map +1 -1
  41. package/build/components/block-preview/auto.js +9 -3
  42. package/build/components/block-preview/auto.js.map +1 -1
  43. package/build/components/block-preview/index.js +5 -9
  44. package/build/components/block-preview/index.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-styles/index.native.js +1 -3
  48. package/build/components/block-styles/index.native.js.map +1 -1
  49. package/build/components/block-styles/utils.js +7 -10
  50. package/build/components/block-styles/utils.js.map +1 -1
  51. package/build/components/block-toolbar/index.js +5 -1
  52. package/build/components/block-toolbar/index.js.map +1 -1
  53. package/build/components/block-toolbar/index.native.js +6 -8
  54. package/build/components/block-toolbar/index.native.js.map +1 -1
  55. package/build/components/block-tools/insertion-point.js +8 -49
  56. package/build/components/block-tools/insertion-point.js.map +1 -1
  57. package/build/components/block-tools/selected-block-popover.js +1 -3
  58. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  59. package/build/components/block-variation-picker/index.js +2 -3
  60. package/build/components/block-variation-picker/index.js.map +1 -1
  61. package/build/components/colors/utils.js +2 -6
  62. package/build/components/colors/utils.js.map +1 -1
  63. package/build/components/colors-gradients/control.js +0 -3
  64. package/build/components/colors-gradients/control.js.map +1 -1
  65. package/build/components/colors-gradients/dropdown.js +0 -2
  66. package/build/components/colors-gradients/dropdown.js.map +1 -1
  67. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -19
  68. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  69. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -3
  70. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  71. package/build/components/copy-handler/index.js +37 -9
  72. package/build/components/copy-handler/index.js.map +1 -1
  73. package/build/components/font-sizes/fluid-utils.js +5 -2
  74. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  75. package/build/components/font-sizes/utils.js +10 -4
  76. package/build/components/font-sizes/utils.js.map +1 -1
  77. package/build/components/font-sizes/with-font-sizes.js +11 -6
  78. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  79. package/build/components/gradients/use-gradient.js +2 -8
  80. package/build/components/gradients/use-gradient.js.map +1 -1
  81. package/build/components/height-control/index.js +115 -0
  82. package/build/components/height-control/index.js.map +1 -0
  83. package/build/components/iframe/index.js +22 -101
  84. package/build/components/iframe/index.js.map +1 -1
  85. package/build/components/iframe/use-compatibility-styles.js +93 -0
  86. package/build/components/iframe/use-compatibility-styles.js.map +1 -0
  87. package/build/components/image-editor/use-save-image.js +2 -0
  88. package/build/components/image-editor/use-save-image.js.map +1 -1
  89. package/build/components/image-editor/zoom-dropdown.js +1 -0
  90. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  91. package/build/components/index.js +9 -0
  92. package/build/components/index.js.map +1 -1
  93. package/build/components/inner-blocks/index.js +25 -7
  94. package/build/components/inner-blocks/index.js.map +1 -1
  95. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  96. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  97. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  98. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  99. package/build/components/inserter/block-patterns-tab.js +25 -46
  100. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  101. package/build/components/inserter/block-types-tab.js +3 -1
  102. package/build/components/inserter/block-types-tab.js.map +1 -1
  103. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  104. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  105. package/build/components/inserter/hooks/use-insertion-point.js +4 -3
  106. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  107. package/build/components/inserter/index.js +20 -6
  108. package/build/components/inserter/index.js.map +1 -1
  109. package/build/components/inserter/index.native.js +3 -4
  110. package/build/components/inserter/index.native.js.map +1 -1
  111. package/build/components/inserter/media-tab/hooks.js +106 -0
  112. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  113. package/build/components/inserter/media-tab/index.js +32 -0
  114. package/build/components/inserter/media-tab/index.js.map +1 -0
  115. package/build/components/inserter/media-tab/media-list.js +100 -0
  116. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  117. package/build/components/inserter/media-tab/media-panel.js +96 -0
  118. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  119. package/build/components/inserter/media-tab/media-tab.js +120 -0
  120. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  121. package/build/components/inserter/media-tab/utils.js +54 -0
  122. package/build/components/inserter/media-tab/utils.js.map +1 -0
  123. package/build/components/inserter/menu.js +35 -12
  124. package/build/components/inserter/menu.js.map +1 -1
  125. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  126. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  127. package/build/components/inserter/quick-inserter.js +7 -3
  128. package/build/components/inserter/quick-inserter.js.map +1 -1
  129. package/build/components/inserter/search-items.js +15 -14
  130. package/build/components/inserter/search-items.js.map +1 -1
  131. package/build/components/inserter/search-results.js +7 -3
  132. package/build/components/inserter/search-results.js.map +1 -1
  133. package/build/components/inserter/tabs.js +16 -2
  134. package/build/components/inserter/tabs.js.map +1 -1
  135. package/build/components/inserter-list-item/index.js +4 -1
  136. package/build/components/inserter-list-item/index.js.map +1 -1
  137. package/build/components/inspector-controls/groups.js +2 -0
  138. package/build/components/inspector-controls/groups.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  140. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  141. package/build/components/inspector-controls-tabs/index.js +71 -0
  142. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  143. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  144. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  145. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  146. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  147. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  148. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  149. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  150. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  151. package/build/components/inspector-controls-tabs/utils.js +37 -0
  152. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  153. package/build/components/link-control/index.js +1 -0
  154. package/build/components/link-control/index.js.map +1 -1
  155. package/build/components/link-control/search-input.js +0 -1
  156. package/build/components/link-control/search-input.js.map +1 -1
  157. package/build/components/link-control/use-internal-input-value.js +3 -3
  158. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  159. package/build/components/list-view/block-select-button.js +1 -1
  160. package/build/components/list-view/block-select-button.js.map +1 -1
  161. package/build/components/list-view/block.js +5 -2
  162. package/build/components/list-view/block.js.map +1 -1
  163. package/build/components/list-view/branch.js +13 -12
  164. package/build/components/list-view/branch.js.map +1 -1
  165. package/build/components/media-upload/index.native.js +2 -3
  166. package/build/components/media-upload/index.native.js.map +1 -1
  167. package/build/components/off-canvas-editor/appender.js +99 -0
  168. package/build/components/off-canvas-editor/appender.js.map +1 -0
  169. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  170. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  171. package/build/components/off-canvas-editor/block-select-button.js +3 -2
  172. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  173. package/build/components/off-canvas-editor/block.js +82 -38
  174. package/build/components/off-canvas-editor/block.js.map +1 -1
  175. package/build/components/off-canvas-editor/branch.js +3 -5
  176. package/build/components/off-canvas-editor/branch.js.map +1 -1
  177. package/build/components/off-canvas-editor/index.js +24 -11
  178. package/build/components/off-canvas-editor/index.js.map +1 -1
  179. package/build/components/off-canvas-editor/leaf.js +1 -1
  180. package/build/components/off-canvas-editor/leaf.js.map +1 -1
  181. package/build/components/off-canvas-editor/link-ui.js +185 -0
  182. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  183. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  184. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  185. package/build/components/off-canvas-editor/use-inserted-block.js +58 -0
  186. package/build/components/off-canvas-editor/use-inserted-block.js.map +1 -0
  187. package/build/components/responsive-block-control/label.js.map +1 -1
  188. package/build/components/rich-text/format-edit.js +12 -10
  189. package/build/components/rich-text/format-edit.js.map +1 -1
  190. package/build/components/rich-text/format-toolbar/index.js +8 -4
  191. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  192. package/build/components/rich-text/index.js +3 -3
  193. package/build/components/rich-text/index.js.map +1 -1
  194. package/build/components/rich-text/index.native.js +0 -2
  195. package/build/components/rich-text/index.native.js.map +1 -1
  196. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  197. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  198. package/build/components/rich-text/use-paste-handler.js +21 -12
  199. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  200. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  201. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  202. package/build/components/rich-text/utils.js +1 -19
  203. package/build/components/rich-text/utils.js.map +1 -1
  204. package/build/components/spacing-sizes-control/index.js +0 -1
  205. package/build/components/spacing-sizes-control/index.js.map +1 -1
  206. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  207. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  208. package/build/components/spacing-sizes-control/utils.js +1 -1
  209. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  210. package/build/components/typewriter/index.js +1 -1
  211. package/build/components/typewriter/index.js.map +1 -1
  212. package/build/components/ungroup-button/index.native.js +4 -2
  213. package/build/components/ungroup-button/index.native.js.map +1 -1
  214. package/build/components/url-input/index.js +46 -43
  215. package/build/components/url-input/index.js.map +1 -1
  216. package/build/components/url-popover/image-url-input-ui.js +2 -2
  217. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  218. package/build/components/use-block-display-information/index.js +8 -4
  219. package/build/components/use-block-display-information/index.js.map +1 -1
  220. package/build/components/use-setting/index.js +9 -1
  221. package/build/components/use-setting/index.js.map +1 -1
  222. package/build/components/writing-flow/index.js +1 -1
  223. package/build/components/writing-flow/index.js.map +1 -1
  224. package/build/hooks/border.js +0 -1
  225. package/build/hooks/border.js.map +1 -1
  226. package/build/hooks/child-layout.js +209 -0
  227. package/build/hooks/child-layout.js.map +1 -0
  228. package/build/hooks/color-panel.js +0 -1
  229. package/build/hooks/color-panel.js.map +1 -1
  230. package/build/hooks/color.js +1 -2
  231. package/build/hooks/color.js.map +1 -1
  232. package/build/hooks/content-lock-ui.js +1 -1
  233. package/build/hooks/content-lock-ui.js.map +1 -1
  234. package/build/hooks/dimensions.js +25 -7
  235. package/build/hooks/dimensions.js.map +1 -1
  236. package/build/hooks/font-family.js +4 -4
  237. package/build/hooks/font-family.js.map +1 -1
  238. package/build/hooks/font-size.js +5 -3
  239. package/build/hooks/font-size.js.map +1 -1
  240. package/build/hooks/layout.js +57 -1
  241. package/build/hooks/layout.js.map +1 -1
  242. package/build/hooks/min-height.js +4 -10
  243. package/build/hooks/min-height.js.map +1 -1
  244. package/build/hooks/use-typography-props.js +11 -8
  245. package/build/hooks/use-typography-props.js.map +1 -1
  246. package/build/store/reducer.js +411 -274
  247. package/build/store/reducer.js.map +1 -1
  248. package/build/store/selectors.js +58 -48
  249. package/build/store/selectors.js.map +1 -1
  250. package/build/utils/pasting.js +6 -11
  251. package/build/utils/pasting.js.map +1 -1
  252. package/build/utils/sorting.js +63 -0
  253. package/build/utils/sorting.js.map +1 -0
  254. package/build-module/autocompleters/block.js +2 -6
  255. package/build-module/autocompleters/block.js.map +1 -1
  256. package/build-module/autocompleters/link.js +2 -0
  257. package/build-module/autocompleters/link.js.map +1 -1
  258. package/build-module/components/alignment-control/ui.js +1 -6
  259. package/build-module/components/alignment-control/ui.js.map +1 -1
  260. package/build-module/components/block-alignment-control/use-available-alignments.js +4 -3
  261. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  262. package/build-module/components/block-card/index.js +45 -3
  263. package/build-module/components/block-card/index.js.map +1 -1
  264. package/build-module/components/block-draggable/index.native.js +40 -31
  265. package/build-module/components/block-draggable/index.native.js.map +1 -1
  266. package/build-module/components/block-edit/edit.js +4 -2
  267. package/build-module/components/block-edit/edit.js.map +1 -1
  268. package/build-module/components/block-edit/edit.native.js +4 -6
  269. package/build-module/components/block-edit/edit.native.js.map +1 -1
  270. package/build-module/components/block-icon/index.js +4 -2
  271. package/build-module/components/block-icon/index.js.map +1 -1
  272. package/build-module/components/block-inspector/index.js +87 -34
  273. package/build-module/components/block-inspector/index.js.map +1 -1
  274. package/build-module/components/block-list/block-list-context.native.js +5 -8
  275. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  276. package/build-module/components/block-list/block.js +55 -25
  277. package/build-module/components/block-list/block.js.map +1 -1
  278. package/build-module/components/block-list/block.native.js +61 -28
  279. package/build-module/components/block-list/block.native.js.map +1 -1
  280. package/build-module/components/block-list-appender/index.js +46 -34
  281. package/build-module/components/block-list-appender/index.js.map +1 -1
  282. package/build-module/components/block-list-appender/index.native.js +39 -32
  283. package/build-module/components/block-list-appender/index.native.js.map +1 -1
  284. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +31 -24
  285. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  286. package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
  287. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  288. package/build-module/components/block-pattern-setup/index.js +16 -8
  289. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  290. package/build-module/components/block-patterns-list/index.js +35 -13
  291. package/build-module/components/block-patterns-list/index.js.map +1 -1
  292. package/build-module/components/block-preview/auto.js +9 -3
  293. package/build-module/components/block-preview/auto.js.map +1 -1
  294. package/build-module/components/block-preview/index.js +5 -8
  295. package/build-module/components/block-preview/index.js.map +1 -1
  296. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  297. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  298. package/build-module/components/block-styles/index.native.js +1 -2
  299. package/build-module/components/block-styles/index.native.js.map +1 -1
  300. package/build-module/components/block-styles/utils.js +7 -9
  301. package/build-module/components/block-styles/utils.js.map +1 -1
  302. package/build-module/components/block-toolbar/index.js +6 -2
  303. package/build-module/components/block-toolbar/index.js.map +1 -1
  304. package/build-module/components/block-toolbar/index.native.js +6 -8
  305. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  306. package/build-module/components/block-tools/insertion-point.js +8 -49
  307. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  308. package/build-module/components/block-tools/selected-block-popover.js +1 -2
  309. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  310. package/build-module/components/block-variation-picker/index.js +2 -3
  311. package/build-module/components/block-variation-picker/index.js.map +1 -1
  312. package/build-module/components/colors/utils.js +3 -7
  313. package/build-module/components/colors/utils.js.map +1 -1
  314. package/build-module/components/colors-gradients/control.js +0 -3
  315. package/build-module/components/colors-gradients/control.js.map +1 -1
  316. package/build-module/components/colors-gradients/dropdown.js +0 -2
  317. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  318. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +4 -19
  319. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  320. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
  321. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  322. package/build-module/components/copy-handler/index.js +38 -10
  323. package/build-module/components/copy-handler/index.js.map +1 -1
  324. package/build-module/components/font-sizes/fluid-utils.js +5 -2
  325. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  326. package/build-module/components/font-sizes/utils.js +11 -5
  327. package/build-module/components/font-sizes/utils.js.map +1 -1
  328. package/build-module/components/font-sizes/with-font-sizes.js +12 -7
  329. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  330. package/build-module/components/gradients/use-gradient.js +2 -7
  331. package/build-module/components/gradients/use-gradient.js.map +1 -1
  332. package/build-module/components/height-control/index.js +103 -0
  333. package/build-module/components/height-control/index.js.map +1 -0
  334. package/build-module/components/iframe/index.js +21 -101
  335. package/build-module/components/iframe/index.js.map +1 -1
  336. package/build-module/components/iframe/use-compatibility-styles.js +85 -0
  337. package/build-module/components/iframe/use-compatibility-styles.js.map +1 -0
  338. package/build-module/components/image-editor/use-save-image.js +2 -0
  339. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  340. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  341. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  342. package/build-module/components/index.js +1 -0
  343. package/build-module/components/index.js.map +1 -1
  344. package/build-module/components/inner-blocks/index.js +27 -9
  345. package/build-module/components/inner-blocks/index.js.map +1 -1
  346. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  347. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  348. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  349. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  350. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  351. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  352. package/build-module/components/inserter/block-types-tab.js +3 -2
  353. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  354. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  355. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  356. package/build-module/components/inserter/hooks/use-insertion-point.js +4 -3
  357. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  358. package/build-module/components/inserter/index.js +20 -6
  359. package/build-module/components/inserter/index.js.map +1 -1
  360. package/build-module/components/inserter/index.native.js +3 -5
  361. package/build-module/components/inserter/index.native.js.map +1 -1
  362. package/build-module/components/inserter/media-tab/hooks.js +92 -0
  363. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  364. package/build-module/components/inserter/media-tab/index.js +4 -0
  365. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  366. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  367. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  368. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  369. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  370. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  371. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  372. package/build-module/components/inserter/media-tab/utils.js +45 -0
  373. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  374. package/build-module/components/inserter/menu.js +33 -12
  375. package/build-module/components/inserter/menu.js.map +1 -1
  376. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  377. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  378. package/build-module/components/inserter/quick-inserter.js +7 -3
  379. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  380. package/build-module/components/inserter/search-items.js +15 -13
  381. package/build-module/components/inserter/search-items.js.map +1 -1
  382. package/build-module/components/inserter/search-results.js +7 -4
  383. package/build-module/components/inserter/search-results.js.map +1 -1
  384. package/build-module/components/inserter/tabs.js +15 -2
  385. package/build-module/components/inserter/tabs.js.map +1 -1
  386. package/build-module/components/inserter-list-item/index.js +5 -2
  387. package/build-module/components/inserter-list-item/index.js.map +1 -1
  388. package/build-module/components/inspector-controls/groups.js +2 -0
  389. package/build-module/components/inspector-controls/groups.js.map +1 -1
  390. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  391. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  392. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  393. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  394. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  395. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  396. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  397. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  398. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  399. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  400. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  401. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  402. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  403. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  404. package/build-module/components/link-control/index.js +1 -0
  405. package/build-module/components/link-control/index.js.map +1 -1
  406. package/build-module/components/link-control/search-input.js +0 -1
  407. package/build-module/components/link-control/search-input.js.map +1 -1
  408. package/build-module/components/link-control/use-internal-input-value.js +3 -3
  409. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  410. package/build-module/components/list-view/block-select-button.js +1 -1
  411. package/build-module/components/list-view/block-select-button.js.map +1 -1
  412. package/build-module/components/list-view/block.js +5 -2
  413. package/build-module/components/list-view/block.js.map +1 -1
  414. package/build-module/components/list-view/branch.js +12 -11
  415. package/build-module/components/list-view/branch.js.map +1 -1
  416. package/build-module/components/media-upload/index.native.js +2 -4
  417. package/build-module/components/media-upload/index.native.js.map +1 -1
  418. package/build-module/components/off-canvas-editor/appender.js +83 -0
  419. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  420. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  421. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  422. package/build-module/components/off-canvas-editor/block-select-button.js +3 -2
  423. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  424. package/build-module/components/off-canvas-editor/block.js +83 -41
  425. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  426. package/build-module/components/off-canvas-editor/branch.js +3 -4
  427. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  428. package/build-module/components/off-canvas-editor/index.js +24 -12
  429. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  430. package/build-module/components/off-canvas-editor/leaf.js +1 -1
  431. package/build-module/components/off-canvas-editor/leaf.js.map +1 -1
  432. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  433. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  434. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  435. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  436. package/build-module/components/off-canvas-editor/use-inserted-block.js +47 -0
  437. package/build-module/components/off-canvas-editor/use-inserted-block.js.map +1 -0
  438. package/build-module/components/responsive-block-control/label.js +1 -2
  439. package/build-module/components/responsive-block-control/label.js.map +1 -1
  440. package/build-module/components/rich-text/format-edit.js +12 -9
  441. package/build-module/components/rich-text/format-edit.js.map +1 -1
  442. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  443. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  444. package/build-module/components/rich-text/index.js +2 -3
  445. package/build-module/components/rich-text/index.js.map +1 -1
  446. package/build-module/components/rich-text/index.native.js +0 -2
  447. package/build-module/components/rich-text/index.native.js.map +1 -1
  448. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  449. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  450. package/build-module/components/rich-text/use-paste-handler.js +22 -12
  451. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  452. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  453. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  454. package/build-module/components/rich-text/utils.js +1 -16
  455. package/build-module/components/rich-text/utils.js.map +1 -1
  456. package/build-module/components/spacing-sizes-control/index.js +0 -1
  457. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  458. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  459. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  460. package/build-module/components/spacing-sizes-control/utils.js +1 -1
  461. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  462. package/build-module/components/typewriter/index.js +1 -1
  463. package/build-module/components/typewriter/index.js.map +1 -1
  464. package/build-module/components/ungroup-button/index.native.js +3 -2
  465. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  466. package/build-module/components/url-input/index.js +46 -43
  467. package/build-module/components/url-input/index.js.map +1 -1
  468. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  469. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  470. package/build-module/components/use-block-display-information/index.js +9 -5
  471. package/build-module/components/use-block-display-information/index.js.map +1 -1
  472. package/build-module/components/use-setting/index.js +8 -1
  473. package/build-module/components/use-setting/index.js.map +1 -1
  474. package/build-module/components/writing-flow/index.js +1 -1
  475. package/build-module/components/writing-flow/index.js.map +1 -1
  476. package/build-module/hooks/border.js +0 -1
  477. package/build-module/hooks/border.js.map +1 -1
  478. package/build-module/hooks/child-layout.js +189 -0
  479. package/build-module/hooks/child-layout.js.map +1 -0
  480. package/build-module/hooks/color-panel.js +0 -1
  481. package/build-module/hooks/color-panel.js.map +1 -1
  482. package/build-module/hooks/color.js +1 -2
  483. package/build-module/hooks/color.js.map +1 -1
  484. package/build-module/hooks/content-lock-ui.js +1 -1
  485. package/build-module/hooks/content-lock-ui.js.map +1 -1
  486. package/build-module/hooks/dimensions.js +25 -8
  487. package/build-module/hooks/dimensions.js.map +1 -1
  488. package/build-module/hooks/font-family.js +5 -5
  489. package/build-module/hooks/font-family.js.map +1 -1
  490. package/build-module/hooks/font-size.js +5 -3
  491. package/build-module/hooks/font-size.js.map +1 -1
  492. package/build-module/hooks/layout.js +55 -0
  493. package/build-module/hooks/layout.js.map +1 -1
  494. package/build-module/hooks/min-height.js +3 -9
  495. package/build-module/hooks/min-height.js.map +1 -1
  496. package/build-module/hooks/use-typography-props.js +11 -8
  497. package/build-module/hooks/use-typography-props.js.map +1 -1
  498. package/build-module/store/reducer.js +409 -274
  499. package/build-module/store/reducer.js.map +1 -1
  500. package/build-module/store/selectors.js +55 -48
  501. package/build-module/store/selectors.js.map +1 -1
  502. package/build-module/utils/pasting.js +6 -10
  503. package/build-module/utils/pasting.js.map +1 -1
  504. package/build-module/utils/sorting.js +56 -0
  505. package/build-module/utils/sorting.js.map +1 -0
  506. package/build-style/content-rtl.css +701 -0
  507. package/build-style/content.css +701 -0
  508. package/build-style/default-editor-styles-rtl.css +17 -3
  509. package/build-style/default-editor-styles.css +17 -3
  510. package/build-style/style-rtl.css +313 -665
  511. package/build-style/style.css +313 -665
  512. package/package.json +32 -30
  513. package/src/autocompleters/block.js +2 -6
  514. package/src/autocompleters/link.js +2 -0
  515. package/src/components/alignment-control/test/index.js +6 -1
  516. package/src/components/alignment-control/ui.js +1 -7
  517. package/src/components/block-alignment-control/test/index.js +6 -1
  518. package/src/components/block-alignment-control/use-available-alignments.js +4 -3
  519. package/src/components/block-card/index.js +46 -2
  520. package/src/components/block-card/style.scss +4 -0
  521. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  522. package/src/components/block-draggable/content.scss +20 -0
  523. package/src/components/block-draggable/index.native.js +54 -40
  524. package/src/components/block-draggable/style.scss +0 -21
  525. package/src/components/block-draggable/test/helpers.native.js +7 -9
  526. package/src/components/block-draggable/test/index.native.js +35 -45
  527. package/src/components/block-edit/edit.js +5 -2
  528. package/src/components/block-edit/edit.native.js +5 -6
  529. package/src/components/block-icon/index.js +4 -2
  530. package/src/components/block-icon/test/index.js +9 -5
  531. package/src/components/block-inspector/index.js +173 -85
  532. package/src/components/block-inspector/style.scss +16 -1
  533. package/src/components/block-list/block-list-context.native.js +5 -8
  534. package/src/components/block-list/block.js +74 -23
  535. package/src/components/block-list/block.native.js +78 -23
  536. package/src/components/block-list/{style.scss → content.scss} +1 -15
  537. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  538. package/src/components/block-list-appender/index.js +65 -54
  539. package/src/components/block-list-appender/index.native.js +45 -34
  540. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +42 -28
  541. package/src/components/block-mobile-toolbar/index.native.js +1 -1
  542. package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +125 -0
  543. package/src/components/block-mobile-toolbar/test/block-actions-menu.native.js +439 -0
  544. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +42 -2
  545. package/src/components/block-mover/test/index.native.js +157 -1
  546. package/src/components/block-pattern-setup/index.js +17 -7
  547. package/src/components/block-pattern-setup/style.scss +29 -1
  548. package/src/components/block-patterns-list/index.js +47 -24
  549. package/src/components/block-preview/README.md +15 -10
  550. package/src/components/block-preview/auto.js +7 -1
  551. package/src/components/block-preview/content.scss +4 -0
  552. package/src/components/block-preview/index.js +7 -12
  553. package/src/components/block-preview/style.scss +0 -7
  554. package/src/components/block-preview/test/index.js +18 -35
  555. package/src/components/block-selection-clearer/test/index.js +12 -12
  556. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  557. package/src/components/block-styles/index.native.js +1 -2
  558. package/src/components/block-styles/utils.js +5 -7
  559. package/src/components/block-switcher/test/index.js +6 -1
  560. package/src/components/block-toolbar/index.js +12 -5
  561. package/src/components/block-toolbar/index.native.js +8 -11
  562. package/src/components/block-toolbar/style.scss +10 -0
  563. package/src/components/block-tools/insertion-point.js +3 -47
  564. package/src/components/block-tools/selected-block-popover.js +1 -3
  565. package/src/components/block-tools/style.scss +12 -5
  566. package/src/components/block-variation-picker/index.js +6 -5
  567. package/src/components/block-vertical-alignment-control/test/index.js +6 -1
  568. package/src/components/colors/test/with-colors.js +2 -0
  569. package/src/components/colors/utils.js +5 -3
  570. package/src/components/colors-gradients/control.js +0 -7
  571. package/src/components/colors-gradients/dropdown.js +0 -2
  572. package/src/components/colors-gradients/panel-color-gradient-settings.js +4 -22
  573. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +4 -2
  574. package/src/components/copy-handler/index.js +53 -7
  575. package/src/components/default-block-appender/{style.scss → content.scss} +0 -0
  576. package/src/components/default-block-appender/test/index.js +2 -0
  577. package/src/components/font-sizes/fluid-utils.js +7 -1
  578. package/src/components/font-sizes/utils.js +5 -3
  579. package/src/components/font-sizes/with-font-sizes.js +4 -4
  580. package/src/components/gradients/use-gradient.js +2 -7
  581. package/src/components/height-control/index.js +123 -0
  582. package/src/components/height-control/stories/index.js +21 -0
  583. package/src/components/height-control/style.scss +5 -0
  584. package/src/components/iframe/index.js +33 -121
  585. package/src/components/iframe/use-compatibility-styles.js +95 -0
  586. package/src/components/image-editor/use-save-image.js +2 -0
  587. package/src/components/image-editor/zoom-dropdown.js +1 -0
  588. package/src/components/image-size-control/test/index.js +147 -79
  589. package/src/components/index.js +1 -0
  590. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  591. package/src/components/inner-blocks/index.js +26 -7
  592. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  593. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  594. package/src/components/inserter/block-patterns-tab.js +28 -71
  595. package/src/components/inserter/block-types-tab.js +3 -2
  596. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  597. package/src/components/inserter/hooks/use-insertion-point.js +3 -2
  598. package/src/components/inserter/index.js +24 -3
  599. package/src/components/inserter/index.native.js +1 -1
  600. package/src/components/inserter/media-tab/hooks.js +89 -0
  601. package/src/components/inserter/media-tab/index.js +3 -0
  602. package/src/components/inserter/media-tab/media-list.js +93 -0
  603. package/src/components/inserter/media-tab/media-panel.js +83 -0
  604. package/src/components/inserter/media-tab/media-tab.js +135 -0
  605. package/src/components/inserter/media-tab/utils.js +37 -0
  606. package/src/components/inserter/menu.js +55 -13
  607. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  608. package/src/components/inserter/quick-inserter.js +4 -0
  609. package/src/components/inserter/search-items.js +1 -2
  610. package/src/components/inserter/search-results.js +5 -2
  611. package/src/components/inserter/stories/index.js +1 -1
  612. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  613. package/src/components/inserter/style.scss +176 -11
  614. package/src/components/inserter/tabs.js +12 -1
  615. package/src/components/inserter-list-item/index.js +11 -1
  616. package/src/components/inserter-list-item/style.scss +26 -0
  617. package/src/components/inspector-controls/groups.js +2 -0
  618. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  619. package/src/components/inspector-controls-tabs/index.js +62 -0
  620. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  621. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  622. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  623. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  624. package/src/components/inspector-controls-tabs/utils.js +28 -0
  625. package/src/components/line-height-control/test/index.js +5 -5
  626. package/src/components/link-control/README.md +1 -1
  627. package/src/components/link-control/index.js +1 -0
  628. package/src/components/link-control/search-input.js +0 -1
  629. package/src/components/link-control/test/index.js +204 -403
  630. package/src/components/link-control/use-internal-input-value.js +3 -3
  631. package/src/components/list-view/block-select-button.js +1 -1
  632. package/src/components/list-view/block.js +3 -0
  633. package/src/components/list-view/branch.js +10 -8
  634. package/src/components/list-view/style.scss +21 -16
  635. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  636. package/src/components/media-replace-flow/test/index.js +39 -9
  637. package/src/components/media-upload/test/index.native.js +2 -0
  638. package/src/components/off-canvas-editor/appender.js +98 -0
  639. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  640. package/src/components/off-canvas-editor/block-select-button.js +6 -2
  641. package/src/components/off-canvas-editor/block.js +160 -77
  642. package/src/components/off-canvas-editor/branch.js +3 -5
  643. package/src/components/off-canvas-editor/index.js +68 -33
  644. package/src/components/off-canvas-editor/leaf.js +5 -1
  645. package/src/components/off-canvas-editor/link-ui.js +166 -0
  646. package/src/components/off-canvas-editor/style.scss +19 -386
  647. package/src/components/off-canvas-editor/test/use-inserted-block.js +108 -0
  648. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  649. package/src/components/off-canvas-editor/use-inserted-block.js +47 -0
  650. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  651. package/src/components/recursion-provider/test/index.js +27 -29
  652. package/src/components/responsive-block-control/label.js +2 -3
  653. package/src/components/responsive-block-control/test/index.js +4 -2
  654. package/src/components/rich-text/content.scss +42 -0
  655. package/src/components/rich-text/format-edit.js +6 -10
  656. package/src/components/rich-text/format-toolbar/index.js +6 -4
  657. package/src/components/rich-text/index.js +3 -2
  658. package/src/components/rich-text/index.native.js +0 -2
  659. package/src/components/rich-text/style.scss +0 -43
  660. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  661. package/src/components/rich-text/use-paste-handler.js +33 -14
  662. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  663. package/src/components/rich-text/utils.js +2 -21
  664. package/src/components/spacing-sizes-control/index.js +0 -1
  665. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  666. package/src/components/spacing-sizes-control/utils.js +1 -1
  667. package/src/components/typewriter/index.js +3 -1
  668. package/src/components/ungroup-button/index.native.js +6 -2
  669. package/src/components/url-input/index.js +57 -73
  670. package/src/components/url-input/test/button.js +2 -0
  671. package/src/components/url-popover/image-url-input-ui.js +5 -4
  672. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  673. package/src/components/url-popover/test/index.js +37 -9
  674. package/src/components/use-block-display-information/index.js +14 -5
  675. package/src/components/use-setting/index.js +13 -1
  676. package/src/components/use-setting/test/index.js +99 -0
  677. package/src/components/warning/test/index.js +2 -0
  678. package/src/components/writing-flow/index.js +1 -1
  679. package/src/content.scss +10 -0
  680. package/src/hooks/border.js +0 -1
  681. package/src/hooks/child-layout.js +190 -0
  682. package/src/hooks/color-panel.js +0 -1
  683. package/src/hooks/color.js +0 -2
  684. package/src/hooks/content-lock-ui.js +1 -1
  685. package/src/hooks/dimensions.js +45 -7
  686. package/src/hooks/font-family.js +3 -5
  687. package/src/hooks/font-size.js +13 -4
  688. package/src/hooks/layout.js +60 -0
  689. package/src/hooks/min-height.js +2 -19
  690. package/src/hooks/test/use-typography-props.js +26 -0
  691. package/src/hooks/use-typography-props.js +15 -7
  692. package/src/store/reducer.js +471 -428
  693. package/src/store/selectors.js +57 -59
  694. package/src/store/test/performance.js +71 -0
  695. package/src/store/test/reducer.js +623 -491
  696. package/src/store/test/selectors.js +1820 -1306
  697. package/src/style.scss +4 -7
  698. package/src/utils/pasting.js +3 -9
  699. package/src/utils/sorting.js +54 -0
  700. package/src/utils/test/sorting.js +49 -0
  701. package/tsconfig.tsbuildinfo +1 -1
  702. package/build/components/block-preview/live.js +0 -30
  703. package/build/components/block-preview/live.js.map +0 -1
  704. package/build/components/colors-gradients/use-common-single-multiple-selects.js +0 -21
  705. package/build/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
  706. package/build/components/rich-text/file-paste-handler.js +0 -21
  707. package/build/components/rich-text/file-paste-handler.js.map +0 -1
  708. package/build-module/components/block-preview/live.js +0 -20
  709. package/build-module/components/block-preview/live.js.map +0 -1
  710. package/build-module/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
  711. package/build-module/components/colors-gradients/use-common-single-multiple-selects.js.map +0 -1
  712. package/build-module/components/rich-text/file-paste-handler.js +0 -13
  713. package/build-module/components/rich-text/file-paste-handler.js.map +0 -1
  714. package/src/components/block-preview/live.js +0 -19
  715. package/src/components/colors-gradients/use-common-single-multiple-selects.js +0 -11
  716. package/src/components/rich-text/file-paste-handler.js +0 -13
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -29,7 +31,7 @@ exports.settings = settings;
29
31
  exports.template = template;
30
32
  exports.temporarilyEditingAsBlocks = temporarilyEditingAsBlocks;
31
33
 
32
- var _lodash = require("lodash");
34
+ var _es = _interopRequireDefault(require("fast-deep-equal/es6"));
33
35
 
34
36
  var _compose = require("@wordpress/compose");
35
37
 
@@ -67,16 +69,18 @@ const identity = x => x;
67
69
 
68
70
  function mapBlockOrder(blocks) {
69
71
  let rootClientId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
70
- const result = {
71
- [rootClientId]: []
72
- };
72
+ const result = new Map();
73
+ const current = [];
74
+ result.set(rootClientId, current);
73
75
  blocks.forEach(block => {
74
76
  const {
75
77
  clientId,
76
78
  innerBlocks
77
79
  } = block;
78
- result[rootClientId].push(clientId);
79
- Object.assign(result, mapBlockOrder(innerBlocks, clientId));
80
+ current.push(clientId);
81
+ mapBlockOrder(innerBlocks, clientId).forEach((order, subClientId) => {
82
+ result.set(subClientId, order);
83
+ });
80
84
  });
81
85
  return result;
82
86
  }
@@ -93,9 +97,25 @@ function mapBlockOrder(blocks) {
93
97
 
94
98
  function mapBlockParents(blocks) {
95
99
  let rootClientId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
96
- return blocks.reduce((result, block) => Object.assign(result, {
97
- [block.clientId]: rootClientId
98
- }, mapBlockParents(block.innerBlocks, block.clientId)), {});
100
+ const result = [];
101
+ const stack = [[rootClientId, blocks]];
102
+
103
+ while (stack.length) {
104
+ const [parent, currentBlocks] = stack.shift();
105
+ currentBlocks.forEach(_ref => {
106
+ let {
107
+ innerBlocks,
108
+ ...block
109
+ } = _ref;
110
+ result.push([block.clientId, parent]);
111
+
112
+ if (innerBlocks !== null && innerBlocks !== void 0 && innerBlocks.length) {
113
+ stack.push([block.clientId, innerBlocks]);
114
+ }
115
+ });
116
+ }
117
+
118
+ return result;
99
119
  }
100
120
  /**
101
121
  * Helper method to iterate through all blocks, recursing into inner blocks,
@@ -105,12 +125,28 @@ function mapBlockParents(blocks) {
105
125
  * @param {Array} blocks Blocks to flatten.
106
126
  * @param {Function} transform Transforming function to be applied to each block.
107
127
  *
108
- * @return {Object} Flattened object.
128
+ * @return {Array} Flattened object.
109
129
  */
110
130
 
111
131
 
112
132
  function flattenBlocks(blocks) {
113
133
  let transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity;
134
+ const result = [];
135
+ const stack = [...blocks];
136
+
137
+ while (stack.length) {
138
+ const {
139
+ innerBlocks,
140
+ ...block
141
+ } = stack.shift();
142
+ stack.push(...innerBlocks);
143
+ result.push([block.clientId, transform(block)]);
144
+ }
145
+
146
+ return result;
147
+ }
148
+
149
+ function getFlattenedClientIds(blocks) {
114
150
  const result = {};
115
151
  const stack = [...blocks];
116
152
 
@@ -120,7 +156,7 @@ function flattenBlocks(blocks) {
120
156
  ...block
121
157
  } = stack.shift();
122
158
  stack.push(...innerBlocks);
123
- result[block.clientId] = transform(block);
159
+ result[block.clientId] = true;
124
160
  }
125
161
 
126
162
  return result;
@@ -132,12 +168,18 @@ function flattenBlocks(blocks) {
132
168
  *
133
169
  * @param {Array} blocks Blocks to flatten.
134
170
  *
135
- * @return {Object} Flattened block attributes object.
171
+ * @return {Array} Flattened block attributes object.
136
172
  */
137
173
 
138
174
 
139
175
  function getFlattenedBlocksWithoutAttributes(blocks) {
140
- return flattenBlocks(blocks, block => (0, _lodash.omit)(block, 'attributes'));
176
+ return flattenBlocks(blocks, block => {
177
+ const {
178
+ attributes,
179
+ ...restBlock
180
+ } = block;
181
+ return restBlock;
182
+ });
141
183
  }
142
184
  /**
143
185
  * Given an array of blocks, returns an object containing all block attributes,
@@ -146,32 +188,13 @@ function getFlattenedBlocksWithoutAttributes(blocks) {
146
188
  *
147
189
  * @param {Array} blocks Blocks to flatten.
148
190
  *
149
- * @return {Object} Flattened block attributes object.
191
+ * @return {Array} Flattened block attributes object.
150
192
  */
151
193
 
152
194
 
153
195
  function getFlattenedBlockAttributes(blocks) {
154
196
  return flattenBlocks(blocks, block => block.attributes);
155
197
  }
156
- /**
157
- * Returns an object against which it is safe to perform mutating operations,
158
- * given the original object and its current working copy.
159
- *
160
- * @param {Object} original Original object.
161
- * @param {Object} working Working object.
162
- *
163
- * @return {Object} Mutation-safe object.
164
- */
165
-
166
-
167
- function getMutateSafeObject(original, working) {
168
- if (original === working) {
169
- return { ...original
170
- };
171
- }
172
-
173
- return working;
174
- }
175
198
  /**
176
199
  * Returns true if the two object arguments have the same keys, or false
177
200
  * otherwise.
@@ -184,7 +207,7 @@ function getMutateSafeObject(original, working) {
184
207
 
185
208
 
186
209
  function hasSameKeys(a, b) {
187
- return (0, _lodash.isEqual)(Object.keys(a), Object.keys(b));
210
+ return (0, _es.default)(Object.keys(a), Object.keys(b));
188
211
  }
189
212
  /**
190
213
  * Returns true if, given the currently dispatching action and the previously
@@ -199,11 +222,11 @@ function hasSameKeys(a, b) {
199
222
 
200
223
 
201
224
  function isUpdatingSameBlockAttribute(action, lastAction) {
202
- return action.type === 'UPDATE_BLOCK_ATTRIBUTES' && lastAction !== undefined && lastAction.type === 'UPDATE_BLOCK_ATTRIBUTES' && (0, _lodash.isEqual)(action.clientIds, lastAction.clientIds) && hasSameKeys(action.attributes, lastAction.attributes);
225
+ return action.type === 'UPDATE_BLOCK_ATTRIBUTES' && lastAction !== undefined && lastAction.type === 'UPDATE_BLOCK_ATTRIBUTES' && (0, _es.default)(action.clientIds, lastAction.clientIds) && hasSameKeys(action.attributes, lastAction.attributes);
203
226
  }
204
227
 
205
- function buildBlockTree(state, blocks) {
206
- const result = {};
228
+ function updateBlockTreeForBlocks(state, blocks) {
229
+ const treeToUpdate = state.tree;
207
230
  const stack = [...blocks];
208
231
  const flattenedBlocks = [...blocks];
209
232
 
@@ -215,26 +238,25 @@ function buildBlockTree(state, blocks) {
215
238
 
216
239
 
217
240
  for (const block of flattenedBlocks) {
218
- result[block.clientId] = {};
241
+ treeToUpdate.set(block.clientId, {});
219
242
  }
220
243
 
221
244
  for (const block of flattenedBlocks) {
222
- result[block.clientId] = Object.assign(result[block.clientId], { ...state.byClientId[block.clientId],
223
- attributes: state.attributes[block.clientId],
224
- innerBlocks: block.innerBlocks.map(subBlock => result[subBlock.clientId])
225
- });
245
+ treeToUpdate.set(block.clientId, Object.assign(treeToUpdate.get(block.clientId), { ...state.byClientId.get(block.clientId),
246
+ attributes: state.attributes.get(block.clientId),
247
+ innerBlocks: block.innerBlocks.map(subBlock => treeToUpdate.get(subBlock.clientId))
248
+ }));
226
249
  }
227
-
228
- return result;
229
250
  }
230
251
 
231
- function updateParentInnerBlocksInTree(state, tree, updatedClientIds) {
232
- let updateChildrenOfUpdatedClientIds = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
252
+ function updateParentInnerBlocksInTree(state, updatedClientIds) {
253
+ let updateChildrenOfUpdatedClientIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
254
+ const treeToUpdate = state.tree;
233
255
  const uncontrolledParents = new Set([]);
234
256
  const controlledParents = new Set();
235
257
 
236
258
  for (const clientId of updatedClientIds) {
237
- let current = updateChildrenOfUpdatedClientIds ? clientId : state.parents[clientId];
259
+ let current = updateChildrenOfUpdatedClientIds ? clientId : state.parents.get(clientId);
238
260
 
239
261
  do {
240
262
  if (state.controlledInnerBlocks[current]) {
@@ -245,7 +267,7 @@ function updateParentInnerBlocksInTree(state, tree, updatedClientIds) {
245
267
  } else {
246
268
  // Else continue traversing up through parents.
247
269
  uncontrolledParents.add(current);
248
- current = state.parents[current];
270
+ current = state.parents.get(current);
249
271
  }
250
272
  } while (current !== undefined);
251
273
  } // To make sure the order of assignments doesn't matter,
@@ -253,23 +275,21 @@ function updateParentInnerBlocksInTree(state, tree, updatedClientIds) {
253
275
 
254
276
 
255
277
  for (const clientId of uncontrolledParents) {
256
- tree[clientId] = { ...tree[clientId]
257
- };
278
+ treeToUpdate.set(clientId, { ...treeToUpdate.get(clientId)
279
+ });
258
280
  }
259
281
 
260
282
  for (const clientId of uncontrolledParents) {
261
- tree[clientId].innerBlocks = (state.order[clientId] || []).map(subClientId => tree[subClientId]);
283
+ treeToUpdate.get(clientId).innerBlocks = (state.order.get(clientId) || []).map(subClientId => treeToUpdate.get(subClientId));
262
284
  } // Controlled parent blocks, need a dedicated key for their inner blocks
263
285
  // to be used when doing getBlocks( controlledBlockClientId ).
264
286
 
265
287
 
266
288
  for (const clientId of controlledParents) {
267
- tree['controlled||' + clientId] = {
268
- innerBlocks: (state.order[clientId] || []).map(subClientId => tree[subClientId])
269
- };
289
+ treeToUpdate.set('controlled||' + clientId, {
290
+ innerBlocks: (state.order.get(clientId) || []).map(subClientId => treeToUpdate.get(subClientId))
291
+ });
270
292
  }
271
-
272
- return tree;
273
293
  }
274
294
  /**
275
295
  * Higher-order reducer intended to compute full block objects key for each block in the post.
@@ -291,61 +311,61 @@ const withBlockTree = reducer => function () {
291
311
  return state;
292
312
  }
293
313
 
294
- newState.tree = state.tree ? state.tree : {};
314
+ newState.tree = state.tree ? state.tree : new Map();
295
315
 
296
316
  switch (action.type) {
297
317
  case 'RECEIVE_BLOCKS':
298
318
  case 'INSERT_BLOCKS':
299
319
  {
300
- const subTree = buildBlockTree(newState, action.blocks);
301
- newState.tree = updateParentInnerBlocksInTree(newState, { ...newState.tree,
302
- ...subTree
303
- }, action.rootClientId ? [action.rootClientId] : [''], true);
320
+ newState.tree = new Map(newState.tree);
321
+ updateBlockTreeForBlocks(newState, action.blocks);
322
+ updateParentInnerBlocksInTree(newState, action.rootClientId ? [action.rootClientId] : [''], true);
304
323
  break;
305
324
  }
306
325
 
307
326
  case 'UPDATE_BLOCK':
308
- newState.tree = updateParentInnerBlocksInTree(newState, { ...newState.tree,
309
- [action.clientId]: { ...newState.tree[action.clientId],
310
- ...newState.byClientId[action.clientId],
311
- attributes: newState.attributes[action.clientId]
312
- }
313
- }, [action.clientId], false);
327
+ newState.tree = new Map(newState.tree);
328
+ newState.tree.set(action.clientId, { ...newState.tree.get(action.clientId),
329
+ ...newState.byClientId.get(action.clientId),
330
+ attributes: newState.attributes.get(action.clientId)
331
+ });
332
+ updateParentInnerBlocksInTree(newState, [action.clientId], false);
314
333
  break;
315
334
 
316
335
  case 'UPDATE_BLOCK_ATTRIBUTES':
317
336
  {
318
- const newSubTree = action.clientIds.reduce((result, clientId) => {
319
- result[clientId] = { ...newState.tree[clientId],
320
- attributes: newState.attributes[clientId]
321
- };
322
- return result;
323
- }, {});
324
- newState.tree = updateParentInnerBlocksInTree(newState, { ...newState.tree,
325
- ...newSubTree
326
- }, action.clientIds, false);
337
+ newState.tree = new Map(newState.tree);
338
+ action.clientIds.forEach(clientId => {
339
+ newState.tree.set(clientId, { ...newState.tree.get(clientId),
340
+ attributes: newState.attributes.get(clientId)
341
+ });
342
+ });
343
+ updateParentInnerBlocksInTree(newState, action.clientIds, false);
327
344
  break;
328
345
  }
329
346
 
330
347
  case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
331
348
  {
332
- const subTree = buildBlockTree(newState, action.blocks);
333
- newState.tree = updateParentInnerBlocksInTree(newState, { ...(0, _lodash.omit)(newState.tree, action.replacedClientIds.concat( // Controlled inner blocks are only removed
334
- // if the block doesn't move to another position
335
- // otherwise their content will be lost.
336
- action.replacedClientIds.filter(clientId => !subTree[clientId]).map(clientId => 'controlled||' + clientId))),
337
- ...subTree
338
- }, action.blocks.map(b => b.clientId), false); // If there are no replaced blocks, it means we're removing blocks so we need to update their parent.
349
+ const inserterClientIds = getFlattenedClientIds(action.blocks);
350
+ newState.tree = new Map(newState.tree);
351
+ action.replacedClientIds.concat( // Controlled inner blocks are only removed
352
+ // if the block doesn't move to another position
353
+ // otherwise their content will be lost.
354
+ action.replacedClientIds.filter(clientId => !inserterClientIds[clientId]).map(clientId => 'controlled||' + clientId)).forEach(key => {
355
+ newState.tree.delete(key);
356
+ });
357
+ updateBlockTreeForBlocks(newState, action.blocks);
358
+ updateParentInnerBlocksInTree(newState, action.blocks.map(b => b.clientId), false); // If there are no replaced blocks, it means we're removing blocks so we need to update their parent.
339
359
 
340
360
  const parentsOfRemovedBlocks = [];
341
361
 
342
362
  for (const clientId of action.clientIds) {
343
- if (state.parents[clientId] !== undefined && (state.parents[clientId] === '' || newState.byClientId[state.parents[clientId]])) {
344
- parentsOfRemovedBlocks.push(state.parents[clientId]);
363
+ if (state.parents.get(clientId) !== undefined && (state.parents.get(clientId) === '' || newState.byClientId.get(state.parents.get(clientId)))) {
364
+ parentsOfRemovedBlocks.push(state.parents.get(clientId));
345
365
  }
346
366
  }
347
367
 
348
- newState.tree = updateParentInnerBlocksInTree(newState, newState.tree, parentsOfRemovedBlocks, true);
368
+ updateParentInnerBlocksInTree(newState, parentsOfRemovedBlocks, true);
349
369
  break;
350
370
  }
351
371
 
@@ -353,12 +373,16 @@ const withBlockTree = reducer => function () {
353
373
  const parentsOfRemovedBlocks = [];
354
374
 
355
375
  for (const clientId of action.clientIds) {
356
- if (state.parents[clientId] !== undefined && (state.parents[clientId] === '' || newState.byClientId[state.parents[clientId]])) {
357
- parentsOfRemovedBlocks.push(state.parents[clientId]);
376
+ if (state.parents.get(clientId) !== undefined && (state.parents.get(clientId) === '' || newState.byClientId.get(state.parents.get(clientId)))) {
377
+ parentsOfRemovedBlocks.push(state.parents.get(clientId));
358
378
  }
359
379
  }
360
380
 
361
- newState.tree = updateParentInnerBlocksInTree(newState, (0, _lodash.omit)(newState.tree, action.removedClientIds.concat(action.removedClientIds.map(clientId => 'controlled||' + clientId))), parentsOfRemovedBlocks, true);
381
+ newState.tree = new Map(newState.tree);
382
+ action.removedClientIds.concat(action.removedClientIds.map(clientId => 'controlled||' + clientId)).forEach(key => {
383
+ newState.tree.delete(key);
384
+ });
385
+ updateParentInnerBlocksInTree(newState, parentsOfRemovedBlocks, true);
362
386
  break;
363
387
 
364
388
  case 'MOVE_BLOCKS_TO_POSITION':
@@ -375,7 +399,8 @@ const withBlockTree = reducer => function () {
375
399
  updatedBlockUids.push(action.toRootClientId);
376
400
  }
377
401
 
378
- newState.tree = updateParentInnerBlocksInTree(newState, newState.tree, updatedBlockUids, true);
402
+ newState.tree = new Map(newState.tree);
403
+ updateParentInnerBlocksInTree(newState, updatedBlockUids, true);
379
404
  break;
380
405
  }
381
406
 
@@ -383,28 +408,27 @@ const withBlockTree = reducer => function () {
383
408
  case 'MOVE_BLOCKS_DOWN':
384
409
  {
385
410
  const updatedBlockUids = [action.rootClientId ? action.rootClientId : ''];
386
- newState.tree = updateParentInnerBlocksInTree(newState, newState.tree, updatedBlockUids, true);
411
+ newState.tree = new Map(newState.tree);
412
+ updateParentInnerBlocksInTree(newState, updatedBlockUids, true);
387
413
  break;
388
414
  }
389
415
 
390
416
  case 'SAVE_REUSABLE_BLOCK_SUCCESS':
391
417
  {
392
- const updatedBlockUids = Object.entries(newState.attributes).filter(_ref => {
393
- let [clientId, attributes] = _ref;
394
- return newState.byClientId[clientId].name === 'core/block' && attributes.ref === action.updatedId;
395
- }).map(_ref2 => {
396
- let [clientId] = _ref2;
397
- return clientId;
418
+ const updatedBlockUids = [];
419
+ newState.attributes.forEach((attributes, clientId) => {
420
+ if (newState.byClientId.get(clientId).name === 'core/block' && attributes.ref === action.updatedId) {
421
+ updatedBlockUids.push(clientId);
422
+ }
398
423
  });
399
- newState.tree = updateParentInnerBlocksInTree(newState, { ...newState.tree,
400
- ...updatedBlockUids.reduce((result, clientId) => {
401
- result[clientId] = { ...newState.byClientId[clientId],
402
- attributes: newState.attributes[clientId],
403
- innerBlocks: newState.tree[clientId].innerBlocks
404
- };
405
- return result;
406
- }, {})
407
- }, updatedBlockUids, false);
424
+ newState.tree = new Map(newState.tree);
425
+ updatedBlockUids.forEach(clientId => {
426
+ newState.tree.set(clientId, { ...newState.byClientId.get(clientId),
427
+ attributes: newState.attributes.get(clientId),
428
+ innerBlocks: newState.tree.get(clientId).innerBlocks
429
+ });
430
+ });
431
+ updateParentInnerBlocksInTree(newState, updatedBlockUids, false);
408
432
  }
409
433
  }
410
434
 
@@ -501,7 +525,7 @@ const withInnerBlocksRemoveCascade = reducer => (state, action) => {
501
525
  let result = clientIds;
502
526
 
503
527
  for (let i = 0; i < result.length; i++) {
504
- if (!state.order[result[i]] || action.keepControlledInnerBlocks && action.keepControlledInnerBlocks[result[i]]) {
528
+ if (!state.order.get(result[i]) || action.keepControlledInnerBlocks && action.keepControlledInnerBlocks[result[i]]) {
505
529
  continue;
506
530
  }
507
531
 
@@ -509,7 +533,7 @@ const withInnerBlocksRemoveCascade = reducer => (state, action) => {
509
533
  result = [...result];
510
534
  }
511
535
 
512
- result.push(...state.order[result[i]]);
536
+ result.push(...state.order.get(result[i]));
513
537
  }
514
538
 
515
539
  return result;
@@ -550,19 +574,17 @@ const withInnerBlocksRemoveCascade = reducer => (state, action) => {
550
574
  const withBlockReset = reducer => (state, action) => {
551
575
  if (action.type === 'RESET_BLOCKS') {
552
576
  const newState = { ...state,
553
- byClientId: getFlattenedBlocksWithoutAttributes(action.blocks),
554
- attributes: getFlattenedBlockAttributes(action.blocks),
577
+ byClientId: new Map(getFlattenedBlocksWithoutAttributes(action.blocks)),
578
+ attributes: new Map(getFlattenedBlockAttributes(action.blocks)),
555
579
  order: mapBlockOrder(action.blocks),
556
- parents: mapBlockParents(action.blocks),
580
+ parents: new Map(mapBlockParents(action.blocks)),
557
581
  controlledInnerBlocks: {}
558
582
  };
559
- const subTree = buildBlockTree(newState, action.blocks);
560
- newState.tree = { ...subTree,
561
- // Root.
562
- '': {
563
- innerBlocks: action.blocks.map(subBlock => subTree[subBlock.clientId])
564
- }
565
- };
583
+ newState.tree = new Map(state === null || state === void 0 ? void 0 : state.tree);
584
+ updateBlockTreeForBlocks(newState, action.blocks);
585
+ newState.tree.set('', {
586
+ innerBlocks: action.blocks.map(subBlock => newState.tree.get(subBlock.clientId))
587
+ });
566
588
  return newState;
567
589
  }
568
590
 
@@ -615,11 +637,11 @@ const withReplaceInnerBlocks = reducer => (state, action) => {
615
637
 
616
638
  let stateAfterBlocksRemoval = state;
617
639
 
618
- if (state.order[action.rootClientId]) {
640
+ if (state.order.get(action.rootClientId)) {
619
641
  stateAfterBlocksRemoval = reducer(stateAfterBlocksRemoval, {
620
642
  type: 'REMOVE_BLOCKS',
621
643
  keepControlledInnerBlocks: nestedControllers,
622
- clientIds: state.order[action.rootClientId]
644
+ clientIds: state.order.get(action.rootClientId)
623
645
  });
624
646
  }
625
647
 
@@ -633,26 +655,21 @@ const withReplaceInnerBlocks = reducer => (state, action) => {
633
655
  // preserve their block order. Otherwise, an inner block controller's blocks
634
656
  // will be deleted entirely from its entity.
635
657
 
636
- stateAfterInsert.order = { ...stateAfterInsert.order,
637
- ...Object.keys(nestedControllers).reduce((result, key) => {
638
- if (state.order[key]) {
639
- result[key] = state.order[key];
640
- }
641
-
642
- return result;
643
- }, {})
644
- };
645
- stateAfterInsert.tree = { ...stateAfterInsert.tree,
646
- ...Object.keys(nestedControllers).reduce((result, _key) => {
647
- const key = `controlled||${_key}`;
648
-
649
- if (state.tree[key]) {
650
- result[key] = state.tree[key];
651
- }
658
+ const stateAfterInsertOrder = new Map(stateAfterInsert.order);
659
+ Object.keys(nestedControllers).forEach(key => {
660
+ if (state.order.get(key)) {
661
+ stateAfterInsertOrder.set(key, state.order.get(key));
662
+ }
663
+ });
664
+ stateAfterInsert.order = stateAfterInsertOrder;
665
+ stateAfterInsert.tree = new Map(stateAfterInsert.tree);
666
+ Object.keys(nestedControllers).forEach(_key => {
667
+ const key = `controlled||${_key}`;
652
668
 
653
- return result;
654
- }, {})
655
- };
669
+ if (state.tree.has(key)) {
670
+ stateAfterInsert.tree.set(key, state.tree.get(key));
671
+ }
672
+ });
656
673
  }
657
674
 
658
675
  return stateAfterInsert;
@@ -682,18 +699,17 @@ const withSaveReusableBlock = reducer => (state, action) => {
682
699
 
683
700
  state = { ...state
684
701
  };
685
- state.attributes = (0, _lodash.mapValues)(state.attributes, (attributes, clientId) => {
702
+ state.attributes = new Map(state.attributes);
703
+ state.attributes.forEach((attributes, clientId) => {
686
704
  const {
687
705
  name
688
- } = state.byClientId[clientId];
706
+ } = state.byClientId.get(clientId);
689
707
 
690
708
  if (name === 'core/block' && attributes.ref === id) {
691
- return { ...attributes,
709
+ state.attributes.set(clientId, { ...attributes,
692
710
  ref: updatedId
693
- };
711
+ });
694
712
  }
695
-
696
- return attributes;
697
713
  });
698
714
  }
699
715
 
@@ -736,137 +752,205 @@ const blocks = (0, _compose.pipe)(_data.combineReducers, withSaveReusableBlock,
736
752
  withBlockTree, // Needs to be before withInnerBlocksRemoveCascade.
737
753
  withInnerBlocksRemoveCascade, withReplaceInnerBlocks, // Needs to be after withInnerBlocksRemoveCascade.
738
754
  withBlockReset, withPersistentBlockChange, withIgnoredBlockChange, withResetControlledBlocks)({
755
+ // The state is using a Map instead of a plain object for performance reasons.
756
+ // You can run the "./test/performance.js" unit test to check the impact
757
+ // code changes can have on this reducer.
739
758
  byClientId() {
740
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
759
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();
741
760
  let action = arguments.length > 1 ? arguments[1] : undefined;
742
761
 
743
762
  switch (action.type) {
744
763
  case 'RECEIVE_BLOCKS':
745
764
  case 'INSERT_BLOCKS':
746
- return { ...state,
747
- ...getFlattenedBlocksWithoutAttributes(action.blocks)
748
- };
765
+ {
766
+ const newState = new Map(state);
767
+ getFlattenedBlocksWithoutAttributes(action.blocks).forEach(_ref2 => {
768
+ let [key, value] = _ref2;
769
+ newState.set(key, value);
770
+ });
771
+ return newState;
772
+ }
749
773
 
750
774
  case 'UPDATE_BLOCK':
751
- // Ignore updates if block isn't known.
752
- if (!state[action.clientId]) {
753
- return state;
754
- } // Do nothing if only attributes change.
775
+ {
776
+ // Ignore updates if block isn't known.
777
+ if (!state.has(action.clientId)) {
778
+ return state;
779
+ } // Do nothing if only attributes change.
755
780
 
756
781
 
757
- const changes = (0, _lodash.omit)(action.updates, 'attributes');
782
+ const {
783
+ attributes,
784
+ ...changes
785
+ } = action.updates;
758
786
 
759
- if ((0, _lodash.isEmpty)(changes)) {
760
- return state;
761
- }
787
+ if (Object.values(changes).length === 0) {
788
+ return state;
789
+ }
762
790
 
763
- return { ...state,
764
- [action.clientId]: { ...state[action.clientId],
791
+ const newState = new Map(state);
792
+ newState.set(action.clientId, { ...state.get(action.clientId),
765
793
  ...changes
766
- }
767
- };
794
+ });
795
+ return newState;
796
+ }
768
797
 
769
798
  case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
770
- if (!action.blocks) {
771
- return state;
772
- }
799
+ {
800
+ if (!action.blocks) {
801
+ return state;
802
+ }
773
803
 
774
- return { ...(0, _lodash.omit)(state, action.replacedClientIds),
775
- ...getFlattenedBlocksWithoutAttributes(action.blocks)
776
- };
804
+ const newState = new Map(state);
805
+ action.replacedClientIds.forEach(clientId => {
806
+ newState.delete(clientId);
807
+ });
808
+ getFlattenedBlocksWithoutAttributes(action.blocks).forEach(_ref3 => {
809
+ let [key, value] = _ref3;
810
+ newState.set(key, value);
811
+ });
812
+ return newState;
813
+ }
777
814
 
778
815
  case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
779
- return (0, _lodash.omit)(state, action.removedClientIds);
816
+ {
817
+ const newState = new Map(state);
818
+ action.removedClientIds.forEach(clientId => {
819
+ newState.delete(clientId);
820
+ });
821
+ return newState;
822
+ }
780
823
  }
781
824
 
782
825
  return state;
783
826
  },
784
827
 
828
+ // The state is using a Map instead of a plain object for performance reasons.
829
+ // You can run the "./test/performance.js" unit test to check the impact
830
+ // code changes can have on this reducer.
785
831
  attributes() {
786
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
832
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();
787
833
  let action = arguments.length > 1 ? arguments[1] : undefined;
788
834
 
789
835
  switch (action.type) {
790
836
  case 'RECEIVE_BLOCKS':
791
837
  case 'INSERT_BLOCKS':
792
- return { ...state,
793
- ...getFlattenedBlockAttributes(action.blocks)
794
- };
838
+ {
839
+ const newState = new Map(state);
840
+ getFlattenedBlockAttributes(action.blocks).forEach(_ref4 => {
841
+ let [key, value] = _ref4;
842
+ newState.set(key, value);
843
+ });
844
+ return newState;
845
+ }
795
846
 
796
847
  case 'UPDATE_BLOCK':
797
- // Ignore updates if block isn't known or there are no attribute changes.
798
- if (!state[action.clientId] || !action.updates.attributes) {
799
- return state;
800
- }
848
+ {
849
+ // Ignore updates if block isn't known or there are no attribute changes.
850
+ if (!state.get(action.clientId) || !action.updates.attributes) {
851
+ return state;
852
+ }
801
853
 
802
- return { ...state,
803
- [action.clientId]: { ...state[action.clientId],
854
+ const newState = new Map(state);
855
+ newState.set(action.clientId, { ...state.get(action.clientId),
804
856
  ...action.updates.attributes
805
- }
806
- };
857
+ });
858
+ return newState;
859
+ }
807
860
 
808
861
  case 'UPDATE_BLOCK_ATTRIBUTES':
809
862
  {
810
863
  // Avoid a state change if none of the block IDs are known.
811
- if (action.clientIds.every(id => !state[id])) {
864
+ if (action.clientIds.every(id => !state.get(id))) {
812
865
  return state;
813
866
  }
814
867
 
815
- const next = action.clientIds.reduce((accumulator, id) => {
816
- var _action$attributes;
868
+ let hasChange = false;
869
+ const newState = new Map(state);
817
870
 
818
- return { ...accumulator,
819
- [id]: Object.entries(action.uniqueByBlock ? action.attributes[id] : (_action$attributes = action.attributes) !== null && _action$attributes !== void 0 ? _action$attributes : {}).reduce((result, _ref3) => {
820
- let [key, value] = _ref3;
871
+ for (const clientId of action.clientIds) {
872
+ var _action$attributes;
821
873
 
822
- // Consider as updates only changed values.
823
- if (value !== result[key]) {
824
- result = getMutateSafeObject(state[id], result);
825
- result[key] = value;
826
- }
874
+ const updatedAttributeEntries = Object.entries(action.uniqueByBlock ? action.attributes[clientId] : (_action$attributes = action.attributes) !== null && _action$attributes !== void 0 ? _action$attributes : {});
827
875
 
828
- return result;
829
- }, state[id])
830
- };
831
- }, {});
876
+ if (updatedAttributeEntries.length === 0) {
877
+ continue;
878
+ }
832
879
 
833
- if (action.clientIds.every(id => next[id] === state[id])) {
834
- return state;
880
+ let hasUpdatedAttributes = false;
881
+ const existingAttributes = state.get(clientId);
882
+ const newAttributes = {};
883
+ updatedAttributeEntries.forEach(_ref5 => {
884
+ let [key, value] = _ref5;
885
+
886
+ if (existingAttributes[key] !== value) {
887
+ hasUpdatedAttributes = true;
888
+ newAttributes[key] = value;
889
+ }
890
+ });
891
+ hasChange = hasChange || hasUpdatedAttributes;
892
+
893
+ if (hasUpdatedAttributes) {
894
+ newState.set(clientId, { ...existingAttributes,
895
+ ...newAttributes
896
+ });
897
+ }
835
898
  }
836
899
 
837
- return { ...state,
838
- ...next
839
- };
900
+ return hasChange ? newState : state;
840
901
  }
841
902
 
842
903
  case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
843
- if (!action.blocks) {
844
- return state;
845
- }
904
+ {
905
+ if (!action.blocks) {
906
+ return state;
907
+ }
846
908
 
847
- return { ...(0, _lodash.omit)(state, action.replacedClientIds),
848
- ...getFlattenedBlockAttributes(action.blocks)
849
- };
909
+ const newState = new Map(state);
910
+ action.replacedClientIds.forEach(clientId => {
911
+ newState.delete(clientId);
912
+ });
913
+ getFlattenedBlockAttributes(action.blocks).forEach(_ref6 => {
914
+ let [key, value] = _ref6;
915
+ newState.set(key, value);
916
+ });
917
+ return newState;
918
+ }
850
919
 
851
920
  case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
852
- return (0, _lodash.omit)(state, action.removedClientIds);
921
+ {
922
+ const newState = new Map(state);
923
+ action.removedClientIds.forEach(clientId => {
924
+ newState.delete(clientId);
925
+ });
926
+ return newState;
927
+ }
853
928
  }
854
929
 
855
930
  return state;
856
931
  },
857
932
 
933
+ // The state is using a Map instead of a plain object for performance reasons.
934
+ // You can run the "./test/performance.js" unit test to check the impact
935
+ // code changes can have on this reducer.
858
936
  order() {
859
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
937
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();
860
938
  let action = arguments.length > 1 ? arguments[1] : undefined;
861
939
 
862
940
  switch (action.type) {
863
941
  case 'RECEIVE_BLOCKS':
864
942
  {
943
+ var _state$get;
944
+
865
945
  const blockOrder = mapBlockOrder(action.blocks);
866
- return { ...state,
867
- ...(0, _lodash.omit)(blockOrder, ''),
868
- '': ((state === null || state === void 0 ? void 0 : state['']) || []).concat(blockOrder[''])
869
- };
946
+ const newState = new Map(state);
947
+ blockOrder.forEach((order, clientId) => {
948
+ if (clientId !== '') {
949
+ newState.set(clientId, order);
950
+ }
951
+ });
952
+ newState.set('', ((_state$get = state.get('')) !== null && _state$get !== void 0 ? _state$get : []).concat(blockOrder['']));
953
+ return newState;
870
954
  }
871
955
 
872
956
  case 'INSERT_BLOCKS':
@@ -874,20 +958,22 @@ withBlockReset, withPersistentBlockChange, withIgnoredBlockChange, withResetCont
874
958
  const {
875
959
  rootClientId = ''
876
960
  } = action;
877
- const subState = state[rootClientId] || [];
961
+ const subState = state.get(rootClientId) || [];
878
962
  const mappedBlocks = mapBlockOrder(action.blocks, rootClientId);
879
963
  const {
880
964
  index = subState.length
881
965
  } = action;
882
- return { ...state,
883
- ...mappedBlocks,
884
- [rootClientId]: (0, _array.insertAt)(subState, mappedBlocks[rootClientId], index)
885
- };
966
+ const newState = new Map(state);
967
+ mappedBlocks.forEach((order, clientId) => {
968
+ newState.set(clientId, order);
969
+ });
970
+ newState.set(rootClientId, (0, _array.insertAt)(subState, mappedBlocks.get(rootClientId), index));
971
+ return newState;
886
972
  }
887
973
 
888
974
  case 'MOVE_BLOCKS_TO_POSITION':
889
975
  {
890
- var _state$fromRootClient, _state$fromRootClient2;
976
+ var _state$get$filter, _state$get2;
891
977
 
892
978
  const {
893
979
  fromRootClientId = '',
@@ -895,22 +981,22 @@ withBlockReset, withPersistentBlockChange, withIgnoredBlockChange, withResetCont
895
981
  clientIds
896
982
  } = action;
897
983
  const {
898
- index = state[toRootClientId].length
984
+ index = state.get(toRootClientId).length
899
985
  } = action; // Moving inside the same parent block.
900
986
 
901
987
  if (fromRootClientId === toRootClientId) {
902
- const subState = state[toRootClientId];
988
+ const subState = state.get(toRootClientId);
903
989
  const fromIndex = subState.indexOf(clientIds[0]);
904
- return { ...state,
905
- [toRootClientId]: (0, _array.moveTo)(state[toRootClientId], fromIndex, index, clientIds.length)
906
- };
990
+ const newState = new Map(state);
991
+ newState.set(toRootClientId, (0, _array.moveTo)(state.get(toRootClientId), fromIndex, index, clientIds.length));
992
+ return newState;
907
993
  } // Moving from a parent block to another.
908
994
 
909
995
 
910
- return { ...state,
911
- [fromRootClientId]: (_state$fromRootClient = (_state$fromRootClient2 = state[fromRootClientId]) === null || _state$fromRootClient2 === void 0 ? void 0 : _state$fromRootClient2.filter(id => !clientIds.includes(id))) !== null && _state$fromRootClient !== void 0 ? _state$fromRootClient : [],
912
- [toRootClientId]: (0, _array.insertAt)(state[toRootClientId], clientIds, index)
913
- };
996
+ const newState = new Map(state);
997
+ newState.set(fromRootClientId, (_state$get$filter = (_state$get2 = state.get(fromRootClientId)) === null || _state$get2 === void 0 ? void 0 : _state$get2.filter(id => !clientIds.includes(id))) !== null && _state$get$filter !== void 0 ? _state$get$filter : []);
998
+ newState.set(toRootClientId, (0, _array.insertAt)(state.get(toRootClientId), clientIds, index));
999
+ return newState;
914
1000
  }
915
1001
 
916
1002
  case 'MOVE_BLOCKS_UP':
@@ -920,16 +1006,16 @@ withBlockReset, withPersistentBlockChange, withIgnoredBlockChange, withResetCont
920
1006
  rootClientId = ''
921
1007
  } = action;
922
1008
  const firstClientId = clientIds[0];
923
- const subState = state[rootClientId];
1009
+ const subState = state.get(rootClientId);
924
1010
 
925
1011
  if (!subState.length || firstClientId === subState[0]) {
926
1012
  return state;
927
1013
  }
928
1014
 
929
1015
  const firstIndex = subState.indexOf(firstClientId);
930
- return { ...state,
931
- [rootClientId]: (0, _array.moveTo)(subState, firstIndex, firstIndex - 1, clientIds.length)
932
- };
1016
+ const newState = new Map(state);
1017
+ newState.set(rootClientId, (0, _array.moveTo)(subState, firstIndex, firstIndex - 1, clientIds.length));
1018
+ return newState;
933
1019
  }
934
1020
 
935
1021
  case 'MOVE_BLOCKS_DOWN':
@@ -940,16 +1026,16 @@ withBlockReset, withPersistentBlockChange, withIgnoredBlockChange, withResetCont
940
1026
  } = action;
941
1027
  const firstClientId = clientIds[0];
942
1028
  const lastClientId = clientIds[clientIds.length - 1];
943
- const subState = state[rootClientId];
1029
+ const subState = state.get(rootClientId);
944
1030
 
945
1031
  if (!subState.length || lastClientId === subState[subState.length - 1]) {
946
1032
  return state;
947
1033
  }
948
1034
 
949
1035
  const firstIndex = subState.indexOf(firstClientId);
950
- return { ...state,
951
- [rootClientId]: (0, _array.moveTo)(subState, firstIndex, firstIndex + 1, clientIds.length)
952
- };
1036
+ const newState = new Map(state);
1037
+ newState.set(rootClientId, (0, _array.moveTo)(subState, firstIndex, firstIndex + 1, clientIds.length));
1038
+ return newState;
953
1039
  }
954
1040
 
955
1041
  case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
@@ -963,29 +1049,50 @@ withBlockReset, withPersistentBlockChange, withIgnoredBlockChange, withResetCont
963
1049
  }
964
1050
 
965
1051
  const mappedBlocks = mapBlockOrder(action.blocks);
966
- return (0, _compose.pipe)([nextState => (0, _lodash.omit)(nextState, action.replacedClientIds), nextState => ({ ...nextState,
967
- ...(0, _lodash.omit)(mappedBlocks, '')
968
- }), nextState => (0, _lodash.mapValues)(nextState, subState => Object.values(subState).reduce((result, clientId) => {
969
- if (clientId === clientIds[0]) {
970
- return [...result, ...mappedBlocks['']];
971
- }
972
-
973
- if (clientIds.indexOf(clientId) === -1) {
974
- result.push(clientId);
1052
+ const newState = new Map(state);
1053
+ action.replacedClientIds.forEach(clientId => {
1054
+ newState.delete(clientId);
1055
+ });
1056
+ mappedBlocks.forEach((order, clientId) => {
1057
+ if (clientId !== '') {
1058
+ newState.set(clientId, order);
975
1059
  }
976
-
977
- return result;
978
- }, []))])(state);
1060
+ });
1061
+ newState.forEach((order, clientId) => {
1062
+ const newSubOrder = Object.values(order).reduce((result, subClientId) => {
1063
+ if (subClientId === clientIds[0]) {
1064
+ return [...result, ...mappedBlocks.get('')];
1065
+ }
1066
+
1067
+ if (clientIds.indexOf(subClientId) === -1) {
1068
+ result.push(subClientId);
1069
+ }
1070
+
1071
+ return result;
1072
+ }, []);
1073
+ newState.set(clientId, newSubOrder);
1074
+ });
1075
+ return newState;
979
1076
  }
980
1077
 
981
1078
  case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
982
- return (0, _compose.pipe)([// Remove inner block ordering for removed blocks.
983
- nextState => (0, _lodash.omit)(nextState, action.removedClientIds), // Remove deleted blocks from other blocks' orderings.
984
- nextState => (0, _lodash.mapValues)(nextState, subState => {
985
- var _subState$filter;
1079
+ {
1080
+ const newState = new Map(state); // Remove inner block ordering for removed blocks.
1081
+
1082
+ action.removedClientIds.forEach(clientId => {
1083
+ newState.delete(clientId);
1084
+ });
1085
+ newState.forEach((order, clientId) => {
1086
+ var _order$filter;
1087
+
1088
+ const newSubOrder = (_order$filter = order === null || order === void 0 ? void 0 : order.filter(id => !action.removedClientIds.includes(id))) !== null && _order$filter !== void 0 ? _order$filter : [];
986
1089
 
987
- return (_subState$filter = subState === null || subState === void 0 ? void 0 : subState.filter(id => !action.removedClientIds.includes(id))) !== null && _subState$filter !== void 0 ? _subState$filter : [];
988
- })])(state);
1090
+ if (newSubOrder.length !== order.length) {
1091
+ newState.set(clientId, newSubOrder);
1092
+ }
1093
+ });
1094
+ return newState;
1095
+ }
989
1096
  }
990
1097
 
991
1098
  return state;
@@ -994,37 +1101,60 @@ withBlockReset, withPersistentBlockChange, withIgnoredBlockChange, withResetCont
994
1101
  // While technically redundant data as the inverse of `order`, it serves as
995
1102
  // an optimization for the selectors which derive the ancestry of a block.
996
1103
  parents() {
997
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1104
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();
998
1105
  let action = arguments.length > 1 ? arguments[1] : undefined;
999
1106
 
1000
1107
  switch (action.type) {
1001
1108
  case 'RECEIVE_BLOCKS':
1002
- return { ...state,
1003
- ...mapBlockParents(action.blocks)
1004
- };
1109
+ {
1110
+ const newState = new Map(state);
1111
+ mapBlockParents(action.blocks).forEach(_ref7 => {
1112
+ let [key, value] = _ref7;
1113
+ newState.set(key, value);
1114
+ });
1115
+ return newState;
1116
+ }
1005
1117
 
1006
1118
  case 'INSERT_BLOCKS':
1007
- return { ...state,
1008
- ...mapBlockParents(action.blocks, action.rootClientId || '')
1009
- };
1119
+ {
1120
+ const newState = new Map(state);
1121
+ mapBlockParents(action.blocks, action.rootClientId || '').forEach(_ref8 => {
1122
+ let [key, value] = _ref8;
1123
+ newState.set(key, value);
1124
+ });
1125
+ return newState;
1126
+ }
1010
1127
 
1011
1128
  case 'MOVE_BLOCKS_TO_POSITION':
1012
1129
  {
1013
- return { ...state,
1014
- ...action.clientIds.reduce((accumulator, id) => {
1015
- accumulator[id] = action.toRootClientId || '';
1016
- return accumulator;
1017
- }, {})
1018
- };
1130
+ const newState = new Map(state);
1131
+ action.clientIds.forEach(id => {
1132
+ newState.set(id, action.toRootClientId || '');
1133
+ });
1134
+ return newState;
1019
1135
  }
1020
1136
 
1021
1137
  case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
1022
- return { ...(0, _lodash.omit)(state, action.replacedClientIds),
1023
- ...mapBlockParents(action.blocks, state[action.clientIds[0]])
1024
- };
1138
+ {
1139
+ const newState = new Map(state);
1140
+ action.replacedClientIds.forEach(clientId => {
1141
+ newState.delete(clientId);
1142
+ });
1143
+ mapBlockParents(action.blocks, state.get(action.clientIds[0])).forEach(_ref9 => {
1144
+ let [key, value] = _ref9;
1145
+ newState.set(key, value);
1146
+ });
1147
+ return newState;
1148
+ }
1025
1149
 
1026
1150
  case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
1027
- return (0, _lodash.omit)(state, action.removedClientIds);
1151
+ {
1152
+ const newState = new Map(state);
1153
+ action.removedClientIds.forEach(clientId => {
1154
+ newState.delete(clientId);
1155
+ });
1156
+ return newState;
1157
+ }
1028
1158
  }
1029
1159
 
1030
1160
  return state;
@@ -1436,7 +1566,7 @@ function insertionPoint() {
1436
1566
  operation
1437
1567
  }; // Bail out updates if the states are the same.
1438
1568
 
1439
- return (0, _lodash.isEqual)(state, nextState) ? state : nextState;
1569
+ return (0, _es.default)(state, nextState) ? state : nextState;
1440
1570
  }
1441
1571
 
1442
1572
  case 'HIDE_INSERTION_POINT':
@@ -1563,7 +1693,10 @@ const blockListSettings = function () {
1563
1693
  case 'REPLACE_BLOCKS':
1564
1694
  case 'REMOVE_BLOCKS':
1565
1695
  {
1566
- return (0, _lodash.omit)(state, action.clientIds);
1696
+ return Object.fromEntries(Object.entries(state).filter(_ref10 => {
1697
+ let [id] = _ref10;
1698
+ return !action.clientIds.includes(id);
1699
+ }));
1567
1700
  }
1568
1701
 
1569
1702
  case 'UPDATE_BLOCK_LIST_SETTINGS':
@@ -1574,13 +1707,17 @@ const blockListSettings = function () {
1574
1707
 
1575
1708
  if (!action.settings) {
1576
1709
  if (state.hasOwnProperty(clientId)) {
1577
- return (0, _lodash.omit)(state, clientId);
1710
+ const {
1711
+ [clientId]: removedBlock,
1712
+ ...restBlocks
1713
+ } = state;
1714
+ return restBlocks;
1578
1715
  }
1579
1716
 
1580
1717
  return state;
1581
1718
  }
1582
1719
 
1583
- if ((0, _lodash.isEqual)(state[clientId], action.settings)) {
1720
+ if ((0, _es.default)(state[clientId], action.settings)) {
1584
1721
  return state;
1585
1722
  }
1586
1723