@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.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 (453) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -3
  3. package/build/components/block-canvas/index.js +107 -0
  4. package/build/components/block-canvas/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-patterns-list/index.js +19 -4
  8. package/build/components/block-patterns-list/index.js.map +1 -1
  9. package/build/components/block-patterns-paging/index.js +66 -0
  10. package/build/components/block-patterns-paging/index.js.map +1 -0
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/block-settings-menu-controls/index.js +4 -7
  14. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  15. package/build/components/block-styles/index.js +1 -0
  16. package/build/components/block-styles/index.js.map +1 -1
  17. package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  18. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  19. package/build/components/block-tools/block-contextual-toolbar.js +18 -7
  20. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +5 -1
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/border-radius-control/input-controls.js +1 -1
  24. package/build/components/border-radius-control/input-controls.js.map +1 -1
  25. package/build/components/border-radius-control/linked-button.js +2 -4
  26. package/build/components/border-radius-control/linked-button.js.map +1 -1
  27. package/build/components/colors/with-colors.js.map +1 -1
  28. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  29. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  30. package/build/components/default-block-appender/index.native.js +20 -1
  31. package/build/components/default-block-appender/index.native.js.map +1 -1
  32. package/build/components/duotone/utils.js +68 -0
  33. package/build/components/duotone/utils.js.map +1 -1
  34. package/build/components/editor-styles/index.js +28 -9
  35. package/build/components/editor-styles/index.js.map +1 -1
  36. package/build/components/global-styles/hooks.js +2 -101
  37. package/build/components/global-styles/hooks.js.map +1 -1
  38. package/build/components/global-styles/image-settings-panel.js +61 -0
  39. package/build/components/global-styles/image-settings-panel.js.map +1 -0
  40. package/build/components/global-styles/index.js +11 -17
  41. package/build/components/global-styles/index.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +19 -15
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +1 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/iframe/index.js +67 -33
  47. package/build/components/iframe/index.js.map +1 -1
  48. package/build/components/image-editor/use-save-image.js +2 -5
  49. package/build/components/image-editor/use-save-image.js.map +1 -1
  50. package/build/components/image-editor/use-transform-image.js +9 -9
  51. package/build/components/image-editor/use-transform-image.js.map +1 -1
  52. package/build/components/index.js +8 -12
  53. package/build/components/index.js.map +1 -1
  54. package/build/components/index.native.js +6 -5
  55. package/build/components/index.native.js.map +1 -1
  56. package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
  57. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  58. package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
  59. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  60. package/build/components/inserter/block-patterns-explorer/patterns-list.js +57 -23
  61. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  62. package/build/components/inserter/block-patterns-explorer/sidebar.js +24 -9
  63. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  64. package/build/components/inserter/block-patterns-source-filter.js +54 -0
  65. package/build/components/inserter/block-patterns-source-filter.js.map +1 -0
  66. package/build/components/inserter/block-patterns-sync-filter.js +46 -0
  67. package/build/components/inserter/block-patterns-sync-filter.js.map +1 -0
  68. package/build/components/inserter/block-patterns-tab.js +91 -45
  69. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  70. package/build/components/inserter/hooks/use-patterns-paging.js +57 -0
  71. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  72. package/build/components/inserter/hooks/use-patterns-state.js +21 -10
  73. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  74. package/build/components/inserter/menu.js +13 -11
  75. package/build/components/inserter/menu.js.map +1 -1
  76. package/build/components/inserter/search-results.js +4 -3
  77. package/build/components/inserter/search-results.js.map +1 -1
  78. package/build/components/inserter/tabs.js +1 -12
  79. package/build/components/inserter/tabs.js.map +1 -1
  80. package/build/components/inspector-controls/block-support-slot-container.js +12 -1
  81. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  82. package/build/components/inspector-controls/fill.js +24 -13
  83. package/build/components/inspector-controls/fill.js.map +1 -1
  84. package/build/components/inspector-controls/groups.js +5 -3
  85. package/build/components/inspector-controls/groups.js.map +1 -1
  86. package/build/components/inspector-controls/slot.js +13 -0
  87. package/build/components/inspector-controls/slot.js.map +1 -1
  88. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  89. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  90. package/build/components/link-control/index.js +12 -2
  91. package/build/components/link-control/index.js.map +1 -1
  92. package/build/components/list-view/block-select-button.js +1 -3
  93. package/build/components/list-view/block-select-button.js.map +1 -1
  94. package/build/components/list-view/block.js +13 -1
  95. package/build/components/list-view/block.js.map +1 -1
  96. package/build/components/list-view/use-block-selection.js +29 -24
  97. package/build/components/list-view/use-block-selection.js.map +1 -1
  98. package/build/components/media-placeholder/index.js +2 -2
  99. package/build/components/media-placeholder/index.js.map +1 -1
  100. package/build/components/media-placeholder/index.native.js +11 -11
  101. package/build/components/media-placeholder/index.native.js.map +1 -1
  102. package/build/components/media-replace-flow/index.js +2 -3
  103. package/build/components/media-replace-flow/index.js.map +1 -1
  104. package/build/components/media-upload/constants.js +30 -0
  105. package/build/components/media-upload/constants.js.map +1 -0
  106. package/build/components/media-upload/index.native.js +63 -53
  107. package/build/components/media-upload/index.native.js.map +1 -1
  108. package/build/components/preview-options/index.js +1 -1
  109. package/build/components/preview-options/index.js.map +1 -1
  110. package/build/components/rich-text/index.js +34 -35
  111. package/build/components/rich-text/index.js.map +1 -1
  112. package/build/components/rich-text/index.native.js +14 -32
  113. package/build/components/rich-text/index.native.js.map +1 -1
  114. package/build/components/rich-text/multiline.js +95 -0
  115. package/build/components/rich-text/multiline.js.map +1 -0
  116. package/build/components/rich-text/split-value.js +10 -16
  117. package/build/components/rich-text/split-value.js.map +1 -1
  118. package/build/components/rich-text/use-enter.js +31 -40
  119. package/build/components/rich-text/use-enter.js.map +1 -1
  120. package/build/components/rich-text/use-paste-handler.js +18 -33
  121. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  122. package/build/components/spacing-sizes-control/utils.js +1 -1
  123. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  124. package/build/components/use-block-commands/index.js +30 -18
  125. package/build/components/use-block-commands/index.js.map +1 -1
  126. package/build/components/use-block-display-information/index.js +5 -2
  127. package/build/components/use-block-display-information/index.js.map +1 -1
  128. package/build/hooks/background.js +258 -0
  129. package/build/hooks/background.js.map +1 -0
  130. package/build/hooks/block-hooks.js +188 -0
  131. package/build/hooks/block-hooks.js.map +1 -0
  132. package/build/hooks/block-rename-ui.js +160 -0
  133. package/build/hooks/block-rename-ui.js.map +1 -0
  134. package/build/hooks/duotone.js +29 -42
  135. package/build/hooks/duotone.js.map +1 -1
  136. package/build/hooks/index.js +2 -2
  137. package/build/hooks/index.js.map +1 -1
  138. package/build/hooks/layout.js +31 -14
  139. package/build/hooks/layout.js.map +1 -1
  140. package/build/hooks/position.js +4 -2
  141. package/build/hooks/position.js.map +1 -1
  142. package/build/hooks/style.js +10 -3
  143. package/build/hooks/style.js.map +1 -1
  144. package/build/private-apis.js +2 -0
  145. package/build/private-apis.js.map +1 -1
  146. package/build/store/actions.js +33 -10
  147. package/build/store/actions.js.map +1 -1
  148. package/build/store/private-actions.js +42 -8
  149. package/build/store/private-actions.js.map +1 -1
  150. package/build/store/private-selectors.js +23 -0
  151. package/build/store/private-selectors.js.map +1 -1
  152. package/build/store/reducer.js +43 -1
  153. package/build/store/reducer.js.map +1 -1
  154. package/build/store/selectors.js +84 -23
  155. package/build/store/selectors.js.map +1 -1
  156. package/build/store/utils.js +0 -4
  157. package/build/store/utils.js.map +1 -1
  158. package/build-module/components/block-canvas/index.js +97 -0
  159. package/build-module/components/block-canvas/index.js.map +1 -0
  160. package/build-module/components/block-inspector/index.js +4 -1
  161. package/build-module/components/block-inspector/index.js.map +1 -1
  162. package/build-module/components/block-patterns-list/index.js +20 -5
  163. package/build-module/components/block-patterns-list/index.js.map +1 -1
  164. package/build-module/components/block-patterns-paging/index.js +59 -0
  165. package/build-module/components/block-patterns-paging/index.js.map +1 -0
  166. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
  167. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  168. package/build-module/components/block-settings-menu-controls/index.js +4 -7
  169. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  170. package/build-module/components/block-styles/index.js +1 -0
  171. package/build-module/components/block-styles/index.js.map +1 -1
  172. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  173. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  174. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
  175. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  176. package/build-module/components/block-tools/block-selection-button.js +5 -1
  177. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  178. package/build-module/components/border-radius-control/input-controls.js +1 -1
  179. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  180. package/build-module/components/border-radius-control/linked-button.js +2 -4
  181. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  182. package/build-module/components/colors/with-colors.js.map +1 -1
  183. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  184. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  185. package/build-module/components/default-block-appender/index.native.js +20 -1
  186. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  187. package/build-module/components/duotone/utils.js +65 -0
  188. package/build-module/components/duotone/utils.js.map +1 -1
  189. package/build-module/components/editor-styles/index.js +28 -9
  190. package/build-module/components/editor-styles/index.js.map +1 -1
  191. package/build-module/components/global-styles/hooks.js +3 -100
  192. package/build-module/components/global-styles/hooks.js.map +1 -1
  193. package/build-module/components/global-styles/image-settings-panel.js +53 -0
  194. package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
  195. package/build-module/components/global-styles/index.js +2 -2
  196. package/build-module/components/global-styles/index.js.map +1 -1
  197. package/build-module/components/global-styles/use-global-styles-output.js +18 -16
  198. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  199. package/build-module/components/global-styles/utils.js +1 -1
  200. package/build-module/components/global-styles/utils.js.map +1 -1
  201. package/build-module/components/iframe/index.js +66 -33
  202. package/build-module/components/iframe/index.js.map +1 -1
  203. package/build-module/components/image-editor/use-save-image.js +2 -5
  204. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  205. package/build-module/components/image-editor/use-transform-image.js +9 -9
  206. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  207. package/build-module/components/index.js +1 -1
  208. package/build-module/components/index.js.map +1 -1
  209. package/build-module/components/index.native.js +2 -1
  210. package/build-module/components/index.native.js.map +1 -1
  211. package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
  212. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  213. package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
  214. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +59 -25
  216. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  217. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +23 -9
  218. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  219. package/build-module/components/inserter/block-patterns-source-filter.js +44 -0
  220. package/build-module/components/inserter/block-patterns-source-filter.js.map +1 -0
  221. package/build-module/components/inserter/block-patterns-sync-filter.js +38 -0
  222. package/build-module/components/inserter/block-patterns-sync-filter.js.map +1 -0
  223. package/build-module/components/inserter/block-patterns-tab.js +87 -46
  224. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  225. package/build-module/components/inserter/hooks/use-patterns-paging.js +50 -0
  226. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  227. package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
  228. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  229. package/build-module/components/inserter/menu.js +13 -11
  230. package/build-module/components/inserter/menu.js.map +1 -1
  231. package/build-module/components/inserter/search-results.js +4 -3
  232. package/build-module/components/inserter/search-results.js.map +1 -1
  233. package/build-module/components/inserter/tabs.js +1 -12
  234. package/build-module/components/inserter/tabs.js.map +1 -1
  235. package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
  236. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  237. package/build-module/components/inspector-controls/fill.js +25 -14
  238. package/build-module/components/inspector-controls/fill.js.map +1 -1
  239. package/build-module/components/inspector-controls/groups.js +5 -3
  240. package/build-module/components/inspector-controls/groups.js.map +1 -1
  241. package/build-module/components/inspector-controls/slot.js +15 -1
  242. package/build-module/components/inspector-controls/slot.js.map +1 -1
  243. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  244. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  245. package/build-module/components/link-control/index.js +12 -2
  246. package/build-module/components/link-control/index.js.map +1 -1
  247. package/build-module/components/list-view/block-select-button.js +1 -3
  248. package/build-module/components/list-view/block-select-button.js.map +1 -1
  249. package/build-module/components/list-view/block.js +13 -1
  250. package/build-module/components/list-view/block.js.map +1 -1
  251. package/build-module/components/list-view/use-block-selection.js +30 -25
  252. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  253. package/build-module/components/media-placeholder/index.js +2 -2
  254. package/build-module/components/media-placeholder/index.js.map +1 -1
  255. package/build-module/components/media-placeholder/index.native.js +7 -7
  256. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  257. package/build-module/components/media-replace-flow/index.js +2 -3
  258. package/build-module/components/media-replace-flow/index.js.map +1 -1
  259. package/build-module/components/media-upload/constants.js +14 -0
  260. package/build-module/components/media-upload/constants.js.map +1 -0
  261. package/build-module/components/media-upload/index.native.js +53 -34
  262. package/build-module/components/media-upload/index.native.js.map +1 -1
  263. package/build-module/components/preview-options/index.js +1 -1
  264. package/build-module/components/preview-options/index.js.map +1 -1
  265. package/build-module/components/rich-text/index.js +35 -37
  266. package/build-module/components/rich-text/index.js.map +1 -1
  267. package/build-module/components/rich-text/index.native.js +15 -33
  268. package/build-module/components/rich-text/index.native.js.map +1 -1
  269. package/build-module/components/rich-text/multiline.js +87 -0
  270. package/build-module/components/rich-text/multiline.js.map +1 -0
  271. package/build-module/components/rich-text/split-value.js +10 -16
  272. package/build-module/components/rich-text/split-value.js.map +1 -1
  273. package/build-module/components/rich-text/use-enter.js +33 -42
  274. package/build-module/components/rich-text/use-enter.js.map +1 -1
  275. package/build-module/components/rich-text/use-paste-handler.js +19 -34
  276. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  277. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  278. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  279. package/build-module/components/use-block-commands/index.js +28 -16
  280. package/build-module/components/use-block-commands/index.js.map +1 -1
  281. package/build-module/components/use-block-display-information/index.js +5 -2
  282. package/build-module/components/use-block-display-information/index.js.map +1 -1
  283. package/build-module/hooks/background.js +244 -0
  284. package/build-module/hooks/background.js.map +1 -0
  285. package/build-module/hooks/block-hooks.js +181 -0
  286. package/build-module/hooks/block-hooks.js.map +1 -0
  287. package/build-module/hooks/block-rename-ui.js +153 -0
  288. package/build-module/hooks/block-rename-ui.js.map +1 -0
  289. package/build-module/hooks/duotone.js +26 -39
  290. package/build-module/hooks/duotone.js.map +1 -1
  291. package/build-module/hooks/index.js +2 -2
  292. package/build-module/hooks/index.js.map +1 -1
  293. package/build-module/hooks/layout.js +33 -16
  294. package/build-module/hooks/layout.js.map +1 -1
  295. package/build-module/hooks/position.js +4 -2
  296. package/build-module/hooks/position.js.map +1 -1
  297. package/build-module/hooks/style.js +10 -3
  298. package/build-module/hooks/style.js.map +1 -1
  299. package/build-module/private-apis.js +2 -0
  300. package/build-module/private-apis.js.map +1 -1
  301. package/build-module/store/actions.js +33 -10
  302. package/build-module/store/actions.js.map +1 -1
  303. package/build-module/store/private-actions.js +39 -8
  304. package/build-module/store/private-actions.js.map +1 -1
  305. package/build-module/store/private-selectors.js +21 -0
  306. package/build-module/store/private-selectors.js.map +1 -1
  307. package/build-module/store/reducer.js +41 -1
  308. package/build-module/store/reducer.js.map +1 -1
  309. package/build-module/store/selectors.js +78 -22
  310. package/build-module/store/selectors.js.map +1 -1
  311. package/build-module/store/utils.js +0 -4
  312. package/build-module/store/utils.js.map +1 -1
  313. package/build-style/content-rtl.css +0 -1
  314. package/build-style/content.css +0 -1
  315. package/build-style/style-rtl.css +170 -127
  316. package/build-style/style.css +170 -127
  317. package/package.json +32 -32
  318. package/src/components/block-canvas/index.js +108 -0
  319. package/src/components/block-inspector/index.js +5 -1
  320. package/src/components/block-list/content.scss +0 -1
  321. package/src/components/block-patterns-list/index.js +32 -7
  322. package/src/components/block-patterns-list/style.scss +26 -9
  323. package/src/components/block-patterns-paging/index.js +92 -0
  324. package/src/components/block-patterns-paging/style.scss +42 -0
  325. package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
  326. package/src/components/block-settings-menu-controls/index.js +4 -9
  327. package/src/components/block-styles/index.js +1 -0
  328. package/src/components/block-styles/style.scss +3 -3
  329. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
  330. package/src/components/block-tools/block-contextual-toolbar.js +16 -5
  331. package/src/components/block-tools/block-selection-button.js +9 -1
  332. package/src/components/block-tools/style.scss +0 -98
  333. package/src/components/border-radius-control/input-controls.js +1 -1
  334. package/src/components/border-radius-control/linked-button.js +8 -11
  335. package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
  336. package/src/components/colors/with-colors.js +3 -2
  337. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
  338. package/src/components/default-block-appender/index.native.js +26 -3
  339. package/src/components/duotone/utils.js +65 -0
  340. package/src/components/editor-styles/index.js +32 -23
  341. package/src/components/global-styles/hooks.js +4 -112
  342. package/src/components/global-styles/image-settings-panel.js +71 -0
  343. package/src/components/global-styles/index.js +4 -3
  344. package/src/components/global-styles/use-global-styles-output.js +25 -16
  345. package/src/components/global-styles/utils.js +1 -2
  346. package/src/components/iframe/index.js +72 -33
  347. package/src/components/image-editor/use-save-image.js +2 -9
  348. package/src/components/image-editor/use-transform-image.js +9 -9
  349. package/src/components/index.js +1 -1
  350. package/src/components/index.native.js +2 -2
  351. package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
  352. package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
  353. package/src/components/inserter/block-patterns-explorer/patterns-list.js +109 -40
  354. package/src/components/inserter/block-patterns-explorer/sidebar.js +23 -8
  355. package/src/components/inserter/block-patterns-source-filter.js +40 -0
  356. package/src/components/inserter/block-patterns-sync-filter.js +35 -0
  357. package/src/components/inserter/block-patterns-tab.js +168 -57
  358. package/src/components/inserter/hooks/use-patterns-paging.js +65 -0
  359. package/src/components/inserter/hooks/use-patterns-state.js +27 -16
  360. package/src/components/inserter/menu.js +15 -17
  361. package/src/components/inserter/search-results.js +6 -4
  362. package/src/components/inserter/style.scss +23 -2
  363. package/src/components/inserter/tabs.js +2 -12
  364. package/src/components/inserter/test/index.native.js +8 -12
  365. package/src/components/inspector-controls/block-support-slot-container.js +19 -3
  366. package/src/components/inspector-controls/fill.js +28 -14
  367. package/src/components/inspector-controls/groups.js +6 -2
  368. package/src/components/inspector-controls/slot.js +28 -3
  369. package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
  370. package/src/components/link-control/index.js +13 -0
  371. package/src/components/link-control/style.scss +23 -2
  372. package/src/components/link-control/test/index.js +88 -6
  373. package/src/components/list-view/block-select-button.js +1 -3
  374. package/src/components/list-view/block.js +19 -1
  375. package/src/components/list-view/style.scss +1 -2
  376. package/src/components/list-view/use-block-selection.js +38 -32
  377. package/src/components/media-placeholder/README.md +2 -2
  378. package/src/components/media-placeholder/index.js +2 -2
  379. package/src/components/media-placeholder/index.native.js +11 -12
  380. package/src/components/media-replace-flow/index.js +2 -2
  381. package/src/components/media-replace-flow/test/index.js +5 -23
  382. package/src/components/media-upload/README.md +3 -2
  383. package/src/components/media-upload/constants.js +15 -0
  384. package/src/components/media-upload/index.native.js +66 -40
  385. package/src/components/media-upload/style.native.scss +4 -0
  386. package/src/components/media-upload/test/index.native.js +2 -2
  387. package/src/components/preview-options/README.md +7 -0
  388. package/src/components/preview-options/index.js +1 -1
  389. package/src/components/rich-text/index.js +48 -44
  390. package/src/components/rich-text/index.native.js +14 -42
  391. package/src/components/rich-text/multiline.js +121 -0
  392. package/src/components/rich-text/split-value.js +10 -35
  393. package/src/components/rich-text/use-enter.js +32 -42
  394. package/src/components/rich-text/use-paste-handler.js +16 -40
  395. package/src/components/spacing-sizes-control/style.scss +5 -7
  396. package/src/components/spacing-sizes-control/utils.js +1 -2
  397. package/src/components/use-block-commands/index.js +28 -20
  398. package/src/components/use-block-display-information/index.js +3 -0
  399. package/src/hooks/background.js +288 -0
  400. package/src/hooks/background.scss +57 -0
  401. package/src/hooks/block-hooks.js +257 -0
  402. package/src/hooks/block-hooks.scss +16 -0
  403. package/src/hooks/block-rename-ui.js +230 -0
  404. package/src/hooks/block-rename-ui.scss +3 -0
  405. package/src/hooks/duotone.js +42 -43
  406. package/src/hooks/index.js +2 -2
  407. package/src/hooks/layout.js +31 -33
  408. package/src/hooks/position.js +4 -3
  409. package/src/hooks/style.js +11 -2
  410. package/src/hooks/test/align.native.js +4 -3
  411. package/src/private-apis.js +2 -0
  412. package/src/store/actions.js +52 -10
  413. package/src/store/private-actions.js +37 -6
  414. package/src/store/private-selectors.js +21 -0
  415. package/src/store/reducer.js +38 -0
  416. package/src/store/selectors.js +107 -26
  417. package/src/store/test/actions.js +19 -8
  418. package/src/store/test/private-actions.js +17 -0
  419. package/src/store/test/reducer.js +25 -0
  420. package/src/store/test/selectors.js +130 -123
  421. package/src/store/utils.js +3 -10
  422. package/src/style.scss +4 -0
  423. package/build/components/duotone/components.js +0 -135
  424. package/build/components/duotone/components.js.map +0 -1
  425. package/build/components/duotone/index.js +0 -38
  426. package/build/components/duotone/index.js.map +0 -1
  427. package/build/components/global-styles/behaviors-panel.js +0 -64
  428. package/build/components/global-styles/behaviors-panel.js.map +0 -1
  429. package/build/components/inserter/reusable-blocks-tab.js +0 -85
  430. package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
  431. package/build/hooks/auto-inserting-blocks.js +0 -174
  432. package/build/hooks/auto-inserting-blocks.js.map +0 -1
  433. package/build/hooks/behaviors.js +0 -173
  434. package/build/hooks/behaviors.js.map +0 -1
  435. package/build-module/components/duotone/components.js +0 -126
  436. package/build-module/components/duotone/components.js.map +0 -1
  437. package/build-module/components/duotone/index.js +0 -3
  438. package/build-module/components/duotone/index.js.map +0 -1
  439. package/build-module/components/global-styles/behaviors-panel.js +0 -57
  440. package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
  441. package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
  442. package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
  443. package/build-module/hooks/auto-inserting-blocks.js +0 -167
  444. package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
  445. package/build-module/hooks/behaviors.js +0 -166
  446. package/build-module/hooks/behaviors.js.map +0 -1
  447. package/src/components/duotone/components.js +0 -133
  448. package/src/components/duotone/index.js +0 -7
  449. package/src/components/global-styles/behaviors-panel.js +0 -71
  450. package/src/components/inserter/reusable-blocks-tab.js +0 -84
  451. package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
  452. package/src/hooks/auto-inserting-blocks.js +0 -232
  453. package/src/hooks/behaviors.js +0 -206
@@ -295,32 +295,20 @@ function RichTextWrapper({
295
295
  if (onCustomEnter) {
296
296
  onCustomEnter();
297
297
  }
298
- if (multiline) {
299
- if (shiftKey) {
300
- if (!disableLineBreaks) {
301
- onChange((0, _richText.insert)(value, '\n'));
302
- }
303
- } else if (canSplit && (0, _richText.__unstableIsEmptyLine)(value)) {
304
- splitValue(value);
305
- } else {
306
- onChange((0, _richText.__unstableInsertLineSeparator)(value));
307
- }
308
- } else {
309
- const {
310
- text,
311
- start: splitStart,
312
- end: splitEnd
313
- } = value;
314
- const canSplitAtEnd = onSplitAtEnd && splitStart === splitEnd && splitEnd === text.length;
315
- if (shiftKey || !canSplit && !canSplitAtEnd) {
316
- if (!disableLineBreaks) {
317
- onChange((0, _richText.insert)(value, '\n'));
318
- }
319
- } else if (!canSplit && canSplitAtEnd) {
320
- onSplitAtEnd();
321
- } else if (canSplit) {
322
- splitValue(value);
298
+ const {
299
+ text,
300
+ start: splitStart,
301
+ end: splitEnd
302
+ } = value;
303
+ const canSplitAtEnd = onSplitAtEnd && splitStart === splitEnd && splitEnd === text.length;
304
+ if (shiftKey || !canSplit && !canSplitAtEnd) {
305
+ if (!disableLineBreaks) {
306
+ onChange((0, _richText.insert)(value, '\n'));
323
307
  }
308
+ } else if (!canSplit && canSplitAtEnd) {
309
+ onSplitAtEnd();
310
+ } else if (canSplit) {
311
+ splitValue(value);
324
312
  }
325
313
  },
326
314
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -400,16 +388,10 @@ function RichTextWrapper({
400
388
  preserveWhiteSpace
401
389
  });
402
390
  if (typeof content === 'string') {
403
- let valueToInsert = (0, _richText.create)({
391
+ const valueToInsert = (0, _richText.create)({
404
392
  html: content
405
393
  });
406
394
  (0, _utils.addActiveFormats)(valueToInsert, activeFormats);
407
-
408
- // If the content should be multiline, we should process text
409
- // separated by a line break as separate lines.
410
- if (multilineTag) {
411
- valueToInsert = (0, _richText.replace)(valueToInsert, /\n+/g, _richText.__UNSTABLE_LINE_SEPARATOR);
412
- }
413
395
  onChange((0, _richText.insert)(value, valueToInsert));
414
396
  } else if (content.length > 0) {
415
397
  // When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_data","_blocks","_compose","_richText","_url","_autocomplete","_blockEdit","_removeBrowserShortcuts","_filePasteHandler","_formatToolbarContainer","_store","_utils","_embedHandlerPicker","_content","_shortcut","_toolbarButton","_inputEvent","classes","RichTextWrapper","children","tagName","start","reversed","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","__unstableMultilineRootTag","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","disableSuggestions","disableAutocorrection","containerWidth","onEnter","onCustomEnter","props","forwardedRef","instanceId","useInstanceId","fallbackRef","useRef","clientId","blockIsSelected","useBlockEditContext","embedHandlerPickerRef","selector","select","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","blockEditorStore","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","Platform","OS","block","shouldBlurOnUnmount","isUnmodifiedDefaultBlock","offset","disabled","useSelect","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","useDispatch","multilineTag","getMultilineTag","adjustedAllowedFormats","getAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","__unstableCreateElement","document","childNodes","onSelectionChange","useCallback","selectionChangeStart","selectionChangeEnd","onDelete","isReverse","isEmpty","splitValue","record","pastedBlocks","blocks","before","after","split","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","toHTMLString","indexToSelect","initialPosition","shiftKey","canSplit","transforms","getBlockTransforms","filter","type","transformation","findTransform","item","regExp","test","text","transform","content","insert","isEmptyLine","insertLineSeparator","splitStart","end","splitEnd","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","create","multilineWrapperTags","addActiveFormats","pasteHandler","HTML","filePasteHandler","mode","window","console","log","isShortcode","isPastedURL","isURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","createLinkInParagraph","valueToInsert","replace","LINE_SEPARATOR","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","slice","trimmedTextBefore","prefixTransforms","prefix","mergedRef","useMergeRefs","createElement","__experimentalRichText","ref","__unstableIsSelected","__unstableInputRule","__unstableMultilineTag","__unstableOnEnterFormattedText","__unstableOnExitFormattedText","__unstableOnCreateUndoLevel","__unstableDidAutomaticChange","__unstableUndo","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","Fragment","default","inline","anchorRef","RemoveBrowserShortcuts","completers","contentRef","listBoxId","activeId","onKeyDown","className","classnames","event","ForwardedRichTextContainer","forwardRef","Content","defaultProps","format","_default","exports"],"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Platform, useRef, useCallback, forwardRef } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\t__unstableIsEmptyLine as isEmptyLine,\n\tinsert,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n\tcreate,\n\treplace,\n\tsplit,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n\tcreateLinkInParagraph,\n} from './utils';\nimport EmbedHandlerPicker from './embed-handler-picker';\nimport { Content } from './content';\n\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\tstart,\n\t\treversed,\n\t\tvalue: originalValue,\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t__unstableMultilineRootTag,\n\t\t// Native props.\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\tcontainerWidth,\n\t\tonEnter: onCustomEnter,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\n\tconst fallbackRef = useRef();\n\tconst { clientId, isSelected: blockIsSelected } = useBlockEditContext();\n\tconst embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( selectionChangeStart, selectionChangeEnd ) => {\n\t\t\tselectionChange(\n\t\t\t\tclientId,\n\t\t\t\tidentifier,\n\t\t\t\tselectionChangeStart,\n\t\t\t\tselectionChangeEnd\n\t\t\t);\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst onDelete = useCallback(\n\t\t( { value, isReverse } ) => {\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\t\t},\n\t\t[ onMerge, onRemove ]\n\t);\n\n\t/**\n\t * Signals to the RichText owner that the block can be replaced with two\n\t * blocks as a result of splitting the block by pressing enter, or with\n\t * blocks as a result of splitting the block by pasting block content in the\n\t * instance.\n\t *\n\t * @param {Object} record The rich text value to split.\n\t * @param {Array} pastedBlocks The pasted blocks to insert, if any.\n\t */\n\tconst splitValue = useCallback(\n\t\t( record, pastedBlocks = [] ) => {\n\t\t\tif ( ! onReplace || ! onSplit ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blocks = [];\n\t\t\tconst [ before, after ] = split( record );\n\t\t\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\t\t\tlet lastPastedBlockIndex = -1;\n\n\t\t\t// Consider the after value to be the original it is not empty and\n\t\t\t// the before value *is* empty.\n\t\t\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t\t\t// Create a block with the content before the caret if there's no pasted\n\t\t\t// blocks, or if there are pasted blocks and the value is not empty.\n\t\t\t// We do not want a leading empty block on paste, but we do if split\n\t\t\t// with e.g. the enter key.\n\t\t\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: before,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t! isAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tlastPastedBlockIndex += 1;\n\t\t\t}\n\n\t\t\tif ( hasPastedBlocks ) {\n\t\t\t\tblocks.push( ...pastedBlocks );\n\t\t\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t\t\t} else if ( onSplitMiddle ) {\n\t\t\t\tblocks.push( onSplitMiddle() );\n\t\t\t}\n\n\t\t\t// If there's pasted blocks, append a block with non empty content\n\t\t\t// after the caret. Otherwise, do append an empty block if there\n\t\t\t// is no `onSplitMiddle` prop, but if there is and the content is\n\t\t\t// empty, the middle block is enough to set focus in.\n\t\t\tif (\n\t\t\t\thasPastedBlocks\n\t\t\t\t\t? ! isEmpty( after )\n\t\t\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t\t\t) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: after,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tisAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If there are pasted blocks, set the selection to the last one.\n\t\t\t// Otherwise, set the selection to the second block.\n\t\t\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t\t\t// If there are pasted blocks, move the caret to the end of the selected block\n\t\t\t// Otherwise, retain the default value.\n\t\t\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\t\t\tonReplace( blocks, indexToSelect, initialPosition );\n\t\t},\n\t\t[ onReplace, onSplit, multilineTag, onSplitMiddle ]\n\t);\n\n\tconst onEnter = useCallback(\n\t\t( { value, onChange, shiftKey } ) => {\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( { content: value.text } ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( onCustomEnter ) {\n\t\t\t\tonCustomEnter();\n\t\t\t}\n\n\t\t\tif ( multiline ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( canSplit && isEmptyLine( value ) ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t} else {\n\t\t\t\t\tonChange( insertLineSeparator( value ) );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst { text, start: splitStart, end: splitEnd } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd &&\n\t\t\t\t\tsplitStart === splitEnd &&\n\t\t\t\t\tsplitEnd === text.length;\n\n\t\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\t\tonSplitAtEnd();\n\t\t\t\t} else if ( canSplit ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\t__unstableMarkAutomaticChange,\n\t\t\tmultiline,\n\t\t\tsplitValue,\n\t\t\tonSplitAtEnd,\n\t\t]\n\t);\n\n\tconst onPaste = useCallback(\n\t\t( {\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\thtml,\n\t\t\tplainText,\n\t\t\tisInternal,\n\t\t\tfiles,\n\t\t\tactiveFormats,\n\t\t} ) => {\n\t\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t\t// without filtering the data. The filters are only meant for externally\n\t\t\t// pasted content and remove inline styles.\n\t\t\tif ( isInternal ) {\n\t\t\t\tconst pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tmultilineTag === 'li' ? [ 'ul', 'ol' ] : undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\taddActiveFormats( pastedValue, activeFormats );\n\t\t\t\tonChange( insert( value, pastedValue ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( pastePlainText ) {\n\t\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only process file if no HTML is present.\n\t\t\t// Note: a pasted file may have the URL as plain text.\n\t\t\tif ( files && files.length && ! html ) {\n\t\t\t\tconst content = pasteHandler( {\n\t\t\t\t\tHTML: filePasteHandler( files ),\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\ttagName,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\n\t\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\twindow.console.log( 'Received items:\\n\\n', files );\n\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet mode = onReplace && onSplit ? 'AUTO' : 'INLINE';\n\n\t\t\t// Force the blocks mode when the user is pasting\n\t\t\t// on a new line & the content resembles a shortcode.\n\t\t\t// Otherwise it's going to be detected as inline\n\t\t\t// and the shortcode won't be replaced.\n\t\t\tif (\n\t\t\t\tmode === 'AUTO' &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisShortcode( plainText )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst isPastedURL = isURL( plainText.trim() );\n\t\t\tconst presentEmbedHandlerPicker = () =>\n\t\t\t\tembedHandlerPickerRef.current?.presentPicker( {\n\t\t\t\t\tcreateEmbed: () =>\n\t\t\t\t\t\tonReplace( content, content.length - 1, -1 ),\n\t\t\t\t\tcreateLink: () =>\n\t\t\t\t\t\tcreateLinkInParagraph( plainText.trim(), onReplace ),\n\t\t\t\t} );\n\n\t\t\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisPastedURL\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst content = pasteHandler( {\n\t\t\t\tHTML: html,\n\t\t\t\tplainText,\n\t\t\t\tmode,\n\t\t\t\ttagName,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t} );\n\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tlet valueToInsert = create( { html: content } );\n\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\n\n\t\t\t\t// If the content should be multiline, we should process text\n\t\t\t\t// separated by a line break as separate lines.\n\t\t\t\tif ( multilineTag ) {\n\t\t\t\t\tvalueToInsert = replace(\n\t\t\t\t\t\tvalueToInsert,\n\t\t\t\t\t\t/\\n+/g,\n\t\t\t\t\t\tLINE_SEPARATOR\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else if ( content.length > 0 ) {\n\t\t\t\t// When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL\n\t\t\t\t// into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.\n\t\t\t\tconst canPasteEmbed =\n\t\t\t\t\tisPastedURL &&\n\t\t\t\t\tcontent.length === 1 &&\n\t\t\t\t\tcontent[ 0 ].name === 'core/embed';\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( __unstableEmbedURLOnPaste ) {\n\t\t\t\t\t\t\tpresentEmbedHandlerPicker();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\tsplitValue,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tmultilineTag,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t]\n\t);\n\n\tconst inputRule = useCallback(\n\t\t( value, valueToFormat ) => {\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start: startPosition, text } = value;\n\t\t\tconst characterBefore = text.slice(\n\t\t\t\tstartPosition - 1,\n\t\t\t\tstartPosition\n\t\t\t);\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, startPosition ).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 = valueToFormat(\n\t\t\t\tslice( value, startPosition, text.length )\n\t\t\t);\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t},\n\t\t[ onReplace, __unstableMarkAutomaticChange ]\n\t);\n\n\tconst mergedRef = useMergeRefs( [ forwardedRef, fallbackRef ] );\n\n\treturn (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tstart={ start }\n\t\t\treversed={ reversed }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\tdisableSuggestions={ disableSuggestions }\n\t\t\tdisableAutocorrection={ disableAutocorrection }\n\t\t\tcontainerWidth={ containerWidth }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t\t<EmbedHandlerPicker ref={ embedHandlerPickerRef } />\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = Content;\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_data","_blocks","_compose","_richText","_url","_autocomplete","_blockEdit","_removeBrowserShortcuts","_filePasteHandler","_formatToolbarContainer","_store","_utils","_embedHandlerPicker","_content","_shortcut","_toolbarButton","_inputEvent","classes","RichTextWrapper","children","tagName","start","reversed","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","__unstableMultilineRootTag","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","disableSuggestions","disableAutocorrection","containerWidth","onEnter","onCustomEnter","props","forwardedRef","instanceId","useInstanceId","fallbackRef","useRef","clientId","blockIsSelected","useBlockEditContext","embedHandlerPickerRef","selector","select","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","blockEditorStore","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","Platform","OS","block","shouldBlurOnUnmount","isUnmodifiedDefaultBlock","offset","disabled","useSelect","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","useDispatch","multilineTag","getMultilineTag","adjustedAllowedFormats","getAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","__unstableCreateElement","document","childNodes","onSelectionChange","useCallback","selectionChangeStart","selectionChangeEnd","onDelete","isReverse","isEmpty","splitValue","record","pastedBlocks","blocks","before","after","split","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","toHTMLString","indexToSelect","initialPosition","shiftKey","canSplit","transforms","getBlockTransforms","filter","type","transformation","findTransform","item","regExp","test","text","transform","content","splitStart","end","splitEnd","canSplitAtEnd","insert","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","create","multilineWrapperTags","addActiveFormats","pasteHandler","HTML","filePasteHandler","mode","window","console","log","isShortcode","isPastedURL","isURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","createLinkInParagraph","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","slice","trimmedTextBefore","prefixTransforms","prefix","mergedRef","useMergeRefs","createElement","__experimentalRichText","ref","__unstableIsSelected","__unstableInputRule","__unstableMultilineTag","__unstableOnEnterFormattedText","__unstableOnExitFormattedText","__unstableOnCreateUndoLevel","__unstableDidAutomaticChange","__unstableUndo","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","Fragment","default","inline","anchorRef","RemoveBrowserShortcuts","completers","contentRef","listBoxId","activeId","onKeyDown","className","classnames","event","ForwardedRichTextContainer","forwardRef","Content","defaultProps","format","_default","exports"],"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Platform, useRef, useCallback, forwardRef } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tinsert,\n\tcreate,\n\tsplit,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n\tcreateLinkInParagraph,\n} from './utils';\nimport EmbedHandlerPicker from './embed-handler-picker';\nimport { Content } from './content';\n\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\tstart,\n\t\treversed,\n\t\tvalue: originalValue,\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t__unstableMultilineRootTag,\n\t\t// Native props.\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\tcontainerWidth,\n\t\tonEnter: onCustomEnter,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\n\tconst fallbackRef = useRef();\n\tconst { clientId, isSelected: blockIsSelected } = useBlockEditContext();\n\tconst embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( selectionChangeStart, selectionChangeEnd ) => {\n\t\t\tselectionChange(\n\t\t\t\tclientId,\n\t\t\t\tidentifier,\n\t\t\t\tselectionChangeStart,\n\t\t\t\tselectionChangeEnd\n\t\t\t);\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst onDelete = useCallback(\n\t\t( { value, isReverse } ) => {\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\t\t},\n\t\t[ onMerge, onRemove ]\n\t);\n\n\t/**\n\t * Signals to the RichText owner that the block can be replaced with two\n\t * blocks as a result of splitting the block by pressing enter, or with\n\t * blocks as a result of splitting the block by pasting block content in the\n\t * instance.\n\t *\n\t * @param {Object} record The rich text value to split.\n\t * @param {Array} pastedBlocks The pasted blocks to insert, if any.\n\t */\n\tconst splitValue = useCallback(\n\t\t( record, pastedBlocks = [] ) => {\n\t\t\tif ( ! onReplace || ! onSplit ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blocks = [];\n\t\t\tconst [ before, after ] = split( record );\n\t\t\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\t\t\tlet lastPastedBlockIndex = -1;\n\n\t\t\t// Consider the after value to be the original it is not empty and\n\t\t\t// the before value *is* empty.\n\t\t\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t\t\t// Create a block with the content before the caret if there's no pasted\n\t\t\t// blocks, or if there are pasted blocks and the value is not empty.\n\t\t\t// We do not want a leading empty block on paste, but we do if split\n\t\t\t// with e.g. the enter key.\n\t\t\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: before,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t! isAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tlastPastedBlockIndex += 1;\n\t\t\t}\n\n\t\t\tif ( hasPastedBlocks ) {\n\t\t\t\tblocks.push( ...pastedBlocks );\n\t\t\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t\t\t} else if ( onSplitMiddle ) {\n\t\t\t\tblocks.push( onSplitMiddle() );\n\t\t\t}\n\n\t\t\t// If there's pasted blocks, append a block with non empty content\n\t\t\t// after the caret. Otherwise, do append an empty block if there\n\t\t\t// is no `onSplitMiddle` prop, but if there is and the content is\n\t\t\t// empty, the middle block is enough to set focus in.\n\t\t\tif (\n\t\t\t\thasPastedBlocks\n\t\t\t\t\t? ! isEmpty( after )\n\t\t\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t\t\t) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: after,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tisAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If there are pasted blocks, set the selection to the last one.\n\t\t\t// Otherwise, set the selection to the second block.\n\t\t\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t\t\t// If there are pasted blocks, move the caret to the end of the selected block\n\t\t\t// Otherwise, retain the default value.\n\t\t\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\t\t\tonReplace( blocks, indexToSelect, initialPosition );\n\t\t},\n\t\t[ onReplace, onSplit, multilineTag, onSplitMiddle ]\n\t);\n\n\tconst onEnter = useCallback(\n\t\t( { value, onChange, shiftKey } ) => {\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( { content: value.text } ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( onCustomEnter ) {\n\t\t\t\tonCustomEnter();\n\t\t\t}\n\n\t\t\tconst { text, start: splitStart, end: splitEnd } = value;\n\t\t\tconst canSplitAtEnd =\n\t\t\t\tonSplitAtEnd &&\n\t\t\t\tsplitStart === splitEnd &&\n\t\t\t\tsplitEnd === text.length;\n\n\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\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 && canSplitAtEnd ) {\n\t\t\t\tonSplitAtEnd();\n\t\t\t} else if ( canSplit ) {\n\t\t\t\tsplitValue( value );\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\t__unstableMarkAutomaticChange,\n\t\t\tmultiline,\n\t\t\tsplitValue,\n\t\t\tonSplitAtEnd,\n\t\t]\n\t);\n\n\tconst onPaste = useCallback(\n\t\t( {\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\thtml,\n\t\t\tplainText,\n\t\t\tisInternal,\n\t\t\tfiles,\n\t\t\tactiveFormats,\n\t\t} ) => {\n\t\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t\t// without filtering the data. The filters are only meant for externally\n\t\t\t// pasted content and remove inline styles.\n\t\t\tif ( isInternal ) {\n\t\t\t\tconst pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tmultilineTag === 'li' ? [ 'ul', 'ol' ] : undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\taddActiveFormats( pastedValue, activeFormats );\n\t\t\t\tonChange( insert( value, pastedValue ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( pastePlainText ) {\n\t\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only process file if no HTML is present.\n\t\t\t// Note: a pasted file may have the URL as plain text.\n\t\t\tif ( files && files.length && ! html ) {\n\t\t\t\tconst content = pasteHandler( {\n\t\t\t\t\tHTML: filePasteHandler( files ),\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\ttagName,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\n\t\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\twindow.console.log( 'Received items:\\n\\n', files );\n\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet mode = onReplace && onSplit ? 'AUTO' : 'INLINE';\n\n\t\t\t// Force the blocks mode when the user is pasting\n\t\t\t// on a new line & the content resembles a shortcode.\n\t\t\t// Otherwise it's going to be detected as inline\n\t\t\t// and the shortcode won't be replaced.\n\t\t\tif (\n\t\t\t\tmode === 'AUTO' &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisShortcode( plainText )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst isPastedURL = isURL( plainText.trim() );\n\t\t\tconst presentEmbedHandlerPicker = () =>\n\t\t\t\tembedHandlerPickerRef.current?.presentPicker( {\n\t\t\t\t\tcreateEmbed: () =>\n\t\t\t\t\t\tonReplace( content, content.length - 1, -1 ),\n\t\t\t\t\tcreateLink: () =>\n\t\t\t\t\t\tcreateLinkInParagraph( plainText.trim(), onReplace ),\n\t\t\t\t} );\n\n\t\t\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisPastedURL\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst content = pasteHandler( {\n\t\t\t\tHTML: html,\n\t\t\t\tplainText,\n\t\t\t\tmode,\n\t\t\t\ttagName,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t} );\n\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tconst valueToInsert = create( { html: content } );\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else if ( content.length > 0 ) {\n\t\t\t\t// When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL\n\t\t\t\t// into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.\n\t\t\t\tconst canPasteEmbed =\n\t\t\t\t\tisPastedURL &&\n\t\t\t\t\tcontent.length === 1 &&\n\t\t\t\t\tcontent[ 0 ].name === 'core/embed';\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( __unstableEmbedURLOnPaste ) {\n\t\t\t\t\t\t\tpresentEmbedHandlerPicker();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\tsplitValue,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tmultilineTag,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t]\n\t);\n\n\tconst inputRule = useCallback(\n\t\t( value, valueToFormat ) => {\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start: startPosition, text } = value;\n\t\t\tconst characterBefore = text.slice(\n\t\t\t\tstartPosition - 1,\n\t\t\t\tstartPosition\n\t\t\t);\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, startPosition ).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 = valueToFormat(\n\t\t\t\tslice( value, startPosition, text.length )\n\t\t\t);\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t},\n\t\t[ onReplace, __unstableMarkAutomaticChange ]\n\t);\n\n\tconst mergedRef = useMergeRefs( [ forwardedRef, fallbackRef ] );\n\n\treturn (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tstart={ start }\n\t\t\treversed={ reversed }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\tdisableSuggestions={ disableSuggestions }\n\t\t\tdisableAutocorrection={ disableAutocorrection }\n\t\t\tcontainerWidth={ containerWidth }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t\t<EmbedHandlerPicker ref={ embedHandlerPickerRef } />\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = Content;\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _element = require("@wordpress/element");
9
+ var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
10
+ var _data = require("@wordpress/data");
11
+ var _ = require("./");
12
+ var _store = require("../../store");
13
+ var _blockEdit = require("../block-edit");
14
+ var _utils = require("./utils");
15
+ /**
16
+ * WordPress dependencies
17
+ */
18
+
19
+ /**
20
+ * Internal dependencies
21
+ */
22
+
23
+ function RichTextMultiline({
24
+ children,
25
+ identifier,
26
+ tagName: TagName = 'div',
27
+ value = '',
28
+ onChange,
29
+ multiline,
30
+ ...props
31
+ }, forwardedRef) {
32
+ (0, _deprecated.default)('wp.blockEditor.RichText multiline prop', {
33
+ since: '6.1',
34
+ version: '6.3',
35
+ alternative: 'nested blocks (InnerBlocks)',
36
+ link: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/'
37
+ });
38
+ const {
39
+ clientId
40
+ } = (0, _blockEdit.useBlockEditContext)();
41
+ const {
42
+ selectionChange
43
+ } = (0, _data.useDispatch)(_store.store);
44
+ const multilineTagName = (0, _utils.getMultilineTag)(multiline);
45
+ value = value || `<${multilineTagName}></${multilineTagName}>`;
46
+ const padded = `</${multilineTagName}>${value}<${multilineTagName}>`;
47
+ const values = padded.split(`</${multilineTagName}><${multilineTagName}>`);
48
+ values.shift();
49
+ values.pop();
50
+ function _onChange(newValues) {
51
+ onChange(`<${multilineTagName}>${newValues.join(`</${multilineTagName}><${multilineTagName}>`)}</${multilineTagName}>`);
52
+ }
53
+ return (0, _element.createElement)(TagName, {
54
+ ref: forwardedRef
55
+ }, values.map((_value, index) => {
56
+ return (0, _element.createElement)(_.RichTextWrapper, {
57
+ key: index,
58
+ identifier: `${identifier}-${index}`,
59
+ tagName: multilineTagName,
60
+ value: _value,
61
+ onChange: newValue => {
62
+ const newValues = values.slice();
63
+ newValues[index] = newValue;
64
+ _onChange(newValues);
65
+ },
66
+ isSelected: undefined,
67
+ onSplit: v => v,
68
+ onReplace: array => {
69
+ const newValues = values.slice();
70
+ newValues.splice(index, 1, ...array);
71
+ _onChange(newValues);
72
+ selectionChange(clientId, `${identifier}-${index + 1}`, 0, 0);
73
+ },
74
+ onMerge: forward => {
75
+ const newValues = values.slice();
76
+ let offset = 0;
77
+ if (forward) {
78
+ if (!newValues[index + 1]) return;
79
+ newValues.splice(index, 2, newValues[index] + newValues[index + 1]);
80
+ offset = newValues[index].length - 1;
81
+ } else {
82
+ if (!newValues[index - 1]) return;
83
+ newValues.splice(index - 1, 2, newValues[index - 1] + newValues[index]);
84
+ offset = newValues[index - 1].length - 1;
85
+ }
86
+ _onChange(newValues);
87
+ selectionChange(clientId, `${identifier}-${index - (forward ? 0 : 1)}`, offset, offset);
88
+ },
89
+ ...props
90
+ });
91
+ }));
92
+ }
93
+ var _default = (0, _element.forwardRef)(RichTextMultiline);
94
+ exports.default = _default;
95
+ //# sourceMappingURL=multiline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_element","require","_deprecated","_interopRequireDefault","_data","_","_store","_blockEdit","_utils","RichTextMultiline","children","identifier","tagName","TagName","value","onChange","multiline","props","forwardedRef","deprecated","since","version","alternative","link","clientId","useBlockEditContext","selectionChange","useDispatch","blockEditorStore","multilineTagName","getMultilineTag","padded","values","split","shift","pop","_onChange","newValues","join","createElement","ref","map","_value","index","RichTextWrapper","key","newValue","slice","isSelected","undefined","onSplit","v","onReplace","array","splice","onMerge","forward","offset","length","_default","forwardRef","exports","default"],"sources":["@wordpress/block-editor/src/components/rich-text/multiline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { RichTextWrapper } from './';\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockEditContext } from '../block-edit';\nimport { getMultilineTag } from './utils';\n\nfunction RichTextMultiline(\n\t{\n\t\tchildren,\n\t\tidentifier,\n\t\ttagName: TagName = 'div',\n\t\tvalue = '',\n\t\tonChange,\n\t\tmultiline,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tdeprecated( 'wp.blockEditor.RichText multiline prop', {\n\t\tsince: '6.1',\n\t\tversion: '6.3',\n\t\talternative: 'nested blocks (InnerBlocks)',\n\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/',\n\t} );\n\n\tconst { clientId } = useBlockEditContext();\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\n\tconst multilineTagName = getMultilineTag( multiline );\n\tvalue = value || `<${ multilineTagName }></${ multilineTagName }>`;\n\tconst padded = `</${ multilineTagName }>${ value }<${ multilineTagName }>`;\n\tconst values = padded.split(\n\t\t`</${ multilineTagName }><${ multilineTagName }>`\n\t);\n\n\tvalues.shift();\n\tvalues.pop();\n\n\tfunction _onChange( newValues ) {\n\t\tonChange(\n\t\t\t`<${ multilineTagName }>${ newValues.join(\n\t\t\t\t`</${ multilineTagName }><${ multilineTagName }>`\n\t\t\t) }</${ multilineTagName }>`\n\t\t);\n\t}\n\n\treturn (\n\t\t<TagName ref={ forwardedRef }>\n\t\t\t{ values.map( ( _value, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<RichTextWrapper\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tidentifier={ `${ identifier }-${ index }` }\n\t\t\t\t\t\ttagName={ multilineTagName }\n\t\t\t\t\t\tvalue={ _value }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tconst newValues = values.slice();\n\t\t\t\t\t\t\tnewValues[ index ] = newValue;\n\t\t\t\t\t\t\t_onChange( newValues );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisSelected={ undefined }\n\t\t\t\t\t\tonSplit={ ( v ) => v }\n\t\t\t\t\t\tonReplace={ ( array ) => {\n\t\t\t\t\t\t\tconst newValues = values.slice();\n\t\t\t\t\t\t\tnewValues.splice( index, 1, ...array );\n\t\t\t\t\t\t\t_onChange( newValues );\n\t\t\t\t\t\t\tselectionChange(\n\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t`${ identifier }-${ index + 1 }`,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonMerge={ ( forward ) => {\n\t\t\t\t\t\t\tconst newValues = values.slice();\n\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\tif ( forward ) {\n\t\t\t\t\t\t\t\tif ( ! newValues[ index + 1 ] ) return;\n\t\t\t\t\t\t\t\tnewValues.splice(\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\tnewValues[ index ] + newValues[ index + 1 ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\toffset = newValues[ index ].length - 1;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif ( ! newValues[ index - 1 ] ) return;\n\t\t\t\t\t\t\t\tnewValues.splice(\n\t\t\t\t\t\t\t\t\tindex - 1,\n\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\tnewValues[ index - 1 ] + newValues[ index ]\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\toffset = newValues[ index - 1 ].length - 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t_onChange( newValues );\n\t\t\t\t\t\t\tselectionChange(\n\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t`${ identifier }-${\n\t\t\t\t\t\t\t\t\tindex - ( forward ? 0 : 1 )\n\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\t\toffset\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</TagName>\n\t);\n}\n\nexport default forwardRef( RichTextMultiline );\n"],"mappings":"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"}
@@ -18,9 +18,7 @@ function splitValue({
18
18
  value,
19
19
  pastedBlocks = [],
20
20
  onReplace,
21
- onSplit,
22
- onSplitMiddle,
23
- multilineTag
21
+ onSplit
24
22
  }) {
25
23
  if (!onReplace || !onSplit) {
26
24
  return;
@@ -48,30 +46,26 @@ function splitValue({
48
46
 
49
47
  // Create a block with the content before the caret if there's no pasted
50
48
  // blocks, or if there are pasted blocks and the value is not empty. We do
51
- // not want a leading empty block on paste, but we do if split with e.g. the
52
- // enter key.
49
+ // not want a leading empty block on paste, but we do if we split with e.g.
50
+ // the enter key.
53
51
  if (!hasPastedBlocks || !(0, _richText.isEmpty)(before)) {
54
52
  blocks.push(onSplit((0, _richText.toHTMLString)({
55
- value: before,
56
- multilineTag
53
+ value: before
57
54
  }), !isAfterOriginal));
58
55
  lastPastedBlockIndex += 1;
59
56
  }
60
57
  if (hasPastedBlocks) {
61
58
  blocks.push(...pastedBlocks);
62
59
  lastPastedBlockIndex += pastedBlocks.length;
63
- } else if (onSplitMiddle) {
64
- blocks.push(onSplitMiddle());
65
60
  }
66
61
 
67
- // If there's pasted blocks, append a block with non empty content / after
68
- // the caret. Otherwise, do append an empty block if there is no
69
- // `onSplitMiddle` prop, but if there is and the content is empty, the
70
- // middle block is enough to set focus in.
71
- if (hasPastedBlocks ? !(0, _richText.isEmpty)(after) : !onSplitMiddle || !(0, _richText.isEmpty)(after)) {
62
+ // Create a block with the content after the caret if there's no pasted
63
+ // blocks, or if there are pasted blocks and the value is not empty. We do
64
+ // not want a trailing empty block on paste, but we do if we split with e.g.
65
+ // the enter key.
66
+ if (!hasPastedBlocks || !(0, _richText.isEmpty)(after)) {
72
67
  blocks.push(onSplit((0, _richText.toHTMLString)({
73
- value: after,
74
- multilineTag
68
+ value: after
75
69
  }), isAfterOriginal));
76
70
  }
77
71
 
@@ -1 +1 @@
1
- {"version":3,"names":["_richText","require","splitValue","value","pastedBlocks","onReplace","onSplit","onSplitMiddle","multilineTag","start","end","valueWithEnsuredSelection","blocks","before","after","split","hasPastedBlocks","length","lastPastedBlockIndex","isAfterOriginal","isEmpty","push","toHTMLString","indexToSelect","initialPosition"],"sources":["@wordpress/block-editor/src/components/rich-text/split-value.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isEmpty, split, toHTMLString } from '@wordpress/rich-text';\n\n/*\n * Signals to the RichText owner that the block can be replaced with two blocks\n * as a result of splitting the block by pressing enter, or with blocks as a\n * result of splitting the block by pasting block content in the instance.\n */\nexport function splitValue( {\n\tvalue,\n\tpastedBlocks = [],\n\tonReplace,\n\tonSplit,\n\tonSplitMiddle,\n\tmultilineTag,\n} ) {\n\tif ( ! onReplace || ! onSplit ) {\n\t\treturn;\n\t}\n\n\t// Ensure the value has a selection. This might happen when trying to split\n\t// an empty value before there was a `selectionchange` event.\n\tconst { start = 0, end = 0 } = value;\n\tconst valueWithEnsuredSelection = { ...value, start, end };\n\tconst blocks = [];\n\tconst [ before, after ] = split( valueWithEnsuredSelection );\n\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\tlet lastPastedBlockIndex = -1;\n\n\t// Consider the after value to be the original it is not empty and the\n\t// before value *is* empty.\n\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t// Create a block with the content before the caret if there's no pasted\n\t// blocks, or if there are pasted blocks and the value is not empty. We do\n\t// not want a leading empty block on paste, but we do if split with e.g. the\n\t// enter key.\n\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\tblocks.push(\n\t\t\tonSplit(\n\t\t\t\ttoHTMLString( {\n\t\t\t\t\tvalue: before,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t} ),\n\t\t\t\t! isAfterOriginal\n\t\t\t)\n\t\t);\n\t\tlastPastedBlockIndex += 1;\n\t}\n\n\tif ( hasPastedBlocks ) {\n\t\tblocks.push( ...pastedBlocks );\n\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t} else if ( onSplitMiddle ) {\n\t\tblocks.push( onSplitMiddle() );\n\t}\n\n\t// If there's pasted blocks, append a block with non empty content / after\n\t// the caret. Otherwise, do append an empty block if there is no\n\t// `onSplitMiddle` prop, but if there is and the content is empty, the\n\t// middle block is enough to set focus in.\n\tif (\n\t\thasPastedBlocks\n\t\t\t? ! isEmpty( after )\n\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t) {\n\t\tblocks.push(\n\t\t\tonSplit(\n\t\t\t\ttoHTMLString( {\n\t\t\t\t\tvalue: after,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t} ),\n\t\t\t\tisAfterOriginal\n\t\t\t)\n\t\t);\n\t}\n\n\t// If there are pasted blocks, set the selection to the last one. Otherwise,\n\t// set the selection to the second block.\n\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t// If there are pasted blocks, move the caret to the end of the selected\n\t// block Otherwise, retain the default value.\n\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\tonReplace( blocks, indexToSelect, initialPosition );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAAE;EAC3BC,KAAK;EACLC,YAAY,GAAG,EAAE;EACjBC,SAAS;EACTC,OAAO;EACPC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,IAAK,CAAEH,SAAS,IAAI,CAAEC,OAAO,EAAG;IAC/B;EACD;;EAEA;EACA;EACA,MAAM;IAAEG,KAAK,GAAG,CAAC;IAAEC,GAAG,GAAG;EAAE,CAAC,GAAGP,KAAK;EACpC,MAAMQ,yBAAyB,GAAG;IAAE,GAAGR,KAAK;IAAEM,KAAK;IAAEC;EAAI,CAAC;EAC1D,MAAME,MAAM,GAAG,EAAE;EACjB,MAAM,CAAEC,MAAM,EAAEC,KAAK,CAAE,GAAG,IAAAC,eAAK,EAAEJ,yBAA0B,CAAC;EAC5D,MAAMK,eAAe,GAAGZ,YAAY,CAACa,MAAM,GAAG,CAAC;EAC/C,IAAIC,oBAAoB,GAAG,CAAC,CAAC;;EAE7B;EACA;EACA,MAAMC,eAAe,GAAG,IAAAC,iBAAO,EAAEP,MAAO,CAAC,IAAI,CAAE,IAAAO,iBAAO,EAAEN,KAAM,CAAC;;EAE/D;EACA;EACA;EACA;EACA,IAAK,CAAEE,eAAe,IAAI,CAAE,IAAAI,iBAAO,EAAEP,MAAO,CAAC,EAAG;IAC/CD,MAAM,CAACS,IAAI,CACVf,OAAO,CACN,IAAAgB,sBAAY,EAAE;MACbnB,KAAK,EAAEU,MAAM;MACbL;IACD,CAAE,CAAC,EACH,CAAEW,eACH,CACD,CAAC;IACDD,oBAAoB,IAAI,CAAC;EAC1B;EAEA,IAAKF,eAAe,EAAG;IACtBJ,MAAM,CAACS,IAAI,CAAE,GAAGjB,YAAa,CAAC;IAC9Bc,oBAAoB,IAAId,YAAY,CAACa,MAAM;EAC5C,CAAC,MAAM,IAAKV,aAAa,EAAG;IAC3BK,MAAM,CAACS,IAAI,CAAEd,aAAa,CAAC,CAAE,CAAC;EAC/B;;EAEA;EACA;EACA;EACA;EACA,IACCS,eAAe,GACZ,CAAE,IAAAI,iBAAO,EAAEN,KAAM,CAAC,GAClB,CAAEP,aAAa,IAAI,CAAE,IAAAa,iBAAO,EAAEN,KAAM,CAAC,EACvC;IACDF,MAAM,CAACS,IAAI,CACVf,OAAO,CACN,IAAAgB,sBAAY,EAAE;MACbnB,KAAK,EAAEW,KAAK;MACZN;IACD,CAAE,CAAC,EACHW,eACD,CACD,CAAC;EACF;;EAEA;EACA;EACA,MAAMI,aAAa,GAAGP,eAAe,GAAGE,oBAAoB,GAAG,CAAC;;EAEhE;EACA;EACA,MAAMM,eAAe,GAAGR,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC;EAEhDX,SAAS,CAAEO,MAAM,EAAEW,aAAa,EAAEC,eAAgB,CAAC;AACpD"}
1
+ {"version":3,"names":["_richText","require","splitValue","value","pastedBlocks","onReplace","onSplit","start","end","valueWithEnsuredSelection","blocks","before","after","split","hasPastedBlocks","length","lastPastedBlockIndex","isAfterOriginal","isEmpty","push","toHTMLString","indexToSelect","initialPosition"],"sources":["@wordpress/block-editor/src/components/rich-text/split-value.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isEmpty, split, toHTMLString } from '@wordpress/rich-text';\n\n/*\n * Signals to the RichText owner that the block can be replaced with two blocks\n * as a result of splitting the block by pressing enter, or with blocks as a\n * result of splitting the block by pasting block content in the instance.\n */\nexport function splitValue( { value, pastedBlocks = [], onReplace, onSplit } ) {\n\tif ( ! onReplace || ! onSplit ) {\n\t\treturn;\n\t}\n\n\t// Ensure the value has a selection. This might happen when trying to split\n\t// an empty value before there was a `selectionchange` event.\n\tconst { start = 0, end = 0 } = value;\n\tconst valueWithEnsuredSelection = { ...value, start, end };\n\tconst blocks = [];\n\tconst [ before, after ] = split( valueWithEnsuredSelection );\n\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\tlet lastPastedBlockIndex = -1;\n\n\t// Consider the after value to be the original it is not empty and the\n\t// before value *is* empty.\n\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t// Create a block with the content before the caret if there's no pasted\n\t// blocks, or if there are pasted blocks and the value is not empty. We do\n\t// not want a leading empty block on paste, but we do if we split with e.g.\n\t// the enter key.\n\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\tblocks.push(\n\t\t\tonSplit( toHTMLString( { value: before } ), ! isAfterOriginal )\n\t\t);\n\t\tlastPastedBlockIndex += 1;\n\t}\n\n\tif ( hasPastedBlocks ) {\n\t\tblocks.push( ...pastedBlocks );\n\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t}\n\n\t// Create a block with the content after the caret if there's no pasted\n\t// blocks, or if there are pasted blocks and the value is not empty. We do\n\t// not want a trailing empty block on paste, but we do if we split with e.g.\n\t// the enter key.\n\tif ( ! hasPastedBlocks || ! isEmpty( after ) ) {\n\t\tblocks.push(\n\t\t\tonSplit( toHTMLString( { value: after } ), isAfterOriginal )\n\t\t);\n\t}\n\n\t// If there are pasted blocks, set the selection to the last one. Otherwise,\n\t// set the selection to the second block.\n\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t// If there are pasted blocks, move the caret to the end of the selected\n\t// block Otherwise, retain the default value.\n\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\tonReplace( blocks, indexToSelect, initialPosition );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAAE;EAAEC,KAAK;EAAEC,YAAY,GAAG,EAAE;EAAEC,SAAS;EAAEC;AAAQ,CAAC,EAAG;EAC9E,IAAK,CAAED,SAAS,IAAI,CAAEC,OAAO,EAAG;IAC/B;EACD;;EAEA;EACA;EACA,MAAM;IAAEC,KAAK,GAAG,CAAC;IAAEC,GAAG,GAAG;EAAE,CAAC,GAAGL,KAAK;EACpC,MAAMM,yBAAyB,GAAG;IAAE,GAAGN,KAAK;IAAEI,KAAK;IAAEC;EAAI,CAAC;EAC1D,MAAME,MAAM,GAAG,EAAE;EACjB,MAAM,CAAEC,MAAM,EAAEC,KAAK,CAAE,GAAG,IAAAC,eAAK,EAAEJ,yBAA0B,CAAC;EAC5D,MAAMK,eAAe,GAAGV,YAAY,CAACW,MAAM,GAAG,CAAC;EAC/C,IAAIC,oBAAoB,GAAG,CAAC,CAAC;;EAE7B;EACA;EACA,MAAMC,eAAe,GAAG,IAAAC,iBAAO,EAAEP,MAAO,CAAC,IAAI,CAAE,IAAAO,iBAAO,EAAEN,KAAM,CAAC;;EAE/D;EACA;EACA;EACA;EACA,IAAK,CAAEE,eAAe,IAAI,CAAE,IAAAI,iBAAO,EAAEP,MAAO,CAAC,EAAG;IAC/CD,MAAM,CAACS,IAAI,CACVb,OAAO,CAAE,IAAAc,sBAAY,EAAE;MAAEjB,KAAK,EAAEQ;IAAO,CAAE,CAAC,EAAE,CAAEM,eAAgB,CAC/D,CAAC;IACDD,oBAAoB,IAAI,CAAC;EAC1B;EAEA,IAAKF,eAAe,EAAG;IACtBJ,MAAM,CAACS,IAAI,CAAE,GAAGf,YAAa,CAAC;IAC9BY,oBAAoB,IAAIZ,YAAY,CAACW,MAAM;EAC5C;;EAEA;EACA;EACA;EACA;EACA,IAAK,CAAED,eAAe,IAAI,CAAE,IAAAI,iBAAO,EAAEN,KAAM,CAAC,EAAG;IAC9CF,MAAM,CAACS,IAAI,CACVb,OAAO,CAAE,IAAAc,sBAAY,EAAE;MAAEjB,KAAK,EAAES;IAAM,CAAE,CAAC,EAAEK,eAAgB,CAC5D,CAAC;EACF;;EAEA;EACA;EACA,MAAMI,aAAa,GAAGP,eAAe,GAAGE,oBAAoB,GAAG,CAAC;;EAEhE;EACA;EACA,MAAMM,eAAe,GAAGR,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC;EAEhDT,SAAS,CAAEK,MAAM,EAAEW,aAAa,EAAEC,eAAgB,CAAC;AACpD"}
@@ -21,6 +21,7 @@ var _splitValue = require("./split-value");
21
21
  */
22
22
 
23
23
  function useEnter(props) {
24
+ const registry = (0, _data.useRegistry)();
24
25
  const {
25
26
  __unstableMarkAutomaticChange
26
27
  } = (0, _data.useDispatch)(_store.store);
@@ -39,11 +40,10 @@ function useEnter(props) {
39
40
  value,
40
41
  onReplace,
41
42
  onSplit,
42
- onSplitMiddle,
43
- multilineTag,
44
43
  onChange,
45
44
  disableLineBreaks,
46
- onSplitAtEnd
45
+ onSplitAtEnd,
46
+ onSplitAtDoubleLineEnd
47
47
  } = propsRef.current;
48
48
  event.preventDefault();
49
49
  const _value = {
@@ -65,44 +65,35 @@ function useEnter(props) {
65
65
  __unstableMarkAutomaticChange();
66
66
  }
67
67
  }
68
- if (multilineTag) {
69
- if (event.shiftKey) {
70
- if (!disableLineBreaks) {
71
- onChange((0, _richText.insert)(_value, '\n'));
72
- }
73
- } else if (canSplit && (0, _richText.__unstableIsEmptyLine)(_value)) {
74
- (0, _splitValue.splitValue)({
75
- value: _value,
76
- onReplace,
77
- onSplit,
78
- onSplitMiddle,
79
- multilineTag
80
- });
81
- } else {
82
- onChange((0, _richText.__unstableInsertLineSeparator)(_value));
83
- }
84
- } else {
85
- const {
86
- text,
87
- start,
88
- end
89
- } = _value;
90
- const canSplitAtEnd = onSplitAtEnd && start === end && end === text.length;
91
- if (event.shiftKey || !canSplit && !canSplitAtEnd) {
92
- if (!disableLineBreaks) {
93
- onChange((0, _richText.insert)(_value, '\n'));
94
- }
95
- } else if (!canSplit && canSplitAtEnd) {
96
- onSplitAtEnd();
97
- } else if (canSplit) {
98
- (0, _splitValue.splitValue)({
99
- value: _value,
100
- onReplace,
101
- onSplit,
102
- onSplitMiddle,
103
- multilineTag
104
- });
68
+ const {
69
+ text,
70
+ start,
71
+ end
72
+ } = _value;
73
+ if (event.shiftKey) {
74
+ if (!disableLineBreaks) {
75
+ onChange((0, _richText.insert)(_value, '\n'));
105
76
  }
77
+ } else if (canSplit) {
78
+ (0, _splitValue.splitValue)({
79
+ value: _value,
80
+ onReplace,
81
+ onSplit
82
+ });
83
+ } else if (onSplitAtEnd && start === end && end === text.length) {
84
+ onSplitAtEnd();
85
+ } else if (
86
+ // For some blocks it's desirable to split at the end of the
87
+ // block when there are two line breaks at the end of the
88
+ // block, so triple Enter exits the block.
89
+ onSplitAtDoubleLineEnd && start === end && end === text.length && text.slice(-2) === '\n\n') {
90
+ registry.batch(() => {
91
+ _value.start = _value.end - 2;
92
+ onChange((0, _richText.remove)(_value));
93
+ onSplitAtDoubleLineEnd();
94
+ });
95
+ } else if (!disableLineBreaks) {
96
+ onChange((0, _richText.insert)(_value, '\n'));
106
97
  }
107
98
  }
108
99
  element.addEventListener('keydown', onKeyDown);
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_compose","_keycodes","_richText","_blocks","_data","_store","_splitValue","useEnter","props","__unstableMarkAutomaticChange","useDispatch","blockEditorStore","propsRef","useRef","current","useRefEffect","element","onKeyDown","event","defaultPrevented","keyCode","ENTER","removeEditorOnlyFormats","value","onReplace","onSplit","onSplitMiddle","multilineTag","onChange","disableLineBreaks","onSplitAtEnd","preventDefault","_value","formats","canSplit","transforms","getBlockTransforms","filter","type","transformation","findTransform","item","regExp","test","text","transform","content","shiftKey","insert","isEmptyLine","splitValue","insertLineSeparator","start","end","canSplitAtEnd","length","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 {\n\tinsert,\n\t__unstableIsEmptyLine as isEmptyLine,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n} 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 { splitValue } from './split-value';\n\nexport function useEnter( props ) {\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.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\tonSplitMiddle,\n\t\t\t\tmultilineTag,\n\t\t\t\tonChange,\n\t\t\t\tdisableLineBreaks,\n\t\t\t\tonSplitAtEnd,\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}\n\t\t\t}\n\n\t\t\tif ( multilineTag ) {\n\t\t\t\tif ( event.shiftKey ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( canSplit && isEmptyLine( _value ) ) {\n\t\t\t\t\tsplitValue( {\n\t\t\t\t\t\tvalue: _value,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tonChange( insertLineSeparator( _value ) );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst { text, start, end } = _value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd && start === end && end === text.length;\n\n\t\t\t\tif ( event.shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\t\tonSplitAtEnd();\n\t\t\t\t} else if ( canSplit ) {\n\t\t\t\t\tsplitValue( {\n\t\t\t\t\t\tvalue: _value,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t}\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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"}
1
+ {"version":3,"names":["_element","require","_compose","_keycodes","_richText","_blocks","_data","_store","_splitValue","useEnter","props","registry","useRegistry","__unstableMarkAutomaticChange","useDispatch","blockEditorStore","propsRef","useRef","current","useRefEffect","element","onKeyDown","event","defaultPrevented","keyCode","ENTER","removeEditorOnlyFormats","value","onReplace","onSplit","onChange","disableLineBreaks","onSplitAtEnd","onSplitAtDoubleLineEnd","preventDefault","_value","formats","canSplit","transforms","getBlockTransforms","filter","type","transformation","findTransform","item","regExp","test","text","transform","content","start","end","shiftKey","insert","splitValue","length","slice","batch","remove","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.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}\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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"}