@wordpress/block-editor 7.0.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1017) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +47 -4
  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-content-overlay/index.js +2 -4
  12. package/build/components/block-content-overlay/index.js.map +1 -1
  13. package/build/components/block-controls/fill.js +6 -6
  14. package/build/components/block-controls/fill.js.map +1 -1
  15. package/build/components/block-controls/groups.js +3 -1
  16. package/build/components/block-controls/groups.js.map +1 -1
  17. package/build/components/block-controls/hook.js +57 -0
  18. package/build/components/block-controls/hook.js.map +1 -0
  19. package/build/components/block-edit/context.js +6 -5
  20. package/build/components/block-edit/context.js.map +1 -1
  21. package/build/components/block-edit/edit.js +1 -1
  22. package/build/components/block-edit/edit.js.map +1 -1
  23. package/build/components/block-icon/index.js +5 -1
  24. package/build/components/block-icon/index.js.map +1 -1
  25. package/build/components/block-icon/index.native.js +13 -9
  26. package/build/components/block-icon/index.native.js.map +1 -1
  27. package/build/components/block-inspector/index.js +14 -7
  28. package/build/components/block-inspector/index.js.map +1 -1
  29. package/build/components/block-list/block-html.js +5 -0
  30. package/build/components/block-list/block-html.js.map +1 -1
  31. package/build/components/block-list/block-list-item.native.js +31 -12
  32. package/build/components/block-list/block-list-item.native.js.map +1 -1
  33. package/build/components/block-list/block-selection-button.native.js +4 -4
  34. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  35. package/build/components/block-list/block.js +15 -9
  36. package/build/components/block-list/block.js.map +1 -1
  37. package/build/components/block-list/block.native.js +6 -7
  38. package/build/components/block-list/block.native.js.map +1 -1
  39. package/build/components/block-list/grid-item.native.js +68 -0
  40. package/build/components/block-list/grid-item.native.js.map +1 -0
  41. package/build/components/block-list/index.js +19 -15
  42. package/build/components/block-list/index.js.map +1 -1
  43. package/build/components/block-list/index.native.js +13 -9
  44. package/build/components/block-list/index.native.js.map +1 -1
  45. package/build/components/block-list/use-block-props/index.js +6 -6
  46. package/build/components/block-list/use-block-props/index.js.map +1 -1
  47. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +4 -6
  48. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  49. package/build/components/block-list/use-block-props/use-block-default-class-name.js +1 -1
  50. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
  51. package/build/components/block-list/use-block-props/use-multi-selection.js +21 -6
  52. package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  53. package/build/components/block-list/use-in-between-inserter.js +9 -1
  54. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  55. package/build/components/block-list-appender/index.js +9 -1
  56. package/build/components/block-list-appender/index.js.map +1 -1
  57. package/build/components/block-mover/index.js +4 -4
  58. package/build/components/block-mover/index.js.map +1 -1
  59. package/build/components/block-mover/index.native.js +4 -4
  60. package/build/components/block-mover/index.native.js.map +1 -1
  61. package/build/components/block-navigation/dropdown.js +0 -1
  62. package/build/components/block-navigation/dropdown.js.map +1 -1
  63. package/build/components/block-patterns-list/index.js +1 -8
  64. package/build/components/block-patterns-list/index.js.map +1 -1
  65. package/build/components/block-preview/auto.js +42 -14
  66. package/build/components/block-preview/auto.js.map +1 -1
  67. package/build/components/block-settings/container.native.js +5 -2
  68. package/build/components/block-settings/container.native.js.map +1 -1
  69. package/build/components/block-settings-menu/block-settings-dropdown.js +26 -5
  70. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  71. package/build/components/block-settings-menu-controls/index.js +10 -3
  72. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  73. package/build/components/block-styles/index.js +5 -1
  74. package/build/components/block-styles/index.js.map +1 -1
  75. package/build/components/block-styles/preview.native.js +2 -2
  76. package/build/components/block-styles/preview.native.js.map +1 -1
  77. package/build/components/block-switcher/block-styles-menu.js +1 -1
  78. package/build/components/block-switcher/block-styles-menu.js.map +1 -1
  79. package/build/components/block-switcher/index.js +10 -3
  80. package/build/components/block-switcher/index.js.map +1 -1
  81. package/build/components/block-title/index.js +3 -2
  82. package/build/components/block-title/index.js.map +1 -1
  83. package/build/components/block-toolbar/index.js +3 -0
  84. package/build/components/block-toolbar/index.js.map +1 -1
  85. package/build/components/block-tools/block-contextual-toolbar.js +1 -1
  86. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  87. package/build/components/block-tools/block-popover.js +8 -7
  88. package/build/components/block-tools/block-popover.js.map +1 -1
  89. package/build/components/block-tools/block-selection-button.js +2 -4
  90. package/build/components/block-tools/block-selection-button.js.map +1 -1
  91. package/build/components/block-tools/index.js +4 -1
  92. package/build/components/block-tools/index.js.map +1 -1
  93. package/build/components/block-tools/insertion-point.js +96 -7
  94. package/build/components/block-tools/insertion-point.js.map +1 -1
  95. package/build/components/block-types-list/index.native.js +3 -2
  96. package/build/components/block-types-list/index.native.js.map +1 -1
  97. package/build/components/border-radius-control/index.js.map +1 -1
  98. package/build/components/border-radius-control/utils.js +17 -8
  99. package/build/components/border-radius-control/utils.js.map +1 -1
  100. package/build/components/colors/utils.js +11 -3
  101. package/build/components/colors/utils.js.map +1 -1
  102. package/build/components/colors-gradients/control.js +22 -57
  103. package/build/components/colors-gradients/control.js.map +1 -1
  104. package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
  105. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  106. package/build/components/contrast-checker/index.js +18 -12
  107. package/build/components/contrast-checker/index.js.map +1 -1
  108. package/build/components/copy-handler/index.js +9 -3
  109. package/build/components/copy-handler/index.js.map +1 -1
  110. package/build/components/default-block-appender/index.js +2 -2
  111. package/build/components/default-block-appender/index.js.map +1 -1
  112. package/build/components/duotone-control/index.js +41 -39
  113. package/build/components/duotone-control/index.js.map +1 -1
  114. package/build/components/editor-styles/index.js +9 -3
  115. package/build/components/editor-styles/index.js.map +1 -1
  116. package/build/components/font-appearance-control/index.js +44 -12
  117. package/build/components/font-appearance-control/index.js.map +1 -1
  118. package/build/components/font-sizes/index.native.js +24 -0
  119. package/build/components/font-sizes/index.native.js.map +1 -1
  120. package/build/components/iframe/index.js +46 -63
  121. package/build/components/iframe/index.js.map +1 -1
  122. package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
  123. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  124. package/build/components/image-editor/constants.js +16 -0
  125. package/build/components/image-editor/constants.js.map +1 -0
  126. package/build/components/image-editor/context.js +59 -0
  127. package/build/components/image-editor/context.js.map +1 -0
  128. package/build/components/image-editor/cropper.js +83 -0
  129. package/build/components/image-editor/cropper.js.map +1 -0
  130. package/build/components/image-editor/form-controls.js +36 -0
  131. package/build/components/image-editor/form-controls.js.map +1 -0
  132. package/build/components/image-editor/index.js +60 -0
  133. package/build/components/image-editor/index.js.map +1 -0
  134. package/build/components/image-editor/rotation-button.js +37 -0
  135. package/build/components/image-editor/rotation-button.js.map +1 -0
  136. package/build/components/image-editor/use-save-image.js +84 -0
  137. package/build/components/image-editor/use-save-image.js.map +1 -0
  138. package/build/components/image-editor/use-transform-image.js +135 -0
  139. package/build/components/image-editor/use-transform-image.js.map +1 -0
  140. package/build/components/image-editor/zoom-dropdown.js +55 -0
  141. package/build/components/image-editor/zoom-dropdown.js.map +1 -0
  142. package/build/components/image-size-control/use-dimension-handler.js +14 -3
  143. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  144. package/build/components/index.js +42 -37
  145. package/build/components/index.js.map +1 -1
  146. package/build/components/index.native.js +12 -7
  147. package/build/components/index.native.js.map +1 -1
  148. package/build/components/inner-blocks/button-block-appender.js +11 -1
  149. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  150. package/build/components/inner-blocks/index.js +28 -10
  151. package/build/components/inner-blocks/index.js.map +1 -1
  152. package/build/components/inner-blocks/index.native.js +42 -4
  153. package/build/components/inner-blocks/index.native.js.map +1 -1
  154. package/build/components/inner-blocks/use-nested-settings-update.js +24 -13
  155. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  156. package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
  157. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  158. package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
  159. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  160. package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
  161. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  162. package/build/components/inserter/block-patterns-tab.js +74 -35
  163. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  164. package/build/components/inserter/block-types-tab.native.js +3 -6
  165. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  166. package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  167. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  168. package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  169. package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  170. package/build/components/inserter/index.js +12 -4
  171. package/build/components/inserter/index.js.map +1 -1
  172. package/build/components/inserter/index.native.js +1 -7
  173. package/build/components/inserter/index.native.js.map +1 -1
  174. package/build/components/inserter/library.js +2 -0
  175. package/build/components/inserter/library.js.map +1 -1
  176. package/build/components/inserter/menu.js +2 -1
  177. package/build/components/inserter/menu.js.map +1 -1
  178. package/build/components/inserter/menu.native.js +18 -17
  179. package/build/components/inserter/menu.native.js.map +1 -1
  180. package/build/components/inserter/pattern-panel.js +19 -10
  181. package/build/components/inserter/pattern-panel.js.map +1 -1
  182. package/build/components/inserter/preview-panel.js +1 -1
  183. package/build/components/inserter/preview-panel.js.map +1 -1
  184. package/build/components/inserter/quick-inserter.js +2 -1
  185. package/build/components/inserter/quick-inserter.js.map +1 -1
  186. package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
  187. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  188. package/build/components/inserter/search-results.native.js +9 -2
  189. package/build/components/inserter/search-results.native.js.map +1 -1
  190. package/build/components/inserter/tabs.native.js +1 -4
  191. package/build/components/inserter/tabs.native.js.map +1 -1
  192. package/build/components/inserter/utils.native.js +44 -0
  193. package/build/components/inserter/utils.native.js.map +1 -0
  194. package/build/components/inspector-controls/block-support-slot-container.js +28 -0
  195. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
  196. package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
  197. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  198. package/build/components/inspector-controls/fill.js +64 -0
  199. package/build/components/inspector-controls/fill.js.map +1 -0
  200. package/build/components/inspector-controls/{index.native.js → fill.native.js} +20 -19
  201. package/build/components/inspector-controls/fill.native.js.map +1 -0
  202. package/build/components/inspector-controls/groups.js +25 -0
  203. package/build/components/inspector-controls/groups.js.map +1 -0
  204. package/build/components/inspector-controls/index.js +22 -20
  205. package/build/components/inspector-controls/index.js.map +1 -1
  206. package/build/components/inspector-controls/slot.js +67 -0
  207. package/build/components/inspector-controls/slot.js.map +1 -0
  208. package/build/components/inspector-controls/slot.native.js +38 -0
  209. package/build/components/inspector-controls/slot.native.js.map +1 -0
  210. package/build/components/letter-spacing-control/index.js +9 -6
  211. package/build/components/letter-spacing-control/index.js.map +1 -1
  212. package/build/components/line-height-control/index.native.js +39 -0
  213. package/build/components/line-height-control/index.native.js.map +1 -0
  214. package/build/components/link-control/index.js +93 -34
  215. package/build/components/link-control/index.js.map +1 -1
  216. package/build/components/link-control/link-preview.js +45 -15
  217. package/build/components/link-control/link-preview.js.map +1 -1
  218. package/build/components/link-control/search-input.js +25 -7
  219. package/build/components/link-control/search-input.js.map +1 -1
  220. package/build/components/list-view/block-contents.js +1 -20
  221. package/build/components/list-view/block-contents.js.map +1 -1
  222. package/build/components/list-view/block.js +54 -69
  223. package/build/components/list-view/block.js.map +1 -1
  224. package/build/components/list-view/branch.js +102 -76
  225. package/build/components/list-view/branch.js.map +1 -1
  226. package/build/components/list-view/index.js +53 -23
  227. package/build/components/list-view/index.js.map +1 -1
  228. package/build/components/list-view/leaf.js +2 -2
  229. package/build/components/list-view/leaf.js.map +1 -1
  230. package/build/components/list-view/list-item.js +3 -2
  231. package/build/components/list-view/list-item.js.map +1 -1
  232. package/build/components/list-view/use-list-view-client-ids.js +13 -54
  233. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  234. package/build/components/media-placeholder/index.js +35 -21
  235. package/build/components/media-placeholder/index.js.map +1 -1
  236. package/build/components/media-placeholder/index.native.js +2 -1
  237. package/build/components/media-placeholder/index.native.js.map +1 -1
  238. package/build/components/media-replace-flow/index.js +5 -3
  239. package/build/components/media-replace-flow/index.js.map +1 -1
  240. package/build/components/navigable-toolbar/index.js +1 -4
  241. package/build/components/navigable-toolbar/index.js.map +1 -1
  242. package/build/components/observe-typing/index.js +1 -1
  243. package/build/components/observe-typing/index.js.map +1 -1
  244. package/build/components/plain-text/index.native.js +30 -1
  245. package/build/components/plain-text/index.native.js.map +1 -1
  246. package/build/components/rich-text/embed-handler-picker.native.js +66 -0
  247. package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
  248. package/build/components/rich-text/format-edit.js +28 -2
  249. package/build/components/rich-text/format-edit.js.map +1 -1
  250. package/build/components/rich-text/format-toolbar/index.js +32 -11
  251. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  252. package/build/components/rich-text/index.js +29 -7
  253. package/build/components/rich-text/index.js.map +1 -1
  254. package/build/components/rich-text/index.native.js +43 -5
  255. package/build/components/rich-text/index.native.js.map +1 -1
  256. package/build/components/rich-text/input-event.js +25 -24
  257. package/build/components/rich-text/input-event.js.map +1 -1
  258. package/build/components/rich-text/shortcut.js +23 -9
  259. package/build/components/rich-text/shortcut.js.map +1 -1
  260. package/build/components/rich-text/use-input-events.js +27 -0
  261. package/build/components/rich-text/use-input-events.js.map +1 -0
  262. package/build/components/rich-text/use-paste-handler.js +45 -10
  263. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  264. package/build/components/rich-text/use-shortcuts.js +27 -0
  265. package/build/components/rich-text/use-shortcuts.js.map +1 -0
  266. package/build/components/rich-text/utils.js +22 -0
  267. package/build/components/rich-text/utils.js.map +1 -1
  268. package/build/components/typewriter/index.js +1 -1
  269. package/build/components/typewriter/index.js.map +1 -1
  270. package/build/components/url-input/index.js +25 -11
  271. package/build/components/url-input/index.js.map +1 -1
  272. package/build/components/use-display-block-controls/index.js +5 -7
  273. package/build/components/use-display-block-controls/index.js.map +1 -1
  274. package/build/components/use-moving-animation/index.js +13 -10
  275. package/build/components/use-moving-animation/index.js.map +1 -1
  276. package/build/components/use-on-block-drop/index.js +2 -1
  277. package/build/components/use-on-block-drop/index.js.map +1 -1
  278. package/build/components/use-resize-canvas/index.js +2 -13
  279. package/build/components/use-resize-canvas/index.js.map +1 -1
  280. package/build/components/use-setting/index.js +49 -14
  281. package/build/components/use-setting/index.js.map +1 -1
  282. package/build/components/writing-flow/use-multi-selection.js +6 -0
  283. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  284. package/build/components/writing-flow/use-tab-nav.js +18 -3
  285. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  286. package/build/hooks/align.js +14 -14
  287. package/build/hooks/align.js.map +1 -1
  288. package/build/hooks/anchor.js +4 -2
  289. package/build/hooks/anchor.js.map +1 -1
  290. package/build/hooks/border-color.js +9 -5
  291. package/build/hooks/border-color.js.map +1 -1
  292. package/build/hooks/border.js +5 -5
  293. package/build/hooks/border.js.map +1 -1
  294. package/build/hooks/color-panel.js +5 -2
  295. package/build/hooks/color-panel.js.map +1 -1
  296. package/build/hooks/color.js +6 -4
  297. package/build/hooks/color.js.map +1 -1
  298. package/build/hooks/compat.js +23 -0
  299. package/build/hooks/compat.js.map +1 -0
  300. package/build/hooks/custom-class-name.js +3 -1
  301. package/build/hooks/custom-class-name.js.map +1 -1
  302. package/build/hooks/dimensions.js +63 -28
  303. package/build/hooks/dimensions.js.map +1 -1
  304. package/build/hooks/duotone.js +63 -18
  305. package/build/hooks/duotone.js.map +1 -1
  306. package/build/hooks/font-appearance.js +49 -6
  307. package/build/hooks/font-appearance.js.map +1 -1
  308. package/build/hooks/font-family.js +123 -32
  309. package/build/hooks/font-family.js.map +1 -1
  310. package/build/hooks/font-size.js +51 -9
  311. package/build/hooks/font-size.js.map +1 -1
  312. package/build/hooks/gap.js +163 -0
  313. package/build/hooks/gap.js.map +1 -0
  314. package/build/hooks/index.js +12 -0
  315. package/build/hooks/index.js.map +1 -1
  316. package/build/hooks/index.native.js +10 -0
  317. package/build/hooks/index.native.js.map +1 -1
  318. package/build/hooks/layout.js +47 -30
  319. package/build/hooks/layout.js.map +1 -1
  320. package/build/hooks/letter-spacing.js +45 -8
  321. package/build/hooks/letter-spacing.js.map +1 -1
  322. package/build/hooks/line-height.js +45 -8
  323. package/build/hooks/line-height.js.map +1 -1
  324. package/build/hooks/lock.js +43 -0
  325. package/build/hooks/lock.js.map +1 -0
  326. package/build/hooks/margin.js +6 -3
  327. package/build/hooks/margin.js.map +1 -1
  328. package/build/hooks/padding.js +6 -3
  329. package/build/hooks/padding.js.map +1 -1
  330. package/build/hooks/style.js +39 -11
  331. package/build/hooks/style.js.map +1 -1
  332. package/build/hooks/text-decoration.js +42 -6
  333. package/build/hooks/text-decoration.js.map +1 -1
  334. package/build/hooks/text-transform.js +42 -6
  335. package/build/hooks/text-transform.js.map +1 -1
  336. package/build/hooks/typography.js +109 -9
  337. package/build/hooks/typography.js.map +1 -1
  338. package/build/hooks/typography.native.js +60 -0
  339. package/build/hooks/typography.native.js.map +1 -0
  340. package/build/hooks/use-cached-truthy.js +29 -0
  341. package/build/hooks/use-cached-truthy.js.map +1 -0
  342. package/build/index.js +7 -0
  343. package/build/index.js.map +1 -1
  344. package/build/layouts/flex.js +215 -11
  345. package/build/layouts/flex.js.map +1 -1
  346. package/build/layouts/flow.js +99 -6
  347. package/build/layouts/flow.js.map +1 -1
  348. package/build/store/actions.js +331 -266
  349. package/build/store/actions.js.map +1 -1
  350. package/build/store/defaults.js +2 -0
  351. package/build/store/defaults.js.map +1 -1
  352. package/build/store/defaults.native.js +16 -1
  353. package/build/store/defaults.native.js.map +1 -1
  354. package/build/store/index.js +1 -3
  355. package/build/store/index.js.map +1 -1
  356. package/build/store/reducer.js +165 -114
  357. package/build/store/reducer.js.map +1 -1
  358. package/build/store/selectors.js +203 -115
  359. package/build/store/selectors.js.map +1 -1
  360. package/build/utils/index.js +10 -1
  361. package/build/utils/index.js.map +1 -1
  362. package/build/utils/parse-css-unit-to-px.js +295 -0
  363. package/build/utils/parse-css-unit-to-px.js.map +1 -0
  364. package/build/utils/transform-styles/transforms/wrap.js +16 -0
  365. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  366. package/build-module/components/autocomplete/index.js +2 -2
  367. package/build-module/components/autocomplete/index.js.map +1 -1
  368. package/build-module/components/block-actions/index.js +8 -4
  369. package/build-module/components/block-actions/index.js.map +1 -1
  370. package/build-module/components/block-alignment-control/ui.js +64 -17
  371. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  372. package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
  373. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  374. package/build-module/components/block-content-overlay/index.js +2 -4
  375. package/build-module/components/block-content-overlay/index.js.map +1 -1
  376. package/build-module/components/block-controls/fill.js +6 -5
  377. package/build-module/components/block-controls/fill.js.map +1 -1
  378. package/build-module/components/block-controls/groups.js +3 -1
  379. package/build-module/components/block-controls/groups.js.map +1 -1
  380. package/build-module/components/block-controls/hook.js +42 -0
  381. package/build-module/components/block-controls/hook.js.map +1 -0
  382. package/build-module/components/block-edit/context.js +4 -4
  383. package/build-module/components/block-edit/context.js.map +1 -1
  384. package/build-module/components/block-edit/edit.js +1 -1
  385. package/build-module/components/block-edit/edit.js.map +1 -1
  386. package/build-module/components/block-icon/index.js +5 -1
  387. package/build-module/components/block-icon/index.js.map +1 -1
  388. package/build-module/components/block-icon/index.native.js +14 -9
  389. package/build-module/components/block-icon/index.native.js.map +1 -1
  390. package/build-module/components/block-inspector/index.js +12 -6
  391. package/build-module/components/block-inspector/index.js.map +1 -1
  392. package/build-module/components/block-list/block-html.js +5 -0
  393. package/build-module/components/block-list/block-html.js.map +1 -1
  394. package/build-module/components/block-list/block-list-item.native.js +30 -12
  395. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  396. package/build-module/components/block-list/block-selection-button.native.js +3 -4
  397. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  398. package/build-module/components/block-list/block.js +16 -10
  399. package/build-module/components/block-list/block.js.map +1 -1
  400. package/build-module/components/block-list/block.native.js +6 -7
  401. package/build-module/components/block-list/block.native.js.map +1 -1
  402. package/build-module/components/block-list/grid-item.native.js +57 -0
  403. package/build-module/components/block-list/grid-item.native.js.map +1 -0
  404. package/build-module/components/block-list/index.js +17 -14
  405. package/build-module/components/block-list/index.js.map +1 -1
  406. package/build-module/components/block-list/index.native.js +13 -9
  407. package/build-module/components/block-list/index.native.js.map +1 -1
  408. package/build-module/components/block-list/use-block-props/index.js +7 -7
  409. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  410. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
  411. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
  412. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +2 -2
  413. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +1 -1
  414. package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -6
  415. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
  416. package/build-module/components/block-list/use-in-between-inserter.js +9 -1
  417. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  418. package/build-module/components/block-list-appender/index.js +9 -1
  419. package/build-module/components/block-list-appender/index.js.map +1 -1
  420. package/build-module/components/block-mover/index.js +4 -4
  421. package/build-module/components/block-mover/index.js.map +1 -1
  422. package/build-module/components/block-mover/index.native.js +4 -4
  423. package/build-module/components/block-mover/index.native.js.map +1 -1
  424. package/build-module/components/block-navigation/dropdown.js +0 -1
  425. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  426. package/build-module/components/block-patterns-list/index.js +1 -6
  427. package/build-module/components/block-patterns-list/index.js.map +1 -1
  428. package/build-module/components/block-preview/auto.js +40 -16
  429. package/build-module/components/block-preview/auto.js.map +1 -1
  430. package/build-module/components/block-settings/container.native.js +6 -3
  431. package/build-module/components/block-settings/container.native.js.map +1 -1
  432. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -7
  433. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  434. package/build-module/components/block-settings-menu-controls/index.js +10 -3
  435. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  436. package/build-module/components/block-styles/index.js +5 -1
  437. package/build-module/components/block-styles/index.js.map +1 -1
  438. package/build-module/components/block-styles/preview.native.js +2 -2
  439. package/build-module/components/block-styles/preview.native.js.map +1 -1
  440. package/build-module/components/block-switcher/block-styles-menu.js +1 -1
  441. package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
  442. package/build-module/components/block-switcher/index.js +10 -3
  443. package/build-module/components/block-switcher/index.js.map +1 -1
  444. package/build-module/components/block-title/index.js +3 -2
  445. package/build-module/components/block-title/index.js.map +1 -1
  446. package/build-module/components/block-toolbar/index.js +3 -0
  447. package/build-module/components/block-toolbar/index.js.map +1 -1
  448. package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
  449. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  450. package/build-module/components/block-tools/block-popover.js +9 -8
  451. package/build-module/components/block-tools/block-popover.js.map +1 -1
  452. package/build-module/components/block-tools/block-selection-button.js +2 -4
  453. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  454. package/build-module/components/block-tools/index.js +4 -1
  455. package/build-module/components/block-tools/index.js.map +1 -1
  456. package/build-module/components/block-tools/insertion-point.js +96 -8
  457. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  458. package/build-module/components/block-types-list/index.native.js +3 -2
  459. package/build-module/components/block-types-list/index.native.js.map +1 -1
  460. package/build-module/components/border-radius-control/index.js.map +1 -1
  461. package/build-module/components/border-radius-control/utils.js +16 -9
  462. package/build-module/components/border-radius-control/utils.js.map +1 -1
  463. package/build-module/components/colors/utils.js +9 -3
  464. package/build-module/components/colors/utils.js.map +1 -1
  465. package/build-module/components/colors-gradients/control.js +26 -63
  466. package/build-module/components/colors-gradients/control.js.map +1 -1
  467. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
  468. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  469. package/build-module/components/contrast-checker/index.js +13 -10
  470. package/build-module/components/contrast-checker/index.js.map +1 -1
  471. package/build-module/components/copy-handler/index.js +9 -3
  472. package/build-module/components/copy-handler/index.js.map +1 -1
  473. package/build-module/components/default-block-appender/index.js +2 -2
  474. package/build-module/components/default-block-appender/index.js.map +1 -1
  475. package/build-module/components/duotone-control/index.js +43 -39
  476. package/build-module/components/duotone-control/index.js.map +1 -1
  477. package/build-module/components/editor-styles/index.js +7 -3
  478. package/build-module/components/editor-styles/index.js.map +1 -1
  479. package/build-module/components/font-appearance-control/index.js +40 -12
  480. package/build-module/components/font-appearance-control/index.js.map +1 -1
  481. package/build-module/components/font-sizes/index.native.js +3 -1
  482. package/build-module/components/font-sizes/index.native.js.map +1 -1
  483. package/build-module/components/iframe/index.js +47 -65
  484. package/build-module/components/iframe/index.js.map +1 -1
  485. package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
  486. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
  487. package/build-module/components/image-editor/constants.js +7 -0
  488. package/build-module/components/image-editor/constants.js.map +1 -0
  489. package/build-module/components/image-editor/context.js +44 -0
  490. package/build-module/components/image-editor/context.js.map +1 -0
  491. package/build-module/components/image-editor/cropper.js +69 -0
  492. package/build-module/components/image-editor/cropper.js.map +1 -0
  493. package/build-module/components/image-editor/form-controls.js +26 -0
  494. package/build-module/components/image-editor/form-controls.js.map +1 -0
  495. package/build-module/components/image-editor/index.js +37 -0
  496. package/build-module/components/image-editor/index.js.map +1 -0
  497. package/build-module/components/image-editor/rotation-button.js +26 -0
  498. package/build-module/components/image-editor/rotation-button.js.map +1 -0
  499. package/build-module/components/image-editor/use-save-image.js +70 -0
  500. package/build-module/components/image-editor/use-save-image.js.map +1 -0
  501. package/build-module/components/image-editor/use-transform-image.js +127 -0
  502. package/build-module/components/image-editor/use-transform-image.js.map +1 -0
  503. package/build-module/components/image-editor/zoom-dropdown.js +43 -0
  504. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
  505. package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
  506. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  507. package/build-module/components/index.js +5 -6
  508. package/build-module/components/index.js.map +1 -1
  509. package/build-module/components/index.native.js +2 -3
  510. package/build-module/components/index.native.js.map +1 -1
  511. package/build-module/components/inner-blocks/button-block-appender.js +10 -1
  512. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  513. package/build-module/components/inner-blocks/index.js +29 -11
  514. package/build-module/components/inner-blocks/index.js.map +1 -1
  515. package/build-module/components/inner-blocks/index.native.js +41 -5
  516. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  517. package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -13
  518. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  519. package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
  520. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
  521. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
  522. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
  523. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
  524. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
  525. package/build-module/components/inserter/block-patterns-tab.js +75 -36
  526. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  527. package/build-module/components/inserter/block-types-tab.native.js +2 -5
  528. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  529. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
  530. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  531. package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
  532. package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
  533. package/build-module/components/inserter/index.js +12 -4
  534. package/build-module/components/inserter/index.js.map +1 -1
  535. package/build-module/components/inserter/index.native.js +1 -7
  536. package/build-module/components/inserter/index.native.js.map +1 -1
  537. package/build-module/components/inserter/library.js +2 -0
  538. package/build-module/components/inserter/library.js.map +1 -1
  539. package/build-module/components/inserter/menu.js +2 -1
  540. package/build-module/components/inserter/menu.js.map +1 -1
  541. package/build-module/components/inserter/menu.native.js +17 -17
  542. package/build-module/components/inserter/menu.native.js.map +1 -1
  543. package/build-module/components/inserter/pattern-panel.js +21 -13
  544. package/build-module/components/inserter/pattern-panel.js.map +1 -1
  545. package/build-module/components/inserter/preview-panel.js +1 -1
  546. package/build-module/components/inserter/preview-panel.js.map +1 -1
  547. package/build-module/components/inserter/quick-inserter.js +2 -1
  548. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  549. package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
  550. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  551. package/build-module/components/inserter/search-results.native.js +8 -2
  552. package/build-module/components/inserter/search-results.native.js.map +1 -1
  553. package/build-module/components/inserter/tabs.native.js +1 -4
  554. package/build-module/components/inserter/tabs.native.js.map +1 -1
  555. package/build-module/components/inserter/utils.native.js +35 -0
  556. package/build-module/components/inserter/utils.native.js.map +1 -0
  557. package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
  558. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
  559. package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
  560. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
  561. package/build-module/components/inspector-controls/fill.js +50 -0
  562. package/build-module/components/inspector-controls/fill.js.map +1 -0
  563. package/build-module/components/inspector-controls/{index.native.js → fill.native.js} +16 -18
  564. package/build-module/components/inspector-controls/fill.native.js.map +1 -0
  565. package/build-module/components/inspector-controls/groups.js +16 -0
  566. package/build-module/components/inspector-controls/groups.js.map +1 -0
  567. package/build-module/components/inspector-controls/index.js +16 -17
  568. package/build-module/components/inspector-controls/index.js.map +1 -1
  569. package/build-module/components/inspector-controls/slot.js +52 -0
  570. package/build-module/components/inspector-controls/slot.js.map +1 -0
  571. package/build-module/components/inspector-controls/slot.native.js +27 -0
  572. package/build-module/components/inspector-controls/slot.native.js.map +1 -0
  573. package/build-module/components/letter-spacing-control/index.js +9 -6
  574. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  575. package/build-module/components/line-height-control/index.native.js +29 -0
  576. package/build-module/components/line-height-control/index.native.js.map +1 -0
  577. package/build-module/components/link-control/index.js +93 -35
  578. package/build-module/components/link-control/index.js.map +1 -1
  579. package/build-module/components/link-control/link-preview.js +46 -17
  580. package/build-module/components/link-control/link-preview.js.map +1 -1
  581. package/build-module/components/link-control/search-input.js +24 -7
  582. package/build-module/components/link-control/search-input.js.map +1 -1
  583. package/build-module/components/list-view/block-contents.js +1 -18
  584. package/build-module/components/list-view/block-contents.js.map +1 -1
  585. package/build-module/components/list-view/block.js +56 -71
  586. package/build-module/components/list-view/block.js.map +1 -1
  587. package/build-module/components/list-view/branch.js +102 -78
  588. package/build-module/components/list-view/branch.js.map +1 -1
  589. package/build-module/components/list-view/index.js +55 -27
  590. package/build-module/components/list-view/index.js.map +1 -1
  591. package/build-module/components/list-view/leaf.js +2 -2
  592. package/build-module/components/list-view/leaf.js.map +1 -1
  593. package/build-module/components/list-view/list-item.js +3 -2
  594. package/build-module/components/list-view/list-item.js.map +1 -1
  595. package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
  596. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  597. package/build-module/components/media-placeholder/index.js +35 -21
  598. package/build-module/components/media-placeholder/index.js.map +1 -1
  599. package/build-module/components/media-placeholder/index.native.js +2 -1
  600. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  601. package/build-module/components/media-replace-flow/index.js +5 -3
  602. package/build-module/components/media-replace-flow/index.js.map +1 -1
  603. package/build-module/components/navigable-toolbar/index.js +1 -4
  604. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  605. package/build-module/components/observe-typing/index.js +1 -1
  606. package/build-module/components/observe-typing/index.js.map +1 -1
  607. package/build-module/components/plain-text/index.native.js +29 -2
  608. package/build-module/components/plain-text/index.native.js.map +1 -1
  609. package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
  610. package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
  611. package/build-module/components/rich-text/format-edit.js +28 -3
  612. package/build-module/components/rich-text/format-edit.js.map +1 -1
  613. package/build-module/components/rich-text/format-toolbar/index.js +29 -11
  614. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  615. package/build-module/components/rich-text/index.js +22 -6
  616. package/build-module/components/rich-text/index.js.map +1 -1
  617. package/build-module/components/rich-text/index.native.js +43 -6
  618. package/build-module/components/rich-text/index.native.js.map +1 -1
  619. package/build-module/components/rich-text/input-event.js +24 -22
  620. package/build-module/components/rich-text/input-event.js.map +1 -1
  621. package/build-module/components/rich-text/shortcut.js +22 -9
  622. package/build-module/components/rich-text/shortcut.js.map +1 -1
  623. package/build-module/components/rich-text/use-input-events.js +19 -0
  624. package/build-module/components/rich-text/use-input-events.js.map +1 -0
  625. package/build-module/components/rich-text/use-paste-handler.js +44 -10
  626. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  627. package/build-module/components/rich-text/use-shortcuts.js +19 -0
  628. package/build-module/components/rich-text/use-shortcuts.js.map +1 -0
  629. package/build-module/components/rich-text/utils.js +20 -0
  630. package/build-module/components/rich-text/utils.js.map +1 -1
  631. package/build-module/components/typewriter/index.js +1 -1
  632. package/build-module/components/typewriter/index.js.map +1 -1
  633. package/build-module/components/url-input/index.js +25 -11
  634. package/build-module/components/url-input/index.js.map +1 -1
  635. package/build-module/components/use-display-block-controls/index.js +5 -7
  636. package/build-module/components/use-display-block-controls/index.js.map +1 -1
  637. package/build-module/components/use-moving-animation/index.js +13 -10
  638. package/build-module/components/use-moving-animation/index.js.map +1 -1
  639. package/build-module/components/use-on-block-drop/index.js +3 -2
  640. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  641. package/build-module/components/use-resize-canvas/index.js +2 -10
  642. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  643. package/build-module/components/use-setting/index.js +48 -14
  644. package/build-module/components/use-setting/index.js.map +1 -1
  645. package/build-module/components/writing-flow/use-multi-selection.js +6 -0
  646. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  647. package/build-module/components/writing-flow/use-tab-nav.js +18 -3
  648. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  649. package/build-module/hooks/align.js +15 -15
  650. package/build-module/hooks/align.js.map +1 -1
  651. package/build-module/hooks/anchor.js +5 -3
  652. package/build-module/hooks/anchor.js.map +1 -1
  653. package/build-module/hooks/border-color.js +10 -5
  654. package/build-module/hooks/border-color.js.map +1 -1
  655. package/build-module/hooks/border.js +5 -5
  656. package/build-module/hooks/border.js.map +1 -1
  657. package/build-module/hooks/color-panel.js +6 -3
  658. package/build-module/hooks/color-panel.js.map +1 -1
  659. package/build-module/hooks/color.js +6 -4
  660. package/build-module/hooks/color.js.map +1 -1
  661. package/build-module/hooks/compat.js +20 -0
  662. package/build-module/hooks/compat.js.map +1 -0
  663. package/build-module/hooks/custom-class-name.js +4 -2
  664. package/build-module/hooks/custom-class-name.js.map +1 -1
  665. package/build-module/hooks/dimensions.js +57 -26
  666. package/build-module/hooks/dimensions.js.map +1 -1
  667. package/build-module/hooks/duotone.js +62 -18
  668. package/build-module/hooks/duotone.js.map +1 -1
  669. package/build-module/hooks/font-appearance.js +45 -6
  670. package/build-module/hooks/font-appearance.js.map +1 -1
  671. package/build-module/hooks/font-family.js +117 -33
  672. package/build-module/hooks/font-family.js.map +1 -1
  673. package/build-module/hooks/font-size.js +47 -9
  674. package/build-module/hooks/font-size.js.map +1 -1
  675. package/build-module/hooks/gap.js +140 -0
  676. package/build-module/hooks/gap.js.map +1 -0
  677. package/build-module/hooks/index.js +3 -0
  678. package/build-module/hooks/index.js.map +1 -1
  679. package/build-module/hooks/index.native.js +2 -0
  680. package/build-module/hooks/index.native.js.map +1 -1
  681. package/build-module/hooks/layout.js +47 -30
  682. package/build-module/hooks/layout.js.map +1 -1
  683. package/build-module/hooks/letter-spacing.js +41 -8
  684. package/build-module/hooks/letter-spacing.js.map +1 -1
  685. package/build-module/hooks/line-height.js +41 -8
  686. package/build-module/hooks/line-height.js.map +1 -1
  687. package/build-module/hooks/lock.js +33 -0
  688. package/build-module/hooks/lock.js.map +1 -0
  689. package/build-module/hooks/margin.js +7 -4
  690. package/build-module/hooks/margin.js.map +1 -1
  691. package/build-module/hooks/padding.js +7 -4
  692. package/build-module/hooks/padding.js.map +1 -1
  693. package/build-module/hooks/style.js +39 -11
  694. package/build-module/hooks/style.js.map +1 -1
  695. package/build-module/hooks/text-decoration.js +38 -6
  696. package/build-module/hooks/text-decoration.js.map +1 -1
  697. package/build-module/hooks/text-transform.js +38 -6
  698. package/build-module/hooks/text-transform.js.map +1 -1
  699. package/build-module/hooks/typography.js +118 -19
  700. package/build-module/hooks/typography.js.map +1 -1
  701. package/build-module/hooks/typography.native.js +41 -0
  702. package/build-module/hooks/typography.native.js.map +1 -0
  703. package/build-module/hooks/use-cached-truthy.js +21 -0
  704. package/build-module/hooks/use-cached-truthy.js.map +1 -0
  705. package/build-module/index.js +1 -1
  706. package/build-module/index.js.map +1 -1
  707. package/build-module/layouts/flex.js +210 -12
  708. package/build-module/layouts/flex.js.map +1 -1
  709. package/build-module/layouts/flow.js +99 -7
  710. package/build-module/layouts/flow.js.map +1 -1
  711. package/build-module/store/actions.js +294 -242
  712. package/build-module/store/actions.js.map +1 -1
  713. package/build-module/store/defaults.js +2 -0
  714. package/build-module/store/defaults.js.map +1 -1
  715. package/build-module/store/defaults.native.js +15 -1
  716. package/build-module/store/defaults.native.js.map +1 -1
  717. package/build-module/store/index.js +1 -2
  718. package/build-module/store/index.js.map +1 -1
  719. package/build-module/store/reducer.js +167 -115
  720. package/build-module/store/reducer.js.map +1 -1
  721. package/build-module/store/selectors.js +189 -104
  722. package/build-module/store/selectors.js.map +1 -1
  723. package/build-module/utils/index.js +1 -0
  724. package/build-module/utils/index.js.map +1 -1
  725. package/build-module/utils/parse-css-unit-to-px.js +285 -0
  726. package/build-module/utils/parse-css-unit-to-px.js.map +1 -0
  727. package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
  728. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  729. package/build-style/default-editor-styles-rtl.css +114 -0
  730. package/build-style/default-editor-styles.css +114 -0
  731. package/build-style/style-rtl.css +292 -181
  732. package/build-style/style.css +292 -181
  733. package/build-types/components/block-context/index.d.ts +1 -1
  734. package/build-types/components/block-context/index.d.ts.map +1 -1
  735. package/package.json +28 -27
  736. package/src/components/autocomplete/index.js +5 -2
  737. package/src/components/block-actions/index.js +9 -5
  738. package/src/components/block-alignment-control/style.scss +5 -0
  739. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
  740. package/src/components/block-alignment-control/test/index.native.js +37 -0
  741. package/src/components/block-alignment-control/ui.js +98 -27
  742. package/src/components/block-alignment-control/use-available-alignments.js +31 -10
  743. package/src/components/block-content-overlay/index.js +3 -6
  744. package/src/components/block-content-overlay/style.scss +9 -21
  745. package/src/components/block-controls/fill.js +7 -4
  746. package/src/components/block-controls/groups.js +2 -0
  747. package/src/components/block-controls/hook.js +44 -0
  748. package/src/components/block-draggable/style.scss +19 -4
  749. package/src/components/block-edit/context.js +4 -3
  750. package/src/components/block-edit/edit.js +1 -4
  751. package/src/components/block-icon/index.js +4 -1
  752. package/src/components/block-icon/index.native.js +11 -12
  753. package/src/components/block-inspector/index.js +19 -9
  754. package/src/components/block-list/block-html.js +5 -0
  755. package/src/components/block-list/block-list-item.native.js +34 -11
  756. package/src/components/block-list/block-list-item.native.scss +4 -0
  757. package/src/components/block-list/block-selection-button.native.js +8 -5
  758. package/src/components/block-list/block.js +13 -9
  759. package/src/components/block-list/block.native.js +7 -5
  760. package/src/components/block-list/grid-item.native.js +58 -0
  761. package/src/components/block-list/index.js +33 -27
  762. package/src/components/block-list/index.native.js +10 -4
  763. package/src/components/block-list/style.native.scss +0 -1
  764. package/src/components/block-list/style.scss +15 -0
  765. package/src/components/block-list/use-block-props/index.js +4 -7
  766. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +5 -7
  767. package/src/components/block-list/use-block-props/use-block-default-class-name.js +2 -8
  768. package/src/components/block-list/use-block-props/use-multi-selection.js +30 -4
  769. package/src/components/block-list/use-in-between-inserter.js +9 -0
  770. package/src/components/block-list-appender/index.js +8 -0
  771. package/src/components/block-mover/index.js +4 -4
  772. package/src/components/block-mover/index.native.js +4 -4
  773. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
  774. package/src/components/block-mover/test/index.native.js +26 -28
  775. package/src/components/block-navigation/dropdown.js +0 -1
  776. package/src/components/block-patterns-list/index.js +1 -8
  777. package/src/components/block-patterns-list/style.scss +22 -12
  778. package/src/components/block-preview/README.md +1 -1
  779. package/src/components/block-preview/auto.js +36 -18
  780. package/src/components/block-preview/style.scss +0 -20
  781. package/src/components/block-settings/container.native.js +7 -0
  782. package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
  783. package/src/components/block-settings-menu-controls/index.js +9 -6
  784. package/src/components/block-styles/index.js +6 -1
  785. package/src/components/block-styles/preview.native.js +2 -2
  786. package/src/components/block-switcher/block-styles-menu.js +1 -1
  787. package/src/components/block-switcher/index.js +7 -3
  788. package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
  789. package/src/components/block-switcher/test/index.js +3 -0
  790. package/src/components/block-title/index.js +5 -2
  791. package/src/components/block-toolbar/index.js +4 -0
  792. package/src/components/block-tools/block-contextual-toolbar.js +7 -5
  793. package/src/components/block-tools/block-popover.js +8 -8
  794. package/src/components/block-tools/block-selection-button.js +2 -4
  795. package/src/components/block-tools/index.js +5 -2
  796. package/src/components/block-tools/insertion-point.js +97 -9
  797. package/src/components/block-tools/style.scss +4 -35
  798. package/src/components/block-types-list/index.native.js +8 -2
  799. package/src/components/block-types-list/style.scss +0 -3
  800. package/src/components/block-variation-picker/README.md +47 -14
  801. package/src/components/block-variation-picker/style.native.scss +4 -0
  802. package/src/components/border-radius-control/index.js +1 -0
  803. package/src/components/border-radius-control/test/utils.js +216 -0
  804. package/src/components/border-radius-control/utils.js +18 -10
  805. package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
  806. package/src/components/colors/test/utils.js +41 -0
  807. package/src/components/colors/utils.js +9 -5
  808. package/src/components/colors-gradients/control.js +70 -110
  809. package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
  810. package/src/components/colors-gradients/style.scss +10 -18
  811. package/src/components/colors-gradients/test/control.js +41 -66
  812. package/src/components/contrast-checker/index.js +14 -10
  813. package/src/components/copy-handler/index.js +6 -1
  814. package/src/components/default-block-appender/index.js +2 -2
  815. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
  816. package/src/components/duotone-control/index.js +49 -41
  817. package/src/components/duotone-control/style.scss +27 -12
  818. package/src/components/editor-styles/index.js +8 -4
  819. package/src/components/font-appearance-control/index.js +62 -24
  820. package/src/components/font-appearance-control/style.scss +1 -1
  821. package/src/components/font-sizes/index.native.js +7 -1
  822. package/src/components/iframe/index.js +64 -75
  823. package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
  824. package/src/components/image-editor/constants.js +6 -0
  825. package/src/components/image-editor/context.js +56 -0
  826. package/src/components/image-editor/cropper.js +74 -0
  827. package/src/components/image-editor/form-controls.js +22 -0
  828. package/src/components/image-editor/index.js +52 -0
  829. package/src/components/image-editor/rotation-button.js +24 -0
  830. package/src/components/image-editor/use-save-image.js +97 -0
  831. package/src/components/image-editor/use-transform-image.js +162 -0
  832. package/src/components/image-editor/zoom-dropdown.js +40 -0
  833. package/src/components/image-size-control/use-dimension-handler.js +18 -1
  834. package/src/components/index.js +10 -8
  835. package/src/components/index.native.js +5 -3
  836. package/src/components/inner-blocks/button-block-appender.js +9 -0
  837. package/src/components/inner-blocks/index.js +43 -14
  838. package/src/components/inner-blocks/index.native.js +48 -4
  839. package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
  840. package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
  841. package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
  842. package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
  843. package/src/components/inserter/block-patterns-tab.js +107 -73
  844. package/src/components/inserter/block-types-tab.native.js +3 -6
  845. package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
  846. package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
  847. package/src/components/inserter/index.js +15 -3
  848. package/src/components/inserter/index.native.js +2 -19
  849. package/src/components/inserter/library.js +2 -0
  850. package/src/components/inserter/menu.js +4 -1
  851. package/src/components/inserter/menu.native.js +18 -15
  852. package/src/components/inserter/pattern-panel.js +33 -16
  853. package/src/components/inserter/preview-panel.js +1 -1
  854. package/src/components/inserter/quick-inserter.js +1 -1
  855. package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
  856. package/src/components/inserter/search-results.native.js +8 -1
  857. package/src/components/inserter/style.native.scss +8 -5
  858. package/src/components/inserter/style.scss +80 -16
  859. package/src/components/inserter/tabs.native.js +1 -7
  860. package/src/components/inserter/test/block-types-tab.native.js +3 -2
  861. package/src/components/inserter/test/fixtures/index.native.js +12 -0
  862. package/src/components/inserter/utils.native.js +35 -0
  863. package/src/components/inserter-list-item/style.scss +4 -2
  864. package/src/components/inspector-controls/README.md +43 -198
  865. package/src/components/inspector-controls/block-support-slot-container.js +10 -0
  866. package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
  867. package/src/components/inspector-controls/fill.js +53 -0
  868. package/src/components/inspector-controls/{index.native.js → fill.native.js} +14 -14
  869. package/src/components/inspector-controls/groups.js +22 -0
  870. package/src/components/inspector-controls/index.js +16 -18
  871. package/src/components/inspector-controls/slot.js +45 -0
  872. package/src/components/inspector-controls/slot.native.js +22 -0
  873. package/src/components/letter-spacing-control/index.js +12 -6
  874. package/src/components/line-height-control/index.native.js +25 -0
  875. package/src/components/link-control/README.md +47 -14
  876. package/src/components/link-control/index.js +102 -31
  877. package/src/components/link-control/link-preview.js +53 -20
  878. package/src/components/link-control/search-input.js +21 -7
  879. package/src/components/link-control/style.scss +66 -19
  880. package/src/components/link-control/test/index.js +311 -4
  881. package/src/components/list-view/block-contents.js +17 -38
  882. package/src/components/list-view/block.js +73 -84
  883. package/src/components/list-view/branch.js +123 -94
  884. package/src/components/list-view/index.js +95 -37
  885. package/src/components/list-view/leaf.js +2 -2
  886. package/src/components/list-view/list-item.js +5 -4
  887. package/src/components/list-view/style.scss +70 -33
  888. package/src/components/list-view/use-list-view-client-ids.js +9 -68
  889. package/src/components/media-placeholder/README.md +9 -0
  890. package/src/components/media-placeholder/index.js +31 -20
  891. package/src/components/media-placeholder/index.native.js +2 -1
  892. package/src/components/media-placeholder/style.scss +2 -0
  893. package/src/components/media-replace-flow/README.md +7 -0
  894. package/src/components/media-replace-flow/index.js +4 -1
  895. package/src/components/media-replace-flow/style.scss +11 -12
  896. package/src/components/media-upload/README.md +1 -1
  897. package/src/components/navigable-toolbar/index.js +1 -4
  898. package/src/components/observe-typing/index.js +3 -2
  899. package/src/components/plain-text/index.native.js +26 -4
  900. package/src/components/rich-text/embed-handler-picker.native.js +68 -0
  901. package/src/components/rich-text/format-edit.js +36 -2
  902. package/src/components/rich-text/format-toolbar/index.js +25 -6
  903. package/src/components/rich-text/index.js +38 -12
  904. package/src/components/rich-text/index.native.js +37 -4
  905. package/src/components/rich-text/input-event.js +21 -20
  906. package/src/components/rich-text/shortcut.js +24 -9
  907. package/src/components/rich-text/style.scss +7 -5
  908. package/src/components/rich-text/use-input-events.js +19 -0
  909. package/src/components/rich-text/use-paste-handler.js +47 -12
  910. package/src/components/rich-text/use-shortcuts.js +19 -0
  911. package/src/components/rich-text/utils.js +16 -0
  912. package/src/components/skip-to-selected-block/README.md +39 -0
  913. package/src/components/tool-selector/style.scss +5 -5
  914. package/src/components/typewriter/index.js +3 -2
  915. package/src/components/url-input/index.js +26 -10
  916. package/src/components/use-display-block-controls/index.js +7 -10
  917. package/src/components/use-moving-animation/index.js +9 -8
  918. package/src/components/use-on-block-drop/index.js +5 -1
  919. package/src/components/use-resize-canvas/index.js +2 -17
  920. package/src/components/use-setting/index.js +48 -16
  921. package/src/components/writing-flow/use-multi-selection.js +6 -0
  922. package/src/components/writing-flow/use-tab-nav.js +21 -11
  923. package/src/default-editor-styles.scss +24 -0
  924. package/src/hooks/align.js +28 -20
  925. package/src/hooks/anchor.js +5 -5
  926. package/src/hooks/border-color.js +12 -1
  927. package/src/hooks/border.js +8 -11
  928. package/src/hooks/color-panel.js +4 -1
  929. package/src/hooks/color.js +11 -4
  930. package/src/hooks/compat.js +23 -0
  931. package/src/hooks/custom-class-name.js +3 -3
  932. package/src/hooks/dimensions.js +94 -50
  933. package/src/hooks/duotone.js +70 -21
  934. package/src/hooks/font-appearance.js +38 -7
  935. package/src/hooks/font-family.js +129 -33
  936. package/src/hooks/font-size.js +42 -6
  937. package/src/hooks/gap.js +146 -0
  938. package/src/hooks/index.js +3 -0
  939. package/src/hooks/index.native.js +2 -0
  940. package/src/hooks/layout.js +82 -56
  941. package/src/hooks/layout.scss +8 -0
  942. package/src/hooks/letter-spacing.js +37 -8
  943. package/src/hooks/line-height.js +37 -9
  944. package/src/hooks/lock.js +34 -0
  945. package/src/hooks/margin.js +13 -3
  946. package/src/hooks/padding.js +13 -3
  947. package/src/hooks/style.js +57 -18
  948. package/src/hooks/test/style.js +4 -0
  949. package/src/hooks/text-decoration.js +34 -6
  950. package/src/hooks/text-transform.js +34 -6
  951. package/src/hooks/typography.js +167 -21
  952. package/src/hooks/typography.native.js +64 -0
  953. package/src/hooks/typography.scss +16 -0
  954. package/src/hooks/use-cached-truthy.js +20 -0
  955. package/src/index.js +1 -0
  956. package/src/layouts/flex.js +237 -14
  957. package/src/layouts/flow.js +81 -14
  958. package/src/store/actions.js +248 -378
  959. package/src/store/defaults.js +2 -0
  960. package/src/store/defaults.native.js +15 -0
  961. package/src/store/index.js +1 -2
  962. package/src/store/reducer.js +248 -145
  963. package/src/store/selectors.js +212 -158
  964. package/src/store/test/actions.js +407 -705
  965. package/src/store/test/reducer.js +184 -146
  966. package/src/store/test/selectors.js +197 -177
  967. package/src/style.scss +2 -15
  968. package/src/utils/index.js +1 -0
  969. package/src/utils/parse-css-unit-to-px.js +272 -0
  970. package/src/utils/test/parse-css-unit-to-px.js +166 -0
  971. package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
  972. package/src/utils/transform-styles/transforms/wrap.js +16 -0
  973. package/tsconfig.tsbuildinfo +1 -466
  974. package/build/components/block-list/head.js +0 -27
  975. package/build/components/block-list/head.js.map +0 -1
  976. package/build/components/duotone-control/duotone-picker-popover.js +0 -44
  977. package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
  978. package/build/components/inspector-advanced-controls/index.js +0 -46
  979. package/build/components/inspector-advanced-controls/index.js.map +0 -1
  980. package/build/components/inspector-controls/index.native.js.map +0 -1
  981. package/build/components/list-view/block-slot.js +0 -121
  982. package/build/components/list-view/block-slot.js.map +0 -1
  983. package/build/components/list-view/editor.js +0 -35
  984. package/build/components/list-view/editor.js.map +0 -1
  985. package/build/components/text-decoration-and-transform/index.js +0 -39
  986. package/build/components/text-decoration-and-transform/index.js.map +0 -1
  987. package/build/components/use-simulated-media-query/index.js +0 -137
  988. package/build/components/use-simulated-media-query/index.js.map +0 -1
  989. package/build/store/controls.js +0 -44
  990. package/build/store/controls.js.map +0 -1
  991. package/build-module/components/block-list/head.js +0 -19
  992. package/build-module/components/block-list/head.js.map +0 -1
  993. package/build-module/components/duotone-control/duotone-picker-popover.js +0 -35
  994. package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
  995. package/build-module/components/inspector-advanced-controls/index.js +0 -36
  996. package/build-module/components/inspector-advanced-controls/index.js.map +0 -1
  997. package/build-module/components/inspector-controls/index.native.js.map +0 -1
  998. package/build-module/components/list-view/block-slot.js +0 -96
  999. package/build-module/components/list-view/block-slot.js.map +0 -1
  1000. package/build-module/components/list-view/editor.js +0 -25
  1001. package/build-module/components/list-view/editor.js.map +0 -1
  1002. package/build-module/components/text-decoration-and-transform/index.js +0 -30
  1003. package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
  1004. package/build-module/components/use-simulated-media-query/index.js +0 -126
  1005. package/build-module/components/use-simulated-media-query/index.js.map +0 -1
  1006. package/build-module/store/controls.js +0 -32
  1007. package/build-module/store/controls.js.map +0 -1
  1008. package/src/components/block-list/head.js +0 -18
  1009. package/src/components/duotone-control/duotone-picker-popover.js +0 -36
  1010. package/src/components/inspector-advanced-controls/README.md +0 -72
  1011. package/src/components/inspector-advanced-controls/index.js +0 -32
  1012. package/src/components/list-view/block-slot.js +0 -120
  1013. package/src/components/list-view/editor.js +0 -29
  1014. package/src/components/text-decoration-and-transform/index.js +0 -36
  1015. package/src/components/text-decoration-and-transform/style.scss +0 -3
  1016. package/src/components/use-simulated-media-query/index.js +0 -144
  1017. package/src/store/controls.js +0 -39
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/observe-typing/index.js"],"names":["KEY_DOWN_ELIGIBLE_KEY_CODES","Set","UP","RIGHT","DOWN","LEFT","ENTER","BACKSPACE","isKeyDownEligibleForStartTyping","event","keyCode","shiftKey","has","useMouseMoveTypingReset","isTyping","select","blockEditorStore","stopTyping","node","ownerDocument","lastClientX","lastClientY","stopTypingOnMouseMove","clientX","clientY","addEventListener","removeEventListener","useTypingObserver","startTyping","ref1","ref2","defaultView","timerId","stopTypingOnNonTextField","target","setTimeout","stopTypingOnEscapeKey","ESCAPE","TAB","stopTypingOnSelectionUncollapse","selection","getSelection","isCollapsed","rangeCount","getRangeAt","collapsed","clearTimeout","startTypingInTextField","type","contains","ObserveTyping","children"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { isTextField } from '@wordpress/dom';\nimport {\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n\tESCAPE,\n\tTAB,\n} from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Set of key codes upon which typing is to be initiated on a keydown event.\n *\n * @type {Set<number>}\n */\nconst KEY_DOWN_ELIGIBLE_KEY_CODES = new Set( [\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n] );\n\n/**\n * Returns true if a given keydown event can be inferred as intent to start\n * typing, or false otherwise. A keydown is considered eligible if it is a\n * text navigation without shift active.\n *\n * @param {KeyboardEvent} event Keydown event to test.\n *\n * @return {boolean} Whether event is eligible to start typing.\n */\nfunction isKeyDownEligibleForStartTyping( event ) {\n\tconst { keyCode, shiftKey } = event;\n\treturn ! shiftKey && KEY_DOWN_ELIGIBLE_KEY_CODES.has( keyCode );\n}\n\n/**\n * Removes the `isTyping` flag when the mouse moves in the document of the given\n * element.\n */\nexport function useMouseMoveTypingReset() {\n\tconst isTyping = useSelect( ( select ) =>\n\t\tselect( blockEditorStore ).isTyping()\n\t);\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\t\t\tlet lastClientX;\n\t\t\tlet lastClientY;\n\n\t\t\t/**\n\t\t\t * On mouse move, unset typing flag if user has moved cursor.\n\t\t\t *\n\t\t\t * @param {MouseEvent} event Mousemove event.\n\t\t\t */\n\t\t\tfunction stopTypingOnMouseMove( event ) {\n\t\t\t\tconst { clientX, clientY } = event;\n\n\t\t\t\t// We need to check that the mouse really moved because Safari\n\t\t\t\t// triggers mousemove events when shift or ctrl are pressed.\n\t\t\t\tif (\n\t\t\t\t\tlastClientX &&\n\t\t\t\t\tlastClientY &&\n\t\t\t\t\t( lastClientX !== clientX || lastClientY !== clientY )\n\t\t\t\t) {\n\t\t\t\t\tstopTyping();\n\t\t\t\t}\n\n\t\t\t\tlastClientX = clientX;\n\t\t\t\tlastClientY = clientY;\n\t\t\t}\n\n\t\t\townerDocument.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tstopTypingOnMouseMove\n\t\t\t);\n\n\t\t\treturn () => {\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tstopTypingOnMouseMove\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\t[ isTyping, stopTyping ]\n\t);\n}\n\n/**\n * Sets and removes the `isTyping` flag based on user actions:\n *\n * - Sets the flag if the user types within the given element.\n * - Removes the flag when the user selects some text, focusses a non-text\n * field, presses ESC or TAB, or moves the mouse in the document.\n */\nexport function useTypingObserver() {\n\tconst isTyping = useSelect( ( select ) =>\n\t\tselect( blockEditorStore ).isTyping()\n\t);\n\tconst { startTyping, stopTyping } = useDispatch( blockEditorStore );\n\n\tconst ref1 = useMouseMoveTypingReset();\n\tconst ref2 = useRefEffect(\n\t\t( node ) => {\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\t// Listeners to stop typing should only be added when typing.\n\t\t\t// Listeners to start typing should only be added when not typing.\n\t\t\tif ( isTyping ) {\n\t\t\t\tlet timerId;\n\n\t\t\t\t/**\n\t\t\t\t * Stops typing when focus transitions to a non-text field element.\n\t\t\t\t *\n\t\t\t\t * @param {FocusEvent} event Focus event.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnNonTextField( event ) {\n\t\t\t\t\tconst { target } = event;\n\n\t\t\t\t\t// Since focus to a non-text field via arrow key will trigger\n\t\t\t\t\t// before the keydown event, wait until after current stack\n\t\t\t\t\t// before evaluating whether typing is to be stopped. Otherwise,\n\t\t\t\t\t// typing will re-start.\n\t\t\t\t\ttimerId = defaultView.setTimeout( () => {\n\t\t\t\t\t\tif ( ! isTextField( target ) ) {\n\t\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * Unsets typing flag if user presses Escape while typing flag is\n\t\t\t\t * active.\n\t\t\t\t *\n\t\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to\n\t\t\t\t * interpret.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnEscapeKey( event ) {\n\t\t\t\t\tconst { keyCode } = event;\n\n\t\t\t\t\tif ( keyCode === ESCAPE || keyCode === TAB ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * On selection change, unset typing flag if user has made an\n\t\t\t\t * uncollapsed (shift) selection.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnSelectionUncollapse() {\n\t\t\t\t\tconst selection = defaultView.getSelection();\n\t\t\t\t\tconst isCollapsed =\n\t\t\t\t\t\tselection.rangeCount > 0 &&\n\t\t\t\t\t\tselection.getRangeAt( 0 ).collapsed;\n\n\t\t\t\t\tif ( ! isCollapsed ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener( 'focus', stopTypingOnNonTextField );\n\t\t\t\tnode.addEventListener( 'keydown', stopTypingOnEscapeKey );\n\t\t\t\townerDocument.addEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tdefaultView.clearTimeout( timerId );\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'focus',\n\t\t\t\t\t\tstopTypingOnNonTextField\n\t\t\t\t\t);\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'keydown',\n\t\t\t\t\t\tstopTypingOnEscapeKey\n\t\t\t\t\t);\n\t\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t\t'selectionchange',\n\t\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Handles a keypress or keydown event to infer intention to start\n\t\t\t * typing.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to interpret.\n\t\t\t */\n\t\t\tfunction startTypingInTextField( event ) {\n\t\t\t\tconst { type, target } = event;\n\n\t\t\t\t// Abort early if already typing, or key press is incurred outside a\n\t\t\t\t// text field (e.g. arrow-ing through toolbar buttons).\n\t\t\t\t// Ignore typing if outside the current DOM container\n\t\t\t\tif ( ! isTextField( target ) || ! node.contains( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Special-case keydown because certain keys do not emit a keypress\n\t\t\t\t// event. Conversely avoid keydown as the canonical event since\n\t\t\t\t// there are many keydown which are explicitly not targeted for\n\t\t\t\t// typing.\n\t\t\t\tif (\n\t\t\t\t\ttype === 'keydown' &&\n\t\t\t\t\t! isKeyDownEligibleForStartTyping( event )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstartTyping();\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keypress', startTypingInTextField );\n\t\t\tnode.addEventListener( 'keydown', startTypingInTextField );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keypress', startTypingInTextField );\n\t\t\t\tnode.removeEventListener( 'keydown', startTypingInTextField );\n\t\t\t};\n\t\t},\n\t\t[ isTyping, startTyping, stopTyping ]\n\t);\n\n\treturn useMergeRefs( [ ref1, ref2 ] );\n}\n\nfunction ObserveTyping( { children } ) {\n\treturn <div ref={ useTypingObserver() }>{ children }</div>;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/observe-typing/README.md\n */\nexport default ObserveTyping;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/observe-typing/index.js"],"names":["KEY_DOWN_ELIGIBLE_KEY_CODES","Set","UP","RIGHT","DOWN","LEFT","ENTER","BACKSPACE","isKeyDownEligibleForStartTyping","event","keyCode","shiftKey","has","useMouseMoveTypingReset","isTyping","select","blockEditorStore","stopTyping","node","ownerDocument","lastClientX","lastClientY","stopTypingOnMouseMove","clientX","clientY","addEventListener","removeEventListener","useTypingObserver","startTyping","ref1","ref2","defaultView","timerId","stopTypingOnNonTextField","target","setTimeout","stopTypingOnEscapeKey","ESCAPE","TAB","stopTypingOnSelectionUncollapse","selection","getSelection","isCollapsed","rangeCount","getRangeAt","collapsed","clearTimeout","startTypingInTextField","type","contains","ObserveTyping","children"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { isTextField } from '@wordpress/dom';\nimport {\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n\tESCAPE,\n\tTAB,\n} from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Set of key codes upon which typing is to be initiated on a keydown event.\n *\n * @type {Set<number>}\n */\nconst KEY_DOWN_ELIGIBLE_KEY_CODES = new Set( [\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n] );\n\n/**\n * Returns true if a given keydown event can be inferred as intent to start\n * typing, or false otherwise. A keydown is considered eligible if it is a\n * text navigation without shift active.\n *\n * @param {KeyboardEvent} event Keydown event to test.\n *\n * @return {boolean} Whether event is eligible to start typing.\n */\nfunction isKeyDownEligibleForStartTyping( event ) {\n\tconst { keyCode, shiftKey } = event;\n\treturn ! shiftKey && KEY_DOWN_ELIGIBLE_KEY_CODES.has( keyCode );\n}\n\n/**\n * Removes the `isTyping` flag when the mouse moves in the document of the given\n * element.\n */\nexport function useMouseMoveTypingReset() {\n\tconst isTyping = useSelect(\n\t\t( select ) => select( blockEditorStore ).isTyping(),\n\t\t[]\n\t);\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\t\t\tlet lastClientX;\n\t\t\tlet lastClientY;\n\n\t\t\t/**\n\t\t\t * On mouse move, unset typing flag if user has moved cursor.\n\t\t\t *\n\t\t\t * @param {MouseEvent} event Mousemove event.\n\t\t\t */\n\t\t\tfunction stopTypingOnMouseMove( event ) {\n\t\t\t\tconst { clientX, clientY } = event;\n\n\t\t\t\t// We need to check that the mouse really moved because Safari\n\t\t\t\t// triggers mousemove events when shift or ctrl are pressed.\n\t\t\t\tif (\n\t\t\t\t\tlastClientX &&\n\t\t\t\t\tlastClientY &&\n\t\t\t\t\t( lastClientX !== clientX || lastClientY !== clientY )\n\t\t\t\t) {\n\t\t\t\t\tstopTyping();\n\t\t\t\t}\n\n\t\t\t\tlastClientX = clientX;\n\t\t\t\tlastClientY = clientY;\n\t\t\t}\n\n\t\t\townerDocument.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tstopTypingOnMouseMove\n\t\t\t);\n\n\t\t\treturn () => {\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tstopTypingOnMouseMove\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\t[ isTyping, stopTyping ]\n\t);\n}\n\n/**\n * Sets and removes the `isTyping` flag based on user actions:\n *\n * - Sets the flag if the user types within the given element.\n * - Removes the flag when the user selects some text, focusses a non-text\n * field, presses ESC or TAB, or moves the mouse in the document.\n */\nexport function useTypingObserver() {\n\tconst isTyping = useSelect( ( select ) =>\n\t\tselect( blockEditorStore ).isTyping()\n\t);\n\tconst { startTyping, stopTyping } = useDispatch( blockEditorStore );\n\n\tconst ref1 = useMouseMoveTypingReset();\n\tconst ref2 = useRefEffect(\n\t\t( node ) => {\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\t// Listeners to stop typing should only be added when typing.\n\t\t\t// Listeners to start typing should only be added when not typing.\n\t\t\tif ( isTyping ) {\n\t\t\t\tlet timerId;\n\n\t\t\t\t/**\n\t\t\t\t * Stops typing when focus transitions to a non-text field element.\n\t\t\t\t *\n\t\t\t\t * @param {FocusEvent} event Focus event.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnNonTextField( event ) {\n\t\t\t\t\tconst { target } = event;\n\n\t\t\t\t\t// Since focus to a non-text field via arrow key will trigger\n\t\t\t\t\t// before the keydown event, wait until after current stack\n\t\t\t\t\t// before evaluating whether typing is to be stopped. Otherwise,\n\t\t\t\t\t// typing will re-start.\n\t\t\t\t\ttimerId = defaultView.setTimeout( () => {\n\t\t\t\t\t\tif ( ! isTextField( target ) ) {\n\t\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * Unsets typing flag if user presses Escape while typing flag is\n\t\t\t\t * active.\n\t\t\t\t *\n\t\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to\n\t\t\t\t * interpret.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnEscapeKey( event ) {\n\t\t\t\t\tconst { keyCode } = event;\n\n\t\t\t\t\tif ( keyCode === ESCAPE || keyCode === TAB ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * On selection change, unset typing flag if user has made an\n\t\t\t\t * uncollapsed (shift) selection.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnSelectionUncollapse() {\n\t\t\t\t\tconst selection = defaultView.getSelection();\n\t\t\t\t\tconst isCollapsed =\n\t\t\t\t\t\tselection.rangeCount > 0 &&\n\t\t\t\t\t\tselection.getRangeAt( 0 ).collapsed;\n\n\t\t\t\t\tif ( ! isCollapsed ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener( 'focus', stopTypingOnNonTextField );\n\t\t\t\tnode.addEventListener( 'keydown', stopTypingOnEscapeKey );\n\t\t\t\townerDocument.addEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tdefaultView.clearTimeout( timerId );\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'focus',\n\t\t\t\t\t\tstopTypingOnNonTextField\n\t\t\t\t\t);\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'keydown',\n\t\t\t\t\t\tstopTypingOnEscapeKey\n\t\t\t\t\t);\n\t\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t\t'selectionchange',\n\t\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Handles a keypress or keydown event to infer intention to start\n\t\t\t * typing.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to interpret.\n\t\t\t */\n\t\t\tfunction startTypingInTextField( event ) {\n\t\t\t\tconst { type, target } = event;\n\n\t\t\t\t// Abort early if already typing, or key press is incurred outside a\n\t\t\t\t// text field (e.g. arrow-ing through toolbar buttons).\n\t\t\t\t// Ignore typing if outside the current DOM container\n\t\t\t\tif ( ! isTextField( target ) || ! node.contains( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Special-case keydown because certain keys do not emit a keypress\n\t\t\t\t// event. Conversely avoid keydown as the canonical event since\n\t\t\t\t// there are many keydown which are explicitly not targeted for\n\t\t\t\t// typing.\n\t\t\t\tif (\n\t\t\t\t\ttype === 'keydown' &&\n\t\t\t\t\t! isKeyDownEligibleForStartTyping( event )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstartTyping();\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keypress', startTypingInTextField );\n\t\t\tnode.addEventListener( 'keydown', startTypingInTextField );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keypress', startTypingInTextField );\n\t\t\t\tnode.removeEventListener( 'keydown', startTypingInTextField );\n\t\t\t};\n\t\t},\n\t\t[ isTyping, startTyping, stopTyping ]\n\t);\n\n\treturn useMergeRefs( [ ref1, ref2 ] );\n}\n\nfunction ObserveTyping( { children } ) {\n\treturn <div ref={ useTypingObserver() }>{ children }</div>;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/observe-typing/README.md\n */\nexport default ObserveTyping;\n"]}
@@ -13,6 +13,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
 
14
14
  var _reactNative = require("react-native");
15
15
 
16
+ var _blockEditor = require("@wordpress/block-editor");
17
+
16
18
  var _style = _interopRequireDefault(require("./style.scss"));
17
19
 
18
20
  /**
@@ -70,7 +72,34 @@ class PlainText extends _element.Component {
70
72
  this._input.blur();
71
73
  }
72
74
 
75
+ getFontSize() {
76
+ const {
77
+ style
78
+ } = this.props;
79
+
80
+ if (!(style !== null && style !== void 0 && style.fontSize)) {
81
+ return;
82
+ }
83
+
84
+ const {
85
+ width,
86
+ height
87
+ } = _reactNative.Dimensions.get('window');
88
+
89
+ const cssUnitOptions = {
90
+ height,
91
+ width
92
+ };
93
+ return {
94
+ fontSize: parseFloat((0, _blockEditor.getPxFromCssUnit)(style.fontSize, cssUnitOptions))
95
+ };
96
+ }
97
+
73
98
  render() {
99
+ const {
100
+ style
101
+ } = this.props;
102
+ const textStyles = [style || _style.default['block-editor-plain-text'], this.getFontSize()];
74
103
  return (0, _element.createElement)(_reactNative.TextInput, (0, _extends2.default)({}, this.props, {
75
104
  ref: x => this._input = x,
76
105
  onChange: event => {
@@ -81,7 +110,7 @@ class PlainText extends _element.Component {
81
110
  onBlur: this.props.onBlur // always assign onBlur as a props
82
111
  ,
83
112
  fontFamily: this.props.style && this.props.style.fontFamily || _style.default['block-editor-plain-text'].fontFamily,
84
- style: this.props.style || _style.default['block-editor-plain-text'],
113
+ style: textStyles,
85
114
  scrollEnabled: false
86
115
  }));
87
116
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/plain-text/index.native.js"],"names":["PlainText","Component","constructor","arguments","isAndroid","Platform","OS","componentDidMount","_input","isFocused","props","isSelected","timeoutID","setTimeout","focus","componentDidUpdate","prevProps","blur","componentWillUnmount","clearTimeout","render","x","event","onChange","nativeEvent","text","onFocus","onBlur","style","fontFamily","styles"],"mappings":";;;;;;;;;AAQA;;;;AALA;;AAUA;;AAbA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AAGe,MAAMA,SAAN,SAAwBC,kBAAxB,CAAkC;AAChDC,EAAAA,WAAW,GAAG;AACb,UAAO,GAAGC,SAAV;AACA,SAAKC,SAAL,GAAiBC,sBAASC,EAAT,KAAgB,SAAjC;AACA;;AAEDC,EAAAA,iBAAiB,GAAG;AACnB;AACA,QACC,KAAKC,MAAL,IACA,KAAKA,MAAL,CAAYC,SAAZ,OAA4B,KAD5B,IAEA,KAAKC,KAAL,CAAWC,UAHZ,EAIE;AACD,UAAK,KAAKP,SAAV,EAAsB;AACrB;AACJ;AACA;AACA;AACA;AACI,aAAKQ,SAAL,GAAiBC,UAAU,CAAE,MAAM;AAClC,eAAKL,MAAL,CAAYM,KAAZ;AACA,SAF0B,EAExB,GAFwB,CAA3B;AAGA,OATD,MASO;AACN,aAAKN,MAAL,CAAYM,KAAZ;AACA;AACD;AACD;;AAEDC,EAAAA,kBAAkB,CAAEC,SAAF,EAAc;AAC/B,QAAK,CAAE,KAAKN,KAAL,CAAWC,UAAb,IAA2BK,SAAS,CAACL,UAA1C,EAAuD;AACtD,WAAKH,MAAL,CAAYS,IAAZ;AACA;AACD;;AAEDC,EAAAA,oBAAoB,GAAG;AACtB,QAAK,KAAKd,SAAV,EAAsB;AACrBe,MAAAA,YAAY,CAAE,KAAKP,SAAP,CAAZ;AACA;AACD;;AAEDE,EAAAA,KAAK,GAAG;AACP,SAAKN,MAAL,CAAYM,KAAZ;AACA;;AAEDG,EAAAA,IAAI,GAAG;AACN,SAAKT,MAAL,CAAYS,IAAZ;AACA;;AAEDG,EAAAA,MAAM,GAAG;AACR,WACC,4BAAC,sBAAD,6BACM,KAAKV,KADX;AAEC,MAAA,GAAG,EAAKW,CAAF,IAAW,KAAKb,MAAL,GAAca,CAFhC;AAGC,MAAA,QAAQ,EAAKC,KAAF,IAAa;AACvB,aAAKZ,KAAL,CAAWa,QAAX,CAAqBD,KAAK,CAACE,WAAN,CAAkBC,IAAvC;AACA,OALF;AAMC,MAAA,OAAO,EAAG,KAAKf,KAAL,CAAWgB,OANtB,CAMgC;AANhC;AAOC,MAAA,MAAM,EAAG,KAAKhB,KAAL,CAAWiB,MAPrB,CAO8B;AAP9B;AAQC,MAAA,UAAU,EACP,KAAKjB,KAAL,CAAWkB,KAAX,IAAoB,KAAKlB,KAAL,CAAWkB,KAAX,CAAiBC,UAAvC,IACAC,eAAQ,yBAAR,EAAoCD,UAVtC;AAYC,MAAA,KAAK,EACJ,KAAKnB,KAAL,CAAWkB,KAAX,IAAoBE,eAAQ,yBAAR,CAbtB;AAeC,MAAA,aAAa,EAAG;AAfjB,OADD;AAmBA;;AApE+C","sourcesContent":["/**\n * External dependencies\n */\nimport { TextInput, Platform } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nexport default class PlainText extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.isAndroid = Platform.OS === 'android';\n\t}\n\n\tcomponentDidMount() {\n\t\t// if isSelected is true, we should request the focus on this TextInput\n\t\tif (\n\t\t\tthis._input &&\n\t\t\tthis._input.isFocused() === false &&\n\t\t\tthis.props.isSelected\n\t\t) {\n\t\t\tif ( this.isAndroid ) {\n\t\t\t\t/*\n\t\t\t\t * There seems to be an issue in React Native where the keyboard doesn't show if called shortly after rendering.\n\t\t\t\t * As a common work around this delay is used.\n\t\t\t\t * https://github.com/facebook/react-native/issues/19366#issuecomment-400603928\n\t\t\t\t */\n\t\t\t\tthis.timeoutID = setTimeout( () => {\n\t\t\t\t\tthis._input.focus();\n\t\t\t\t}, 100 );\n\t\t\t} else {\n\t\t\t\tthis._input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( ! this.props.isSelected && prevProps.isSelected ) {\n\t\t\tthis._input.blur();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif ( this.isAndroid ) {\n\t\t\tclearTimeout( this.timeoutID );\n\t\t}\n\t}\n\n\tfocus() {\n\t\tthis._input.focus();\n\t}\n\n\tblur() {\n\t\tthis._input.blur();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<TextInput\n\t\t\t\t{ ...this.props }\n\t\t\t\tref={ ( x ) => ( this._input = x ) }\n\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\tthis.props.onChange( event.nativeEvent.text );\n\t\t\t\t} }\n\t\t\t\tonFocus={ this.props.onFocus } // always assign onFocus as a props\n\t\t\t\tonBlur={ this.props.onBlur } // always assign onBlur as a props\n\t\t\t\tfontFamily={\n\t\t\t\t\t( this.props.style && this.props.style.fontFamily ) ||\n\t\t\t\t\tstyles[ 'block-editor-plain-text' ].fontFamily\n\t\t\t\t}\n\t\t\t\tstyle={\n\t\t\t\t\tthis.props.style || styles[ 'block-editor-plain-text' ]\n\t\t\t\t}\n\t\t\t\tscrollEnabled={ false }\n\t\t\t/>\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/plain-text/index.native.js"],"names":["PlainText","Component","constructor","arguments","isAndroid","Platform","OS","componentDidMount","_input","isFocused","props","isSelected","timeoutID","setTimeout","focus","componentDidUpdate","prevProps","blur","componentWillUnmount","clearTimeout","getFontSize","style","fontSize","width","height","Dimensions","get","cssUnitOptions","parseFloat","render","textStyles","styles","x","event","onChange","nativeEvent","text","onFocus","onBlur","fontFamily"],"mappings":";;;;;;;;;AAQA;;;;AALA;;AAMA;;AAKA;;AAdA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;AACA;AACA;AAGe,MAAMA,SAAN,SAAwBC,kBAAxB,CAAkC;AAChDC,EAAAA,WAAW,GAAG;AACb,UAAO,GAAGC,SAAV;AACA,SAAKC,SAAL,GAAiBC,sBAASC,EAAT,KAAgB,SAAjC;AACA;;AAEDC,EAAAA,iBAAiB,GAAG;AACnB;AACA,QACC,KAAKC,MAAL,IACA,KAAKA,MAAL,CAAYC,SAAZ,OAA4B,KAD5B,IAEA,KAAKC,KAAL,CAAWC,UAHZ,EAIE;AACD,UAAK,KAAKP,SAAV,EAAsB;AACrB;AACJ;AACA;AACA;AACA;AACI,aAAKQ,SAAL,GAAiBC,UAAU,CAAE,MAAM;AAClC,eAAKL,MAAL,CAAYM,KAAZ;AACA,SAF0B,EAExB,GAFwB,CAA3B;AAGA,OATD,MASO;AACN,aAAKN,MAAL,CAAYM,KAAZ;AACA;AACD;AACD;;AAEDC,EAAAA,kBAAkB,CAAEC,SAAF,EAAc;AAC/B,QAAK,CAAE,KAAKN,KAAL,CAAWC,UAAb,IAA2BK,SAAS,CAACL,UAA1C,EAAuD;AACtD,WAAKH,MAAL,CAAYS,IAAZ;AACA;AACD;;AAEDC,EAAAA,oBAAoB,GAAG;AACtB,QAAK,KAAKd,SAAV,EAAsB;AACrBe,MAAAA,YAAY,CAAE,KAAKP,SAAP,CAAZ;AACA;AACD;;AAEDE,EAAAA,KAAK,GAAG;AACP,SAAKN,MAAL,CAAYM,KAAZ;AACA;;AAEDG,EAAAA,IAAI,GAAG;AACN,SAAKT,MAAL,CAAYS,IAAZ;AACA;;AAEDG,EAAAA,WAAW,GAAG;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAY,KAAKX,KAAvB;;AAEA,QAAK,EAAEW,KAAF,aAAEA,KAAF,eAAEA,KAAK,CAAEC,QAAT,CAAL,EAAyB;AACxB;AACA;;AAED,UAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAoBC,wBAAWC,GAAX,CAAgB,QAAhB,CAA1B;;AACA,UAAMC,cAAc,GAAG;AAAEH,MAAAA,MAAF;AAAUD,MAAAA;AAAV,KAAvB;AAEA,WAAO;AACND,MAAAA,QAAQ,EAAEM,UAAU,CACnB,mCAAkBP,KAAK,CAACC,QAAxB,EAAkCK,cAAlC,CADmB;AADd,KAAP;AAKA;;AAEDE,EAAAA,MAAM,GAAG;AACR,UAAM;AAAER,MAAAA;AAAF,QAAY,KAAKX,KAAvB;AACA,UAAMoB,UAAU,GAAG,CAClBT,KAAK,IAAIU,eAAQ,yBAAR,CADS,EAElB,KAAKX,WAAL,EAFkB,CAAnB;AAKA,WACC,4BAAC,sBAAD,6BACM,KAAKV,KADX;AAEC,MAAA,GAAG,EAAKsB,CAAF,IAAW,KAAKxB,MAAL,GAAcwB,CAFhC;AAGC,MAAA,QAAQ,EAAKC,KAAF,IAAa;AACvB,aAAKvB,KAAL,CAAWwB,QAAX,CAAqBD,KAAK,CAACE,WAAN,CAAkBC,IAAvC;AACA,OALF;AAMC,MAAA,OAAO,EAAG,KAAK1B,KAAL,CAAW2B,OANtB,CAMgC;AANhC;AAOC,MAAA,MAAM,EAAG,KAAK3B,KAAL,CAAW4B,MAPrB,CAO8B;AAP9B;AAQC,MAAA,UAAU,EACP,KAAK5B,KAAL,CAAWW,KAAX,IAAoB,KAAKX,KAAL,CAAWW,KAAX,CAAiBkB,UAAvC,IACAR,eAAQ,yBAAR,EAAoCQ,UAVtC;AAYC,MAAA,KAAK,EAAGT,UAZT;AAaC,MAAA,aAAa,EAAG;AAbjB,OADD;AAiBA;;AAzF+C","sourcesContent":["/**\n * External dependencies\n */\nimport { TextInput, Platform, Dimensions } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { getPxFromCssUnit } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nexport default class PlainText extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.isAndroid = Platform.OS === 'android';\n\t}\n\n\tcomponentDidMount() {\n\t\t// if isSelected is true, we should request the focus on this TextInput\n\t\tif (\n\t\t\tthis._input &&\n\t\t\tthis._input.isFocused() === false &&\n\t\t\tthis.props.isSelected\n\t\t) {\n\t\t\tif ( this.isAndroid ) {\n\t\t\t\t/*\n\t\t\t\t * There seems to be an issue in React Native where the keyboard doesn't show if called shortly after rendering.\n\t\t\t\t * As a common work around this delay is used.\n\t\t\t\t * https://github.com/facebook/react-native/issues/19366#issuecomment-400603928\n\t\t\t\t */\n\t\t\t\tthis.timeoutID = setTimeout( () => {\n\t\t\t\t\tthis._input.focus();\n\t\t\t\t}, 100 );\n\t\t\t} else {\n\t\t\t\tthis._input.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( ! this.props.isSelected && prevProps.isSelected ) {\n\t\t\tthis._input.blur();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif ( this.isAndroid ) {\n\t\t\tclearTimeout( this.timeoutID );\n\t\t}\n\t}\n\n\tfocus() {\n\t\tthis._input.focus();\n\t}\n\n\tblur() {\n\t\tthis._input.blur();\n\t}\n\n\tgetFontSize() {\n\t\tconst { style } = this.props;\n\n\t\tif ( ! style?.fontSize ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { width, height } = Dimensions.get( 'window' );\n\t\tconst cssUnitOptions = { height, width };\n\n\t\treturn {\n\t\t\tfontSize: parseFloat(\n\t\t\t\tgetPxFromCssUnit( style.fontSize, cssUnitOptions )\n\t\t\t),\n\t\t};\n\t}\n\n\trender() {\n\t\tconst { style } = this.props;\n\t\tconst textStyles = [\n\t\t\tstyle || styles[ 'block-editor-plain-text' ],\n\t\t\tthis.getFontSize(),\n\t\t];\n\n\t\treturn (\n\t\t\t<TextInput\n\t\t\t\t{ ...this.props }\n\t\t\t\tref={ ( x ) => ( this._input = x ) }\n\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\tthis.props.onChange( event.nativeEvent.text );\n\t\t\t\t} }\n\t\t\t\tonFocus={ this.props.onFocus } // always assign onFocus as a props\n\t\t\t\tonBlur={ this.props.onBlur } // always assign onBlur as a props\n\t\t\t\tfontFamily={\n\t\t\t\t\t( this.props.style && this.props.style.fontFamily ) ||\n\t\t\t\t\tstyles[ 'block-editor-plain-text' ].fontFamily\n\t\t\t\t}\n\t\t\t\tstyle={ textStyles }\n\t\t\t\tscrollEnabled={ false }\n\t\t\t/>\n\t\t);\n\t}\n}\n"]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _element = require("@wordpress/element");
9
+
10
+ var _lodash = require("lodash");
11
+
12
+ var _components = require("@wordpress/components");
13
+
14
+ var _i18n = require("@wordpress/i18n");
15
+
16
+ /**
17
+ * External dependencies
18
+ */
19
+
20
+ /**
21
+ * WordPress dependencies
22
+ */
23
+ const DEFAULT_PICKER_OPTIONS = [{
24
+ id: 'createEmbed',
25
+ label: (0, _i18n.__)('Create embed'),
26
+ value: 'createEmbed',
27
+ onSelect: _lodash.noop
28
+ }, {
29
+ id: 'createLink',
30
+ label: (0, _i18n.__)('Create link'),
31
+ value: 'createLink',
32
+ onSelect: _lodash.noop
33
+ }];
34
+ const EmbedHandlerPicker = (0, _element.forwardRef)(({}, ref) => {
35
+ const pickerRef = (0, _element.useRef)();
36
+ const pickerOptions = (0, _element.useRef)(DEFAULT_PICKER_OPTIONS).current;
37
+ const onPickerSelect = (0, _element.useCallback)(value => {
38
+ const selectedItem = pickerOptions.find(item => item.value === value);
39
+ selectedItem.onSelect();
40
+ }, [pickerOptions]);
41
+ (0, _element.useImperativeHandle)(ref, () => ({
42
+ presentPicker: ({
43
+ createEmbed,
44
+ createLink
45
+ }) => {
46
+ var _pickerRef$current;
47
+
48
+ pickerOptions[0].onSelect = createEmbed;
49
+ pickerOptions[1].onSelect = createLink;
50
+ (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 ? void 0 : _pickerRef$current.presentPicker();
51
+ }
52
+ }));
53
+ return (0, _element.createElement)(_components.Picker, {
54
+ ref: pickerRef,
55
+ options: pickerOptions,
56
+ onChange: onPickerSelect,
57
+ testID: "embed-handler-picker",
58
+ hideCancelButton: true,
59
+ leftAlign: true
60
+ });
61
+ });
62
+
63
+ var _default = (0, _element.memo)(EmbedHandlerPicker);
64
+
65
+ exports.default = _default;
66
+ //# sourceMappingURL=embed-handler-picker.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/embed-handler-picker.native.js"],"names":["DEFAULT_PICKER_OPTIONS","id","label","value","onSelect","noop","EmbedHandlerPicker","ref","pickerRef","pickerOptions","current","onPickerSelect","selectedItem","find","item","presentPicker","createEmbed","createLink"],"mappings":";;;;;;;AAQA;;AALA;;AAYA;;AACA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;AAWA,MAAMA,sBAAsB,GAAG,CAC9B;AACCC,EAAAA,EAAE,EAAE,aADL;AAECC,EAAAA,KAAK,EAAE,cAAI,cAAJ,CAFR;AAGCC,EAAAA,KAAK,EAAE,aAHR;AAICC,EAAAA,QAAQ,EAAEC;AAJX,CAD8B,EAO9B;AACCJ,EAAAA,EAAE,EAAE,YADL;AAECC,EAAAA,KAAK,EAAE,cAAI,aAAJ,CAFR;AAGCC,EAAAA,KAAK,EAAE,YAHR;AAICC,EAAAA,QAAQ,EAAEC;AAJX,CAP8B,CAA/B;AAeA,MAAMC,kBAAkB,GAAG,yBAAY,CAAE,EAAF,EAAMC,GAAN,KAAe;AACrD,QAAMC,SAAS,GAAG,sBAAlB;AACA,QAAMC,aAAa,GAAG,qBAAQT,sBAAR,EAAiCU,OAAvD;AAEA,QAAMC,cAAc,GAAG,0BACpBR,KAAF,IAAa;AACZ,UAAMS,YAAY,GAAGH,aAAa,CAACI,IAAd,CAClBC,IAAF,IAAYA,IAAI,CAACX,KAAL,KAAeA,KADP,CAArB;AAGAS,IAAAA,YAAY,CAACR,QAAb;AACA,GANqB,EAOtB,CAAEK,aAAF,CAPsB,CAAvB;AAUA,oCAAqBF,GAArB,EAA0B,OAAQ;AACjCQ,IAAAA,aAAa,EAAE,CAAE;AAAEC,MAAAA,WAAF;AAAeC,MAAAA;AAAf,KAAF,KAAmC;AAAA;;AACjDR,MAAAA,aAAa,CAAE,CAAF,CAAb,CAAmBL,QAAnB,GAA8BY,WAA9B;AACAP,MAAAA,aAAa,CAAE,CAAF,CAAb,CAAmBL,QAAnB,GAA8Ba,UAA9B;AACA,4BAAAT,SAAS,CAACE,OAAV,0EAAmBK,aAAnB;AACA;AALgC,GAAR,CAA1B;AAQA,SACC,4BAAC,kBAAD;AACC,IAAA,GAAG,EAAGP,SADP;AAEC,IAAA,OAAO,EAAGC,aAFX;AAGC,IAAA,QAAQ,EAAGE,cAHZ;AAIC,IAAA,MAAM,EAAC,sBAJR;AAKC,IAAA,gBAAgB,MALjB;AAMC,IAAA,SAAS;AANV,IADD;AAUA,CAhC0B,CAA3B;;eAkCe,mBAAML,kBAAN,C","sourcesContent":["/**\n * External dependencies\n */\nimport { noop } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseRef,\n\tuseImperativeHandle,\n\tmemo,\n\tuseCallback,\n} from '@wordpress/element';\nimport { Picker } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst DEFAULT_PICKER_OPTIONS = [\n\t{\n\t\tid: 'createEmbed',\n\t\tlabel: __( 'Create embed' ),\n\t\tvalue: 'createEmbed',\n\t\tonSelect: noop,\n\t},\n\t{\n\t\tid: 'createLink',\n\t\tlabel: __( 'Create link' ),\n\t\tvalue: 'createLink',\n\t\tonSelect: noop,\n\t},\n];\n\nconst EmbedHandlerPicker = forwardRef( ( {}, ref ) => {\n\tconst pickerRef = useRef();\n\tconst pickerOptions = useRef( DEFAULT_PICKER_OPTIONS ).current;\n\n\tconst onPickerSelect = useCallback(\n\t\t( value ) => {\n\t\t\tconst selectedItem = pickerOptions.find(\n\t\t\t\t( item ) => item.value === value\n\t\t\t);\n\t\t\tselectedItem.onSelect();\n\t\t},\n\t\t[ pickerOptions ]\n\t);\n\n\tuseImperativeHandle( ref, () => ( {\n\t\tpresentPicker: ( { createEmbed, createLink } ) => {\n\t\t\tpickerOptions[ 0 ].onSelect = createEmbed;\n\t\t\tpickerOptions[ 1 ].onSelect = createLink;\n\t\t\tpickerRef.current?.presentPicker();\n\t\t},\n\t} ) );\n\n\treturn (\n\t\t<Picker\n\t\t\tref={ pickerRef }\n\t\t\toptions={ pickerOptions }\n\t\t\tonChange={ onPickerSelect }\n\t\t\ttestID=\"embed-handler-picker\"\n\t\t\thideCancelButton\n\t\t\tleftAlign\n\t\t/>\n\t);\n} );\n\nexport default memo( EmbedHandlerPicker );\n"]}
@@ -9,9 +9,15 @@ var _element = require("@wordpress/element");
9
9
 
10
10
  var _richText = require("@wordpress/rich-text");
11
11
 
12
+ var _lodash = require("lodash");
13
+
12
14
  /**
13
15
  * WordPress dependencies
14
16
  */
17
+
18
+ /**
19
+ * External dependencies
20
+ */
15
21
  function FormatEdit({
16
22
  formatTypes,
17
23
  onChange,
@@ -30,9 +36,29 @@ function FormatEdit({
30
36
  }
31
37
 
32
38
  const activeFormat = (0, _richText.getActiveFormat)(value, name);
33
- const isActive = activeFormat !== undefined;
39
+ let isActive = activeFormat !== undefined;
34
40
  const activeObject = (0, _richText.getActiveObject)(value);
35
- const isObjectActive = activeObject !== undefined && activeObject.type === name;
41
+ const isObjectActive = activeObject !== undefined && activeObject.type === name; // Edge case: un-collapsed link formats.
42
+ // If there is a missing link format at either end of the selection
43
+ // then we shouldn't show the Edit UI because the selection has exceeded
44
+ // the bounds of the link format.
45
+ // Also if the format objects don't match then we're dealing with two separate
46
+ // links so we should not allow the link to be modified over the top.
47
+
48
+ if (name === 'core/link' && !(0, _richText.isCollapsed)(value)) {
49
+ const formats = value.formats;
50
+ const linkFormatAtStart = (0, _lodash.find)(formats[value.start], {
51
+ type: 'core/link'
52
+ });
53
+ const linkFormatAtEnd = (0, _lodash.find)(formats[value.end - 1], {
54
+ type: 'core/link'
55
+ });
56
+
57
+ if (!linkFormatAtStart || !linkFormatAtEnd || linkFormatAtStart !== linkFormatAtEnd) {
58
+ isActive = false;
59
+ }
60
+ }
61
+
36
62
  return (0, _element.createElement)(Edit, {
37
63
  key: name,
38
64
  isActive: isActive,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/format-edit.js"],"names":["FormatEdit","formatTypes","onChange","onFocus","value","forwardedRef","map","settings","name","edit","Edit","activeFormat","isActive","undefined","activeObject","isObjectActive","type","attributes"],"mappings":";;;;;;;;;AAGA;;AAHA;AACA;AACA;AAGe,SAASA,UAAT,CAAqB;AACnCC,EAAAA,WADmC;AAEnCC,EAAAA,QAFmC;AAGnCC,EAAAA,OAHmC;AAInCC,EAAAA,KAJmC;AAKnCC,EAAAA;AALmC,CAArB,EAMX;AACH,SAAOJ,WAAW,CAACK,GAAZ,CAAmBC,QAAF,IAAgB;AACvC,UAAM;AAAEC,MAAAA,IAAF;AAAQC,MAAAA,IAAI,EAAEC;AAAd,QAAuBH,QAA7B;;AAEA,QAAK,CAAEG,IAAP,EAAc;AACb,aAAO,IAAP;AACA;;AAED,UAAMC,YAAY,GAAG,+BAAiBP,KAAjB,EAAwBI,IAAxB,CAArB;AACA,UAAMI,QAAQ,GAAGD,YAAY,KAAKE,SAAlC;AACA,UAAMC,YAAY,GAAG,+BAAiBV,KAAjB,CAArB;AACA,UAAMW,cAAc,GACnBD,YAAY,KAAKD,SAAjB,IAA8BC,YAAY,CAACE,IAAb,KAAsBR,IADrD;AAGA,WACC,4BAAC,IAAD;AACC,MAAA,GAAG,EAAGA,IADP;AAEC,MAAA,QAAQ,EAAGI,QAFZ;AAGC,MAAA,gBAAgB,EACfA,QAAQ,GAAGD,YAAY,CAACM,UAAb,IAA2B,EAA9B,GAAmC,EAJ7C;AAMC,MAAA,cAAc,EAAGF,cANlB;AAOC,MAAA,sBAAsB,EACrBA,cAAc,GAAGD,YAAY,CAACG,UAAb,IAA2B,EAA9B,GAAmC,EARnD;AAUC,MAAA,KAAK,EAAGb,KAVT;AAWC,MAAA,QAAQ,EAAGF,QAXZ;AAYC,MAAA,OAAO,EAAGC,OAZX;AAaC,MAAA,UAAU,EAAGE;AAbd,MADD;AAiBA,GA9BM,CAAP;AA+BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getActiveFormat, getActiveObject } from '@wordpress/rich-text';\n\nexport default function FormatEdit( {\n\tformatTypes,\n\tonChange,\n\tonFocus,\n\tvalue,\n\tforwardedRef,\n} ) {\n\treturn formatTypes.map( ( settings ) => {\n\t\tconst { name, edit: Edit } = settings;\n\n\t\tif ( ! Edit ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst activeFormat = getActiveFormat( value, name );\n\t\tconst isActive = activeFormat !== undefined;\n\t\tconst activeObject = getActiveObject( value );\n\t\tconst isObjectActive =\n\t\t\tactiveObject !== undefined && activeObject.type === name;\n\n\t\treturn (\n\t\t\t<Edit\n\t\t\t\tkey={ name }\n\t\t\t\tisActive={ isActive }\n\t\t\t\tactiveAttributes={\n\t\t\t\t\tisActive ? activeFormat.attributes || {} : {}\n\t\t\t\t}\n\t\t\t\tisObjectActive={ isObjectActive }\n\t\t\t\tactiveObjectAttributes={\n\t\t\t\t\tisObjectActive ? activeObject.attributes || {} : {}\n\t\t\t\t}\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tcontentRef={ forwardedRef }\n\t\t\t/>\n\t\t);\n\t} );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/format-edit.js"],"names":["FormatEdit","formatTypes","onChange","onFocus","value","forwardedRef","map","settings","name","edit","Edit","activeFormat","isActive","undefined","activeObject","isObjectActive","type","formats","linkFormatAtStart","start","linkFormatAtEnd","end","attributes"],"mappings":";;;;;;;;;AAGA;;AAQA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGe,SAASA,UAAT,CAAqB;AACnCC,EAAAA,WADmC;AAEnCC,EAAAA,QAFmC;AAGnCC,EAAAA,OAHmC;AAInCC,EAAAA,KAJmC;AAKnCC,EAAAA;AALmC,CAArB,EAMX;AACH,SAAOJ,WAAW,CAACK,GAAZ,CAAmBC,QAAF,IAAgB;AACvC,UAAM;AAAEC,MAAAA,IAAF;AAAQC,MAAAA,IAAI,EAAEC;AAAd,QAAuBH,QAA7B;;AAEA,QAAK,CAAEG,IAAP,EAAc;AACb,aAAO,IAAP;AACA;;AAED,UAAMC,YAAY,GAAG,+BAAiBP,KAAjB,EAAwBI,IAAxB,CAArB;AACA,QAAII,QAAQ,GAAGD,YAAY,KAAKE,SAAhC;AACA,UAAMC,YAAY,GAAG,+BAAiBV,KAAjB,CAArB;AACA,UAAMW,cAAc,GACnBD,YAAY,KAAKD,SAAjB,IAA8BC,YAAY,CAACE,IAAb,KAAsBR,IADrD,CAVuC,CAavC;AACA;AACA;AACA;AACA;AACA;;AACA,QAAKA,IAAI,KAAK,WAAT,IAAwB,CAAE,2BAAaJ,KAAb,CAA/B,EAAsD;AACrD,YAAMa,OAAO,GAAGb,KAAK,CAACa,OAAtB;AAEA,YAAMC,iBAAiB,GAAG,kBAAMD,OAAO,CAAEb,KAAK,CAACe,KAAR,CAAb,EAA8B;AACvDH,QAAAA,IAAI,EAAE;AADiD,OAA9B,CAA1B;AAIA,YAAMI,eAAe,GAAG,kBAAMH,OAAO,CAAEb,KAAK,CAACiB,GAAN,GAAY,CAAd,CAAb,EAAgC;AACvDL,QAAAA,IAAI,EAAE;AADiD,OAAhC,CAAxB;;AAIA,UACC,CAAEE,iBAAF,IACA,CAAEE,eADF,IAEAF,iBAAiB,KAAKE,eAHvB,EAIE;AACDR,QAAAA,QAAQ,GAAG,KAAX;AACA;AACD;;AAED,WACC,4BAAC,IAAD;AACC,MAAA,GAAG,EAAGJ,IADP;AAEC,MAAA,QAAQ,EAAGI,QAFZ;AAGC,MAAA,gBAAgB,EACfA,QAAQ,GAAGD,YAAY,CAACW,UAAb,IAA2B,EAA9B,GAAmC,EAJ7C;AAMC,MAAA,cAAc,EAAGP,cANlB;AAOC,MAAA,sBAAsB,EACrBA,cAAc,GAAGD,YAAY,CAACQ,UAAb,IAA2B,EAA9B,GAAmC,EARnD;AAUC,MAAA,KAAK,EAAGlB,KAVT;AAWC,MAAA,QAAQ,EAAGF,QAXZ;AAYC,MAAA,OAAO,EAAGC,OAZX;AAaC,MAAA,UAAU,EAAGE;AAbd,MADD;AAiBA,GAxDM,CAAP;AAyDA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetActiveFormat,\n\tgetActiveObject,\n\tisCollapsed,\n} from '@wordpress/rich-text';\n/**\n * External dependencies\n */\nimport { find } from 'lodash';\n\nexport default function FormatEdit( {\n\tformatTypes,\n\tonChange,\n\tonFocus,\n\tvalue,\n\tforwardedRef,\n} ) {\n\treturn formatTypes.map( ( settings ) => {\n\t\tconst { name, edit: Edit } = settings;\n\n\t\tif ( ! Edit ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst activeFormat = getActiveFormat( value, name );\n\t\tlet isActive = activeFormat !== undefined;\n\t\tconst activeObject = getActiveObject( value );\n\t\tconst isObjectActive =\n\t\t\tactiveObject !== undefined && activeObject.type === name;\n\n\t\t// Edge case: un-collapsed link formats.\n\t\t// If there is a missing link format at either end of the selection\n\t\t// then we shouldn't show the Edit UI because the selection has exceeded\n\t\t// the bounds of the link format.\n\t\t// Also if the format objects don't match then we're dealing with two separate\n\t\t// links so we should not allow the link to be modified over the top.\n\t\tif ( name === 'core/link' && ! isCollapsed( value ) ) {\n\t\t\tconst formats = value.formats;\n\n\t\t\tconst linkFormatAtStart = find( formats[ value.start ], {\n\t\t\t\ttype: 'core/link',\n\t\t\t} );\n\n\t\t\tconst linkFormatAtEnd = find( formats[ value.end - 1 ], {\n\t\t\t\ttype: 'core/link',\n\t\t\t} );\n\n\t\t\tif (\n\t\t\t\t! linkFormatAtStart ||\n\t\t\t\t! linkFormatAtEnd ||\n\t\t\t\tlinkFormatAtStart !== linkFormatAtEnd\n\t\t\t) {\n\t\t\t\tisActive = false;\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<Edit\n\t\t\t\tkey={ name }\n\t\t\t\tisActive={ isActive }\n\t\t\t\tactiveAttributes={\n\t\t\t\t\tisActive ? activeFormat.attributes || {} : {}\n\t\t\t\t}\n\t\t\t\tisObjectActive={ isObjectActive }\n\t\t\t\tactiveObjectAttributes={\n\t\t\t\t\tisObjectActive ? activeObject.attributes || {} : {}\n\t\t\t\t}\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tcontentRef={ forwardedRef }\n\t\t\t/>\n\t\t);\n\t} );\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -9,6 +11,8 @@ var _element = require("@wordpress/element");
9
11
 
10
12
  var _lodash = require("lodash");
11
13
 
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
12
16
  var _i18n = require("@wordpress/i18n");
13
17
 
14
18
  var _components = require("@wordpress/components");
@@ -28,22 +32,39 @@ const POPOVER_PROPS = {
28
32
  };
29
33
 
30
34
  const FormatToolbar = () => {
31
- return (0, _element.createElement)(_element.Fragment, null, ['bold', 'italic', 'link', 'text-color'].map(format => (0, _element.createElement)(_components.Slot, {
35
+ return (0, _element.createElement)(_element.Fragment, null, ['bold', 'italic', 'link'].map(format => (0, _element.createElement)(_components.Slot, {
32
36
  name: `RichText.ToolbarControls.${format}`,
33
37
  key: format
34
38
  })), (0, _element.createElement)(_components.Slot, {
35
39
  name: "RichText.ToolbarControls"
36
- }, fills => fills.length !== 0 && (0, _element.createElement)(_components.ToolbarItem, null, toggleProps => (0, _element.createElement)(_components.DropdownMenu, {
37
- icon: _icons.chevronDown
38
- /* translators: button label text should, if possible, be under 16 characters. */
39
- ,
40
- label: (0, _i18n.__)('More'),
41
- toggleProps: toggleProps,
42
- controls: (0, _lodash.orderBy)(fills.map(([{
40
+ }, fills => {
41
+ if (!fills.length) {
42
+ return null;
43
+ }
44
+
45
+ const allProps = fills.map(([{
43
46
  props
44
- }]) => props), 'title'),
45
- popoverProps: POPOVER_PROPS
46
- }))));
47
+ }]) => props);
48
+ const hasActive = allProps.some(({
49
+ isActive
50
+ }) => isActive);
51
+ return (0, _element.createElement)(_components.ToolbarItem, null, toggleProps => (0, _element.createElement)(_components.DropdownMenu, {
52
+ icon: _icons.chevronDown
53
+ /* translators: button label text should, if possible, be under 16 characters. */
54
+ ,
55
+ label: (0, _i18n.__)('More'),
56
+ toggleProps: { ...toggleProps,
57
+ className: (0, _classnames.default)(toggleProps.className, {
58
+ 'is-pressed': hasActive
59
+ }),
60
+ describedBy: (0, _i18n.__)('Displays more block tools')
61
+ },
62
+ controls: (0, _lodash.orderBy)(fills.map(([{
63
+ props
64
+ }]) => props), 'title'),
65
+ popoverProps: POPOVER_PROPS
66
+ }));
67
+ }));
47
68
  };
48
69
 
49
70
  var _default = FormatToolbar;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/format-toolbar/index.js"],"names":["POPOVER_PROPS","position","isAlternate","FormatToolbar","map","format","fills","length","toggleProps","chevronDown","props"],"mappings":";;;;;;;;;AAIA;;AAMA;;AACA;;AACA;;AAZA;AACA;AACA;;AAIA;AACA;AACA;AAMA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,QAAQ,EAAE,cADW;AAErBC,EAAAA,WAAW,EAAE;AAFQ,CAAtB;;AAKA,MAAMC,aAAa,GAAG,MAAM;AAC3B,SACC,qDACG,CAAE,MAAF,EAAU,QAAV,EAAoB,MAApB,EAA4B,YAA5B,EAA2CC,GAA3C,CAAkDC,MAAF,IACjD,4BAAC,gBAAD;AACC,IAAA,IAAI,EAAI,4BAA4BA,MAAQ,EAD7C;AAEC,IAAA,GAAG,EAAGA;AAFP,IADC,CADH,EAOC,4BAAC,gBAAD;AAAM,IAAA,IAAI,EAAC;AAAX,KACKC,KAAF,IACDA,KAAK,CAACC,MAAN,KAAiB,CAAjB,IACC,4BAAC,uBAAD,QACKC,WAAF,IACD,4BAAC,wBAAD;AACC,IAAA,IAAI,EAAGC;AACP;AAFD;AAGC,IAAA,KAAK,EAAG,cAAI,MAAJ,CAHT;AAIC,IAAA,WAAW,EAAGD,WAJf;AAKC,IAAA,QAAQ,EAAG,qBACVF,KAAK,CAACF,GAAN,CAAW,CAAE,CAAE;AAAEM,MAAAA;AAAF,KAAF,CAAF,KAAqBA,KAAhC,CADU,EAEV,OAFU,CALZ;AASC,IAAA,YAAY,EAAGV;AAThB,IAFF,CAHH,CAPD,CADD;AA+BA,CAhCD;;eAkCeG,a","sourcesContent":["/**\n * External dependencies\n */\n\nimport { orderBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarItem, DropdownMenu, Slot } from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\n\nconst POPOVER_PROPS = {\n\tposition: 'bottom right',\n\tisAlternate: true,\n};\n\nconst FormatToolbar = () => {\n\treturn (\n\t\t<>\n\t\t\t{ [ 'bold', 'italic', 'link', 'text-color' ].map( ( format ) => (\n\t\t\t\t<Slot\n\t\t\t\t\tname={ `RichText.ToolbarControls.${ format }` }\n\t\t\t\t\tkey={ format }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t\t<Slot name=\"RichText.ToolbarControls\">\n\t\t\t\t{ ( fills ) =>\n\t\t\t\t\tfills.length !== 0 && (\n\t\t\t\t\t\t<ToolbarItem>\n\t\t\t\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More' ) }\n\t\t\t\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\t\t\t\tcontrols={ orderBy(\n\t\t\t\t\t\t\t\t\t\tfills.map( ( [ { props } ] ) => props ),\n\t\t\t\t\t\t\t\t\t\t'title'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</ToolbarItem>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t</Slot>\n\t\t</>\n\t);\n};\n\nexport default FormatToolbar;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/format-toolbar/index.js"],"names":["POPOVER_PROPS","position","isAlternate","FormatToolbar","map","format","fills","length","allProps","props","hasActive","some","isActive","toggleProps","chevronDown","className","describedBy"],"mappings":";;;;;;;;;;;AAIA;;AACA;;AAMA;;AACA;;AACA;;AAbA;AACA;AACA;;AAKA;AACA;AACA;AAMA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,QAAQ,EAAE,cADW;AAErBC,EAAAA,WAAW,EAAE;AAFQ,CAAtB;;AAKA,MAAMC,aAAa,GAAG,MAAM;AAC3B,SACC,qDACG,CAAE,MAAF,EAAU,QAAV,EAAoB,MAApB,EAA6BC,GAA7B,CAAoCC,MAAF,IACnC,4BAAC,gBAAD;AACC,IAAA,IAAI,EAAI,4BAA4BA,MAAQ,EAD7C;AAEC,IAAA,GAAG,EAAGA;AAFP,IADC,CADH,EAOC,4BAAC,gBAAD;AAAM,IAAA,IAAI,EAAC;AAAX,KACKC,KAAF,IAAa;AACd,QAAK,CAAEA,KAAK,CAACC,MAAb,EAAsB;AACrB,aAAO,IAAP;AACA;;AAED,UAAMC,QAAQ,GAAGF,KAAK,CAACF,GAAN,CAAW,CAAE,CAAE;AAAEK,MAAAA;AAAF,KAAF,CAAF,KAAqBA,KAAhC,CAAjB;AACA,UAAMC,SAAS,GAAGF,QAAQ,CAACG,IAAT,CACjB,CAAE;AAAEC,MAAAA;AAAF,KAAF,KAAoBA,QADH,CAAlB;AAIA,WACC,4BAAC,uBAAD,QACKC,WAAF,IACD,4BAAC,wBAAD;AACC,MAAA,IAAI,EAAGC;AACP;AAFD;AAGC,MAAA,KAAK,EAAG,cAAI,MAAJ,CAHT;AAIC,MAAA,WAAW,EAAG,EACb,GAAGD,WADU;AAEbE,QAAAA,SAAS,EAAE,yBACVF,WAAW,CAACE,SADF,EAEV;AAAE,wBAAcL;AAAhB,SAFU,CAFE;AAMbM,QAAAA,WAAW,EAAE,cACZ,2BADY;AANA,OAJf;AAcC,MAAA,QAAQ,EAAG,qBACVV,KAAK,CAACF,GAAN,CAAW,CAAE,CAAE;AAAEK,QAAAA;AAAF,OAAF,CAAF,KAAqBA,KAAhC,CADU,EAEV,OAFU,CAdZ;AAkBC,MAAA,YAAY,EAAGT;AAlBhB,MAFF,CADD;AA0BA,GArCF,CAPD,CADD;AAiDA,CAlDD;;eAoDeG,a","sourcesContent":["/**\n * External dependencies\n */\n\nimport { orderBy } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\n\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarItem, DropdownMenu, Slot } from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\n\nconst POPOVER_PROPS = {\n\tposition: 'bottom right',\n\tisAlternate: true,\n};\n\nconst FormatToolbar = () => {\n\treturn (\n\t\t<>\n\t\t\t{ [ 'bold', 'italic', 'link' ].map( ( format ) => (\n\t\t\t\t<Slot\n\t\t\t\t\tname={ `RichText.ToolbarControls.${ format }` }\n\t\t\t\t\tkey={ format }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t\t<Slot name=\"RichText.ToolbarControls\">\n\t\t\t\t{ ( fills ) => {\n\t\t\t\t\tif ( ! fills.length ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst allProps = fills.map( ( [ { props } ] ) => props );\n\t\t\t\t\tconst hasActive = allProps.some(\n\t\t\t\t\t\t( { isActive } ) => isActive\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ToolbarItem>\n\t\t\t\t\t\t\t{ ( toggleProps ) => (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More' ) }\n\t\t\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t\t\t\t\t\tclassName: classnames(\n\t\t\t\t\t\t\t\t\t\t\ttoggleProps.className,\n\t\t\t\t\t\t\t\t\t\t\t{ 'is-pressed': hasActive }\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tdescribedBy: __(\n\t\t\t\t\t\t\t\t\t\t\t'Displays more block tools'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tcontrols={ orderBy(\n\t\t\t\t\t\t\t\t\t\tfills.map( ( [ { props } ] ) => props ),\n\t\t\t\t\t\t\t\t\t\t'title'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</ToolbarItem>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t</Slot>\n\t\t</>\n\t);\n};\n\nexport default FormatToolbar;\n"]}
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__unstableRichTextInputEvent", {
23
23
  return _inputEvent.__unstableRichTextInputEvent;
24
24
  }
25
25
  });
26
- exports.default = void 0;
26
+ exports.default = exports.inputEventContext = exports.keyboardShortcutContext = void 0;
27
27
 
28
28
  var _element = require("@wordpress/element");
29
29
 
@@ -45,6 +45,8 @@ var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
45
45
 
46
46
  var _keycodes = require("@wordpress/keycodes");
47
47
 
48
+ var _components = require("@wordpress/components");
49
+
48
50
  var _autocomplete = require("../autocomplete");
49
51
 
50
52
  var _blockEdit = require("../block-edit");
@@ -69,6 +71,10 @@ var _useFormatTypes = require("./use-format-types");
69
71
 
70
72
  var _useRemoveBrowserShortcuts = require("./use-remove-browser-shortcuts");
71
73
 
74
+ var _useShortcuts = require("./use-shortcuts");
75
+
76
+ var _useInputEvents = require("./use-input-events");
77
+
72
78
  var _formatEdit = _interopRequireDefault(require("./format-edit"));
73
79
 
74
80
  var _utils = require("./utils");
@@ -90,7 +96,9 @@ var _inputEvent = require("./input-event");
90
96
  /**
91
97
  * Internal dependencies
92
98
  */
93
-
99
+ const keyboardShortcutContext = (0, _element.createContext)();
100
+ exports.keyboardShortcutContext = keyboardShortcutContext;
101
+ const inputEventContext = (0, _element.createContext)();
94
102
  /**
95
103
  * Removes props used for the native version of RichText so that they are not
96
104
  * passed to the DOM element and log warnings.
@@ -99,6 +107,9 @@ var _inputEvent = require("./input-event");
99
107
  *
100
108
  * @return {Object} Filtered props.
101
109
  */
110
+
111
+ exports.inputEventContext = inputEventContext;
112
+
102
113
  function removeNativeProps(props) {
103
114
  return (0, _lodash.omit)(props, ['__unstableMobileNoFocusOnMount', 'deleteEnter', 'placeholderTextColor', 'textAlign', 'selectionColor', 'tagsToEliminate', 'rootTagsToEliminate', 'disableEditingMenu', 'fontSize', 'fontFamily', 'fontWeight', 'fontStyle', 'minWidth', 'maxWidth', 'setRef']);
104
115
  }
@@ -231,7 +242,6 @@ function RichTextWrapper({
231
242
  const {
232
243
  value,
233
244
  onChange,
234
- onFocus,
235
245
  ref: richTextRef
236
246
  } = (0, _richText.__unstableUseRichText)({
237
247
  value: adjustedValue,
@@ -272,6 +282,8 @@ function RichTextWrapper({
272
282
  html: adjustedValue,
273
283
  value
274
284
  });
285
+ const keyboardShortcuts = (0, _element.useRef)(new Set());
286
+ const inputEvents = (0, _element.useRef)(new Set());
275
287
 
276
288
  function onKeyDown(event) {
277
289
  const {
@@ -311,18 +323,28 @@ function RichTextWrapper({
311
323
  }
312
324
  }
313
325
 
326
+ function onFocus() {
327
+ anchorRef.current.focus();
328
+ }
329
+
314
330
  const TagName = tagName;
315
- const content = (0, _element.createElement)(_element.Fragment, null, isSelected && children && children({
331
+ const content = (0, _element.createElement)(_element.Fragment, null, isSelected && (0, _element.createElement)(keyboardShortcutContext.Provider, {
332
+ value: keyboardShortcuts
333
+ }, (0, _element.createElement)(inputEventContext.Provider, {
334
+ value: inputEvents
335
+ }, (0, _element.createElement)(_components.Popover.__unstableSlotNameProvider, {
336
+ value: "__unstable-block-tools-after"
337
+ }, children && children({
316
338
  value,
317
339
  onChange,
318
340
  onFocus
319
- }), isSelected && (0, _element.createElement)(_formatEdit.default, {
341
+ }), (0, _element.createElement)(_formatEdit.default, {
320
342
  value: value,
321
343
  onChange: onChange,
322
344
  onFocus: onFocus,
323
345
  formatTypes: formatTypes,
324
346
  forwardedRef: anchorRef
325
- }), isSelected && hasFormats && (0, _element.createElement)(_formatToolbarContainer.default, {
347
+ })))), isSelected && hasFormats && (0, _element.createElement)(_formatToolbarContainer.default, {
326
348
  inline: inlineToolbar,
327
349
  anchorRef: anchorRef.current
328
350
  }), (0, _element.createElement)(TagName // Overridable props.
@@ -337,7 +359,7 @@ function RichTextWrapper({
337
359
  __unstableAllowPrefixTransformations,
338
360
  formatTypes,
339
361
  onReplace
340
- }), (0, _useRemoveBrowserShortcuts.useRemoveBrowserShortcuts)(), (0, _useUndoAutomaticChange.useUndoAutomaticChange)(), (0, _usePasteHandler.usePasteHandler)({
362
+ }), (0, _useRemoveBrowserShortcuts.useRemoveBrowserShortcuts)(), (0, _useShortcuts.useShortcuts)(keyboardShortcuts), (0, _useInputEvents.useInputEvents)(inputEvents), (0, _useUndoAutomaticChange.useUndoAutomaticChange)(), (0, _usePasteHandler.usePasteHandler)({
341
363
  isSelected,
342
364
  disableFormats,
343
365
  onChange,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["removeNativeProps","props","RichTextWrapper","children","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","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","disabled","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","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","onFocus","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","TagName","content","current","className","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"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 { RawHTML, useRef, useCallback, forwardRef } 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 FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\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, onFocus, 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\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\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected &&\n\t\t\t\tchildren &&\n\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t{ isSelected && (\n\t\t\t\t<FormatEdit\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t/>\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\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":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","children","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","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","disabled","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","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","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"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"]}