@wordpress/block-editor 12.4.0 → 12.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +5 -0
  3. package/build/components/block-heading-level-dropdown/heading-level-icon.js +10 -2
  4. package/build/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
  5. package/build/components/block-heading-level-dropdown/index.native.js +4 -3
  6. package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
  7. package/build/components/block-lock/toolbar.js +25 -6
  8. package/build/components/block-lock/toolbar.js.map +1 -1
  9. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +3 -6
  10. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  11. package/build/components/block-parent-selector/index.js +8 -5
  12. package/build/components/block-parent-selector/index.js.map +1 -1
  13. package/build/components/block-removal-warning-modal/index.js +18 -25
  14. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  15. package/build/components/block-toolbar/index.js +8 -5
  16. package/build/components/block-toolbar/index.js.map +1 -1
  17. package/build/components/block-tools/block-contextual-toolbar.js +7 -11
  18. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  19. package/build/components/dimensions-tool/aspect-ratio-tool.js +99 -0
  20. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
  21. package/build/components/dimensions-tool/index.js +207 -0
  22. package/build/components/dimensions-tool/index.js.map +1 -0
  23. package/build/components/dimensions-tool/scale-tool.js +111 -0
  24. package/build/components/dimensions-tool/scale-tool.js.map +1 -0
  25. package/build/components/dimensions-tool/width-height-tool.js +125 -0
  26. package/build/components/dimensions-tool/width-height-tool.js.map +1 -0
  27. package/build/components/global-styles/color-panel.js +1 -1
  28. package/build/components/global-styles/color-panel.js.map +1 -1
  29. package/build/components/global-styles/filters-panel.js +1 -1
  30. package/build/components/global-styles/filters-panel.js.map +1 -1
  31. package/build/components/global-styles/hooks.js +2 -2
  32. package/build/components/global-styles/hooks.js.map +1 -1
  33. package/build/components/global-styles/typography-panel.js +34 -2
  34. package/build/components/global-styles/typography-panel.js.map +1 -1
  35. package/build/components/image-editor/aspect-ratio-dropdown.js +1 -1
  36. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  37. package/build/components/image-editor/use-save-image.js +1 -2
  38. package/build/components/image-editor/use-save-image.js.map +1 -1
  39. package/build/components/image-size-control/index.js +6 -0
  40. package/build/components/image-size-control/index.js.map +1 -1
  41. package/build/components/index.js +19 -1
  42. package/build/components/index.js.map +1 -1
  43. package/build/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
  44. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  45. package/build/components/inserter/block-patterns-tab.js +7 -35
  46. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  47. package/build/components/inserter/hooks/use-block-types-state.js +3 -4
  48. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  49. package/build/components/inserter/hooks/use-patterns-state.js +9 -3
  50. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  51. package/build/components/inserter/media-tab/hooks.js +2 -21
  52. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  53. package/build/components/inserter/reusable-block-rename-hint.js +62 -0
  54. package/build/components/inserter/reusable-block-rename-hint.js.map +1 -0
  55. package/build/components/inserter/reusable-blocks-tab.js +6 -2
  56. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  57. package/build/components/inserter/reusable-blocks-tab.native.js +2 -2
  58. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  59. package/build/components/inserter/tabs.native.js +1 -1
  60. package/build/components/inserter/tabs.native.js.map +1 -1
  61. package/build/components/inserter-draggable-blocks/index.js +9 -1
  62. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  63. package/build/components/link-control/constants.js +1 -1
  64. package/build/components/link-control/constants.js.map +1 -1
  65. package/build/components/link-control/index.js +17 -15
  66. package/build/components/link-control/index.js.map +1 -1
  67. package/build/components/link-control/search-create-button.js +5 -21
  68. package/build/components/link-control/search-create-button.js.map +1 -1
  69. package/build/components/link-control/search-input.js +4 -4
  70. package/build/components/link-control/search-input.js.map +1 -1
  71. package/build/components/link-control/search-item.js +13 -30
  72. package/build/components/link-control/search-item.js.map +1 -1
  73. package/build/components/link-control/search-results.js +2 -2
  74. package/build/components/link-control/search-results.js.map +1 -1
  75. package/build/components/link-control/settings-drawer.js +2 -3
  76. package/build/components/link-control/settings-drawer.js.map +1 -1
  77. package/build/components/list-view/appender.js +2 -6
  78. package/build/components/list-view/appender.js.map +1 -1
  79. package/build/components/provider/index.js +5 -2
  80. package/build/components/provider/index.js.map +1 -1
  81. package/build/components/provider/use-block-sync.js +21 -0
  82. package/build/components/provider/use-block-sync.js.map +1 -1
  83. package/build/components/resolution-tool/index.js +55 -0
  84. package/build/components/resolution-tool/index.js.map +1 -0
  85. package/build/components/url-input/index.js +4 -2
  86. package/build/components/url-input/index.js.map +1 -1
  87. package/build/components/writing-flow/use-tab-nav.js +10 -27
  88. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  89. package/build/components/writing-mode-control/index.js +70 -0
  90. package/build/components/writing-mode-control/index.js.map +1 -0
  91. package/build/hooks/behaviors.js +25 -20
  92. package/build/hooks/behaviors.js.map +1 -1
  93. package/build/hooks/supports.js +7 -1
  94. package/build/hooks/supports.js.map +1 -1
  95. package/build/hooks/typography.js +2 -1
  96. package/build/hooks/typography.js.map +1 -1
  97. package/build/hooks/utils.js +4 -2
  98. package/build/hooks/utils.js.map +1 -1
  99. package/build/private-apis.js +10 -1
  100. package/build/private-apis.js.map +1 -1
  101. package/build/private-apis.native.js +3 -0
  102. package/build/private-apis.native.js.map +1 -1
  103. package/build/store/actions.js +195 -1
  104. package/build/store/actions.js.map +1 -1
  105. package/build/store/defaults.js +1 -0
  106. package/build/store/defaults.js.map +1 -1
  107. package/build/store/index.js +10 -1
  108. package/build/store/index.js.map +1 -1
  109. package/build/store/private-actions.js +46 -40
  110. package/build/store/private-actions.js.map +1 -1
  111. package/build/store/private-selectors.js +3 -3
  112. package/build/store/private-selectors.js.map +1 -1
  113. package/build/store/reducer.js +22 -8
  114. package/build/store/reducer.js.map +1 -1
  115. package/build/store/selectors.js +33 -15
  116. package/build/store/selectors.js.map +1 -1
  117. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js +9 -2
  118. package/build-module/components/block-heading-level-dropdown/heading-level-icon.js.map +1 -1
  119. package/build-module/components/block-heading-level-dropdown/index.native.js +4 -3
  120. package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
  121. package/build-module/components/block-lock/toolbar.js +25 -7
  122. package/build-module/components/block-lock/toolbar.js.map +1 -1
  123. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +4 -6
  124. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  125. package/build-module/components/block-parent-selector/index.js +7 -5
  126. package/build-module/components/block-parent-selector/index.js.map +1 -1
  127. package/build-module/components/block-removal-warning-modal/index.js +20 -24
  128. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  129. package/build-module/components/block-toolbar/index.js +8 -5
  130. package/build-module/components/block-toolbar/index.js.map +1 -1
  131. package/build-module/components/block-tools/block-contextual-toolbar.js +8 -11
  132. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  133. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +87 -0
  134. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -0
  135. package/build-module/components/dimensions-tool/index.js +195 -0
  136. package/build-module/components/dimensions-tool/index.js.map +1 -0
  137. package/build-module/components/dimensions-tool/scale-tool.js +103 -0
  138. package/build-module/components/dimensions-tool/scale-tool.js.map +1 -0
  139. package/build-module/components/dimensions-tool/width-height-tool.js +122 -0
  140. package/build-module/components/dimensions-tool/width-height-tool.js.map +1 -0
  141. package/build-module/components/global-styles/color-panel.js +1 -1
  142. package/build-module/components/global-styles/color-panel.js.map +1 -1
  143. package/build-module/components/global-styles/filters-panel.js +2 -2
  144. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  145. package/build-module/components/global-styles/hooks.js +2 -2
  146. package/build-module/components/global-styles/hooks.js.map +1 -1
  147. package/build-module/components/global-styles/typography-panel.js +33 -2
  148. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  149. package/build-module/components/image-editor/aspect-ratio-dropdown.js +1 -1
  150. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  151. package/build-module/components/image-editor/use-save-image.js +1 -2
  152. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  153. package/build-module/components/image-size-control/index.js +5 -0
  154. package/build-module/components/image-size-control/index.js.map +1 -1
  155. package/build-module/components/index.js +6 -0
  156. package/build-module/components/index.js.map +1 -1
  157. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +2 -2
  158. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  159. package/build-module/components/inserter/block-patterns-tab.js +7 -33
  160. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  161. package/build-module/components/inserter/hooks/use-block-types-state.js +3 -4
  162. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  163. package/build-module/components/inserter/hooks/use-patterns-state.js +9 -3
  164. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  165. package/build-module/components/inserter/media-tab/hooks.js +2 -21
  166. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  167. package/build-module/components/inserter/reusable-block-rename-hint.js +48 -0
  168. package/build-module/components/inserter/reusable-block-rename-hint.js.map +1 -0
  169. package/build-module/components/inserter/reusable-blocks-tab.js +5 -2
  170. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  171. package/build-module/components/inserter/reusable-blocks-tab.native.js +2 -2
  172. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  173. package/build-module/components/inserter/tabs.native.js +1 -1
  174. package/build-module/components/inserter/tabs.native.js.map +1 -1
  175. package/build-module/components/inserter-draggable-blocks/index.js +9 -2
  176. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  177. package/build-module/components/link-control/constants.js +1 -1
  178. package/build-module/components/link-control/constants.js.map +1 -1
  179. package/build-module/components/link-control/index.js +17 -15
  180. package/build-module/components/link-control/index.js.map +1 -1
  181. package/build-module/components/link-control/search-create-button.js +7 -20
  182. package/build-module/components/link-control/search-create-button.js.map +1 -1
  183. package/build-module/components/link-control/search-input.js +4 -4
  184. package/build-module/components/link-control/search-input.js.map +1 -1
  185. package/build-module/components/link-control/search-item.js +14 -28
  186. package/build-module/components/link-control/search-item.js.map +1 -1
  187. package/build-module/components/link-control/search-results.js +3 -3
  188. package/build-module/components/link-control/search-results.js.map +1 -1
  189. package/build-module/components/link-control/settings-drawer.js +4 -5
  190. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  191. package/build-module/components/list-view/appender.js +2 -6
  192. package/build-module/components/list-view/appender.js.map +1 -1
  193. package/build-module/components/provider/index.js +5 -2
  194. package/build-module/components/provider/index.js.map +1 -1
  195. package/build-module/components/provider/use-block-sync.js +21 -0
  196. package/build-module/components/provider/use-block-sync.js.map +1 -1
  197. package/build-module/components/resolution-tool/index.js +45 -0
  198. package/build-module/components/resolution-tool/index.js.map +1 -0
  199. package/build-module/components/url-input/index.js +4 -2
  200. package/build-module/components/url-input/index.js.map +1 -1
  201. package/build-module/components/writing-flow/use-tab-nav.js +8 -26
  202. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  203. package/build-module/components/writing-mode-control/index.js +57 -0
  204. package/build-module/components/writing-mode-control/index.js.map +1 -0
  205. package/build-module/hooks/behaviors.js +26 -20
  206. package/build-module/hooks/behaviors.js.map +1 -1
  207. package/build-module/hooks/supports.js +7 -1
  208. package/build-module/hooks/supports.js.map +1 -1
  209. package/build-module/hooks/typography.js +2 -1
  210. package/build-module/hooks/typography.js.map +1 -1
  211. package/build-module/hooks/utils.js +4 -2
  212. package/build-module/hooks/utils.js.map +1 -1
  213. package/build-module/private-apis.js +7 -1
  214. package/build-module/private-apis.js.map +1 -1
  215. package/build-module/private-apis.native.js +2 -0
  216. package/build-module/private-apis.native.js.map +1 -1
  217. package/build-module/store/actions.js +191 -1
  218. package/build-module/store/actions.js.map +1 -1
  219. package/build-module/store/defaults.js +1 -0
  220. package/build-module/store/defaults.js.map +1 -1
  221. package/build-module/store/index.js +10 -1
  222. package/build-module/store/index.js.map +1 -1
  223. package/build-module/store/private-actions.js +45 -36
  224. package/build-module/store/private-actions.js.map +1 -1
  225. package/build-module/store/private-selectors.js +2 -2
  226. package/build-module/store/private-selectors.js.map +1 -1
  227. package/build-module/store/reducer.js +22 -8
  228. package/build-module/store/reducer.js.map +1 -1
  229. package/build-module/store/selectors.js +33 -15
  230. package/build-module/store/selectors.js.map +1 -1
  231. package/build-style/content-rtl.css +3 -0
  232. package/build-style/content.css +3 -0
  233. package/build-style/style-rtl.css +131 -129
  234. package/build-style/style.css +131 -129
  235. package/package.json +32 -31
  236. package/src/components/alignment-control/test/__snapshots__/index.js.snap +6 -6
  237. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +5 -5
  238. package/src/components/block-draggable/style.scss +1 -0
  239. package/src/components/block-heading-level-dropdown/heading-level-icon.js +6 -1
  240. package/src/components/block-heading-level-dropdown/index.native.js +8 -4
  241. package/src/components/block-inspector/style.scss +2 -1
  242. package/src/components/block-lock/toolbar.js +34 -6
  243. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +4 -8
  244. package/src/components/block-parent-selector/index.js +13 -8
  245. package/src/components/block-removal-warning-modal/index.js +20 -33
  246. package/src/components/block-toolbar/index.js +9 -6
  247. package/src/components/block-tools/block-contextual-toolbar.js +5 -11
  248. package/src/components/block-tools/style.scss +73 -26
  249. package/src/components/default-block-appender/content.scss +11 -0
  250. package/src/components/dimensions-tool/aspect-ratio-tool.js +124 -0
  251. package/src/components/dimensions-tool/index.js +212 -0
  252. package/src/components/dimensions-tool/scale-tool.js +124 -0
  253. package/src/components/dimensions-tool/stories/aspect-ratio-tool.js +52 -0
  254. package/src/components/dimensions-tool/stories/index.js +54 -0
  255. package/src/components/dimensions-tool/stories/scale-tool.js +48 -0
  256. package/src/components/dimensions-tool/stories/width-height-tool.js +54 -0
  257. package/src/components/dimensions-tool/test/index.js +641 -0
  258. package/src/components/dimensions-tool/width-height-tool.js +113 -0
  259. package/src/components/font-family/README.md +71 -0
  260. package/src/components/global-styles/color-panel.js +1 -1
  261. package/src/components/global-styles/filters-panel.js +2 -2
  262. package/src/components/global-styles/hooks.js +2 -0
  263. package/src/components/global-styles/typography-panel.js +40 -0
  264. package/src/components/image-editor/aspect-ratio-dropdown.js +1 -1
  265. package/src/components/image-editor/use-save-image.js +0 -1
  266. package/src/components/image-size-control/index.js +6 -0
  267. package/src/components/index.js +6 -0
  268. package/src/components/inserter/block-patterns-explorer/patterns-list.js +8 -2
  269. package/src/components/inserter/block-patterns-tab.js +8 -56
  270. package/src/components/inserter/hooks/use-block-types-state.js +3 -4
  271. package/src/components/inserter/hooks/use-patterns-state.js +35 -19
  272. package/src/components/inserter/media-tab/hooks.js +2 -22
  273. package/src/components/inserter/reusable-block-rename-hint.js +52 -0
  274. package/src/components/inserter/reusable-blocks-tab.js +5 -1
  275. package/src/components/inserter/reusable-blocks-tab.native.js +2 -2
  276. package/src/components/inserter/style.scss +28 -0
  277. package/src/components/inserter/tabs.native.js +5 -1
  278. package/src/components/inserter-draggable-blocks/index.js +13 -2
  279. package/src/components/link-control/constants.js +1 -1
  280. package/src/components/link-control/index.js +32 -28
  281. package/src/components/link-control/search-create-button.js +8 -26
  282. package/src/components/link-control/search-input.js +4 -3
  283. package/src/components/link-control/search-item.js +21 -43
  284. package/src/components/link-control/search-results.js +48 -46
  285. package/src/components/link-control/settings-drawer.js +6 -5
  286. package/src/components/link-control/style.scss +51 -123
  287. package/src/components/link-control/test/index.js +135 -123
  288. package/src/components/list-view/appender.js +5 -6
  289. package/src/components/list-view/style.scss +1 -2
  290. package/src/components/media-replace-flow/test/index.js +1 -1
  291. package/src/components/panel-color-settings/README.md +98 -0
  292. package/src/components/provider/index.js +9 -2
  293. package/src/components/provider/test/use-block-sync.js +21 -6
  294. package/src/components/provider/use-block-sync.js +19 -0
  295. package/src/components/recursion-provider/README.md +101 -0
  296. package/src/components/resolution-tool/index.js +56 -0
  297. package/src/components/resolution-tool/stories/index.js +48 -0
  298. package/src/components/url-input/index.js +2 -0
  299. package/src/components/writing-flow/use-tab-nav.js +10 -33
  300. package/src/components/writing-mode-control/index.js +68 -0
  301. package/src/components/writing-mode-control/style.scss +18 -0
  302. package/src/hooks/behaviors.js +25 -16
  303. package/src/hooks/supports.js +7 -0
  304. package/src/hooks/typography.js +2 -0
  305. package/src/hooks/utils.js +3 -0
  306. package/src/private-apis.js +6 -0
  307. package/src/private-apis.native.js +2 -0
  308. package/src/store/actions.js +194 -1
  309. package/src/store/defaults.js +1 -0
  310. package/src/store/index.js +10 -0
  311. package/src/store/private-actions.js +39 -39
  312. package/src/store/private-selectors.js +2 -2
  313. package/src/store/reducer.js +22 -8
  314. package/src/store/selectors.js +54 -20
  315. package/src/store/test/actions.js +111 -0
  316. package/src/store/test/private-actions.js +56 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 12.5.0 (2023-07-05)
6
+
5
7
  ## 12.4.0 (2023-06-23)
6
8
 
7
9
  ### Enhancements
package/README.md CHANGED
@@ -680,6 +680,10 @@ _Related_
680
680
 
681
681
  Private @wordpress/block-editor APIs.
682
682
 
683
+ ### ReusableBlocksRenameHint
684
+
685
+ Undocumented declaration.
686
+
683
687
  ### RichText
684
688
 
685
689
  _Related_
@@ -711,6 +715,7 @@ _Properties_
711
715
  - _maxWidth_ `number`: Max width to constraint resizing
712
716
  - _allowedBlockTypes_ `boolean|Array`: Allowed block types
713
717
  - _hasFixedToolbar_ `boolean`: Whether or not the editor toolbar is fixed
718
+ - _distractionFree_ `boolean`: Whether or not the editor UI is distraction free
714
719
  - _focusMode_ `boolean`: Whether the focus mode is enabled or not
715
720
  - _styles_ `Array`: Editor Styles
716
721
  - _keepCaretInsideBlock_ `boolean`: Whether caret should move between blocks in edit mode
@@ -5,8 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = HeadingLevelIcon;
7
7
 
8
+ var _element = require("@wordpress/element");
9
+
8
10
  var _icons = require("@wordpress/icons");
9
11
 
12
+ var _components = require("@wordpress/components");
13
+
10
14
  /**
11
15
  * WordPress dependencies
12
16
  */
@@ -40,8 +44,12 @@ const LEVEL_TO_PATH = {
40
44
  function HeadingLevelIcon({
41
45
  level
42
46
  }) {
43
- var _LEVEL_TO_PATH$level;
47
+ if (LEVEL_TO_PATH[level]) {
48
+ return (0, _element.createElement)(_components.Icon, {
49
+ icon: LEVEL_TO_PATH[level]
50
+ });
51
+ }
44
52
 
45
- return (_LEVEL_TO_PATH$level = LEVEL_TO_PATH[level]) !== null && _LEVEL_TO_PATH$level !== void 0 ? _LEVEL_TO_PATH$level : null;
53
+ return null;
46
54
  }
47
55
  //# sourceMappingURL=heading-level-icon.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-heading-level-dropdown/heading-level-icon.js"],"names":["LEVEL_TO_PATH","paragraph","headingLevel1","headingLevel2","headingLevel3","headingLevel4","headingLevel5","headingLevel6","HeadingLevelIcon","level"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;;AAWA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,aAAa,GAAG;AACrB,KAAGC,gBADkB;AAErB,KAAGC,oBAFkB;AAGrB,KAAGC,oBAHkB;AAIrB,KAAGC,oBAJkB;AAKrB,KAAGC,oBALkB;AAMrB,KAAGC,oBANkB;AAOrB,KAAGC;AAPkB,CAAtB;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,gBAAT,CAA2B;AAAEC,EAAAA;AAAF,CAA3B,EAAuC;AAAA;;AACrD,iCAAOT,aAAa,CAAES,KAAF,CAApB,uEAAiC,IAAjC;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\theadingLevel1,\n\theadingLevel2,\n\theadingLevel3,\n\theadingLevel4,\n\theadingLevel5,\n\theadingLevel6,\n\tparagraph,\n} from '@wordpress/icons';\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * HeadingLevelIcon props.\n *\n * @typedef WPHeadingLevelIconProps\n *\n * @property {number} level The heading level to show an icon for.\n */\n\nconst LEVEL_TO_PATH = {\n\t0: paragraph,\n\t1: headingLevel1,\n\t2: headingLevel2,\n\t3: headingLevel3,\n\t4: headingLevel4,\n\t5: headingLevel5,\n\t6: headingLevel6,\n};\n\n/**\n * Heading level icon.\n *\n * @param {WPHeadingLevelIconProps} props Component props.\n *\n * @return {?WPComponent} The icon.\n */\nexport default function HeadingLevelIcon( { level } ) {\n\treturn LEVEL_TO_PATH[ level ] ?? null;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-heading-level-dropdown/heading-level-icon.js"],"names":["LEVEL_TO_PATH","paragraph","headingLevel1","headingLevel2","headingLevel3","headingLevel4","headingLevel5","headingLevel6","HeadingLevelIcon","level"],"mappings":";;;;;;;;;AAGA;;AASA;;AAZA;AACA;AACA;;AAYA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,aAAa,GAAG;AACrB,KAAGC,gBADkB;AAErB,KAAGC,oBAFkB;AAGrB,KAAGC,oBAHkB;AAIrB,KAAGC,oBAJkB;AAKrB,KAAGC,oBALkB;AAMrB,KAAGC,oBANkB;AAOrB,KAAGC;AAPkB,CAAtB;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,gBAAT,CAA2B;AAAEC,EAAAA;AAAF,CAA3B,EAAuC;AACrD,MAAKT,aAAa,CAAES,KAAF,CAAlB,EAA8B;AAC7B,WAAO,4BAAC,gBAAD;AAAM,MAAA,IAAI,EAAGT,aAAa,CAAES,KAAF;AAA1B,MAAP;AACA;;AAED,SAAO,IAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\theadingLevel1,\n\theadingLevel2,\n\theadingLevel3,\n\theadingLevel4,\n\theadingLevel5,\n\theadingLevel6,\n\tparagraph,\n} from '@wordpress/icons';\nimport { Icon } from '@wordpress/components';\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * HeadingLevelIcon props.\n *\n * @typedef WPHeadingLevelIconProps\n *\n * @property {number} level The heading level to show an icon for.\n */\n\nconst LEVEL_TO_PATH = {\n\t0: paragraph,\n\t1: headingLevel1,\n\t2: headingLevel2,\n\t3: headingLevel3,\n\t4: headingLevel4,\n\t5: headingLevel5,\n\t6: headingLevel6,\n};\n\n/**\n * Heading level icon.\n *\n * @param {WPHeadingLevelIconProps} props Component props.\n *\n * @return {?WPComponent} The icon.\n */\nexport default function HeadingLevelIcon( { level } ) {\n\tif ( LEVEL_TO_PATH[ level ] ) {\n\t\treturn <Icon icon={ LEVEL_TO_PATH[ level ] } />;\n\t}\n\n\treturn null;\n}\n"]}
@@ -44,7 +44,8 @@ const HEADING_LEVELS = [1, 2, 3, 4, 5, 6];
44
44
  */
45
45
 
46
46
  function HeadingLevelDropdown({
47
- selectedLevel,
47
+ options = HEADING_LEVELS,
48
+ value,
48
49
  onChange
49
50
  }) {
50
51
  const createLevelControl = (targetLevel, currentLevel, onChangeCallback) => {
@@ -63,9 +64,9 @@ function HeadingLevelDropdown({
63
64
 
64
65
  return (0, _element.createElement)(_components.DropdownMenu, {
65
66
  icon: (0, _element.createElement)(_headingLevelIcon.default, {
66
- level: selectedLevel
67
+ level: value
67
68
  }),
68
- controls: HEADING_LEVELS.map(index => createLevelControl(index, selectedLevel, onChange)),
69
+ controls: options.map(index => createLevelControl(index, value, onChange)),
69
70
  label: (0, _i18n.__)('Change level')
70
71
  });
71
72
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-heading-level-dropdown/index.native.js"],"names":["HEADING_LEVELS","HeadingLevelDropdown","selectedLevel","onChange","createLevelControl","targetLevel","currentLevel","onChangeCallback","isActive","icon","title","onClick","map","index"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGA,MAAMA,cAAc,GAAG,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,CAAjB,CAAvB;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,oBAAT,CAA+B;AAAEC,EAAAA,aAAF;AAAiBC,EAAAA;AAAjB,CAA/B,EAA6D;AAC3E,QAAMC,kBAAkB,GAAG,CAC1BC,WAD0B,EAE1BC,YAF0B,EAG1BC,gBAH0B,KAItB;AACJ,UAAMC,QAAQ,GAAGH,WAAW,KAAKC,YAAjC;AACA,WAAO;AACNG,MAAAA,IAAI,EACH,4BAAC,yBAAD;AACC,QAAA,KAAK,EAAGJ,WADT;AAEC,QAAA,SAAS,EAAGG;AAFb,QAFK;AAON;AACAE,MAAAA,KAAK,EAAE,mBAAS,cAAI,YAAJ,CAAT,EAA6BL,WAA7B,CARD;AASNG,MAAAA,QATM;AAUNG,MAAAA,OAAO,EAAE,MAAMJ,gBAAgB,CAAEF,WAAF;AAVzB,KAAP;AAYA,GAlBD;;AAoBA,SACC,4BAAC,wBAAD;AACC,IAAA,IAAI,EAAG,4BAAC,yBAAD;AAAkB,MAAA,KAAK,EAAGH;AAA1B,MADR;AAEC,IAAA,QAAQ,EAAGF,cAAc,CAACY,GAAf,CAAsBC,KAAF,IAC9BT,kBAAkB,CAAES,KAAF,EAASX,aAAT,EAAwBC,QAAxB,CADR,CAFZ;AAKC,IAAA,KAAK,EAAG,cAAI,cAAJ;AALT,IADD;AASA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { DropdownMenu } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelIcon from './heading-level-icon';\n\nconst HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * HeadingLevelDropdown props.\n *\n * @typedef WPHeadingLevelDropdownProps\n *\n * @property {number} selectedLevel The chosen heading level.\n * @property {(newValue:number)=>any} onChange Callback to run when\n * toolbar value is changed.\n */\n\n/**\n * Dropdown for selecting a heading level (1 through 6).\n *\n * @param {WPHeadingLevelDropdownProps} props Component props.\n *\n * @return {WPComponent} The toolbar.\n */\nexport default function HeadingLevelDropdown( { selectedLevel, onChange } ) {\n\tconst createLevelControl = (\n\t\ttargetLevel,\n\t\tcurrentLevel,\n\t\tonChangeCallback\n\t) => {\n\t\tconst isActive = targetLevel === currentLevel;\n\t\treturn {\n\t\t\ticon: (\n\t\t\t\t<HeadingLevelIcon\n\t\t\t\t\tlevel={ targetLevel }\n\t\t\t\t\tisPressed={ isActive }\n\t\t\t\t/>\n\t\t\t),\n\t\t\t// translators: %s: heading level e.g: \"1\", \"2\", \"3\"\n\t\t\ttitle: sprintf( __( 'Heading %d' ), targetLevel ),\n\t\t\tisActive,\n\t\t\tonClick: () => onChangeCallback( targetLevel ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ <HeadingLevelIcon level={ selectedLevel } /> }\n\t\t\tcontrols={ HEADING_LEVELS.map( ( index ) =>\n\t\t\t\tcreateLevelControl( index, selectedLevel, onChange )\n\t\t\t) }\n\t\t\tlabel={ __( 'Change level' ) }\n\t\t/>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-heading-level-dropdown/index.native.js"],"names":["HEADING_LEVELS","HeadingLevelDropdown","options","value","onChange","createLevelControl","targetLevel","currentLevel","onChangeCallback","isActive","icon","title","onClick","map","index"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGA,MAAMA,cAAc,GAAG,CAAE,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,CAAjB,CAAvB;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,oBAAT,CAA+B;AAC7CC,EAAAA,OAAO,GAAGF,cADmC;AAE7CG,EAAAA,KAF6C;AAG7CC,EAAAA;AAH6C,CAA/B,EAIX;AACH,QAAMC,kBAAkB,GAAG,CAC1BC,WAD0B,EAE1BC,YAF0B,EAG1BC,gBAH0B,KAItB;AACJ,UAAMC,QAAQ,GAAGH,WAAW,KAAKC,YAAjC;AACA,WAAO;AACNG,MAAAA,IAAI,EACH,4BAAC,yBAAD;AACC,QAAA,KAAK,EAAGJ,WADT;AAEC,QAAA,SAAS,EAAGG;AAFb,QAFK;AAON;AACAE,MAAAA,KAAK,EAAE,mBAAS,cAAI,YAAJ,CAAT,EAA6BL,WAA7B,CARD;AASNG,MAAAA,QATM;AAUNG,MAAAA,OAAO,EAAE,MAAMJ,gBAAgB,CAAEF,WAAF;AAVzB,KAAP;AAYA,GAlBD;;AAoBA,SACC,4BAAC,wBAAD;AACC,IAAA,IAAI,EAAG,4BAAC,yBAAD;AAAkB,MAAA,KAAK,EAAGH;AAA1B,MADR;AAEC,IAAA,QAAQ,EAAGD,OAAO,CAACW,GAAR,CAAeC,KAAF,IACvBT,kBAAkB,CAAES,KAAF,EAASX,KAAT,EAAgBC,QAAhB,CADR,CAFZ;AAKC,IAAA,KAAK,EAAG,cAAI,cAAJ;AALT,IADD;AASA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { DropdownMenu } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelIcon from './heading-level-icon';\n\nconst HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * HeadingLevelDropdown props.\n *\n * @typedef WPHeadingLevelDropdownProps\n *\n * @property {number} selectedLevel The chosen heading level.\n * @property {(newValue:number)=>any} onChange Callback to run when\n * toolbar value is changed.\n */\n\n/**\n * Dropdown for selecting a heading level (1 through 6).\n *\n * @param {WPHeadingLevelDropdownProps} props Component props.\n *\n * @return {WPComponent} The toolbar.\n */\nexport default function HeadingLevelDropdown( {\n\toptions = HEADING_LEVELS,\n\tvalue,\n\tonChange,\n} ) {\n\tconst createLevelControl = (\n\t\ttargetLevel,\n\t\tcurrentLevel,\n\t\tonChangeCallback\n\t) => {\n\t\tconst isActive = targetLevel === currentLevel;\n\t\treturn {\n\t\t\ticon: (\n\t\t\t\t<HeadingLevelIcon\n\t\t\t\t\tlevel={ targetLevel }\n\t\t\t\t\tisPressed={ isActive }\n\t\t\t\t/>\n\t\t\t),\n\t\t\t// translators: %s: heading level e.g: \"1\", \"2\", \"3\"\n\t\t\ttitle: sprintf( __( 'Heading %d' ), targetLevel ),\n\t\t\tisActive,\n\t\t\tonClick: () => onChangeCallback( targetLevel ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ <HeadingLevelIcon level={ value } /> }\n\t\t\tcontrols={ options.map( ( index ) =>\n\t\t\t\tcreateLevelControl( index, value, onChange )\n\t\t\t) }\n\t\t\tlabel={ __( 'Change level' ) }\n\t\t/>\n\t);\n}\n"]}
@@ -13,6 +13,8 @@ var _i18n = require("@wordpress/i18n");
13
13
 
14
14
  var _components = require("@wordpress/components");
15
15
 
16
+ var _dom = require("@wordpress/dom");
17
+
16
18
  var _icons = require("@wordpress/icons");
17
19
 
18
20
  var _modal = _interopRequireDefault(require("./modal"));
@@ -27,7 +29,8 @@ var _useBlockLock = _interopRequireDefault(require("./use-block-lock"));
27
29
  * Internal dependencies
28
30
  */
29
31
  function BlockLockToolbar({
30
- clientId
32
+ clientId,
33
+ wrapperRef
31
34
  }) {
32
35
  const {
33
36
  canEdit,
@@ -36,12 +39,27 @@ function BlockLockToolbar({
36
39
  canLock
37
40
  } = (0, _useBlockLock.default)(clientId);
38
41
  const [isModalOpen, toggleModal] = (0, _element.useReducer)(isActive => !isActive, false);
42
+ const lockButtonRef = (0, _element.useRef)(null);
43
+ const isFirstRender = (0, _element.useRef)(true);
44
+ const shouldHideBlockLockUI = !canLock || canEdit && canMove && canRemove; // Restore focus manually on the first focusable element in the toolbar
45
+ // when the block lock modal is closed and the block is not locked anymore.
46
+ // See https://github.com/WordPress/gutenberg/issues/51447
39
47
 
40
- if (!canLock) {
41
- return null;
42
- }
48
+ (0, _element.useEffect)(() => {
49
+ if (isFirstRender.current) {
50
+ isFirstRender.current = false;
51
+ return;
52
+ }
53
+
54
+ if (!isModalOpen && shouldHideBlockLockUI) {
55
+ _dom.focus.focusable.find(wrapperRef.current, {
56
+ sequential: false
57
+ }).find(element => element.tagName === 'BUTTON' && element !== lockButtonRef.current)?.focus();
58
+ } // wrapperRef is a reference object and should be stable
59
+
60
+ }, [isModalOpen, shouldHideBlockLockUI, wrapperRef]);
43
61
 
44
- if (canEdit && canMove && canRemove) {
62
+ if (shouldHideBlockLockUI) {
45
63
  return null;
46
64
  }
47
65
 
@@ -50,7 +68,8 @@ function BlockLockToolbar({
50
68
  }, (0, _element.createElement)(_components.ToolbarButton, {
51
69
  icon: _icons.lock,
52
70
  label: (0, _i18n.__)('Unlock'),
53
- onClick: toggleModal
71
+ onClick: toggleModal,
72
+ ref: lockButtonRef
54
73
  })), isModalOpen && (0, _element.createElement)(_modal.default, {
55
74
  clientId: clientId,
56
75
  onClose: toggleModal
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/toolbar.js"],"names":["BlockLockToolbar","clientId","canEdit","canMove","canRemove","canLock","isModalOpen","toggleModal","isActive","lock"],"mappings":";;;;;;;;;AAKA;;AAFA;;AACA;;AAEA;;AAKA;;AACA;;AAZA;AACA;AACA;;AAMA;AACA;AACA;AAIe,SAASA,gBAAT,CAA2B;AAAEC,EAAAA;AAAF,CAA3B,EAA0C;AACxD,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,OAAX;AAAoBC,IAAAA,SAApB;AAA+BC,IAAAA;AAA/B,MAA2C,2BAAcJ,QAAd,CAAjD;AAEA,QAAM,CAAEK,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;;AAKA,MAAK,CAAEH,OAAP,EAAiB;AAChB,WAAO,IAAP;AACA;;AAED,MAAKH,OAAO,IAAIC,OAAX,IAAsBC,SAA3B,EAAuC;AACtC,WAAO,IAAP;AACA;;AAED,SACC,qDACC,4BAAC,wBAAD;AAAc,IAAA,SAAS,EAAC;AAAxB,KACC,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAGK,WADR;AAEC,IAAA,KAAK,EAAG,cAAI,QAAJ,CAFT;AAGC,IAAA,OAAO,EAAGF;AAHX,IADD,CADD,EAQGD,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGL,QAA3B;AAAsC,IAAA,OAAO,EAAGM;AAAhD,IATF,CADD;AAcA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useReducer } from '@wordpress/element';\nimport { lock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockLockModal from './modal';\nimport useBlockLock from './use-block-lock';\n\nexport default function BlockLockToolbar( { clientId } ) {\n\tconst { canEdit, canMove, canRemove, canLock } = useBlockLock( clientId );\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tif ( ! canLock ) {\n\t\treturn null;\n\t}\n\n\tif ( canEdit && canMove && canRemove ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup className=\"block-editor-block-lock-toolbar\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ lock }\n\t\t\t\t\tlabel={ __( 'Unlock' ) }\n\t\t\t\t\tonClick={ toggleModal }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/toolbar.js"],"names":["BlockLockToolbar","clientId","wrapperRef","canEdit","canMove","canRemove","canLock","isModalOpen","toggleModal","isActive","lockButtonRef","isFirstRender","shouldHideBlockLockUI","current","focus","focusable","find","sequential","element","tagName","lock"],"mappings":";;;;;;;;;AAMA;;AAHA;;AACA;;AACA;;AAEA;;AAKA;;AACA;;AAbA;AACA;AACA;;AAOA;AACA;AACA;AAIe,SAASA,gBAAT,CAA2B;AAAEC,EAAAA,QAAF;AAAYC,EAAAA;AAAZ,CAA3B,EAAsD;AACpE,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,OAAX;AAAoBC,IAAAA,SAApB;AAA+BC,IAAAA;AAA/B,MAA2C,2BAAcL,QAAd,CAAjD;AAEA,QAAM,CAAEM,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;AAKA,QAAMC,aAAa,GAAG,qBAAQ,IAAR,CAAtB;AACA,QAAMC,aAAa,GAAG,qBAAQ,IAAR,CAAtB;AAEA,QAAMC,qBAAqB,GAC1B,CAAEN,OAAF,IAAeH,OAAO,IAAIC,OAAX,IAAsBC,SADtC,CAXoE,CAcpE;AACA;AACA;;AACA,0BAAW,MAAM;AAChB,QAAKM,aAAa,CAACE,OAAnB,EAA6B;AAC5BF,MAAAA,aAAa,CAACE,OAAd,GAAwB,KAAxB;AACA;AACA;;AAED,QAAK,CAAEN,WAAF,IAAiBK,qBAAtB,EAA8C;AAC7CE,iBAAMC,SAAN,CACEC,IADF,CACQd,UAAU,CAACW,OADnB,EAC4B;AAC1BI,QAAAA,UAAU,EAAE;AADc,OAD5B,EAIED,IAJF,CAKIE,OAAF,IACCA,OAAO,CAACC,OAAR,KAAoB,QAApB,IACAD,OAAO,KAAKR,aAAa,CAACG,OAP7B,GASGC,KATH;AAUA,KAjBe,CAkBhB;;AACA,GAnBD,EAmBG,CAAEP,WAAF,EAAeK,qBAAf,EAAsCV,UAAtC,CAnBH;;AAqBA,MAAKU,qBAAL,EAA6B;AAC5B,WAAO,IAAP;AACA;;AAED,SACC,qDACC,4BAAC,wBAAD;AAAc,IAAA,SAAS,EAAC;AAAxB,KACC,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAGQ,WADR;AAEC,IAAA,KAAK,EAAG,cAAI,QAAJ,CAFT;AAGC,IAAA,OAAO,EAAGZ,WAHX;AAIC,IAAA,GAAG,EAAGE;AAJP,IADD,CADD,EASGH,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGN,QAA3B;AAAsC,IAAA,OAAO,EAAGO;AAAhD,IAVF,CADD;AAeA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { focus } from '@wordpress/dom';\nimport { useReducer, useRef, useEffect } from '@wordpress/element';\nimport { lock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockLockModal from './modal';\nimport useBlockLock from './use-block-lock';\n\nexport default function BlockLockToolbar( { clientId, wrapperRef } ) {\n\tconst { canEdit, canMove, canRemove, canLock } = useBlockLock( clientId );\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tconst lockButtonRef = useRef( null );\n\tconst isFirstRender = useRef( true );\n\n\tconst shouldHideBlockLockUI =\n\t\t! canLock || ( canEdit && canMove && canRemove );\n\n\t// Restore focus manually on the first focusable element in the toolbar\n\t// when the block lock modal is closed and the block is not locked anymore.\n\t// See https://github.com/WordPress/gutenberg/issues/51447\n\tuseEffect( () => {\n\t\tif ( isFirstRender.current ) {\n\t\t\tisFirstRender.current = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! isModalOpen && shouldHideBlockLockUI ) {\n\t\t\tfocus.focusable\n\t\t\t\t.find( wrapperRef.current, {\n\t\t\t\t\tsequential: false,\n\t\t\t\t} )\n\t\t\t\t.find(\n\t\t\t\t\t( element ) =>\n\t\t\t\t\t\telement.tagName === 'BUTTON' &&\n\t\t\t\t\t\telement !== lockButtonRef.current\n\t\t\t\t)\n\t\t\t\t?.focus();\n\t\t}\n\t\t// wrapperRef is a reference object and should be stable\n\t}, [ isModalOpen, shouldHideBlockLockUI, wrapperRef ] );\n\n\tif ( shouldHideBlockLockUI ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup className=\"block-editor-block-lock-toolbar\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ lock }\n\t\t\t\t\tlabel={ __( 'Unlock' ) }\n\t\t\t\t\tonClick={ toggleModal }\n\t\t\t\t\tref={ lockButtonRef }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -196,14 +196,11 @@ const BlockActionsMenu = ({
196
196
  },
197
197
  convertToRegularBlocks: {
198
198
  id: 'convertToRegularBlocksOption',
199
- label: innerBlockCount > 1 ? (0, _i18n.__)('Convert to regular blocks') : (0, _i18n.__)('Convert to regular block'),
199
+ label: innerBlockCount > 1 ? (0, _i18n.__)('Detach patterns') : (0, _i18n.__)('Detach pattern'),
200
200
  value: 'convertToRegularBlocksOption',
201
201
  onSelect: () => {
202
- const successNotice = innerBlockCount > 1 ?
203
- /* translators: %s: name of the reusable block */
204
- (0, _i18n.__)('%s converted to regular blocks') :
205
- /* translators: %s: name of the reusable block */
206
- (0, _i18n.__)('%s converted to regular block');
202
+ /* translators: %s: name of the synced block */
203
+ const successNotice = (0, _i18n.__)('%s detached');
207
204
  createSuccessNotice((0, _i18n.sprintf)(successNotice, reusableBlock?.title?.raw || blockTitle));
208
205
  convertToRegularBlocks();
209
206
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/block-actions-menu.native.js"],"names":["BlockActionsMenu","blockTitle","canInsertBlockType","getBlocksByClientId","isEmptyDefaultBlock","isLocked","canDuplicate","isFirst","isLast","isReusableBlockType","reusableBlock","rootClientId","selectedBlockClientId","selectedBlockPossibleTransformations","canRemove","createSuccessNotice","convertToRegularBlocks","duplicateBlock","onMoveDown","onMoveUp","openGeneralSidebar","pasteBlock","removeBlocks","anchorNodeRef","isStackedHorizontally","onDelete","wrapBlockMover","wrapBlockSettings","clipboard","setCurrentClipboard","blockActionsMenuPickerRef","blockTransformationMenuPickerRef","moversOptions","keys","clipboardBlock","HTML","isPasteEnabled","name","innerBlockCount","select","blockEditorStore","getBlockCount","actionTitle","backward","backwardButtonTitle","forward","forwardButtonTitle","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","convertToGroupButtons","allOptions","settings","id","label","value","onSelect","backwardButton","disabled","forwardButton","delete","separated","transformButton","current","presentPicker","copyButton","serializedBlock","cutButton","pasteButton","onPasteBlock","duplicateButton","successNotice","title","raw","options","length","group","ungroup","filter","Boolean","moreHorizontalMobile","onPickerSelect","selectedItem","find","item","onPickerPresent","disabledButtonIndices","map","option","index","accessibilityHint","Platform","OS","getAnchor","undefined","hint","EMPTY_BLOCK_LIST","clientId","getBlockIndex","getBlockRootClientId","getBlockOrder","getBlockName","getBlockTransformItems","getBlock","getSelectedBlockClientIds","getTemplateLock","canRemoveBlock","block","blockName","blockType","blockOrder","currentBlockIndex","innerBlocks","every","innerBlock","isDefaultBlock","isEmptyContent","attributes","content","isExactlyOneBlock","selectedBlock","coreStore","getEntityRecord","ref","currentIndex","dispatch","moveBlocksDown","moveBlocksUp","duplicateBlocks","insertBlock","replaceBlock","clearSelectedBlock","getBlockSelectionEnd","noticesStore","__experimentalConvertBlockToStatic","convertBlockToStatic","reusableBlocksStore","setImmediate","args","canReplaceBlock","insertedBlock","withInstanceId"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform, findNodeHandle } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetClipboard,\n\tsetClipboard,\n\tToolbarButton,\n\tPicker,\n} from '@wordpress/components';\nimport {\n\tgetBlockType,\n\tgetDefaultBlockName,\n\thasBlockSupport,\n\tserialize,\n\trawHandler,\n\tcreateBlock,\n\tisUnmodifiedDefaultBlock,\n\tisReusableBlock,\n} from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withDispatch, withSelect, useSelect } from '@wordpress/data';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { moreHorizontalMobile } from '@wordpress/icons';\nimport { useRef, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n// Disable Reason: Needs to be refactored.\n// eslint-disable-next-line no-restricted-imports\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getMoversSetup } from '../block-mover/mover-description';\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from '../block-switcher/block-transformations-menu';\nimport {\n\tuseConvertToGroupButtons,\n\tuseConvertToGroupButtonProps,\n} from '../convert-to-group-buttons';\n\nconst BlockActionsMenu = ( {\n\t// Select.\n\tblockTitle,\n\tcanInsertBlockType,\n\tgetBlocksByClientId,\n\tisEmptyDefaultBlock,\n\tisLocked,\n\tcanDuplicate,\n\tisFirst,\n\tisLast,\n\tisReusableBlockType,\n\treusableBlock,\n\trootClientId,\n\tselectedBlockClientId,\n\tselectedBlockPossibleTransformations,\n\tcanRemove,\n\t// Dispatch.\n\tcreateSuccessNotice,\n\tconvertToRegularBlocks,\n\tduplicateBlock,\n\tonMoveDown,\n\tonMoveUp,\n\topenGeneralSidebar,\n\tpasteBlock,\n\tremoveBlocks,\n\t// Passed in.\n\tanchorNodeRef,\n\tisStackedHorizontally,\n\tonDelete,\n\twrapBlockMover,\n\twrapBlockSettings,\n} ) => {\n\tconst [ clipboard, setCurrentClipboard ] = useState( getClipboard() );\n\tconst blockActionsMenuPickerRef = useRef();\n\tconst blockTransformationMenuPickerRef = useRef();\n\tconst moversOptions = { keys: [ 'icon', 'actionTitle' ] };\n\tconst clipboardBlock = clipboard && rawHandler( { HTML: clipboard } )[ 0 ];\n\tconst isPasteEnabled =\n\t\tclipboardBlock &&\n\t\tcanInsertBlockType( clipboardBlock.name, rootClientId );\n\n\tconst innerBlockCount = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlockCount( selectedBlockClientId ),\n\t\t[ selectedBlockClientId ]\n\t);\n\n\tconst {\n\t\tactionTitle: {\n\t\t\tbackward: backwardButtonTitle,\n\t\t\tforward: forwardButtonTitle,\n\t\t},\n\t} = getMoversSetup( isStackedHorizontally, moversOptions );\n\n\t// Check if selected block is Groupable and/or Ungroupable.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps( [\n\t\tselectedBlockClientId,\n\t] );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && canRemove;\n\tconst convertToGroupButtons = useConvertToGroupButtons( {\n\t\t...convertToGroupButtonProps,\n\t} );\n\n\tconst allOptions = {\n\t\tsettings: {\n\t\t\tid: 'settingsOption',\n\t\t\tlabel: __( 'Block settings' ),\n\t\t\tvalue: 'settingsOption',\n\t\t\tonSelect: openGeneralSidebar,\n\t\t},\n\t\tbackwardButton: {\n\t\t\tid: 'backwardButtonOption',\n\t\t\tlabel: backwardButtonTitle,\n\t\t\tvalue: 'backwardButtonOption',\n\t\t\tdisabled: isFirst,\n\t\t\tonSelect: onMoveUp,\n\t\t},\n\t\tforwardButton: {\n\t\t\tid: 'forwardButtonOption',\n\t\t\tlabel: forwardButtonTitle,\n\t\t\tvalue: 'forwardButtonOption',\n\t\t\tdisabled: isLast,\n\t\t\tonSelect: onMoveDown,\n\t\t},\n\t\tdelete: {\n\t\t\tid: 'deleteOption',\n\t\t\tlabel: __( 'Remove block' ),\n\t\t\tvalue: 'deleteOption',\n\t\t\tseparated: true,\n\t\t\tdisabled: isEmptyDefaultBlock,\n\t\t\tonSelect: () => {\n\t\t\t\tonDelete();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is removed.\n\t\t\t\t\t__( 'Block removed' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\ttransformButton: {\n\t\t\tid: 'transformButtonOption',\n\t\t\tlabel: __( 'Transform block…' ),\n\t\t\tvalue: 'transformButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tif ( blockTransformationMenuPickerRef.current ) {\n\t\t\t\t\tblockTransformationMenuPickerRef.current.presentPicker();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcopyButton: {\n\t\t\tid: 'copyButtonOption',\n\t\t\tlabel: __( 'Copy' ),\n\t\t\tvalue: 'copyButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst serializedBlock = serialize(\n\t\t\t\t\tgetBlocksByClientId( selectedBlockClientId )\n\t\t\t\t);\n\t\t\t\tsetCurrentClipboard( serializedBlock );\n\t\t\t\tsetClipboard( serializedBlock );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is copied.\n\t\t\t\t\t__( 'Block copied' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcutButton: {\n\t\t\tid: 'cutButtonOption',\n\t\t\tlabel: __( 'Cut block' ),\n\t\t\tvalue: 'cutButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tsetClipboard(\n\t\t\t\t\tserialize( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t\t);\n\t\t\t\tremoveBlocks( selectedBlockClientId );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is cut.\n\t\t\t\t\t__( 'Block cut' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tpasteButton: {\n\t\t\tid: 'pasteButtonOption',\n\t\t\tlabel: __( 'Paste block after' ),\n\t\t\tvalue: 'pasteButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tonPasteBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is pasted.\n\t\t\t\t\t__( 'Block pasted' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tduplicateButton: {\n\t\t\tid: 'duplicateButtonOption',\n\t\t\tlabel: __( 'Duplicate block' ),\n\t\t\tvalue: 'duplicateButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tduplicateBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is duplicated.\n\t\t\t\t\t__( 'Block duplicated' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tconvertToRegularBlocks: {\n\t\t\tid: 'convertToRegularBlocksOption',\n\t\t\tlabel:\n\t\t\t\tinnerBlockCount > 1\n\t\t\t\t\t? __( 'Convert to regular blocks' )\n\t\t\t\t\t: __( 'Convert to regular block' ),\n\t\t\tvalue: 'convertToRegularBlocksOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst successNotice =\n\t\t\t\t\tinnerBlockCount > 1\n\t\t\t\t\t\t? /* translators: %s: name of the reusable block */\n\t\t\t\t\t\t __( '%s converted to regular blocks' )\n\t\t\t\t\t\t: /* translators: %s: name of the reusable block */\n\t\t\t\t\t\t __( '%s converted to regular block' );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\tsuccessNotice,\n\t\t\t\t\t\treusableBlock?.title?.raw || blockTitle\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconvertToRegularBlocks();\n\t\t\t},\n\t\t},\n\t};\n\n\tconst options = [\n\t\twrapBlockMover && allOptions.backwardButton,\n\t\twrapBlockMover && allOptions.forwardButton,\n\t\twrapBlockSettings && allOptions.settings,\n\t\t! isLocked &&\n\t\t\tselectedBlockPossibleTransformations.length &&\n\t\t\tallOptions.transformButton,\n\t\tcanDuplicate && allOptions.copyButton,\n\t\tcanDuplicate && allOptions.cutButton,\n\t\tcanDuplicate && isPasteEnabled && allOptions.pasteButton,\n\t\tcanDuplicate && allOptions.duplicateButton,\n\t\tshowConvertToGroupButton && isGroupable && convertToGroupButtons.group,\n\t\tshowConvertToGroupButton &&\n\t\t\tisUngroupable &&\n\t\t\tconvertToGroupButtons.ungroup,\n\t\tisReusableBlockType &&\n\t\t\tinnerBlockCount > 0 &&\n\t\t\tallOptions.convertToRegularBlocks,\n\t\t! isLocked && allOptions.delete,\n\t].filter( Boolean );\n\n\t// End early if there are no options to show.\n\tif ( ! options.length ) {\n\t\treturn (\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\tdisabled={ true }\n\t\t\t/>\n\t\t);\n\t}\n\n\tfunction onPasteBlock() {\n\t\tif ( ! clipboard ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpasteBlock( rawHandler( { HTML: clipboard } )[ 0 ] );\n\t}\n\n\tfunction onPickerSelect( value ) {\n\t\tconst selectedItem = options.find( ( item ) => item.value === value );\n\t\tselectedItem.onSelect();\n\t}\n\n\tfunction onPickerPresent() {\n\t\tif ( blockActionsMenuPickerRef.current ) {\n\t\t\tblockActionsMenuPickerRef.current.presentPicker();\n\t\t}\n\t}\n\n\tconst disabledButtonIndices = options\n\t\t.map( ( option, index ) => option.disabled && index + 1 )\n\t\t.filter( Boolean );\n\n\tconst accessibilityHint =\n\t\tPlatform.OS === 'ios'\n\t\t\t? __( 'Double tap to open Action Sheet with available options' )\n\t\t\t: __( 'Double tap to open Bottom Sheet with available options' );\n\n\tconst getAnchor = () =>\n\t\tanchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\tonClick={ onPickerPresent }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\textraProps={ {\n\t\t\t\t\thint: accessibilityHint,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<Picker\n\t\t\t\ttestID=\"block-actions-menu\"\n\t\t\t\tref={ blockActionsMenuPickerRef }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\tdestructiveButtonIndex={ options.length }\n\t\t\t\tdisabledButtonIndices={ disabledButtonIndices }\n\t\t\t\thideCancelButton={ Platform.OS !== 'ios' }\n\t\t\t\tleftAlign={ true }\n\t\t\t\tgetAnchor={ getAnchor }\n\t\t\t\t// translators: %s: block title e.g: \"Paragraph\".\n\t\t\t\ttitle={ sprintf( __( '%s block options' ), blockTitle ) }\n\t\t\t/>\n\t\t\t<BlockTransformationsMenu\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tpickerRef={ blockTransformationMenuPickerRef }\n\t\t\t\tpossibleTransformations={ selectedBlockPossibleTransformations }\n\t\t\t\tselectedBlock={ getBlocksByClientId( selectedBlockClientId ) }\n\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nconst EMPTY_BLOCK_LIST = [];\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst {\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockName,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetBlock,\n\t\t\tgetBlocksByClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tcanInsertBlockType,\n\t\t\tgetTemplateLock,\n\t\t\tcanRemoveBlock,\n\t\t} = select( blockEditorStore );\n\t\tconst block = getBlock( clientId );\n\t\tconst blockName = getBlockName( clientId );\n\t\tconst blockType = getBlockType( blockName );\n\t\tconst blockTitle = blockType?.title;\n\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\tconst currentBlockIndex = getBlockIndex( clientId );\n\t\tconst isFirst = currentBlockIndex === 0;\n\t\tconst isLast = currentBlockIndex === blockOrder.length - 1;\n\n\t\tconst innerBlocks = getBlocksByClientId( clientId );\n\n\t\tconst canDuplicate = innerBlocks.every( ( innerBlock ) => {\n\t\t\treturn (\n\t\t\t\t!! innerBlock &&\n\t\t\t\thasBlockSupport( innerBlock.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( innerBlock.name, rootClientId )\n\t\t\t);\n\t\t} );\n\n\t\tconst isDefaultBlock = blockName === getDefaultBlockName();\n\t\tconst isEmptyContent = block?.attributes.content === '';\n\t\tconst isExactlyOneBlock = blockOrder.length === 1;\n\t\tconst isEmptyDefaultBlock =\n\t\t\tisExactlyOneBlock && isDefaultBlock && isEmptyContent;\n\t\tconst isLocked = !! getTemplateLock( rootClientId );\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientIds()[ 0 ];\n\t\tconst selectedBlock = selectedBlockClientId\n\t\t\t? getBlocksByClientId( selectedBlockClientId )[ 0 ]\n\t\t\t: undefined;\n\t\tconst selectedBlockPossibleTransformations = selectedBlock\n\t\t\t? getBlockTransformItems( selectedBlock, rootClientId )\n\t\t\t: EMPTY_BLOCK_LIST;\n\t\tconst canRemove = canRemoveBlock( selectedBlockClientId );\n\n\t\tconst isReusableBlockType = block ? isReusableBlock( block ) : false;\n\t\tconst reusableBlock = isReusableBlockType\n\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblock?.attributes.ref\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tblockTitle,\n\t\t\tcanInsertBlockType,\n\t\t\tcurrentIndex: currentBlockIndex,\n\t\t\tgetBlocksByClientId,\n\t\t\tisEmptyDefaultBlock,\n\t\t\tisLocked,\n\t\t\tcanDuplicate,\n\t\t\tisFirst,\n\t\t\tisLast,\n\t\t\tisReusableBlockType,\n\t\t\treusableBlock,\n\t\t\trootClientId,\n\t\t\tselectedBlockClientId,\n\t\t\tselectedBlockPossibleTransformations,\n\t\t\tcanRemove,\n\t\t};\n\t} ),\n\twithDispatch(\n\t\t(\n\t\t\tdispatch,\n\t\t\t{ clientId, rootClientId, currentIndex, selectedBlockClientId },\n\t\t\t{ select }\n\t\t) => {\n\t\t\tconst {\n\t\t\t\tmoveBlocksDown,\n\t\t\t\tmoveBlocksUp,\n\t\t\t\tduplicateBlocks,\n\t\t\t\tremoveBlocks,\n\t\t\t\tinsertBlock,\n\t\t\t\treplaceBlock,\n\t\t\t\tclearSelectedBlock,\n\t\t\t} = dispatch( blockEditorStore );\n\t\t\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\t\t\tconst { getBlockSelectionEnd, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { createSuccessNotice } = dispatch( noticesStore );\n\n\t\t\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\t\t\tdispatch( reusableBlocksStore );\n\n\t\t\treturn {\n\t\t\t\tcreateSuccessNotice,\n\t\t\t\tconvertToRegularBlocks() {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t\t\t\t// to prevent issues related to undo/redo actions.\n\t\t\t\t\tsetImmediate( () =>\n\t\t\t\t\t\tconvertBlockToStatic( selectedBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tduplicateBlock() {\n\t\t\t\t\treturn duplicateBlocks( [ clientId ] );\n\t\t\t\t},\n\t\t\t\tonMoveDown: ( ...args ) =>\n\t\t\t\t\tmoveBlocksDown( [ clientId ], rootClientId, ...args ),\n\t\t\t\tonMoveUp: ( ...args ) =>\n\t\t\t\t\tmoveBlocksUp( [ clientId ], rootClientId, ...args ),\n\t\t\t\topenGeneralSidebar: () =>\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' ),\n\t\t\t\tpasteBlock: ( clipboardBlock ) => {\n\t\t\t\t\tconst canReplaceBlock = isUnmodifiedDefaultBlock(\n\t\t\t\t\t\tgetBlock( getBlockSelectionEnd() )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! canReplaceBlock ) {\n\t\t\t\t\t\tconst insertedBlock = createBlock(\n\t\t\t\t\t\t\tclipboardBlock.name,\n\t\t\t\t\t\t\tclipboardBlock.attributes,\n\t\t\t\t\t\t\tclipboardBlock.innerBlocks\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\t\tinsertedBlock,\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceBlock( clientId, clipboardBlock );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveBlocks,\n\t\t\t};\n\t\t}\n\t),\n\twithInstanceId\n)( BlockActionsMenu );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-mobile-toolbar/block-actions-menu.native.js"],"names":["BlockActionsMenu","blockTitle","canInsertBlockType","getBlocksByClientId","isEmptyDefaultBlock","isLocked","canDuplicate","isFirst","isLast","isReusableBlockType","reusableBlock","rootClientId","selectedBlockClientId","selectedBlockPossibleTransformations","canRemove","createSuccessNotice","convertToRegularBlocks","duplicateBlock","onMoveDown","onMoveUp","openGeneralSidebar","pasteBlock","removeBlocks","anchorNodeRef","isStackedHorizontally","onDelete","wrapBlockMover","wrapBlockSettings","clipboard","setCurrentClipboard","blockActionsMenuPickerRef","blockTransformationMenuPickerRef","moversOptions","keys","clipboardBlock","HTML","isPasteEnabled","name","innerBlockCount","select","blockEditorStore","getBlockCount","actionTitle","backward","backwardButtonTitle","forward","forwardButtonTitle","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","convertToGroupButtons","allOptions","settings","id","label","value","onSelect","backwardButton","disabled","forwardButton","delete","separated","transformButton","current","presentPicker","copyButton","serializedBlock","cutButton","pasteButton","onPasteBlock","duplicateButton","successNotice","title","raw","options","length","group","ungroup","filter","Boolean","moreHorizontalMobile","onPickerSelect","selectedItem","find","item","onPickerPresent","disabledButtonIndices","map","option","index","accessibilityHint","Platform","OS","getAnchor","undefined","hint","EMPTY_BLOCK_LIST","clientId","getBlockIndex","getBlockRootClientId","getBlockOrder","getBlockName","getBlockTransformItems","getBlock","getSelectedBlockClientIds","getTemplateLock","canRemoveBlock","block","blockName","blockType","blockOrder","currentBlockIndex","innerBlocks","every","innerBlock","isDefaultBlock","isEmptyContent","attributes","content","isExactlyOneBlock","selectedBlock","coreStore","getEntityRecord","ref","currentIndex","dispatch","moveBlocksDown","moveBlocksUp","duplicateBlocks","insertBlock","replaceBlock","clearSelectedBlock","getBlockSelectionEnd","noticesStore","__experimentalConvertBlockToStatic","convertBlockToStatic","reusableBlocksStore","setImmediate","args","canReplaceBlock","insertedBlock","withInstanceId"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { Platform, findNodeHandle } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetClipboard,\n\tsetClipboard,\n\tToolbarButton,\n\tPicker,\n} from '@wordpress/components';\nimport {\n\tgetBlockType,\n\tgetDefaultBlockName,\n\thasBlockSupport,\n\tserialize,\n\trawHandler,\n\tcreateBlock,\n\tisUnmodifiedDefaultBlock,\n\tisReusableBlock,\n} from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withDispatch, withSelect, useSelect } from '@wordpress/data';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { moreHorizontalMobile } from '@wordpress/icons';\nimport { useRef, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n// Disable Reason: Needs to be refactored.\n// eslint-disable-next-line no-restricted-imports\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getMoversSetup } from '../block-mover/mover-description';\nimport { store as blockEditorStore } from '../../store';\nimport BlockTransformationsMenu from '../block-switcher/block-transformations-menu';\nimport {\n\tuseConvertToGroupButtons,\n\tuseConvertToGroupButtonProps,\n} from '../convert-to-group-buttons';\n\nconst BlockActionsMenu = ( {\n\t// Select.\n\tblockTitle,\n\tcanInsertBlockType,\n\tgetBlocksByClientId,\n\tisEmptyDefaultBlock,\n\tisLocked,\n\tcanDuplicate,\n\tisFirst,\n\tisLast,\n\tisReusableBlockType,\n\treusableBlock,\n\trootClientId,\n\tselectedBlockClientId,\n\tselectedBlockPossibleTransformations,\n\tcanRemove,\n\t// Dispatch.\n\tcreateSuccessNotice,\n\tconvertToRegularBlocks,\n\tduplicateBlock,\n\tonMoveDown,\n\tonMoveUp,\n\topenGeneralSidebar,\n\tpasteBlock,\n\tremoveBlocks,\n\t// Passed in.\n\tanchorNodeRef,\n\tisStackedHorizontally,\n\tonDelete,\n\twrapBlockMover,\n\twrapBlockSettings,\n} ) => {\n\tconst [ clipboard, setCurrentClipboard ] = useState( getClipboard() );\n\tconst blockActionsMenuPickerRef = useRef();\n\tconst blockTransformationMenuPickerRef = useRef();\n\tconst moversOptions = { keys: [ 'icon', 'actionTitle' ] };\n\tconst clipboardBlock = clipboard && rawHandler( { HTML: clipboard } )[ 0 ];\n\tconst isPasteEnabled =\n\t\tclipboardBlock &&\n\t\tcanInsertBlockType( clipboardBlock.name, rootClientId );\n\n\tconst innerBlockCount = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlockCount( selectedBlockClientId ),\n\t\t[ selectedBlockClientId ]\n\t);\n\n\tconst {\n\t\tactionTitle: {\n\t\t\tbackward: backwardButtonTitle,\n\t\t\tforward: forwardButtonTitle,\n\t\t},\n\t} = getMoversSetup( isStackedHorizontally, moversOptions );\n\n\t// Check if selected block is Groupable and/or Ungroupable.\n\tconst convertToGroupButtonProps = useConvertToGroupButtonProps( [\n\t\tselectedBlockClientId,\n\t] );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && canRemove;\n\tconst convertToGroupButtons = useConvertToGroupButtons( {\n\t\t...convertToGroupButtonProps,\n\t} );\n\n\tconst allOptions = {\n\t\tsettings: {\n\t\t\tid: 'settingsOption',\n\t\t\tlabel: __( 'Block settings' ),\n\t\t\tvalue: 'settingsOption',\n\t\t\tonSelect: openGeneralSidebar,\n\t\t},\n\t\tbackwardButton: {\n\t\t\tid: 'backwardButtonOption',\n\t\t\tlabel: backwardButtonTitle,\n\t\t\tvalue: 'backwardButtonOption',\n\t\t\tdisabled: isFirst,\n\t\t\tonSelect: onMoveUp,\n\t\t},\n\t\tforwardButton: {\n\t\t\tid: 'forwardButtonOption',\n\t\t\tlabel: forwardButtonTitle,\n\t\t\tvalue: 'forwardButtonOption',\n\t\t\tdisabled: isLast,\n\t\t\tonSelect: onMoveDown,\n\t\t},\n\t\tdelete: {\n\t\t\tid: 'deleteOption',\n\t\t\tlabel: __( 'Remove block' ),\n\t\t\tvalue: 'deleteOption',\n\t\t\tseparated: true,\n\t\t\tdisabled: isEmptyDefaultBlock,\n\t\t\tonSelect: () => {\n\t\t\t\tonDelete();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is removed.\n\t\t\t\t\t__( 'Block removed' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\ttransformButton: {\n\t\t\tid: 'transformButtonOption',\n\t\t\tlabel: __( 'Transform block…' ),\n\t\t\tvalue: 'transformButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tif ( blockTransformationMenuPickerRef.current ) {\n\t\t\t\t\tblockTransformationMenuPickerRef.current.presentPicker();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tcopyButton: {\n\t\t\tid: 'copyButtonOption',\n\t\t\tlabel: __( 'Copy' ),\n\t\t\tvalue: 'copyButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tconst serializedBlock = serialize(\n\t\t\t\t\tgetBlocksByClientId( selectedBlockClientId )\n\t\t\t\t);\n\t\t\t\tsetCurrentClipboard( serializedBlock );\n\t\t\t\tsetClipboard( serializedBlock );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is copied.\n\t\t\t\t\t__( 'Block copied' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tcutButton: {\n\t\t\tid: 'cutButtonOption',\n\t\t\tlabel: __( 'Cut block' ),\n\t\t\tvalue: 'cutButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tsetClipboard(\n\t\t\t\t\tserialize( getBlocksByClientId( selectedBlockClientId ) )\n\t\t\t\t);\n\t\t\t\tremoveBlocks( selectedBlockClientId );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is cut.\n\t\t\t\t\t__( 'Block cut' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tpasteButton: {\n\t\t\tid: 'pasteButtonOption',\n\t\t\tlabel: __( 'Paste block after' ),\n\t\t\tvalue: 'pasteButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tonPasteBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is pasted.\n\t\t\t\t\t__( 'Block pasted' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tduplicateButton: {\n\t\t\tid: 'duplicateButtonOption',\n\t\t\tlabel: __( 'Duplicate block' ),\n\t\t\tvalue: 'duplicateButtonOption',\n\t\t\tonSelect: () => {\n\t\t\t\tduplicateBlock();\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t// translators: displayed right after the block is duplicated.\n\t\t\t\t\t__( 'Block duplicated' )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tconvertToRegularBlocks: {\n\t\t\tid: 'convertToRegularBlocksOption',\n\t\t\tlabel:\n\t\t\t\tinnerBlockCount > 1\n\t\t\t\t\t? __( 'Detach patterns' )\n\t\t\t\t\t: __( 'Detach pattern' ),\n\t\t\tvalue: 'convertToRegularBlocksOption',\n\t\t\tonSelect: () => {\n\t\t\t\t/* translators: %s: name of the synced block */\n\t\t\t\tconst successNotice = __( '%s detached' );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\tsuccessNotice,\n\t\t\t\t\t\treusableBlock?.title?.raw || blockTitle\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconvertToRegularBlocks();\n\t\t\t},\n\t\t},\n\t};\n\n\tconst options = [\n\t\twrapBlockMover && allOptions.backwardButton,\n\t\twrapBlockMover && allOptions.forwardButton,\n\t\twrapBlockSettings && allOptions.settings,\n\t\t! isLocked &&\n\t\t\tselectedBlockPossibleTransformations.length &&\n\t\t\tallOptions.transformButton,\n\t\tcanDuplicate && allOptions.copyButton,\n\t\tcanDuplicate && allOptions.cutButton,\n\t\tcanDuplicate && isPasteEnabled && allOptions.pasteButton,\n\t\tcanDuplicate && allOptions.duplicateButton,\n\t\tshowConvertToGroupButton && isGroupable && convertToGroupButtons.group,\n\t\tshowConvertToGroupButton &&\n\t\t\tisUngroupable &&\n\t\t\tconvertToGroupButtons.ungroup,\n\t\tisReusableBlockType &&\n\t\t\tinnerBlockCount > 0 &&\n\t\t\tallOptions.convertToRegularBlocks,\n\t\t! isLocked && allOptions.delete,\n\t].filter( Boolean );\n\n\t// End early if there are no options to show.\n\tif ( ! options.length ) {\n\t\treturn (\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\tdisabled={ true }\n\t\t\t/>\n\t\t);\n\t}\n\n\tfunction onPasteBlock() {\n\t\tif ( ! clipboard ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpasteBlock( rawHandler( { HTML: clipboard } )[ 0 ] );\n\t}\n\n\tfunction onPickerSelect( value ) {\n\t\tconst selectedItem = options.find( ( item ) => item.value === value );\n\t\tselectedItem.onSelect();\n\t}\n\n\tfunction onPickerPresent() {\n\t\tif ( blockActionsMenuPickerRef.current ) {\n\t\t\tblockActionsMenuPickerRef.current.presentPicker();\n\t\t}\n\t}\n\n\tconst disabledButtonIndices = options\n\t\t.map( ( option, index ) => option.disabled && index + 1 )\n\t\t.filter( Boolean );\n\n\tconst accessibilityHint =\n\t\tPlatform.OS === 'ios'\n\t\t\t? __( 'Double tap to open Action Sheet with available options' )\n\t\t\t: __( 'Double tap to open Bottom Sheet with available options' );\n\n\tconst getAnchor = () =>\n\t\tanchorNodeRef ? findNodeHandle( anchorNodeRef ) : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ttitle={ __( 'Open Block Actions Menu' ) }\n\t\t\t\tonClick={ onPickerPresent }\n\t\t\t\ticon={ moreHorizontalMobile }\n\t\t\t\textraProps={ {\n\t\t\t\t\thint: accessibilityHint,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<Picker\n\t\t\t\ttestID=\"block-actions-menu\"\n\t\t\t\tref={ blockActionsMenuPickerRef }\n\t\t\t\toptions={ options }\n\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\tdestructiveButtonIndex={ options.length }\n\t\t\t\tdisabledButtonIndices={ disabledButtonIndices }\n\t\t\t\thideCancelButton={ Platform.OS !== 'ios' }\n\t\t\t\tleftAlign={ true }\n\t\t\t\tgetAnchor={ getAnchor }\n\t\t\t\t// translators: %s: block title e.g: \"Paragraph\".\n\t\t\t\ttitle={ sprintf( __( '%s block options' ), blockTitle ) }\n\t\t\t/>\n\t\t\t<BlockTransformationsMenu\n\t\t\t\tanchorNodeRef={ anchorNodeRef }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tpickerRef={ blockTransformationMenuPickerRef }\n\t\t\t\tpossibleTransformations={ selectedBlockPossibleTransformations }\n\t\t\t\tselectedBlock={ getBlocksByClientId( selectedBlockClientId ) }\n\t\t\t\tselectedBlockClientId={ selectedBlockClientId }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nconst EMPTY_BLOCK_LIST = [];\n\nexport default compose(\n\twithSelect( ( select, { clientId } ) => {\n\t\tconst {\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockName,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetBlock,\n\t\t\tgetBlocksByClientId,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tcanInsertBlockType,\n\t\t\tgetTemplateLock,\n\t\t\tcanRemoveBlock,\n\t\t} = select( blockEditorStore );\n\t\tconst block = getBlock( clientId );\n\t\tconst blockName = getBlockName( clientId );\n\t\tconst blockType = getBlockType( blockName );\n\t\tconst blockTitle = blockType?.title;\n\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\tconst blockOrder = getBlockOrder( rootClientId );\n\n\t\tconst currentBlockIndex = getBlockIndex( clientId );\n\t\tconst isFirst = currentBlockIndex === 0;\n\t\tconst isLast = currentBlockIndex === blockOrder.length - 1;\n\n\t\tconst innerBlocks = getBlocksByClientId( clientId );\n\n\t\tconst canDuplicate = innerBlocks.every( ( innerBlock ) => {\n\t\t\treturn (\n\t\t\t\t!! innerBlock &&\n\t\t\t\thasBlockSupport( innerBlock.name, 'multiple', true ) &&\n\t\t\t\tcanInsertBlockType( innerBlock.name, rootClientId )\n\t\t\t);\n\t\t} );\n\n\t\tconst isDefaultBlock = blockName === getDefaultBlockName();\n\t\tconst isEmptyContent = block?.attributes.content === '';\n\t\tconst isExactlyOneBlock = blockOrder.length === 1;\n\t\tconst isEmptyDefaultBlock =\n\t\t\tisExactlyOneBlock && isDefaultBlock && isEmptyContent;\n\t\tconst isLocked = !! getTemplateLock( rootClientId );\n\n\t\tconst selectedBlockClientId = getSelectedBlockClientIds()[ 0 ];\n\t\tconst selectedBlock = selectedBlockClientId\n\t\t\t? getBlocksByClientId( selectedBlockClientId )[ 0 ]\n\t\t\t: undefined;\n\t\tconst selectedBlockPossibleTransformations = selectedBlock\n\t\t\t? getBlockTransformItems( selectedBlock, rootClientId )\n\t\t\t: EMPTY_BLOCK_LIST;\n\t\tconst canRemove = canRemoveBlock( selectedBlockClientId );\n\n\t\tconst isReusableBlockType = block ? isReusableBlock( block ) : false;\n\t\tconst reusableBlock = isReusableBlockType\n\t\t\t? select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblock?.attributes.ref\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tblockTitle,\n\t\t\tcanInsertBlockType,\n\t\t\tcurrentIndex: currentBlockIndex,\n\t\t\tgetBlocksByClientId,\n\t\t\tisEmptyDefaultBlock,\n\t\t\tisLocked,\n\t\t\tcanDuplicate,\n\t\t\tisFirst,\n\t\t\tisLast,\n\t\t\tisReusableBlockType,\n\t\t\treusableBlock,\n\t\t\trootClientId,\n\t\t\tselectedBlockClientId,\n\t\t\tselectedBlockPossibleTransformations,\n\t\t\tcanRemove,\n\t\t};\n\t} ),\n\twithDispatch(\n\t\t(\n\t\t\tdispatch,\n\t\t\t{ clientId, rootClientId, currentIndex, selectedBlockClientId },\n\t\t\t{ select }\n\t\t) => {\n\t\t\tconst {\n\t\t\t\tmoveBlocksDown,\n\t\t\t\tmoveBlocksUp,\n\t\t\t\tduplicateBlocks,\n\t\t\t\tremoveBlocks,\n\t\t\t\tinsertBlock,\n\t\t\t\treplaceBlock,\n\t\t\t\tclearSelectedBlock,\n\t\t\t} = dispatch( blockEditorStore );\n\t\t\tconst { openGeneralSidebar } = dispatch( 'core/edit-post' );\n\t\t\tconst { getBlockSelectionEnd, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { createSuccessNotice } = dispatch( noticesStore );\n\n\t\t\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\t\t\tdispatch( reusableBlocksStore );\n\n\t\t\treturn {\n\t\t\t\tcreateSuccessNotice,\n\t\t\t\tconvertToRegularBlocks() {\n\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t// Convert action is executed at the end of the current JavaScript execution block\n\t\t\t\t\t// to prevent issues related to undo/redo actions.\n\t\t\t\t\tsetImmediate( () =>\n\t\t\t\t\t\tconvertBlockToStatic( selectedBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tduplicateBlock() {\n\t\t\t\t\treturn duplicateBlocks( [ clientId ] );\n\t\t\t\t},\n\t\t\t\tonMoveDown: ( ...args ) =>\n\t\t\t\t\tmoveBlocksDown( [ clientId ], rootClientId, ...args ),\n\t\t\t\tonMoveUp: ( ...args ) =>\n\t\t\t\t\tmoveBlocksUp( [ clientId ], rootClientId, ...args ),\n\t\t\t\topenGeneralSidebar: () =>\n\t\t\t\t\topenGeneralSidebar( 'edit-post/block' ),\n\t\t\t\tpasteBlock: ( clipboardBlock ) => {\n\t\t\t\t\tconst canReplaceBlock = isUnmodifiedDefaultBlock(\n\t\t\t\t\t\tgetBlock( getBlockSelectionEnd() )\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( ! canReplaceBlock ) {\n\t\t\t\t\t\tconst insertedBlock = createBlock(\n\t\t\t\t\t\t\tclipboardBlock.name,\n\t\t\t\t\t\t\tclipboardBlock.attributes,\n\t\t\t\t\t\t\tclipboardBlock.innerBlocks\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tinsertBlock(\n\t\t\t\t\t\t\tinsertedBlock,\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceBlock( clientId, clipboardBlock );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tremoveBlocks,\n\t\t\t};\n\t\t}\n\t),\n\twithInstanceId\n)( BlockActionsMenu );\n"]}
@@ -25,6 +25,8 @@ var _utils = require("../block-toolbar/utils");
25
25
 
26
26
  var _store = require("../../store");
27
27
 
28
+ var _lockUnlock = require("../../lock-unlock");
29
+
28
30
  /**
29
31
  * WordPress dependencies
30
32
  */
@@ -46,15 +48,16 @@ function BlockParentSelector() {
46
48
  } = (0, _data.useDispatch)(_store.store);
47
49
  const {
48
50
  firstParentClientId,
49
- shouldHide,
51
+ isVisible,
50
52
  isDistractionFree
51
53
  } = (0, _data.useSelect)(select => {
52
54
  const {
53
55
  getBlockName,
54
56
  getBlockParents,
55
57
  getSelectedBlockClientId,
56
- getSettings
57
- } = select(_store.store);
58
+ getSettings,
59
+ getBlockEditingMode
60
+ } = (0, _lockUnlock.unlock)(select(_store.store));
58
61
  const {
59
62
  hasBlockSupport
60
63
  } = select(_blocks.store);
@@ -68,7 +71,7 @@ function BlockParentSelector() {
68
71
  const settings = getSettings();
69
72
  return {
70
73
  firstParentClientId: _firstParentClientId,
71
- shouldHide: !hasBlockSupport(_parentBlockType, '__experimentalParentSelector', true),
74
+ isVisible: _firstParentClientId && getBlockEditingMode(_firstParentClientId) === 'default' && hasBlockSupport(_parentBlockType, '__experimentalParentSelector', true),
72
75
  isDistractionFree: settings.isDistractionFree
73
76
  };
74
77
  }, []);
@@ -91,7 +94,7 @@ function BlockParentSelector() {
91
94
 
92
95
  });
93
96
 
94
- if (shouldHide || firstParentClientId === undefined) {
97
+ if (!isVisible) {
95
98
  return null;
96
99
  }
97
100
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-parent-selector/index.js"],"names":["BlockParentSelector","selectBlock","toggleBlockHighlight","blockEditorStore","firstParentClientId","shouldHide","isDistractionFree","select","getBlockName","getBlockParents","getSelectedBlockClientId","getSettings","hasBlockSupport","blocksStore","selectedBlockClientId","parents","_firstParentClientId","length","parentBlockName","_parentBlockType","settings","blockInformation","nodeRef","gestures","showMoversGestures","ref","onChange","isFocused","undefined","title","icon"],"mappings":";;;;;;;;;AAOA;;AAJA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AAfA;AACA;AACA;;AAOA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,mBAAT,GAA+B;AAC7C,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MACL,uBAAaC,YAAb,CADD;AAEA,QAAM;AAAEC,IAAAA,mBAAF;AAAuBC,IAAAA,UAAvB;AAAmCC,IAAAA;AAAnC,MAAyD,qBAC5DC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,eAFK;AAGLC,MAAAA,wBAHK;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEJ,YAAF,CALV;AAMA,UAAM;AAAES,MAAAA;AAAF,QAAsBL,MAAM,CAAEM,aAAF,CAAlC;AACA,UAAMC,qBAAqB,GAAGJ,wBAAwB,EAAtD;AACA,UAAMK,OAAO,GAAGN,eAAe,CAAEK,qBAAF,CAA/B;AACA,UAAME,oBAAoB,GAAGD,OAAO,CAAEA,OAAO,CAACE,MAAR,GAAiB,CAAnB,CAApC;AACA,UAAMC,eAAe,GAAGV,YAAY,CAAEQ,oBAAF,CAApC;;AACA,UAAMG,gBAAgB,GAAG,0BAAcD,eAAd,CAAzB;;AACA,UAAME,QAAQ,GAAGT,WAAW,EAA5B;AACA,WAAO;AACNP,MAAAA,mBAAmB,EAAEY,oBADf;AAENX,MAAAA,UAAU,EAAE,CAAEO,eAAe,CAC5BO,gBAD4B,EAE5B,8BAF4B,EAG5B,IAH4B,CAFvB;AAONb,MAAAA,iBAAiB,EAAEc,QAAQ,CAACd;AAPtB,KAAP;AASA,GAxB6D,EAyB9D,EAzB8D,CAA/D;AA2BA,QAAMe,gBAAgB,GAAG,yCAA4BjB,mBAA5B,CAAzB,CA9B6C,CAgC7C;AACA;;AACA,QAAMkB,OAAO,GAAG,sBAAhB;AACA,QAAM;AAAEC,IAAAA,QAAQ,EAAEC;AAAZ,MAAmC,kCAAuB;AAC/DC,IAAAA,GAAG,EAAEH,OAD0D;;AAE/DI,IAAAA,QAAQ,CAAEC,SAAF,EAAc;AACrB,UAAKA,SAAS,IAAIrB,iBAAlB,EAAsC;AACrC;AACA;;AACDJ,MAAAA,oBAAoB,CAAEE,mBAAF,EAAuBuB,SAAvB,CAApB;AACA;;AAP8D,GAAvB,CAAzC;;AAUA,MAAKtB,UAAU,IAAID,mBAAmB,KAAKwB,SAA3C,EAAuD;AACtD,WAAO,IAAP;AACA;;AAED,SACC;AACC,IAAA,SAAS,EAAC,oCADX;AAEC,IAAA,GAAG,EAAGxB,mBAFP;AAGC,IAAA,GAAG,EAAGkB,OAHP;AAAA,OAIME;AAJN,KAMC,4BAAC,yBAAD;AACC,IAAA,SAAS,EAAC,4CADX;AAEC,IAAA,OAAO,EAAG,MAAMvB,WAAW,CAAEG,mBAAF,CAF5B;AAGC,IAAA,KAAK,EAAG;AACP;AACA,kBAAI,WAAJ,CAFO,EAGPiB,gBAAgB,EAAEQ,KAHX,CAHT;AAQC,IAAA,WAAW,MARZ;AASC,IAAA,IAAI,EAAG,4BAAC,kBAAD;AAAW,MAAA,IAAI,EAAGR,gBAAgB,EAAES;AAApC;AATR,IAND,CADD;AAoBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport { useShowMoversGestures } from '../block-toolbar/utils';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Block parent selector component, displaying the hierarchy of the\n * current block selection as a single icon to \"go up\" a level.\n *\n * @return {WPComponent} Parent block selector.\n */\nexport default function BlockParentSelector() {\n\tconst { selectBlock, toggleBlockHighlight } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { firstParentClientId, shouldHide, isDistractionFree } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetSettings,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { hasBlockSupport } = select( blocksStore );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\t\tconst _firstParentClientId = parents[ parents.length - 1 ];\n\t\t\tconst parentBlockName = getBlockName( _firstParentClientId );\n\t\t\tconst _parentBlockType = getBlockType( parentBlockName );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tshouldHide: ! hasBlockSupport(\n\t\t\t\t\t_parentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( firstParentClientId );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst nodeRef = useRef();\n\tconst { gestures: showMoversGestures } = useShowMoversGestures( {\n\t\tref: nodeRef,\n\t\tonChange( isFocused ) {\n\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttoggleBlockHighlight( firstParentClientId, isFocused );\n\t\t},\n\t} );\n\n\tif ( shouldHide || firstParentClientId === undefined ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-parent-selector\"\n\t\t\tkey={ firstParentClientId }\n\t\t\tref={ nodeRef }\n\t\t\t{ ...showMoversGestures }\n\t\t>\n\t\t\t<ToolbarButton\n\t\t\t\tclassName=\"block-editor-block-parent-selector__button\"\n\t\t\t\tonClick={ () => selectBlock( firstParentClientId ) }\n\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t\t__( 'Select %s' ),\n\t\t\t\t\tblockInformation?.title\n\t\t\t\t) }\n\t\t\t\tshowTooltip\n\t\t\t\ticon={ <BlockIcon icon={ blockInformation?.icon } /> }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-parent-selector/index.js"],"names":["BlockParentSelector","selectBlock","toggleBlockHighlight","blockEditorStore","firstParentClientId","isVisible","isDistractionFree","select","getBlockName","getBlockParents","getSelectedBlockClientId","getSettings","getBlockEditingMode","hasBlockSupport","blocksStore","selectedBlockClientId","parents","_firstParentClientId","length","parentBlockName","_parentBlockType","settings","blockInformation","nodeRef","gestures","showMoversGestures","ref","onChange","isFocused","title","icon"],"mappings":";;;;;;;;;AAOA;;AAJA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AAhBA;AACA;AACA;;AAOA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,mBAAT,GAA+B;AAC7C,QAAM;AAAEC,IAAAA,WAAF;AAAeC,IAAAA;AAAf,MACL,uBAAaC,YAAb,CADD;AAEA,QAAM;AAAEC,IAAAA,mBAAF;AAAuBC,IAAAA,SAAvB;AAAkCC,IAAAA;AAAlC,MAAwD,qBAC3DC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,eAFK;AAGLC,MAAAA,wBAHK;AAILC,MAAAA,WAJK;AAKLC,MAAAA;AALK,QAMF,wBAAQL,MAAM,CAAEJ,YAAF,CAAd,CANJ;AAOA,UAAM;AAAEU,MAAAA;AAAF,QAAsBN,MAAM,CAAEO,aAAF,CAAlC;AACA,UAAMC,qBAAqB,GAAGL,wBAAwB,EAAtD;AACA,UAAMM,OAAO,GAAGP,eAAe,CAAEM,qBAAF,CAA/B;AACA,UAAME,oBAAoB,GAAGD,OAAO,CAAEA,OAAO,CAACE,MAAR,GAAiB,CAAnB,CAApC;AACA,UAAMC,eAAe,GAAGX,YAAY,CAAES,oBAAF,CAApC;;AACA,UAAMG,gBAAgB,GAAG,0BAAcD,eAAd,CAAzB;;AACA,UAAME,QAAQ,GAAGV,WAAW,EAA5B;AACA,WAAO;AACNP,MAAAA,mBAAmB,EAAEa,oBADf;AAENZ,MAAAA,SAAS,EACRY,oBAAoB,IACpBL,mBAAmB,CAAEK,oBAAF,CAAnB,KAAgD,SADhD,IAEAJ,eAAe,CACdO,gBADc,EAEd,8BAFc,EAGd,IAHc,CALV;AAUNd,MAAAA,iBAAiB,EAAEe,QAAQ,CAACf;AAVtB,KAAP;AAYA,GA5B4D,EA6B7D,EA7B6D,CAA9D;AA+BA,QAAMgB,gBAAgB,GAAG,yCAA4BlB,mBAA5B,CAAzB,CAlC6C,CAoC7C;AACA;;AACA,QAAMmB,OAAO,GAAG,sBAAhB;AACA,QAAM;AAAEC,IAAAA,QAAQ,EAAEC;AAAZ,MAAmC,kCAAuB;AAC/DC,IAAAA,GAAG,EAAEH,OAD0D;;AAE/DI,IAAAA,QAAQ,CAAEC,SAAF,EAAc;AACrB,UAAKA,SAAS,IAAItB,iBAAlB,EAAsC;AACrC;AACA;;AACDJ,MAAAA,oBAAoB,CAAEE,mBAAF,EAAuBwB,SAAvB,CAApB;AACA;;AAP8D,GAAvB,CAAzC;;AAUA,MAAK,CAAEvB,SAAP,EAAmB;AAClB,WAAO,IAAP;AACA;;AAED,SACC;AACC,IAAA,SAAS,EAAC,oCADX;AAEC,IAAA,GAAG,EAAGD,mBAFP;AAGC,IAAA,GAAG,EAAGmB,OAHP;AAAA,OAIME;AAJN,KAMC,4BAAC,yBAAD;AACC,IAAA,SAAS,EAAC,4CADX;AAEC,IAAA,OAAO,EAAG,MAAMxB,WAAW,CAAEG,mBAAF,CAF5B;AAGC,IAAA,KAAK,EAAG;AACP;AACA,kBAAI,WAAJ,CAFO,EAGPkB,gBAAgB,EAAEO,KAHX,CAHT;AAQC,IAAA,WAAW,MARZ;AASC,IAAA,IAAI,EAAG,4BAAC,kBAAD;AAAW,MAAA,IAAI,EAAGP,gBAAgB,EAAEQ;AAApC;AATR,IAND,CADD;AAoBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport BlockIcon from '../block-icon';\nimport { useShowMoversGestures } from '../block-toolbar/utils';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Block parent selector component, displaying the hierarchy of the\n * current block selection as a single icon to \"go up\" a level.\n *\n * @return {WPComponent} Parent block selector.\n */\nexport default function BlockParentSelector() {\n\tconst { selectBlock, toggleBlockHighlight } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { firstParentClientId, isVisible, isDistractionFree } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockParents,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { hasBlockSupport } = select( blocksStore );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\t\tconst _firstParentClientId = parents[ parents.length - 1 ];\n\t\t\tconst parentBlockName = getBlockName( _firstParentClientId );\n\t\t\tconst _parentBlockType = getBlockType( parentBlockName );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tisVisible:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\tgetBlockEditingMode( _firstParentClientId ) === 'default' &&\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\t_parentBlockType,\n\t\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t),\n\t\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( firstParentClientId );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst nodeRef = useRef();\n\tconst { gestures: showMoversGestures } = useShowMoversGestures( {\n\t\tref: nodeRef,\n\t\tonChange( isFocused ) {\n\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttoggleBlockHighlight( firstParentClientId, isFocused );\n\t\t},\n\t} );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-parent-selector\"\n\t\t\tkey={ firstParentClientId }\n\t\t\tref={ nodeRef }\n\t\t\t{ ...showMoversGestures }\n\t\t>\n\t\t\t<ToolbarButton\n\t\t\t\tclassName=\"block-editor-block-parent-selector__button\"\n\t\t\t\tonClick={ () => selectBlock( firstParentClientId ) }\n\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t\t__( 'Select %s' ),\n\t\t\t\t\tblockInformation?.title\n\t\t\t\t) }\n\t\t\t\tshowTooltip\n\t\t\t\ticon={ <BlockIcon icon={ blockInformation?.icon } /> }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"]}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BlockRemovalWarningModal = BlockRemovalWarningModal;
7
- exports.blockTypePromptMessages = void 0;
8
7
 
9
8
  var _element = require("@wordpress/element");
10
9
 
@@ -25,36 +24,27 @@ var _lockUnlock = require("../../lock-unlock");
25
24
  /**
26
25
  * Internal dependencies
27
26
  */
28
- // In certain editing contexts, we'd like to prevent accidental removal of
29
- // important blocks. For example, in the site editor, the Query Loop block is
30
- // deemed important. In such cases, we'll ask the user for confirmation that
31
- // they intended to remove such block(s).
32
- //
33
- // @see https://github.com/WordPress/gutenberg/pull/51145
34
- const blockTypePromptMessages = {
35
- 'core/query': (0, _i18n.__)('Query Loop displays a list of posts or pages.'),
36
- 'core/post-content': (0, _i18n.__)('Post Content displays the content of a post or page.')
37
- };
38
- exports.blockTypePromptMessages = blockTypePromptMessages;
39
-
40
- function BlockRemovalWarningModal() {
27
+ function BlockRemovalWarningModal({
28
+ rules
29
+ }) {
41
30
  const {
42
31
  clientIds,
43
32
  selectPrevious,
44
33
  blockNamesForPrompt
45
34
  } = (0, _data.useSelect)(select => (0, _lockUnlock.unlock)(select(_store.store)).getRemovalPromptData());
46
35
  const {
47
- clearRemovalPrompt,
48
- toggleRemovalPromptSupport,
36
+ clearBlockRemovalPrompt,
37
+ setBlockRemovalRules,
49
38
  privateRemoveBlocks
50
- } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store)); // Signalling the removal prompt is in place.
39
+ } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store)); // Load block removal rules, simultaneously signalling that the block
40
+ // removal prompt is in place.
51
41
 
52
42
  (0, _element.useEffect)(() => {
53
- toggleRemovalPromptSupport(true);
43
+ setBlockRemovalRules(rules);
54
44
  return () => {
55
- toggleRemovalPromptSupport(false);
45
+ setBlockRemovalRules();
56
46
  };
57
- }, [toggleRemovalPromptSupport]);
47
+ }, [rules, setBlockRemovalRules]);
58
48
 
59
49
  if (!blockNamesForPrompt) {
60
50
  return;
@@ -64,24 +54,27 @@ function BlockRemovalWarningModal() {
64
54
  privateRemoveBlocks(clientIds, selectPrevious,
65
55
  /* force */
66
56
  true);
67
- clearRemovalPrompt();
57
+ clearBlockRemovalPrompt();
68
58
  };
69
59
 
70
60
  return (0, _element.createElement)(_components.Modal, {
71
61
  title: (0, _i18n.__)('Are you sure?'),
72
- onRequestClose: clearRemovalPrompt
73
- }, blockNamesForPrompt.length === 1 ? (0, _element.createElement)("p", null, blockTypePromptMessages[blockNamesForPrompt[0]]) : (0, _element.createElement)("ul", {
62
+ onRequestClose: clearBlockRemovalPrompt,
63
+ style: {
64
+ maxWidth: '40rem'
65
+ }
66
+ }, blockNamesForPrompt.length === 1 ? (0, _element.createElement)("p", null, rules[blockNamesForPrompt[0]]) : (0, _element.createElement)("ul", {
74
67
  style: {
75
68
  listStyleType: 'disc',
76
69
  paddingLeft: '1rem'
77
70
  }
78
71
  }, blockNamesForPrompt.map(name => (0, _element.createElement)("li", {
79
72
  key: name
80
- }, blockTypePromptMessages[name]))), (0, _element.createElement)("p", null, (0, _i18n._n)('Removing this block is not advised.', 'Removing these blocks is not advised.', blockNamesForPrompt.length)), (0, _element.createElement)(_components.__experimentalHStack, {
73
+ }, rules[name]))), (0, _element.createElement)("p", null, blockNamesForPrompt.length > 1 ? (0, _i18n.__)('Removing these blocks is not advised.') : (0, _i18n.__)('Removing this block is not advised.')), (0, _element.createElement)(_components.__experimentalHStack, {
81
74
  justify: "right"
82
75
  }, (0, _element.createElement)(_components.Button, {
83
76
  variant: "tertiary",
84
- onClick: clearRemovalPrompt
77
+ onClick: clearBlockRemovalPrompt
85
78
  }, (0, _i18n.__)('Cancel')), (0, _element.createElement)(_components.Button, {
86
79
  variant: "primary",
87
80
  onClick: onConfirmRemoval
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-removal-warning-modal/index.js"],"names":["blockTypePromptMessages","BlockRemovalWarningModal","clientIds","selectPrevious","blockNamesForPrompt","select","blockEditorStore","getRemovalPromptData","clearRemovalPrompt","toggleRemovalPromptSupport","privateRemoveBlocks","onConfirmRemoval","length","listStyleType","paddingLeft","map","name"],"mappings":";;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAKA;;AACA;;AAhBA;AACA;AACA;;AAUA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,uBAAuB,GAAG;AACtC,gBAAc,cAAI,+CAAJ,CADwB;AAEtC,uBAAqB,cACpB,sDADoB;AAFiB,CAAhC;;;AAOA,SAASC,wBAAT,GAAoC;AAC1C,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,cAAb;AAA6BC,IAAAA;AAA7B,MAAqD,qBACxDC,MAAF,IACC,wBAAQA,MAAM,CAAEC,YAAF,CAAd,EAAqCC,oBAArC,EAFyD,CAA3D;AAKA,QAAM;AACLC,IAAAA,kBADK;AAELC,IAAAA,0BAFK;AAGLC,IAAAA;AAHK,MAIF,wBAAQ,uBAAaJ,YAAb,CAAR,CAJJ,CAN0C,CAY1C;;AACA,0BAAW,MAAM;AAChBG,IAAAA,0BAA0B,CAAE,IAAF,CAA1B;AACA,WAAO,MAAM;AACZA,MAAAA,0BAA0B,CAAE,KAAF,CAA1B;AACA,KAFD;AAGA,GALD,EAKG,CAAEA,0BAAF,CALH;;AAOA,MAAK,CAAEL,mBAAP,EAA6B;AAC5B;AACA;;AAED,QAAMO,gBAAgB,GAAG,MAAM;AAC9BD,IAAAA,mBAAmB,CAAER,SAAF,EAAaC,cAAb;AAA6B;AAAY,QAAzC,CAAnB;AACAK,IAAAA,kBAAkB;AAClB,GAHD;;AAKA,SACC,4BAAC,iBAAD;AACC,IAAA,KAAK,EAAG,cAAI,eAAJ,CADT;AAEC,IAAA,cAAc,EAAGA;AAFlB,KAIGJ,mBAAmB,CAACQ,MAApB,KAA+B,CAA/B,GACD,uCAAKZ,uBAAuB,CAAEI,mBAAmB,CAAE,CAAF,CAArB,CAA5B,CADC,GAGD;AAAI,IAAA,KAAK,EAAG;AAAES,MAAAA,aAAa,EAAE,MAAjB;AAAyBC,MAAAA,WAAW,EAAE;AAAtC;AAAZ,KACGV,mBAAmB,CAACW,GAApB,CAA2BC,IAAF,IAC1B;AAAI,IAAA,GAAG,EAAGA;AAAV,KACGhB,uBAAuB,CAAEgB,IAAF,CAD1B,CADC,CADH,CAPF,EAeC,uCACG,cACD,qCADC,EAED,uCAFC,EAGDZ,mBAAmB,CAACQ,MAHnB,CADH,CAfD,EAsBC,4BAAC,gCAAD;AAAQ,IAAA,OAAO,EAAC;AAAhB,KACC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,UAAhB;AAA2B,IAAA,OAAO,EAAGJ;AAArC,KACG,cAAI,QAAJ,CADH,CADD,EAIC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,OAAO,EAAGG;AAApC,KACG,cAAI,QAAJ,CADH,CAJD,CAtBD,CADD;AAiCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tModal,\n\tButton,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __, _n } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n// In certain editing contexts, we'd like to prevent accidental removal of\n// important blocks. For example, in the site editor, the Query Loop block is\n// deemed important. In such cases, we'll ask the user for confirmation that\n// they intended to remove such block(s).\n//\n// @see https://github.com/WordPress/gutenberg/pull/51145\nexport const blockTypePromptMessages = {\n\t'core/query': __( 'Query Loop displays a list of posts or pages.' ),\n\t'core/post-content': __(\n\t\t'Post Content displays the content of a post or page.'\n\t),\n};\n\nexport function BlockRemovalWarningModal() {\n\tconst { clientIds, selectPrevious, blockNamesForPrompt } = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getRemovalPromptData()\n\t);\n\n\tconst {\n\t\tclearRemovalPrompt,\n\t\ttoggleRemovalPromptSupport,\n\t\tprivateRemoveBlocks,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\t// Signalling the removal prompt is in place.\n\tuseEffect( () => {\n\t\ttoggleRemovalPromptSupport( true );\n\t\treturn () => {\n\t\t\ttoggleRemovalPromptSupport( false );\n\t\t};\n\t}, [ toggleRemovalPromptSupport ] );\n\n\tif ( ! blockNamesForPrompt ) {\n\t\treturn;\n\t}\n\n\tconst onConfirmRemoval = () => {\n\t\tprivateRemoveBlocks( clientIds, selectPrevious, /* force */ true );\n\t\tclearRemovalPrompt();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Are you sure?' ) }\n\t\t\tonRequestClose={ clearRemovalPrompt }\n\t\t>\n\t\t\t{ blockNamesForPrompt.length === 1 ? (\n\t\t\t\t<p>{ blockTypePromptMessages[ blockNamesForPrompt[ 0 ] ] }</p>\n\t\t\t) : (\n\t\t\t\t<ul style={ { listStyleType: 'disc', paddingLeft: '1rem' } }>\n\t\t\t\t\t{ blockNamesForPrompt.map( ( name ) => (\n\t\t\t\t\t\t<li key={ name }>\n\t\t\t\t\t\t\t{ blockTypePromptMessages[ name ] }\n\t\t\t\t\t\t</li>\n\t\t\t\t\t) ) }\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t\t<p>\n\t\t\t\t{ _n(\n\t\t\t\t\t'Removing this block is not advised.',\n\t\t\t\t\t'Removing these blocks is not advised.',\n\t\t\t\t\tblockNamesForPrompt.length\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<HStack justify=\"right\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ clearRemovalPrompt }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"primary\" onClick={ onConfirmRemoval }>\n\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</Modal>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-removal-warning-modal/index.js"],"names":["BlockRemovalWarningModal","rules","clientIds","selectPrevious","blockNamesForPrompt","select","blockEditorStore","getRemovalPromptData","clearBlockRemovalPrompt","setBlockRemovalRules","privateRemoveBlocks","onConfirmRemoval","maxWidth","length","listStyleType","paddingLeft","map","name"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAKA;;AACA;;AAhBA;AACA;AACA;;AAUA;AACA;AACA;AAIO,SAASA,wBAAT,CAAmC;AAAEC,EAAAA;AAAF,CAAnC,EAA+C;AACrD,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,cAAb;AAA6BC,IAAAA;AAA7B,MAAqD,qBACxDC,MAAF,IACC,wBAAQA,MAAM,CAAEC,YAAF,CAAd,EAAqCC,oBAArC,EAFyD,CAA3D;AAKA,QAAM;AACLC,IAAAA,uBADK;AAELC,IAAAA,oBAFK;AAGLC,IAAAA;AAHK,MAIF,wBAAQ,uBAAaJ,YAAb,CAAR,CAJJ,CANqD,CAYrD;AACA;;AACA,0BAAW,MAAM;AAChBG,IAAAA,oBAAoB,CAAER,KAAF,CAApB;AACA,WAAO,MAAM;AACZQ,MAAAA,oBAAoB;AACpB,KAFD;AAGA,GALD,EAKG,CAAER,KAAF,EAASQ,oBAAT,CALH;;AAOA,MAAK,CAAEL,mBAAP,EAA6B;AAC5B;AACA;;AAED,QAAMO,gBAAgB,GAAG,MAAM;AAC9BD,IAAAA,mBAAmB,CAAER,SAAF,EAAaC,cAAb;AAA6B;AAAY,QAAzC,CAAnB;AACAK,IAAAA,uBAAuB;AACvB,GAHD;;AAKA,SACC,4BAAC,iBAAD;AACC,IAAA,KAAK,EAAG,cAAI,eAAJ,CADT;AAEC,IAAA,cAAc,EAAGA,uBAFlB;AAGC,IAAA,KAAK,EAAG;AACPI,MAAAA,QAAQ,EAAE;AADH;AAHT,KAOGR,mBAAmB,CAACS,MAApB,KAA+B,CAA/B,GACD,uCAAKZ,KAAK,CAAEG,mBAAmB,CAAE,CAAF,CAArB,CAAV,CADC,GAGD;AAAI,IAAA,KAAK,EAAG;AAAEU,MAAAA,aAAa,EAAE,MAAjB;AAAyBC,MAAAA,WAAW,EAAE;AAAtC;AAAZ,KACGX,mBAAmB,CAACY,GAApB,CAA2BC,IAAF,IAC1B;AAAI,IAAA,GAAG,EAAGA;AAAV,KAAmBhB,KAAK,CAAEgB,IAAF,CAAxB,CADC,CADH,CAVF,EAgBC,uCACGb,mBAAmB,CAACS,MAApB,GAA6B,CAA7B,GACC,cAAI,uCAAJ,CADD,GAEC,cAAI,qCAAJ,CAHJ,CAhBD,EAqBC,4BAAC,gCAAD;AAAQ,IAAA,OAAO,EAAC;AAAhB,KACC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,UAAhB;AAA2B,IAAA,OAAO,EAAGL;AAArC,KACG,cAAI,QAAJ,CADH,CADD,EAIC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,OAAO,EAAGG;AAApC,KACG,cAAI,QAAJ,CADH,CAJD,CArBD,CADD;AAgCA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tModal,\n\tButton,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function BlockRemovalWarningModal( { rules } ) {\n\tconst { clientIds, selectPrevious, blockNamesForPrompt } = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getRemovalPromptData()\n\t);\n\n\tconst {\n\t\tclearBlockRemovalPrompt,\n\t\tsetBlockRemovalRules,\n\t\tprivateRemoveBlocks,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\t// Load block removal rules, simultaneously signalling that the block\n\t// removal prompt is in place.\n\tuseEffect( () => {\n\t\tsetBlockRemovalRules( rules );\n\t\treturn () => {\n\t\t\tsetBlockRemovalRules();\n\t\t};\n\t}, [ rules, setBlockRemovalRules ] );\n\n\tif ( ! blockNamesForPrompt ) {\n\t\treturn;\n\t}\n\n\tconst onConfirmRemoval = () => {\n\t\tprivateRemoveBlocks( clientIds, selectPrevious, /* force */ true );\n\t\tclearBlockRemovalPrompt();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Are you sure?' ) }\n\t\t\tonRequestClose={ clearBlockRemovalPrompt }\n\t\t\tstyle={ {\n\t\t\t\tmaxWidth: '40rem',\n\t\t\t} }\n\t\t>\n\t\t\t{ blockNamesForPrompt.length === 1 ? (\n\t\t\t\t<p>{ rules[ blockNamesForPrompt[ 0 ] ] }</p>\n\t\t\t) : (\n\t\t\t\t<ul style={ { listStyleType: 'disc', paddingLeft: '1rem' } }>\n\t\t\t\t\t{ blockNamesForPrompt.map( ( name ) => (\n\t\t\t\t\t\t<li key={ name }>{ rules[ name ] }</li>\n\t\t\t\t\t) ) }\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t\t<p>\n\t\t\t\t{ blockNamesForPrompt.length > 1\n\t\t\t\t\t? __( 'Removing these blocks is not advised.' )\n\t\t\t\t\t: __( 'Removing this block is not advised.' ) }\n\t\t\t</p>\n\t\t\t<HStack justify=\"right\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ clearBlockRemovalPrompt }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"primary\" onClick={ onConfirmRemoval }>\n\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t</Button>\n\t\t\t</HStack>\n\t\t</Modal>\n\t);\n}\n"]}
@@ -93,7 +93,8 @@ const BlockToolbar = ({
93
93
  isVisual: selectedBlockClientIds.every(id => getBlockMode(id) === 'visual'),
94
94
  blockEditingMode: getBlockEditingMode(selectedBlockClientId)
95
95
  };
96
- }, []); // Handles highlighting the current block outline on hover or focus of the
96
+ }, []);
97
+ const toolbarWrapperRef = (0, _element.useRef)(null); // Handles highlighting the current block outline on hover or focus of the
97
98
  // block type toolbar area.
98
99
 
99
100
  const {
@@ -140,16 +141,18 @@ const BlockToolbar = ({
140
141
  'is-synced': isSynced
141
142
  });
142
143
  return (0, _element.createElement)("div", {
143
- className: classes
144
- }, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && (0, _element.createElement)(_blockParentSelector.default, null), (0, _element.createElement)("div", {
144
+ className: classes,
145
+ ref: toolbarWrapperRef
146
+ }, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && (0, _element.createElement)(_blockParentSelector.default, null), (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && (0, _element.createElement)("div", {
145
147
  ref: nodeRef,
146
148
  ...showMoversGestures
147
- }, (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && (0, _element.createElement)(_components.ToolbarGroup, {
149
+ }, (0, _element.createElement)(_components.ToolbarGroup, {
148
150
  className: "block-editor-block-toolbar__block-controls"
149
151
  }, (0, _element.createElement)(_blockSwitcher.default, {
150
152
  clientIds: blockClientIds
151
153
  }), !isMultiToolbar && (0, _element.createElement)(_blockLock.BlockLockToolbar, {
152
- clientId: blockClientIds[0]
154
+ clientId: blockClientIds[0],
155
+ wrapperRef: toolbarWrapperRef
153
156
  }), (0, _element.createElement)(_blockMover.default, {
154
157
  clientIds: blockClientIds,
155
158
  hideDragHandle: hideDragHandle