@wordpress/block-editor 14.4.0 → 14.5.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 (817) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +6 -2
  3. package/build/autocompleters/block.js.map +1 -1
  4. package/build/components/background-image-control/index.js +1 -1
  5. package/build/components/background-image-control/index.js.map +1 -1
  6. package/build/components/block-controls/slot.js.map +1 -1
  7. package/build/components/block-controls/slot.native.js.map +1 -1
  8. package/build/components/block-draggable/draggable-chip.js +1 -1
  9. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  10. package/build/components/block-list/block-invalid-warning.native.js +1 -1
  11. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  12. package/build/components/block-list/block-list-item.native.js.map +1 -1
  13. package/build/components/block-list/block.js.map +1 -1
  14. package/build/components/block-list/index.js +1 -0
  15. package/build/components/block-list/index.js.map +1 -1
  16. package/build/components/block-list/index.native.js.map +1 -1
  17. package/build/components/block-list/use-block-props/index.js.map +1 -1
  18. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +14 -6
  19. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  20. package/build/components/block-list/zoom-out-separator.js +10 -7
  21. package/build/components/block-list/zoom-out-separator.js.map +1 -1
  22. package/build/components/block-lock/modal.js +1 -1
  23. package/build/components/block-lock/modal.js.map +1 -1
  24. package/build/components/block-mover/button.js.map +1 -1
  25. package/build/components/block-parent-selector/index.js +1 -1
  26. package/build/components/block-parent-selector/index.js.map +1 -1
  27. package/build/components/block-pattern-setup/index.js.map +1 -1
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-popover/index.js +45 -2
  30. package/build/components/block-popover/index.js.map +1 -1
  31. package/build/components/block-preview/auto.js +1 -4
  32. package/build/components/block-preview/auto.js.map +1 -1
  33. package/build/components/block-preview/index.js.map +1 -1
  34. package/build/components/block-rename/modal.js +2 -2
  35. package/build/components/block-rename/modal.js.map +1 -1
  36. package/build/components/block-settings-menu/block-parent-selector-menu-item.js +1 -1
  37. package/build/components/block-settings-menu/block-parent-selector-menu-item.js.map +1 -1
  38. package/build/components/block-switcher/block-transformations-menu.native.js +1 -1
  39. package/build/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  40. package/build/components/block-switcher/index.js +2 -1
  41. package/build/components/block-switcher/index.js.map +1 -1
  42. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  43. package/build/components/block-switcher/use-transformed-patterns.js +1 -0
  44. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  45. package/build/components/block-switcher/utils.js +1 -0
  46. package/build/components/block-switcher/utils.js.map +1 -1
  47. package/build/components/block-toolbar/index.js.map +1 -1
  48. package/build/components/block-tools/index.js +0 -7
  49. package/build/components/block-tools/index.js.map +1 -1
  50. package/build/components/block-tools/insertion-point.js.map +1 -1
  51. package/build/components/block-tools/use-show-block-tools.js +7 -3
  52. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  53. package/build/components/block-tools/zoom-out-popover.js +3 -2
  54. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  55. package/build/components/block-tools/zoom-out-toolbar.js +3 -20
  56. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  57. package/build/components/block-types-list/index.js.map +1 -1
  58. package/build/components/block-types-list/index.native.js.map +1 -1
  59. package/build/components/block-variation-transforms/index.js +3 -2
  60. package/build/components/block-variation-transforms/index.js.map +1 -1
  61. package/build/components/border-radius-control/index.js.map +1 -1
  62. package/build/components/border-radius-control/utils.js.map +1 -1
  63. package/build/components/button-block-appender/index.js.map +1 -1
  64. package/build/components/color-style-selector/index.js.map +1 -1
  65. package/build/components/colors/utils.js.map +1 -1
  66. package/build/components/colors/with-colors.js.map +1 -1
  67. package/build/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
  68. package/build/components/date-format-picker/index.js +1 -0
  69. package/build/components/date-format-picker/index.js.map +1 -1
  70. package/build/components/duotone/utils.js.map +1 -1
  71. package/build/components/duotone-control/index.js.map +1 -1
  72. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  73. package/build/components/font-sizes/utils.js.map +1 -1
  74. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  75. package/build/components/global-styles/border-panel.js.map +1 -1
  76. package/build/components/global-styles/color-panel.js +1 -1
  77. package/build/components/global-styles/color-panel.js.map +1 -1
  78. package/build/components/global-styles/filters-panel.js.map +1 -1
  79. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  80. package/build/components/global-styles/get-global-styles-changes.js +2 -1
  81. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  82. package/build/components/global-styles/hooks.js.map +1 -1
  83. package/build/components/global-styles/typography-panel.js.map +1 -1
  84. package/build/components/global-styles/use-global-styles-context.native.js.map +1 -1
  85. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  86. package/build/components/global-styles/utils.js.map +1 -1
  87. package/build/components/gradients/use-gradient.js.map +1 -1
  88. package/build/components/grid/grid-item-movers.js.map +1 -1
  89. package/build/components/grid/grid-visualizer.js.map +1 -1
  90. package/build/components/iframe/index.js +49 -9
  91. package/build/components/iframe/index.js.map +1 -1
  92. package/build/components/image-editor/use-save-image.js +1 -1
  93. package/build/components/image-editor/use-save-image.js.map +1 -1
  94. package/build/components/inner-blocks/use-nested-settings-update.js +15 -8
  95. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  96. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +1 -1
  97. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  98. package/build/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  99. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  100. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +1 -1
  101. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  102. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  103. package/build/components/inserter/category-tabs/index.js +1 -10
  104. package/build/components/inserter/category-tabs/index.js.map +1 -1
  105. package/build/components/inserter/hooks/use-block-types-state.js +1 -1
  106. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  107. package/build/components/inserter/hooks/use-patterns-state.js +1 -1
  108. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  109. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  110. package/build/components/inserter/media-tab/media-preview.js +1 -1
  111. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  112. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  113. package/build/components/inserter/media-tab/utils.js.map +1 -1
  114. package/build/components/inserter/menu.js +5 -2
  115. package/build/components/inserter/menu.js.map +1 -1
  116. package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
  117. package/build/components/inserter/preview-panel.js.map +1 -1
  118. package/build/components/inserter/quick-inserter.js +1 -1
  119. package/build/components/inserter/quick-inserter.js.map +1 -1
  120. package/build/components/inserter/search-results.js +1 -1
  121. package/build/components/inserter/search-results.js.map +1 -1
  122. package/build/components/inserter/tabs.native.js.map +1 -1
  123. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  124. package/build/components/inspector-controls/fill.js.map +1 -1
  125. package/build/components/inspector-controls/fill.native.js.map +1 -1
  126. package/build/components/inspector-controls/slot.js.map +1 -1
  127. package/build/components/inspector-controls/slot.native.js.map +1 -1
  128. package/build/components/line-height-control/index.js.map +1 -1
  129. package/build/components/link-control/is-url-like.js.map +1 -1
  130. package/build/components/link-control/search-create-button.js +1 -1
  131. package/build/components/link-control/search-create-button.js.map +1 -1
  132. package/build/components/link-control/search-input.js +3 -5
  133. package/build/components/link-control/search-input.js.map +1 -1
  134. package/build/components/link-control/search-results.js +5 -15
  135. package/build/components/link-control/search-results.js.map +1 -1
  136. package/build/components/link-control/settings-drawer.js.map +1 -1
  137. package/build/components/link-control/use-rich-url-data.js.map +1 -1
  138. package/build/components/list-view/appender.js +1 -1
  139. package/build/components/list-view/appender.js.map +1 -1
  140. package/build/components/list-view/block-select-button.js.map +1 -1
  141. package/build/components/list-view/block.js.map +1 -1
  142. package/build/components/list-view/branch.js.map +1 -1
  143. package/build/components/list-view/drop-indicator.js.map +1 -1
  144. package/build/components/list-view/index.js.map +1 -1
  145. package/build/components/list-view/use-block-selection.js +2 -2
  146. package/build/components/list-view/use-block-selection.js.map +1 -1
  147. package/build/components/list-view/utils.js +1 -1
  148. package/build/components/list-view/utils.js.map +1 -1
  149. package/build/components/media-placeholder/index.native.js +1 -1
  150. package/build/components/media-placeholder/index.native.js.map +1 -1
  151. package/build/components/media-replace-flow/index.js.map +1 -1
  152. package/build/components/multi-selection-inspector/index.js +2 -2
  153. package/build/components/multi-selection-inspector/index.js.map +1 -1
  154. package/build/components/observe-typing/index.js +1 -0
  155. package/build/components/observe-typing/index.js.map +1 -1
  156. package/build/components/recursion-provider/index.js +1 -0
  157. package/build/components/recursion-provider/index.js.map +1 -1
  158. package/build/components/responsive-block-control/index.js +3 -3
  159. package/build/components/responsive-block-control/index.js.map +1 -1
  160. package/build/components/responsive-block-control/label.js +1 -1
  161. package/build/components/responsive-block-control/label.js.map +1 -1
  162. package/build/components/rich-text/content.js.map +1 -1
  163. package/build/components/rich-text/file-paste-handler.native.js.map +1 -1
  164. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  165. package/build/components/rich-text/format-toolbar/index.native.js.map +1 -1
  166. package/build/components/rich-text/index.js +3 -2
  167. package/build/components/rich-text/index.js.map +1 -1
  168. package/build/components/rich-text/multiline.js.map +1 -1
  169. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  170. package/build/components/rich-text/native/index.native.js.map +1 -1
  171. package/build/components/rich-text/native/use-format-types.js +1 -0
  172. package/build/components/rich-text/native/use-format-types.js.map +1 -1
  173. package/build/components/rich-text/toolbar-button.js.map +1 -1
  174. package/build/components/rich-text/use-format-types.js +1 -0
  175. package/build/components/rich-text/use-format-types.js.map +1 -1
  176. package/build/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  177. package/build/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  178. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  179. package/build/components/spacing-sizes-control/utils.js +1 -0
  180. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  181. package/build/components/tool-selector/index.js +9 -3
  182. package/build/components/tool-selector/index.js.map +1 -1
  183. package/build/components/typewriter/index.js +1 -0
  184. package/build/components/typewriter/index.js.map +1 -1
  185. package/build/components/unsupported-block-details/index.native.js.map +1 -1
  186. package/build/components/url-input/index.js +1 -1
  187. package/build/components/url-input/index.js.map +1 -1
  188. package/build/components/use-block-drop-zone/index.js.map +1 -1
  189. package/build/components/use-flash-editable-blocks/index.js.map +1 -1
  190. package/build/components/use-moving-animation/index.js.map +1 -1
  191. package/build/components/use-resize-canvas/index.js +1 -2
  192. package/build/components/use-resize-canvas/index.js.map +1 -1
  193. package/build/components/writing-flow/use-tab-nav.js +21 -5
  194. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  195. package/build/hooks/align.js.map +1 -1
  196. package/build/hooks/block-hooks.js +1 -1
  197. package/build/hooks/block-hooks.js.map +1 -1
  198. package/build/hooks/block-style-variation.js.map +1 -1
  199. package/build/hooks/duotone.js.map +1 -1
  200. package/build/hooks/font-family.js.map +1 -1
  201. package/build/hooks/gap.js.map +1 -1
  202. package/build/hooks/generated-class-name.js +1 -0
  203. package/build/hooks/generated-class-name.js.map +1 -1
  204. package/build/hooks/grid-visualizer.js +13 -11
  205. package/build/hooks/grid-visualizer.js.map +1 -1
  206. package/build/hooks/layout-child.js +41 -3
  207. package/build/hooks/layout-child.js.map +1 -1
  208. package/build/hooks/layout.js.map +1 -1
  209. package/build/hooks/position.js +1 -1
  210. package/build/hooks/position.js.map +1 -1
  211. package/build/hooks/spacing-visualizer.js.map +1 -1
  212. package/build/hooks/style.js.map +1 -1
  213. package/build/hooks/text-align.js.map +1 -1
  214. package/build/hooks/use-typography-props.js.map +1 -1
  215. package/build/hooks/use-zoom-out.js +24 -16
  216. package/build/hooks/use-zoom-out.js.map +1 -1
  217. package/build/layouts/constrained.js.map +1 -1
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/layouts/grid.js.map +1 -1
  220. package/build/layouts/utils.js.map +1 -1
  221. package/build/private-apis.js +2 -0
  222. package/build/private-apis.js.map +1 -1
  223. package/build/store/actions.js +5 -6
  224. package/build/store/actions.js.map +1 -1
  225. package/build/store/private-selectors.js.map +1 -1
  226. package/build/store/reducer.js +2 -18
  227. package/build/store/reducer.js.map +1 -1
  228. package/build/store/selectors.js +22 -15
  229. package/build/store/selectors.js.map +1 -1
  230. package/build/utils/block-bindings.js +9 -6
  231. package/build/utils/block-bindings.js.map +1 -1
  232. package/build/utils/get-font-styles-and-weights.js +1 -1
  233. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  234. package/build/utils/object.js +1 -0
  235. package/build/utils/object.js.map +1 -1
  236. package/build/utils/pasting.js.map +1 -1
  237. package/build-module/autocompleters/block.js +1 -3
  238. package/build-module/autocompleters/block.js.map +1 -1
  239. package/build-module/autocompleters/link.js +1 -3
  240. package/build-module/autocompleters/link.js.map +1 -1
  241. package/build-module/components/audio-player/index.native.js +1 -2
  242. package/build-module/components/audio-player/index.native.js.map +1 -1
  243. package/build-module/components/background-image-control/index.js +2 -3
  244. package/build-module/components/background-image-control/index.js.map +1 -1
  245. package/build-module/components/block-alignment-control/ui.js +1 -2
  246. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  247. package/build-module/components/block-breadcrumb/index.js +1 -2
  248. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  249. package/build-module/components/block-canvas/index.js +1 -2
  250. package/build-module/components/block-canvas/index.js.map +1 -1
  251. package/build-module/components/block-card/index.js +1 -2
  252. package/build-module/components/block-card/index.js.map +1 -1
  253. package/build-module/components/block-compare/block-view.js +1 -2
  254. package/build-module/components/block-compare/block-view.js.map +1 -1
  255. package/build-module/components/block-compare/index.js +1 -2
  256. package/build-module/components/block-compare/index.js.map +1 -1
  257. package/build-module/components/block-controls/fill.js +1 -3
  258. package/build-module/components/block-controls/fill.js.map +1 -1
  259. package/build-module/components/block-controls/slot.js.map +1 -1
  260. package/build-module/components/block-controls/slot.native.js.map +1 -1
  261. package/build-module/components/block-draggable/draggable-chip.js +2 -3
  262. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  263. package/build-module/components/block-draggable/draggable-chip.native.js +1 -2
  264. package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -1
  265. package/build-module/components/block-draggable/index.native.js +1 -3
  266. package/build-module/components/block-draggable/index.native.js.map +1 -1
  267. package/build-module/components/block-edit/index.js +1 -2
  268. package/build-module/components/block-edit/index.js.map +1 -1
  269. package/build-module/components/block-edit/multiple-usage-warning.js +1 -2
  270. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  271. package/build-module/components/block-inspector/index.js +1 -3
  272. package/build-module/components/block-inspector/index.js.map +1 -1
  273. package/build-module/components/block-list/block-crash-warning.js +1 -1
  274. package/build-module/components/block-list/block-crash-warning.js.map +1 -1
  275. package/build-module/components/block-list/block-crash-warning.native.js +1 -1
  276. package/build-module/components/block-list/block-crash-warning.native.js.map +1 -1
  277. package/build-module/components/block-list/block-invalid-warning.js +1 -3
  278. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  279. package/build-module/components/block-list/block-invalid-warning.native.js +1 -1
  280. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  281. package/build-module/components/block-list/block-list-item.native.js +1 -2
  282. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  283. package/build-module/components/block-list/block-selection-button.native.js +1 -2
  284. package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
  285. package/build-module/components/block-list/block.js +1 -3
  286. package/build-module/components/block-list/block.js.map +1 -1
  287. package/build-module/components/block-list/block.native.js +1 -2
  288. package/build-module/components/block-list/block.native.js.map +1 -1
  289. package/build-module/components/block-list/index.js +2 -2
  290. package/build-module/components/block-list/index.js.map +1 -1
  291. package/build-module/components/block-list/index.native.js +1 -3
  292. package/build-module/components/block-list/index.native.js.map +1 -1
  293. package/build-module/components/block-list/insertion-point.native.js +1 -2
  294. package/build-module/components/block-list/insertion-point.native.js.map +1 -1
  295. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  296. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +14 -6
  297. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  298. package/build-module/components/block-list/zoom-out-separator.js +10 -7
  299. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  300. package/build-module/components/block-lock/menu-item.js +1 -3
  301. package/build-module/components/block-lock/menu-item.js.map +1 -1
  302. package/build-module/components/block-lock/modal.js +2 -3
  303. package/build-module/components/block-lock/modal.js.map +1 -1
  304. package/build-module/components/block-lock/toolbar.js +1 -3
  305. package/build-module/components/block-lock/toolbar.js.map +1 -1
  306. package/build-module/components/block-media-update-progress/index.native.js +1 -2
  307. package/build-module/components/block-media-update-progress/index.native.js.map +1 -1
  308. package/build-module/components/block-mover/button.js +1 -3
  309. package/build-module/components/block-mover/button.js.map +1 -1
  310. package/build-module/components/block-mover/index.js +1 -2
  311. package/build-module/components/block-mover/index.js.map +1 -1
  312. package/build-module/components/block-mover/index.native.js +1 -2
  313. package/build-module/components/block-mover/index.native.js.map +1 -1
  314. package/build-module/components/block-navigation/dropdown.js +1 -2
  315. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  316. package/build-module/components/block-parent-selector/index.js +1 -1
  317. package/build-module/components/block-parent-selector/index.js.map +1 -1
  318. package/build-module/components/block-pattern-setup/index.js +1 -3
  319. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  320. package/build-module/components/block-pattern-setup/setup-toolbar.js +1 -2
  321. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  322. package/build-module/components/block-patterns-list/index.js +1 -3
  323. package/build-module/components/block-patterns-list/index.js.map +1 -1
  324. package/build-module/components/block-patterns-paging/index.js +1 -2
  325. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  326. package/build-module/components/block-popover/index.js +45 -2
  327. package/build-module/components/block-popover/index.js.map +1 -1
  328. package/build-module/components/block-preview/auto.js +2 -7
  329. package/build-module/components/block-preview/auto.js.map +1 -1
  330. package/build-module/components/block-preview/index.js +1 -2
  331. package/build-module/components/block-preview/index.js.map +1 -1
  332. package/build-module/components/block-quick-navigation/index.js +1 -2
  333. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  334. package/build-module/components/block-removal-warning-modal/index.js +1 -2
  335. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  336. package/build-module/components/block-rename/modal.js +3 -4
  337. package/build-module/components/block-rename/modal.js.map +1 -1
  338. package/build-module/components/block-rename/rename-control.js +1 -3
  339. package/build-module/components/block-rename/rename-control.js.map +1 -1
  340. package/build-module/components/block-settings/container.native.js +1 -3
  341. package/build-module/components/block-settings/container.native.js.map +1 -1
  342. package/build-module/components/block-settings-menu/block-parent-selector-menu-item.js +1 -1
  343. package/build-module/components/block-settings-menu/block-parent-selector-menu-item.js.map +1 -1
  344. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -3
  345. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  346. package/build-module/components/block-settings-menu-controls/index.js +1 -2
  347. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  348. package/build-module/components/block-styles/index.js +1 -2
  349. package/build-module/components/block-styles/index.js.map +1 -1
  350. package/build-module/components/block-styles/menu-items.js +1 -2
  351. package/build-module/components/block-styles/menu-items.js.map +1 -1
  352. package/build-module/components/block-styles/preview.native.js +1 -2
  353. package/build-module/components/block-styles/preview.native.js.map +1 -1
  354. package/build-module/components/block-switcher/block-transformations-menu.js +1 -3
  355. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  356. package/build-module/components/block-switcher/block-transformations-menu.native.js +1 -1
  357. package/build-module/components/block-switcher/block-transformations-menu.native.js.map +1 -1
  358. package/build-module/components/block-switcher/block-variation-transformations.js +1 -3
  359. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
  360. package/build-module/components/block-switcher/index.js +3 -4
  361. package/build-module/components/block-switcher/index.js.map +1 -1
  362. package/build-module/components/block-switcher/pattern-transformations-menu.js +1 -2
  363. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  364. package/build-module/components/block-switcher/preview-block-popover.js +1 -2
  365. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  366. package/build-module/components/block-switcher/use-transformed-patterns.js +1 -0
  367. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  368. package/build-module/components/block-switcher/utils.js +1 -0
  369. package/build-module/components/block-switcher/utils.js.map +1 -1
  370. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +1 -2
  371. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  372. package/build-module/components/block-toolbar/index.js +1 -3
  373. package/build-module/components/block-toolbar/index.js.map +1 -1
  374. package/build-module/components/block-toolbar/index.native.js +1 -3
  375. package/build-module/components/block-toolbar/index.native.js.map +1 -1
  376. package/build-module/components/block-tools/index.js +1 -9
  377. package/build-module/components/block-tools/index.js.map +1 -1
  378. package/build-module/components/block-tools/insertion-point.js +1 -2
  379. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  380. package/build-module/components/block-tools/use-show-block-tools.js +7 -3
  381. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  382. package/build-module/components/block-tools/zoom-out-popover.js +2 -1
  383. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  384. package/build-module/components/block-tools/zoom-out-toolbar.js +5 -23
  385. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  386. package/build-module/components/block-types-list/index.js +1 -2
  387. package/build-module/components/block-types-list/index.js.map +1 -1
  388. package/build-module/components/block-types-list/index.native.js +1 -2
  389. package/build-module/components/block-types-list/index.native.js.map +1 -1
  390. package/build-module/components/block-variation-picker/index.js +1 -2
  391. package/build-module/components/block-variation-picker/index.js.map +1 -1
  392. package/build-module/components/block-variation-picker/index.native.js +1 -2
  393. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  394. package/build-module/components/block-variation-transforms/index.js +4 -4
  395. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  396. package/build-module/components/border-radius-control/index.js +1 -3
  397. package/build-module/components/border-radius-control/index.js.map +1 -1
  398. package/build-module/components/border-radius-control/utils.js.map +1 -1
  399. package/build-module/components/button-block-appender/index.js.map +1 -1
  400. package/build-module/components/button-block-appender/index.native.js +1 -2
  401. package/build-module/components/button-block-appender/index.native.js.map +1 -1
  402. package/build-module/components/child-layout-control/index.js +1 -3
  403. package/build-module/components/child-layout-control/index.js.map +1 -1
  404. package/build-module/components/color-style-selector/index.js.map +1 -1
  405. package/build-module/components/colors/utils.js.map +1 -1
  406. package/build-module/components/colors/with-colors.js.map +1 -1
  407. package/build-module/components/colors-gradients/control.js +1 -2
  408. package/build-module/components/colors-gradients/control.js.map +1 -1
  409. package/build-module/components/colors-gradients/dropdown.js +1 -3
  410. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  411. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +1 -3
  412. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  413. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js +1 -3
  414. package/build-module/components/colors-gradients/panel-color-gradient-settings.native.js.map +1 -1
  415. package/build-module/components/contrast-checker/index.native.js +1 -2
  416. package/build-module/components/contrast-checker/index.native.js.map +1 -1
  417. package/build-module/components/convert-to-group-buttons/index.js +1 -3
  418. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  419. package/build-module/components/convert-to-group-buttons/toolbar.js +1 -2
  420. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  421. package/build-module/components/date-format-picker/index.js +2 -2
  422. package/build-module/components/date-format-picker/index.js.map +1 -1
  423. package/build-module/components/default-block-appender/index.js +1 -2
  424. package/build-module/components/default-block-appender/index.js.map +1 -1
  425. package/build-module/components/dimensions-tool/index.js +1 -3
  426. package/build-module/components/dimensions-tool/index.js.map +1 -1
  427. package/build-module/components/dimensions-tool/width-height-tool.js +1 -3
  428. package/build-module/components/dimensions-tool/width-height-tool.js.map +1 -1
  429. package/build-module/components/duotone/utils.js.map +1 -1
  430. package/build-module/components/duotone-control/index.js +1 -2
  431. package/build-module/components/duotone-control/index.js.map +1 -1
  432. package/build-module/components/editor-styles/index.js +1 -3
  433. package/build-module/components/editor-styles/index.js.map +1 -1
  434. package/build-module/components/floating-toolbar/index.native.js +1 -2
  435. package/build-module/components/floating-toolbar/index.native.js.map +1 -1
  436. package/build-module/components/floating-toolbar/nav-up-icon.js +1 -2
  437. package/build-module/components/floating-toolbar/nav-up-icon.js.map +1 -1
  438. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  439. package/build-module/components/font-sizes/utils.js.map +1 -1
  440. package/build-module/components/font-sizes/with-font-sizes.js +2 -2
  441. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  442. package/build-module/components/global-styles/advanced-panel.js +1 -2
  443. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  444. package/build-module/components/global-styles/border-panel.js +1 -2
  445. package/build-module/components/global-styles/border-panel.js.map +1 -1
  446. package/build-module/components/global-styles/color-panel.js +2 -3
  447. package/build-module/components/global-styles/color-panel.js.map +1 -1
  448. package/build-module/components/global-styles/dimensions-panel.js +1 -2
  449. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  450. package/build-module/components/global-styles/filters-panel.js +1 -2
  451. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  452. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  453. package/build-module/components/global-styles/get-global-styles-changes.js +2 -1
  454. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  455. package/build-module/components/global-styles/hooks.js.map +1 -1
  456. package/build-module/components/global-styles/image-settings-panel.js +1 -2
  457. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  458. package/build-module/components/global-styles/shadow-panel-components.js +1 -2
  459. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  460. package/build-module/components/global-styles/typography-panel.js +1 -2
  461. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  462. package/build-module/components/global-styles/use-global-styles-context.native.js.map +1 -1
  463. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  464. package/build-module/components/global-styles/utils.js.map +1 -1
  465. package/build-module/components/gradients/use-gradient.js.map +1 -1
  466. package/build-module/components/grid/grid-item-movers.js +1 -3
  467. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  468. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  469. package/build-module/components/height-control/index.js +1 -2
  470. package/build-module/components/height-control/index.js.map +1 -1
  471. package/build-module/components/iframe/index.js +50 -12
  472. package/build-module/components/iframe/index.js.map +1 -1
  473. package/build-module/components/image-editor/aspect-ratio-dropdown.js +1 -3
  474. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  475. package/build-module/components/image-editor/cropper.js +1 -3
  476. package/build-module/components/image-editor/cropper.js.map +1 -1
  477. package/build-module/components/image-editor/form-controls.js +1 -3
  478. package/build-module/components/image-editor/form-controls.js.map +1 -1
  479. package/build-module/components/image-editor/index.js +1 -2
  480. package/build-module/components/image-editor/index.js.map +1 -1
  481. package/build-module/components/image-editor/use-save-image.js +1 -1
  482. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  483. package/build-module/components/image-link-destinations/index.native.js +1 -3
  484. package/build-module/components/image-link-destinations/index.native.js.map +1 -1
  485. package/build-module/components/image-size-control/index.js +1 -3
  486. package/build-module/components/image-size-control/index.js.map +1 -1
  487. package/build-module/components/inner-blocks/use-nested-settings-update.js +16 -9
  488. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  489. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +1 -2
  490. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  491. package/build-module/components/inserter/block-patterns-explorer/index.js +1 -2
  492. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
  493. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -3
  494. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  495. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +3 -5
  496. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  497. package/build-module/components/inserter/block-patterns-tab/index.js +1 -3
  498. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  499. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +1 -3
  500. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  501. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +1 -3
  502. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  503. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +1 -1
  504. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  505. package/build-module/components/inserter/block-types-tab.js +1 -3
  506. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  507. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  508. package/build-module/components/inserter/category-tabs/index.js +3 -13
  509. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  510. package/build-module/components/inserter/hooks/use-block-types-state.js +1 -1
  511. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  512. package/build-module/components/inserter/hooks/use-patterns-state.js +1 -1
  513. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  514. package/build-module/components/inserter/index.native.js +1 -3
  515. package/build-module/components/inserter/index.native.js.map +1 -1
  516. package/build-module/components/inserter/media-tab/media-panel.js +1 -2
  517. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  518. package/build-module/components/inserter/media-tab/media-preview.js +2 -4
  519. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  520. package/build-module/components/inserter/media-tab/media-tab.js +1 -3
  521. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  522. package/build-module/components/inserter/media-tab/utils.js.map +1 -1
  523. package/build-module/components/inserter/menu.js +6 -5
  524. package/build-module/components/inserter/menu.js.map +1 -1
  525. package/build-module/components/inserter/menu.native.js +1 -3
  526. package/build-module/components/inserter/menu.native.js.map +1 -1
  527. package/build-module/components/inserter/mobile-tab-navigation.js +1 -2
  528. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
  529. package/build-module/components/inserter/no-results.js +1 -2
  530. package/build-module/components/inserter/no-results.js.map +1 -1
  531. package/build-module/components/inserter/no-results.native.js +1 -2
  532. package/build-module/components/inserter/no-results.native.js.map +1 -1
  533. package/build-module/components/inserter/panel.js +1 -3
  534. package/build-module/components/inserter/panel.js.map +1 -1
  535. package/build-module/components/inserter/preview-panel.js +1 -2
  536. package/build-module/components/inserter/preview-panel.js.map +1 -1
  537. package/build-module/components/inserter/quick-inserter.js +2 -3
  538. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  539. package/build-module/components/inserter/search-results.js +2 -3
  540. package/build-module/components/inserter/search-results.js.map +1 -1
  541. package/build-module/components/inserter/tabs.native.js.map +1 -1
  542. package/build-module/components/inserter-button/index.native.js +1 -2
  543. package/build-module/components/inserter-button/index.native.js.map +1 -1
  544. package/build-module/components/inserter-list-item/index.js +1 -2
  545. package/build-module/components/inserter-list-item/index.js.map +1 -1
  546. package/build-module/components/inserter-listbox/index.js +1 -2
  547. package/build-module/components/inserter-listbox/index.js.map +1 -1
  548. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  549. package/build-module/components/inspector-controls/fill.js.map +1 -1
  550. package/build-module/components/inspector-controls/fill.native.js +1 -3
  551. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  552. package/build-module/components/inspector-controls/slot.js.map +1 -1
  553. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  554. package/build-module/components/inspector-controls-tabs/index.js +1 -2
  555. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  556. package/build-module/components/inspector-controls-tabs/settings-tab.js +1 -3
  557. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  558. package/build-module/components/inspector-controls-tabs/styles-tab.js +1 -3
  559. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  560. package/build-module/components/inspector-popover-header/index.js +1 -2
  561. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  562. package/build-module/components/line-height-control/index.js.map +1 -1
  563. package/build-module/components/link-control/index.js +1 -3
  564. package/build-module/components/link-control/index.js.map +1 -1
  565. package/build-module/components/link-control/is-url-like.js.map +1 -1
  566. package/build-module/components/link-control/link-preview.js +1 -3
  567. package/build-module/components/link-control/link-preview.js.map +1 -1
  568. package/build-module/components/link-control/search-create-button.js +1 -1
  569. package/build-module/components/link-control/search-create-button.js.map +1 -1
  570. package/build-module/components/link-control/search-input.js +4 -7
  571. package/build-module/components/link-control/search-input.js.map +1 -1
  572. package/build-module/components/link-control/search-results.js +6 -17
  573. package/build-module/components/link-control/search-results.js.map +1 -1
  574. package/build-module/components/link-control/settings-drawer.js +1 -3
  575. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  576. package/build-module/components/link-control/settings.js +1 -2
  577. package/build-module/components/link-control/settings.js.map +1 -1
  578. package/build-module/components/link-control/use-rich-url-data.js.map +1 -1
  579. package/build-module/components/list-view/appender.js +2 -3
  580. package/build-module/components/list-view/appender.js.map +1 -1
  581. package/build-module/components/list-view/block-contents.js +1 -3
  582. package/build-module/components/list-view/block-contents.js.map +1 -1
  583. package/build-module/components/list-view/block-select-button.js +1 -2
  584. package/build-module/components/list-view/block-select-button.js.map +1 -1
  585. package/build-module/components/list-view/block.js +1 -3
  586. package/build-module/components/list-view/block.js.map +1 -1
  587. package/build-module/components/list-view/branch.js +1 -3
  588. package/build-module/components/list-view/branch.js.map +1 -1
  589. package/build-module/components/list-view/drop-indicator.js +1 -2
  590. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  591. package/build-module/components/list-view/index.js +1 -2
  592. package/build-module/components/list-view/index.js.map +1 -1
  593. package/build-module/components/list-view/use-block-selection.js +2 -2
  594. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  595. package/build-module/components/list-view/utils.js +1 -1
  596. package/build-module/components/list-view/utils.js.map +1 -1
  597. package/build-module/components/media-placeholder/index.js +1 -3
  598. package/build-module/components/media-placeholder/index.js.map +1 -1
  599. package/build-module/components/media-placeholder/index.native.js +2 -4
  600. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  601. package/build-module/components/media-replace-flow/index.js +1 -3
  602. package/build-module/components/media-replace-flow/index.js.map +1 -1
  603. package/build-module/components/media-upload/index.native.js +1 -3
  604. package/build-module/components/media-upload/index.native.js.map +1 -1
  605. package/build-module/components/media-upload-progress/index.native.js +1 -2
  606. package/build-module/components/media-upload-progress/index.native.js.map +1 -1
  607. package/build-module/components/multi-selection-inspector/index.js +3 -4
  608. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  609. package/build-module/components/observe-typing/index.js +1 -0
  610. package/build-module/components/observe-typing/index.js.map +1 -1
  611. package/build-module/components/provider/index.js +1 -2
  612. package/build-module/components/provider/index.js.map +1 -1
  613. package/build-module/components/publish-date-time-picker/index.js +1 -2
  614. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  615. package/build-module/components/recursion-provider/index.js +1 -0
  616. package/build-module/components/recursion-provider/index.js.map +1 -1
  617. package/build-module/components/responsive-block-control/index.js +4 -5
  618. package/build-module/components/responsive-block-control/index.js.map +1 -1
  619. package/build-module/components/responsive-block-control/label.js +2 -4
  620. package/build-module/components/responsive-block-control/label.js.map +1 -1
  621. package/build-module/components/rich-text/content.js.map +1 -1
  622. package/build-module/components/rich-text/event-listeners/before-input-rules.js +2 -2
  623. package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +1 -1
  624. package/build-module/components/rich-text/event-listeners/delete.js +2 -2
  625. package/build-module/components/rich-text/event-listeners/delete.js.map +1 -1
  626. package/build-module/components/rich-text/event-listeners/enter.js +2 -2
  627. package/build-module/components/rich-text/event-listeners/enter.js.map +1 -1
  628. package/build-module/components/rich-text/event-listeners/firefox-compat.js +2 -2
  629. package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +1 -1
  630. package/build-module/components/rich-text/event-listeners/input-events.js +2 -2
  631. package/build-module/components/rich-text/event-listeners/input-events.js.map +1 -1
  632. package/build-module/components/rich-text/event-listeners/input-rules.js +2 -2
  633. package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -1
  634. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +2 -2
  635. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -1
  636. package/build-module/components/rich-text/event-listeners/paste-handler.js +2 -2
  637. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  638. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +2 -2
  639. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -1
  640. package/build-module/components/rich-text/event-listeners/shortcuts.js +2 -2
  641. package/build-module/components/rich-text/event-listeners/shortcuts.js.map +1 -1
  642. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +2 -2
  643. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -1
  644. package/build-module/components/rich-text/file-paste-handler.native.js.map +1 -1
  645. package/build-module/components/rich-text/format-toolbar/index.js +1 -3
  646. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  647. package/build-module/components/rich-text/format-toolbar/index.native.js +1 -3
  648. package/build-module/components/rich-text/format-toolbar/index.native.js.map +1 -1
  649. package/build-module/components/rich-text/index.js +4 -5
  650. package/build-module/components/rich-text/index.js.map +1 -1
  651. package/build-module/components/rich-text/index.native.js +1 -3
  652. package/build-module/components/rich-text/index.native.js.map +1 -1
  653. package/build-module/components/rich-text/multiline.js.map +1 -1
  654. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  655. package/build-module/components/rich-text/native/index.js +1 -1
  656. package/build-module/components/rich-text/native/index.js.map +1 -1
  657. package/build-module/components/rich-text/native/index.native.js +1 -3
  658. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  659. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +1 -3
  660. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -1
  661. package/build-module/components/rich-text/native/use-format-types.js +1 -0
  662. package/build-module/components/rich-text/native/use-format-types.js.map +1 -1
  663. package/build-module/components/rich-text/toolbar-button.js.map +1 -1
  664. package/build-module/components/rich-text/use-format-types.js +1 -0
  665. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  666. package/build-module/components/spacing-sizes-control/index.js +1 -2
  667. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  668. package/build-module/components/spacing-sizes-control/input-controls/axial.js +1 -2
  669. package/build-module/components/spacing-sizes-control/input-controls/axial.js.map +1 -1
  670. package/build-module/components/spacing-sizes-control/input-controls/separated.js +1 -2
  671. package/build-module/components/spacing-sizes-control/input-controls/separated.js.map +1 -1
  672. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -3
  673. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  674. package/build-module/components/spacing-sizes-control/utils.js +1 -0
  675. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  676. package/build-module/components/tabbed-sidebar/index.js +1 -2
  677. package/build-module/components/tabbed-sidebar/index.js.map +1 -1
  678. package/build-module/components/tool-selector/index.js +10 -6
  679. package/build-module/components/tool-selector/index.js.map +1 -1
  680. package/build-module/components/typewriter/index.js +1 -0
  681. package/build-module/components/typewriter/index.js.map +1 -1
  682. package/build-module/components/unsupported-block-details/index.native.js +1 -2
  683. package/build-module/components/unsupported-block-details/index.native.js.map +1 -1
  684. package/build-module/components/url-input/button.js +1 -2
  685. package/build-module/components/url-input/button.js.map +1 -1
  686. package/build-module/components/url-input/index.js +2 -4
  687. package/build-module/components/url-input/index.js.map +1 -1
  688. package/build-module/components/url-popover/image-url-input-ui.js +1 -3
  689. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  690. package/build-module/components/url-popover/index.js +1 -2
  691. package/build-module/components/url-popover/index.js.map +1 -1
  692. package/build-module/components/url-popover/link-editor.js +1 -2
  693. package/build-module/components/url-popover/link-editor.js.map +1 -1
  694. package/build-module/components/url-popover/link-viewer.js +1 -2
  695. package/build-module/components/url-popover/link-viewer.js.map +1 -1
  696. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  697. package/build-module/components/use-flash-editable-blocks/index.js.map +1 -1
  698. package/build-module/components/use-moving-animation/index.js.map +1 -1
  699. package/build-module/components/use-resize-canvas/index.js +1 -2
  700. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  701. package/build-module/components/video-player/index.native.js +1 -2
  702. package/build-module/components/video-player/index.native.js.map +1 -1
  703. package/build-module/components/warning/index.js +1 -2
  704. package/build-module/components/warning/index.js.map +1 -1
  705. package/build-module/components/warning/index.native.js +1 -2
  706. package/build-module/components/warning/index.native.js.map +1 -1
  707. package/build-module/components/writing-flow/index.js +1 -3
  708. package/build-module/components/writing-flow/index.js.map +1 -1
  709. package/build-module/components/writing-flow/use-tab-nav.js +21 -5
  710. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  711. package/build-module/hooks/align.js.map +1 -1
  712. package/build-module/hooks/anchor.js +1 -3
  713. package/build-module/hooks/anchor.js.map +1 -1
  714. package/build-module/hooks/block-bindings.js +1 -3
  715. package/build-module/hooks/block-bindings.js.map +1 -1
  716. package/build-module/hooks/block-hooks.js +2 -3
  717. package/build-module/hooks/block-hooks.js.map +1 -1
  718. package/build-module/hooks/block-style-variation.js +1 -2
  719. package/build-module/hooks/block-style-variation.js.map +1 -1
  720. package/build-module/hooks/dimensions.js +1 -3
  721. package/build-module/hooks/dimensions.js.map +1 -1
  722. package/build-module/hooks/duotone.js +1 -3
  723. package/build-module/hooks/duotone.js.map +1 -1
  724. package/build-module/hooks/font-family.js.map +1 -1
  725. package/build-module/hooks/gap.js.map +1 -1
  726. package/build-module/hooks/generated-class-name.js +1 -0
  727. package/build-module/hooks/generated-class-name.js.map +1 -1
  728. package/build-module/hooks/grid-visualizer.js +14 -14
  729. package/build-module/hooks/grid-visualizer.js.map +1 -1
  730. package/build-module/hooks/layout-child.js +42 -6
  731. package/build-module/hooks/layout-child.js.map +1 -1
  732. package/build-module/hooks/layout.js +1 -3
  733. package/build-module/hooks/layout.js.map +1 -1
  734. package/build-module/hooks/position.js +1 -1
  735. package/build-module/hooks/position.js.map +1 -1
  736. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  737. package/build-module/hooks/style.js +1 -3
  738. package/build-module/hooks/style.js.map +1 -1
  739. package/build-module/hooks/text-align.js.map +1 -1
  740. package/build-module/hooks/typography.native.js +1 -2
  741. package/build-module/hooks/typography.native.js.map +1 -1
  742. package/build-module/hooks/use-bindings-attributes.js +1 -2
  743. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  744. package/build-module/hooks/use-typography-props.js.map +1 -1
  745. package/build-module/hooks/use-zoom-out.js +24 -17
  746. package/build-module/hooks/use-zoom-out.js.map +1 -1
  747. package/build-module/layouts/constrained.js +1 -3
  748. package/build-module/layouts/constrained.js.map +1 -1
  749. package/build-module/layouts/flex.js +1 -3
  750. package/build-module/layouts/flex.js.map +1 -1
  751. package/build-module/layouts/grid.js +1 -3
  752. package/build-module/layouts/grid.js.map +1 -1
  753. package/build-module/layouts/utils.js.map +1 -1
  754. package/build-module/private-apis.js +2 -0
  755. package/build-module/private-apis.js.map +1 -1
  756. package/build-module/store/actions.js +5 -6
  757. package/build-module/store/actions.js.map +1 -1
  758. package/build-module/store/private-selectors.js.map +1 -1
  759. package/build-module/store/reducer.js +1 -16
  760. package/build-module/store/reducer.js.map +1 -1
  761. package/build-module/store/selectors.js +21 -12
  762. package/build-module/store/selectors.js.map +1 -1
  763. package/build-module/utils/block-bindings.js +9 -6
  764. package/build-module/utils/block-bindings.js.map +1 -1
  765. package/build-module/utils/get-font-styles-and-weights.js +1 -1
  766. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  767. package/build-module/utils/get-px-from-css-unit.js +1 -1
  768. package/build-module/utils/get-px-from-css-unit.js.map +1 -1
  769. package/build-module/utils/object.js +1 -0
  770. package/build-module/utils/object.js.map +1 -1
  771. package/build-module/utils/pasting.js.map +1 -1
  772. package/build-style/content-rtl.css +13 -26
  773. package/build-style/content.css +13 -26
  774. package/build-style/style-rtl.css +23 -41
  775. package/build-style/style.css +23 -41
  776. package/package.json +33 -33
  777. package/src/components/block-canvas/style.scss +0 -1
  778. package/src/components/block-list/content.scss +3 -2
  779. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +25 -4
  780. package/src/components/block-list/zoom-out-separator.js +8 -6
  781. package/src/components/block-popover/index.js +64 -2
  782. package/src/components/block-preview/auto.js +1 -4
  783. package/src/components/block-tools/index.js +0 -11
  784. package/src/components/block-tools/style.scss +1 -1
  785. package/src/components/block-tools/use-show-block-tools.js +10 -3
  786. package/src/components/block-tools/zoom-out-popover.js +2 -1
  787. package/src/components/block-tools/zoom-out-toolbar.js +2 -23
  788. package/src/components/iframe/content.scss +27 -32
  789. package/src/components/iframe/index.js +63 -13
  790. package/src/components/iframe/style.scss +18 -0
  791. package/src/components/inner-blocks/use-nested-settings-update.js +16 -10
  792. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +1 -1
  793. package/src/components/inserter/category-tabs/index.js +1 -11
  794. package/src/components/inserter/menu.js +7 -2
  795. package/src/components/inserter/quick-inserter.js +1 -1
  796. package/src/components/inserter/style.scss +1 -41
  797. package/src/components/link-control/search-input.js +4 -5
  798. package/src/components/link-control/search-results.js +2 -13
  799. package/src/components/link-control/test/index.js +84 -46
  800. package/src/components/media-replace-flow/test/index.js +1 -1
  801. package/src/components/responsive-block-control/style.scss +0 -1
  802. package/src/components/rich-text/style.scss +5 -0
  803. package/src/components/tool-selector/index.js +7 -2
  804. package/src/components/use-resize-canvas/index.js +1 -3
  805. package/src/components/writing-flow/use-tab-nav.js +28 -4
  806. package/src/hooks/grid-visualizer.js +23 -9
  807. package/src/hooks/layout-child.js +48 -3
  808. package/src/hooks/use-zoom-out.js +36 -20
  809. package/src/private-apis.js +2 -0
  810. package/src/store/actions.js +3 -2
  811. package/src/store/reducer.js +0 -17
  812. package/src/store/selectors.js +23 -12
  813. package/src/store/test/private-selectors.js +7 -1
  814. package/src/store/test/selectors.js +13 -2
  815. package/src/style.scss +1 -0
  816. package/src/utils/block-bindings.js +9 -6
  817. package/src/utils/test/use-block-bindings-utils.js +174 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_element","_keycodes","_components","_compose","_data","_url","_store","_jsxRuntime","_react","isFunction","maybeFunc","URLInput","Component","constructor","props","onChange","bind","onFocus","onKeyDown","selectLink","handleOnClick","bindSuggestionNode","autocompleteRef","createRef","inputRef","updateSuggestions","debounce","suggestionNodes","suggestionsRequest","state","suggestions","showSuggestions","suggestionsValue","selectedSuggestion","suggestionsListboxId","suggestionOptionIdPrefix","componentDidUpdate","prevProps","value","__experimentalShowInitialSuggestions","scrollIntoView","behavior","block","inline","disableSuggestions","length","componentDidMount","shouldShowInitialSuggestions","componentWillUnmount","cancel","index","ref","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalHandleURLSuggestions","handleURLSuggestions","isInitialSuggestions","trim","isURL","setState","loading","request","then","debouncedSpeak","sprintf","_n","__","catch","finally","newValue","event","keyCode","UP","target","selectionStart","preventDefault","setSelectionRange","DOWN","ENTER","onSubmit","suggestion","previousIndex","nextIndex","TAB","speak","url","current","focus","getDerivedStateFromProps","instanceId","shouldShowSuggestions","hasValue","render","jsxs","Fragment","children","renderControl","renderSuggestions","label","className","isFullWidth","placeholder","__experimentalRenderControl","hideLabelFromVision","inputId","controlProps","id","clsx","inputProps","required","type","role","undefined","suffix","BaseControl","__nextHasNoMarginBottom","jsx","__experimentalInputControl","__next40pxDefaultSize","Spinner","__experimentalRenderSuggestions","suggestionsListProps","buildSuggestionItemProps","tabIndex","isLoading","handleSuggestionClick","currentInputValue","Popover","placement","focusOnMount","map","createElement","Button","key","onClick","title","_default","exports","default","compose","withSafeTimeout","withSpokenMessages","withInstanceId","withSelect","select","getSettings","blockEditorStore"],"sources":["@wordpress/block-editor/src/components/url-input/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Component, createRef } from '@wordpress/element';\nimport { UP, DOWN, ENTER, TAB } from '@wordpress/keycodes';\nimport {\n\tBaseControl,\n\tButton,\n\t__experimentalInputControl as InputControl,\n\tSpinner,\n\twithSpokenMessages,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tcompose,\n\tdebounce,\n\twithInstanceId,\n\twithSafeTimeout,\n} from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Whether the argument is a function.\n *\n * @param {*} maybeFunc The argument to check.\n * @return {boolean} True if the argument is a function, false otherwise.\n */\nfunction isFunction( maybeFunc ) {\n\treturn typeof maybeFunc === 'function';\n}\n\nclass URLInput extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onFocus = this.onFocus.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.selectLink = this.selectLink.bind( this );\n\t\tthis.handleOnClick = this.handleOnClick.bind( this );\n\t\tthis.bindSuggestionNode = this.bindSuggestionNode.bind( this );\n\t\tthis.autocompleteRef = props.autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = debounce(\n\t\t\tthis.updateSuggestions.bind( this ),\n\t\t\t200\n\t\t);\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.suggestionsRequest = null;\n\n\t\tthis.state = {\n\t\t\tsuggestions: [],\n\t\t\tshowSuggestions: false,\n\t\t\tsuggestionsValue: null,\n\t\t\tselectedSuggestion: null,\n\t\t\tsuggestionsListboxId: '',\n\t\t\tsuggestionOptionIdPrefix: '',\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\tconst { value, __experimentalShowInitialSuggestions = false } =\n\t\t\tthis.props;\n\n\t\t// Only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded.\n\t\tif (\n\t\t\tshowSuggestions &&\n\t\t\tselectedSuggestion !== null &&\n\t\t\tthis.suggestionNodes[ selectedSuggestion ]\n\t\t) {\n\t\t\tthis.suggestionNodes[ selectedSuggestion ].scrollIntoView( {\n\t\t\t\tbehavior: 'instant',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\n\t\t// Update suggestions when the value changes.\n\t\tif ( prevProps.value !== value && ! this.props.disableSuggestions ) {\n\t\t\tif ( value?.length ) {\n\t\t\t\t// If the new value is not empty we need to update with suggestions for it.\n\t\t\t\tthis.updateSuggestions( value );\n\t\t\t} else if ( __experimentalShowInitialSuggestions ) {\n\t\t\t\t// If the new value is empty and we can show initial suggestions, then show initial suggestions.\n\t\t\t\tthis.updateSuggestions();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.shouldShowInitialSuggestions() ) {\n\t\t\tthis.updateSuggestions();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.suggestionsRequest?.cancel?.();\n\t\tthis.suggestionsRequest = null;\n\t}\n\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n\tshouldShowInitialSuggestions() {\n\t\tconst { __experimentalShowInitialSuggestions = false, value } =\n\t\t\tthis.props;\n\t\treturn (\n\t\t\t__experimentalShowInitialSuggestions && ! ( value && value.length )\n\t\t);\n\t}\n\n\tupdateSuggestions( value = '' ) {\n\t\tconst {\n\t\t\t__experimentalFetchLinkSuggestions: fetchLinkSuggestions,\n\t\t\t__experimentalHandleURLSuggestions: handleURLSuggestions,\n\t\t} = this.props;\n\n\t\tif ( ! fetchLinkSuggestions ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Initial suggestions may only show if there is no value\n\t\t// (note: this includes whitespace).\n\t\tconst isInitialSuggestions = ! value?.length;\n\n\t\t// Trim only now we've determined whether or not it originally had a \"length\"\n\t\t// (even if that value was all whitespace).\n\t\tvalue = value.trim();\n\n\t\t// Allow a suggestions request if:\n\t\t// - there are at least 2 characters in the search input (except manual searches where\n\t\t// search input length is not required to trigger a fetch)\n\t\t// - this is a direct entry (eg: a URL)\n\t\tif (\n\t\t\t! isInitialSuggestions &&\n\t\t\t( value.length < 2 || ( ! handleURLSuggestions && isURL( value ) ) )\n\t\t) {\n\t\t\tthis.suggestionsRequest?.cancel?.();\n\t\t\tthis.suggestionsRequest = null;\n\n\t\t\tthis.setState( {\n\t\t\t\tsuggestions: [],\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tsuggestionsValue: value,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n\t\tconst request = fetchLinkSuggestions( value, {\n\t\t\tisInitialSuggestions,\n\t\t} );\n\n\t\trequest\n\t\t\t.then( ( suggestions ) => {\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tsuggestionsValue: value,\n\t\t\t\t\tloading: false,\n\t\t\t\t\tshowSuggestions: !! suggestions.length,\n\t\t\t\t} );\n\n\t\t\t\tif ( !! suggestions.length ) {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t/* translators: %s: number of results. */\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\t__( 'No results.' ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tloading: false,\n\t\t\t\t} );\n\t\t\t} )\n\t\t\t.finally( () => {\n\t\t\t\t// If this is the current promise then reset the reference\n\t\t\t\t// to allow for checking if a new request is made.\n\t\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\t\tthis.suggestionsRequest = null;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// Note that this assignment is handled *before* the async search request\n\t\t// as a Promise always resolves on the next tick of the event loop.\n\t\tthis.suggestionsRequest = request;\n\t}\n\n\tonChange( newValue ) {\n\t\tthis.props.onChange( newValue );\n\t}\n\n\tonFocus() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { disableSuggestions, value } = this.props;\n\n\t\t// When opening the link editor, if there's a value present, we want to load the suggestions pane with the results for this input search value\n\t\t// Don't re-run the suggestions on focus if there are already suggestions present (prevents searching again when tabbing between the input and buttons)\n\t\t// or there is already a request in progress.\n\t\tif (\n\t\t\tvalue &&\n\t\t\t! disableSuggestions &&\n\t\t\t! ( suggestions && suggestions.length ) &&\n\t\t\tthis.suggestionsRequest === null\n\t\t) {\n\t\t\t// Ensure the suggestions are updated with the current input value.\n\t\t\tthis.updateSuggestions( value );\n\t\t}\n\t}\n\n\tonKeyDown( event ) {\n\t\tthis.props.onKeyDown?.( event );\n\t\tconst { showSuggestions, selectedSuggestion, suggestions, loading } =\n\t\t\tthis.state;\n\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation.\n\t\tif ( ! showSuggestions || ! suggestions.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0.\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.props.value.length !== event.target.selectionStart\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position.\n\t\t\t\t\t\tevent.target.setSelectionRange(\n\t\t\t\t\t\t\tthis.props.value.length,\n\t\t\t\t\t\t\tthis.props.value.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// Submitting while loading should trigger onSubmit.\n\t\t\t\tcase ENTER: {\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst suggestion =\n\t\t\tthis.state.suggestions[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion\n\t\t\t\t\t? suggestions.length - 1\n\t\t\t\t\t: selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex =\n\t\t\t\t\tselectedSuggestion === null ||\n\t\t\t\t\tselectedSuggestion === suggestions.length - 1\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected.' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( suggestion, event );\n\t\t\t\t\t}\n\t\t\t\t} else if ( this.props.onSubmit ) {\n\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tselectLink( suggestion ) {\n\t\tthis.props.onChange( suggestion.url, suggestion );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n\thandleOnClick( suggestion ) {\n\t\tthis.selectLink( suggestion );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n\tstatic getDerivedStateFromProps(\n\t\t{\n\t\t\tvalue,\n\t\t\tinstanceId,\n\t\t\tdisableSuggestions,\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t},\n\t\t{ showSuggestions }\n\t) {\n\t\tlet shouldShowSuggestions = showSuggestions;\n\n\t\tconst hasValue = value && value.length;\n\n\t\tif ( ! __experimentalShowInitialSuggestions && ! hasValue ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\tif ( disableSuggestions === true ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\treturn {\n\t\t\tshowSuggestions: shouldShowSuggestions,\n\t\t\tsuggestionsListboxId: `block-editor-url-input-suggestions-${ instanceId }`,\n\t\t\tsuggestionOptionIdPrefix: `block-editor-url-input-suggestion-${ instanceId }`,\n\t\t};\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ this.renderControl() }\n\t\t\t\t{ this.renderSuggestions() }\n\t\t\t</>\n\t\t);\n\t}\n\n\trenderControl() {\n\t\tconst {\n\t\t\tlabel = null,\n\t\t\tclassName,\n\t\t\tisFullWidth,\n\t\t\tinstanceId,\n\t\t\tplaceholder = __( 'Paste URL or type to search' ),\n\t\t\t__experimentalRenderControl: renderControl,\n\t\t\tvalue = '',\n\t\t\thideLabelFromVision = false,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tloading,\n\t\t\tshowSuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t} = this.state;\n\n\t\tconst inputId = `url-input-control-${ instanceId }`;\n\n\t\tconst controlProps = {\n\t\t\tid: inputId, // Passes attribute to label for the for attribute\n\t\t\tlabel,\n\t\t\tclassName: clsx( 'block-editor-url-input', className, {\n\t\t\t\t'is-full-width': isFullWidth,\n\t\t\t} ),\n\t\t\thideLabelFromVision,\n\t\t};\n\n\t\tconst inputProps = {\n\t\t\tid: inputId,\n\t\t\tvalue,\n\t\t\trequired: true,\n\t\t\ttype: 'text',\n\t\t\tonChange: this.onChange,\n\t\t\tonFocus: this.onFocus,\n\t\t\tplaceholder,\n\t\t\tonKeyDown: this.onKeyDown,\n\t\t\trole: 'combobox',\n\t\t\t'aria-label': label ? undefined : __( 'URL' ), // Ensure input always has an accessible label\n\t\t\t'aria-expanded': showSuggestions,\n\t\t\t'aria-autocomplete': 'list',\n\t\t\t'aria-owns': suggestionsListboxId,\n\t\t\t'aria-activedescendant':\n\t\t\t\tselectedSuggestion !== null\n\t\t\t\t\t? `${ suggestionOptionIdPrefix }-${ selectedSuggestion }`\n\t\t\t\t\t: undefined,\n\t\t\tref: this.inputRef,\n\t\t\tsuffix: this.props.suffix,\n\t\t};\n\n\t\tif ( renderControl ) {\n\t\t\treturn renderControl( controlProps, inputProps, loading );\n\t\t}\n\n\t\treturn (\n\t\t\t<BaseControl __nextHasNoMarginBottom { ...controlProps }>\n\t\t\t\t<InputControl { ...inputProps } __next40pxDefaultSize />\n\t\t\t\t{ loading && <Spinner /> }\n\t\t\t</BaseControl>\n\t\t);\n\t}\n\n\trenderSuggestions() {\n\t\tconst {\n\t\t\tclassName,\n\t\t\t__experimentalRenderSuggestions: renderSuggestions,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tshowSuggestions,\n\t\t\tsuggestions,\n\t\t\tsuggestionsValue,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t\tloading,\n\t\t} = this.state;\n\n\t\tif ( ! showSuggestions || suggestions.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst suggestionsListProps = {\n\t\t\tid: suggestionsListboxId,\n\t\t\tref: this.autocompleteRef,\n\t\t\trole: 'listbox',\n\t\t};\n\n\t\tconst buildSuggestionItemProps = ( suggestion, index ) => {\n\t\t\treturn {\n\t\t\t\trole: 'option',\n\t\t\t\ttabIndex: '-1',\n\t\t\t\tid: `${ suggestionOptionIdPrefix }-${ index }`,\n\t\t\t\tref: this.bindSuggestionNode( index ),\n\t\t\t\t'aria-selected':\n\t\t\t\t\tindex === selectedSuggestion ? true : undefined,\n\t\t\t};\n\t\t};\n\n\t\tif ( isFunction( renderSuggestions ) ) {\n\t\t\treturn renderSuggestions( {\n\t\t\t\tsuggestions,\n\t\t\t\tselectedSuggestion,\n\t\t\t\tsuggestionsListProps,\n\t\t\t\tbuildSuggestionItemProps,\n\t\t\t\tisLoading: loading,\n\t\t\t\thandleSuggestionClick: this.handleOnClick,\n\t\t\t\tisInitialSuggestions: ! suggestionsValue?.length,\n\t\t\t\tcurrentInputValue: suggestionsValue,\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<Popover placement=\"bottom\" focusOnMount={ false }>\n\t\t\t\t<div\n\t\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-url-input__suggestions',\n\t\t\t\t\t\t`${ className }__suggestions`\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t{ ...buildSuggestionItemProps( suggestion, index ) }\n\t\t\t\t\t\t\tkey={ suggestion.id }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'block-editor-url-input__suggestion',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => this.handleOnClick( suggestion ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ suggestion.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) ) }\n\t\t\t\t</div>\n\t\t\t</Popover>\n\t\t);\n\t}\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-input/README.md\n */\nexport default compose(\n\twithSafeTimeout,\n\twithSpokenMessages,\n\twithInstanceId,\n\twithSelect( ( select, props ) => {\n\t\t// If a link suggestions handler is already provided then\n\t\t// bail.\n\t\tif ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\t__experimentalFetchLinkSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t} )\n)( URLInput );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_element","_keycodes","_components","_compose","_data","_url","_store","_jsxRuntime","_react","isFunction","maybeFunc","URLInput","Component","constructor","props","onChange","bind","onFocus","onKeyDown","selectLink","handleOnClick","bindSuggestionNode","autocompleteRef","createRef","inputRef","updateSuggestions","debounce","suggestionNodes","suggestionsRequest","state","suggestions","showSuggestions","suggestionsValue","selectedSuggestion","suggestionsListboxId","suggestionOptionIdPrefix","componentDidUpdate","prevProps","value","__experimentalShowInitialSuggestions","scrollIntoView","behavior","block","inline","disableSuggestions","length","componentDidMount","shouldShowInitialSuggestions","componentWillUnmount","cancel","index","ref","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalHandleURLSuggestions","handleURLSuggestions","isInitialSuggestions","trim","isURL","setState","loading","request","then","debouncedSpeak","sprintf","_n","__","catch","finally","newValue","event","keyCode","UP","target","selectionStart","preventDefault","setSelectionRange","DOWN","ENTER","onSubmit","suggestion","previousIndex","nextIndex","TAB","speak","url","current","focus","getDerivedStateFromProps","instanceId","shouldShowSuggestions","hasValue","render","jsxs","Fragment","children","renderControl","renderSuggestions","label","className","isFullWidth","placeholder","__experimentalRenderControl","hideLabelFromVision","inputId","controlProps","id","clsx","inputProps","required","type","role","undefined","suffix","BaseControl","__nextHasNoMarginBottom","jsx","__experimentalInputControl","__next40pxDefaultSize","Spinner","__experimentalRenderSuggestions","suggestionsListProps","buildSuggestionItemProps","tabIndex","isLoading","handleSuggestionClick","currentInputValue","Popover","placement","focusOnMount","map","createElement","Button","key","onClick","title","_default","exports","default","compose","withSafeTimeout","withSpokenMessages","withInstanceId","withSelect","select","getSettings","blockEditorStore"],"sources":["@wordpress/block-editor/src/components/url-input/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Component, createRef } from '@wordpress/element';\nimport { UP, DOWN, ENTER, TAB } from '@wordpress/keycodes';\nimport {\n\tBaseControl,\n\tButton,\n\t__experimentalInputControl as InputControl,\n\tSpinner,\n\twithSpokenMessages,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tcompose,\n\tdebounce,\n\twithInstanceId,\n\twithSafeTimeout,\n} from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Whether the argument is a function.\n *\n * @param {*} maybeFunc The argument to check.\n * @return {boolean} True if the argument is a function, false otherwise.\n */\nfunction isFunction( maybeFunc ) {\n\treturn typeof maybeFunc === 'function';\n}\n\nclass URLInput extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onFocus = this.onFocus.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.selectLink = this.selectLink.bind( this );\n\t\tthis.handleOnClick = this.handleOnClick.bind( this );\n\t\tthis.bindSuggestionNode = this.bindSuggestionNode.bind( this );\n\t\tthis.autocompleteRef = props.autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = debounce(\n\t\t\tthis.updateSuggestions.bind( this ),\n\t\t\t200\n\t\t);\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.suggestionsRequest = null;\n\n\t\tthis.state = {\n\t\t\tsuggestions: [],\n\t\t\tshowSuggestions: false,\n\t\t\tsuggestionsValue: null,\n\t\t\tselectedSuggestion: null,\n\t\t\tsuggestionsListboxId: '',\n\t\t\tsuggestionOptionIdPrefix: '',\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\tconst { value, __experimentalShowInitialSuggestions = false } =\n\t\t\tthis.props;\n\n\t\t// Only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded.\n\t\tif (\n\t\t\tshowSuggestions &&\n\t\t\tselectedSuggestion !== null &&\n\t\t\tthis.suggestionNodes[ selectedSuggestion ]\n\t\t) {\n\t\t\tthis.suggestionNodes[ selectedSuggestion ].scrollIntoView( {\n\t\t\t\tbehavior: 'instant',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\n\t\t// Update suggestions when the value changes.\n\t\tif ( prevProps.value !== value && ! this.props.disableSuggestions ) {\n\t\t\tif ( value?.length ) {\n\t\t\t\t// If the new value is not empty we need to update with suggestions for it.\n\t\t\t\tthis.updateSuggestions( value );\n\t\t\t} else if ( __experimentalShowInitialSuggestions ) {\n\t\t\t\t// If the new value is empty and we can show initial suggestions, then show initial suggestions.\n\t\t\t\tthis.updateSuggestions();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.shouldShowInitialSuggestions() ) {\n\t\t\tthis.updateSuggestions();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.suggestionsRequest?.cancel?.();\n\t\tthis.suggestionsRequest = null;\n\t}\n\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n\tshouldShowInitialSuggestions() {\n\t\tconst { __experimentalShowInitialSuggestions = false, value } =\n\t\t\tthis.props;\n\t\treturn (\n\t\t\t__experimentalShowInitialSuggestions && ! ( value && value.length )\n\t\t);\n\t}\n\n\tupdateSuggestions( value = '' ) {\n\t\tconst {\n\t\t\t__experimentalFetchLinkSuggestions: fetchLinkSuggestions,\n\t\t\t__experimentalHandleURLSuggestions: handleURLSuggestions,\n\t\t} = this.props;\n\n\t\tif ( ! fetchLinkSuggestions ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Initial suggestions may only show if there is no value\n\t\t// (note: this includes whitespace).\n\t\tconst isInitialSuggestions = ! value?.length;\n\n\t\t// Trim only now we've determined whether or not it originally had a \"length\"\n\t\t// (even if that value was all whitespace).\n\t\tvalue = value.trim();\n\n\t\t// Allow a suggestions request if:\n\t\t// - there are at least 2 characters in the search input (except manual searches where\n\t\t// search input length is not required to trigger a fetch)\n\t\t// - this is a direct entry (eg: a URL)\n\t\tif (\n\t\t\t! isInitialSuggestions &&\n\t\t\t( value.length < 2 || ( ! handleURLSuggestions && isURL( value ) ) )\n\t\t) {\n\t\t\tthis.suggestionsRequest?.cancel?.();\n\t\t\tthis.suggestionsRequest = null;\n\n\t\t\tthis.setState( {\n\t\t\t\tsuggestions: [],\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tsuggestionsValue: value,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n\t\tconst request = fetchLinkSuggestions( value, {\n\t\t\tisInitialSuggestions,\n\t\t} );\n\n\t\trequest\n\t\t\t.then( ( suggestions ) => {\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tsuggestionsValue: value,\n\t\t\t\t\tloading: false,\n\t\t\t\t\tshowSuggestions: !! suggestions.length,\n\t\t\t\t} );\n\n\t\t\t\tif ( !! suggestions.length ) {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t/* translators: %s: number of results. */\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\t__( 'No results.' ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tloading: false,\n\t\t\t\t} );\n\t\t\t} )\n\t\t\t.finally( () => {\n\t\t\t\t// If this is the current promise then reset the reference\n\t\t\t\t// to allow for checking if a new request is made.\n\t\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\t\tthis.suggestionsRequest = null;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// Note that this assignment is handled *before* the async search request\n\t\t// as a Promise always resolves on the next tick of the event loop.\n\t\tthis.suggestionsRequest = request;\n\t}\n\n\tonChange( newValue ) {\n\t\tthis.props.onChange( newValue );\n\t}\n\n\tonFocus() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { disableSuggestions, value } = this.props;\n\n\t\t// When opening the link editor, if there's a value present, we want to load the suggestions pane with the results for this input search value\n\t\t// Don't re-run the suggestions on focus if there are already suggestions present (prevents searching again when tabbing between the input and buttons)\n\t\t// or there is already a request in progress.\n\t\tif (\n\t\t\tvalue &&\n\t\t\t! disableSuggestions &&\n\t\t\t! ( suggestions && suggestions.length ) &&\n\t\t\tthis.suggestionsRequest === null\n\t\t) {\n\t\t\t// Ensure the suggestions are updated with the current input value.\n\t\t\tthis.updateSuggestions( value );\n\t\t}\n\t}\n\n\tonKeyDown( event ) {\n\t\tthis.props.onKeyDown?.( event );\n\t\tconst { showSuggestions, selectedSuggestion, suggestions, loading } =\n\t\t\tthis.state;\n\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation.\n\t\tif ( ! showSuggestions || ! suggestions.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0.\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.props.value.length !== event.target.selectionStart\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position.\n\t\t\t\t\t\tevent.target.setSelectionRange(\n\t\t\t\t\t\t\tthis.props.value.length,\n\t\t\t\t\t\t\tthis.props.value.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// Submitting while loading should trigger onSubmit.\n\t\t\t\tcase ENTER: {\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst suggestion =\n\t\t\tthis.state.suggestions[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion\n\t\t\t\t\t? suggestions.length - 1\n\t\t\t\t\t: selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex =\n\t\t\t\t\tselectedSuggestion === null ||\n\t\t\t\t\tselectedSuggestion === suggestions.length - 1\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected.' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( suggestion, event );\n\t\t\t\t\t}\n\t\t\t\t} else if ( this.props.onSubmit ) {\n\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tselectLink( suggestion ) {\n\t\tthis.props.onChange( suggestion.url, suggestion );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n\thandleOnClick( suggestion ) {\n\t\tthis.selectLink( suggestion );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n\tstatic getDerivedStateFromProps(\n\t\t{\n\t\t\tvalue,\n\t\t\tinstanceId,\n\t\t\tdisableSuggestions,\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t},\n\t\t{ showSuggestions }\n\t) {\n\t\tlet shouldShowSuggestions = showSuggestions;\n\n\t\tconst hasValue = value && value.length;\n\n\t\tif ( ! __experimentalShowInitialSuggestions && ! hasValue ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\tif ( disableSuggestions === true ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\treturn {\n\t\t\tshowSuggestions: shouldShowSuggestions,\n\t\t\tsuggestionsListboxId: `block-editor-url-input-suggestions-${ instanceId }`,\n\t\t\tsuggestionOptionIdPrefix: `block-editor-url-input-suggestion-${ instanceId }`,\n\t\t};\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ this.renderControl() }\n\t\t\t\t{ this.renderSuggestions() }\n\t\t\t</>\n\t\t);\n\t}\n\n\trenderControl() {\n\t\tconst {\n\t\t\tlabel = null,\n\t\t\tclassName,\n\t\t\tisFullWidth,\n\t\t\tinstanceId,\n\t\t\tplaceholder = __( 'Paste URL or type to search' ),\n\t\t\t__experimentalRenderControl: renderControl,\n\t\t\tvalue = '',\n\t\t\thideLabelFromVision = false,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tloading,\n\t\t\tshowSuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t} = this.state;\n\n\t\tconst inputId = `url-input-control-${ instanceId }`;\n\n\t\tconst controlProps = {\n\t\t\tid: inputId, // Passes attribute to label for the for attribute\n\t\t\tlabel,\n\t\t\tclassName: clsx( 'block-editor-url-input', className, {\n\t\t\t\t'is-full-width': isFullWidth,\n\t\t\t} ),\n\t\t\thideLabelFromVision,\n\t\t};\n\n\t\tconst inputProps = {\n\t\t\tid: inputId,\n\t\t\tvalue,\n\t\t\trequired: true,\n\t\t\ttype: 'text',\n\t\t\tonChange: this.onChange,\n\t\t\tonFocus: this.onFocus,\n\t\t\tplaceholder,\n\t\t\tonKeyDown: this.onKeyDown,\n\t\t\trole: 'combobox',\n\t\t\t'aria-label': label ? undefined : __( 'URL' ), // Ensure input always has an accessible label\n\t\t\t'aria-expanded': showSuggestions,\n\t\t\t'aria-autocomplete': 'list',\n\t\t\t'aria-owns': suggestionsListboxId,\n\t\t\t'aria-activedescendant':\n\t\t\t\tselectedSuggestion !== null\n\t\t\t\t\t? `${ suggestionOptionIdPrefix }-${ selectedSuggestion }`\n\t\t\t\t\t: undefined,\n\t\t\tref: this.inputRef,\n\t\t\tsuffix: this.props.suffix,\n\t\t};\n\n\t\tif ( renderControl ) {\n\t\t\treturn renderControl( controlProps, inputProps, loading );\n\t\t}\n\n\t\treturn (\n\t\t\t<BaseControl __nextHasNoMarginBottom { ...controlProps }>\n\t\t\t\t<InputControl { ...inputProps } __next40pxDefaultSize />\n\t\t\t\t{ loading && <Spinner /> }\n\t\t\t</BaseControl>\n\t\t);\n\t}\n\n\trenderSuggestions() {\n\t\tconst {\n\t\t\tclassName,\n\t\t\t__experimentalRenderSuggestions: renderSuggestions,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tshowSuggestions,\n\t\t\tsuggestions,\n\t\t\tsuggestionsValue,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t\tloading,\n\t\t} = this.state;\n\n\t\tif ( ! showSuggestions || suggestions.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst suggestionsListProps = {\n\t\t\tid: suggestionsListboxId,\n\t\t\tref: this.autocompleteRef,\n\t\t\trole: 'listbox',\n\t\t};\n\n\t\tconst buildSuggestionItemProps = ( suggestion, index ) => {\n\t\t\treturn {\n\t\t\t\trole: 'option',\n\t\t\t\ttabIndex: '-1',\n\t\t\t\tid: `${ suggestionOptionIdPrefix }-${ index }`,\n\t\t\t\tref: this.bindSuggestionNode( index ),\n\t\t\t\t'aria-selected':\n\t\t\t\t\tindex === selectedSuggestion ? true : undefined,\n\t\t\t};\n\t\t};\n\n\t\tif ( isFunction( renderSuggestions ) ) {\n\t\t\treturn renderSuggestions( {\n\t\t\t\tsuggestions,\n\t\t\t\tselectedSuggestion,\n\t\t\t\tsuggestionsListProps,\n\t\t\t\tbuildSuggestionItemProps,\n\t\t\t\tisLoading: loading,\n\t\t\t\thandleSuggestionClick: this.handleOnClick,\n\t\t\t\tisInitialSuggestions: ! suggestionsValue?.length,\n\t\t\t\tcurrentInputValue: suggestionsValue,\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<Popover placement=\"bottom\" focusOnMount={ false }>\n\t\t\t\t<div\n\t\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-url-input__suggestions',\n\t\t\t\t\t\t`${ className }__suggestions`\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t{ ...buildSuggestionItemProps( suggestion, index ) }\n\t\t\t\t\t\t\tkey={ suggestion.id }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'block-editor-url-input__suggestion',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => this.handleOnClick( suggestion ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ suggestion.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) ) }\n\t\t\t\t</div>\n\t\t\t</Popover>\n\t\t);\n\t}\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-input/README.md\n */\nexport default compose(\n\twithSafeTimeout,\n\twithSpokenMessages,\n\twithInstanceId,\n\twithSelect( ( select, props ) => {\n\t\t// If a link suggestions handler is already provided then\n\t\t// bail.\n\t\tif ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\t__experimentalFetchLinkSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t} )\n)( URLInput );\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_element","_compose","_i18n","_blocks","_useOnBlockDrop","_interopRequireDefault","_math","_store","_lockUnlock","THRESHOLD_DISTANCE","MINIMUM_HEIGHT_FOR_THRESHOLD","MINIMUM_WIDTH_FOR_THRESHOLD","getDropTargetPosition","blocksData","position","orientation","options","allowedEdges","nearestIndex","insertPosition","minDistance","Infinity","targetBlockIndex","nearestSide","dropZoneElement","parentBlockOrientation","rootBlockIndex","rect","getBoundingClientRect","distance","edge","getDistanceToNearestEdge","height","isRightToLeft","isRTL","width","forEach","isUnmodifiedDefaultBlock","blockIndex","blockOrientation","sideDistance","sideEdge","isPointInsideRect","isPointContainedByRect","isPointWithinTopAndBottomBoundariesOfRect","adjacentIndex","isNearestBlockUnmodifiedDefaultBlock","isAdjacentBlockUnmodifiedDefaultBlock","insertionIndex","isDropTargetValid","getBlockType","allowedBlocks","draggedBlockNames","targetBlockName","areBlocksAllowed","allowedBlockNames","map","name","every","includes","draggedBlockTypes","targetMatchesDraggedBlockParents","block","allowedParentName","parent","isInsertionPoint","targetToCheck","ownerDocument","defaultView","HTMLElement","dataset","useBlockDropZone","rootClientId","targetRootClientId","parentClientId","parentBlockClientId","isDisabled","registry","useRegistry","dropTarget","setDropTarget","useState","index","operation","getBlockVariations","getGroupingBlockName","useSelect","blocksStore","canInsertBlockType","getBlockListSettings","getBlocks","getBlockIndex","getDraggedBlockClientIds","getBlockNamesByClientId","getAllowedBlocks","isDragging","isGroupable","isZoomOutMode","getSectionRootClientId","unlock","blockEditorStore","showInsertionPoint","hideInsertionPoint","startDragging","stopDragging","useDispatch","onBlockDrop","useOnBlockDrop","throttled","useThrottle","useCallback","event","isBlockDroppingAllowed","sectionRootClientId","blocks","length","batch","clientId","getIsUnmodifiedDefaultBlock","getElementById","dropTargetPosition","x","clientX","y","clientY","undefined","targetIndex","targetBlock","areAllImages","canInsertGalleryBlock","areGroupableBlocks","groupBlockVariations","canInsertRow","find","insertionPointClientId","useDropZone","onDrop","onDragOver","currentTarget","onDragLeave","relatedTarget","target","cancel","onDragEnd"],"sources":["@wordpress/block-editor/src/components/use-block-drop-zone/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tuseThrottle,\n\t__experimentalUseDropZone as useDropZone,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\nimport {\n\tisUnmodifiedDefaultBlock as getIsUnmodifiedDefaultBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useOnBlockDrop from '../use-on-block-drop';\nimport {\n\tgetDistanceToNearestEdge,\n\tisPointContainedByRect,\n\tisPointWithinTopAndBottomBoundariesOfRect,\n} from '../../utils/math';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst THRESHOLD_DISTANCE = 30;\nconst MINIMUM_HEIGHT_FOR_THRESHOLD = 120;\nconst MINIMUM_WIDTH_FOR_THRESHOLD = 120;\n\n/** @typedef {import('../../utils/math').WPPoint} WPPoint */\n/** @typedef {import('../use-on-block-drop/types').WPDropOperation} WPDropOperation */\n\n/**\n * The orientation of a block list.\n *\n * @typedef {'horizontal'|'vertical'|undefined} WPBlockListOrientation\n */\n\n/**\n * The insert position when dropping a block.\n *\n * @typedef {'before'|'after'} WPInsertPosition\n */\n\n/**\n * @typedef {Object} WPBlockData\n * @property {boolean} isUnmodifiedDefaultBlock Is the block unmodified default block.\n * @property {() => DOMRect} getBoundingClientRect Get the bounding client rect of the block.\n * @property {number} blockIndex The index of the block.\n */\n\n/**\n * Get the drop target position from a given drop point and the orientation.\n *\n * @param {WPBlockData[]} blocksData The block data list.\n * @param {WPPoint} position The position of the item being dragged.\n * @param {WPBlockListOrientation} orientation The orientation of the block list.\n * @param {Object} options Additional options.\n * @return {[number, WPDropOperation]} The drop target position.\n */\nexport function getDropTargetPosition(\n\tblocksData,\n\tposition,\n\torientation = 'vertical',\n\toptions = {}\n) {\n\tconst allowedEdges =\n\t\torientation === 'horizontal'\n\t\t\t? [ 'left', 'right' ]\n\t\t\t: [ 'top', 'bottom' ];\n\n\tlet nearestIndex = 0;\n\tlet insertPosition = 'before';\n\tlet minDistance = Infinity;\n\tlet targetBlockIndex = null;\n\tlet nearestSide = 'right';\n\n\tconst {\n\t\tdropZoneElement,\n\t\tparentBlockOrientation,\n\t\trootBlockIndex = 0,\n\t} = options;\n\n\t// Allow before/after when dragging over the top/bottom edges of the drop zone.\n\tif ( dropZoneElement && parentBlockOrientation !== 'horizontal' ) {\n\t\tconst rect = dropZoneElement.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge( position, rect, [\n\t\t\t'top',\n\t\t\t'bottom',\n\t\t] );\n\n\t\t// If dragging over the top or bottom of the drop zone, insert the block\n\t\t// before or after the parent block. This only applies to blocks that use\n\t\t// a drop zone element, typically container blocks such as Group or Cover.\n\t\tif (\n\t\t\trect.height > MINIMUM_HEIGHT_FOR_THRESHOLD &&\n\t\t\tdistance < THRESHOLD_DISTANCE\n\t\t) {\n\t\t\tif ( edge === 'top' ) {\n\t\t\t\treturn [ rootBlockIndex, 'before' ];\n\t\t\t}\n\t\t\tif ( edge === 'bottom' ) {\n\t\t\t\treturn [ rootBlockIndex + 1, 'after' ];\n\t\t\t}\n\t\t}\n\t}\n\n\tconst isRightToLeft = isRTL();\n\n\t// Allow before/after when dragging over the left/right edges of the drop zone.\n\tif ( dropZoneElement && parentBlockOrientation === 'horizontal' ) {\n\t\tconst rect = dropZoneElement.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge( position, rect, [\n\t\t\t'left',\n\t\t\t'right',\n\t\t] );\n\n\t\t// If dragging over the left or right of the drop zone, insert the block\n\t\t// before or after the parent block. This only applies to blocks that use\n\t\t// a drop zone element, typically container blocks such as Group.\n\t\tif (\n\t\t\trect.width > MINIMUM_WIDTH_FOR_THRESHOLD &&\n\t\t\tdistance < THRESHOLD_DISTANCE\n\t\t) {\n\t\t\tif (\n\t\t\t\t( isRightToLeft && edge === 'right' ) ||\n\t\t\t\t( ! isRightToLeft && edge === 'left' )\n\t\t\t) {\n\t\t\t\treturn [ rootBlockIndex, 'before' ];\n\t\t\t}\n\t\t\tif (\n\t\t\t\t( isRightToLeft && edge === 'left' ) ||\n\t\t\t\t( ! isRightToLeft && edge === 'right' )\n\t\t\t) {\n\t\t\t\treturn [ rootBlockIndex + 1, 'after' ];\n\t\t\t}\n\t\t}\n\t}\n\n\tblocksData.forEach(\n\t\t( {\n\t\t\tisUnmodifiedDefaultBlock,\n\t\t\tgetBoundingClientRect,\n\t\t\tblockIndex,\n\t\t\tblockOrientation,\n\t\t} ) => {\n\t\t\tconst rect = getBoundingClientRect();\n\n\t\t\tlet [ distance, edge ] = getDistanceToNearestEdge(\n\t\t\t\tposition,\n\t\t\t\trect,\n\t\t\t\tallowedEdges\n\t\t\t);\n\t\t\t// If the the point is close to a side, prioritize that side.\n\t\t\tconst [ sideDistance, sideEdge ] = getDistanceToNearestEdge(\n\t\t\t\tposition,\n\t\t\t\trect,\n\t\t\t\t[ 'left', 'right' ]\n\t\t\t);\n\n\t\t\tconst isPointInsideRect = isPointContainedByRect( position, rect );\n\n\t\t\t// Prioritize the element if the point is inside of an unmodified default block.\n\t\t\tif ( isUnmodifiedDefaultBlock && isPointInsideRect ) {\n\t\t\t\tdistance = 0;\n\t\t\t} else if (\n\t\t\t\torientation === 'vertical' &&\n\t\t\t\tblockOrientation !== 'horizontal' &&\n\t\t\t\t( ( isPointInsideRect && sideDistance < THRESHOLD_DISTANCE ) ||\n\t\t\t\t\t( ! isPointInsideRect &&\n\t\t\t\t\t\tisPointWithinTopAndBottomBoundariesOfRect(\n\t\t\t\t\t\t\tposition,\n\t\t\t\t\t\t\trect\n\t\t\t\t\t\t) ) )\n\t\t\t) {\n\t\t\t\t/**\n\t\t\t\t * This condition should only apply when the layout is vertical (otherwise there's\n\t\t\t\t * no need to create a Row) and dropzones should only activate when the block is\n\t\t\t\t * either within and close to the sides of the target block or on its outer sides.\n\t\t\t\t */\n\t\t\t\ttargetBlockIndex = blockIndex;\n\t\t\t\tnearestSide = sideEdge;\n\t\t\t}\n\n\t\t\tif ( distance < minDistance ) {\n\t\t\t\t// Where the dropped block will be inserted on the nearest block.\n\t\t\t\tinsertPosition =\n\t\t\t\t\tedge === 'bottom' ||\n\t\t\t\t\t( ! isRightToLeft && edge === 'right' ) ||\n\t\t\t\t\t( isRightToLeft && edge === 'left' )\n\t\t\t\t\t\t? 'after'\n\t\t\t\t\t\t: 'before';\n\n\t\t\t\t// Update the currently known best candidate.\n\t\t\t\tminDistance = distance;\n\t\t\t\tnearestIndex = blockIndex;\n\t\t\t}\n\t\t}\n\t);\n\n\tconst adjacentIndex =\n\t\tnearestIndex + ( insertPosition === 'after' ? 1 : -1 );\n\tconst isNearestBlockUnmodifiedDefaultBlock =\n\t\t!! blocksData[ nearestIndex ]?.isUnmodifiedDefaultBlock;\n\tconst isAdjacentBlockUnmodifiedDefaultBlock =\n\t\t!! blocksData[ adjacentIndex ]?.isUnmodifiedDefaultBlock;\n\n\t// If the target index is set then group with the block at that index.\n\tif ( targetBlockIndex !== null ) {\n\t\treturn [ targetBlockIndex, 'group', nearestSide ];\n\t}\n\t// If both blocks are not unmodified default blocks then just insert between them.\n\tif (\n\t\t! isNearestBlockUnmodifiedDefaultBlock &&\n\t\t! isAdjacentBlockUnmodifiedDefaultBlock\n\t) {\n\t\t// If the user is dropping to the trailing edge of the block\n\t\t// add 1 to the index to represent dragging after.\n\t\tconst insertionIndex =\n\t\t\tinsertPosition === 'after' ? nearestIndex + 1 : nearestIndex;\n\t\treturn [ insertionIndex, 'insert' ];\n\t}\n\n\t// Otherwise, replace the nearest unmodified default block.\n\treturn [\n\t\tisNearestBlockUnmodifiedDefaultBlock ? nearestIndex : adjacentIndex,\n\t\t'replace',\n\t];\n}\n\n/**\n * Check if the dragged blocks can be dropped on the target.\n * @param {Function} getBlockType\n * @param {Object[]} allowedBlocks\n * @param {string[]} draggedBlockNames\n * @param {string} targetBlockName\n * @return {boolean} Whether the dragged blocks can be dropped on the target.\n */\nexport function isDropTargetValid(\n\tgetBlockType,\n\tallowedBlocks,\n\tdraggedBlockNames,\n\ttargetBlockName\n) {\n\t// At root level allowedBlocks is undefined and all blocks are allowed.\n\t// Otherwise, check if all dragged blocks are allowed.\n\tlet areBlocksAllowed = true;\n\tif ( allowedBlocks ) {\n\t\tconst allowedBlockNames = allowedBlocks?.map( ( { name } ) => name );\n\n\t\tareBlocksAllowed = draggedBlockNames.every( ( name ) =>\n\t\t\tallowedBlockNames?.includes( name )\n\t\t);\n\t}\n\n\t// Work out if dragged blocks have an allowed parent and if so\n\t// check target block matches the allowed parent.\n\tconst draggedBlockTypes = draggedBlockNames.map( ( name ) =>\n\t\tgetBlockType( name )\n\t);\n\tconst targetMatchesDraggedBlockParents = draggedBlockTypes.every(\n\t\t( block ) => {\n\t\t\tconst [ allowedParentName ] = block?.parent || [];\n\t\t\tif ( ! allowedParentName ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn allowedParentName === targetBlockName;\n\t\t}\n\t);\n\n\treturn areBlocksAllowed && targetMatchesDraggedBlockParents;\n}\n\n/**\n * Checks if the given element is an insertion point.\n *\n * @param {EventTarget|null} targetToCheck - The element to check.\n * @param {Document} ownerDocument - The owner document of the element.\n * @return {boolean} True if the element is a insertion point, false otherwise.\n */\nfunction isInsertionPoint( targetToCheck, ownerDocument ) {\n\tconst { defaultView } = ownerDocument;\n\n\treturn !! (\n\t\tdefaultView &&\n\t\ttargetToCheck instanceof defaultView.HTMLElement &&\n\t\ttargetToCheck.dataset.isInsertionPoint\n\t);\n}\n\n/**\n * @typedef {Object} WPBlockDropZoneConfig\n * @property {?HTMLElement} dropZoneElement Optional element to be used as the drop zone.\n * @property {string} rootClientId The root client id for the block list.\n */\n\n/**\n * A React hook that can be used to make a block list handle drag and drop.\n *\n * @param {WPBlockDropZoneConfig} dropZoneConfig configuration data for the drop zone.\n */\nexport default function useBlockDropZone( {\n\tdropZoneElement,\n\t// An undefined value represents a top-level block. Default to an empty\n\t// string for this so that `targetRootClientId` can be easily compared to\n\t// values returned by the `getRootBlockClientId` selector, which also uses\n\t// an empty string to represent top-level blocks.\n\trootClientId: targetRootClientId = '',\n\tparentClientId: parentBlockClientId = '',\n\tisDisabled = false,\n} = {} ) {\n\tconst registry = useRegistry();\n\tconst [ dropTarget, setDropTarget ] = useState( {\n\t\tindex: null,\n\t\toperation: 'insert',\n\t} );\n\n\tconst { getBlockType, getBlockVariations, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockListSettings,\n\t\tgetBlocks,\n\t\tgetBlockIndex,\n\t\tgetDraggedBlockClientIds,\n\t\tgetBlockNamesByClientId,\n\t\tgetAllowedBlocks,\n\t\tisDragging,\n\t\tisGroupable,\n\t\tisZoomOutMode,\n\t\tgetSectionRootClientId,\n\t} = unlock( useSelect( blockEditorStore ) );\n\tconst {\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tstartDragging,\n\t\tstopDragging,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onBlockDrop = useOnBlockDrop(\n\t\tdropTarget.operation === 'before' || dropTarget.operation === 'after'\n\t\t\t? parentBlockClientId\n\t\t\t: targetRootClientId,\n\t\tdropTarget.index,\n\t\t{\n\t\t\toperation: dropTarget.operation,\n\t\t\tnearestSide: dropTarget.nearestSide,\n\t\t}\n\t);\n\tconst throttled = useThrottle(\n\t\tuseCallback(\n\t\t\t( event, ownerDocument ) => {\n\t\t\t\tif ( ! isDragging() ) {\n\t\t\t\t\t// When dragging from the desktop, no drag start event is fired.\n\t\t\t\t\t// So, ensure that the drag state is set when the user drags over a drop zone.\n\t\t\t\t\tstartDragging();\n\t\t\t\t}\n\t\t\t\tconst allowedBlocks = getAllowedBlocks( targetRootClientId );\n\t\t\t\tconst targetBlockName = getBlockNamesByClientId( [\n\t\t\t\t\ttargetRootClientId,\n\t\t\t\t] )[ 0 ];\n\n\t\t\t\tconst draggedBlockNames = getBlockNamesByClientId(\n\t\t\t\t\tgetDraggedBlockClientIds()\n\t\t\t\t);\n\t\t\t\tconst isBlockDroppingAllowed = isDropTargetValid(\n\t\t\t\t\tgetBlockType,\n\t\t\t\t\tallowedBlocks,\n\t\t\t\t\tdraggedBlockNames,\n\t\t\t\t\ttargetBlockName\n\t\t\t\t);\n\n\t\t\t\tif ( ! isBlockDroppingAllowed ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\n\t\t\t\t// In Zoom Out mode, if the target is not the section root provided by settings then\n\t\t\t\t// do not allow dropping as the drop target is not within the root (that which is\n\t\t\t\t// treated as \"the content\" by Zoom Out Mode).\n\t\t\t\tif (\n\t\t\t\t\tisZoomOutMode() &&\n\t\t\t\t\tsectionRootClientId !== targetRootClientId\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst blocks = getBlocks( targetRootClientId );\n\n\t\t\t\t// The block list is empty, don't show the insertion point but still allow dropping.\n\t\t\t\tif ( blocks.length === 0 ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tsetDropTarget( {\n\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\toperation: 'insert',\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tshowInsertionPoint( targetRootClientId, 0, {\n\t\t\t\t\t\t\toperation: 'insert',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst blocksData = blocks.map( ( block ) => {\n\t\t\t\t\tconst clientId = block.clientId;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisUnmodifiedDefaultBlock:\n\t\t\t\t\t\t\tgetIsUnmodifiedDefaultBlock( block ),\n\t\t\t\t\t\tgetBoundingClientRect: () =>\n\t\t\t\t\t\t\townerDocument\n\t\t\t\t\t\t\t\t.getElementById( `block-${ clientId }` )\n\t\t\t\t\t\t\t\t.getBoundingClientRect(),\n\t\t\t\t\t\tblockIndex: getBlockIndex( clientId ),\n\t\t\t\t\t\tblockOrientation:\n\t\t\t\t\t\t\tgetBlockListSettings( clientId )?.orientation,\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\tconst dropTargetPosition = getDropTargetPosition(\n\t\t\t\t\tblocksData,\n\t\t\t\t\t{ x: event.clientX, y: event.clientY },\n\t\t\t\t\tgetBlockListSettings( targetRootClientId )?.orientation,\n\t\t\t\t\t{\n\t\t\t\t\t\tdropZoneElement,\n\t\t\t\t\t\tparentBlockClientId,\n\t\t\t\t\t\tparentBlockOrientation: parentBlockClientId\n\t\t\t\t\t\t\t? getBlockListSettings( parentBlockClientId )\n\t\t\t\t\t\t\t\t\t?.orientation\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\trootBlockIndex: getBlockIndex( targetRootClientId ),\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tconst [ targetIndex, operation, nearestSide ] =\n\t\t\t\t\tdropTargetPosition;\n\n\t\t\t\tif ( isZoomOutMode() && operation !== 'insert' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( operation === 'group' ) {\n\t\t\t\t\tconst targetBlock = blocks[ targetIndex ];\n\t\t\t\t\tconst areAllImages = [\n\t\t\t\t\t\ttargetBlock.name,\n\t\t\t\t\t\t...draggedBlockNames,\n\t\t\t\t\t].every( ( name ) => name === 'core/image' );\n\t\t\t\t\tconst canInsertGalleryBlock = canInsertBlockType(\n\t\t\t\t\t\t'core/gallery',\n\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t);\n\t\t\t\t\tconst areGroupableBlocks = isGroupable( [\n\t\t\t\t\t\ttargetBlock.clientId,\n\t\t\t\t\t\tgetDraggedBlockClientIds(),\n\t\t\t\t\t] );\n\t\t\t\t\tconst groupBlockVariations = getBlockVariations(\n\t\t\t\t\t\tgetGroupingBlockName(),\n\t\t\t\t\t\t'block'\n\t\t\t\t\t);\n\t\t\t\t\tconst canInsertRow =\n\t\t\t\t\t\tgroupBlockVariations &&\n\t\t\t\t\t\tgroupBlockVariations.find(\n\t\t\t\t\t\t\t( { name } ) => name === 'group-row'\n\t\t\t\t\t\t);\n\n\t\t\t\t\t// If the dragged blocks and the target block are all images,\n\t\t\t\t\t// check if it is creatable either a Row variation or a Gallery block.\n\t\t\t\t\tif (\n\t\t\t\t\t\tareAllImages &&\n\t\t\t\t\t\t! canInsertGalleryBlock &&\n\t\t\t\t\t\t( ! areGroupableBlocks || ! canInsertRow )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// If the dragged blocks and the target block are not all images,\n\t\t\t\t\t// check if it is creatable a Row variation.\n\t\t\t\t\tif (\n\t\t\t\t\t\t! areAllImages &&\n\t\t\t\t\t\t( ! areGroupableBlocks || ! canInsertRow )\n\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\tregistry.batch( () => {\n\t\t\t\t\tsetDropTarget( {\n\t\t\t\t\t\tindex: targetIndex,\n\t\t\t\t\t\toperation,\n\t\t\t\t\t\tnearestSide,\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst insertionPointClientId = [\n\t\t\t\t\t\t'before',\n\t\t\t\t\t\t'after',\n\t\t\t\t\t].includes( operation )\n\t\t\t\t\t\t? parentBlockClientId\n\t\t\t\t\t\t: targetRootClientId;\n\n\t\t\t\t\tshowInsertionPoint( insertionPointClientId, targetIndex, {\n\t\t\t\t\t\toperation,\n\t\t\t\t\t\tnearestSide,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\t[\n\t\t\t\tisDragging,\n\t\t\t\tgetAllowedBlocks,\n\t\t\t\ttargetRootClientId,\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetDraggedBlockClientIds,\n\t\t\t\tgetBlockType,\n\t\t\t\tgetSectionRootClientId,\n\t\t\t\tisZoomOutMode,\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockListSettings,\n\t\t\t\tdropZoneElement,\n\t\t\t\tparentBlockClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tregistry,\n\t\t\t\tstartDragging,\n\t\t\t\tshowInsertionPoint,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tisGroupable,\n\t\t\t\tgetBlockVariations,\n\t\t\t\tgetGroupingBlockName,\n\t\t\t]\n\t\t),\n\t\t200\n\t);\n\n\treturn useDropZone( {\n\t\tdropZoneElement,\n\t\tisDisabled,\n\t\tonDrop: onBlockDrop,\n\t\tonDragOver( event ) {\n\t\t\t// `currentTarget` is only available while the event is being\n\t\t\t// handled, so get it now and pass it to the thottled function.\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget\n\t\t\tthrottled( event, event.currentTarget.ownerDocument );\n\t\t},\n\t\tonDragLeave( event ) {\n\t\t\tconst { ownerDocument } = event.currentTarget;\n\n\t\t\t// If the drag event is leaving the drop zone and entering an insertion point,\n\t\t\t// do not hide the insertion point as it is conceptually within the dropzone.\n\t\t\tif (\n\t\t\t\tisInsertionPoint( event.relatedTarget, ownerDocument ) ||\n\t\t\t\tisInsertionPoint( event.target, ownerDocument )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t},\n\t\tonDragEnd() {\n\t\t\tthrottled.cancel();\n\t\t\tstopDragging();\n\t\t\thideInsertionPoint();\n\t\t},\n\t} );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_data","require","_element","_compose","_i18n","_blocks","_useOnBlockDrop","_interopRequireDefault","_math","_store","_lockUnlock","THRESHOLD_DISTANCE","MINIMUM_HEIGHT_FOR_THRESHOLD","MINIMUM_WIDTH_FOR_THRESHOLD","getDropTargetPosition","blocksData","position","orientation","options","allowedEdges","nearestIndex","insertPosition","minDistance","Infinity","targetBlockIndex","nearestSide","dropZoneElement","parentBlockOrientation","rootBlockIndex","rect","getBoundingClientRect","distance","edge","getDistanceToNearestEdge","height","isRightToLeft","isRTL","width","forEach","isUnmodifiedDefaultBlock","blockIndex","blockOrientation","sideDistance","sideEdge","isPointInsideRect","isPointContainedByRect","isPointWithinTopAndBottomBoundariesOfRect","adjacentIndex","isNearestBlockUnmodifiedDefaultBlock","isAdjacentBlockUnmodifiedDefaultBlock","insertionIndex","isDropTargetValid","getBlockType","allowedBlocks","draggedBlockNames","targetBlockName","areBlocksAllowed","allowedBlockNames","map","name","every","includes","draggedBlockTypes","targetMatchesDraggedBlockParents","block","allowedParentName","parent","isInsertionPoint","targetToCheck","ownerDocument","defaultView","HTMLElement","dataset","useBlockDropZone","rootClientId","targetRootClientId","parentClientId","parentBlockClientId","isDisabled","registry","useRegistry","dropTarget","setDropTarget","useState","index","operation","getBlockVariations","getGroupingBlockName","useSelect","blocksStore","canInsertBlockType","getBlockListSettings","getBlocks","getBlockIndex","getDraggedBlockClientIds","getBlockNamesByClientId","getAllowedBlocks","isDragging","isGroupable","isZoomOutMode","getSectionRootClientId","unlock","blockEditorStore","showInsertionPoint","hideInsertionPoint","startDragging","stopDragging","useDispatch","onBlockDrop","useOnBlockDrop","throttled","useThrottle","useCallback","event","isBlockDroppingAllowed","sectionRootClientId","blocks","length","batch","clientId","getIsUnmodifiedDefaultBlock","getElementById","dropTargetPosition","x","clientX","y","clientY","undefined","targetIndex","targetBlock","areAllImages","canInsertGalleryBlock","areGroupableBlocks","groupBlockVariations","canInsertRow","find","insertionPointClientId","useDropZone","onDrop","onDragOver","currentTarget","onDragLeave","relatedTarget","target","cancel","onDragEnd"],"sources":["@wordpress/block-editor/src/components/use-block-drop-zone/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tuseThrottle,\n\t__experimentalUseDropZone as useDropZone,\n} from '@wordpress/compose';\nimport { isRTL } from '@wordpress/i18n';\nimport {\n\tisUnmodifiedDefaultBlock as getIsUnmodifiedDefaultBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useOnBlockDrop from '../use-on-block-drop';\nimport {\n\tgetDistanceToNearestEdge,\n\tisPointContainedByRect,\n\tisPointWithinTopAndBottomBoundariesOfRect,\n} from '../../utils/math';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst THRESHOLD_DISTANCE = 30;\nconst MINIMUM_HEIGHT_FOR_THRESHOLD = 120;\nconst MINIMUM_WIDTH_FOR_THRESHOLD = 120;\n\n/** @typedef {import('../../utils/math').WPPoint} WPPoint */\n/** @typedef {import('../use-on-block-drop/types').WPDropOperation} WPDropOperation */\n\n/**\n * The orientation of a block list.\n *\n * @typedef {'horizontal'|'vertical'|undefined} WPBlockListOrientation\n */\n\n/**\n * The insert position when dropping a block.\n *\n * @typedef {'before'|'after'} WPInsertPosition\n */\n\n/**\n * @typedef {Object} WPBlockData\n * @property {boolean} isUnmodifiedDefaultBlock Is the block unmodified default block.\n * @property {() => DOMRect} getBoundingClientRect Get the bounding client rect of the block.\n * @property {number} blockIndex The index of the block.\n */\n\n/**\n * Get the drop target position from a given drop point and the orientation.\n *\n * @param {WPBlockData[]} blocksData The block data list.\n * @param {WPPoint} position The position of the item being dragged.\n * @param {WPBlockListOrientation} orientation The orientation of the block list.\n * @param {Object} options Additional options.\n * @return {[number, WPDropOperation]} The drop target position.\n */\nexport function getDropTargetPosition(\n\tblocksData,\n\tposition,\n\torientation = 'vertical',\n\toptions = {}\n) {\n\tconst allowedEdges =\n\t\torientation === 'horizontal'\n\t\t\t? [ 'left', 'right' ]\n\t\t\t: [ 'top', 'bottom' ];\n\n\tlet nearestIndex = 0;\n\tlet insertPosition = 'before';\n\tlet minDistance = Infinity;\n\tlet targetBlockIndex = null;\n\tlet nearestSide = 'right';\n\n\tconst {\n\t\tdropZoneElement,\n\t\tparentBlockOrientation,\n\t\trootBlockIndex = 0,\n\t} = options;\n\n\t// Allow before/after when dragging over the top/bottom edges of the drop zone.\n\tif ( dropZoneElement && parentBlockOrientation !== 'horizontal' ) {\n\t\tconst rect = dropZoneElement.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge( position, rect, [\n\t\t\t'top',\n\t\t\t'bottom',\n\t\t] );\n\n\t\t// If dragging over the top or bottom of the drop zone, insert the block\n\t\t// before or after the parent block. This only applies to blocks that use\n\t\t// a drop zone element, typically container blocks such as Group or Cover.\n\t\tif (\n\t\t\trect.height > MINIMUM_HEIGHT_FOR_THRESHOLD &&\n\t\t\tdistance < THRESHOLD_DISTANCE\n\t\t) {\n\t\t\tif ( edge === 'top' ) {\n\t\t\t\treturn [ rootBlockIndex, 'before' ];\n\t\t\t}\n\t\t\tif ( edge === 'bottom' ) {\n\t\t\t\treturn [ rootBlockIndex + 1, 'after' ];\n\t\t\t}\n\t\t}\n\t}\n\n\tconst isRightToLeft = isRTL();\n\n\t// Allow before/after when dragging over the left/right edges of the drop zone.\n\tif ( dropZoneElement && parentBlockOrientation === 'horizontal' ) {\n\t\tconst rect = dropZoneElement.getBoundingClientRect();\n\t\tconst [ distance, edge ] = getDistanceToNearestEdge( position, rect, [\n\t\t\t'left',\n\t\t\t'right',\n\t\t] );\n\n\t\t// If dragging over the left or right of the drop zone, insert the block\n\t\t// before or after the parent block. This only applies to blocks that use\n\t\t// a drop zone element, typically container blocks such as Group.\n\t\tif (\n\t\t\trect.width > MINIMUM_WIDTH_FOR_THRESHOLD &&\n\t\t\tdistance < THRESHOLD_DISTANCE\n\t\t) {\n\t\t\tif (\n\t\t\t\t( isRightToLeft && edge === 'right' ) ||\n\t\t\t\t( ! isRightToLeft && edge === 'left' )\n\t\t\t) {\n\t\t\t\treturn [ rootBlockIndex, 'before' ];\n\t\t\t}\n\t\t\tif (\n\t\t\t\t( isRightToLeft && edge === 'left' ) ||\n\t\t\t\t( ! isRightToLeft && edge === 'right' )\n\t\t\t) {\n\t\t\t\treturn [ rootBlockIndex + 1, 'after' ];\n\t\t\t}\n\t\t}\n\t}\n\n\tblocksData.forEach(\n\t\t( {\n\t\t\tisUnmodifiedDefaultBlock,\n\t\t\tgetBoundingClientRect,\n\t\t\tblockIndex,\n\t\t\tblockOrientation,\n\t\t} ) => {\n\t\t\tconst rect = getBoundingClientRect();\n\n\t\t\tlet [ distance, edge ] = getDistanceToNearestEdge(\n\t\t\t\tposition,\n\t\t\t\trect,\n\t\t\t\tallowedEdges\n\t\t\t);\n\t\t\t// If the the point is close to a side, prioritize that side.\n\t\t\tconst [ sideDistance, sideEdge ] = getDistanceToNearestEdge(\n\t\t\t\tposition,\n\t\t\t\trect,\n\t\t\t\t[ 'left', 'right' ]\n\t\t\t);\n\n\t\t\tconst isPointInsideRect = isPointContainedByRect( position, rect );\n\n\t\t\t// Prioritize the element if the point is inside of an unmodified default block.\n\t\t\tif ( isUnmodifiedDefaultBlock && isPointInsideRect ) {\n\t\t\t\tdistance = 0;\n\t\t\t} else if (\n\t\t\t\torientation === 'vertical' &&\n\t\t\t\tblockOrientation !== 'horizontal' &&\n\t\t\t\t( ( isPointInsideRect && sideDistance < THRESHOLD_DISTANCE ) ||\n\t\t\t\t\t( ! isPointInsideRect &&\n\t\t\t\t\t\tisPointWithinTopAndBottomBoundariesOfRect(\n\t\t\t\t\t\t\tposition,\n\t\t\t\t\t\t\trect\n\t\t\t\t\t\t) ) )\n\t\t\t) {\n\t\t\t\t/**\n\t\t\t\t * This condition should only apply when the layout is vertical (otherwise there's\n\t\t\t\t * no need to create a Row) and dropzones should only activate when the block is\n\t\t\t\t * either within and close to the sides of the target block or on its outer sides.\n\t\t\t\t */\n\t\t\t\ttargetBlockIndex = blockIndex;\n\t\t\t\tnearestSide = sideEdge;\n\t\t\t}\n\n\t\t\tif ( distance < minDistance ) {\n\t\t\t\t// Where the dropped block will be inserted on the nearest block.\n\t\t\t\tinsertPosition =\n\t\t\t\t\tedge === 'bottom' ||\n\t\t\t\t\t( ! isRightToLeft && edge === 'right' ) ||\n\t\t\t\t\t( isRightToLeft && edge === 'left' )\n\t\t\t\t\t\t? 'after'\n\t\t\t\t\t\t: 'before';\n\n\t\t\t\t// Update the currently known best candidate.\n\t\t\t\tminDistance = distance;\n\t\t\t\tnearestIndex = blockIndex;\n\t\t\t}\n\t\t}\n\t);\n\n\tconst adjacentIndex =\n\t\tnearestIndex + ( insertPosition === 'after' ? 1 : -1 );\n\tconst isNearestBlockUnmodifiedDefaultBlock =\n\t\t!! blocksData[ nearestIndex ]?.isUnmodifiedDefaultBlock;\n\tconst isAdjacentBlockUnmodifiedDefaultBlock =\n\t\t!! blocksData[ adjacentIndex ]?.isUnmodifiedDefaultBlock;\n\n\t// If the target index is set then group with the block at that index.\n\tif ( targetBlockIndex !== null ) {\n\t\treturn [ targetBlockIndex, 'group', nearestSide ];\n\t}\n\t// If both blocks are not unmodified default blocks then just insert between them.\n\tif (\n\t\t! isNearestBlockUnmodifiedDefaultBlock &&\n\t\t! isAdjacentBlockUnmodifiedDefaultBlock\n\t) {\n\t\t// If the user is dropping to the trailing edge of the block\n\t\t// add 1 to the index to represent dragging after.\n\t\tconst insertionIndex =\n\t\t\tinsertPosition === 'after' ? nearestIndex + 1 : nearestIndex;\n\t\treturn [ insertionIndex, 'insert' ];\n\t}\n\n\t// Otherwise, replace the nearest unmodified default block.\n\treturn [\n\t\tisNearestBlockUnmodifiedDefaultBlock ? nearestIndex : adjacentIndex,\n\t\t'replace',\n\t];\n}\n\n/**\n * Check if the dragged blocks can be dropped on the target.\n * @param {Function} getBlockType\n * @param {Object[]} allowedBlocks\n * @param {string[]} draggedBlockNames\n * @param {string} targetBlockName\n * @return {boolean} Whether the dragged blocks can be dropped on the target.\n */\nexport function isDropTargetValid(\n\tgetBlockType,\n\tallowedBlocks,\n\tdraggedBlockNames,\n\ttargetBlockName\n) {\n\t// At root level allowedBlocks is undefined and all blocks are allowed.\n\t// Otherwise, check if all dragged blocks are allowed.\n\tlet areBlocksAllowed = true;\n\tif ( allowedBlocks ) {\n\t\tconst allowedBlockNames = allowedBlocks?.map( ( { name } ) => name );\n\n\t\tareBlocksAllowed = draggedBlockNames.every( ( name ) =>\n\t\t\tallowedBlockNames?.includes( name )\n\t\t);\n\t}\n\n\t// Work out if dragged blocks have an allowed parent and if so\n\t// check target block matches the allowed parent.\n\tconst draggedBlockTypes = draggedBlockNames.map( ( name ) =>\n\t\tgetBlockType( name )\n\t);\n\tconst targetMatchesDraggedBlockParents = draggedBlockTypes.every(\n\t\t( block ) => {\n\t\t\tconst [ allowedParentName ] = block?.parent || [];\n\t\t\tif ( ! allowedParentName ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn allowedParentName === targetBlockName;\n\t\t}\n\t);\n\n\treturn areBlocksAllowed && targetMatchesDraggedBlockParents;\n}\n\n/**\n * Checks if the given element is an insertion point.\n *\n * @param {EventTarget|null} targetToCheck - The element to check.\n * @param {Document} ownerDocument - The owner document of the element.\n * @return {boolean} True if the element is a insertion point, false otherwise.\n */\nfunction isInsertionPoint( targetToCheck, ownerDocument ) {\n\tconst { defaultView } = ownerDocument;\n\n\treturn !! (\n\t\tdefaultView &&\n\t\ttargetToCheck instanceof defaultView.HTMLElement &&\n\t\ttargetToCheck.dataset.isInsertionPoint\n\t);\n}\n\n/**\n * @typedef {Object} WPBlockDropZoneConfig\n * @property {?HTMLElement} dropZoneElement Optional element to be used as the drop zone.\n * @property {string} rootClientId The root client id for the block list.\n */\n\n/**\n * A React hook that can be used to make a block list handle drag and drop.\n *\n * @param {WPBlockDropZoneConfig} dropZoneConfig configuration data for the drop zone.\n */\nexport default function useBlockDropZone( {\n\tdropZoneElement,\n\t// An undefined value represents a top-level block. Default to an empty\n\t// string for this so that `targetRootClientId` can be easily compared to\n\t// values returned by the `getRootBlockClientId` selector, which also uses\n\t// an empty string to represent top-level blocks.\n\trootClientId: targetRootClientId = '',\n\tparentClientId: parentBlockClientId = '',\n\tisDisabled = false,\n} = {} ) {\n\tconst registry = useRegistry();\n\tconst [ dropTarget, setDropTarget ] = useState( {\n\t\tindex: null,\n\t\toperation: 'insert',\n\t} );\n\n\tconst { getBlockType, getBlockVariations, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockListSettings,\n\t\tgetBlocks,\n\t\tgetBlockIndex,\n\t\tgetDraggedBlockClientIds,\n\t\tgetBlockNamesByClientId,\n\t\tgetAllowedBlocks,\n\t\tisDragging,\n\t\tisGroupable,\n\t\tisZoomOutMode,\n\t\tgetSectionRootClientId,\n\t} = unlock( useSelect( blockEditorStore ) );\n\tconst {\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tstartDragging,\n\t\tstopDragging,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onBlockDrop = useOnBlockDrop(\n\t\tdropTarget.operation === 'before' || dropTarget.operation === 'after'\n\t\t\t? parentBlockClientId\n\t\t\t: targetRootClientId,\n\t\tdropTarget.index,\n\t\t{\n\t\t\toperation: dropTarget.operation,\n\t\t\tnearestSide: dropTarget.nearestSide,\n\t\t}\n\t);\n\tconst throttled = useThrottle(\n\t\tuseCallback(\n\t\t\t( event, ownerDocument ) => {\n\t\t\t\tif ( ! isDragging() ) {\n\t\t\t\t\t// When dragging from the desktop, no drag start event is fired.\n\t\t\t\t\t// So, ensure that the drag state is set when the user drags over a drop zone.\n\t\t\t\t\tstartDragging();\n\t\t\t\t}\n\t\t\t\tconst allowedBlocks = getAllowedBlocks( targetRootClientId );\n\t\t\t\tconst targetBlockName = getBlockNamesByClientId( [\n\t\t\t\t\ttargetRootClientId,\n\t\t\t\t] )[ 0 ];\n\n\t\t\t\tconst draggedBlockNames = getBlockNamesByClientId(\n\t\t\t\t\tgetDraggedBlockClientIds()\n\t\t\t\t);\n\t\t\t\tconst isBlockDroppingAllowed = isDropTargetValid(\n\t\t\t\t\tgetBlockType,\n\t\t\t\t\tallowedBlocks,\n\t\t\t\t\tdraggedBlockNames,\n\t\t\t\t\ttargetBlockName\n\t\t\t\t);\n\n\t\t\t\tif ( ! isBlockDroppingAllowed ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\n\t\t\t\t// In Zoom Out mode, if the target is not the section root provided by settings then\n\t\t\t\t// do not allow dropping as the drop target is not within the root (that which is\n\t\t\t\t// treated as \"the content\" by Zoom Out Mode).\n\t\t\t\tif (\n\t\t\t\t\tisZoomOutMode() &&\n\t\t\t\t\tsectionRootClientId !== targetRootClientId\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst blocks = getBlocks( targetRootClientId );\n\n\t\t\t\t// The block list is empty, don't show the insertion point but still allow dropping.\n\t\t\t\tif ( blocks.length === 0 ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tsetDropTarget( {\n\t\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t\toperation: 'insert',\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tshowInsertionPoint( targetRootClientId, 0, {\n\t\t\t\t\t\t\toperation: 'insert',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst blocksData = blocks.map( ( block ) => {\n\t\t\t\t\tconst clientId = block.clientId;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisUnmodifiedDefaultBlock:\n\t\t\t\t\t\t\tgetIsUnmodifiedDefaultBlock( block ),\n\t\t\t\t\t\tgetBoundingClientRect: () =>\n\t\t\t\t\t\t\townerDocument\n\t\t\t\t\t\t\t\t.getElementById( `block-${ clientId }` )\n\t\t\t\t\t\t\t\t.getBoundingClientRect(),\n\t\t\t\t\t\tblockIndex: getBlockIndex( clientId ),\n\t\t\t\t\t\tblockOrientation:\n\t\t\t\t\t\t\tgetBlockListSettings( clientId )?.orientation,\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\tconst dropTargetPosition = getDropTargetPosition(\n\t\t\t\t\tblocksData,\n\t\t\t\t\t{ x: event.clientX, y: event.clientY },\n\t\t\t\t\tgetBlockListSettings( targetRootClientId )?.orientation,\n\t\t\t\t\t{\n\t\t\t\t\t\tdropZoneElement,\n\t\t\t\t\t\tparentBlockClientId,\n\t\t\t\t\t\tparentBlockOrientation: parentBlockClientId\n\t\t\t\t\t\t\t? getBlockListSettings( parentBlockClientId )\n\t\t\t\t\t\t\t\t\t?.orientation\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\trootBlockIndex: getBlockIndex( targetRootClientId ),\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tconst [ targetIndex, operation, nearestSide ] =\n\t\t\t\t\tdropTargetPosition;\n\n\t\t\t\tif ( isZoomOutMode() && operation !== 'insert' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( operation === 'group' ) {\n\t\t\t\t\tconst targetBlock = blocks[ targetIndex ];\n\t\t\t\t\tconst areAllImages = [\n\t\t\t\t\t\ttargetBlock.name,\n\t\t\t\t\t\t...draggedBlockNames,\n\t\t\t\t\t].every( ( name ) => name === 'core/image' );\n\t\t\t\t\tconst canInsertGalleryBlock = canInsertBlockType(\n\t\t\t\t\t\t'core/gallery',\n\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t);\n\t\t\t\t\tconst areGroupableBlocks = isGroupable( [\n\t\t\t\t\t\ttargetBlock.clientId,\n\t\t\t\t\t\tgetDraggedBlockClientIds(),\n\t\t\t\t\t] );\n\t\t\t\t\tconst groupBlockVariations = getBlockVariations(\n\t\t\t\t\t\tgetGroupingBlockName(),\n\t\t\t\t\t\t'block'\n\t\t\t\t\t);\n\t\t\t\t\tconst canInsertRow =\n\t\t\t\t\t\tgroupBlockVariations &&\n\t\t\t\t\t\tgroupBlockVariations.find(\n\t\t\t\t\t\t\t( { name } ) => name === 'group-row'\n\t\t\t\t\t\t);\n\n\t\t\t\t\t// If the dragged blocks and the target block are all images,\n\t\t\t\t\t// check if it is creatable either a Row variation or a Gallery block.\n\t\t\t\t\tif (\n\t\t\t\t\t\tareAllImages &&\n\t\t\t\t\t\t! canInsertGalleryBlock &&\n\t\t\t\t\t\t( ! areGroupableBlocks || ! canInsertRow )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// If the dragged blocks and the target block are not all images,\n\t\t\t\t\t// check if it is creatable a Row variation.\n\t\t\t\t\tif (\n\t\t\t\t\t\t! areAllImages &&\n\t\t\t\t\t\t( ! areGroupableBlocks || ! canInsertRow )\n\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\tregistry.batch( () => {\n\t\t\t\t\tsetDropTarget( {\n\t\t\t\t\t\tindex: targetIndex,\n\t\t\t\t\t\toperation,\n\t\t\t\t\t\tnearestSide,\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst insertionPointClientId = [\n\t\t\t\t\t\t'before',\n\t\t\t\t\t\t'after',\n\t\t\t\t\t].includes( operation )\n\t\t\t\t\t\t? parentBlockClientId\n\t\t\t\t\t\t: targetRootClientId;\n\n\t\t\t\t\tshowInsertionPoint( insertionPointClientId, targetIndex, {\n\t\t\t\t\t\toperation,\n\t\t\t\t\t\tnearestSide,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t\t[\n\t\t\t\tisDragging,\n\t\t\t\tgetAllowedBlocks,\n\t\t\t\ttargetRootClientId,\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetDraggedBlockClientIds,\n\t\t\t\tgetBlockType,\n\t\t\t\tgetSectionRootClientId,\n\t\t\t\tisZoomOutMode,\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockListSettings,\n\t\t\t\tdropZoneElement,\n\t\t\t\tparentBlockClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tregistry,\n\t\t\t\tstartDragging,\n\t\t\t\tshowInsertionPoint,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tisGroupable,\n\t\t\t\tgetBlockVariations,\n\t\t\t\tgetGroupingBlockName,\n\t\t\t]\n\t\t),\n\t\t200\n\t);\n\n\treturn useDropZone( {\n\t\tdropZoneElement,\n\t\tisDisabled,\n\t\tonDrop: onBlockDrop,\n\t\tonDragOver( event ) {\n\t\t\t// `currentTarget` is only available while the event is being\n\t\t\t// handled, so get it now and pass it to the thottled function.\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget\n\t\t\tthrottled( event, event.currentTarget.ownerDocument );\n\t\t},\n\t\tonDragLeave( event ) {\n\t\t\tconst { ownerDocument } = event.currentTarget;\n\n\t\t\t// If the drag event is leaving the drop zone and entering an insertion point,\n\t\t\t// do not hide the insertion point as it is conceptually within the dropzone.\n\t\t\tif (\n\t\t\t\tisInsertionPoint( event.relatedTarget, ownerDocument ) ||\n\t\t\t\tisInsertionPoint( event.target, ownerDocument )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthrottled.cancel();\n\t\t\thideInsertionPoint();\n\t\t},\n\t\tonDragEnd() {\n\t\t\tthrottled.cancel();\n\t\t\tstopDragging();\n\t\t\thideInsertionPoint();\n\t\t},\n\t} );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_compose","require","_data","_store","_lockUnlock","useFlashEditableBlocks","clientId","isEnabled","getEnabledClientIdsTree","unlock","useSelect","blockEditorStore","useRefEffect","element","flashEditableBlocks","forEach","id","block","querySelector","classList","remove","offsetWidth","add","handleClick","event","shouldFlash","target","contains","defaultPrevented","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/use-flash-editable-blocks/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function useFlashEditableBlocks( {\n\tclientId = '',\n\tisEnabled = true,\n} = {} ) {\n\tconst { getEnabledClientIdsTree } = unlock( useSelect( blockEditorStore ) );\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tif ( ! isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst flashEditableBlocks = () => {\n\t\t\t\tgetEnabledClientIdsTree( clientId ).forEach(\n\t\t\t\t\t( { clientId: id } ) => {\n\t\t\t\t\t\tconst block = element.querySelector(\n\t\t\t\t\t\t\t`[data-block=\"${ id }\"]`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( ! block ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblock.classList.remove( 'has-editable-outline' );\n\t\t\t\t\t\t// Force reflow to trigger the animation.\n\t\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\t\tblock.offsetWidth;\n\t\t\t\t\t\tblock.classList.add( 'has-editable-outline' );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tconst handleClick = ( event ) => {\n\t\t\t\tconst shouldFlash =\n\t\t\t\t\tevent.target === element ||\n\t\t\t\t\tevent.target.classList.contains( 'is-root-container' );\n\t\t\t\tif ( ! shouldFlash ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tflashEditableBlocks();\n\t\t\t};\n\n\t\t\telement.addEventListener( 'click', handleClick );\n\t\t\treturn () => element.removeEventListener( 'click', handleClick );\n\t\t},\n\t\t[ isEnabled ]\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIO,SAASI,sBAAsBA,CAAE;EACvCC,QAAQ,GAAG,EAAE;EACbC,SAAS,GAAG;AACb,CAAC,GAAG,CAAC,CAAC,EAAG;EACR,MAAM;IAAEC;EAAwB,CAAC,GAAG,IAAAC,kBAAM,EAAE,IAAAC,eAAS,EAAEC,YAAiB,CAAE,CAAC;EAE3E,OAAO,IAAAC,qBAAY,EAChBC,OAAO,IAAM;IACd,IAAK,CAAEN,SAAS,EAAG;MAClB;IACD;IAEA,MAAMO,mBAAmB,GAAGA,CAAA,KAAM;MACjCN,uBAAuB,CAAEF,QAAS,CAAC,CAACS,OAAO,CAC1C,CAAE;QAAET,QAAQ,EAAEU;MAAG,CAAC,KAAM;QACvB,MAAMC,KAAK,GAAGJ,OAAO,CAACK,aAAa,CACjC,gBAAgBF,EAAI,IACtB,CAAC;QACD,IAAK,CAAEC,KAAK,EAAG;UACd;QACD;QACAA,KAAK,CAACE,SAAS,CAACC,MAAM,CAAE,sBAAuB,CAAC;QAChD;QACA;QACAH,KAAK,CAACI,WAAW;QACjBJ,KAAK,CAACE,SAAS,CAACG,GAAG,CAAE,sBAAuB,CAAC;MAC9C,CACD,CAAC;IACF,CAAC;IAED,MAAMC,WAAW,GAAKC,KAAK,IAAM;MAChC,MAAMC,WAAW,GAChBD,KAAK,CAACE,MAAM,KAAKb,OAAO,IACxBW,KAAK,CAACE,MAAM,CAACP,SAAS,CAACQ,QAAQ,CAAE,mBAAoB,CAAC;MACvD,IAAK,CAAEF,WAAW,EAAG;QACpB;MACD;MACA,IAAKD,KAAK,CAACI,gBAAgB,EAAG;QAC7B;MACD;MACAJ,KAAK,CAACK,cAAc,CAAC,CAAC;MACtBf,mBAAmB,CAAC,CAAC;IACtB,CAAC;IAEDD,OAAO,CAACiB,gBAAgB,CAAE,OAAO,EAAEP,WAAY,CAAC;IAChD,OAAO,MAAMV,OAAO,CAACkB,mBAAmB,CAAE,OAAO,EAAER,WAAY,CAAC;EACjE,CAAC,EACD,CAAEhB,SAAS,CACZ,CAAC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_compose","require","_data","_store","_lockUnlock","useFlashEditableBlocks","clientId","isEnabled","getEnabledClientIdsTree","unlock","useSelect","blockEditorStore","useRefEffect","element","flashEditableBlocks","forEach","id","block","querySelector","classList","remove","offsetWidth","add","handleClick","event","shouldFlash","target","contains","defaultPrevented","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/use-flash-editable-blocks/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function useFlashEditableBlocks( {\n\tclientId = '',\n\tisEnabled = true,\n} = {} ) {\n\tconst { getEnabledClientIdsTree } = unlock( useSelect( blockEditorStore ) );\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tif ( ! isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst flashEditableBlocks = () => {\n\t\t\t\tgetEnabledClientIdsTree( clientId ).forEach(\n\t\t\t\t\t( { clientId: id } ) => {\n\t\t\t\t\t\tconst block = element.querySelector(\n\t\t\t\t\t\t\t`[data-block=\"${ id }\"]`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( ! block ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblock.classList.remove( 'has-editable-outline' );\n\t\t\t\t\t\t// Force reflow to trigger the animation.\n\t\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\t\tblock.offsetWidth;\n\t\t\t\t\t\tblock.classList.add( 'has-editable-outline' );\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tconst handleClick = ( event ) => {\n\t\t\t\tconst shouldFlash =\n\t\t\t\t\tevent.target === element ||\n\t\t\t\t\tevent.target.classList.contains( 'is-root-container' );\n\t\t\t\tif ( ! shouldFlash ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tflashEditableBlocks();\n\t\t\t};\n\n\t\t\telement.addEventListener( 'click', handleClick );\n\t\t\treturn () => element.removeEventListener( 'click', handleClick );\n\t\t},\n\t\t[ isEnabled ]\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIO,SAASI,sBAAsBA,CAAE;EACvCC,QAAQ,GAAG,EAAE;EACbC,SAAS,GAAG;AACb,CAAC,GAAG,CAAC,CAAC,EAAG;EACR,MAAM;IAAEC;EAAwB,CAAC,GAAG,IAAAC,kBAAM,EAAE,IAAAC,eAAS,EAAEC,YAAiB,CAAE,CAAC;EAE3E,OAAO,IAAAC,qBAAY,EAChBC,OAAO,IAAM;IACd,IAAK,CAAEN,SAAS,EAAG;MAClB;IACD;IAEA,MAAMO,mBAAmB,GAAGA,CAAA,KAAM;MACjCN,uBAAuB,CAAEF,QAAS,CAAC,CAACS,OAAO,CAC1C,CAAE;QAAET,QAAQ,EAAEU;MAAG,CAAC,KAAM;QACvB,MAAMC,KAAK,GAAGJ,OAAO,CAACK,aAAa,CAClC,gBAAiBF,EAAE,IACpB,CAAC;QACD,IAAK,CAAEC,KAAK,EAAG;UACd;QACD;QACAA,KAAK,CAACE,SAAS,CAACC,MAAM,CAAE,sBAAuB,CAAC;QAChD;QACA;QACAH,KAAK,CAACI,WAAW;QACjBJ,KAAK,CAACE,SAAS,CAACG,GAAG,CAAE,sBAAuB,CAAC;MAC9C,CACD,CAAC;IACF,CAAC;IAED,MAAMC,WAAW,GAAKC,KAAK,IAAM;MAChC,MAAMC,WAAW,GAChBD,KAAK,CAACE,MAAM,KAAKb,OAAO,IACxBW,KAAK,CAACE,MAAM,CAACP,SAAS,CAACQ,QAAQ,CAAE,mBAAoB,CAAC;MACvD,IAAK,CAAEF,WAAW,EAAG;QACpB;MACD;MACA,IAAKD,KAAK,CAACI,gBAAgB,EAAG;QAC7B;MACD;MACAJ,KAAK,CAACK,cAAc,CAAC,CAAC;MACtBf,mBAAmB,CAAC,CAAC;IACtB,CAAC;IAEDD,OAAO,CAACiB,gBAAgB,CAAE,OAAO,EAAEP,WAAY,CAAC;IAChD,OAAO,MAAMV,OAAO,CAACkB,mBAAmB,CAAE,OAAO,EAAER,WAAY,CAAC;EACjE,CAAC,EACD,CAAEhB,SAAS,CACZ,CAAC;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_web","require","_element","_dom","_data","_store","BLOCK_ANIMATION_THRESHOLD","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","triggerAnimationOnChange","clientId","ref","useRef","isTyping","getGlobalBlockCount","isBlockSelected","isFirstMultiSelectedBlock","isBlockMultiSelected","isAncestorMultiSelected","useSelect","blockEditorStore","previous","prevRect","useMemo","current","getBoundingClientRect","useLayoutEffect","scrollContainer","getScrollContainer","isSelected","adjustScrolling","preserveScrollPosition","blockRect","diff","scrollTop","disableAnimation","window","matchMedia","matches","isPartOfSelection","zIndex","controller","Controller","x","y","config","mass","tension","friction","onChange","value","Math","round","finishedMoving","style","transformOrigin","transform","undefined","destination","start","from","stop","set","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Controller } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useMemo, useRef } from '@wordpress/element';\nimport { getScrollContainer } from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * If the block count exceeds the threshold, we disable the reordering animation\n * to avoid laginess.\n */\nconst BLOCK_ANIMATION_THRESHOLD = 200;\n\nfunction getAbsolutePosition( element ) {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n}\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n * - It first renders the element as if there was no animation.\n * - It takes a snapshot of the position of the block to use it\n * as a destination point for the animation.\n * - It restores the element to the previous position using a CSS transform\n * - It uses the \"resetAnimation\" flag to reset the animation\n * from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1 Options\n * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n * @param {string} $1.clientId\n */\nfunction useMovingAnimation( { triggerAnimationOnChange, clientId } ) {\n\tconst ref = useRef();\n\tconst {\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t} = useSelect( blockEditorStore );\n\n\t// Whenever the trigger changes, we need to take a snapshot of the current\n\t// position of the block to use it as a destination point for the animation.\n\tconst { previous, prevRect } = useMemo(\n\t\t() => ( {\n\t\t\tprevious: ref.current && getAbsolutePosition( ref.current ),\n\t\t\tprevRect: ref.current && ref.current.getBoundingClientRect(),\n\t\t} ),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous || ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( ref.current );\n\t\tconst isSelected = isBlockSelected( clientId );\n\t\tconst adjustScrolling =\n\t\t\tisSelected || isFirstMultiSelectedBlock( clientId );\n\n\t\tfunction preserveScrollPosition() {\n\t\t\tif ( adjustScrolling && prevRect ) {\n\t\t\t\tconst blockRect = ref.current.getBoundingClientRect();\n\t\t\t\tconst diff = blockRect.top - prevRect.top;\n\n\t\t\t\tif ( diff ) {\n\t\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// We disable the animation if the user has a preference for reduced\n\t\t// motion, if the user is typing (insertion by Enter), or if the block\n\t\t// count exceeds the threshold (insertion caused all the blocks that\n\t\t// follow to animate).\n\t\t// To do: consider enableing the _moving_ animation even for large\n\t\t// posts, while only disabling the _insertion_ animation?\n\t\tconst disableAnimation =\n\t\t\twindow.matchMedia( '(prefers-reduced-motion: reduce)' ).matches ||\n\t\t\tisTyping() ||\n\t\t\tgetGlobalBlockCount() > BLOCK_ANIMATION_THRESHOLD;\n\n\t\tif ( disableAnimation ) {\n\t\t\t// If the animation is disabled and the scroll needs to be adjusted,\n\t\t\t// just move directly to the final scroll position.\n\t\t\tpreserveScrollPosition();\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPartOfSelection =\n\t\t\tisSelected ||\n\t\t\tisBlockMultiSelected( clientId ) ||\n\t\t\tisAncestorMultiSelected( clientId );\n\t\t// Make sure the other blocks move under the selected block(s).\n\t\tconst zIndex = isPartOfSelection ? '1' : '';\n\n\t\tconst controller = new Controller( {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tconfig: { mass: 5, tension: 2000, friction: 200 },\n\t\t\tonChange( { value } ) {\n\t\t\t\tif ( ! ref.current ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet { x, y } = value;\n\t\t\t\tx = Math.round( x );\n\t\t\t\ty = Math.round( y );\n\t\t\t\tconst finishedMoving = x === 0 && y === 0;\n\t\t\t\tref.current.style.transformOrigin = 'center center';\n\t\t\t\tref.current.style.transform = finishedMoving\n\t\t\t\t\t? null // Set to `null` to explicitly remove the transform.\n\t\t\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\t\t\tref.current.style.zIndex = zIndex;\n\t\t\t\tpreserveScrollPosition();\n\t\t\t},\n\t\t} );\n\n\t\tref.current.style.transform = undefined;\n\t\tconst destination = getAbsolutePosition( ref.current );\n\n\t\tconst x = Math.round( previous.left - destination.left );\n\t\tconst y = Math.round( previous.top - destination.top );\n\n\t\tcontroller.start( { x: 0, y: 0, from: { x, y } } );\n\n\t\treturn () => {\n\t\t\tcontroller.stop();\n\t\t\tcontroller.set( { x: 0, y: 0 } );\n\t\t};\n\t}, [\n\t\tprevious,\n\t\tprevRect,\n\t\tclientId,\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t] );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_web","require","_element","_dom","_data","_store","BLOCK_ANIMATION_THRESHOLD","getAbsolutePosition","element","top","offsetTop","left","offsetLeft","useMovingAnimation","triggerAnimationOnChange","clientId","ref","useRef","isTyping","getGlobalBlockCount","isBlockSelected","isFirstMultiSelectedBlock","isBlockMultiSelected","isAncestorMultiSelected","useSelect","blockEditorStore","previous","prevRect","useMemo","current","getBoundingClientRect","useLayoutEffect","scrollContainer","getScrollContainer","isSelected","adjustScrolling","preserveScrollPosition","blockRect","diff","scrollTop","disableAnimation","window","matchMedia","matches","isPartOfSelection","zIndex","controller","Controller","x","y","config","mass","tension","friction","onChange","value","Math","round","finishedMoving","style","transformOrigin","transform","undefined","destination","start","from","stop","set","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/use-moving-animation/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Controller } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useMemo, useRef } from '@wordpress/element';\nimport { getScrollContainer } from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * If the block count exceeds the threshold, we disable the reordering animation\n * to avoid laginess.\n */\nconst BLOCK_ANIMATION_THRESHOLD = 200;\n\nfunction getAbsolutePosition( element ) {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n}\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n * - It first renders the element as if there was no animation.\n * - It takes a snapshot of the position of the block to use it\n * as a destination point for the animation.\n * - It restores the element to the previous position using a CSS transform\n * - It uses the \"resetAnimation\" flag to reset the animation\n * from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1 Options\n * @param {*} $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n * @param {string} $1.clientId\n */\nfunction useMovingAnimation( { triggerAnimationOnChange, clientId } ) {\n\tconst ref = useRef();\n\tconst {\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t} = useSelect( blockEditorStore );\n\n\t// Whenever the trigger changes, we need to take a snapshot of the current\n\t// position of the block to use it as a destination point for the animation.\n\tconst { previous, prevRect } = useMemo(\n\t\t() => ( {\n\t\t\tprevious: ref.current && getAbsolutePosition( ref.current ),\n\t\t\tprevRect: ref.current && ref.current.getBoundingClientRect(),\n\t\t} ),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous || ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollContainer = getScrollContainer( ref.current );\n\t\tconst isSelected = isBlockSelected( clientId );\n\t\tconst adjustScrolling =\n\t\t\tisSelected || isFirstMultiSelectedBlock( clientId );\n\n\t\tfunction preserveScrollPosition() {\n\t\t\tif ( adjustScrolling && prevRect ) {\n\t\t\t\tconst blockRect = ref.current.getBoundingClientRect();\n\t\t\t\tconst diff = blockRect.top - prevRect.top;\n\n\t\t\t\tif ( diff ) {\n\t\t\t\t\tscrollContainer.scrollTop += diff;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// We disable the animation if the user has a preference for reduced\n\t\t// motion, if the user is typing (insertion by Enter), or if the block\n\t\t// count exceeds the threshold (insertion caused all the blocks that\n\t\t// follow to animate).\n\t\t// To do: consider enableing the _moving_ animation even for large\n\t\t// posts, while only disabling the _insertion_ animation?\n\t\tconst disableAnimation =\n\t\t\twindow.matchMedia( '(prefers-reduced-motion: reduce)' ).matches ||\n\t\t\tisTyping() ||\n\t\t\tgetGlobalBlockCount() > BLOCK_ANIMATION_THRESHOLD;\n\n\t\tif ( disableAnimation ) {\n\t\t\t// If the animation is disabled and the scroll needs to be adjusted,\n\t\t\t// just move directly to the final scroll position.\n\t\t\tpreserveScrollPosition();\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPartOfSelection =\n\t\t\tisSelected ||\n\t\t\tisBlockMultiSelected( clientId ) ||\n\t\t\tisAncestorMultiSelected( clientId );\n\t\t// Make sure the other blocks move under the selected block(s).\n\t\tconst zIndex = isPartOfSelection ? '1' : '';\n\n\t\tconst controller = new Controller( {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tconfig: { mass: 5, tension: 2000, friction: 200 },\n\t\t\tonChange( { value } ) {\n\t\t\t\tif ( ! ref.current ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet { x, y } = value;\n\t\t\t\tx = Math.round( x );\n\t\t\t\ty = Math.round( y );\n\t\t\t\tconst finishedMoving = x === 0 && y === 0;\n\t\t\t\tref.current.style.transformOrigin = 'center center';\n\t\t\t\tref.current.style.transform = finishedMoving\n\t\t\t\t\t? null // Set to `null` to explicitly remove the transform.\n\t\t\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\t\t\tref.current.style.zIndex = zIndex;\n\t\t\t\tpreserveScrollPosition();\n\t\t\t},\n\t\t} );\n\n\t\tref.current.style.transform = undefined;\n\t\tconst destination = getAbsolutePosition( ref.current );\n\n\t\tconst x = Math.round( previous.left - destination.left );\n\t\tconst y = Math.round( previous.top - destination.top );\n\n\t\tcontroller.start( { x: 0, y: 0, from: { x, y } } );\n\n\t\treturn () => {\n\t\t\tcontroller.stop();\n\t\t\tcontroller.set( { x: 0, y: 0 } );\n\t\t};\n\t}, [\n\t\tprevious,\n\t\tprevRect,\n\t\tclientId,\n\t\tisTyping,\n\t\tgetGlobalBlockCount,\n\t\tisBlockSelected,\n\t\tisFirstMultiSelectedBlock,\n\t\tisBlockMultiSelected,\n\t\tisAncestorMultiSelected,\n\t] );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n"],"mappings":"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","ignoreList":[]}
@@ -42,10 +42,9 @@ function useResizeCanvas(deviceType) {
42
42
  }
43
43
  return deviceWidth < actualWidth ? deviceWidth : actualWidth;
44
44
  };
45
- const marginValue = () => window.innerHeight < 800 ? 36 : 64;
46
45
  const contentInlineStyles = device => {
47
46
  const height = device === 'Mobile' ? '768px' : '1024px';
48
- const marginVertical = marginValue() + 'px';
47
+ const marginVertical = '40px';
49
48
  const marginHorizontal = 'auto';
50
49
  switch (device) {
51
50
  case 'Tablet':
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","useResizeCanvas","deviceType","actualWidth","updateActualWidth","useState","window","innerWidth","useEffect","resizeListener","addEventListener","removeEventListener","getCanvasWidth","device","deviceWidth","marginValue","innerHeight","contentInlineStyles","height","marginVertical","marginHorizontal","width","marginTop","marginBottom","marginLeft","marginRight","overflowY"],"sources":["@wordpress/block-editor/src/components/use-resize-canvas/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\n\n/**\n * Function to resize the editor window.\n *\n * @param {string} deviceType Used for determining the size of the container (e.g. Desktop, Tablet, Mobile)\n *\n * @return {Object} Inline styles to be added to resizable container.\n */\nexport default function useResizeCanvas( deviceType ) {\n\tconst [ actualWidth, updateActualWidth ] = useState( window.innerWidth );\n\n\tuseEffect( () => {\n\t\tif ( deviceType === 'Desktop' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeListener = () => updateActualWidth( window.innerWidth );\n\t\twindow.addEventListener( 'resize', resizeListener );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'resize', resizeListener );\n\t\t};\n\t}, [ deviceType ] );\n\n\tconst getCanvasWidth = ( device ) => {\n\t\tlet deviceWidth;\n\n\t\tswitch ( device ) {\n\t\t\tcase 'Tablet':\n\t\t\t\tdeviceWidth = 780;\n\t\t\t\tbreak;\n\t\t\tcase 'Mobile':\n\t\t\t\tdeviceWidth = 360;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\n\t\treturn deviceWidth < actualWidth ? deviceWidth : actualWidth;\n\t};\n\n\tconst marginValue = () => ( window.innerHeight < 800 ? 36 : 64 );\n\n\tconst contentInlineStyles = ( device ) => {\n\t\tconst height = device === 'Mobile' ? '768px' : '1024px';\n\t\tconst marginVertical = marginValue() + 'px';\n\t\tconst marginHorizontal = 'auto';\n\n\t\tswitch ( device ) {\n\t\t\tcase 'Tablet':\n\t\t\tcase 'Mobile':\n\t\t\t\treturn {\n\t\t\t\t\twidth: getCanvasWidth( device ),\n\t\t\t\t\t// Keeping margin styles separate to avoid warnings\n\t\t\t\t\t// when those props get overridden in the iframe component\n\t\t\t\t\tmarginTop: marginVertical,\n\t\t\t\t\tmarginBottom: marginVertical,\n\t\t\t\t\tmarginLeft: marginHorizontal,\n\t\t\t\t\tmarginRight: marginHorizontal,\n\t\t\t\t\theight,\n\t\t\t\t\toverflowY: 'auto',\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\tmarginLeft: marginHorizontal,\n\t\t\t\t\tmarginRight: marginHorizontal,\n\t\t\t\t};\n\t\t}\n\t};\n\n\treturn contentInlineStyles( deviceType );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,eAAeA,CAAEC,UAAU,EAAG;EACrD,MAAM,CAAEC,WAAW,EAAEC,iBAAiB,CAAE,GAAG,IAAAC,iBAAQ,EAAEC,MAAM,CAACC,UAAW,CAAC;EAExE,IAAAC,kBAAS,EAAE,MAAM;IAChB,IAAKN,UAAU,KAAK,SAAS,EAAG;MAC/B;IACD;IAEA,MAAMO,cAAc,GAAGA,CAAA,KAAML,iBAAiB,CAAEE,MAAM,CAACC,UAAW,CAAC;IACnED,MAAM,CAACI,gBAAgB,CAAE,QAAQ,EAAED,cAAe,CAAC;IAEnD,OAAO,MAAM;MACZH,MAAM,CAACK,mBAAmB,CAAE,QAAQ,EAAEF,cAAe,CAAC;IACvD,CAAC;EACF,CAAC,EAAE,CAAEP,UAAU,CAAG,CAAC;EAEnB,MAAMU,cAAc,GAAKC,MAAM,IAAM;IACpC,IAAIC,WAAW;IAEf,QAASD,MAAM;MACd,KAAK,QAAQ;QACZC,WAAW,GAAG,GAAG;QACjB;MACD,KAAK,QAAQ;QACZA,WAAW,GAAG,GAAG;QACjB;MACD;QACC,OAAO,IAAI;IACb;IAEA,OAAOA,WAAW,GAAGX,WAAW,GAAGW,WAAW,GAAGX,WAAW;EAC7D,CAAC;EAED,MAAMY,WAAW,GAAGA,CAAA,KAAQT,MAAM,CAACU,WAAW,GAAG,GAAG,GAAG,EAAE,GAAG,EAAI;EAEhE,MAAMC,mBAAmB,GAAKJ,MAAM,IAAM;IACzC,MAAMK,MAAM,GAAGL,MAAM,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ;IACvD,MAAMM,cAAc,GAAGJ,WAAW,CAAC,CAAC,GAAG,IAAI;IAC3C,MAAMK,gBAAgB,GAAG,MAAM;IAE/B,QAASP,MAAM;MACd,KAAK,QAAQ;MACb,KAAK,QAAQ;QACZ,OAAO;UACNQ,KAAK,EAAET,cAAc,CAAEC,MAAO,CAAC;UAC/B;UACA;UACAS,SAAS,EAAEH,cAAc;UACzBI,YAAY,EAAEJ,cAAc;UAC5BK,UAAU,EAAEJ,gBAAgB;UAC5BK,WAAW,EAAEL,gBAAgB;UAC7BF,MAAM;UACNQ,SAAS,EAAE;QACZ,CAAC;MACF;QACC,OAAO;UACNF,UAAU,EAAEJ,gBAAgB;UAC5BK,WAAW,EAAEL;QACd,CAAC;IACH;EACD,CAAC;EAED,OAAOH,mBAAmB,CAAEf,UAAW,CAAC;AACzC","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","useResizeCanvas","deviceType","actualWidth","updateActualWidth","useState","window","innerWidth","useEffect","resizeListener","addEventListener","removeEventListener","getCanvasWidth","device","deviceWidth","contentInlineStyles","height","marginVertical","marginHorizontal","width","marginTop","marginBottom","marginLeft","marginRight","overflowY"],"sources":["@wordpress/block-editor/src/components/use-resize-canvas/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\n\n/**\n * Function to resize the editor window.\n *\n * @param {string} deviceType Used for determining the size of the container (e.g. Desktop, Tablet, Mobile)\n *\n * @return {Object} Inline styles to be added to resizable container.\n */\nexport default function useResizeCanvas( deviceType ) {\n\tconst [ actualWidth, updateActualWidth ] = useState( window.innerWidth );\n\n\tuseEffect( () => {\n\t\tif ( deviceType === 'Desktop' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resizeListener = () => updateActualWidth( window.innerWidth );\n\t\twindow.addEventListener( 'resize', resizeListener );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'resize', resizeListener );\n\t\t};\n\t}, [ deviceType ] );\n\n\tconst getCanvasWidth = ( device ) => {\n\t\tlet deviceWidth;\n\n\t\tswitch ( device ) {\n\t\t\tcase 'Tablet':\n\t\t\t\tdeviceWidth = 780;\n\t\t\t\tbreak;\n\t\t\tcase 'Mobile':\n\t\t\t\tdeviceWidth = 360;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\n\t\treturn deviceWidth < actualWidth ? deviceWidth : actualWidth;\n\t};\n\n\tconst contentInlineStyles = ( device ) => {\n\t\tconst height = device === 'Mobile' ? '768px' : '1024px';\n\t\tconst marginVertical = '40px';\n\t\tconst marginHorizontal = 'auto';\n\n\t\tswitch ( device ) {\n\t\t\tcase 'Tablet':\n\t\t\tcase 'Mobile':\n\t\t\t\treturn {\n\t\t\t\t\twidth: getCanvasWidth( device ),\n\t\t\t\t\t// Keeping margin styles separate to avoid warnings\n\t\t\t\t\t// when those props get overridden in the iframe component\n\t\t\t\t\tmarginTop: marginVertical,\n\t\t\t\t\tmarginBottom: marginVertical,\n\t\t\t\t\tmarginLeft: marginHorizontal,\n\t\t\t\t\tmarginRight: marginHorizontal,\n\t\t\t\t\theight,\n\t\t\t\t\toverflowY: 'auto',\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\tmarginLeft: marginHorizontal,\n\t\t\t\t\tmarginRight: marginHorizontal,\n\t\t\t\t};\n\t\t}\n\t};\n\n\treturn contentInlineStyles( deviceType );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,eAAeA,CAAEC,UAAU,EAAG;EACrD,MAAM,CAAEC,WAAW,EAAEC,iBAAiB,CAAE,GAAG,IAAAC,iBAAQ,EAAEC,MAAM,CAACC,UAAW,CAAC;EAExE,IAAAC,kBAAS,EAAE,MAAM;IAChB,IAAKN,UAAU,KAAK,SAAS,EAAG;MAC/B;IACD;IAEA,MAAMO,cAAc,GAAGA,CAAA,KAAML,iBAAiB,CAAEE,MAAM,CAACC,UAAW,CAAC;IACnED,MAAM,CAACI,gBAAgB,CAAE,QAAQ,EAAED,cAAe,CAAC;IAEnD,OAAO,MAAM;MACZH,MAAM,CAACK,mBAAmB,CAAE,QAAQ,EAAEF,cAAe,CAAC;IACvD,CAAC;EACF,CAAC,EAAE,CAAEP,UAAU,CAAG,CAAC;EAEnB,MAAMU,cAAc,GAAKC,MAAM,IAAM;IACpC,IAAIC,WAAW;IAEf,QAASD,MAAM;MACd,KAAK,QAAQ;QACZC,WAAW,GAAG,GAAG;QACjB;MACD,KAAK,QAAQ;QACZA,WAAW,GAAG,GAAG;QACjB;MACD;QACC,OAAO,IAAI;IACb;IAEA,OAAOA,WAAW,GAAGX,WAAW,GAAGW,WAAW,GAAGX,WAAW;EAC7D,CAAC;EAED,MAAMY,mBAAmB,GAAKF,MAAM,IAAM;IACzC,MAAMG,MAAM,GAAGH,MAAM,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ;IACvD,MAAMI,cAAc,GAAG,MAAM;IAC7B,MAAMC,gBAAgB,GAAG,MAAM;IAE/B,QAASL,MAAM;MACd,KAAK,QAAQ;MACb,KAAK,QAAQ;QACZ,OAAO;UACNM,KAAK,EAAEP,cAAc,CAAEC,MAAO,CAAC;UAC/B;UACA;UACAO,SAAS,EAAEH,cAAc;UACzBI,YAAY,EAAEJ,cAAc;UAC5BK,UAAU,EAAEJ,gBAAgB;UAC5BK,WAAW,EAAEL,gBAAgB;UAC7BF,MAAM;UACNQ,SAAS,EAAE;QACZ,CAAC;MACF;QACC,OAAO;UACNF,UAAU,EAAEJ,gBAAgB;UAC5BK,WAAW,EAAEL;QACd,CAAC;IACH;EACD,CAAC;EAED,OAAOH,mBAAmB,CAAEb,UAAW,CAAC;AACzC","ignoreList":[]}
@@ -28,14 +28,16 @@ function useTabNav() {
28
28
  const {
29
29
  hasMultiSelection,
30
30
  getSelectedBlockClientId,
31
- getBlockCount
32
- } = (0, _data.useSelect)(_store.store);
31
+ getBlockCount,
32
+ getBlockOrder,
33
+ getLastFocus,
34
+ getSectionRootClientId,
35
+ isZoomOut,
36
+ __unstableGetEditorMode
37
+ } = (0, _lockUnlock.unlock)((0, _data.useSelect)(_store.store));
33
38
  const {
34
39
  setLastFocus
35
40
  } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
36
- const {
37
- getLastFocus
38
- } = (0, _lockUnlock.unlock)((0, _data.useSelect)(_store.store));
39
41
 
40
42
  // Reference that holds the a flag for enabling or disabling
41
43
  // capturing on the focus capture elements.
@@ -53,6 +55,20 @@ function useTabNav() {
53
55
  // Handles when the last focus has not been set yet, or has been cleared by new blocks being added via the inserter.
54
56
  container.current.querySelector(`[data-block="${getSelectedBlockClientId()}"]`).focus();
55
57
  }
58
+ }
59
+ // In "compose" mode without a selected ID, we want to place focus on the section root when tabbing to the canvas.
60
+ else if (__unstableGetEditorMode() === 'zoom-out' && isZoomOut()) {
61
+ const sectionRootClientId = getSectionRootClientId();
62
+ const sectionBlocks = getBlockOrder(sectionRootClientId);
63
+
64
+ // If we have section within the section root, focus the first one.
65
+ if (sectionBlocks.length) {
66
+ container.current.querySelector(`[data-block="${sectionBlocks[0]}"]`).focus();
67
+ }
68
+ // If we don't have any section blocks, focus the section root.
69
+ else {
70
+ container.current.querySelector(`[data-block="${sectionRootClientId}"]`).focus();
71
+ }
56
72
  } else {
57
73
  const canvasElement = container.current.ownerDocument === event.target.ownerDocument ? container.current : container.current.ownerDocument.defaultView.frameElement;
58
74
  const isBefore =
@@ -1 +1 @@
1
- {"version":3,"names":["_dom","require","_keycodes","_data","_compose","_element","_store","_dom2","_lockUnlock","_jsxRuntime","useTabNav","container","useRef","focusCaptureBeforeRef","focusCaptureAfterRef","hasMultiSelection","getSelectedBlockClientId","getBlockCount","useSelect","blockEditorStore","setLastFocus","unlock","useDispatch","getLastFocus","noCaptureRef","onFocusCapture","event","current","focus","querySelector","canvasElement","ownerDocument","target","defaultView","frameElement","isBefore","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","tabbables","tabbable","find","length","next","before","jsx","ref","tabIndex","onFocus","after","useRefEffect","node","onKeyDown","defaultPrevented","keyCode","TAB","isShift","shiftKey","direction","nextTabbable","currentBlock","closest","isElementPartOfSelectedBlock","isInSameBlock","isInsideRootBlock","isFormElement","preventScroll","onFocusOut","relatedTarget","activeElement","body","preventScrollOnTab","getAttribute","preventDefault","addEventListener","removeEventListener","mergedRefs","useMergeRefs"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-tab-nav.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { focus, isFormElement } from '@wordpress/dom';\nimport { TAB } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { isInSameBlock, isInsideRootBlock } from '../../utils/dom';\nimport { unlock } from '../../lock-unlock';\n\nexport default function useTabNav() {\n\tconst container = useRef();\n\tconst focusCaptureBeforeRef = useRef();\n\tconst focusCaptureAfterRef = useRef();\n\n\tconst { hasMultiSelection, getSelectedBlockClientId, getBlockCount } =\n\t\tuseSelect( blockEditorStore );\n\tconst { setLastFocus } = unlock( useDispatch( blockEditorStore ) );\n\tconst { getLastFocus } = unlock( useSelect( blockEditorStore ) );\n\n\t// Reference that holds the a flag for enabling or disabling\n\t// capturing on the focus capture elements.\n\tconst noCaptureRef = useRef();\n\n\tfunction onFocusCapture( event ) {\n\t\t// Do not capture incoming focus if set by us in WritingFlow.\n\t\tif ( noCaptureRef.current ) {\n\t\t\tnoCaptureRef.current = null;\n\t\t} else if ( hasMultiSelection() ) {\n\t\t\tcontainer.current.focus();\n\t\t} else if ( getSelectedBlockClientId() ) {\n\t\t\tif ( getLastFocus()?.current ) {\n\t\t\t\tgetLastFocus().current.focus();\n\t\t\t} else {\n\t\t\t\t// Handles when the last focus has not been set yet, or has been cleared by new blocks being added via the inserter.\n\t\t\t\tcontainer.current\n\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t`[data-block=\"${ getSelectedBlockClientId() }\"]`\n\t\t\t\t\t)\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t} else {\n\t\t\tconst canvasElement =\n\t\t\t\tcontainer.current.ownerDocument === event.target.ownerDocument\n\t\t\t\t\t? container.current\n\t\t\t\t\t: container.current.ownerDocument.defaultView.frameElement;\n\n\t\t\tconst isBefore =\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tevent.target.compareDocumentPosition( canvasElement ) &\n\t\t\t\tevent.target.DOCUMENT_POSITION_FOLLOWING;\n\t\t\tconst tabbables = focus.tabbable.find( container.current );\n\n\t\t\tif ( tabbables.length ) {\n\t\t\t\tconst next = isBefore\n\t\t\t\t\t? tabbables[ 0 ]\n\t\t\t\t\t: tabbables[ tabbables.length - 1 ];\n\n\t\t\t\tnext.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tconst before = (\n\t\t<div\n\t\t\tref={ focusCaptureBeforeRef }\n\t\t\ttabIndex=\"0\"\n\t\t\tonFocus={ onFocusCapture }\n\t\t/>\n\t);\n\n\tconst after = (\n\t\t<div\n\t\t\tref={ focusCaptureAfterRef }\n\t\t\ttabIndex=\"0\"\n\t\t\tonFocus={ onFocusCapture }\n\t\t/>\n\t);\n\n\tconst ref = useRefEffect( ( node ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In Edit mode, Tab should focus the first tabbable element after\n\t\t\t// the content, which is normally the sidebar (with block controls)\n\t\t\t// and Shift+Tab should focus the first tabbable element before the\n\t\t\t// content, which is normally the block toolbar.\n\t\t\t// Arrow keys can be used, and Tab and arrow keys can be used in\n\t\t\t// Navigation mode (press Esc), to navigate through blocks.\n\t\t\tif ( event.keyCode !== TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isShift = event.shiftKey;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\t\t\tconst nextTabbable = focus.tabbable[ direction ]( event.target );\n\n\t\t\t// We want to constrain the tabbing to the block and its child blocks.\n\t\t\t// If the preceding form element is within a different block,\n\t\t\t// such as two sibling image blocks in the placeholder state,\n\t\t\t// we want shift + tab from the first form element to move to the image\n\t\t\t// block toolbar and not the previous image block's form element.\n\t\t\tconst currentBlock = event.target.closest( '[data-block]' );\n\t\t\tconst isElementPartOfSelectedBlock =\n\t\t\t\tcurrentBlock &&\n\t\t\t\tnextTabbable &&\n\t\t\t\t( isInSameBlock( currentBlock, nextTabbable ) ||\n\t\t\t\t\tisInsideRootBlock( currentBlock, nextTabbable ) );\n\n\t\t\t// Allow tabbing from the block wrapper to a form element,\n\t\t\t// and between form elements rendered in a block and its child blocks,\n\t\t\t// such as inside a placeholder. Form elements are generally\n\t\t\t// meant to be UI rather than part of the content. Ideally\n\t\t\t// these are not rendered in the content and perhaps in the\n\t\t\t// future they can be rendered in an iframe or shadow DOM.\n\t\t\tif (\n\t\t\t\tisFormElement( nextTabbable ) &&\n\t\t\t\tisElementPartOfSelectedBlock\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst next = isShift ? focusCaptureBeforeRef : focusCaptureAfterRef;\n\n\t\t\t// Disable focus capturing on the focus capture element, so it\n\t\t\t// doesn't refocus this block and so it allows default behaviour\n\t\t\t// (moving focus to the next tabbable element).\n\t\t\tnoCaptureRef.current = true;\n\n\t\t\t// Focusing the focus capture element, which is located above and\n\t\t\t// below the editor, should not scroll the page all the way up or\n\t\t\t// down.\n\t\t\tnext.current.focus( { preventScroll: true } );\n\t\t}\n\n\t\tfunction onFocusOut( event ) {\n\t\t\tsetLastFocus( { ...getLastFocus(), current: event.target } );\n\n\t\t\tconst { ownerDocument } = node;\n\n\t\t\t// If focus disappears due to there being no blocks, move focus to\n\t\t\t// the writing flow wrapper.\n\t\t\tif (\n\t\t\t\t! event.relatedTarget &&\n\t\t\t\townerDocument.activeElement === ownerDocument.body &&\n\t\t\t\tgetBlockCount() === 0\n\t\t\t) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t}\n\n\t\t// When tabbing back to an element in block list, this event handler prevents scrolling if the\n\t\t// focus capture divs (before/after) are outside of the viewport. (For example shift+tab back to a paragraph\n\t\t// when focus is on a sidebar element. This prevents the scrollable writing area from jumping either to the\n\t\t// top or bottom of the document.\n\t\t//\n\t\t// Note that it isn't possible to disable scrolling in the onFocus event. We need to intercept this\n\t\t// earlier in the keypress handler, and call focus( { preventScroll: true } ) instead.\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus#parameters\n\t\tfunction preventScrollOnTab( event ) {\n\t\t\tif ( event.keyCode !== TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.target?.getAttribute( 'role' ) === 'region' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( container.current === event.target ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isShift = event.shiftKey;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\t\t\tconst target = focus.tabbable[ direction ]( event.target );\n\t\t\t// Only do something when the next tabbable is a focus capture div (before/after)\n\t\t\tif (\n\t\t\t\ttarget === focusCaptureBeforeRef.current ||\n\t\t\t\ttarget === focusCaptureAfterRef.current\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttarget.focus( { preventScroll: true } );\n\t\t\t}\n\t\t}\n\n\t\tconst { ownerDocument } = node;\n\t\tconst { defaultView } = ownerDocument;\n\t\tdefaultView.addEventListener( 'keydown', preventScrollOnTab );\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\tnode.addEventListener( 'focusout', onFocusOut );\n\t\treturn () => {\n\t\t\tdefaultView.removeEventListener( 'keydown', preventScrollOnTab );\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\tnode.removeEventListener( 'focusout', onFocusOut );\n\t\t};\n\t}, [] );\n\n\tconst mergedRefs = useMergeRefs( [ container, ref ] );\n\n\treturn [ before, mergedRefs, after ];\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_dom","require","_keycodes","_data","_compose","_element","_store","_dom2","_lockUnlock","_jsxRuntime","useTabNav","container","useRef","focusCaptureBeforeRef","focusCaptureAfterRef","hasMultiSelection","getSelectedBlockClientId","getBlockCount","getBlockOrder","getLastFocus","getSectionRootClientId","isZoomOut","__unstableGetEditorMode","unlock","useSelect","blockEditorStore","setLastFocus","useDispatch","noCaptureRef","onFocusCapture","event","current","focus","querySelector","sectionRootClientId","sectionBlocks","length","canvasElement","ownerDocument","target","defaultView","frameElement","isBefore","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","tabbables","tabbable","find","next","before","jsx","ref","tabIndex","onFocus","after","useRefEffect","node","onKeyDown","defaultPrevented","keyCode","TAB","isShift","shiftKey","direction","nextTabbable","currentBlock","closest","isElementPartOfSelectedBlock","isInSameBlock","isInsideRootBlock","isFormElement","preventScroll","onFocusOut","relatedTarget","activeElement","body","preventScrollOnTab","getAttribute","preventDefault","addEventListener","removeEventListener","mergedRefs","useMergeRefs"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-tab-nav.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { focus, isFormElement } from '@wordpress/dom';\nimport { TAB } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { isInSameBlock, isInsideRootBlock } from '../../utils/dom';\nimport { unlock } from '../../lock-unlock';\n\nexport default function useTabNav() {\n\tconst container = useRef();\n\tconst focusCaptureBeforeRef = useRef();\n\tconst focusCaptureAfterRef = useRef();\n\n\tconst {\n\t\thasMultiSelection,\n\t\tgetSelectedBlockClientId,\n\t\tgetBlockCount,\n\t\tgetBlockOrder,\n\t\tgetLastFocus,\n\t\tgetSectionRootClientId,\n\t\tisZoomOut,\n\t\t__unstableGetEditorMode,\n\t} = unlock( useSelect( blockEditorStore ) );\n\tconst { setLastFocus } = unlock( useDispatch( blockEditorStore ) );\n\n\t// Reference that holds the a flag for enabling or disabling\n\t// capturing on the focus capture elements.\n\tconst noCaptureRef = useRef();\n\n\tfunction onFocusCapture( event ) {\n\t\t// Do not capture incoming focus if set by us in WritingFlow.\n\t\tif ( noCaptureRef.current ) {\n\t\t\tnoCaptureRef.current = null;\n\t\t} else if ( hasMultiSelection() ) {\n\t\t\tcontainer.current.focus();\n\t\t} else if ( getSelectedBlockClientId() ) {\n\t\t\tif ( getLastFocus()?.current ) {\n\t\t\t\tgetLastFocus().current.focus();\n\t\t\t} else {\n\t\t\t\t// Handles when the last focus has not been set yet, or has been cleared by new blocks being added via the inserter.\n\t\t\t\tcontainer.current\n\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t`[data-block=\"${ getSelectedBlockClientId() }\"]`\n\t\t\t\t\t)\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t}\n\t\t// In \"compose\" mode without a selected ID, we want to place focus on the section root when tabbing to the canvas.\n\t\telse if ( __unstableGetEditorMode() === 'zoom-out' && isZoomOut() ) {\n\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\t\t\tconst sectionBlocks = getBlockOrder( sectionRootClientId );\n\n\t\t\t// If we have section within the section root, focus the first one.\n\t\t\tif ( sectionBlocks.length ) {\n\t\t\t\tcontainer.current\n\t\t\t\t\t.querySelector( `[data-block=\"${ sectionBlocks[ 0 ] }\"]` )\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t\t// If we don't have any section blocks, focus the section root.\n\t\t\telse {\n\t\t\t\tcontainer.current\n\t\t\t\t\t.querySelector( `[data-block=\"${ sectionRootClientId }\"]` )\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t} else {\n\t\t\tconst canvasElement =\n\t\t\t\tcontainer.current.ownerDocument === event.target.ownerDocument\n\t\t\t\t\t? container.current\n\t\t\t\t\t: container.current.ownerDocument.defaultView.frameElement;\n\n\t\t\tconst isBefore =\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tevent.target.compareDocumentPosition( canvasElement ) &\n\t\t\t\tevent.target.DOCUMENT_POSITION_FOLLOWING;\n\t\t\tconst tabbables = focus.tabbable.find( container.current );\n\n\t\t\tif ( tabbables.length ) {\n\t\t\t\tconst next = isBefore\n\t\t\t\t\t? tabbables[ 0 ]\n\t\t\t\t\t: tabbables[ tabbables.length - 1 ];\n\t\t\t\tnext.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tconst before = (\n\t\t<div\n\t\t\tref={ focusCaptureBeforeRef }\n\t\t\ttabIndex=\"0\"\n\t\t\tonFocus={ onFocusCapture }\n\t\t/>\n\t);\n\n\tconst after = (\n\t\t<div\n\t\t\tref={ focusCaptureAfterRef }\n\t\t\ttabIndex=\"0\"\n\t\t\tonFocus={ onFocusCapture }\n\t\t/>\n\t);\n\n\tconst ref = useRefEffect( ( node ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In Edit mode, Tab should focus the first tabbable element after\n\t\t\t// the content, which is normally the sidebar (with block controls)\n\t\t\t// and Shift+Tab should focus the first tabbable element before the\n\t\t\t// content, which is normally the block toolbar.\n\t\t\t// Arrow keys can be used, and Tab and arrow keys can be used in\n\t\t\t// Navigation mode (press Esc), to navigate through blocks.\n\t\t\tif ( event.keyCode !== TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isShift = event.shiftKey;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\t\t\tconst nextTabbable = focus.tabbable[ direction ]( event.target );\n\n\t\t\t// We want to constrain the tabbing to the block and its child blocks.\n\t\t\t// If the preceding form element is within a different block,\n\t\t\t// such as two sibling image blocks in the placeholder state,\n\t\t\t// we want shift + tab from the first form element to move to the image\n\t\t\t// block toolbar and not the previous image block's form element.\n\t\t\tconst currentBlock = event.target.closest( '[data-block]' );\n\t\t\tconst isElementPartOfSelectedBlock =\n\t\t\t\tcurrentBlock &&\n\t\t\t\tnextTabbable &&\n\t\t\t\t( isInSameBlock( currentBlock, nextTabbable ) ||\n\t\t\t\t\tisInsideRootBlock( currentBlock, nextTabbable ) );\n\n\t\t\t// Allow tabbing from the block wrapper to a form element,\n\t\t\t// and between form elements rendered in a block and its child blocks,\n\t\t\t// such as inside a placeholder. Form elements are generally\n\t\t\t// meant to be UI rather than part of the content. Ideally\n\t\t\t// these are not rendered in the content and perhaps in the\n\t\t\t// future they can be rendered in an iframe or shadow DOM.\n\t\t\tif (\n\t\t\t\tisFormElement( nextTabbable ) &&\n\t\t\t\tisElementPartOfSelectedBlock\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst next = isShift ? focusCaptureBeforeRef : focusCaptureAfterRef;\n\n\t\t\t// Disable focus capturing on the focus capture element, so it\n\t\t\t// doesn't refocus this block and so it allows default behaviour\n\t\t\t// (moving focus to the next tabbable element).\n\t\t\tnoCaptureRef.current = true;\n\n\t\t\t// Focusing the focus capture element, which is located above and\n\t\t\t// below the editor, should not scroll the page all the way up or\n\t\t\t// down.\n\t\t\tnext.current.focus( { preventScroll: true } );\n\t\t}\n\n\t\tfunction onFocusOut( event ) {\n\t\t\tsetLastFocus( { ...getLastFocus(), current: event.target } );\n\n\t\t\tconst { ownerDocument } = node;\n\n\t\t\t// If focus disappears due to there being no blocks, move focus to\n\t\t\t// the writing flow wrapper.\n\t\t\tif (\n\t\t\t\t! event.relatedTarget &&\n\t\t\t\townerDocument.activeElement === ownerDocument.body &&\n\t\t\t\tgetBlockCount() === 0\n\t\t\t) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t}\n\n\t\t// When tabbing back to an element in block list, this event handler prevents scrolling if the\n\t\t// focus capture divs (before/after) are outside of the viewport. (For example shift+tab back to a paragraph\n\t\t// when focus is on a sidebar element. This prevents the scrollable writing area from jumping either to the\n\t\t// top or bottom of the document.\n\t\t//\n\t\t// Note that it isn't possible to disable scrolling in the onFocus event. We need to intercept this\n\t\t// earlier in the keypress handler, and call focus( { preventScroll: true } ) instead.\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus#parameters\n\t\tfunction preventScrollOnTab( event ) {\n\t\t\tif ( event.keyCode !== TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.target?.getAttribute( 'role' ) === 'region' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( container.current === event.target ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isShift = event.shiftKey;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\t\t\tconst target = focus.tabbable[ direction ]( event.target );\n\t\t\t// Only do something when the next tabbable is a focus capture div (before/after)\n\t\t\tif (\n\t\t\t\ttarget === focusCaptureBeforeRef.current ||\n\t\t\t\ttarget === focusCaptureAfterRef.current\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttarget.focus( { preventScroll: true } );\n\t\t\t}\n\t\t}\n\n\t\tconst { ownerDocument } = node;\n\t\tconst { defaultView } = ownerDocument;\n\t\tdefaultView.addEventListener( 'keydown', preventScrollOnTab );\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\tnode.addEventListener( 'focusout', onFocusOut );\n\t\treturn () => {\n\t\t\tdefaultView.removeEventListener( 'keydown', preventScrollOnTab );\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\tnode.removeEventListener( 'focusout', onFocusOut );\n\t\t};\n\t}, [] );\n\n\tconst mergedRefs = useMergeRefs( [ container, ref ] );\n\n\treturn [ before, mergedRefs, after ];\n}\n"],"mappings":"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","ignoreList":[]}