@wordpress/block-editor 12.14.0 → 12.16.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 (664) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +10 -5
  3. package/build/components/block-canvas/index.js +22 -6
  4. package/build/components/block-canvas/index.js.map +1 -1
  5. package/build/components/block-card/index.js +1 -1
  6. package/build/components/block-card/index.js.map +1 -1
  7. package/build/components/block-controls/hook.js +3 -23
  8. package/build/components/block-controls/hook.js.map +1 -1
  9. package/build/components/block-edit/context.js +5 -1
  10. package/build/components/block-edit/context.js.map +1 -1
  11. package/build/components/block-edit/index.js +18 -9
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-info-slot-fill/index.js +3 -4
  14. package/build/components/block-info-slot-fill/index.js.map +1 -1
  15. package/build/components/block-list/block.js +28 -9
  16. package/build/components/block-list/block.js.map +1 -1
  17. package/build/components/block-list/block.native.js +16 -5
  18. package/build/components/block-list/block.native.js.map +1 -1
  19. package/build/components/block-list/use-block-props/index.js +61 -18
  20. package/build/components/block-list/use-block-props/index.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  22. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  23. package/build/components/block-list/use-block-props/use-is-hovered.js +4 -14
  24. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  26. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  27. package/build/components/block-parent-selector/index.js +1 -1
  28. package/build/components/block-parent-selector/index.js.map +1 -1
  29. package/build/components/block-pattern-setup/index.js +25 -16
  30. package/build/components/block-pattern-setup/index.js.map +1 -1
  31. package/build/components/block-pattern-setup/setup-toolbar.js +4 -2
  32. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  33. package/build/components/block-patterns-list/index.js +37 -20
  34. package/build/components/block-patterns-list/index.js.map +1 -1
  35. package/build/components/block-removal-warning-modal/index.js +2 -9
  36. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  37. package/build/components/block-rename/index.js +28 -0
  38. package/build/components/block-rename/index.js.map +1 -0
  39. package/build/components/block-rename/is-empty-string.js +10 -0
  40. package/build/components/block-rename/is-empty-string.js.map +1 -0
  41. package/build/components/block-rename/modal.js +90 -0
  42. package/build/components/block-rename/modal.js.map +1 -0
  43. package/build/components/block-rename/rename-control.js +74 -0
  44. package/build/components/block-rename/rename-control.js.map +1 -0
  45. package/build/components/block-rename/use-block-rename.js +17 -0
  46. package/build/components/block-rename/use-block-rename.js.map +1 -0
  47. package/build/components/block-settings/container.native.js +6 -4
  48. package/build/components/block-settings/container.native.js.map +1 -1
  49. package/build/components/block-settings-menu/block-settings-dropdown.js +33 -20
  50. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  51. package/build/components/block-settings-menu-controls/index.js +7 -0
  52. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  53. package/build/components/block-styles/index.js +1 -1
  54. package/build/components/block-styles/index.js.map +1 -1
  55. package/build/components/block-styles/index.native.js +3 -2
  56. package/build/components/block-styles/index.native.js.map +1 -1
  57. package/build/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  58. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  59. package/build/components/block-toolbar/index.js +89 -27
  60. package/build/components/block-toolbar/index.js.map +1 -1
  61. package/build/components/block-tools/block-toolbar-breadcrumb.js +49 -0
  62. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  63. package/build/components/block-tools/block-toolbar-popover.js +86 -0
  64. package/build/components/block-tools/block-toolbar-popover.js.map +1 -0
  65. package/build/components/block-tools/index.js +27 -24
  66. package/build/components/block-tools/index.js.map +1 -1
  67. package/build/components/block-types-list/index.js +6 -2
  68. package/build/components/block-types-list/index.js.map +1 -1
  69. package/build/components/block-types-list/index.native.js +4 -3
  70. package/build/components/block-types-list/index.native.js.map +1 -1
  71. package/build/components/block-variation-picker/index.native.js +2 -1
  72. package/build/components/block-variation-picker/index.native.js.map +1 -1
  73. package/build/components/colors-gradients/control.js +28 -17
  74. package/build/components/colors-gradients/control.js.map +1 -1
  75. package/build/components/date-format-picker/index.js +8 -1
  76. package/build/components/date-format-picker/index.js.map +1 -1
  77. package/build/components/duotone-control/index.js +1 -4
  78. package/build/components/duotone-control/index.js.map +1 -1
  79. package/build/components/global-styles/advanced-panel.js +1 -1
  80. package/build/components/global-styles/advanced-panel.js.map +1 -1
  81. package/build/components/global-styles/color-panel.js +22 -20
  82. package/build/components/global-styles/color-panel.js.map +1 -1
  83. package/build/components/global-styles/filters-panel.js +9 -3
  84. package/build/components/global-styles/filters-panel.js.map +1 -1
  85. package/build/components/global-styles/typography-panel.js +20 -31
  86. package/build/components/global-styles/typography-panel.js.map +1 -1
  87. package/build/components/image-link-destinations/index.native.js +118 -0
  88. package/build/components/image-link-destinations/index.native.js.map +1 -0
  89. package/build/components/image-size-control/index.js +0 -5
  90. package/build/components/image-size-control/index.js.map +1 -1
  91. package/build/components/index.native.js +8 -0
  92. package/build/components/index.native.js.map +1 -1
  93. package/build/components/inner-blocks/index.js +3 -1
  94. package/build/components/inner-blocks/index.js.map +1 -1
  95. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +29 -31
  96. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  97. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  98. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  99. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +1 -1
  100. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  101. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +1 -1
  102. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  103. package/build/components/inserter/block-patterns-tab/utils.js +3 -4
  104. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  105. package/build/components/inserter/hooks/use-patterns-state.js +2 -1
  106. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  107. package/build/components/inserter/media-tab/media-panel.js +2 -2
  108. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  109. package/build/components/inserter/menu.js +14 -7
  110. package/build/components/inserter/menu.js.map +1 -1
  111. package/build/components/inserter/preview-panel.js +2 -2
  112. package/build/components/inserter/preview-panel.js.map +1 -1
  113. package/build/components/inserter-button/index.native.js +98 -0
  114. package/build/components/inserter-button/index.native.js.map +1 -0
  115. package/build/components/inserter-button/sparkles.js +23 -0
  116. package/build/components/inserter-button/sparkles.js.map +1 -0
  117. package/build/components/inserter-draggable-blocks/index.js +8 -4
  118. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  119. package/build/components/inserter-listbox/index.js +11 -6
  120. package/build/components/inserter-listbox/index.js.map +1 -1
  121. package/build/components/inserter-listbox/item.js +24 -23
  122. package/build/components/inserter-listbox/item.js.map +1 -1
  123. package/build/components/inserter-listbox/row.js +5 -5
  124. package/build/components/inserter-listbox/row.js.map +1 -1
  125. package/build/components/inspector-controls/fill.js +3 -3
  126. package/build/components/inspector-controls/fill.js.map +1 -1
  127. package/build/components/inspector-controls/fill.native.js +3 -3
  128. package/build/components/inspector-controls/fill.native.js.map +1 -1
  129. package/build/components/list-view/use-list-view-expand-selected-item.js +2 -3
  130. package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  131. package/build/components/navigable-toolbar/index.js +2 -2
  132. package/build/components/navigable-toolbar/index.js.map +1 -1
  133. package/build/components/preview-options/index.js +6 -60
  134. package/build/components/preview-options/index.js.map +1 -1
  135. package/build/components/rich-text/content.js +26 -23
  136. package/build/components/rich-text/content.js.map +1 -1
  137. package/build/components/rich-text/get-rich-text-values.js +2 -1
  138. package/build/components/rich-text/get-rich-text-values.js.map +1 -1
  139. package/build/components/rich-text/index.js +2 -30
  140. package/build/components/rich-text/index.js.map +1 -1
  141. package/build/components/rich-text/index.native.js +10 -17
  142. package/build/components/rich-text/index.native.js.map +1 -1
  143. package/build/components/rich-text/native/get-format-colors.native.js +22 -24
  144. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  145. package/build/components/rich-text/native/index.native.js +41 -37
  146. package/build/components/rich-text/native/index.native.js.map +1 -1
  147. package/build/components/rich-text/use-input-rules.js +35 -2
  148. package/build/components/rich-text/use-input-rules.js.map +1 -1
  149. package/build/components/rich-text/with-deprecations.js +50 -0
  150. package/build/components/rich-text/with-deprecations.js.map +1 -0
  151. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  152. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  153. package/build/components/use-block-drop-zone/index.js +74 -9
  154. package/build/components/use-block-drop-zone/index.js.map +1 -1
  155. package/build/components/use-moving-animation/index.js +2 -1
  156. package/build/components/use-moving-animation/index.js.map +1 -1
  157. package/build/components/use-on-block-drop/index.js +1 -1
  158. package/build/components/use-on-block-drop/index.js.map +1 -1
  159. package/build/components/use-resize-canvas/index.js +4 -1
  160. package/build/components/use-resize-canvas/index.js.map +1 -1
  161. package/build/components/use-settings/index.js +16 -2
  162. package/build/components/use-settings/index.js.map +1 -1
  163. package/build/hooks/align.js +20 -68
  164. package/build/hooks/align.js.map +1 -1
  165. package/build/hooks/align.native.js +11 -1
  166. package/build/hooks/align.native.js.map +1 -1
  167. package/build/hooks/anchor.js +13 -29
  168. package/build/hooks/anchor.js.map +1 -1
  169. package/build/hooks/background.js +28 -31
  170. package/build/hooks/background.js.map +1 -1
  171. package/build/hooks/block-hooks.js +24 -32
  172. package/build/hooks/block-hooks.js.map +1 -1
  173. package/build/hooks/block-renaming.js +38 -0
  174. package/build/hooks/block-renaming.js.map +1 -1
  175. package/build/hooks/border.js +58 -80
  176. package/build/hooks/border.js.map +1 -1
  177. package/build/hooks/color.js +76 -89
  178. package/build/hooks/color.js.map +1 -1
  179. package/build/hooks/content-lock-ui.js +29 -29
  180. package/build/hooks/content-lock-ui.js.map +1 -1
  181. package/build/hooks/custom-class-name.js +12 -29
  182. package/build/hooks/custom-class-name.js.map +1 -1
  183. package/build/hooks/custom-fields.js +64 -73
  184. package/build/hooks/custom-fields.js.map +1 -1
  185. package/build/hooks/dimensions.js +21 -17
  186. package/build/hooks/dimensions.js.map +1 -1
  187. package/build/hooks/duotone.js +31 -61
  188. package/build/hooks/duotone.js.map +1 -1
  189. package/build/hooks/font-family.js +16 -25
  190. package/build/hooks/font-family.js.map +1 -1
  191. package/build/hooks/font-size.js +51 -119
  192. package/build/hooks/font-size.js.map +1 -1
  193. package/build/hooks/index.js +25 -15
  194. package/build/hooks/index.js.map +1 -1
  195. package/build/hooks/index.native.js +10 -3
  196. package/build/hooks/index.native.js.map +1 -1
  197. package/build/hooks/layout-child.js +68 -0
  198. package/build/hooks/layout-child.js.map +1 -0
  199. package/build/hooks/layout.js +29 -108
  200. package/build/hooks/layout.js.map +1 -1
  201. package/build/hooks/padding.js +2 -2
  202. package/build/hooks/padding.js.map +1 -1
  203. package/build/hooks/position.js +40 -62
  204. package/build/hooks/position.js.map +1 -1
  205. package/build/hooks/style.js +51 -88
  206. package/build/hooks/style.js.map +1 -1
  207. package/build/hooks/typography.js +34 -14
  208. package/build/hooks/typography.js.map +1 -1
  209. package/build/hooks/utils.js +154 -7
  210. package/build/hooks/utils.js.map +1 -1
  211. package/build/layouts/constrained.js +4 -3
  212. package/build/layouts/constrained.js.map +1 -1
  213. package/build/private-apis.js +0 -2
  214. package/build/private-apis.js.map +1 -1
  215. package/build/store/private-actions.js +8 -0
  216. package/build/store/private-actions.js.map +1 -1
  217. package/build/store/private-selectors.js +34 -0
  218. package/build/store/private-selectors.js.map +1 -1
  219. package/build/store/reducer.js +8 -0
  220. package/build/store/reducer.js.map +1 -1
  221. package/build/store/selectors.js +10 -58
  222. package/build/store/selectors.js.map +1 -1
  223. package/build/store/utils.js +66 -0
  224. package/build/store/utils.js.map +1 -0
  225. package/build/utils/object.js +21 -61
  226. package/build/utils/object.js.map +1 -1
  227. package/build/utils/selection.js +9 -1
  228. package/build/utils/selection.js.map +1 -1
  229. package/build/utils/transform-styles/index.js +26 -6
  230. package/build/utils/transform-styles/index.js.map +1 -1
  231. package/build-module/components/block-canvas/index.js +23 -7
  232. package/build-module/components/block-canvas/index.js.map +1 -1
  233. package/build-module/components/block-card/index.js +1 -1
  234. package/build-module/components/block-card/index.js.map +1 -1
  235. package/build-module/components/block-controls/hook.js +4 -24
  236. package/build-module/components/block-controls/hook.js.map +1 -1
  237. package/build-module/components/block-edit/context.js +2 -0
  238. package/build-module/components/block-edit/context.js.map +1 -1
  239. package/build-module/components/block-edit/index.js +19 -10
  240. package/build-module/components/block-edit/index.js.map +1 -1
  241. package/build-module/components/block-info-slot-fill/index.js +3 -3
  242. package/build-module/components/block-info-slot-fill/index.js.map +1 -1
  243. package/build-module/components/block-list/block.js +29 -10
  244. package/build-module/components/block-list/block.js.map +1 -1
  245. package/build-module/components/block-list/block.native.js +16 -5
  246. package/build-module/components/block-list/block.native.js.map +1 -1
  247. package/build-module/components/block-list/use-block-props/index.js +62 -19
  248. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  249. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -29
  250. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  251. package/build-module/components/block-list/use-block-props/use-is-hovered.js +4 -14
  252. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  253. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
  254. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  255. package/build-module/components/block-parent-selector/index.js +1 -1
  256. package/build-module/components/block-parent-selector/index.js.map +1 -1
  257. package/build-module/components/block-pattern-setup/index.js +24 -15
  258. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  259. package/build-module/components/block-pattern-setup/setup-toolbar.js +4 -2
  260. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  261. package/build-module/components/block-patterns-list/index.js +37 -20
  262. package/build-module/components/block-patterns-list/index.js.map +1 -1
  263. package/build-module/components/block-removal-warning-modal/index.js +3 -10
  264. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  265. package/build-module/components/block-rename/index.js +4 -0
  266. package/build-module/components/block-rename/index.js.map +1 -0
  267. package/build-module/components/block-rename/is-empty-string.js +4 -0
  268. package/build-module/components/block-rename/is-empty-string.js.map +1 -0
  269. package/build-module/components/block-rename/modal.js +82 -0
  270. package/build-module/components/block-rename/modal.js.map +1 -0
  271. package/build-module/components/block-rename/rename-control.js +66 -0
  272. package/build-module/components/block-rename/rename-control.js.map +1 -0
  273. package/build-module/components/block-rename/use-block-rename.js +10 -0
  274. package/build-module/components/block-rename/use-block-rename.js.map +1 -0
  275. package/build-module/components/block-settings/container.native.js +4 -2
  276. package/build-module/components/block-settings/container.native.js.map +1 -1
  277. package/build-module/components/block-settings-menu/block-settings-dropdown.js +34 -21
  278. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  279. package/build-module/components/block-settings-menu-controls/index.js +7 -0
  280. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  281. package/build-module/components/block-styles/index.js +1 -1
  282. package/build-module/components/block-styles/index.js.map +1 -1
  283. package/build-module/components/block-styles/index.native.js +3 -2
  284. package/build-module/components/block-styles/index.native.js.map +1 -1
  285. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  286. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  287. package/build-module/components/block-toolbar/index.js +88 -25
  288. package/build-module/components/block-toolbar/index.js.map +1 -1
  289. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +41 -0
  290. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
  291. package/build-module/components/block-tools/block-toolbar-popover.js +76 -0
  292. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -0
  293. package/build-module/components/block-tools/index.js +27 -24
  294. package/build-module/components/block-tools/index.js.map +1 -1
  295. package/build-module/components/block-types-list/index.js +6 -2
  296. package/build-module/components/block-types-list/index.js.map +1 -1
  297. package/build-module/components/block-types-list/index.native.js +2 -1
  298. package/build-module/components/block-types-list/index.native.js.map +1 -1
  299. package/build-module/components/block-variation-picker/index.native.js +2 -1
  300. package/build-module/components/block-variation-picker/index.native.js.map +1 -1
  301. package/build-module/components/colors-gradients/control.js +29 -18
  302. package/build-module/components/colors-gradients/control.js.map +1 -1
  303. package/build-module/components/date-format-picker/index.js +8 -1
  304. package/build-module/components/date-format-picker/index.js.map +1 -1
  305. package/build-module/components/duotone-control/index.js +1 -4
  306. package/build-module/components/duotone-control/index.js.map +1 -1
  307. package/build-module/components/global-styles/advanced-panel.js +1 -1
  308. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  309. package/build-module/components/global-styles/color-panel.js +23 -21
  310. package/build-module/components/global-styles/color-panel.js.map +1 -1
  311. package/build-module/components/global-styles/filters-panel.js +10 -4
  312. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  313. package/build-module/components/global-styles/typography-panel.js +20 -31
  314. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  315. package/build-module/components/image-link-destinations/index.native.js +109 -0
  316. package/build-module/components/image-link-destinations/index.native.js.map +1 -0
  317. package/build-module/components/image-size-control/index.js +0 -5
  318. package/build-module/components/image-size-control/index.js.map +1 -1
  319. package/build-module/components/index.native.js +1 -0
  320. package/build-module/components/index.native.js.map +1 -1
  321. package/build-module/components/inner-blocks/index.js +3 -1
  322. package/build-module/components/inner-blocks/index.js.map +1 -1
  323. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +30 -32
  324. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  325. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  326. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  327. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
  328. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  329. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +2 -2
  330. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  331. package/build-module/components/inserter/block-patterns-tab/utils.js +3 -4
  332. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  333. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -1
  334. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  335. package/build-module/components/inserter/media-tab/media-panel.js +1 -1
  336. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  337. package/build-module/components/inserter/menu.js +14 -7
  338. package/build-module/components/inserter/menu.js.map +1 -1
  339. package/build-module/components/inserter/preview-panel.js +2 -2
  340. package/build-module/components/inserter/preview-panel.js.map +1 -1
  341. package/build-module/components/inserter-button/index.native.js +89 -0
  342. package/build-module/components/inserter-button/index.native.js.map +1 -0
  343. package/build-module/components/inserter-button/sparkles.js +15 -0
  344. package/build-module/components/inserter-button/sparkles.js.map +1 -0
  345. package/build-module/components/inserter-draggable-blocks/index.js +9 -5
  346. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  347. package/build-module/components/inserter-listbox/index.js +13 -8
  348. package/build-module/components/inserter-listbox/index.js.map +1 -1
  349. package/build-module/components/inserter-listbox/item.js +25 -23
  350. package/build-module/components/inserter-listbox/item.js.map +1 -1
  351. package/build-module/components/inserter-listbox/row.js +6 -5
  352. package/build-module/components/inserter-listbox/row.js.map +1 -1
  353. package/build-module/components/inspector-controls/fill.js +3 -3
  354. package/build-module/components/inspector-controls/fill.js.map +1 -1
  355. package/build-module/components/inspector-controls/fill.native.js +3 -3
  356. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  357. package/build-module/components/list-view/use-list-view-expand-selected-item.js +2 -3
  358. package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  359. package/build-module/components/navigable-toolbar/index.js +2 -2
  360. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  361. package/build-module/components/preview-options/index.js +6 -60
  362. package/build-module/components/preview-options/index.js.map +1 -1
  363. package/build-module/components/rich-text/content.js +25 -21
  364. package/build-module/components/rich-text/content.js.map +1 -1
  365. package/build-module/components/rich-text/get-rich-text-values.js +2 -1
  366. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
  367. package/build-module/components/rich-text/index.js +4 -32
  368. package/build-module/components/rich-text/index.js.map +1 -1
  369. package/build-module/components/rich-text/index.native.js +11 -19
  370. package/build-module/components/rich-text/index.native.js.map +1 -1
  371. package/build-module/components/rich-text/native/get-format-colors.native.js +22 -24
  372. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  373. package/build-module/components/rich-text/native/index.native.js +41 -37
  374. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  375. package/build-module/components/rich-text/use-input-rules.js +36 -3
  376. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  377. package/build-module/components/rich-text/with-deprecations.js +42 -0
  378. package/build-module/components/rich-text/with-deprecations.js.map +1 -0
  379. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  380. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  381. package/build-module/components/use-block-drop-zone/index.js +73 -9
  382. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  383. package/build-module/components/use-moving-animation/index.js +2 -1
  384. package/build-module/components/use-moving-animation/index.js.map +1 -1
  385. package/build-module/components/use-on-block-drop/index.js +1 -1
  386. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  387. package/build-module/components/use-resize-canvas/index.js +4 -1
  388. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  389. package/build-module/components/use-settings/index.js +15 -3
  390. package/build-module/components/use-settings/index.js.map +1 -1
  391. package/build-module/hooks/align.js +19 -66
  392. package/build-module/hooks/align.js.map +1 -1
  393. package/build-module/hooks/align.native.js +1 -0
  394. package/build-module/hooks/align.native.js.map +1 -1
  395. package/build-module/hooks/anchor.js +11 -26
  396. package/build-module/hooks/anchor.js.map +1 -1
  397. package/build-module/hooks/background.js +26 -28
  398. package/build-module/hooks/background.js.map +1 -1
  399. package/build-module/hooks/block-hooks.js +22 -30
  400. package/build-module/hooks/block-hooks.js.map +1 -1
  401. package/build-module/hooks/block-renaming.js +36 -0
  402. package/build-module/hooks/block-renaming.js.map +1 -1
  403. package/build-module/hooks/border.js +57 -78
  404. package/build-module/hooks/border.js.map +1 -1
  405. package/build-module/hooks/color.js +74 -86
  406. package/build-module/hooks/color.js.map +1 -1
  407. package/build-module/hooks/content-lock-ui.js +27 -27
  408. package/build-module/hooks/content-lock-ui.js.map +1 -1
  409. package/build-module/hooks/custom-class-name.js +11 -27
  410. package/build-module/hooks/custom-class-name.js.map +1 -1
  411. package/build-module/hooks/custom-fields.js +60 -74
  412. package/build-module/hooks/custom-fields.js.map +1 -1
  413. package/build-module/hooks/dimensions.js +21 -16
  414. package/build-module/hooks/dimensions.js.map +1 -1
  415. package/build-module/hooks/duotone.js +30 -61
  416. package/build-module/hooks/duotone.js.map +1 -1
  417. package/build-module/hooks/font-family.js +14 -23
  418. package/build-module/hooks/font-family.js.map +1 -1
  419. package/build-module/hooks/font-size.js +49 -119
  420. package/build-module/hooks/font-size.js.map +1 -1
  421. package/build-module/hooks/index.js +18 -15
  422. package/build-module/hooks/index.js.map +1 -1
  423. package/build-module/hooks/index.native.js +5 -3
  424. package/build-module/hooks/index.native.js.map +1 -1
  425. package/build-module/hooks/layout-child.js +60 -0
  426. package/build-module/hooks/layout-child.js.map +1 -0
  427. package/build-module/hooks/layout.js +26 -105
  428. package/build-module/hooks/layout.js.map +1 -1
  429. package/build-module/hooks/padding.js +2 -2
  430. package/build-module/hooks/padding.js.map +1 -1
  431. package/build-module/hooks/position.js +38 -59
  432. package/build-module/hooks/position.js.map +1 -1
  433. package/build-module/hooks/style.js +51 -84
  434. package/build-module/hooks/style.js.map +1 -1
  435. package/build-module/hooks/typography.js +33 -12
  436. package/build-module/hooks/typography.js.map +1 -1
  437. package/build-module/hooks/utils.js +149 -6
  438. package/build-module/hooks/utils.js.map +1 -1
  439. package/build-module/layouts/constrained.js +4 -3
  440. package/build-module/layouts/constrained.js.map +1 -1
  441. package/build-module/private-apis.js +0 -2
  442. package/build-module/private-apis.js.map +1 -1
  443. package/build-module/store/private-actions.js +7 -0
  444. package/build-module/store/private-actions.js.map +1 -1
  445. package/build-module/store/private-selectors.js +33 -1
  446. package/build-module/store/private-selectors.js.map +1 -1
  447. package/build-module/store/reducer.js +8 -0
  448. package/build-module/store/reducer.js.map +1 -1
  449. package/build-module/store/selectors.js +3 -51
  450. package/build-module/store/selectors.js.map +1 -1
  451. package/build-module/store/utils.js +56 -0
  452. package/build-module/store/utils.js.map +1 -0
  453. package/build-module/utils/object.js +21 -60
  454. package/build-module/utils/object.js.map +1 -1
  455. package/build-module/utils/selection.js +9 -1
  456. package/build-module/utils/selection.js.map +1 -1
  457. package/build-module/utils/transform-styles/index.js +24 -7
  458. package/build-module/utils/transform-styles/index.js.map +1 -1
  459. package/build-style/content-rtl.css +6 -6
  460. package/build-style/content.css +6 -6
  461. package/build-style/style-rtl.css +123 -298
  462. package/build-style/style.css +123 -298
  463. package/package.json +31 -31
  464. package/src/components/block-canvas/index.js +31 -17
  465. package/src/components/block-caption/README.md +2 -2
  466. package/src/components/block-card/index.js +5 -3
  467. package/src/components/block-card/style.scss +7 -3
  468. package/src/components/block-controls/hook.js +8 -30
  469. package/src/components/block-controls/test/index.js +3 -3
  470. package/src/components/block-edit/context.js +3 -0
  471. package/src/components/block-edit/index.js +36 -10
  472. package/src/components/block-info-slot-fill/index.js +6 -3
  473. package/src/components/block-inspector/style.scss +0 -4
  474. package/src/components/block-list/block.js +39 -5
  475. package/src/components/block-list/block.native.js +20 -4
  476. package/src/components/block-list/use-block-props/index.js +74 -21
  477. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -34
  478. package/src/components/block-list/use-block-props/use-is-hovered.js +2 -13
  479. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +1 -5
  480. package/src/components/block-parent-selector/index.js +1 -1
  481. package/src/components/block-pattern-setup/index.js +38 -22
  482. package/src/components/block-pattern-setup/setup-toolbar.js +2 -0
  483. package/src/components/block-pattern-setup/style.scss +4 -1
  484. package/src/components/block-patterns-list/README.md +4 -4
  485. package/src/components/block-patterns-list/index.js +61 -35
  486. package/src/components/block-patterns-list/style.scss +7 -0
  487. package/src/components/block-removal-warning-modal/index.js +7 -14
  488. package/src/components/block-rename/index.js +3 -0
  489. package/src/components/block-rename/is-empty-string.js +3 -0
  490. package/src/components/block-rename/modal.js +121 -0
  491. package/src/components/block-rename/rename-control.js +80 -0
  492. package/src/components/block-rename/use-block-rename.js +10 -0
  493. package/src/components/block-settings/container.native.js +3 -5
  494. package/src/components/block-settings-menu/block-settings-dropdown.js +38 -34
  495. package/src/components/block-settings-menu-controls/index.js +9 -0
  496. package/src/components/block-styles/index.js +1 -1
  497. package/src/components/block-styles/index.native.js +4 -2
  498. package/src/components/block-styles/style.scss +0 -11
  499. package/src/components/block-switcher/test/__snapshots__/index.js.snap +3 -1
  500. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -4
  501. package/src/components/block-toolbar/index.js +180 -95
  502. package/src/components/block-toolbar/style.scss +50 -66
  503. package/src/components/block-tools/block-toolbar-breadcrumb.js +46 -0
  504. package/src/components/block-tools/block-toolbar-popover.js +90 -0
  505. package/src/components/block-tools/index.js +42 -29
  506. package/src/components/block-tools/style.scss +60 -172
  507. package/src/components/block-types-list/index.js +5 -4
  508. package/src/components/block-types-list/index.native.js +2 -1
  509. package/src/components/block-variation-picker/index.native.js +1 -1
  510. package/src/components/button-block-appender/content.scss +2 -2
  511. package/src/components/colors-gradients/control.js +49 -30
  512. package/src/components/colors-gradients/style.scss +0 -7
  513. package/src/components/date-format-picker/index.js +7 -0
  514. package/src/components/duotone-control/index.js +2 -5
  515. package/src/components/duotone-control/style.scss +1 -6
  516. package/src/components/editable-text/README.md +0 -36
  517. package/src/components/global-styles/advanced-panel.js +1 -1
  518. package/src/components/global-styles/color-panel.js +34 -25
  519. package/src/components/global-styles/filters-panel.js +8 -4
  520. package/src/components/global-styles/typography-panel.js +23 -43
  521. package/src/components/image-link-destinations/index.native.js +152 -0
  522. package/src/components/image-link-destinations/style.native.scss +16 -0
  523. package/src/components/image-size-control/index.js +0 -6
  524. package/src/components/index.native.js +1 -0
  525. package/src/components/inner-blocks/README.md +13 -2
  526. package/src/components/inner-blocks/index.js +6 -2
  527. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +57 -33
  528. package/src/components/inserter/block-patterns-explorer/pattern-list.js +5 -1
  529. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +7 -3
  530. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +6 -1
  531. package/src/components/inserter/block-patterns-tab/utils.js +6 -4
  532. package/src/components/inserter/hooks/use-patterns-state.js +3 -1
  533. package/src/components/inserter/media-tab/media-panel.js +1 -1
  534. package/src/components/inserter/menu.js +16 -8
  535. package/src/components/inserter/preview-panel.js +2 -2
  536. package/src/components/inserter/style.scss +15 -17
  537. package/src/components/inserter-button/README.md +62 -0
  538. package/src/components/inserter-button/index.native.js +116 -0
  539. package/src/components/inserter-button/sparkles.js +15 -0
  540. package/src/components/inserter-button/style.native.scss +72 -0
  541. package/src/components/inserter-draggable-blocks/index.js +18 -5
  542. package/src/components/inserter-listbox/index.js +11 -7
  543. package/src/components/inserter-listbox/item.js +11 -12
  544. package/src/components/inserter-listbox/row.js +6 -12
  545. package/src/components/inspector-controls/fill.js +6 -3
  546. package/src/components/inspector-controls/fill.native.js +6 -3
  547. package/src/components/link-control/style.scss +1 -1
  548. package/src/components/link-control/test/index.js +1 -1
  549. package/src/components/list-view/use-list-view-expand-selected-item.js +7 -8
  550. package/src/components/navigable-toolbar/README.md +2 -0
  551. package/src/components/navigable-toolbar/index.js +2 -2
  552. package/src/components/plain-text/README.md +0 -28
  553. package/src/components/preview-options/index.js +6 -84
  554. package/src/components/rich-text/README.md +0 -58
  555. package/src/components/rich-text/content.js +27 -20
  556. package/src/components/rich-text/get-rich-text-values.js +6 -1
  557. package/src/components/rich-text/index.js +5 -46
  558. package/src/components/rich-text/index.native.js +9 -26
  559. package/src/components/rich-text/native/get-format-colors.native.js +33 -40
  560. package/src/components/rich-text/native/index.native.js +52 -50
  561. package/src/components/rich-text/use-input-rules.js +36 -3
  562. package/src/components/rich-text/with-deprecations.js +51 -0
  563. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  564. package/src/components/url-input/README.md +1 -74
  565. package/src/components/use-block-drop-zone/index.js +118 -15
  566. package/src/components/use-moving-animation/index.js +1 -1
  567. package/src/components/use-on-block-drop/index.js +2 -1
  568. package/src/components/use-resize-canvas/README.md +3 -3
  569. package/src/components/use-resize-canvas/index.js +4 -1
  570. package/src/components/use-settings/index.js +17 -3
  571. package/src/components/use-settings/test/index.js +1 -1
  572. package/src/hooks/align.js +15 -76
  573. package/src/hooks/align.native.js +1 -0
  574. package/src/hooks/anchor.js +13 -33
  575. package/src/hooks/background.js +28 -23
  576. package/src/hooks/block-hooks.js +22 -51
  577. package/src/hooks/block-renaming.js +33 -0
  578. package/src/hooks/border.js +67 -118
  579. package/src/hooks/color.js +100 -132
  580. package/src/hooks/content-lock-ui.js +110 -122
  581. package/src/hooks/custom-class-name.js +8 -40
  582. package/src/hooks/custom-fields.js +70 -94
  583. package/src/hooks/dimensions.js +20 -16
  584. package/src/hooks/duotone.js +70 -127
  585. package/src/hooks/font-family.js +10 -29
  586. package/src/hooks/font-size.js +66 -162
  587. package/src/hooks/index.js +42 -15
  588. package/src/hooks/index.native.js +6 -3
  589. package/src/hooks/layout-child.js +53 -0
  590. package/src/hooks/layout.js +25 -110
  591. package/src/hooks/padding.js +2 -2
  592. package/src/hooks/position.js +50 -90
  593. package/src/hooks/style.js +117 -187
  594. package/src/hooks/test/__snapshots__/align.native.js.snap +5 -5
  595. package/src/hooks/test/align.js +1 -178
  596. package/src/hooks/typography.js +20 -16
  597. package/src/hooks/utils.js +187 -6
  598. package/src/layouts/constrained.js +57 -50
  599. package/src/private-apis.js +0 -2
  600. package/src/store/private-actions.js +8 -0
  601. package/src/store/private-selectors.js +45 -0
  602. package/src/store/reducer.js +8 -0
  603. package/src/store/selectors.js +5 -67
  604. package/src/store/utils.js +74 -0
  605. package/src/style.scss +1 -3
  606. package/src/utils/object.js +18 -69
  607. package/src/utils/selection.js +9 -2
  608. package/src/utils/test/transform-styles.js +49 -0
  609. package/src/utils/transform-styles/index.js +39 -13
  610. package/build/components/block-list/use-block-props/use-block-class-names.js +0 -67
  611. package/build/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  612. package/build/components/block-list/use-block-props/use-block-custom-class-name.js +0 -46
  613. package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  614. package/build/components/block-list/use-block-props/use-block-default-class-name.js +0 -37
  615. package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  616. package/build/components/block-tools/back-compat.js +0 -45
  617. package/build/components/block-tools/back-compat.js.map +0 -1
  618. package/build/components/block-tools/block-contextual-toolbar.js +0 -91
  619. package/build/components/block-tools/block-contextual-toolbar.js.map +0 -1
  620. package/build/components/block-tools/selected-block-tools.js +0 -113
  621. package/build/components/block-tools/selected-block-tools.js.map +0 -1
  622. package/build/components/inserter/hooks/use-debounced-input.js +0 -22
  623. package/build/components/inserter/hooks/use-debounced-input.js.map +0 -1
  624. package/build/components/use-display-block-controls/index.js +0 -39
  625. package/build/components/use-display-block-controls/index.js.map +0 -1
  626. package/build/components/use-display-block-controls/index.native.js +0 -39
  627. package/build/components/use-display-block-controls/index.native.js.map +0 -1
  628. package/build/hooks/block-rename-ui.js +0 -167
  629. package/build/hooks/block-rename-ui.js.map +0 -1
  630. package/build-module/components/block-list/use-block-props/use-block-class-names.js +0 -60
  631. package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
  632. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +0 -40
  633. package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
  634. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +0 -31
  635. package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
  636. package/build-module/components/block-tools/back-compat.js +0 -35
  637. package/build-module/components/block-tools/back-compat.js.map +0 -1
  638. package/build-module/components/block-tools/block-contextual-toolbar.js +0 -83
  639. package/build-module/components/block-tools/block-contextual-toolbar.js.map +0 -1
  640. package/build-module/components/block-tools/selected-block-tools.js +0 -105
  641. package/build-module/components/block-tools/selected-block-tools.js.map +0 -1
  642. package/build-module/components/inserter/hooks/use-debounced-input.js +0 -15
  643. package/build-module/components/inserter/hooks/use-debounced-input.js.map +0 -1
  644. package/build-module/components/use-display-block-controls/index.js +0 -32
  645. package/build-module/components/use-display-block-controls/index.js.map +0 -1
  646. package/build-module/components/use-display-block-controls/index.native.js +0 -32
  647. package/build-module/components/use-display-block-controls/index.native.js.map +0 -1
  648. package/build-module/hooks/block-rename-ui.js +0 -159
  649. package/build-module/hooks/block-rename-ui.js.map +0 -1
  650. package/src/components/block-list/use-block-props/use-block-class-names.js +0 -66
  651. package/src/components/block-list/use-block-props/use-block-custom-class-name.js +0 -44
  652. package/src/components/block-list/use-block-props/use-block-default-class-name.js +0 -35
  653. package/src/components/block-parent-selector/style.scss +0 -11
  654. package/src/components/block-tools/back-compat.js +0 -35
  655. package/src/components/block-tools/block-contextual-toolbar.js +0 -100
  656. package/src/components/block-tools/selected-block-tools.js +0 -127
  657. package/src/components/inserter/hooks/use-debounced-input.js +0 -18
  658. package/src/components/preview-options/README.md +0 -94
  659. package/src/components/preview-options/style.scss +0 -64
  660. package/src/components/use-display-block-controls/index.js +0 -36
  661. package/src/components/use-display-block-controls/index.native.js +0 -37
  662. package/src/hooks/block-rename-ui.js +0 -228
  663. package/src/hooks/test/color.js +0 -112
  664. /package/src/{hooks/block-rename-ui.scss → components/block-rename/style.scss} +0 -0
@@ -8,7 +8,7 @@ import classnames from 'classnames';
8
8
  */
9
9
  import { useContext } from '@wordpress/element';
10
10
  import { __, sprintf } from '@wordpress/i18n';
11
- import { __unstableGetBlockProps as getBlockProps, getBlockType, store as blocksStore } from '@wordpress/blocks';
11
+ import { __unstableGetBlockProps as getBlockProps, getBlockType, isReusableBlock, getBlockDefaultClassName, store as blocksStore } from '@wordpress/blocks';
12
12
  import { useMergeRefs, useDisabled } from '@wordpress/compose';
13
13
  import { useSelect } from '@wordpress/data';
14
14
  import warning from '@wordpress/warning';
@@ -21,17 +21,12 @@ import { BlockListBlockContext } from '../block-list-block-context';
21
21
  import { useFocusFirstElement } from './use-focus-first-element';
22
22
  import { useIsHovered } from './use-is-hovered';
23
23
  import { useBlockEditContext } from '../../block-edit/context';
24
- import { useBlockClassNames } from './use-block-class-names';
25
- import { useBlockDefaultClassName } from './use-block-default-class-name';
26
- import { useBlockCustomClassName } from './use-block-custom-class-name';
27
- import { useBlockMovingModeClassNames } from './use-block-moving-mode-class-names';
28
24
  import { useFocusHandler } from './use-focus-handler';
29
25
  import { useEventHandlers } from './use-selected-block-event-handlers';
30
26
  import { useNavModeExit } from './use-nav-mode-exit';
31
27
  import { useBlockRefProvider } from './use-block-refs';
32
28
  import { useIntersectionObserver } from './use-intersection-observer';
33
29
  import { store as blockEditorStore } from '../../../store';
34
- import useBlockOverlayActive from '../../block-content-overlay';
35
30
  import { unlock } from '../../../lock-unlock';
36
31
 
37
32
  /**
@@ -97,10 +92,15 @@ export function useBlockProps(props = {}, {
97
92
  name,
98
93
  blockApiVersion,
99
94
  blockTitle,
95
+ isSelected,
100
96
  isPartOfSelection,
101
97
  adjustScrolling,
102
98
  enableAnimation,
103
- isSubtreeDisabled
99
+ isSubtreeDisabled,
100
+ isOutlineEnabled,
101
+ hasOverlay,
102
+ initialPosition,
103
+ classNames
104
104
  } = useSelect(select => {
105
105
  const {
106
106
  getBlockAttributes,
@@ -113,35 +113,79 @@ export function useBlockProps(props = {}, {
113
113
  isBlockMultiSelected,
114
114
  isAncestorMultiSelected,
115
115
  isFirstMultiSelectedBlock,
116
- isBlockSubtreeDisabled
116
+ isBlockSubtreeDisabled,
117
+ getSettings,
118
+ isBlockHighlighted,
119
+ __unstableIsFullySelected,
120
+ __unstableSelectionHasUnmergeableBlock,
121
+ isBlockBeingDragged,
122
+ hasSelectedInnerBlock,
123
+ hasBlockMovingClientId,
124
+ canInsertBlockType,
125
+ getBlockRootClientId,
126
+ __unstableHasActiveBlockOverlayActive,
127
+ __unstableGetEditorMode,
128
+ getSelectedBlocksInitialCaretPosition
117
129
  } = unlock(select(blockEditorStore));
118
130
  const {
119
131
  getActiveBlockVariation
120
132
  } = select(blocksStore);
121
- const isSelected = isBlockSelected(clientId);
133
+ const _isSelected = isBlockSelected(clientId);
122
134
  const isPartOfMultiSelection = isBlockMultiSelected(clientId) || isAncestorMultiSelected(clientId);
123
135
  const blockName = getBlockName(clientId);
124
136
  const blockType = getBlockType(blockName);
125
137
  const attributes = getBlockAttributes(clientId);
126
138
  const match = getActiveBlockVariation(blockName, attributes);
139
+ const {
140
+ outlineMode
141
+ } = getSettings();
142
+ const isMultiSelected = isBlockMultiSelected(clientId);
143
+ const checkDeep = true;
144
+ const isAncestorOfSelectedBlock = hasSelectedInnerBlock(clientId, checkDeep);
145
+ const typing = isTyping();
146
+ const hasLightBlockWrapper = blockType?.apiVersion > 1;
147
+ const movingClientId = hasBlockMovingClientId();
127
148
  return {
128
149
  index: getBlockIndex(clientId),
129
150
  mode: getBlockMode(clientId),
130
151
  name: blockName,
131
152
  blockApiVersion: blockType?.apiVersion || 1,
132
153
  blockTitle: match?.title || blockType?.title,
133
- isPartOfSelection: isSelected || isPartOfMultiSelection,
134
- adjustScrolling: isSelected || isFirstMultiSelectedBlock(clientId),
135
- enableAnimation: !isTyping() && getGlobalBlockCount() <= BLOCK_ANIMATION_THRESHOLD,
136
- isSubtreeDisabled: isBlockSubtreeDisabled(clientId)
154
+ isSelected: _isSelected,
155
+ isPartOfSelection: _isSelected || isPartOfMultiSelection,
156
+ adjustScrolling: _isSelected || isFirstMultiSelectedBlock(clientId),
157
+ enableAnimation: !typing && getGlobalBlockCount() <= BLOCK_ANIMATION_THRESHOLD,
158
+ isSubtreeDisabled: isBlockSubtreeDisabled(clientId),
159
+ isOutlineEnabled: outlineMode,
160
+ hasOverlay: __unstableHasActiveBlockOverlayActive(clientId),
161
+ initialPosition: _isSelected && __unstableGetEditorMode() === 'edit' ? getSelectedBlocksInitialCaretPosition() : undefined,
162
+ classNames: classnames({
163
+ 'is-selected': _isSelected,
164
+ 'is-highlighted': isBlockHighlighted(clientId),
165
+ 'is-multi-selected': isMultiSelected,
166
+ 'is-partially-selected': isMultiSelected && !__unstableIsFullySelected() && !__unstableSelectionHasUnmergeableBlock(),
167
+ 'is-reusable': isReusableBlock(blockType),
168
+ 'is-dragging': isBlockBeingDragged(clientId),
169
+ 'has-child-selected': isAncestorOfSelectedBlock,
170
+ 'remove-outline': _isSelected && outlineMode && typing,
171
+ 'is-block-moving-mode': !!movingClientId,
172
+ 'can-insert-moving-block': movingClientId && canInsertBlockType(getBlockName(movingClientId), getBlockRootClientId(clientId))
173
+ }, hasLightBlockWrapper ? attributes.className : undefined, hasLightBlockWrapper ? getBlockDefaultClassName(blockName) : undefined)
137
174
  };
138
175
  }, [clientId]);
139
- const hasOverlay = useBlockOverlayActive(clientId);
140
176
 
141
177
  // translators: %s: Type of block (i.e. Text, Image etc)
142
178
  const blockLabel = sprintf(__('Block: %s'), blockTitle);
143
179
  const htmlSuffix = mode === 'html' && !__unstableIsHtml ? '-visual' : '';
144
- const mergedRefs = useMergeRefs([props.ref, useFocusFirstElement(clientId), useBlockRefProvider(clientId), useFocusHandler(clientId), useEventHandlers(clientId), useNavModeExit(clientId), useIsHovered(), useIntersectionObserver(), useMovingAnimation({
180
+ const mergedRefs = useMergeRefs([props.ref, useFocusFirstElement({
181
+ clientId,
182
+ initialPosition
183
+ }), useBlockRefProvider(clientId), useFocusHandler(clientId), useEventHandlers({
184
+ clientId,
185
+ isSelected
186
+ }), useNavModeExit(clientId), useIsHovered({
187
+ isEnabled: isOutlineEnabled
188
+ }), useIntersectionObserver(), useMovingAnimation({
145
189
  isSelected: isPartOfSelection,
146
190
  adjustScrolling,
147
191
  enableAnimation,
@@ -166,12 +210,11 @@ export function useBlockProps(props = {}, {
166
210
  'data-type': name,
167
211
  'data-title': blockTitle,
168
212
  inert: isSubtreeDisabled ? 'true' : undefined,
169
- className: classnames(
170
- // The wp-block className is important for editor styles.
171
- classnames('block-editor-block-list__block', {
213
+ className: classnames('block-editor-block-list__block', {
214
+ // The wp-block className is important for editor styles.
172
215
  'wp-block': !isAligned,
173
216
  'has-block-overlay': hasOverlay
174
- }), className, props.className, wrapperProps.className, useBlockClassNames(clientId), useBlockDefaultClassName(clientId), useBlockCustomClassName(clientId), useBlockMovingModeClassNames(clientId)),
217
+ }, className, props.className, wrapperProps.className, classNames),
175
218
  style: {
176
219
  ...wrapperProps.style,
177
220
  ...props.style
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useContext","__","sprintf","__unstableGetBlockProps","getBlockProps","getBlockType","store","blocksStore","useMergeRefs","useDisabled","useSelect","warning","useMovingAnimation","BlockListBlockContext","useFocusFirstElement","useIsHovered","useBlockEditContext","useBlockClassNames","useBlockDefaultClassName","useBlockCustomClassName","useBlockMovingModeClassNames","useFocusHandler","useEventHandlers","useNavModeExit","useBlockRefProvider","useIntersectionObserver","blockEditorStore","useBlockOverlayActive","unlock","BLOCK_ANIMATION_THRESHOLD","useBlockProps","props","__unstableIsHtml","clientId","className","wrapperProps","isAligned","index","mode","name","blockApiVersion","blockTitle","isPartOfSelection","adjustScrolling","enableAnimation","isSubtreeDisabled","select","getBlockAttributes","getBlockIndex","getBlockMode","getBlockName","isTyping","getGlobalBlockCount","isBlockSelected","isBlockMultiSelected","isAncestorMultiSelected","isFirstMultiSelectedBlock","isBlockSubtreeDisabled","getActiveBlockVariation","isSelected","isPartOfMultiSelection","blockName","blockType","attributes","match","apiVersion","title","hasOverlay","blockLabel","htmlSuffix","mergedRefs","ref","triggerAnimationOnChange","isDisabled","blockEditContext","SCRIPT_DEBUG","tabIndex","id","role","inert","undefined","style","save"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__unstableGetBlockProps as getBlockProps,\n\tgetBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useMergeRefs, useDisabled } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport useMovingAnimation from '../../use-moving-animation';\nimport { BlockListBlockContext } from '../block-list-block-context';\nimport { useFocusFirstElement } from './use-focus-first-element';\nimport { useIsHovered } from './use-is-hovered';\nimport { useBlockEditContext } from '../../block-edit/context';\nimport { useBlockClassNames } from './use-block-class-names';\nimport { useBlockDefaultClassName } from './use-block-default-class-name';\nimport { useBlockCustomClassName } from './use-block-custom-class-name';\nimport { useBlockMovingModeClassNames } from './use-block-moving-mode-class-names';\nimport { useFocusHandler } from './use-focus-handler';\nimport { useEventHandlers } from './use-selected-block-event-handlers';\nimport { useNavModeExit } from './use-nav-mode-exit';\nimport { useBlockRefProvider } from './use-block-refs';\nimport { useIntersectionObserver } from './use-intersection-observer';\nimport { store as blockEditorStore } from '../../../store';\nimport useBlockOverlayActive from '../../block-content-overlay';\nimport { unlock } from '../../../lock-unlock';\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\n/**\n * This hook is used to lightly mark an element as a block element. The element\n * should be the outermost element of a block. Call this hook and pass the\n * returned props to the element to mark as a block. If you define a ref for the\n * element, it is important to pass the ref to this hook, which the hook in turn\n * will pass to the component through the props it returns. Optionally, you can\n * also pass any other props through this hook, and they will be merged and\n * returned.\n *\n * Use of this hook on the outermost element of a block is required if using API >= v2.\n *\n * @example\n * ```js\n * import { useBlockProps } from '@wordpress/block-editor';\n *\n * export default function Edit() {\n *\n * const blockProps = useBlockProps(\n * className: 'my-custom-class',\n * style: {\n * color: '#222222',\n * backgroundColor: '#eeeeee'\n * }\n * )\n *\n * return (\n *\t <div { ...blockProps }>\n *\n * </div>\n * )\n * }\n *\n * ```\n *\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Options for internal use only.\n * @param {boolean} options.__unstableIsHtml\n *\n * @return {Object} Props to pass to the element to mark as a block.\n */\nexport function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {\n\tconst {\n\t\tclientId,\n\t\tclassName,\n\t\twrapperProps = {},\n\t\tisAligned,\n\t} = useContext( BlockListBlockContext );\n\tconst {\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisPartOfSelection,\n\t\tadjustScrolling,\n\t\tenableAnimation,\n\t\tisSubtreeDisabled,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisTyping,\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tisBlockSelected,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisAncestorMultiSelected,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\t\tconst isSelected = isBlockSelected( clientId );\n\t\t\tconst isPartOfMultiSelection =\n\t\t\t\tisBlockMultiSelected( clientId ) ||\n\t\t\t\tisAncestorMultiSelected( clientId );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\n\t\t\treturn {\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tname: blockName,\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\tisPartOfSelection: isSelected || isPartOfMultiSelection,\n\t\t\t\tadjustScrolling:\n\t\t\t\t\tisSelected || isFirstMultiSelectedBlock( clientId ),\n\t\t\t\tenableAnimation:\n\t\t\t\t\t! isTyping() &&\n\t\t\t\t\tgetGlobalBlockCount() <= BLOCK_ANIMATION_THRESHOLD,\n\t\t\t\tisSubtreeDisabled: isBlockSubtreeDisabled( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst hasOverlay = useBlockOverlayActive( clientId );\n\n\t// translators: %s: Type of block (i.e. Text, Image etc)\n\tconst blockLabel = sprintf( __( 'Block: %s' ), blockTitle );\n\tconst htmlSuffix = mode === 'html' && ! __unstableIsHtml ? '-visual' : '';\n\tconst mergedRefs = useMergeRefs( [\n\t\tprops.ref,\n\t\tuseFocusFirstElement( clientId ),\n\t\tuseBlockRefProvider( clientId ),\n\t\tuseFocusHandler( clientId ),\n\t\tuseEventHandlers( clientId ),\n\t\tuseNavModeExit( clientId ),\n\t\tuseIsHovered(),\n\t\tuseIntersectionObserver(),\n\t\tuseMovingAnimation( {\n\t\t\tisSelected: isPartOfSelection,\n\t\t\tadjustScrolling,\n\t\t\tenableAnimation,\n\t\t\ttriggerAnimationOnChange: index,\n\t\t} ),\n\t\tuseDisabled( { isDisabled: ! hasOverlay } ),\n\t] );\n\n\tconst blockEditContext = useBlockEditContext();\n\t// Ensures it warns only inside the `edit` implementation for the block.\n\tif ( blockApiVersion < 2 && clientId === blockEditContext.clientId ) {\n\t\twarning(\n\t\t\t`Block type \"${ name }\" must support API version 2 or higher to work correctly with \"useBlockProps\" method.`\n\t\t);\n\t}\n\n\treturn {\n\t\ttabIndex: 0,\n\t\t...wrapperProps,\n\t\t...props,\n\t\tref: mergedRefs,\n\t\tid: `block-${ clientId }${ htmlSuffix }`,\n\t\trole: 'document',\n\t\t'aria-label': blockLabel,\n\t\t'data-block': clientId,\n\t\t'data-type': name,\n\t\t'data-title': blockTitle,\n\t\tinert: isSubtreeDisabled ? 'true' : undefined,\n\t\tclassName: classnames(\n\t\t\t// The wp-block className is important for editor styles.\n\t\t\tclassnames( 'block-editor-block-list__block', {\n\t\t\t\t'wp-block': ! isAligned,\n\t\t\t\t'has-block-overlay': hasOverlay,\n\t\t\t} ),\n\t\t\tclassName,\n\t\t\tprops.className,\n\t\t\twrapperProps.className,\n\t\t\tuseBlockClassNames( clientId ),\n\t\t\tuseBlockDefaultClassName( clientId ),\n\t\t\tuseBlockCustomClassName( clientId ),\n\t\t\tuseBlockMovingModeClassNames( clientId )\n\t\t),\n\t\tstyle: { ...wrapperProps.style, ...props.style },\n\t};\n}\n\n/**\n * Call within a save function to get the props for the block wrapper.\n *\n * @param {Object} props Optional. Props to pass to the element.\n */\nuseBlockProps.save = getBlockProps;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","useContext","__","sprintf","__unstableGetBlockProps","getBlockProps","getBlockType","isReusableBlock","getBlockDefaultClassName","store","blocksStore","useMergeRefs","useDisabled","useSelect","warning","useMovingAnimation","BlockListBlockContext","useFocusFirstElement","useIsHovered","useBlockEditContext","useFocusHandler","useEventHandlers","useNavModeExit","useBlockRefProvider","useIntersectionObserver","blockEditorStore","unlock","BLOCK_ANIMATION_THRESHOLD","useBlockProps","props","__unstableIsHtml","clientId","className","wrapperProps","isAligned","index","mode","name","blockApiVersion","blockTitle","isSelected","isPartOfSelection","adjustScrolling","enableAnimation","isSubtreeDisabled","isOutlineEnabled","hasOverlay","initialPosition","classNames","select","getBlockAttributes","getBlockIndex","getBlockMode","getBlockName","isTyping","getGlobalBlockCount","isBlockSelected","isBlockMultiSelected","isAncestorMultiSelected","isFirstMultiSelectedBlock","isBlockSubtreeDisabled","getSettings","isBlockHighlighted","__unstableIsFullySelected","__unstableSelectionHasUnmergeableBlock","isBlockBeingDragged","hasSelectedInnerBlock","hasBlockMovingClientId","canInsertBlockType","getBlockRootClientId","__unstableHasActiveBlockOverlayActive","__unstableGetEditorMode","getSelectedBlocksInitialCaretPosition","getActiveBlockVariation","_isSelected","isPartOfMultiSelection","blockName","blockType","attributes","match","outlineMode","isMultiSelected","checkDeep","isAncestorOfSelectedBlock","typing","hasLightBlockWrapper","apiVersion","movingClientId","title","undefined","blockLabel","htmlSuffix","mergedRefs","ref","isEnabled","triggerAnimationOnChange","isDisabled","blockEditContext","SCRIPT_DEBUG","tabIndex","id","role","inert","style","save"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__unstableGetBlockProps as getBlockProps,\n\tgetBlockType,\n\tisReusableBlock,\n\tgetBlockDefaultClassName,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useMergeRefs, useDisabled } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport useMovingAnimation from '../../use-moving-animation';\nimport { BlockListBlockContext } from '../block-list-block-context';\nimport { useFocusFirstElement } from './use-focus-first-element';\nimport { useIsHovered } from './use-is-hovered';\nimport { useBlockEditContext } from '../../block-edit/context';\nimport { useFocusHandler } from './use-focus-handler';\nimport { useEventHandlers } from './use-selected-block-event-handlers';\nimport { useNavModeExit } from './use-nav-mode-exit';\nimport { useBlockRefProvider } from './use-block-refs';\nimport { useIntersectionObserver } from './use-intersection-observer';\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\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\n/**\n * This hook is used to lightly mark an element as a block element. The element\n * should be the outermost element of a block. Call this hook and pass the\n * returned props to the element to mark as a block. If you define a ref for the\n * element, it is important to pass the ref to this hook, which the hook in turn\n * will pass to the component through the props it returns. Optionally, you can\n * also pass any other props through this hook, and they will be merged and\n * returned.\n *\n * Use of this hook on the outermost element of a block is required if using API >= v2.\n *\n * @example\n * ```js\n * import { useBlockProps } from '@wordpress/block-editor';\n *\n * export default function Edit() {\n *\n * const blockProps = useBlockProps(\n * className: 'my-custom-class',\n * style: {\n * color: '#222222',\n * backgroundColor: '#eeeeee'\n * }\n * )\n *\n * return (\n *\t <div { ...blockProps }>\n *\n * </div>\n * )\n * }\n *\n * ```\n *\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Options for internal use only.\n * @param {boolean} options.__unstableIsHtml\n *\n * @return {Object} Props to pass to the element to mark as a block.\n */\nexport function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {\n\tconst {\n\t\tclientId,\n\t\tclassName,\n\t\twrapperProps = {},\n\t\tisAligned,\n\t} = useContext( BlockListBlockContext );\n\tconst {\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisPartOfSelection,\n\t\tadjustScrolling,\n\t\tenableAnimation,\n\t\tisSubtreeDisabled,\n\t\tisOutlineEnabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tclassNames,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisTyping,\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tisBlockSelected,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisAncestorMultiSelected,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t\tgetSettings,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\t__unstableIsFullySelected,\n\t\t\t\t__unstableSelectionHasUnmergeableBlock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\t\tconst _isSelected = isBlockSelected( clientId );\n\t\t\tconst isPartOfMultiSelection =\n\t\t\t\tisBlockMultiSelected( clientId ) ||\n\t\t\t\tisAncestorMultiSelected( clientId );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst { outlineMode } = getSettings();\n\t\t\tconst isMultiSelected = isBlockMultiSelected( clientId );\n\t\t\tconst checkDeep = true;\n\t\t\tconst isAncestorOfSelectedBlock = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\tcheckDeep\n\t\t\t);\n\t\t\tconst typing = isTyping();\n\t\t\tconst hasLightBlockWrapper = blockType?.apiVersion > 1;\n\t\t\tconst movingClientId = hasBlockMovingClientId();\n\n\t\t\treturn {\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tname: blockName,\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\tisSelected: _isSelected,\n\t\t\t\tisPartOfSelection: _isSelected || isPartOfMultiSelection,\n\t\t\t\tadjustScrolling:\n\t\t\t\t\t_isSelected || isFirstMultiSelectedBlock( clientId ),\n\t\t\t\tenableAnimation:\n\t\t\t\t\t! typing &&\n\t\t\t\t\tgetGlobalBlockCount() <= BLOCK_ANIMATION_THRESHOLD,\n\t\t\t\tisSubtreeDisabled: isBlockSubtreeDisabled( clientId ),\n\t\t\t\tisOutlineEnabled: outlineMode,\n\t\t\t\thasOverlay: __unstableHasActiveBlockOverlayActive( clientId ),\n\t\t\t\tinitialPosition:\n\t\t\t\t\t_isSelected && __unstableGetEditorMode() === 'edit'\n\t\t\t\t\t\t? getSelectedBlocksInitialCaretPosition()\n\t\t\t\t\t\t: undefined,\n\t\t\t\tclassNames: classnames(\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-selected': _isSelected,\n\t\t\t\t\t\t'is-highlighted': isBlockHighlighted( clientId ),\n\t\t\t\t\t\t'is-multi-selected': isMultiSelected,\n\t\t\t\t\t\t'is-partially-selected':\n\t\t\t\t\t\t\tisMultiSelected &&\n\t\t\t\t\t\t\t! __unstableIsFullySelected() &&\n\t\t\t\t\t\t\t! __unstableSelectionHasUnmergeableBlock(),\n\t\t\t\t\t\t'is-reusable': isReusableBlock( blockType ),\n\t\t\t\t\t\t'is-dragging': isBlockBeingDragged( clientId ),\n\t\t\t\t\t\t'has-child-selected': isAncestorOfSelectedBlock,\n\t\t\t\t\t\t'remove-outline': _isSelected && outlineMode && typing,\n\t\t\t\t\t\t'is-block-moving-mode': !! movingClientId,\n\t\t\t\t\t\t'can-insert-moving-block':\n\t\t\t\t\t\t\tmovingClientId &&\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( movingClientId ),\n\t\t\t\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\thasLightBlockWrapper ? attributes.className : undefined,\n\t\t\t\t\thasLightBlockWrapper\n\t\t\t\t\t\t? getBlockDefaultClassName( blockName )\n\t\t\t\t\t\t: undefined\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// translators: %s: Type of block (i.e. Text, Image etc)\n\tconst blockLabel = sprintf( __( 'Block: %s' ), blockTitle );\n\tconst htmlSuffix = mode === 'html' && ! __unstableIsHtml ? '-visual' : '';\n\tconst mergedRefs = useMergeRefs( [\n\t\tprops.ref,\n\t\tuseFocusFirstElement( { clientId, initialPosition } ),\n\t\tuseBlockRefProvider( clientId ),\n\t\tuseFocusHandler( clientId ),\n\t\tuseEventHandlers( { clientId, isSelected } ),\n\t\tuseNavModeExit( clientId ),\n\t\tuseIsHovered( { isEnabled: isOutlineEnabled } ),\n\t\tuseIntersectionObserver(),\n\t\tuseMovingAnimation( {\n\t\t\tisSelected: isPartOfSelection,\n\t\t\tadjustScrolling,\n\t\t\tenableAnimation,\n\t\t\ttriggerAnimationOnChange: index,\n\t\t} ),\n\t\tuseDisabled( { isDisabled: ! hasOverlay } ),\n\t] );\n\n\tconst blockEditContext = useBlockEditContext();\n\t// Ensures it warns only inside the `edit` implementation for the block.\n\tif ( blockApiVersion < 2 && clientId === blockEditContext.clientId ) {\n\t\twarning(\n\t\t\t`Block type \"${ name }\" must support API version 2 or higher to work correctly with \"useBlockProps\" method.`\n\t\t);\n\t}\n\n\treturn {\n\t\ttabIndex: 0,\n\t\t...wrapperProps,\n\t\t...props,\n\t\tref: mergedRefs,\n\t\tid: `block-${ clientId }${ htmlSuffix }`,\n\t\trole: 'document',\n\t\t'aria-label': blockLabel,\n\t\t'data-block': clientId,\n\t\t'data-type': name,\n\t\t'data-title': blockTitle,\n\t\tinert: isSubtreeDisabled ? 'true' : undefined,\n\t\tclassName: classnames(\n\t\t\t'block-editor-block-list__block',\n\t\t\t{\n\t\t\t\t// The wp-block className is important for editor styles.\n\t\t\t\t'wp-block': ! isAligned,\n\t\t\t\t'has-block-overlay': hasOverlay,\n\t\t\t},\n\t\t\tclassName,\n\t\t\tprops.className,\n\t\t\twrapperProps.className,\n\t\t\tclassNames\n\t\t),\n\t\tstyle: { ...wrapperProps.style, ...props.style },\n\t};\n}\n\n/**\n * Call within a save function to get the props for the block wrapper.\n *\n * @param {Object} props Optional. Props to pass to the element.\n */\nuseBlockProps.save = getBlockProps;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SACCC,uBAAuB,IAAIC,aAAa,EACxCC,YAAY,EACZC,eAAe,EACfC,wBAAwB,EACxBC,KAAK,IAAIC,WAAW,QACd,mBAAmB;AAC1B,SAASC,YAAY,EAAEC,WAAW,QAAQ,oBAAoB;AAC9D,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,OAAOC,OAAO,MAAM,oBAAoB;;AAExC;AACA;AACA;AACA,OAAOC,kBAAkB,MAAM,4BAA4B;AAC3D,SAASC,qBAAqB,QAAQ,6BAA6B;AACnE,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAASC,gBAAgB,QAAQ,qCAAqC;AACtE,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,mBAAmB,QAAQ,kBAAkB;AACtD,SAASC,uBAAuB,QAAQ,6BAA6B;AACrE,SAASf,KAAK,IAAIgB,gBAAgB,QAAQ,gBAAgB;AAC1D,SAASC,MAAM,QAAQ,sBAAsB;;AAE7C;AACA;AACA;AACA;AACA,MAAMC,yBAAyB,GAAG,GAAG;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAEC,KAAK,GAAG,CAAC,CAAC,EAAE;EAAEC;AAAiB,CAAC,GAAG,CAAC,CAAC,EAAG;EACtE,MAAM;IACLC,QAAQ;IACRC,SAAS;IACTC,YAAY,GAAG,CAAC,CAAC;IACjBC;EACD,CAAC,GAAGjC,UAAU,CAAEe,qBAAsB,CAAC;EACvC,MAAM;IACLmB,KAAK;IACLC,IAAI;IACJC,IAAI;IACJC,eAAe;IACfC,UAAU;IACVC,UAAU;IACVC,iBAAiB;IACjBC,eAAe;IACfC,eAAe;IACfC,iBAAiB;IACjBC,gBAAgB;IAChBC,UAAU;IACVC,eAAe;IACfC;EACD,CAAC,GAAGnC,SAAS,CACVoC,MAAM,IAAM;IACb,MAAM;MACLC,kBAAkB;MAClBC,aAAa;MACbC,YAAY;MACZC,YAAY;MACZC,QAAQ;MACRC,mBAAmB;MACnBC,eAAe;MACfC,oBAAoB;MACpBC,uBAAuB;MACvBC,yBAAyB;MACzBC,sBAAsB;MACtBC,WAAW;MACXC,kBAAkB;MAClBC,yBAAyB;MACzBC,sCAAsC;MACtCC,mBAAmB;MACnBC,qBAAqB;MACrBC,sBAAsB;MACtBC,kBAAkB;MAClBC,oBAAoB;MACpBC,qCAAqC;MACrCC,uBAAuB;MACvBC;IACD,CAAC,GAAG9C,MAAM,CAAEuB,MAAM,CAAExB,gBAAiB,CAAE,CAAC;IACxC,MAAM;MAAEgD;IAAwB,CAAC,GAAGxB,MAAM,CAAEvC,WAAY,CAAC;IACzD,MAAMgE,WAAW,GAAGlB,eAAe,CAAEzB,QAAS,CAAC;IAC/C,MAAM4C,sBAAsB,GAC3BlB,oBAAoB,CAAE1B,QAAS,CAAC,IAChC2B,uBAAuB,CAAE3B,QAAS,CAAC;IACpC,MAAM6C,SAAS,GAAGvB,YAAY,CAAEtB,QAAS,CAAC;IAC1C,MAAM8C,SAAS,GAAGvE,YAAY,CAAEsE,SAAU,CAAC;IAC3C,MAAME,UAAU,GAAG5B,kBAAkB,CAAEnB,QAAS,CAAC;IACjD,MAAMgD,KAAK,GAAGN,uBAAuB,CAAEG,SAAS,EAAEE,UAAW,CAAC;IAC9D,MAAM;MAAEE;IAAY,CAAC,GAAGnB,WAAW,CAAC,CAAC;IACrC,MAAMoB,eAAe,GAAGxB,oBAAoB,CAAE1B,QAAS,CAAC;IACxD,MAAMmD,SAAS,GAAG,IAAI;IACtB,MAAMC,yBAAyB,GAAGjB,qBAAqB,CACtDnC,QAAQ,EACRmD,SACD,CAAC;IACD,MAAME,MAAM,GAAG9B,QAAQ,CAAC,CAAC;IACzB,MAAM+B,oBAAoB,GAAGR,SAAS,EAAES,UAAU,GAAG,CAAC;IACtD,MAAMC,cAAc,GAAGpB,sBAAsB,CAAC,CAAC;IAE/C,OAAO;MACNhC,KAAK,EAAEgB,aAAa,CAAEpB,QAAS,CAAC;MAChCK,IAAI,EAAEgB,YAAY,CAAErB,QAAS,CAAC;MAC9BM,IAAI,EAAEuC,SAAS;MACftC,eAAe,EAAEuC,SAAS,EAAES,UAAU,IAAI,CAAC;MAC3C/C,UAAU,EAAEwC,KAAK,EAAES,KAAK,IAAIX,SAAS,EAAEW,KAAK;MAC5ChD,UAAU,EAAEkC,WAAW;MACvBjC,iBAAiB,EAAEiC,WAAW,IAAIC,sBAAsB;MACxDjC,eAAe,EACdgC,WAAW,IAAIf,yBAAyB,CAAE5B,QAAS,CAAC;MACrDY,eAAe,EACd,CAAEyC,MAAM,IACR7B,mBAAmB,CAAC,CAAC,IAAI5B,yBAAyB;MACnDiB,iBAAiB,EAAEgB,sBAAsB,CAAE7B,QAAS,CAAC;MACrDc,gBAAgB,EAAEmC,WAAW;MAC7BlC,UAAU,EAAEwB,qCAAqC,CAAEvC,QAAS,CAAC;MAC7DgB,eAAe,EACd2B,WAAW,IAAIH,uBAAuB,CAAC,CAAC,KAAK,MAAM,GAChDC,qCAAqC,CAAC,CAAC,GACvCiB,SAAS;MACbzC,UAAU,EAAEhD,UAAU,CACrB;QACC,aAAa,EAAE0E,WAAW;QAC1B,gBAAgB,EAAEZ,kBAAkB,CAAE/B,QAAS,CAAC;QAChD,mBAAmB,EAAEkD,eAAe;QACpC,uBAAuB,EACtBA,eAAe,IACf,CAAElB,yBAAyB,CAAC,CAAC,IAC7B,CAAEC,sCAAsC,CAAC,CAAC;QAC3C,aAAa,EAAEzD,eAAe,CAAEsE,SAAU,CAAC;QAC3C,aAAa,EAAEZ,mBAAmB,CAAElC,QAAS,CAAC;QAC9C,oBAAoB,EAAEoD,yBAAyB;QAC/C,gBAAgB,EAAET,WAAW,IAAIM,WAAW,IAAII,MAAM;QACtD,sBAAsB,EAAE,CAAC,CAAEG,cAAc;QACzC,yBAAyB,EACxBA,cAAc,IACdnB,kBAAkB,CACjBf,YAAY,CAAEkC,cAAe,CAAC,EAC9BlB,oBAAoB,CAAEtC,QAAS,CAChC;MACF,CAAC,EACDsD,oBAAoB,GAAGP,UAAU,CAAC9C,SAAS,GAAGyD,SAAS,EACvDJ,oBAAoB,GACjB7E,wBAAwB,CAAEoE,SAAU,CAAC,GACrCa,SACJ;IACD,CAAC;EACF,CAAC,EACD,CAAE1D,QAAQ,CACX,CAAC;;EAED;EACA,MAAM2D,UAAU,GAAGvF,OAAO,CAAED,EAAE,CAAE,WAAY,CAAC,EAAEqC,UAAW,CAAC;EAC3D,MAAMoD,UAAU,GAAGvD,IAAI,KAAK,MAAM,IAAI,CAAEN,gBAAgB,GAAG,SAAS,GAAG,EAAE;EACzE,MAAM8D,UAAU,GAAGjF,YAAY,CAAE,CAChCkB,KAAK,CAACgE,GAAG,EACT5E,oBAAoB,CAAE;IAAEc,QAAQ;IAAEgB;EAAgB,CAAE,CAAC,EACrDxB,mBAAmB,CAAEQ,QAAS,CAAC,EAC/BX,eAAe,CAAEW,QAAS,CAAC,EAC3BV,gBAAgB,CAAE;IAAEU,QAAQ;IAAES;EAAW,CAAE,CAAC,EAC5ClB,cAAc,CAAES,QAAS,CAAC,EAC1Bb,YAAY,CAAE;IAAE4E,SAAS,EAAEjD;EAAiB,CAAE,CAAC,EAC/CrB,uBAAuB,CAAC,CAAC,EACzBT,kBAAkB,CAAE;IACnByB,UAAU,EAAEC,iBAAiB;IAC7BC,eAAe;IACfC,eAAe;IACfoD,wBAAwB,EAAE5D;EAC3B,CAAE,CAAC,EACHvB,WAAW,CAAE;IAAEoF,UAAU,EAAE,CAAElD;EAAW,CAAE,CAAC,CAC1C,CAAC;EAEH,MAAMmD,gBAAgB,GAAG9E,mBAAmB,CAAC,CAAC;EAC9C;EACA,IAAKmB,eAAe,GAAG,CAAC,IAAIP,QAAQ,KAAKkE,gBAAgB,CAAClE,QAAQ,EAAG;IACpE,OAAAmE,YAAA,oBAAAA,YAAA,YAAApF,OAAO,CACL,eAAeuB,IAAM,uFACvB,CAAC;EACF;EAEA,OAAO;IACN8D,QAAQ,EAAE,CAAC;IACX,GAAGlE,YAAY;IACf,GAAGJ,KAAK;IACRgE,GAAG,EAAED,UAAU;IACfQ,EAAE,EAAG,SAASrE,QAAU,GAAG4D,UAAY,EAAC;IACxCU,IAAI,EAAE,UAAU;IAChB,YAAY,EAAEX,UAAU;IACxB,YAAY,EAAE3D,QAAQ;IACtB,WAAW,EAAEM,IAAI;IACjB,YAAY,EAAEE,UAAU;IACxB+D,KAAK,EAAE1D,iBAAiB,GAAG,MAAM,GAAG6C,SAAS;IAC7CzD,SAAS,EAAEhC,UAAU,CACpB,gCAAgC,EAChC;MACC;MACA,UAAU,EAAE,CAAEkC,SAAS;MACvB,mBAAmB,EAAEY;IACtB,CAAC,EACDd,SAAS,EACTH,KAAK,CAACG,SAAS,EACfC,YAAY,CAACD,SAAS,EACtBgB,UACD,CAAC;IACDuD,KAAK,EAAE;MAAE,GAAGtE,YAAY,CAACsE,KAAK;MAAE,GAAG1E,KAAK,CAAC0E;IAAM;EAChD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA3E,aAAa,CAAC4E,IAAI,GAAGnG,aAAa"}
@@ -13,33 +13,6 @@ import { store as blockEditorStore } from '../../../store';
13
13
 
14
14
  /** @typedef {import('@wordpress/element').RefObject} RefObject */
15
15
 
16
- /**
17
- * Returns the initial position if the block needs to be focussed, `undefined`
18
- * otherwise. The initial position is either 0 (start) or -1 (end).
19
- *
20
- * @param {string} clientId Block client ID.
21
- *
22
- * @return {number} The initial position, either 0 (start) or -1 (end).
23
- */
24
- function useInitialPosition(clientId) {
25
- return useSelect(select => {
26
- const {
27
- getSelectedBlocksInitialCaretPosition,
28
- __unstableGetEditorMode,
29
- isBlockSelected
30
- } = select(blockEditorStore);
31
- if (!isBlockSelected(clientId)) {
32
- return;
33
- }
34
- if (__unstableGetEditorMode() !== 'edit') {
35
- return;
36
- }
37
-
38
- // If there's no initial position, return 0 to focus the start.
39
- return getSelectedBlocksInitialCaretPosition();
40
- }, [clientId]);
41
- }
42
-
43
16
  /**
44
17
  * Transitions focus to the block or inner tabbable when the block becomes
45
18
  * selected and an initial position is set.
@@ -48,9 +21,11 @@ function useInitialPosition(clientId) {
48
21
  *
49
22
  * @return {RefObject} React ref with the block element.
50
23
  */
51
- export function useFocusFirstElement(clientId) {
24
+ export function useFocusFirstElement({
25
+ clientId,
26
+ initialPosition
27
+ }) {
52
28
  const ref = useRef();
53
- const initialPosition = useInitialPosition(clientId);
54
29
  const {
55
30
  isBlockSelected,
56
31
  isMultiSelecting
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","focus","isFormElement","isTextField","placeCaretAtHorizontalEdge","useSelect","isInsideRootBlock","store","blockEditorStore","useInitialPosition","clientId","select","getSelectedBlocksInitialCaretPosition","__unstableGetEditorMode","isBlockSelected","useFocusFirstElement","ref","initialPosition","isMultiSelecting","undefined","current","ownerDocument","activeElement","textInputs","tabbable","find","filter","node","isReverse","target","length","getAttribute","focusElement","findNext"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tfocus,\n\tisFormElement,\n\tisTextField,\n\tplaceCaretAtHorizontalEdge,\n} from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { isInsideRootBlock } from '../../../utils/dom';\nimport { store as blockEditorStore } from '../../../store';\n\n/** @typedef {import('@wordpress/element').RefObject} RefObject */\n\n/**\n * Returns the initial position if the block needs to be focussed, `undefined`\n * otherwise. The initial position is either 0 (start) or -1 (end).\n *\n * @param {string} clientId Block client ID.\n *\n * @return {number} The initial position, either 0 (start) or -1 (end).\n */\nfunction useInitialPosition( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tisBlockSelected,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockSelected( clientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( __unstableGetEditorMode() !== 'edit' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there's no initial position, return 0 to focus the start.\n\t\t\treturn getSelectedBlocksInitialCaretPosition();\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n\n/**\n * Transitions focus to the block or inner tabbable when the block becomes\n * selected and an initial position is set.\n *\n * @param {string} clientId Block client ID.\n *\n * @return {RefObject} React ref with the block element.\n */\nexport function useFocusFirstElement( clientId ) {\n\tconst ref = useRef();\n\tconst initialPosition = useInitialPosition( clientId );\n\tconst { isBlockSelected, isMultiSelecting } = useSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Check if the block is still selected at the time this effect runs.\n\t\tif ( ! isBlockSelected( clientId ) || isMultiSelecting() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( initialPosition === undefined || initialPosition === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { ownerDocument } = ref.current;\n\n\t\t// Do not focus the block if it already contains the active element.\n\t\tif ( isInsideRootBlock( ref.current, ownerDocument.activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find all tabbables within node.\n\t\tconst textInputs = focus.tabbable\n\t\t\t.find( ref.current )\n\t\t\t.filter( ( node ) => isTextField( node ) );\n\n\t\t// If reversed (e.g. merge via backspace), use the last in the set of\n\t\t// tabbables.\n\t\tconst isReverse = -1 === initialPosition;\n\t\tconst target =\n\t\t\ttextInputs[ isReverse ? textInputs.length - 1 : 0 ] || ref.current;\n\n\t\tif ( ! isInsideRootBlock( ref.current, target ) ) {\n\t\t\tref.current.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check to see if element is focussable before a generic caret insert.\n\t\tif ( ! ref.current.getAttribute( 'contenteditable' ) ) {\n\t\t\tconst focusElement = focus.tabbable.findNext( ref.current );\n\t\t\t// Make sure focusElement is valid, contained in the same block, and a form field.\n\t\t\tif (\n\t\t\t\tfocusElement &&\n\t\t\t\tisInsideRootBlock( ref.current, focusElement ) &&\n\t\t\t\tisFormElement( focusElement )\n\t\t\t) {\n\t\t\t\tfocusElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tplaceCaretAtHorizontalEdge( target, isReverse );\n\t}, [ initialPosition, clientId ] );\n\n\treturn ref;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;AACtD,SACCC,KAAK,EACLC,aAAa,EACbC,WAAW,EACXC,0BAA0B,QACpB,gBAAgB;AACvB,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,iBAAiB,QAAQ,oBAAoB;AACtD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,gBAAgB;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAAEC,QAAQ,EAAG;EACvC,OAAOL,SAAS,CACbM,MAAM,IAAM;IACb,MAAM;MACLC,qCAAqC;MACrCC,uBAAuB;MACvBC;IACD,CAAC,GAAGH,MAAM,CAAEH,gBAAiB,CAAC;IAE9B,IAAK,CAAEM,eAAe,CAAEJ,QAAS,CAAC,EAAG;MACpC;IACD;IAEA,IAAKG,uBAAuB,CAAC,CAAC,KAAK,MAAM,EAAG;MAC3C;IACD;;IAEA;IACA,OAAOD,qCAAqC,CAAC,CAAC;EAC/C,CAAC,EACD,CAAEF,QAAQ,CACX,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,oBAAoBA,CAAEL,QAAQ,EAAG;EAChD,MAAMM,GAAG,GAAGhB,MAAM,CAAC,CAAC;EACpB,MAAMiB,eAAe,GAAGR,kBAAkB,CAAEC,QAAS,CAAC;EACtD,MAAM;IAAEI,eAAe;IAAEI;EAAiB,CAAC,GAAGb,SAAS,CAAEG,gBAAiB,CAAC;EAE3ET,SAAS,CAAE,MAAM;IAChB;IACA,IAAK,CAAEe,eAAe,CAAEJ,QAAS,CAAC,IAAIQ,gBAAgB,CAAC,CAAC,EAAG;MAC1D;IACD;IAEA,IAAKD,eAAe,KAAKE,SAAS,IAAIF,eAAe,KAAK,IAAI,EAAG;MAChE;IACD;IAEA,IAAK,CAAED,GAAG,CAACI,OAAO,EAAG;MACpB;IACD;IAEA,MAAM;MAAEC;IAAc,CAAC,GAAGL,GAAG,CAACI,OAAO;;IAErC;IACA,IAAKd,iBAAiB,CAAEU,GAAG,CAACI,OAAO,EAAEC,aAAa,CAACC,aAAc,CAAC,EAAG;MACpE;IACD;;IAEA;IACA,MAAMC,UAAU,GAAGtB,KAAK,CAACuB,QAAQ,CAC/BC,IAAI,CAAET,GAAG,CAACI,OAAQ,CAAC,CACnBM,MAAM,CAAIC,IAAI,IAAMxB,WAAW,CAAEwB,IAAK,CAAE,CAAC;;IAE3C;IACA;IACA,MAAMC,SAAS,GAAG,CAAC,CAAC,KAAKX,eAAe;IACxC,MAAMY,MAAM,GACXN,UAAU,CAAEK,SAAS,GAAGL,UAAU,CAACO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAE,IAAId,GAAG,CAACI,OAAO;IAEnE,IAAK,CAAEd,iBAAiB,CAAEU,GAAG,CAACI,OAAO,EAAES,MAAO,CAAC,EAAG;MACjDb,GAAG,CAACI,OAAO,CAACnB,KAAK,CAAC,CAAC;MACnB;IACD;;IAEA;IACA,IAAK,CAAEe,GAAG,CAACI,OAAO,CAACW,YAAY,CAAE,iBAAkB,CAAC,EAAG;MACtD,MAAMC,YAAY,GAAG/B,KAAK,CAACuB,QAAQ,CAACS,QAAQ,CAAEjB,GAAG,CAACI,OAAQ,CAAC;MAC3D;MACA,IACCY,YAAY,IACZ1B,iBAAiB,CAAEU,GAAG,CAACI,OAAO,EAAEY,YAAa,CAAC,IAC9C9B,aAAa,CAAE8B,YAAa,CAAC,EAC5B;QACDA,YAAY,CAAC/B,KAAK,CAAC,CAAC;QACpB;MACD;IACD;IAEAG,0BAA0B,CAAEyB,MAAM,EAAED,SAAU,CAAC;EAChD,CAAC,EAAE,CAAEX,eAAe,EAAEP,QAAQ,CAAG,CAAC;EAElC,OAAOM,GAAG;AACX"}
1
+ {"version":3,"names":["useEffect","useRef","focus","isFormElement","isTextField","placeCaretAtHorizontalEdge","useSelect","isInsideRootBlock","store","blockEditorStore","useFocusFirstElement","clientId","initialPosition","ref","isBlockSelected","isMultiSelecting","undefined","current","ownerDocument","activeElement","textInputs","tabbable","find","filter","node","isReverse","target","length","getAttribute","focusElement","findNext"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tfocus,\n\tisFormElement,\n\tisTextField,\n\tplaceCaretAtHorizontalEdge,\n} from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { isInsideRootBlock } from '../../../utils/dom';\nimport { store as blockEditorStore } from '../../../store';\n\n/** @typedef {import('@wordpress/element').RefObject} RefObject */\n\n/**\n * Transitions focus to the block or inner tabbable when the block becomes\n * selected and an initial position is set.\n *\n * @param {string} clientId Block client ID.\n *\n * @return {RefObject} React ref with the block element.\n */\nexport function useFocusFirstElement( { clientId, initialPosition } ) {\n\tconst ref = useRef();\n\tconst { isBlockSelected, isMultiSelecting } = useSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Check if the block is still selected at the time this effect runs.\n\t\tif ( ! isBlockSelected( clientId ) || isMultiSelecting() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( initialPosition === undefined || initialPosition === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { ownerDocument } = ref.current;\n\n\t\t// Do not focus the block if it already contains the active element.\n\t\tif ( isInsideRootBlock( ref.current, ownerDocument.activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find all tabbables within node.\n\t\tconst textInputs = focus.tabbable\n\t\t\t.find( ref.current )\n\t\t\t.filter( ( node ) => isTextField( node ) );\n\n\t\t// If reversed (e.g. merge via backspace), use the last in the set of\n\t\t// tabbables.\n\t\tconst isReverse = -1 === initialPosition;\n\t\tconst target =\n\t\t\ttextInputs[ isReverse ? textInputs.length - 1 : 0 ] || ref.current;\n\n\t\tif ( ! isInsideRootBlock( ref.current, target ) ) {\n\t\t\tref.current.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check to see if element is focussable before a generic caret insert.\n\t\tif ( ! ref.current.getAttribute( 'contenteditable' ) ) {\n\t\t\tconst focusElement = focus.tabbable.findNext( ref.current );\n\t\t\t// Make sure focusElement is valid, contained in the same block, and a form field.\n\t\t\tif (\n\t\t\t\tfocusElement &&\n\t\t\t\tisInsideRootBlock( ref.current, focusElement ) &&\n\t\t\t\tisFormElement( focusElement )\n\t\t\t) {\n\t\t\t\tfocusElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tplaceCaretAtHorizontalEdge( target, isReverse );\n\t}, [ initialPosition, clientId ] );\n\n\treturn ref;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;AACtD,SACCC,KAAK,EACLC,aAAa,EACbC,WAAW,EACXC,0BAA0B,QACpB,gBAAgB;AACvB,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,iBAAiB,QAAQ,oBAAoB;AACtD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,gBAAgB;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAE;EAAEC,QAAQ;EAAEC;AAAgB,CAAC,EAAG;EACrE,MAAMC,GAAG,GAAGZ,MAAM,CAAC,CAAC;EACpB,MAAM;IAAEa,eAAe;IAAEC;EAAiB,CAAC,GAAGT,SAAS,CAAEG,gBAAiB,CAAC;EAE3ET,SAAS,CAAE,MAAM;IAChB;IACA,IAAK,CAAEc,eAAe,CAAEH,QAAS,CAAC,IAAII,gBAAgB,CAAC,CAAC,EAAG;MAC1D;IACD;IAEA,IAAKH,eAAe,KAAKI,SAAS,IAAIJ,eAAe,KAAK,IAAI,EAAG;MAChE;IACD;IAEA,IAAK,CAAEC,GAAG,CAACI,OAAO,EAAG;MACpB;IACD;IAEA,MAAM;MAAEC;IAAc,CAAC,GAAGL,GAAG,CAACI,OAAO;;IAErC;IACA,IAAKV,iBAAiB,CAAEM,GAAG,CAACI,OAAO,EAAEC,aAAa,CAACC,aAAc,CAAC,EAAG;MACpE;IACD;;IAEA;IACA,MAAMC,UAAU,GAAGlB,KAAK,CAACmB,QAAQ,CAC/BC,IAAI,CAAET,GAAG,CAACI,OAAQ,CAAC,CACnBM,MAAM,CAAIC,IAAI,IAAMpB,WAAW,CAAEoB,IAAK,CAAE,CAAC;;IAE3C;IACA;IACA,MAAMC,SAAS,GAAG,CAAC,CAAC,KAAKb,eAAe;IACxC,MAAMc,MAAM,GACXN,UAAU,CAAEK,SAAS,GAAGL,UAAU,CAACO,MAAM,GAAG,CAAC,GAAG,CAAC,CAAE,IAAId,GAAG,CAACI,OAAO;IAEnE,IAAK,CAAEV,iBAAiB,CAAEM,GAAG,CAACI,OAAO,EAAES,MAAO,CAAC,EAAG;MACjDb,GAAG,CAACI,OAAO,CAACf,KAAK,CAAC,CAAC;MACnB;IACD;;IAEA;IACA,IAAK,CAAEW,GAAG,CAACI,OAAO,CAACW,YAAY,CAAE,iBAAkB,CAAC,EAAG;MACtD,MAAMC,YAAY,GAAG3B,KAAK,CAACmB,QAAQ,CAACS,QAAQ,CAAEjB,GAAG,CAACI,OAAQ,CAAC;MAC3D;MACA,IACCY,YAAY,IACZtB,iBAAiB,CAAEM,GAAG,CAACI,OAAO,EAAEY,YAAa,CAAC,IAC9C1B,aAAa,CAAE0B,YAAa,CAAC,EAC5B;QACDA,YAAY,CAAC3B,KAAK,CAAC,CAAC;QACpB;MACD;IACD;IAEAG,0BAA0B,CAAEqB,MAAM,EAAED,SAAU,CAAC;EAChD,CAAC,EAAE,CAAEb,eAAe,EAAED,QAAQ,CAAG,CAAC;EAElC,OAAOE,GAAG;AACX"}
@@ -1,13 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useSelect } from '@wordpress/data';
5
4
  import { useRefEffect } from '@wordpress/compose';
6
-
7
- /**
8
- * Internal dependencies
9
- */
10
- import { store as blockEditorStore } from '../../../store';
11
5
  function listener(event) {
12
6
  if (event.defaultPrevented) {
13
7
  return;
@@ -17,17 +11,13 @@ function listener(event) {
17
11
  event.currentTarget.classList[action]('is-hovered');
18
12
  }
19
13
 
20
- /**
14
+ /*
21
15
  * Adds `is-hovered` class when the block is hovered and in navigation or
22
16
  * outline mode.
23
17
  */
24
- export function useIsHovered() {
25
- const isEnabled = useSelect(select => {
26
- const {
27
- getSettings
28
- } = select(blockEditorStore);
29
- return getSettings().outlineMode;
30
- }, []);
18
+ export function useIsHovered({
19
+ isEnabled
20
+ }) {
31
21
  return useRefEffect(node => {
32
22
  if (isEnabled) {
33
23
  node.addEventListener('mouseout', listener);
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useRefEffect","store","blockEditorStore","listener","event","defaultPrevented","action","type","preventDefault","currentTarget","classList","useIsHovered","isEnabled","select","getSettings","outlineMode","node","addEventListener","removeEventListener","remove"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-is-hovered.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\nfunction listener( event ) {\n\tif ( event.defaultPrevented ) {\n\t\treturn;\n\t}\n\n\tconst action = event.type === 'mouseover' ? 'add' : 'remove';\n\n\tevent.preventDefault();\n\tevent.currentTarget.classList[ action ]( 'is-hovered' );\n}\n\n/**\n * Adds `is-hovered` class when the block is hovered and in navigation or\n * outline mode.\n */\nexport function useIsHovered() {\n\tconst isEnabled = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().outlineMode;\n\t}, [] );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( isEnabled ) {\n\t\t\t\tnode.addEventListener( 'mouseout', listener );\n\t\t\t\tnode.addEventListener( 'mouseover', listener );\n\n\t\t\t\treturn () => {\n\t\t\t\t\tnode.removeEventListener( 'mouseout', listener );\n\t\t\t\t\tnode.removeEventListener( 'mouseover', listener );\n\n\t\t\t\t\t// Remove class in case it lingers.\n\t\t\t\t\tnode.classList.remove( 'is-hovered' );\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t[ isEnabled ]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,YAAY,QAAQ,oBAAoB;;AAEjD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,gBAAgB;AAE1D,SAASC,QAAQA,CAAEC,KAAK,EAAG;EAC1B,IAAKA,KAAK,CAACC,gBAAgB,EAAG;IAC7B;EACD;EAEA,MAAMC,MAAM,GAAGF,KAAK,CAACG,IAAI,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ;EAE5DH,KAAK,CAACI,cAAc,CAAC,CAAC;EACtBJ,KAAK,CAACK,aAAa,CAACC,SAAS,CAAEJ,MAAM,CAAE,CAAE,YAAa,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASK,YAAYA,CAAA,EAAG;EAC9B,MAAMC,SAAS,GAAGb,SAAS,CAAIc,MAAM,IAAM;IAC1C,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEX,gBAAiB,CAAC;IAClD,OAAOY,WAAW,CAAC,CAAC,CAACC,WAAW;EACjC,CAAC,EAAE,EAAG,CAAC;EAEP,OAAOf,YAAY,CAChBgB,IAAI,IAAM;IACX,IAAKJ,SAAS,EAAG;MAChBI,IAAI,CAACC,gBAAgB,CAAE,UAAU,EAAEd,QAAS,CAAC;MAC7Ca,IAAI,CAACC,gBAAgB,CAAE,WAAW,EAAEd,QAAS,CAAC;MAE9C,OAAO,MAAM;QACZa,IAAI,CAACE,mBAAmB,CAAE,UAAU,EAAEf,QAAS,CAAC;QAChDa,IAAI,CAACE,mBAAmB,CAAE,WAAW,EAAEf,QAAS,CAAC;;QAEjD;QACAa,IAAI,CAACN,SAAS,CAACS,MAAM,CAAE,YAAa,CAAC;MACtC,CAAC;IACF;EACD,CAAC,EACD,CAAEP,SAAS,CACZ,CAAC;AACF"}
1
+ {"version":3,"names":["useRefEffect","listener","event","defaultPrevented","action","type","preventDefault","currentTarget","classList","useIsHovered","isEnabled","node","addEventListener","removeEventListener","remove"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-is-hovered.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\n\nfunction listener( event ) {\n\tif ( event.defaultPrevented ) {\n\t\treturn;\n\t}\n\n\tconst action = event.type === 'mouseover' ? 'add' : 'remove';\n\n\tevent.preventDefault();\n\tevent.currentTarget.classList[ action ]( 'is-hovered' );\n}\n\n/*\n * Adds `is-hovered` class when the block is hovered and in navigation or\n * outline mode.\n */\nexport function useIsHovered( { isEnabled } ) {\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( isEnabled ) {\n\t\t\t\tnode.addEventListener( 'mouseout', listener );\n\t\t\t\tnode.addEventListener( 'mouseover', listener );\n\n\t\t\t\treturn () => {\n\t\t\t\t\tnode.removeEventListener( 'mouseout', listener );\n\t\t\t\t\tnode.removeEventListener( 'mouseover', listener );\n\n\t\t\t\t\t// Remove class in case it lingers.\n\t\t\t\t\tnode.classList.remove( 'is-hovered' );\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t[ isEnabled ]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,oBAAoB;AAEjD,SAASC,QAAQA,CAAEC,KAAK,EAAG;EAC1B,IAAKA,KAAK,CAACC,gBAAgB,EAAG;IAC7B;EACD;EAEA,MAAMC,MAAM,GAAGF,KAAK,CAACG,IAAI,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ;EAE5DH,KAAK,CAACI,cAAc,CAAC,CAAC;EACtBJ,KAAK,CAACK,aAAa,CAACC,SAAS,CAAEJ,MAAM,CAAE,CAAE,YAAa,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASK,YAAYA,CAAE;EAAEC;AAAU,CAAC,EAAG;EAC7C,OAAOV,YAAY,CAChBW,IAAI,IAAM;IACX,IAAKD,SAAS,EAAG;MAChBC,IAAI,CAACC,gBAAgB,CAAE,UAAU,EAAEX,QAAS,CAAC;MAC7CU,IAAI,CAACC,gBAAgB,CAAE,WAAW,EAAEX,QAAS,CAAC;MAE9C,OAAO,MAAM;QACZU,IAAI,CAACE,mBAAmB,CAAE,UAAU,EAAEZ,QAAS,CAAC;QAChDU,IAAI,CAACE,mBAAmB,CAAE,WAAW,EAAEZ,QAAS,CAAC;;QAEjD;QACAU,IAAI,CAACH,SAAS,CAACM,MAAM,CAAE,YAAa,CAAC;MACtC,CAAC;IACF;EACD,CAAC,EACD,CAAEJ,SAAS,CACZ,CAAC;AACF"}
@@ -19,8 +19,10 @@ import { store as blockEditorStore } from '../../../store';
19
19
  *
20
20
  * @param {string} clientId Block client ID.
21
21
  */
22
- export function useEventHandlers(clientId) {
23
- const isSelected = useSelect(select => select(blockEditorStore).isBlockSelected(clientId), [clientId]);
22
+ export function useEventHandlers({
23
+ clientId,
24
+ isSelected
25
+ }) {
24
26
  const {
25
27
  getBlockRootClientId,
26
28
  getBlockIndex
@@ -1 +1 @@
1
- {"version":3,"names":["isTextField","ENTER","BACKSPACE","DELETE","useSelect","useDispatch","useRefEffect","store","blockEditorStore","useEventHandlers","clientId","isSelected","select","isBlockSelected","getBlockRootClientId","getBlockIndex","insertDefaultBlock","removeBlock","node","onKeyDown","event","keyCode","target","preventDefault","onDragStart","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-selected-block-event-handlers.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isTextField } from '@wordpress/dom';\nimport { ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Adds block behaviour:\n * - Removes the block on BACKSPACE.\n * - Inserts a default block on ENTER.\n * - Disables dragging of block contents.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useEventHandlers( clientId ) {\n\tconst isSelected = useSelect(\n\t\t( select ) => select( blockEditorStore ).isBlockSelected( clientId ),\n\t\t[ clientId ]\n\t);\n\tconst { getBlockRootClientId, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst { insertDefaultBlock, removeBlock } = useDispatch( blockEditorStore );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isSelected ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Interprets keydown event intent to remove or insert after block if\n\t\t\t * key event occurs on wrapper node. This can occur when the block has\n\t\t\t * no text fields of its own, particularly after initial insertion, to\n\t\t\t * allow for easy deletion and continuous writing flow to add additional\n\t\t\t * content.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keydown event.\n\t\t\t */\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, target } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tkeyCode !== ENTER &&\n\t\t\t\t\tkeyCode !== BACKSPACE &&\n\t\t\t\t\tkeyCode !== DELETE\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( target !== node || isTextField( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( keyCode === ENTER ) {\n\t\t\t\t\tinsertDefaultBlock(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tgetBlockRootClientId( clientId ),\n\t\t\t\t\t\tgetBlockIndex( clientId ) + 1\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Prevents default dragging behavior within a block. To do: we must\n\t\t\t * handle this in the future and clean up the drag target.\n\t\t\t *\n\t\t\t * @param {DragEvent} event Drag event.\n\t\t\t */\n\t\t\tfunction onDragStart( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\t\tnode.addEventListener( 'dragstart', onDragStart );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tnode.removeEventListener( 'dragstart', onDragStart );\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tisSelected,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockIndex,\n\t\t\tinsertDefaultBlock,\n\t\t\tremoveBlock,\n\t\t]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,KAAK,EAAEC,SAAS,EAAEC,MAAM,QAAQ,qBAAqB;AAC9D,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,YAAY,QAAQ,oBAAoB;;AAEjD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,gBAAgB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAEC,QAAQ,EAAG;EAC5C,MAAMC,UAAU,GAAGP,SAAS,CACzBQ,MAAM,IAAMA,MAAM,CAAEJ,gBAAiB,CAAC,CAACK,eAAe,CAAEH,QAAS,CAAC,EACpE,CAAEA,QAAQ,CACX,CAAC;EACD,MAAM;IAAEI,oBAAoB;IAAEC;EAAc,CAAC,GAC5CX,SAAS,CAAEI,gBAAiB,CAAC;EAC9B,MAAM;IAAEQ,kBAAkB;IAAEC;EAAY,CAAC,GAAGZ,WAAW,CAAEG,gBAAiB,CAAC;EAE3E,OAAOF,YAAY,CAChBY,IAAI,IAAM;IACX,IAAK,CAAEP,UAAU,EAAG;MACnB;IACD;;IAEA;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACG,SAASQ,SAASA,CAAEC,KAAK,EAAG;MAC3B,MAAM;QAAEC,OAAO;QAAEC;MAAO,CAAC,GAAGF,KAAK;MAEjC,IACCC,OAAO,KAAKpB,KAAK,IACjBoB,OAAO,KAAKnB,SAAS,IACrBmB,OAAO,KAAKlB,MAAM,EACjB;QACD;MACD;MAEA,IAAKmB,MAAM,KAAKJ,IAAI,IAAIlB,WAAW,CAAEsB,MAAO,CAAC,EAAG;QAC/C;MACD;MAEAF,KAAK,CAACG,cAAc,CAAC,CAAC;MAEtB,IAAKF,OAAO,KAAKpB,KAAK,EAAG;QACxBe,kBAAkB,CACjB,CAAC,CAAC,EACFF,oBAAoB,CAAEJ,QAAS,CAAC,EAChCK,aAAa,CAAEL,QAAS,CAAC,GAAG,CAC7B,CAAC;MACF,CAAC,MAAM;QACNO,WAAW,CAAEP,QAAS,CAAC;MACxB;IACD;;IAEA;AACH;AACA;AACA;AACA;AACA;IACG,SAASc,WAAWA,CAAEJ,KAAK,EAAG;MAC7BA,KAAK,CAACG,cAAc,CAAC,CAAC;IACvB;IAEAL,IAAI,CAACO,gBAAgB,CAAE,SAAS,EAAEN,SAAU,CAAC;IAC7CD,IAAI,CAACO,gBAAgB,CAAE,WAAW,EAAED,WAAY,CAAC;IAEjD,OAAO,MAAM;MACZN,IAAI,CAACQ,mBAAmB,CAAE,SAAS,EAAEP,SAAU,CAAC;MAChDD,IAAI,CAACQ,mBAAmB,CAAE,WAAW,EAAEF,WAAY,CAAC;IACrD,CAAC;EACF,CAAC,EACD,CACCd,QAAQ,EACRC,UAAU,EACVG,oBAAoB,EACpBC,aAAa,EACbC,kBAAkB,EAClBC,WAAW,CAEb,CAAC;AACF"}
1
+ {"version":3,"names":["isTextField","ENTER","BACKSPACE","DELETE","useSelect","useDispatch","useRefEffect","store","blockEditorStore","useEventHandlers","clientId","isSelected","getBlockRootClientId","getBlockIndex","insertDefaultBlock","removeBlock","node","onKeyDown","event","keyCode","target","preventDefault","onDragStart","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-selected-block-event-handlers.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isTextField } from '@wordpress/dom';\nimport { ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Adds block behaviour:\n * - Removes the block on BACKSPACE.\n * - Inserts a default block on ENTER.\n * - Disables dragging of block contents.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useEventHandlers( { clientId, isSelected } ) {\n\tconst { getBlockRootClientId, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst { insertDefaultBlock, removeBlock } = useDispatch( blockEditorStore );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isSelected ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Interprets keydown event intent to remove or insert after block if\n\t\t\t * key event occurs on wrapper node. This can occur when the block has\n\t\t\t * no text fields of its own, particularly after initial insertion, to\n\t\t\t * allow for easy deletion and continuous writing flow to add additional\n\t\t\t * content.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keydown event.\n\t\t\t */\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, target } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tkeyCode !== ENTER &&\n\t\t\t\t\tkeyCode !== BACKSPACE &&\n\t\t\t\t\tkeyCode !== DELETE\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( target !== node || isTextField( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( keyCode === ENTER ) {\n\t\t\t\t\tinsertDefaultBlock(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tgetBlockRootClientId( clientId ),\n\t\t\t\t\t\tgetBlockIndex( clientId ) + 1\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Prevents default dragging behavior within a block. To do: we must\n\t\t\t * handle this in the future and clean up the drag target.\n\t\t\t *\n\t\t\t * @param {DragEvent} event Drag event.\n\t\t\t */\n\t\t\tfunction onDragStart( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\t\tnode.addEventListener( 'dragstart', onDragStart );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tnode.removeEventListener( 'dragstart', onDragStart );\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tisSelected,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockIndex,\n\t\t\tinsertDefaultBlock,\n\t\t\tremoveBlock,\n\t\t]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,KAAK,EAAEC,SAAS,EAAEC,MAAM,QAAQ,qBAAqB;AAC9D,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,YAAY,QAAQ,oBAAoB;;AAEjD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,gBAAgB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAE;EAAEC,QAAQ;EAAEC;AAAW,CAAC,EAAG;EAC5D,MAAM;IAAEC,oBAAoB;IAAEC;EAAc,CAAC,GAC5CT,SAAS,CAAEI,gBAAiB,CAAC;EAC9B,MAAM;IAAEM,kBAAkB;IAAEC;EAAY,CAAC,GAAGV,WAAW,CAAEG,gBAAiB,CAAC;EAE3E,OAAOF,YAAY,CAChBU,IAAI,IAAM;IACX,IAAK,CAAEL,UAAU,EAAG;MACnB;IACD;;IAEA;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACG,SAASM,SAASA,CAAEC,KAAK,EAAG;MAC3B,MAAM;QAAEC,OAAO;QAAEC;MAAO,CAAC,GAAGF,KAAK;MAEjC,IACCC,OAAO,KAAKlB,KAAK,IACjBkB,OAAO,KAAKjB,SAAS,IACrBiB,OAAO,KAAKhB,MAAM,EACjB;QACD;MACD;MAEA,IAAKiB,MAAM,KAAKJ,IAAI,IAAIhB,WAAW,CAAEoB,MAAO,CAAC,EAAG;QAC/C;MACD;MAEAF,KAAK,CAACG,cAAc,CAAC,CAAC;MAEtB,IAAKF,OAAO,KAAKlB,KAAK,EAAG;QACxBa,kBAAkB,CACjB,CAAC,CAAC,EACFF,oBAAoB,CAAEF,QAAS,CAAC,EAChCG,aAAa,CAAEH,QAAS,CAAC,GAAG,CAC7B,CAAC;MACF,CAAC,MAAM;QACNK,WAAW,CAAEL,QAAS,CAAC;MACxB;IACD;;IAEA;AACH;AACA;AACA;AACA;AACA;IACG,SAASY,WAAWA,CAAEJ,KAAK,EAAG;MAC7BA,KAAK,CAACG,cAAc,CAAC,CAAC;IACvB;IAEAL,IAAI,CAACO,gBAAgB,CAAE,SAAS,EAAEN,SAAU,CAAC;IAC7CD,IAAI,CAACO,gBAAgB,CAAE,WAAW,EAAED,WAAY,CAAC;IAEjD,OAAO,MAAM;MACZN,IAAI,CAACQ,mBAAmB,CAAE,SAAS,EAAEP,SAAU,CAAC;MAChDD,IAAI,CAACQ,mBAAmB,CAAE,WAAW,EAAEF,WAAY,CAAC;IACrD,CAAC;EACF,CAAC,EACD,CACCZ,QAAQ,EACRC,UAAU,EACVC,oBAAoB,EACpBC,aAAa,EACbC,kBAAkB,EAClBC,WAAW,CAEb,CAAC;AACF"}
@@ -70,7 +70,7 @@ export default function BlockParentSelector() {
70
70
  className: "block-editor-block-parent-selector__button",
71
71
  onClick: () => selectBlock(firstParentClientId),
72
72
  label: sprintf( /* translators: %s: Name of the block's parent. */
73
- __('Select %s'), blockInformation?.title),
73
+ __('Select parent block: %s'), blockInformation?.title),
74
74
  showTooltip: true,
75
75
  icon: createElement(BlockIcon, {
76
76
  icon: blockInformation?.icon
@@ -1 +1 @@
1
- {"version":3,"names":["getBlockType","store","blocksStore","ToolbarButton","useSelect","useDispatch","__","sprintf","useRef","useBlockDisplayInformation","BlockIcon","useShowHoveredOrFocusedGestures","blockEditorStore","BlockParentSelector","selectBlock","firstParentClientId","isVisible","select","getBlockName","getBlockParents","getSelectedBlockClientId","getBlockEditingMode","hasBlockSupport","selectedBlockClientId","parents","_firstParentClientId","length","parentBlockName","_parentBlockType","blockInformation","nodeRef","showHoveredOrFocusedGestures","ref","highlightParent","createElement","className","key","onClick","label","title","showTooltip","icon"],"sources":["@wordpress/block-editor/src/components/block-parent-selector/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport { useShowHoveredOrFocusedGestures } from '../block-toolbar/utils';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Block parent selector component, displaying the hierarchy of the\n * current block selection as a single icon to \"go up\" a level.\n *\n * @return {Component} Parent block selector.\n */\nexport default function BlockParentSelector() {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst { firstParentClientId, isVisible } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetBlockEditingMode,\n\t\t} = select( blockEditorStore );\n\t\tconst { hasBlockSupport } = select( blocksStore );\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst _firstParentClientId = parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( _firstParentClientId );\n\t\tconst _parentBlockType = getBlockType( parentBlockName );\n\t\treturn {\n\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\tisVisible:\n\t\t\t\t_firstParentClientId &&\n\t\t\t\tgetBlockEditingMode( _firstParentClientId ) === 'default' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\t_parentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t};\n\t}, [] );\n\tconst blockInformation = useBlockDisplayInformation( firstParentClientId );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t\thighlightParent: true,\n\t} );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-parent-selector\"\n\t\t\tkey={ firstParentClientId }\n\t\t\tref={ nodeRef }\n\t\t\t{ ...showHoveredOrFocusedGestures }\n\t\t>\n\t\t\t<ToolbarButton\n\t\t\t\tclassName=\"block-editor-block-parent-selector__button\"\n\t\t\t\tonClick={ () => selectBlock( firstParentClientId ) }\n\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t\t__( 'Select %s' ),\n\t\t\t\t\tblockInformation?.title\n\t\t\t\t) }\n\t\t\t\tshowTooltip\n\t\t\t\ticon={ <BlockIcon icon={ blockInformation?.icon } /> }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,YAAY,EAAEC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACtE,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,0BAA0B,MAAM,kCAAkC;AACzE,OAAOC,SAAS,MAAM,eAAe;AACrC,SAASC,+BAA+B,QAAQ,wBAAwB;AACxE,SAASV,KAAK,IAAIW,gBAAgB,QAAQ,aAAa;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,mBAAmBA,CAAA,EAAG;EAC7C,MAAM;IAAEC;EAAY,CAAC,GAAGT,WAAW,CAAEO,gBAAiB,CAAC;EACvD,MAAM;IAAEG,mBAAmB;IAAEC;EAAU,CAAC,GAAGZ,SAAS,CAAIa,MAAM,IAAM;IACnE,MAAM;MACLC,YAAY;MACZC,eAAe;MACfC,wBAAwB;MACxBC;IACD,CAAC,GAAGJ,MAAM,CAAEL,gBAAiB,CAAC;IAC9B,MAAM;MAAEU;IAAgB,CAAC,GAAGL,MAAM,CAAEf,WAAY,CAAC;IACjD,MAAMqB,qBAAqB,GAAGH,wBAAwB,CAAC,CAAC;IACxD,MAAMI,OAAO,GAAGL,eAAe,CAAEI,qBAAsB,CAAC;IACxD,MAAME,oBAAoB,GAAGD,OAAO,CAAEA,OAAO,CAACE,MAAM,GAAG,CAAC,CAAE;IAC1D,MAAMC,eAAe,GAAGT,YAAY,CAAEO,oBAAqB,CAAC;IAC5D,MAAMG,gBAAgB,GAAG5B,YAAY,CAAE2B,eAAgB,CAAC;IACxD,OAAO;MACNZ,mBAAmB,EAAEU,oBAAoB;MACzCT,SAAS,EACRS,oBAAoB,IACpBJ,mBAAmB,CAAEI,oBAAqB,CAAC,KAAK,SAAS,IACzDH,eAAe,CACdM,gBAAgB,EAChB,8BAA8B,EAC9B,IACD;IACF,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAMC,gBAAgB,GAAGpB,0BAA0B,CAAEM,mBAAoB,CAAC;;EAE1E;EACA;EACA,MAAMe,OAAO,GAAGtB,MAAM,CAAC,CAAC;EACxB,MAAMuB,4BAA4B,GAAGpB,+BAA+B,CAAE;IACrEqB,GAAG,EAAEF,OAAO;IACZG,eAAe,EAAE;EAClB,CAAE,CAAC;EAEH,IAAK,CAAEjB,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,OACCkB,aAAA;IACCC,SAAS,EAAC,oCAAoC;IAC9CC,GAAG,EAAGrB,mBAAqB;IAC3BiB,GAAG,EAAGF,OAAS;IAAA,GACVC;EAA4B,GAEjCG,aAAA,CAAC/B,aAAa;IACbgC,SAAS,EAAC,4CAA4C;IACtDE,OAAO,EAAGA,CAAA,KAAMvB,WAAW,CAAEC,mBAAoB,CAAG;IACpDuB,KAAK,EAAG/B,OAAO,EACd;IACAD,EAAE,CAAE,WAAY,CAAC,EACjBuB,gBAAgB,EAAEU,KACnB,CAAG;IACHC,WAAW;IACXC,IAAI,EAAGP,aAAA,CAACxB,SAAS;MAAC+B,IAAI,EAAGZ,gBAAgB,EAAEY;IAAM,CAAE;EAAG,CACtD,CACG,CAAC;AAER"}
1
+ {"version":3,"names":["getBlockType","store","blocksStore","ToolbarButton","useSelect","useDispatch","__","sprintf","useRef","useBlockDisplayInformation","BlockIcon","useShowHoveredOrFocusedGestures","blockEditorStore","BlockParentSelector","selectBlock","firstParentClientId","isVisible","select","getBlockName","getBlockParents","getSelectedBlockClientId","getBlockEditingMode","hasBlockSupport","selectedBlockClientId","parents","_firstParentClientId","length","parentBlockName","_parentBlockType","blockInformation","nodeRef","showHoveredOrFocusedGestures","ref","highlightParent","createElement","className","key","onClick","label","title","showTooltip","icon"],"sources":["@wordpress/block-editor/src/components/block-parent-selector/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport { useShowHoveredOrFocusedGestures } from '../block-toolbar/utils';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Block parent selector component, displaying the hierarchy of the\n * current block selection as a single icon to \"go up\" a level.\n *\n * @return {Component} Parent block selector.\n */\nexport default function BlockParentSelector() {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst { firstParentClientId, isVisible } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetBlockEditingMode,\n\t\t} = select( blockEditorStore );\n\t\tconst { hasBlockSupport } = select( blocksStore );\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst _firstParentClientId = parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( _firstParentClientId );\n\t\tconst _parentBlockType = getBlockType( parentBlockName );\n\t\treturn {\n\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\tisVisible:\n\t\t\t\t_firstParentClientId &&\n\t\t\t\tgetBlockEditingMode( _firstParentClientId ) === 'default' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\t_parentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t};\n\t}, [] );\n\tconst blockInformation = useBlockDisplayInformation( firstParentClientId );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t\thighlightParent: true,\n\t} );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-parent-selector\"\n\t\t\tkey={ firstParentClientId }\n\t\t\tref={ nodeRef }\n\t\t\t{ ...showHoveredOrFocusedGestures }\n\t\t>\n\t\t\t<ToolbarButton\n\t\t\t\tclassName=\"block-editor-block-parent-selector__button\"\n\t\t\t\tonClick={ () => selectBlock( firstParentClientId ) }\n\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t\t__( 'Select parent block: %s' ),\n\t\t\t\t\tblockInformation?.title\n\t\t\t\t) }\n\t\t\t\tshowTooltip\n\t\t\t\ticon={ <BlockIcon icon={ blockInformation?.icon } /> }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,YAAY,EAAEC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACtE,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,0BAA0B,MAAM,kCAAkC;AACzE,OAAOC,SAAS,MAAM,eAAe;AACrC,SAASC,+BAA+B,QAAQ,wBAAwB;AACxE,SAASV,KAAK,IAAIW,gBAAgB,QAAQ,aAAa;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,mBAAmBA,CAAA,EAAG;EAC7C,MAAM;IAAEC;EAAY,CAAC,GAAGT,WAAW,CAAEO,gBAAiB,CAAC;EACvD,MAAM;IAAEG,mBAAmB;IAAEC;EAAU,CAAC,GAAGZ,SAAS,CAAIa,MAAM,IAAM;IACnE,MAAM;MACLC,YAAY;MACZC,eAAe;MACfC,wBAAwB;MACxBC;IACD,CAAC,GAAGJ,MAAM,CAAEL,gBAAiB,CAAC;IAC9B,MAAM;MAAEU;IAAgB,CAAC,GAAGL,MAAM,CAAEf,WAAY,CAAC;IACjD,MAAMqB,qBAAqB,GAAGH,wBAAwB,CAAC,CAAC;IACxD,MAAMI,OAAO,GAAGL,eAAe,CAAEI,qBAAsB,CAAC;IACxD,MAAME,oBAAoB,GAAGD,OAAO,CAAEA,OAAO,CAACE,MAAM,GAAG,CAAC,CAAE;IAC1D,MAAMC,eAAe,GAAGT,YAAY,CAAEO,oBAAqB,CAAC;IAC5D,MAAMG,gBAAgB,GAAG5B,YAAY,CAAE2B,eAAgB,CAAC;IACxD,OAAO;MACNZ,mBAAmB,EAAEU,oBAAoB;MACzCT,SAAS,EACRS,oBAAoB,IACpBJ,mBAAmB,CAAEI,oBAAqB,CAAC,KAAK,SAAS,IACzDH,eAAe,CACdM,gBAAgB,EAChB,8BAA8B,EAC9B,IACD;IACF,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAMC,gBAAgB,GAAGpB,0BAA0B,CAAEM,mBAAoB,CAAC;;EAE1E;EACA;EACA,MAAMe,OAAO,GAAGtB,MAAM,CAAC,CAAC;EACxB,MAAMuB,4BAA4B,GAAGpB,+BAA+B,CAAE;IACrEqB,GAAG,EAAEF,OAAO;IACZG,eAAe,EAAE;EAClB,CAAE,CAAC;EAEH,IAAK,CAAEjB,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,OACCkB,aAAA;IACCC,SAAS,EAAC,oCAAoC;IAC9CC,GAAG,EAAGrB,mBAAqB;IAC3BiB,GAAG,EAAGF,OAAS;IAAA,GACVC;EAA4B,GAEjCG,aAAA,CAAC/B,aAAa;IACbgC,SAAS,EAAC,4CAA4C;IACtDE,OAAO,EAAGA,CAAA,KAAMvB,WAAW,CAAEC,mBAAoB,CAAG;IACpDuB,KAAK,EAAG/B,OAAO,EACd;IACAD,EAAE,CAAE,yBAA0B,CAAC,EAC/BuB,gBAAgB,EAAEU,KACnB,CAAG;IACHC,WAAW;IACXC,IAAI,EAAGP,aAAA,CAACxB,SAAS;MAAC+B,IAAI,EAAGZ,gBAAgB,EAAEY;IAAM,CAAE;EAAG,CACtD,CACG,CAAC;AAER"}
@@ -4,7 +4,7 @@ import { createElement, Fragment } from "react";
4
4
  */
5
5
  import { useDispatch } from '@wordpress/data';
6
6
  import { cloneBlock } from '@wordpress/blocks';
7
- import { VisuallyHidden, __unstableComposite as Composite, __unstableUseCompositeState as useCompositeState, __unstableCompositeItem as CompositeItem } from '@wordpress/components';
7
+ import { VisuallyHidden, privateApis as componentsPrivateApis } from '@wordpress/components';
8
8
  import { useState } from '@wordpress/element';
9
9
  import { useInstanceId } from '@wordpress/compose';
10
10
  import { __ } from '@wordpress/i18n';
@@ -17,6 +17,12 @@ import BlockPreview from '../block-preview';
17
17
  import SetupToolbar from './setup-toolbar';
18
18
  import usePatternsSetup from './use-patterns-setup';
19
19
  import { VIEWMODES } from './constants';
20
+ import { unlock } from '../../lock-unlock';
21
+ const {
22
+ CompositeV2: Composite,
23
+ CompositeItemV2: CompositeItem,
24
+ useCompositeStoreV2: useCompositeStore
25
+ } = unlock(componentsPrivateApis);
20
26
  const SetupContent = ({
21
27
  viewMode,
22
28
  activeSlide,
@@ -24,7 +30,7 @@ const SetupContent = ({
24
30
  onBlockPatternSelect,
25
31
  showTitles
26
32
  }) => {
27
- const composite = useCompositeState();
33
+ const compositeStore = useCompositeStore();
28
34
  const containerClass = 'block-editor-block-pattern-setup__container';
29
35
  if (viewMode === VIEWMODES.carousel) {
30
36
  const slideClass = new Map([[activeSlide, 'active-slide'], [activeSlide - 1, 'previous-slide'], [activeSlide + 1, 'next-slide']]);
@@ -32,9 +38,10 @@ const SetupContent = ({
32
38
  className: "block-editor-block-pattern-setup__carousel"
33
39
  }, createElement("div", {
34
40
  className: containerClass
35
- }, createElement("ul", {
41
+ }, createElement("div", {
36
42
  className: "carousel-container"
37
43
  }, patterns.map((pattern, index) => createElement(BlockPatternSlide, {
44
+ active: index === activeSlide,
38
45
  className: slideClass.get(index) || '',
39
46
  key: pattern.name,
40
47
  pattern: pattern
@@ -43,7 +50,7 @@ const SetupContent = ({
43
50
  return createElement("div", {
44
51
  className: "block-editor-block-pattern-setup__grid"
45
52
  }, createElement(Composite, {
46
- ...composite,
53
+ store: compositeStore,
47
54
  role: "listbox",
48
55
  className: containerClass,
49
56
  "aria-label": __('Patterns list')
@@ -51,14 +58,12 @@ const SetupContent = ({
51
58
  key: pattern.name,
52
59
  pattern: pattern,
53
60
  onSelect: onBlockPatternSelect,
54
- composite: composite,
55
61
  showTitles: showTitles
56
62
  }))));
57
63
  };
58
64
  function BlockPattern({
59
65
  pattern,
60
66
  onSelect,
61
- composite,
62
67
  showTitles
63
68
  }) {
64
69
  const baseClassName = 'block-editor-block-pattern-setup-list';
@@ -69,14 +74,15 @@ function BlockPattern({
69
74
  } = pattern;
70
75
  const descriptionId = useInstanceId(BlockPattern, `${baseClassName}__item-description`);
71
76
  return createElement("div", {
72
- className: `${baseClassName}__list-item`,
73
- "aria-label": pattern.title,
74
- "aria-describedby": pattern.description ? descriptionId : undefined
77
+ className: `${baseClassName}__list-item`
75
78
  }, createElement(CompositeItem, {
79
+ render: createElement("div", {
80
+ "aria-describedby": description ? descriptionId : undefined,
81
+ "aria-label": pattern.title,
82
+ className: `${baseClassName}__item`
83
+ }),
84
+ id: `${baseClassName}__pattern__${pattern.name}`,
76
85
  role: "option",
77
- as: "div",
78
- ...composite,
79
- className: `${baseClassName}__item`,
80
86
  onClick: () => onSelect(blocks)
81
87
  }, createElement(BlockPreview, {
82
88
  blocks: blocks,
@@ -88,6 +94,7 @@ function BlockPattern({
88
94
  }, description)));
89
95
  }
90
96
  function BlockPatternSlide({
97
+ active,
91
98
  className,
92
99
  pattern,
93
100
  minHeight
@@ -98,7 +105,9 @@ function BlockPatternSlide({
98
105
  description
99
106
  } = pattern;
100
107
  const descriptionId = useInstanceId(BlockPatternSlide, 'block-editor-block-pattern-setup-list__item-description');
101
- return createElement("li", {
108
+ return createElement("div", {
109
+ "aria-hidden": !active,
110
+ role: "img",
102
111
  className: `pattern-slide ${className}`,
103
112
  "aria-label": title,
104
113
  "aria-describedby": description ? descriptionId : undefined
@@ -145,10 +154,10 @@ const BlockPatternSetup = ({
145
154
  activeSlide: activeSlide,
146
155
  totalSlides: patterns.length,
147
156
  handleNext: () => {
148
- setActiveSlide(active => active + 1);
157
+ setActiveSlide(active => Math.min(active + 1, patterns.length - 1));
149
158
  },
150
159
  handlePrevious: () => {
151
- setActiveSlide(active => active - 1);
160
+ setActiveSlide(active => Math.max(active - 1, 0));
152
161
  },
153
162
  onBlockPatternSelect: () => {
154
163
  onPatternSelectCallback(patterns[activeSlide].blocks);
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","cloneBlock","VisuallyHidden","__unstableComposite","Composite","__unstableUseCompositeState","useCompositeState","__unstableCompositeItem","CompositeItem","useState","useInstanceId","__","store","blockEditorStore","BlockPreview","SetupToolbar","usePatternsSetup","VIEWMODES","SetupContent","viewMode","activeSlide","patterns","onBlockPatternSelect","showTitles","composite","containerClass","carousel","slideClass","Map","createElement","className","map","pattern","index","BlockPatternSlide","get","key","name","role","BlockPattern","onSelect","baseClassName","blocks","description","viewportWidth","descriptionId","title","undefined","as","onClick","id","minHeight","BlockPatternSetup","clientId","blockName","filterPatternsFn","initialViewMode","setViewMode","setActiveSlide","replaceBlock","length","onBlockPatternSelectDefault","clonedBlocks","block","onPatternSelectCallback","Fragment","totalSlides","handleNext","active","handlePrevious"],"sources":["@wordpress/block-editor/src/components/block-pattern-setup/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { cloneBlock } from '@wordpress/blocks';\nimport {\n\tVisuallyHidden,\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n} from '@wordpress/components';\n\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockPreview from '../block-preview';\nimport SetupToolbar from './setup-toolbar';\nimport usePatternsSetup from './use-patterns-setup';\nimport { VIEWMODES } from './constants';\n\nconst SetupContent = ( {\n\tviewMode,\n\tactiveSlide,\n\tpatterns,\n\tonBlockPatternSelect,\n\tshowTitles,\n} ) => {\n\tconst composite = useCompositeState();\n\tconst containerClass = 'block-editor-block-pattern-setup__container';\n\tif ( viewMode === VIEWMODES.carousel ) {\n\t\tconst slideClass = new Map( [\n\t\t\t[ activeSlide, 'active-slide' ],\n\t\t\t[ activeSlide - 1, 'previous-slide' ],\n\t\t\t[ activeSlide + 1, 'next-slide' ],\n\t\t] );\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-pattern-setup__carousel\">\n\t\t\t\t<div className={ containerClass }>\n\t\t\t\t\t<ul className=\"carousel-container\">\n\t\t\t\t\t\t{ patterns.map( ( pattern, index ) => (\n\t\t\t\t\t\t\t<BlockPatternSlide\n\t\t\t\t\t\t\t\tclassName={ slideClass.get( index ) || '' }\n\t\t\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<div className=\"block-editor-block-pattern-setup__grid\">\n\t\t\t<Composite\n\t\t\t\t{ ...composite }\n\t\t\t\trole=\"listbox\"\n\t\t\t\tclassName={ containerClass }\n\t\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t\t>\n\t\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t\t<BlockPattern\n\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\tonSelect={ onBlockPatternSelect }\n\t\t\t\t\t\tcomposite={ composite }\n\t\t\t\t\t\tshowTitles={ showTitles }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t</div>\n\t);\n};\n\nfunction BlockPattern( { pattern, onSelect, composite, showTitles } ) {\n\tconst baseClassName = 'block-editor-block-pattern-setup-list';\n\tconst { blocks, description, viewportWidth = 700 } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }__item-description`\n\t);\n\treturn (\n\t\t<div\n\t\t\tclassName={ `${ baseClassName }__list-item` }\n\t\t\taria-label={ pattern.title }\n\t\t\taria-describedby={ pattern.description ? descriptionId : undefined }\n\t\t>\n\t\t\t<CompositeItem\n\t\t\t\trole=\"option\"\n\t\t\t\tas=\"div\"\n\t\t\t\t{ ...composite }\n\t\t\t\tclassName={ `${ baseClassName }__item` }\n\t\t\t\tonClick={ () => onSelect( blocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t/>\n\t\t\t\t{ showTitles && (\n\t\t\t\t\t<div className={ `${ baseClassName }__item-title` }>\n\t\t\t\t\t\t{ pattern.title }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ !! description && (\n\t\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t) }\n\t\t\t</CompositeItem>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternSlide( { className, pattern, minHeight } ) {\n\tconst { blocks, title, description } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPatternSlide,\n\t\t'block-editor-block-pattern-setup-list__item-description'\n\t);\n\treturn (\n\t\t<li\n\t\t\tclassName={ `pattern-slide ${ className }` }\n\t\t\taria-label={ title }\n\t\t\taria-describedby={ description ? descriptionId : undefined }\n\t\t>\n\t\t\t<BlockPreview blocks={ blocks } minHeight={ minHeight } />\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nconst BlockPatternSetup = ( {\n\tclientId,\n\tblockName,\n\tfilterPatternsFn,\n\tonBlockPatternSelect,\n\tinitialViewMode = VIEWMODES.carousel,\n\tshowTitles = false,\n} ) => {\n\tconst [ viewMode, setViewMode ] = useState( initialViewMode );\n\tconst [ activeSlide, setActiveSlide ] = useState( 0 );\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\tconst patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );\n\n\tif ( ! patterns?.length ) {\n\t\treturn null;\n\t}\n\n\tconst onBlockPatternSelectDefault = ( blocks ) => {\n\t\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\t\treplaceBlock( clientId, clonedBlocks );\n\t};\n\tconst onPatternSelectCallback =\n\t\tonBlockPatternSelect || onBlockPatternSelectDefault;\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }\n\t\t\t>\n\t\t\t\t<SetupContent\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonBlockPatternSelect={ onPatternSelectCallback }\n\t\t\t\t\tshowTitles={ showTitles }\n\t\t\t\t/>\n\t\t\t\t<SetupToolbar\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tsetViewMode={ setViewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\ttotalSlides={ patterns.length }\n\t\t\t\t\thandleNext={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) => active + 1 );\n\t\t\t\t\t} }\n\t\t\t\t\thandlePrevious={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) => active - 1 );\n\t\t\t\t\t} }\n\t\t\t\t\tonBlockPatternSelect={ () => {\n\t\t\t\t\t\tonPatternSelectCallback(\n\t\t\t\t\t\t\tpatterns[ activeSlide ].blocks\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default BlockPatternSetup;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useDispatch","cloneBlock","VisuallyHidden","privateApis","componentsPrivateApis","useState","useInstanceId","__","store","blockEditorStore","BlockPreview","SetupToolbar","usePatternsSetup","VIEWMODES","unlock","CompositeV2","Composite","CompositeItemV2","CompositeItem","useCompositeStoreV2","useCompositeStore","SetupContent","viewMode","activeSlide","patterns","onBlockPatternSelect","showTitles","compositeStore","containerClass","carousel","slideClass","Map","createElement","className","map","pattern","index","BlockPatternSlide","active","get","key","name","role","BlockPattern","onSelect","baseClassName","blocks","description","viewportWidth","descriptionId","render","undefined","title","id","onClick","minHeight","BlockPatternSetup","clientId","blockName","filterPatternsFn","initialViewMode","setViewMode","setActiveSlide","replaceBlock","length","onBlockPatternSelectDefault","clonedBlocks","block","onPatternSelectCallback","Fragment","totalSlides","handleNext","Math","min","handlePrevious","max"],"sources":["@wordpress/block-editor/src/components/block-pattern-setup/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { cloneBlock } from '@wordpress/blocks';\nimport {\n\tVisuallyHidden,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\n\nimport { useState } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockPreview from '../block-preview';\nimport SetupToolbar from './setup-toolbar';\nimport usePatternsSetup from './use-patterns-setup';\nimport { VIEWMODES } from './constants';\nimport { unlock } from '../../lock-unlock';\n\nconst {\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tuseCompositeStoreV2: useCompositeStore,\n} = unlock( componentsPrivateApis );\n\nconst SetupContent = ( {\n\tviewMode,\n\tactiveSlide,\n\tpatterns,\n\tonBlockPatternSelect,\n\tshowTitles,\n} ) => {\n\tconst compositeStore = useCompositeStore();\n\tconst containerClass = 'block-editor-block-pattern-setup__container';\n\n\tif ( viewMode === VIEWMODES.carousel ) {\n\t\tconst slideClass = new Map( [\n\t\t\t[ activeSlide, 'active-slide' ],\n\t\t\t[ activeSlide - 1, 'previous-slide' ],\n\t\t\t[ activeSlide + 1, 'next-slide' ],\n\t\t] );\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-pattern-setup__carousel\">\n\t\t\t\t<div className={ containerClass }>\n\t\t\t\t\t<div className=\"carousel-container\">\n\t\t\t\t\t\t{ patterns.map( ( pattern, index ) => (\n\t\t\t\t\t\t\t<BlockPatternSlide\n\t\t\t\t\t\t\t\tactive={ index === activeSlide }\n\t\t\t\t\t\t\t\tclassName={ slideClass.get( index ) || '' }\n\t\t\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-block-pattern-setup__grid\">\n\t\t\t<Composite\n\t\t\t\tstore={ compositeStore }\n\t\t\t\trole=\"listbox\"\n\t\t\t\tclassName={ containerClass }\n\t\t\t\taria-label={ __( 'Patterns list' ) }\n\t\t\t>\n\t\t\t\t{ patterns.map( ( pattern ) => (\n\t\t\t\t\t<BlockPattern\n\t\t\t\t\t\tkey={ pattern.name }\n\t\t\t\t\t\tpattern={ pattern }\n\t\t\t\t\t\tonSelect={ onBlockPatternSelect }\n\t\t\t\t\t\tshowTitles={ showTitles }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t</div>\n\t);\n};\n\nfunction BlockPattern( { pattern, onSelect, showTitles } ) {\n\tconst baseClassName = 'block-editor-block-pattern-setup-list';\n\tconst { blocks, description, viewportWidth = 700 } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPattern,\n\t\t`${ baseClassName }__item-description`\n\t);\n\treturn (\n\t\t<div className={ `${ baseClassName }__list-item` }>\n\t\t\t<CompositeItem\n\t\t\t\trender={\n\t\t\t\t\t<div\n\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\tdescription ? descriptionId : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\taria-label={ pattern.title }\n\t\t\t\t\t\tclassName={ `${ baseClassName }__item` }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tid={ `${ baseClassName }__pattern__${ pattern.name }` }\n\t\t\t\trole=\"option\"\n\t\t\t\tonClick={ () => onSelect( blocks ) }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t/>\n\t\t\t\t{ showTitles && (\n\t\t\t\t\t<div className={ `${ baseClassName }__item-title` }>\n\t\t\t\t\t\t{ pattern.title }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ !! description && (\n\t\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t) }\n\t\t\t</CompositeItem>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternSlide( { active, className, pattern, minHeight } ) {\n\tconst { blocks, title, description } = pattern;\n\tconst descriptionId = useInstanceId(\n\t\tBlockPatternSlide,\n\t\t'block-editor-block-pattern-setup-list__item-description'\n\t);\n\treturn (\n\t\t<div\n\t\t\taria-hidden={ ! active }\n\t\t\trole=\"img\"\n\t\t\tclassName={ `pattern-slide ${ className }` }\n\t\t\taria-label={ title }\n\t\t\taria-describedby={ description ? descriptionId : undefined }\n\t\t>\n\t\t\t<BlockPreview blocks={ blocks } minHeight={ minHeight } />\n\t\t\t{ !! description && (\n\t\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</VisuallyHidden>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nconst BlockPatternSetup = ( {\n\tclientId,\n\tblockName,\n\tfilterPatternsFn,\n\tonBlockPatternSelect,\n\tinitialViewMode = VIEWMODES.carousel,\n\tshowTitles = false,\n} ) => {\n\tconst [ viewMode, setViewMode ] = useState( initialViewMode );\n\tconst [ activeSlide, setActiveSlide ] = useState( 0 );\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\tconst patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );\n\n\tif ( ! patterns?.length ) {\n\t\treturn null;\n\t}\n\n\tconst onBlockPatternSelectDefault = ( blocks ) => {\n\t\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\t\treplaceBlock( clientId, clonedBlocks );\n\t};\n\tconst onPatternSelectCallback =\n\t\tonBlockPatternSelect || onBlockPatternSelectDefault;\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }\n\t\t\t>\n\t\t\t\t<SetupContent\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\tpatterns={ patterns }\n\t\t\t\t\tonBlockPatternSelect={ onPatternSelectCallback }\n\t\t\t\t\tshowTitles={ showTitles }\n\t\t\t\t/>\n\t\t\t\t<SetupToolbar\n\t\t\t\t\tviewMode={ viewMode }\n\t\t\t\t\tsetViewMode={ setViewMode }\n\t\t\t\t\tactiveSlide={ activeSlide }\n\t\t\t\t\ttotalSlides={ patterns.length }\n\t\t\t\t\thandleNext={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) =>\n\t\t\t\t\t\t\tMath.min( active + 1, patterns.length - 1 )\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\thandlePrevious={ () => {\n\t\t\t\t\t\tsetActiveSlide( ( active ) =>\n\t\t\t\t\t\t\tMath.max( active - 1, 0 )\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\tonBlockPatternSelect={ () => {\n\t\t\t\t\t\tonPatternSelectCallback(\n\t\t\t\t\t\t\tpatterns[ activeSlide ].blocks\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default BlockPatternSetup;\n"],"mappings":"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"}