@wordpress/block-editor 7.0.3 → 7.0.4

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 (248) hide show
  1. package/build/components/block-actions/index.js +6 -5
  2. package/build/components/block-actions/index.js.map +1 -1
  3. package/build/components/block-alignment-control/use-available-alignments.js +17 -4
  4. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  5. package/build/components/block-inspector/index.js +1 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-list/block-html.js +5 -0
  8. package/build/components/block-list/block-html.js.map +1 -1
  9. package/build/components/block-list/block.native.js +2 -2
  10. package/build/components/block-list/block.native.js.map +1 -1
  11. package/build/components/block-list-appender/index.js +9 -1
  12. package/build/components/block-list-appender/index.js.map +1 -1
  13. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
  14. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  15. package/build/components/block-settings-menu-controls/index.js +10 -3
  16. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  17. package/build/components/block-switcher/block-styles-menu.js +1 -1
  18. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  19. package/build/components/block-tools/index.js +4 -1
  20. package/build/components/block-tools/index.js.map +1 -1
  21. package/build/components/block-tools/insertion-point.js +96 -7
  22. package/build/components/block-tools/insertion-point.js.map +1 -1
  23. package/build/components/border-radius-control/index.js.map +1 -1
  24. package/build/components/border-radius-control/utils.js +17 -8
  25. package/build/components/border-radius-control/utils.js.map +1 -1
  26. package/build/components/colors-gradients/control.js +17 -13
  27. package/build/components/colors-gradients/control.js.map +1 -1
  28. package/build/components/copy-handler/index.js +3 -3
  29. package/build/components/copy-handler/index.js.map +1 -1
  30. package/build/components/default-block-appender/index.js +2 -2
  31. package/build/components/default-block-appender/index.js.map +1 -1
  32. package/build/components/font-appearance-control/index.js +3 -5
  33. package/build/components/font-appearance-control/index.js.map +1 -1
  34. package/build/components/index.js +0 -18
  35. package/build/components/index.js.map +1 -1
  36. package/build/components/inserter/block-patterns-tab.js +11 -1
  37. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  38. package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  39. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  40. package/build/components/inserter/preview-panel.js +1 -1
  41. package/build/components/inserter/preview-panel.js.map +1 -1
  42. package/build/components/inspector-controls/block-support-slot-container.js +28 -0
  43. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
  44. package/build/components/inspector-controls/block-support-tools-panel.js +7 -4
  45. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  46. package/build/components/inspector-controls/fill.js +16 -1
  47. package/build/components/inspector-controls/fill.js.map +1 -1
  48. package/build/components/inspector-controls/slot.js +5 -2
  49. package/build/components/inspector-controls/slot.js.map +1 -1
  50. package/build/components/list-view/block-contents.js +1 -20
  51. package/build/components/list-view/block-contents.js.map +1 -1
  52. package/build/components/list-view/block.js +5 -36
  53. package/build/components/list-view/block.js.map +1 -1
  54. package/build/components/list-view/list-item.js +3 -2
  55. package/build/components/list-view/list-item.js.map +1 -1
  56. package/build/components/media-placeholder/index.js +26 -17
  57. package/build/components/media-placeholder/index.js.map +1 -1
  58. package/build/components/media-replace-flow/index.js +3 -2
  59. package/build/components/media-replace-flow/index.js.map +1 -1
  60. package/build/components/plain-text/index.native.js +30 -1
  61. package/build/components/plain-text/index.native.js.map +1 -1
  62. package/build/components/rich-text/embed-handler-picker.native.js +65 -0
  63. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
  64. package/build/components/rich-text/index.js +5 -1
  65. package/build/components/rich-text/index.js.map +1 -1
  66. package/build/components/rich-text/index.native.js +41 -2
  67. package/build/components/rich-text/index.native.js.map +1 -1
  68. package/build/components/rich-text/use-paste-handler.js +28 -9
  69. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  70. package/build/components/rich-text/utils.js +22 -0
  71. package/build/components/rich-text/utils.js.map +1 -1
  72. package/build/hooks/align.js +10 -7
  73. package/build/hooks/align.js.map +1 -1
  74. package/build/hooks/anchor.js +1 -1
  75. package/build/hooks/anchor.js.map +1 -1
  76. package/build/hooks/font-family.js +93 -23
  77. package/build/hooks/font-family.js.map +1 -1
  78. package/build/hooks/style.js +6 -3
  79. package/build/hooks/style.js.map +1 -1
  80. package/build/layouts/flow.js +4 -1
  81. package/build/layouts/flow.js.map +1 -1
  82. package/build/store/reducer.js +11 -1
  83. package/build/store/reducer.js.map +1 -1
  84. package/build/store/selectors.js +1 -3
  85. package/build/store/selectors.js.map +1 -1
  86. package/build/utils/transform-styles/transforms/wrap.js +16 -0
  87. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  88. package/build-module/components/block-actions/index.js +6 -5
  89. package/build-module/components/block-actions/index.js.map +1 -1
  90. package/build-module/components/block-alignment-control/use-available-alignments.js +17 -4
  91. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  92. package/build-module/components/block-inspector/index.js +1 -1
  93. package/build-module/components/block-inspector/index.js.map +1 -1
  94. package/build-module/components/block-list/block-html.js +5 -0
  95. package/build-module/components/block-list/block-html.js.map +1 -1
  96. package/build-module/components/block-list/block.native.js +2 -2
  97. package/build-module/components/block-list/block.native.js.map +1 -1
  98. package/build-module/components/block-list-appender/index.js +9 -1
  99. package/build-module/components/block-list-appender/index.js.map +1 -1
  100. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
  101. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  102. package/build-module/components/block-settings-menu-controls/index.js +10 -3
  103. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  104. package/build-module/components/block-switcher/block-styles-menu.js +1 -1
  105. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  106. package/build-module/components/block-tools/index.js +4 -1
  107. package/build-module/components/block-tools/index.js.map +1 -1
  108. package/build-module/components/block-tools/insertion-point.js +96 -8
  109. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  110. package/build-module/components/border-radius-control/index.js.map +1 -1
  111. package/build-module/components/border-radius-control/utils.js +16 -9
  112. package/build-module/components/border-radius-control/utils.js.map +1 -1
  113. package/build-module/components/colors-gradients/control.js +18 -14
  114. package/build-module/components/colors-gradients/control.js.map +1 -1
  115. package/build-module/components/copy-handler/index.js +3 -3
  116. package/build-module/components/copy-handler/index.js.map +1 -1
  117. package/build-module/components/default-block-appender/index.js +2 -2
  118. package/build-module/components/default-block-appender/index.js.map +1 -1
  119. package/build-module/components/font-appearance-control/index.js +3 -5
  120. package/build-module/components/font-appearance-control/index.js.map +1 -1
  121. package/build-module/components/index.js +0 -2
  122. package/build-module/components/index.js.map +1 -1
  123. package/build-module/components/inserter/block-patterns-tab.js +11 -1
  124. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  125. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  126. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  127. package/build-module/components/inserter/preview-panel.js +1 -1
  128. package/build-module/components/inserter/preview-panel.js.map +1 -1
  129. package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
  130. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
  131. package/build-module/components/inspector-controls/block-support-tools-panel.js +7 -4
  132. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  133. package/build-module/components/inspector-controls/fill.js +16 -2
  134. package/build-module/components/inspector-controls/fill.js.map +1 -1
  135. package/build-module/components/inspector-controls/slot.js +4 -2
  136. package/build-module/components/inspector-controls/slot.js.map +1 -1
  137. package/build-module/components/list-view/block-contents.js +1 -18
  138. package/build-module/components/list-view/block-contents.js.map +1 -1
  139. package/build-module/components/list-view/block.js +7 -37
  140. package/build-module/components/list-view/block.js.map +1 -1
  141. package/build-module/components/list-view/list-item.js +3 -2
  142. package/build-module/components/list-view/list-item.js.map +1 -1
  143. package/build-module/components/media-placeholder/index.js +26 -17
  144. package/build-module/components/media-placeholder/index.js.map +1 -1
  145. package/build-module/components/media-replace-flow/index.js +3 -2
  146. package/build-module/components/media-replace-flow/index.js.map +1 -1
  147. package/build-module/components/plain-text/index.native.js +29 -2
  148. package/build-module/components/plain-text/index.native.js.map +1 -1
  149. package/build-module/components/rich-text/embed-handler-picker.native.js +53 -0
  150. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
  151. package/build-module/components/rich-text/index.js +4 -1
  152. package/build-module/components/rich-text/index.js.map +1 -1
  153. package/build-module/components/rich-text/index.native.js +41 -3
  154. package/build-module/components/rich-text/index.native.js.map +1 -1
  155. package/build-module/components/rich-text/use-paste-handler.js +28 -9
  156. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  157. package/build-module/components/rich-text/utils.js +20 -0
  158. package/build-module/components/rich-text/utils.js.map +1 -1
  159. package/build-module/hooks/align.js +10 -7
  160. package/build-module/hooks/align.js.map +1 -1
  161. package/build-module/hooks/anchor.js +1 -1
  162. package/build-module/hooks/anchor.js.map +1 -1
  163. package/build-module/hooks/font-family.js +91 -24
  164. package/build-module/hooks/font-family.js.map +1 -1
  165. package/build-module/hooks/style.js +6 -3
  166. package/build-module/hooks/style.js.map +1 -1
  167. package/build-module/layouts/flow.js +4 -1
  168. package/build-module/layouts/flow.js.map +1 -1
  169. package/build-module/store/reducer.js +11 -1
  170. package/build-module/store/reducer.js.map +1 -1
  171. package/build-module/store/selectors.js +2 -4
  172. package/build-module/store/selectors.js.map +1 -1
  173. package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
  174. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  175. package/build-style/style-rtl.css +52 -76
  176. package/build-style/style.css +52 -76
  177. package/package.json +14 -14
  178. package/src/components/block-actions/index.js +5 -5
  179. package/src/components/block-alignment-control/use-available-alignments.js +18 -3
  180. package/src/components/block-inspector/index.js +1 -1
  181. package/src/components/block-list/block-html.js +5 -0
  182. package/src/components/block-list/block.native.js +2 -2
  183. package/src/components/block-list-appender/index.js +8 -0
  184. package/src/components/block-preview/README.md +1 -1
  185. package/src/components/block-preview/style.scss +0 -17
  186. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -2
  187. package/src/components/block-settings-menu-controls/index.js +9 -6
  188. package/src/components/block-switcher/block-styles-menu.js +1 -1
  189. package/src/components/block-tools/index.js +5 -2
  190. package/src/components/block-tools/insertion-point.js +97 -9
  191. package/src/components/block-tools/style.scss +4 -35
  192. package/src/components/border-radius-control/index.js +1 -0
  193. package/src/components/border-radius-control/test/utils.js +216 -0
  194. package/src/components/border-radius-control/utils.js +18 -10
  195. package/src/components/color-palette/test/__snapshots__/control.js.snap +103 -72
  196. package/src/components/colors-gradients/control.js +64 -61
  197. package/src/components/colors-gradients/style.scss +8 -5
  198. package/src/components/colors-gradients/test/control.js +43 -52
  199. package/src/components/copy-handler/index.js +1 -1
  200. package/src/components/default-block-appender/index.js +2 -2
  201. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
  202. package/src/components/font-appearance-control/index.js +12 -14
  203. package/src/components/font-appearance-control/style.scss +1 -1
  204. package/src/components/index.js +0 -2
  205. package/src/components/inserter/block-patterns-tab.js +11 -4
  206. package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
  207. package/src/components/inserter/preview-panel.js +1 -1
  208. package/src/components/inserter/style.scss +1 -2
  209. package/src/components/inspector-controls/block-support-slot-container.js +10 -0
  210. package/src/components/inspector-controls/block-support-tools-panel.js +4 -2
  211. package/src/components/inspector-controls/fill.js +23 -2
  212. package/src/components/inspector-controls/slot.js +6 -1
  213. package/src/components/link-control/style.scss +9 -5
  214. package/src/components/list-view/block-contents.js +17 -38
  215. package/src/components/list-view/block.js +6 -51
  216. package/src/components/list-view/list-item.js +5 -4
  217. package/src/components/list-view/style.scss +56 -30
  218. package/src/components/media-placeholder/index.js +24 -17
  219. package/src/components/media-replace-flow/README.md +7 -0
  220. package/src/components/media-replace-flow/index.js +2 -0
  221. package/src/components/plain-text/index.native.js +26 -4
  222. package/src/components/rich-text/embed-handler-picker.native.js +67 -0
  223. package/src/components/rich-text/index.js +12 -8
  224. package/src/components/rich-text/index.native.js +35 -1
  225. package/src/components/rich-text/use-paste-handler.js +30 -12
  226. package/src/components/rich-text/utils.js +16 -0
  227. package/src/components/skip-to-selected-block/README.md +39 -0
  228. package/src/hooks/align.js +11 -7
  229. package/src/hooks/anchor.js +2 -2
  230. package/src/hooks/font-family.js +107 -27
  231. package/src/hooks/style.js +14 -8
  232. package/src/layouts/flow.js +4 -1
  233. package/src/store/reducer.js +17 -0
  234. package/src/store/selectors.js +2 -3
  235. package/src/store/test/reducer.js +22 -0
  236. package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
  237. package/src/utils/transform-styles/transforms/wrap.js +16 -0
  238. package/tsconfig.tsbuildinfo +1 -1
  239. package/build/components/list-view/block-slot.js +0 -121
  240. package/build/components/list-view/block-slot.js.map +0 -1
  241. package/build/components/list-view/editor.js +0 -35
  242. package/build/components/list-view/editor.js.map +0 -1
  243. package/build-module/components/list-view/block-slot.js +0 -96
  244. package/build-module/components/list-view/block-slot.js.map +0 -1
  245. package/build-module/components/list-view/editor.js +0 -25
  246. package/build-module/components/list-view/editor.js.map +0 -1
  247. package/src/components/list-view/block-slot.js +0 -120
  248. package/src/components/list-view/editor.js +0 -29
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/plain-text/index.native.js"],"names":["TextInput","Platform","Component","styles","PlainText","constructor","arguments","isAndroid","OS","componentDidMount","_input","isFocused","props","isSelected","timeoutID","setTimeout","focus","componentDidUpdate","prevProps","blur","componentWillUnmount","clearTimeout","render","x","event","onChange","nativeEvent","text","onFocus","onBlur","style","fontFamily"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,cAApC;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,oBAA1B;AAEA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,cAAnB;AAEA,eAAe,MAAMC,SAAN,SAAwBF,SAAxB,CAAkC;AAChDG,EAAAA,WAAW,GAAG;AACb,UAAO,GAAGC,SAAV;AACA,SAAKC,SAAL,GAAiBN,QAAQ,CAACO,EAAT,KAAgB,SAAjC;AACA;;AAEDC,EAAAA,iBAAiB,GAAG;AACnB;AACA,QACC,KAAKC,MAAL,IACA,KAAKA,MAAL,CAAYC,SAAZ,OAA4B,KAD5B,IAEA,KAAKC,KAAL,CAAWC,UAHZ,EAIE;AACD,UAAK,KAAKN,SAAV,EAAsB;AACrB;AACJ;AACA;AACA;AACA;AACI,aAAKO,SAAL,GAAiBC,UAAU,CAAE,MAAM;AAClC,eAAKL,MAAL,CAAYM,KAAZ;AACA,SAF0B,EAExB,GAFwB,CAA3B;AAGA,OATD,MASO;AACN,aAAKN,MAAL,CAAYM,KAAZ;AACA;AACD;AACD;;AAEDC,EAAAA,kBAAkB,CAAEC,SAAF,EAAc;AAC/B,QAAK,CAAE,KAAKN,KAAL,CAAWC,UAAb,IAA2BK,SAAS,CAACL,UAA1C,EAAuD;AACtD,WAAKH,MAAL,CAAYS,IAAZ;AACA;AACD;;AAEDC,EAAAA,oBAAoB,GAAG;AACtB,QAAK,KAAKb,SAAV,EAAsB;AACrBc,MAAAA,YAAY,CAAE,KAAKP,SAAP,CAAZ;AACA;AACD;;AAEDE,EAAAA,KAAK,GAAG;AACP,SAAKN,MAAL,CAAYM,KAAZ;AACA;;AAEDG,EAAAA,IAAI,GAAG;AACN,SAAKT,MAAL,CAAYS,IAAZ;AACA;;AAEDG,EAAAA,MAAM,GAAG;AACR,WACC,cAAC,SAAD,eACM,KAAKV,KADX;AAEC,MAAA,GAAG,EAAKW,CAAF,IAAW,KAAKb,MAAL,GAAca,CAFhC;AAGC,MAAA,QAAQ,EAAKC,KAAF,IAAa;AACvB,aAAKZ,KAAL,CAAWa,QAAX,CAAqBD,KAAK,CAACE,WAAN,CAAkBC,IAAvC;AACA,OALF;AAMC,MAAA,OAAO,EAAG,KAAKf,KAAL,CAAWgB,OANtB,CAMgC;AANhC;AAOC,MAAA,MAAM,EAAG,KAAKhB,KAAL,CAAWiB,MAPrB,CAO8B;AAP9B;AAQC,MAAA,UAAU,EACP,KAAKjB,KAAL,CAAWkB,KAAX,IAAoB,KAAKlB,KAAL,CAAWkB,KAAX,CAAiBC,UAAvC,IACA5B,MAAM,CAAE,yBAAF,CAAN,CAAoC4B,UAVtC;AAYC,MAAA,KAAK,EACJ,KAAKnB,KAAL,CAAWkB,KAAX,IAAoB3B,MAAM,CAAE,yBAAF,CAb5B;AAeC,MAAA,aAAa,EAAG;AAfjB,OADD;AAmBA;;AApE+C","sourcesContent":["/**\n * External dependencies\n */\nimport { TextInput, Platform } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nexport default class PlainText extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.isAndroid = Platform.OS === 'android';\n\t}\n\n\tcomponentDidMount() {\n\t\t// if isSelected is true, we should request the focus on this TextInput\n\t\tif (\n\t\t\tthis._input &&\n\t\t\tthis._input.isFocused() === false &&\n\t\t\tthis.props.isSelected\n\t\t) {\n\t\t\tif ( this.isAndroid ) {\n\t\t\t\t/*\n\t\t\t\t * There seems to be an issue in React Native where the keyboard doesn't show if called shortly after rendering.\n\t\t\t\t * As a common work around this delay is used.\n\t\t\t\t * https://github.com/facebook/react-native/issues/19366#issuecomment-400603928\n\t\t\t\t */\n\t\t\t\tthis.timeoutID = setTimeout( () => {\n\t\t\t\t\tthis._input.focus();\n\t\t\t\t}, 100 );\n\t\t\t} else {\n\t\t\t\tthis._input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( ! this.props.isSelected && prevProps.isSelected ) {\n\t\t\tthis._input.blur();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif ( this.isAndroid ) {\n\t\t\tclearTimeout( this.timeoutID );\n\t\t}\n\t}\n\n\tfocus() {\n\t\tthis._input.focus();\n\t}\n\n\tblur() {\n\t\tthis._input.blur();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<TextInput\n\t\t\t\t{ ...this.props }\n\t\t\t\tref={ ( x ) => ( this._input = x ) }\n\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\tthis.props.onChange( event.nativeEvent.text );\n\t\t\t\t} }\n\t\t\t\tonFocus={ this.props.onFocus } // always assign onFocus as a props\n\t\t\t\tonBlur={ this.props.onBlur } // always assign onBlur as a props\n\t\t\t\tfontFamily={\n\t\t\t\t\t( this.props.style && this.props.style.fontFamily ) ||\n\t\t\t\t\tstyles[ 'block-editor-plain-text' ].fontFamily\n\t\t\t\t}\n\t\t\t\tstyle={\n\t\t\t\t\tthis.props.style || styles[ 'block-editor-plain-text' ]\n\t\t\t\t}\n\t\t\t\tscrollEnabled={ false }\n\t\t\t/>\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/plain-text/index.native.js"],"names":["TextInput","Platform","Dimensions","Component","getPxFromCssUnit","styles","PlainText","constructor","arguments","isAndroid","OS","componentDidMount","_input","isFocused","props","isSelected","timeoutID","setTimeout","focus","componentDidUpdate","prevProps","blur","componentWillUnmount","clearTimeout","getFontSize","style","fontSize","width","height","get","cssUnitOptions","parseFloat","render","textStyles","x","event","onChange","nativeEvent","text","onFocus","onBlur","fontFamily"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { TextInput, Platform, Dimensions } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { getPxFromCssUnit } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nexport default class PlainText extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.isAndroid = Platform.OS === 'android';\n\t}\n\n\tcomponentDidMount() {\n\t\t// if isSelected is true, we should request the focus on this TextInput\n\t\tif (\n\t\t\tthis._input &&\n\t\t\tthis._input.isFocused() === false &&\n\t\t\tthis.props.isSelected\n\t\t) {\n\t\t\tif ( this.isAndroid ) {\n\t\t\t\t/*\n\t\t\t\t * There seems to be an issue in React Native where the keyboard doesn't show if called shortly after rendering.\n\t\t\t\t * As a common work around this delay is used.\n\t\t\t\t * https://github.com/facebook/react-native/issues/19366#issuecomment-400603928\n\t\t\t\t */\n\t\t\t\tthis.timeoutID = setTimeout( () => {\n\t\t\t\t\tthis._input.focus();\n\t\t\t\t}, 100 );\n\t\t\t} else {\n\t\t\t\tthis._input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( ! this.props.isSelected && prevProps.isSelected ) {\n\t\t\tthis._input.blur();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif ( this.isAndroid ) {\n\t\t\tclearTimeout( this.timeoutID );\n\t\t}\n\t}\n\n\tfocus() {\n\t\tthis._input.focus();\n\t}\n\n\tblur() {\n\t\tthis._input.blur();\n\t}\n\n\tgetFontSize() {\n\t\tconst { style } = this.props;\n\n\t\tif ( ! style?.fontSize ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { width, height } = Dimensions.get( 'window' );\n\t\tconst cssUnitOptions = { height, width };\n\n\t\treturn {\n\t\t\tfontSize: parseFloat(\n\t\t\t\tgetPxFromCssUnit( style.fontSize, cssUnitOptions )\n\t\t\t),\n\t\t};\n\t}\n\n\trender() {\n\t\tconst { style } = this.props;\n\t\tconst textStyles = [\n\t\t\tstyle || styles[ 'block-editor-plain-text' ],\n\t\t\tthis.getFontSize(),\n\t\t];\n\n\t\treturn (\n\t\t\t<TextInput\n\t\t\t\t{ ...this.props }\n\t\t\t\tref={ ( x ) => ( this._input = x ) }\n\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\tthis.props.onChange( event.nativeEvent.text );\n\t\t\t\t} }\n\t\t\t\tonFocus={ this.props.onFocus } // always assign onFocus as a props\n\t\t\t\tonBlur={ this.props.onBlur } // always assign onBlur as a props\n\t\t\t\tfontFamily={\n\t\t\t\t\t( this.props.style && this.props.style.fontFamily ) ||\n\t\t\t\t\tstyles[ 'block-editor-plain-text' ].fontFamily\n\t\t\t\t}\n\t\t\t\tstyle={ textStyles }\n\t\t\t\tscrollEnabled={ false }\n\t\t\t/>\n\t\t);\n\t}\n}\n"]}
@@ -0,0 +1,53 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import { noop } from 'lodash';
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+
11
+ import { forwardRef, useRef, useImperativeHandle, memo, useCallback } from '@wordpress/element';
12
+ import { Picker } from '@wordpress/components';
13
+ import { __ } from '@wordpress/i18n';
14
+ const DEFAULT_PICKER_OPTIONS = [{
15
+ id: 'createEmbed',
16
+ label: __('Create embed'),
17
+ value: 'createEmbed',
18
+ onSelect: noop
19
+ }, {
20
+ id: 'createLink',
21
+ label: __('Create link'),
22
+ value: 'createLink',
23
+ onSelect: noop
24
+ }];
25
+ const EmbedHandlerPicker = forwardRef(({}, ref) => {
26
+ const pickerRef = useRef();
27
+ const pickerOptions = useRef(DEFAULT_PICKER_OPTIONS).current;
28
+ const onPickerSelect = useCallback(value => {
29
+ const selectedItem = pickerOptions.find(item => item.value === value);
30
+ selectedItem.onSelect();
31
+ }, [pickerOptions]);
32
+ useImperativeHandle(ref, () => ({
33
+ presentPicker: ({
34
+ createEmbed,
35
+ createLink
36
+ }) => {
37
+ var _pickerRef$current;
38
+
39
+ pickerOptions[0].onSelect = createEmbed;
40
+ pickerOptions[1].onSelect = createLink;
41
+ (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 ? void 0 : _pickerRef$current.presentPicker();
42
+ }
43
+ }));
44
+ return createElement(Picker, {
45
+ ref: pickerRef,
46
+ options: pickerOptions,
47
+ onChange: onPickerSelect,
48
+ hideCancelButton: true,
49
+ leftAlign: true
50
+ });
51
+ });
52
+ export default memo(EmbedHandlerPicker);
53
+ //# sourceMappingURL=embed-handler-picker.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/embed-handler-picker.native.js"],"names":["noop","forwardRef","useRef","useImperativeHandle","memo","useCallback","Picker","__","DEFAULT_PICKER_OPTIONS","id","label","value","onSelect","EmbedHandlerPicker","ref","pickerRef","pickerOptions","current","onPickerSelect","selectedItem","find","item","presentPicker","createEmbed","createLink"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,IAAT,QAAqB,QAArB;AAEA;AACA;AACA;;AACA,SACCC,UADD,EAECC,MAFD,EAGCC,mBAHD,EAICC,IAJD,EAKCC,WALD,QAMO,oBANP;AAOA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA,MAAMC,sBAAsB,GAAG,CAC9B;AACCC,EAAAA,EAAE,EAAE,aADL;AAECC,EAAAA,KAAK,EAAEH,EAAE,CAAE,cAAF,CAFV;AAGCI,EAAAA,KAAK,EAAE,aAHR;AAICC,EAAAA,QAAQ,EAAEZ;AAJX,CAD8B,EAO9B;AACCS,EAAAA,EAAE,EAAE,YADL;AAECC,EAAAA,KAAK,EAAEH,EAAE,CAAE,aAAF,CAFV;AAGCI,EAAAA,KAAK,EAAE,YAHR;AAICC,EAAAA,QAAQ,EAAEZ;AAJX,CAP8B,CAA/B;AAeA,MAAMa,kBAAkB,GAAGZ,UAAU,CAAE,CAAE,EAAF,EAAMa,GAAN,KAAe;AACrD,QAAMC,SAAS,GAAGb,MAAM,EAAxB;AACA,QAAMc,aAAa,GAAGd,MAAM,CAAEM,sBAAF,CAAN,CAAiCS,OAAvD;AAEA,QAAMC,cAAc,GAAGb,WAAW,CAC/BM,KAAF,IAAa;AACZ,UAAMQ,YAAY,GAAGH,aAAa,CAACI,IAAd,CAClBC,IAAF,IAAYA,IAAI,CAACV,KAAL,KAAeA,KADP,CAArB;AAGAQ,IAAAA,YAAY,CAACP,QAAb;AACA,GANgC,EAOjC,CAAEI,aAAF,CAPiC,CAAlC;AAUAb,EAAAA,mBAAmB,CAAEW,GAAF,EAAO,OAAQ;AACjCQ,IAAAA,aAAa,EAAE,CAAE;AAAEC,MAAAA,WAAF;AAAeC,MAAAA;AAAf,KAAF,KAAmC;AAAA;;AACjDR,MAAAA,aAAa,CAAE,CAAF,CAAb,CAAmBJ,QAAnB,GAA8BW,WAA9B;AACAP,MAAAA,aAAa,CAAE,CAAF,CAAb,CAAmBJ,QAAnB,GAA8BY,UAA9B;AACA,4BAAAT,SAAS,CAACE,OAAV,0EAAmBK,aAAnB;AACA;AALgC,GAAR,CAAP,CAAnB;AAQA,SACC,cAAC,MAAD;AACC,IAAA,GAAG,EAAGP,SADP;AAEC,IAAA,OAAO,EAAGC,aAFX;AAGC,IAAA,QAAQ,EAAGE,cAHZ;AAIC,IAAA,gBAAgB,MAJjB;AAKC,IAAA,SAAS;AALV,IADD;AASA,CA/BoC,CAArC;AAiCA,eAAed,IAAI,CAAES,kBAAF,CAAnB","sourcesContent":["/**\n * External dependencies\n */\nimport { noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseRef,\n\tuseImperativeHandle,\n\tmemo,\n\tuseCallback,\n} from '@wordpress/element';\nimport { Picker } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst DEFAULT_PICKER_OPTIONS = [\n\t{\n\t\tid: 'createEmbed',\n\t\tlabel: __( 'Create embed' ),\n\t\tvalue: 'createEmbed',\n\t\tonSelect: noop,\n\t},\n\t{\n\t\tid: 'createLink',\n\t\tlabel: __( 'Create link' ),\n\t\tvalue: 'createLink',\n\t\tonSelect: noop,\n\t},\n];\n\nconst EmbedHandlerPicker = forwardRef( ( {}, ref ) => {\n\tconst pickerRef = useRef();\n\tconst pickerOptions = useRef( DEFAULT_PICKER_OPTIONS ).current;\n\n\tconst onPickerSelect = useCallback(\n\t\t( value ) => {\n\t\t\tconst selectedItem = pickerOptions.find(\n\t\t\t\t( item ) => item.value === value\n\t\t\t);\n\t\t\tselectedItem.onSelect();\n\t\t},\n\t\t[ pickerOptions ]\n\t);\n\n\tuseImperativeHandle( ref, () => ( {\n\t\tpresentPicker: ( { createEmbed, createLink } ) => {\n\t\t\tpickerOptions[ 0 ].onSelect = createEmbed;\n\t\t\tpickerOptions[ 1 ].onSelect = createLink;\n\t\t\tpickerRef.current?.presentPicker();\n\t\t},\n\t} ) );\n\n\treturn (\n\t\t<Picker\n\t\t\tref={ pickerRef }\n\t\t\toptions={ pickerOptions }\n\t\t\tonChange={ onPickerSelect }\n\t\t\thideCancelButton\n\t\t\tleftAlign\n\t\t/>\n\t);\n} );\n\nexport default memo( EmbedHandlerPicker );\n"]}
@@ -17,6 +17,7 @@ import { useInstanceId, useMergeRefs } from '@wordpress/compose';
17
17
  import { __unstableUseRichText as useRichText, __unstableCreateElement, isEmpty, isCollapsed, removeFormat } from '@wordpress/rich-text';
18
18
  import deprecated from '@wordpress/deprecated';
19
19
  import { BACKSPACE, DELETE } from '@wordpress/keycodes';
20
+ import { Popover } from '@wordpress/components';
20
21
  /**
21
22
  * Internal dependencies
22
23
  */
@@ -270,6 +271,8 @@ function RichTextWrapper({
270
271
  value: keyboardShortcuts
271
272
  }, createElement(inputEventContext.Provider, {
272
273
  value: inputEvents
274
+ }, createElement(Popover.__unstableSlotNameProvider, {
275
+ value: "__unstable-block-tools-after"
273
276
  }, children && children({
274
277
  value,
275
278
  onChange,
@@ -280,7 +283,7 @@ function RichTextWrapper({
280
283
  onFocus: onFocus,
281
284
  formatTypes: formatTypes,
282
285
  forwardedRef: anchorRef
283
- }))), isSelected && hasFormats && createElement(FormatToolbarContainer, {
286
+ })))), isSelected && hasFormats && createElement(FormatToolbarContainer, {
284
287
  inline: inlineToolbar,
285
288
  anchorRef: anchorRef.current
286
289
  }), createElement(TagName // Overridable props.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["classnames","omit","RawHTML","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","children","childrenSource","useInstanceId","useMergeRefs","__unstableUseRichText","useRichText","__unstableCreateElement","isEmpty","isCollapsed","removeFormat","deprecated","BACKSPACE","DELETE","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useCaretInFormat","useMarkPersistent","usePasteHandler","useInputRules","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","FormatEdit","getMultilineTag","getAllowedFormats","keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","forwardedRef","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","undefined","attributeKey","offset","disabled","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\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\tformattingControls,\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...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\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\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected, disabled } = useSelect(\n\t\tselector\n\t);\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\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( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\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\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ true }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\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\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\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\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t] ) }\n\t\t\t\t// Do not set the attribute if disabled.\n\t\t\t\tcontentEditable={ disabled ? undefined : true }\n\t\t\t\tsuppressContentEditableWarning={ ! disabled }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\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"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["classnames","omit","RawHTML","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","children","childrenSource","useInstanceId","useMergeRefs","__unstableUseRichText","useRichText","__unstableCreateElement","isEmpty","isCollapsed","removeFormat","deprecated","BACKSPACE","DELETE","Popover","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useCaretInFormat","useMarkPersistent","usePasteHandler","useInputRules","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","FormatEdit","getMultilineTag","getAllowedFormats","keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","forwardedRef","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","undefined","attributeKey","offset","disabled","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\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\tformattingControls,\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...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\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\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected, disabled } = useSelect(\n\t\tselector\n\t);\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\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( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\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\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ true }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\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\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\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\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t] ) }\n\t\t\t\t// Do not set the attribute if disabled.\n\t\t\t\tcontentEditable={ disabled ? undefined : true }\n\t\t\t\tsuppressContentEditableWarning={ ! disabled }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\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"]}
@@ -28,7 +28,8 @@ import { filePasteHandler } from './file-paste-handler';
28
28
  import FormatToolbarContainer from './format-toolbar-container';
29
29
  import { useNativeProps } from './use-native-props';
30
30
  import { store as blockEditorStore } from '../../store';
31
- import { addActiveFormats, getMultilineTag, getAllowedFormats, isShortcode } from './utils';
31
+ import { addActiveFormats, getMultilineTag, getAllowedFormats, isShortcode, createLinkInParagraph } from './utils';
32
+ import EmbedHandlerPicker from './embed-handler-picker';
32
33
  const wrapperClasses = 'block-editor-rich-text';
33
34
  const classes = 'block-editor-rich-text__editable';
34
35
 
@@ -88,6 +89,7 @@ function RichTextWrapper({
88
89
  isSelected: blockIsSelected
89
90
  } = useBlockEditContext();
90
91
  const nativeProps = useNativeProps();
92
+ const embedHandlerPickerRef = useRef();
91
93
 
92
94
  const selector = select => {
93
95
  const {
@@ -368,7 +370,18 @@ function RichTextWrapper({
368
370
  mode = 'BLOCKS';
369
371
  }
370
372
 
371
- if (__unstableEmbedURLOnPaste && isEmpty(value) && isURL(plainText.trim())) {
373
+ const isPastedURL = isURL(plainText.trim());
374
+
375
+ const presentEmbedHandlerPicker = () => {
376
+ var _embedHandlerPickerRe;
377
+
378
+ return (_embedHandlerPickerRe = embedHandlerPickerRef.current) === null || _embedHandlerPickerRe === void 0 ? void 0 : _embedHandlerPickerRe.presentPicker({
379
+ createEmbed: () => onReplace(content, content.length - 1, -1),
380
+ createLink: () => createLinkInParagraph(plainText.trim(), onReplace)
381
+ });
382
+ };
383
+
384
+ if (__unstableEmbedURLOnPaste && isEmpty(value) && isPastedURL) {
372
385
  mode = 'BLOCKS';
373
386
  }
374
387
 
@@ -393,9 +406,32 @@ function RichTextWrapper({
393
406
 
394
407
  onChange(insert(value, valueToInsert));
395
408
  } else if (content.length > 0) {
409
+ // When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL
410
+ // into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.
411
+ const canPasteEmbed = isPastedURL && content.length === 1 && content[0].name === 'core/embed';
412
+
396
413
  if (onReplace && isEmpty(value)) {
414
+ if (canPasteEmbed) {
415
+ onChange(insert(value, create({
416
+ text: plainText
417
+ })));
418
+
419
+ if (__unstableEmbedURLOnPaste) {
420
+ presentEmbedHandlerPicker();
421
+ }
422
+
423
+ return;
424
+ }
425
+
397
426
  onReplace(content, content.length - 1, -1);
398
427
  } else {
428
+ if (canPasteEmbed) {
429
+ onChange(insert(value, create({
430
+ text: plainText
431
+ })));
432
+ return;
433
+ }
434
+
399
435
  splitValue(value, content);
400
436
  }
401
437
  }
@@ -530,7 +566,9 @@ function RichTextWrapper({
530
566
  onKeyDown(event);
531
567
  editableProps.onKeyDown(event);
532
568
  }
533
- })))));
569
+ }))), createElement(EmbedHandlerPicker, {
570
+ ref: embedHandlerPickerRef
571
+ })));
534
572
 
535
573
  if (!wrapperClassName) {
536
574
  return content;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["classnames","omit","RawHTML","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","__unstableIsEmptyLine","isEmptyLine","insert","__unstableInsertLineSeparator","insertLineSeparator","create","replace","split","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","toHTMLString","slice","deprecated","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","useNativeProps","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","wrapperClasses","classes","RichTextWrapper","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","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","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","props","forwardedRef","instanceId","fallbackRef","clientId","blockIsSelected","nativeProps","selector","select","isCaretWithinFormattedText","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","onEnter","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","trim","valueToInsert","inputRule","valueToFormat","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","current","listBoxId","activeId","onKeyDown","className","event","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","defaultProps","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} 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 deprecated from '@wordpress/deprecated';\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 { useNativeProps } from './use-native-props';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n} from './utils';\n\nconst wrapperClasses = 'block-editor-rich-text';\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\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\tformattingControls,\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\trootTagsToEliminate,\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\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 nativeProps = useNativeProps();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tisCaretWithinFormattedText,\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\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\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// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tisCaretWithinFormattedText,\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\tformattingControls,\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( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\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 ( 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, 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 ( 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[\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\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisURL( plainText.trim() )\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\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\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, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = valueToFormat( slice( value, start, text.length ) );\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\tconst content = (\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\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__unstableIsCaretWithinFormattedText={ isCaretWithinFormattedText }\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\t{ ...nativeProps }\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\trootTagsToEliminate={ rootTagsToEliminate }\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\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</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t} );\n\n\treturn (\n\t\t<div className={ classnames( wrapperClasses, wrapperClassName ) }>\n\t\t\t{ content }\n\t\t</div>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\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"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["classnames","omit","RawHTML","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","__unstableIsEmptyLine","isEmptyLine","insert","__unstableInsertLineSeparator","insertLineSeparator","create","replace","split","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","toHTMLString","slice","deprecated","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","useNativeProps","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","createLinkInParagraph","EmbedHandlerPicker","wrapperClasses","classes","RichTextWrapper","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","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","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","props","forwardedRef","instanceId","fallbackRef","clientId","blockIsSelected","nativeProps","embedHandlerPickerRef","selector","select","isCaretWithinFormattedText","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","onEnter","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","defaultProps","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} 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 deprecated from '@wordpress/deprecated';\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 { useNativeProps } from './use-native-props';\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';\n\nconst wrapperClasses = 'block-editor-rich-text';\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\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\tformattingControls,\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\trootTagsToEliminate,\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\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 nativeProps = useNativeProps();\n\tconst embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tisCaretWithinFormattedText,\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\tisCaretWithinFormattedText: isCaretWithinFormattedText(),\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// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tisCaretWithinFormattedText,\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\tformattingControls,\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( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\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 ( 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, 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 ( 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[\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, text } = value;\n\t\t\tconst characterBefore = text.slice( start - 1, start );\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, start ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = valueToFormat( slice( value, start, text.length ) );\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\tconst content = (\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\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__unstableIsCaretWithinFormattedText={ isCaretWithinFormattedText }\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\t{ ...nativeProps }\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\trootTagsToEliminate={ rootTagsToEliminate }\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\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\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t} );\n\n\treturn (\n\t\t<div className={ classnames( wrapperClasses, wrapperClassName ) }>\n\t\t\t{ content }\n\t\t</div>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\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"]}
@@ -14,6 +14,26 @@ import { isURL } from '@wordpress/url';
14
14
  import { filePasteHandler } from './file-paste-handler';
15
15
  import { addActiveFormats, isShortcode } from './utils';
16
16
  import { splitValue } from './split-value';
17
+ /** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */
18
+
19
+ /**
20
+ * Replaces line separators with line breaks if not multiline.
21
+ * Replaces line breaks with line separators if multiline.
22
+ *
23
+ * @param {RichTextValue} value Value to adjust.
24
+ * @param {boolean} isMultiline Whether to adjust to multiline or not.
25
+ *
26
+ * @return {RichTextValue} Adjusted value.
27
+ */
28
+
29
+ function adjustLines(value, isMultiline) {
30
+ if (isMultiline) {
31
+ return replace(value, /\n+/g, LINE_SEPARATOR);
32
+ }
33
+
34
+ return replace(value, new RegExp(LINE_SEPARATOR, 'g'), '\n');
35
+ }
36
+
17
37
  export function usePasteHandler(props) {
18
38
  const propsRef = useRef(props);
19
39
  propsRef.current = props;
@@ -99,12 +119,14 @@ export function usePasteHandler(props) {
99
119
  // pasted content and remove inline styles.
100
120
 
101
121
  if (isInternal) {
102
- const pastedValue = create({
122
+ const pastedMultilineTag = clipboardData.getData('rich-text-multi-line-tag') || undefined;
123
+ let pastedValue = create({
103
124
  html,
104
- multilineTag,
105
- multilineWrapperTags: multilineTag === 'li' ? ['ul', 'ol'] : undefined,
125
+ multilineTag: pastedMultilineTag,
126
+ multilineWrapperTags: pastedMultilineTag === 'li' ? ['ul', 'ol'] : undefined,
106
127
  preserveWhiteSpace
107
128
  });
129
+ pastedValue = adjustLines(pastedValue, !!multilineTag);
108
130
  addActiveFormats(pastedValue, value.activeFormats);
109
131
  onChange(insert(value, pastedValue));
110
132
  return;
@@ -170,14 +192,11 @@ export function usePasteHandler(props) {
170
192
  if (typeof content === 'string') {
171
193
  let valueToInsert = create({
172
194
  html: content
173
- });
174
- addActiveFormats(valueToInsert, value.activeFormats); // If the content should be multiline, we should process text
195
+ }); // If the content should be multiline, we should process text
175
196
  // separated by a line break as separate lines.
176
197
 
177
- if (multilineTag) {
178
- valueToInsert = replace(valueToInsert, /\n+/g, LINE_SEPARATOR);
179
- }
180
-
198
+ valueToInsert = adjustLines(valueToInsert, !!multilineTag);
199
+ addActiveFormats(valueToInsert, value.activeFormats);
181
200
  onChange(insert(value, valueToInsert));
182
201
  } else if (content.length > 0) {
183
202
  if (onReplace && isEmpty(value)) {