@wordpress/block-editor 12.16.0 → 12.16.1-next.79a6196f.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (650) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +3 -6
  3. package/build/components/block-canvas/index.js +0 -2
  4. package/build/components/block-canvas/index.js.map +1 -1
  5. package/build/components/block-card/index.js +1 -1
  6. package/build/components/block-card/index.js.map +1 -1
  7. package/build/components/block-draggable/draggable-chip.js +6 -1
  8. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  9. package/build/components/block-draggable/index.js +76 -6
  10. package/build/components/block-draggable/index.js.map +1 -1
  11. package/build/components/block-draggable/index.native.js +0 -6
  12. package/build/components/block-draggable/index.native.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  14. package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  15. package/build/components/block-editing-mode/index.js +2 -3
  16. package/build/components/block-editing-mode/index.js.map +1 -1
  17. package/build/components/block-inspector/index.js +1 -1
  18. package/build/components/block-inspector/index.js.map +1 -1
  19. package/build/components/block-list/block-list-item-cell.native.js +1 -0
  20. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  21. package/build/components/block-list/block.js +245 -102
  22. package/build/components/block-list/block.js.map +1 -1
  23. package/build/components/block-list/block.native.js +46 -20
  24. package/build/components/block-list/block.native.js.map +1 -1
  25. package/build/components/block-list/index.native.js +3 -5
  26. package/build/components/block-list/index.native.js.map +1 -1
  27. package/build/components/block-list/private-block-context.js +14 -0
  28. package/build/components/block-list/private-block-context.js.map +1 -0
  29. package/build/components/block-list/use-block-props/index.js +33 -96
  30. package/build/components/block-list/use-block-props/index.js.map +1 -1
  31. package/build/components/block-list/use-in-between-inserter.js +3 -2
  32. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  33. package/build/components/block-list/use-scroll-upon-insertion.native.js +41 -0
  34. package/build/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  35. package/build/components/block-lock/toolbar.js +21 -27
  36. package/build/components/block-lock/toolbar.js.map +1 -1
  37. package/build/components/block-mover/index.js +2 -1
  38. package/build/components/block-mover/index.js.map +1 -1
  39. package/build/components/block-patterns-list/index.js +4 -4
  40. package/build/components/block-patterns-list/index.js.map +1 -1
  41. package/build/components/block-switcher/index.js +4 -4
  42. package/build/components/block-switcher/index.js.map +1 -1
  43. package/build/components/block-toolbar/index.js +1 -2
  44. package/build/components/block-toolbar/index.js.map +1 -1
  45. package/build/components/block-tools/block-toolbar-popover.js +0 -2
  46. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  47. package/build/components/block-variation-transforms/index.js +29 -2
  48. package/build/components/block-variation-transforms/index.js.map +1 -1
  49. package/build/components/border-radius-control/linked-button.js +1 -1
  50. package/build/components/border-radius-control/linked-button.js.map +1 -1
  51. package/build/components/colors/utils.js +10 -2
  52. package/build/components/colors/utils.js.map +1 -1
  53. package/build/components/colors/with-colors.js +6 -2
  54. package/build/components/colors/with-colors.js.map +1 -1
  55. package/build/components/font-sizes/utils.js +10 -2
  56. package/build/components/font-sizes/utils.js.map +1 -1
  57. package/build/components/global-styles/border-panel.js +2 -1
  58. package/build/components/global-styles/border-panel.js.map +1 -1
  59. package/build/components/global-styles/color-panel.js +2 -1
  60. package/build/components/global-styles/color-panel.js.map +1 -1
  61. package/build/components/global-styles/dimensions-panel.js +4 -3
  62. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  63. package/build/components/global-styles/effects-panel.js +2 -1
  64. package/build/components/global-styles/effects-panel.js.map +1 -1
  65. package/build/components/global-styles/filters-panel.js +1 -4
  66. package/build/components/global-styles/filters-panel.js.map +1 -1
  67. package/build/components/global-styles/get-global-styles-changes.js +192 -0
  68. package/build/components/global-styles/get-global-styles-changes.js.map +1 -0
  69. package/build/components/global-styles/hooks.js +3 -2
  70. package/build/components/global-styles/hooks.js.map +1 -1
  71. package/build/components/global-styles/image-settings-panel.js +7 -1
  72. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  73. package/build/components/global-styles/index.js +7 -0
  74. package/build/components/global-styles/index.js.map +1 -1
  75. package/build/components/global-styles/typography-panel.js +33 -15
  76. package/build/components/global-styles/typography-panel.js.map +1 -1
  77. package/build/components/global-styles/use-global-styles-output.js +22 -8
  78. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  79. package/build/components/global-styles/utils.js +8 -1
  80. package/build/components/global-styles/utils.js.map +1 -1
  81. package/build/components/height-control/index.js +6 -2
  82. package/build/components/height-control/index.js.map +1 -1
  83. package/build/components/image-size-control/index.js +2 -2
  84. package/build/components/image-size-control/index.js.map +1 -1
  85. package/build/components/index.native.js +6 -5
  86. package/build/components/index.native.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +61 -22
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/index.native.js +18 -4
  90. package/build/components/inner-blocks/index.native.js.map +1 -1
  91. package/build/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  92. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  93. package/build/components/inner-blocks/use-nested-settings-update.js +5 -9
  94. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  95. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  96. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  97. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -9
  98. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  99. package/build/components/inserter/block-patterns-tab/patterns-filter.js +10 -10
  100. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  101. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +9 -9
  102. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  103. package/build/components/inserter/block-patterns-tab/utils.js +10 -14
  104. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  105. package/build/components/inserter/hooks/use-block-types-state.js +4 -14
  106. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  107. package/build/components/inserter/hooks/use-patterns-state.js +1 -1
  108. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  109. package/build/components/inserter/index.js +1 -2
  110. package/build/components/inserter/index.js.map +1 -1
  111. package/build/components/inserter/library.js +3 -7
  112. package/build/components/inserter/library.js.map +1 -1
  113. package/build/components/inserter/menu.js +14 -28
  114. package/build/components/inserter/menu.js.map +1 -1
  115. package/build/components/inserter/tabs.js +21 -21
  116. package/build/components/inserter/tabs.js.map +1 -1
  117. package/build/components/inserter-draggable-blocks/index.js +1 -1
  118. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  119. package/build/components/inserter-list-item/index.js +2 -4
  120. package/build/components/inserter-list-item/index.js.map +1 -1
  121. package/build/components/inspector-controls/block-support-tools-panel.js +3 -1
  122. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  123. package/build/components/inspector-controls-tabs/index.js +34 -23
  124. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  125. package/build/components/list-view/block-select-button.js +4 -0
  126. package/build/components/list-view/block-select-button.js.map +1 -1
  127. package/build/components/list-view/block.js +57 -3
  128. package/build/components/list-view/block.js.map +1 -1
  129. package/build/components/media-upload-progress/constants.js +19 -0
  130. package/build/components/media-upload-progress/constants.js.map +1 -0
  131. package/build/components/media-upload-progress/index.native.js +42 -17
  132. package/build/components/media-upload-progress/index.native.js.map +1 -1
  133. package/build/components/navigable-toolbar/index.js +9 -14
  134. package/build/components/navigable-toolbar/index.js.map +1 -1
  135. package/build/components/plain-text/index.native.js +8 -3
  136. package/build/components/plain-text/index.native.js.map +1 -1
  137. package/build/components/provider/index.js +3 -1
  138. package/build/components/provider/index.js.map +1 -1
  139. package/build/components/provider/use-block-sync.js +7 -1
  140. package/build/components/provider/use-block-sync.js.map +1 -1
  141. package/build/components/rich-text/index.js +17 -7
  142. package/build/components/rich-text/index.js.map +1 -1
  143. package/build/components/rich-text/native/index.native.js +16 -24
  144. package/build/components/rich-text/native/index.native.js.map +1 -1
  145. package/build/components/rich-text/use-input-rules.js +2 -2
  146. package/build/components/rich-text/use-input-rules.js.map +1 -1
  147. package/build/components/rich-text/use-mark-persistent.js +1 -1
  148. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  149. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  150. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  151. package/build/components/url-input/index.js +9 -6
  152. package/build/components/url-input/index.js.map +1 -1
  153. package/build/components/use-block-commands/index.js +14 -18
  154. package/build/components/use-block-commands/index.js.map +1 -1
  155. package/build/components/use-block-drop-zone/index.js +51 -22
  156. package/build/components/use-block-drop-zone/index.js.map +1 -1
  157. package/build/components/use-moving-animation/index.js +100 -92
  158. package/build/components/use-moving-animation/index.js.map +1 -1
  159. package/build/components/use-on-block-drop/index.js +8 -11
  160. package/build/components/use-on-block-drop/index.js.map +1 -1
  161. package/build/components/writing-flow/index.js +0 -1
  162. package/build/components/writing-flow/index.js.map +1 -1
  163. package/build/components/writing-flow/use-drag-selection.js +15 -4
  164. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  165. package/build/components/writing-flow/use-selection-observer.js +73 -27
  166. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  167. package/build/components/writing-flow/use-tab-nav.js +7 -4
  168. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  169. package/build/hooks/align.js +1 -1
  170. package/build/hooks/align.js.map +1 -1
  171. package/build/hooks/anchor.js +1 -1
  172. package/build/hooks/anchor.js.map +1 -1
  173. package/build/hooks/aria-label.js +9 -1
  174. package/build/hooks/aria-label.js.map +1 -1
  175. package/build/hooks/background.js +185 -20
  176. package/build/hooks/background.js.map +1 -1
  177. package/build/hooks/border.js +5 -10
  178. package/build/hooks/border.js.map +1 -1
  179. package/build/hooks/color.js +13 -11
  180. package/build/hooks/color.js.map +1 -1
  181. package/build/hooks/custom-class-name.js +1 -1
  182. package/build/hooks/custom-class-name.js.map +1 -1
  183. package/build/hooks/custom-class-name.native.js +9 -1
  184. package/build/hooks/custom-class-name.native.js.map +1 -1
  185. package/build/hooks/dimensions.js +4 -9
  186. package/build/hooks/dimensions.js.map +1 -1
  187. package/build/hooks/font-family.js +7 -3
  188. package/build/hooks/font-family.js.map +1 -1
  189. package/build/hooks/font-size.js +1 -1
  190. package/build/hooks/font-size.js.map +1 -1
  191. package/build/hooks/index.js +4 -4
  192. package/build/hooks/index.js.map +1 -1
  193. package/build/hooks/index.native.js +5 -3
  194. package/build/hooks/index.native.js.map +1 -1
  195. package/build/hooks/layout.js +10 -4
  196. package/build/hooks/layout.js.map +1 -1
  197. package/build/hooks/style.js +1 -1
  198. package/build/hooks/style.js.map +1 -1
  199. package/build/hooks/typography.js +4 -9
  200. package/build/hooks/typography.js.map +1 -1
  201. package/build/hooks/typography.native.js +43 -18
  202. package/build/hooks/typography.native.js.map +1 -1
  203. package/build/hooks/use-typography-props.js +10 -2
  204. package/build/hooks/use-typography-props.js.map +1 -1
  205. package/build/hooks/utils.js +48 -5
  206. package/build/hooks/utils.js.map +1 -1
  207. package/build/private-apis.js +2 -4
  208. package/build/private-apis.js.map +1 -1
  209. package/build/private-apis.native.js +0 -2
  210. package/build/private-apis.native.js.map +1 -1
  211. package/build/store/actions.js +0 -16
  212. package/build/store/actions.js.map +1 -1
  213. package/build/store/private-actions.js +51 -5
  214. package/build/store/private-actions.js.map +1 -1
  215. package/build/store/private-selectors.js +12 -0
  216. package/build/store/private-selectors.js.map +1 -1
  217. package/build/store/reducer.js +14 -6
  218. package/build/store/reducer.js.map +1 -1
  219. package/build/store/selectors.js +1 -13
  220. package/build/store/selectors.js.map +1 -1
  221. package/build/store/undo-ignore.js +12 -0
  222. package/build/store/undo-ignore.js.map +1 -0
  223. package/build/store/utils.js +1 -1
  224. package/build/store/utils.js.map +1 -1
  225. package/build/utils/get-px-from-css-unit.js +16 -0
  226. package/build/utils/get-px-from-css-unit.js.map +1 -0
  227. package/build/utils/index.js +2 -2
  228. package/build/utils/index.js.map +1 -1
  229. package/build/utils/object.js +17 -38
  230. package/build/utils/object.js.map +1 -1
  231. package/build/utils/use-can-block-toolbar-be-focused.js +46 -0
  232. package/build/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  233. package/build-module/components/block-canvas/index.js +0 -2
  234. package/build-module/components/block-canvas/index.js.map +1 -1
  235. package/build-module/components/block-card/index.js +1 -1
  236. package/build-module/components/block-card/index.js.map +1 -1
  237. package/build-module/components/block-draggable/draggable-chip.js +6 -1
  238. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  239. package/build-module/components/block-draggable/index.js +76 -6
  240. package/build-module/components/block-draggable/index.js.map +1 -1
  241. package/build-module/components/block-draggable/index.native.js +1 -7
  242. package/build-module/components/block-draggable/index.native.js.map +1 -1
  243. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  244. package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -1
  245. package/build-module/components/block-editing-mode/index.js +3 -4
  246. package/build-module/components/block-editing-mode/index.js.map +1 -1
  247. package/build-module/components/block-inspector/index.js +1 -1
  248. package/build-module/components/block-inspector/index.js.map +1 -1
  249. package/build-module/components/block-list/block-list-item-cell.native.js +1 -0
  250. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  251. package/build-module/components/block-list/block.js +249 -106
  252. package/build-module/components/block-list/block.js.map +1 -1
  253. package/build-module/components/block-list/block.native.js +48 -22
  254. package/build-module/components/block-list/block.native.js.map +1 -1
  255. package/build-module/components/block-list/index.native.js +3 -5
  256. package/build-module/components/block-list/index.native.js.map +1 -1
  257. package/build-module/components/block-list/private-block-context.js +6 -0
  258. package/build-module/components/block-list/private-block-context.js.map +1 -0
  259. package/build-module/components/block-list/use-block-props/index.js +34 -97
  260. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  261. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  262. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  263. package/build-module/components/block-list/use-scroll-upon-insertion.native.js +33 -0
  264. package/build-module/components/block-list/use-scroll-upon-insertion.native.js.map +1 -0
  265. package/build-module/components/block-lock/toolbar.js +22 -28
  266. package/build-module/components/block-lock/toolbar.js.map +1 -1
  267. package/build-module/components/block-mover/index.js +2 -1
  268. package/build-module/components/block-mover/index.js.map +1 -1
  269. package/build-module/components/block-patterns-list/index.js +5 -5
  270. package/build-module/components/block-patterns-list/index.js.map +1 -1
  271. package/build-module/components/block-switcher/index.js +4 -4
  272. package/build-module/components/block-switcher/index.js.map +1 -1
  273. package/build-module/components/block-toolbar/index.js +1 -2
  274. package/build-module/components/block-toolbar/index.js.map +1 -1
  275. package/build-module/components/block-tools/block-toolbar-popover.js +0 -2
  276. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  277. package/build-module/components/block-variation-transforms/index.js +30 -3
  278. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  279. package/build-module/components/border-radius-control/linked-button.js +1 -1
  280. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  281. package/build-module/components/colors/utils.js +9 -1
  282. package/build-module/components/colors/utils.js.map +1 -1
  283. package/build-module/components/colors/with-colors.js +5 -1
  284. package/build-module/components/colors/with-colors.js.map +1 -1
  285. package/build-module/components/font-sizes/utils.js +9 -1
  286. package/build-module/components/font-sizes/utils.js.map +1 -1
  287. package/build-module/components/global-styles/border-panel.js +3 -2
  288. package/build-module/components/global-styles/border-panel.js.map +1 -1
  289. package/build-module/components/global-styles/color-panel.js +3 -2
  290. package/build-module/components/global-styles/color-panel.js.map +1 -1
  291. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  292. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  293. package/build-module/components/global-styles/effects-panel.js +3 -2
  294. package/build-module/components/global-styles/effects-panel.js.map +1 -1
  295. package/build-module/components/global-styles/filters-panel.js +2 -5
  296. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  297. package/build-module/components/global-styles/get-global-styles-changes.js +184 -0
  298. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -0
  299. package/build-module/components/global-styles/hooks.js +3 -2
  300. package/build-module/components/global-styles/hooks.js.map +1 -1
  301. package/build-module/components/global-styles/image-settings-panel.js +7 -1
  302. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  303. package/build-module/components/global-styles/index.js +1 -0
  304. package/build-module/components/global-styles/index.js.map +1 -1
  305. package/build-module/components/global-styles/typography-panel.js +35 -17
  306. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  307. package/build-module/components/global-styles/use-global-styles-output.js +15 -1
  308. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  309. package/build-module/components/global-styles/utils.js +7 -0
  310. package/build-module/components/global-styles/utils.js.map +1 -1
  311. package/build-module/components/height-control/index.js +6 -2
  312. package/build-module/components/height-control/index.js.map +1 -1
  313. package/build-module/components/image-size-control/index.js +2 -2
  314. package/build-module/components/image-size-control/index.js.map +1 -1
  315. package/build-module/components/index.native.js +2 -1
  316. package/build-module/components/index.native.js.map +1 -1
  317. package/build-module/components/inner-blocks/index.js +62 -23
  318. package/build-module/components/inner-blocks/index.js.map +1 -1
  319. package/build-module/components/inner-blocks/index.native.js +18 -4
  320. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  321. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +5 -6
  322. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  323. package/build-module/components/inner-blocks/use-nested-settings-update.js +6 -10
  324. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  325. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  326. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  327. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +11 -10
  328. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  329. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +11 -11
  330. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  331. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +11 -11
  332. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  333. package/build-module/components/inserter/block-patterns-tab/utils.js +7 -11
  334. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  335. package/build-module/components/inserter/hooks/use-block-types-state.js +4 -14
  336. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  337. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -2
  338. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  339. package/build-module/components/inserter/index.js +1 -2
  340. package/build-module/components/inserter/index.js.map +1 -1
  341. package/build-module/components/inserter/library.js +3 -7
  342. package/build-module/components/inserter/library.js.map +1 -1
  343. package/build-module/components/inserter/menu.js +14 -28
  344. package/build-module/components/inserter/menu.js.map +1 -1
  345. package/build-module/components/inserter/tabs.js +22 -22
  346. package/build-module/components/inserter/tabs.js.map +1 -1
  347. package/build-module/components/inserter-draggable-blocks/index.js +2 -2
  348. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  349. package/build-module/components/inserter-list-item/index.js +2 -4
  350. package/build-module/components/inserter-list-item/index.js.map +1 -1
  351. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -1
  352. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  353. package/build-module/components/inspector-controls-tabs/index.js +35 -24
  354. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  355. package/build-module/components/list-view/block-select-button.js +4 -0
  356. package/build-module/components/list-view/block-select-button.js.map +1 -1
  357. package/build-module/components/list-view/block.js +58 -4
  358. package/build-module/components/list-view/block.js.map +1 -1
  359. package/build-module/components/media-upload-progress/constants.js +7 -0
  360. package/build-module/components/media-upload-progress/constants.js.map +1 -0
  361. package/build-module/components/media-upload-progress/index.native.js +37 -8
  362. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  363. package/build-module/components/navigable-toolbar/index.js +9 -14
  364. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  365. package/build-module/components/plain-text/index.native.js +6 -1
  366. package/build-module/components/plain-text/index.native.js.map +1 -1
  367. package/build-module/components/provider/index.js +3 -1
  368. package/build-module/components/provider/index.js.map +1 -1
  369. package/build-module/components/provider/use-block-sync.js +7 -1
  370. package/build-module/components/provider/use-block-sync.js.map +1 -1
  371. package/build-module/components/rich-text/index.js +17 -7
  372. package/build-module/components/rich-text/index.js.map +1 -1
  373. package/build-module/components/rich-text/native/index.native.js +16 -23
  374. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  375. package/build-module/components/rich-text/use-input-rules.js +2 -2
  376. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  377. package/build-module/components/rich-text/use-mark-persistent.js +1 -1
  378. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  379. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  380. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  381. package/build-module/components/url-input/index.js +9 -6
  382. package/build-module/components/url-input/index.js.map +1 -1
  383. package/build-module/components/use-block-commands/index.js +14 -18
  384. package/build-module/components/use-block-commands/index.js.map +1 -1
  385. package/build-module/components/use-block-drop-zone/index.js +51 -23
  386. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  387. package/build-module/components/use-moving-animation/index.js +102 -94
  388. package/build-module/components/use-moving-animation/index.js.map +1 -1
  389. package/build-module/components/use-on-block-drop/index.js +8 -11
  390. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  391. package/build-module/components/writing-flow/index.js +0 -1
  392. package/build-module/components/writing-flow/index.js.map +1 -1
  393. package/build-module/components/writing-flow/use-drag-selection.js +15 -4
  394. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  395. package/build-module/components/writing-flow/use-selection-observer.js +73 -27
  396. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  397. package/build-module/components/writing-flow/use-tab-nav.js +7 -4
  398. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  399. package/build-module/hooks/align.js +1 -1
  400. package/build-module/hooks/align.js.map +1 -1
  401. package/build-module/hooks/anchor.js +1 -1
  402. package/build-module/hooks/anchor.js.map +1 -1
  403. package/build-module/hooks/aria-label.js +7 -1
  404. package/build-module/hooks/aria-label.js.map +1 -1
  405. package/build-module/hooks/background.js +181 -19
  406. package/build-module/hooks/background.js.map +1 -1
  407. package/build-module/hooks/border.js +2 -8
  408. package/build-module/hooks/border.js.map +1 -1
  409. package/build-module/hooks/color.js +11 -9
  410. package/build-module/hooks/color.js.map +1 -1
  411. package/build-module/hooks/custom-class-name.js +1 -1
  412. package/build-module/hooks/custom-class-name.js.map +1 -1
  413. package/build-module/hooks/custom-class-name.native.js +7 -1
  414. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  415. package/build-module/hooks/dimensions.js +1 -7
  416. package/build-module/hooks/dimensions.js.map +1 -1
  417. package/build-module/hooks/font-family.js +6 -2
  418. package/build-module/hooks/font-family.js.map +1 -1
  419. package/build-module/hooks/font-size.js +1 -1
  420. package/build-module/hooks/font-size.js.map +1 -1
  421. package/build-module/hooks/index.js +5 -5
  422. package/build-module/hooks/index.js.map +1 -1
  423. package/build-module/hooks/index.native.js +6 -4
  424. package/build-module/hooks/index.native.js.map +1 -1
  425. package/build-module/hooks/layout.js +9 -3
  426. package/build-module/hooks/layout.js.map +1 -1
  427. package/build-module/hooks/style.js +1 -1
  428. package/build-module/hooks/style.js.map +1 -1
  429. package/build-module/hooks/typography.js +1 -7
  430. package/build-module/hooks/typography.js.map +1 -1
  431. package/build-module/hooks/typography.native.js +43 -17
  432. package/build-module/hooks/typography.native.js.map +1 -1
  433. package/build-module/hooks/use-typography-props.js +9 -1
  434. package/build-module/hooks/use-typography-props.js.map +1 -1
  435. package/build-module/hooks/utils.js +47 -5
  436. package/build-module/hooks/utils.js.map +1 -1
  437. package/build-module/private-apis.js +2 -4
  438. package/build-module/private-apis.js.map +1 -1
  439. package/build-module/private-apis.native.js +0 -2
  440. package/build-module/private-apis.native.js.map +1 -1
  441. package/build-module/store/actions.js +0 -15
  442. package/build-module/store/actions.js.map +1 -1
  443. package/build-module/store/private-actions.js +49 -4
  444. package/build-module/store/private-actions.js.map +1 -1
  445. package/build-module/store/private-selectors.js +11 -0
  446. package/build-module/store/private-selectors.js.map +1 -1
  447. package/build-module/store/reducer.js +14 -6
  448. package/build-module/store/reducer.js.map +1 -1
  449. package/build-module/store/selectors.js +1 -12
  450. package/build-module/store/selectors.js.map +1 -1
  451. package/build-module/store/undo-ignore.js +5 -0
  452. package/build-module/store/undo-ignore.js.map +1 -0
  453. package/build-module/store/utils.js +2 -2
  454. package/build-module/store/utils.js.map +1 -1
  455. package/build-module/utils/get-px-from-css-unit.js +9 -0
  456. package/build-module/utils/get-px-from-css-unit.js.map +1 -0
  457. package/build-module/utils/index.js +1 -1
  458. package/build-module/utils/index.js.map +1 -1
  459. package/build-module/utils/object.js +16 -37
  460. package/build-module/utils/object.js.map +1 -1
  461. package/build-module/utils/use-can-block-toolbar-be-focused.js +40 -0
  462. package/build-module/utils/use-can-block-toolbar-be-focused.js.map +1 -0
  463. package/build-style/content-rtl.css +7 -6
  464. package/build-style/content.css +7 -6
  465. package/build-style/style-rtl.css +51 -8
  466. package/build-style/style.css +51 -8
  467. package/package.json +31 -31
  468. package/src/components/alignment-control/README.md +0 -5
  469. package/src/components/block-alignment-control/README.md +0 -5
  470. package/src/components/block-alignment-matrix-control/README.md +0 -10
  471. package/src/components/block-breadcrumb/README.md +0 -5
  472. package/src/components/block-canvas/index.js +0 -2
  473. package/src/components/block-canvas/style.scss +6 -0
  474. package/src/components/block-caption/README.md +0 -5
  475. package/src/components/block-card/README.md +0 -5
  476. package/src/components/block-card/index.js +1 -1
  477. package/src/components/block-draggable/draggable-chip.js +11 -1
  478. package/src/components/block-draggable/index.js +116 -4
  479. package/src/components/block-draggable/index.native.js +0 -5
  480. package/src/components/block-draggable/style.scss +35 -0
  481. package/src/components/block-draggable/test/helpers.native.js +8 -7
  482. package/src/components/block-draggable/use-scroll-when-dragging.native.js +1 -1
  483. package/src/components/block-editing-mode/index.js +3 -3
  484. package/src/components/block-icon/README.md +0 -5
  485. package/src/components/block-inspector/README.md +0 -5
  486. package/src/components/block-inspector/index.js +3 -1
  487. package/src/components/block-list/block-list-item-cell.native.js +5 -1
  488. package/src/components/block-list/block.js +290 -119
  489. package/src/components/block-list/block.native.js +55 -21
  490. package/src/components/block-list/content.scss +14 -10
  491. package/src/components/block-list/index.native.js +3 -5
  492. package/src/components/block-list/{block-list-block-context.js → private-block-context.js} +1 -1
  493. package/src/components/block-list/use-block-props/index.js +32 -128
  494. package/src/components/block-list/use-in-between-inserter.js +4 -1
  495. package/src/components/block-list/use-scroll-upon-insertion.native.js +52 -0
  496. package/src/components/block-lock/toolbar.js +23 -34
  497. package/src/components/block-mover/README.md +0 -5
  498. package/src/components/block-mover/index.js +1 -1
  499. package/src/components/block-parent-selector/README.md +0 -5
  500. package/src/components/block-patterns-list/README.md +0 -5
  501. package/src/components/block-patterns-list/index.js +8 -5
  502. package/src/components/block-switcher/index.js +49 -59
  503. package/src/components/block-toolbar/README.md +0 -5
  504. package/src/components/block-toolbar/index.js +1 -2
  505. package/src/components/block-tools/block-toolbar-popover.js +4 -10
  506. package/src/components/block-types-list/README.md +0 -5
  507. package/src/components/block-variation-picker/README.md +0 -5
  508. package/src/components/block-variation-transforms/README.md +0 -5
  509. package/src/components/block-variation-transforms/index.js +49 -3
  510. package/src/components/border-radius-control/linked-button.js +1 -1
  511. package/src/components/caption/README.md +0 -5
  512. package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -1
  513. package/src/components/colors/utils.js +8 -1
  514. package/src/components/colors/with-colors.js +3 -1
  515. package/src/components/contrast-checker/README.md +0 -4
  516. package/src/components/copy-handler/README.md +0 -10
  517. package/src/components/font-sizes/utils.js +7 -1
  518. package/src/components/global-styles/border-panel.js +2 -1
  519. package/src/components/global-styles/color-panel.js +2 -1
  520. package/src/components/global-styles/dimensions-panel.js +4 -3
  521. package/src/components/global-styles/effects-panel.js +2 -1
  522. package/src/components/global-styles/filters-panel.js +2 -5
  523. package/src/components/global-styles/get-global-styles-changes.js +210 -0
  524. package/src/components/global-styles/hooks.js +5 -0
  525. package/src/components/global-styles/image-settings-panel.js +6 -0
  526. package/src/components/global-styles/index.js +1 -0
  527. package/src/components/global-styles/test/get-global-styles-changes.js +234 -0
  528. package/src/components/global-styles/typography-panel.js +47 -14
  529. package/src/components/global-styles/use-global-styles-output.js +9 -5
  530. package/src/components/global-styles/utils.js +7 -0
  531. package/src/components/height-control/README.md +2 -7
  532. package/src/components/height-control/index.js +4 -0
  533. package/src/components/image-size-control/index.js +5 -2
  534. package/src/components/index.native.js +2 -2
  535. package/src/components/inner-blocks/index.js +68 -29
  536. package/src/components/inner-blocks/index.native.js +19 -7
  537. package/src/components/inner-blocks/use-inner-block-template-sync.js +5 -7
  538. package/src/components/inner-blocks/use-nested-settings-update.js +6 -13
  539. package/src/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  540. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +15 -15
  541. package/src/components/inserter/block-patterns-tab/patterns-filter.js +15 -13
  542. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +15 -18
  543. package/src/components/inserter/block-patterns-tab/utils.js +11 -12
  544. package/src/components/inserter/hooks/use-block-types-state.js +9 -11
  545. package/src/components/inserter/hooks/use-patterns-state.js +2 -2
  546. package/src/components/inserter/index.js +0 -1
  547. package/src/components/inserter/library.js +2 -8
  548. package/src/components/inserter/menu.js +13 -31
  549. package/src/components/inserter/style.scss +6 -4
  550. package/src/components/inserter/tabs.js +34 -25
  551. package/src/components/inserter-draggable-blocks/index.js +2 -2
  552. package/src/components/inserter-list-item/index.js +6 -6
  553. package/src/components/inspector-controls/block-support-tools-panel.js +2 -0
  554. package/src/components/inspector-controls-tabs/index.js +39 -28
  555. package/src/components/inspector-controls-tabs/style.scss +3 -2
  556. package/src/components/letter-spacing-control/README.md +0 -5
  557. package/src/components/line-height-control/README.md +0 -5
  558. package/src/components/list-view/README.md +0 -5
  559. package/src/components/list-view/block-select-button.js +4 -0
  560. package/src/components/list-view/block.js +73 -2
  561. package/src/components/list-view/style.scss +6 -0
  562. package/src/components/media-upload-progress/constants.js +6 -0
  563. package/src/components/media-upload-progress/index.native.js +66 -14
  564. package/src/components/media-upload-progress/test/index.native.js +2 -2
  565. package/src/components/multi-selection-inspector/README.md +0 -5
  566. package/src/components/navigable-toolbar/index.js +13 -11
  567. package/src/components/plain-text/index.native.js +6 -1
  568. package/src/components/provider/index.js +1 -1
  569. package/src/components/provider/test/use-block-sync.js +20 -17
  570. package/src/components/provider/use-block-sync.js +6 -0
  571. package/src/components/rich-text/index.js +18 -6
  572. package/src/components/rich-text/native/index.native.js +16 -24
  573. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +3 -3
  574. package/src/components/rich-text/native/test/index.native.js +72 -5
  575. package/src/components/rich-text/use-input-rules.js +2 -2
  576. package/src/components/rich-text/use-mark-persistent.js +1 -2
  577. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  578. package/src/components/text-decoration-control/README.md +40 -0
  579. package/src/components/text-transform-control/README.md +0 -4
  580. package/src/components/ungroup-button/README.md +0 -5
  581. package/src/components/unit-control/README.md +0 -4
  582. package/src/components/url-input/index.js +11 -11
  583. package/src/components/use-block-commands/index.js +18 -21
  584. package/src/components/use-block-drop-zone/index.js +85 -34
  585. package/src/components/use-moving-animation/index.js +107 -103
  586. package/src/components/use-on-block-drop/index.js +7 -23
  587. package/src/components/use-on-block-drop/test/index.js +12 -26
  588. package/src/components/use-resize-canvas/README.md +0 -4
  589. package/src/components/use-settings/README.md +0 -4
  590. package/src/components/writing-flow/index.js +0 -1
  591. package/src/components/writing-flow/use-drag-selection.js +18 -4
  592. package/src/components/writing-flow/use-selection-observer.js +99 -37
  593. package/src/components/writing-flow/use-tab-nav.js +7 -7
  594. package/src/hooks/align.js +1 -5
  595. package/src/hooks/anchor.js +1 -5
  596. package/src/hooks/aria-label.js +8 -5
  597. package/src/hooks/background.js +253 -21
  598. package/src/hooks/border.js +2 -13
  599. package/src/hooks/color.js +19 -14
  600. package/src/hooks/custom-class-name.js +1 -5
  601. package/src/hooks/custom-class-name.native.js +8 -5
  602. package/src/hooks/dimensions.js +1 -7
  603. package/src/hooks/font-family.js +4 -7
  604. package/src/hooks/font-size.js +1 -6
  605. package/src/hooks/index.js +19 -5
  606. package/src/hooks/index.native.js +17 -4
  607. package/src/hooks/layout.js +5 -2
  608. package/src/hooks/style.js +1 -6
  609. package/src/hooks/test/anchor.js +4 -9
  610. package/src/hooks/test/custom-class-name.js +3 -8
  611. package/src/hooks/test/style.js +4 -14
  612. package/src/hooks/typography.js +1 -7
  613. package/src/hooks/typography.native.js +31 -33
  614. package/src/hooks/use-typography-props.js +7 -1
  615. package/src/hooks/utils.js +76 -6
  616. package/src/private-apis.js +2 -4
  617. package/src/private-apis.native.js +0 -2
  618. package/src/store/actions.js +0 -15
  619. package/src/store/private-actions.js +44 -4
  620. package/src/store/private-selectors.js +11 -0
  621. package/src/store/reducer.js +16 -5
  622. package/src/store/selectors.js +5 -13
  623. package/src/store/undo-ignore.js +4 -0
  624. package/src/store/utils.js +2 -2
  625. package/src/style.scss +1 -0
  626. package/src/utils/get-px-from-css-unit.js +8 -0
  627. package/src/utils/index.js +1 -1
  628. package/src/utils/object.js +16 -35
  629. package/src/utils/test/object.js +1 -96
  630. package/src/utils/use-can-block-toolbar-be-focused.js +48 -0
  631. package/build/components/block-list/block-list-block-context.js +0 -14
  632. package/build/components/block-list/block-list-block-context.js.map +0 -1
  633. package/build/hooks/custom-fields.js +0 -106
  634. package/build/hooks/custom-fields.js.map +0 -1
  635. package/build/utils/parse-css-unit-to-px.js +0 -302
  636. package/build/utils/parse-css-unit-to-px.js.map +0 -1
  637. package/build/utils/use-should-contextual-toolbar-show.js +0 -63
  638. package/build/utils/use-should-contextual-toolbar-show.js.map +0 -1
  639. package/build-module/components/block-list/block-list-block-context.js +0 -6
  640. package/build-module/components/block-list/block-list-block-context.js.map +0 -1
  641. package/build-module/hooks/custom-fields.js +0 -99
  642. package/build-module/hooks/custom-fields.js.map +0 -1
  643. package/build-module/utils/parse-css-unit-to-px.js +0 -294
  644. package/build-module/utils/parse-css-unit-to-px.js.map +0 -1
  645. package/build-module/utils/use-should-contextual-toolbar-show.js +0 -57
  646. package/build-module/utils/use-should-contextual-toolbar-show.js.map +0 -1
  647. package/src/hooks/custom-fields.js +0 -115
  648. package/src/utils/parse-css-unit-to-px.js +0 -329
  649. package/src/utils/test/parse-css-unit-to-px.js +0 -172
  650. package/src/utils/use-should-contextual-toolbar-show.js +0 -85
@@ -19,14 +19,19 @@ import { ESCAPE } from '@wordpress/keycodes';
19
19
  * Internal dependencies
20
20
  */
21
21
  import { store as blockEditorStore } from '../../store';
22
+ import { unlock } from '../../lock-unlock';
22
23
 
23
24
  function hasOnlyToolbarItem( elements ) {
24
25
  const dataProp = 'toolbarItem';
25
26
  return ! elements.some( ( element ) => ! ( dataProp in element.dataset ) );
26
27
  }
27
28
 
28
- function getAllToolbarItemsIn( container ) {
29
- return Array.from( container.querySelectorAll( '[data-toolbar-item]' ) );
29
+ function getAllFocusableToolbarItemsIn( container ) {
30
+ return Array.from(
31
+ container.querySelectorAll(
32
+ '[data-toolbar-item]:not([disabled]):not([aria-disabled="true"])'
33
+ )
34
+ );
30
35
  }
31
36
 
32
37
  function hasFocusWithin( container ) {
@@ -141,7 +146,8 @@ function useToolbarFocus( {
141
146
  let raf = 0;
142
147
  if ( ! initialFocusOnMount ) {
143
148
  raf = window.requestAnimationFrame( () => {
144
- const items = getAllToolbarItemsIn( navigableToolbarRef );
149
+ const items =
150
+ getAllFocusableToolbarItemsIn( navigableToolbarRef );
145
151
  const index = initialIndex || 0;
146
152
  if ( items[ index ] && hasFocusWithin( navigableToolbarRef ) ) {
147
153
  items[ index ].focus( {
@@ -158,18 +164,13 @@ function useToolbarFocus( {
158
164
  if ( ! onIndexChange || ! navigableToolbarRef ) return;
159
165
  // When the toolbar element is unmounted and onIndexChange is passed, we
160
166
  // pass the focused toolbar item index so it can be hydrated later.
161
- const items = getAllToolbarItemsIn( navigableToolbarRef );
167
+ const items = getAllFocusableToolbarItemsIn( navigableToolbarRef );
162
168
  const index = items.findIndex( ( item ) => item.tabIndex === 0 );
163
169
  onIndexChange( index );
164
170
  };
165
171
  }, [ initialIndex, initialFocusOnMount, onIndexChange, toolbarRef ] );
166
172
 
167
- const { lastFocus } = useSelect( ( select ) => {
168
- const { getLastFocus } = select( blockEditorStore );
169
- return {
170
- lastFocus: getLastFocus(),
171
- };
172
- }, [] );
173
+ const { getLastFocus } = unlock( useSelect( blockEditorStore ) );
173
174
  /**
174
175
  * Handles returning focus to the block editor canvas when pressing escape.
175
176
  */
@@ -178,6 +179,7 @@ function useToolbarFocus( {
178
179
 
179
180
  if ( focusEditorOnEscape ) {
180
181
  const handleKeyDown = ( event ) => {
182
+ const lastFocus = getLastFocus();
181
183
  if ( event.keyCode === ESCAPE && lastFocus?.current ) {
182
184
  // Focus the last focused element when pressing escape.
183
185
  event.preventDefault();
@@ -192,7 +194,7 @@ function useToolbarFocus( {
192
194
  );
193
195
  };
194
196
  }
195
- }, [ focusEditorOnEscape, lastFocus, toolbarRef ] );
197
+ }, [ focusEditorOnEscape, getLastFocus, toolbarRef ] );
196
198
  }
197
199
 
198
200
  export default function NavigableToolbar( {
@@ -7,7 +7,12 @@ import { TextInput, Platform, Dimensions } from 'react-native';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { Component } from '@wordpress/element';
10
- import { RichText, getPxFromCssUnit } from '@wordpress/block-editor';
10
+ import { getPxFromCssUnit } from '@wordpress/components';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import RichText from '../rich-text';
11
16
 
12
17
  /**
13
18
  * Internal dependencies
@@ -45,7 +45,7 @@ export const ExperimentalBlockEditorProvider = withRegistryProvider(
45
45
  useBlockSync( props );
46
46
 
47
47
  return (
48
- <SlotFillProvider>
48
+ <SlotFillProvider passthrough>
49
49
  <KeyboardShortcuts.Register />
50
50
  <BlockRefsProvider>{ children }</BlockRefsProvider>
51
51
  </SlotFillProvider>
@@ -263,13 +263,13 @@ describe( 'useBlockSync hook', () => {
263
263
 
264
264
  expect( onInput ).toHaveBeenCalledWith(
265
265
  [ { clientId: 'a', innerBlocks: [], attributes: { foo: 2 } } ],
266
- {
266
+ expect.objectContaining( {
267
267
  selection: {
268
268
  selectionEnd: {},
269
269
  selectionStart: {},
270
270
  initialPosition: null,
271
271
  },
272
- }
272
+ } )
273
273
  );
274
274
  expect( onChange ).not.toHaveBeenCalled();
275
275
  } );
@@ -303,13 +303,13 @@ describe( 'useBlockSync hook', () => {
303
303
 
304
304
  expect( onChange ).toHaveBeenCalledWith(
305
305
  [ { clientId: 'a', innerBlocks: [], attributes: { foo: 2 } } ],
306
- {
306
+ expect.objectContaining( {
307
307
  selection: {
308
308
  selectionEnd: {},
309
309
  selectionStart: {},
310
310
  initialPosition: null,
311
311
  },
312
- }
312
+ } )
313
313
  );
314
314
  expect( onInput ).not.toHaveBeenCalled();
315
315
  } );
@@ -406,13 +406,13 @@ describe( 'useBlockSync hook', () => {
406
406
  attributes: { foo: 2 },
407
407
  },
408
408
  ],
409
- {
409
+ expect.objectContaining( {
410
410
  selection: {
411
411
  selectionEnd: {},
412
412
  selectionStart: {},
413
413
  initialPosition: null,
414
414
  },
415
- }
415
+ } )
416
416
  );
417
417
  expect( onInput ).not.toHaveBeenCalled();
418
418
  } );
@@ -447,13 +447,16 @@ describe( 'useBlockSync hook', () => {
447
447
  { clientId: 'a', innerBlocks: [], attributes: { foo: 2 } },
448
448
  ];
449
449
 
450
- expect( onChange1 ).toHaveBeenCalledWith( updatedBlocks1, {
451
- selection: {
452
- initialPosition: null,
453
- selectionEnd: {},
454
- selectionStart: {},
455
- },
456
- } );
450
+ expect( onChange1 ).toHaveBeenCalledWith(
451
+ updatedBlocks1,
452
+ expect.objectContaining( {
453
+ selection: {
454
+ initialPosition: null,
455
+ selectionEnd: {},
456
+ selectionStart: {},
457
+ },
458
+ } )
459
+ );
457
460
 
458
461
  const newBlocks = [
459
462
  { clientId: 'b', innerBlocks: [], attributes: { foo: 1 } },
@@ -485,13 +488,13 @@ describe( 'useBlockSync hook', () => {
485
488
  // The second callback should be called with the new change.
486
489
  expect( onChange2 ).toHaveBeenCalledWith(
487
490
  [ { clientId: 'b', innerBlocks: [], attributes: { foo: 3 } } ],
488
- {
491
+ expect.objectContaining( {
489
492
  selection: {
490
493
  selectionEnd: {},
491
494
  selectionStart: {},
492
495
  initialPosition: null,
493
496
  },
494
- }
497
+ } )
495
498
  );
496
499
  } );
497
500
 
@@ -544,13 +547,13 @@ describe( 'useBlockSync hook', () => {
544
547
  // Only the new callback should be called.
545
548
  expect( onChange2 ).toHaveBeenCalledWith(
546
549
  [ { clientId: 'b', innerBlocks: [], attributes: { foo: 3 } } ],
547
- {
550
+ expect.objectContaining( {
548
551
  selection: {
549
552
  selectionEnd: {},
550
553
  selectionStart: {},
551
554
  initialPosition: null,
552
555
  },
553
- }
556
+ } )
554
557
  );
555
558
  } );
556
559
  } );
@@ -9,6 +9,7 @@ import { cloneBlock } from '@wordpress/blocks';
9
9
  * Internal dependencies
10
10
  */
11
11
  import { store as blockEditorStore } from '../../store';
12
+ import { undoIgnoreBlocks } from '../../store/undo-ignore';
12
13
 
13
14
  const noop = () => {};
14
15
 
@@ -264,6 +265,10 @@ export default function useBlockSync( {
264
265
  const updateParent = isPersistent
265
266
  ? onChangeRef.current
266
267
  : onInputRef.current;
268
+ const undoIgnore = undoIgnoreBlocks.has( blocks );
269
+ if ( undoIgnore ) {
270
+ undoIgnoreBlocks.delete( blocks );
271
+ }
267
272
  updateParent( blocks, {
268
273
  selection: {
269
274
  selectionStart: getSelectionStart(),
@@ -271,6 +276,7 @@ export default function useBlockSync( {
271
276
  initialPosition:
272
277
  getSelectedBlocksInitialCaretPosition(),
273
278
  },
279
+ undoIgnore,
274
280
  } );
275
281
  }
276
282
  previousAreBlocksDifferent = areBlocksDifferent;
@@ -113,8 +113,14 @@ export function RichTextWrapper(
113
113
  props = removeNativeProps( props );
114
114
 
115
115
  const anchorRef = useRef();
116
- const { clientId } = useBlockEditContext();
116
+ const { clientId, isSelected: isBlockSelected } = useBlockEditContext();
117
117
  const selector = ( select ) => {
118
+ // Avoid subscribing to the block editor store if the block is not
119
+ // selected.
120
+ if ( ! isBlockSelected ) {
121
+ return { isSelected: false };
122
+ }
123
+
118
124
  const { getSelectionStart, getSelectionEnd } =
119
125
  select( blockEditorStore );
120
126
  const selectionStart = getSelectionStart();
@@ -137,10 +143,12 @@ export function RichTextWrapper(
137
143
  isSelected,
138
144
  };
139
145
  };
140
- // This selector must run on every render so the right selection state is
141
- // retrieved from the store on merge.
142
- // To do: fix this somehow.
143
- const { selectionStart, selectionEnd, isSelected } = useSelect( selector );
146
+ const { selectionStart, selectionEnd, isSelected } = useSelect( selector, [
147
+ clientId,
148
+ identifier,
149
+ originalIsSelected,
150
+ isBlockSelected,
151
+ ] );
144
152
  const { getSelectionStart, getSelectionEnd, getBlockRootClientId } =
145
153
  useSelect( blockEditorStore );
146
154
  const { selectionChange } = useDispatch( blockEditorStore );
@@ -317,10 +325,13 @@ export function RichTextWrapper(
317
325
  { ...props }
318
326
  { ...autocompleteProps }
319
327
  ref={ useMergeRefs( [
328
+ // Rich text ref must be first because its focus listener
329
+ // must be set up before any other ref calls .focus() on
330
+ // mount.
331
+ richTextRef,
320
332
  forwardedRef,
321
333
  autocompleteProps.ref,
322
334
  props.ref,
323
- richTextRef,
324
335
  useBeforeInputRules( { value, onChange } ),
325
336
  useInputRules( {
326
337
  getValue,
@@ -379,6 +390,7 @@ export function RichTextWrapper(
379
390
  // tabIndex because Safari will focus the element. However,
380
391
  // Safari will correctly ignore nested contentEditable elements.
381
392
  tabIndex={ props.tabIndex === 0 ? null : props.tabIndex }
393
+ data-wp-block-attribute-key={ identifier }
382
394
  />
383
395
  </>
384
396
  );
@@ -15,7 +15,8 @@ import {
15
15
  showUserSuggestions,
16
16
  showXpostSuggestions,
17
17
  } from '@wordpress/react-native-bridge';
18
- import { BlockFormatControls, getPxFromCssUnit } from '@wordpress/block-editor';
18
+ import { BlockFormatControls } from '@wordpress/block-editor';
19
+ import { getPxFromCssUnit } from '@wordpress/components';
19
20
  import { Component } from '@wordpress/element';
20
21
  import {
21
22
  compose,
@@ -51,10 +52,6 @@ import { getFormatColors } from './get-format-colors';
51
52
  import styles from './style.scss';
52
53
  import ToolbarButtonWithOptions from './toolbar-button-with-options';
53
54
 
54
- const unescapeSpaces = ( text ) => {
55
- return text.replace( /&nbsp;|&#160;/gi, ' ' );
56
- };
57
-
58
55
  // The flattened color palettes array is memoized to ensure that the same array instance is
59
56
  // returned for the colors palettes. This value might be used as a prop, so having the same
60
57
  // instance will prevent unnecessary re-renders of the RichText component.
@@ -267,7 +264,7 @@ export class RichText extends Component {
267
264
  onCreateUndoLevel() {
268
265
  const { __unstableOnCreateUndoLevel: onCreateUndoLevel } = this.props;
269
266
  // If the content is the same, no level needs to be created.
270
- if ( this.lastHistoryValue === this.value ) {
267
+ if ( this.lastHistoryValue.toString() === this.value.toString() ) {
271
268
  return;
272
269
  }
273
270
 
@@ -317,10 +314,10 @@ export class RichText extends Component {
317
314
  }
318
315
 
319
316
  const contentWithoutRootTag = this.removeRootTagsProducedByAztec(
320
- unescapeSpaces( event.nativeEvent.text )
317
+ event.nativeEvent.text
321
318
  );
322
319
  // On iOS, onChange can be triggered after selection changes, even though there are no content changes.
323
- if ( contentWithoutRootTag === this.value ) {
320
+ if ( contentWithoutRootTag === this.value.toString() ) {
324
321
  return;
325
322
  }
326
323
  this.lastEventCount = event.nativeEvent.eventCount;
@@ -332,11 +329,11 @@ export class RichText extends Component {
332
329
 
333
330
  onTextUpdate( event ) {
334
331
  const contentWithoutRootTag = this.removeRootTagsProducedByAztec(
335
- unescapeSpaces( event.nativeEvent.text )
332
+ event.nativeEvent.text
336
333
  );
337
334
 
338
335
  this.debounceCreateUndoLevel();
339
- const refresh = this.value !== contentWithoutRootTag;
336
+ const refresh = this.value.toString() !== contentWithoutRootTag;
340
337
  this.value = contentWithoutRootTag;
341
338
 
342
339
  // We don't want to refresh if our goal is just to create a record.
@@ -567,7 +564,7 @@ export class RichText extends Component {
567
564
  // Check if value is up to date with latest state of native AztecView.
568
565
  if (
569
566
  event.nativeEvent.text &&
570
- event.nativeEvent.text !== this.props.value
567
+ event.nativeEvent.text !== this.props.value.toString()
571
568
  ) {
572
569
  this.onTextUpdate( event );
573
570
  }
@@ -592,7 +589,7 @@ export class RichText extends Component {
592
589
  // this approach is not perfectly reliable.
593
590
  const isManual =
594
591
  this.lastAztecEventType !== 'input' &&
595
- this.props.value === this.value;
592
+ this.props.value.toString() === this.value.toString();
596
593
  if ( hasChanged && isManual ) {
597
594
  const value = this.createRecord();
598
595
  const activeFormats = getActiveFormats( value );
@@ -659,10 +656,10 @@ export class RichText extends Component {
659
656
 
660
657
  // Check and dicsard stray event, where the text and selection is equal to the ones already cached.
661
658
  const contentWithoutRootTag = this.removeRootTagsProducedByAztec(
662
- unescapeSpaces( event.nativeEvent.text )
659
+ event.nativeEvent.text
663
660
  );
664
661
  if (
665
- contentWithoutRootTag === this.value &&
662
+ contentWithoutRootTag === this.value.toString() &&
666
663
  realStart === this.selectionStart &&
667
664
  realEnd === this.selectionEnd
668
665
  ) {
@@ -759,7 +756,7 @@ export class RichText extends Component {
759
756
  typeof nextProps.value !== 'undefined' &&
760
757
  typeof this.props.value !== 'undefined' &&
761
758
  ( ! this.comesFromAztec || ! this.firedAfterTextChanged ) &&
762
- nextProps.value !== this.props.value
759
+ nextProps.value.toString() !== this.props.value.toString()
763
760
  ) {
764
761
  // Gutenberg seems to try to mirror the caret state even on events that only change the content so,
765
762
  // let's force caret update if state has selection set.
@@ -823,17 +820,11 @@ export class RichText extends Component {
823
820
  }
824
821
  }
825
822
 
826
- componentWillUnmount() {
827
- if ( this._editor.isFocused() ) {
828
- this._editor.blur();
829
- }
830
- }
831
-
832
823
  componentDidUpdate( prevProps ) {
833
824
  const { style, tagName } = this.props;
834
825
  const { currentFontSize } = this.state;
835
826
 
836
- if ( this.props.value !== this.value ) {
827
+ if ( this.props.value.toString() !== this.value.toString() ) {
837
828
  this.value = this.props.value;
838
829
  }
839
830
  const { __unstableIsSelected: prevIsSelected } = prevProps;
@@ -851,7 +842,7 @@ export class RichText extends Component {
851
842
  // Since this is happening when merging blocks, the selection should be at the last character position.
852
843
  // As a fallback the internal selectionEnd value is used.
853
844
  const lastCharacterPosition =
854
- this.value?.length ?? this.selectionEnd;
845
+ this.value?.toString().length ?? this.selectionEnd;
855
846
  this._editor.focus();
856
847
  this.props.onSelectionChange(
857
848
  lastCharacterPosition,
@@ -893,7 +884,8 @@ export class RichText extends Component {
893
884
  // On android if content is empty we need to send no content or else the placeholder will not show.
894
885
  if (
895
886
  ! this.isIOS &&
896
- ( value === '' || value === EMPTY_PARAGRAPH_TAGS )
887
+ ( value.toString() === '' ||
888
+ value.toString() === EMPTY_PARAGRAPH_TAGS )
897
889
  ) {
898
890
  return '';
899
891
  }
@@ -1,12 +1,12 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`<RichText/> Font Size renders component with style and font size 1`] = `
3
+ exports[`<RichText/> when applying the font size renders component with style and font size 1`] = `
4
4
  "<!-- wp:paragraph {"style":{"color":{"text":"#fcb900"},"typography":{"fontSize":35.56}}} -->
5
5
  <p class="has-text-color" style="color:#fcb900;font-size:35.56px">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed imperdiet ut nibh vitae ornare. Sed auctor nec augue at blandit.</p>
6
6
  <!-- /wp:paragraph -->"
7
7
  `;
8
8
 
9
- exports[`<RichText/> Font Size should update the font size when style prop with font size property is provided 1`] = `
9
+ exports[`<RichText/> when applying the font size should update the font size when style prop with font size property is provided 1`] = `
10
10
  <View
11
11
  style={
12
12
  [
@@ -42,7 +42,7 @@ exports[`<RichText/> Font Size should update the font size when style prop with
42
42
  </View>
43
43
  `;
44
44
 
45
- exports[`<RichText/> Font Size should update the font size with decimals when style prop with font size property is provided 1`] = `
45
+ exports[`<RichText/> when applying the font size should update the font size with decimals when style prop with font size property is provided 1`] = `
46
46
  <View
47
47
  style={
48
48
  [
@@ -2,13 +2,23 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { Dimensions } from 'react-native';
5
- import { getEditorHtml, render, initializeEditor } from 'test/helpers';
5
+ import {
6
+ fireEvent,
7
+ getEditorHtml,
8
+ initializeEditor,
9
+ render,
10
+ screen,
11
+ } from 'test/helpers';
6
12
 
7
13
  /**
8
14
  * WordPress dependencies
9
15
  */
10
16
  import { select } from '@wordpress/data';
11
- import { store as richTextStore } from '@wordpress/rich-text';
17
+ import {
18
+ store as richTextStore,
19
+ RichTextData,
20
+ __unstableCreateElement,
21
+ } from '@wordpress/rich-text';
12
22
  import { coreBlocks } from '@wordpress/block-library';
13
23
  import {
14
24
  getBlockTypes,
@@ -78,7 +88,64 @@ describe( '<RichText/>', () => {
78
88
  } );
79
89
  } );
80
90
 
81
- describe( 'Font Size', () => {
91
+ describe( 'when the value changes', () => {
92
+ it( 'should avoid updating attributes when values are equal', async () => {
93
+ const handleChange = jest.fn();
94
+ const defaultEmptyValue = RichTextData.empty();
95
+ render(
96
+ <RichText
97
+ onChange={ handleChange }
98
+ value={ defaultEmptyValue }
99
+ />
100
+ );
101
+
102
+ // Simulate an empty string from Aztec
103
+ fireEvent( screen.getByLabelText( 'Text input. Empty' ), 'change', {
104
+ nativeEvent: { text: '' },
105
+ } );
106
+
107
+ expect( handleChange ).not.toHaveBeenCalled();
108
+ } );
109
+
110
+ it( 'should preserve non-breaking space HTML entity', () => {
111
+ const onChange = jest.fn();
112
+ const onSelectionChange = jest.fn();
113
+ // The initial value is created using an HTML element to preserve
114
+ // the HTML entity.
115
+ const initialValue = RichTextData.fromHTMLElement(
116
+ __unstableCreateElement( document, '&nbsp;' )
117
+ );
118
+ render(
119
+ <RichText
120
+ onChange={ onChange }
121
+ onSelectionChange={ onSelectionChange }
122
+ value={ initialValue }
123
+ __unstableIsSelected
124
+ />
125
+ );
126
+
127
+ // Trigger selection event with same text value as initial.
128
+ fireEvent(
129
+ screen.getByLabelText( /Text input/ ),
130
+ 'onSelectionChange',
131
+ 0,
132
+ 0,
133
+ initialValue.toString(),
134
+ {
135
+ nativeEvent: {
136
+ eventCount: 0,
137
+ target: undefined,
138
+ text: initialValue.toString(),
139
+ },
140
+ }
141
+ );
142
+
143
+ expect( onChange ).not.toHaveBeenCalled();
144
+ expect( onSelectionChange ).toHaveBeenCalled();
145
+ } );
146
+ } );
147
+
148
+ describe( 'when applying the font size', () => {
82
149
  it( 'should display rich text at the DEFAULT font size.', () => {
83
150
  // Arrange.
84
151
  const expectedFontSize = 16;
@@ -234,7 +301,7 @@ describe( '<RichText/>', () => {
234
301
  const fontSize = '10';
235
302
  const style = { fontSize: '12' };
236
303
  // Act.
237
- const screen = render( <RichText fontSize={ fontSize } /> );
304
+ render( <RichText fontSize={ fontSize } /> );
238
305
  screen.update( <RichText fontSize={ fontSize } style={ style } /> );
239
306
  // Assert.
240
307
  expect( screen.toJSON() ).toMatchSnapshot();
@@ -256,7 +323,7 @@ describe( '<RichText/>', () => {
256
323
  const fontSize = '10';
257
324
  const style = { fontSize: '12.56px' };
258
325
  // Act.
259
- const screen = render( <RichText fontSize={ fontSize } /> );
326
+ render( <RichText fontSize={ fontSize } /> );
260
327
  screen.update( <RichText fontSize={ fontSize } style={ style } /> );
261
328
  // Assert.
262
329
  expect( screen.toJSON() ).toMatchSnapshot();
@@ -142,8 +142,8 @@ export function useInputRules( props ) {
142
142
  return;
143
143
  }
144
144
 
145
- if ( __unstableAllowPrefixTransformations && inputRule ) {
146
- if ( inputRule() ) return;
145
+ if ( __unstableAllowPrefixTransformations && inputRule() ) {
146
+ return;
147
147
  }
148
148
 
149
149
  const value = getValue();
@@ -11,8 +11,7 @@ import { store as blockEditorStore } from '../../store';
11
11
 
12
12
  export function useMarkPersistent( { html, value } ) {
13
13
  const previousText = useRef();
14
- const hasActiveFormats =
15
- value.activeFormats && !! value.activeFormats.length;
14
+ const hasActiveFormats = !! value.activeFormats?.length;
16
15
  const { __unstableMarkLastChangeAsPersistent } =
17
16
  useDispatch( blockEditorStore );
18
17
 
@@ -317,7 +317,7 @@ export default function SpacingInputControl( {
317
317
  setShowCustomValueControl( ! showCustomValueControl );
318
318
  } }
319
319
  isPressed={ showCustomValueControl }
320
- isSmall
320
+ size="small"
321
321
  className="spacing-sizes-control__custom-toggle"
322
322
  iconSize={ 24 }
323
323
  />
@@ -0,0 +1,40 @@
1
+ # TextDecorationControl
2
+
3
+ <div class="callout callout-alert">
4
+ This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.
5
+ </div>
6
+ <br />
7
+
8
+ ![TextDecorationControl Element in Inspector Control](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/assets/text-decoration-component.png?raw=true)
9
+
10
+
11
+ ## Usage
12
+
13
+ ```jsx
14
+ import { __experimentalTextDecorationControl as TextDecorationControl } from '@wordpress/block-editor';
15
+ ```
16
+
17
+ Then, you can use the component in your block editor UI:
18
+
19
+ ```jsx
20
+ <TextDecorationControl
21
+ value={textDecorationValue}
22
+ onChange={(newValue) => setAttributes({ textDecoration: newValue })}
23
+ />
24
+ ```
25
+
26
+ ### Props
27
+
28
+ ### `value`
29
+
30
+ - **Type:** `String`
31
+ - **Default:** `none`
32
+ - **Options:** `none`, `underline`, `line-through`
33
+
34
+ The current value of the Text Decoration setting. You may only choose from the `Options` listed above.
35
+
36
+ ### `onChange`
37
+
38
+ - **Type:** `Function`
39
+
40
+ A callback function invoked when the Text Decoration value is changed via an interaction with any of the buttons. Called with the Text Decoration value (`none`, `underline`, `line-through`) as the only argument.
@@ -4,10 +4,6 @@ The `TextTransformControl` component is responsible for rendering a control elem
4
4
 
5
5
  ![TextTransformConrol Element in Inspector Control](https://raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/assets/text-transform-component.png?raw=true)
6
6
 
7
- ## Table of contents
8
-
9
- 1. [Development guidelines](#development-guidelines)
10
-
11
7
  ## Development guidelines
12
8
 
13
9
  ### Usage
@@ -6,11 +6,6 @@ This only happens in the mobile WordPress apps.
6
6
 
7
7
  ![Ungroup button icon](https://user-images.githubusercontent.com/21242757/65593577-11006000-df91-11e9-8460-1179e9ef46d2.png)
8
8
 
9
- ## Table of contents
10
-
11
- 1. [Development guidelines](#development-guidelines)
12
- 2. [Related components](#related-components)
13
-
14
9
  ## Development guidelines
15
10
 
16
11
  ### Usage
@@ -15,10 +15,6 @@ UnitControl component allows the user to set a value as well as a unit (e.g. `px
15
15
  }
16
16
  ```
17
17
 
18
- ## Table of contents
19
-
20
- 1. [Development guidelines](#development-guidelines)
21
-
22
18
  ## Developer guidelines
23
19
 
24
20
  ### Usage