@wordpress/block-editor 12.0.0 → 12.2.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 (627) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/build/autocompleters/block.js +13 -5
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +6 -3
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-controls/slot.js +12 -4
  8. package/build/components/block-controls/slot.js.map +1 -1
  9. package/build/components/block-controls/slot.native.js +10 -1
  10. package/build/components/block-controls/slot.native.js.map +1 -1
  11. package/build/components/block-draggable/index.js +11 -7
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.js +2 -2
  14. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  15. package/build/components/block-editing-mode/index.js +84 -0
  16. package/build/components/block-editing-mode/index.js.map +1 -0
  17. package/build/components/block-list/block-invalid-warning.native.js +15 -7
  18. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  19. package/build/components/block-list/block-list-block-context.js +15 -0
  20. package/build/components/block-list/block-list-block-context.js.map +1 -0
  21. package/build/components/block-list/block-list-item-cell.native.js +15 -2
  22. package/build/components/block-list/block-list-item-cell.native.js.map +1 -1
  23. package/build/components/block-list/block-list-item.native.js +158 -195
  24. package/build/components/block-list/block-list-item.native.js.map +1 -1
  25. package/build/components/block-list/block-outline.native.js +57 -0
  26. package/build/components/block-list/block-outline.native.js.map +1 -0
  27. package/build/components/block-list/block.js +29 -37
  28. package/build/components/block-list/block.js.map +1 -1
  29. package/build/components/block-list/block.native.js +347 -311
  30. package/build/components/block-list/block.native.js.map +1 -1
  31. package/build/components/block-list/index.native.js +260 -357
  32. package/build/components/block-list/index.native.js.map +1 -1
  33. package/build/components/block-list/insertion-point.native.js +4 -2
  34. package/build/components/block-list/insertion-point.native.js.map +1 -1
  35. package/build/components/block-list/use-block-props/index.js +2 -2
  36. package/build/components/block-list/use-block-props/index.js.map +1 -1
  37. package/build/components/block-list/use-in-between-inserter.js +7 -5
  38. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  39. package/build/components/block-list-appender/index.js +15 -1
  40. package/build/components/block-list-appender/index.js.map +1 -1
  41. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +19 -4
  42. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  43. package/build/components/block-settings-menu/block-settings-dropdown.js +8 -10
  44. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  45. package/build/components/block-settings-menu-controls/index.js +15 -4
  46. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  47. package/build/components/block-styles/preview-panel.js +1 -2
  48. package/build/components/block-styles/preview-panel.js.map +1 -1
  49. package/build/components/block-switcher/block-transformations-menu.js +8 -0
  50. package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
  51. package/build/components/block-switcher/block-variation-transformations.js +125 -0
  52. package/build/components/block-switcher/block-variation-transformations.js.map +1 -0
  53. package/build/components/block-switcher/index.js +34 -12
  54. package/build/components/block-switcher/index.js.map +1 -1
  55. package/build/components/block-switcher/pattern-transformations-menu.js +3 -3
  56. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  57. package/build/components/block-toolbar/index.js +9 -7
  58. package/build/components/block-toolbar/index.js.map +1 -1
  59. package/build/components/block-tools/block-contextual-toolbar.js +22 -65
  60. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  61. package/build/components/block-tools/insertion-point.js +11 -5
  62. package/build/components/block-tools/insertion-point.js.map +1 -1
  63. package/build/components/block-tools/selected-block-popover.js +3 -8
  64. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  65. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  66. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  67. package/build/components/convert-to-group-buttons/index.js +7 -2
  68. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  69. package/build/components/convert-to-group-buttons/index.native.js +87 -3
  70. package/build/components/convert-to-group-buttons/index.native.js.map +1 -1
  71. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +23 -37
  72. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  73. package/build/components/global-styles/advanced-panel.js +86 -0
  74. package/build/components/global-styles/advanced-panel.js.map +1 -0
  75. package/build/components/global-styles/color-panel.js +4 -1
  76. package/build/components/global-styles/color-panel.js.map +1 -1
  77. package/build/components/global-styles/dimensions-panel.js +9 -8
  78. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  79. package/build/components/global-styles/hooks.js +1 -2
  80. package/build/components/global-styles/hooks.js.map +1 -1
  81. package/build/components/global-styles/index.js +24 -0
  82. package/build/components/global-styles/index.js.map +1 -1
  83. package/build/components/global-styles/typography-panel.js +1 -1
  84. package/build/components/global-styles/typography-panel.js.map +1 -1
  85. package/build/components/global-styles/use-global-styles-output.js +27 -4
  86. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  87. package/build/components/global-styles/utils.js +30 -0
  88. package/build/components/global-styles/utils.js.map +1 -1
  89. package/build/components/iframe/index.js +14 -7
  90. package/build/components/iframe/index.js.map +1 -1
  91. package/build/components/image-editor/use-save-image.js +24 -8
  92. package/build/components/image-editor/use-save-image.js.map +1 -1
  93. package/build/components/inner-blocks/index.js +2 -1
  94. package/build/components/inner-blocks/index.js.map +1 -1
  95. package/build/components/inner-blocks/index.native.js +7 -7
  96. package/build/components/inner-blocks/index.native.js.map +1 -1
  97. package/build/components/inner-blocks/use-nested-settings-update.js +13 -5
  98. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  99. package/build/components/inserter/index.js +3 -7
  100. package/build/components/inserter/index.js.map +1 -1
  101. package/build/components/inserter/quick-inserter.js +2 -4
  102. package/build/components/inserter/quick-inserter.js.map +1 -1
  103. package/build/components/inserter/search-results.js +19 -6
  104. package/build/components/inserter/search-results.js.map +1 -1
  105. package/build/components/inserter-draggable-blocks/index.js +5 -0
  106. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  107. package/build/components/inspector-controls/fill.js +1 -1
  108. package/build/components/inspector-controls/fill.js.map +1 -1
  109. package/build/components/inspector-controls/fill.native.js +1 -1
  110. package/build/components/inspector-controls/fill.native.js.map +1 -1
  111. package/build/components/inspector-controls/slot.js +3 -6
  112. package/build/components/inspector-controls/slot.js.map +1 -1
  113. package/build/components/inspector-controls/slot.native.js +1 -1
  114. package/build/components/inspector-controls/slot.native.js.map +1 -1
  115. package/build/components/line-height-control/index.js +7 -2
  116. package/build/components/line-height-control/index.js.map +1 -1
  117. package/build/components/link-control/use-internal-input-value.js +9 -8
  118. package/build/components/link-control/use-internal-input-value.js.map +1 -1
  119. package/build/components/list-view/appender.js +6 -1
  120. package/build/components/list-view/appender.js.map +1 -1
  121. package/build/components/list-view/block-contents.js +9 -2
  122. package/build/components/list-view/block-contents.js.map +1 -1
  123. package/build/components/list-view/block-select-button.js +2 -1
  124. package/build/components/list-view/block-select-button.js.map +1 -1
  125. package/build/components/list-view/block.js +25 -29
  126. package/build/components/list-view/block.js.map +1 -1
  127. package/build/components/list-view/branch.js +1 -3
  128. package/build/components/list-view/branch.js.map +1 -1
  129. package/build/components/list-view/index.js +43 -22
  130. package/build/components/list-view/index.js.map +1 -1
  131. package/build/components/list-view/use-list-view-client-ids.js +27 -3
  132. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  133. package/build/components/list-view/use-list-view-drop-zone.js +163 -11
  134. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  135. package/build/components/media-placeholder/index.js +68 -7
  136. package/build/components/media-placeholder/index.js.map +1 -1
  137. package/build/components/multi-selection-inspector/index.js +2 -2
  138. package/build/components/multi-selection-inspector/index.js.map +1 -1
  139. package/build/components/preview-options/index.js +6 -1
  140. package/build/components/preview-options/index.js.map +1 -1
  141. package/build/components/publish-date-time-picker/index.js +0 -2
  142. package/build/components/publish-date-time-picker/index.js.map +1 -1
  143. package/build/components/spacing-sizes-control/spacing-input-control.js +1 -1
  144. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  145. package/build/components/url-input/index.js +4 -2
  146. package/build/components/url-input/index.js.map +1 -1
  147. package/build/components/use-block-drop-zone/index.js +25 -15
  148. package/build/components/use-block-drop-zone/index.js.map +1 -1
  149. package/build/components/use-resize-canvas/index.js +8 -1
  150. package/build/components/use-resize-canvas/index.js.map +1 -1
  151. package/build/components/writing-flow/use-arrow-nav.js +13 -7
  152. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  153. package/build/hooks/align.js +4 -8
  154. package/build/hooks/align.js.map +1 -1
  155. package/build/hooks/behaviors.js +115 -0
  156. package/build/hooks/behaviors.js.map +1 -0
  157. package/build/hooks/border.js +1 -1
  158. package/build/hooks/border.js.map +1 -1
  159. package/build/hooks/color.js +1 -1
  160. package/build/hooks/color.js.map +1 -1
  161. package/build/hooks/content-lock-ui.js +8 -12
  162. package/build/hooks/content-lock-ui.js.map +1 -1
  163. package/build/hooks/dimensions.js +0 -30
  164. package/build/hooks/dimensions.js.map +1 -1
  165. package/build/hooks/duotone.js +5 -9
  166. package/build/hooks/duotone.js.map +1 -1
  167. package/build/hooks/index.js +2 -0
  168. package/build/hooks/index.js.map +1 -1
  169. package/build/hooks/index.native.js +8 -0
  170. package/build/hooks/index.native.js.map +1 -1
  171. package/build/hooks/layout.js +10 -11
  172. package/build/hooks/layout.js.map +1 -1
  173. package/build/hooks/position.js +1 -1
  174. package/build/hooks/position.js.map +1 -1
  175. package/build/hooks/style.js +1 -1
  176. package/build/hooks/style.js.map +1 -1
  177. package/build/hooks/use-editor-wrapper-styles.native.js +255 -0
  178. package/build/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  179. package/build/hooks/use-typography-props.js +14 -10
  180. package/build/hooks/use-typography-props.js.map +1 -1
  181. package/build/index.native.js +31 -0
  182. package/build/index.native.js.map +1 -0
  183. package/build/private-apis.js +4 -7
  184. package/build/private-apis.js.map +1 -1
  185. package/build/store/private-actions.js +46 -0
  186. package/build/store/private-actions.js.map +1 -1
  187. package/build/store/private-selectors.js +88 -0
  188. package/build/store/private-selectors.js.map +1 -1
  189. package/build/store/reducer.js +36 -1
  190. package/build/store/reducer.js.map +1 -1
  191. package/build/store/selectors.js +28 -18
  192. package/build/store/selectors.js.map +1 -1
  193. package/build/utils/order-inserter-block-items.js +41 -0
  194. package/build/utils/order-inserter-block-items.js.map +1 -0
  195. package/build/utils/use-should-contextual-toolbar-show.js +16 -12
  196. package/build/utils/use-should-contextual-toolbar-show.js.map +1 -1
  197. package/build-module/autocompleters/block.js +12 -5
  198. package/build-module/autocompleters/block.js.map +1 -1
  199. package/build-module/components/block-breadcrumb/index.js +5 -3
  200. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  201. package/build-module/components/block-controls/slot.js +11 -4
  202. package/build-module/components/block-controls/slot.js.map +1 -1
  203. package/build-module/components/block-controls/slot.native.js +9 -1
  204. package/build-module/components/block-controls/slot.native.js.map +1 -1
  205. package/build-module/components/block-draggable/index.js +10 -6
  206. package/build-module/components/block-draggable/index.js.map +1 -1
  207. package/build-module/components/block-draggable/use-scroll-when-dragging.js +2 -2
  208. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  209. package/build-module/components/block-editing-mode/index.js +72 -0
  210. package/build-module/components/block-editing-mode/index.js.map +1 -0
  211. package/build-module/components/block-list/block-invalid-warning.native.js +16 -8
  212. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  213. package/build-module/components/block-list/block-list-block-context.js +6 -0
  214. package/build-module/components/block-list/block-list-block-context.js.map +1 -0
  215. package/build-module/components/block-list/block-list-item-cell.native.js +13 -2
  216. package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -1
  217. package/build-module/components/block-list/block-list-item.native.js +160 -190
  218. package/build-module/components/block-list/block-list-item.native.js.map +1 -1
  219. package/build-module/components/block-list/block-outline.native.js +44 -0
  220. package/build-module/components/block-list/block-outline.native.js.map +1 -0
  221. package/build-module/components/block-list/block.js +26 -34
  222. package/build-module/components/block-list/block.js.map +1 -1
  223. package/build-module/components/block-list/block.native.js +345 -310
  224. package/build-module/components/block-list/block.native.js.map +1 -1
  225. package/build-module/components/block-list/index.native.js +263 -355
  226. package/build-module/components/block-list/index.native.js.map +1 -1
  227. package/build-module/components/block-list/insertion-point.native.js +4 -2
  228. package/build-module/components/block-list/insertion-point.native.js.map +1 -1
  229. package/build-module/components/block-list/use-block-props/index.js +1 -1
  230. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  231. package/build-module/components/block-list/use-in-between-inserter.js +6 -5
  232. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  233. package/build-module/components/block-list-appender/index.js +15 -1
  234. package/build-module/components/block-list-appender/index.js.map +1 -1
  235. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +18 -4
  236. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  237. package/build-module/components/block-settings-menu/block-settings-dropdown.js +8 -9
  238. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  239. package/build-module/components/block-settings-menu-controls/index.js +13 -5
  240. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  241. package/build-module/components/block-styles/preview-panel.js +1 -2
  242. package/build-module/components/block-styles/preview-panel.js.map +1 -1
  243. package/build-module/components/block-switcher/block-transformations-menu.js +7 -0
  244. package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
  245. package/build-module/components/block-switcher/block-variation-transformations.js +108 -0
  246. package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -0
  247. package/build-module/components/block-switcher/index.js +33 -12
  248. package/build-module/components/block-switcher/index.js.map +1 -1
  249. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -3
  250. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  251. package/build-module/components/block-toolbar/index.js +8 -7
  252. package/build-module/components/block-toolbar/index.js.map +1 -1
  253. package/build-module/components/block-tools/block-contextual-toolbar.js +22 -65
  254. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  255. package/build-module/components/block-tools/insertion-point.js +11 -5
  256. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  257. package/build-module/components/block-tools/selected-block-popover.js +3 -7
  258. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  259. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +3 -2
  260. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  261. package/build-module/components/convert-to-group-buttons/index.js +7 -2
  262. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  263. package/build-module/components/convert-to-group-buttons/index.native.js +76 -1
  264. package/build-module/components/convert-to-group-buttons/index.native.js.map +1 -1
  265. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +22 -36
  266. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  267. package/build-module/components/global-styles/advanced-panel.js +74 -0
  268. package/build-module/components/global-styles/advanced-panel.js.map +1 -0
  269. package/build-module/components/global-styles/color-panel.js +5 -2
  270. package/build-module/components/global-styles/color-panel.js.map +1 -1
  271. package/build-module/components/global-styles/dimensions-panel.js +9 -8
  272. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  273. package/build-module/components/global-styles/hooks.js +1 -2
  274. package/build-module/components/global-styles/hooks.js.map +1 -1
  275. package/build-module/components/global-styles/index.js +3 -1
  276. package/build-module/components/global-styles/index.js.map +1 -1
  277. package/build-module/components/global-styles/typography-panel.js +1 -1
  278. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  279. package/build-module/components/global-styles/use-global-styles-output.js +25 -4
  280. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  281. package/build-module/components/global-styles/utils.js +25 -0
  282. package/build-module/components/global-styles/utils.js.map +1 -1
  283. package/build-module/components/iframe/index.js +15 -8
  284. package/build-module/components/iframe/index.js.map +1 -1
  285. package/build-module/components/image-editor/use-save-image.js +24 -8
  286. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  287. package/build-module/components/inner-blocks/index.js +2 -1
  288. package/build-module/components/inner-blocks/index.js.map +1 -1
  289. package/build-module/components/inner-blocks/index.native.js +7 -6
  290. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  291. package/build-module/components/inner-blocks/use-nested-settings-update.js +13 -5
  292. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  293. package/build-module/components/inserter/index.js +3 -7
  294. package/build-module/components/inserter/index.js.map +1 -1
  295. package/build-module/components/inserter/quick-inserter.js +2 -4
  296. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  297. package/build-module/components/inserter/search-results.js +16 -6
  298. package/build-module/components/inserter/search-results.js.map +1 -1
  299. package/build-module/components/inserter-draggable-blocks/index.js +4 -0
  300. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  301. package/build-module/components/inspector-controls/fill.js +1 -1
  302. package/build-module/components/inspector-controls/fill.js.map +1 -1
  303. package/build-module/components/inspector-controls/fill.native.js +1 -1
  304. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  305. package/build-module/components/inspector-controls/slot.js +4 -7
  306. package/build-module/components/inspector-controls/slot.js.map +1 -1
  307. package/build-module/components/inspector-controls/slot.native.js +1 -1
  308. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  309. package/build-module/components/line-height-control/index.js +7 -2
  310. package/build-module/components/line-height-control/index.js.map +1 -1
  311. package/build-module/components/link-control/use-internal-input-value.js +9 -8
  312. package/build-module/components/link-control/use-internal-input-value.js.map +1 -1
  313. package/build-module/components/list-view/appender.js +6 -2
  314. package/build-module/components/list-view/appender.js.map +1 -1
  315. package/build-module/components/list-view/block-contents.js +9 -3
  316. package/build-module/components/list-view/block-contents.js.map +1 -1
  317. package/build-module/components/list-view/block-select-button.js +2 -1
  318. package/build-module/components/list-view/block-select-button.js.map +1 -1
  319. package/build-module/components/list-view/block.js +24 -29
  320. package/build-module/components/list-view/block.js.map +1 -1
  321. package/build-module/components/list-view/branch.js +1 -3
  322. package/build-module/components/list-view/branch.js.map +1 -1
  323. package/build-module/components/list-view/index.js +44 -23
  324. package/build-module/components/list-view/index.js.map +1 -1
  325. package/build-module/components/list-view/use-list-view-client-ids.js +26 -3
  326. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  327. package/build-module/components/list-view/use-list-view-drop-zone.js +160 -11
  328. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  329. package/build-module/components/media-placeholder/index.js +66 -7
  330. package/build-module/components/media-placeholder/index.js.map +1 -1
  331. package/build-module/components/multi-selection-inspector/index.js +2 -2
  332. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  333. package/build-module/components/preview-options/index.js +7 -2
  334. package/build-module/components/preview-options/index.js.map +1 -1
  335. package/build-module/components/publish-date-time-picker/index.js +0 -2
  336. package/build-module/components/publish-date-time-picker/index.js.map +1 -1
  337. package/build-module/components/spacing-sizes-control/spacing-input-control.js +1 -1
  338. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  339. package/build-module/components/url-input/index.js +4 -2
  340. package/build-module/components/url-input/index.js.map +1 -1
  341. package/build-module/components/use-block-drop-zone/index.js +25 -16
  342. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  343. package/build-module/components/use-resize-canvas/index.js +8 -1
  344. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  345. package/build-module/components/writing-flow/use-arrow-nav.js +13 -7
  346. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  347. package/build-module/hooks/align.js +4 -7
  348. package/build-module/hooks/align.js.map +1 -1
  349. package/build-module/hooks/behaviors.js +97 -0
  350. package/build-module/hooks/behaviors.js.map +1 -0
  351. package/build-module/hooks/border.js +1 -1
  352. package/build-module/hooks/border.js.map +1 -1
  353. package/build-module/hooks/color.js +1 -1
  354. package/build-module/hooks/color.js.map +1 -1
  355. package/build-module/hooks/content-lock-ui.js +8 -11
  356. package/build-module/hooks/content-lock-ui.js.map +1 -1
  357. package/build-module/hooks/dimensions.js +0 -28
  358. package/build-module/hooks/dimensions.js.map +1 -1
  359. package/build-module/hooks/duotone.js +4 -7
  360. package/build-module/hooks/duotone.js.map +1 -1
  361. package/build-module/hooks/index.js +1 -0
  362. package/build-module/hooks/index.js.map +1 -1
  363. package/build-module/hooks/index.native.js +1 -0
  364. package/build-module/hooks/index.native.js.map +1 -1
  365. package/build-module/hooks/layout.js +9 -11
  366. package/build-module/hooks/layout.js.map +1 -1
  367. package/build-module/hooks/position.js +1 -1
  368. package/build-module/hooks/position.js.map +1 -1
  369. package/build-module/hooks/style.js +1 -1
  370. package/build-module/hooks/style.js.map +1 -1
  371. package/build-module/hooks/use-editor-wrapper-styles.native.js +242 -0
  372. package/build-module/hooks/use-editor-wrapper-styles.native.js.map +1 -0
  373. package/build-module/hooks/use-typography-props.js +14 -10
  374. package/build-module/hooks/use-typography-props.js.map +1 -1
  375. package/build-module/index.native.js +6 -0
  376. package/build-module/index.native.js.map +1 -0
  377. package/build-module/private-apis.js +3 -5
  378. package/build-module/private-apis.js.map +1 -1
  379. package/build-module/store/private-actions.js +42 -0
  380. package/build-module/store/private-actions.js.map +1 -1
  381. package/build-module/store/private-selectors.js +79 -0
  382. package/build-module/store/private-selectors.js.map +1 -1
  383. package/build-module/store/reducer.js +34 -1
  384. package/build-module/store/reducer.js.map +1 -1
  385. package/build-module/store/selectors.js +26 -17
  386. package/build-module/store/selectors.js.map +1 -1
  387. package/build-module/utils/order-inserter-block-items.js +32 -0
  388. package/build-module/utils/order-inserter-block-items.js.map +1 -0
  389. package/build-module/utils/use-should-contextual-toolbar-show.js +16 -12
  390. package/build-module/utils/use-should-contextual-toolbar-show.js.map +1 -1
  391. package/build-style/content-rtl.css +32 -14
  392. package/build-style/content.css +32 -14
  393. package/build-style/default-editor-styles-rtl.css +1 -1
  394. package/build-style/default-editor-styles.css +1 -1
  395. package/build-style/style-rtl.css +56 -77
  396. package/build-style/style.css +57 -77
  397. package/package.json +32 -31
  398. package/src/autocompleters/block.js +15 -7
  399. package/src/components/block-breadcrumb/index.js +11 -3
  400. package/src/components/block-breadcrumb/style.scss +2 -1
  401. package/src/components/block-controls/slot.js +8 -4
  402. package/src/components/block-controls/slot.native.js +6 -1
  403. package/src/components/block-draggable/index.js +10 -6
  404. package/src/components/block-draggable/use-scroll-when-dragging.js +8 -2
  405. package/src/components/block-editing-mode/index.js +71 -0
  406. package/src/components/block-list/block-invalid-warning.native.js +17 -9
  407. package/src/components/block-list/block-list-block-context.js +6 -0
  408. package/src/components/block-list/block-list-item-cell.native.js +10 -1
  409. package/src/components/block-list/block-list-item.native.js +180 -208
  410. package/src/components/block-list/block-outline.native.js +58 -0
  411. package/src/components/block-list/block.js +38 -56
  412. package/src/components/block-list/block.native.js +531 -501
  413. package/src/components/block-list/content.scss +5 -6
  414. package/src/components/block-list/index.native.js +324 -382
  415. package/src/components/block-list/insertion-point.native.js +2 -2
  416. package/src/components/block-list/test/block-invalid-warning.native.js +48 -0
  417. package/src/components/block-list/test/index.native.js +205 -0
  418. package/src/components/block-list/use-block-props/index.js +1 -1
  419. package/src/components/block-list/use-in-between-inserter.js +7 -3
  420. package/src/components/block-list-appender/index.js +22 -4
  421. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +26 -1
  422. package/src/components/block-mover/style.scss +1 -0
  423. package/src/components/block-pattern-setup/style.scss +1 -4
  424. package/src/components/block-patterns-list/style.scss +1 -4
  425. package/src/components/block-settings-menu/block-settings-dropdown.js +10 -17
  426. package/src/components/block-settings-menu-controls/index.js +24 -4
  427. package/src/components/block-styles/preview-panel.js +1 -3
  428. package/src/components/block-styles/style.scss +4 -4
  429. package/src/components/block-switcher/block-transformations-menu.js +12 -0
  430. package/src/components/block-switcher/block-variation-transformations.js +115 -0
  431. package/src/components/block-switcher/index.js +38 -5
  432. package/src/components/block-switcher/pattern-transformations-menu.js +5 -5
  433. package/src/components/block-switcher/style.scss +6 -5
  434. package/src/components/block-toolbar/index.js +10 -11
  435. package/src/components/block-tools/block-contextual-toolbar.js +32 -67
  436. package/src/components/block-tools/insertion-point.js +23 -9
  437. package/src/components/block-tools/selected-block-popover.js +3 -5
  438. package/src/components/block-tools/style.scss +8 -0
  439. package/src/components/button-block-appender/content.scss +22 -0
  440. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +16 -2
  441. package/src/components/convert-to-group-buttons/index.js +9 -2
  442. package/src/components/convert-to-group-buttons/index.native.js +79 -1
  443. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +32 -38
  444. package/src/components/global-styles/advanced-panel.js +82 -0
  445. package/src/components/global-styles/color-panel.js +6 -1
  446. package/src/components/global-styles/dimensions-panel.js +9 -8
  447. package/src/components/global-styles/hooks.js +1 -5
  448. package/src/components/global-styles/index.js +6 -1
  449. package/src/components/global-styles/style.scss +17 -0
  450. package/src/components/global-styles/test/utils.js +57 -1
  451. package/src/components/global-styles/typography-panel.js +1 -1
  452. package/src/components/global-styles/use-global-styles-output.js +21 -3
  453. package/src/components/global-styles/utils.js +27 -0
  454. package/src/components/iframe/index.js +22 -12
  455. package/src/components/image-editor/use-save-image.js +20 -9
  456. package/src/components/inner-blocks/README.md +5 -0
  457. package/src/components/inner-blocks/index.js +2 -0
  458. package/src/components/inner-blocks/index.native.js +16 -6
  459. package/src/components/inner-blocks/use-nested-settings-update.js +20 -3
  460. package/src/components/inserter/index.js +1 -9
  461. package/src/components/inserter/quick-inserter.js +0 -2
  462. package/src/components/inserter/search-results.js +32 -6
  463. package/src/components/inserter-draggable-blocks/index.js +4 -0
  464. package/src/components/inspector-controls/fill.js +1 -1
  465. package/src/components/inspector-controls/fill.native.js +1 -1
  466. package/src/components/inspector-controls/slot.js +4 -9
  467. package/src/components/inspector-controls/slot.native.js +1 -1
  468. package/src/components/line-height-control/index.js +7 -2
  469. package/src/components/line-height-control/stories/index.js +1 -1
  470. package/src/components/link-control/test/index.js +42 -0
  471. package/src/components/link-control/use-internal-input-value.js +8 -7
  472. package/src/components/list-view/appender.js +3 -2
  473. package/src/components/list-view/block-contents.js +32 -20
  474. package/src/components/list-view/block-select-button.js +5 -1
  475. package/src/components/list-view/block.js +34 -37
  476. package/src/components/list-view/branch.js +1 -7
  477. package/src/components/list-view/index.js +42 -17
  478. package/src/components/list-view/style.scss +7 -7
  479. package/src/components/list-view/test/use-list-view-drop-zone.js +88 -12
  480. package/src/components/list-view/use-list-view-client-ids.js +21 -4
  481. package/src/components/list-view/use-list-view-drop-zone.js +194 -11
  482. package/src/components/media-placeholder/index.js +74 -1
  483. package/src/components/multi-selection-inspector/index.js +2 -2
  484. package/src/components/preview-options/index.js +9 -2
  485. package/src/components/publish-date-time-picker/index.js +0 -2
  486. package/src/components/spacing-sizes-control/spacing-input-control.js +1 -0
  487. package/src/components/url-input/README.md +6 -0
  488. package/src/components/url-input/index.js +2 -2
  489. package/src/components/use-block-drop-zone/index.js +31 -17
  490. package/src/components/use-resize-canvas/index.js +9 -1
  491. package/src/components/writing-flow/test/index.js +15 -0
  492. package/src/components/writing-flow/use-arrow-nav.js +17 -4
  493. package/src/hooks/align.js +5 -12
  494. package/src/hooks/behaviors.js +104 -0
  495. package/src/hooks/border.js +2 -1
  496. package/src/hooks/color.js +2 -1
  497. package/src/hooks/content-lock-ui.js +3 -15
  498. package/src/hooks/dimensions.js +0 -40
  499. package/src/hooks/duotone.js +4 -11
  500. package/src/hooks/index.js +1 -0
  501. package/src/hooks/index.native.js +1 -0
  502. package/src/hooks/layout.js +14 -20
  503. package/src/hooks/position.js +2 -1
  504. package/src/hooks/style.js +2 -1
  505. package/src/hooks/test/use-editor-wrapper-styles.native.js +282 -0
  506. package/src/hooks/test/use-typography-props.js +47 -2
  507. package/src/hooks/use-editor-wrapper-styles.native.js +250 -0
  508. package/src/hooks/use-editor-wrapper-styles.native.scss +11 -0
  509. package/src/hooks/use-typography-props.js +10 -11
  510. package/src/index.native.js +6 -0
  511. package/src/private-apis.js +2 -4
  512. package/src/store/private-actions.js +39 -0
  513. package/src/store/private-selectors.js +95 -0
  514. package/src/store/reducer.js +27 -0
  515. package/src/store/selectors.js +25 -15
  516. package/src/store/test/private-actions.js +32 -1
  517. package/src/store/test/private-selectors.js +158 -0
  518. package/src/store/test/reducer.js +48 -0
  519. package/src/style.scss +0 -3
  520. package/src/utils/order-inserter-block-items.js +26 -0
  521. package/src/utils/use-should-contextual-toolbar-show.js +19 -9
  522. package/tsconfig.json +1 -0
  523. package/tsconfig.tsbuildinfo +1 -1
  524. package/build/components/block-list/block-list-compact.native.js +0 -75
  525. package/build/components/block-list/block-list-compact.native.js.map +0 -1
  526. package/build/components/off-canvas-editor/appender.js +0 -125
  527. package/build/components/off-canvas-editor/appender.js.map +0 -1
  528. package/build/components/off-canvas-editor/block-contents.js +0 -141
  529. package/build/components/off-canvas-editor/block-contents.js.map +0 -1
  530. package/build/components/off-canvas-editor/block-select-button.js +0 -126
  531. package/build/components/off-canvas-editor/block-select-button.js.map +0 -1
  532. package/build/components/off-canvas-editor/block.js +0 -297
  533. package/build/components/off-canvas-editor/block.js.map +0 -1
  534. package/build/components/off-canvas-editor/branch.js +0 -197
  535. package/build/components/off-canvas-editor/branch.js.map +0 -1
  536. package/build/components/off-canvas-editor/context.js +0 -19
  537. package/build/components/off-canvas-editor/context.js.map +0 -1
  538. package/build/components/off-canvas-editor/drop-indicator.js +0 -118
  539. package/build/components/off-canvas-editor/drop-indicator.js.map +0 -1
  540. package/build/components/off-canvas-editor/expander.js +0 -41
  541. package/build/components/off-canvas-editor/expander.js.map +0 -1
  542. package/build/components/off-canvas-editor/index.js +0 -236
  543. package/build/components/off-canvas-editor/index.js.map +0 -1
  544. package/build/components/off-canvas-editor/leaf-more-menu.js +0 -146
  545. package/build/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  546. package/build/components/off-canvas-editor/leaf.js +0 -60
  547. package/build/components/off-canvas-editor/leaf.js.map +0 -1
  548. package/build/components/off-canvas-editor/link-ui.js +0 -186
  549. package/build/components/off-canvas-editor/link-ui.js.map +0 -1
  550. package/build/components/off-canvas-editor/update-attributes.js +0 -108
  551. package/build/components/off-canvas-editor/update-attributes.js.map +0 -1
  552. package/build/components/off-canvas-editor/use-block-selection.js +0 -139
  553. package/build/components/off-canvas-editor/use-block-selection.js.map +0 -1
  554. package/build/components/off-canvas-editor/use-inserted-block.js +0 -58
  555. package/build/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  556. package/build/components/off-canvas-editor/use-list-view-client-ids.js +0 -33
  557. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  558. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +0 -235
  559. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  560. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -60
  561. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  562. package/build/components/off-canvas-editor/utils.js +0 -60
  563. package/build/components/off-canvas-editor/utils.js.map +0 -1
  564. package/build-module/components/block-list/block-list-compact.native.js +0 -60
  565. package/build-module/components/block-list/block-list-compact.native.js.map +0 -1
  566. package/build-module/components/off-canvas-editor/appender.js +0 -108
  567. package/build-module/components/off-canvas-editor/appender.js.map +0 -1
  568. package/build-module/components/off-canvas-editor/block-contents.js +0 -121
  569. package/build-module/components/off-canvas-editor/block-contents.js.map +0 -1
  570. package/build-module/components/off-canvas-editor/block-select-button.js +0 -107
  571. package/build-module/components/off-canvas-editor/block-select-button.js.map +0 -1
  572. package/build-module/components/off-canvas-editor/block.js +0 -273
  573. package/build-module/components/off-canvas-editor/block.js.map +0 -1
  574. package/build-module/components/off-canvas-editor/branch.js +0 -179
  575. package/build-module/components/off-canvas-editor/branch.js.map +0 -1
  576. package/build-module/components/off-canvas-editor/context.js +0 -7
  577. package/build-module/components/off-canvas-editor/context.js.map +0 -1
  578. package/build-module/components/off-canvas-editor/drop-indicator.js +0 -111
  579. package/build-module/components/off-canvas-editor/drop-indicator.js.map +0 -1
  580. package/build-module/components/off-canvas-editor/expander.js +0 -32
  581. package/build-module/components/off-canvas-editor/expander.js.map +0 -1
  582. package/build-module/components/off-canvas-editor/index.js +0 -213
  583. package/build-module/components/off-canvas-editor/index.js.map +0 -1
  584. package/build-module/components/off-canvas-editor/leaf-more-menu.js +0 -128
  585. package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +0 -1
  586. package/build-module/components/off-canvas-editor/leaf.js +0 -45
  587. package/build-module/components/off-canvas-editor/leaf.js.map +0 -1
  588. package/build-module/components/off-canvas-editor/link-ui.js +0 -166
  589. package/build-module/components/off-canvas-editor/link-ui.js.map +0 -1
  590. package/build-module/components/off-canvas-editor/update-attributes.js +0 -97
  591. package/build-module/components/off-canvas-editor/update-attributes.js.map +0 -1
  592. package/build-module/components/off-canvas-editor/use-block-selection.js +0 -124
  593. package/build-module/components/off-canvas-editor/use-block-selection.js.map +0 -1
  594. package/build-module/components/off-canvas-editor/use-inserted-block.js +0 -47
  595. package/build-module/components/off-canvas-editor/use-inserted-block.js.map +0 -1
  596. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +0 -24
  597. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +0 -1
  598. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +0 -220
  599. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +0 -1
  600. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -50
  601. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +0 -1
  602. package/build-module/components/off-canvas-editor/utils.js +0 -44
  603. package/build-module/components/off-canvas-editor/utils.js.map +0 -1
  604. package/src/components/block-list/block-list-compact.native.js +0 -63
  605. package/src/components/off-canvas-editor/README.md +0 -5
  606. package/src/components/off-canvas-editor/appender.js +0 -124
  607. package/src/components/off-canvas-editor/block-contents.js +0 -156
  608. package/src/components/off-canvas-editor/block-select-button.js +0 -128
  609. package/src/components/off-canvas-editor/block.js +0 -347
  610. package/src/components/off-canvas-editor/branch.js +0 -238
  611. package/src/components/off-canvas-editor/context.js +0 -8
  612. package/src/components/off-canvas-editor/drop-indicator.js +0 -126
  613. package/src/components/off-canvas-editor/expander.js +0 -26
  614. package/src/components/off-canvas-editor/index.js +0 -271
  615. package/src/components/off-canvas-editor/leaf-more-menu.js +0 -157
  616. package/src/components/off-canvas-editor/leaf.js +0 -52
  617. package/src/components/off-canvas-editor/link-ui.js +0 -167
  618. package/src/components/off-canvas-editor/style.scss +0 -34
  619. package/src/components/off-canvas-editor/test/use-inserted-block.js +0 -108
  620. package/src/components/off-canvas-editor/test/utils.js +0 -50
  621. package/src/components/off-canvas-editor/update-attributes.js +0 -99
  622. package/src/components/off-canvas-editor/use-block-selection.js +0 -169
  623. package/src/components/off-canvas-editor/use-inserted-block.js +0 -47
  624. package/src/components/off-canvas-editor/use-list-view-client-ids.js +0 -29
  625. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +0 -260
  626. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +0 -58
  627. package/src/components/off-canvas-editor/utils.js +0 -58
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.orderInserterBlockItems = void 0;
7
+
8
+ /** @typedef {import('../store/selectors').WPEditorInserterItem} WPEditorInserterItem */
9
+
10
+ /**
11
+ * Helper function to order inserter block items according to a provided array of prioritized blocks.
12
+ *
13
+ * @param {WPEditorInserterItem[]} items The array of editor inserter block items to be sorted.
14
+ * @param {string[]} priority The array of block names to be prioritized.
15
+ * @return {WPEditorInserterItem[]} The sorted array of editor inserter block items.
16
+ */
17
+ const orderInserterBlockItems = (items, priority) => {
18
+ if (!priority) {
19
+ return items;
20
+ }
21
+
22
+ items.sort((_ref, _ref2) => {
23
+ let {
24
+ id: aName
25
+ } = _ref;
26
+ let {
27
+ id: bName
28
+ } = _ref2;
29
+ // Sort block items according to `priority`.
30
+ let aIndex = priority.indexOf(aName);
31
+ let bIndex = priority.indexOf(bName); // All other block items should come after that.
32
+
33
+ if (aIndex < 0) aIndex = priority.length;
34
+ if (bIndex < 0) bIndex = priority.length;
35
+ return aIndex - bIndex;
36
+ });
37
+ return items;
38
+ };
39
+
40
+ exports.orderInserterBlockItems = orderInserterBlockItems;
41
+ //# sourceMappingURL=order-inserter-block-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/utils/order-inserter-block-items.js"],"names":["orderInserterBlockItems","items","priority","sort","id","aName","bName","aIndex","indexOf","bIndex","length"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,uBAAuB,GAAG,CAAEC,KAAF,EAASC,QAAT,KAAuB;AAC7D,MAAK,CAAEA,QAAP,EAAkB;AACjB,WAAOD,KAAP;AACA;;AAEDA,EAAAA,KAAK,CAACE,IAAN,CAAY,iBAAoC;AAAA,QAAlC;AAAEC,MAAAA,EAAE,EAAEC;AAAN,KAAkC;AAAA,QAAnB;AAAED,MAAAA,EAAE,EAAEE;AAAN,KAAmB;AAC/C;AACA,QAAIC,MAAM,GAAGL,QAAQ,CAACM,OAAT,CAAkBH,KAAlB,CAAb;AACA,QAAII,MAAM,GAAGP,QAAQ,CAACM,OAAT,CAAkBF,KAAlB,CAAb,CAH+C,CAI/C;;AACA,QAAKC,MAAM,GAAG,CAAd,EAAkBA,MAAM,GAAGL,QAAQ,CAACQ,MAAlB;AAClB,QAAKD,MAAM,GAAG,CAAd,EAAkBA,MAAM,GAAGP,QAAQ,CAACQ,MAAlB;AAClB,WAAOH,MAAM,GAAGE,MAAhB;AACA,GARD;AAUA,SAAOR,KAAP;AACA,CAhBM","sourcesContent":["/** @typedef {import('../store/selectors').WPEditorInserterItem} WPEditorInserterItem */\n\n/**\n * Helper function to order inserter block items according to a provided array of prioritized blocks.\n *\n * @param {WPEditorInserterItem[]} items The array of editor inserter block items to be sorted.\n * @param {string[]} priority The array of block names to be prioritized.\n * @return {WPEditorInserterItem[]} The sorted array of editor inserter block items.\n */\nexport const orderInserterBlockItems = ( items, priority ) => {\n\tif ( ! priority ) {\n\t\treturn items;\n\t}\n\n\titems.sort( ( { id: aName }, { id: bName } ) => {\n\t\t// Sort block items according to `priority`.\n\t\tlet aIndex = priority.indexOf( aName );\n\t\tlet bIndex = priority.indexOf( bName );\n\t\t// All other block items should come after that.\n\t\tif ( aIndex < 0 ) aIndex = priority.length;\n\t\tif ( bIndex < 0 ) bIndex = priority.length;\n\t\treturn aIndex - bIndex;\n\t} );\n\n\treturn items;\n};\n"]}
@@ -26,15 +26,14 @@ var _lockUnlock = require("../lock-unlock");
26
26
  /**
27
27
  * Returns true if the contextual block toolbar should show, or false if it should be hidden.
28
28
  *
29
- * @param {string} clientId The client ID of the block.
30
- *
31
29
  * @return {boolean} Whether the block toolbar is hidden.
32
30
  */
33
- function useShouldContextualToolbarShow(clientId) {
31
+ function useShouldContextualToolbarShow() {
34
32
  const isLargeViewport = (0, _compose.useViewportMatch)('medium');
35
33
  const {
36
34
  shouldShowContextualToolbar,
37
- canFocusHiddenToolbar
35
+ canFocusHiddenToolbar,
36
+ fixedToolbarCanBeFocused
38
37
  } = (0, _data.useSelect)(select => {
39
38
  const {
40
39
  __unstableGetEditorMode,
@@ -43,26 +42,31 @@ function useShouldContextualToolbarShow(clientId) {
43
42
  isBlockInterfaceHidden,
44
43
  getBlock,
45
44
  getSettings,
46
- isNavigationMode
45
+ isNavigationMode,
46
+ getSelectedBlockClientId,
47
+ getFirstMultiSelectedBlockClientId
47
48
  } = (0, _lockUnlock.unlock)(select(_store.store));
48
49
  const isEditMode = __unstableGetEditorMode() === 'edit';
49
50
  const hasFixedToolbar = getSettings().hasFixedToolbar;
50
51
  const isDistractionFree = getSettings().isDistractionFree;
51
- const hasClientId = !!clientId;
52
- const isEmptyDefaultBlock = (0, _blocks.isUnmodifiedDefaultBlock)(getBlock(clientId) || {});
52
+ const selectedBlockId = getFirstMultiSelectedBlockClientId() || getSelectedBlockClientId();
53
+ const hasSelectedBlockId = !!selectedBlockId;
54
+ const isEmptyDefaultBlock = (0, _blocks.isUnmodifiedDefaultBlock)(getBlock(selectedBlockId) || {});
53
55
 
54
- const _shouldShowContextualToolbar = isEditMode && !hasFixedToolbar && (!isDistractionFree || isNavigationMode()) && isLargeViewport && !isMultiSelecting() && !isTyping() && hasClientId && !isEmptyDefaultBlock && !isBlockInterfaceHidden();
56
+ const _shouldShowContextualToolbar = isEditMode && !hasFixedToolbar && (!isDistractionFree || isNavigationMode()) && isLargeViewport && !isMultiSelecting() && !isTyping() && hasSelectedBlockId && !isEmptyDefaultBlock && !isBlockInterfaceHidden();
55
57
 
56
- const _canFocusHiddenToolbar = isEditMode && hasClientId && !_shouldShowContextualToolbar && !hasFixedToolbar && !isDistractionFree && !isEmptyDefaultBlock;
58
+ const _canFocusHiddenToolbar = isEditMode && hasSelectedBlockId && !_shouldShowContextualToolbar && !hasFixedToolbar && !isDistractionFree && !isEmptyDefaultBlock;
57
59
 
58
60
  return {
59
61
  shouldShowContextualToolbar: _shouldShowContextualToolbar,
60
- canFocusHiddenToolbar: _canFocusHiddenToolbar
62
+ canFocusHiddenToolbar: _canFocusHiddenToolbar,
63
+ fixedToolbarCanBeFocused: (hasFixedToolbar || !isLargeViewport) && selectedBlockId
61
64
  };
62
- }, [clientId, isLargeViewport]);
65
+ }, [isLargeViewport]);
63
66
  return {
64
67
  shouldShowContextualToolbar,
65
- canFocusHiddenToolbar
68
+ canFocusHiddenToolbar,
69
+ fixedToolbarCanBeFocused
66
70
  };
67
71
  }
68
72
  //# sourceMappingURL=use-should-contextual-toolbar-show.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/utils/use-should-contextual-toolbar-show.js"],"names":["useShouldContextualToolbarShow","clientId","isLargeViewport","shouldShowContextualToolbar","canFocusHiddenToolbar","select","__unstableGetEditorMode","isMultiSelecting","isTyping","isBlockInterfaceHidden","getBlock","getSettings","isNavigationMode","blockEditorStore","isEditMode","hasFixedToolbar","isDistractionFree","hasClientId","isEmptyDefaultBlock","_shouldShowContextualToolbar","_canFocusHiddenToolbar"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AAKA;;AACA;;AAXA;AACA;AACA;;AAKA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,8BAAT,CAAyCC,QAAzC,EAAoD;AAC1D,QAAMC,eAAe,GAAG,+BAAkB,QAAlB,CAAxB;AAEA,QAAM;AAAEC,IAAAA,2BAAF;AAA+BC,IAAAA;AAA/B,MAAyD,qBAC5DC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,uBADK;AAELC,MAAAA,gBAFK;AAGLC,MAAAA,QAHK;AAILC,MAAAA,sBAJK;AAKLC,MAAAA,QALK;AAMLC,MAAAA,WANK;AAOLC,MAAAA;AAPK,QAQF,wBAAQP,MAAM,CAAEQ,YAAF,CAAd,CARJ;AAUA,UAAMC,UAAU,GAAGR,uBAAuB,OAAO,MAAjD;AACA,UAAMS,eAAe,GAAGJ,WAAW,GAAGI,eAAtC;AACA,UAAMC,iBAAiB,GAAGL,WAAW,GAAGK,iBAAxC;AACA,UAAMC,WAAW,GAAG,CAAC,CAAEhB,QAAvB;AACA,UAAMiB,mBAAmB,GAAG,sCAC3BR,QAAQ,CAAET,QAAF,CAAR,IAAwB,EADG,CAA5B;;AAIA,UAAMkB,4BAA4B,GACjCL,UAAU,IACV,CAAEC,eADF,KAEE,CAAEC,iBAAF,IAAuBJ,gBAAgB,EAFzC,KAGAV,eAHA,IAIA,CAAEK,gBAAgB,EAJlB,IAKA,CAAEC,QAAQ,EALV,IAMAS,WANA,IAOA,CAAEC,mBAPF,IAQA,CAAET,sBAAsB,EATzB;;AAWA,UAAMW,sBAAsB,GAC3BN,UAAU,IACVG,WADA,IAEA,CAAEE,4BAFF,IAGA,CAAEJ,eAHF,IAIA,CAAEC,iBAJF,IAKA,CAAEE,mBANH;;AAQA,WAAO;AACNf,MAAAA,2BAA2B,EAAEgB,4BADvB;AAENf,MAAAA,qBAAqB,EAAEgB;AAFjB,KAAP;AAIA,GA3C6D,EA4C9D,CAAEnB,QAAF,EAAYC,eAAZ,CA5C8D,CAA/D;AA+CA,SAAO;AACNC,IAAAA,2BADM;AAENC,IAAAA;AAFM,GAAP;AAIA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Returns true if the contextual block toolbar should show, or false if it should be hidden.\n *\n * @param {string} clientId The client ID of the block.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function useShouldContextualToolbarShow( clientId ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\n\tconst { shouldShowContextualToolbar, canFocusHiddenToolbar } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tisMultiSelecting,\n\t\t\t\tisTyping,\n\t\t\t\tisBlockInterfaceHidden,\n\t\t\t\tgetBlock,\n\t\t\t\tgetSettings,\n\t\t\t\tisNavigationMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst isEditMode = __unstableGetEditorMode() === 'edit';\n\t\t\tconst hasFixedToolbar = getSettings().hasFixedToolbar;\n\t\t\tconst isDistractionFree = getSettings().isDistractionFree;\n\t\t\tconst hasClientId = !! clientId;\n\t\t\tconst isEmptyDefaultBlock = isUnmodifiedDefaultBlock(\n\t\t\t\tgetBlock( clientId ) || {}\n\t\t\t);\n\n\t\t\tconst _shouldShowContextualToolbar =\n\t\t\t\tisEditMode &&\n\t\t\t\t! hasFixedToolbar &&\n\t\t\t\t( ! isDistractionFree || isNavigationMode() ) &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\t! isMultiSelecting() &&\n\t\t\t\t! isTyping() &&\n\t\t\t\thasClientId &&\n\t\t\t\t! isEmptyDefaultBlock &&\n\t\t\t\t! isBlockInterfaceHidden();\n\n\t\t\tconst _canFocusHiddenToolbar =\n\t\t\t\tisEditMode &&\n\t\t\t\thasClientId &&\n\t\t\t\t! _shouldShowContextualToolbar &&\n\t\t\t\t! hasFixedToolbar &&\n\t\t\t\t! isDistractionFree &&\n\t\t\t\t! isEmptyDefaultBlock;\n\n\t\t\treturn {\n\t\t\t\tshouldShowContextualToolbar: _shouldShowContextualToolbar,\n\t\t\t\tcanFocusHiddenToolbar: _canFocusHiddenToolbar,\n\t\t\t};\n\t\t},\n\t\t[ clientId, isLargeViewport ]\n\t);\n\n\treturn {\n\t\tshouldShowContextualToolbar,\n\t\tcanFocusHiddenToolbar,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/utils/use-should-contextual-toolbar-show.js"],"names":["useShouldContextualToolbarShow","isLargeViewport","shouldShowContextualToolbar","canFocusHiddenToolbar","fixedToolbarCanBeFocused","select","__unstableGetEditorMode","isMultiSelecting","isTyping","isBlockInterfaceHidden","getBlock","getSettings","isNavigationMode","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","blockEditorStore","isEditMode","hasFixedToolbar","isDistractionFree","selectedBlockId","hasSelectedBlockId","isEmptyDefaultBlock","_shouldShowContextualToolbar","_canFocusHiddenToolbar"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AAKA;;AACA;;AAXA;AACA;AACA;;AAKA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASA,8BAAT,GAA0C;AAChD,QAAMC,eAAe,GAAG,+BAAkB,QAAlB,CAAxB;AAEA,QAAM;AACLC,IAAAA,2BADK;AAELC,IAAAA,qBAFK;AAGLC,IAAAA;AAHK,MAIF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,uBADK;AAELC,MAAAA,gBAFK;AAGLC,MAAAA,QAHK;AAILC,MAAAA,sBAJK;AAKLC,MAAAA,QALK;AAMLC,MAAAA,WANK;AAOLC,MAAAA,gBAPK;AAQLC,MAAAA,wBARK;AASLC,MAAAA;AATK,QAUF,wBAAQT,MAAM,CAAEU,YAAF,CAAd,CAVJ;AAYA,UAAMC,UAAU,GAAGV,uBAAuB,OAAO,MAAjD;AACA,UAAMW,eAAe,GAAGN,WAAW,GAAGM,eAAtC;AACA,UAAMC,iBAAiB,GAAGP,WAAW,GAAGO,iBAAxC;AACA,UAAMC,eAAe,GACpBL,kCAAkC,MAClCD,wBAAwB,EAFzB;AAGA,UAAMO,kBAAkB,GAAG,CAAC,CAAED,eAA9B;AACA,UAAME,mBAAmB,GAAG,sCAC3BX,QAAQ,CAAES,eAAF,CAAR,IAA+B,EADJ,CAA5B;;AAIA,UAAMG,4BAA4B,GACjCN,UAAU,IACV,CAAEC,eADF,KAEE,CAAEC,iBAAF,IAAuBN,gBAAgB,EAFzC,KAGAX,eAHA,IAIA,CAAEM,gBAAgB,EAJlB,IAKA,CAAEC,QAAQ,EALV,IAMAY,kBANA,IAOA,CAAEC,mBAPF,IAQA,CAAEZ,sBAAsB,EATzB;;AAWA,UAAMc,sBAAsB,GAC3BP,UAAU,IACVI,kBADA,IAEA,CAAEE,4BAFF,IAGA,CAAEL,eAHF,IAIA,CAAEC,iBAJF,IAKA,CAAEG,mBANH;;AAQA,WAAO;AACNnB,MAAAA,2BAA2B,EAAEoB,4BADvB;AAENnB,MAAAA,qBAAqB,EAAEoB,sBAFjB;AAGNnB,MAAAA,wBAAwB,EACvB,CAAEa,eAAe,IAAI,CAAEhB,eAAvB,KAA4CkB;AAJvC,KAAP;AAMA,GAlDE,EAmDH,CAAElB,eAAF,CAnDG,CAJJ;AA0DA,SAAO;AACNC,IAAAA,2BADM;AAENC,IAAAA,qBAFM;AAGNC,IAAAA;AAHM,GAAP;AAKA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Returns true if the contextual block toolbar should show, or false if it should be hidden.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function useShouldContextualToolbarShow() {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\n\tconst {\n\t\tshouldShowContextualToolbar,\n\t\tcanFocusHiddenToolbar,\n\t\tfixedToolbarCanBeFocused,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tisMultiSelecting,\n\t\t\t\tisTyping,\n\t\t\t\tisBlockInterfaceHidden,\n\t\t\t\tgetBlock,\n\t\t\t\tgetSettings,\n\t\t\t\tisNavigationMode,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetFirstMultiSelectedBlockClientId,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst isEditMode = __unstableGetEditorMode() === 'edit';\n\t\t\tconst hasFixedToolbar = getSettings().hasFixedToolbar;\n\t\t\tconst isDistractionFree = getSettings().isDistractionFree;\n\t\t\tconst selectedBlockId =\n\t\t\t\tgetFirstMultiSelectedBlockClientId() ||\n\t\t\t\tgetSelectedBlockClientId();\n\t\t\tconst hasSelectedBlockId = !! selectedBlockId;\n\t\t\tconst isEmptyDefaultBlock = isUnmodifiedDefaultBlock(\n\t\t\t\tgetBlock( selectedBlockId ) || {}\n\t\t\t);\n\n\t\t\tconst _shouldShowContextualToolbar =\n\t\t\t\tisEditMode &&\n\t\t\t\t! hasFixedToolbar &&\n\t\t\t\t( ! isDistractionFree || isNavigationMode() ) &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\t! isMultiSelecting() &&\n\t\t\t\t! isTyping() &&\n\t\t\t\thasSelectedBlockId &&\n\t\t\t\t! isEmptyDefaultBlock &&\n\t\t\t\t! isBlockInterfaceHidden();\n\n\t\t\tconst _canFocusHiddenToolbar =\n\t\t\t\tisEditMode &&\n\t\t\t\thasSelectedBlockId &&\n\t\t\t\t! _shouldShowContextualToolbar &&\n\t\t\t\t! hasFixedToolbar &&\n\t\t\t\t! isDistractionFree &&\n\t\t\t\t! isEmptyDefaultBlock;\n\n\t\t\treturn {\n\t\t\t\tshouldShowContextualToolbar: _shouldShowContextualToolbar,\n\t\t\t\tcanFocusHiddenToolbar: _canFocusHiddenToolbar,\n\t\t\t\tfixedToolbarCanBeFocused:\n\t\t\t\t\t( hasFixedToolbar || ! isLargeViewport ) && selectedBlockId,\n\t\t\t};\n\t\t},\n\t\t[ isLargeViewport ]\n\t);\n\n\treturn {\n\t\tshouldShowContextualToolbar,\n\t\tcanFocusHiddenToolbar,\n\t\tfixedToolbarCanBeFocused,\n\t};\n}\n"]}
@@ -15,6 +15,7 @@ import useBlockTypesState from '../components/inserter/hooks/use-block-types-sta
15
15
  import BlockIcon from '../components/block-icon';
16
16
  import { store as blockEditorStore } from '../store';
17
17
  import { orderBy } from '../utils/sorting';
18
+ import { orderInserterBlockItems } from '../utils/order-inserter-block-items';
18
19
 
19
20
  const noop = () => {};
20
21
 
@@ -36,24 +37,30 @@ function createBlockCompleter() {
36
37
  useItems(filterValue) {
37
38
  const {
38
39
  rootClientId,
39
- selectedBlockName
40
+ selectedBlockName,
41
+ prioritizedBlocks
40
42
  } = useSelect(select => {
43
+ var _getBlockListSettings;
44
+
41
45
  const {
42
46
  getSelectedBlockClientId,
43
47
  getBlockName,
44
- getBlockInsertionPoint
48
+ getBlockInsertionPoint,
49
+ getBlockListSettings
45
50
  } = select(blockEditorStore);
46
51
  const selectedBlockClientId = getSelectedBlockClientId();
52
+ const _rootClientId = getBlockInsertionPoint().rootClientId;
47
53
  return {
48
54
  selectedBlockName: selectedBlockClientId ? getBlockName(selectedBlockClientId) : null,
49
- rootClientId: getBlockInsertionPoint().rootClientId
55
+ rootClientId: _rootClientId,
56
+ prioritizedBlocks: (_getBlockListSettings = getBlockListSettings(_rootClientId)) === null || _getBlockListSettings === void 0 ? void 0 : _getBlockListSettings.prioritizedInserterBlocks
50
57
  };
51
58
  }, []);
52
59
  const [items, categories, collections] = useBlockTypesState(rootClientId, noop);
53
60
  const filteredItems = useMemo(() => {
54
- const initialFilteredItems = !!filterValue.trim() ? searchBlockItems(items, categories, collections, filterValue) : orderBy(items, 'frecency', 'desc');
61
+ const initialFilteredItems = !!filterValue.trim() ? searchBlockItems(items, categories, collections, filterValue) : orderInserterBlockItems(orderBy(items, 'frecency', 'desc'), prioritizedBlocks);
55
62
  return initialFilteredItems.filter(item => item.name !== selectedBlockName).slice(0, SHOWN_BLOCK_TYPES);
56
- }, [filterValue, selectedBlockName, items, categories, collections]);
63
+ }, [filterValue, selectedBlockName, items, categories, collections, prioritizedBlocks]);
57
64
  const options = useMemo(() => filteredItems.map(blockItem => {
58
65
  const {
59
66
  title,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/autocompleters/block.js"],"names":["useSelect","createBlock","createBlocksFromInnerBlocksTemplate","useMemo","searchBlockItems","useBlockTypesState","BlockIcon","store","blockEditorStore","orderBy","noop","SHOWN_BLOCK_TYPES","createBlockCompleter","name","className","triggerPrefix","useItems","filterValue","rootClientId","selectedBlockName","select","getSelectedBlockClientId","getBlockName","getBlockInsertionPoint","selectedBlockClientId","items","categories","collections","filteredItems","initialFilteredItems","trim","filter","item","slice","options","map","blockItem","title","icon","isDisabled","key","id","value","label","allowContext","before","after","test","getOptionCompletion","inserterItem","initialAttributes","innerBlocks","action"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n} from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { searchBlockItems } from '../components/inserter/search-items';\nimport useBlockTypesState from '../components/inserter/hooks/use-block-types-state';\nimport BlockIcon from '../components/block-icon';\nimport { store as blockEditorStore } from '../store';\nimport { orderBy } from '../utils/sorting';\n\nconst noop = () => {};\nconst SHOWN_BLOCK_TYPES = 9;\n\n/** @typedef {import('@wordpress/components').WPCompleter} WPCompleter */\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nfunction createBlockCompleter() {\n\treturn {\n\t\tname: 'blocks',\n\t\tclassName: 'block-editor-autocompleters__block',\n\t\ttriggerPrefix: '/',\n\n\t\tuseItems( filterValue ) {\n\t\t\tconst { rootClientId, selectedBlockName } = useSelect(\n\t\t\t\t( select ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\t\t\tgetBlockName,\n\t\t\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\t\t} = select( blockEditorStore );\n\t\t\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\t\t\treturn {\n\t\t\t\t\t\tselectedBlockName: selectedBlockClientId\n\t\t\t\t\t\t\t? getBlockName( selectedBlockClientId )\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\trootClientId: getBlockInsertionPoint().rootClientId,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t[]\n\t\t\t);\n\t\t\tconst [ items, categories, collections ] = useBlockTypesState(\n\t\t\t\trootClientId,\n\t\t\t\tnoop\n\t\t\t);\n\n\t\t\tconst filteredItems = useMemo( () => {\n\t\t\t\tconst initialFilteredItems = !! filterValue.trim()\n\t\t\t\t\t? searchBlockItems(\n\t\t\t\t\t\t\titems,\n\t\t\t\t\t\t\tcategories,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tfilterValue\n\t\t\t\t\t )\n\t\t\t\t\t: orderBy( items, 'frecency', 'desc' );\n\n\t\t\t\treturn initialFilteredItems\n\t\t\t\t\t.filter( ( item ) => item.name !== selectedBlockName )\n\t\t\t\t\t.slice( 0, SHOWN_BLOCK_TYPES );\n\t\t\t}, [\n\t\t\t\tfilterValue,\n\t\t\t\tselectedBlockName,\n\t\t\t\titems,\n\t\t\t\tcategories,\n\t\t\t\tcollections,\n\t\t\t] );\n\n\t\t\tconst options = useMemo(\n\t\t\t\t() =>\n\t\t\t\t\tfilteredItems.map( ( blockItem ) => {\n\t\t\t\t\t\tconst { title, icon, isDisabled } = blockItem;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tkey: `block-${ blockItem.id }`,\n\t\t\t\t\t\t\tvalue: blockItem,\n\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\t\tkey=\"icon\"\n\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tisDisabled,\n\t\t\t\t\t\t};\n\t\t\t\t\t} ),\n\t\t\t\t[ filteredItems ]\n\t\t\t);\n\n\t\t\treturn [ options ];\n\t\t},\n\t\tallowContext( before, after ) {\n\t\t\treturn ! ( /\\S/.test( before ) || /\\S/.test( after ) );\n\t\t},\n\t\tgetOptionCompletion( inserterItem ) {\n\t\t\tconst { name, initialAttributes, innerBlocks } = inserterItem;\n\t\t\treturn {\n\t\t\t\taction: 'replace',\n\t\t\t\tvalue: createBlock(\n\t\t\t\t\tname,\n\t\t\t\t\tinitialAttributes,\n\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t};\n}\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nexport default createBlockCompleter();\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/autocompleters/block.js"],"names":["useSelect","createBlock","createBlocksFromInnerBlocksTemplate","useMemo","searchBlockItems","useBlockTypesState","BlockIcon","store","blockEditorStore","orderBy","orderInserterBlockItems","noop","SHOWN_BLOCK_TYPES","createBlockCompleter","name","className","triggerPrefix","useItems","filterValue","rootClientId","selectedBlockName","prioritizedBlocks","select","getSelectedBlockClientId","getBlockName","getBlockInsertionPoint","getBlockListSettings","selectedBlockClientId","_rootClientId","prioritizedInserterBlocks","items","categories","collections","filteredItems","initialFilteredItems","trim","filter","item","slice","options","map","blockItem","title","icon","isDisabled","key","id","value","label","allowContext","before","after","test","getOptionCompletion","inserterItem","initialAttributes","innerBlocks","action"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n} from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { searchBlockItems } from '../components/inserter/search-items';\nimport useBlockTypesState from '../components/inserter/hooks/use-block-types-state';\nimport BlockIcon from '../components/block-icon';\nimport { store as blockEditorStore } from '../store';\nimport { orderBy } from '../utils/sorting';\nimport { orderInserterBlockItems } from '../utils/order-inserter-block-items';\n\nconst noop = () => {};\nconst SHOWN_BLOCK_TYPES = 9;\n\n/** @typedef {import('@wordpress/components').WPCompleter} WPCompleter */\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nfunction createBlockCompleter() {\n\treturn {\n\t\tname: 'blocks',\n\t\tclassName: 'block-editor-autocompleters__block',\n\t\ttriggerPrefix: '/',\n\n\t\tuseItems( filterValue ) {\n\t\t\tconst { rootClientId, selectedBlockName, prioritizedBlocks } =\n\t\t\t\tuseSelect( ( select ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\t\t\tgetBlockName,\n\t\t\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\t\t\tgetBlockListSettings,\n\t\t\t\t\t} = select( blockEditorStore );\n\t\t\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\t\t\tconst _rootClientId = getBlockInsertionPoint().rootClientId;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tselectedBlockName: selectedBlockClientId\n\t\t\t\t\t\t\t? getBlockName( selectedBlockClientId )\n\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\tprioritizedBlocks:\n\t\t\t\t\t\t\tgetBlockListSettings( _rootClientId )\n\t\t\t\t\t\t\t\t?.prioritizedInserterBlocks,\n\t\t\t\t\t};\n\t\t\t\t}, [] );\n\t\t\tconst [ items, categories, collections ] = useBlockTypesState(\n\t\t\t\trootClientId,\n\t\t\t\tnoop\n\t\t\t);\n\n\t\t\tconst filteredItems = useMemo( () => {\n\t\t\t\tconst initialFilteredItems = !! filterValue.trim()\n\t\t\t\t\t? searchBlockItems(\n\t\t\t\t\t\t\titems,\n\t\t\t\t\t\t\tcategories,\n\t\t\t\t\t\t\tcollections,\n\t\t\t\t\t\t\tfilterValue\n\t\t\t\t\t )\n\t\t\t\t\t: orderInserterBlockItems(\n\t\t\t\t\t\t\torderBy( items, 'frecency', 'desc' ),\n\t\t\t\t\t\t\tprioritizedBlocks\n\t\t\t\t\t );\n\n\t\t\t\treturn initialFilteredItems\n\t\t\t\t\t.filter( ( item ) => item.name !== selectedBlockName )\n\t\t\t\t\t.slice( 0, SHOWN_BLOCK_TYPES );\n\t\t\t}, [\n\t\t\t\tfilterValue,\n\t\t\t\tselectedBlockName,\n\t\t\t\titems,\n\t\t\t\tcategories,\n\t\t\t\tcollections,\n\t\t\t\tprioritizedBlocks,\n\t\t\t] );\n\n\t\t\tconst options = useMemo(\n\t\t\t\t() =>\n\t\t\t\t\tfilteredItems.map( ( blockItem ) => {\n\t\t\t\t\t\tconst { title, icon, isDisabled } = blockItem;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tkey: `block-${ blockItem.id }`,\n\t\t\t\t\t\t\tvalue: blockItem,\n\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\t\tkey=\"icon\"\n\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tisDisabled,\n\t\t\t\t\t\t};\n\t\t\t\t\t} ),\n\t\t\t\t[ filteredItems ]\n\t\t\t);\n\n\t\t\treturn [ options ];\n\t\t},\n\t\tallowContext( before, after ) {\n\t\t\treturn ! ( /\\S/.test( before ) || /\\S/.test( after ) );\n\t\t},\n\t\tgetOptionCompletion( inserterItem ) {\n\t\t\tconst { name, initialAttributes, innerBlocks } = inserterItem;\n\t\t\treturn {\n\t\t\t\taction: 'replace',\n\t\t\t\tvalue: createBlock(\n\t\t\t\t\tname,\n\t\t\t\t\tinitialAttributes,\n\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t};\n}\n\n/**\n * Creates a blocks repeater for replacing the current block with a selected block type.\n *\n * @return {WPCompleter} A blocks completer.\n */\nexport default createBlockCompleter();\n"]}
@@ -13,6 +13,7 @@ import { chevronRightSmall, Icon } from '@wordpress/icons';
13
13
 
14
14
  import BlockTitle from '../block-title';
15
15
  import { store as blockEditorStore } from '../../store';
16
+ import { unlock } from '../../lock-unlock';
16
17
  /**
17
18
  * Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.
18
19
  *
@@ -37,11 +38,12 @@ function BlockBreadcrumb(_ref) {
37
38
  const {
38
39
  getSelectionStart,
39
40
  getSelectedBlockClientId,
40
- getBlockParents
41
- } = select(blockEditorStore);
41
+ getBlockParents,
42
+ getBlockEditingMode
43
+ } = unlock(select(blockEditorStore));
42
44
  const selectedBlockClientId = getSelectedBlockClientId();
43
45
  return {
44
- parents: getBlockParents(selectedBlockClientId),
46
+ parents: getBlockParents(selectedBlockClientId).filter(parentClientId => getBlockEditingMode(parentClientId) !== 'disabled'),
45
47
  clientId: selectedBlockClientId,
46
48
  hasSelection: !!getSelectionStart().clientId
47
49
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-breadcrumb/index.js"],"names":["Button","useSelect","useDispatch","__","chevronRightSmall","Icon","BlockTitle","store","blockEditorStore","BlockBreadcrumb","rootLabelText","selectBlock","clearSelectedBlock","clientId","parents","hasSelection","select","getSelectionStart","getSelectedBlockClientId","getBlockParents","selectedBlockClientId","rootLabel","undefined","map","parentClientId"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,QAAuB,uBAAvB;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,iBAAT,EAA4BC,IAA5B,QAAwC,kBAAxC;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,eAAT,OAA8C;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAC7C,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAsCV,WAAW,CAAEM,gBAAF,CAAvD;AACA,QAAM;AAAEK,IAAAA,QAAF;AAAYC,IAAAA,OAAZ;AAAqBC,IAAAA;AAArB,MAAsCd,SAAS,CAAIe,MAAF,IAAc;AACpE,UAAM;AAAEC,MAAAA,iBAAF;AAAqBC,MAAAA,wBAArB;AAA+CC,MAAAA;AAA/C,QACLH,MAAM,CAAER,gBAAF,CADP;AAEA,UAAMY,qBAAqB,GAAGF,wBAAwB,EAAtD;AACA,WAAO;AACNJ,MAAAA,OAAO,EAAEK,eAAe,CAAEC,qBAAF,CADlB;AAENP,MAAAA,QAAQ,EAAEO,qBAFJ;AAGNL,MAAAA,YAAY,EAAE,CAAC,CAAEE,iBAAiB,GAAGJ;AAH/B,KAAP;AAKA,GAToD,EASlD,EATkD,CAArD;;AAUA,QAAMQ,SAAS,GAAGX,aAAa,IAAIP,EAAE,CAAE,UAAF,CAArC;AAEA;AACD;AACA;AACA;;AACC;;;AACA,SACC;AACC,IAAA,SAAS,EAAC,+BADX;AAEC,IAAA,IAAI,EAAC,MAFN;AAGC,kBAAaA,EAAE,CAAE,kBAAF;AAHhB,KAKC;AACC,IAAA,SAAS,EACR,CAAEY,YAAF,GACG,wCADH,GAEGO,SAJL;AAMC,oBAAe,CAAEP,YAAF,GAAiB,MAAjB,GAA0BO;AAN1C,KAQGP,YAAY,IACb,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAGH;AAHX,KAKGS,SALH,CATF,EAiBG,CAAEN,YAAF,IAAkBM,SAjBrB,EAkBG,CAAC,CAAER,QAAH,IACD,cAAC,IAAD;AACC,IAAA,IAAI,EAAGT,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAnBF,CALD,EA+BGU,OAAO,CAACS,GAAR,CAAeC,cAAF,IACd;AAAI,IAAA,GAAG,EAAGA;AAAV,KACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAG,MAAMb,WAAW,CAAEa,cAAF;AAH5B,KAKC,cAAC,UAAD;AACC,IAAA,QAAQ,EAAGA,cADZ;AAEC,IAAA,aAAa,EAAG;AAFjB,IALD,CADD,EAWC,cAAC,IAAD;AACC,IAAA,IAAI,EAAGpB,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAXD,CADC,CA/BH,EAiDG,CAAC,CAAES,QAAH,IACD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,oBAAa;AAFd,KAIC,cAAC,UAAD;AAAY,IAAA,QAAQ,EAAGA,QAAvB;AAAkC,IAAA,aAAa,EAAG;AAAlD,IAJD,CAlDF;AA0DA;AA3DD;AA6DA;;AAED,eAAeJ,eAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { chevronRightSmall, Icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.\n *\n * @param {Object} props Component props.\n * @param {string} props.rootLabelText Translated label for the root element of the breadcrumb trail.\n * @return {WPElement} Block Breadcrumb.\n */\nfunction BlockBreadcrumb( { rootLabelText } ) {\n\tconst { selectBlock, clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { clientId, parents, hasSelection } = useSelect( ( select ) => {\n\t\tconst { getSelectionStart, getSelectedBlockClientId, getBlockParents } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\treturn {\n\t\t\tparents: getBlockParents( selectedBlockClientId ),\n\t\t\tclientId: selectedBlockClientId,\n\t\t\thasSelection: !! getSelectionStart().clientId,\n\t\t};\n\t}, [] );\n\tconst rootLabel = rootLabelText || __( 'Document' );\n\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\treturn (\n\t\t<ul\n\t\t\tclassName=\"block-editor-block-breadcrumb\"\n\t\t\trole=\"list\"\n\t\t\taria-label={ __( 'Block breadcrumb' ) }\n\t\t>\n\t\t\t<li\n\t\t\t\tclassName={\n\t\t\t\t\t! hasSelection\n\t\t\t\t\t\t? 'block-editor-block-breadcrumb__current'\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\taria-current={ ! hasSelection ? 'true' : undefined }\n\t\t\t>\n\t\t\t\t{ hasSelection && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ clearSelectedBlock }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ rootLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t{ ! hasSelection && rootLabel }\n\t\t\t\t{ !! clientId && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</li>\n\n\t\t\t{ parents.map( ( parentClientId ) => (\n\t\t\t\t<li key={ parentClientId }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => selectBlock( parentClientId ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\tclientId={ parentClientId }\n\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t\t{ !! clientId && (\n\t\t\t\t<li\n\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__current\"\n\t\t\t\t\taria-current=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<BlockTitle clientId={ clientId } maximumLength={ 35 } />\n\t\t\t\t</li>\n\t\t\t) }\n\t\t</ul>\n\t\t/* eslint-enable jsx-a11y/no-redundant-roles */\n\t);\n}\n\nexport default BlockBreadcrumb;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-breadcrumb/index.js"],"names":["Button","useSelect","useDispatch","__","chevronRightSmall","Icon","BlockTitle","store","blockEditorStore","unlock","BlockBreadcrumb","rootLabelText","selectBlock","clearSelectedBlock","clientId","parents","hasSelection","select","getSelectionStart","getSelectedBlockClientId","getBlockParents","getBlockEditingMode","selectedBlockClientId","filter","parentClientId","rootLabel","undefined","map"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,QAAuB,uBAAvB;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,iBAAT,EAA4BC,IAA5B,QAAwC,kBAAxC;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,eAAT,OAA8C;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAC7C,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MAAsCX,WAAW,CAAEM,gBAAF,CAAvD;AACA,QAAM;AAAEM,IAAAA,QAAF;AAAYC,IAAAA,OAAZ;AAAqBC,IAAAA;AAArB,MAAsCf,SAAS,CAAIgB,MAAF,IAAc;AACpE,UAAM;AACLC,MAAAA,iBADK;AAELC,MAAAA,wBAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA;AAJK,QAKFZ,MAAM,CAAEQ,MAAM,CAAET,gBAAF,CAAR,CALV;AAMA,UAAMc,qBAAqB,GAAGH,wBAAwB,EAAtD;AACA,WAAO;AACNJ,MAAAA,OAAO,EAAEK,eAAe,CAAEE,qBAAF,CAAf,CAAyCC,MAAzC,CACNC,cAAF,IACCH,mBAAmB,CAAEG,cAAF,CAAnB,KAA0C,UAFnC,CADH;AAKNV,MAAAA,QAAQ,EAAEQ,qBALJ;AAMNN,MAAAA,YAAY,EAAE,CAAC,CAAEE,iBAAiB,GAAGJ;AAN/B,KAAP;AAQA,GAhBoD,EAgBlD,EAhBkD,CAArD;;AAiBA,QAAMW,SAAS,GAAGd,aAAa,IAAIR,EAAE,CAAE,UAAF,CAArC;AAEA;AACD;AACA;AACA;;AACC;;;AACA,SACC;AACC,IAAA,SAAS,EAAC,+BADX;AAEC,IAAA,IAAI,EAAC,MAFN;AAGC,kBAAaA,EAAE,CAAE,kBAAF;AAHhB,KAKC;AACC,IAAA,SAAS,EACR,CAAEa,YAAF,GACG,wCADH,GAEGU,SAJL;AAMC,oBAAe,CAAEV,YAAF,GAAiB,MAAjB,GAA0BU;AAN1C,KAQGV,YAAY,IACb,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAGH;AAHX,KAKGY,SALH,CATF,EAiBG,CAAET,YAAF,IAAkBS,SAjBrB,EAkBG,CAAC,CAAEX,QAAH,IACD,cAAC,IAAD;AACC,IAAA,IAAI,EAAGV,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAnBF,CALD,EA+BGW,OAAO,CAACY,GAAR,CAAeH,cAAF,IACd;AAAI,IAAA,GAAG,EAAGA;AAAV,KACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,uCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,OAAO,EAAG,MAAMZ,WAAW,CAAEY,cAAF;AAH5B,KAKC,cAAC,UAAD;AACC,IAAA,QAAQ,EAAGA,cADZ;AAEC,IAAA,aAAa,EAAG;AAFjB,IALD,CADD,EAWC,cAAC,IAAD;AACC,IAAA,IAAI,EAAGpB,iBADR;AAEC,IAAA,SAAS,EAAC;AAFX,IAXD,CADC,CA/BH,EAiDG,CAAC,CAAEU,QAAH,IACD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,oBAAa;AAFd,KAIC,cAAC,UAAD;AAAY,IAAA,QAAQ,EAAGA,QAAvB;AAAkC,IAAA,aAAa,EAAG;AAAlD,IAJD,CAlDF;AA0DA;AA3DD;AA6DA;;AAED,eAAeJ,eAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { chevronRightSmall, Icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockTitle from '../block-title';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.\n *\n * @param {Object} props Component props.\n * @param {string} props.rootLabelText Translated label for the root element of the breadcrumb trail.\n * @return {WPElement} Block Breadcrumb.\n */\nfunction BlockBreadcrumb( { rootLabelText } ) {\n\tconst { selectBlock, clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { clientId, parents, hasSelection } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetBlockParents,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\treturn {\n\t\t\tparents: getBlockParents( selectedBlockClientId ).filter(\n\t\t\t\t( parentClientId ) =>\n\t\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled'\n\t\t\t),\n\t\t\tclientId: selectedBlockClientId,\n\t\t\thasSelection: !! getSelectionStart().clientId,\n\t\t};\n\t}, [] );\n\tconst rootLabel = rootLabelText || __( 'Document' );\n\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\treturn (\n\t\t<ul\n\t\t\tclassName=\"block-editor-block-breadcrumb\"\n\t\t\trole=\"list\"\n\t\t\taria-label={ __( 'Block breadcrumb' ) }\n\t\t>\n\t\t\t<li\n\t\t\t\tclassName={\n\t\t\t\t\t! hasSelection\n\t\t\t\t\t\t? 'block-editor-block-breadcrumb__current'\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\taria-current={ ! hasSelection ? 'true' : undefined }\n\t\t\t>\n\t\t\t\t{ hasSelection && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ clearSelectedBlock }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ rootLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t{ ! hasSelection && rootLabel }\n\t\t\t\t{ !! clientId && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</li>\n\n\t\t\t{ parents.map( ( parentClientId ) => (\n\t\t\t\t<li key={ parentClientId }>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => selectBlock( parentClientId ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\tclientId={ parentClientId }\n\t\t\t\t\t\t\tmaximumLength={ 35 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ chevronRightSmall }\n\t\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__separator\"\n\t\t\t\t\t/>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t\t{ !! clientId && (\n\t\t\t\t<li\n\t\t\t\t\tclassName=\"block-editor-block-breadcrumb__current\"\n\t\t\t\t\taria-current=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<BlockTitle clientId={ clientId } maximumLength={ 35 } />\n\t\t\t\t</li>\n\t\t\t) }\n\t\t</ul>\n\t\t/* eslint-enable jsx-a11y/no-redundant-roles */\n\t);\n}\n\nexport default BlockBreadcrumb;\n"]}
@@ -6,22 +6,29 @@ import { createElement } from "@wordpress/element";
6
6
  */
7
7
  import { useContext } from '@wordpress/element';
8
8
  import { __experimentalToolbarContext as ToolbarContext, ToolbarGroup, __experimentalUseSlotFills as useSlotFills } from '@wordpress/components';
9
+ import warning from '@wordpress/warning';
9
10
  /**
10
11
  * Internal dependencies
11
12
  */
12
13
 
13
14
  import groups from './groups';
14
15
  export default function BlockControlsSlot(_ref) {
16
+ var _groups$group;
17
+
15
18
  let {
16
19
  group = 'default',
17
20
  ...props
18
21
  } = _ref;
19
22
  const accessibleToolbarState = useContext(ToolbarContext);
20
- const Slot = groups[group].Slot;
21
- const fills = useSlotFills(Slot.__unstableName);
22
- const hasFills = Boolean(fills && fills.length);
23
+ const Slot = (_groups$group = groups[group]) === null || _groups$group === void 0 ? void 0 : _groups$group.Slot;
24
+ const fills = useSlotFills(Slot === null || Slot === void 0 ? void 0 : Slot.__unstableName);
25
+
26
+ if (!Slot) {
27
+ typeof process !== "undefined" && process.env && process.env.NODE_ENV !== "production" ? warning(`Unknown BlockControls group "${group}" provided.`) : void 0;
28
+ return null;
29
+ }
23
30
 
24
- if (!hasFills) {
31
+ if (!(fills !== null && fills !== void 0 && fills.length)) {
25
32
  return null;
26
33
  }
27
34
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-controls/slot.js"],"names":["useContext","__experimentalToolbarContext","ToolbarContext","ToolbarGroup","__experimentalUseSlotFills","useSlotFills","groups","BlockControlsSlot","group","props","accessibleToolbarState","Slot","fills","__unstableName","hasFills","Boolean","length"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,oBAA3B;AACA,SACCC,4BAA4B,IAAIC,cADjC,EAECC,YAFD,EAGCC,0BAA0B,IAAIC,YAH/B,QAIO,uBAJP;AAMA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,SAASC,iBAAT,OAA8D;AAAA,MAAlC;AAAEC,IAAAA,KAAK,GAAG,SAAV;AAAqB,OAAGC;AAAxB,GAAkC;AAC5E,QAAMC,sBAAsB,GAAGV,UAAU,CAAEE,cAAF,CAAzC;AACA,QAAMS,IAAI,GAAGL,MAAM,CAAEE,KAAF,CAAN,CAAgBG,IAA7B;AACA,QAAMC,KAAK,GAAGP,YAAY,CAAEM,IAAI,CAACE,cAAP,CAA1B;AACA,QAAMC,QAAQ,GAAGC,OAAO,CAAEH,KAAK,IAAIA,KAAK,CAACI,MAAjB,CAAxB;;AAEA,MAAK,CAAEF,QAAP,EAAkB;AACjB,WAAO,IAAP;AACA;;AAED,MAAKN,KAAK,KAAK,SAAf,EAA2B;AAC1B,WACC,cAAC,IAAD,eACMC,KADN;AAEC,MAAA,gBAAgB,MAFjB;AAGC,MAAA,SAAS,EAAGC;AAHb,OADD;AAOA;;AAED,SACC,cAAC,YAAD,QACC,cAAC,IAAD,eACMD,KADN;AAEC,IAAA,gBAAgB,MAFjB;AAGC,IAAA,SAAS,EAAGC;AAHb,KADD,CADD;AASA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport {\n\t__experimentalToolbarContext as ToolbarContext,\n\tToolbarGroup,\n\t__experimentalUseSlotFills as useSlotFills,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport groups from './groups';\n\nexport default function BlockControlsSlot( { group = 'default', ...props } ) {\n\tconst accessibleToolbarState = useContext( ToolbarContext );\n\tconst Slot = groups[ group ].Slot;\n\tconst fills = useSlotFills( Slot.__unstableName );\n\tconst hasFills = Boolean( fills && fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn null;\n\t}\n\n\tif ( group === 'default' ) {\n\t\treturn (\n\t\t\t<Slot\n\t\t\t\t{ ...props }\n\t\t\t\tbubblesVirtually\n\t\t\t\tfillProps={ accessibleToolbarState }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<Slot\n\t\t\t\t{ ...props }\n\t\t\t\tbubblesVirtually\n\t\t\t\tfillProps={ accessibleToolbarState }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-controls/slot.js"],"names":["useContext","__experimentalToolbarContext","ToolbarContext","ToolbarGroup","__experimentalUseSlotFills","useSlotFills","warning","groups","BlockControlsSlot","group","props","accessibleToolbarState","Slot","fills","__unstableName","length"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,oBAA3B;AACA,SACCC,4BAA4B,IAAIC,cADjC,EAECC,YAFD,EAGCC,0BAA0B,IAAIC,YAH/B,QAIO,uBAJP;AAKA,OAAOC,OAAP,MAAoB,oBAApB;AAEA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,SAASC,iBAAT,OAA8D;AAAA;;AAAA,MAAlC;AAAEC,IAAAA,KAAK,GAAG,SAAV;AAAqB,OAAGC;AAAxB,GAAkC;AAC5E,QAAMC,sBAAsB,GAAGX,UAAU,CAAEE,cAAF,CAAzC;AACA,QAAMU,IAAI,oBAAGL,MAAM,CAAEE,KAAF,CAAT,kDAAG,cAAiBG,IAA9B;AACA,QAAMC,KAAK,GAAGR,YAAY,CAAEO,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEE,cAAR,CAA1B;;AACA,MAAK,CAAEF,IAAP,EAAc;AACb,6FAAAN,OAAO,CAAG,gCAAgCG,KAAO,aAA1C,CAAP;AACA,WAAO,IAAP;AACA;;AAED,MAAK,EAAEI,KAAF,aAAEA,KAAF,eAAEA,KAAK,CAAEE,MAAT,CAAL,EAAuB;AACtB,WAAO,IAAP;AACA;;AAED,MAAKN,KAAK,KAAK,SAAf,EAA2B;AAC1B,WACC,cAAC,IAAD,eACMC,KADN;AAEC,MAAA,gBAAgB,MAFjB;AAGC,MAAA,SAAS,EAAGC;AAHb,OADD;AAOA;;AAED,SACC,cAAC,YAAD,QACC,cAAC,IAAD,eACMD,KADN;AAEC,IAAA,gBAAgB,MAFjB;AAGC,IAAA,SAAS,EAAGC;AAHb,KADD,CADD;AASA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport {\n\t__experimentalToolbarContext as ToolbarContext,\n\tToolbarGroup,\n\t__experimentalUseSlotFills as useSlotFills,\n} from '@wordpress/components';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport groups from './groups';\n\nexport default function BlockControlsSlot( { group = 'default', ...props } ) {\n\tconst accessibleToolbarState = useContext( ToolbarContext );\n\tconst Slot = groups[ group ]?.Slot;\n\tconst fills = useSlotFills( Slot?.__unstableName );\n\tif ( ! Slot ) {\n\t\twarning( `Unknown BlockControls group \"${ group }\" provided.` );\n\t\treturn null;\n\t}\n\n\tif ( ! fills?.length ) {\n\t\treturn null;\n\t}\n\n\tif ( group === 'default' ) {\n\t\treturn (\n\t\t\t<Slot\n\t\t\t\t{ ...props }\n\t\t\t\tbubblesVirtually\n\t\t\t\tfillProps={ accessibleToolbarState }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<Slot\n\t\t\t\t{ ...props }\n\t\t\t\tbubblesVirtually\n\t\t\t\tfillProps={ accessibleToolbarState }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n}\n"]}
@@ -6,18 +6,26 @@ import { createElement } from "@wordpress/element";
6
6
  */
7
7
  import { useContext } from '@wordpress/element';
8
8
  import { __experimentalToolbarContext as ToolbarContext, ToolbarGroup } from '@wordpress/components';
9
+ import warning from '@wordpress/warning';
9
10
  /**
10
11
  * Internal dependencies
11
12
  */
12
13
 
13
14
  import groups from './groups';
14
15
  export default function BlockControlsSlot(_ref) {
16
+ var _groups$group;
17
+
15
18
  let {
16
19
  group = 'default',
17
20
  ...props
18
21
  } = _ref;
19
22
  const accessibleToolbarState = useContext(ToolbarContext);
20
- const Slot = groups[group].Slot;
23
+ const Slot = (_groups$group = groups[group]) === null || _groups$group === void 0 ? void 0 : _groups$group.Slot;
24
+
25
+ if (!Slot) {
26
+ typeof process !== "undefined" && process.env && process.env.NODE_ENV !== "production" ? warning(`Unknown BlockControls group "${group}" provided.`) : void 0;
27
+ return null;
28
+ }
21
29
 
22
30
  if (group === 'default') {
23
31
  return createElement(Slot, _extends({}, props, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-controls/slot.native.js"],"names":["useContext","__experimentalToolbarContext","ToolbarContext","ToolbarGroup","groups","BlockControlsSlot","group","props","accessibleToolbarState","Slot","fills","length"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,oBAA3B;AACA,SACCC,4BAA4B,IAAIC,cADjC,EAECC,YAFD,QAGO,uBAHP;AAKA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,SAASC,iBAAT,OAA8D;AAAA,MAAlC;AAAEC,IAAAA,KAAK,GAAG,SAAV;AAAqB,OAAGC;AAAxB,GAAkC;AAC5E,QAAMC,sBAAsB,GAAGR,UAAU,CAAEE,cAAF,CAAzC;AACA,QAAMO,IAAI,GAAGL,MAAM,CAAEE,KAAF,CAAN,CAAgBG,IAA7B;;AAEA,MAAKH,KAAK,KAAK,SAAf,EAA2B;AAC1B,WAAO,cAAC,IAAD,eAAWC,KAAX;AAAmB,MAAA,SAAS,EAAGC;AAA/B,OAAP;AACA;;AAED,SACC,cAAC,IAAD,eAAWD,KAAX;AAAmB,IAAA,SAAS,EAAGC;AAA/B,MACKE,KAAF,IAAa;AACd,QAAK,CAAEA,KAAK,CAACC,MAAb,EAAsB;AACrB,aAAO,IAAP;AACA;;AACD,WAAO,cAAC,YAAD,QAAgBD,KAAhB,CAAP;AACA,GANF,CADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport {\n\t__experimentalToolbarContext as ToolbarContext,\n\tToolbarGroup,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport groups from './groups';\n\nexport default function BlockControlsSlot( { group = 'default', ...props } ) {\n\tconst accessibleToolbarState = useContext( ToolbarContext );\n\tconst Slot = groups[ group ].Slot;\n\n\tif ( group === 'default' ) {\n\t\treturn <Slot { ...props } fillProps={ accessibleToolbarState } />;\n\t}\n\n\treturn (\n\t\t<Slot { ...props } fillProps={ accessibleToolbarState }>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif ( ! fills.length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn <ToolbarGroup>{ fills }</ToolbarGroup>;\n\t\t\t} }\n\t\t</Slot>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-controls/slot.native.js"],"names":["useContext","__experimentalToolbarContext","ToolbarContext","ToolbarGroup","warning","groups","BlockControlsSlot","group","props","accessibleToolbarState","Slot","fills","length"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,oBAA3B;AACA,SACCC,4BAA4B,IAAIC,cADjC,EAECC,YAFD,QAGO,uBAHP;AAIA,OAAOC,OAAP,MAAoB,oBAApB;AAEA;AACA;AACA;;AACA,OAAOC,MAAP,MAAmB,UAAnB;AAEA,eAAe,SAASC,iBAAT,OAA8D;AAAA;;AAAA,MAAlC;AAAEC,IAAAA,KAAK,GAAG,SAAV;AAAqB,OAAGC;AAAxB,GAAkC;AAC5E,QAAMC,sBAAsB,GAAGT,UAAU,CAAEE,cAAF,CAAzC;AACA,QAAMQ,IAAI,oBAAGL,MAAM,CAAEE,KAAF,CAAT,kDAAG,cAAiBG,IAA9B;;AACA,MAAK,CAAEA,IAAP,EAAc;AACb,6FAAAN,OAAO,CAAG,gCAAgCG,KAAO,aAA1C,CAAP;AACA,WAAO,IAAP;AACA;;AAED,MAAKA,KAAK,KAAK,SAAf,EAA2B;AAC1B,WAAO,cAAC,IAAD,eAAWC,KAAX;AAAmB,MAAA,SAAS,EAAGC;AAA/B,OAAP;AACA;;AAED,SACC,cAAC,IAAD,eAAWD,KAAX;AAAmB,IAAA,SAAS,EAAGC;AAA/B,MACKE,KAAF,IAAa;AACd,QAAK,CAAEA,KAAK,CAACC,MAAb,EAAsB;AACrB,aAAO,IAAP;AACA;;AACD,WAAO,cAAC,YAAD,QAAgBD,KAAhB,CAAP;AACA,GANF,CADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport {\n\t__experimentalToolbarContext as ToolbarContext,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport groups from './groups';\n\nexport default function BlockControlsSlot( { group = 'default', ...props } ) {\n\tconst accessibleToolbarState = useContext( ToolbarContext );\n\tconst Slot = groups[ group ]?.Slot;\n\tif ( ! Slot ) {\n\t\twarning( `Unknown BlockControls group \"${ group }\" provided.` );\n\t\treturn null;\n\t}\n\n\tif ( group === 'default' ) {\n\t\treturn <Slot { ...props } fillProps={ accessibleToolbarState } />;\n\t}\n\n\treturn (\n\t\t<Slot { ...props } fillProps={ accessibleToolbarState }>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif ( ! fills.length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn <ToolbarGroup>{ fills }</ToolbarGroup>;\n\t\t\t} }\n\t\t</Slot>\n\t);\n}\n"]}
@@ -74,13 +74,17 @@ const BlockDraggable = _ref => {
74
74
  __experimentalTransferDataType: "wp-blocks",
75
75
  transferData: transferData,
76
76
  onDragStart: event => {
77
- startDraggingBlocks(clientIds);
78
- isDragging.current = true;
79
- startScrolling(event);
77
+ // Defer hiding the dragged source element to the next
78
+ // frame to enable dragging.
79
+ window.requestAnimationFrame(() => {
80
+ startDraggingBlocks(clientIds);
81
+ isDragging.current = true;
82
+ startScrolling(event);
80
83
 
81
- if (onDragStart) {
82
- onDragStart();
83
- }
84
+ if (onDragStart) {
85
+ onDragStart();
86
+ }
87
+ });
84
88
  },
85
89
  onDragOver: scrollOnDragOver,
86
90
  onDragEnd: () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/index.js"],"names":["getBlockType","Draggable","useSelect","useDispatch","useEffect","useRef","BlockDraggableChip","useScrollWhenDragging","store","blockEditorStore","BlockDraggable","children","clientIds","cloneClassname","onDragStart","onDragEnd","srcRootClientId","isDraggable","icon","select","canMoveBlocks","getBlockRootClientId","getBlockName","rootClientId","blockName","isDragging","startScrolling","scrollOnDragOver","stopScrolling","startDraggingBlocks","stopDraggingBlocks","current","draggable","transferData","type","srcClientIds","event","length","onDraggableStart","onDraggableEnd"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { Draggable } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockDraggableChip from './draggable-chip';\nimport useScrollWhenDragging from './use-scroll-when-dragging';\nimport { store as blockEditorStore } from '../../store';\n\nconst BlockDraggable = ( {\n\tchildren,\n\tclientIds,\n\tcloneClassname,\n\tonDragStart,\n\tonDragEnd,\n} ) => {\n\tconst { srcRootClientId, isDraggable, icon } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canMoveBlocks, getBlockRootClientId, getBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\tconst blockName = getBlockName( clientIds[ 0 ] );\n\n\t\t\treturn {\n\t\t\t\tsrcRootClientId: rootClientId,\n\t\t\t\tisDraggable: canMoveBlocks( clientIds, rootClientId ),\n\t\t\t\ticon: getBlockType( blockName )?.icon,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst isDragging = useRef( false );\n\tconst [ startScrolling, scrollOnDragOver, stopScrolling ] =\n\t\tuseScrollWhenDragging();\n\n\tconst { startDraggingBlocks, stopDraggingBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Stop dragging blocks if the block draggable is unmounted.\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( isDragging.current ) {\n\t\t\t\tstopDraggingBlocks();\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tif ( ! isDraggable ) {\n\t\treturn children( { draggable: false } );\n\t}\n\n\tconst transferData = {\n\t\ttype: 'block',\n\t\tsrcClientIds: clientIds,\n\t\tsrcRootClientId,\n\t};\n\n\treturn (\n\t\t<Draggable\n\t\t\tcloneClassname={ cloneClassname }\n\t\t\t__experimentalTransferDataType=\"wp-blocks\"\n\t\t\ttransferData={ transferData }\n\t\t\tonDragStart={ ( event ) => {\n\t\t\t\tstartDraggingBlocks( clientIds );\n\t\t\t\tisDragging.current = true;\n\n\t\t\t\tstartScrolling( event );\n\n\t\t\t\tif ( onDragStart ) {\n\t\t\t\t\tonDragStart();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tonDragOver={ scrollOnDragOver }\n\t\t\tonDragEnd={ () => {\n\t\t\t\tstopDraggingBlocks();\n\t\t\t\tisDragging.current = false;\n\n\t\t\t\tstopScrolling();\n\n\t\t\t\tif ( onDragEnd ) {\n\t\t\t\t\tonDragEnd();\n\t\t\t\t}\n\t\t\t} }\n\t\t\t__experimentalDragComponent={\n\t\t\t\t<BlockDraggableChip count={ clientIds.length } icon={ icon } />\n\t\t\t}\n\t\t>\n\t\t\t{ ( { onDraggableStart, onDraggableEnd } ) => {\n\t\t\t\treturn children( {\n\t\t\t\t\tdraggable: true,\n\t\t\t\t\tonDragStart: onDraggableStart,\n\t\t\t\t\tonDragEnd: onDraggableEnd,\n\t\t\t\t} );\n\t\t\t} }\n\t\t</Draggable>\n\t);\n};\n\nexport default BlockDraggable;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/index.js"],"names":["getBlockType","Draggable","useSelect","useDispatch","useEffect","useRef","BlockDraggableChip","useScrollWhenDragging","store","blockEditorStore","BlockDraggable","children","clientIds","cloneClassname","onDragStart","onDragEnd","srcRootClientId","isDraggable","icon","select","canMoveBlocks","getBlockRootClientId","getBlockName","rootClientId","blockName","isDragging","startScrolling","scrollOnDragOver","stopScrolling","startDraggingBlocks","stopDraggingBlocks","current","draggable","transferData","type","srcClientIds","event","window","requestAnimationFrame","length","onDraggableStart","onDraggableEnd"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { Draggable } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockDraggableChip from './draggable-chip';\nimport useScrollWhenDragging from './use-scroll-when-dragging';\nimport { store as blockEditorStore } from '../../store';\n\nconst BlockDraggable = ( {\n\tchildren,\n\tclientIds,\n\tcloneClassname,\n\tonDragStart,\n\tonDragEnd,\n} ) => {\n\tconst { srcRootClientId, isDraggable, icon } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canMoveBlocks, getBlockRootClientId, getBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\t\t\tconst blockName = getBlockName( clientIds[ 0 ] );\n\n\t\t\treturn {\n\t\t\t\tsrcRootClientId: rootClientId,\n\t\t\t\tisDraggable: canMoveBlocks( clientIds, rootClientId ),\n\t\t\t\ticon: getBlockType( blockName )?.icon,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst isDragging = useRef( false );\n\tconst [ startScrolling, scrollOnDragOver, stopScrolling ] =\n\t\tuseScrollWhenDragging();\n\n\tconst { startDraggingBlocks, stopDraggingBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Stop dragging blocks if the block draggable is unmounted.\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( isDragging.current ) {\n\t\t\t\tstopDraggingBlocks();\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tif ( ! isDraggable ) {\n\t\treturn children( { draggable: false } );\n\t}\n\n\tconst transferData = {\n\t\ttype: 'block',\n\t\tsrcClientIds: clientIds,\n\t\tsrcRootClientId,\n\t};\n\n\treturn (\n\t\t<Draggable\n\t\t\tcloneClassname={ cloneClassname }\n\t\t\t__experimentalTransferDataType=\"wp-blocks\"\n\t\t\ttransferData={ transferData }\n\t\t\tonDragStart={ ( event ) => {\n\t\t\t\t// Defer hiding the dragged source element to the next\n\t\t\t\t// frame to enable dragging.\n\t\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\t\tstartDraggingBlocks( clientIds );\n\t\t\t\t\tisDragging.current = true;\n\n\t\t\t\t\tstartScrolling( event );\n\n\t\t\t\t\tif ( onDragStart ) {\n\t\t\t\t\t\tonDragStart();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tonDragOver={ scrollOnDragOver }\n\t\t\tonDragEnd={ () => {\n\t\t\t\tstopDraggingBlocks();\n\t\t\t\tisDragging.current = false;\n\n\t\t\t\tstopScrolling();\n\n\t\t\t\tif ( onDragEnd ) {\n\t\t\t\t\tonDragEnd();\n\t\t\t\t}\n\t\t\t} }\n\t\t\t__experimentalDragComponent={\n\t\t\t\t<BlockDraggableChip count={ clientIds.length } icon={ icon } />\n\t\t\t}\n\t\t>\n\t\t\t{ ( { onDraggableStart, onDraggableEnd } ) => {\n\t\t\t\treturn children( {\n\t\t\t\t\tdraggable: true,\n\t\t\t\t\tonDragStart: onDraggableStart,\n\t\t\t\t\tonDragEnd: onDraggableEnd,\n\t\t\t\t} );\n\t\t\t} }\n\t\t</Draggable>\n\t);\n};\n\nexport default BlockDraggable;\n"]}
@@ -55,13 +55,13 @@ export default function useScrollWhenDragging() {
55
55
  // User is dragging downwards.
56
56
  const moveableDistance = Math.max(scrollParentHeight - offsetDragStartPosition - SCROLL_INACTIVE_DISTANCE_PX, 0);
57
57
  const dragDistance = Math.max(offsetDragPosition - offsetDragStartPosition - SCROLL_INACTIVE_DISTANCE_PX, 0);
58
- const distancePercentage = dragDistance / moveableDistance;
58
+ const distancePercentage = moveableDistance === 0 || dragDistance === 0 ? 0 : dragDistance / moveableDistance;
59
59
  velocityY.current = VELOCITY_MULTIPLIER * distancePercentage;
60
60
  } else if (event.clientY < offsetDragStartPosition) {
61
61
  // User is dragging upwards.
62
62
  const moveableDistance = Math.max(offsetDragStartPosition - SCROLL_INACTIVE_DISTANCE_PX, 0);
63
63
  const dragDistance = Math.max(offsetDragStartPosition - offsetDragPosition - SCROLL_INACTIVE_DISTANCE_PX, 0);
64
- const distancePercentage = dragDistance / moveableDistance;
64
+ const distancePercentage = moveableDistance === 0 || dragDistance === 0 ? 0 : dragDistance / moveableDistance;
65
65
  velocityY.current = -VELOCITY_MULTIPLIER * distancePercentage;
66
66
  } else {
67
67
  velocityY.current = 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/use-scroll-when-dragging.js"],"names":["getScrollContainer","useCallback","useEffect","useRef","SCROLL_INACTIVE_DISTANCE_PX","SCROLL_INTERVAL_MS","PIXELS_PER_SECOND_PER_PERCENTAGE","VELOCITY_MULTIPLIER","useScrollWhenDragging","dragStartY","velocityY","scrollParentY","scrollEditorInterval","current","clearInterval","startScrolling","event","clientY","target","setInterval","newTop","scrollTop","scroll","top","scrollOnDragOver","scrollParentHeight","offsetHeight","offsetDragStartPosition","offsetTop","offsetDragPosition","moveableDistance","Math","max","dragDistance","distancePercentage","stopScrolling"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,kBAAT,QAAmC,gBAAnC;AACA,SAASC,WAAT,EAAsBC,SAAtB,EAAiCC,MAAjC,QAA+C,oBAA/C;AAEA,MAAMC,2BAA2B,GAAG,EAApC;AACA,MAAMC,kBAAkB,GAAG,EAA3B;AACA,MAAMC,gCAAgC,GAAG,IAAzC;AACA,MAAMC,mBAAmB,GACxBD,gCAAgC,IAAKD,kBAAkB,GAAG,IAA1B,CADjC;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASG,qBAAT,GAAiC;AAC/C,QAAMC,UAAU,GAAGN,MAAM,CAAE,IAAF,CAAzB;AACA,QAAMO,SAAS,GAAGP,MAAM,CAAE,IAAF,CAAxB;AACA,QAAMQ,aAAa,GAAGR,MAAM,CAAE,IAAF,CAA5B;AACA,QAAMS,oBAAoB,GAAGT,MAAM,CAAE,IAAF,CAAnC,CAJ+C,CAM/C;;AACAD,EAAAA,SAAS,CACR,MAAM,MAAM;AACX,QAAKU,oBAAoB,CAACC,OAA1B,EAAoC;AACnCC,MAAAA,aAAa,CAAEF,oBAAoB,CAACC,OAAvB,CAAb;AACAD,MAAAA,oBAAoB,CAACC,OAArB,GAA+B,IAA/B;AACA;AACD,GANO,EAOR,EAPQ,CAAT;AAUA,QAAME,cAAc,GAAGd,WAAW,CAAIe,KAAF,IAAa;AAChDP,IAAAA,UAAU,CAACI,OAAX,GAAqBG,KAAK,CAACC,OAA3B,CADgD,CAGhD;;AACAN,IAAAA,aAAa,CAACE,OAAd,GAAwBb,kBAAkB,CAAEgB,KAAK,CAACE,MAAR,CAA1C;AAEAN,IAAAA,oBAAoB,CAACC,OAArB,GAA+BM,WAAW,CAAE,MAAM;AACjD,UAAKR,aAAa,CAACE,OAAd,IAAyBH,SAAS,CAACG,OAAxC,EAAkD;AACjD,cAAMO,MAAM,GACXT,aAAa,CAACE,OAAd,CAAsBQ,SAAtB,GAAkCX,SAAS,CAACG,OAD7C,CADiD,CAIjD;AACA;;AACAF,QAAAA,aAAa,CAACE,OAAd,CAAsBS,MAAtB,CAA8B;AAC7BC,UAAAA,GAAG,EAAEH;AADwB,SAA9B;AAGA;AACD,KAXyC,EAWvCf,kBAXuC,CAA1C;AAYA,GAlBiC,EAkB/B,EAlB+B,CAAlC;AAoBA,QAAMmB,gBAAgB,GAAGvB,WAAW,CAAIe,KAAF,IAAa;AAClD,QAAK,CAAEL,aAAa,CAACE,OAArB,EAA+B;AAC9B;AACA;;AACD,UAAMY,kBAAkB,GAAGd,aAAa,CAACE,OAAd,CAAsBa,YAAjD;AACA,UAAMC,uBAAuB,GAC5BlB,UAAU,CAACI,OAAX,GAAqBF,aAAa,CAACE,OAAd,CAAsBe,SAD5C;AAEA,UAAMC,kBAAkB,GACvBb,KAAK,CAACC,OAAN,GAAgBN,aAAa,CAACE,OAAd,CAAsBe,SADvC;;AAGA,QAAKZ,KAAK,CAACC,OAAN,GAAgBU,uBAArB,EAA+C;AAC9C;AACA,YAAMG,gBAAgB,GAAGC,IAAI,CAACC,GAAL,CACxBP,kBAAkB,GACjBE,uBADD,GAECvB,2BAHuB,EAIxB,CAJwB,CAAzB;AAMA,YAAM6B,YAAY,GAAGF,IAAI,CAACC,GAAL,CACpBH,kBAAkB,GACjBF,uBADD,GAECvB,2BAHmB,EAIpB,CAJoB,CAArB;AAMA,YAAM8B,kBAAkB,GAAGD,YAAY,GAAGH,gBAA1C;AACApB,MAAAA,SAAS,CAACG,OAAV,GAAoBN,mBAAmB,GAAG2B,kBAA1C;AACA,KAhBD,MAgBO,IAAKlB,KAAK,CAACC,OAAN,GAAgBU,uBAArB,EAA+C;AACrD;AACA,YAAMG,gBAAgB,GAAGC,IAAI,CAACC,GAAL,CACxBL,uBAAuB,GAAGvB,2BADF,EAExB,CAFwB,CAAzB;AAIA,YAAM6B,YAAY,GAAGF,IAAI,CAACC,GAAL,CACpBL,uBAAuB,GACtBE,kBADD,GAECzB,2BAHmB,EAIpB,CAJoB,CAArB;AAMA,YAAM8B,kBAAkB,GAAGD,YAAY,GAAGH,gBAA1C;AACApB,MAAAA,SAAS,CAACG,OAAV,GAAoB,CAACN,mBAAD,GAAuB2B,kBAA3C;AACA,KAdM,MAcA;AACNxB,MAAAA,SAAS,CAACG,OAAV,GAAoB,CAApB;AACA;AACD,GA3CmC,EA2CjC,EA3CiC,CAApC;;AA6CA,QAAMsB,aAAa,GAAG,MAAM;AAC3B1B,IAAAA,UAAU,CAACI,OAAX,GAAqB,IAArB;AACAF,IAAAA,aAAa,CAACE,OAAd,GAAwB,IAAxB;;AAEA,QAAKD,oBAAoB,CAACC,OAA1B,EAAoC;AACnCC,MAAAA,aAAa,CAAEF,oBAAoB,CAACC,OAAvB,CAAb;AACAD,MAAAA,oBAAoB,CAACC,OAArB,GAA+B,IAA/B;AACA;AACD,GARD;;AAUA,SAAO,CAAEE,cAAF,EAAkBS,gBAAlB,EAAoCW,aAApC,CAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getScrollContainer } from '@wordpress/dom';\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\n\nconst SCROLL_INACTIVE_DISTANCE_PX = 50;\nconst SCROLL_INTERVAL_MS = 25;\nconst PIXELS_PER_SECOND_PER_PERCENTAGE = 1000;\nconst VELOCITY_MULTIPLIER =\n\tPIXELS_PER_SECOND_PER_PERCENTAGE * ( SCROLL_INTERVAL_MS / 1000 );\n\n/**\n * React hook that scrolls the scroll container when a block is being dragged.\n *\n * @return {Function[]} `startScrolling`, `scrollOnDragOver`, `stopScrolling`\n * functions to be called in `onDragStart`, `onDragOver`\n * and `onDragEnd` events respectively.\n */\nexport default function useScrollWhenDragging() {\n\tconst dragStartY = useRef( null );\n\tconst velocityY = useRef( null );\n\tconst scrollParentY = useRef( null );\n\tconst scrollEditorInterval = useRef( null );\n\n\t// Clear interval when unmounting.\n\tuseEffect(\n\t\t() => () => {\n\t\t\tif ( scrollEditorInterval.current ) {\n\t\t\t\tclearInterval( scrollEditorInterval.current );\n\t\t\t\tscrollEditorInterval.current = null;\n\t\t\t}\n\t\t},\n\t\t[]\n\t);\n\n\tconst startScrolling = useCallback( ( event ) => {\n\t\tdragStartY.current = event.clientY;\n\n\t\t// Find nearest parent(s) to scroll.\n\t\tscrollParentY.current = getScrollContainer( event.target );\n\n\t\tscrollEditorInterval.current = setInterval( () => {\n\t\t\tif ( scrollParentY.current && velocityY.current ) {\n\t\t\t\tconst newTop =\n\t\t\t\t\tscrollParentY.current.scrollTop + velocityY.current;\n\n\t\t\t\t// Setting `behavior: 'smooth'` as a scroll property seems to hurt performance.\n\t\t\t\t// Better to use a small scroll interval.\n\t\t\t\tscrollParentY.current.scroll( {\n\t\t\t\t\ttop: newTop,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, SCROLL_INTERVAL_MS );\n\t}, [] );\n\n\tconst scrollOnDragOver = useCallback( ( event ) => {\n\t\tif ( ! scrollParentY.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst scrollParentHeight = scrollParentY.current.offsetHeight;\n\t\tconst offsetDragStartPosition =\n\t\t\tdragStartY.current - scrollParentY.current.offsetTop;\n\t\tconst offsetDragPosition =\n\t\t\tevent.clientY - scrollParentY.current.offsetTop;\n\n\t\tif ( event.clientY > offsetDragStartPosition ) {\n\t\t\t// User is dragging downwards.\n\t\t\tconst moveableDistance = Math.max(\n\t\t\t\tscrollParentHeight -\n\t\t\t\t\toffsetDragStartPosition -\n\t\t\t\t\tSCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst dragDistance = Math.max(\n\t\t\t\toffsetDragPosition -\n\t\t\t\t\toffsetDragStartPosition -\n\t\t\t\t\tSCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst distancePercentage = dragDistance / moveableDistance;\n\t\t\tvelocityY.current = VELOCITY_MULTIPLIER * distancePercentage;\n\t\t} else if ( event.clientY < offsetDragStartPosition ) {\n\t\t\t// User is dragging upwards.\n\t\t\tconst moveableDistance = Math.max(\n\t\t\t\toffsetDragStartPosition - SCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst dragDistance = Math.max(\n\t\t\t\toffsetDragStartPosition -\n\t\t\t\t\toffsetDragPosition -\n\t\t\t\t\tSCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst distancePercentage = dragDistance / moveableDistance;\n\t\t\tvelocityY.current = -VELOCITY_MULTIPLIER * distancePercentage;\n\t\t} else {\n\t\t\tvelocityY.current = 0;\n\t\t}\n\t}, [] );\n\n\tconst stopScrolling = () => {\n\t\tdragStartY.current = null;\n\t\tscrollParentY.current = null;\n\n\t\tif ( scrollEditorInterval.current ) {\n\t\t\tclearInterval( scrollEditorInterval.current );\n\t\t\tscrollEditorInterval.current = null;\n\t\t}\n\t};\n\n\treturn [ startScrolling, scrollOnDragOver, stopScrolling ];\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/use-scroll-when-dragging.js"],"names":["getScrollContainer","useCallback","useEffect","useRef","SCROLL_INACTIVE_DISTANCE_PX","SCROLL_INTERVAL_MS","PIXELS_PER_SECOND_PER_PERCENTAGE","VELOCITY_MULTIPLIER","useScrollWhenDragging","dragStartY","velocityY","scrollParentY","scrollEditorInterval","current","clearInterval","startScrolling","event","clientY","target","setInterval","newTop","scrollTop","scroll","top","scrollOnDragOver","scrollParentHeight","offsetHeight","offsetDragStartPosition","offsetTop","offsetDragPosition","moveableDistance","Math","max","dragDistance","distancePercentage","stopScrolling"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getScrollContainer } from '@wordpress/dom';\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\n\nconst SCROLL_INACTIVE_DISTANCE_PX = 50;\nconst SCROLL_INTERVAL_MS = 25;\nconst PIXELS_PER_SECOND_PER_PERCENTAGE = 1000;\nconst VELOCITY_MULTIPLIER =\n\tPIXELS_PER_SECOND_PER_PERCENTAGE * ( SCROLL_INTERVAL_MS / 1000 );\n\n/**\n * React hook that scrolls the scroll container when a block is being dragged.\n *\n * @return {Function[]} `startScrolling`, `scrollOnDragOver`, `stopScrolling`\n * functions to be called in `onDragStart`, `onDragOver`\n * and `onDragEnd` events respectively.\n */\nexport default function useScrollWhenDragging() {\n\tconst dragStartY = useRef( null );\n\tconst velocityY = useRef( null );\n\tconst scrollParentY = useRef( null );\n\tconst scrollEditorInterval = useRef( null );\n\n\t// Clear interval when unmounting.\n\tuseEffect(\n\t\t() => () => {\n\t\t\tif ( scrollEditorInterval.current ) {\n\t\t\t\tclearInterval( scrollEditorInterval.current );\n\t\t\t\tscrollEditorInterval.current = null;\n\t\t\t}\n\t\t},\n\t\t[]\n\t);\n\n\tconst startScrolling = useCallback( ( event ) => {\n\t\tdragStartY.current = event.clientY;\n\n\t\t// Find nearest parent(s) to scroll.\n\t\tscrollParentY.current = getScrollContainer( event.target );\n\n\t\tscrollEditorInterval.current = setInterval( () => {\n\t\t\tif ( scrollParentY.current && velocityY.current ) {\n\t\t\t\tconst newTop =\n\t\t\t\t\tscrollParentY.current.scrollTop + velocityY.current;\n\n\t\t\t\t// Setting `behavior: 'smooth'` as a scroll property seems to hurt performance.\n\t\t\t\t// Better to use a small scroll interval.\n\t\t\t\tscrollParentY.current.scroll( {\n\t\t\t\t\ttop: newTop,\n\t\t\t\t} );\n\t\t\t}\n\t\t}, SCROLL_INTERVAL_MS );\n\t}, [] );\n\n\tconst scrollOnDragOver = useCallback( ( event ) => {\n\t\tif ( ! scrollParentY.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst scrollParentHeight = scrollParentY.current.offsetHeight;\n\t\tconst offsetDragStartPosition =\n\t\t\tdragStartY.current - scrollParentY.current.offsetTop;\n\t\tconst offsetDragPosition =\n\t\t\tevent.clientY - scrollParentY.current.offsetTop;\n\n\t\tif ( event.clientY > offsetDragStartPosition ) {\n\t\t\t// User is dragging downwards.\n\t\t\tconst moveableDistance = Math.max(\n\t\t\t\tscrollParentHeight -\n\t\t\t\t\toffsetDragStartPosition -\n\t\t\t\t\tSCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst dragDistance = Math.max(\n\t\t\t\toffsetDragPosition -\n\t\t\t\t\toffsetDragStartPosition -\n\t\t\t\t\tSCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst distancePercentage =\n\t\t\t\tmoveableDistance === 0 || dragDistance === 0\n\t\t\t\t\t? 0\n\t\t\t\t\t: dragDistance / moveableDistance;\n\t\t\tvelocityY.current = VELOCITY_MULTIPLIER * distancePercentage;\n\t\t} else if ( event.clientY < offsetDragStartPosition ) {\n\t\t\t// User is dragging upwards.\n\t\t\tconst moveableDistance = Math.max(\n\t\t\t\toffsetDragStartPosition - SCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst dragDistance = Math.max(\n\t\t\t\toffsetDragStartPosition -\n\t\t\t\t\toffsetDragPosition -\n\t\t\t\t\tSCROLL_INACTIVE_DISTANCE_PX,\n\t\t\t\t0\n\t\t\t);\n\t\t\tconst distancePercentage =\n\t\t\t\tmoveableDistance === 0 || dragDistance === 0\n\t\t\t\t\t? 0\n\t\t\t\t\t: dragDistance / moveableDistance;\n\t\t\tvelocityY.current = -VELOCITY_MULTIPLIER * distancePercentage;\n\t\t} else {\n\t\t\tvelocityY.current = 0;\n\t\t}\n\t}, [] );\n\n\tconst stopScrolling = () => {\n\t\tdragStartY.current = null;\n\t\tscrollParentY.current = null;\n\n\t\tif ( scrollEditorInterval.current ) {\n\t\t\tclearInterval( scrollEditorInterval.current );\n\t\t\tscrollEditorInterval.current = null;\n\t\t}\n\t};\n\n\treturn [ startScrolling, scrollOnDragOver, stopScrolling ];\n}\n"]}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect, useDispatch } from '@wordpress/data';
5
+ import { useContext, useEffect } from '@wordpress/element';
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+
10
+ import { store as blockEditorStore } from '../../store';
11
+ import { unlock } from '../../lock-unlock';
12
+ import { BlockListBlockContext } from '../block-list/block-list-block-context';
13
+ /**
14
+ * @typedef {'disabled'|'contentOnly'|'default'} BlockEditingMode
15
+ */
16
+
17
+ /**
18
+ * Allows a block to restrict the user interface that is displayed for editing
19
+ * that block and its inner blocks.
20
+ *
21
+ * @example
22
+ * ```js
23
+ * function MyBlock( { attributes, setAttributes } ) {
24
+ * useBlockEditingMode( 'disabled' );
25
+ * return <div { ...useBlockProps() }></div>;
26
+ * }
27
+ * ```
28
+ *
29
+ * `mode` can be one of three options:
30
+ *
31
+ * - `'disabled'`: Prevents editing the block entirely, i.e. it cannot be
32
+ * selected.
33
+ * - `'contentOnly'`: Hides all non-content UI, e.g. auxiliary controls in the
34
+ * toolbar, the block movers, block settings.
35
+ * - `'default'`: Allows editing the block as normal.
36
+ *
37
+ * The mode is inherited by all of the block's inner blocks, unless they have
38
+ * their own mode.
39
+ *
40
+ * If called outside of a block context, the mode is applied to all blocks.
41
+ *
42
+ * @param {?BlockEditingMode} mode The editing mode to apply. If undefined, the
43
+ * current editing mode is not changed.
44
+ *
45
+ * @return {BlockEditingMode} The current editing mode.
46
+ */
47
+
48
+ export function useBlockEditingMode(mode) {
49
+ var _useContext;
50
+
51
+ const {
52
+ clientId = ''
53
+ } = (_useContext = useContext(BlockListBlockContext)) !== null && _useContext !== void 0 ? _useContext : {};
54
+ const blockEditingMode = useSelect(select => unlock(select(blockEditorStore)).getBlockEditingMode(clientId), [clientId]);
55
+ const {
56
+ setBlockEditingMode,
57
+ unsetBlockEditingMode
58
+ } = unlock(useDispatch(blockEditorStore));
59
+ useEffect(() => {
60
+ if (mode) {
61
+ setBlockEditingMode(clientId, mode);
62
+ }
63
+
64
+ return () => {
65
+ if (mode) {
66
+ unsetBlockEditingMode(clientId);
67
+ }
68
+ };
69
+ }, [clientId, mode]);
70
+ return blockEditingMode;
71
+ }
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-editing-mode/index.js"],"names":["useSelect","useDispatch","useContext","useEffect","store","blockEditorStore","unlock","BlockListBlockContext","useBlockEditingMode","mode","clientId","blockEditingMode","select","getBlockEditingMode","setBlockEditingMode","unsetBlockEditingMode"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,UAAT,EAAqBC,SAArB,QAAsC,oBAAtC;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAASC,qBAAT,QAAsC,wCAAtC;AAEA;AACA;AACA;;AAEA;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,mBAAT,CAA8BC,IAA9B,EAAqC;AAAA;;AAC3C,QAAM;AAAEC,IAAAA,QAAQ,GAAG;AAAb,qBAAoBR,UAAU,CAAEK,qBAAF,CAA9B,qDAA2D,EAAjE;AACA,QAAMI,gBAAgB,GAAGX,SAAS,CAC/BY,MAAF,IACCN,MAAM,CAAEM,MAAM,CAAEP,gBAAF,CAAR,CAAN,CAAqCQ,mBAArC,CACCH,QADD,CAFgC,EAKjC,CAAEA,QAAF,CALiC,CAAlC;AAOA,QAAM;AAAEI,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MAAiDT,MAAM,CAC5DL,WAAW,CAAEI,gBAAF,CADiD,CAA7D;AAGAF,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAKM,IAAL,EAAY;AACXK,MAAAA,mBAAmB,CAAEJ,QAAF,EAAYD,IAAZ,CAAnB;AACA;;AACD,WAAO,MAAM;AACZ,UAAKA,IAAL,EAAY;AACXM,QAAAA,qBAAqB,CAAEL,QAAF,CAArB;AACA;AACD,KAJD;AAKA,GATQ,EASN,CAAEA,QAAF,EAAYD,IAAZ,CATM,CAAT;AAUA,SAAOE,gBAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useContext, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { BlockListBlockContext } from '../block-list/block-list-block-context';\n\n/**\n * @typedef {'disabled'|'contentOnly'|'default'} BlockEditingMode\n */\n\n/**\n * Allows a block to restrict the user interface that is displayed for editing\n * that block and its inner blocks.\n *\n * @example\n * ```js\n * function MyBlock( { attributes, setAttributes } ) {\n * useBlockEditingMode( 'disabled' );\n * return <div { ...useBlockProps() }></div>;\n * }\n * ```\n *\n * `mode` can be one of three options:\n *\n * - `'disabled'`: Prevents editing the block entirely, i.e. it cannot be\n * selected.\n * - `'contentOnly'`: Hides all non-content UI, e.g. auxiliary controls in the\n * toolbar, the block movers, block settings.\n * - `'default'`: Allows editing the block as normal.\n *\n * The mode is inherited by all of the block's inner blocks, unless they have\n * their own mode.\n *\n * If called outside of a block context, the mode is applied to all blocks.\n *\n * @param {?BlockEditingMode} mode The editing mode to apply. If undefined, the\n * current editing mode is not changed.\n *\n * @return {BlockEditingMode} The current editing mode.\n */\nexport function useBlockEditingMode( mode ) {\n\tconst { clientId = '' } = useContext( BlockListBlockContext ) ?? {};\n\tconst blockEditingMode = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getBlockEditingMode(\n\t\t\t\tclientId\n\t\t\t),\n\t\t[ clientId ]\n\t);\n\tconst { setBlockEditingMode, unsetBlockEditingMode } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tuseEffect( () => {\n\t\tif ( mode ) {\n\t\t\tsetBlockEditingMode( clientId, mode );\n\t\t}\n\t\treturn () => {\n\t\t\tif ( mode ) {\n\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t}\n\t\t};\n\t}, [ clientId, mode ] );\n\treturn blockEditingMode;\n}\n"]}