@wordpress/block-editor 12.24.0 → 12.25.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 (510) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/build/components/alignment-control/ui.js +3 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-inspector/index.js +1 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-list/block.js +0 -9
  8. package/build/components/block-list/block.js.map +1 -1
  9. package/build/components/block-list/index.js +4 -3
  10. package/build/components/block-list/index.js.map +1 -1
  11. package/build/components/block-list/index.native.js +1 -9
  12. package/build/components/block-list/index.native.js.map +1 -1
  13. package/build/components/block-list/use-block-props/index.js +6 -6
  14. package/build/components/block-list/use-block-props/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-block-refs.js +17 -46
  16. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  17. package/build/components/block-list/use-block-props/use-is-hovered.js +10 -14
  18. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  19. package/build/components/block-mover/index.native.js +3 -1
  20. package/build/components/block-mover/index.native.js.map +1 -1
  21. package/build/components/block-settings-menu/block-settings-dropdown.js +0 -25
  22. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  23. package/build/components/block-switcher/pattern-transformations-menu.js +3 -1
  24. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  25. package/build/components/block-switcher/use-transformed-patterns.js +6 -2
  26. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  27. package/build/components/block-switcher/utils.js +15 -5
  28. package/build/components/block-switcher/utils.js.map +1 -1
  29. package/build/components/block-toolbar/use-has-block-toolbar.js +14 -9
  30. package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  31. package/build/components/block-tools/index.js +3 -1
  32. package/build/components/block-tools/index.js.map +1 -1
  33. package/build/components/block-tools/use-show-block-tools.js +2 -5
  34. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  35. package/build/components/block-tools/zoom-out-mode-inserters.js +5 -1
  36. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  37. package/build/components/block-variation-picker/index.js +3 -2
  38. package/build/components/block-variation-picker/index.js.map +1 -1
  39. package/build/components/block-variation-transforms/index.js +3 -1
  40. package/build/components/block-variation-transforms/index.js.map +1 -1
  41. package/build/components/floating-toolbar/index.native.js +9 -5
  42. package/build/components/floating-toolbar/index.native.js.map +1 -1
  43. package/build/components/global-styles/background-panel.js +1 -1
  44. package/build/components/global-styles/background-panel.js.map +1 -1
  45. package/build/components/global-styles/color-panel.js +3 -1
  46. package/build/components/global-styles/color-panel.js.map +1 -1
  47. package/build/components/global-styles/dimensions-panel.js +16 -0
  48. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  49. package/build/components/global-styles/hooks.js +3 -2
  50. package/build/components/global-styles/hooks.js.map +1 -1
  51. package/build/components/global-styles/typography-panel.js +23 -23
  52. package/build/components/global-styles/typography-panel.js.map +1 -1
  53. package/build/components/global-styles/use-global-styles-output.js +149 -132
  54. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  55. package/build/components/global-styles/utils.js +45 -0
  56. package/build/components/global-styles/utils.js.map +1 -1
  57. package/build/components/inner-blocks/index.js +16 -2
  58. package/build/components/inner-blocks/index.js.map +1 -1
  59. package/build/components/inserter/block-patterns-tab/index.js +12 -31
  60. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  61. package/build/components/inserter/block-types-tab.js +4 -0
  62. package/build/components/inserter/block-types-tab.js.map +1 -1
  63. package/build/components/inserter/category-tabs/index.js +56 -0
  64. package/build/components/inserter/category-tabs/index.js.map +1 -0
  65. package/build/components/inserter/media-tab/index.js +2 -2
  66. package/build/components/inserter/media-tab/index.js.map +1 -1
  67. package/build/components/inserter/media-tab/media-panel.js +0 -25
  68. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  69. package/build/components/inserter/media-tab/media-preview.js +13 -3
  70. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  71. package/build/components/inserter/media-tab/media-tab.js +15 -29
  72. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  73. package/build/components/inserter/menu.js +59 -69
  74. package/build/components/inserter/menu.js.map +1 -1
  75. package/build/components/inserter/tabs.js +6 -6
  76. package/build/components/inserter/tabs.js.map +1 -1
  77. package/build/components/line-height-control/index.js +6 -2
  78. package/build/components/line-height-control/index.js.map +1 -1
  79. package/build/components/link-control/search-item.js +9 -3
  80. package/build/components/link-control/search-item.js.map +1 -1
  81. package/build/components/list-view/block-select-button.js +5 -170
  82. package/build/components/list-view/block-select-button.js.map +1 -1
  83. package/build/components/list-view/block.js +166 -14
  84. package/build/components/list-view/block.js.map +1 -1
  85. package/build/components/list-view/index.js +1 -1
  86. package/build/components/list-view/index.js.map +1 -1
  87. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  88. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  89. package/build/components/list-view/utils.js +3 -1
  90. package/build/components/list-view/utils.js.map +1 -1
  91. package/build/components/media-placeholder/index.js +3 -3
  92. package/build/components/media-placeholder/index.js.map +1 -1
  93. package/build/components/navigable-toolbar/index.js +3 -1
  94. package/build/components/navigable-toolbar/index.js.map +1 -1
  95. package/build/components/provider/block-refs-provider.js +3 -4
  96. package/build/components/provider/block-refs-provider.js.map +1 -1
  97. package/build/components/provider/use-block-sync.js +3 -12
  98. package/build/components/provider/use-block-sync.js.map +1 -1
  99. package/build/components/rich-text/event-listeners/before-input-rules.js +93 -0
  100. package/build/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  101. package/build/components/rich-text/event-listeners/delete.js +58 -0
  102. package/build/components/rich-text/event-listeners/delete.js.map +1 -0
  103. package/build/components/rich-text/event-listeners/enter.js +98 -0
  104. package/build/components/rich-text/event-listeners/enter.js.map +1 -0
  105. package/build/components/rich-text/event-listeners/firefox-compat.js +36 -0
  106. package/build/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  107. package/build/components/rich-text/event-listeners/index.js +44 -0
  108. package/build/components/rich-text/event-listeners/index.js.map +1 -0
  109. package/build/components/rich-text/event-listeners/input-events.js +22 -0
  110. package/build/components/rich-text/event-listeners/input-events.js.map +1 -0
  111. package/build/components/rich-text/event-listeners/input-rules.js +135 -0
  112. package/build/components/rich-text/event-listeners/input-rules.js.map +1 -0
  113. package/build/components/rich-text/event-listeners/insert-replacement-text.js +33 -0
  114. package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  115. package/build/components/rich-text/event-listeners/paste-handler.js +146 -0
  116. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  117. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -0
  118. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  119. package/build/components/rich-text/event-listeners/shortcuts.js +22 -0
  120. package/build/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  121. package/build/components/rich-text/event-listeners/undo-automatic-change.js +51 -0
  122. package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  123. package/build/components/rich-text/index.js +11 -31
  124. package/build/components/rich-text/index.js.map +1 -1
  125. package/build/components/rich-text/index.native.js +13 -3
  126. package/build/components/rich-text/index.native.js.map +1 -1
  127. package/build/components/rich-text/multiline.js +6 -2
  128. package/build/components/rich-text/multiline.js.map +1 -1
  129. package/build/components/rich-text/native/index.native.js +12 -0
  130. package/build/components/rich-text/native/index.native.js.map +1 -1
  131. package/build/components/rich-text/use-format-types.js +8 -4
  132. package/build/components/rich-text/use-format-types.js.map +1 -1
  133. package/build/components/segmented-text-control/index.js +62 -0
  134. package/build/components/segmented-text-control/index.js.map +1 -0
  135. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  136. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  137. package/build/components/text-alignment-control/index.js +76 -0
  138. package/build/components/text-alignment-control/index.js.map +1 -0
  139. package/build/components/text-decoration-control/index.js +21 -25
  140. package/build/components/text-decoration-control/index.js.map +1 -1
  141. package/build/components/text-transform-control/index.js +18 -22
  142. package/build/components/text-transform-control/index.js.map +1 -1
  143. package/build/components/use-block-display-information/index.js +9 -3
  144. package/build/components/use-block-display-information/index.js.map +1 -1
  145. package/build/components/use-on-block-drop/index.js +3 -1
  146. package/build/components/use-on-block-drop/index.js.map +1 -1
  147. package/build/components/writing-flow/use-drag-selection.js +3 -1
  148. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  149. package/build/components/writing-flow/use-tab-nav.js +3 -1
  150. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  151. package/build/components/writing-mode-control/index.js +16 -20
  152. package/build/components/writing-mode-control/index.js.map +1 -1
  153. package/build/hooks/duotone.js +3 -1
  154. package/build/hooks/duotone.js.map +1 -1
  155. package/build/hooks/utils.js +11 -6
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/private-apis.js +4 -2
  158. package/build/private-apis.js.map +1 -1
  159. package/build/store/actions.js +32 -8
  160. package/build/store/actions.js.map +1 -1
  161. package/build/store/private-selectors.js +27 -6
  162. package/build/store/private-selectors.js.map +1 -1
  163. package/build/store/reducer.js +11 -8
  164. package/build/store/reducer.js.map +1 -1
  165. package/build/store/selectors.js +21 -7
  166. package/build/store/selectors.js.map +1 -1
  167. package/build/utils/object.js +17 -0
  168. package/build/utils/object.js.map +1 -1
  169. package/build/utils/order-inserter-block-items.js +6 -2
  170. package/build/utils/order-inserter-block-items.js.map +1 -1
  171. package/build/utils/pasting.js +6 -2
  172. package/build/utils/pasting.js.map +1 -1
  173. package/build-module/components/alignment-control/ui.js +3 -1
  174. package/build-module/components/alignment-control/ui.js.map +1 -1
  175. package/build-module/components/block-inspector/index.js +1 -1
  176. package/build-module/components/block-inspector/index.js.map +1 -1
  177. package/build-module/components/block-list/block.js +0 -9
  178. package/build-module/components/block-list/block.js.map +1 -1
  179. package/build-module/components/block-list/index.js +4 -3
  180. package/build-module/components/block-list/index.js.map +1 -1
  181. package/build-module/components/block-list/index.native.js +1 -9
  182. package/build-module/components/block-list/index.native.js.map +1 -1
  183. package/build-module/components/block-list/use-block-props/index.js +6 -6
  184. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  185. package/build-module/components/block-list/use-block-props/use-block-refs.js +19 -48
  186. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  187. package/build-module/components/block-list/use-block-props/use-is-hovered.js +10 -14
  188. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  189. package/build-module/components/block-mover/index.native.js +3 -1
  190. package/build-module/components/block-mover/index.native.js.map +1 -1
  191. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -26
  192. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  193. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -1
  194. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  195. package/build-module/components/block-switcher/use-transformed-patterns.js +6 -2
  196. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  197. package/build-module/components/block-switcher/utils.js +15 -5
  198. package/build-module/components/block-switcher/utils.js.map +1 -1
  199. package/build-module/components/block-toolbar/use-has-block-toolbar.js +14 -9
  200. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  201. package/build-module/components/block-tools/index.js +3 -1
  202. package/build-module/components/block-tools/index.js.map +1 -1
  203. package/build-module/components/block-tools/use-show-block-tools.js +2 -5
  204. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  205. package/build-module/components/block-tools/zoom-out-mode-inserters.js +5 -1
  206. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  207. package/build-module/components/block-variation-picker/index.js +3 -2
  208. package/build-module/components/block-variation-picker/index.js.map +1 -1
  209. package/build-module/components/block-variation-transforms/index.js +3 -1
  210. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  211. package/build-module/components/floating-toolbar/index.native.js +9 -5
  212. package/build-module/components/floating-toolbar/index.native.js.map +1 -1
  213. package/build-module/components/global-styles/background-panel.js +1 -1
  214. package/build-module/components/global-styles/background-panel.js.map +1 -1
  215. package/build-module/components/global-styles/color-panel.js +3 -1
  216. package/build-module/components/global-styles/color-panel.js.map +1 -1
  217. package/build-module/components/global-styles/dimensions-panel.js +17 -1
  218. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  219. package/build-module/components/global-styles/hooks.js +3 -2
  220. package/build-module/components/global-styles/hooks.js.map +1 -1
  221. package/build-module/components/global-styles/typography-panel.js +24 -24
  222. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  223. package/build-module/components/global-styles/use-global-styles-output.js +149 -132
  224. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  225. package/build-module/components/global-styles/utils.js +44 -0
  226. package/build-module/components/global-styles/utils.js.map +1 -1
  227. package/build-module/components/inner-blocks/index.js +16 -2
  228. package/build-module/components/inner-blocks/index.js.map +1 -1
  229. package/build-module/components/inserter/block-patterns-tab/index.js +13 -32
  230. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  231. package/build-module/components/inserter/block-types-tab.js +4 -0
  232. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  233. package/build-module/components/inserter/category-tabs/index.js +49 -0
  234. package/build-module/components/inserter/category-tabs/index.js.map +1 -0
  235. package/build-module/components/inserter/media-tab/index.js +1 -1
  236. package/build-module/components/inserter/media-tab/index.js.map +1 -1
  237. package/build-module/components/inserter/media-tab/media-panel.js +0 -24
  238. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  239. package/build-module/components/inserter/media-tab/media-preview.js +13 -3
  240. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  241. package/build-module/components/inserter/media-tab/media-tab.js +17 -31
  242. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  243. package/build-module/components/inserter/menu.js +61 -71
  244. package/build-module/components/inserter/menu.js.map +1 -1
  245. package/build-module/components/inserter/tabs.js +6 -6
  246. package/build-module/components/inserter/tabs.js.map +1 -1
  247. package/build-module/components/line-height-control/index.js +6 -2
  248. package/build-module/components/line-height-control/index.js.map +1 -1
  249. package/build-module/components/link-control/search-item.js +9 -3
  250. package/build-module/components/link-control/search-item.js.map +1 -1
  251. package/build-module/components/list-view/block-select-button.js +7 -172
  252. package/build-module/components/list-view/block-select-button.js.map +1 -1
  253. package/build-module/components/list-view/block.js +167 -15
  254. package/build-module/components/list-view/block.js.map +1 -1
  255. package/build-module/components/list-view/index.js +1 -1
  256. package/build-module/components/list-view/index.js.map +1 -1
  257. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  258. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  259. package/build-module/components/list-view/utils.js +3 -1
  260. package/build-module/components/list-view/utils.js.map +1 -1
  261. package/build-module/components/media-placeholder/index.js +3 -3
  262. package/build-module/components/media-placeholder/index.js.map +1 -1
  263. package/build-module/components/navigable-toolbar/index.js +3 -1
  264. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  265. package/build-module/components/provider/block-refs-provider.js +3 -4
  266. package/build-module/components/provider/block-refs-provider.js.map +1 -1
  267. package/build-module/components/provider/use-block-sync.js +4 -13
  268. package/build-module/components/provider/use-block-sync.js.map +1 -1
  269. package/build-module/components/rich-text/event-listeners/before-input-rules.js +86 -0
  270. package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  271. package/build-module/components/rich-text/event-listeners/delete.js +51 -0
  272. package/build-module/components/rich-text/event-listeners/delete.js.map +1 -0
  273. package/build-module/components/rich-text/event-listeners/enter.js +92 -0
  274. package/build-module/components/rich-text/event-listeners/enter.js.map +1 -0
  275. package/build-module/components/rich-text/event-listeners/firefox-compat.js +29 -0
  276. package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  277. package/build-module/components/rich-text/event-listeners/index.js +36 -0
  278. package/build-module/components/rich-text/event-listeners/index.js.map +1 -0
  279. package/build-module/components/rich-text/event-listeners/input-events.js +15 -0
  280. package/build-module/components/rich-text/event-listeners/input-events.js.map +1 -0
  281. package/build-module/components/rich-text/event-listeners/input-rules.js +127 -0
  282. package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -0
  283. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +27 -0
  284. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  285. package/build-module/components/rich-text/event-listeners/paste-handler.js +142 -0
  286. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  287. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +21 -0
  288. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  289. package/build-module/components/rich-text/event-listeners/shortcuts.js +15 -0
  290. package/build-module/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  291. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  292. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  293. package/build-module/components/rich-text/index.js +12 -32
  294. package/build-module/components/rich-text/index.js.map +1 -1
  295. package/build-module/components/rich-text/index.native.js +13 -3
  296. package/build-module/components/rich-text/index.native.js.map +1 -1
  297. package/build-module/components/rich-text/multiline.js +6 -2
  298. package/build-module/components/rich-text/multiline.js.map +1 -1
  299. package/build-module/components/rich-text/native/index.native.js +12 -0
  300. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  301. package/build-module/components/rich-text/use-format-types.js +8 -4
  302. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  303. package/build-module/components/segmented-text-control/index.js +55 -0
  304. package/build-module/components/segmented-text-control/index.js.map +1 -0
  305. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  306. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  307. package/build-module/components/text-alignment-control/index.js +68 -0
  308. package/build-module/components/text-alignment-control/index.js.map +1 -0
  309. package/build-module/components/text-decoration-control/index.js +21 -25
  310. package/build-module/components/text-decoration-control/index.js.map +1 -1
  311. package/build-module/components/text-transform-control/index.js +18 -22
  312. package/build-module/components/text-transform-control/index.js.map +1 -1
  313. package/build-module/components/use-block-display-information/index.js +9 -3
  314. package/build-module/components/use-block-display-information/index.js.map +1 -1
  315. package/build-module/components/use-on-block-drop/index.js +3 -1
  316. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  317. package/build-module/components/writing-flow/use-drag-selection.js +3 -1
  318. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  319. package/build-module/components/writing-flow/use-tab-nav.js +3 -1
  320. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  321. package/build-module/components/writing-mode-control/index.js +16 -20
  322. package/build-module/components/writing-mode-control/index.js.map +1 -1
  323. package/build-module/hooks/duotone.js +3 -1
  324. package/build-module/hooks/duotone.js.map +1 -1
  325. package/build-module/hooks/utils.js +11 -6
  326. package/build-module/hooks/utils.js.map +1 -1
  327. package/build-module/private-apis.js +4 -2
  328. package/build-module/private-apis.js.map +1 -1
  329. package/build-module/store/actions.js +32 -8
  330. package/build-module/store/actions.js.map +1 -1
  331. package/build-module/store/private-selectors.js +27 -5
  332. package/build-module/store/private-selectors.js.map +1 -1
  333. package/build-module/store/reducer.js +11 -8
  334. package/build-module/store/reducer.js.map +1 -1
  335. package/build-module/store/selectors.js +21 -7
  336. package/build-module/store/selectors.js.map +1 -1
  337. package/build-module/utils/object.js +16 -0
  338. package/build-module/utils/object.js.map +1 -1
  339. package/build-module/utils/order-inserter-block-items.js +6 -2
  340. package/build-module/utils/order-inserter-block-items.js.map +1 -1
  341. package/build-module/utils/pasting.js +6 -2
  342. package/build-module/utils/pasting.js.map +1 -1
  343. package/build-style/content-rtl.css +41 -68
  344. package/build-style/content.css +41 -68
  345. package/build-style/style-rtl.css +100 -199
  346. package/build-style/style.css +100 -199
  347. package/package.json +31 -31
  348. package/src/components/alignment-control/ui.js +3 -1
  349. package/src/components/block-bindings-toolbar-indicator/style.scss +1 -4
  350. package/src/components/block-canvas/style.scss +1 -3
  351. package/src/components/block-draggable/test/helpers.native.js +8 -8
  352. package/src/components/block-inspector/index.js +1 -2
  353. package/src/components/block-list/block.js +2 -13
  354. package/src/components/block-list/content.scss +9 -1
  355. package/src/components/block-list/index.js +4 -4
  356. package/src/components/block-list/index.native.js +1 -6
  357. package/src/components/block-list/use-block-props/index.js +12 -4
  358. package/src/components/block-list/use-block-props/use-block-refs.js +17 -57
  359. package/src/components/block-list/use-block-props/use-is-hovered.js +11 -16
  360. package/src/components/block-mover/index.native.js +3 -1
  361. package/src/components/block-patterns-list/style.scss +1 -3
  362. package/src/components/block-preview/style.scss +13 -15
  363. package/src/components/block-settings-menu/block-settings-dropdown.js +1 -51
  364. package/src/components/block-switcher/pattern-transformations-menu.js +3 -1
  365. package/src/components/block-switcher/use-transformed-patterns.js +6 -2
  366. package/src/components/block-switcher/utils.js +14 -5
  367. package/src/components/block-toolbar/style.scss +8 -11
  368. package/src/components/block-toolbar/use-has-block-toolbar.js +21 -16
  369. package/src/components/block-tools/index.js +3 -1
  370. package/src/components/block-tools/use-show-block-tools.js +36 -48
  371. package/src/components/block-tools/zoom-out-mode-inserters.js +5 -1
  372. package/src/components/block-variation-picker/content.scss +22 -72
  373. package/src/components/block-variation-picker/index.js +3 -2
  374. package/src/components/block-variation-transforms/index.js +3 -1
  375. package/src/components/floating-toolbar/index.native.js +5 -2
  376. package/src/components/global-styles/background-panel.js +1 -3
  377. package/src/components/global-styles/color-panel.js +3 -1
  378. package/src/components/global-styles/dimensions-panel.js +18 -1
  379. package/src/components/global-styles/hooks.js +2 -0
  380. package/src/components/global-styles/test/utils.js +21 -0
  381. package/src/components/global-styles/typography-panel.js +27 -23
  382. package/src/components/global-styles/use-global-styles-output.js +211 -187
  383. package/src/components/global-styles/utils.js +55 -0
  384. package/src/components/inner-blocks/index.js +14 -1
  385. package/src/components/inserter/block-patterns-tab/index.js +15 -65
  386. package/src/components/inserter/block-types-tab.js +5 -0
  387. package/src/components/inserter/category-tabs/index.js +74 -0
  388. package/src/components/inserter/media-tab/index.js +1 -1
  389. package/src/components/inserter/media-tab/media-panel.js +0 -22
  390. package/src/components/inserter/media-tab/media-preview.js +15 -7
  391. package/src/components/inserter/media-tab/media-tab.js +44 -83
  392. package/src/components/inserter/menu.js +139 -117
  393. package/src/components/inserter/style.scss +90 -170
  394. package/src/components/inserter/tabs.js +5 -13
  395. package/src/components/line-height-control/index.js +6 -2
  396. package/src/components/link-control/search-item.js +9 -3
  397. package/src/components/list-view/block-select-button.js +73 -266
  398. package/src/components/list-view/block.js +218 -28
  399. package/src/components/list-view/index.js +1 -1
  400. package/src/components/list-view/style.scss +20 -28
  401. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  402. package/src/components/list-view/utils.js +3 -1
  403. package/src/components/media-placeholder/content.scss +0 -11
  404. package/src/components/media-placeholder/index.js +3 -3
  405. package/src/components/navigable-toolbar/index.js +3 -1
  406. package/src/components/provider/block-refs-provider.js +3 -8
  407. package/src/components/provider/test/use-block-sync.js +7 -0
  408. package/src/components/provider/use-block-sync.js +3 -20
  409. package/src/components/rich-text/event-listeners/before-input-rules.js +92 -0
  410. package/src/components/rich-text/event-listeners/delete.js +53 -0
  411. package/src/components/rich-text/event-listeners/enter.js +104 -0
  412. package/src/components/rich-text/event-listeners/firefox-compat.js +31 -0
  413. package/src/components/rich-text/event-listeners/index.js +56 -0
  414. package/src/components/rich-text/event-listeners/input-events.js +13 -0
  415. package/src/components/rich-text/event-listeners/input-rules.js +146 -0
  416. package/src/components/rich-text/event-listeners/insert-replacement-text.js +28 -0
  417. package/src/components/rich-text/event-listeners/paste-handler.js +169 -0
  418. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +24 -0
  419. package/src/components/rich-text/event-listeners/shortcuts.js +13 -0
  420. package/src/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  421. package/src/components/rich-text/index.js +7 -34
  422. package/src/components/rich-text/index.native.js +11 -0
  423. package/src/components/rich-text/multiline.js +6 -2
  424. package/src/components/rich-text/native/index.native.js +11 -0
  425. package/src/components/rich-text/use-format-types.js +6 -2
  426. package/src/components/segmented-text-control/index.js +63 -0
  427. package/src/components/{writing-mode-control → segmented-text-control}/style.scss +2 -5
  428. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -1
  429. package/src/components/text-alignment-control/index.js +91 -0
  430. package/src/components/text-alignment-control/stories/index.story.js +39 -0
  431. package/src/components/text-decoration-control/index.js +20 -33
  432. package/src/components/text-transform-control/index.js +17 -30
  433. package/src/components/use-block-display-information/index.js +9 -3
  434. package/src/components/use-on-block-drop/index.js +3 -1
  435. package/src/components/writing-flow/use-drag-selection.js +3 -1
  436. package/src/components/writing-flow/use-tab-nav.js +3 -1
  437. package/src/components/writing-mode-control/index.js +15 -28
  438. package/src/hooks/duotone.js +3 -1
  439. package/src/hooks/utils.js +16 -2
  440. package/src/private-apis.js +4 -2
  441. package/src/store/actions.js +36 -12
  442. package/src/store/private-selectors.js +28 -4
  443. package/src/store/reducer.js +13 -23
  444. package/src/store/selectors.js +20 -7
  445. package/src/style.scss +1 -2
  446. package/src/utils/object.js +16 -0
  447. package/src/utils/order-inserter-block-items.js +6 -2
  448. package/src/utils/pasting.js +6 -2
  449. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -54
  450. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  451. package/build/components/rich-text/use-before-input-rules.js +0 -98
  452. package/build/components/rich-text/use-before-input-rules.js.map +0 -1
  453. package/build/components/rich-text/use-delete.js +0 -64
  454. package/build/components/rich-text/use-delete.js.map +0 -1
  455. package/build/components/rich-text/use-enter.js +0 -109
  456. package/build/components/rich-text/use-enter.js.map +0 -1
  457. package/build/components/rich-text/use-firefox-compat.js +0 -44
  458. package/build/components/rich-text/use-firefox-compat.js.map +0 -1
  459. package/build/components/rich-text/use-input-events.js +0 -25
  460. package/build/components/rich-text/use-input-events.js.map +0 -1
  461. package/build/components/rich-text/use-input-rules.js +0 -139
  462. package/build/components/rich-text/use-input-rules.js.map +0 -1
  463. package/build/components/rich-text/use-insert-replacement-text.js +0 -38
  464. package/build/components/rich-text/use-insert-replacement-text.js.map +0 -1
  465. package/build/components/rich-text/use-paste-handler.js +0 -158
  466. package/build/components/rich-text/use-paste-handler.js.map +0 -1
  467. package/build/components/rich-text/use-remove-browser-shortcuts.js +0 -32
  468. package/build/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  469. package/build/components/rich-text/use-shortcuts.js +0 -25
  470. package/build/components/rich-text/use-shortcuts.js.map +0 -1
  471. package/build/components/rich-text/use-undo-automatic-change.js +0 -53
  472. package/build/components/rich-text/use-undo-automatic-change.js.map +0 -1
  473. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -47
  474. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  475. package/build-module/components/rich-text/use-before-input-rules.js +0 -92
  476. package/build-module/components/rich-text/use-before-input-rules.js.map +0 -1
  477. package/build-module/components/rich-text/use-delete.js +0 -57
  478. package/build-module/components/rich-text/use-delete.js.map +0 -1
  479. package/build-module/components/rich-text/use-enter.js +0 -102
  480. package/build-module/components/rich-text/use-enter.js.map +0 -1
  481. package/build-module/components/rich-text/use-firefox-compat.js +0 -37
  482. package/build-module/components/rich-text/use-firefox-compat.js.map +0 -1
  483. package/build-module/components/rich-text/use-input-events.js +0 -18
  484. package/build-module/components/rich-text/use-input-events.js.map +0 -1
  485. package/build-module/components/rich-text/use-input-rules.js +0 -132
  486. package/build-module/components/rich-text/use-input-rules.js.map +0 -1
  487. package/build-module/components/rich-text/use-insert-replacement-text.js +0 -32
  488. package/build-module/components/rich-text/use-insert-replacement-text.js.map +0 -1
  489. package/build-module/components/rich-text/use-paste-handler.js +0 -152
  490. package/build-module/components/rich-text/use-paste-handler.js.map +0 -1
  491. package/build-module/components/rich-text/use-remove-browser-shortcuts.js +0 -26
  492. package/build-module/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  493. package/build-module/components/rich-text/use-shortcuts.js +0 -18
  494. package/build-module/components/rich-text/use-shortcuts.js.map +0 -1
  495. package/build-module/components/rich-text/use-undo-automatic-change.js +0 -46
  496. package/build-module/components/rich-text/use-undo-automatic-change.js.map +0 -1
  497. package/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -55
  498. package/src/components/rich-text/use-before-input-rules.js +0 -99
  499. package/src/components/rich-text/use-delete.js +0 -59
  500. package/src/components/rich-text/use-enter.js +0 -110
  501. package/src/components/rich-text/use-firefox-compat.js +0 -39
  502. package/src/components/rich-text/use-input-events.js +0 -19
  503. package/src/components/rich-text/use-input-rules.js +0 -150
  504. package/src/components/rich-text/use-insert-replacement-text.js +0 -31
  505. package/src/components/rich-text/use-paste-handler.js +0 -180
  506. package/src/components/rich-text/use-remove-browser-shortcuts.js +0 -29
  507. package/src/components/rich-text/use-shortcuts.js +0 -19
  508. package/src/components/rich-text/use-undo-automatic-change.js +0 -46
  509. package/src/components/text-decoration-control/style.scss +0 -18
  510. package/src/components/text-transform-control/style.scss +0 -18
@@ -675,7 +675,9 @@ export const __unstableDeleteSelection =
675
675
  const selectionAnchor = select.getSelectionStart();
676
676
  const selectionFocus = select.getSelectionEnd();
677
677
 
678
- if ( selectionAnchor.clientId === selectionFocus.clientId ) return;
678
+ if ( selectionAnchor.clientId === selectionFocus.clientId ) {
679
+ return;
680
+ }
679
681
 
680
682
  // It's not mergeable if there's no rich text selection.
681
683
  if (
@@ -683,8 +685,9 @@ export const __unstableDeleteSelection =
683
685
  ! selectionFocus.attributeKey ||
684
686
  typeof selectionAnchor.offset === 'undefined' ||
685
687
  typeof selectionFocus.offset === 'undefined'
686
- )
688
+ ) {
687
689
  return false;
690
+ }
688
691
 
689
692
  const anchorRootClientId = select.getBlockRootClientId(
690
693
  selectionAnchor.clientId
@@ -825,7 +828,9 @@ export const __unstableSplitSelection =
825
828
  const selectionAnchor = select.getSelectionStart();
826
829
  const selectionFocus = select.getSelectionEnd();
827
830
 
828
- if ( selectionAnchor.clientId === selectionFocus.clientId ) return;
831
+ if ( selectionAnchor.clientId === selectionFocus.clientId ) {
832
+ return;
833
+ }
829
834
 
830
835
  // Can't split if the selection is not set.
831
836
  if (
@@ -833,8 +838,9 @@ export const __unstableSplitSelection =
833
838
  ! selectionFocus.attributeKey ||
834
839
  typeof selectionAnchor.offset === 'undefined' ||
835
840
  typeof selectionFocus.offset === 'undefined'
836
- )
841
+ ) {
837
842
  return;
843
+ }
838
844
 
839
845
  const anchorRootClientId = select.getBlockRootClientId(
840
846
  selectionAnchor.clientId
@@ -931,7 +937,9 @@ export const mergeBlocks =
931
937
  const blockA = select.getBlock( clientIdA );
932
938
  const blockAType = getBlockType( blockA.name );
933
939
 
934
- if ( ! blockAType ) return;
940
+ if ( ! blockAType ) {
941
+ return;
942
+ }
935
943
 
936
944
  const blockB = select.getBlock( clientIdB );
937
945
 
@@ -1438,26 +1446,42 @@ export const __unstableSetEditorMode =
1438
1446
  // When switching to zoom-out mode, we need to select the parent section
1439
1447
  if ( mode === 'zoom-out' ) {
1440
1448
  const firstSelectedClientId = select.getBlockSelectionStart();
1449
+ const allBlocks = select.getBlocks();
1450
+
1441
1451
  const { sectionRootClientId } = unlock(
1442
1452
  registry.select( STORE_NAME ).getSettings()
1443
1453
  );
1444
1454
  if ( sectionRootClientId ) {
1445
1455
  const sectionClientIds =
1446
1456
  select.getBlockOrder( sectionRootClientId );
1457
+ const lastSectionClientId =
1458
+ sectionClientIds[ sectionClientIds.length - 1 ];
1447
1459
  if ( sectionClientIds ) {
1448
- const parents = select.getBlockParents(
1449
- firstSelectedClientId
1450
- );
1451
- const firstSectionClientId = parents.find( ( parent ) =>
1452
- sectionClientIds.includes( parent )
1453
- );
1454
- dispatch.selectBlock( firstSectionClientId );
1460
+ if ( firstSelectedClientId ) {
1461
+ const parents = select.getBlockParents(
1462
+ firstSelectedClientId
1463
+ );
1464
+ const firstSectionClientId = parents.find( ( parent ) =>
1465
+ sectionClientIds.includes( parent )
1466
+ );
1467
+ if ( firstSectionClientId ) {
1468
+ dispatch.selectBlock( firstSectionClientId );
1469
+ } else {
1470
+ dispatch.selectBlock( lastSectionClientId );
1471
+ }
1472
+ } else {
1473
+ dispatch.selectBlock( lastSectionClientId );
1474
+ }
1455
1475
  }
1456
1476
  } else if ( firstSelectedClientId ) {
1457
1477
  const rootClientId = select.getBlockHierarchyRootClientId(
1458
1478
  firstSelectedClientId
1459
1479
  );
1460
1480
  dispatch.selectBlock( rootClientId );
1481
+ } else {
1482
+ // If there's no block selected and no sectionRootClientId, select the last root block.
1483
+ const lastRootBlock = allBlocks[ allBlocks.length - 1 ];
1484
+ dispatch.selectBlock( lastRootBlock?.clientId );
1461
1485
  }
1462
1486
  }
1463
1487
 
@@ -14,6 +14,7 @@ import {
14
14
  canInsertBlockType,
15
15
  getBlockName,
16
16
  getTemplateLock,
17
+ getClientIdsWithDescendants,
17
18
  } from './selectors';
18
19
  import {
19
20
  checkAllowListRecursive,
@@ -175,13 +176,36 @@ export function getOpenedBlockSettingsMenu( state ) {
175
176
  /**
176
177
  * Returns all style overrides, intended to be merged with global editor styles.
177
178
  *
179
+ * Overrides are sorted to match the order of the blocks they relate to. This
180
+ * is useful to maintain correct CSS cascade order.
181
+ *
178
182
  * @param {Object} state Global application state.
179
183
  *
180
- * @return {Map} A map of style IDs to style overrides.
184
+ * @return {Array} An array of style ID to style override pairs.
181
185
  */
182
- export function getStyleOverrides( state ) {
183
- return state.styleOverrides;
184
- }
186
+ export const getStyleOverrides = createSelector(
187
+ ( state ) => {
188
+ const clientIds = getClientIdsWithDescendants( state );
189
+ const clientIdMap = clientIds.reduce( ( acc, clientId, index ) => {
190
+ acc[ clientId ] = index;
191
+ return acc;
192
+ }, {} );
193
+
194
+ return [ ...state.styleOverrides ].sort( ( overrideA, overrideB ) => {
195
+ // Once the overrides Map is spread to an array, the first element
196
+ // is the key, while the second is the override itself including
197
+ // the clientId to sort by.
198
+ const [ , { clientId: clientIdA } ] = overrideA;
199
+ const [ , { clientId: clientIdB } ] = overrideB;
200
+
201
+ const aIndex = clientIdMap[ clientIdA ] ?? -1;
202
+ const bIndex = clientIdMap[ clientIdB ] ?? -1;
203
+
204
+ return aIndex - bIndex;
205
+ } );
206
+ },
207
+ ( state ) => [ state.blocks.order, state.styleOverrides ]
208
+ );
185
209
 
186
210
  /** @typedef {import('./actions').InserterMediaCategory} InserterMediaCategory */
187
211
  /**
@@ -304,20 +304,15 @@ const withBlockTree =
304
304
  action.blocks
305
305
  );
306
306
  newState.tree = new Map( newState.tree );
307
- action.replacedClientIds
308
- .concat(
309
- // Controlled inner blocks are only removed
310
- // if the block doesn't move to another position
311
- // otherwise their content will be lost.
312
- action.replacedClientIds
313
- .filter(
314
- ( clientId ) => ! inserterClientIds[ clientId ]
315
- )
316
- .map( ( clientId ) => 'controlled||' + clientId )
317
- )
318
- .forEach( ( key ) => {
319
- newState.tree.delete( key );
320
- } );
307
+ action.replacedClientIds.forEach( ( clientId ) => {
308
+ newState.tree.delete( clientId );
309
+ // Controlled inner blocks are only removed
310
+ // if the block doesn't move to another position
311
+ // otherwise their content will be lost.
312
+ if ( ! inserterClientIds[ clientId ] ) {
313
+ newState.tree.delete( 'controlled||' + clientId );
314
+ }
315
+ } );
321
316
 
322
317
  updateBlockTreeForBlocks( newState, action.blocks );
323
318
  updateParentInnerBlocksInTree(
@@ -358,15 +353,10 @@ const withBlockTree =
358
353
  }
359
354
  }
360
355
  newState.tree = new Map( newState.tree );
361
- action.removedClientIds
362
- .concat(
363
- action.removedClientIds.map(
364
- ( clientId ) => 'controlled||' + clientId
365
- )
366
- )
367
- .forEach( ( key ) => {
368
- newState.tree.delete( key );
369
- } );
356
+ action.removedClientIds.forEach( ( clientId ) => {
357
+ newState.tree.delete( clientId );
358
+ newState.tree.delete( 'controlled||' + clientId );
359
+ } );
370
360
  updateParentInnerBlocksInTree(
371
361
  newState,
372
362
  parentsOfRemovedBlocks,
@@ -1030,7 +1030,9 @@ export function __unstableIsSelectionMergeable( state, isForward ) {
1030
1030
  const selectionFocus = getSelectionEnd( state );
1031
1031
 
1032
1032
  // It's not mergeable if the start and end are within the same block.
1033
- if ( selectionAnchor.clientId === selectionFocus.clientId ) return false;
1033
+ if ( selectionAnchor.clientId === selectionFocus.clientId ) {
1034
+ return false;
1035
+ }
1034
1036
 
1035
1037
  // It's not mergeable if there's no rich text selection.
1036
1038
  if (
@@ -1038,8 +1040,9 @@ export function __unstableIsSelectionMergeable( state, isForward ) {
1038
1040
  ! selectionFocus.attributeKey ||
1039
1041
  typeof selectionAnchor.offset === 'undefined' ||
1040
1042
  typeof selectionFocus.offset === 'undefined'
1041
- )
1043
+ ) {
1042
1044
  return false;
1045
+ }
1043
1046
 
1044
1047
  const anchorRootClientId = getBlockRootClientId(
1045
1048
  state,
@@ -1081,12 +1084,16 @@ export function __unstableIsSelectionMergeable( state, isForward ) {
1081
1084
  const targetBlockName = getBlockName( state, targetBlockClientId );
1082
1085
  const targetBlockType = getBlockType( targetBlockName );
1083
1086
 
1084
- if ( ! targetBlockType.merge ) return false;
1087
+ if ( ! targetBlockType.merge ) {
1088
+ return false;
1089
+ }
1085
1090
 
1086
1091
  const blockToMerge = getBlock( state, blockToMergeClientId );
1087
1092
 
1088
1093
  // It's mergeable if the blocks are of the same type.
1089
- if ( blockToMerge.name === targetBlockName ) return true;
1094
+ if ( blockToMerge.name === targetBlockName ) {
1095
+ return true;
1096
+ }
1090
1097
 
1091
1098
  // If the blocks are of a different type, try to transform the block being
1092
1099
  // merged into the same type of block.
@@ -1938,7 +1945,9 @@ const buildBlockTypeItem =
1938
1945
  isDisabled,
1939
1946
  frecency: calculateFrecency( time, count ),
1940
1947
  };
1941
- if ( buildScope === 'transform' ) return blockItemBase;
1948
+ if ( buildScope === 'transform' ) {
1949
+ return blockItemBase;
1950
+ }
1942
1951
 
1943
1952
  const inserterVariations = getBlockVariations(
1944
1953
  blockType.name,
@@ -2379,7 +2388,9 @@ export const __experimentalGetAllowedPatterns = createRegistrySelector(
2379
2388
  export const getPatternsByBlockTypes = createRegistrySelector( ( select ) =>
2380
2389
  createSelector(
2381
2390
  ( state, blockNames, rootClientId = null ) => {
2382
- if ( ! blockNames ) return EMPTY_ARRAY;
2391
+ if ( ! blockNames ) {
2392
+ return EMPTY_ARRAY;
2393
+ }
2383
2394
  const patterns =
2384
2395
  select( STORE_NAME ).__experimentalGetAllowedPatterns(
2385
2396
  rootClientId
@@ -2438,7 +2449,9 @@ export const __experimentalGetPatternTransformItems = createRegistrySelector(
2438
2449
  ( select ) =>
2439
2450
  createSelector(
2440
2451
  ( state, blocks, rootClientId = null ) => {
2441
- if ( ! blocks ) return EMPTY_ARRAY;
2452
+ if ( ! blocks ) {
2453
+ return EMPTY_ARRAY;
2454
+ }
2442
2455
  /**
2443
2456
  * For now we only handle blocks without InnerBlocks and take into account
2444
2457
  * the `__experimentalRole` property of blocks' attributes for the transformation.
package/src/style.scss CHANGED
@@ -41,9 +41,8 @@
41
41
  @import "./components/multi-selection-inspector/style.scss";
42
42
  @import "./components/responsive-block-control/style.scss";
43
43
  @import "./components/rich-text/style.scss";
44
+ @import "./components/segmented-text-control/style.scss";
44
45
  @import "./components/skip-to-selected-block/style.scss";
45
- @import "./components/text-decoration-control/style.scss";
46
- @import "./components/text-transform-control/style.scss";
47
46
  @import "./components/tool-selector/style.scss";
48
47
  @import "./components/url-input/style.scss";
49
48
  @import "./components/url-popover/style.scss";
@@ -49,3 +49,19 @@ export const getValueFromObjectPath = ( object, path, defaultValue ) => {
49
49
  } );
50
50
  return value ?? defaultValue;
51
51
  };
52
+
53
+ /**
54
+ * Helper util to filter out objects with duplicate values for a given property.
55
+ *
56
+ * @param {Object[]} array Array of objects to filter.
57
+ * @param {string} property Property to filter unique values by.
58
+ *
59
+ * @return {Object[]} Array of objects with unique values for the specified property.
60
+ */
61
+ export function uniqByProperty( array, property ) {
62
+ const seen = new Set();
63
+ return array.filter( ( item ) => {
64
+ const value = item[ property ];
65
+ return seen.has( value ) ? false : seen.add( value );
66
+ } );
67
+ }
@@ -17,8 +17,12 @@ export const orderInserterBlockItems = ( items, priority ) => {
17
17
  let aIndex = priority.indexOf( aName );
18
18
  let bIndex = priority.indexOf( bName );
19
19
  // All other block items should come after that.
20
- if ( aIndex < 0 ) aIndex = priority.length;
21
- if ( bIndex < 0 ) bIndex = priority.length;
20
+ if ( aIndex < 0 ) {
21
+ aIndex = priority.length;
22
+ }
23
+ if ( bIndex < 0 ) {
24
+ bIndex = priority.length;
25
+ }
22
26
  return aIndex - bIndex;
23
27
  } );
24
28
 
@@ -112,7 +112,9 @@ export function shouldDismissPastedFiles( files, html /*, plainText */ ) {
112
112
  // other elements found, like <figure>, but we assume that the user's
113
113
  // intention is to paste the actual image file.
114
114
  const IMAGE_TAG = /<\s*img\b/gi;
115
- if ( html.match( IMAGE_TAG )?.length !== 1 ) return true;
115
+ if ( html.match( IMAGE_TAG )?.length !== 1 ) {
116
+ return true;
117
+ }
116
118
 
117
119
  // Even when there is exactly one <img> tag in the HTML payload, we
118
120
  // choose to weed out local images, i.e. those whose source starts with
@@ -121,7 +123,9 @@ export function shouldDismissPastedFiles( files, html /*, plainText */ ) {
121
123
  // text and exactly one image, and pasting that content using Google
122
124
  // Chrome.
123
125
  const IMG_WITH_LOCAL_SRC = /<\s*img\b[^>]*\bsrc="file:\/\//i;
124
- if ( html.match( IMG_WITH_LOCAL_SRC ) ) return true;
126
+ if ( html.match( IMG_WITH_LOCAL_SRC ) ) {
127
+ return true;
128
+ }
125
129
  }
126
130
 
127
131
  return false;
@@ -1,54 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useBlockMovingModeClassNames = useBlockMovingModeClassNames;
8
- var _classnames = _interopRequireDefault(require("classnames"));
9
- var _data = require("@wordpress/data");
10
- var _store = require("../../../store");
11
- /**
12
- * External dependencies
13
- */
14
-
15
- /**
16
- * WordPress dependencies
17
- */
18
-
19
- /**
20
- * Internal dependencies
21
- */
22
-
23
- /**
24
- * Returns the class names used for block moving mode.
25
- *
26
- * @param {string} clientId The block client ID to insert above.
27
- *
28
- * @return {string} The class names.
29
- */
30
- function useBlockMovingModeClassNames(clientId) {
31
- return (0, _data.useSelect)(select => {
32
- const {
33
- hasBlockMovingClientId,
34
- canInsertBlockType,
35
- getBlockName,
36
- getBlockRootClientId,
37
- isBlockSelected
38
- } = select(_store.store);
39
-
40
- // The classes are only relevant for the selected block. Avoid
41
- // re-rendering all blocks!
42
- if (!isBlockSelected(clientId)) {
43
- return;
44
- }
45
- const movingClientId = hasBlockMovingClientId();
46
- if (!movingClientId) {
47
- return;
48
- }
49
- return (0, _classnames.default)('is-block-moving-mode', {
50
- 'can-insert-moving-block': canInsertBlockType(getBlockName(movingClientId), getBlockRootClientId(clientId))
51
- });
52
- }, [clientId]);
53
- }
54
- //# sourceMappingURL=use-block-moving-mode-class-names.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_data","_store","useBlockMovingModeClassNames","clientId","useSelect","select","hasBlockMovingClientId","canInsertBlockType","getBlockName","getBlockRootClientId","isBlockSelected","blockEditorStore","movingClientId","classnames"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Returns the class names used for block moving mode.\n *\n * @param {string} clientId The block client ID to insert above.\n *\n * @return {string} The class names.\n */\nexport function useBlockMovingModeClassNames( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tisBlockSelected,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\t// The classes are only relevant for the selected block. Avoid\n\t\t\t// re-rendering all blocks!\n\t\t\tif ( ! isBlockSelected( clientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst movingClientId = hasBlockMovingClientId();\n\n\t\t\tif ( ! movingClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn classnames( 'is-block-moving-mode', {\n\t\t\t\t'can-insert-moving-block': canInsertBlockType(\n\t\t\t\t\tgetBlockName( movingClientId ),\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t),\n\t\t\t} );\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AAbA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,4BAA4BA,CAAEC,QAAQ,EAAG;EACxD,OAAO,IAAAC,eAAS,EACbC,MAAM,IAAM;IACb,MAAM;MACLC,sBAAsB;MACtBC,kBAAkB;MAClBC,YAAY;MACZC,oBAAoB;MACpBC;IACD,CAAC,GAAGL,MAAM,CAAEM,YAAiB,CAAC;;IAE9B;IACA;IACA,IAAK,CAAED,eAAe,CAAEP,QAAS,CAAC,EAAG;MACpC;IACD;IAEA,MAAMS,cAAc,GAAGN,sBAAsB,CAAC,CAAC;IAE/C,IAAK,CAAEM,cAAc,EAAG;MACvB;IACD;IAEA,OAAO,IAAAC,mBAAU,EAAE,sBAAsB,EAAE;MAC1C,yBAAyB,EAAEN,kBAAkB,CAC5CC,YAAY,CAAEI,cAAe,CAAC,EAC9BH,oBAAoB,CAAEN,QAAS,CAChC;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;AACF","ignoreList":[]}
@@ -1,98 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useBeforeInputRules = useBeforeInputRules;
7
- var _element = require("@wordpress/element");
8
- var _compose = require("@wordpress/compose");
9
- var _richText = require("@wordpress/rich-text");
10
- var _data = require("@wordpress/data");
11
- var _hooks = require("@wordpress/hooks");
12
- var _store = require("../../store");
13
- /**
14
- * WordPress dependencies
15
- */
16
-
17
- /**
18
- * Internal dependencies
19
- */
20
-
21
- /**
22
- * When typing over a selection, the selection will we wrapped by a matching
23
- * character pair. The second character is optional, it defaults to the first
24
- * character.
25
- *
26
- * @type {string[]} Array of character pairs.
27
- */
28
- const wrapSelectionSettings = ['`', '"', "'", '“”', '‘’'];
29
- function useBeforeInputRules(props) {
30
- const {
31
- __unstableMarkLastChangeAsPersistent,
32
- __unstableMarkAutomaticChange
33
- } = (0, _data.useDispatch)(_store.store);
34
- const propsRef = (0, _element.useRef)(props);
35
- propsRef.current = props;
36
- return (0, _compose.useRefEffect)(element => {
37
- function onInput(event) {
38
- const {
39
- inputType,
40
- data
41
- } = event;
42
- const {
43
- value,
44
- onChange
45
- } = propsRef.current;
46
-
47
- // Only run the rules when inserting text.
48
- if (inputType !== 'insertText') {
49
- return;
50
- }
51
- if ((0, _richText.isCollapsed)(value)) {
52
- return;
53
- }
54
- const pair = (0, _hooks.applyFilters)('blockEditor.wrapSelectionSettings', wrapSelectionSettings).find(([startChar, endChar]) => startChar === data || endChar === data);
55
- if (!pair) {
56
- return;
57
- }
58
- const [startChar, endChar = startChar] = pair;
59
- const start = value.start;
60
- const end = value.end + startChar.length;
61
- let newValue = (0, _richText.insert)(value, startChar, start, start);
62
- newValue = (0, _richText.insert)(newValue, endChar, end, end);
63
- __unstableMarkLastChangeAsPersistent();
64
- onChange(newValue);
65
- __unstableMarkAutomaticChange();
66
- const init = {};
67
- for (const key in event) {
68
- init[key] = event[key];
69
- }
70
- init.data = endChar;
71
- const {
72
- ownerDocument
73
- } = element;
74
- const {
75
- defaultView
76
- } = ownerDocument;
77
- const newEvent = new defaultView.InputEvent('input', init);
78
-
79
- // Dispatch an `input` event with the new data. This will trigger the
80
- // input rules.
81
- // Postpone the `input` to the next event loop tick so that the dispatch
82
- // doesn't happen synchronously in the middle of `beforeinput` dispatch.
83
- // This is closer to how native `input` event would be timed, and also
84
- // makes sure that the `input` event is dispatched only after the `onChange`
85
- // call few lines above has fully updated the data store state and rerendered
86
- // all affected components.
87
- window.queueMicrotask(() => {
88
- event.target.dispatchEvent(newEvent);
89
- });
90
- event.preventDefault();
91
- }
92
- element.addEventListener('beforeinput', onInput);
93
- return () => {
94
- element.removeEventListener('beforeinput', onInput);
95
- };
96
- }, []);
97
- }
98
- //# sourceMappingURL=use-before-input-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_element","require","_compose","_richText","_data","_hooks","_store","wrapSelectionSettings","useBeforeInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","useDispatch","blockEditorStore","propsRef","useRef","current","useRefEffect","element","onInput","event","inputType","data","value","onChange","isCollapsed","pair","applyFilters","find","startChar","endChar","start","end","length","newValue","insert","init","key","ownerDocument","defaultView","newEvent","InputEvent","window","queueMicrotask","target","dispatchEvent","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-before-input-rules.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { insert, isCollapsed } from '@wordpress/rich-text';\nimport { useDispatch } from '@wordpress/data';\nimport { applyFilters } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * When typing over a selection, the selection will we wrapped by a matching\n * character pair. The second character is optional, it defaults to the first\n * character.\n *\n * @type {string[]} Array of character pairs.\n */\nconst wrapSelectionSettings = [ '`', '\"', \"'\", '“”', '‘’' ];\n\nexport function useBeforeInputRules( props ) {\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onInput( event ) {\n\t\t\tconst { inputType, data } = event;\n\t\t\tconst { value, onChange } = propsRef.current;\n\n\t\t\t// Only run the rules when inserting text.\n\t\t\tif ( inputType !== 'insertText' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isCollapsed( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst pair = applyFilters(\n\t\t\t\t'blockEditor.wrapSelectionSettings',\n\t\t\t\twrapSelectionSettings\n\t\t\t).find(\n\t\t\t\t( [ startChar, endChar ] ) =>\n\t\t\t\t\tstartChar === data || endChar === data\n\t\t\t);\n\n\t\t\tif ( ! pair ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [ startChar, endChar = startChar ] = pair;\n\t\t\tconst start = value.start;\n\t\t\tconst end = value.end + startChar.length;\n\n\t\t\tlet newValue = insert( value, startChar, start, start );\n\t\t\tnewValue = insert( newValue, endChar, end, end );\n\n\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\tonChange( newValue );\n\t\t\t__unstableMarkAutomaticChange();\n\n\t\t\tconst init = {};\n\n\t\t\tfor ( const key in event ) {\n\t\t\t\tinit[ key ] = event[ key ];\n\t\t\t}\n\n\t\t\tinit.data = endChar;\n\n\t\t\tconst { ownerDocument } = element;\n\t\t\tconst { defaultView } = ownerDocument;\n\t\t\tconst newEvent = new defaultView.InputEvent( 'input', init );\n\n\t\t\t// Dispatch an `input` event with the new data. This will trigger the\n\t\t\t// input rules.\n\t\t\t// Postpone the `input` to the next event loop tick so that the dispatch\n\t\t\t// doesn't happen synchronously in the middle of `beforeinput` dispatch.\n\t\t\t// This is closer to how native `input` event would be timed, and also\n\t\t\t// makes sure that the `input` event is dispatched only after the `onChange`\n\t\t\t// call few lines above has fully updated the data store state and rerendered\n\t\t\t// all affected components.\n\t\t\twindow.queueMicrotask( () => {\n\t\t\t\tevent.target.dispatchEvent( newEvent );\n\t\t\t} );\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\telement.addEventListener( 'beforeinput', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'beforeinput', onInput );\n\t\t};\n\t}, [] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAKA,IAAAK,MAAA,GAAAL,OAAA;AAZA;AACA;AACA;;AAOA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,qBAAqB,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAE;AAEpD,SAASC,mBAAmBA,CAAEC,KAAK,EAAG;EAC5C,MAAM;IACLC,oCAAoC;IACpCC;EACD,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAiB,CAAC;EACnC,MAAMC,QAAQ,GAAG,IAAAC,eAAM,EAAEN,KAAM,CAAC;EAChCK,QAAQ,CAACE,OAAO,GAAGP,KAAK;EACxB,OAAO,IAAAQ,qBAAY,EAAIC,OAAO,IAAM;IACnC,SAASC,OAAOA,CAAEC,KAAK,EAAG;MACzB,MAAM;QAAEC,SAAS;QAAEC;MAAK,CAAC,GAAGF,KAAK;MACjC,MAAM;QAAEG,KAAK;QAAEC;MAAS,CAAC,GAAGV,QAAQ,CAACE,OAAO;;MAE5C;MACA,IAAKK,SAAS,KAAK,YAAY,EAAG;QACjC;MACD;MAEA,IAAK,IAAAI,qBAAW,EAAEF,KAAM,CAAC,EAAG;QAC3B;MACD;MAEA,MAAMG,IAAI,GAAG,IAAAC,mBAAY,EACxB,mCAAmC,EACnCpB,qBACD,CAAC,CAACqB,IAAI,CACL,CAAE,CAAEC,SAAS,EAAEC,OAAO,CAAE,KACvBD,SAAS,KAAKP,IAAI,IAAIQ,OAAO,KAAKR,IACpC,CAAC;MAED,IAAK,CAAEI,IAAI,EAAG;QACb;MACD;MAEA,MAAM,CAAEG,SAAS,EAAEC,OAAO,GAAGD,SAAS,CAAE,GAAGH,IAAI;MAC/C,MAAMK,KAAK,GAAGR,KAAK,CAACQ,KAAK;MACzB,MAAMC,GAAG,GAAGT,KAAK,CAACS,GAAG,GAAGH,SAAS,CAACI,MAAM;MAExC,IAAIC,QAAQ,GAAG,IAAAC,gBAAM,EAAEZ,KAAK,EAAEM,SAAS,EAAEE,KAAK,EAAEA,KAAM,CAAC;MACvDG,QAAQ,GAAG,IAAAC,gBAAM,EAAED,QAAQ,EAAEJ,OAAO,EAAEE,GAAG,EAAEA,GAAI,CAAC;MAEhDtB,oCAAoC,CAAC,CAAC;MACtCc,QAAQ,CAAEU,QAAS,CAAC;MACpBvB,6BAA6B,CAAC,CAAC;MAE/B,MAAMyB,IAAI,GAAG,CAAC,CAAC;MAEf,KAAM,MAAMC,GAAG,IAAIjB,KAAK,EAAG;QAC1BgB,IAAI,CAAEC,GAAG,CAAE,GAAGjB,KAAK,CAAEiB,GAAG,CAAE;MAC3B;MAEAD,IAAI,CAACd,IAAI,GAAGQ,OAAO;MAEnB,MAAM;QAAEQ;MAAc,CAAC,GAAGpB,OAAO;MACjC,MAAM;QAAEqB;MAAY,CAAC,GAAGD,aAAa;MACrC,MAAME,QAAQ,GAAG,IAAID,WAAW,CAACE,UAAU,CAAE,OAAO,EAAEL,IAAK,CAAC;;MAE5D;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACAM,MAAM,CAACC,cAAc,CAAE,MAAM;QAC5BvB,KAAK,CAACwB,MAAM,CAACC,aAAa,CAAEL,QAAS,CAAC;MACvC,CAAE,CAAC;MACHpB,KAAK,CAAC0B,cAAc,CAAC,CAAC;IACvB;IAEA5B,OAAO,CAAC6B,gBAAgB,CAAE,aAAa,EAAE5B,OAAQ,CAAC;IAClD,OAAO,MAAM;MACZD,OAAO,CAAC8B,mBAAmB,CAAE,aAAa,EAAE7B,OAAQ,CAAC;IACtD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useDelete = useDelete;
7
- var _element = require("@wordpress/element");
8
- var _compose = require("@wordpress/compose");
9
- var _keycodes = require("@wordpress/keycodes");
10
- var _richText = require("@wordpress/rich-text");
11
- /**
12
- * WordPress dependencies
13
- */
14
-
15
- function useDelete(props) {
16
- const propsRef = (0, _element.useRef)(props);
17
- propsRef.current = props;
18
- return (0, _compose.useRefEffect)(element => {
19
- function onKeyDown(event) {
20
- const {
21
- keyCode
22
- } = event;
23
- if (event.defaultPrevented) {
24
- return;
25
- }
26
- const {
27
- value,
28
- onMerge,
29
- onRemove
30
- } = propsRef.current;
31
- if (keyCode === _keycodes.DELETE || keyCode === _keycodes.BACKSPACE) {
32
- const {
33
- start,
34
- end,
35
- text
36
- } = value;
37
- const isReverse = keyCode === _keycodes.BACKSPACE;
38
- const hasActiveFormats = value.activeFormats && !!value.activeFormats.length;
39
-
40
- // Only process delete if the key press occurs at an uncollapsed edge.
41
- if (!(0, _richText.isCollapsed)(value) || hasActiveFormats || isReverse && start !== 0 || !isReverse && end !== text.length) {
42
- return;
43
- }
44
- if (onMerge) {
45
- onMerge(!isReverse);
46
- }
47
-
48
- // Only handle remove on Backspace. This serves dual-purpose of being
49
- // an intentional user interaction distinguishing between Backspace and
50
- // Delete to remove the empty field, but also to avoid merge & remove
51
- // causing destruction of two fields (merge, then removed merged).
52
- else if (onRemove && (0, _richText.isEmpty)(value) && isReverse) {
53
- onRemove(!isReverse);
54
- }
55
- event.preventDefault();
56
- }
57
- }
58
- element.addEventListener('keydown', onKeyDown);
59
- return () => {
60
- element.removeEventListener('keydown', onKeyDown);
61
- };
62
- }, []);
63
- }
64
- //# sourceMappingURL=use-delete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_element","require","_compose","_keycodes","_richText","useDelete","props","propsRef","useRef","current","useRefEffect","element","onKeyDown","event","keyCode","defaultPrevented","value","onMerge","onRemove","DELETE","BACKSPACE","start","end","text","isReverse","hasActiveFormats","activeFormats","length","isCollapsed","isEmpty","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-delete.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { DELETE, BACKSPACE } from '@wordpress/keycodes';\nimport { isCollapsed, isEmpty } from '@wordpress/rich-text';\n\nexport function useDelete( props ) {\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tconst { keyCode } = event;\n\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { value, onMerge, onRemove } = propsRef.current;\n\n\t\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\t\tconst { start, end, text } = value;\n\t\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\t\tconst hasActiveFormats =\n\t\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\t\tif (\n\t\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\t\thasActiveFormats ||\n\t\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( onMerge ) {\n\t\t\t\t\tonMerge( ! isReverse );\n\t\t\t\t}\n\n\t\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\t\telse if ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\t\tonRemove( ! isReverse );\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AANA;AACA;AACA;;AAMO,SAASI,SAASA,CAAEC,KAAK,EAAG;EAClC,MAAMC,QAAQ,GAAG,IAAAC,eAAM,EAAEF,KAAM,CAAC;EAChCC,QAAQ,CAACE,OAAO,GAAGH,KAAK;EACxB,OAAO,IAAAI,qBAAY,EAAIC,OAAO,IAAM;IACnC,SAASC,SAASA,CAAEC,KAAK,EAAG;MAC3B,MAAM;QAAEC;MAAQ,CAAC,GAAGD,KAAK;MAEzB,IAAKA,KAAK,CAACE,gBAAgB,EAAG;QAC7B;MACD;MAEA,MAAM;QAAEC,KAAK;QAAEC,OAAO;QAAEC;MAAS,CAAC,GAAGX,QAAQ,CAACE,OAAO;MAErD,IAAKK,OAAO,KAAKK,gBAAM,IAAIL,OAAO,KAAKM,mBAAS,EAAG;QAClD,MAAM;UAAEC,KAAK;UAAEC,GAAG;UAAEC;QAAK,CAAC,GAAGP,KAAK;QAClC,MAAMQ,SAAS,GAAGV,OAAO,KAAKM,mBAAS;QACvC,MAAMK,gBAAgB,GACrBT,KAAK,CAACU,aAAa,IAAI,CAAC,CAAEV,KAAK,CAACU,aAAa,CAACC,MAAM;;QAErD;QACA,IACC,CAAE,IAAAC,qBAAW,EAAEZ,KAAM,CAAC,IACtBS,gBAAgB,IACdD,SAAS,IAAIH,KAAK,KAAK,CAAG,IAC1B,CAAEG,SAAS,IAAIF,GAAG,KAAKC,IAAI,CAACI,MAAQ,EACrC;UACD;QACD;QAEA,IAAKV,OAAO,EAAG;UACdA,OAAO,CAAE,CAAEO,SAAU,CAAC;QACvB;;QAEA;QACA;QACA;QACA;QAAA,KACK,IAAKN,QAAQ,IAAI,IAAAW,iBAAO,EAAEb,KAAM,CAAC,IAAIQ,SAAS,EAAG;UACrDN,QAAQ,CAAE,CAAEM,SAAU,CAAC;QACxB;QAEAX,KAAK,CAACiB,cAAc,CAAC,CAAC;MACvB;IACD;IAEAnB,OAAO,CAACoB,gBAAgB,CAAE,SAAS,EAAEnB,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACqB,mBAAmB,CAAE,SAAS,EAAEpB,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}