@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
@@ -1 +0,0 @@
1
- {"version":3,"names":["_compose","require","useShortcuts","keyboardShortcuts","useRefEffect","element","onKeyDown","event","keyboardShortcut","current","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-shortcuts.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\n\nexport function useShortcuts( keyboardShortcuts ) {\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tfor ( const keyboardShortcut of keyboardShortcuts.current ) {\n\t\t\t\tkeyboardShortcut( event );\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;AAHA;AACA;AACA;;AAGO,SAASC,YAAYA,CAAEC,iBAAiB,EAAG;EACjD,OAAO,IAAAC,qBAAY,EAAIC,OAAO,IAAM;IACnC,SAASC,SAASA,CAAEC,KAAK,EAAG;MAC3B,KAAM,MAAMC,gBAAgB,IAAIL,iBAAiB,CAACM,OAAO,EAAG;QAC3DD,gBAAgB,CAAED,KAAM,CAAC;MAC1B;IACD;IAEAF,OAAO,CAACK,gBAAgB,CAAE,SAAS,EAAEJ,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACM,mBAAmB,CAAE,SAAS,EAAEL,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
@@ -1,53 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useUndoAutomaticChange = useUndoAutomaticChange;
7
- var _data = require("@wordpress/data");
8
- var _compose = require("@wordpress/compose");
9
- var _keycodes = require("@wordpress/keycodes");
10
- var _store = require("../../store");
11
- /**
12
- * WordPress dependencies
13
- */
14
-
15
- /**
16
- * Internal dependencies
17
- */
18
-
19
- function useUndoAutomaticChange() {
20
- const {
21
- didAutomaticChange,
22
- getSettings
23
- } = (0, _data.useSelect)(_store.store);
24
- return (0, _compose.useRefEffect)(element => {
25
- function onKeyDown(event) {
26
- const {
27
- keyCode
28
- } = event;
29
- if (event.defaultPrevented) {
30
- return;
31
- }
32
- if (keyCode !== _keycodes.BACKSPACE && keyCode !== _keycodes.ESCAPE) {
33
- return;
34
- }
35
- const {
36
- __experimentalUndo
37
- } = getSettings();
38
- if (!__experimentalUndo) {
39
- return;
40
- }
41
- if (!didAutomaticChange()) {
42
- return;
43
- }
44
- event.preventDefault();
45
- __experimentalUndo();
46
- }
47
- element.addEventListener('keydown', onKeyDown);
48
- return () => {
49
- element.removeEventListener('keydown', onKeyDown);
50
- };
51
- }, []);
52
- }
53
- //# sourceMappingURL=use-undo-automatic-change.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_data","require","_compose","_keycodes","_store","useUndoAutomaticChange","didAutomaticChange","getSettings","useSelect","blockEditorStore","useRefEffect","element","onKeyDown","event","keyCode","defaultPrevented","BACKSPACE","ESCAPE","__experimentalUndo","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-undo-automatic-change.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\nimport { BACKSPACE, ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport function useUndoAutomaticChange() {\n\tconst { didAutomaticChange, getSettings } = useSelect( blockEditorStore );\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\tif ( keyCode !== BACKSPACE && keyCode !== ESCAPE ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { __experimentalUndo } = getSettings();\n\n\t\t\tif ( ! __experimentalUndo ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! didAutomaticChange() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\t__experimentalUndo();\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,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAKA,IAAAG,MAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAKA;AACA;AACA;;AAGO,SAASI,sBAAsBA,CAAA,EAAG;EACxC,MAAM;IAAEC,kBAAkB;IAAEC;EAAY,CAAC,GAAG,IAAAC,eAAS,EAAEC,YAAiB,CAAC;EACzE,OAAO,IAAAC,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,IAAKD,OAAO,KAAKE,mBAAS,IAAIF,OAAO,KAAKG,gBAAM,EAAG;QAClD;MACD;MAEA,MAAM;QAAEC;MAAmB,CAAC,GAAGX,WAAW,CAAC,CAAC;MAE5C,IAAK,CAAEW,kBAAkB,EAAG;QAC3B;MACD;MAEA,IAAK,CAAEZ,kBAAkB,CAAC,CAAC,EAAG;QAC7B;MACD;MAEAO,KAAK,CAACM,cAAc,CAAC,CAAC;MACtBD,kBAAkB,CAAC,CAAC;IACrB;IAEAP,OAAO,CAACS,gBAAgB,CAAE,SAAS,EAAER,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACU,mBAAmB,CAAE,SAAS,EAAET,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
@@ -1,47 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { useSelect } from '@wordpress/data';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { store as blockEditorStore } from '../../../store';
15
-
16
- /**
17
- * Returns the class names used for block moving mode.
18
- *
19
- * @param {string} clientId The block client ID to insert above.
20
- *
21
- * @return {string} The class names.
22
- */
23
- export function useBlockMovingModeClassNames(clientId) {
24
- return useSelect(select => {
25
- const {
26
- hasBlockMovingClientId,
27
- canInsertBlockType,
28
- getBlockName,
29
- getBlockRootClientId,
30
- isBlockSelected
31
- } = select(blockEditorStore);
32
-
33
- // The classes are only relevant for the selected block. Avoid
34
- // re-rendering all blocks!
35
- if (!isBlockSelected(clientId)) {
36
- return;
37
- }
38
- const movingClientId = hasBlockMovingClientId();
39
- if (!movingClientId) {
40
- return;
41
- }
42
- return classnames('is-block-moving-mode', {
43
- 'can-insert-moving-block': canInsertBlockType(getBlockName(movingClientId), getBlockRootClientId(clientId))
44
- });
45
- }, [clientId]);
46
- }
47
- //# sourceMappingURL=use-block-moving-mode-class-names.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["classnames","useSelect","store","blockEditorStore","useBlockMovingModeClassNames","clientId","select","hasBlockMovingClientId","canInsertBlockType","getBlockName","getBlockRootClientId","isBlockSelected","movingClientId"],"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":"AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,gBAAgB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,4BAA4BA,CAAEC,QAAQ,EAAG;EACxD,OAAOJ,SAAS,CACbK,MAAM,IAAM;IACb,MAAM;MACLC,sBAAsB;MACtBC,kBAAkB;MAClBC,YAAY;MACZC,oBAAoB;MACpBC;IACD,CAAC,GAAGL,MAAM,CAAEH,gBAAiB,CAAC;;IAE9B;IACA;IACA,IAAK,CAAEQ,eAAe,CAAEN,QAAS,CAAC,EAAG;MACpC;IACD;IAEA,MAAMO,cAAc,GAAGL,sBAAsB,CAAC,CAAC;IAE/C,IAAK,CAAEK,cAAc,EAAG;MACvB;IACD;IAEA,OAAOZ,UAAU,CAAE,sBAAsB,EAAE;MAC1C,yBAAyB,EAAEQ,kBAAkB,CAC5CC,YAAY,CAAEG,cAAe,CAAC,EAC9BF,oBAAoB,CAAEL,QAAS,CAChC;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;AACF","ignoreList":[]}
@@ -1,92 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRef } from '@wordpress/element';
5
- import { useRefEffect } from '@wordpress/compose';
6
- import { insert, isCollapsed } from '@wordpress/rich-text';
7
- import { useDispatch } from '@wordpress/data';
8
- import { applyFilters } from '@wordpress/hooks';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import { store as blockEditorStore } from '../../store';
14
-
15
- /**
16
- * When typing over a selection, the selection will we wrapped by a matching
17
- * character pair. The second character is optional, it defaults to the first
18
- * character.
19
- *
20
- * @type {string[]} Array of character pairs.
21
- */
22
- const wrapSelectionSettings = ['`', '"', "'", '“”', '‘’'];
23
- export function useBeforeInputRules(props) {
24
- const {
25
- __unstableMarkLastChangeAsPersistent,
26
- __unstableMarkAutomaticChange
27
- } = useDispatch(blockEditorStore);
28
- const propsRef = useRef(props);
29
- propsRef.current = props;
30
- return useRefEffect(element => {
31
- function onInput(event) {
32
- const {
33
- inputType,
34
- data
35
- } = event;
36
- const {
37
- value,
38
- onChange
39
- } = propsRef.current;
40
-
41
- // Only run the rules when inserting text.
42
- if (inputType !== 'insertText') {
43
- return;
44
- }
45
- if (isCollapsed(value)) {
46
- return;
47
- }
48
- const pair = applyFilters('blockEditor.wrapSelectionSettings', wrapSelectionSettings).find(([startChar, endChar]) => startChar === data || endChar === data);
49
- if (!pair) {
50
- return;
51
- }
52
- const [startChar, endChar = startChar] = pair;
53
- const start = value.start;
54
- const end = value.end + startChar.length;
55
- let newValue = insert(value, startChar, start, start);
56
- newValue = insert(newValue, endChar, end, end);
57
- __unstableMarkLastChangeAsPersistent();
58
- onChange(newValue);
59
- __unstableMarkAutomaticChange();
60
- const init = {};
61
- for (const key in event) {
62
- init[key] = event[key];
63
- }
64
- init.data = endChar;
65
- const {
66
- ownerDocument
67
- } = element;
68
- const {
69
- defaultView
70
- } = ownerDocument;
71
- const newEvent = new defaultView.InputEvent('input', init);
72
-
73
- // Dispatch an `input` event with the new data. This will trigger the
74
- // input rules.
75
- // Postpone the `input` to the next event loop tick so that the dispatch
76
- // doesn't happen synchronously in the middle of `beforeinput` dispatch.
77
- // This is closer to how native `input` event would be timed, and also
78
- // makes sure that the `input` event is dispatched only after the `onChange`
79
- // call few lines above has fully updated the data store state and rerendered
80
- // all affected components.
81
- window.queueMicrotask(() => {
82
- event.target.dispatchEvent(newEvent);
83
- });
84
- event.preventDefault();
85
- }
86
- element.addEventListener('beforeinput', onInput);
87
- return () => {
88
- element.removeEventListener('beforeinput', onInput);
89
- };
90
- }, []);
91
- }
92
- //# sourceMappingURL=use-before-input-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useRef","useRefEffect","insert","isCollapsed","useDispatch","applyFilters","store","blockEditorStore","wrapSelectionSettings","useBeforeInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","propsRef","current","element","onInput","event","inputType","data","value","onChange","pair","find","startChar","endChar","start","end","length","newValue","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":"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","ignoreList":[]}
@@ -1,57 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRef } from '@wordpress/element';
5
- import { useRefEffect } from '@wordpress/compose';
6
- import { DELETE, BACKSPACE } from '@wordpress/keycodes';
7
- import { isCollapsed, isEmpty } from '@wordpress/rich-text';
8
- export function useDelete(props) {
9
- const propsRef = useRef(props);
10
- propsRef.current = props;
11
- return useRefEffect(element => {
12
- function onKeyDown(event) {
13
- const {
14
- keyCode
15
- } = event;
16
- if (event.defaultPrevented) {
17
- return;
18
- }
19
- const {
20
- value,
21
- onMerge,
22
- onRemove
23
- } = propsRef.current;
24
- if (keyCode === DELETE || keyCode === BACKSPACE) {
25
- const {
26
- start,
27
- end,
28
- text
29
- } = value;
30
- const isReverse = keyCode === BACKSPACE;
31
- const hasActiveFormats = value.activeFormats && !!value.activeFormats.length;
32
-
33
- // Only process delete if the key press occurs at an uncollapsed edge.
34
- if (!isCollapsed(value) || hasActiveFormats || isReverse && start !== 0 || !isReverse && end !== text.length) {
35
- return;
36
- }
37
- if (onMerge) {
38
- onMerge(!isReverse);
39
- }
40
-
41
- // Only handle remove on Backspace. This serves dual-purpose of being
42
- // an intentional user interaction distinguishing between Backspace and
43
- // Delete to remove the empty field, but also to avoid merge & remove
44
- // causing destruction of two fields (merge, then removed merged).
45
- else if (onRemove && isEmpty(value) && isReverse) {
46
- onRemove(!isReverse);
47
- }
48
- event.preventDefault();
49
- }
50
- }
51
- element.addEventListener('keydown', onKeyDown);
52
- return () => {
53
- element.removeEventListener('keydown', onKeyDown);
54
- };
55
- }, []);
56
- }
57
- //# sourceMappingURL=use-delete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useRef","useRefEffect","DELETE","BACKSPACE","isCollapsed","isEmpty","useDelete","props","propsRef","current","element","onKeyDown","event","keyCode","defaultPrevented","value","onMerge","onRemove","start","end","text","isReverse","hasActiveFormats","activeFormats","length","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":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,MAAM,EAAEC,SAAS,QAAQ,qBAAqB;AACvD,SAASC,WAAW,EAAEC,OAAO,QAAQ,sBAAsB;AAE3D,OAAO,SAASC,SAASA,CAAEC,KAAK,EAAG;EAClC,MAAMC,QAAQ,GAAGR,MAAM,CAAEO,KAAM,CAAC;EAChCC,QAAQ,CAACC,OAAO,GAAGF,KAAK;EACxB,OAAON,YAAY,CAAIS,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,GAAGT,QAAQ,CAACC,OAAO;MAErD,IAAKI,OAAO,KAAKX,MAAM,IAAIW,OAAO,KAAKV,SAAS,EAAG;QAClD,MAAM;UAAEe,KAAK;UAAEC,GAAG;UAAEC;QAAK,CAAC,GAAGL,KAAK;QAClC,MAAMM,SAAS,GAAGR,OAAO,KAAKV,SAAS;QACvC,MAAMmB,gBAAgB,GACrBP,KAAK,CAACQ,aAAa,IAAI,CAAC,CAAER,KAAK,CAACQ,aAAa,CAACC,MAAM;;QAErD;QACA,IACC,CAAEpB,WAAW,CAAEW,KAAM,CAAC,IACtBO,gBAAgB,IACdD,SAAS,IAAIH,KAAK,KAAK,CAAG,IAC1B,CAAEG,SAAS,IAAIF,GAAG,KAAKC,IAAI,CAACI,MAAQ,EACrC;UACD;QACD;QAEA,IAAKR,OAAO,EAAG;UACdA,OAAO,CAAE,CAAEK,SAAU,CAAC;QACvB;;QAEA;QACA;QACA;QACA;QAAA,KACK,IAAKJ,QAAQ,IAAIZ,OAAO,CAAEU,KAAM,CAAC,IAAIM,SAAS,EAAG;UACrDJ,QAAQ,CAAE,CAAEI,SAAU,CAAC;QACxB;QAEAT,KAAK,CAACa,cAAc,CAAC,CAAC;MACvB;IACD;IAEAf,OAAO,CAACgB,gBAAgB,CAAE,SAAS,EAAEf,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACiB,mBAAmB,CAAE,SAAS,EAAEhB,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
@@ -1,102 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRef } from '@wordpress/element';
5
- import { useRefEffect } from '@wordpress/compose';
6
- import { ENTER } from '@wordpress/keycodes';
7
- import { insert, remove } from '@wordpress/rich-text';
8
- import { getBlockTransforms, findTransform } from '@wordpress/blocks';
9
- import { useDispatch, useRegistry } from '@wordpress/data';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { store as blockEditorStore } from '../../store';
15
- import { splitValue } from './split-value';
16
- export function useEnter(props) {
17
- const registry = useRegistry();
18
- const {
19
- __unstableMarkAutomaticChange
20
- } = useDispatch(blockEditorStore);
21
- const propsRef = useRef(props);
22
- propsRef.current = props;
23
- return useRefEffect(element => {
24
- function onKeyDown(event) {
25
- if (event.target.contentEditable !== 'true') {
26
- return;
27
- }
28
- if (event.defaultPrevented) {
29
- return;
30
- }
31
- if (event.keyCode !== ENTER) {
32
- return;
33
- }
34
- const {
35
- removeEditorOnlyFormats,
36
- value,
37
- onReplace,
38
- onSplit,
39
- onChange,
40
- disableLineBreaks,
41
- onSplitAtEnd,
42
- onSplitAtDoubleLineEnd
43
- } = propsRef.current;
44
- event.preventDefault();
45
- const _value = {
46
- ...value
47
- };
48
- _value.formats = removeEditorOnlyFormats(value);
49
- const canSplit = onReplace && onSplit;
50
- if (onReplace) {
51
- const transforms = getBlockTransforms('from').filter(({
52
- type
53
- }) => type === 'enter');
54
- const transformation = findTransform(transforms, item => {
55
- return item.regExp.test(_value.text);
56
- });
57
- if (transformation) {
58
- onReplace([transformation.transform({
59
- content: _value.text
60
- })]);
61
- __unstableMarkAutomaticChange();
62
- return;
63
- }
64
- }
65
- const {
66
- text,
67
- start,
68
- end
69
- } = _value;
70
- if (event.shiftKey) {
71
- if (!disableLineBreaks) {
72
- onChange(insert(_value, '\n'));
73
- }
74
- } else if (canSplit) {
75
- splitValue({
76
- value: _value,
77
- onReplace,
78
- onSplit
79
- });
80
- } else if (onSplitAtEnd && start === end && end === text.length) {
81
- onSplitAtEnd();
82
- } else if (
83
- // For some blocks it's desirable to split at the end of the
84
- // block when there are two line breaks at the end of the
85
- // block, so triple Enter exits the block.
86
- onSplitAtDoubleLineEnd && start === end && end === text.length && text.slice(-2) === '\n\n') {
87
- registry.batch(() => {
88
- _value.start = _value.end - 2;
89
- onChange(remove(_value));
90
- onSplitAtDoubleLineEnd();
91
- });
92
- } else if (!disableLineBreaks) {
93
- onChange(insert(_value, '\n'));
94
- }
95
- }
96
- element.addEventListener('keydown', onKeyDown);
97
- return () => {
98
- element.removeEventListener('keydown', onKeyDown);
99
- };
100
- }, []);
101
- }
102
- //# sourceMappingURL=use-enter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useRef","useRefEffect","ENTER","insert","remove","getBlockTransforms","findTransform","useDispatch","useRegistry","store","blockEditorStore","splitValue","useEnter","props","registry","__unstableMarkAutomaticChange","propsRef","current","element","onKeyDown","event","target","contentEditable","defaultPrevented","keyCode","removeEditorOnlyFormats","value","onReplace","onSplit","onChange","disableLineBreaks","onSplitAtEnd","onSplitAtDoubleLineEnd","preventDefault","_value","formats","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","start","end","shiftKey","length","slice","batch","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-enter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { insert, remove } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { splitValue } from './split-value';\n\nexport function useEnter( props ) {\n\tconst registry = useRegistry();\n\tconst { __unstableMarkAutomaticChange } = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.target.contentEditable !== 'true' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\tvalue,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonChange,\n\t\t\t\tdisableLineBreaks,\n\t\t\t\tonSplitAtEnd,\n\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t} = propsRef.current;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst _value = { ...value };\n\t\t\t_value.formats = removeEditorOnlyFormats( value );\n\t\t\tconst canSplit = onReplace && onSplit;\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst transforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t\t( { type } ) => type === 'enter'\n\t\t\t\t);\n\t\t\t\tconst transformation = findTransform( transforms, ( item ) => {\n\t\t\t\t\treturn item.regExp.test( _value.text );\n\t\t\t\t} );\n\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\tonReplace( [\n\t\t\t\t\t\ttransformation.transform( {\n\t\t\t\t\t\t\tcontent: _value.text,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst { text, start, end } = _value;\n\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t\t}\n\t\t\t} else if ( canSplit ) {\n\t\t\t\tsplitValue( {\n\t\t\t\t\tvalue: _value,\n\t\t\t\t\tonReplace,\n\t\t\t\t\tonSplit,\n\t\t\t\t} );\n\t\t\t} else if ( onSplitAtEnd && start === end && end === text.length ) {\n\t\t\t\tonSplitAtEnd();\n\t\t\t} else if (\n\t\t\t\t// For some blocks it's desirable to split at the end of the\n\t\t\t\t// block when there are two line breaks at the end of the\n\t\t\t\t// block, so triple Enter exits the block.\n\t\t\t\tonSplitAtDoubleLineEnd &&\n\t\t\t\tstart === end &&\n\t\t\t\tend === text.length &&\n\t\t\t\ttext.slice( -2 ) === '\\n\\n'\n\t\t\t) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t_value.start = _value.end - 2;\n\t\t\t\t\tonChange( remove( _value ) );\n\t\t\t\t\tonSplitAtDoubleLineEnd();\n\t\t\t\t} );\n\t\t\t} else if ( ! disableLineBreaks ) {\n\t\t\t\tonChange( insert( _value, '\\n' ) );\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":"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","ignoreList":[]}
@@ -1,37 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRefEffect } from '@wordpress/compose';
5
- import { useSelect } from '@wordpress/data';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import { store as blockEditorStore } from '../../store';
11
- export function useFirefoxCompat() {
12
- const {
13
- isMultiSelecting
14
- } = useSelect(blockEditorStore);
15
- return useRefEffect(element => {
16
- function onFocus() {
17
- if (!isMultiSelecting()) {
18
- return;
19
- }
20
-
21
- // This is a little hack to work around focus issues with nested
22
- // editable elements in Firefox. For some reason the editable child
23
- // element sometimes regains focus, while it should not be focusable
24
- // and focus should remain on the editable parent element.
25
- // To do: try to find the cause of the shifting focus.
26
- const parentEditable = element.parentElement.closest('[contenteditable="true"]');
27
- if (parentEditable) {
28
- parentEditable.focus();
29
- }
30
- }
31
- element.addEventListener('focus', onFocus);
32
- return () => {
33
- element.removeEventListener('focus', onFocus);
34
- };
35
- }, []);
36
- }
37
- //# sourceMappingURL=use-firefox-compat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useRefEffect","useSelect","store","blockEditorStore","useFirefoxCompat","isMultiSelecting","element","onFocus","parentEditable","parentElement","closest","focus","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-firefox-compat.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport function useFirefoxCompat() {\n\tconst { isMultiSelecting } = useSelect( blockEditorStore );\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onFocus() {\n\t\t\tif ( ! isMultiSelecting() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This is a little hack to work around focus issues with nested\n\t\t\t// editable elements in Firefox. For some reason the editable child\n\t\t\t// element sometimes regains focus, while it should not be focusable\n\t\t\t// and focus should remain on the editable parent element.\n\t\t\t// To do: try to find the cause of the shifting focus.\n\t\t\tconst parentEditable = element.parentElement.closest(\n\t\t\t\t'[contenteditable=\"true\"]'\n\t\t\t);\n\n\t\t\tif ( parentEditable ) {\n\t\t\t\tparentEditable.focus();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'focus', onFocus );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'focus', onFocus );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,oBAAoB;AACjD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,OAAO,SAASC,gBAAgBA,CAAA,EAAG;EAClC,MAAM;IAAEC;EAAiB,CAAC,GAAGJ,SAAS,CAAEE,gBAAiB,CAAC;EAC1D,OAAOH,YAAY,CAAIM,OAAO,IAAM;IACnC,SAASC,OAAOA,CAAA,EAAG;MAClB,IAAK,CAAEF,gBAAgB,CAAC,CAAC,EAAG;QAC3B;MACD;;MAEA;MACA;MACA;MACA;MACA;MACA,MAAMG,cAAc,GAAGF,OAAO,CAACG,aAAa,CAACC,OAAO,CACnD,0BACD,CAAC;MAED,IAAKF,cAAc,EAAG;QACrBA,cAAc,CAACG,KAAK,CAAC,CAAC;MACvB;IACD;IAEAL,OAAO,CAACM,gBAAgB,CAAE,OAAO,EAAEL,OAAQ,CAAC;IAC5C,OAAO,MAAM;MACZD,OAAO,CAACO,mBAAmB,CAAE,OAAO,EAAEN,OAAQ,CAAC;IAChD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
@@ -1,18 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRefEffect } from '@wordpress/compose';
5
- export function useInputEvents(inputEvents) {
6
- return useRefEffect(element => {
7
- function onInput(event) {
8
- for (const keyboardShortcut of inputEvents.current) {
9
- keyboardShortcut(event);
10
- }
11
- }
12
- element.addEventListener('input', onInput);
13
- return () => {
14
- element.removeEventListener('input', onInput);
15
- };
16
- }, []);
17
- }
18
- //# sourceMappingURL=use-input-events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useRefEffect","useInputEvents","inputEvents","element","onInput","event","keyboardShortcut","current","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-input-events.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\n\nexport function useInputEvents( inputEvents ) {\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onInput( event ) {\n\t\t\tfor ( const keyboardShortcut of inputEvents.current ) {\n\t\t\t\tkeyboardShortcut( event );\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'input', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'input', onInput );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,oBAAoB;AAEjD,OAAO,SAASC,cAAcA,CAAEC,WAAW,EAAG;EAC7C,OAAOF,YAAY,CAAIG,OAAO,IAAM;IACnC,SAASC,OAAOA,CAAEC,KAAK,EAAG;MACzB,KAAM,MAAMC,gBAAgB,IAAIJ,WAAW,CAACK,OAAO,EAAG;QACrDD,gBAAgB,CAAED,KAAM,CAAC;MAC1B;IACD;IAEAF,OAAO,CAACK,gBAAgB,CAAE,OAAO,EAAEJ,OAAQ,CAAC;IAC5C,OAAO,MAAM;MACZD,OAAO,CAACM,mBAAmB,CAAE,OAAO,EAAEL,OAAQ,CAAC;IAChD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
@@ -1,132 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRef } from '@wordpress/element';
5
- import { useRefEffect } from '@wordpress/compose';
6
- import { insert, toHTMLString } from '@wordpress/rich-text';
7
- import { getBlockTransforms, findTransform } from '@wordpress/blocks';
8
- import { useDispatch } from '@wordpress/data';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import { store as blockEditorStore } from '../../store';
14
- import { preventEventDiscovery } from './prevent-event-discovery';
15
- import { retrieveSelectedAttribute, START_OF_SELECTED_AREA } from '../../utils/selection';
16
- function findSelection(blocks) {
17
- let i = blocks.length;
18
- while (i--) {
19
- const attributeKey = retrieveSelectedAttribute(blocks[i].attributes);
20
- if (attributeKey) {
21
- blocks[i].attributes[attributeKey] = blocks[i].attributes[attributeKey]
22
- // To do: refactor this to use rich text's selection instead, so
23
- // we no longer have to use on this hack inserting a special
24
- // character.
25
- .toString().replace(START_OF_SELECTED_AREA, '');
26
- return [blocks[i].clientId, attributeKey, 0, 0];
27
- }
28
- const nestedSelection = findSelection(blocks[i].innerBlocks);
29
- if (nestedSelection) {
30
- return nestedSelection;
31
- }
32
- }
33
- return [];
34
- }
35
- export function useInputRules(props) {
36
- const {
37
- __unstableMarkLastChangeAsPersistent,
38
- __unstableMarkAutomaticChange
39
- } = useDispatch(blockEditorStore);
40
- const propsRef = useRef(props);
41
- propsRef.current = props;
42
- return useRefEffect(element => {
43
- function inputRule() {
44
- const {
45
- getValue,
46
- onReplace,
47
- selectionChange
48
- } = propsRef.current;
49
- if (!onReplace) {
50
- return;
51
- }
52
-
53
- // We must use getValue() here because value may be update
54
- // asynchronously.
55
- const value = getValue();
56
- const {
57
- start,
58
- text
59
- } = value;
60
- const characterBefore = text.slice(start - 1, start);
61
-
62
- // The character right before the caret must be a plain space.
63
- if (characterBefore !== ' ') {
64
- return;
65
- }
66
- const trimmedTextBefore = text.slice(0, start).trim();
67
- const prefixTransforms = getBlockTransforms('from').filter(({
68
- type
69
- }) => type === 'prefix');
70
- const transformation = findTransform(prefixTransforms, ({
71
- prefix
72
- }) => {
73
- return trimmedTextBefore === prefix;
74
- });
75
- if (!transformation) {
76
- return;
77
- }
78
- const content = toHTMLString({
79
- value: insert(value, START_OF_SELECTED_AREA, 0, start)
80
- });
81
- const block = transformation.transform(content);
82
- selectionChange(...findSelection([block]));
83
- onReplace([block]);
84
- __unstableMarkAutomaticChange();
85
- return true;
86
- }
87
- function onInput(event) {
88
- const {
89
- inputType,
90
- type
91
- } = event;
92
- const {
93
- getValue,
94
- onChange,
95
- __unstableAllowPrefixTransformations,
96
- formatTypes
97
- } = propsRef.current;
98
-
99
- // Only run input rules when inserting text.
100
- if (inputType !== 'insertText' && type !== 'compositionend') {
101
- return;
102
- }
103
- if (__unstableAllowPrefixTransformations && inputRule()) {
104
- return;
105
- }
106
- const value = getValue();
107
- const transformed = formatTypes.reduce((accumlator, {
108
- __unstableInputRule
109
- }) => {
110
- if (__unstableInputRule) {
111
- accumlator = __unstableInputRule(accumlator);
112
- }
113
- return accumlator;
114
- }, preventEventDiscovery(value));
115
- if (transformed !== value) {
116
- __unstableMarkLastChangeAsPersistent();
117
- onChange({
118
- ...transformed,
119
- activeFormats: value.activeFormats
120
- });
121
- __unstableMarkAutomaticChange();
122
- }
123
- }
124
- element.addEventListener('input', onInput);
125
- element.addEventListener('compositionend', onInput);
126
- return () => {
127
- element.removeEventListener('input', onInput);
128
- element.removeEventListener('compositionend', onInput);
129
- };
130
- }, []);
131
- }
132
- //# sourceMappingURL=use-input-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useRef","useRefEffect","insert","toHTMLString","getBlockTransforms","findTransform","useDispatch","store","blockEditorStore","preventEventDiscovery","retrieveSelectedAttribute","START_OF_SELECTED_AREA","findSelection","blocks","i","length","attributeKey","attributes","toString","replace","clientId","nestedSelection","innerBlocks","useInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","propsRef","current","element","inputRule","getValue","onReplace","selectionChange","value","start","text","characterBefore","slice","trimmedTextBefore","trim","prefixTransforms","filter","type","transformation","prefix","content","block","transform","onInput","event","inputType","onChange","__unstableAllowPrefixTransformations","formatTypes","transformed","reduce","accumlator","__unstableInputRule","activeFormats","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-input-rules.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { insert, toHTMLString } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { preventEventDiscovery } from './prevent-event-discovery';\nimport {\n\tretrieveSelectedAttribute,\n\tSTART_OF_SELECTED_AREA,\n} from '../../utils/selection';\n\nfunction findSelection( blocks ) {\n\tlet i = blocks.length;\n\n\twhile ( i-- ) {\n\t\tconst attributeKey = retrieveSelectedAttribute(\n\t\t\tblocks[ i ].attributes\n\t\t);\n\n\t\tif ( attributeKey ) {\n\t\t\tblocks[ i ].attributes[ attributeKey ] = blocks[ i ].attributes[\n\t\t\t\tattributeKey\n\t\t\t]\n\t\t\t\t// To do: refactor this to use rich text's selection instead, so\n\t\t\t\t// we no longer have to use on this hack inserting a special\n\t\t\t\t// character.\n\t\t\t\t.toString()\n\t\t\t\t.replace( START_OF_SELECTED_AREA, '' );\n\t\t\treturn [ blocks[ i ].clientId, attributeKey, 0, 0 ];\n\t\t}\n\n\t\tconst nestedSelection = findSelection( blocks[ i ].innerBlocks );\n\n\t\tif ( nestedSelection ) {\n\t\t\treturn nestedSelection;\n\t\t}\n\t}\n\n\treturn [];\n}\n\nexport function useInputRules( 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 inputRule() {\n\t\t\tconst { getValue, onReplace, selectionChange } = propsRef.current;\n\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We must use getValue() here because value may be update\n\t\t\t// asynchronously.\n\t\t\tconst value = getValue();\n\t\t\tconst { start, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = toHTMLString( {\n\t\t\t\tvalue: insert( value, START_OF_SELECTED_AREA, 0, start ),\n\t\t\t} );\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tselectionChange( ...findSelection( [ block ] ) );\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\n\t\t\treturn true;\n\t\t}\n\n\t\tfunction onInput( event ) {\n\t\t\tconst { inputType, type } = event;\n\t\t\tconst {\n\t\t\t\tgetValue,\n\t\t\t\tonChange,\n\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\tformatTypes,\n\t\t\t} = propsRef.current;\n\n\t\t\t// Only run input rules when inserting text.\n\t\t\tif ( inputType !== 'insertText' && type !== 'compositionend' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( __unstableAllowPrefixTransformations && inputRule() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = getValue();\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstableInputRule } ) => {\n\t\t\t\t\tif ( __unstableInputRule ) {\n\t\t\t\t\t\taccumlator = __unstableInputRule( accumlator );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tpreventEventDiscovery( value )\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t\tonChange( {\n\t\t\t\t\t...transformed,\n\t\t\t\t\tactiveFormats: value.activeFormats,\n\t\t\t\t} );\n\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'input', onInput );\n\t\telement.addEventListener( 'compositionend', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'input', onInput );\n\t\t\telement.removeEventListener( 'compositionend', onInput );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}