@wordpress/block-editor 12.24.0 → 12.26.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 (973) hide show
  1. package/CHANGELOG.md +11 -3
  2. package/README.md +7 -1
  3. package/build/components/alignment-control/ui.js +3 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-actions/index.js +4 -2
  6. package/build/components/block-actions/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +2 -2
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-card/index.js +2 -2
  10. package/build/components/block-card/index.js.map +1 -1
  11. package/build/components/block-compare/index.js +2 -2
  12. package/build/components/block-compare/index.js.map +1 -1
  13. package/build/components/block-edit/edit.js +2 -2
  14. package/build/components/block-edit/edit.js.map +1 -1
  15. package/build/components/block-icon/index.js +2 -2
  16. package/build/components/block-icon/index.js.map +1 -1
  17. package/build/components/block-list/block.js +4 -13
  18. package/build/components/block-list/block.js.map +1 -1
  19. package/build/components/block-list/block.native.js +2 -2
  20. package/build/components/block-list/block.native.js.map +1 -1
  21. package/build/components/block-list/index.js +6 -5
  22. package/build/components/block-list/index.js.map +1 -1
  23. package/build/components/block-list/index.native.js +1 -9
  24. package/build/components/block-list/index.native.js.map +1 -1
  25. package/build/components/block-list/use-block-props/index.js +11 -8
  26. package/build/components/block-list/use-block-props/index.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-block-refs.js +17 -46
  28. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  29. package/build/components/block-list/use-block-props/use-is-hovered.js +10 -14
  30. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  31. package/build/components/block-list/use-block-props/use-scroll-into-view.js +44 -0
  32. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +1 -0
  33. package/build/components/block-list-appender/index.js +2 -2
  34. package/build/components/block-list-appender/index.js.map +1 -1
  35. package/build/components/block-mover/button.js +2 -2
  36. package/build/components/block-mover/button.js.map +1 -1
  37. package/build/components/block-mover/index.js +2 -2
  38. package/build/components/block-mover/index.js.map +1 -1
  39. package/build/components/block-mover/index.native.js +3 -1
  40. package/build/components/block-mover/index.native.js.map +1 -1
  41. package/build/components/block-patterns-list/index.js +26 -5
  42. package/build/components/block-patterns-list/index.js.map +1 -1
  43. package/build/components/block-popover/cover.js +9 -6
  44. package/build/components/block-popover/cover.js.map +1 -1
  45. package/build/components/block-popover/inbetween.js +2 -2
  46. package/build/components/block-popover/inbetween.js.map +1 -1
  47. package/build/components/block-popover/index.js +22 -4
  48. package/build/components/block-popover/index.js.map +1 -1
  49. package/build/components/block-preview/index.js +2 -2
  50. package/build/components/block-preview/index.js.map +1 -1
  51. package/build/components/block-settings-menu/block-settings-dropdown.js +8 -30
  52. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  53. package/build/components/block-settings-menu-controls/index.js +10 -7
  54. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  55. package/build/components/block-styles/index.js +2 -2
  56. package/build/components/block-styles/index.js.map +1 -1
  57. package/build/components/block-switcher/pattern-transformations-menu.js +3 -1
  58. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  59. package/build/components/block-switcher/use-transformed-patterns.js +6 -2
  60. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  61. package/build/components/block-switcher/utils.js +15 -5
  62. package/build/components/block-switcher/utils.js.map +1 -1
  63. package/build/components/block-toolbar/index.js +3 -3
  64. package/build/components/block-toolbar/index.js.map +1 -1
  65. package/build/components/block-toolbar/use-has-block-toolbar.js +14 -9
  66. package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  67. package/build/components/block-tools/block-selection-button.js +2 -2
  68. package/build/components/block-tools/block-selection-button.js.map +1 -1
  69. package/build/components/block-tools/block-toolbar-breadcrumb.js +4 -4
  70. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  71. package/build/components/block-tools/block-toolbar-popover.js +2 -2
  72. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  73. package/build/components/block-tools/empty-block-inserter.js +2 -2
  74. package/build/components/block-tools/empty-block-inserter.js.map +1 -1
  75. package/build/components/block-tools/index.js +23 -2
  76. package/build/components/block-tools/index.js.map +1 -1
  77. package/build/components/block-tools/insertion-point.js +4 -4
  78. package/build/components/block-tools/insertion-point.js.map +1 -1
  79. package/build/components/block-tools/use-show-block-tools.js +2 -5
  80. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  81. package/build/components/block-tools/zoom-out-mode-inserters.js +68 -20
  82. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  83. package/build/components/block-variation-picker/index.js +5 -4
  84. package/build/components/block-variation-picker/index.js.map +1 -1
  85. package/build/components/block-variation-transforms/index.js +3 -1
  86. package/build/components/block-variation-transforms/index.js.map +1 -1
  87. package/build/components/button-block-appender/index.js +2 -2
  88. package/build/components/button-block-appender/index.js.map +1 -1
  89. package/build/components/child-layout-control/index.js +2 -2
  90. package/build/components/child-layout-control/index.js.map +1 -1
  91. package/build/components/colors-gradients/control.js +3 -3
  92. package/build/components/colors-gradients/control.js.map +1 -1
  93. package/build/components/colors-gradients/dropdown.js +2 -2
  94. package/build/components/colors-gradients/dropdown.js.map +1 -1
  95. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  96. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  97. package/build/components/convert-to-group-buttons/index.js +6 -0
  98. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  99. package/build/components/default-block-appender/index.js +2 -2
  100. package/build/components/default-block-appender/index.js.map +1 -1
  101. package/build/components/dimensions-tool/aspect-ratio-tool.js +30 -36
  102. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  103. package/build/components/floating-toolbar/index.native.js +9 -5
  104. package/build/components/floating-toolbar/index.native.js.map +1 -1
  105. package/build/components/global-styles/background-panel.js +4 -4
  106. package/build/components/global-styles/background-panel.js.map +1 -1
  107. package/build/components/global-styles/color-panel.js +6 -4
  108. package/build/components/global-styles/color-panel.js.map +1 -1
  109. package/build/components/global-styles/dimensions-panel.js +20 -4
  110. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  111. package/build/components/global-styles/filters-panel.js +2 -2
  112. package/build/components/global-styles/filters-panel.js.map +1 -1
  113. package/build/components/global-styles/hooks.js +3 -2
  114. package/build/components/global-styles/hooks.js.map +1 -1
  115. package/build/components/global-styles/shadow-panel-components.js +4 -4
  116. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  117. package/build/components/global-styles/typography-panel.js +23 -23
  118. package/build/components/global-styles/typography-panel.js.map +1 -1
  119. package/build/components/global-styles/use-global-styles-output.js +149 -132
  120. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  121. package/build/components/global-styles/utils.js +45 -0
  122. package/build/components/global-styles/utils.js.map +1 -1
  123. package/build/components/grid-visualizer/grid-item-resizer.js +141 -24
  124. package/build/components/grid-visualizer/grid-item-resizer.js.map +1 -1
  125. package/build/components/grid-visualizer/grid-visualizer.js +11 -5
  126. package/build/components/grid-visualizer/grid-visualizer.js.map +1 -1
  127. package/build/components/iframe/index.js +69 -30
  128. package/build/components/iframe/index.js.map +1 -1
  129. package/build/components/image-editor/aspect-ratio-dropdown.js +53 -36
  130. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  131. package/build/components/image-editor/cropper.js +2 -2
  132. package/build/components/image-editor/cropper.js.map +1 -1
  133. package/build/components/image-editor/index.js +1 -1
  134. package/build/components/image-editor/index.js.map +1 -1
  135. package/build/components/index.js +8 -0
  136. package/build/components/index.js.map +1 -1
  137. package/build/components/inner-blocks/button-block-appender.js +2 -2
  138. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  139. package/build/components/inner-blocks/index.js +25 -10
  140. package/build/components/inner-blocks/index.js.map +1 -1
  141. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  142. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  143. package/build/components/inserter/block-patterns-tab/index.js +20 -30
  144. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  145. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +1 -1
  146. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  147. package/build/components/inserter/block-types-tab.js +9 -3
  148. package/build/components/inserter/block-types-tab.js.map +1 -1
  149. package/build/components/inserter/category-tabs/index.js +56 -0
  150. package/build/components/inserter/category-tabs/index.js.map +1 -0
  151. package/build/components/inserter/hooks/use-insertion-point.js +11 -2
  152. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  153. package/build/components/inserter/hooks/use-patterns-state.js +12 -5
  154. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  155. package/build/components/inserter/index.js +2 -2
  156. package/build/components/inserter/index.js.map +1 -1
  157. package/build/components/inserter/library.js +8 -2
  158. package/build/components/inserter/library.js.map +1 -1
  159. package/build/components/inserter/media-tab/index.js +2 -2
  160. package/build/components/inserter/media-tab/index.js.map +1 -1
  161. package/build/components/inserter/media-tab/media-panel.js +0 -25
  162. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  163. package/build/components/inserter/media-tab/media-preview.js +15 -5
  164. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  165. package/build/components/inserter/media-tab/media-tab.js +15 -29
  166. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  167. package/build/components/inserter/menu.js +115 -109
  168. package/build/components/inserter/menu.js.map +1 -1
  169. package/build/components/inserter/quick-inserter.js +2 -2
  170. package/build/components/inserter/quick-inserter.js.map +1 -1
  171. package/build/components/inserter/tabs.js +23 -11
  172. package/build/components/inserter/tabs.js.map +1 -1
  173. package/build/components/inserter-list-item/index.js +3 -3
  174. package/build/components/inserter-list-item/index.js.map +1 -1
  175. package/build/components/keyboard-shortcuts/index.js +9 -0
  176. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  177. package/build/components/line-height-control/index.js +6 -2
  178. package/build/components/line-height-control/index.js.map +1 -1
  179. package/build/components/link-control/index.js +2 -2
  180. package/build/components/link-control/index.js.map +1 -1
  181. package/build/components/link-control/link-preview.js +3 -3
  182. package/build/components/link-control/link-preview.js.map +1 -1
  183. package/build/components/link-control/search-item.js +9 -3
  184. package/build/components/link-control/search-item.js.map +1 -1
  185. package/build/components/link-control/search-results.js +2 -2
  186. package/build/components/link-control/search-results.js.map +1 -1
  187. package/build/components/list-view/block-contents.js +2 -2
  188. package/build/components/list-view/block-contents.js.map +1 -1
  189. package/build/components/list-view/block-select-button.js +15 -172
  190. package/build/components/list-view/block-select-button.js.map +1 -1
  191. package/build/components/list-view/block.js +196 -21
  192. package/build/components/list-view/block.js.map +1 -1
  193. package/build/components/list-view/drop-indicator.js +3 -3
  194. package/build/components/list-view/drop-indicator.js.map +1 -1
  195. package/build/components/list-view/index.js +3 -3
  196. package/build/components/list-view/index.js.map +1 -1
  197. package/build/components/list-view/leaf.js +2 -2
  198. package/build/components/list-view/leaf.js.map +1 -1
  199. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  200. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  201. package/build/components/list-view/utils.js +3 -1
  202. package/build/components/list-view/utils.js.map +1 -1
  203. package/build/components/media-placeholder/index.js +7 -7
  204. package/build/components/media-placeholder/index.js.map +1 -1
  205. package/build/components/media-replace-flow/index.js +2 -2
  206. package/build/components/media-replace-flow/index.js.map +1 -1
  207. package/build/components/navigable-toolbar/index.js +3 -1
  208. package/build/components/navigable-toolbar/index.js.map +1 -1
  209. package/build/components/plain-text/index.js +2 -2
  210. package/build/components/plain-text/index.js.map +1 -1
  211. package/build/components/provider/block-refs-provider.js +3 -4
  212. package/build/components/provider/block-refs-provider.js.map +1 -1
  213. package/build/components/provider/use-block-sync.js +10 -1
  214. package/build/components/provider/use-block-sync.js.map +1 -1
  215. package/build/components/responsive-block-control/index.js +2 -2
  216. package/build/components/responsive-block-control/index.js.map +1 -1
  217. package/build/components/rich-text/event-listeners/before-input-rules.js +93 -0
  218. package/build/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  219. package/build/components/rich-text/event-listeners/delete.js +58 -0
  220. package/build/components/rich-text/event-listeners/delete.js.map +1 -0
  221. package/build/components/rich-text/event-listeners/enter.js +89 -0
  222. package/build/components/rich-text/event-listeners/enter.js.map +1 -0
  223. package/build/components/rich-text/event-listeners/firefox-compat.js +36 -0
  224. package/build/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  225. package/build/components/rich-text/event-listeners/index.js +44 -0
  226. package/build/components/rich-text/event-listeners/index.js.map +1 -0
  227. package/build/components/rich-text/event-listeners/input-events.js +22 -0
  228. package/build/components/rich-text/event-listeners/input-events.js.map +1 -0
  229. package/build/components/rich-text/event-listeners/input-rules.js +135 -0
  230. package/build/components/rich-text/event-listeners/input-rules.js.map +1 -0
  231. package/build/components/rich-text/event-listeners/insert-replacement-text.js +33 -0
  232. package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  233. package/build/components/rich-text/event-listeners/paste-handler.js +126 -0
  234. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  235. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -0
  236. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  237. package/build/components/rich-text/event-listeners/shortcuts.js +22 -0
  238. package/build/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  239. package/build/components/rich-text/event-listeners/undo-automatic-change.js +51 -0
  240. package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  241. package/build/components/rich-text/format-toolbar/index.js +2 -2
  242. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  243. package/build/components/rich-text/index.js +20 -33
  244. package/build/components/rich-text/index.js.map +1 -1
  245. package/build/components/rich-text/index.native.js +15 -5
  246. package/build/components/rich-text/index.native.js.map +1 -1
  247. package/build/components/rich-text/multiline.js +36 -4
  248. package/build/components/rich-text/multiline.js.map +1 -1
  249. package/build/components/rich-text/native/index.native.js +12 -0
  250. package/build/components/rich-text/native/index.native.js.map +1 -1
  251. package/build/components/rich-text/use-format-types.js +8 -4
  252. package/build/components/rich-text/use-format-types.js.map +1 -1
  253. package/build/components/segmented-text-control/index.js +62 -0
  254. package/build/components/segmented-text-control/index.js.map +1 -0
  255. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  256. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  257. package/build/components/text-alignment-control/index.js +76 -0
  258. package/build/components/text-alignment-control/index.js.map +1 -0
  259. package/build/components/text-decoration-control/index.js +22 -26
  260. package/build/components/text-decoration-control/index.js.map +1 -1
  261. package/build/components/text-transform-control/index.js +19 -23
  262. package/build/components/text-transform-control/index.js.map +1 -1
  263. package/build/components/url-input/index.js +4 -4
  264. package/build/components/url-input/index.js.map +1 -1
  265. package/build/components/url-popover/link-editor.js +2 -2
  266. package/build/components/url-popover/link-editor.js.map +1 -1
  267. package/build/components/url-popover/link-viewer-url.js +2 -2
  268. package/build/components/url-popover/link-viewer-url.js.map +1 -1
  269. package/build/components/url-popover/link-viewer.js +2 -2
  270. package/build/components/url-popover/link-viewer.js.map +1 -1
  271. package/build/components/use-block-display-information/index.js +9 -3
  272. package/build/components/use-block-display-information/index.js.map +1 -1
  273. package/build/components/use-on-block-drop/index.js +3 -1
  274. package/build/components/use-on-block-drop/index.js.map +1 -1
  275. package/build/components/warning/index.js +2 -2
  276. package/build/components/warning/index.js.map +1 -1
  277. package/build/components/writing-flow/index.js +2 -2
  278. package/build/components/writing-flow/index.js.map +1 -1
  279. package/build/components/writing-flow/use-clipboard-handler.js +77 -30
  280. package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
  281. package/build/components/writing-flow/use-drag-selection.js +3 -1
  282. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  283. package/build/components/writing-flow/use-input.js +44 -2
  284. package/build/components/writing-flow/use-input.js.map +1 -1
  285. package/build/components/writing-flow/use-tab-nav.js +9 -2
  286. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  287. package/build/components/writing-mode-control/index.js +17 -21
  288. package/build/components/writing-mode-control/index.js.map +1 -1
  289. package/build/hooks/align.js +2 -2
  290. package/build/hooks/align.js.map +1 -1
  291. package/build/hooks/background.js +1 -1
  292. package/build/hooks/background.js.map +1 -1
  293. package/build/hooks/border.js +3 -3
  294. package/build/hooks/border.js.map +1 -1
  295. package/build/hooks/color.js +3 -3
  296. package/build/hooks/color.js.map +1 -1
  297. package/build/hooks/content-lock-ui.js +5 -28
  298. package/build/hooks/content-lock-ui.js.map +1 -1
  299. package/build/hooks/custom-class-name.js +2 -2
  300. package/build/hooks/custom-class-name.js.map +1 -1
  301. package/build/hooks/custom-class-name.native.js +2 -2
  302. package/build/hooks/custom-class-name.native.js.map +1 -1
  303. package/build/hooks/dimensions.js +2 -2
  304. package/build/hooks/dimensions.js.map +1 -1
  305. package/build/hooks/duotone.js +3 -1
  306. package/build/hooks/duotone.js.map +1 -1
  307. package/build/hooks/layout-child.js +16 -8
  308. package/build/hooks/layout-child.js.map +1 -1
  309. package/build/hooks/layout.js +2 -2
  310. package/build/hooks/layout.js.map +1 -1
  311. package/build/hooks/position.js +2 -2
  312. package/build/hooks/position.js.map +1 -1
  313. package/build/hooks/text-align.js +3 -3
  314. package/build/hooks/text-align.js.map +1 -1
  315. package/build/hooks/use-bindings-attributes.js +39 -13
  316. package/build/hooks/use-bindings-attributes.js.map +1 -1
  317. package/build/hooks/use-color-props.js +2 -2
  318. package/build/hooks/use-color-props.js.map +1 -1
  319. package/build/hooks/use-typography-props.js +2 -2
  320. package/build/hooks/use-typography-props.js.map +1 -1
  321. package/build/hooks/utils.js +13 -8
  322. package/build/hooks/utils.js.map +1 -1
  323. package/build/layouts/grid.js +7 -6
  324. package/build/layouts/grid.js.map +1 -1
  325. package/build/private-apis.js +8 -3
  326. package/build/private-apis.js.map +1 -1
  327. package/build/store/actions.js +143 -25
  328. package/build/store/actions.js.map +1 -1
  329. package/build/store/private-actions.js +26 -1
  330. package/build/store/private-actions.js.map +1 -1
  331. package/build/store/private-keys.js +2 -1
  332. package/build/store/private-keys.js.map +1 -1
  333. package/build/store/private-selectors.js +33 -6
  334. package/build/store/private-selectors.js.map +1 -1
  335. package/build/store/reducer.js +11 -8
  336. package/build/store/reducer.js.map +1 -1
  337. package/build/store/selectors.js +25 -8
  338. package/build/store/selectors.js.map +1 -1
  339. package/build/utils/object.js +17 -0
  340. package/build/utils/object.js.map +1 -1
  341. package/build/utils/order-inserter-block-items.js +6 -2
  342. package/build/utils/order-inserter-block-items.js.map +1 -1
  343. package/build/utils/pasting.js +6 -2
  344. package/build/utils/pasting.js.map +1 -1
  345. package/build/utils/selection.js +8 -0
  346. package/build/utils/selection.js.map +1 -1
  347. package/build/utils/transform-styles/index.js +12 -7
  348. package/build/utils/transform-styles/index.js.map +1 -1
  349. package/build-module/components/alignment-control/ui.js +3 -1
  350. package/build-module/components/alignment-control/ui.js.map +1 -1
  351. package/build-module/components/block-actions/index.js +4 -2
  352. package/build-module/components/block-actions/index.js.map +1 -1
  353. package/build-module/components/block-alignment-control/ui.js +2 -2
  354. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  355. package/build-module/components/block-card/index.js +2 -2
  356. package/build-module/components/block-card/index.js.map +1 -1
  357. package/build-module/components/block-compare/index.js +2 -2
  358. package/build-module/components/block-compare/index.js.map +1 -1
  359. package/build-module/components/block-edit/edit.js +2 -2
  360. package/build-module/components/block-edit/edit.js.map +1 -1
  361. package/build-module/components/block-icon/index.js +2 -2
  362. package/build-module/components/block-icon/index.js.map +1 -1
  363. package/build-module/components/block-list/block.js +4 -13
  364. package/build-module/components/block-list/block.js.map +1 -1
  365. package/build-module/components/block-list/block.native.js +2 -2
  366. package/build-module/components/block-list/block.native.js.map +1 -1
  367. package/build-module/components/block-list/index.js +6 -5
  368. package/build-module/components/block-list/index.js.map +1 -1
  369. package/build-module/components/block-list/index.native.js +1 -9
  370. package/build-module/components/block-list/index.native.js.map +1 -1
  371. package/build-module/components/block-list/use-block-props/index.js +11 -8
  372. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  373. package/build-module/components/block-list/use-block-props/use-block-refs.js +19 -48
  374. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  375. package/build-module/components/block-list/use-block-props/use-is-hovered.js +10 -14
  376. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  377. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +37 -0
  378. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +1 -0
  379. package/build-module/components/block-list-appender/index.js +2 -2
  380. package/build-module/components/block-list-appender/index.js.map +1 -1
  381. package/build-module/components/block-mover/button.js +2 -2
  382. package/build-module/components/block-mover/button.js.map +1 -1
  383. package/build-module/components/block-mover/index.js +2 -2
  384. package/build-module/components/block-mover/index.js.map +1 -1
  385. package/build-module/components/block-mover/index.native.js +3 -1
  386. package/build-module/components/block-mover/index.native.js.map +1 -1
  387. package/build-module/components/block-patterns-list/index.js +27 -6
  388. package/build-module/components/block-patterns-list/index.js.map +1 -1
  389. package/build-module/components/block-popover/cover.js +9 -5
  390. package/build-module/components/block-popover/cover.js.map +1 -1
  391. package/build-module/components/block-popover/inbetween.js +2 -2
  392. package/build-module/components/block-popover/inbetween.js.map +1 -1
  393. package/build-module/components/block-popover/index.js +21 -3
  394. package/build-module/components/block-popover/index.js.map +1 -1
  395. package/build-module/components/block-preview/index.js +2 -2
  396. package/build-module/components/block-preview/index.js.map +1 -1
  397. package/build-module/components/block-settings-menu/block-settings-dropdown.js +9 -31
  398. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  399. package/build-module/components/block-settings-menu-controls/index.js +10 -7
  400. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  401. package/build-module/components/block-styles/index.js +2 -2
  402. package/build-module/components/block-styles/index.js.map +1 -1
  403. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -1
  404. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  405. package/build-module/components/block-switcher/use-transformed-patterns.js +6 -2
  406. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  407. package/build-module/components/block-switcher/utils.js +15 -5
  408. package/build-module/components/block-switcher/utils.js.map +1 -1
  409. package/build-module/components/block-toolbar/index.js +3 -3
  410. package/build-module/components/block-toolbar/index.js.map +1 -1
  411. package/build-module/components/block-toolbar/use-has-block-toolbar.js +14 -9
  412. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  413. package/build-module/components/block-tools/block-selection-button.js +2 -2
  414. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  415. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +4 -4
  416. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  417. package/build-module/components/block-tools/block-toolbar-popover.js +2 -2
  418. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  419. package/build-module/components/block-tools/empty-block-inserter.js +2 -2
  420. package/build-module/components/block-tools/empty-block-inserter.js.map +1 -1
  421. package/build-module/components/block-tools/index.js +23 -2
  422. package/build-module/components/block-tools/index.js.map +1 -1
  423. package/build-module/components/block-tools/insertion-point.js +4 -4
  424. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  425. package/build-module/components/block-tools/use-show-block-tools.js +2 -5
  426. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  427. package/build-module/components/block-tools/zoom-out-mode-inserters.js +69 -21
  428. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  429. package/build-module/components/block-variation-picker/index.js +5 -4
  430. package/build-module/components/block-variation-picker/index.js.map +1 -1
  431. package/build-module/components/block-variation-transforms/index.js +3 -1
  432. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  433. package/build-module/components/button-block-appender/index.js +2 -2
  434. package/build-module/components/button-block-appender/index.js.map +1 -1
  435. package/build-module/components/child-layout-control/index.js +2 -2
  436. package/build-module/components/child-layout-control/index.js.map +1 -1
  437. package/build-module/components/colors-gradients/control.js +3 -3
  438. package/build-module/components/colors-gradients/control.js.map +1 -1
  439. package/build-module/components/colors-gradients/dropdown.js +2 -2
  440. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  441. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  442. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  443. package/build-module/components/convert-to-group-buttons/index.js +7 -1
  444. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  445. package/build-module/components/default-block-appender/index.js +2 -2
  446. package/build-module/components/default-block-appender/index.js.map +1 -1
  447. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +30 -36
  448. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  449. package/build-module/components/floating-toolbar/index.native.js +9 -5
  450. package/build-module/components/floating-toolbar/index.native.js.map +1 -1
  451. package/build-module/components/global-styles/background-panel.js +4 -4
  452. package/build-module/components/global-styles/background-panel.js.map +1 -1
  453. package/build-module/components/global-styles/color-panel.js +6 -4
  454. package/build-module/components/global-styles/color-panel.js.map +1 -1
  455. package/build-module/components/global-styles/dimensions-panel.js +21 -5
  456. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  457. package/build-module/components/global-styles/filters-panel.js +2 -2
  458. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  459. package/build-module/components/global-styles/hooks.js +3 -2
  460. package/build-module/components/global-styles/hooks.js.map +1 -1
  461. package/build-module/components/global-styles/shadow-panel-components.js +4 -4
  462. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  463. package/build-module/components/global-styles/typography-panel.js +24 -24
  464. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  465. package/build-module/components/global-styles/use-global-styles-output.js +149 -132
  466. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  467. package/build-module/components/global-styles/utils.js +44 -0
  468. package/build-module/components/global-styles/utils.js.map +1 -1
  469. package/build-module/components/grid-visualizer/grid-item-resizer.js +141 -24
  470. package/build-module/components/grid-visualizer/grid-item-resizer.js.map +1 -1
  471. package/build-module/components/grid-visualizer/grid-visualizer.js +12 -6
  472. package/build-module/components/grid-visualizer/grid-visualizer.js.map +1 -1
  473. package/build-module/components/iframe/index.js +70 -31
  474. package/build-module/components/iframe/index.js.map +1 -1
  475. package/build-module/components/image-editor/aspect-ratio-dropdown.js +52 -36
  476. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  477. package/build-module/components/image-editor/cropper.js +2 -2
  478. package/build-module/components/image-editor/cropper.js.map +1 -1
  479. package/build-module/components/image-editor/index.js +1 -1
  480. package/build-module/components/image-editor/index.js.map +1 -1
  481. package/build-module/components/index.js +1 -0
  482. package/build-module/components/index.js.map +1 -1
  483. package/build-module/components/inner-blocks/button-block-appender.js +2 -2
  484. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  485. package/build-module/components/inner-blocks/index.js +25 -10
  486. package/build-module/components/inner-blocks/index.js.map +1 -1
  487. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  488. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  489. package/build-module/components/inserter/block-patterns-tab/index.js +21 -31
  490. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  491. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +1 -1
  492. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  493. package/build-module/components/inserter/block-types-tab.js +10 -4
  494. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  495. package/build-module/components/inserter/category-tabs/index.js +49 -0
  496. package/build-module/components/inserter/category-tabs/index.js.map +1 -0
  497. package/build-module/components/inserter/hooks/use-insertion-point.js +11 -2
  498. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  499. package/build-module/components/inserter/hooks/use-patterns-state.js +12 -5
  500. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  501. package/build-module/components/inserter/index.js +2 -2
  502. package/build-module/components/inserter/index.js.map +1 -1
  503. package/build-module/components/inserter/library.js +8 -2
  504. package/build-module/components/inserter/library.js.map +1 -1
  505. package/build-module/components/inserter/media-tab/index.js +1 -1
  506. package/build-module/components/inserter/media-tab/index.js.map +1 -1
  507. package/build-module/components/inserter/media-tab/media-panel.js +0 -24
  508. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  509. package/build-module/components/inserter/media-tab/media-preview.js +15 -5
  510. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  511. package/build-module/components/inserter/media-tab/media-tab.js +17 -31
  512. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  513. package/build-module/components/inserter/menu.js +117 -111
  514. package/build-module/components/inserter/menu.js.map +1 -1
  515. package/build-module/components/inserter/quick-inserter.js +2 -2
  516. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  517. package/build-module/components/inserter/tabs.js +24 -12
  518. package/build-module/components/inserter/tabs.js.map +1 -1
  519. package/build-module/components/inserter-list-item/index.js +3 -3
  520. package/build-module/components/inserter-list-item/index.js.map +1 -1
  521. package/build-module/components/keyboard-shortcuts/index.js +9 -0
  522. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  523. package/build-module/components/line-height-control/index.js +6 -2
  524. package/build-module/components/line-height-control/index.js.map +1 -1
  525. package/build-module/components/link-control/index.js +2 -2
  526. package/build-module/components/link-control/index.js.map +1 -1
  527. package/build-module/components/link-control/link-preview.js +3 -3
  528. package/build-module/components/link-control/link-preview.js.map +1 -1
  529. package/build-module/components/link-control/search-item.js +9 -3
  530. package/build-module/components/link-control/search-item.js.map +1 -1
  531. package/build-module/components/link-control/search-results.js +2 -2
  532. package/build-module/components/link-control/search-results.js.map +1 -1
  533. package/build-module/components/list-view/block-contents.js +2 -2
  534. package/build-module/components/list-view/block-contents.js.map +1 -1
  535. package/build-module/components/list-view/block-select-button.js +17 -174
  536. package/build-module/components/list-view/block-select-button.js.map +1 -1
  537. package/build-module/components/list-view/block.js +198 -23
  538. package/build-module/components/list-view/block.js.map +1 -1
  539. package/build-module/components/list-view/drop-indicator.js +3 -3
  540. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  541. package/build-module/components/list-view/index.js +3 -3
  542. package/build-module/components/list-view/index.js.map +1 -1
  543. package/build-module/components/list-view/leaf.js +2 -2
  544. package/build-module/components/list-view/leaf.js.map +1 -1
  545. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  546. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  547. package/build-module/components/list-view/utils.js +3 -1
  548. package/build-module/components/list-view/utils.js.map +1 -1
  549. package/build-module/components/media-placeholder/index.js +7 -7
  550. package/build-module/components/media-placeholder/index.js.map +1 -1
  551. package/build-module/components/media-replace-flow/index.js +2 -2
  552. package/build-module/components/media-replace-flow/index.js.map +1 -1
  553. package/build-module/components/navigable-toolbar/index.js +3 -1
  554. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  555. package/build-module/components/plain-text/index.js +2 -2
  556. package/build-module/components/plain-text/index.js.map +1 -1
  557. package/build-module/components/provider/block-refs-provider.js +3 -4
  558. package/build-module/components/provider/block-refs-provider.js.map +1 -1
  559. package/build-module/components/provider/use-block-sync.js +10 -1
  560. package/build-module/components/provider/use-block-sync.js.map +1 -1
  561. package/build-module/components/responsive-block-control/index.js +2 -2
  562. package/build-module/components/responsive-block-control/index.js.map +1 -1
  563. package/build-module/components/rich-text/event-listeners/before-input-rules.js +86 -0
  564. package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  565. package/build-module/components/rich-text/event-listeners/delete.js +51 -0
  566. package/build-module/components/rich-text/event-listeners/delete.js.map +1 -0
  567. package/build-module/components/rich-text/event-listeners/enter.js +82 -0
  568. package/build-module/components/rich-text/event-listeners/enter.js.map +1 -0
  569. package/build-module/components/rich-text/event-listeners/firefox-compat.js +29 -0
  570. package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  571. package/build-module/components/rich-text/event-listeners/index.js +36 -0
  572. package/build-module/components/rich-text/event-listeners/index.js.map +1 -0
  573. package/build-module/components/rich-text/event-listeners/input-events.js +15 -0
  574. package/build-module/components/rich-text/event-listeners/input-events.js.map +1 -0
  575. package/build-module/components/rich-text/event-listeners/input-rules.js +127 -0
  576. package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -0
  577. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +27 -0
  578. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  579. package/build-module/components/rich-text/event-listeners/paste-handler.js +122 -0
  580. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  581. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +21 -0
  582. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  583. package/build-module/components/rich-text/event-listeners/shortcuts.js +15 -0
  584. package/build-module/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  585. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  586. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  587. package/build-module/components/rich-text/format-toolbar/index.js +2 -2
  588. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  589. package/build-module/components/rich-text/index.js +21 -34
  590. package/build-module/components/rich-text/index.js.map +1 -1
  591. package/build-module/components/rich-text/index.native.js +15 -5
  592. package/build-module/components/rich-text/index.native.js.map +1 -1
  593. package/build-module/components/rich-text/multiline.js +37 -5
  594. package/build-module/components/rich-text/multiline.js.map +1 -1
  595. package/build-module/components/rich-text/native/index.native.js +12 -0
  596. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  597. package/build-module/components/rich-text/use-format-types.js +8 -4
  598. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  599. package/build-module/components/segmented-text-control/index.js +55 -0
  600. package/build-module/components/segmented-text-control/index.js.map +1 -0
  601. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  602. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  603. package/build-module/components/text-alignment-control/index.js +68 -0
  604. package/build-module/components/text-alignment-control/index.js.map +1 -0
  605. package/build-module/components/text-decoration-control/index.js +22 -26
  606. package/build-module/components/text-decoration-control/index.js.map +1 -1
  607. package/build-module/components/text-transform-control/index.js +19 -23
  608. package/build-module/components/text-transform-control/index.js.map +1 -1
  609. package/build-module/components/url-input/index.js +4 -4
  610. package/build-module/components/url-input/index.js.map +1 -1
  611. package/build-module/components/url-popover/link-editor.js +2 -2
  612. package/build-module/components/url-popover/link-editor.js.map +1 -1
  613. package/build-module/components/url-popover/link-viewer-url.js +2 -2
  614. package/build-module/components/url-popover/link-viewer-url.js.map +1 -1
  615. package/build-module/components/url-popover/link-viewer.js +2 -2
  616. package/build-module/components/url-popover/link-viewer.js.map +1 -1
  617. package/build-module/components/use-block-display-information/index.js +9 -3
  618. package/build-module/components/use-block-display-information/index.js.map +1 -1
  619. package/build-module/components/use-on-block-drop/index.js +3 -1
  620. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  621. package/build-module/components/warning/index.js +2 -2
  622. package/build-module/components/warning/index.js.map +1 -1
  623. package/build-module/components/writing-flow/index.js +2 -2
  624. package/build-module/components/writing-flow/index.js.map +1 -1
  625. package/build-module/components/writing-flow/use-clipboard-handler.js +78 -31
  626. package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
  627. package/build-module/components/writing-flow/use-drag-selection.js +3 -1
  628. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  629. package/build-module/components/writing-flow/use-input.js +45 -3
  630. package/build-module/components/writing-flow/use-input.js.map +1 -1
  631. package/build-module/components/writing-flow/use-tab-nav.js +9 -2
  632. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  633. package/build-module/components/writing-mode-control/index.js +17 -21
  634. package/build-module/components/writing-mode-control/index.js.map +1 -1
  635. package/build-module/hooks/align.js +2 -2
  636. package/build-module/hooks/align.js.map +1 -1
  637. package/build-module/hooks/background.js +1 -1
  638. package/build-module/hooks/background.js.map +1 -1
  639. package/build-module/hooks/border.js +3 -3
  640. package/build-module/hooks/border.js.map +1 -1
  641. package/build-module/hooks/color.js +3 -3
  642. package/build-module/hooks/color.js.map +1 -1
  643. package/build-module/hooks/content-lock-ui.js +5 -28
  644. package/build-module/hooks/content-lock-ui.js.map +1 -1
  645. package/build-module/hooks/custom-class-name.js +2 -2
  646. package/build-module/hooks/custom-class-name.js.map +1 -1
  647. package/build-module/hooks/custom-class-name.native.js +2 -2
  648. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  649. package/build-module/hooks/dimensions.js +2 -2
  650. package/build-module/hooks/dimensions.js.map +1 -1
  651. package/build-module/hooks/duotone.js +3 -1
  652. package/build-module/hooks/duotone.js.map +1 -1
  653. package/build-module/hooks/layout-child.js +16 -8
  654. package/build-module/hooks/layout-child.js.map +1 -1
  655. package/build-module/hooks/layout.js +2 -2
  656. package/build-module/hooks/layout.js.map +1 -1
  657. package/build-module/hooks/position.js +2 -2
  658. package/build-module/hooks/position.js.map +1 -1
  659. package/build-module/hooks/text-align.js +3 -3
  660. package/build-module/hooks/text-align.js.map +1 -1
  661. package/build-module/hooks/use-bindings-attributes.js +39 -13
  662. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  663. package/build-module/hooks/use-color-props.js +2 -2
  664. package/build-module/hooks/use-color-props.js.map +1 -1
  665. package/build-module/hooks/use-typography-props.js +2 -2
  666. package/build-module/hooks/use-typography-props.js.map +1 -1
  667. package/build-module/hooks/utils.js +13 -8
  668. package/build-module/hooks/utils.js.map +1 -1
  669. package/build-module/layouts/grid.js +7 -6
  670. package/build-module/layouts/grid.js.map +1 -1
  671. package/build-module/private-apis.js +9 -4
  672. package/build-module/private-apis.js.map +1 -1
  673. package/build-module/store/actions.js +145 -27
  674. package/build-module/store/actions.js.map +1 -1
  675. package/build-module/store/private-actions.js +24 -0
  676. package/build-module/store/private-actions.js.map +1 -1
  677. package/build-module/store/private-keys.js +1 -0
  678. package/build-module/store/private-keys.js.map +1 -1
  679. package/build-module/store/private-selectors.js +32 -5
  680. package/build-module/store/private-selectors.js.map +1 -1
  681. package/build-module/store/reducer.js +11 -8
  682. package/build-module/store/reducer.js.map +1 -1
  683. package/build-module/store/selectors.js +25 -8
  684. package/build-module/store/selectors.js.map +1 -1
  685. package/build-module/utils/object.js +16 -0
  686. package/build-module/utils/object.js.map +1 -1
  687. package/build-module/utils/order-inserter-block-items.js +6 -2
  688. package/build-module/utils/order-inserter-block-items.js.map +1 -1
  689. package/build-module/utils/pasting.js +6 -2
  690. package/build-module/utils/pasting.js.map +1 -1
  691. package/build-module/utils/selection.js +7 -0
  692. package/build-module/utils/selection.js.map +1 -1
  693. package/build-module/utils/transform-styles/index.js +12 -7
  694. package/build-module/utils/transform-styles/index.js.map +1 -1
  695. package/build-style/content-rtl.css +124 -158
  696. package/build-style/content.css +124 -158
  697. package/build-style/style-rtl.css +114 -203
  698. package/build-style/style.css +114 -203
  699. package/build-types/components/block-context/index.d.ts +1 -1
  700. package/build-types/components/block-context/index.d.ts.map +1 -1
  701. package/package.json +32 -32
  702. package/src/components/alignment-control/ui.js +3 -1
  703. package/src/components/block-actions/index.js +5 -1
  704. package/src/components/block-alignment-control/ui.js +2 -2
  705. package/src/components/block-bindings-toolbar-indicator/style.scss +1 -4
  706. package/src/components/block-canvas/style.scss +1 -3
  707. package/src/components/block-card/index.js +2 -2
  708. package/src/components/block-compare/index.js +2 -2
  709. package/src/components/block-content-overlay/content.scss +4 -37
  710. package/src/components/block-edit/edit.js +2 -2
  711. package/src/components/block-icon/index.js +2 -2
  712. package/src/components/block-list/block.js +6 -17
  713. package/src/components/block-list/block.native.js +2 -2
  714. package/src/components/block-list/content.scss +53 -72
  715. package/src/components/block-list/index.js +6 -6
  716. package/src/components/block-list/index.native.js +1 -6
  717. package/src/components/block-list/use-block-props/index.js +16 -6
  718. package/src/components/block-list/use-block-props/use-block-refs.js +17 -57
  719. package/src/components/block-list/use-block-props/use-is-hovered.js +11 -16
  720. package/src/components/block-list/use-block-props/use-scroll-into-view.js +38 -0
  721. package/src/components/block-list-appender/index.js +2 -2
  722. package/src/components/block-mover/button.js +2 -2
  723. package/src/components/block-mover/index.js +2 -2
  724. package/src/components/block-mover/index.native.js +3 -1
  725. package/src/components/block-patterns-list/index.js +29 -4
  726. package/src/components/block-patterns-list/style.scss +1 -3
  727. package/src/components/block-popover/README.md +1 -1
  728. package/src/components/block-popover/cover.js +22 -7
  729. package/src/components/block-popover/inbetween.js +2 -2
  730. package/src/components/block-popover/index.js +24 -6
  731. package/src/components/block-preview/index.js +2 -2
  732. package/src/components/block-preview/style.scss +13 -15
  733. package/src/components/block-settings-menu/block-settings-dropdown.js +15 -57
  734. package/src/components/block-settings-menu-controls/index.js +25 -16
  735. package/src/components/block-styles/index.js +2 -2
  736. package/src/components/block-switcher/pattern-transformations-menu.js +3 -1
  737. package/src/components/block-switcher/use-transformed-patterns.js +6 -2
  738. package/src/components/block-switcher/utils.js +14 -5
  739. package/src/components/block-toolbar/index.js +3 -3
  740. package/src/components/block-toolbar/style.scss +8 -11
  741. package/src/components/block-toolbar/use-has-block-toolbar.js +21 -16
  742. package/src/components/block-tools/block-selection-button.js +2 -2
  743. package/src/components/block-tools/block-toolbar-breadcrumb.js +5 -5
  744. package/src/components/block-tools/block-toolbar-popover.js +4 -7
  745. package/src/components/block-tools/empty-block-inserter.js +2 -2
  746. package/src/components/block-tools/index.js +27 -4
  747. package/src/components/block-tools/insertion-point.js +4 -4
  748. package/src/components/block-tools/style.scss +8 -0
  749. package/src/components/block-tools/use-show-block-tools.js +36 -48
  750. package/src/components/block-tools/zoom-out-mode-inserters.js +74 -18
  751. package/src/components/block-variation-picker/content.scss +22 -72
  752. package/src/components/block-variation-picker/index.js +5 -4
  753. package/src/components/block-variation-transforms/index.js +3 -1
  754. package/src/components/button-block-appender/index.js +2 -2
  755. package/src/components/child-layout-control/index.js +14 -2
  756. package/src/components/colors-gradients/control.js +3 -3
  757. package/src/components/colors-gradients/dropdown.js +2 -2
  758. package/src/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  759. package/src/components/colors-gradients/test/control.js +3 -3
  760. package/src/components/convert-to-group-buttons/index.js +10 -1
  761. package/src/components/default-block-appender/index.js +2 -2
  762. package/src/components/dimensions-tool/aspect-ratio-tool.js +40 -67
  763. package/src/components/dimensions-tool/test/index.js +10 -0
  764. package/src/components/editable-text/README.md +0 -4
  765. package/src/components/floating-toolbar/index.native.js +5 -2
  766. package/src/components/global-styles/background-panel.js +4 -6
  767. package/src/components/global-styles/color-panel.js +6 -4
  768. package/src/components/global-styles/dimensions-panel.js +22 -5
  769. package/src/components/global-styles/filters-panel.js +2 -2
  770. package/src/components/global-styles/hooks.js +2 -0
  771. package/src/components/global-styles/shadow-panel-components.js +6 -9
  772. package/src/components/global-styles/test/get-global-styles-changes.js +0 -2
  773. package/src/components/global-styles/test/use-global-styles-output.js +5 -5
  774. package/src/components/global-styles/test/utils.js +21 -0
  775. package/src/components/global-styles/typography-panel.js +27 -23
  776. package/src/components/global-styles/use-global-styles-output.js +211 -187
  777. package/src/components/global-styles/utils.js +55 -0
  778. package/src/components/grid-visualizer/grid-item-resizer.js +169 -40
  779. package/src/components/grid-visualizer/grid-visualizer.js +19 -6
  780. package/src/components/iframe/content.scss +63 -0
  781. package/src/components/iframe/index.js +119 -39
  782. package/src/components/image-editor/aspect-ratio-dropdown.js +91 -59
  783. package/src/components/image-editor/cropper.js +2 -2
  784. package/src/components/image-editor/index.js +1 -1
  785. package/src/components/image-editor/test/index.js +22 -0
  786. package/src/components/index.js +1 -0
  787. package/src/components/inner-blocks/button-block-appender.js +2 -2
  788. package/src/components/inner-blocks/index.js +24 -9
  789. package/src/components/inserter/block-patterns-explorer/pattern-list.js +2 -1
  790. package/src/components/inserter/block-patterns-tab/index.js +30 -64
  791. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +2 -1
  792. package/src/components/inserter/block-types-tab.js +12 -9
  793. package/src/components/inserter/category-tabs/index.js +74 -0
  794. package/src/components/inserter/hooks/use-insertion-point.js +15 -1
  795. package/src/components/inserter/hooks/use-patterns-state.js +18 -5
  796. package/src/components/inserter/index.js +4 -5
  797. package/src/components/inserter/library.js +6 -0
  798. package/src/components/inserter/media-tab/index.js +1 -1
  799. package/src/components/inserter/media-tab/media-panel.js +0 -22
  800. package/src/components/inserter/media-tab/media-preview.js +17 -9
  801. package/src/components/inserter/media-tab/media-tab.js +44 -83
  802. package/src/components/inserter/menu.js +168 -140
  803. package/src/components/inserter/quick-inserter.js +2 -2
  804. package/src/components/inserter/style.scss +96 -178
  805. package/src/components/inserter/tabs.js +33 -27
  806. package/src/components/inserter-list-item/index.js +3 -3
  807. package/src/components/keyboard-shortcuts/index.js +12 -0
  808. package/src/components/line-height-control/index.js +6 -2
  809. package/src/components/line-height-control/test/index.js +16 -14
  810. package/src/components/link-control/index.js +2 -2
  811. package/src/components/link-control/link-preview.js +3 -3
  812. package/src/components/link-control/search-item.js +9 -3
  813. package/src/components/link-control/search-results.js +2 -2
  814. package/src/components/list-view/block-contents.js +2 -2
  815. package/src/components/list-view/block-select-button.js +85 -267
  816. package/src/components/list-view/block.js +240 -26
  817. package/src/components/list-view/drop-indicator.js +3 -3
  818. package/src/components/list-view/index.js +3 -3
  819. package/src/components/list-view/leaf.js +2 -5
  820. package/src/components/list-view/style.scss +20 -28
  821. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  822. package/src/components/list-view/utils.js +3 -1
  823. package/src/components/media-placeholder/content.scss +0 -11
  824. package/src/components/media-placeholder/index.js +7 -7
  825. package/src/components/media-replace-flow/index.js +2 -2
  826. package/src/components/navigable-toolbar/index.js +3 -1
  827. package/src/components/plain-text/index.js +2 -2
  828. package/src/components/provider/block-refs-provider.js +3 -8
  829. package/src/components/provider/test/use-block-sync.js +7 -0
  830. package/src/components/provider/use-block-sync.js +10 -1
  831. package/src/components/responsive-block-control/index.js +2 -2
  832. package/src/components/rich-text/README.md +0 -8
  833. package/src/components/rich-text/event-listeners/before-input-rules.js +92 -0
  834. package/src/components/rich-text/event-listeners/delete.js +53 -0
  835. package/src/components/rich-text/event-listeners/enter.js +84 -0
  836. package/src/components/rich-text/event-listeners/firefox-compat.js +31 -0
  837. package/src/components/rich-text/event-listeners/index.js +56 -0
  838. package/src/components/rich-text/event-listeners/input-events.js +13 -0
  839. package/src/components/rich-text/event-listeners/input-rules.js +146 -0
  840. package/src/components/rich-text/event-listeners/insert-replacement-text.js +28 -0
  841. package/src/components/rich-text/event-listeners/paste-handler.js +132 -0
  842. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +24 -0
  843. package/src/components/rich-text/event-listeners/shortcuts.js +13 -0
  844. package/src/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  845. package/src/components/rich-text/format-toolbar/index.js +2 -2
  846. package/src/components/rich-text/index.js +17 -37
  847. package/src/components/rich-text/index.native.js +13 -2
  848. package/src/components/rich-text/multiline.js +37 -5
  849. package/src/components/rich-text/native/index.native.js +11 -0
  850. package/src/components/rich-text/use-format-types.js +6 -2
  851. package/src/components/segmented-text-control/index.js +63 -0
  852. package/src/components/{writing-mode-control → segmented-text-control}/style.scss +2 -5
  853. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -1
  854. package/src/components/text-alignment-control/index.js +91 -0
  855. package/src/components/text-alignment-control/stories/index.story.js +39 -0
  856. package/src/components/text-decoration-control/index.js +22 -35
  857. package/src/components/text-transform-control/index.js +19 -32
  858. package/src/components/url-input/index.js +4 -4
  859. package/src/components/url-popover/link-editor.js +2 -2
  860. package/src/components/url-popover/link-viewer-url.js +2 -2
  861. package/src/components/url-popover/link-viewer.js +2 -2
  862. package/src/components/use-block-display-information/index.js +9 -3
  863. package/src/components/use-on-block-drop/index.js +3 -1
  864. package/src/components/warning/index.js +2 -2
  865. package/src/components/writing-flow/index.js +2 -2
  866. package/src/components/writing-flow/use-clipboard-handler.js +107 -47
  867. package/src/components/writing-flow/use-drag-selection.js +3 -1
  868. package/src/components/writing-flow/use-input.js +75 -1
  869. package/src/components/writing-flow/use-tab-nav.js +13 -2
  870. package/src/components/writing-mode-control/index.js +17 -33
  871. package/src/content.scss +1 -0
  872. package/src/hooks/align.js +2 -2
  873. package/src/hooks/background.js +1 -1
  874. package/src/hooks/border.js +3 -3
  875. package/src/hooks/color.js +12 -19
  876. package/src/hooks/color.scss +1 -0
  877. package/src/hooks/content-lock-ui.js +16 -33
  878. package/src/hooks/custom-class-name.js +2 -2
  879. package/src/hooks/custom-class-name.native.js +2 -2
  880. package/src/hooks/dimensions.js +2 -2
  881. package/src/hooks/duotone.js +3 -1
  882. package/src/hooks/layout-child.js +34 -20
  883. package/src/hooks/layout.js +2 -2
  884. package/src/hooks/position.js +2 -2
  885. package/src/hooks/text-align.js +3 -3
  886. package/src/hooks/use-bindings-attributes.js +48 -16
  887. package/src/hooks/use-color-props.js +2 -2
  888. package/src/hooks/use-typography-props.js +2 -2
  889. package/src/hooks/utils.js +18 -4
  890. package/src/layouts/grid.js +3 -7
  891. package/src/private-apis.js +8 -2
  892. package/src/store/actions.js +233 -54
  893. package/src/store/private-actions.js +24 -0
  894. package/src/store/private-keys.js +1 -0
  895. package/src/store/private-selectors.js +43 -4
  896. package/src/store/reducer.js +13 -23
  897. package/src/store/selectors.js +24 -9
  898. package/src/style.scss +1 -2
  899. package/src/utils/object.js +16 -0
  900. package/src/utils/order-inserter-block-items.js +6 -2
  901. package/src/utils/pasting.js +6 -2
  902. package/src/utils/selection.js +8 -0
  903. package/src/utils/test/__snapshots__/transform-styles.js.snap +6 -0
  904. package/src/utils/test/transform-styles.js +14 -0
  905. package/src/utils/transform-styles/index.js +12 -9
  906. package/tsconfig.tsbuildinfo +1 -1
  907. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -54
  908. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  909. package/build/components/rich-text/split-value.js +0 -81
  910. package/build/components/rich-text/split-value.js.map +0 -1
  911. package/build/components/rich-text/use-before-input-rules.js +0 -98
  912. package/build/components/rich-text/use-before-input-rules.js.map +0 -1
  913. package/build/components/rich-text/use-delete.js +0 -64
  914. package/build/components/rich-text/use-delete.js.map +0 -1
  915. package/build/components/rich-text/use-enter.js +0 -109
  916. package/build/components/rich-text/use-enter.js.map +0 -1
  917. package/build/components/rich-text/use-firefox-compat.js +0 -44
  918. package/build/components/rich-text/use-firefox-compat.js.map +0 -1
  919. package/build/components/rich-text/use-input-events.js +0 -25
  920. package/build/components/rich-text/use-input-events.js.map +0 -1
  921. package/build/components/rich-text/use-input-rules.js +0 -139
  922. package/build/components/rich-text/use-input-rules.js.map +0 -1
  923. package/build/components/rich-text/use-insert-replacement-text.js +0 -38
  924. package/build/components/rich-text/use-insert-replacement-text.js.map +0 -1
  925. package/build/components/rich-text/use-paste-handler.js +0 -158
  926. package/build/components/rich-text/use-paste-handler.js.map +0 -1
  927. package/build/components/rich-text/use-remove-browser-shortcuts.js +0 -32
  928. package/build/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  929. package/build/components/rich-text/use-shortcuts.js +0 -25
  930. package/build/components/rich-text/use-shortcuts.js.map +0 -1
  931. package/build/components/rich-text/use-undo-automatic-change.js +0 -53
  932. package/build/components/rich-text/use-undo-automatic-change.js.map +0 -1
  933. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -47
  934. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  935. package/build-module/components/rich-text/split-value.js +0 -75
  936. package/build-module/components/rich-text/split-value.js.map +0 -1
  937. package/build-module/components/rich-text/use-before-input-rules.js +0 -92
  938. package/build-module/components/rich-text/use-before-input-rules.js.map +0 -1
  939. package/build-module/components/rich-text/use-delete.js +0 -57
  940. package/build-module/components/rich-text/use-delete.js.map +0 -1
  941. package/build-module/components/rich-text/use-enter.js +0 -102
  942. package/build-module/components/rich-text/use-enter.js.map +0 -1
  943. package/build-module/components/rich-text/use-firefox-compat.js +0 -37
  944. package/build-module/components/rich-text/use-firefox-compat.js.map +0 -1
  945. package/build-module/components/rich-text/use-input-events.js +0 -18
  946. package/build-module/components/rich-text/use-input-events.js.map +0 -1
  947. package/build-module/components/rich-text/use-input-rules.js +0 -132
  948. package/build-module/components/rich-text/use-input-rules.js.map +0 -1
  949. package/build-module/components/rich-text/use-insert-replacement-text.js +0 -32
  950. package/build-module/components/rich-text/use-insert-replacement-text.js.map +0 -1
  951. package/build-module/components/rich-text/use-paste-handler.js +0 -152
  952. package/build-module/components/rich-text/use-paste-handler.js.map +0 -1
  953. package/build-module/components/rich-text/use-remove-browser-shortcuts.js +0 -26
  954. package/build-module/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  955. package/build-module/components/rich-text/use-shortcuts.js +0 -18
  956. package/build-module/components/rich-text/use-shortcuts.js.map +0 -1
  957. package/build-module/components/rich-text/use-undo-automatic-change.js +0 -46
  958. package/build-module/components/rich-text/use-undo-automatic-change.js.map +0 -1
  959. package/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -55
  960. package/src/components/rich-text/split-value.js +0 -64
  961. package/src/components/rich-text/use-before-input-rules.js +0 -99
  962. package/src/components/rich-text/use-delete.js +0 -59
  963. package/src/components/rich-text/use-enter.js +0 -110
  964. package/src/components/rich-text/use-firefox-compat.js +0 -39
  965. package/src/components/rich-text/use-input-events.js +0 -19
  966. package/src/components/rich-text/use-input-rules.js +0 -150
  967. package/src/components/rich-text/use-insert-replacement-text.js +0 -31
  968. package/src/components/rich-text/use-paste-handler.js +0 -180
  969. package/src/components/rich-text/use-remove-browser-shortcuts.js +0 -29
  970. package/src/components/rich-text/use-shortcuts.js +0 -19
  971. package/src/components/rich-text/use-undo-automatic-change.js +0 -46
  972. package/src/components/text-decoration-control/style.scss +0 -18
  973. package/src/components/text-transform-control/style.scss +0 -18
@@ -2,7 +2,7 @@ import { createElement } from "react";
2
2
  /**
3
3
  * External dependencies
4
4
  */
5
- import classnames from 'classnames';
5
+ import clsx from 'clsx';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -14,7 +14,7 @@ export default function LinkViewerURL({
14
14
  urlLabel,
15
15
  className
16
16
  }) {
17
- const linkClassName = classnames(className, 'block-editor-url-popover__link-viewer-url');
17
+ const linkClassName = clsx(className, 'block-editor-url-popover__link-viewer-url');
18
18
  if (!url) {
19
19
  return createElement("span", {
20
20
  className: linkClassName
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","ExternalLink","safeDecodeURI","filterURLForDisplay","LinkViewerURL","url","urlLabel","className","linkClassName","createElement","href"],"sources":["@wordpress/block-editor/src/components/url-popover/link-viewer-url.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { ExternalLink } from '@wordpress/components';\nimport { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';\n\nexport default function LinkViewerURL( { url, urlLabel, className } ) {\n\tconst linkClassName = classnames(\n\t\tclassName,\n\t\t'block-editor-url-popover__link-viewer-url'\n\t);\n\n\tif ( ! url ) {\n\t\treturn <span className={ linkClassName }></span>;\n\t}\n\n\treturn (\n\t\t<ExternalLink className={ linkClassName } href={ url }>\n\t\t\t{ urlLabel || filterURLForDisplay( safeDecodeURI( url ) ) }\n\t\t</ExternalLink>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,gBAAgB;AAEnE,eAAe,SAASC,aAAaA,CAAE;EAAEC,GAAG;EAAEC,QAAQ;EAAEC;AAAU,CAAC,EAAG;EACrE,MAAMC,aAAa,GAAGR,UAAU,CAC/BO,SAAS,EACT,2CACD,CAAC;EAED,IAAK,CAAEF,GAAG,EAAG;IACZ,OAAOI,aAAA;MAAMF,SAAS,EAAGC;IAAe,CAAO,CAAC;EACjD;EAEA,OACCC,aAAA,CAACR,YAAY;IAACM,SAAS,EAAGC,aAAe;IAACE,IAAI,EAAGL;EAAK,GACnDC,QAAQ,IAAIH,mBAAmB,CAAED,aAAa,CAAEG,GAAI,CAAE,CAC3C,CAAC;AAEjB","ignoreList":[]}
1
+ {"version":3,"names":["clsx","ExternalLink","safeDecodeURI","filterURLForDisplay","LinkViewerURL","url","urlLabel","className","linkClassName","createElement","href"],"sources":["@wordpress/block-editor/src/components/url-popover/link-viewer-url.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { ExternalLink } from '@wordpress/components';\nimport { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';\n\nexport default function LinkViewerURL( { url, urlLabel, className } ) {\n\tconst linkClassName = clsx(\n\t\tclassName,\n\t\t'block-editor-url-popover__link-viewer-url'\n\t);\n\n\tif ( ! url ) {\n\t\treturn <span className={ linkClassName }></span>;\n\t}\n\n\treturn (\n\t\t<ExternalLink className={ linkClassName } href={ url }>\n\t\t\t{ urlLabel || filterURLForDisplay( safeDecodeURI( url ) ) }\n\t\t</ExternalLink>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,gBAAgB;AAEnE,eAAe,SAASC,aAAaA,CAAE;EAAEC,GAAG;EAAEC,QAAQ;EAAEC;AAAU,CAAC,EAAG;EACrE,MAAMC,aAAa,GAAGR,IAAI,CACzBO,SAAS,EACT,2CACD,CAAC;EAED,IAAK,CAAEF,GAAG,EAAG;IACZ,OAAOI,aAAA;MAAMF,SAAS,EAAGC;IAAe,CAAO,CAAC;EACjD;EAEA,OACCC,aAAA,CAACR,YAAY;IAACM,SAAS,EAAGC,aAAe;IAACE,IAAI,EAAGL;EAAK,GACnDC,QAAQ,IAAIH,mBAAmB,CAAED,aAAa,CAAEG,GAAI,CAAE,CAC3C,CAAC;AAEjB","ignoreList":[]}
@@ -2,7 +2,7 @@ import { createElement } from "react";
2
2
  /**
3
3
  * External dependencies
4
4
  */
5
- import classnames from 'classnames';
5
+ import clsx from 'clsx';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -24,7 +24,7 @@ export default function LinkViewer({
24
24
  ...props
25
25
  }) {
26
26
  return createElement("div", {
27
- className: classnames('block-editor-url-popover__link-viewer', className),
27
+ className: clsx('block-editor-url-popover__link-viewer', className),
28
28
  ...props
29
29
  }, createElement(LinkViewerURL, {
30
30
  url: url,
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","__","Button","edit","LinkViewerURL","LinkViewer","className","linkClassName","onEditLinkClick","url","urlLabel","props","createElement","icon","label","onClick","size"],"sources":["@wordpress/block-editor/src/components/url-popover/link-viewer.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { edit } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport LinkViewerURL from './link-viewer-url';\n\nexport default function LinkViewer( {\n\tclassName,\n\tlinkClassName,\n\tonEditLinkClick,\n\turl,\n\turlLabel,\n\t...props\n} ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-url-popover__link-viewer',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<LinkViewerURL\n\t\t\t\turl={ url }\n\t\t\t\turlLabel={ urlLabel }\n\t\t\t\tclassName={ linkClassName }\n\t\t\t/>\n\t\t\t{ onEditLinkClick && (\n\t\t\t\t<Button\n\t\t\t\t\ticon={ edit }\n\t\t\t\t\tlabel={ __( 'Edit' ) }\n\t\t\t\t\tonClick={ onEditLinkClick }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,IAAI,QAAQ,kBAAkB;;AAEvC;AACA;AACA;AACA,OAAOC,aAAa,MAAM,mBAAmB;AAE7C,eAAe,SAASC,UAAUA,CAAE;EACnCC,SAAS;EACTC,aAAa;EACbC,eAAe;EACfC,GAAG;EACHC,QAAQ;EACR,GAAGC;AACJ,CAAC,EAAG;EACH,OACCC,aAAA;IACCN,SAAS,EAAGN,UAAU,CACrB,uCAAuC,EACvCM,SACD,CAAG;IAAA,GACEK;EAAK,GAEVC,aAAA,CAACR,aAAa;IACbK,GAAG,EAAGA,GAAK;IACXC,QAAQ,EAAGA,QAAU;IACrBJ,SAAS,EAAGC;EAAe,CAC3B,CAAC,EACAC,eAAe,IAChBI,aAAA,CAACV,MAAM;IACNW,IAAI,EAAGV,IAAM;IACbW,KAAK,EAAGb,EAAE,CAAE,MAAO,CAAG;IACtBc,OAAO,EAAGP,eAAiB;IAC3BQ,IAAI,EAAC;EAAS,CACd,CAEE,CAAC;AAER","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__","Button","edit","LinkViewerURL","LinkViewer","className","linkClassName","onEditLinkClick","url","urlLabel","props","createElement","icon","label","onClick","size"],"sources":["@wordpress/block-editor/src/components/url-popover/link-viewer.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { edit } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport LinkViewerURL from './link-viewer-url';\n\nexport default function LinkViewer( {\n\tclassName,\n\tlinkClassName,\n\tonEditLinkClick,\n\turl,\n\turlLabel,\n\t...props\n} ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-url-popover__link-viewer',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<LinkViewerURL\n\t\t\t\turl={ url }\n\t\t\t\turlLabel={ urlLabel }\n\t\t\t\tclassName={ linkClassName }\n\t\t\t/>\n\t\t\t{ onEditLinkClick && (\n\t\t\t\t<Button\n\t\t\t\t\ticon={ edit }\n\t\t\t\t\tlabel={ __( 'Edit' ) }\n\t\t\t\t\tonClick={ onEditLinkClick }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,IAAI,QAAQ,kBAAkB;;AAEvC;AACA;AACA;AACA,OAAOC,aAAa,MAAM,mBAAmB;AAE7C,eAAe,SAASC,UAAUA,CAAE;EACnCC,SAAS;EACTC,aAAa;EACbC,eAAe;EACfC,GAAG;EACHC,QAAQ;EACR,GAAGC;AACJ,CAAC,EAAG;EACH,OACCC,aAAA;IACCN,SAAS,EAAGN,IAAI,CACf,uCAAuC,EACvCM,SACD,CAAG;IAAA,GACEK;EAAK,GAEVC,aAAA,CAACR,aAAa;IACbK,GAAG,EAAGA,GAAK;IACXC,QAAQ,EAAGA,QAAU;IACrBJ,SAAS,EAAGC;EAAe,CAC3B,CAAC,EACAC,eAAe,IAChBI,aAAA,CAACV,MAAM;IACNW,IAAI,EAAGV,IAAM;IACbW,KAAK,EAAGb,EAAE,CAAE,MAAO,CAAG;IACtBc,OAAO,EAAGP,eAAiB;IAC3BQ,IAAI,EAAC;EAAS,CACd,CAEE,CAAC;AAER","ignoreList":[]}
@@ -59,7 +59,9 @@ function getPositionTypeLabel(attributes) {
59
59
 
60
60
  export default function useBlockDisplayInformation(clientId) {
61
61
  return useSelect(select => {
62
- if (!clientId) return null;
62
+ if (!clientId) {
63
+ return null;
64
+ }
63
65
  const {
64
66
  getBlockName,
65
67
  getBlockAttributes
@@ -70,7 +72,9 @@ export default function useBlockDisplayInformation(clientId) {
70
72
  } = select(blocksStore);
71
73
  const blockName = getBlockName(clientId);
72
74
  const blockType = getBlockType(blockName);
73
- if (!blockType) return null;
75
+ if (!blockType) {
76
+ return null;
77
+ }
74
78
  const attributes = getBlockAttributes(clientId);
75
79
  const match = getActiveBlockVariation(blockName, attributes);
76
80
  const isSynced = isReusableBlock(blockType) || isTemplatePart(blockType);
@@ -87,7 +91,9 @@ export default function useBlockDisplayInformation(clientId) {
87
91
  positionType: attributes?.style?.position?.type,
88
92
  name: attributes?.metadata?.name
89
93
  };
90
- if (!match) return blockTypeInfo;
94
+ if (!match) {
95
+ return blockTypeInfo;
96
+ }
91
97
  return {
92
98
  isSynced,
93
99
  title: match.title || blockType.title,
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","store","blocksStore","isReusableBlock","isTemplatePart","__experimentalGetBlockLabel","getBlockLabel","__","blockEditorStore","getPositionTypeLabel","attributes","positionType","style","position","type","useBlockDisplayInformation","clientId","select","getBlockName","getBlockAttributes","getBlockType","getActiveBlockVariation","blockName","blockType","match","isSynced","syncedTitle","undefined","title","positionLabel","blockTypeInfo","icon","description","anchor","name","metadata"],"sources":["@wordpress/block-editor/src/components/use-block-display-information/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n\t__experimentalGetBlockLabel as getBlockLabel,\n} from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('@wordpress/blocks').WPIcon} WPIcon */\n\n/**\n * Contains basic block's information for display reasons.\n *\n * @typedef {Object} WPBlockDisplayInformation\n *\n * @property {boolean} isSynced True if is a reusable block or template part\n * @property {string} title Human-readable block type label.\n * @property {WPIcon} icon Block type icon.\n * @property {string} description A detailed block type description.\n * @property {string} anchor HTML anchor.\n * @property {name} name A custom, human readable name for the block.\n */\n\n/**\n * Get the display label for a block's position type.\n *\n * @param {Object} attributes Block attributes.\n * @return {string} The position type label.\n */\nfunction getPositionTypeLabel( attributes ) {\n\tconst positionType = attributes?.style?.position?.type;\n\n\tif ( positionType === 'sticky' ) {\n\t\treturn __( 'Sticky' );\n\t}\n\n\tif ( positionType === 'fixed' ) {\n\t\treturn __( 'Fixed' );\n\t}\n\n\treturn null;\n}\n\n/**\n * Hook used to try to find a matching block variation and return\n * the appropriate information for display reasons. In order to\n * to try to find a match we need to things:\n * 1. Block's client id to extract it's current attributes.\n * 2. A block variation should have set `isActive` prop to a proper function.\n *\n * If for any reason a block variation match cannot be found,\n * the returned information come from the Block Type.\n * If no blockType is found with the provided clientId, returns null.\n *\n * @param {string} clientId Block's client id.\n * @return {?WPBlockDisplayInformation} Block's display information, or `null` when the block or its type not found.\n */\n\nexport default function useBlockDisplayInformation( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) return null;\n\t\t\tconst { getBlockName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tif ( ! blockType ) return null;\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst isSynced =\n\t\t\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\t\t\tconst syncedTitle = isSynced\n\t\t\t\t? getBlockLabel( blockType, attributes )\n\t\t\t\t: undefined;\n\t\t\tconst title = syncedTitle || blockType.title;\n\t\t\tconst positionLabel = getPositionTypeLabel( attributes );\n\t\t\tconst blockTypeInfo = {\n\t\t\t\tisSynced,\n\t\t\t\ttitle,\n\t\t\t\ticon: blockType.icon,\n\t\t\t\tdescription: blockType.description,\n\t\t\t\tanchor: attributes?.anchor,\n\t\t\t\tpositionLabel,\n\t\t\t\tpositionType: attributes?.style?.position?.type,\n\t\t\t\tname: attributes?.metadata?.name,\n\t\t\t};\n\t\t\tif ( ! match ) return blockTypeInfo;\n\n\t\t\treturn {\n\t\t\t\tisSynced,\n\t\t\t\ttitle: match.title || blockType.title,\n\t\t\t\ticon: match.icon || blockType.icon,\n\t\t\t\tdescription: match.description || blockType.description,\n\t\t\t\tanchor: attributes?.anchor,\n\t\t\t\tpositionLabel,\n\t\t\t\tpositionType: attributes?.style?.position?.type,\n\t\t\t\tname: attributes?.metadata?.name,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","store","blocksStore","isReusableBlock","isTemplatePart","__experimentalGetBlockLabel","getBlockLabel","__","blockEditorStore","getPositionTypeLabel","attributes","positionType","style","position","type","useBlockDisplayInformation","clientId","select","getBlockName","getBlockAttributes","getBlockType","getActiveBlockVariation","blockName","blockType","match","isSynced","syncedTitle","undefined","title","positionLabel","blockTypeInfo","icon","description","anchor","name","metadata"],"sources":["@wordpress/block-editor/src/components/use-block-display-information/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tstore as blocksStore,\n\tisReusableBlock,\n\tisTemplatePart,\n\t__experimentalGetBlockLabel as getBlockLabel,\n} from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('@wordpress/blocks').WPIcon} WPIcon */\n\n/**\n * Contains basic block's information for display reasons.\n *\n * @typedef {Object} WPBlockDisplayInformation\n *\n * @property {boolean} isSynced True if is a reusable block or template part\n * @property {string} title Human-readable block type label.\n * @property {WPIcon} icon Block type icon.\n * @property {string} description A detailed block type description.\n * @property {string} anchor HTML anchor.\n * @property {name} name A custom, human readable name for the block.\n */\n\n/**\n * Get the display label for a block's position type.\n *\n * @param {Object} attributes Block attributes.\n * @return {string} The position type label.\n */\nfunction getPositionTypeLabel( attributes ) {\n\tconst positionType = attributes?.style?.position?.type;\n\n\tif ( positionType === 'sticky' ) {\n\t\treturn __( 'Sticky' );\n\t}\n\n\tif ( positionType === 'fixed' ) {\n\t\treturn __( 'Fixed' );\n\t}\n\n\treturn null;\n}\n\n/**\n * Hook used to try to find a matching block variation and return\n * the appropriate information for display reasons. In order to\n * to try to find a match we need to things:\n * 1. Block's client id to extract it's current attributes.\n * 2. A block variation should have set `isActive` prop to a proper function.\n *\n * If for any reason a block variation match cannot be found,\n * the returned information come from the Block Type.\n * If no blockType is found with the provided clientId, returns null.\n *\n * @param {string} clientId Block's client id.\n * @return {?WPBlockDisplayInformation} Block's display information, or `null` when the block or its type not found.\n */\n\nexport default function useBlockDisplayInformation( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { getBlockName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tif ( ! blockType ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst isSynced =\n\t\t\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\t\t\tconst syncedTitle = isSynced\n\t\t\t\t? getBlockLabel( blockType, attributes )\n\t\t\t\t: undefined;\n\t\t\tconst title = syncedTitle || blockType.title;\n\t\t\tconst positionLabel = getPositionTypeLabel( attributes );\n\t\t\tconst blockTypeInfo = {\n\t\t\t\tisSynced,\n\t\t\t\ttitle,\n\t\t\t\ticon: blockType.icon,\n\t\t\t\tdescription: blockType.description,\n\t\t\t\tanchor: attributes?.anchor,\n\t\t\t\tpositionLabel,\n\t\t\t\tpositionType: attributes?.style?.position?.type,\n\t\t\t\tname: attributes?.metadata?.name,\n\t\t\t};\n\t\t\tif ( ! match ) {\n\t\t\t\treturn blockTypeInfo;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisSynced,\n\t\t\t\ttitle: match.title || blockType.title,\n\t\t\t\ticon: match.icon || blockType.icon,\n\t\t\t\tdescription: match.description || blockType.description,\n\t\t\t\tanchor: attributes?.anchor,\n\t\t\t\tpositionLabel,\n\t\t\t\tpositionType: attributes?.style?.position?.type,\n\t\t\t\tname: attributes?.metadata?.name,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -186,7 +186,9 @@ export default function useOnBlockDrop(targetRootClientId, targetBlockIndex, opt
186
186
  } = useDispatch(blockEditorStore);
187
187
  const registry = useRegistry();
188
188
  const insertOrReplaceBlocks = useCallback((blocks, updateSelection = true, initialPosition = 0, clientIdsToReplace = []) => {
189
- if (!Array.isArray(blocks)) blocks = [blocks];
189
+ if (!Array.isArray(blocks)) {
190
+ blocks = [blocks];
191
+ }
190
192
  const clientIds = getBlockOrder(targetRootClientId);
191
193
  const clientId = clientIds[targetBlockIndex];
192
194
  const blocksClientIds = blocks.map(block => block.clientId);
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","cloneBlock","createBlock","findTransform","getBlockTransforms","pasteHandler","store","blocksStore","useDispatch","useSelect","useRegistry","getFilesFromDataTransfer","blockEditorStore","parseDropEvent","event","result","srcRootClientId","srcClientIds","srcIndex","type","blocks","dataTransfer","Object","assign","JSON","parse","getData","err","onBlockDrop","targetRootClientId","targetBlockIndex","getBlockIndex","getClientIdsOfDescendants","moveBlocks","insertOrReplaceBlocks","clearSelectedBlock","operation","getBlock","sourceRootClientId","sourceClientIds","dropType","blocksToInsert","map","block","sourceBlockIndex","includes","some","id","clientId","isAtSameLevel","draggedBlockCount","length","insertIndex","onFilesDrop","getSettings","updateBlockAttributes","canInsertBlockType","files","mediaUpload","transformation","transform","blockName","isMatch","onHTMLDrop","HTML","mode","useOnBlockDrop","options","nearestSide","getBlockOrder","getBlocksByClientId","isGroupable","getGroupingBlockName","insertBlocks","moveBlocksToPosition","replaceBlocks","removeBlocks","registry","updateSelection","initialPosition","clientIdsToReplace","Array","isArray","clientIds","blocksClientIds","areGroupableBlocks","undefined","targetBlock","push","unshift","groupInnerBlocks","name","attributes","innerBlocks","areAllImages","every","galleryBlock","wrappedBlocks","layout","flexWrap","sourceBlocks","targetBlockClientIds","targetBlockClientId","batch","_onDrop","_onFilesDrop","_onHTMLDrop","html"],"sources":["@wordpress/block-editor/src/components/use-on-block-drop/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport {\n\tcloneBlock,\n\tcreateBlock,\n\tfindTransform,\n\tgetBlockTransforms,\n\tpasteHandler,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('react').SyntheticEvent} SyntheticEvent */\n/** @typedef {import('./types').WPDropOperation} WPDropOperation */\n\n/**\n * Retrieve the data for a block drop event.\n *\n * @param {SyntheticEvent} event The drop event.\n *\n * @return {Object} An object with block drag and drop data.\n */\nexport function parseDropEvent( event ) {\n\tlet result = {\n\t\tsrcRootClientId: null,\n\t\tsrcClientIds: null,\n\t\tsrcIndex: null,\n\t\ttype: null,\n\t\tblocks: null,\n\t};\n\n\tif ( ! event.dataTransfer ) {\n\t\treturn result;\n\t}\n\n\ttry {\n\t\tresult = Object.assign(\n\t\t\tresult,\n\t\t\tJSON.parse( event.dataTransfer.getData( 'wp-blocks' ) )\n\t\t);\n\t} catch ( err ) {\n\t\treturn result;\n\t}\n\n\treturn result;\n}\n\n/**\n * A function that returns an event handler function for block drop events.\n *\n * @param {string} targetRootClientId The root client id where the block(s) will be inserted.\n * @param {number} targetBlockIndex The index where the block(s) will be inserted.\n * @param {Function} getBlockIndex A function that gets the index of a block.\n * @param {Function} getClientIdsOfDescendants A function that gets the client ids of descendant blocks.\n * @param {Function} moveBlocks A function that moves blocks.\n * @param {Function} insertOrReplaceBlocks A function that inserts or replaces blocks.\n * @param {Function} clearSelectedBlock A function that clears block selection.\n * @param {string} operation The type of operation to perform on drop. Could be `insert` or `replace` or `group`.\n * @param {Function} getBlock A function that returns a block given its client id.\n * @return {Function} The event handler for a block drop event.\n */\nexport function onBlockDrop(\n\ttargetRootClientId,\n\ttargetBlockIndex,\n\tgetBlockIndex,\n\tgetClientIdsOfDescendants,\n\tmoveBlocks,\n\tinsertOrReplaceBlocks,\n\tclearSelectedBlock,\n\toperation,\n\tgetBlock\n) {\n\treturn ( event ) => {\n\t\tconst {\n\t\t\tsrcRootClientId: sourceRootClientId,\n\t\t\tsrcClientIds: sourceClientIds,\n\t\t\ttype: dropType,\n\t\t\tblocks,\n\t\t} = parseDropEvent( event );\n\n\t\t// If the user is inserting a block.\n\t\tif ( dropType === 'inserter' ) {\n\t\t\tclearSelectedBlock();\n\t\t\tconst blocksToInsert = blocks.map( ( block ) =>\n\t\t\t\tcloneBlock( block )\n\t\t\t);\n\t\t\tinsertOrReplaceBlocks( blocksToInsert, true, null );\n\t\t}\n\n\t\t// If the user is moving a block.\n\t\tif ( dropType === 'block' ) {\n\t\t\tconst sourceBlockIndex = getBlockIndex( sourceClientIds[ 0 ] );\n\n\t\t\t// If the user is dropping to the same position, return early.\n\t\t\tif (\n\t\t\t\tsourceRootClientId === targetRootClientId &&\n\t\t\t\tsourceBlockIndex === targetBlockIndex\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the user is attempting to drop a block within its own\n\t\t\t// nested blocks, return early as this would create infinite\n\t\t\t// recursion.\n\t\t\tif (\n\t\t\t\tsourceClientIds.includes( targetRootClientId ) ||\n\t\t\t\tgetClientIdsOfDescendants( sourceClientIds ).some(\n\t\t\t\t\t( id ) => id === targetRootClientId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the user is dropping a block over another block, replace both blocks\n\t\t\t// with a group block containing them\n\t\t\tif ( operation === 'group' ) {\n\t\t\t\tconst blocksToInsert = sourceClientIds.map( ( clientId ) =>\n\t\t\t\t\tgetBlock( clientId )\n\t\t\t\t);\n\t\t\t\tinsertOrReplaceBlocks(\n\t\t\t\t\tblocksToInsert,\n\t\t\t\t\ttrue,\n\t\t\t\t\tnull,\n\t\t\t\t\tsourceClientIds\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isAtSameLevel = sourceRootClientId === targetRootClientId;\n\t\t\tconst draggedBlockCount = sourceClientIds.length;\n\n\t\t\t// If the block is kept at the same level and moved downwards,\n\t\t\t// subtract to take into account that the blocks being dragged\n\t\t\t// were removed from the block list above the insertion point.\n\t\t\tconst insertIndex =\n\t\t\t\tisAtSameLevel && sourceBlockIndex < targetBlockIndex\n\t\t\t\t\t? targetBlockIndex - draggedBlockCount\n\t\t\t\t\t: targetBlockIndex;\n\n\t\t\tmoveBlocks( sourceClientIds, sourceRootClientId, insertIndex );\n\t\t}\n\t};\n}\n\n/**\n * A function that returns an event handler function for block-related file drop events.\n *\n * @param {string} targetRootClientId The root client id where the block(s) will be inserted.\n * @param {Function} getSettings A function that gets the block editor settings.\n * @param {Function} updateBlockAttributes A function that updates a block's attributes.\n * @param {Function} canInsertBlockType A function that returns checks whether a block type can be inserted.\n * @param {Function} insertOrReplaceBlocks A function that inserts or replaces blocks.\n *\n * @return {Function} The event handler for a block-related file drop event.\n */\nexport function onFilesDrop(\n\ttargetRootClientId,\n\tgetSettings,\n\tupdateBlockAttributes,\n\tcanInsertBlockType,\n\tinsertOrReplaceBlocks\n) {\n\treturn ( files ) => {\n\t\tif ( ! getSettings().mediaUpload ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transformation = findTransform(\n\t\t\tgetBlockTransforms( 'from' ),\n\t\t\t( transform ) =>\n\t\t\t\ttransform.type === 'files' &&\n\t\t\t\tcanInsertBlockType( transform.blockName, targetRootClientId ) &&\n\t\t\t\ttransform.isMatch( files )\n\t\t);\n\n\t\tif ( transformation ) {\n\t\t\tconst blocks = transformation.transform(\n\t\t\t\tfiles,\n\t\t\t\tupdateBlockAttributes\n\t\t\t);\n\t\t\tinsertOrReplaceBlocks( blocks );\n\t\t}\n\t};\n}\n\n/**\n * A function that returns an event handler function for block-related HTML drop events.\n *\n * @param {Function} insertOrReplaceBlocks A function that inserts or replaces blocks.\n *\n * @return {Function} The event handler for a block-related HTML drop event.\n */\nexport function onHTMLDrop( insertOrReplaceBlocks ) {\n\treturn ( HTML ) => {\n\t\tconst blocks = pasteHandler( { HTML, mode: 'BLOCKS' } );\n\n\t\tif ( blocks.length ) {\n\t\t\tinsertOrReplaceBlocks( blocks );\n\t\t}\n\t};\n}\n\n/**\n * A React hook for handling block drop events.\n *\n * @param {string} targetRootClientId The root client id where the block(s) will be inserted.\n * @param {number} targetBlockIndex The index where the block(s) will be inserted.\n * @param {Object} options The optional options.\n * @param {WPDropOperation} [options.operation] The type of operation to perform on drop. Could be `insert` or `replace` for now.\n *\n * @return {Function} A function to be passed to the onDrop handler.\n */\nexport default function useOnBlockDrop(\n\ttargetRootClientId,\n\ttargetBlockIndex,\n\toptions = {}\n) {\n\tconst { operation = 'insert', nearestSide = 'right' } = options;\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockIndex,\n\t\tgetClientIdsOfDescendants,\n\t\tgetBlockOrder,\n\t\tgetBlocksByClientId,\n\t\tgetSettings,\n\t\tgetBlock,\n\t\tisGroupable,\n\t} = useSelect( blockEditorStore );\n\tconst { getGroupingBlockName } = useSelect( blocksStore );\n\tconst {\n\t\tinsertBlocks,\n\t\tmoveBlocksToPosition,\n\t\tupdateBlockAttributes,\n\t\tclearSelectedBlock,\n\t\treplaceBlocks,\n\t\tremoveBlocks,\n\t} = useDispatch( blockEditorStore );\n\tconst registry = useRegistry();\n\n\tconst insertOrReplaceBlocks = useCallback(\n\t\t(\n\t\t\tblocks,\n\t\t\tupdateSelection = true,\n\t\t\tinitialPosition = 0,\n\t\t\tclientIdsToReplace = []\n\t\t) => {\n\t\t\tif ( ! Array.isArray( blocks ) ) blocks = [ blocks ];\n\n\t\t\tconst clientIds = getBlockOrder( targetRootClientId );\n\t\t\tconst clientId = clientIds[ targetBlockIndex ];\n\t\t\tconst blocksClientIds = blocks.map( ( block ) => block.clientId );\n\t\t\tconst areGroupableBlocks = isGroupable( [\n\t\t\t\t...blocksClientIds,\n\t\t\t\tclientId,\n\t\t\t] );\n\t\t\tif ( operation === 'replace' ) {\n\t\t\t\treplaceBlocks( clientId, blocks, undefined, initialPosition );\n\t\t\t} else if ( operation === 'group' && areGroupableBlocks ) {\n\t\t\t\tconst targetBlock = getBlock( clientId );\n\t\t\t\tif ( nearestSide === 'left' ) {\n\t\t\t\t\tblocks.push( targetBlock );\n\t\t\t\t} else {\n\t\t\t\t\tblocks.unshift( targetBlock );\n\t\t\t\t}\n\n\t\t\t\tconst groupInnerBlocks = blocks.map( ( block ) => {\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\tblock.attributes,\n\t\t\t\t\t\tblock.innerBlocks\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\t\t\tconst areAllImages = blocks.every( ( block ) => {\n\t\t\t\t\treturn block.name === 'core/image';\n\t\t\t\t} );\n\n\t\t\t\tconst galleryBlock = canInsertBlockType(\n\t\t\t\t\t'core/gallery',\n\t\t\t\t\ttargetRootClientId\n\t\t\t\t);\n\n\t\t\t\tconst wrappedBlocks = createBlock(\n\t\t\t\t\tareAllImages && galleryBlock\n\t\t\t\t\t\t? 'core/gallery'\n\t\t\t\t\t\t: getGroupingBlockName(),\n\t\t\t\t\t{\n\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\ttype: 'flex',\n\t\t\t\t\t\t\tflexWrap:\n\t\t\t\t\t\t\t\tareAllImages && galleryBlock ? null : 'nowrap',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tgroupInnerBlocks\n\t\t\t\t);\n\t\t\t\t// Need to make sure both the target block and the block being dragged are replaced\n\t\t\t\t// otherwise the dragged block will be duplicated.\n\t\t\t\treplaceBlocks(\n\t\t\t\t\t[ clientId, ...clientIdsToReplace ],\n\t\t\t\t\twrappedBlocks,\n\t\t\t\t\tundefined,\n\t\t\t\t\tinitialPosition\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\ttargetBlockIndex,\n\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\tupdateSelection,\n\t\t\t\t\tinitialPosition\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tgetBlockOrder,\n\t\t\ttargetRootClientId,\n\t\t\ttargetBlockIndex,\n\t\t\tisGroupable,\n\t\t\toperation,\n\t\t\treplaceBlocks,\n\t\t\tgetBlock,\n\t\t\tnearestSide,\n\t\t\tcanInsertBlockType,\n\t\t\tgetGroupingBlockName,\n\t\t\tinsertBlocks,\n\t\t]\n\t);\n\n\tconst moveBlocks = useCallback(\n\t\t( sourceClientIds, sourceRootClientId, insertIndex ) => {\n\t\t\tif ( operation === 'replace' ) {\n\t\t\t\tconst sourceBlocks = getBlocksByClientId( sourceClientIds );\n\t\t\t\tconst targetBlockClientIds =\n\t\t\t\t\tgetBlockOrder( targetRootClientId );\n\t\t\t\tconst targetBlockClientId =\n\t\t\t\t\ttargetBlockClientIds[ targetBlockIndex ];\n\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t// Remove the source blocks.\n\t\t\t\t\tremoveBlocks( sourceClientIds, false );\n\t\t\t\t\t// Replace the target block with the source blocks.\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\ttargetBlockClientId,\n\t\t\t\t\t\tsourceBlocks,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\tsourceClientIds,\n\t\t\t\t\tsourceRootClientId,\n\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\tinsertIndex\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\toperation,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlocksByClientId,\n\t\t\tmoveBlocksToPosition,\n\t\t\tregistry,\n\t\t\tremoveBlocks,\n\t\t\treplaceBlocks,\n\t\t\ttargetBlockIndex,\n\t\t\ttargetRootClientId,\n\t\t]\n\t);\n\n\tconst _onDrop = onBlockDrop(\n\t\ttargetRootClientId,\n\t\ttargetBlockIndex,\n\t\tgetBlockIndex,\n\t\tgetClientIdsOfDescendants,\n\t\tmoveBlocks,\n\t\tinsertOrReplaceBlocks,\n\t\tclearSelectedBlock,\n\t\toperation,\n\t\tgetBlock\n\t);\n\tconst _onFilesDrop = onFilesDrop(\n\t\ttargetRootClientId,\n\t\tgetSettings,\n\t\tupdateBlockAttributes,\n\t\tcanInsertBlockType,\n\t\tinsertOrReplaceBlocks\n\t);\n\tconst _onHTMLDrop = onHTMLDrop( insertOrReplaceBlocks );\n\n\treturn ( event ) => {\n\t\tconst files = getFilesFromDataTransfer( event.dataTransfer );\n\t\tconst html = event.dataTransfer.getData( 'text/html' );\n\n\t\t/**\n\t\t * From Windows Chrome 96, the `event.dataTransfer` returns both file object and HTML.\n\t\t * The order of the checks is important to recognise the HTML drop.\n\t\t */\n\t\tif ( html ) {\n\t\t\t_onHTMLDrop( html );\n\t\t} else if ( files.length ) {\n\t\t\t_onFilesDrop( files );\n\t\t} else {\n\t\t\t_onDrop( event );\n\t\t}\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","cloneBlock","createBlock","findTransform","getBlockTransforms","pasteHandler","store","blocksStore","useDispatch","useSelect","useRegistry","getFilesFromDataTransfer","blockEditorStore","parseDropEvent","event","result","srcRootClientId","srcClientIds","srcIndex","type","blocks","dataTransfer","Object","assign","JSON","parse","getData","err","onBlockDrop","targetRootClientId","targetBlockIndex","getBlockIndex","getClientIdsOfDescendants","moveBlocks","insertOrReplaceBlocks","clearSelectedBlock","operation","getBlock","sourceRootClientId","sourceClientIds","dropType","blocksToInsert","map","block","sourceBlockIndex","includes","some","id","clientId","isAtSameLevel","draggedBlockCount","length","insertIndex","onFilesDrop","getSettings","updateBlockAttributes","canInsertBlockType","files","mediaUpload","transformation","transform","blockName","isMatch","onHTMLDrop","HTML","mode","useOnBlockDrop","options","nearestSide","getBlockOrder","getBlocksByClientId","isGroupable","getGroupingBlockName","insertBlocks","moveBlocksToPosition","replaceBlocks","removeBlocks","registry","updateSelection","initialPosition","clientIdsToReplace","Array","isArray","clientIds","blocksClientIds","areGroupableBlocks","undefined","targetBlock","push","unshift","groupInnerBlocks","name","attributes","innerBlocks","areAllImages","every","galleryBlock","wrappedBlocks","layout","flexWrap","sourceBlocks","targetBlockClientIds","targetBlockClientId","batch","_onDrop","_onFilesDrop","_onHTMLDrop","html"],"sources":["@wordpress/block-editor/src/components/use-on-block-drop/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport {\n\tcloneBlock,\n\tcreateBlock,\n\tfindTransform,\n\tgetBlockTransforms,\n\tpasteHandler,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { getFilesFromDataTransfer } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/** @typedef {import('react').SyntheticEvent} SyntheticEvent */\n/** @typedef {import('./types').WPDropOperation} WPDropOperation */\n\n/**\n * Retrieve the data for a block drop event.\n *\n * @param {SyntheticEvent} event The drop event.\n *\n * @return {Object} An object with block drag and drop data.\n */\nexport function parseDropEvent( event ) {\n\tlet result = {\n\t\tsrcRootClientId: null,\n\t\tsrcClientIds: null,\n\t\tsrcIndex: null,\n\t\ttype: null,\n\t\tblocks: null,\n\t};\n\n\tif ( ! event.dataTransfer ) {\n\t\treturn result;\n\t}\n\n\ttry {\n\t\tresult = Object.assign(\n\t\t\tresult,\n\t\t\tJSON.parse( event.dataTransfer.getData( 'wp-blocks' ) )\n\t\t);\n\t} catch ( err ) {\n\t\treturn result;\n\t}\n\n\treturn result;\n}\n\n/**\n * A function that returns an event handler function for block drop events.\n *\n * @param {string} targetRootClientId The root client id where the block(s) will be inserted.\n * @param {number} targetBlockIndex The index where the block(s) will be inserted.\n * @param {Function} getBlockIndex A function that gets the index of a block.\n * @param {Function} getClientIdsOfDescendants A function that gets the client ids of descendant blocks.\n * @param {Function} moveBlocks A function that moves blocks.\n * @param {Function} insertOrReplaceBlocks A function that inserts or replaces blocks.\n * @param {Function} clearSelectedBlock A function that clears block selection.\n * @param {string} operation The type of operation to perform on drop. Could be `insert` or `replace` or `group`.\n * @param {Function} getBlock A function that returns a block given its client id.\n * @return {Function} The event handler for a block drop event.\n */\nexport function onBlockDrop(\n\ttargetRootClientId,\n\ttargetBlockIndex,\n\tgetBlockIndex,\n\tgetClientIdsOfDescendants,\n\tmoveBlocks,\n\tinsertOrReplaceBlocks,\n\tclearSelectedBlock,\n\toperation,\n\tgetBlock\n) {\n\treturn ( event ) => {\n\t\tconst {\n\t\t\tsrcRootClientId: sourceRootClientId,\n\t\t\tsrcClientIds: sourceClientIds,\n\t\t\ttype: dropType,\n\t\t\tblocks,\n\t\t} = parseDropEvent( event );\n\n\t\t// If the user is inserting a block.\n\t\tif ( dropType === 'inserter' ) {\n\t\t\tclearSelectedBlock();\n\t\t\tconst blocksToInsert = blocks.map( ( block ) =>\n\t\t\t\tcloneBlock( block )\n\t\t\t);\n\t\t\tinsertOrReplaceBlocks( blocksToInsert, true, null );\n\t\t}\n\n\t\t// If the user is moving a block.\n\t\tif ( dropType === 'block' ) {\n\t\t\tconst sourceBlockIndex = getBlockIndex( sourceClientIds[ 0 ] );\n\n\t\t\t// If the user is dropping to the same position, return early.\n\t\t\tif (\n\t\t\t\tsourceRootClientId === targetRootClientId &&\n\t\t\t\tsourceBlockIndex === targetBlockIndex\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the user is attempting to drop a block within its own\n\t\t\t// nested blocks, return early as this would create infinite\n\t\t\t// recursion.\n\t\t\tif (\n\t\t\t\tsourceClientIds.includes( targetRootClientId ) ||\n\t\t\t\tgetClientIdsOfDescendants( sourceClientIds ).some(\n\t\t\t\t\t( id ) => id === targetRootClientId\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the user is dropping a block over another block, replace both blocks\n\t\t\t// with a group block containing them\n\t\t\tif ( operation === 'group' ) {\n\t\t\t\tconst blocksToInsert = sourceClientIds.map( ( clientId ) =>\n\t\t\t\t\tgetBlock( clientId )\n\t\t\t\t);\n\t\t\t\tinsertOrReplaceBlocks(\n\t\t\t\t\tblocksToInsert,\n\t\t\t\t\ttrue,\n\t\t\t\t\tnull,\n\t\t\t\t\tsourceClientIds\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isAtSameLevel = sourceRootClientId === targetRootClientId;\n\t\t\tconst draggedBlockCount = sourceClientIds.length;\n\n\t\t\t// If the block is kept at the same level and moved downwards,\n\t\t\t// subtract to take into account that the blocks being dragged\n\t\t\t// were removed from the block list above the insertion point.\n\t\t\tconst insertIndex =\n\t\t\t\tisAtSameLevel && sourceBlockIndex < targetBlockIndex\n\t\t\t\t\t? targetBlockIndex - draggedBlockCount\n\t\t\t\t\t: targetBlockIndex;\n\n\t\t\tmoveBlocks( sourceClientIds, sourceRootClientId, insertIndex );\n\t\t}\n\t};\n}\n\n/**\n * A function that returns an event handler function for block-related file drop events.\n *\n * @param {string} targetRootClientId The root client id where the block(s) will be inserted.\n * @param {Function} getSettings A function that gets the block editor settings.\n * @param {Function} updateBlockAttributes A function that updates a block's attributes.\n * @param {Function} canInsertBlockType A function that returns checks whether a block type can be inserted.\n * @param {Function} insertOrReplaceBlocks A function that inserts or replaces blocks.\n *\n * @return {Function} The event handler for a block-related file drop event.\n */\nexport function onFilesDrop(\n\ttargetRootClientId,\n\tgetSettings,\n\tupdateBlockAttributes,\n\tcanInsertBlockType,\n\tinsertOrReplaceBlocks\n) {\n\treturn ( files ) => {\n\t\tif ( ! getSettings().mediaUpload ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst transformation = findTransform(\n\t\t\tgetBlockTransforms( 'from' ),\n\t\t\t( transform ) =>\n\t\t\t\ttransform.type === 'files' &&\n\t\t\t\tcanInsertBlockType( transform.blockName, targetRootClientId ) &&\n\t\t\t\ttransform.isMatch( files )\n\t\t);\n\n\t\tif ( transformation ) {\n\t\t\tconst blocks = transformation.transform(\n\t\t\t\tfiles,\n\t\t\t\tupdateBlockAttributes\n\t\t\t);\n\t\t\tinsertOrReplaceBlocks( blocks );\n\t\t}\n\t};\n}\n\n/**\n * A function that returns an event handler function for block-related HTML drop events.\n *\n * @param {Function} insertOrReplaceBlocks A function that inserts or replaces blocks.\n *\n * @return {Function} The event handler for a block-related HTML drop event.\n */\nexport function onHTMLDrop( insertOrReplaceBlocks ) {\n\treturn ( HTML ) => {\n\t\tconst blocks = pasteHandler( { HTML, mode: 'BLOCKS' } );\n\n\t\tif ( blocks.length ) {\n\t\t\tinsertOrReplaceBlocks( blocks );\n\t\t}\n\t};\n}\n\n/**\n * A React hook for handling block drop events.\n *\n * @param {string} targetRootClientId The root client id where the block(s) will be inserted.\n * @param {number} targetBlockIndex The index where the block(s) will be inserted.\n * @param {Object} options The optional options.\n * @param {WPDropOperation} [options.operation] The type of operation to perform on drop. Could be `insert` or `replace` for now.\n *\n * @return {Function} A function to be passed to the onDrop handler.\n */\nexport default function useOnBlockDrop(\n\ttargetRootClientId,\n\ttargetBlockIndex,\n\toptions = {}\n) {\n\tconst { operation = 'insert', nearestSide = 'right' } = options;\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockIndex,\n\t\tgetClientIdsOfDescendants,\n\t\tgetBlockOrder,\n\t\tgetBlocksByClientId,\n\t\tgetSettings,\n\t\tgetBlock,\n\t\tisGroupable,\n\t} = useSelect( blockEditorStore );\n\tconst { getGroupingBlockName } = useSelect( blocksStore );\n\tconst {\n\t\tinsertBlocks,\n\t\tmoveBlocksToPosition,\n\t\tupdateBlockAttributes,\n\t\tclearSelectedBlock,\n\t\treplaceBlocks,\n\t\tremoveBlocks,\n\t} = useDispatch( blockEditorStore );\n\tconst registry = useRegistry();\n\n\tconst insertOrReplaceBlocks = useCallback(\n\t\t(\n\t\t\tblocks,\n\t\t\tupdateSelection = true,\n\t\t\tinitialPosition = 0,\n\t\t\tclientIdsToReplace = []\n\t\t) => {\n\t\t\tif ( ! Array.isArray( blocks ) ) {\n\t\t\t\tblocks = [ blocks ];\n\t\t\t}\n\n\t\t\tconst clientIds = getBlockOrder( targetRootClientId );\n\t\t\tconst clientId = clientIds[ targetBlockIndex ];\n\t\t\tconst blocksClientIds = blocks.map( ( block ) => block.clientId );\n\t\t\tconst areGroupableBlocks = isGroupable( [\n\t\t\t\t...blocksClientIds,\n\t\t\t\tclientId,\n\t\t\t] );\n\t\t\tif ( operation === 'replace' ) {\n\t\t\t\treplaceBlocks( clientId, blocks, undefined, initialPosition );\n\t\t\t} else if ( operation === 'group' && areGroupableBlocks ) {\n\t\t\t\tconst targetBlock = getBlock( clientId );\n\t\t\t\tif ( nearestSide === 'left' ) {\n\t\t\t\t\tblocks.push( targetBlock );\n\t\t\t\t} else {\n\t\t\t\t\tblocks.unshift( targetBlock );\n\t\t\t\t}\n\n\t\t\t\tconst groupInnerBlocks = blocks.map( ( block ) => {\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\tblock.attributes,\n\t\t\t\t\t\tblock.innerBlocks\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\t\t\tconst areAllImages = blocks.every( ( block ) => {\n\t\t\t\t\treturn block.name === 'core/image';\n\t\t\t\t} );\n\n\t\t\t\tconst galleryBlock = canInsertBlockType(\n\t\t\t\t\t'core/gallery',\n\t\t\t\t\ttargetRootClientId\n\t\t\t\t);\n\n\t\t\t\tconst wrappedBlocks = createBlock(\n\t\t\t\t\tareAllImages && galleryBlock\n\t\t\t\t\t\t? 'core/gallery'\n\t\t\t\t\t\t: getGroupingBlockName(),\n\t\t\t\t\t{\n\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\ttype: 'flex',\n\t\t\t\t\t\t\tflexWrap:\n\t\t\t\t\t\t\t\tareAllImages && galleryBlock ? null : 'nowrap',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tgroupInnerBlocks\n\t\t\t\t);\n\t\t\t\t// Need to make sure both the target block and the block being dragged are replaced\n\t\t\t\t// otherwise the dragged block will be duplicated.\n\t\t\t\treplaceBlocks(\n\t\t\t\t\t[ clientId, ...clientIdsToReplace ],\n\t\t\t\t\twrappedBlocks,\n\t\t\t\t\tundefined,\n\t\t\t\t\tinitialPosition\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\ttargetBlockIndex,\n\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\tupdateSelection,\n\t\t\t\t\tinitialPosition\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tgetBlockOrder,\n\t\t\ttargetRootClientId,\n\t\t\ttargetBlockIndex,\n\t\t\tisGroupable,\n\t\t\toperation,\n\t\t\treplaceBlocks,\n\t\t\tgetBlock,\n\t\t\tnearestSide,\n\t\t\tcanInsertBlockType,\n\t\t\tgetGroupingBlockName,\n\t\t\tinsertBlocks,\n\t\t]\n\t);\n\n\tconst moveBlocks = useCallback(\n\t\t( sourceClientIds, sourceRootClientId, insertIndex ) => {\n\t\t\tif ( operation === 'replace' ) {\n\t\t\t\tconst sourceBlocks = getBlocksByClientId( sourceClientIds );\n\t\t\t\tconst targetBlockClientIds =\n\t\t\t\t\tgetBlockOrder( targetRootClientId );\n\t\t\t\tconst targetBlockClientId =\n\t\t\t\t\ttargetBlockClientIds[ targetBlockIndex ];\n\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t// Remove the source blocks.\n\t\t\t\t\tremoveBlocks( sourceClientIds, false );\n\t\t\t\t\t// Replace the target block with the source blocks.\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\ttargetBlockClientId,\n\t\t\t\t\t\tsourceBlocks,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\tsourceClientIds,\n\t\t\t\t\tsourceRootClientId,\n\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\tinsertIndex\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\toperation,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlocksByClientId,\n\t\t\tmoveBlocksToPosition,\n\t\t\tregistry,\n\t\t\tremoveBlocks,\n\t\t\treplaceBlocks,\n\t\t\ttargetBlockIndex,\n\t\t\ttargetRootClientId,\n\t\t]\n\t);\n\n\tconst _onDrop = onBlockDrop(\n\t\ttargetRootClientId,\n\t\ttargetBlockIndex,\n\t\tgetBlockIndex,\n\t\tgetClientIdsOfDescendants,\n\t\tmoveBlocks,\n\t\tinsertOrReplaceBlocks,\n\t\tclearSelectedBlock,\n\t\toperation,\n\t\tgetBlock\n\t);\n\tconst _onFilesDrop = onFilesDrop(\n\t\ttargetRootClientId,\n\t\tgetSettings,\n\t\tupdateBlockAttributes,\n\t\tcanInsertBlockType,\n\t\tinsertOrReplaceBlocks\n\t);\n\tconst _onHTMLDrop = onHTMLDrop( insertOrReplaceBlocks );\n\n\treturn ( event ) => {\n\t\tconst files = getFilesFromDataTransfer( event.dataTransfer );\n\t\tconst html = event.dataTransfer.getData( 'text/html' );\n\n\t\t/**\n\t\t * From Windows Chrome 96, the `event.dataTransfer` returns both file object and HTML.\n\t\t * The order of the checks is important to recognise the HTML drop.\n\t\t */\n\t\tif ( html ) {\n\t\t\t_onHTMLDrop( html );\n\t\t} else if ( files.length ) {\n\t\t\t_onFilesDrop( files );\n\t\t} else {\n\t\t\t_onDrop( event );\n\t\t}\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import { createElement } from "react";
2
2
  /**
3
3
  * External dependencies
4
4
  */
5
- import classnames from 'classnames';
5
+ import clsx from 'clsx';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -23,7 +23,7 @@ function Warning({
23
23
  all: 'initial'
24
24
  }
25
25
  }, createElement("div", {
26
- className: classnames(className, 'block-editor-warning')
26
+ className: clsx(className, 'block-editor-warning')
27
27
  }, createElement("div", {
28
28
  className: "block-editor-warning__contents"
29
29
  }, createElement("p", {
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","Children","DropdownMenu","MenuGroup","MenuItem","__","moreVertical","Warning","className","actions","children","secondaryActions","createElement","style","display","all","count","map","action","i","key","icon","label","popoverProps","position","noIcons","item","pos","onClick","title"],"sources":["@wordpress/block-editor/src/components/warning/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\nfunction Warning( { className, actions, children, secondaryActions } ) {\n\treturn (\n\t\t<div style={ { display: 'contents', all: 'initial' } }>\n\t\t\t<div className={ classnames( className, 'block-editor-warning' ) }>\n\t\t\t\t<div className=\"block-editor-warning__contents\">\n\t\t\t\t\t<p className=\"block-editor-warning__message\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</p>\n\n\t\t\t\t\t{ ( Children.count( actions ) > 0 || secondaryActions ) && (\n\t\t\t\t\t\t<div className=\"block-editor-warning__actions\">\n\t\t\t\t\t\t\t{ Children.count( actions ) > 0 &&\n\t\t\t\t\t\t\t\tChildren.map( actions, ( action, i ) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__action\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ action }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ secondaryActions && (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__secondary\"\n\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More options' ) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-warning__dropdown',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tnoIcons\n\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\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t\t{ secondaryActions.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( item, pos ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ item.onClick }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ pos }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/warning/README.md\n */\nexport default Warning;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,SAASC,OAAOA,CAAE;EAAEC,SAAS;EAAEC,OAAO;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAG;EACtE,OACCC,aAAA;IAAKC,KAAK,EAAG;MAAEC,OAAO,EAAE,UAAU;MAAEC,GAAG,EAAE;IAAU;EAAG,GACrDH,aAAA;IAAKJ,SAAS,EAAGR,UAAU,CAAEQ,SAAS,EAAE,sBAAuB;EAAG,GACjEI,aAAA;IAAKJ,SAAS,EAAC;EAAgC,GAC9CI,aAAA;IAAGJ,SAAS,EAAC;EAA+B,GACzCE,QACA,CAAC,EAEF,CAAET,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAAIE,gBAAgB,KACpDC,aAAA;IAAKJ,SAAS,EAAC;EAA+B,GAC3CP,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAC9BR,QAAQ,CAACgB,GAAG,CAAER,OAAO,EAAE,CAAES,MAAM,EAAEC,CAAC,KACjCP,aAAA;IACCQ,GAAG,EAAGD,CAAG;IACTX,SAAS,EAAC;EAA8B,GAEtCU,MACG,CACL,CAAC,EACFP,gBAAgB,IACjBC,aAAA,CAACV,YAAY;IACZM,SAAS,EAAC,iCAAiC;IAC3Ca,IAAI,EAAGf,YAAc;IACrBgB,KAAK,EAAGjB,EAAE,CAAE,cAAe,CAAG;IAC9BkB,YAAY,EAAG;MACdC,QAAQ,EAAE,aAAa;MACvBhB,SAAS,EACR;IACF,CAAG;IACHiB,OAAO;EAAA,GAEL,MACDb,aAAA,CAACT,SAAS,QACPQ,gBAAgB,CAACM,GAAG,CACrB,CAAES,IAAI,EAAEC,GAAG,KACVf,aAAA,CAACR,QAAQ;IACRwB,OAAO,EAAGF,IAAI,CAACE,OAAS;IACxBR,GAAG,EAAGO;EAAK,GAETD,IAAI,CAACG,KACE,CAEZ,CACU,CAEC,CAEX,CAEF,CACD,CACD,CAAC;AAER;;AAEA;AACA;AACA;AACA,eAAetB,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["clsx","Children","DropdownMenu","MenuGroup","MenuItem","__","moreVertical","Warning","className","actions","children","secondaryActions","createElement","style","display","all","count","map","action","i","key","icon","label","popoverProps","position","noIcons","item","pos","onClick","title"],"sources":["@wordpress/block-editor/src/components/warning/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\nfunction Warning( { className, actions, children, secondaryActions } ) {\n\treturn (\n\t\t<div style={ { display: 'contents', all: 'initial' } }>\n\t\t\t<div className={ clsx( className, 'block-editor-warning' ) }>\n\t\t\t\t<div className=\"block-editor-warning__contents\">\n\t\t\t\t\t<p className=\"block-editor-warning__message\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</p>\n\n\t\t\t\t\t{ ( Children.count( actions ) > 0 || secondaryActions ) && (\n\t\t\t\t\t\t<div className=\"block-editor-warning__actions\">\n\t\t\t\t\t\t\t{ Children.count( actions ) > 0 &&\n\t\t\t\t\t\t\t\tChildren.map( actions, ( action, i ) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__action\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ action }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ secondaryActions && (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__secondary\"\n\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More options' ) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-warning__dropdown',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tnoIcons\n\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\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t\t{ secondaryActions.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( item, pos ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ item.onClick }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ pos }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/warning/README.md\n */\nexport default Warning;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,SAASC,OAAOA,CAAE;EAAEC,SAAS;EAAEC,OAAO;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAG;EACtE,OACCC,aAAA;IAAKC,KAAK,EAAG;MAAEC,OAAO,EAAE,UAAU;MAAEC,GAAG,EAAE;IAAU;EAAG,GACrDH,aAAA;IAAKJ,SAAS,EAAGR,IAAI,CAAEQ,SAAS,EAAE,sBAAuB;EAAG,GAC3DI,aAAA;IAAKJ,SAAS,EAAC;EAAgC,GAC9CI,aAAA;IAAGJ,SAAS,EAAC;EAA+B,GACzCE,QACA,CAAC,EAEF,CAAET,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAAIE,gBAAgB,KACpDC,aAAA;IAAKJ,SAAS,EAAC;EAA+B,GAC3CP,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAC9BR,QAAQ,CAACgB,GAAG,CAAER,OAAO,EAAE,CAAES,MAAM,EAAEC,CAAC,KACjCP,aAAA;IACCQ,GAAG,EAAGD,CAAG;IACTX,SAAS,EAAC;EAA8B,GAEtCU,MACG,CACL,CAAC,EACFP,gBAAgB,IACjBC,aAAA,CAACV,YAAY;IACZM,SAAS,EAAC,iCAAiC;IAC3Ca,IAAI,EAAGf,YAAc;IACrBgB,KAAK,EAAGjB,EAAE,CAAE,cAAe,CAAG;IAC9BkB,YAAY,EAAG;MACdC,QAAQ,EAAE,aAAa;MACvBhB,SAAS,EACR;IACF,CAAG;IACHiB,OAAO;EAAA,GAEL,MACDb,aAAA,CAACT,SAAS,QACPQ,gBAAgB,CAACM,GAAG,CACrB,CAAES,IAAI,EAAEC,GAAG,KACVf,aAAA,CAACR,QAAQ;IACRwB,OAAO,EAAGF,IAAI,CAACE,OAAS;IACxBR,GAAG,EAAGO;EAAK,GAETD,IAAI,CAACG,KACE,CAEZ,CACU,CAEC,CAEX,CAEF,CACD,CACD,CAAC;AAER;;AAEA;AACA;AACA;AACA,eAAetB,OAAO","ignoreList":[]}
@@ -2,7 +2,7 @@ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * External dependencies
4
4
  */
5
- import classNames from 'classnames';
5
+ import clsx from 'clsx';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -49,7 +49,7 @@ function WritingFlow({
49
49
  return createElement(Fragment, null, before, createElement("div", {
50
50
  ...props,
51
51
  ref: useMergeRefs([ref, forwardedRef]),
52
- className: classNames(props.className, 'block-editor-writing-flow')
52
+ className: clsx(props.className, 'block-editor-writing-flow')
53
53
  }, children), after);
54
54
  }
55
55
 
@@ -1 +1 @@
1
- {"version":3,"names":["classNames","useSelect","__","useMergeRefs","useRefEffect","forwardRef","useMultiSelection","useTabNav","useArrowNav","useSelectAll","useDragSelection","useSelectionObserver","useClickSelection","useInput","useClipboardHandler","store","blockEditorStore","useWritingFlow","before","ref","after","hasMultiSelection","select","node","tabIndex","classList","add","setAttribute","remove","removeAttribute","WritingFlow","children","props","forwardedRef","createElement","Fragment","className"],"sources":["@wordpress/block-editor/src/components/writing-flow/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useMultiSelection from './use-multi-selection';\nimport useTabNav from './use-tab-nav';\nimport useArrowNav from './use-arrow-nav';\nimport useSelectAll from './use-select-all';\nimport useDragSelection from './use-drag-selection';\nimport useSelectionObserver from './use-selection-observer';\nimport useClickSelection from './use-click-selection';\nimport useInput from './use-input';\nimport useClipboardHandler from './use-clipboard-handler';\nimport { store as blockEditorStore } from '../../store';\n\nexport function useWritingFlow() {\n\tconst [ before, ref, after ] = useTabNav();\n\tconst hasMultiSelection = useSelect(\n\t\t( select ) => select( blockEditorStore ).hasMultiSelection(),\n\t\t[]\n\t);\n\n\treturn [\n\t\tbefore,\n\t\tuseMergeRefs( [\n\t\t\tref,\n\t\t\tuseClipboardHandler(),\n\t\t\tuseInput(),\n\t\t\tuseDragSelection(),\n\t\t\tuseSelectionObserver(),\n\t\t\tuseClickSelection(),\n\t\t\tuseMultiSelection(),\n\t\t\tuseSelectAll(),\n\t\t\tuseArrowNav(),\n\t\t\tuseRefEffect(\n\t\t\t\t( node ) => {\n\t\t\t\t\tnode.tabIndex = 0;\n\n\t\t\t\t\tif ( ! hasMultiSelection ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode.classList.add( 'has-multi-selection' );\n\t\t\t\t\tnode.setAttribute(\n\t\t\t\t\t\t'aria-label',\n\t\t\t\t\t\t__( 'Multiple selected blocks' )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tnode.classList.remove( 'has-multi-selection' );\n\t\t\t\t\t\tnode.removeAttribute( 'aria-label' );\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t[ hasMultiSelection ]\n\t\t\t),\n\t\t] ),\n\t\tafter,\n\t];\n}\n\nfunction WritingFlow( { children, ...props }, forwardedRef ) {\n\tconst [ before, ref, after ] = useWritingFlow();\n\treturn (\n\t\t<>\n\t\t\t{ before }\n\t\t\t<div\n\t\t\t\t{ ...props }\n\t\t\t\tref={ useMergeRefs( [ ref, forwardedRef ] ) }\n\t\t\t\tclassName={ classNames(\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'block-editor-writing-flow'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t\t{ after }\n\t\t</>\n\t);\n}\n\n/**\n * Handles selection and navigation across blocks. This component should be\n * wrapped around BlockList.\n *\n * @param {Object} props Component properties.\n * @param {Element} props.children Children to be rendered.\n */\nexport default forwardRef( WritingFlow );\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,EAAEC,YAAY,QAAQ,oBAAoB;AAC/D,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,SAAS,MAAM,eAAe;AACrC,OAAOC,WAAW,MAAM,iBAAiB;AACzC,OAAOC,YAAY,MAAM,kBAAkB;AAC3C,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,OAAO,SAASC,cAAcA,CAAA,EAAG;EAChC,MAAM,CAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,CAAE,GAAGb,SAAS,CAAC,CAAC;EAC1C,MAAMc,iBAAiB,GAAGpB,SAAS,CAChCqB,MAAM,IAAMA,MAAM,CAAEN,gBAAiB,CAAC,CAACK,iBAAiB,CAAC,CAAC,EAC5D,EACD,CAAC;EAED,OAAO,CACNH,MAAM,EACNf,YAAY,CAAE,CACbgB,GAAG,EACHL,mBAAmB,CAAC,CAAC,EACrBD,QAAQ,CAAC,CAAC,EACVH,gBAAgB,CAAC,CAAC,EAClBC,oBAAoB,CAAC,CAAC,EACtBC,iBAAiB,CAAC,CAAC,EACnBN,iBAAiB,CAAC,CAAC,EACnBG,YAAY,CAAC,CAAC,EACdD,WAAW,CAAC,CAAC,EACbJ,YAAY,CACTmB,IAAI,IAAM;IACXA,IAAI,CAACC,QAAQ,GAAG,CAAC;IAEjB,IAAK,CAAEH,iBAAiB,EAAG;MAC1B;IACD;IAEAE,IAAI,CAACE,SAAS,CAACC,GAAG,CAAE,qBAAsB,CAAC;IAC3CH,IAAI,CAACI,YAAY,CAChB,YAAY,EACZzB,EAAE,CAAE,0BAA2B,CAChC,CAAC;IAED,OAAO,MAAM;MACZqB,IAAI,CAACE,SAAS,CAACG,MAAM,CAAE,qBAAsB,CAAC;MAC9CL,IAAI,CAACM,eAAe,CAAE,YAAa,CAAC;IACrC,CAAC;EACF,CAAC,EACD,CAAER,iBAAiB,CACpB,CAAC,CACA,CAAC,EACHD,KAAK,CACL;AACF;AAEA,SAASU,WAAWA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,YAAY,EAAG;EAC5D,MAAM,CAAEf,MAAM,EAAEC,GAAG,EAAEC,KAAK,CAAE,GAAGH,cAAc,CAAC,CAAC;EAC/C,OACCiB,aAAA,CAAAC,QAAA,QACGjB,MAAM,EACRgB,aAAA;IAAA,GACMF,KAAK;IACVb,GAAG,EAAGhB,YAAY,CAAE,CAAEgB,GAAG,EAAEc,YAAY,CAAG,CAAG;IAC7CG,SAAS,EAAGpC,UAAU,CACrBgC,KAAK,CAACI,SAAS,EACf,2BACD;EAAG,GAEDL,QACE,CAAC,EACJX,KACD,CAAC;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAef,UAAU,CAAEyB,WAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useSelect","__","useMergeRefs","useRefEffect","forwardRef","useMultiSelection","useTabNav","useArrowNav","useSelectAll","useDragSelection","useSelectionObserver","useClickSelection","useInput","useClipboardHandler","store","blockEditorStore","useWritingFlow","before","ref","after","hasMultiSelection","select","node","tabIndex","classList","add","setAttribute","remove","removeAttribute","WritingFlow","children","props","forwardedRef","createElement","Fragment","className"],"sources":["@wordpress/block-editor/src/components/writing-flow/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useMultiSelection from './use-multi-selection';\nimport useTabNav from './use-tab-nav';\nimport useArrowNav from './use-arrow-nav';\nimport useSelectAll from './use-select-all';\nimport useDragSelection from './use-drag-selection';\nimport useSelectionObserver from './use-selection-observer';\nimport useClickSelection from './use-click-selection';\nimport useInput from './use-input';\nimport useClipboardHandler from './use-clipboard-handler';\nimport { store as blockEditorStore } from '../../store';\n\nexport function useWritingFlow() {\n\tconst [ before, ref, after ] = useTabNav();\n\tconst hasMultiSelection = useSelect(\n\t\t( select ) => select( blockEditorStore ).hasMultiSelection(),\n\t\t[]\n\t);\n\n\treturn [\n\t\tbefore,\n\t\tuseMergeRefs( [\n\t\t\tref,\n\t\t\tuseClipboardHandler(),\n\t\t\tuseInput(),\n\t\t\tuseDragSelection(),\n\t\t\tuseSelectionObserver(),\n\t\t\tuseClickSelection(),\n\t\t\tuseMultiSelection(),\n\t\t\tuseSelectAll(),\n\t\t\tuseArrowNav(),\n\t\t\tuseRefEffect(\n\t\t\t\t( node ) => {\n\t\t\t\t\tnode.tabIndex = 0;\n\n\t\t\t\t\tif ( ! hasMultiSelection ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode.classList.add( 'has-multi-selection' );\n\t\t\t\t\tnode.setAttribute(\n\t\t\t\t\t\t'aria-label',\n\t\t\t\t\t\t__( 'Multiple selected blocks' )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tnode.classList.remove( 'has-multi-selection' );\n\t\t\t\t\t\tnode.removeAttribute( 'aria-label' );\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t[ hasMultiSelection ]\n\t\t\t),\n\t\t] ),\n\t\tafter,\n\t];\n}\n\nfunction WritingFlow( { children, ...props }, forwardedRef ) {\n\tconst [ before, ref, after ] = useWritingFlow();\n\treturn (\n\t\t<>\n\t\t\t{ before }\n\t\t\t<div\n\t\t\t\t{ ...props }\n\t\t\t\tref={ useMergeRefs( [ ref, forwardedRef ] ) }\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'block-editor-writing-flow'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t\t{ after }\n\t\t</>\n\t);\n}\n\n/**\n * Handles selection and navigation across blocks. This component should be\n * wrapped around BlockList.\n *\n * @param {Object} props Component properties.\n * @param {Element} props.children Children to be rendered.\n */\nexport default forwardRef( WritingFlow );\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,EAAEC,YAAY,QAAQ,oBAAoB;AAC/D,SAASC,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,SAAS,MAAM,eAAe;AACrC,OAAOC,WAAW,MAAM,iBAAiB;AACzC,OAAOC,YAAY,MAAM,kBAAkB;AAC3C,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,OAAO,SAASC,cAAcA,CAAA,EAAG;EAChC,MAAM,CAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,CAAE,GAAGb,SAAS,CAAC,CAAC;EAC1C,MAAMc,iBAAiB,GAAGpB,SAAS,CAChCqB,MAAM,IAAMA,MAAM,CAAEN,gBAAiB,CAAC,CAACK,iBAAiB,CAAC,CAAC,EAC5D,EACD,CAAC;EAED,OAAO,CACNH,MAAM,EACNf,YAAY,CAAE,CACbgB,GAAG,EACHL,mBAAmB,CAAC,CAAC,EACrBD,QAAQ,CAAC,CAAC,EACVH,gBAAgB,CAAC,CAAC,EAClBC,oBAAoB,CAAC,CAAC,EACtBC,iBAAiB,CAAC,CAAC,EACnBN,iBAAiB,CAAC,CAAC,EACnBG,YAAY,CAAC,CAAC,EACdD,WAAW,CAAC,CAAC,EACbJ,YAAY,CACTmB,IAAI,IAAM;IACXA,IAAI,CAACC,QAAQ,GAAG,CAAC;IAEjB,IAAK,CAAEH,iBAAiB,EAAG;MAC1B;IACD;IAEAE,IAAI,CAACE,SAAS,CAACC,GAAG,CAAE,qBAAsB,CAAC;IAC3CH,IAAI,CAACI,YAAY,CAChB,YAAY,EACZzB,EAAE,CAAE,0BAA2B,CAChC,CAAC;IAED,OAAO,MAAM;MACZqB,IAAI,CAACE,SAAS,CAACG,MAAM,CAAE,qBAAsB,CAAC;MAC9CL,IAAI,CAACM,eAAe,CAAE,YAAa,CAAC;IACrC,CAAC;EACF,CAAC,EACD,CAAER,iBAAiB,CACpB,CAAC,CACA,CAAC,EACHD,KAAK,CACL;AACF;AAEA,SAASU,WAAWA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,YAAY,EAAG;EAC5D,MAAM,CAAEf,MAAM,EAAEC,GAAG,EAAEC,KAAK,CAAE,GAAGH,cAAc,CAAC,CAAC;EAC/C,OACCiB,aAAA,CAAAC,QAAA,QACGjB,MAAM,EACRgB,aAAA;IAAA,GACMF,KAAK;IACVb,GAAG,EAAGhB,YAAY,CAAE,CAAEgB,GAAG,EAAEc,YAAY,CAAG,CAAG;IAC7CG,SAAS,EAAGpC,IAAI,CACfgC,KAAK,CAACI,SAAS,EACf,2BACD;EAAG,GAEDL,QACE,CAAC,EACJX,KACD,CAAC;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAef,UAAU,CAAEyB,WAAY,CAAC","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
+ import { pasteHandler, findTransform, getBlockTransforms, hasBlockSupport } from '@wordpress/blocks';
4
5
  import { documentHasSelection, documentHasUncollapsedSelection } from '@wordpress/dom';
5
6
  import { useDispatch, useRegistry, useSelect } from '@wordpress/data';
6
7
  import { useRefEffect } from '@wordpress/compose';
@@ -10,7 +11,8 @@ import { useRefEffect } from '@wordpress/compose';
10
11
  */
11
12
  import { store as blockEditorStore } from '../../store';
12
13
  import { useNotifyCopy } from '../../utils/use-notify-copy';
13
- import { getPasteBlocks, setClipboardBlocks } from './utils';
14
+ import { setClipboardBlocks } from './utils';
15
+ import { getPasteEventData } from '../../utils/pasting';
14
16
  export default function useClipboardHandler() {
15
17
  const registry = useRegistry();
16
18
  const {
@@ -18,11 +20,13 @@ export default function useClipboardHandler() {
18
20
  getSelectedBlockClientIds,
19
21
  hasMultiSelection,
20
22
  getSettings,
23
+ getBlockName,
21
24
  __unstableIsFullySelected,
22
25
  __unstableIsSelectionCollapsed,
23
26
  __unstableIsSelectionMergeable,
24
27
  __unstableGetSelectedBlocksWithPartialSelection,
25
- canInsertBlockType
28
+ canInsertBlockType,
29
+ getBlockRootClientId
26
30
  } = useSelect(blockEditorStore);
27
31
  const {
28
32
  flashBlock,
@@ -30,7 +34,7 @@ export default function useClipboardHandler() {
30
34
  replaceBlocks,
31
35
  __unstableDeleteSelection,
32
36
  __unstableExpandSelection,
33
- insertBlocks
37
+ __unstableSplitSelection
34
38
  } = useDispatch(blockEditorStore);
35
39
  const notifyCopy = useNotifyCopy();
36
40
  return useRefEffect(node => {
@@ -43,32 +47,33 @@ export default function useClipboardHandler() {
43
47
  if (selectedBlockClientIds.length === 0) {
44
48
  return;
45
49
  }
46
-
47
- // Always handle multiple selected blocks.
48
- if (!hasMultiSelection()) {
49
- const {
50
- target
51
- } = event;
52
- const {
53
- ownerDocument
54
- } = target;
55
- // If copying, only consider actual text selection as selection.
56
- // Otherwise, any focus on an input field is considered.
57
- const hasSelection = event.type === 'copy' || event.type === 'cut' ? documentHasUncollapsedSelection(ownerDocument) : documentHasSelection(ownerDocument);
58
-
59
- // Let native copy behaviour take over in input fields.
60
- if (hasSelection) {
61
- return;
62
- }
63
- }
64
- if (!node.contains(event.target.ownerDocument.activeElement)) {
50
+ const {
51
+ activeElement
52
+ } = event.target.ownerDocument;
53
+ if (!node.contains(activeElement)) {
65
54
  return;
66
55
  }
67
- event.preventDefault();
68
56
  const isSelectionMergeable = __unstableIsSelectionMergeable();
69
57
  const shouldHandleWholeBlocks = __unstableIsSelectionCollapsed() || __unstableIsFullySelected();
70
58
  const expandSelectionIsNeeded = !shouldHandleWholeBlocks && !isSelectionMergeable;
71
59
  if (event.type === 'copy' || event.type === 'cut') {
60
+ if (!hasMultiSelection()) {
61
+ const {
62
+ target
63
+ } = event;
64
+ const {
65
+ ownerDocument
66
+ } = target;
67
+ // If copying, only consider actual text selection as selection.
68
+ // Otherwise, any focus on an input field is considered.
69
+ const hasSelection = event.type === 'copy' || event.type === 'cut' ? documentHasUncollapsedSelection(ownerDocument) : documentHasSelection(ownerDocument);
70
+
71
+ // Let native copy behaviour take over in input fields.
72
+ if (hasSelection) {
73
+ return;
74
+ }
75
+ }
76
+ event.preventDefault();
72
77
  if (selectedBlockClientIds.length === 1) {
73
78
  flashBlock(selectedBlockClientIds[0]);
74
79
  }
@@ -104,15 +109,57 @@ export default function useClipboardHandler() {
104
109
  const {
105
110
  __experimentalCanUserUseUnfilteredHTML: canUserUseUnfilteredHTML
106
111
  } = getSettings();
107
- const blocks = getPasteBlocks(event, canUserUseUnfilteredHTML);
108
- if (selectedBlockClientIds.length === 1) {
109
- const [selectedBlockClientId] = selectedBlockClientIds;
110
- if (blocks.every(block => canInsertBlockType(block.name, selectedBlockClientId))) {
111
- insertBlocks(blocks, undefined, selectedBlockClientId);
112
- return;
113
- }
112
+ const isInternal = event.clipboardData.getData('rich-text') === 'true';
113
+ if (isInternal) {
114
+ return;
115
+ }
116
+ const {
117
+ plainText,
118
+ html,
119
+ files
120
+ } = getPasteEventData(event);
121
+ const isFullySelected = __unstableIsFullySelected();
122
+ let blocks = [];
123
+ if (files.length) {
124
+ const fromTransforms = getBlockTransforms('from');
125
+ blocks = files.reduce((accumulator, file) => {
126
+ const transformation = findTransform(fromTransforms, transform => transform.type === 'files' && transform.isMatch([file]));
127
+ if (transformation) {
128
+ accumulator.push(transformation.transform([file]));
129
+ }
130
+ return accumulator;
131
+ }, []).flat();
132
+ } else {
133
+ blocks = pasteHandler({
134
+ HTML: html,
135
+ plainText,
136
+ mode: isFullySelected ? 'BLOCKS' : 'AUTO',
137
+ canUserUseUnfilteredHTML
138
+ });
139
+ }
140
+
141
+ // Inline paste: let rich text handle it.
142
+ if (typeof blocks === 'string') {
143
+ return;
144
+ }
145
+ if (isFullySelected) {
146
+ replaceBlocks(selectedBlockClientIds, blocks, blocks.length - 1, -1);
147
+ event.preventDefault();
148
+ return;
149
+ }
150
+
151
+ // If a block doesn't support splitting, let rich text paste
152
+ // inline.
153
+ if (!hasMultiSelection() && !hasBlockSupport(getBlockName(selectedBlockClientIds[0]), 'splitting', false) && !event.__deprecatedOnSplit) {
154
+ return;
155
+ }
156
+ const [firstSelectedClientId] = selectedBlockClientIds;
157
+ const rootClientId = getBlockRootClientId(firstSelectedClientId);
158
+ if (!blocks.every(block => canInsertBlockType(block.name, rootClientId))) {
159
+ return;
114
160
  }
115
- replaceBlocks(selectedBlockClientIds, blocks, blocks.length - 1, -1);
161
+ __unstableSplitSelection(blocks);
162
+ event.preventDefault();
116
163
  }
117
164
  }
118
165
  node.ownerDocument.addEventListener('copy', handler);
@@ -1 +1 @@
1
- {"version":3,"names":["documentHasSelection","documentHasUncollapsedSelection","useDispatch","useRegistry","useSelect","useRefEffect","store","blockEditorStore","useNotifyCopy","getPasteBlocks","setClipboardBlocks","useClipboardHandler","registry","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","insertBlocks","notifyCopy","node","handler","event","defaultPrevented","selectedBlockClientIds","length","target","ownerDocument","hasSelection","type","contains","activeElement","preventDefault","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","blocks","head","tail","inBetweenBlocks","slice","contentEditable","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","selectedBlockClientId","every","block","name","undefined","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { getPasteBlocks, setClipboardBlocks } from './utils';\n\nexport default function useClipboardHandler() {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\tinsertBlocks,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tsetClipboardBlocks( event, blocks, registry );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\tevent.target.ownerDocument.activeElement.contentEditable = false;\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst blocks = getPasteBlocks(\n\t\t\t\t\tevent,\n\t\t\t\t\tcanUserUseUnfilteredHTML\n\t\t\t\t);\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tconst [ selectedBlockClientId ] = selectedBlockClientIds;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tblocks.every( ( block ) =>\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["pasteHandler","findTransform","getBlockTransforms","hasBlockSupport","documentHasSelection","documentHasUncollapsedSelection","useDispatch","useRegistry","useSelect","useRefEffect","store","blockEditorStore","useNotifyCopy","setClipboardBlocks","getPasteEventData","useClipboardHandler","registry","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","getBlockName","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","getBlockRootClientId","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","__unstableSplitSelection","notifyCopy","node","handler","event","defaultPrevented","selectedBlockClientIds","length","activeElement","target","ownerDocument","contains","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","type","hasSelection","preventDefault","blocks","head","tail","inBetweenBlocks","slice","contentEditable","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","isInternal","clipboardData","getData","plainText","html","files","isFullySelected","fromTransforms","reduce","accumulator","file","transformation","transform","isMatch","push","flat","HTML","mode","__deprecatedOnSplit","firstSelectedClientId","rootClientId","every","block","name","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tpasteHandler,\n\tfindTransform,\n\tgetBlockTransforms,\n\thasBlockSupport,\n} from '@wordpress/blocks';\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { setClipboardBlocks } from './utils';\nimport { getPasteEventData } from '../../utils/pasting';\n\nexport default function useClipboardHandler() {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\tgetBlockName,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\t__unstableSplitSelection,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { activeElement } = event.target.ownerDocument;\n\n\t\t\tif ( ! node.contains( activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\t\tconst { target } = event;\n\t\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\t\tconst hasSelection =\n\t\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tsetClipboardBlocks( event, blocks, registry );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\tevent.target.ownerDocument.activeElement.contentEditable = false;\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst isInternal =\n\t\t\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\t\t\t\tif ( isInternal ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { plainText, html, files } = getPasteEventData( event );\n\t\t\t\tconst isFullySelected = __unstableIsFullySelected();\n\t\t\t\tlet blocks = [];\n\n\t\t\t\tif ( files.length ) {\n\t\t\t\t\tconst fromTransforms = getBlockTransforms( 'from' );\n\t\t\t\t\tblocks = files\n\t\t\t\t\t\t.reduce( ( accumulator, file ) => {\n\t\t\t\t\t\t\tconst transformation = findTransform(\n\t\t\t\t\t\t\t\tfromTransforms,\n\t\t\t\t\t\t\t\t( transform ) =>\n\t\t\t\t\t\t\t\t\ttransform.type === 'files' &&\n\t\t\t\t\t\t\t\t\ttransform.isMatch( [ file ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( transformation ) {\n\t\t\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\t\t\ttransformation.transform( [ file ] )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t.flat();\n\t\t\t\t} else {\n\t\t\t\t\tblocks = pasteHandler( {\n\t\t\t\t\t\tHTML: html,\n\t\t\t\t\t\tplainText,\n\t\t\t\t\t\tmode: isFullySelected ? 'BLOCKS' : 'AUTO',\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Inline paste: let rich text handle it.\n\t\t\t\tif ( typeof blocks === 'string' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( isFullySelected ) {\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\t\tblocks,\n\t\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t\t-1\n\t\t\t\t\t);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If a block doesn't support splitting, let rich text paste\n\t\t\t\t// inline.\n\t\t\t\tif (\n\t\t\t\t\t! hasMultiSelection() &&\n\t\t\t\t\t! hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( selectedBlockClientIds[ 0 ] ),\n\t\t\t\t\t\t'splitting',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) &&\n\t\t\t\t\t! event.__deprecatedOnSplit\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst [ firstSelectedClientId ] = selectedBlockClientIds;\n\t\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\t\tfirstSelectedClientId\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\t! blocks.every( ( block ) =>\n\t\t\t\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t__unstableSplitSelection( blocks );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -18,7 +18,9 @@ import { store as blockEditorStore } from '../../store';
18
18
  function setContentEditableWrapper(node, value) {
19
19
  node.contentEditable = value;
20
20
  // Firefox doesn't automatically move focus.
21
- if (value) node.focus();
21
+ if (value) {
22
+ node.focus();
23
+ }
22
24
  }
23
25
 
24
26
  /**