@wordpress/block-editor 8.2.0 → 8.2.1-next.a55ed9455a.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 (475) hide show
  1. package/README.md +6 -2
  2. package/build/autocompleters/link.js +78 -0
  3. package/build/autocompleters/link.js.map +1 -0
  4. package/build/components/autocomplete/index.js +3 -1
  5. package/build/components/autocomplete/index.js.map +1 -1
  6. package/build/components/block-actions/index.js +1 -1
  7. package/build/components/block-actions/index.js.map +1 -1
  8. package/build/components/block-breadcrumb/index.js +4 -2
  9. package/build/components/block-breadcrumb/index.js.map +1 -1
  10. package/build/components/block-compare/index.js +2 -2
  11. package/build/components/block-compare/index.js.map +1 -1
  12. package/build/components/block-controls/index.js +1 -1
  13. package/build/components/block-controls/index.js.map +1 -1
  14. package/build/components/block-draggable/index.js +1 -1
  15. package/build/components/block-draggable/index.js.map +1 -1
  16. package/build/components/block-edit/edit.js +1 -1
  17. package/build/components/block-edit/edit.js.map +1 -1
  18. package/build/components/block-list/block-html.js +1 -1
  19. package/build/components/block-list/block-html.js.map +1 -1
  20. package/build/components/block-list/block-invalid-warning.js +1 -1
  21. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  22. package/build/components/block-list/block-list-item.native.js +4 -4
  23. package/build/components/block-list/block-list-item.native.js.map +1 -1
  24. package/build/components/block-list/block-selection-button.native.js +4 -3
  25. package/build/components/block-list/block-selection-button.native.js.map +1 -1
  26. package/build/components/block-list/block.js +1 -1
  27. package/build/components/block-list/block.js.map +1 -1
  28. package/build/components/block-list/block.native.js +5 -5
  29. package/build/components/block-list/block.native.js.map +1 -1
  30. package/build/components/block-list/index.native.js +5 -5
  31. package/build/components/block-list/index.native.js.map +1 -1
  32. package/build/components/block-list/use-block-props/use-block-class-names.js +1 -1
  33. package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  34. package/build/components/block-media-update-progress/index.native.js +4 -4
  35. package/build/components/block-media-update-progress/index.native.js.map +1 -1
  36. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  37. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  38. package/build/components/block-mobile-toolbar/index.native.js +1 -1
  39. package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
  40. package/build/components/block-mover/mover-description.js +4 -4
  41. package/build/components/block-mover/mover-description.js.map +1 -1
  42. package/build/components/block-mover/mover-description.native.js +5 -5
  43. package/build/components/block-mover/mover-description.native.js.map +1 -1
  44. package/build/components/block-settings-menu/block-settings-dropdown.js +7 -12
  45. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  46. package/build/components/block-styles/preview.native.js +1 -1
  47. package/build/components/block-styles/preview.native.js.map +1 -1
  48. package/build/components/block-switcher/index.js +2 -1
  49. package/build/components/block-switcher/index.js.map +1 -1
  50. package/build/components/block-switcher/use-transformed-patterns.js +0 -1
  51. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  52. package/build/components/block-title/index.js +7 -62
  53. package/build/components/block-title/index.js.map +1 -1
  54. package/build/components/block-title/use-block-display-title.js +94 -0
  55. package/build/components/block-title/use-block-display-title.js.map +1 -0
  56. package/build/components/block-toolbar/utils.js +9 -1
  57. package/build/components/block-toolbar/utils.js.map +1 -1
  58. package/build/components/block-tools/block-popover.js +1 -1
  59. package/build/components/block-tools/block-popover.js.map +1 -1
  60. package/build/components/block-tools/block-selection-button.js +2 -1
  61. package/build/components/block-tools/block-selection-button.js.map +1 -1
  62. package/build/components/block-types-list/index.native.js +1 -1
  63. package/build/components/block-types-list/index.native.js.map +1 -1
  64. package/build/components/border-radius-control/index.js +2 -2
  65. package/build/components/border-radius-control/index.js.map +1 -1
  66. package/build/components/border-radius-control/utils.js +10 -6
  67. package/build/components/border-radius-control/utils.js.map +1 -1
  68. package/build/components/contrast-checker/index.js +3 -3
  69. package/build/components/contrast-checker/index.js.map +1 -1
  70. package/build/components/convert-to-group-buttons/index.js +1 -1
  71. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  72. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
  73. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  74. package/build/components/copy-handler/index.js +3 -3
  75. package/build/components/copy-handler/index.js.map +1 -1
  76. package/build/components/font-sizes/with-font-sizes.js +3 -3
  77. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  78. package/build/components/index.native.js +29 -1
  79. package/build/components/index.native.js.map +1 -1
  80. package/build/components/inserter/block-patterns-tab.js +1 -1
  81. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  82. package/build/components/inserter/block-types-tab.js +1 -1
  83. package/build/components/inserter/block-types-tab.js.map +1 -1
  84. package/build/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  85. package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  86. package/build/components/inserter/index.js +3 -3
  87. package/build/components/inserter/index.js.map +1 -1
  88. package/build/components/inserter/index.native.js +7 -7
  89. package/build/components/inserter/index.native.js.map +1 -1
  90. package/build/components/inserter/menu.js.map +1 -1
  91. package/build/components/inserter/menu.native.js +3 -3
  92. package/build/components/inserter/menu.native.js.map +1 -1
  93. package/build/components/inserter/quick-inserter.js +1 -1
  94. package/build/components/inserter/quick-inserter.js.map +1 -1
  95. package/build/components/inserter/search-items.js +1 -1
  96. package/build/components/inserter/search-items.js.map +1 -1
  97. package/build/components/inserter/search-results.js +1 -1
  98. package/build/components/inserter/search-results.js.map +1 -1
  99. package/build/components/keyboard-shortcuts/index.js +1 -1
  100. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  101. package/build/components/letter-spacing-control/index.js +3 -3
  102. package/build/components/letter-spacing-control/index.js.map +1 -1
  103. package/build/components/line-height-control/index.js +4 -4
  104. package/build/components/line-height-control/index.js.map +1 -1
  105. package/build/components/line-height-control/index.native.js +3 -1
  106. package/build/components/line-height-control/index.native.js.map +1 -1
  107. package/build/components/link-control/index.js +2 -2
  108. package/build/components/link-control/index.js.map +1 -1
  109. package/build/components/link-control/search-input.js +1 -1
  110. package/build/components/link-control/search-input.js.map +1 -1
  111. package/build/components/link-control/search-results.js +2 -2
  112. package/build/components/link-control/search-results.js.map +1 -1
  113. package/build/components/link-control/use-rich-url-data.js +1 -1
  114. package/build/components/link-control/use-rich-url-data.js.map +1 -1
  115. package/build/components/link-control/use-search-handler.js +2 -2
  116. package/build/components/link-control/use-search-handler.js.map +1 -1
  117. package/build/components/list-view/block-select-button.js +2 -1
  118. package/build/components/list-view/block-select-button.js.map +1 -1
  119. package/build/components/list-view/block.js +1 -1
  120. package/build/components/list-view/block.js.map +1 -1
  121. package/build/components/media-placeholder/index.native.js +7 -5
  122. package/build/components/media-placeholder/index.native.js.map +1 -1
  123. package/build/components/media-replace-flow/index.js +20 -24
  124. package/build/components/media-replace-flow/index.js.map +1 -1
  125. package/build/components/media-upload/index.native.js +4 -3
  126. package/build/components/media-upload/index.native.js.map +1 -1
  127. package/build/components/media-upload-progress/index.native.js +1 -1
  128. package/build/components/media-upload-progress/index.native.js.map +1 -1
  129. package/build/components/navigable-toolbar/index.js +3 -3
  130. package/build/components/navigable-toolbar/index.js.map +1 -1
  131. package/build/components/plain-text/index.native.js +3 -3
  132. package/build/components/plain-text/index.native.js.map +1 -1
  133. package/build/components/rich-text/format-toolbar-container.js +2 -2
  134. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  135. package/build/components/rich-text/format-toolbar-container.native.js +1 -1
  136. package/build/components/rich-text/format-toolbar-container.native.js.map +1 -1
  137. package/build/components/rich-text/index.native.js +3 -3
  138. package/build/components/rich-text/index.native.js.map +1 -1
  139. package/build/components/rich-text/use-paste-handler.js +7 -11
  140. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  141. package/build/components/url-input/index.js +11 -11
  142. package/build/components/url-input/index.js.map +1 -1
  143. package/build/components/use-moving-animation/index.js +1 -1
  144. package/build/components/use-moving-animation/index.js.map +1 -1
  145. package/build/components/use-on-block-drop/index.js +2 -2
  146. package/build/components/use-on-block-drop/index.js.map +1 -1
  147. package/build/components/writing-flow/use-tab-nav.js +4 -3
  148. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  149. package/build/hooks/align.js +1 -1
  150. package/build/hooks/align.js.map +1 -1
  151. package/build/hooks/anchor.js +1 -1
  152. package/build/hooks/anchor.js.map +1 -1
  153. package/build/hooks/border.js +2 -14
  154. package/build/hooks/border.js.map +1 -1
  155. package/build/hooks/color.js +2 -2
  156. package/build/hooks/color.js.map +1 -1
  157. package/build/hooks/generated-class-name.js +3 -3
  158. package/build/hooks/generated-class-name.js.map +1 -1
  159. package/build/hooks/lock.js +1 -1
  160. package/build/hooks/lock.js.map +1 -1
  161. package/build/hooks/style.js +5 -2
  162. package/build/hooks/style.js.map +1 -1
  163. package/build/store/actions.js +4 -4
  164. package/build/store/actions.js.map +1 -1
  165. package/build/store/defaults.js +1 -1
  166. package/build/store/defaults.js.map +1 -1
  167. package/build/store/reducer.js +11 -11
  168. package/build/store/reducer.js.map +1 -1
  169. package/build/store/selectors.js +6 -6
  170. package/build/store/selectors.js.map +1 -1
  171. package/build/utils/parse-css-unit-to-px.js +3 -3
  172. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  173. package/build/utils/pasting.js +91 -0
  174. package/build/utils/pasting.js.map +1 -0
  175. package/build/utils/transform-styles/ast/parse.js +5 -5
  176. package/build/utils/transform-styles/ast/parse.js.map +1 -1
  177. package/build/utils/transform-styles/transforms/url-rewrite.js +2 -2
  178. package/build/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
  179. package/build-module/autocompleters/link.js +64 -0
  180. package/build-module/autocompleters/link.js.map +1 -0
  181. package/build-module/components/autocomplete/index.js +2 -1
  182. package/build-module/components/autocomplete/index.js.map +1 -1
  183. package/build-module/components/block-actions/index.js +1 -1
  184. package/build-module/components/block-actions/index.js.map +1 -1
  185. package/build-module/components/block-breadcrumb/index.js +4 -2
  186. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  187. package/build-module/components/block-compare/index.js +2 -2
  188. package/build-module/components/block-compare/index.js.map +1 -1
  189. package/build-module/components/block-controls/index.js +1 -1
  190. package/build-module/components/block-controls/index.js.map +1 -1
  191. package/build-module/components/block-draggable/index.js +1 -1
  192. package/build-module/components/block-draggable/index.js.map +1 -1
  193. package/build-module/components/block-edit/edit.js +1 -1
  194. package/build-module/components/block-edit/edit.js.map +1 -1
  195. package/build-module/components/block-list/block-html.js +1 -1
  196. package/build-module/components/block-list/block-html.js.map +1 -1
  197. package/build-module/components/block-list/block-invalid-warning.js +1 -1
  198. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  199. package/build-module/components/block-list/block-list-item.native.js +4 -4
  200. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  201. package/build-module/components/block-list/block-selection-button.native.js +4 -3
  202. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  203. package/build-module/components/block-list/block.js +1 -1
  204. package/build-module/components/block-list/block.js.map +1 -1
  205. package/build-module/components/block-list/block.native.js +5 -5
  206. package/build-module/components/block-list/block.native.js.map +1 -1
  207. package/build-module/components/block-list/index.native.js +5 -5
  208. package/build-module/components/block-list/index.native.js.map +1 -1
  209. package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -1
  210. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
  211. package/build-module/components/block-media-update-progress/index.native.js +4 -4
  212. package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
  213. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  214. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  215. package/build-module/components/block-mobile-toolbar/index.native.js +1 -1
  216. package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
  217. package/build-module/components/block-mover/mover-description.js +4 -4
  218. package/build-module/components/block-mover/mover-description.js.map +1 -1
  219. package/build-module/components/block-mover/mover-description.native.js +5 -5
  220. package/build-module/components/block-mover/mover-description.native.js.map +1 -1
  221. package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -13
  222. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  223. package/build-module/components/block-styles/preview.native.js +1 -1
  224. package/build-module/components/block-styles/preview.native.js.map +1 -1
  225. package/build-module/components/block-switcher/index.js +2 -1
  226. package/build-module/components/block-switcher/index.js.map +1 -1
  227. package/build-module/components/block-switcher/use-transformed-patterns.js +0 -1
  228. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  229. package/build-module/components/block-title/index.js +7 -58
  230. package/build-module/components/block-title/index.js.map +1 -1
  231. package/build-module/components/block-title/use-block-display-title.js +80 -0
  232. package/build-module/components/block-title/use-block-display-title.js.map +1 -0
  233. package/build-module/components/block-toolbar/utils.js +9 -1
  234. package/build-module/components/block-toolbar/utils.js.map +1 -1
  235. package/build-module/components/block-tools/block-popover.js +1 -1
  236. package/build-module/components/block-tools/block-popover.js.map +1 -1
  237. package/build-module/components/block-tools/block-selection-button.js +2 -1
  238. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  239. package/build-module/components/block-types-list/index.native.js +1 -1
  240. package/build-module/components/block-types-list/index.native.js.map +1 -1
  241. package/build-module/components/border-radius-control/index.js +3 -3
  242. package/build-module/components/border-radius-control/index.js.map +1 -1
  243. package/build-module/components/border-radius-control/utils.js +11 -7
  244. package/build-module/components/border-radius-control/utils.js.map +1 -1
  245. package/build-module/components/contrast-checker/index.js +3 -3
  246. package/build-module/components/contrast-checker/index.js.map +1 -1
  247. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  248. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  249. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -3
  250. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  251. package/build-module/components/copy-handler/index.js +2 -2
  252. package/build-module/components/copy-handler/index.js.map +1 -1
  253. package/build-module/components/font-sizes/with-font-sizes.js +3 -3
  254. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  255. package/build-module/components/index.native.js +4 -4
  256. package/build-module/components/index.native.js.map +1 -1
  257. package/build-module/components/inserter/block-patterns-tab.js +1 -1
  258. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  259. package/build-module/components/inserter/block-types-tab.js +1 -1
  260. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  261. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  262. package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
  263. package/build-module/components/inserter/index.js +3 -3
  264. package/build-module/components/inserter/index.js.map +1 -1
  265. package/build-module/components/inserter/index.native.js +7 -7
  266. package/build-module/components/inserter/index.native.js.map +1 -1
  267. package/build-module/components/inserter/menu.js.map +1 -1
  268. package/build-module/components/inserter/menu.native.js +3 -3
  269. package/build-module/components/inserter/menu.native.js.map +1 -1
  270. package/build-module/components/inserter/quick-inserter.js +1 -1
  271. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  272. package/build-module/components/inserter/search-items.js +1 -1
  273. package/build-module/components/inserter/search-items.js.map +1 -1
  274. package/build-module/components/inserter/search-results.js +1 -1
  275. package/build-module/components/inserter/search-results.js.map +1 -1
  276. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  277. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  278. package/build-module/components/letter-spacing-control/index.js +3 -3
  279. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  280. package/build-module/components/line-height-control/index.js +4 -4
  281. package/build-module/components/line-height-control/index.js.map +1 -1
  282. package/build-module/components/line-height-control/index.native.js +3 -1
  283. package/build-module/components/line-height-control/index.native.js.map +1 -1
  284. package/build-module/components/link-control/index.js +2 -2
  285. package/build-module/components/link-control/index.js.map +1 -1
  286. package/build-module/components/link-control/search-input.js +1 -1
  287. package/build-module/components/link-control/search-input.js.map +1 -1
  288. package/build-module/components/link-control/search-results.js +2 -2
  289. package/build-module/components/link-control/search-results.js.map +1 -1
  290. package/build-module/components/link-control/use-rich-url-data.js +1 -1
  291. package/build-module/components/link-control/use-rich-url-data.js.map +1 -1
  292. package/build-module/components/link-control/use-search-handler.js +2 -2
  293. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  294. package/build-module/components/list-view/block-select-button.js +2 -1
  295. package/build-module/components/list-view/block-select-button.js.map +1 -1
  296. package/build-module/components/list-view/block.js +1 -1
  297. package/build-module/components/list-view/block.js.map +1 -1
  298. package/build-module/components/media-placeholder/index.native.js +7 -5
  299. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  300. package/build-module/components/media-replace-flow/index.js +22 -27
  301. package/build-module/components/media-replace-flow/index.js.map +1 -1
  302. package/build-module/components/media-upload/index.native.js +4 -3
  303. package/build-module/components/media-upload/index.native.js.map +1 -1
  304. package/build-module/components/media-upload-progress/index.native.js +1 -1
  305. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  306. package/build-module/components/navigable-toolbar/index.js +3 -3
  307. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  308. package/build-module/components/plain-text/index.native.js +3 -3
  309. package/build-module/components/plain-text/index.native.js.map +1 -1
  310. package/build-module/components/rich-text/format-toolbar-container.js +2 -2
  311. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  312. package/build-module/components/rich-text/format-toolbar-container.native.js +1 -1
  313. package/build-module/components/rich-text/format-toolbar-container.native.js.map +1 -1
  314. package/build-module/components/rich-text/index.native.js +3 -3
  315. package/build-module/components/rich-text/index.native.js.map +1 -1
  316. package/build-module/components/rich-text/use-paste-handler.js +6 -11
  317. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  318. package/build-module/components/url-input/index.js +11 -11
  319. package/build-module/components/url-input/index.js.map +1 -1
  320. package/build-module/components/use-moving-animation/index.js +1 -1
  321. package/build-module/components/use-moving-animation/index.js.map +1 -1
  322. package/build-module/components/use-on-block-drop/index.js +2 -2
  323. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  324. package/build-module/components/writing-flow/use-tab-nav.js +4 -3
  325. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  326. package/build-module/hooks/align.js +1 -1
  327. package/build-module/hooks/align.js.map +1 -1
  328. package/build-module/hooks/anchor.js +1 -1
  329. package/build-module/hooks/anchor.js.map +1 -1
  330. package/build-module/hooks/border.js +2 -14
  331. package/build-module/hooks/border.js.map +1 -1
  332. package/build-module/hooks/color.js +2 -2
  333. package/build-module/hooks/color.js.map +1 -1
  334. package/build-module/hooks/generated-class-name.js +3 -3
  335. package/build-module/hooks/generated-class-name.js.map +1 -1
  336. package/build-module/hooks/lock.js +1 -1
  337. package/build-module/hooks/lock.js.map +1 -1
  338. package/build-module/hooks/style.js +5 -2
  339. package/build-module/hooks/style.js.map +1 -1
  340. package/build-module/store/actions.js +4 -4
  341. package/build-module/store/actions.js.map +1 -1
  342. package/build-module/store/defaults.js +1 -1
  343. package/build-module/store/defaults.js.map +1 -1
  344. package/build-module/store/reducer.js +11 -11
  345. package/build-module/store/reducer.js.map +1 -1
  346. package/build-module/store/selectors.js +6 -6
  347. package/build-module/store/selectors.js.map +1 -1
  348. package/build-module/utils/parse-css-unit-to-px.js +3 -3
  349. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  350. package/build-module/utils/pasting.js +80 -0
  351. package/build-module/utils/pasting.js.map +1 -0
  352. package/build-module/utils/transform-styles/ast/parse.js +5 -5
  353. package/build-module/utils/transform-styles/ast/parse.js.map +1 -1
  354. package/build-module/utils/transform-styles/transforms/url-rewrite.js +2 -2
  355. package/build-module/utils/transform-styles/transforms/url-rewrite.js.map +1 -1
  356. package/build-style/style-rtl.css +7 -0
  357. package/build-style/style.css +7 -0
  358. package/package.json +27 -27
  359. package/src/autocompleters/link.js +62 -0
  360. package/src/autocompleters/style.scss +8 -0
  361. package/src/components/alignment-control/test/index.js +2 -2
  362. package/src/components/autocomplete/index.js +2 -0
  363. package/src/components/block-actions/index.js +1 -1
  364. package/src/components/block-alignment-control/test/index.js +1 -1
  365. package/src/components/block-breadcrumb/index.js +5 -2
  366. package/src/components/block-compare/index.js +2 -2
  367. package/src/components/block-controls/index.js +1 -1
  368. package/src/components/block-draggable/index.js +1 -1
  369. package/src/components/block-draggable/stories/index.js +1 -1
  370. package/src/components/block-edit/edit.js +1 -1
  371. package/src/components/block-list/block-html.js +1 -1
  372. package/src/components/block-list/block-invalid-warning.js +1 -1
  373. package/src/components/block-list/block-list-item.native.js +4 -4
  374. package/src/components/block-list/block-selection-button.native.js +3 -3
  375. package/src/components/block-list/block.js +1 -1
  376. package/src/components/block-list/block.native.js +5 -5
  377. package/src/components/block-list/index.native.js +5 -5
  378. package/src/components/block-list/use-block-props/use-block-class-names.js +1 -1
  379. package/src/components/block-media-update-progress/index.native.js +4 -4
  380. package/src/components/block-media-update-progress/test/index.native.js +2 -2
  381. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  382. package/src/components/block-mobile-toolbar/index.native.js +2 -2
  383. package/src/components/block-mover/mover-description.js +4 -4
  384. package/src/components/block-mover/mover-description.native.js +5 -5
  385. package/src/components/block-settings-menu/block-settings-dropdown.js +7 -8
  386. package/src/components/block-styles/preview.native.js +1 -1
  387. package/src/components/block-switcher/index.js +4 -1
  388. package/src/components/block-switcher/use-transformed-patterns.js +0 -1
  389. package/src/components/block-title/README.md +17 -1
  390. package/src/components/block-title/index.js +7 -62
  391. package/src/components/block-title/test/index.js +21 -3
  392. package/src/components/block-title/use-block-display-title.js +83 -0
  393. package/src/components/block-toolbar/utils.js +12 -2
  394. package/src/components/block-tools/block-popover.js +1 -1
  395. package/src/components/block-tools/block-selection-button.js +4 -1
  396. package/src/components/block-types-list/index.native.js +1 -1
  397. package/src/components/border-radius-control/index.js +5 -3
  398. package/src/components/border-radius-control/test/utils.js +10 -10
  399. package/src/components/border-radius-control/utils.js +10 -8
  400. package/src/components/contrast-checker/index.js +3 -3
  401. package/src/components/convert-to-group-buttons/index.js +1 -1
  402. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +1 -6
  403. package/src/components/copy-handler/index.js +2 -2
  404. package/src/components/font-sizes/with-font-sizes.js +3 -3
  405. package/src/components/image-size-control/test/index.js +1 -1
  406. package/src/components/index.native.js +10 -4
  407. package/src/components/inserter/block-patterns-tab.js +1 -1
  408. package/src/components/inserter/block-types-tab.js +1 -1
  409. package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -2
  410. package/src/components/inserter/index.js +3 -3
  411. package/src/components/inserter/index.native.js +7 -7
  412. package/src/components/inserter/menu.js +1 -1
  413. package/src/components/inserter/menu.native.js +3 -3
  414. package/src/components/inserter/quick-inserter.js +1 -1
  415. package/src/components/inserter/search-items.js +1 -1
  416. package/src/components/inserter/search-results.js +1 -1
  417. package/src/components/inserter/test/fixtures/index.native.js +1 -1
  418. package/src/components/inserter/test/reusable-blocks-tab.js +2 -2
  419. package/src/components/justify-content-control/README.md +1 -1
  420. package/src/components/keyboard-shortcuts/index.js +1 -1
  421. package/src/components/letter-spacing-control/index.js +1 -1
  422. package/src/components/line-height-control/index.js +4 -4
  423. package/src/components/line-height-control/index.native.js +2 -0
  424. package/src/components/link-control/index.js +2 -2
  425. package/src/components/link-control/search-input.js +1 -1
  426. package/src/components/link-control/search-results.js +2 -2
  427. package/src/components/link-control/test/index.js +142 -144
  428. package/src/components/link-control/use-rich-url-data.js +1 -1
  429. package/src/components/link-control/use-search-handler.js +2 -2
  430. package/src/components/list-view/block-select-button.js +1 -1
  431. package/src/components/list-view/block.js +1 -1
  432. package/src/components/media-placeholder/index.native.js +11 -9
  433. package/src/components/media-replace-flow/README.md +7 -0
  434. package/src/components/media-replace-flow/index.js +20 -26
  435. package/src/components/media-replace-flow/test/index.js +100 -0
  436. package/src/components/media-upload/index.native.js +3 -2
  437. package/src/components/media-upload-progress/index.native.js +1 -1
  438. package/src/components/navigable-toolbar/index.js +3 -3
  439. package/src/components/plain-text/index.native.js +3 -3
  440. package/src/components/responsive-block-control/test/index.js +6 -6
  441. package/src/components/rich-text/format-toolbar-container.js +2 -2
  442. package/src/components/rich-text/format-toolbar-container.native.js +1 -1
  443. package/src/components/rich-text/index.native.js +3 -3
  444. package/src/components/rich-text/use-paste-handler.js +7 -13
  445. package/src/components/url-input/index.js +11 -11
  446. package/src/components/use-block-drop-zone/test/index.js +1 -1
  447. package/src/components/use-moving-animation/index.js +1 -1
  448. package/src/components/use-on-block-drop/index.js +2 -2
  449. package/src/components/writing-flow/use-tab-nav.js +6 -3
  450. package/src/hooks/align.js +1 -1
  451. package/src/hooks/anchor.js +1 -1
  452. package/src/hooks/border.js +8 -19
  453. package/src/hooks/color.js +2 -2
  454. package/src/hooks/generated-class-name.js +3 -3
  455. package/src/hooks/lock.js +1 -1
  456. package/src/hooks/style.js +5 -2
  457. package/src/hooks/test/align.js +1 -1
  458. package/src/store/actions.js +4 -4
  459. package/src/store/defaults.js +1 -2
  460. package/src/store/reducer.js +11 -11
  461. package/src/store/selectors.js +6 -6
  462. package/src/store/test/actions.js +1 -1
  463. package/src/store/test/reducer.js +1 -1
  464. package/src/store/test/selectors.js +1 -1
  465. package/src/utils/parse-css-unit-to-px.js +3 -3
  466. package/src/utils/pasting.js +77 -0
  467. package/src/utils/test/parse-css-unit-to-px.js +5 -5
  468. package/src/utils/test/pasting.js +84 -0
  469. package/src/utils/transform-styles/ast/parse.js +5 -5
  470. package/src/utils/transform-styles/transforms/url-rewrite.js +2 -2
  471. package/build/utils/get-paste-event-data.js +0 -56
  472. package/build/utils/get-paste-event-data.js.map +0 -1
  473. package/build-module/utils/get-paste-event-data.js +0 -47
  474. package/build-module/utils/get-paste-event-data.js.map +0 -1
  475. package/src/utils/get-paste-event-data.js +0 -42
@@ -80,7 +80,7 @@ function useRemoteUrlData( url ) {
80
80
  } );
81
81
  }
82
82
  } );
83
- // Cleanup: when the URL changes the abort the current request
83
+ // Cleanup: when the URL changes the abort the current request.
84
84
  return () => {
85
85
  controller.abort();
86
86
  };
@@ -115,8 +115,8 @@ const handleEntitySearch = async (
115
115
  // the `id` prop is intentionally ommitted here because it
116
116
  // is never exposed as part of the component's public API.
117
117
  // see: https://github.com/WordPress/gutenberg/pull/19775#discussion_r378931316.
118
- title: val, // must match the existing `<input>`s text value
119
- url: val, // must match the existing `<input>`s text value
118
+ title: val, // Must match the existing `<input>`s text value.
119
+ url: val, // Must match the existing `<input>`s text value.
120
120
  type: CREATE_TYPE,
121
121
  } );
122
122
  };
@@ -85,7 +85,7 @@ function ListViewBlockSelectButton(
85
85
  >
86
86
  <ListViewExpander onClick={ onToggleExpanded } />
87
87
  <BlockIcon icon={ blockInformation?.icon } showColors />
88
- <BlockTitle clientId={ clientId } />
88
+ <BlockTitle clientId={ clientId } maximumLength={ 35 } />
89
89
  { blockInformation?.anchor && (
90
90
  <span className="block-editor-list-view-block-select-button__anchor">
91
91
  { blockInformation.anchor }
@@ -133,7 +133,7 @@ function ListViewBlock( {
133
133
 
134
134
  const showBlockActions =
135
135
  withExperimentalFeatures &&
136
- //hide actions for blocks like core/widget-areas
136
+ // hide actions for blocks like core/widget-areas
137
137
  ( ! hideContainerBlockActions ||
138
138
  ( hideContainerBlockActions && level > 1 ) );
139
139
 
@@ -23,7 +23,7 @@ import { Icon, plusCircleFilled } from '@wordpress/icons';
23
23
  */
24
24
  import styles from './styles.scss';
25
25
 
26
- // remove duplicates after gallery append
26
+ // Remove duplicates after gallery append.
27
27
  const dedupMedia = ( media ) =>
28
28
  uniqWith(
29
29
  media,
@@ -53,11 +53,11 @@ function MediaPlaceholder( props ) {
53
53
  onSelectURL,
54
54
  } = props;
55
55
 
56
- // use ref to keep media array current for callbacks during rerenders
56
+ // Use ref to keep media array current for callbacks during rerenders.
57
57
  const mediaRef = useRef( value );
58
58
  mediaRef.current = value;
59
59
 
60
- // append and deduplicate media array for gallery use case
60
+ // Append and deduplicate media array for gallery use case.
61
61
  const setMedia =
62
62
  multiple && addToGallery
63
63
  ? ( selected ) =>
@@ -130,12 +130,14 @@ function MediaPlaceholder( props ) {
130
130
  );
131
131
  } else if ( isAppender && ! disableMediaButtons ) {
132
132
  return (
133
- <Icon
134
- icon={ plusCircleFilled }
135
- style={ addMediaButtonStyle }
136
- color={ addMediaButtonStyle.color }
137
- size={ addMediaButtonStyle.size }
138
- />
133
+ <View testID="media-placeholder-appender-icon">
134
+ <Icon
135
+ icon={ plusCircleFilled }
136
+ style={ addMediaButtonStyle }
137
+ color={ addMediaButtonStyle.color }
138
+ size={ addMediaButtonStyle.size }
139
+ />
140
+ </View>
139
141
  );
140
142
  }
141
143
  };
@@ -56,6 +56,13 @@ Callback used when media is replaced with an URL. It is called with one argument
56
56
  - Type: `func`
57
57
  - Required: Yes
58
58
 
59
+ ### onError
60
+
61
+ Callback called when an upload error happens and receives an error message as an argument.
62
+
63
+ - Type: `func`
64
+ - Required: No
65
+
59
66
  ### name
60
67
 
61
68
  The label of the replace button.
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { uniqueId, noop } from 'lodash';
4
+ import { noop, uniqueId } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { useState, createRef, renderToString } from '@wordpress/element';
9
+ import { useState, useRef } from '@wordpress/element';
10
10
  import { __ } from '@wordpress/i18n';
11
11
  import { speak } from '@wordpress/a11y';
12
12
  import {
@@ -17,10 +17,11 @@ import {
17
17
  Dropdown,
18
18
  withFilters,
19
19
  } from '@wordpress/components';
20
- import { withDispatch, useSelect } from '@wordpress/data';
20
+ import { useSelect, withDispatch } from '@wordpress/data';
21
21
  import { DOWN } from '@wordpress/keycodes';
22
- import { compose } from '@wordpress/compose';
23
22
  import { upload, media as mediaIcon } from '@wordpress/icons';
23
+ import { compose } from '@wordpress/compose';
24
+ import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
24
25
  import { store as noticesStore } from '@wordpress/notices';
25
26
 
26
27
  /**
@@ -37,6 +38,7 @@ const MediaReplaceFlow = ( {
37
38
  mediaIds,
38
39
  allowedTypes,
39
40
  accept,
41
+ onError,
40
42
  onSelect,
41
43
  onSelectURL,
42
44
  onFilesUpload = noop,
@@ -53,20 +55,17 @@ const MediaReplaceFlow = ( {
53
55
  const mediaUpload = useSelect( ( select ) => {
54
56
  return select( blockEditorStore ).getSettings().mediaUpload;
55
57
  }, [] );
56
- const editMediaButtonRef = createRef();
58
+ const editMediaButtonRef = useRef();
57
59
  const errorNoticeID = uniqueId(
58
60
  'block-editor/media-replace-flow/error-notice/'
59
61
  );
60
62
 
61
- const onError = ( message ) => {
62
- const errorElement = document.createElement( 'div' );
63
- errorElement.innerHTML = renderToString( message );
64
- // The default error contains some HTML that,
65
- // for example, makes the filename bold.
66
- // The notice, by default, accepts strings only and so
67
- // we need to remove the html from the error.
68
- const renderMsg =
69
- errorElement.textContent || errorElement.innerText || '';
63
+ const onUploadError = ( message ) => {
64
+ const safeMessage = stripHTML( message );
65
+ if ( onError ) {
66
+ onError( safeMessage );
67
+ return;
68
+ }
70
69
  // We need to set a timeout for showing the notice
71
70
  // so that VoiceOver and possibly other screen readers
72
71
  // can announce the error afer the toolbar button
@@ -74,7 +73,7 @@ const MediaReplaceFlow = ( {
74
73
  // Otherwise VO simply skips over the notice and announces
75
74
  // the focused element and the open menu.
76
75
  setTimeout( () => {
77
- createNotice( 'error', renderMsg, {
76
+ createNotice( 'error', safeMessage, {
78
77
  speak: true,
79
78
  id: errorNoticeID,
80
79
  isDismissible: true,
@@ -84,17 +83,13 @@ const MediaReplaceFlow = ( {
84
83
 
85
84
  const selectMedia = ( media, closeMenu ) => {
86
85
  closeMenu();
87
- setMediaURLValue( media.url );
86
+ setMediaURLValue( media?.url );
88
87
  // Calling `onSelect` after the state update since it might unmount the component.
89
88
  onSelect( media );
90
89
  speak( __( 'The media file has been replaced' ) );
91
90
  removeNotice( errorNoticeID );
92
91
  };
93
92
 
94
- const selectURL = ( newURL ) => {
95
- onSelectURL( newURL );
96
- };
97
-
98
93
  const uploadFiles = ( event, closeMenu ) => {
99
94
  const files = event.target.files;
100
95
  if ( ! handleUpload ) {
@@ -102,14 +97,13 @@ const MediaReplaceFlow = ( {
102
97
  return onSelect( files );
103
98
  }
104
99
  onFilesUpload( files );
105
- const setMedia = ( [ media ] ) => {
106
- selectMedia( media, closeMenu );
107
- };
108
100
  mediaUpload( {
109
101
  allowedTypes,
110
102
  filesList: files,
111
- onFileChange: setMedia,
112
- onError,
103
+ onFileChange: ( [ media ] ) => {
104
+ selectMedia( media, closeMenu );
105
+ },
106
+ onError: onUploadError,
113
107
  } );
114
108
  };
115
109
 
@@ -206,7 +200,7 @@ const MediaReplaceFlow = ( {
206
200
  showSuggestions={ false }
207
201
  onChange={ ( { url } ) => {
208
202
  setMediaURLValue( url );
209
- selectURL( url );
203
+ onSelectURL( url );
210
204
  editMediaButtonRef.current.focus();
211
205
  } }
212
206
  />
@@ -0,0 +1,100 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render, fireEvent } from '@testing-library/react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import MediaReplaceFlow from '../';
10
+
11
+ const noop = () => {};
12
+
13
+ function setUpMediaReplaceFlow() {
14
+ const { container } = render(
15
+ <MediaReplaceFlow
16
+ mediaId={ 1 }
17
+ mediaURL={ 'https://example.media' }
18
+ allowedTypes={ [ 'png' ] }
19
+ accept="image/*"
20
+ onSelect={ noop }
21
+ onSelectURL={ noop }
22
+ onError={ noop }
23
+ onCloseModal={ noop }
24
+ />
25
+ );
26
+ return container;
27
+ }
28
+
29
+ describe( 'General media replace flow', () => {
30
+ it( 'renders successfully', () => {
31
+ const container = setUpMediaReplaceFlow();
32
+
33
+ const mediaReplaceButton = container.querySelector(
34
+ 'button[aria-expanded="false"]'
35
+ );
36
+
37
+ expect( mediaReplaceButton ).not.toBeNull();
38
+ } );
39
+
40
+ it( 'renders replace menu', () => {
41
+ const container = setUpMediaReplaceFlow();
42
+
43
+ const mediaReplaceButton = container.querySelector(
44
+ 'button[aria-expanded="false"]'
45
+ );
46
+ mediaReplaceButton.click();
47
+
48
+ const uploadMenu = container.querySelector(
49
+ '.block-editor-media-replace-flow__media-upload-menu'
50
+ );
51
+
52
+ expect( uploadMenu ).not.toBeNull();
53
+ } );
54
+
55
+ it( 'displays media URL', () => {
56
+ const container = setUpMediaReplaceFlow();
57
+
58
+ const mediaReplaceButton = container.querySelector(
59
+ 'button[aria-expanded="false"]'
60
+ );
61
+ mediaReplaceButton.click();
62
+
63
+ const mediaURL = container.querySelector( '.components-external-link' );
64
+
65
+ expect( mediaURL.href ).toEqual( 'https://example.media/' );
66
+ } );
67
+
68
+ it( 'edits media URL', () => {
69
+ const container = setUpMediaReplaceFlow();
70
+
71
+ const mediaReplaceButton = container.querySelector(
72
+ 'button[aria-expanded="false"]'
73
+ );
74
+ mediaReplaceButton.click();
75
+
76
+ const editMediaURL = container.querySelector(
77
+ '.block-editor-link-control__search-item-action'
78
+ );
79
+
80
+ editMediaURL.click();
81
+
82
+ const mediaURLInput = container.querySelector(
83
+ '.block-editor-url-input__input'
84
+ );
85
+
86
+ fireEvent.change( mediaURLInput, {
87
+ target: { value: 'https://new.example.media' },
88
+ } );
89
+
90
+ const saveMediaURLButton = container.querySelector(
91
+ '.block-editor-link-control__search-submit'
92
+ );
93
+
94
+ saveMediaURLButton.click();
95
+
96
+ const mediaURL = container.querySelector( '.components-external-link' );
97
+
98
+ expect( mediaURL.href ).toEqual( 'https://new.example.media/' );
99
+ } );
100
+ } );
@@ -79,7 +79,7 @@ export class MediaUpload extends Component {
79
79
 
80
80
  getAllSources() {
81
81
  const cameraImageSource = {
82
- id: mediaSources.deviceCamera, // ID is the value sent to native
82
+ id: mediaSources.deviceCamera, // ID is the value sent to native.
83
83
  value: mediaSources.deviceCamera + '-IMAGE', // This is needed to diferenciate image-camera from video-camera sources.
84
84
  label: __( 'Take a Photo' ),
85
85
  requiresModal: true,
@@ -216,7 +216,7 @@ export class MediaUpload extends Component {
216
216
  text: __( 'Apply' ),
217
217
  onPress: onSelectURL,
218
218
  },
219
- ], // buttons
219
+ ], // Buttons.
220
220
  'plain-text', // type
221
221
  undefined, // defaultValue
222
222
  'url' // keyboardType
@@ -294,6 +294,7 @@ export class MediaUpload extends Component {
294
294
  ref={ ( instance ) => ( this.picker = instance ) }
295
295
  options={ this.getMediaOptionsItems() }
296
296
  onChange={ this.onPickerSelect }
297
+ testID="media-options-picker"
297
298
  />
298
299
  );
299
300
 
@@ -98,7 +98,7 @@ export class MediaUploadProgress extends Component {
98
98
  }
99
99
 
100
100
  addMediaUploadListener() {
101
- //if we already have a subscription not worth doing it again
101
+ // If we already have a subscription not worth doing it again.
102
102
  if ( this.subscriptionParentMediaUpload ) {
103
103
  return;
104
104
  }
@@ -73,7 +73,7 @@ function useIsAccessibleToolbar( ref ) {
73
73
 
74
74
  useLayoutEffect( () => {
75
75
  // Toolbar buttons may be rendered asynchronously, so we use
76
- // MutationObserver to check if the toolbar subtree has been modified
76
+ // MutationObserver to check if the toolbar subtree has been modified.
77
77
  const observer = new window.MutationObserver(
78
78
  determineIsAccessibleToolbar
79
79
  );
@@ -91,7 +91,7 @@ function useToolbarFocus(
91
91
  defaultIndex,
92
92
  onIndexChange
93
93
  ) {
94
- // Make sure we don't use modified versions of this prop
94
+ // Make sure we don't use modified versions of this prop.
95
95
  const [ initialFocusOnMount ] = useState( focusOnMount );
96
96
  const [ initialIndex ] = useState( defaultIndex );
97
97
 
@@ -99,7 +99,7 @@ function useToolbarFocus(
99
99
  focusFirstTabbableIn( ref.current );
100
100
  }, [] );
101
101
 
102
- // Focus on toolbar when pressing alt+F10 when the toolbar is visible
102
+ // Focus on toolbar when pressing alt+F10 when the toolbar is visible.
103
103
  useShortcut( 'core/block-editor/focus-toolbar', focusToolbar );
104
104
 
105
105
  useEffect( () => {
@@ -21,7 +21,7 @@ export default class PlainText extends Component {
21
21
  }
22
22
 
23
23
  componentDidMount() {
24
- // if isSelected is true, we should request the focus on this TextInput
24
+ // If isSelected is true, we should request the focus on this TextInput.
25
25
  if (
26
26
  this._input &&
27
27
  this._input.isFocused() === false &&
@@ -93,8 +93,8 @@ export default class PlainText extends Component {
93
93
  onChange={ ( event ) => {
94
94
  this.props.onChange( event.nativeEvent.text );
95
95
  } }
96
- onFocus={ this.props.onFocus } // always assign onFocus as a props
97
- onBlur={ this.props.onBlur } // always assign onBlur as a props
96
+ onFocus={ this.props.onFocus } // Always assign onFocus as a props.
97
+ onBlur={ this.props.onBlur } // Always assign onBlur as a props.
98
98
  fontFamily={
99
99
  ( this.props.style && this.props.style.fontFamily ) ||
100
100
  styles[ 'block-editor-plain-text' ].fontFamily
@@ -19,13 +19,13 @@ import ResponsiveBlockControl from '../index';
19
19
 
20
20
  let container = null;
21
21
  beforeEach( () => {
22
- // setup a DOM element as a render target
22
+ // Setup a DOM element as a render target.
23
23
  container = document.createElement( 'div' );
24
24
  document.body.appendChild( container );
25
25
  } );
26
26
 
27
27
  afterEach( () => {
28
- // cleanup on exiting
28
+ // Cleanup on exiting.
29
29
  unmountComponentAtNode( container );
30
30
  container.remove();
31
31
  container = null;
@@ -315,7 +315,7 @@ describe( 'Default and Responsive modes', () => {
315
315
  '.block-editor-responsive-block-control__group.is-responsive'
316
316
  );
317
317
 
318
- // Select elements based on what the user can see
318
+ // Select elements based on what the user can see.
319
319
  const toggleLabel = Array.from(
320
320
  container.querySelectorAll( 'label' )
321
321
  ).find( ( label ) =>
@@ -331,7 +331,7 @@ describe( 'Default and Responsive modes', () => {
331
331
  expect( defaultControlGroup ).not.toBeNull();
332
332
  expect( responsiveControlGroup ).toBeNull();
333
333
 
334
- // Toggle to "responsive" mode
334
+ // Toggle to "responsive" mode.
335
335
  act( () => {
336
336
  Simulate.change( toggleInput, { target: { checked: false } } );
337
337
  } );
@@ -346,7 +346,7 @@ describe( 'Default and Responsive modes', () => {
346
346
  expect( defaultControlGroup ).toBeNull();
347
347
  expect( responsiveControlGroup ).not.toBeNull();
348
348
 
349
- // Toggle back to "default" mode
349
+ // Toggle back to "default" mode.
350
350
  act( () => {
351
351
  Simulate.change( toggleInput, { target: { checked: true } } );
352
352
  } );
@@ -395,7 +395,7 @@ describe( 'Default and Responsive modes', () => {
395
395
  );
396
396
  } );
397
397
 
398
- // The user should see "range" controls so we can legitimately query for them here
398
+ // The user should see "range" controls so we can legitimately query for them here.
399
399
  const customControls = Array.from(
400
400
  container.querySelectorAll( 'input[type="range"]' )
401
401
  );
@@ -11,7 +11,7 @@ import FormatToolbar from './format-toolbar';
11
11
 
12
12
  const FormatToolbarContainer = ( { inline, anchorRef } ) => {
13
13
  if ( inline ) {
14
- // Render in popover
14
+ // Render in popover.
15
15
  return (
16
16
  <Popover
17
17
  noArrow
@@ -29,7 +29,7 @@ const FormatToolbarContainer = ( { inline, anchorRef } ) => {
29
29
  </Popover>
30
30
  );
31
31
  }
32
- // Render regular toolbar
32
+ // Render regular toolbar.
33
33
  return (
34
34
  <BlockControls group="inline">
35
35
  <FormatToolbar />
@@ -5,7 +5,7 @@ import BlockControls from '../block-controls';
5
5
  import FormatToolbar from './format-toolbar';
6
6
 
7
7
  const FormatToolbarContainer = () => {
8
- // Render regular toolbar
8
+ // Render regular toolbar.
9
9
  return (
10
10
  <BlockControls group="inline">
11
11
  <FormatToolbar />
@@ -151,7 +151,7 @@ function RichTextWrapper(
151
151
  if ( Platform.OS === 'native' ) {
152
152
  // If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.
153
153
  // In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.
154
- // This apparently assumes functionality the BlockHlder actually
154
+ // This apparently assumes functionality the BlockHlder actually.
155
155
  const block = clientId && getBlock( clientId );
156
156
  const shouldBlurOnUnmount =
157
157
  block && isSelected && isUnmodifiedDefaultBlock( block );
@@ -172,7 +172,7 @@ function RichTextWrapper(
172
172
  };
173
173
  };
174
174
  // This selector must run on every render so the right selection state is
175
- // retreived from the store on merge.
175
+ // retrieved from the store on merge.
176
176
  // To do: fix this somehow.
177
177
  const {
178
178
  isCaretWithinFormattedText,
@@ -286,7 +286,7 @@ function RichTextWrapper(
286
286
  }
287
287
 
288
288
  // If there's pasted blocks, append a block with non empty content
289
- /// after the caret. Otherwise, do append an empty block if there
289
+ // after the caret. Otherwise, do append an empty block if there
290
290
  // is no `onSplitMiddle` prop, but if there is and the content is
291
291
  // empty, the middle block is enough to set focus in.
292
292
  if (
@@ -20,6 +20,7 @@ import { isURL } from '@wordpress/url';
20
20
  import { filePasteHandler } from './file-paste-handler';
21
21
  import { addActiveFormats, isShortcode } from './utils';
22
22
  import { splitValue } from './split-value';
23
+ import { shouldDismissPastedFiles } from '../../utils/pasting';
23
24
 
24
25
  /** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */
25
26
 
@@ -154,21 +155,14 @@ export function usePasteHandler( props ) {
154
155
  return;
155
156
  }
156
157
 
157
- // Process any attached files, unless we detect Microsoft Office as
158
- // the source.
158
+ // Process any attached files, unless we infer that the files in
159
+ // question are redundant "screenshots" of the actual HTML payload,
160
+ // as created by certain office-type programs.
159
161
  //
160
- // When content is copied from Microsoft Office, an image of the
161
- // content is rendered and attached to the clipboard along with the
162
- // plain-text and HTML content. This artifact is a distraction from
163
- // the relevant clipboard data, so we ignore it.
164
- //
165
- // Props https://github.com/pubpub/pubpub/commit/2f933277a15a263a1ab4bbd36b96d3a106544aec
162
+ // @see shouldDismissPastedFiles
166
163
  if (
167
- files &&
168
- files.length &&
169
- ! html?.includes(
170
- 'xmlns:o="urn:schemas-microsoft-com:office:office'
171
- )
164
+ files?.length &&
165
+ ! shouldDismissPastedFiles( files, html, plainText )
172
166
  ) {
173
167
  const content = pasteHandler( {
174
168
  HTML: filePasteHandler( files ),
@@ -65,8 +65,8 @@ class URLInput extends Component {
65
65
  __experimentalShowInitialSuggestions = false,
66
66
  } = this.props;
67
67
 
68
- // only have to worry about scrolling selected suggestion into view
69
- // when already expanded
68
+ // Only have to worry about scrolling selected suggestion into view
69
+ // when already expanded.
70
70
  if (
71
71
  showSuggestions &&
72
72
  selectedSuggestion !== null &&
@@ -87,17 +87,17 @@ class URLInput extends Component {
87
87
  }, 100 );
88
88
  }
89
89
 
90
- // Update suggestions when the value changes
90
+ // Update suggestions when the value changes.
91
91
  if (
92
92
  prevProps.value !== value &&
93
93
  ! this.props.disableSuggestions &&
94
94
  ! this.isUpdatingSuggestions
95
95
  ) {
96
96
  if ( value?.length ) {
97
- // If the new value is not empty we need to update with suggestions for it
97
+ // If the new value is not empty we need to update with suggestions for it.
98
98
  this.updateSuggestions( value );
99
99
  } else if ( __experimentalShowInitialSuggestions ) {
100
- // If the new value is empty and we can show initial suggestions, then show initial suggestions
100
+ // If the new value is empty and we can show initial suggestions, then show initial suggestions.
101
101
  this.updateSuggestions();
102
102
  }
103
103
  }
@@ -251,7 +251,7 @@ class URLInput extends Component {
251
251
  ! this.isUpdatingSuggestions &&
252
252
  ! ( suggestions && suggestions.length )
253
253
  ) {
254
- // Ensure the suggestions are updated with the current input value
254
+ // Ensure the suggestions are updated with the current input value.
255
255
  this.updateSuggestions( value );
256
256
  }
257
257
  }
@@ -265,7 +265,7 @@ class URLInput extends Component {
265
265
  } = this.state;
266
266
 
267
267
  // If the suggestions are not shown or loading, we shouldn't handle the arrow keys
268
- // We shouldn't preventDefault to allow block arrow keys navigation
268
+ // We shouldn't preventDefault to allow block arrow keys navigation.
269
269
  if ( ! showSuggestions || ! suggestions.length || loading ) {
270
270
  // In the Windows version of Firefox the up and down arrows don't move the caret
271
271
  // within an input field like they do for Mac Firefox/Chrome/Safari. This causes
@@ -279,7 +279,7 @@ class URLInput extends Component {
279
279
  if ( 0 !== event.target.selectionStart ) {
280
280
  event.preventDefault();
281
281
 
282
- // Set the input caret to position 0
282
+ // Set the input caret to position 0.
283
283
  event.target.setSelectionRange( 0, 0 );
284
284
  }
285
285
  break;
@@ -292,7 +292,7 @@ class URLInput extends Component {
292
292
  ) {
293
293
  event.preventDefault();
294
294
 
295
- // Set the input caret to the last position
295
+ // Set the input caret to the last position.
296
296
  event.target.setSelectionRange(
297
297
  this.props.value.length,
298
298
  this.props.value.length
@@ -301,7 +301,7 @@ class URLInput extends Component {
301
301
  break;
302
302
  }
303
303
 
304
- // Submitting while loading should trigger onSubmit
304
+ // Submitting while loading should trigger onSubmit.
305
305
  case ENTER: {
306
306
  if ( this.props.onSubmit ) {
307
307
  this.props.onSubmit( null, event );
@@ -579,7 +579,7 @@ export default compose(
579
579
  withInstanceId,
580
580
  withSelect( ( select, props ) => {
581
581
  // If a link suggestions handler is already provided then
582
- // bail
582
+ // bail.
583
583
  if ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {
584
584
  return;
585
585
  }
@@ -22,7 +22,7 @@ const elementData = [
22
22
  bottom: 900,
23
23
  right: 400,
24
24
  },
25
- // Fourth block wraps to the next row/column
25
+ // Fourth block wraps to the next row/column.
26
26
  {
27
27
  top: 0,
28
28
  left: 400,
@@ -102,7 +102,7 @@ function useMovingAnimation( {
102
102
  }
103
103
 
104
104
  if ( prefersReducedMotion ) {
105
- // if the animation is disabled and the scroll needs to be adjusted,
105
+ // If the animation is disabled and the scroll needs to be adjusted,
106
106
  // just move directly to the final scroll position.
107
107
  preserveScrollPosition();
108
108
 
@@ -78,7 +78,7 @@ export function onBlockDrop(
78
78
  blocks,
79
79
  } = parseDropEvent( event );
80
80
 
81
- // If the user is inserting a block
81
+ // If the user is inserting a block.
82
82
  if ( dropType === 'inserter' ) {
83
83
  clearSelectedBlock();
84
84
  const blocksToInsert = blocks.map( ( block ) =>
@@ -93,7 +93,7 @@ export function onBlockDrop(
93
93
  );
94
94
  }
95
95
 
96
- // If the user is moving a block
96
+ // If the user is moving a block.
97
97
  if ( dropType === 'block' ) {
98
98
  const sourceBlockIndex = getBlockIndex( sourceClientIds[ 0 ] );
99
99