@wordpress/block-editor 7.0.2 → 8.0.1

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 (801) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +45 -1
  3. package/build/components/autocomplete/index.js +1 -1
  4. package/build/components/autocomplete/index.js.map +1 -1
  5. package/build/components/block-actions/index.js +8 -4
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +61 -14
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-alignment-control/use-available-alignments.js +25 -3
  10. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  11. package/build/components/block-controls/fill.js +2 -2
  12. package/build/components/block-controls/fill.js.map +1 -1
  13. package/build/components/block-controls/hook.js +3 -3
  14. package/build/components/block-controls/hook.js.map +1 -1
  15. package/build/components/block-icon/index.js +5 -1
  16. package/build/components/block-icon/index.js.map +1 -1
  17. package/build/components/block-icon/index.native.js +9 -11
  18. package/build/components/block-icon/index.native.js.map +1 -1
  19. package/build/components/block-inspector/index.js +8 -0
  20. package/build/components/block-inspector/index.js.map +1 -1
  21. package/build/components/block-list/block-html.js +5 -0
  22. package/build/components/block-list/block-html.js.map +1 -1
  23. package/build/components/block-list/block.js +12 -5
  24. package/build/components/block-list/block.js.map +1 -1
  25. package/build/components/block-list/block.native.js +4 -3
  26. package/build/components/block-list/block.native.js.map +1 -1
  27. package/build/components/block-list/index.native.js +1 -1
  28. package/build/components/block-list/index.native.js.map +1 -1
  29. package/build/components/block-list/use-block-props/use-multi-selection.js +21 -8
  30. package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  31. package/build/components/block-list-appender/index.js +9 -1
  32. package/build/components/block-list-appender/index.js.map +1 -1
  33. package/build/components/block-mover/index.js +4 -4
  34. package/build/components/block-mover/index.js.map +1 -1
  35. package/build/components/block-mover/index.native.js +4 -4
  36. package/build/components/block-mover/index.native.js.map +1 -1
  37. package/build/components/block-navigation/dropdown.js +0 -1
  38. package/build/components/block-navigation/dropdown.js.map +1 -1
  39. package/build/components/block-patterns-list/index.js +1 -8
  40. package/build/components/block-patterns-list/index.js.map +1 -1
  41. package/build/components/block-preview/auto.js +1 -1
  42. package/build/components/block-preview/auto.js.map +1 -1
  43. package/build/components/block-settings/container.native.js +5 -2
  44. package/build/components/block-settings/container.native.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +26 -5
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-settings-menu-controls/index.js +10 -3
  48. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  49. package/build/components/block-styles/preview.native.js +2 -2
  50. package/build/components/block-styles/preview.native.js.map +1 -1
  51. package/build/components/block-switcher/block-styles-menu.js +1 -1
  52. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  53. package/build/components/block-switcher/index.js +10 -3
  54. package/build/components/block-switcher/index.js.map +1 -1
  55. package/build/components/block-title/index.js +3 -2
  56. package/build/components/block-title/index.js.map +1 -1
  57. package/build/components/block-tools/block-popover.js +2 -4
  58. package/build/components/block-tools/block-popover.js.map +1 -1
  59. package/build/components/block-tools/index.js +4 -1
  60. package/build/components/block-tools/index.js.map +1 -1
  61. package/build/components/block-tools/insertion-point.js +96 -7
  62. package/build/components/block-tools/insertion-point.js.map +1 -1
  63. package/build/components/border-radius-control/index.js.map +1 -1
  64. package/build/components/border-radius-control/utils.js +17 -8
  65. package/build/components/border-radius-control/utils.js.map +1 -1
  66. package/build/components/colors/utils.js +11 -3
  67. package/build/components/colors/utils.js.map +1 -1
  68. package/build/components/colors-gradients/control.js +22 -57
  69. package/build/components/colors-gradients/control.js.map +1 -1
  70. package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
  71. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  72. package/build/components/contrast-checker/index.js +18 -12
  73. package/build/components/contrast-checker/index.js.map +1 -1
  74. package/build/components/copy-handler/index.js +9 -3
  75. package/build/components/copy-handler/index.js.map +1 -1
  76. package/build/components/default-block-appender/index.js +2 -2
  77. package/build/components/default-block-appender/index.js.map +1 -1
  78. package/build/components/duotone-control/index.js +41 -39
  79. package/build/components/duotone-control/index.js.map +1 -1
  80. package/build/components/editor-styles/index.js +9 -3
  81. package/build/components/editor-styles/index.js.map +1 -1
  82. package/build/components/font-appearance-control/index.js +32 -21
  83. package/build/components/font-appearance-control/index.js.map +1 -1
  84. package/build/components/iframe/index.js +6 -4
  85. package/build/components/iframe/index.js.map +1 -1
  86. package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
  87. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  88. package/build/components/image-editor/constants.js +16 -0
  89. package/build/components/image-editor/constants.js.map +1 -0
  90. package/build/components/image-editor/context.js +59 -0
  91. package/build/components/image-editor/context.js.map +1 -0
  92. package/build/components/image-editor/cropper.js +83 -0
  93. package/build/components/image-editor/cropper.js.map +1 -0
  94. package/build/components/image-editor/form-controls.js +36 -0
  95. package/build/components/image-editor/form-controls.js.map +1 -0
  96. package/build/components/image-editor/index.js +60 -0
  97. package/build/components/image-editor/index.js.map +1 -0
  98. package/build/components/image-editor/rotation-button.js +37 -0
  99. package/build/components/image-editor/rotation-button.js.map +1 -0
  100. package/build/components/image-editor/use-save-image.js +84 -0
  101. package/build/components/image-editor/use-save-image.js.map +1 -0
  102. package/build/components/image-editor/use-transform-image.js +135 -0
  103. package/build/components/image-editor/use-transform-image.js.map +1 -0
  104. package/build/components/image-editor/zoom-dropdown.js +55 -0
  105. package/build/components/image-editor/zoom-dropdown.js.map +1 -0
  106. package/build/components/image-size-control/use-dimension-handler.js +14 -3
  107. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  108. package/build/components/index.js +36 -20
  109. package/build/components/index.js.map +1 -1
  110. package/build/components/index.native.js +2 -2
  111. package/build/components/index.native.js.map +1 -1
  112. package/build/components/inner-blocks/button-block-appender.js +11 -1
  113. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  114. package/build/components/inner-blocks/index.js +8 -5
  115. package/build/components/inner-blocks/index.js.map +1 -1
  116. package/build/components/inner-blocks/index.native.js +4 -3
  117. package/build/components/inner-blocks/index.native.js.map +1 -1
  118. package/build/components/inner-blocks/use-nested-settings-update.js +24 -13
  119. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  120. package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
  121. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  122. package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
  123. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  124. package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
  125. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  126. package/build/components/inserter/block-patterns-tab.js +74 -35
  127. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  128. package/build/components/inserter/block-types-tab.native.js +3 -11
  129. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  130. package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  131. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  132. package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  133. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  134. package/build/components/inserter/index.js +12 -4
  135. package/build/components/inserter/index.js.map +1 -1
  136. package/build/components/inserter/index.native.js +1 -7
  137. package/build/components/inserter/index.native.js.map +1 -1
  138. package/build/components/inserter/library.js +2 -0
  139. package/build/components/inserter/library.js.map +1 -1
  140. package/build/components/inserter/menu.js +2 -1
  141. package/build/components/inserter/menu.js.map +1 -1
  142. package/build/components/inserter/menu.native.js +11 -15
  143. package/build/components/inserter/menu.native.js.map +1 -1
  144. package/build/components/inserter/pattern-panel.js +19 -10
  145. package/build/components/inserter/pattern-panel.js.map +1 -1
  146. package/build/components/inserter/preview-panel.js +1 -1
  147. package/build/components/inserter/preview-panel.js.map +1 -1
  148. package/build/components/inserter/quick-inserter.js +2 -1
  149. package/build/components/inserter/quick-inserter.js.map +1 -1
  150. package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
  151. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  152. package/build/components/inserter/search-results.native.js +6 -11
  153. package/build/components/inserter/search-results.native.js.map +1 -1
  154. package/build/components/inserter/utils.native.js +44 -0
  155. package/build/components/inserter/utils.native.js.map +1 -0
  156. package/build/components/inspector-controls/block-support-slot-container.js +28 -0
  157. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
  158. package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
  159. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  160. package/build/components/inspector-controls/fill.js +16 -1
  161. package/build/components/inspector-controls/fill.js.map +1 -1
  162. package/build/components/inspector-controls/groups.js +5 -1
  163. package/build/components/inspector-controls/groups.js.map +1 -1
  164. package/build/components/inspector-controls/slot.js +15 -0
  165. package/build/components/inspector-controls/slot.js.map +1 -1
  166. package/build/components/letter-spacing-control/index.js +9 -6
  167. package/build/components/letter-spacing-control/index.js.map +1 -1
  168. package/build/components/link-control/index.js +93 -34
  169. package/build/components/link-control/index.js.map +1 -1
  170. package/build/components/link-control/link-preview.js +45 -15
  171. package/build/components/link-control/link-preview.js.map +1 -1
  172. package/build/components/link-control/search-input.js +25 -7
  173. package/build/components/link-control/search-input.js.map +1 -1
  174. package/build/components/list-view/block-contents.js +1 -20
  175. package/build/components/list-view/block-contents.js.map +1 -1
  176. package/build/components/list-view/block.js +54 -69
  177. package/build/components/list-view/block.js.map +1 -1
  178. package/build/components/list-view/branch.js +102 -76
  179. package/build/components/list-view/branch.js.map +1 -1
  180. package/build/components/list-view/index.js +45 -20
  181. package/build/components/list-view/index.js.map +1 -1
  182. package/build/components/list-view/leaf.js +2 -2
  183. package/build/components/list-view/leaf.js.map +1 -1
  184. package/build/components/list-view/list-item.js +3 -2
  185. package/build/components/list-view/list-item.js.map +1 -1
  186. package/build/components/list-view/use-list-view-client-ids.js +13 -54
  187. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  188. package/build/components/media-placeholder/index.js +29 -20
  189. package/build/components/media-placeholder/index.js.map +1 -1
  190. package/build/components/media-replace-flow/index.js +5 -3
  191. package/build/components/media-replace-flow/index.js.map +1 -1
  192. package/build/components/navigable-toolbar/index.js +1 -4
  193. package/build/components/navigable-toolbar/index.js.map +1 -1
  194. package/build/components/observe-typing/index.js +1 -1
  195. package/build/components/observe-typing/index.js.map +1 -1
  196. package/build/components/plain-text/index.native.js +30 -1
  197. package/build/components/plain-text/index.native.js.map +1 -1
  198. package/build/components/rich-text/embed-handler-picker.native.js +66 -0
  199. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
  200. package/build/components/rich-text/format-edit.js +28 -2
  201. package/build/components/rich-text/format-edit.js.map +1 -1
  202. package/build/components/rich-text/format-toolbar/index.js +32 -11
  203. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  204. package/build/components/rich-text/index.js +5 -1
  205. package/build/components/rich-text/index.js.map +1 -1
  206. package/build/components/rich-text/index.native.js +41 -2
  207. package/build/components/rich-text/index.native.js.map +1 -1
  208. package/build/components/rich-text/use-paste-handler.js +28 -9
  209. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  210. package/build/components/rich-text/utils.js +22 -0
  211. package/build/components/rich-text/utils.js.map +1 -1
  212. package/build/components/typewriter/index.js +1 -1
  213. package/build/components/typewriter/index.js.map +1 -1
  214. package/build/components/url-input/index.js +25 -11
  215. package/build/components/url-input/index.js.map +1 -1
  216. package/build/components/use-moving-animation/index.js +13 -10
  217. package/build/components/use-moving-animation/index.js.map +1 -1
  218. package/build/components/use-on-block-drop/index.js +2 -1
  219. package/build/components/use-on-block-drop/index.js.map +1 -1
  220. package/build/components/use-setting/index.js +48 -9
  221. package/build/components/use-setting/index.js.map +1 -1
  222. package/build/components/writing-flow/use-multi-selection.js +6 -0
  223. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  224. package/build/components/writing-flow/use-tab-nav.js +10 -1
  225. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  226. package/build/hooks/align.js +13 -10
  227. package/build/hooks/align.js.map +1 -1
  228. package/build/hooks/anchor.js +1 -1
  229. package/build/hooks/anchor.js.map +1 -1
  230. package/build/hooks/border.js +5 -5
  231. package/build/hooks/border.js.map +1 -1
  232. package/build/hooks/color-panel.js +5 -2
  233. package/build/hooks/color-panel.js.map +1 -1
  234. package/build/hooks/color.js +1 -1
  235. package/build/hooks/color.js.map +1 -1
  236. package/build/hooks/dimensions.js +23 -27
  237. package/build/hooks/dimensions.js.map +1 -1
  238. package/build/hooks/duotone.js +60 -16
  239. package/build/hooks/duotone.js.map +1 -1
  240. package/build/hooks/font-appearance.js +49 -6
  241. package/build/hooks/font-appearance.js.map +1 -1
  242. package/build/hooks/font-family.js +123 -32
  243. package/build/hooks/font-family.js.map +1 -1
  244. package/build/hooks/font-size.js +51 -9
  245. package/build/hooks/font-size.js.map +1 -1
  246. package/build/hooks/gap.js +2 -1
  247. package/build/hooks/gap.js.map +1 -1
  248. package/build/hooks/index.js +10 -0
  249. package/build/hooks/index.js.map +1 -1
  250. package/build/hooks/index.native.js +8 -0
  251. package/build/hooks/index.native.js.map +1 -1
  252. package/build/hooks/letter-spacing.js +44 -7
  253. package/build/hooks/letter-spacing.js.map +1 -1
  254. package/build/hooks/line-height.js +45 -8
  255. package/build/hooks/line-height.js.map +1 -1
  256. package/build/hooks/lock.js +43 -0
  257. package/build/hooks/lock.js.map +1 -0
  258. package/build/hooks/margin.js +1 -1
  259. package/build/hooks/margin.js.map +1 -1
  260. package/build/hooks/padding.js +1 -1
  261. package/build/hooks/padding.js.map +1 -1
  262. package/build/hooks/style.js +7 -4
  263. package/build/hooks/style.js.map +1 -1
  264. package/build/hooks/text-decoration.js +42 -6
  265. package/build/hooks/text-decoration.js.map +1 -1
  266. package/build/hooks/text-transform.js +42 -6
  267. package/build/hooks/text-transform.js.map +1 -1
  268. package/build/hooks/typography.js +108 -8
  269. package/build/hooks/typography.js.map +1 -1
  270. package/build/hooks/use-cached-truthy.js +29 -0
  271. package/build/hooks/use-cached-truthy.js.map +1 -0
  272. package/build/index.js +7 -0
  273. package/build/index.js.map +1 -1
  274. package/build/layouts/flex.js +160 -34
  275. package/build/layouts/flex.js.map +1 -1
  276. package/build/layouts/flow.js +75 -8
  277. package/build/layouts/flow.js.map +1 -1
  278. package/build/store/actions.js +323 -265
  279. package/build/store/actions.js.map +1 -1
  280. package/build/store/defaults.native.js +13 -1
  281. package/build/store/defaults.native.js.map +1 -1
  282. package/build/store/index.js +1 -3
  283. package/build/store/index.js.map +1 -1
  284. package/build/store/reducer.js +33 -22
  285. package/build/store/reducer.js.map +1 -1
  286. package/build/store/selectors.js +172 -38
  287. package/build/store/selectors.js.map +1 -1
  288. package/build/utils/index.js +10 -1
  289. package/build/utils/index.js.map +1 -1
  290. package/build/utils/parse-css-unit-to-px.js +51 -1
  291. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  292. package/build/utils/transform-styles/transforms/wrap.js +16 -0
  293. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  294. package/build-module/components/autocomplete/index.js +2 -2
  295. package/build-module/components/autocomplete/index.js.map +1 -1
  296. package/build-module/components/block-actions/index.js +8 -4
  297. package/build-module/components/block-actions/index.js.map +1 -1
  298. package/build-module/components/block-alignment-control/ui.js +64 -17
  299. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  300. package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
  301. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  302. package/build-module/components/block-controls/fill.js +2 -2
  303. package/build-module/components/block-controls/fill.js.map +1 -1
  304. package/build-module/components/block-controls/hook.js +3 -3
  305. package/build-module/components/block-controls/hook.js.map +1 -1
  306. package/build-module/components/block-icon/index.js +5 -1
  307. package/build-module/components/block-icon/index.js.map +1 -1
  308. package/build-module/components/block-icon/index.native.js +10 -11
  309. package/build-module/components/block-icon/index.native.js.map +1 -1
  310. package/build-module/components/block-inspector/index.js +8 -0
  311. package/build-module/components/block-inspector/index.js.map +1 -1
  312. package/build-module/components/block-list/block-html.js +5 -0
  313. package/build-module/components/block-list/block-html.js.map +1 -1
  314. package/build-module/components/block-list/block.js +12 -5
  315. package/build-module/components/block-list/block.js.map +1 -1
  316. package/build-module/components/block-list/block.native.js +4 -3
  317. package/build-module/components/block-list/block.native.js.map +1 -1
  318. package/build-module/components/block-list/index.native.js +1 -1
  319. package/build-module/components/block-list/index.native.js.map +1 -1
  320. package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -8
  321. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  322. package/build-module/components/block-list-appender/index.js +9 -1
  323. package/build-module/components/block-list-appender/index.js.map +1 -1
  324. package/build-module/components/block-mover/index.js +4 -4
  325. package/build-module/components/block-mover/index.js.map +1 -1
  326. package/build-module/components/block-mover/index.native.js +4 -4
  327. package/build-module/components/block-mover/index.native.js.map +1 -1
  328. package/build-module/components/block-navigation/dropdown.js +0 -1
  329. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  330. package/build-module/components/block-patterns-list/index.js +1 -6
  331. package/build-module/components/block-patterns-list/index.js.map +1 -1
  332. package/build-module/components/block-preview/auto.js +1 -1
  333. package/build-module/components/block-preview/auto.js.map +1 -1
  334. package/build-module/components/block-settings/container.native.js +6 -3
  335. package/build-module/components/block-settings/container.native.js.map +1 -1
  336. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -7
  337. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  338. package/build-module/components/block-settings-menu-controls/index.js +10 -3
  339. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  340. package/build-module/components/block-styles/preview.native.js +2 -2
  341. package/build-module/components/block-styles/preview.native.js.map +1 -1
  342. package/build-module/components/block-switcher/block-styles-menu.js +1 -1
  343. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  344. package/build-module/components/block-switcher/index.js +10 -3
  345. package/build-module/components/block-switcher/index.js.map +1 -1
  346. package/build-module/components/block-title/index.js +3 -2
  347. package/build-module/components/block-title/index.js.map +1 -1
  348. package/build-module/components/block-tools/block-popover.js +3 -5
  349. package/build-module/components/block-tools/block-popover.js.map +1 -1
  350. package/build-module/components/block-tools/index.js +4 -1
  351. package/build-module/components/block-tools/index.js.map +1 -1
  352. package/build-module/components/block-tools/insertion-point.js +96 -8
  353. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  354. package/build-module/components/border-radius-control/index.js.map +1 -1
  355. package/build-module/components/border-radius-control/utils.js +16 -9
  356. package/build-module/components/border-radius-control/utils.js.map +1 -1
  357. package/build-module/components/colors/utils.js +9 -3
  358. package/build-module/components/colors/utils.js.map +1 -1
  359. package/build-module/components/colors-gradients/control.js +26 -63
  360. package/build-module/components/colors-gradients/control.js.map +1 -1
  361. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
  362. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  363. package/build-module/components/contrast-checker/index.js +13 -10
  364. package/build-module/components/contrast-checker/index.js.map +1 -1
  365. package/build-module/components/copy-handler/index.js +9 -3
  366. package/build-module/components/copy-handler/index.js.map +1 -1
  367. package/build-module/components/default-block-appender/index.js +2 -2
  368. package/build-module/components/default-block-appender/index.js.map +1 -1
  369. package/build-module/components/duotone-control/index.js +43 -39
  370. package/build-module/components/duotone-control/index.js.map +1 -1
  371. package/build-module/components/editor-styles/index.js +7 -3
  372. package/build-module/components/editor-styles/index.js.map +1 -1
  373. package/build-module/components/font-appearance-control/index.js +28 -21
  374. package/build-module/components/font-appearance-control/index.js.map +1 -1
  375. package/build-module/components/iframe/index.js +6 -4
  376. package/build-module/components/iframe/index.js.map +1 -1
  377. package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
  378. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  379. package/build-module/components/image-editor/constants.js +7 -0
  380. package/build-module/components/image-editor/constants.js.map +1 -0
  381. package/build-module/components/image-editor/context.js +44 -0
  382. package/build-module/components/image-editor/context.js.map +1 -0
  383. package/build-module/components/image-editor/cropper.js +69 -0
  384. package/build-module/components/image-editor/cropper.js.map +1 -0
  385. package/build-module/components/image-editor/form-controls.js +26 -0
  386. package/build-module/components/image-editor/form-controls.js.map +1 -0
  387. package/build-module/components/image-editor/index.js +37 -0
  388. package/build-module/components/image-editor/index.js.map +1 -0
  389. package/build-module/components/image-editor/rotation-button.js +26 -0
  390. package/build-module/components/image-editor/rotation-button.js.map +1 -0
  391. package/build-module/components/image-editor/use-save-image.js +70 -0
  392. package/build-module/components/image-editor/use-save-image.js.map +1 -0
  393. package/build-module/components/image-editor/use-transform-image.js +127 -0
  394. package/build-module/components/image-editor/use-transform-image.js.map +1 -0
  395. package/build-module/components/image-editor/zoom-dropdown.js +43 -0
  396. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
  397. package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
  398. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  399. package/build-module/components/index.js +4 -3
  400. package/build-module/components/index.js.map +1 -1
  401. package/build-module/components/index.native.js +1 -1
  402. package/build-module/components/index.native.js.map +1 -1
  403. package/build-module/components/inner-blocks/button-block-appender.js +10 -1
  404. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  405. package/build-module/components/inner-blocks/index.js +9 -6
  406. package/build-module/components/inner-blocks/index.js.map +1 -1
  407. package/build-module/components/inner-blocks/index.native.js +5 -4
  408. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  409. package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -13
  410. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  411. package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
  412. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  413. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
  414. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  415. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
  416. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  417. package/build-module/components/inserter/block-patterns-tab.js +75 -36
  418. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  419. package/build-module/components/inserter/block-types-tab.native.js +2 -10
  420. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  421. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  422. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  423. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  424. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  425. package/build-module/components/inserter/index.js +12 -4
  426. package/build-module/components/inserter/index.js.map +1 -1
  427. package/build-module/components/inserter/index.native.js +1 -7
  428. package/build-module/components/inserter/index.native.js.map +1 -1
  429. package/build-module/components/inserter/library.js +2 -0
  430. package/build-module/components/inserter/library.js.map +1 -1
  431. package/build-module/components/inserter/menu.js +2 -1
  432. package/build-module/components/inserter/menu.js.map +1 -1
  433. package/build-module/components/inserter/menu.native.js +10 -15
  434. package/build-module/components/inserter/menu.native.js.map +1 -1
  435. package/build-module/components/inserter/pattern-panel.js +21 -13
  436. package/build-module/components/inserter/pattern-panel.js.map +1 -1
  437. package/build-module/components/inserter/preview-panel.js +1 -1
  438. package/build-module/components/inserter/preview-panel.js.map +1 -1
  439. package/build-module/components/inserter/quick-inserter.js +2 -1
  440. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  441. package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
  442. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  443. package/build-module/components/inserter/search-results.native.js +5 -10
  444. package/build-module/components/inserter/search-results.native.js.map +1 -1
  445. package/build-module/components/inserter/utils.native.js +35 -0
  446. package/build-module/components/inserter/utils.native.js.map +1 -0
  447. package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
  448. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
  449. package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
  450. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  451. package/build-module/components/inspector-controls/fill.js +16 -2
  452. package/build-module/components/inspector-controls/fill.js.map +1 -1
  453. package/build-module/components/inspector-controls/groups.js +5 -1
  454. package/build-module/components/inspector-controls/groups.js.map +1 -1
  455. package/build-module/components/inspector-controls/slot.js +13 -0
  456. package/build-module/components/inspector-controls/slot.js.map +1 -1
  457. package/build-module/components/letter-spacing-control/index.js +9 -6
  458. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  459. package/build-module/components/link-control/index.js +93 -35
  460. package/build-module/components/link-control/index.js.map +1 -1
  461. package/build-module/components/link-control/link-preview.js +46 -17
  462. package/build-module/components/link-control/link-preview.js.map +1 -1
  463. package/build-module/components/link-control/search-input.js +24 -7
  464. package/build-module/components/link-control/search-input.js.map +1 -1
  465. package/build-module/components/list-view/block-contents.js +1 -18
  466. package/build-module/components/list-view/block-contents.js.map +1 -1
  467. package/build-module/components/list-view/block.js +56 -71
  468. package/build-module/components/list-view/block.js.map +1 -1
  469. package/build-module/components/list-view/branch.js +102 -78
  470. package/build-module/components/list-view/branch.js.map +1 -1
  471. package/build-module/components/list-view/index.js +48 -23
  472. package/build-module/components/list-view/index.js.map +1 -1
  473. package/build-module/components/list-view/leaf.js +2 -2
  474. package/build-module/components/list-view/leaf.js.map +1 -1
  475. package/build-module/components/list-view/list-item.js +3 -2
  476. package/build-module/components/list-view/list-item.js.map +1 -1
  477. package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
  478. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  479. package/build-module/components/media-placeholder/index.js +29 -20
  480. package/build-module/components/media-placeholder/index.js.map +1 -1
  481. package/build-module/components/media-replace-flow/index.js +5 -3
  482. package/build-module/components/media-replace-flow/index.js.map +1 -1
  483. package/build-module/components/navigable-toolbar/index.js +1 -4
  484. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  485. package/build-module/components/observe-typing/index.js +1 -1
  486. package/build-module/components/observe-typing/index.js.map +1 -1
  487. package/build-module/components/plain-text/index.native.js +29 -2
  488. package/build-module/components/plain-text/index.native.js.map +1 -1
  489. package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
  490. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
  491. package/build-module/components/rich-text/format-edit.js +28 -3
  492. package/build-module/components/rich-text/format-edit.js.map +1 -1
  493. package/build-module/components/rich-text/format-toolbar/index.js +29 -11
  494. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  495. package/build-module/components/rich-text/index.js +4 -1
  496. package/build-module/components/rich-text/index.js.map +1 -1
  497. package/build-module/components/rich-text/index.native.js +41 -3
  498. package/build-module/components/rich-text/index.native.js.map +1 -1
  499. package/build-module/components/rich-text/use-paste-handler.js +28 -9
  500. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  501. package/build-module/components/rich-text/utils.js +20 -0
  502. package/build-module/components/rich-text/utils.js.map +1 -1
  503. package/build-module/components/typewriter/index.js +1 -1
  504. package/build-module/components/typewriter/index.js.map +1 -1
  505. package/build-module/components/url-input/index.js +25 -11
  506. package/build-module/components/url-input/index.js.map +1 -1
  507. package/build-module/components/use-moving-animation/index.js +13 -10
  508. package/build-module/components/use-moving-animation/index.js.map +1 -1
  509. package/build-module/components/use-on-block-drop/index.js +3 -2
  510. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  511. package/build-module/components/use-setting/index.js +48 -9
  512. package/build-module/components/use-setting/index.js.map +1 -1
  513. package/build-module/components/writing-flow/use-multi-selection.js +6 -0
  514. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  515. package/build-module/components/writing-flow/use-tab-nav.js +10 -1
  516. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  517. package/build-module/hooks/align.js +13 -10
  518. package/build-module/hooks/align.js.map +1 -1
  519. package/build-module/hooks/anchor.js +1 -1
  520. package/build-module/hooks/anchor.js.map +1 -1
  521. package/build-module/hooks/border.js +5 -5
  522. package/build-module/hooks/border.js.map +1 -1
  523. package/build-module/hooks/color-panel.js +6 -3
  524. package/build-module/hooks/color-panel.js.map +1 -1
  525. package/build-module/hooks/color.js +1 -1
  526. package/build-module/hooks/color.js.map +1 -1
  527. package/build-module/hooks/dimensions.js +24 -27
  528. package/build-module/hooks/dimensions.js.map +1 -1
  529. package/build-module/hooks/duotone.js +59 -16
  530. package/build-module/hooks/duotone.js.map +1 -1
  531. package/build-module/hooks/font-appearance.js +45 -6
  532. package/build-module/hooks/font-appearance.js.map +1 -1
  533. package/build-module/hooks/font-family.js +117 -33
  534. package/build-module/hooks/font-family.js.map +1 -1
  535. package/build-module/hooks/font-size.js +47 -9
  536. package/build-module/hooks/font-size.js.map +1 -1
  537. package/build-module/hooks/gap.js +2 -1
  538. package/build-module/hooks/gap.js.map +1 -1
  539. package/build-module/hooks/index.js +2 -0
  540. package/build-module/hooks/index.js.map +1 -1
  541. package/build-module/hooks/index.native.js +1 -0
  542. package/build-module/hooks/index.native.js.map +1 -1
  543. package/build-module/hooks/letter-spacing.js +40 -7
  544. package/build-module/hooks/letter-spacing.js.map +1 -1
  545. package/build-module/hooks/line-height.js +41 -8
  546. package/build-module/hooks/line-height.js.map +1 -1
  547. package/build-module/hooks/lock.js +33 -0
  548. package/build-module/hooks/lock.js.map +1 -0
  549. package/build-module/hooks/margin.js +1 -1
  550. package/build-module/hooks/margin.js.map +1 -1
  551. package/build-module/hooks/padding.js +1 -1
  552. package/build-module/hooks/padding.js.map +1 -1
  553. package/build-module/hooks/style.js +7 -4
  554. package/build-module/hooks/style.js.map +1 -1
  555. package/build-module/hooks/text-decoration.js +38 -6
  556. package/build-module/hooks/text-decoration.js.map +1 -1
  557. package/build-module/hooks/text-transform.js +38 -6
  558. package/build-module/hooks/text-transform.js.map +1 -1
  559. package/build-module/hooks/typography.js +117 -17
  560. package/build-module/hooks/typography.js.map +1 -1
  561. package/build-module/hooks/use-cached-truthy.js +21 -0
  562. package/build-module/hooks/use-cached-truthy.js.map +1 -0
  563. package/build-module/index.js +1 -1
  564. package/build-module/index.js.map +1 -1
  565. package/build-module/layouts/flex.js +163 -38
  566. package/build-module/layouts/flex.js.map +1 -1
  567. package/build-module/layouts/flow.js +74 -8
  568. package/build-module/layouts/flow.js.map +1 -1
  569. package/build-module/store/actions.js +286 -241
  570. package/build-module/store/actions.js.map +1 -1
  571. package/build-module/store/defaults.native.js +12 -1
  572. package/build-module/store/defaults.native.js.map +1 -1
  573. package/build-module/store/index.js +1 -2
  574. package/build-module/store/index.js.map +1 -1
  575. package/build-module/store/reducer.js +33 -22
  576. package/build-module/store/reducer.js.map +1 -1
  577. package/build-module/store/selectors.js +160 -34
  578. package/build-module/store/selectors.js.map +1 -1
  579. package/build-module/utils/index.js +1 -0
  580. package/build-module/utils/index.js.map +1 -1
  581. package/build-module/utils/parse-css-unit-to-px.js +48 -1
  582. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  583. package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
  584. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  585. package/build-style/style-rtl.css +267 -144
  586. package/build-style/style.css +267 -144
  587. package/package.json +28 -27
  588. package/src/components/autocomplete/index.js +5 -2
  589. package/src/components/block-actions/index.js +9 -5
  590. package/src/components/block-alignment-control/style.scss +5 -0
  591. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
  592. package/src/components/block-alignment-control/test/index.native.js +37 -0
  593. package/src/components/block-alignment-control/ui.js +98 -27
  594. package/src/components/block-alignment-control/use-available-alignments.js +31 -10
  595. package/src/components/block-controls/fill.js +5 -2
  596. package/src/components/block-controls/hook.js +3 -3
  597. package/src/components/block-draggable/style.scss +19 -4
  598. package/src/components/block-icon/index.js +4 -1
  599. package/src/components/block-icon/index.native.js +10 -16
  600. package/src/components/block-inspector/index.js +10 -0
  601. package/src/components/block-list/block-html.js +5 -0
  602. package/src/components/block-list/block.js +11 -3
  603. package/src/components/block-list/block.native.js +5 -3
  604. package/src/components/block-list/index.native.js +1 -1
  605. package/src/components/block-list/style.scss +15 -0
  606. package/src/components/block-list/use-block-props/use-multi-selection.js +27 -7
  607. package/src/components/block-list-appender/index.js +8 -0
  608. package/src/components/block-mover/index.js +4 -4
  609. package/src/components/block-mover/index.native.js +4 -4
  610. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
  611. package/src/components/block-mover/test/index.native.js +26 -28
  612. package/src/components/block-navigation/dropdown.js +0 -1
  613. package/src/components/block-patterns-list/index.js +1 -8
  614. package/src/components/block-patterns-list/style.scss +22 -12
  615. package/src/components/block-preview/README.md +1 -1
  616. package/src/components/block-preview/auto.js +1 -1
  617. package/src/components/block-preview/style.scss +0 -17
  618. package/src/components/block-settings/container.native.js +7 -0
  619. package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
  620. package/src/components/block-settings-menu-controls/index.js +9 -6
  621. package/src/components/block-styles/preview.native.js +2 -2
  622. package/src/components/block-switcher/block-styles-menu.js +1 -1
  623. package/src/components/block-switcher/index.js +7 -3
  624. package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
  625. package/src/components/block-switcher/test/index.js +3 -0
  626. package/src/components/block-title/index.js +5 -2
  627. package/src/components/block-tools/block-popover.js +3 -5
  628. package/src/components/block-tools/index.js +5 -2
  629. package/src/components/block-tools/insertion-point.js +97 -9
  630. package/src/components/block-tools/style.scss +4 -35
  631. package/src/components/block-types-list/style.scss +0 -3
  632. package/src/components/border-radius-control/index.js +1 -0
  633. package/src/components/border-radius-control/test/utils.js +216 -0
  634. package/src/components/border-radius-control/utils.js +18 -10
  635. package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
  636. package/src/components/colors/test/utils.js +41 -0
  637. package/src/components/colors/utils.js +9 -5
  638. package/src/components/colors-gradients/control.js +70 -110
  639. package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
  640. package/src/components/colors-gradients/style.scss +10 -18
  641. package/src/components/colors-gradients/test/control.js +41 -66
  642. package/src/components/contrast-checker/index.js +14 -10
  643. package/src/components/copy-handler/index.js +6 -1
  644. package/src/components/default-block-appender/index.js +2 -2
  645. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
  646. package/src/components/duotone-control/index.js +49 -41
  647. package/src/components/duotone-control/style.scss +27 -12
  648. package/src/components/editor-styles/index.js +7 -4
  649. package/src/components/font-appearance-control/index.js +41 -33
  650. package/src/components/font-appearance-control/style.scss +1 -1
  651. package/src/components/iframe/index.js +4 -4
  652. package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
  653. package/src/components/image-editor/constants.js +6 -0
  654. package/src/components/image-editor/context.js +56 -0
  655. package/src/components/image-editor/cropper.js +74 -0
  656. package/src/components/image-editor/form-controls.js +22 -0
  657. package/src/components/image-editor/index.js +52 -0
  658. package/src/components/image-editor/rotation-button.js +24 -0
  659. package/src/components/image-editor/use-save-image.js +97 -0
  660. package/src/components/image-editor/use-transform-image.js +162 -0
  661. package/src/components/image-editor/zoom-dropdown.js +40 -0
  662. package/src/components/image-size-control/use-dimension-handler.js +18 -1
  663. package/src/components/index.js +7 -6
  664. package/src/components/index.native.js +1 -4
  665. package/src/components/inner-blocks/button-block-appender.js +9 -0
  666. package/src/components/inner-blocks/index.js +8 -4
  667. package/src/components/inner-blocks/index.native.js +7 -4
  668. package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
  669. package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
  670. package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
  671. package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
  672. package/src/components/inserter/block-patterns-tab.js +107 -73
  673. package/src/components/inserter/block-types-tab.native.js +3 -15
  674. package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
  675. package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
  676. package/src/components/inserter/index.js +15 -3
  677. package/src/components/inserter/index.native.js +2 -19
  678. package/src/components/inserter/library.js +2 -0
  679. package/src/components/inserter/menu.js +4 -1
  680. package/src/components/inserter/menu.native.js +9 -14
  681. package/src/components/inserter/pattern-panel.js +33 -16
  682. package/src/components/inserter/preview-panel.js +1 -1
  683. package/src/components/inserter/quick-inserter.js +1 -1
  684. package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
  685. package/src/components/inserter/search-results.native.js +5 -15
  686. package/src/components/inserter/style.scss +80 -16
  687. package/src/components/inserter/test/block-types-tab.native.js +1 -1
  688. package/src/components/inserter/test/fixtures/index.native.js +12 -0
  689. package/src/components/inserter/utils.native.js +35 -0
  690. package/src/components/inserter-list-item/style.scss +4 -2
  691. package/src/components/inspector-controls/block-support-slot-container.js +10 -0
  692. package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
  693. package/src/components/inspector-controls/fill.js +23 -2
  694. package/src/components/inspector-controls/groups.js +8 -0
  695. package/src/components/inspector-controls/slot.js +15 -0
  696. package/src/components/letter-spacing-control/index.js +12 -6
  697. package/src/components/link-control/README.md +47 -14
  698. package/src/components/link-control/index.js +102 -31
  699. package/src/components/link-control/link-preview.js +53 -20
  700. package/src/components/link-control/search-input.js +21 -7
  701. package/src/components/link-control/style.scss +66 -19
  702. package/src/components/link-control/test/index.js +311 -4
  703. package/src/components/list-view/block-contents.js +17 -38
  704. package/src/components/list-view/block.js +73 -84
  705. package/src/components/list-view/branch.js +123 -94
  706. package/src/components/list-view/index.js +82 -30
  707. package/src/components/list-view/leaf.js +2 -2
  708. package/src/components/list-view/list-item.js +5 -4
  709. package/src/components/list-view/style.scss +70 -33
  710. package/src/components/list-view/use-list-view-client-ids.js +9 -68
  711. package/src/components/media-placeholder/index.js +26 -19
  712. package/src/components/media-replace-flow/README.md +7 -0
  713. package/src/components/media-replace-flow/index.js +4 -1
  714. package/src/components/media-upload/README.md +1 -1
  715. package/src/components/navigable-toolbar/index.js +1 -4
  716. package/src/components/observe-typing/index.js +3 -2
  717. package/src/components/plain-text/index.native.js +26 -4
  718. package/src/components/rich-text/embed-handler-picker.native.js +68 -0
  719. package/src/components/rich-text/format-edit.js +36 -2
  720. package/src/components/rich-text/format-toolbar/index.js +25 -6
  721. package/src/components/rich-text/index.js +12 -8
  722. package/src/components/rich-text/index.native.js +35 -1
  723. package/src/components/rich-text/use-paste-handler.js +30 -12
  724. package/src/components/rich-text/utils.js +16 -0
  725. package/src/components/skip-to-selected-block/README.md +39 -0
  726. package/src/components/typewriter/index.js +3 -2
  727. package/src/components/url-input/index.js +26 -10
  728. package/src/components/use-moving-animation/index.js +9 -8
  729. package/src/components/use-on-block-drop/index.js +5 -1
  730. package/src/components/use-setting/index.js +49 -11
  731. package/src/components/writing-flow/use-multi-selection.js +6 -0
  732. package/src/components/writing-flow/use-tab-nav.js +17 -3
  733. package/src/hooks/align.js +19 -10
  734. package/src/hooks/anchor.js +2 -2
  735. package/src/hooks/border.js +8 -11
  736. package/src/hooks/color-panel.js +4 -1
  737. package/src/hooks/color.js +7 -4
  738. package/src/hooks/dimensions.js +48 -59
  739. package/src/hooks/duotone.js +68 -19
  740. package/src/hooks/font-appearance.js +38 -7
  741. package/src/hooks/font-family.js +129 -33
  742. package/src/hooks/font-size.js +42 -6
  743. package/src/hooks/gap.js +2 -1
  744. package/src/hooks/index.js +2 -0
  745. package/src/hooks/index.native.js +1 -0
  746. package/src/hooks/layout.scss +8 -0
  747. package/src/hooks/letter-spacing.js +35 -7
  748. package/src/hooks/line-height.js +37 -9
  749. package/src/hooks/lock.js +34 -0
  750. package/src/hooks/margin.js +1 -1
  751. package/src/hooks/padding.js +1 -1
  752. package/src/hooks/style.js +15 -11
  753. package/src/hooks/text-decoration.js +34 -6
  754. package/src/hooks/text-transform.js +34 -6
  755. package/src/hooks/typography.js +165 -15
  756. package/src/hooks/typography.scss +16 -0
  757. package/src/hooks/use-cached-truthy.js +20 -0
  758. package/src/index.js +1 -0
  759. package/src/layouts/flex.js +179 -50
  760. package/src/layouts/flow.js +54 -8
  761. package/src/store/actions.js +239 -377
  762. package/src/store/defaults.native.js +12 -0
  763. package/src/store/index.js +1 -2
  764. package/src/store/reducer.js +54 -18
  765. package/src/store/selectors.js +173 -47
  766. package/src/store/test/actions.js +407 -705
  767. package/src/store/test/reducer.js +22 -54
  768. package/src/store/test/selectors.js +79 -21
  769. package/src/style.scss +2 -1
  770. package/src/utils/index.js +1 -0
  771. package/src/utils/parse-css-unit-to-px.js +43 -1
  772. package/src/utils/test/parse-css-unit-to-px.js +148 -165
  773. package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
  774. package/src/utils/transform-styles/transforms/wrap.js +16 -0
  775. package/tsconfig.tsbuildinfo +1 -1
  776. package/build/components/duotone-control/duotone-picker-popover.js +0 -44
  777. package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
  778. package/build/components/list-view/block-slot.js +0 -121
  779. package/build/components/list-view/block-slot.js.map +0 -1
  780. package/build/components/list-view/editor.js +0 -35
  781. package/build/components/list-view/editor.js.map +0 -1
  782. package/build/components/text-decoration-and-transform/index.js +0 -39
  783. package/build/components/text-decoration-and-transform/index.js.map +0 -1
  784. package/build/store/controls.js +0 -44
  785. package/build/store/controls.js.map +0 -1
  786. package/build-module/components/duotone-control/duotone-picker-popover.js +0 -35
  787. package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
  788. package/build-module/components/list-view/block-slot.js +0 -96
  789. package/build-module/components/list-view/block-slot.js.map +0 -1
  790. package/build-module/components/list-view/editor.js +0 -25
  791. package/build-module/components/list-view/editor.js.map +0 -1
  792. package/build-module/components/text-decoration-and-transform/index.js +0 -30
  793. package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
  794. package/build-module/store/controls.js +0 -32
  795. package/build-module/store/controls.js.map +0 -1
  796. package/src/components/duotone-control/duotone-picker-popover.js +0 -36
  797. package/src/components/list-view/block-slot.js +0 -120
  798. package/src/components/list-view/editor.js +0 -29
  799. package/src/components/text-decoration-and-transform/index.js +0 -36
  800. package/src/components/text-decoration-and-transform/style.scss +0 -3
  801. package/src/store/controls.js +0 -39
@@ -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":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AACA,SAASC,IAAT,QAAqB,QAArB;AAEA;AACA;AACA;;AACA,SACCC,OADD,EAECC,QAFD,EAGCC,MAHD,EAICC,WAJD,EAKCC,UALD,QAMO,oBANP;AAOA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SACCC,YADD,EAECC,QAAQ,IAAIC,cAFb,EAGCC,kBAHD,EAICC,aAJD,EAKCC,wBALD,QAMO,mBANP;AAOA,SAASC,aAAT,EAAwBC,YAAxB,QAA4C,oBAA5C;AACA,SACCC,sBAAsB,IAAIC,QAD3B,EAECC,uBAFD,EAGCC,OAHD,EAICC,qBAAqB,IAAIC,WAJ1B,EAKCC,MALD,EAMCC,6BAA6B,IAAIC,mBANlC,EAOCC,MAPD,EAQCC,OARD,EASCC,KATD,EAUCC,yBAAyB,IAAIC,cAV9B,EAWCC,YAXD,EAYCC,KAZD,QAaO,sBAbP;AAcA,OAAOC,UAAP,MAAuB,uBAAvB;AACA,SAASC,KAAT,QAAsB,gBAAtB;AAEA;AACA;AACA;;AACA,OAAOC,YAAP,MAAyB,iBAAzB;AACA,SAASC,mBAAT,QAAoC,eAApC;AACA,SAASC,sBAAT,QAAuC,4BAAvC;AACA,SAASC,gBAAT,QAAiC,sBAAjC;AACA,OAAOC,sBAAP,MAAmC,4BAAnC;AACA,SAASC,cAAT,QAA+B,oBAA/B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SACCC,gBADD,EAECC,eAFD,EAGCC,iBAHD,EAICC,WAJD,QAKO,SALP;AAOA,MAAMC,cAAc,GAAG,wBAAvB;AACA,MAAMC,OAAO,GAAG,kCAAhB;;AAEA,SAASC,eAAT,CACC;AACCvC,EAAAA,QADD;AAECwC,EAAAA,OAFD;AAGCC,EAAAA,KAAK,EAAEC,aAHR;AAICC,EAAAA,QAAQ,EAAEC,gBAJX;AAKCC,EAAAA,UAAU,EAAEC,kBALb;AAMCC,EAAAA,SAND;AAOCC,EAAAA,aAPD;AAQCC,EAAAA,gBARD;AASCC,EAAAA,cATD;AAUCC,EAAAA,SAVD;AAWCC,EAAAA,WAXD;AAYCC,EAAAA,cAZD;AAaCC,EAAAA,kBAbD;AAcCC,EAAAA,4BAdD;AAeCC,EAAAA,QAfD;AAgBCC,EAAAA,OAhBD;AAiBCC,EAAAA,OAjBD;AAkBCC,EAAAA,sBAAsB,EAAEC,YAlBzB;AAmBCC,EAAAA,uBAAuB,EAAEC,aAnB1B;AAoBCC,EAAAA,UApBD;AAqBCC,EAAAA,kBArBD;AAsBCC,EAAAA,wBAAwB,EAAEC,cAtB3B;AAuBCC,EAAAA,yBAvBD;AAwBCC,EAAAA,wBAAwB,EAAEC,cAxB3B;AAyBCC,EAAAA,iBAzBD;AA0BCC,EAAAA,eA1BD;AA2BCC,EAAAA,oCA3BD;AA4BCC,EAAAA,0BA5BD;AA6BC;AACAC,EAAAA,8BA9BD;AA+BCC,EAAAA,WA/BD;AAgCCC,EAAAA,oBAhCD;AAiCCC,EAAAA,SAjCD;AAkCCC,EAAAA,cAlCD;AAmCCC,EAAAA,eAnCD;AAoCCC,EAAAA,mBApCD;AAqCCC,EAAAA,kBArCD;AAsCCC,EAAAA,QAtCD;AAuCCC,EAAAA,UAvCD;AAwCCC,EAAAA,UAxCD;AAyCCC,EAAAA,SAzCD;AA0CCC,EAAAA,QA1CD;AA2CCC,EAAAA,QA3CD;AA4CCC,EAAAA,MA5CD;AA6CCC,EAAAA,MA7CD;AA8CC,KAAGC;AA9CJ,CADD,EAiDCC,YAjDD,EAkDE;AACD,QAAMC,UAAU,GAAGvF,aAAa,CAAEkC,eAAF,CAAhC;AAEAwB,EAAAA,UAAU,GAAGA,UAAU,IAAI6B,UAA3B;AAEA,QAAMC,WAAW,GAAGnG,MAAM,EAA1B;AACA,QAAM;AAAEoG,IAAAA,QAAF;AAAYjD,IAAAA,UAAU,EAAEkD;AAAxB,MAA4CrE,mBAAmB,EAArE;AACA,QAAMsE,WAAW,GAAGlE,cAAc,EAAlC;;AACA,QAAMmE,QAAQ,GAAKC,MAAF,IAAc;AAC9B,UAAM;AACLC,MAAAA,0BADK;AAELC,MAAAA,iBAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA,WAJK;AAKLC,MAAAA,kBALK;AAMLC,MAAAA,QANK;AAOLC,MAAAA,gBAPK;AAQLC,MAAAA;AARK,QASFR,MAAM,CAAElE,gBAAF,CATV;AAWA,UAAM2E,cAAc,GAAGP,iBAAiB,EAAxC;AACA,UAAMQ,YAAY,GAAGP,eAAe,EAApC;AACA,UAAM;AAAEQ,MAAAA,kBAAkB,EAAEC;AAAtB,QAA+BR,WAAW,EAAhD;AAEA,QAAIzD,UAAJ;;AAEA,QAAKC,kBAAkB,KAAKiE,SAA5B,EAAwC;AACvClE,MAAAA,UAAU,GACT8D,cAAc,CAACb,QAAf,KAA4BA,QAA5B,IACAa,cAAc,CAACK,YAAf,KAAgCjD,UAFjC;AAGA,KAJD,MAIO,IAAKjB,kBAAL,EAA0B;AAChCD,MAAAA,UAAU,GAAG8D,cAAc,CAACb,QAAf,KAA4BA,QAAzC;AACA;;AAED,QAAImB,UAAU,GAAG,EAAjB;;AACA,QAAKxH,QAAQ,CAACyH,EAAT,KAAgB,QAArB,EAAgC;AAC/B;AACA;AACA;AACA,YAAMC,KAAK,GAAGrB,QAAQ,IAAIU,QAAQ,CAAEV,QAAF,CAAlC;AACA,YAAMsB,mBAAmB,GACxBD,KAAK,IAAItE,UAAT,IAAuBzC,wBAAwB,CAAE+G,KAAF,CADhD;AAEAF,MAAAA,UAAU,GAAG;AACZG,QAAAA;AADY,OAAb;AAGA;;AAED,WAAO;AACNjB,MAAAA,0BAA0B,EAAEA,0BAA0B,EADhD;AAENQ,MAAAA,cAAc,EAAE9D,UAAU,GAAG8D,cAAc,CAACU,MAAlB,GAA2BN,SAF/C;AAGNH,MAAAA,YAAY,EAAE/D,UAAU,GAAG+D,YAAY,CAACS,MAAhB,GAAyBN,SAH3C;AAINlE,MAAAA,UAJM;AAKN0D,MAAAA,kBAAkB,EAAEA,kBAAkB,EALhC;AAMNe,MAAAA,QAAQ,EAAEb,gBAAgB,MAAMC,iBAAiB,EAN3C;AAONI,MAAAA,IAPM;AAQN,SAAGG;AARG,KAAP;AAUA,GAjDD,CARC,CA0DD;AACA;AACA;;;AACA,QAAM;AACLd,IAAAA,0BADK;AAELQ,IAAAA,cAFK;AAGLC,IAAAA,YAHK;AAIL/D,IAAAA,UAJK;AAKL0D,IAAAA,kBALK;AAMLe,IAAAA,QANK;AAOLR,IAAAA,IAPK;AAQLM,IAAAA;AARK,MASFtH,SAAS,CAAEmG,QAAF,CATb;AAUA,QAAM;AACLsB,IAAAA,oCADK;AAELC,IAAAA,kBAFK;AAGLC,IAAAA,iBAHK;AAILC,IAAAA,eAJK;AAKLC,IAAAA;AALK,MAMF9H,WAAW,CAAEmC,gBAAF,CANf;AAOA,QAAM4F,YAAY,GAAG1F,eAAe,CAAEa,SAAF,CAApC;AACA,QAAM8E,sBAAsB,GAAG1F,iBAAiB,CAAE;AACjDkB,IAAAA,cADiD;AAEjDC,IAAAA,kBAFiD;AAGjDe,IAAAA;AAHiD,GAAF,CAAhD;AAKA,QAAMyD,UAAU,GACf,CAAED,sBAAF,IAA4BA,sBAAsB,CAACE,MAAvB,GAAgC,CAD7D;AAEA,MAAIC,aAAa,GAAGtF,aAApB;AACA,MAAIuF,gBAAgB,GAAGrF,gBAAvB,CAvFC,CAyFD;;AACA,MAAKsF,KAAK,CAACC,OAAN,CAAezF,aAAf,CAAL,EAAsC;AACrCsF,IAAAA,aAAa,GAAG/H,cAAc,CAACmI,MAAf,CAAuB1F,aAAvB,CAAhB;;AACAuF,IAAAA,gBAAgB,GAAKI,QAAF,IAClBzF,gBAAgB,CACf3C,cAAc,CAACqI,OAAf,CACC7H,uBAAuB,CAAE8H,QAAF,EAAYF,QAAZ,CAAvB,CAA8CG,UAD/C,CADe,CADjB;AAMA;;AAED,QAAMC,iBAAiB,GAAG9I,WAAW,CACpC,CAAE+I,KAAF,EAASC,GAAT,KAAkB;AACjBjB,IAAAA,eAAe,CAAE5B,QAAF,EAAY/B,UAAZ,EAAwB2E,KAAxB,EAA+BC,GAA/B,CAAf;AACA,GAHmC,EAIpC,CAAE7C,QAAF,EAAY/B,UAAZ,CAJoC,CAArC;AAOA,QAAM6E,QAAQ,GAAGjJ,WAAW,CAC3B,CAAE;AAAE8C,IAAAA,KAAF;AAASoG,IAAAA;AAAT,GAAF,KAA4B;AAC3B,QAAKpF,OAAL,EAAe;AACdA,MAAAA,OAAO,CAAE,CAAEoF,SAAJ,CAAP;AACA,KAH0B,CAK3B;AACA;AACA;AACA;;;AACA,QAAKrF,QAAQ,IAAI9C,OAAO,CAAE+B,KAAF,CAAnB,IAAgCoG,SAArC,EAAiD;AAChDrF,MAAAA,QAAQ,CAAE,CAAEqF,SAAJ,CAAR;AACA;AACD,GAb0B,EAc3B,CAAEpF,OAAF,EAAWD,QAAX,CAd2B,CAA5B;AAiBA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACC,QAAMsF,UAAU,GAAGnJ,WAAW,CAC7B,CAAEoJ,MAAF,EAAUC,YAAY,GAAG,EAAzB,KAAiC;AAChC,QAAK,CAAE7F,SAAF,IAAe,CAAEO,OAAtB,EAAgC;AAC/B;AACA;;AAED,UAAMuF,MAAM,GAAG,EAAf;AACA,UAAM,CAAEC,MAAF,EAAUC,KAAV,IAAoBjI,KAAK,CAAE6H,MAAF,CAA/B;AACA,UAAMK,eAAe,GAAGJ,YAAY,CAACjB,MAAb,GAAsB,CAA9C;AACA,QAAIsB,oBAAoB,GAAG,CAAC,CAA5B,CARgC,CAUhC;AACA;;AACA,UAAMC,eAAe,GAAG5I,OAAO,CAAEwI,MAAF,CAAP,IAAqB,CAAExI,OAAO,CAAEyI,KAAF,CAAtD,CAZgC,CAchC;AACA;AACA;AACA;;AACA,QAAK,CAAEC,eAAF,IAAqB,CAAE1I,OAAO,CAAEwI,MAAF,CAAnC,EAAgD;AAC/CD,MAAAA,MAAM,CAACM,IAAP,CACC7F,OAAO,CACNrC,YAAY,CAAE;AACboB,QAAAA,KAAK,EAAEyG,MADM;AAEbtB,QAAAA;AAFa,OAAF,CADN,EAKN,CAAE0B,eALI,CADR;AASAD,MAAAA,oBAAoB,IAAI,CAAxB;AACA;;AAED,QAAKD,eAAL,EAAuB;AACtBH,MAAAA,MAAM,CAACM,IAAP,CAAa,GAAGP,YAAhB;AACAK,MAAAA,oBAAoB,IAAIL,YAAY,CAACjB,MAArC;AACA,KAHD,MAGO,IAAKjE,aAAL,EAAqB;AAC3BmF,MAAAA,MAAM,CAACM,IAAP,CAAazF,aAAa,EAA1B;AACA,KApC+B,CAsChC;AACA;AACA;AACA;;;AACA,QACCsF,eAAe,GACZ,CAAE1I,OAAO,CAAEyI,KAAF,CADG,GAEZ,CAAErF,aAAF,IAAmB,CAAEpD,OAAO,CAAEyI,KAAF,CAHhC,EAIE;AACDF,MAAAA,MAAM,CAACM,IAAP,CACC7F,OAAO,CACNrC,YAAY,CAAE;AACboB,QAAAA,KAAK,EAAE0G,KADM;AAEbvB,QAAAA;AAFa,OAAF,CADN,EAKN0B,eALM,CADR;AASA,KAxD+B,CA0DhC;AACA;;;AACA,UAAME,aAAa,GAAGJ,eAAe,GAAGC,oBAAH,GAA0B,CAA/D,CA5DgC,CA8DhC;AACA;;AACA,UAAMI,eAAe,GAAGL,eAAe,GAAG,CAAC,CAAJ,GAAQ,CAA/C;AAEAjG,IAAAA,SAAS,CAAE8F,MAAF,EAAUO,aAAV,EAAyBC,eAAzB,CAAT;AACA,GApE4B,EAqE7B,CAAEtG,SAAF,EAAaO,OAAb,EAAsBkE,YAAtB,EAAoC9D,aAApC,CArE6B,CAA9B;AAwEA,QAAM4F,OAAO,GAAG/J,WAAW,CAC1B,CAAE;AAAE8C,IAAAA,KAAF;AAASE,IAAAA,QAAT;AAAmBgH,IAAAA;AAAnB,GAAF,KAAqC;AACpC,UAAMC,QAAQ,GAAGzG,SAAS,IAAIO,OAA9B;;AAEA,QAAKP,SAAL,EAAiB;AAChB,YAAM0G,UAAU,GAAG3J,kBAAkB,CAAE,MAAF,CAAlB,CAA6B4J,MAA7B,CAClB,CAAE;AAAEC,QAAAA;AAAF,OAAF,KAAgBA,IAAI,KAAK,OADP,CAAnB;AAGA,YAAMC,cAAc,GAAG7J,aAAa,CAAE0J,UAAF,EAAgBI,IAAF,IAAY;AAC7D,eAAOA,IAAI,CAACC,MAAL,CAAYC,IAAZ,CAAkB1H,KAAK,CAAC2H,IAAxB,CAAP;AACA,OAFmC,CAApC;;AAIA,UAAKJ,cAAL,EAAsB;AACrB7G,QAAAA,SAAS,CAAE,CACV6G,cAAc,CAACK,SAAf,CAA0B;AAAEC,UAAAA,OAAO,EAAE7H,KAAK,CAAC2H;AAAjB,SAA1B,CADU,CAAF,CAAT;;AAGAzC,QAAAA,6BAA6B;AAC7B;AACD;;AAED,QAAK5E,SAAL,EAAiB;AAChB,UAAK4G,QAAL,EAAgB;AACf,YAAK,CAAErF,iBAAP,EAA2B;AAC1B3B,UAAAA,QAAQ,CAAE9B,MAAM,CAAE4B,KAAF,EAAS,IAAT,CAAR,CAAR;AACA;AACD,OAJD,MAIO,IAAKmH,QAAQ,IAAIhJ,WAAW,CAAE6B,KAAF,CAA5B,EAAwC;AAC9CqG,QAAAA,UAAU,CAAErG,KAAF,CAAV;AACA,OAFM,MAEA;AACNE,QAAAA,QAAQ,CAAE5B,mBAAmB,CAAE0B,KAAF,CAArB,CAAR;AACA;AACD,KAVD,MAUO;AACN,YAAM;AAAE2H,QAAAA,IAAF;AAAQ1B,QAAAA,KAAR;AAAeC,QAAAA;AAAf,UAAuBlG,KAA7B;AACA,YAAM8H,aAAa,GAClB3G,YAAY,IAAI8E,KAAK,KAAKC,GAA1B,IAAiCA,GAAG,KAAKyB,IAAI,CAACrC,MAD/C;;AAGA,UAAK4B,QAAQ,IAAM,CAAEC,QAAF,IAAc,CAAEW,aAAnC,EAAqD;AACpD,YAAK,CAAEjG,iBAAP,EAA2B;AAC1B3B,UAAAA,QAAQ,CAAE9B,MAAM,CAAE4B,KAAF,EAAS,IAAT,CAAR,CAAR;AACA;AACD,OAJD,MAIO,IAAK,CAAEmH,QAAF,IAAcW,aAAnB,EAAmC;AACzC3G,QAAAA,YAAY;AACZ,OAFM,MAEA,IAAKgG,QAAL,EAAgB;AACtBd,QAAAA,UAAU,CAAErG,KAAF,CAAV;AACA;AACD;AACD,GA7CyB,EA8C1B,CACCU,SADD,EAECO,OAFD,EAGCiE,6BAHD,EAIC5E,SAJD,EAKC+F,UALD,EAMClF,YAND,CA9C0B,CAA3B;AAwDA,QAAM4G,OAAO,GAAG7K,WAAW,CAC1B,CAAE;AACD8C,IAAAA,KADC;AAEDE,IAAAA,QAFC;AAGD8H,IAAAA,IAHC;AAIDC,IAAAA,SAJC;AAKDC,IAAAA,UALC;AAMDC,IAAAA,KANC;AAODC,IAAAA;AAPC,GAAF,KAQO;AACN;AACA;AACA;AACA,QAAKF,UAAL,EAAkB;AACjB,YAAMG,WAAW,GAAG9J,MAAM,CAAE;AAC3ByJ,QAAAA,IAD2B;AAE3B7C,QAAAA,YAF2B;AAG3BmD,QAAAA,oBAAoB,EACnBnD,YAAY,KAAK,IAAjB,GAAwB,CAAE,IAAF,EAAQ,IAAR,CAAxB,GAAyCb,SAJf;AAK3B/C,QAAAA;AAL2B,OAAF,CAA1B;AAOA/B,MAAAA,gBAAgB,CAAE6I,WAAF,EAAeD,aAAf,CAAhB;AACAlI,MAAAA,QAAQ,CAAE9B,MAAM,CAAE4B,KAAF,EAASqI,WAAT,CAAR,CAAR;AACA;AACA;;AAED,QAAK5G,cAAL,EAAsB;AACrBvB,MAAAA,QAAQ,CAAE9B,MAAM,CAAE4B,KAAF,EAASzB,MAAM,CAAE;AAAEoJ,QAAAA,IAAI,EAAEM;AAAR,OAAF,CAAf,CAAR,CAAR;AACA;AACA,KApBK,CAsBN;AACA;;;AACA,QAAKE,KAAK,IAAIA,KAAK,CAAC7C,MAAf,IAAyB,CAAE0C,IAAhC,EAAuC;AACtC,YAAMH,OAAO,GAAGvK,YAAY,CAAE;AAC7BiL,QAAAA,IAAI,EAAEpJ,gBAAgB,CAAEgJ,KAAF,CADO;AAE7BK,QAAAA,IAAI,EAAE,QAFuB;AAG7BzI,QAAAA,OAH6B;AAI7BwB,QAAAA;AAJ6B,OAAF,CAA5B,CADsC,CAQtC;AACA;;AACAkH,MAAAA,MAAM,CAACC,OAAP,CAAeC,GAAf,CAAoB,qBAApB,EAA2CR,KAA3C;;AAEA,UAAKzH,SAAS,IAAIzC,OAAO,CAAE+B,KAAF,CAAzB,EAAqC;AACpCU,QAAAA,SAAS,CAAEmH,OAAF,CAAT;AACA,OAFD,MAEO;AACNxB,QAAAA,UAAU,CAAErG,KAAF,EAAS6H,OAAT,CAAV;AACA;;AAED;AACA;;AAED,QAAIW,IAAI,GAAG9H,SAAS,IAAIO,OAAb,GAAuB,MAAvB,GAAgC,QAA3C,CA7CM,CA+CN;AACA;AACA;AACA;;AACA,QACCuH,IAAI,KAAK,MAAT,IACAvK,OAAO,CAAE+B,KAAF,CADP,IAEAL,WAAW,CAAEsI,SAAF,CAHZ,EAIE;AACDO,MAAAA,IAAI,GAAG,QAAP;AACA;;AAED,QACC9G,yBAAyB,IACzBzD,OAAO,CAAE+B,KAAF,CADP,IAEAjB,KAAK,CAAEkJ,SAAS,CAACW,IAAV,EAAF,CAHN,EAIE;AACDJ,MAAAA,IAAI,GAAG,QAAP;AACA;;AAED,UAAMX,OAAO,GAAGvK,YAAY,CAAE;AAC7BiL,MAAAA,IAAI,EAAEP,IADuB;AAE7BC,MAAAA,SAF6B;AAG7BO,MAAAA,IAH6B;AAI7BzI,MAAAA,OAJ6B;AAK7BwB,MAAAA;AAL6B,KAAF,CAA5B;;AAQA,QAAK,OAAOsG,OAAP,KAAmB,QAAxB,EAAmC;AAClC,UAAIgB,aAAa,GAAGtK,MAAM,CAAE;AAAEyJ,QAAAA,IAAI,EAAEH;AAAR,OAAF,CAA1B;AAEArI,MAAAA,gBAAgB,CAAEqJ,aAAF,EAAiBT,aAAjB,CAAhB,CAHkC,CAKlC;AACA;;AACA,UAAKjD,YAAL,EAAoB;AACnB0D,QAAAA,aAAa,GAAGrK,OAAO,CACtBqK,aADsB,EAEtB,MAFsB,EAGtBlK,cAHsB,CAAvB;AAKA;;AAEDuB,MAAAA,QAAQ,CAAE9B,MAAM,CAAE4B,KAAF,EAAS6I,aAAT,CAAR,CAAR;AACA,KAhBD,MAgBO,IAAKhB,OAAO,CAACvC,MAAR,GAAiB,CAAtB,EAA0B;AAChC,UAAK5E,SAAS,IAAIzC,OAAO,CAAE+B,KAAF,CAAzB,EAAqC;AACpCU,QAAAA,SAAS,CAAEmH,OAAF,EAAWA,OAAO,CAACvC,MAAR,GAAiB,CAA5B,EAA+B,CAAC,CAAhC,CAAT;AACA,OAFD,MAEO;AACNe,QAAAA,UAAU,CAAErG,KAAF,EAAS6H,OAAT,CAAV;AACA;AACD;AACD,GA3GyB,EA4G1B,CACC9H,OADD,EAECW,SAFD,EAGCO,OAHD,EAICoF,UAJD,EAKC3E,yBALD,EAMCyD,YAND,EAOC5D,kBAPD,EAQCE,cARD,CA5G0B,CAA3B;AAwHA,QAAMqH,SAAS,GAAG5L,WAAW,CAC5B,CAAE8C,KAAF,EAAS+I,aAAT,KAA4B;AAC3B,QAAK,CAAErI,SAAP,EAAmB;AAClB;AACA;;AAED,UAAM;AAAEuF,MAAAA,KAAF;AAAS0B,MAAAA;AAAT,QAAkB3H,KAAxB;AACA,UAAMgJ,eAAe,GAAGrB,IAAI,CAAC9I,KAAL,CAAYoH,KAAK,GAAG,CAApB,EAAuBA,KAAvB,CAAxB,CAN2B,CAQ3B;;AACA,QAAK+C,eAAe,KAAK,GAAzB,EAA+B;AAC9B;AACA;;AAED,UAAMC,iBAAiB,GAAGtB,IAAI,CAAC9I,KAAL,CAAY,CAAZ,EAAeoH,KAAf,EAAuB2C,IAAvB,EAA1B;AACA,UAAMM,gBAAgB,GAAGzL,kBAAkB,CAAE,MAAF,CAAlB,CAA6B4J,MAA7B,CACxB,CAAE;AAAEC,MAAAA;AAAF,KAAF,KAAgBA,IAAI,KAAK,QADD,CAAzB;AAGA,UAAMC,cAAc,GAAG7J,aAAa,CACnCwL,gBADmC,EAEnC,CAAE;AAAEC,MAAAA;AAAF,KAAF,KAAkB;AACjB,aAAOF,iBAAiB,KAAKE,MAA7B;AACA,KAJkC,CAApC;;AAOA,QAAK,CAAE5B,cAAP,EAAwB;AACvB;AACA;;AAED,UAAMM,OAAO,GAAGkB,aAAa,CAAElK,KAAK,CAAEmB,KAAF,EAASiG,KAAT,EAAgB0B,IAAI,CAACrC,MAArB,CAAP,CAA7B;AACA,UAAMZ,KAAK,GAAG6C,cAAc,CAACK,SAAf,CAA0BC,OAA1B,CAAd;AAEAnH,IAAAA,SAAS,CAAE,CAAEgE,KAAF,CAAF,CAAT;;AACAQ,IAAAA,6BAA6B;AAC7B,GAlC2B,EAmC5B,CAAExE,SAAF,EAAawE,6BAAb,CAnC4B,CAA7B;AAsCA,QAAMkE,SAAS,GAAGvL,YAAY,CAAE,CAAEqF,YAAF,EAAgBE,WAAhB,CAAF,CAA9B;AAEA,QAAMyE,OAAO,GACZ,cAAC,QAAD;AACC,IAAA,QAAQ,EAAGxE,QADZ;AAEC,IAAA,UAAU,EAAG/B,UAFd;AAGC,IAAA,GAAG,EAAG8H,SAHP;AAIC,IAAA,KAAK,EAAG7D,aAJT;AAKC,IAAA,QAAQ,EAAGC,gBALZ;AAMC,IAAA,cAAc,EAAGtB,cANlB;AAOC,IAAA,YAAY,EAAGC,YAPhB;AAQC,IAAA,iBAAiB,EAAG6B,iBARrB;AASC,IAAA,OAAO,EAAGjG,OATX;AAUC,IAAA,WAAW,EAAGY,WAVf;AAWC,IAAA,cAAc,EAAGyE,sBAXlB;AAYC,IAAA,4BAA4B,EAAGtE,4BAZhC;AAaC,IAAA,OAAO,EAAGmG,OAbX;AAcC,IAAA,QAAQ,EAAGd,QAdZ;AAeC,IAAA,OAAO,EAAG4B,OAfX;AAgBC,IAAA,oBAAoB,EAAG3H,UAhBxB;AAiBC,IAAA,mBAAmB,EAAG0I,SAjBvB;AAkBC,IAAA,sBAAsB,EAAG3D,YAlB1B;AAmBC,IAAA,oCAAoC,EAAGzB,0BAnBxC;AAoBC,IAAA,8BAA8B,EAAGqB,kBApBlC;AAqBC,IAAA,6BAA6B,EAAGC,iBArBjC;AAsBC,IAAA,2BAA2B,EAAGF,oCAtB/B;AAuBC,IAAA,6BAA6B,EAAGI,6BAvBjC;AAwBC,IAAA,4BAA4B,EAAGpB,kBAxBhC;AAyBC,IAAA,cAAc,EAAGO,IAzBlB;AA0BC,IAAA,wBAAwB,EAAGzC,cA1B5B;AA2BC,IAAA,kBAAkB,EAAGL,kBA3BtB;AA4BC,IAAA,QAAQ,EAAGsD,QA5BZ;AA6BC,IAAA,eAAe,EAAG/C,eA7BnB;AA8BC,IAAA,oCAAoC,EACnCC,oCA/BF;AAiCC,IAAA,0BAA0B,EAAGC,0BAjC9B,CAkCC;;AAlCD,KAmCMuB,WAnCN;AAoCC,IAAA,eAAe,EACdlD,kBAAkB,KAAKiE,SAAvB,GACGjE,kBADH,GAEGiD,eAvCL;AAyCC,IAAA,mBAAmB,EAAGqB,mBAzCvB;AA0CC,IAAA,8BAA8B,EAAG1C,8BA1ClC;AA2CC,IAAA,WAAW,EAAGC,WA3Cf;AA4CC,IAAA,oBAAoB,EAAGC,oBA5CxB;AA6CC,IAAA,SAAS,EAAGC,SA7Cb;AA8CC,IAAA,cAAc,EAAGC,cA9ClB;AA+CC,IAAA,eAAe,EAAGC,eA/CnB;AAgDC,IAAA,mBAAmB,EAAGC,mBAhDvB;AAiDC,IAAA,kBAAkB,EAAGC,kBAjDtB;AAkDC,IAAA,QAAQ,EAAGC,QAlDZ;AAmDC,IAAA,UAAU,EAAGC,UAnDd;AAoDC,IAAA,UAAU,EAAGC,UApDd;AAqDC,IAAA,SAAS,EAAGC,SArDb;AAsDC,IAAA,QAAQ,EAAGC,QAtDZ;AAuDC,IAAA,QAAQ,EAAGC,QAvDZ;AAwDC,IAAA,MAAM,EAAGC,MAxDV;AAyDC,IAAA,MAAM,EAAGC,MAzDV,CA0DC;AACA;AACA;AA5DD;AA6DC,IAAA,EAAE,EAAGC,KAAK,CAACoG,EA7DZ;AA8DC,IAAA,KAAK,EAAGpG,KAAK,CAACqG;AA9Df,MAgEG,CAAE;AACHlJ,IAAAA,UAAU,EAAEmJ,gBADT;AAEHvJ,IAAAA,KAFG;AAGHE,IAAAA,QAHG;AAIHsJ,IAAAA,OAJG;AAKHC,IAAAA,aALG;AAMHC,IAAAA,eAAe,EAAEC;AANd,GAAF,KAQD,8BACGpM,QAAQ,IAAIA,QAAQ,CAAE;AAAEyC,IAAAA,KAAF;AAASE,IAAAA,QAAT;AAAmBsJ,IAAAA;AAAnB,GAAF,CADvB,EAEGD,gBAAgB,IAAIlE,UAApB,IACD,cAAC,sBAAD;AACC,IAAA,MAAM,EAAG9E,aADV;AAEC,IAAA,SAAS,EAAG6C,WAAW,CAACwG;AAFzB,IAHF,EAQGL,gBAAgB,IAAI,cAAC,sBAAD,OARvB,EASC,cAAC,YAAD;AACC,IAAA,SAAS,EAAG7I,SADb;AAEC,IAAA,UAAU,EAAGD,cAFd;AAGC,IAAA,MAAM,EAAGT,KAHV;AAIC,IAAA,QAAQ,EAAGE,QAJZ;AAKC,IAAA,UAAU,EAAGqJ,gBALd;AAMC,IAAA,UAAU,EAAGnG;AANd,KAQG,CAAE;AAAEyG,IAAAA,SAAF;AAAaC,IAAAA,QAAb;AAAuBC,IAAAA;AAAvB,GAAF,KACD,cAAC,OAAD,eACMN,aADN,EAEMxG,KAFN;AAGC,IAAA,KAAK,EACJA,KAAK,CAACqG,KAAN,GACG,EACA,GAAGrG,KAAK,CAACqG,KADT;AAEA,SAAGG,aAAa,CAACH;AAFjB,KADH,GAKGG,aAAa,CAACH,KATnB;AAWC,IAAA,SAAS,EAAGzM,UAAU,CACrBgD,OADqB,EAErBoD,KAAK,CAAC+G,SAFe,EAGrBP,aAAa,CAACO,SAHO,CAXvB;AAgBC,yBACCH,SAAS,GAAG,MAAH,GAAYvF,SAjBvB;AAmBC,iBAAYuF,SAnBb;AAoBC,6BAAwBC,QApBzB;AAqBC,IAAA,SAAS,EAAKG,KAAF,IAAa;AACxBF,MAAAA,SAAS,CAAEE,KAAF,CAAT;AACAR,MAAAA,aAAa,CAACM,SAAd,CAAyBE,KAAzB;AACA;AAxBF,KATF,CATD,CAxEF,CADD;;AA4HA,MAAK,CAAEzJ,gBAAP,EAA0B;AACzB,WAAOqH,OAAP;AACA;;AAED/I,EAAAA,UAAU,CAAE,+CAAF,EAAmD;AAC5DoL,IAAAA,KAAK,EAAE,KADqD;AAE5DC,IAAAA,WAAW,EAAE;AAF+C,GAAnD,CAAV;AAKA,SACC;AAAK,IAAA,SAAS,EAAGtN,UAAU,CAAE+C,cAAF,EAAkBY,gBAAlB;AAA3B,KACGqH,OADH,CADD;AAKA;;AAED,MAAMuC,0BAA0B,GAAGjN,UAAU,CAAE2C,eAAF,CAA7C;;AAEAsK,0BAA0B,CAACC,OAA3B,GAAqC,CAAE;AACtCrK,EAAAA,KADsC;AAEtCD,EAAAA,OAAO,EAAEuK,GAF6B;AAGtChK,EAAAA,SAHsC;AAItC,KAAG2C;AAJmC,CAAF,KAK9B;AACN;AACA,MAAKwC,KAAK,CAACC,OAAN,CAAe1F,KAAf,CAAL,EAA8B;AAC7BA,IAAAA,KAAK,GAAGxC,cAAc,CAACmI,MAAf,CAAuB3F,KAAvB,CAAR;AACA;;AAED,QAAMuK,YAAY,GAAG9K,eAAe,CAAEa,SAAF,CAApC;;AAEA,MAAK,CAAEN,KAAF,IAAWuK,YAAhB,EAA+B;AAC9BvK,IAAAA,KAAK,GAAI,IAAIuK,YAAc,MAAMA,YAAc,GAA/C;AACA;;AAED,QAAM1C,OAAO,GAAG,cAAC,OAAD,QAAW7H,KAAX,CAAhB;;AAEA,MAAKsK,GAAL,EAAW;AACV,WAAO,cAAC,GAAD,EAAUxN,IAAI,CAAEmG,KAAF,EAAS,CAAE,QAAF,CAAT,CAAd,EAA0C4E,OAA1C,CAAP;AACA;;AAED,SAAOA,OAAP;AACA,CAxBD;;AA0BAuC,0BAA0B,CAACnM,OAA3B,GAAuC+B,KAAF,IAAa;AACjD,SAAO,CAAEA,KAAF,IAAWA,KAAK,CAACsF,MAAN,KAAiB,CAAnC;AACA,CAFD;;AAIA8E,0BAA0B,CAACC,OAA3B,CAAmCG,YAAnC,GAAkD;AACjDC,EAAAA,MAAM,EAAE,QADyC;AAEjDzK,EAAAA,KAAK,EAAE;AAF0C,CAAlD;AAKA;AACA;AACA;;AACA,eAAeoK,0BAAf;AACA,SAASM,gBAAT,QAAiC,YAAjC;AACA,SAASC,qBAAT,QAAsC,kBAAtC;AACA,SAASC,4BAAT,QAA6C,eAA7C","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":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AACA,SAASC,IAAT,QAAqB,QAArB;AAEA;AACA;AACA;;AACA,SACCC,OADD,EAECC,QAFD,EAGCC,MAHD,EAICC,WAJD,EAKCC,UALD,QAMO,oBANP;AAOA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SACCC,YADD,EAECC,QAAQ,IAAIC,cAFb,EAGCC,kBAHD,EAICC,aAJD,EAKCC,wBALD,QAMO,mBANP;AAOA,SAASC,aAAT,EAAwBC,YAAxB,QAA4C,oBAA5C;AACA,SACCC,sBAAsB,IAAIC,QAD3B,EAECC,uBAFD,EAGCC,OAHD,EAICC,qBAAqB,IAAIC,WAJ1B,EAKCC,MALD,EAMCC,6BAA6B,IAAIC,mBANlC,EAOCC,MAPD,EAQCC,OARD,EASCC,KATD,EAUCC,yBAAyB,IAAIC,cAV9B,EAWCC,YAXD,EAYCC,KAZD,QAaO,sBAbP;AAcA,OAAOC,UAAP,MAAuB,uBAAvB;AACA,SAASC,KAAT,QAAsB,gBAAtB;AAEA;AACA;AACA;;AACA,OAAOC,YAAP,MAAyB,iBAAzB;AACA,SAASC,mBAAT,QAAoC,eAApC;AACA,SAASC,sBAAT,QAAuC,4BAAvC;AACA,SAASC,gBAAT,QAAiC,sBAAjC;AACA,OAAOC,sBAAP,MAAmC,4BAAnC;AACA,SAASC,cAAT,QAA+B,oBAA/B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SACCC,gBADD,EAECC,eAFD,EAGCC,iBAHD,EAICC,WAJD,EAKCC,qBALD,QAMO,SANP;AAOA,OAAOC,kBAAP,MAA+B,wBAA/B;AAEA,MAAMC,cAAc,GAAG,wBAAvB;AACA,MAAMC,OAAO,GAAG,kCAAhB;;AAEA,SAASC,eAAT,CACC;AACCzC,EAAAA,QADD;AAEC0C,EAAAA,OAFD;AAGCC,EAAAA,KAAK,EAAEC,aAHR;AAICC,EAAAA,QAAQ,EAAEC,gBAJX;AAKCC,EAAAA,UAAU,EAAEC,kBALb;AAMCC,EAAAA,SAND;AAOCC,EAAAA,aAPD;AAQCC,EAAAA,gBARD;AASCC,EAAAA,cATD;AAUCC,EAAAA,SAVD;AAWCC,EAAAA,WAXD;AAYCC,EAAAA,cAZD;AAaCC,EAAAA,kBAbD;AAcCC,EAAAA,4BAdD;AAeCC,EAAAA,QAfD;AAgBCC,EAAAA,OAhBD;AAiBCC,EAAAA,OAjBD;AAkBCC,EAAAA,sBAAsB,EAAEC,YAlBzB;AAmBCC,EAAAA,uBAAuB,EAAEC,aAnB1B;AAoBCC,EAAAA,UApBD;AAqBCC,EAAAA,kBArBD;AAsBCC,EAAAA,wBAAwB,EAAEC,cAtB3B;AAuBCC,EAAAA,yBAvBD;AAwBCC,EAAAA,wBAAwB,EAAEC,cAxB3B;AAyBCC,EAAAA,iBAzBD;AA0BCC,EAAAA,eA1BD;AA2BCC,EAAAA,oCA3BD;AA4BCC,EAAAA,0BA5BD;AA6BC;AACAC,EAAAA,8BA9BD;AA+BCC,EAAAA,WA/BD;AAgCCC,EAAAA,oBAhCD;AAiCCC,EAAAA,SAjCD;AAkCCC,EAAAA,cAlCD;AAmCCC,EAAAA,eAnCD;AAoCCC,EAAAA,mBApCD;AAqCCC,EAAAA,kBArCD;AAsCCC,EAAAA,QAtCD;AAuCCC,EAAAA,UAvCD;AAwCCC,EAAAA,UAxCD;AAyCCC,EAAAA,SAzCD;AA0CCC,EAAAA,QA1CD;AA2CCC,EAAAA,QA3CD;AA4CCC,EAAAA,MA5CD;AA6CCC,EAAAA,MA7CD;AA8CC,KAAGC;AA9CJ,CADD,EAiDCC,YAjDD,EAkDE;AACD,QAAMC,UAAU,GAAGzF,aAAa,CAAEoC,eAAF,CAAhC;AAEAwB,EAAAA,UAAU,GAAGA,UAAU,IAAI6B,UAA3B;AAEA,QAAMC,WAAW,GAAGrG,MAAM,EAA1B;AACA,QAAM;AAAEsG,IAAAA,QAAF;AAAYjD,IAAAA,UAAU,EAAEkD;AAAxB,MAA4CvE,mBAAmB,EAArE;AACA,QAAMwE,WAAW,GAAGpE,cAAc,EAAlC;AACA,QAAMqE,qBAAqB,GAAGzG,MAAM,EAApC;;AACA,QAAM0G,QAAQ,GAAKC,MAAF,IAAc;AAC9B,UAAM;AACLC,MAAAA,0BADK;AAELC,MAAAA,iBAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA,WAJK;AAKLC,MAAAA,kBALK;AAMLC,MAAAA,QANK;AAOLC,MAAAA,gBAPK;AAQLC,MAAAA;AARK,QASFR,MAAM,CAAErE,gBAAF,CATV;AAWA,UAAM8E,cAAc,GAAGP,iBAAiB,EAAxC;AACA,UAAMQ,YAAY,GAAGP,eAAe,EAApC;AACA,UAAM;AAAEQ,MAAAA,kBAAkB,EAAEC;AAAtB,QAA+BR,WAAW,EAAhD;AAEA,QAAI1D,UAAJ;;AAEA,QAAKC,kBAAkB,KAAKkE,SAA5B,EAAwC;AACvCnE,MAAAA,UAAU,GACT+D,cAAc,CAACd,QAAf,KAA4BA,QAA5B,IACAc,cAAc,CAACK,YAAf,KAAgClD,UAFjC;AAGA,KAJD,MAIO,IAAKjB,kBAAL,EAA0B;AAChCD,MAAAA,UAAU,GAAG+D,cAAc,CAACd,QAAf,KAA4BA,QAAzC;AACA;;AAED,QAAIoB,UAAU,GAAG,EAAjB;;AACA,QAAK3H,QAAQ,CAAC4H,EAAT,KAAgB,QAArB,EAAgC;AAC/B;AACA;AACA;AACA,YAAMC,KAAK,GAAGtB,QAAQ,IAAIW,QAAQ,CAAEX,QAAF,CAAlC;AACA,YAAMuB,mBAAmB,GACxBD,KAAK,IAAIvE,UAAT,IAAuB3C,wBAAwB,CAAEkH,KAAF,CADhD;AAEAF,MAAAA,UAAU,GAAG;AACZG,QAAAA;AADY,OAAb;AAGA;;AAED,WAAO;AACNjB,MAAAA,0BAA0B,EAAEA,0BAA0B,EADhD;AAENQ,MAAAA,cAAc,EAAE/D,UAAU,GAAG+D,cAAc,CAACU,MAAlB,GAA2BN,SAF/C;AAGNH,MAAAA,YAAY,EAAEhE,UAAU,GAAGgE,YAAY,CAACS,MAAhB,GAAyBN,SAH3C;AAINnE,MAAAA,UAJM;AAKN2D,MAAAA,kBAAkB,EAAEA,kBAAkB,EALhC;AAMNe,MAAAA,QAAQ,EAAEb,gBAAgB,MAAMC,iBAAiB,EAN3C;AAONI,MAAAA,IAPM;AAQN,SAAGG;AARG,KAAP;AAUA,GAjDD,CATC,CA2DD;AACA;AACA;;;AACA,QAAM;AACLd,IAAAA,0BADK;AAELQ,IAAAA,cAFK;AAGLC,IAAAA,YAHK;AAILhE,IAAAA,UAJK;AAKL2D,IAAAA,kBALK;AAMLe,IAAAA,QANK;AAOLR,IAAAA,IAPK;AAQLM,IAAAA;AARK,MASFzH,SAAS,CAAEsG,QAAF,CATb;AAUA,QAAM;AACLsB,IAAAA,oCADK;AAELC,IAAAA,kBAFK;AAGLC,IAAAA,iBAHK;AAILC,IAAAA,eAJK;AAKLC,IAAAA;AALK,MAMFjI,WAAW,CAAEmC,gBAAF,CANf;AAOA,QAAM+F,YAAY,GAAG7F,eAAe,CAAEe,SAAF,CAApC;AACA,QAAM+E,sBAAsB,GAAG7F,iBAAiB,CAAE;AACjDoB,IAAAA,cADiD;AAEjDC,IAAAA,kBAFiD;AAGjDe,IAAAA;AAHiD,GAAF,CAAhD;AAKA,QAAM0D,UAAU,GACf,CAAED,sBAAF,IAA4BA,sBAAsB,CAACE,MAAvB,GAAgC,CAD7D;AAEA,MAAIC,aAAa,GAAGvF,aAApB;AACA,MAAIwF,gBAAgB,GAAGtF,gBAAvB,CAxFC,CA0FD;;AACA,MAAKuF,KAAK,CAACC,OAAN,CAAe1F,aAAf,CAAL,EAAsC;AACrCuF,IAAAA,aAAa,GAAGlI,cAAc,CAACsI,MAAf,CAAuB3F,aAAvB,CAAhB;;AACAwF,IAAAA,gBAAgB,GAAKI,QAAF,IAClB1F,gBAAgB,CACf7C,cAAc,CAACwI,OAAf,CACChI,uBAAuB,CAAEiI,QAAF,EAAYF,QAAZ,CAAvB,CAA8CG,UAD/C,CADe,CADjB;AAMA;;AAED,QAAMC,iBAAiB,GAAGjJ,WAAW,CACpC,CAAEkJ,KAAF,EAASC,GAAT,KAAkB;AACjBjB,IAAAA,eAAe,CAAE7B,QAAF,EAAY/B,UAAZ,EAAwB4E,KAAxB,EAA+BC,GAA/B,CAAf;AACA,GAHmC,EAIpC,CAAE9C,QAAF,EAAY/B,UAAZ,CAJoC,CAArC;AAOA,QAAM8E,QAAQ,GAAGpJ,WAAW,CAC3B,CAAE;AAAEgD,IAAAA,KAAF;AAASqG,IAAAA;AAAT,GAAF,KAA4B;AAC3B,QAAKrF,OAAL,EAAe;AACdA,MAAAA,OAAO,CAAE,CAAEqF,SAAJ,CAAP;AACA,KAH0B,CAK3B;AACA;AACA;AACA;;;AACA,QAAKtF,QAAQ,IAAIhD,OAAO,CAAEiC,KAAF,CAAnB,IAAgCqG,SAArC,EAAiD;AAChDtF,MAAAA,QAAQ,CAAE,CAAEsF,SAAJ,CAAR;AACA;AACD,GAb0B,EAc3B,CAAErF,OAAF,EAAWD,QAAX,CAd2B,CAA5B;AAiBA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACC,QAAMuF,UAAU,GAAGtJ,WAAW,CAC7B,CAAEuJ,MAAF,EAAUC,YAAY,GAAG,EAAzB,KAAiC;AAChC,QAAK,CAAE9F,SAAF,IAAe,CAAEO,OAAtB,EAAgC;AAC/B;AACA;;AAED,UAAMwF,MAAM,GAAG,EAAf;AACA,UAAM,CAAEC,MAAF,EAAUC,KAAV,IAAoBpI,KAAK,CAAEgI,MAAF,CAA/B;AACA,UAAMK,eAAe,GAAGJ,YAAY,CAACjB,MAAb,GAAsB,CAA9C;AACA,QAAIsB,oBAAoB,GAAG,CAAC,CAA5B,CARgC,CAUhC;AACA;;AACA,UAAMC,eAAe,GAAG/I,OAAO,CAAE2I,MAAF,CAAP,IAAqB,CAAE3I,OAAO,CAAE4I,KAAF,CAAtD,CAZgC,CAchC;AACA;AACA;AACA;;AACA,QAAK,CAAEC,eAAF,IAAqB,CAAE7I,OAAO,CAAE2I,MAAF,CAAnC,EAAgD;AAC/CD,MAAAA,MAAM,CAACM,IAAP,CACC9F,OAAO,CACNvC,YAAY,CAAE;AACbsB,QAAAA,KAAK,EAAE0G,MADM;AAEbtB,QAAAA;AAFa,OAAF,CADN,EAKN,CAAE0B,eALI,CADR;AASAD,MAAAA,oBAAoB,IAAI,CAAxB;AACA;;AAED,QAAKD,eAAL,EAAuB;AACtBH,MAAAA,MAAM,CAACM,IAAP,CAAa,GAAGP,YAAhB;AACAK,MAAAA,oBAAoB,IAAIL,YAAY,CAACjB,MAArC;AACA,KAHD,MAGO,IAAKlE,aAAL,EAAqB;AAC3BoF,MAAAA,MAAM,CAACM,IAAP,CAAa1F,aAAa,EAA1B;AACA,KApC+B,CAsChC;AACA;AACA;AACA;;;AACA,QACCuF,eAAe,GACZ,CAAE7I,OAAO,CAAE4I,KAAF,CADG,GAEZ,CAAEtF,aAAF,IAAmB,CAAEtD,OAAO,CAAE4I,KAAF,CAHhC,EAIE;AACDF,MAAAA,MAAM,CAACM,IAAP,CACC9F,OAAO,CACNvC,YAAY,CAAE;AACbsB,QAAAA,KAAK,EAAE2G,KADM;AAEbvB,QAAAA;AAFa,OAAF,CADN,EAKN0B,eALM,CADR;AASA,KAxD+B,CA0DhC;AACA;;;AACA,UAAME,aAAa,GAAGJ,eAAe,GAAGC,oBAAH,GAA0B,CAA/D,CA5DgC,CA8DhC;AACA;;AACA,UAAMI,eAAe,GAAGL,eAAe,GAAG,CAAC,CAAJ,GAAQ,CAA/C;AAEAlG,IAAAA,SAAS,CAAE+F,MAAF,EAAUO,aAAV,EAAyBC,eAAzB,CAAT;AACA,GApE4B,EAqE7B,CAAEvG,SAAF,EAAaO,OAAb,EAAsBmE,YAAtB,EAAoC/D,aAApC,CArE6B,CAA9B;AAwEA,QAAM6F,OAAO,GAAGlK,WAAW,CAC1B,CAAE;AAAEgD,IAAAA,KAAF;AAASE,IAAAA,QAAT;AAAmBiH,IAAAA;AAAnB,GAAF,KAAqC;AACpC,UAAMC,QAAQ,GAAG1G,SAAS,IAAIO,OAA9B;;AAEA,QAAKP,SAAL,EAAiB;AAChB,YAAM2G,UAAU,GAAG9J,kBAAkB,CAAE,MAAF,CAAlB,CAA6B+J,MAA7B,CAClB,CAAE;AAAEC,QAAAA;AAAF,OAAF,KAAgBA,IAAI,KAAK,OADP,CAAnB;AAGA,YAAMC,cAAc,GAAGhK,aAAa,CAAE6J,UAAF,EAAgBI,IAAF,IAAY;AAC7D,eAAOA,IAAI,CAACC,MAAL,CAAYC,IAAZ,CAAkB3H,KAAK,CAAC4H,IAAxB,CAAP;AACA,OAFmC,CAApC;;AAIA,UAAKJ,cAAL,EAAsB;AACrB9G,QAAAA,SAAS,CAAE,CACV8G,cAAc,CAACK,SAAf,CAA0B;AAAEC,UAAAA,OAAO,EAAE9H,KAAK,CAAC4H;AAAjB,SAA1B,CADU,CAAF,CAAT;;AAGAzC,QAAAA,6BAA6B;AAC7B;AACD;;AAED,QAAK7E,SAAL,EAAiB;AAChB,UAAK6G,QAAL,EAAgB;AACf,YAAK,CAAEtF,iBAAP,EAA2B;AAC1B3B,UAAAA,QAAQ,CAAEhC,MAAM,CAAE8B,KAAF,EAAS,IAAT,CAAR,CAAR;AACA;AACD,OAJD,MAIO,IAAKoH,QAAQ,IAAInJ,WAAW,CAAE+B,KAAF,CAA5B,EAAwC;AAC9CsG,QAAAA,UAAU,CAAEtG,KAAF,CAAV;AACA,OAFM,MAEA;AACNE,QAAAA,QAAQ,CAAE9B,mBAAmB,CAAE4B,KAAF,CAArB,CAAR;AACA;AACD,KAVD,MAUO;AACN,YAAM;AAAE4H,QAAAA,IAAF;AAAQ1B,QAAAA,KAAR;AAAeC,QAAAA;AAAf,UAAuBnG,KAA7B;AACA,YAAM+H,aAAa,GAClB5G,YAAY,IAAI+E,KAAK,KAAKC,GAA1B,IAAiCA,GAAG,KAAKyB,IAAI,CAACrC,MAD/C;;AAGA,UAAK4B,QAAQ,IAAM,CAAEC,QAAF,IAAc,CAAEW,aAAnC,EAAqD;AACpD,YAAK,CAAElG,iBAAP,EAA2B;AAC1B3B,UAAAA,QAAQ,CAAEhC,MAAM,CAAE8B,KAAF,EAAS,IAAT,CAAR,CAAR;AACA;AACD,OAJD,MAIO,IAAK,CAAEoH,QAAF,IAAcW,aAAnB,EAAmC;AACzC5G,QAAAA,YAAY;AACZ,OAFM,MAEA,IAAKiG,QAAL,EAAgB;AACtBd,QAAAA,UAAU,CAAEtG,KAAF,CAAV;AACA;AACD;AACD,GA7CyB,EA8C1B,CACCU,SADD,EAECO,OAFD,EAGCkE,6BAHD,EAIC7E,SAJD,EAKCgG,UALD,EAMCnF,YAND,CA9C0B,CAA3B;AAwDA,QAAM6G,OAAO,GAAGhL,WAAW,CAC1B,CAAE;AACDgD,IAAAA,KADC;AAEDE,IAAAA,QAFC;AAGD+H,IAAAA,IAHC;AAIDC,IAAAA,SAJC;AAKDC,IAAAA,UALC;AAMDC,IAAAA,KANC;AAODC,IAAAA;AAPC,GAAF,KAQO;AACN;AACA;AACA;AACA,QAAKF,UAAL,EAAkB;AACjB,YAAMG,WAAW,GAAGjK,MAAM,CAAE;AAC3B4J,QAAAA,IAD2B;AAE3B7C,QAAAA,YAF2B;AAG3BmD,QAAAA,oBAAoB,EACnBnD,YAAY,KAAK,IAAjB,GAAwB,CAAE,IAAF,EAAQ,IAAR,CAAxB,GAAyCb,SAJf;AAK3BhD,QAAAA;AAL2B,OAAF,CAA1B;AAOAjC,MAAAA,gBAAgB,CAAEgJ,WAAF,EAAeD,aAAf,CAAhB;AACAnI,MAAAA,QAAQ,CAAEhC,MAAM,CAAE8B,KAAF,EAASsI,WAAT,CAAR,CAAR;AACA;AACA;;AAED,QAAK7G,cAAL,EAAsB;AACrBvB,MAAAA,QAAQ,CAAEhC,MAAM,CAAE8B,KAAF,EAAS3B,MAAM,CAAE;AAAEuJ,QAAAA,IAAI,EAAEM;AAAR,OAAF,CAAf,CAAR,CAAR;AACA;AACA,KApBK,CAsBN;AACA;;;AACA,QAAKE,KAAK,IAAIA,KAAK,CAAC7C,MAAf,IAAyB,CAAE0C,IAAhC,EAAuC;AACtC,YAAMH,OAAO,GAAG1K,YAAY,CAAE;AAC7BoL,QAAAA,IAAI,EAAEvJ,gBAAgB,CAAEmJ,KAAF,CADO;AAE7BK,QAAAA,IAAI,EAAE,QAFuB;AAG7B1I,QAAAA,OAH6B;AAI7BwB,QAAAA;AAJ6B,OAAF,CAA5B,CADsC,CAQtC;AACA;;AACAmH,MAAAA,MAAM,CAACC,OAAP,CAAeC,GAAf,CAAoB,qBAApB,EAA2CR,KAA3C;;AAEA,UAAK1H,SAAS,IAAI3C,OAAO,CAAEiC,KAAF,CAAzB,EAAqC;AACpCU,QAAAA,SAAS,CAAEoH,OAAF,CAAT;AACA,OAFD,MAEO;AACNxB,QAAAA,UAAU,CAAEtG,KAAF,EAAS8H,OAAT,CAAV;AACA;;AAED;AACA;;AAED,QAAIW,IAAI,GAAG/H,SAAS,IAAIO,OAAb,GAAuB,MAAvB,GAAgC,QAA3C,CA7CM,CA+CN;AACA;AACA;AACA;;AACA,QACCwH,IAAI,KAAK,MAAT,IACA1K,OAAO,CAAEiC,KAAF,CADP,IAEAP,WAAW,CAAEyI,SAAF,CAHZ,EAIE;AACDO,MAAAA,IAAI,GAAG,QAAP;AACA;;AAED,UAAMI,WAAW,GAAGhK,KAAK,CAAEqJ,SAAS,CAACY,IAAV,EAAF,CAAzB;;AACA,UAAMC,yBAAyB,GAAG;AAAA;;AAAA,sCACjCvF,qBAAqB,CAACwF,OADW,0DACjC,sBAA+BC,aAA/B,CAA8C;AAC7CC,QAAAA,WAAW,EAAE,MACZxI,SAAS,CAAEoH,OAAF,EAAWA,OAAO,CAACvC,MAAR,GAAiB,CAA5B,EAA+B,CAAC,CAAhC,CAFmC;AAG7C4D,QAAAA,UAAU,EAAE,MACXzJ,qBAAqB,CAAEwI,SAAS,CAACY,IAAV,EAAF,EAAoBpI,SAApB;AAJuB,OAA9C,CADiC;AAAA,KAAlC;;AAQA,QACCgB,yBAAyB,IACzB3D,OAAO,CAAEiC,KAAF,CADP,IAEA6I,WAHD,EAIE;AACDJ,MAAAA,IAAI,GAAG,QAAP;AACA;;AAED,UAAMX,OAAO,GAAG1K,YAAY,CAAE;AAC7BoL,MAAAA,IAAI,EAAEP,IADuB;AAE7BC,MAAAA,SAF6B;AAG7BO,MAAAA,IAH6B;AAI7B1I,MAAAA,OAJ6B;AAK7BwB,MAAAA;AAL6B,KAAF,CAA5B;;AAQA,QAAK,OAAOuG,OAAP,KAAmB,QAAxB,EAAmC;AAClC,UAAIsB,aAAa,GAAG/K,MAAM,CAAE;AAAE4J,QAAAA,IAAI,EAAEH;AAAR,OAAF,CAA1B;AAEAxI,MAAAA,gBAAgB,CAAE8J,aAAF,EAAiBf,aAAjB,CAAhB,CAHkC,CAKlC;AACA;;AACA,UAAKjD,YAAL,EAAoB;AACnBgE,QAAAA,aAAa,GAAG9K,OAAO,CACtB8K,aADsB,EAEtB,MAFsB,EAGtB3K,cAHsB,CAAvB;AAKA;;AAEDyB,MAAAA,QAAQ,CAAEhC,MAAM,CAAE8B,KAAF,EAASoJ,aAAT,CAAR,CAAR;AACA,KAhBD,MAgBO,IAAKtB,OAAO,CAACvC,MAAR,GAAiB,CAAtB,EAA0B;AAChC;AACA;AACA,YAAM8D,aAAa,GAClBR,WAAW,IACXf,OAAO,CAACvC,MAAR,KAAmB,CADnB,IAEAuC,OAAO,CAAE,CAAF,CAAP,CAAawB,IAAb,KAAsB,YAHvB;;AAIA,UAAK5I,SAAS,IAAI3C,OAAO,CAAEiC,KAAF,CAAzB,EAAqC;AACpC,YAAKqJ,aAAL,EAAqB;AACpBnJ,UAAAA,QAAQ,CACPhC,MAAM,CAAE8B,KAAF,EAAS3B,MAAM,CAAE;AAAEuJ,YAAAA,IAAI,EAAEM;AAAR,WAAF,CAAf,CADC,CAAR;;AAGA,cAAKxG,yBAAL,EAAiC;AAChCqH,YAAAA,yBAAyB;AACzB;;AACD;AACA;;AACDrI,QAAAA,SAAS,CAAEoH,OAAF,EAAWA,OAAO,CAACvC,MAAR,GAAiB,CAA5B,EAA+B,CAAC,CAAhC,CAAT;AACA,OAXD,MAWO;AACN,YAAK8D,aAAL,EAAqB;AACpBnJ,UAAAA,QAAQ,CACPhC,MAAM,CAAE8B,KAAF,EAAS3B,MAAM,CAAE;AAAEuJ,YAAAA,IAAI,EAAEM;AAAR,WAAF,CAAf,CADC,CAAR;AAGA;AACA;;AACD5B,QAAAA,UAAU,CAAEtG,KAAF,EAAS8H,OAAT,CAAV;AACA;AACD;AACD,GAzIyB,EA0I1B,CACC/H,OADD,EAECW,SAFD,EAGCO,OAHD,EAICqF,UAJD,EAKC5E,yBALD,EAMC0D,YAND,EAOC7D,kBAPD,EAQCE,cARD,CA1I0B,CAA3B;AAsJA,QAAM8H,SAAS,GAAGvM,WAAW,CAC5B,CAAEgD,KAAF,EAASwJ,aAAT,KAA4B;AAC3B,QAAK,CAAE9I,SAAP,EAAmB;AAClB;AACA;;AAED,UAAM;AAAEwF,MAAAA,KAAF;AAAS0B,MAAAA;AAAT,QAAkB5H,KAAxB;AACA,UAAMyJ,eAAe,GAAG7B,IAAI,CAACjJ,KAAL,CAAYuH,KAAK,GAAG,CAApB,EAAuBA,KAAvB,CAAxB,CAN2B,CAQ3B;;AACA,QAAKuD,eAAe,KAAK,GAAzB,EAA+B;AAC9B;AACA;;AAED,UAAMC,iBAAiB,GAAG9B,IAAI,CAACjJ,KAAL,CAAY,CAAZ,EAAeuH,KAAf,EAAuB4C,IAAvB,EAA1B;AACA,UAAMa,gBAAgB,GAAGpM,kBAAkB,CAAE,MAAF,CAAlB,CAA6B+J,MAA7B,CACxB,CAAE;AAAEC,MAAAA;AAAF,KAAF,KAAgBA,IAAI,KAAK,QADD,CAAzB;AAGA,UAAMC,cAAc,GAAGhK,aAAa,CACnCmM,gBADmC,EAEnC,CAAE;AAAEC,MAAAA;AAAF,KAAF,KAAkB;AACjB,aAAOF,iBAAiB,KAAKE,MAA7B;AACA,KAJkC,CAApC;;AAOA,QAAK,CAAEpC,cAAP,EAAwB;AACvB;AACA;;AAED,UAAMM,OAAO,GAAG0B,aAAa,CAAE7K,KAAK,CAAEqB,KAAF,EAASkG,KAAT,EAAgB0B,IAAI,CAACrC,MAArB,CAAP,CAA7B;AACA,UAAMZ,KAAK,GAAG6C,cAAc,CAACK,SAAf,CAA0BC,OAA1B,CAAd;AAEApH,IAAAA,SAAS,CAAE,CAAEiE,KAAF,CAAF,CAAT;;AACAQ,IAAAA,6BAA6B;AAC7B,GAlC2B,EAmC5B,CAAEzE,SAAF,EAAayE,6BAAb,CAnC4B,CAA7B;AAsCA,QAAM0E,SAAS,GAAGlM,YAAY,CAAE,CAAEuF,YAAF,EAAgBE,WAAhB,CAAF,CAA9B;AAEA,QAAM0E,OAAO,GACZ,cAAC,QAAD;AACC,IAAA,QAAQ,EAAGzE,QADZ;AAEC,IAAA,UAAU,EAAG/B,UAFd;AAGC,IAAA,GAAG,EAAGuI,SAHP;AAIC,IAAA,KAAK,EAAGrE,aAJT;AAKC,IAAA,QAAQ,EAAGC,gBALZ;AAMC,IAAA,cAAc,EAAGtB,cANlB;AAOC,IAAA,YAAY,EAAGC,YAPhB;AAQC,IAAA,iBAAiB,EAAG6B,iBARrB;AASC,IAAA,OAAO,EAAGlG,OATX;AAUC,IAAA,WAAW,EAAGY,WAVf;AAWC,IAAA,cAAc,EAAG0E,sBAXlB;AAYC,IAAA,4BAA4B,EAAGvE,4BAZhC;AAaC,IAAA,OAAO,EAAGoG,OAbX;AAcC,IAAA,QAAQ,EAAGd,QAdZ;AAeC,IAAA,OAAO,EAAG4B,OAfX;AAgBC,IAAA,oBAAoB,EAAG5H,UAhBxB;AAiBC,IAAA,mBAAmB,EAAGmJ,SAjBvB;AAkBC,IAAA,sBAAsB,EAAGnE,YAlB1B;AAmBC,IAAA,oCAAoC,EAAGzB,0BAnBxC;AAoBC,IAAA,8BAA8B,EAAGqB,kBApBlC;AAqBC,IAAA,6BAA6B,EAAGC,iBArBjC;AAsBC,IAAA,2BAA2B,EAAGF,oCAtB/B;AAuBC,IAAA,6BAA6B,EAAGI,6BAvBjC;AAwBC,IAAA,4BAA4B,EAAGpB,kBAxBhC;AAyBC,IAAA,cAAc,EAAGO,IAzBlB;AA0BC,IAAA,wBAAwB,EAAG1C,cA1B5B;AA2BC,IAAA,kBAAkB,EAAGL,kBA3BtB;AA4BC,IAAA,QAAQ,EAAGuD,QA5BZ;AA6BC,IAAA,eAAe,EAAGhD,eA7BnB;AA8BC,IAAA,oCAAoC,EACnCC,oCA/BF;AAiCC,IAAA,0BAA0B,EAAGC,0BAjC9B,CAkCC;;AAlCD,KAmCMuB,WAnCN;AAoCC,IAAA,eAAe,EACdlD,kBAAkB,KAAKkE,SAAvB,GACGlE,kBADH,GAEGiD,eAvCL;AAyCC,IAAA,mBAAmB,EAAGsB,mBAzCvB;AA0CC,IAAA,8BAA8B,EAAG3C,8BA1ClC;AA2CC,IAAA,WAAW,EAAGC,WA3Cf;AA4CC,IAAA,oBAAoB,EAAGC,oBA5CxB;AA6CC,IAAA,SAAS,EAAGC,SA7Cb;AA8CC,IAAA,cAAc,EAAGC,cA9ClB;AA+CC,IAAA,eAAe,EAAGC,eA/CnB;AAgDC,IAAA,mBAAmB,EAAGC,mBAhDvB;AAiDC,IAAA,kBAAkB,EAAGC,kBAjDtB;AAkDC,IAAA,QAAQ,EAAGC,QAlDZ;AAmDC,IAAA,UAAU,EAAGC,UAnDd;AAoDC,IAAA,UAAU,EAAGC,UApDd;AAqDC,IAAA,SAAS,EAAGC,SArDb;AAsDC,IAAA,QAAQ,EAAGC,QAtDZ;AAuDC,IAAA,QAAQ,EAAGC,QAvDZ;AAwDC,IAAA,MAAM,EAAGC,MAxDV;AAyDC,IAAA,MAAM,EAAGC,MAzDV,CA0DC;AACA;AACA;AA5DD;AA6DC,IAAA,EAAE,EAAGC,KAAK,CAAC6G,EA7DZ;AA8DC,IAAA,KAAK,EAAG7G,KAAK,CAAC8G;AA9Df,MAgEG,CAAE;AACH3J,IAAAA,UAAU,EAAE4J,gBADT;AAEHhK,IAAAA,KAFG;AAGHE,IAAAA,QAHG;AAIH+J,IAAAA,OAJG;AAKHC,IAAAA,aALG;AAMHC,IAAAA,eAAe,EAAEC;AANd,GAAF,KAQD,8BACG/M,QAAQ,IAAIA,QAAQ,CAAE;AAAE2C,IAAAA,KAAF;AAASE,IAAAA,QAAT;AAAmB+J,IAAAA;AAAnB,GAAF,CADvB,EAEGD,gBAAgB,IAAI1E,UAApB,IACD,cAAC,sBAAD;AACC,IAAA,MAAM,EAAG/E,aADV;AAEC,IAAA,SAAS,EAAG6C,WAAW,CAAC4F;AAFzB,IAHF,EAQGgB,gBAAgB,IAAI,cAAC,sBAAD,OARvB,EASC,cAAC,YAAD;AACC,IAAA,SAAS,EAAGtJ,SADb;AAEC,IAAA,UAAU,EAAGD,cAFd;AAGC,IAAA,MAAM,EAAGT,KAHV;AAIC,IAAA,QAAQ,EAAGE,QAJZ;AAKC,IAAA,UAAU,EAAG8J,gBALd;AAMC,IAAA,UAAU,EAAG5G;AANd,KAQG,CAAE;AAAEiH,IAAAA,SAAF;AAAaC,IAAAA,QAAb;AAAuBC,IAAAA;AAAvB,GAAF,KACD,cAAC,OAAD,eACML,aADN,EAEMjH,KAFN;AAGC,IAAA,KAAK,EACJA,KAAK,CAAC8G,KAAN,GACG,EACA,GAAG9G,KAAK,CAAC8G,KADT;AAEA,SAAGG,aAAa,CAACH;AAFjB,KADH,GAKGG,aAAa,CAACH,KATnB;AAWC,IAAA,SAAS,EAAGpN,UAAU,CACrBkD,OADqB,EAErBoD,KAAK,CAACuH,SAFe,EAGrBN,aAAa,CAACM,SAHO,CAXvB;AAgBC,yBACCH,SAAS,GAAG,MAAH,GAAY9F,SAjBvB;AAmBC,iBAAY8F,SAnBb;AAoBC,6BAAwBC,QApBzB;AAqBC,IAAA,SAAS,EAAKG,KAAF,IAAa;AACxBF,MAAAA,SAAS,CAAEE,KAAF,CAAT;AACAP,MAAAA,aAAa,CAACK,SAAd,CAAyBE,KAAzB;AACA;AAxBF,KATF,CATD,EA8CC,cAAC,kBAAD;AAAoB,IAAA,GAAG,EAAGjH;AAA1B,IA9CD,CAxEF,CADD;;AA6HA,MAAK,CAAEhD,gBAAP,EAA0B;AACzB,WAAOsH,OAAP;AACA;;AAEDlJ,EAAAA,UAAU,CAAE,+CAAF,EAAmD;AAC5D8L,IAAAA,KAAK,EAAE,KADqD;AAE5DC,IAAAA,WAAW,EAAE;AAF+C,GAAnD,CAAV;AAKA,SACC;AAAK,IAAA,SAAS,EAAGhO,UAAU,CAAEiD,cAAF,EAAkBY,gBAAlB;AAA3B,KACGsH,OADH,CADD;AAKA;;AAED,MAAM8C,0BAA0B,GAAG3N,UAAU,CAAE6C,eAAF,CAA7C;;AAEA8K,0BAA0B,CAACC,OAA3B,GAAqC,CAAE;AACtC7K,EAAAA,KADsC;AAEtCD,EAAAA,OAAO,EAAE+K,GAF6B;AAGtCxK,EAAAA,SAHsC;AAItC,KAAG2C;AAJmC,CAAF,KAK9B;AACN;AACA,MAAKyC,KAAK,CAACC,OAAN,CAAe3F,KAAf,CAAL,EAA8B;AAC7BA,IAAAA,KAAK,GAAG1C,cAAc,CAACsI,MAAf,CAAuB5F,KAAvB,CAAR;AACA;;AAED,QAAM+K,YAAY,GAAGxL,eAAe,CAAEe,SAAF,CAApC;;AAEA,MAAK,CAAEN,KAAF,IAAW+K,YAAhB,EAA+B;AAC9B/K,IAAAA,KAAK,GAAI,IAAI+K,YAAc,MAAMA,YAAc,GAA/C;AACA;;AAED,QAAMjD,OAAO,GAAG,cAAC,OAAD,QAAW9H,KAAX,CAAhB;;AAEA,MAAK8K,GAAL,EAAW;AACV,WAAO,cAAC,GAAD,EAAUlO,IAAI,CAAEqG,KAAF,EAAS,CAAE,QAAF,CAAT,CAAd,EAA0C6E,OAA1C,CAAP;AACA;;AAED,SAAOA,OAAP;AACA,CAxBD;;AA0BA8C,0BAA0B,CAAC7M,OAA3B,GAAuCiC,KAAF,IAAa;AACjD,SAAO,CAAEA,KAAF,IAAWA,KAAK,CAACuF,MAAN,KAAiB,CAAnC;AACA,CAFD;;AAIAqF,0BAA0B,CAACC,OAA3B,CAAmCG,YAAnC,GAAkD;AACjDC,EAAAA,MAAM,EAAE,QADyC;AAEjDjL,EAAAA,KAAK,EAAE;AAF0C,CAAlD;AAKA;AACA;AACA;;AACA,eAAe4K,0BAAf;AACA,SAASM,gBAAT,QAAiC,YAAjC;AACA,SAASC,qBAAT,QAAsC,kBAAtC;AACA,SAASC,4BAAT,QAA6C,eAA7C","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)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-paste-handler.js"],"names":["useRef","useRefEffect","getFilesFromDataTransfer","pasteHandler","isEmpty","insert","create","replace","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","isURL","filePasteHandler","addActiveFormats","isShortcode","splitValue","usePasteHandler","props","propsRef","current","element","_onPaste","event","isSelected","disableFormats","onChange","value","formatTypes","tagName","onReplace","onSplit","onSplitMiddle","__unstableEmbedURLOnPaste","multilineTag","preserveWhiteSpace","pastePlainText","preventDefault","clipboardData","plainText","html","getData","error1","error2","removeWindowsFragments","window","console","log","transformed","reduce","accumlator","__unstablePasteRule","files","isInternal","pastedValue","multilineWrapperTags","undefined","activeFormats","text","length","content","HTML","mode","pastedBlocks","trim","valueToInsert","addEventListener","removeEventListener","startReg","endReg"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\nimport { pasteHandler } from '@wordpress/blocks';\nimport {\n\tisEmpty,\n\tinsert,\n\tcreate,\n\treplace,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { filePasteHandler } from './file-paste-handler';\nimport { addActiveFormats, isShortcode } from './utils';\nimport { splitValue } from './split-value';\n\nexport function usePasteHandler( props ) {\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction _onPaste( event ) {\n\t\t\tconst {\n\t\t\t\tisSelected,\n\t\t\t\tdisableFormats,\n\t\t\t\tonChange,\n\t\t\t\tvalue,\n\t\t\t\tformatTypes,\n\t\t\t\ttagName,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonSplitMiddle,\n\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\tmultilineTag,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t\tpastePlainText,\n\t\t\t} = propsRef.current;\n\n\t\t\tif ( ! isSelected ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { clipboardData } = event;\n\n\t\t\tlet plainText = '';\n\t\t\tlet html = '';\n\n\t\t\t// IE11 only supports `Text` as an argument for `getData` and will\n\t\t\t// otherwise throw an invalid argument error, so we try the standard\n\t\t\t// arguments first, then fallback to `Text` if they fail.\n\t\t\ttry {\n\t\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t\t} catch ( error1 ) {\n\t\t\t\ttry {\n\t\t\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t\t\t} catch ( error2 ) {\n\t\t\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t\t\t// behaviour.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove Windows-specific metadata appended within copied HTML text.\n\t\t\thtml = removeWindowsFragments( html );\n\n\t\t\tevent.preventDefault();\n\n\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\t\tif ( disableFormats ) {\n\t\t\t\tonChange( insert( value, plainText ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumlator === value ) {\n\t\t\t\t\t\taccumlator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst files = [ ...getFilesFromDataTransfer( clipboardData ) ];\n\t\t\tconst isInternal = clipboardData.getData( 'rich-text' ) === 'true';\n\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, value.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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t}\n\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, value.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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'paste', _onPaste );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'paste', _onPaste );\n\t\t};\n\t}, [] );\n}\n\n/**\n * Normalizes a given string of HTML to remove the Windows specific \"Fragment\" comments\n * and any preceeding and trailing whitespace.\n *\n * @param {string} html the html to be normalized\n * @return {string} the normalized html\n */\nfunction removeWindowsFragments( html ) {\n\tconst startReg = /.*<!--StartFragment-->/s;\n\tconst endReg = /<!--EndFragment-->.*/s;\n\n\treturn html.replace( startReg, '' ).replace( endReg, '' );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/use-paste-handler.js"],"names":["useRef","useRefEffect","getFilesFromDataTransfer","pasteHandler","isEmpty","insert","create","replace","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","isURL","filePasteHandler","addActiveFormats","isShortcode","splitValue","adjustLines","value","isMultiline","RegExp","usePasteHandler","props","propsRef","current","element","_onPaste","event","isSelected","disableFormats","onChange","formatTypes","tagName","onReplace","onSplit","onSplitMiddle","__unstableEmbedURLOnPaste","multilineTag","preserveWhiteSpace","pastePlainText","preventDefault","clipboardData","plainText","html","getData","error1","error2","removeWindowsFragments","window","console","log","transformed","reduce","accumlator","__unstablePasteRule","files","isInternal","pastedMultilineTag","undefined","pastedValue","multilineWrapperTags","activeFormats","text","length","content","HTML","mode","pastedBlocks","trim","valueToInsert","addEventListener","removeEventListener","startReg","endReg"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\nimport { pasteHandler } from '@wordpress/blocks';\nimport {\n\tisEmpty,\n\tinsert,\n\tcreate,\n\treplace,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { filePasteHandler } from './file-paste-handler';\nimport { addActiveFormats, isShortcode } from './utils';\nimport { splitValue } from './split-value';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\n/**\n * Replaces line separators with line breaks if not multiline.\n * Replaces line breaks with line separators if multiline.\n *\n * @param {RichTextValue} value Value to adjust.\n * @param {boolean} isMultiline Whether to adjust to multiline or not.\n *\n * @return {RichTextValue} Adjusted value.\n */\nfunction adjustLines( value, isMultiline ) {\n\tif ( isMultiline ) {\n\t\treturn replace( value, /\\n+/g, LINE_SEPARATOR );\n\t}\n\n\treturn replace( value, new RegExp( LINE_SEPARATOR, 'g' ), '\\n' );\n}\n\nexport function usePasteHandler( props ) {\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction _onPaste( event ) {\n\t\t\tconst {\n\t\t\t\tisSelected,\n\t\t\t\tdisableFormats,\n\t\t\t\tonChange,\n\t\t\t\tvalue,\n\t\t\t\tformatTypes,\n\t\t\t\ttagName,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonSplitMiddle,\n\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\tmultilineTag,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t\tpastePlainText,\n\t\t\t} = propsRef.current;\n\n\t\t\tif ( ! isSelected ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { clipboardData } = event;\n\n\t\t\tlet plainText = '';\n\t\t\tlet html = '';\n\n\t\t\t// IE11 only supports `Text` as an argument for `getData` and will\n\t\t\t// otherwise throw an invalid argument error, so we try the standard\n\t\t\t// arguments first, then fallback to `Text` if they fail.\n\t\t\ttry {\n\t\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t\t} catch ( error1 ) {\n\t\t\t\ttry {\n\t\t\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t\t\t} catch ( error2 ) {\n\t\t\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t\t\t// behaviour.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove Windows-specific metadata appended within copied HTML text.\n\t\t\thtml = removeWindowsFragments( html );\n\n\t\t\tevent.preventDefault();\n\n\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\t\tif ( disableFormats ) {\n\t\t\t\tonChange( insert( value, plainText ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumlator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumlator === value ) {\n\t\t\t\t\t\taccumlator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumlator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst files = [ ...getFilesFromDataTransfer( clipboardData ) ];\n\t\t\tconst isInternal = clipboardData.getData( 'rich-text' ) === 'true';\n\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 pastedMultilineTag =\n\t\t\t\t\tclipboardData.getData( 'rich-text-multi-line-tag' ) ||\n\t\t\t\t\tundefined;\n\t\t\t\tlet pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag: pastedMultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tpastedMultilineTag === 'li'\n\t\t\t\t\t\t\t? [ 'ul', 'ol' ]\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\tpastedValue = adjustLines( pastedValue, !! multilineTag );\n\t\t\t\taddActiveFormats( pastedValue, value.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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t}\n\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\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\tvalueToInsert = adjustLines( valueToInsert, !! multilineTag );\n\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\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( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tpastedBlocks: content,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'paste', _onPaste );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'paste', _onPaste );\n\t\t};\n\t}, [] );\n}\n\n/**\n * Normalizes a given string of HTML to remove the Windows specific \"Fragment\" comments\n * and any preceeding and trailing whitespace.\n *\n * @param {string} html the html to be normalized\n * @return {string} the normalized html\n */\nfunction removeWindowsFragments( html ) {\n\tconst startReg = /.*<!--StartFragment-->/s;\n\tconst endReg = /<!--EndFragment-->.*/s;\n\n\treturn html.replace( startReg, '' ).replace( endReg, '' );\n}\n"]}
@@ -1,8 +1,12 @@
1
+ import { createElement } from "@wordpress/element";
2
+
1
3
  /**
2
4
  * WordPress dependencies
3
5
  */
4
6
  import { regexp } from '@wordpress/shortcode';
5
7
  import deprecated from '@wordpress/deprecated';
8
+ import { renderToString } from '@wordpress/element';
9
+ import { createBlock } from '@wordpress/blocks';
6
10
  export function addActiveFormats(value, activeFormats) {
7
11
  if (activeFormats !== null && activeFormats !== void 0 && activeFormats.length) {
8
12
  let index = value.formats.length;
@@ -52,4 +56,20 @@ export function getAllowedFormats({
52
56
  }
53
57
  getAllowedFormats.EMPTY_ARRAY = [];
54
58
  export const isShortcode = text => regexp('.*').test(text);
59
+ /**
60
+ * Creates a link from pasted URL.
61
+ * Creates a paragraph block containing a link to the URL, and calls `onReplace`.
62
+ *
63
+ * @param {string} url The URL that could not be embedded.
64
+ * @param {Function} onReplace Function to call with the created fallback block.
65
+ */
66
+
67
+ export function createLinkInParagraph(url, onReplace) {
68
+ const link = createElement("a", {
69
+ href: url
70
+ }, url);
71
+ onReplace(createBlock('core/paragraph', {
72
+ content: renderToString(link)
73
+ }));
74
+ }
55
75
  //# sourceMappingURL=utils.js.map