@wordpress/block-editor 15.8.1-next.16d95556a.0 → 15.9.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 (302) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-inspector/edit-contents.js +19 -23
  3. package/build/components/block-inspector/edit-contents.js.map +3 -3
  4. package/build/components/block-inspector/index.js +7 -1
  5. package/build/components/block-inspector/index.js.map +2 -2
  6. package/build/components/block-list/block.js +4 -0
  7. package/build/components/block-list/block.js.map +2 -2
  8. package/build/components/block-list/index.js +2 -1
  9. package/build/components/block-list/index.js.map +2 -2
  10. package/build/components/block-list/use-block-props/index.js +3 -1
  11. package/build/components/block-list/use-block-props/index.js.map +2 -2
  12. package/build/components/block-list/use-block-props/use-is-hovered.js +16 -10
  13. package/build/components/block-list/use-block-props/use-is-hovered.js.map +2 -2
  14. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +27 -5
  15. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +2 -2
  16. package/build/components/block-lock/modal.js +5 -5
  17. package/build/components/block-lock/modal.js.map +2 -2
  18. package/build/components/block-lock/use-block-lock.js +10 -13
  19. package/build/components/block-lock/use-block-lock.js.map +2 -2
  20. package/build/components/block-settings-menu-controls/edit-section-menu-item.js +64 -0
  21. package/build/components/block-settings-menu-controls/edit-section-menu-item.js.map +7 -0
  22. package/build/components/block-settings-menu-controls/index.js +9 -1
  23. package/build/components/block-settings-menu-controls/index.js.map +2 -2
  24. package/build/components/block-toolbar/block-toolbar-icon.js +9 -9
  25. package/build/components/block-toolbar/block-toolbar-icon.js.map +2 -2
  26. package/build/components/block-tools/index.js +56 -45
  27. package/build/components/block-tools/index.js.map +3 -3
  28. package/build/components/block-variation-transforms/index.js +32 -5
  29. package/build/components/block-variation-transforms/index.js.map +2 -2
  30. package/build/components/block-visibility/toolbar.js +1 -1
  31. package/build/components/block-visibility/toolbar.js.map +1 -1
  32. package/build/components/border-radius-control/single-input-control.js +1 -0
  33. package/build/components/border-radius-control/single-input-control.js.map +2 -2
  34. package/build/components/content-only-controls/fields-dropdown-menu.js +66 -0
  35. package/build/components/content-only-controls/fields-dropdown-menu.js.map +7 -0
  36. package/build/components/content-only-controls/index.js +444 -0
  37. package/build/components/content-only-controls/index.js.map +7 -0
  38. package/build/components/content-only-controls/link/index.js +193 -0
  39. package/build/components/content-only-controls/link/index.js.map +7 -0
  40. package/build/components/content-only-controls/media/index.js +264 -0
  41. package/build/components/content-only-controls/media/index.js.map +7 -0
  42. package/build/components/content-only-controls/rich-text/index.js +188 -0
  43. package/build/components/content-only-controls/rich-text/index.js.map +7 -0
  44. package/build/components/content-only-controls/use-inspector-popover-placement.js +41 -0
  45. package/build/components/content-only-controls/use-inspector-popover-placement.js.map +7 -0
  46. package/build/components/font-family/index.js +1 -15
  47. package/build/components/font-family/index.js.map +2 -2
  48. package/build/components/global-styles/dimensions-panel.js +35 -2
  49. package/build/components/global-styles/dimensions-panel.js.map +2 -2
  50. package/build/components/global-styles/hooks.js +1 -1
  51. package/build/components/global-styles/hooks.js.map +2 -2
  52. package/build/components/global-styles/typography-panel.js +1 -2
  53. package/build/components/global-styles/typography-panel.js.map +2 -2
  54. package/build/components/inserter/media-tab/media-tab.js +1 -33
  55. package/build/components/inserter/media-tab/media-tab.js.map +3 -3
  56. package/build/components/inspector-controls-tabs/content-tab.js +6 -2
  57. package/build/components/inspector-controls-tabs/content-tab.js.map +3 -3
  58. package/build/components/inspector-controls-tabs/index.js +7 -1
  59. package/build/components/inspector-controls-tabs/index.js.map +2 -2
  60. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -1
  61. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +2 -2
  62. package/build/components/link-control/index.js +15 -7
  63. package/build/components/link-control/index.js.map +2 -2
  64. package/build/components/list-view/block-select-button.js +7 -8
  65. package/build/components/list-view/block-select-button.js.map +2 -2
  66. package/build/components/list-view/block.js +9 -7
  67. package/build/components/list-view/block.js.map +2 -2
  68. package/build/components/media-placeholder/index.js +18 -35
  69. package/build/components/media-placeholder/index.js.map +3 -3
  70. package/build/components/media-placeholder/utils.js +60 -0
  71. package/build/components/media-placeholder/utils.js.map +7 -0
  72. package/build/components/media-replace-flow/index.js +24 -33
  73. package/build/components/media-replace-flow/index.js.map +3 -3
  74. package/build/components/use-block-commands/index.js +1 -1
  75. package/build/components/use-block-commands/index.js.map +2 -2
  76. package/build/components/use-block-display-information/index.js +21 -1
  77. package/build/components/use-block-display-information/index.js.map +3 -3
  78. package/build/components/use-block-drop-zone/index.js +1 -5
  79. package/build/components/use-block-drop-zone/index.js.map +2 -2
  80. package/build/hooks/block-bindings.js +52 -61
  81. package/build/hooks/block-bindings.js.map +3 -3
  82. package/build/hooks/dimensions.js +3 -3
  83. package/build/hooks/dimensions.js.map +2 -2
  84. package/build/hooks/metadata.js +1 -1
  85. package/build/hooks/metadata.js.map +2 -2
  86. package/build/hooks/use-content-only-section-edit.js +67 -0
  87. package/build/hooks/use-content-only-section-edit.js.map +7 -0
  88. package/build/hooks/utils.js +5 -1
  89. package/build/hooks/utils.js.map +2 -2
  90. package/build/layouts/constrained.js +2 -2
  91. package/build/layouts/constrained.js.map +2 -2
  92. package/build/private-apis.js +2 -3
  93. package/build/private-apis.js.map +3 -3
  94. package/build/store/private-keys.js +3 -0
  95. package/build/store/private-keys.js.map +2 -2
  96. package/build/store/private-selectors.js +41 -2
  97. package/build/store/private-selectors.js.map +2 -2
  98. package/build/store/selectors.js +6 -4
  99. package/build/store/selectors.js.map +2 -2
  100. package/build/utils/fit-text-utils.js +9 -1
  101. package/build/utils/fit-text-utils.js.map +2 -2
  102. package/build-module/components/block-inspector/edit-contents.js +9 -23
  103. package/build-module/components/block-inspector/edit-contents.js.map +2 -2
  104. package/build-module/components/block-inspector/index.js +7 -1
  105. package/build-module/components/block-inspector/index.js.map +2 -2
  106. package/build-module/components/block-list/block.js +4 -0
  107. package/build-module/components/block-list/block.js.map +2 -2
  108. package/build-module/components/block-list/index.js +2 -1
  109. package/build-module/components/block-list/index.js.map +2 -2
  110. package/build-module/components/block-list/use-block-props/index.js +3 -1
  111. package/build-module/components/block-list/use-block-props/index.js.map +2 -2
  112. package/build-module/components/block-list/use-block-props/use-is-hovered.js +16 -10
  113. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +2 -2
  114. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +27 -5
  115. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +2 -2
  116. package/build-module/components/block-lock/modal.js +5 -5
  117. package/build-module/components/block-lock/modal.js.map +2 -2
  118. package/build-module/components/block-lock/use-block-lock.js +10 -13
  119. package/build-module/components/block-lock/use-block-lock.js.map +2 -2
  120. package/build-module/components/block-settings-menu-controls/edit-section-menu-item.js +29 -0
  121. package/build-module/components/block-settings-menu-controls/edit-section-menu-item.js.map +7 -0
  122. package/build-module/components/block-settings-menu-controls/index.js +9 -1
  123. package/build-module/components/block-settings-menu-controls/index.js.map +2 -2
  124. package/build-module/components/block-toolbar/block-toolbar-icon.js +10 -10
  125. package/build-module/components/block-toolbar/block-toolbar-icon.js.map +2 -2
  126. package/build-module/components/block-tools/index.js +56 -45
  127. package/build-module/components/block-tools/index.js.map +2 -2
  128. package/build-module/components/block-variation-transforms/index.js +32 -5
  129. package/build-module/components/block-variation-transforms/index.js.map +2 -2
  130. package/build-module/components/block-visibility/toolbar.js +1 -1
  131. package/build-module/components/block-visibility/toolbar.js.map +1 -1
  132. package/build-module/components/border-radius-control/single-input-control.js +1 -0
  133. package/build-module/components/border-radius-control/single-input-control.js.map +2 -2
  134. package/build-module/components/content-only-controls/fields-dropdown-menu.js +45 -0
  135. package/build-module/components/content-only-controls/fields-dropdown-menu.js.map +7 -0
  136. package/build-module/components/content-only-controls/index.js +420 -0
  137. package/build-module/components/content-only-controls/index.js.map +7 -0
  138. package/build-module/components/content-only-controls/link/index.js +160 -0
  139. package/build-module/components/content-only-controls/link/index.js.map +7 -0
  140. package/build-module/components/content-only-controls/media/index.js +242 -0
  141. package/build-module/components/content-only-controls/media/index.js.map +7 -0
  142. package/build-module/components/content-only-controls/rich-text/index.js +160 -0
  143. package/build-module/components/content-only-controls/rich-text/index.js.map +7 -0
  144. package/build-module/components/content-only-controls/use-inspector-popover-placement.js +16 -0
  145. package/build-module/components/content-only-controls/use-inspector-popover-placement.js.map +7 -0
  146. package/build-module/components/font-family/index.js +1 -15
  147. package/build-module/components/font-family/index.js.map +2 -2
  148. package/build-module/components/global-styles/dimensions-panel.js +35 -2
  149. package/build-module/components/global-styles/dimensions-panel.js.map +2 -2
  150. package/build-module/components/global-styles/hooks.js +1 -1
  151. package/build-module/components/global-styles/hooks.js.map +2 -2
  152. package/build-module/components/global-styles/typography-panel.js +1 -2
  153. package/build-module/components/global-styles/typography-panel.js.map +2 -2
  154. package/build-module/components/inserter/media-tab/media-tab.js +2 -34
  155. package/build-module/components/inserter/media-tab/media-tab.js.map +2 -2
  156. package/build-module/components/inspector-controls-tabs/content-tab.js +7 -3
  157. package/build-module/components/inspector-controls-tabs/content-tab.js.map +2 -2
  158. package/build-module/components/inspector-controls-tabs/index.js +7 -1
  159. package/build-module/components/inspector-controls-tabs/index.js.map +2 -2
  160. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -1
  161. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +2 -2
  162. package/build-module/components/link-control/index.js +16 -8
  163. package/build-module/components/link-control/index.js.map +2 -2
  164. package/build-module/components/list-view/block-select-button.js +14 -9
  165. package/build-module/components/list-view/block-select-button.js.map +2 -2
  166. package/build-module/components/list-view/block.js +9 -7
  167. package/build-module/components/list-view/block.js.map +2 -2
  168. package/build-module/components/media-placeholder/index.js +19 -36
  169. package/build-module/components/media-placeholder/index.js.map +2 -2
  170. package/build-module/components/media-placeholder/utils.js +35 -0
  171. package/build-module/components/media-placeholder/utils.js.map +7 -0
  172. package/build-module/components/media-replace-flow/index.js +24 -33
  173. package/build-module/components/media-replace-flow/index.js.map +2 -2
  174. package/build-module/components/use-block-commands/index.js +1 -1
  175. package/build-module/components/use-block-commands/index.js.map +2 -2
  176. package/build-module/components/use-block-display-information/index.js +21 -1
  177. package/build-module/components/use-block-display-information/index.js.map +3 -3
  178. package/build-module/components/use-block-drop-zone/index.js +1 -5
  179. package/build-module/components/use-block-drop-zone/index.js.map +2 -2
  180. package/build-module/hooks/block-bindings.js +57 -62
  181. package/build-module/hooks/block-bindings.js.map +2 -2
  182. package/build-module/hooks/dimensions.js +3 -3
  183. package/build-module/hooks/dimensions.js.map +2 -2
  184. package/build-module/hooks/metadata.js +1 -1
  185. package/build-module/hooks/metadata.js.map +2 -2
  186. package/build-module/hooks/use-content-only-section-edit.js +46 -0
  187. package/build-module/hooks/use-content-only-section-edit.js.map +7 -0
  188. package/build-module/hooks/utils.js +5 -1
  189. package/build-module/hooks/utils.js.map +2 -2
  190. package/build-module/layouts/constrained.js +2 -2
  191. package/build-module/layouts/constrained.js.map +2 -2
  192. package/build-module/private-apis.js +3 -3
  193. package/build-module/private-apis.js.map +2 -2
  194. package/build-module/store/private-keys.js +2 -0
  195. package/build-module/store/private-keys.js.map +2 -2
  196. package/build-module/store/private-selectors.js +37 -2
  197. package/build-module/store/private-selectors.js.map +2 -2
  198. package/build-module/store/selectors.js +6 -4
  199. package/build-module/store/selectors.js.map +2 -2
  200. package/build-module/utils/fit-text-utils.js +9 -1
  201. package/build-module/utils/fit-text-utils.js.map +2 -2
  202. package/build-style/content-rtl.css +3 -0
  203. package/build-style/content.css +3 -0
  204. package/build-style/style-rtl.css +145 -4
  205. package/build-style/style.css +145 -4
  206. package/package.json +38 -37
  207. package/src/components/block-inspector/edit-contents.js +10 -29
  208. package/src/components/block-inspector/index.js +4 -2
  209. package/src/components/block-list/block.js +6 -0
  210. package/src/components/block-list/content.scss +5 -0
  211. package/src/components/block-list/index.js +3 -1
  212. package/src/components/block-list/use-block-props/index.js +3 -1
  213. package/src/components/block-list/use-block-props/use-is-hovered.js +24 -12
  214. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +34 -3
  215. package/src/components/block-lock/modal.js +6 -5
  216. package/src/components/block-lock/use-block-lock.js +10 -14
  217. package/src/components/block-patterns-list/stories/{index.story.js → index.story.jsx} +3 -1
  218. package/src/components/block-settings-menu-controls/edit-section-menu-item.js +39 -0
  219. package/src/components/block-settings-menu-controls/index.js +8 -1
  220. package/src/components/block-toolbar/block-toolbar-icon.js +14 -10
  221. package/src/components/block-tools/index.js +15 -2
  222. package/src/components/block-tools/style.scss +4 -0
  223. package/src/components/block-variation-transforms/index.js +96 -35
  224. package/src/components/block-visibility/toolbar.js +1 -1
  225. package/src/components/border-radius-control/single-input-control.js +1 -0
  226. package/src/components/content-only-controls/fields-dropdown-menu.js +53 -0
  227. package/src/components/content-only-controls/index.js +560 -0
  228. package/src/components/content-only-controls/link/index.js +200 -0
  229. package/src/components/content-only-controls/link/styles.scss +23 -0
  230. package/src/components/content-only-controls/media/index.js +306 -0
  231. package/src/components/content-only-controls/media/styles.scss +47 -0
  232. package/src/components/content-only-controls/rich-text/index.js +179 -0
  233. package/src/components/content-only-controls/rich-text/styles.scss +24 -0
  234. package/src/components/content-only-controls/styles.scss +44 -0
  235. package/src/components/content-only-controls/use-inspector-popover-placement.js +19 -0
  236. package/src/components/font-family/README.md +0 -9
  237. package/src/components/font-family/index.js +1 -16
  238. package/src/components/font-family/stories/{index.story.js → index.story.jsx} +0 -1
  239. package/src/components/global-styles/dimensions-panel.js +36 -0
  240. package/src/components/global-styles/hooks.js +1 -1
  241. package/src/components/global-styles/typography-panel.js +0 -1
  242. package/src/components/inserter/media-tab/media-tab.js +2 -44
  243. package/src/components/inspector-controls-tabs/content-tab.js +12 -4
  244. package/src/components/inspector-controls-tabs/index.js +4 -1
  245. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -5
  246. package/src/components/link-control/index.js +36 -12
  247. package/src/components/list-view/block-select-button.js +15 -10
  248. package/src/components/list-view/block.js +9 -7
  249. package/src/components/media-placeholder/index.js +21 -46
  250. package/src/components/media-placeholder/test/get-computed-accept-attribute.js +164 -0
  251. package/src/components/media-placeholder/utils.js +65 -0
  252. package/src/components/media-replace-flow/index.js +25 -42
  253. package/src/components/use-block-commands/index.js +1 -1
  254. package/src/components/use-block-display-information/index.js +30 -2
  255. package/src/components/use-block-drop-zone/index.js +1 -5
  256. package/src/hooks/block-bindings.js +71 -82
  257. package/src/hooks/dimensions.js +8 -3
  258. package/src/hooks/metadata.js +1 -1
  259. package/src/hooks/test/metadata.js +1 -1
  260. package/src/hooks/use-content-only-section-edit.js +63 -0
  261. package/src/hooks/utils.js +4 -0
  262. package/src/layouts/constrained.js +8 -2
  263. package/src/private-apis.js +2 -2
  264. package/src/store/private-keys.js +1 -0
  265. package/src/store/private-selectors.js +121 -5
  266. package/src/store/selectors.js +6 -4
  267. package/src/store/test/private-selectors.js +242 -0
  268. package/src/style.scss +1 -1
  269. package/src/utils/fit-text-utils.js +19 -1
  270. package/tsconfig.json +1 -0
  271. package/build/components/media-upload-modal/index.js +0 -29
  272. package/build/components/media-upload-modal/index.js.map +0 -7
  273. package/build-module/components/media-upload-modal/index.js +0 -8
  274. package/build-module/components/media-upload-modal/index.js.map +0 -7
  275. package/src/components/font-family/style.scss +0 -7
  276. package/src/components/media-upload-modal/index.js +0 -18
  277. /package/src/components/alignment-control/stories/{aliginment-toolbar.story.js → aliginment-toolbar.story.jsx} +0 -0
  278. /package/src/components/alignment-control/stories/{index.story.js → index.story.jsx} +0 -0
  279. /package/src/components/block-alignment-matrix-control/stories/{index.story.js → index.story.jsx} +0 -0
  280. /package/src/components/block-draggable/stories/{index.story.js → index.story.jsx} +0 -0
  281. /package/src/components/block-heading-level-dropdown/stories/{index.story.js → index.story.jsx} +0 -0
  282. /package/src/components/block-mover/stories/{index.story.js → index.story.jsx} +0 -0
  283. /package/src/components/block-title/stories/{index.story.js → index.story.jsx} +0 -0
  284. /package/src/components/border-radius-control/stories/{index.story.js → index.story.jsx} +0 -0
  285. /package/src/components/date-format-picker/stories/{index.story.js → index.story.jsx} +0 -0
  286. /package/src/components/dimensions-tool/stories/{aspect-ratio-tool.story.js → aspect-ratio-tool.story.jsx} +0 -0
  287. /package/src/components/dimensions-tool/stories/{index.story.js → index.story.jsx} +0 -0
  288. /package/src/components/dimensions-tool/stories/{scale-tool.story.js → scale-tool.story.jsx} +0 -0
  289. /package/src/components/dimensions-tool/stories/{width-height-tool.story.js → width-height-tool.story.jsx} +0 -0
  290. /package/src/components/height-control/stories/{index.story.js → index.story.jsx} +0 -0
  291. /package/src/components/inserter/stories/{index.story.js → index.story.jsx} +0 -0
  292. /package/src/components/line-height-control/stories/{index.story.js → index.story.jsx} +0 -0
  293. /package/src/components/plain-text/stories/{index.story.js → index.story.jsx} +0 -0
  294. /package/src/components/resolution-tool/stories/{index.story.js → index.story.jsx} +0 -0
  295. /package/src/components/tabbed-sidebar/stories/{index.story.js → index.story.jsx} +0 -0
  296. /package/src/components/text-alignment-control/stories/{index.story.js → index.story.jsx} +0 -0
  297. /package/src/components/text-decoration-control/stories/{index.story.js → index.story.jsx} +0 -0
  298. /package/src/components/text-transform-control/stories/{index.story.js → index.story.jsx} +0 -0
  299. /package/src/components/unit-control/stories/{index.story.js → index.story.jsx} +0 -0
  300. /package/src/components/url-popover/stories/{index.story.js → index.story.jsx} +0 -0
  301. /package/src/components/warning/stories/{index.story.js → index.story.jsx} +0 -0
  302. /package/src/components/writing-mode-control/stories/{index.story.js → index.story.jsx} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/block-list/use-block-props/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { __unstableGetBlockProps as getBlockProps } from '@wordpress/blocks';\nimport { useMergeRefs, useDisabled } from '@wordpress/compose';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport useMovingAnimation from '../../use-moving-animation';\nimport { PrivateBlockContext } from '../private-block-context';\nimport { useFocusFirstElement } from './use-focus-first-element';\nimport { useIsHovered } from './use-is-hovered';\nimport {\n\tblockBindingsKey,\n\tuseBlockEditContext,\n} from '../../block-edit/context';\nimport { useFocusHandler } from './use-focus-handler';\nimport { useEventHandlers } from './use-selected-block-event-handlers';\nimport { useBlockRefProvider } from './use-block-refs';\nimport { useIntersectionObserver } from './use-intersection-observer';\nimport { useScrollIntoView } from './use-scroll-into-view';\nimport { useFlashEditableBlocks } from '../../use-flash-editable-blocks';\nimport { useFirefoxDraggableCompatibility } from './use-firefox-draggable-compatibility';\n\n/**\n * This hook is used to lightly mark an element as a block element. The element\n * should be the outermost element of a block. Call this hook and pass the\n * returned props to the element to mark as a block. If you define a ref for the\n * element, it is important to pass the ref to this hook, which the hook in turn\n * will pass to the component through the props it returns. Optionally, you can\n * also pass any other props through this hook, and they will be merged and\n * returned.\n *\n * Use of this hook on the outermost element of a block is required if using API >= v2.\n *\n * @example\n * ```js\n * import { useBlockProps } from '@wordpress/block-editor';\n *\n * export default function Edit() {\n *\n * const blockProps = useBlockProps( {\n * className: 'my-custom-class',\n * style: {\n * color: '#222222',\n * backgroundColor: '#eeeeee'\n * }\n * } )\n *\n * return (\n *\t <div { ...blockProps }>\n *\n * </div>\n * )\n * }\n *\n * ```\n *\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Options for internal use only.\n * @param {boolean} options.__unstableIsHtml\n *\n * @return {Object} Props to pass to the element to mark as a block.\n */\nexport function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {\n\tconst {\n\t\tclientId,\n\t\tclassName,\n\t\twrapperProps = {},\n\t\tisAligned,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisEditingContentOnlySection,\n\t\tdefaultClassName,\n\t\tisSectionBlock,\n\t\tcanMove,\n\t\tisBlockHidden,\n\t} = useContext( PrivateBlockContext );\n\n\t// translators: %s: Type of block (i.e. Text, Image etc)\n\tconst blockLabel = sprintf( __( 'Block: %s' ), blockTitle );\n\tconst htmlSuffix = mode === 'html' && ! __unstableIsHtml ? '-visual' : '';\n\tconst ffDragRef = useFirefoxDraggableCompatibility();\n\tconst mergedRefs = useMergeRefs( [\n\t\tprops.ref,\n\t\tuseFocusFirstElement( { clientId, initialPosition } ),\n\t\tuseBlockRefProvider( clientId ),\n\t\tuseFocusHandler( clientId ),\n\t\tuseEventHandlers( { clientId, isSelected } ),\n\t\tuseIsHovered(),\n\t\tuseIntersectionObserver(),\n\t\tuseMovingAnimation( { triggerAnimationOnChange: index, clientId } ),\n\t\tuseDisabled( { isDisabled: ! hasOverlay } ),\n\t\tuseFlashEditableBlocks( {\n\t\t\tclientId,\n\t\t\tisEnabled: isSectionBlock,\n\t\t} ),\n\t\tuseScrollIntoView( { isSelected } ),\n\t\tcanMove ? ffDragRef : undefined,\n\t] );\n\n\tconst blockEditContext = useBlockEditContext();\n\tconst hasBlockBindings = !! blockEditContext[ blockBindingsKey ];\n\tconst bindingsStyle = hasBlockBindings\n\t\t? {\n\t\t\t\t'--wp-admin-theme-color': 'var(--wp-block-synced-color)',\n\t\t\t\t'--wp-admin-theme-color--rgb':\n\t\t\t\t\t'var(--wp-block-synced-color--rgb)',\n\t\t }\n\t\t: {};\n\n\t// Ensures it warns only inside the `edit` implementation for the block.\n\tif ( blockApiVersion < 2 && clientId === blockEditContext.clientId ) {\n\t\twarning(\n\t\t\t`Block type \"${ name }\" must support API version 2 or higher to work correctly with \"useBlockProps\" method.`\n\t\t);\n\t}\n\n\tlet hasNegativeMargin = false;\n\tif (\n\t\twrapperProps?.style?.marginTop?.charAt( 0 ) === '-' ||\n\t\twrapperProps?.style?.marginBottom?.charAt( 0 ) === '-' ||\n\t\twrapperProps?.style?.marginLeft?.charAt( 0 ) === '-' ||\n\t\twrapperProps?.style?.marginRight?.charAt( 0 ) === '-'\n\t) {\n\t\thasNegativeMargin = true;\n\t}\n\n\treturn {\n\t\ttabIndex: blockEditingMode === 'disabled' ? -1 : 0,\n\t\tdraggable: canMove && ! hasChildSelected ? true : undefined,\n\t\t...wrapperProps,\n\t\t...props,\n\t\tref: mergedRefs,\n\t\tid: `block-${ clientId }${ htmlSuffix }`,\n\t\trole: 'document',\n\t\t'aria-label': blockLabel,\n\t\t'data-block': clientId,\n\t\t'data-type': name,\n\t\t'data-title': blockTitle,\n\t\tinert: isSubtreeDisabled ? 'true' : undefined,\n\t\tclassName: clsx(\n\t\t\t'block-editor-block-list__block',\n\t\t\t{\n\t\t\t\t// The wp-block className is important for editor styles.\n\t\t\t\t'wp-block': ! isAligned,\n\t\t\t\t'has-block-overlay': hasOverlay,\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-highlighted': isHighlighted,\n\t\t\t\t'is-multi-selected': isMultiSelected,\n\t\t\t\t'is-partially-selected': isPartiallySelected,\n\t\t\t\t'is-reusable': isReusable,\n\t\t\t\t'is-dragging': isDragging,\n\t\t\t\t'has-child-selected': hasChildSelected,\n\t\t\t\t'is-editing-disabled': isEditingDisabled,\n\t\t\t\t'has-editable-outline': hasEditableOutline,\n\t\t\t\t'has-negative-margin': hasNegativeMargin,\n\t\t\t\t'is-editing-content-only-section': isEditingContentOnlySection,\n\t\t\t\t'is-block-hidden': isBlockHidden,\n\t\t\t},\n\t\t\tclassName,\n\t\t\tprops.className,\n\t\t\twrapperProps.className,\n\t\t\tdefaultClassName\n\t\t),\n\t\tstyle: { ...wrapperProps.style, ...props.style, ...bindingsStyle },\n\t};\n}\n\n/**\n * Call within a save function to get the props for the block wrapper.\n *\n * @param {Object} props Optional. Props to pass to the element.\n */\nuseBlockProps.save = getBlockProps;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { __unstableGetBlockProps as getBlockProps } from '@wordpress/blocks';\nimport { useMergeRefs, useDisabled } from '@wordpress/compose';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport useMovingAnimation from '../../use-moving-animation';\nimport { PrivateBlockContext } from '../private-block-context';\nimport { useFocusFirstElement } from './use-focus-first-element';\nimport { useIsHovered } from './use-is-hovered';\nimport {\n\tblockBindingsKey,\n\tuseBlockEditContext,\n} from '../../block-edit/context';\nimport { useFocusHandler } from './use-focus-handler';\nimport { useEventHandlers } from './use-selected-block-event-handlers';\nimport { useBlockRefProvider } from './use-block-refs';\nimport { useIntersectionObserver } from './use-intersection-observer';\nimport { useScrollIntoView } from './use-scroll-into-view';\nimport { useFlashEditableBlocks } from '../../use-flash-editable-blocks';\nimport { useFirefoxDraggableCompatibility } from './use-firefox-draggable-compatibility';\n\n/**\n * This hook is used to lightly mark an element as a block element. The element\n * should be the outermost element of a block. Call this hook and pass the\n * returned props to the element to mark as a block. If you define a ref for the\n * element, it is important to pass the ref to this hook, which the hook in turn\n * will pass to the component through the props it returns. Optionally, you can\n * also pass any other props through this hook, and they will be merged and\n * returned.\n *\n * Use of this hook on the outermost element of a block is required if using API >= v2.\n *\n * @example\n * ```js\n * import { useBlockProps } from '@wordpress/block-editor';\n *\n * export default function Edit() {\n *\n * const blockProps = useBlockProps( {\n * className: 'my-custom-class',\n * style: {\n * color: '#222222',\n * backgroundColor: '#eeeeee'\n * }\n * } )\n *\n * return (\n *\t <div { ...blockProps }>\n *\n * </div>\n * )\n * }\n *\n * ```\n *\n *\n * @param {Object} props Optional. Props to pass to the element. Must contain\n * the ref if one is defined.\n * @param {Object} options Options for internal use only.\n * @param {boolean} options.__unstableIsHtml\n *\n * @return {Object} Props to pass to the element to mark as a block.\n */\nexport function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {\n\tconst {\n\t\tclientId,\n\t\tclassName,\n\t\twrapperProps = {},\n\t\tisAligned,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisEditingContentOnlySection,\n\t\tdefaultClassName,\n\t\tisSectionBlock,\n\t\tisWithinSectionBlock,\n\t\tcanMove,\n\t\tisBlockHidden,\n\t} = useContext( PrivateBlockContext );\n\n\t// translators: %s: Type of block (i.e. Text, Image etc)\n\tconst blockLabel = sprintf( __( 'Block: %s' ), blockTitle );\n\tconst htmlSuffix = mode === 'html' && ! __unstableIsHtml ? '-visual' : '';\n\tconst ffDragRef = useFirefoxDraggableCompatibility();\n\tconst isHoverEnabled = ! isWithinSectionBlock;\n\tconst mergedRefs = useMergeRefs( [\n\t\tprops.ref,\n\t\tuseFocusFirstElement( { clientId, initialPosition } ),\n\t\tuseBlockRefProvider( clientId ),\n\t\tuseFocusHandler( clientId ),\n\t\tuseEventHandlers( { clientId, isSelected } ),\n\t\tuseIsHovered( { isEnabled: isHoverEnabled } ),\n\t\tuseIntersectionObserver(),\n\t\tuseMovingAnimation( { triggerAnimationOnChange: index, clientId } ),\n\t\tuseDisabled( { isDisabled: ! hasOverlay } ),\n\t\tuseFlashEditableBlocks( {\n\t\t\tclientId,\n\t\t\tisEnabled: isSectionBlock,\n\t\t} ),\n\t\tuseScrollIntoView( { isSelected } ),\n\t\tcanMove ? ffDragRef : undefined,\n\t] );\n\n\tconst blockEditContext = useBlockEditContext();\n\tconst hasBlockBindings = !! blockEditContext[ blockBindingsKey ];\n\tconst bindingsStyle = hasBlockBindings\n\t\t? {\n\t\t\t\t'--wp-admin-theme-color': 'var(--wp-block-synced-color)',\n\t\t\t\t'--wp-admin-theme-color--rgb':\n\t\t\t\t\t'var(--wp-block-synced-color--rgb)',\n\t\t }\n\t\t: {};\n\n\t// Ensures it warns only inside the `edit` implementation for the block.\n\tif ( blockApiVersion < 2 && clientId === blockEditContext.clientId ) {\n\t\twarning(\n\t\t\t`Block type \"${ name }\" must support API version 2 or higher to work correctly with \"useBlockProps\" method.`\n\t\t);\n\t}\n\n\tlet hasNegativeMargin = false;\n\tif (\n\t\twrapperProps?.style?.marginTop?.charAt( 0 ) === '-' ||\n\t\twrapperProps?.style?.marginBottom?.charAt( 0 ) === '-' ||\n\t\twrapperProps?.style?.marginLeft?.charAt( 0 ) === '-' ||\n\t\twrapperProps?.style?.marginRight?.charAt( 0 ) === '-'\n\t) {\n\t\thasNegativeMargin = true;\n\t}\n\n\treturn {\n\t\ttabIndex: blockEditingMode === 'disabled' ? -1 : 0,\n\t\tdraggable: canMove && ! hasChildSelected ? true : undefined,\n\t\t...wrapperProps,\n\t\t...props,\n\t\tref: mergedRefs,\n\t\tid: `block-${ clientId }${ htmlSuffix }`,\n\t\trole: 'document',\n\t\t'aria-label': blockLabel,\n\t\t'data-block': clientId,\n\t\t'data-type': name,\n\t\t'data-title': blockTitle,\n\t\tinert: isSubtreeDisabled ? 'true' : undefined,\n\t\tclassName: clsx(\n\t\t\t'block-editor-block-list__block',\n\t\t\t{\n\t\t\t\t// The wp-block className is important for editor styles.\n\t\t\t\t'wp-block': ! isAligned,\n\t\t\t\t'has-block-overlay': hasOverlay,\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-highlighted': isHighlighted,\n\t\t\t\t'is-multi-selected': isMultiSelected,\n\t\t\t\t'is-partially-selected': isPartiallySelected,\n\t\t\t\t'is-reusable': isReusable,\n\t\t\t\t'is-dragging': isDragging,\n\t\t\t\t'has-child-selected': hasChildSelected,\n\t\t\t\t'is-editing-disabled': isEditingDisabled,\n\t\t\t\t'has-editable-outline': hasEditableOutline,\n\t\t\t\t'has-negative-margin': hasNegativeMargin,\n\t\t\t\t'is-editing-content-only-section': isEditingContentOnlySection,\n\t\t\t\t'is-block-hidden': isBlockHidden,\n\t\t\t},\n\t\t\tclassName,\n\t\t\tprops.className,\n\t\t\twrapperProps.className,\n\t\t\tdefaultClassName\n\t\t),\n\t\tstyle: { ...wrapperProps.style, ...props.style, ...bindingsStyle },\n\t};\n}\n\n/**\n * Call within a save function to get the props for the block wrapper.\n *\n * @param {Object} props Optional. Props to pass to the element.\n */\nuseBlockProps.save = getBlockProps;\n"],
5
+ "mappings": "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",
6
6
  "names": ["useMovingAnimation", "warning", "clsx", "getBlockProps"]
7
7
  }
@@ -34,16 +34,22 @@ function listener(event) {
34
34
  event.type === "mouseover"
35
35
  );
36
36
  }
37
- function useIsHovered() {
38
- return (0, import_compose.useRefEffect)((node) => {
39
- node.addEventListener("mouseout", listener);
40
- node.addEventListener("mouseover", listener);
41
- return () => {
42
- node.removeEventListener("mouseout", listener);
43
- node.removeEventListener("mouseover", listener);
44
- node.classList.remove("is-hovered");
45
- };
46
- }, []);
37
+ function useIsHovered({ isEnabled = true } = {}) {
38
+ return (0, import_compose.useRefEffect)(
39
+ (node) => {
40
+ if (!isEnabled) {
41
+ return;
42
+ }
43
+ node.addEventListener("mouseout", listener);
44
+ node.addEventListener("mouseover", listener);
45
+ return () => {
46
+ node.removeEventListener("mouseout", listener);
47
+ node.removeEventListener("mouseover", listener);
48
+ node.classList.remove("is-hovered");
49
+ };
50
+ },
51
+ [isEnabled]
52
+ );
47
53
  }
48
54
  // Annotate the CommonJS export names for ESM import in node:
49
55
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/block-list/use-block-props/use-is-hovered.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\n\nfunction listener( event ) {\n\tif ( event.defaultPrevented ) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\tevent.currentTarget.classList.toggle(\n\t\t'is-hovered',\n\t\tevent.type === 'mouseover'\n\t);\n}\n\n/*\n * Adds `is-hovered` class when the block is hovered and in navigation or\n * outline mode.\n */\nexport function useIsHovered() {\n\treturn useRefEffect( ( node ) => {\n\t\tnode.addEventListener( 'mouseout', listener );\n\t\tnode.addEventListener( 'mouseover', listener );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'mouseout', listener );\n\t\t\tnode.removeEventListener( 'mouseover', listener );\n\n\t\t\t// Remove class in case it lingers.\n\t\t\tnode.classList.remove( 'is-hovered' );\n\t\t};\n\t}, [] );\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA6B;AAE7B,SAAS,SAAU,OAAQ;AAC1B,MAAK,MAAM,kBAAmB;AAC7B;AAAA,EACD;AAEA,QAAM,eAAe;AACrB,QAAM,cAAc,UAAU;AAAA,IAC7B;AAAA,IACA,MAAM,SAAS;AAAA,EAChB;AACD;AAMO,SAAS,eAAe;AAC9B,aAAO,6BAAc,CAAE,SAAU;AAChC,SAAK,iBAAkB,YAAY,QAAS;AAC5C,SAAK,iBAAkB,aAAa,QAAS;AAE7C,WAAO,MAAM;AACZ,WAAK,oBAAqB,YAAY,QAAS;AAC/C,WAAK,oBAAqB,aAAa,QAAS;AAGhD,WAAK,UAAU,OAAQ,YAAa;AAAA,IACrC;AAAA,EACD,GAAG,CAAC,CAAE;AACP;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\n\nfunction listener( event ) {\n\tif ( event.defaultPrevented ) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\tevent.currentTarget.classList.toggle(\n\t\t'is-hovered',\n\t\tevent.type === 'mouseover'\n\t);\n}\n\n/**\n * Adds `is-hovered` class when the block is hovered and in navigation or\n * outline mode.\n *\n * @param {Object} options Options object.\n * @param {boolean} [options.isEnabled=true] Whether to enable hover detection.\n *\n * @return {Function} Ref callback.\n */\nexport function useIsHovered( { isEnabled = true } = {} ) {\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'mouseout', listener );\n\t\t\tnode.addEventListener( 'mouseover', listener );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'mouseout', listener );\n\t\t\t\tnode.removeEventListener( 'mouseover', listener );\n\n\t\t\t\t// Remove class in case it lingers.\n\t\t\t\tnode.classList.remove( 'is-hovered' );\n\t\t\t};\n\t\t},\n\t\t[ isEnabled ]\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA6B;AAE7B,SAAS,SAAU,OAAQ;AAC1B,MAAK,MAAM,kBAAmB;AAC7B;AAAA,EACD;AAEA,QAAM,eAAe;AACrB,QAAM,cAAc,UAAU;AAAA,IAC7B;AAAA,IACA,MAAM,SAAS;AAAA,EAChB;AACD;AAWO,SAAS,aAAc,EAAE,YAAY,KAAK,IAAI,CAAC,GAAI;AACzD,aAAO;AAAA,IACN,CAAE,SAAU;AACX,UAAK,CAAE,WAAY;AAClB;AAAA,MACD;AAEA,WAAK,iBAAkB,YAAY,QAAS;AAC5C,WAAK,iBAAkB,aAAa,QAAS;AAE7C,aAAO,MAAM;AACZ,aAAK,oBAAqB,YAAY,QAAS;AAC/C,aAAK,oBAAqB,aAAa,QAAS;AAGhD,aAAK,UAAU,OAAQ,YAAa;AAAA,MACrC;AAAA,IACD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AACD;",
6
6
  "names": []
7
7
  }
@@ -33,15 +33,20 @@ function isColorTransparent(color) {
33
33
  return !color || color === "transparent" || color === "rgba(0, 0, 0, 0)";
34
34
  }
35
35
  function useEventHandlers({ clientId, isSelected }) {
36
- const { getBlockRootClientId, isZoomOut, hasMultiSelection } = (0, import_lock_unlock.unlock)(
37
- (0, import_data.useSelect)(import_store.store)
38
- );
36
+ const {
37
+ getBlockRootClientId,
38
+ isZoomOut,
39
+ hasMultiSelection,
40
+ isSectionBlock,
41
+ editedContentOnlySection
42
+ } = (0, import_lock_unlock.unlock)((0, import_data.useSelect)(import_store.store));
39
43
  const {
40
44
  insertAfterBlock,
41
45
  removeBlock,
42
46
  resetZoomLevel,
43
47
  startDraggingBlocks,
44
- stopDraggingBlocks
48
+ stopDraggingBlocks,
49
+ editContentOnlySection
45
50
  } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_store.store));
46
51
  return (0, import_compose.useRefEffect)(
47
52
  (node) => {
@@ -196,9 +201,23 @@ function useEventHandlers({ clientId, isSelected }) {
196
201
  }
197
202
  node.addEventListener("keydown", onKeyDown);
198
203
  node.addEventListener("dragstart", onDragStart);
204
+ function onDoubleClick(event) {
205
+ const isSection = isSectionBlock(clientId);
206
+ const isAlreadyEditing = editedContentOnlySection === clientId;
207
+ if (isSection && !isAlreadyEditing) {
208
+ event.preventDefault();
209
+ editContentOnlySection(clientId);
210
+ }
211
+ }
212
+ if (window?.__experimentalContentOnlyPatternInsertion) {
213
+ node.addEventListener("dblclick", onDoubleClick);
214
+ }
199
215
  return () => {
200
216
  node.removeEventListener("keydown", onKeyDown);
201
217
  node.removeEventListener("dragstart", onDragStart);
218
+ if (window?.__experimentalContentOnlyPatternInsertion) {
219
+ node.removeEventListener("dblclick", onDoubleClick);
220
+ }
202
221
  };
203
222
  },
204
223
  [
@@ -211,7 +230,10 @@ function useEventHandlers({ clientId, isSelected }) {
211
230
  resetZoomLevel,
212
231
  hasMultiSelection,
213
232
  startDraggingBlocks,
214
- stopDraggingBlocks
233
+ stopDraggingBlocks,
234
+ isSectionBlock,
235
+ editedContentOnlySection,
236
+ editContentOnlySection
215
237
  ]
216
238
  );
217
239
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/block-list/use-block-props/use-selected-block-event-handlers.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { isTextField } from '@wordpress/dom';\nimport { ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction isColorTransparent( color ) {\n\treturn ! color || color === 'transparent' || color === 'rgba(0, 0, 0, 0)';\n}\n\n/**\n * Adds block behaviour:\n * - Removes the block on BACKSPACE.\n * - Inserts a default block on ENTER.\n * - Disables dragging of block contents.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useEventHandlers( { clientId, isSelected } ) {\n\tconst { getBlockRootClientId, isZoomOut, hasMultiSelection } = unlock(\n\t\tuseSelect( blockEditorStore )\n\t);\n\tconst {\n\t\tinsertAfterBlock,\n\t\tremoveBlock,\n\t\tresetZoomLevel,\n\t\tstartDraggingBlocks,\n\t\tstopDraggingBlocks,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isSelected ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Interprets keydown event intent to remove or insert after block if\n\t\t\t * key event occurs on wrapper node. This can occur when the block has\n\t\t\t * no text fields of its own, particularly after initial insertion, to\n\t\t\t * allow for easy deletion and continuous writing flow to add additional\n\t\t\t * content.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keydown event.\n\t\t\t */\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, target } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tkeyCode !== ENTER &&\n\t\t\t\t\tkeyCode !== BACKSPACE &&\n\t\t\t\t\tkeyCode !== DELETE\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( target !== node || isTextField( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( keyCode === ENTER && isZoomOut() ) {\n\t\t\t\t\tresetZoomLevel();\n\t\t\t\t} else if ( keyCode === ENTER ) {\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Prevents default dragging behavior within a block. To do: we must\n\t\t\t * handle this in the future and clean up the drag target.\n\t\t\t *\n\t\t\t * @param {DragEvent} event Drag event.\n\t\t\t */\n\t\t\tfunction onDragStart( event ) {\n\t\t\t\tif (\n\t\t\t\t\tnode !== event.target ||\n\t\t\t\t\tnode.isContentEditable ||\n\t\t\t\t\tnode.ownerDocument.activeElement !== node ||\n\t\t\t\t\thasMultiSelection()\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = JSON.stringify( {\n\t\t\t\t\ttype: 'block',\n\t\t\t\t\tsrcClientIds: [ clientId ],\n\t\t\t\t\tsrcRootClientId: getBlockRootClientId( clientId ),\n\t\t\t\t} );\n\t\t\t\tevent.dataTransfer.effectAllowed = 'move'; // remove \"+\" cursor\n\t\t\t\tevent.dataTransfer.clearData();\n\t\t\t\tevent.dataTransfer.setData( 'wp-blocks', data );\n\t\t\t\tconst { ownerDocument } = node;\n\t\t\t\tconst { defaultView } = ownerDocument;\n\t\t\t\tconst selection = defaultView.getSelection();\n\t\t\t\tselection.removeAllRanges();\n\n\t\t\t\t// Setting the drag chip as the drag image actually works, but\n\t\t\t\t// the behaviour is slightly different in every browser. In\n\t\t\t\t// Safari, it animates, in Firefox it's slightly transparent...\n\t\t\t\t// So we set a fake drag image and have to reposition it\n\t\t\t\t// ourselves.\n\t\t\t\tconst dragElement = ownerDocument.createElement( 'div' );\n\t\t\t\t// Chrome will show a globe icon if the drag element does not\n\t\t\t\t// have dimensions.\n\t\t\t\tdragElement.style.width = '1px';\n\t\t\t\tdragElement.style.height = '1px';\n\t\t\t\tdragElement.style.position = 'fixed';\n\t\t\t\tdragElement.style.visibility = 'hidden';\n\t\t\t\townerDocument.body.appendChild( dragElement );\n\t\t\t\tevent.dataTransfer.setDragImage( dragElement, 0, 0 );\n\n\t\t\t\tconst rect = node.getBoundingClientRect();\n\n\t\t\t\tconst clone = node.cloneNode( true );\n\t\t\t\tclone.style.visibility = 'hidden';\n\t\t\t\t// Maybe remove the clone now that it's relative?\n\t\t\t\tclone.style.display = 'none';\n\n\t\t\t\t// Remove the id and leave it on the clone so that drop target\n\t\t\t\t// calculations are correct.\n\t\t\t\tconst id = node.id;\n\t\t\t\tnode.id = null;\n\n\t\t\t\tlet _scale = 1;\n\n\t\t\t\t{\n\t\t\t\t\tlet parentElement = node;\n\t\t\t\t\twhile ( ( parentElement = parentElement.parentElement ) ) {\n\t\t\t\t\t\tconst { scale } =\n\t\t\t\t\t\t\tdefaultView.getComputedStyle( parentElement );\n\t\t\t\t\t\tif ( scale && scale !== 'none' ) {\n\t\t\t\t\t\t\t_scale = parseFloat( scale );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst inverted = 1 / _scale;\n\n\t\t\t\tnode.after( clone );\n\n\t\t\t\tconst originalNodeProperties = {};\n\t\t\t\tfor ( const property of [\n\t\t\t\t\t'transform',\n\t\t\t\t\t'transformOrigin',\n\t\t\t\t\t'transition',\n\t\t\t\t\t'zIndex',\n\t\t\t\t\t'position',\n\t\t\t\t\t'top',\n\t\t\t\t\t'left',\n\t\t\t\t\t'pointerEvents',\n\t\t\t\t\t'opacity',\n\t\t\t\t\t'backgroundColor',\n\t\t\t\t] ) {\n\t\t\t\t\toriginalNodeProperties[ property ] = node.style[ property ];\n\t\t\t\t}\n\n\t\t\t\t// Get scroll position.\n\t\t\t\tconst originScrollTop = defaultView.scrollY;\n\t\t\t\tconst originScrollLeft = defaultView.scrollX;\n\t\t\t\tconst originClientX = event.clientX;\n\t\t\t\tconst originClientY = event.clientY;\n\n\t\t\t\t// We can't use position fixed because it will behave different\n\t\t\t\t// if the html element is scaled or transformed (position will\n\t\t\t\t// no longer be relative to the viewport). The downside of\n\t\t\t\t// relative is that we have to listen to scroll events. On the\n\t\t\t\t// upside we don't have to clone to keep a space. Absolute\n\t\t\t\t// positioning might be weird because it will be based on the\n\t\t\t\t// positioned parent, but it might be worth a try.\n\t\t\t\tnode.style.position = 'relative';\n\t\t\t\tnode.style.top = `${ 0 }px`;\n\t\t\t\tnode.style.left = `${ 0 }px`;\n\n\t\t\t\tconst originX = event.clientX - rect.left;\n\t\t\t\tconst originY = event.clientY - rect.top;\n\n\t\t\t\t// Scale everything to 200px.\n\t\t\t\tconst dragScale = rect.height > 200 ? 200 / rect.height : 1;\n\n\t\t\t\tnode.style.zIndex = '1000';\n\t\t\t\tnode.style.transformOrigin = `${ originX * inverted }px ${\n\t\t\t\t\toriginY * inverted\n\t\t\t\t}px`;\n\t\t\t\tnode.style.transition = 'transform 0.2s ease-out';\n\t\t\t\tnode.style.transform = `scale(${ dragScale })`;\n\t\t\t\tnode.style.opacity = '0.9';\n\n\t\t\t\t// If the block has no background color, use the parent's\n\t\t\t\t// background color.\n\t\t\t\tif (\n\t\t\t\t\tisColorTransparent(\n\t\t\t\t\t\tdefaultView.getComputedStyle( node ).backgroundColor\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlet bgColor = 'transparent';\n\t\t\t\t\tlet parentElement = node;\n\t\t\t\t\twhile ( ( parentElement = parentElement.parentElement ) ) {\n\t\t\t\t\t\tconst { backgroundColor } =\n\t\t\t\t\t\t\tdefaultView.getComputedStyle( parentElement );\n\t\t\t\t\t\tif ( ! isColorTransparent( backgroundColor ) ) {\n\t\t\t\t\t\t\tbgColor = backgroundColor;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tnode.style.backgroundColor = bgColor;\n\t\t\t\t}\n\n\t\t\t\tlet hasStarted = false;\n\n\t\t\t\tfunction over( e ) {\n\t\t\t\t\tif ( ! hasStarted ) {\n\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\tnode.style.pointerEvents = 'none';\n\t\t\t\t\t}\n\t\t\t\t\tconst scrollTop = defaultView.scrollY;\n\t\t\t\t\tconst scrollLeft = defaultView.scrollX;\n\t\t\t\t\tnode.style.top = `${\n\t\t\t\t\t\t( e.clientY -\n\t\t\t\t\t\t\toriginClientY +\n\t\t\t\t\t\t\tscrollTop -\n\t\t\t\t\t\t\toriginScrollTop ) *\n\t\t\t\t\t\tinverted\n\t\t\t\t\t}px`;\n\t\t\t\t\tnode.style.left = `${\n\t\t\t\t\t\t( e.clientX -\n\t\t\t\t\t\t\toriginClientX +\n\t\t\t\t\t\t\tscrollLeft -\n\t\t\t\t\t\t\toriginScrollLeft ) *\n\t\t\t\t\t\tinverted\n\t\t\t\t\t}px`;\n\t\t\t\t}\n\n\t\t\t\tfunction end() {\n\t\t\t\t\townerDocument.removeEventListener( 'dragover', over );\n\t\t\t\t\townerDocument.removeEventListener( 'dragend', end );\n\t\t\t\t\townerDocument.removeEventListener( 'drop', end );\n\t\t\t\t\townerDocument.removeEventListener( 'scroll', over );\n\t\t\t\t\tfor ( const [ property, value ] of Object.entries(\n\t\t\t\t\t\toriginalNodeProperties\n\t\t\t\t\t) ) {\n\t\t\t\t\t\tnode.style[ property ] = value;\n\t\t\t\t\t}\n\t\t\t\t\tclone.remove();\n\t\t\t\t\tnode.id = id;\n\t\t\t\t\tdragElement.remove();\n\t\t\t\t\tstopDraggingBlocks();\n\t\t\t\t\tdocument.body.classList.remove(\n\t\t\t\t\t\t'is-dragging-components-draggable'\n\t\t\t\t\t);\n\t\t\t\t\townerDocument.documentElement.classList.remove(\n\t\t\t\t\t\t'is-dragging'\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\townerDocument.addEventListener( 'dragover', over );\n\t\t\t\townerDocument.addEventListener( 'dragend', end );\n\t\t\t\townerDocument.addEventListener( 'drop', end );\n\t\t\t\townerDocument.addEventListener( 'scroll', over );\n\n\t\t\t\tstartDraggingBlocks( [ clientId ] );\n\t\t\t\t// Important because it hides the block toolbar.\n\t\t\t\tdocument.body.classList.add(\n\t\t\t\t\t'is-dragging-components-draggable'\n\t\t\t\t);\n\t\t\t\townerDocument.documentElement.classList.add( 'is-dragging' );\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\t\tnode.addEventListener( 'dragstart', onDragStart );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tnode.removeEventListener( 'dragstart', onDragStart );\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tisSelected,\n\t\t\tgetBlockRootClientId,\n\t\t\tinsertAfterBlock,\n\t\t\tremoveBlock,\n\t\t\tisZoomOut,\n\t\t\tresetZoomLevel,\n\t\t\thasMultiSelection,\n\t\t\tstartDraggingBlocks,\n\t\t\tstopDraggingBlocks,\n\t\t]\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { isTextField } from '@wordpress/dom';\nimport { ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction isColorTransparent( color ) {\n\treturn ! color || color === 'transparent' || color === 'rgba(0, 0, 0, 0)';\n}\n\n/**\n * Adds block behaviour:\n * - Removes the block on BACKSPACE.\n * - Inserts a default block on ENTER.\n * - Disables dragging of block contents.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useEventHandlers( { clientId, isSelected } ) {\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tisZoomOut,\n\t\thasMultiSelection,\n\t\tisSectionBlock,\n\t\teditedContentOnlySection,\n\t} = unlock( useSelect( blockEditorStore ) );\n\tconst {\n\t\tinsertAfterBlock,\n\t\tremoveBlock,\n\t\tresetZoomLevel,\n\t\tstartDraggingBlocks,\n\t\tstopDraggingBlocks,\n\t\teditContentOnlySection,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isSelected ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Interprets keydown event intent to remove or insert after block if\n\t\t\t * key event occurs on wrapper node. This can occur when the block has\n\t\t\t * no text fields of its own, particularly after initial insertion, to\n\t\t\t * allow for easy deletion and continuous writing flow to add additional\n\t\t\t * content.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keydown event.\n\t\t\t */\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, target } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tkeyCode !== ENTER &&\n\t\t\t\t\tkeyCode !== BACKSPACE &&\n\t\t\t\t\tkeyCode !== DELETE\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( target !== node || isTextField( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( keyCode === ENTER && isZoomOut() ) {\n\t\t\t\t\tresetZoomLevel();\n\t\t\t\t} else if ( keyCode === ENTER ) {\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t} else {\n\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Prevents default dragging behavior within a block. To do: we must\n\t\t\t * handle this in the future and clean up the drag target.\n\t\t\t *\n\t\t\t * @param {DragEvent} event Drag event.\n\t\t\t */\n\t\t\tfunction onDragStart( event ) {\n\t\t\t\tif (\n\t\t\t\t\tnode !== event.target ||\n\t\t\t\t\tnode.isContentEditable ||\n\t\t\t\t\tnode.ownerDocument.activeElement !== node ||\n\t\t\t\t\thasMultiSelection()\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = JSON.stringify( {\n\t\t\t\t\ttype: 'block',\n\t\t\t\t\tsrcClientIds: [ clientId ],\n\t\t\t\t\tsrcRootClientId: getBlockRootClientId( clientId ),\n\t\t\t\t} );\n\t\t\t\tevent.dataTransfer.effectAllowed = 'move'; // remove \"+\" cursor\n\t\t\t\tevent.dataTransfer.clearData();\n\t\t\t\tevent.dataTransfer.setData( 'wp-blocks', data );\n\t\t\t\tconst { ownerDocument } = node;\n\t\t\t\tconst { defaultView } = ownerDocument;\n\t\t\t\tconst selection = defaultView.getSelection();\n\t\t\t\tselection.removeAllRanges();\n\n\t\t\t\t// Setting the drag chip as the drag image actually works, but\n\t\t\t\t// the behaviour is slightly different in every browser. In\n\t\t\t\t// Safari, it animates, in Firefox it's slightly transparent...\n\t\t\t\t// So we set a fake drag image and have to reposition it\n\t\t\t\t// ourselves.\n\t\t\t\tconst dragElement = ownerDocument.createElement( 'div' );\n\t\t\t\t// Chrome will show a globe icon if the drag element does not\n\t\t\t\t// have dimensions.\n\t\t\t\tdragElement.style.width = '1px';\n\t\t\t\tdragElement.style.height = '1px';\n\t\t\t\tdragElement.style.position = 'fixed';\n\t\t\t\tdragElement.style.visibility = 'hidden';\n\t\t\t\townerDocument.body.appendChild( dragElement );\n\t\t\t\tevent.dataTransfer.setDragImage( dragElement, 0, 0 );\n\n\t\t\t\tconst rect = node.getBoundingClientRect();\n\n\t\t\t\tconst clone = node.cloneNode( true );\n\t\t\t\tclone.style.visibility = 'hidden';\n\t\t\t\t// Maybe remove the clone now that it's relative?\n\t\t\t\tclone.style.display = 'none';\n\n\t\t\t\t// Remove the id and leave it on the clone so that drop target\n\t\t\t\t// calculations are correct.\n\t\t\t\tconst id = node.id;\n\t\t\t\tnode.id = null;\n\n\t\t\t\tlet _scale = 1;\n\n\t\t\t\t{\n\t\t\t\t\tlet parentElement = node;\n\t\t\t\t\twhile ( ( parentElement = parentElement.parentElement ) ) {\n\t\t\t\t\t\tconst { scale } =\n\t\t\t\t\t\t\tdefaultView.getComputedStyle( parentElement );\n\t\t\t\t\t\tif ( scale && scale !== 'none' ) {\n\t\t\t\t\t\t\t_scale = parseFloat( scale );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst inverted = 1 / _scale;\n\n\t\t\t\tnode.after( clone );\n\n\t\t\t\tconst originalNodeProperties = {};\n\t\t\t\tfor ( const property of [\n\t\t\t\t\t'transform',\n\t\t\t\t\t'transformOrigin',\n\t\t\t\t\t'transition',\n\t\t\t\t\t'zIndex',\n\t\t\t\t\t'position',\n\t\t\t\t\t'top',\n\t\t\t\t\t'left',\n\t\t\t\t\t'pointerEvents',\n\t\t\t\t\t'opacity',\n\t\t\t\t\t'backgroundColor',\n\t\t\t\t] ) {\n\t\t\t\t\toriginalNodeProperties[ property ] = node.style[ property ];\n\t\t\t\t}\n\n\t\t\t\t// Get scroll position.\n\t\t\t\tconst originScrollTop = defaultView.scrollY;\n\t\t\t\tconst originScrollLeft = defaultView.scrollX;\n\t\t\t\tconst originClientX = event.clientX;\n\t\t\t\tconst originClientY = event.clientY;\n\n\t\t\t\t// We can't use position fixed because it will behave different\n\t\t\t\t// if the html element is scaled or transformed (position will\n\t\t\t\t// no longer be relative to the viewport). The downside of\n\t\t\t\t// relative is that we have to listen to scroll events. On the\n\t\t\t\t// upside we don't have to clone to keep a space. Absolute\n\t\t\t\t// positioning might be weird because it will be based on the\n\t\t\t\t// positioned parent, but it might be worth a try.\n\t\t\t\tnode.style.position = 'relative';\n\t\t\t\tnode.style.top = `${ 0 }px`;\n\t\t\t\tnode.style.left = `${ 0 }px`;\n\n\t\t\t\tconst originX = event.clientX - rect.left;\n\t\t\t\tconst originY = event.clientY - rect.top;\n\n\t\t\t\t// Scale everything to 200px.\n\t\t\t\tconst dragScale = rect.height > 200 ? 200 / rect.height : 1;\n\n\t\t\t\tnode.style.zIndex = '1000';\n\t\t\t\tnode.style.transformOrigin = `${ originX * inverted }px ${\n\t\t\t\t\toriginY * inverted\n\t\t\t\t}px`;\n\t\t\t\tnode.style.transition = 'transform 0.2s ease-out';\n\t\t\t\tnode.style.transform = `scale(${ dragScale })`;\n\t\t\t\tnode.style.opacity = '0.9';\n\n\t\t\t\t// If the block has no background color, use the parent's\n\t\t\t\t// background color.\n\t\t\t\tif (\n\t\t\t\t\tisColorTransparent(\n\t\t\t\t\t\tdefaultView.getComputedStyle( node ).backgroundColor\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tlet bgColor = 'transparent';\n\t\t\t\t\tlet parentElement = node;\n\t\t\t\t\twhile ( ( parentElement = parentElement.parentElement ) ) {\n\t\t\t\t\t\tconst { backgroundColor } =\n\t\t\t\t\t\t\tdefaultView.getComputedStyle( parentElement );\n\t\t\t\t\t\tif ( ! isColorTransparent( backgroundColor ) ) {\n\t\t\t\t\t\t\tbgColor = backgroundColor;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tnode.style.backgroundColor = bgColor;\n\t\t\t\t}\n\n\t\t\t\tlet hasStarted = false;\n\n\t\t\t\tfunction over( e ) {\n\t\t\t\t\tif ( ! hasStarted ) {\n\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\tnode.style.pointerEvents = 'none';\n\t\t\t\t\t}\n\t\t\t\t\tconst scrollTop = defaultView.scrollY;\n\t\t\t\t\tconst scrollLeft = defaultView.scrollX;\n\t\t\t\t\tnode.style.top = `${\n\t\t\t\t\t\t( e.clientY -\n\t\t\t\t\t\t\toriginClientY +\n\t\t\t\t\t\t\tscrollTop -\n\t\t\t\t\t\t\toriginScrollTop ) *\n\t\t\t\t\t\tinverted\n\t\t\t\t\t}px`;\n\t\t\t\t\tnode.style.left = `${\n\t\t\t\t\t\t( e.clientX -\n\t\t\t\t\t\t\toriginClientX +\n\t\t\t\t\t\t\tscrollLeft -\n\t\t\t\t\t\t\toriginScrollLeft ) *\n\t\t\t\t\t\tinverted\n\t\t\t\t\t}px`;\n\t\t\t\t}\n\n\t\t\t\tfunction end() {\n\t\t\t\t\townerDocument.removeEventListener( 'dragover', over );\n\t\t\t\t\townerDocument.removeEventListener( 'dragend', end );\n\t\t\t\t\townerDocument.removeEventListener( 'drop', end );\n\t\t\t\t\townerDocument.removeEventListener( 'scroll', over );\n\t\t\t\t\tfor ( const [ property, value ] of Object.entries(\n\t\t\t\t\t\toriginalNodeProperties\n\t\t\t\t\t) ) {\n\t\t\t\t\t\tnode.style[ property ] = value;\n\t\t\t\t\t}\n\t\t\t\t\tclone.remove();\n\t\t\t\t\tnode.id = id;\n\t\t\t\t\tdragElement.remove();\n\t\t\t\t\tstopDraggingBlocks();\n\t\t\t\t\tdocument.body.classList.remove(\n\t\t\t\t\t\t'is-dragging-components-draggable'\n\t\t\t\t\t);\n\t\t\t\t\townerDocument.documentElement.classList.remove(\n\t\t\t\t\t\t'is-dragging'\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\townerDocument.addEventListener( 'dragover', over );\n\t\t\t\townerDocument.addEventListener( 'dragend', end );\n\t\t\t\townerDocument.addEventListener( 'drop', end );\n\t\t\t\townerDocument.addEventListener( 'scroll', over );\n\n\t\t\t\tstartDraggingBlocks( [ clientId ] );\n\t\t\t\t// Important because it hides the block toolbar.\n\t\t\t\tdocument.body.classList.add(\n\t\t\t\t\t'is-dragging-components-draggable'\n\t\t\t\t);\n\t\t\t\townerDocument.documentElement.classList.add( 'is-dragging' );\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\t\tnode.addEventListener( 'dragstart', onDragStart );\n\n\t\t\t/**\n\t\t\t * Handles double-click events on section blocks to edit content only section.\n\t\t\t *\n\t\t\t * @param {MouseEvent} event Double-click event.\n\t\t\t */\n\t\t\tfunction onDoubleClick( event ) {\n\t\t\t\tconst isSection = isSectionBlock( clientId );\n\t\t\t\tconst isAlreadyEditing = editedContentOnlySection === clientId;\n\n\t\t\t\tif ( isSection && ! isAlreadyEditing ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\teditContentOnlySection( clientId );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Only add double-click listener if experimental flag is enabled\n\t\t\tif ( window?.__experimentalContentOnlyPatternInsertion ) {\n\t\t\t\tnode.addEventListener( 'dblclick', onDoubleClick );\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\t\tnode.removeEventListener( 'dragstart', onDragStart );\n\t\t\t\tif ( window?.__experimentalContentOnlyPatternInsertion ) {\n\t\t\t\t\tnode.removeEventListener( 'dblclick', onDoubleClick );\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tisSelected,\n\t\t\tgetBlockRootClientId,\n\t\t\tinsertAfterBlock,\n\t\t\tremoveBlock,\n\t\t\tisZoomOut,\n\t\t\tresetZoomLevel,\n\t\t\thasMultiSelection,\n\t\t\tstartDraggingBlocks,\n\t\t\tstopDraggingBlocks,\n\t\t\tisSectionBlock,\n\t\t\teditedContentOnlySection,\n\t\t\teditContentOnlySection,\n\t\t]\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore"]
7
7
  }
@@ -55,7 +55,7 @@ function getTemplateLockValue(lock) {
55
55
  }
56
56
  function BlockLockModal({ clientId, onClose }) {
57
57
  const [lock, setLock] = (0, import_element.useState)({ move: false, remove: false });
58
- const { canEdit, canMove, canRemove } = (0, import_use_block_lock.default)(clientId);
58
+ const { isEditLocked, isMoveLocked, isRemoveLocked } = (0, import_use_block_lock.default)(clientId);
59
59
  const { allowsEditLocking, templateLock, hasTemplateLock } = (0, import_data.useSelect)(
60
60
  (select) => {
61
61
  const { getBlockName, getBlockAttributes } = select(import_store.store);
@@ -76,11 +76,11 @@ function BlockLockModal({ clientId, onClose }) {
76
76
  const blockInformation = (0, import_use_block_display_information.default)(clientId);
77
77
  (0, import_element.useEffect)(() => {
78
78
  setLock({
79
- move: !canMove,
80
- remove: !canRemove,
81
- ...allowsEditLocking ? { edit: !canEdit } : {}
79
+ move: isMoveLocked,
80
+ remove: isRemoveLocked,
81
+ ...allowsEditLocking ? { edit: isEditLocked } : {}
82
82
  });
83
- }, [canEdit, canMove, canRemove, allowsEditLocking]);
83
+ }, [isEditLocked, isMoveLocked, isRemoveLocked, allowsEditLocking]);
84
84
  const isAllChecked = Object.values(lock).every(Boolean);
85
85
  const isMixed = Object.values(lock).some(Boolean) && !isAllChecked;
86
86
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-lock/modal.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n\tToggleControl,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { getBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\n// Entity based blocks which allow edit locking\nconst ALLOWS_EDIT_LOCKING = [ 'core/navigation' ];\n\nfunction getTemplateLockValue( lock ) {\n\t// Prevents all operations.\n\tif ( lock.remove && lock.move ) {\n\t\treturn 'all';\n\t}\n\n\t// Prevents inserting or removing blocks, but allows moving existing blocks.\n\tif ( lock.remove && ! lock.move ) {\n\t\treturn 'insert';\n\t}\n\n\treturn false;\n}\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { canEdit, canMove, canRemove } = useBlockLock( clientId );\n\tconst { allowsEditLocking, templateLock, hasTemplateLock } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\n\t\t\treturn {\n\t\t\t\tallowsEditLocking: ALLOWS_EDIT_LOCKING.includes( blockName ),\n\t\t\t\ttemplateLock: getBlockAttributes( clientId )?.templateLock,\n\t\t\t\thasTemplateLock: !! blockType?.attributes?.templateLock,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst [ applyTemplateLock, setApplyTemplateLock ] = useState(\n\t\t!! templateLock\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: ! canMove,\n\t\t\tremove: ! canRemove,\n\t\t\t...( allowsEditLocking ? { edit: ! canEdit } : {} ),\n\t\t} );\n\t}, [ canEdit, canMove, canRemove, allowsEditLocking ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tonRequestClose={ onClose }\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], {\n\t\t\t\t\t\tlock,\n\t\t\t\t\t\ttemplateLock: applyTemplateLock\n\t\t\t\t\t\t\t? getTemplateLockValue( lock )\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t} );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<fieldset className=\"block-editor-block-lock-modal__options\">\n\t\t\t\t\t<legend>\n\t\t\t\t\t\t{ __( 'Select the features you want to lock' ) }\n\t\t\t\t\t</legend>\n\t\t\t\t\t{ /*\n\t\t\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t\t\t */\n\t\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t<ul\n\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__checklist\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-all\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Lock all' ) }\n\t\t\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\t\t\tindeterminate={ isMixed }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\t\t\tremove: newValue,\n\t\t\t\t\t\t\t\t\t\t...( allowsEditLocking\n\t\t\t\t\t\t\t\t\t\t\t? { edit: newValue }\n\t\t\t\t\t\t\t\t\t\t\t: {} ),\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__checklist\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ allowsEditLocking && (\n\t\t\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Lock editing' ) }\n\t\t\t\t\t\t\t\t\t\t\tchecked={ !! lock.edit }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ ( edit ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__lock-icon\"\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.edit\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Lock movement' ) }\n\t\t\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__lock-icon\"\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\tlock.move ? lockIcon : unlockIcon\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Lock removal' ) }\n\t\t\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__lock-icon\"\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\tlock.remove ? lockIcon : unlockIcon\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t{ hasTemplateLock && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__template-lock\"\n\t\t\t\t\t\t\tlabel={ __( 'Apply to all blocks inside' ) }\n\t\t\t\t\t\t\tchecked={ applyTemplateLock }\n\t\t\t\t\t\t\tdisabled={ lock.move && ! lock.remove }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetApplyTemplateLock( ! applyTemplateLock )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</fieldset>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n\tToggleControl,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { getBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\n// Entity based blocks which allow edit locking\nconst ALLOWS_EDIT_LOCKING = [ 'core/navigation' ];\n\nfunction getTemplateLockValue( lock ) {\n\t// Prevents all operations.\n\tif ( lock.remove && lock.move ) {\n\t\treturn 'all';\n\t}\n\n\t// Prevents inserting or removing blocks, but allows moving existing blocks.\n\tif ( lock.remove && ! lock.move ) {\n\t\treturn 'insert';\n\t}\n\n\treturn false;\n}\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { isEditLocked, isMoveLocked, isRemoveLocked } =\n\t\tuseBlockLock( clientId );\n\tconst { allowsEditLocking, templateLock, hasTemplateLock } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\t\t\tconst blockType = getBlockType( blockName );\n\n\t\t\treturn {\n\t\t\t\tallowsEditLocking: ALLOWS_EDIT_LOCKING.includes( blockName ),\n\t\t\t\ttemplateLock: getBlockAttributes( clientId )?.templateLock,\n\t\t\t\thasTemplateLock: !! blockType?.attributes?.templateLock,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst [ applyTemplateLock, setApplyTemplateLock ] = useState(\n\t\t!! templateLock\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: isMoveLocked,\n\t\t\tremove: isRemoveLocked,\n\t\t\t...( allowsEditLocking ? { edit: isEditLocked } : {} ),\n\t\t} );\n\t}, [ isEditLocked, isMoveLocked, isRemoveLocked, allowsEditLocking ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tonRequestClose={ onClose }\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], {\n\t\t\t\t\t\tlock,\n\t\t\t\t\t\ttemplateLock: applyTemplateLock\n\t\t\t\t\t\t\t? getTemplateLockValue( lock )\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t} );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<fieldset className=\"block-editor-block-lock-modal__options\">\n\t\t\t\t\t<legend>\n\t\t\t\t\t\t{ __( 'Select the features you want to lock' ) }\n\t\t\t\t\t</legend>\n\t\t\t\t\t{ /*\n\t\t\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t\t\t */\n\t\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t<ul\n\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__checklist\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-all\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Lock all' ) }\n\t\t\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\t\t\tindeterminate={ isMixed }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\t\t\tremove: newValue,\n\t\t\t\t\t\t\t\t\t\t...( allowsEditLocking\n\t\t\t\t\t\t\t\t\t\t\t? { edit: newValue }\n\t\t\t\t\t\t\t\t\t\t\t: {} ),\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__checklist\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ allowsEditLocking && (\n\t\t\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Lock editing' ) }\n\t\t\t\t\t\t\t\t\t\t\tchecked={ !! lock.edit }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ ( edit ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__lock-icon\"\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.edit\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Lock movement' ) }\n\t\t\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__lock-icon\"\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\tlock.move ? lockIcon : unlockIcon\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Lock removal' ) }\n\t\t\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__lock-icon\"\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\tlock.remove ? lockIcon : unlockIcon\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t{ hasTemplateLock && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__template-lock\"\n\t\t\t\t\t\t\tlabel={ __( 'Apply to all blocks inside' ) }\n\t\t\t\t\t\t\tchecked={ applyTemplateLock }\n\t\t\t\t\t\t\tdisabled={ lock.move && ! lock.remove }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetApplyTemplateLock( ! applyTemplateLock )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</fieldset>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["useBlockLock", "blockEditorStore", "useBlockDisplayInformation", "lockIcon", "unlockIcon"]
7
7
  }
@@ -25,27 +25,24 @@ __export(use_block_lock_exports, {
25
25
  module.exports = __toCommonJS(use_block_lock_exports);
26
26
  var import_data = require("@wordpress/data");
27
27
  var import_store = require("../../store");
28
+ var import_lock_unlock = require("../../lock-unlock");
28
29
  function useBlockLock(clientId) {
29
30
  return (0, import_data.useSelect)(
30
31
  (select) => {
31
32
  const {
32
- canEditBlock,
33
- canMoveBlock,
34
- canRemoveBlock,
35
33
  canLockBlockType,
36
34
  getBlockName,
37
- getTemplateLock
38
- } = select(import_store.store);
39
- const canEdit = canEditBlock(clientId);
40
- const canMove = canMoveBlock(clientId);
41
- const canRemove = canRemoveBlock(clientId);
35
+ isEditLockedBlock,
36
+ isMoveLockedBlock,
37
+ isRemoveLockedBlock,
38
+ isLockedBlock
39
+ } = (0, import_lock_unlock.unlock)(select(import_store.store));
42
40
  return {
43
- canEdit,
44
- canMove,
45
- canRemove,
41
+ isEditLocked: isEditLockedBlock(clientId),
42
+ isMoveLocked: isMoveLockedBlock(clientId),
43
+ isRemoveLocked: isRemoveLockedBlock(clientId),
46
44
  canLock: canLockBlockType(getBlockName(clientId)),
47
- isContentLocked: getTemplateLock(clientId) === "contentOnly",
48
- isLocked: !canEdit || !canMove || !canRemove
45
+ isLocked: isLockedBlock(clientId)
49
46
  };
50
47
  },
51
48
  [clientId]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-lock/use-block-lock.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Return details about the block lock status.\n *\n * @param {string} clientId The block client Id.\n *\n * @return {Object} Block lock status\n */\nexport default function useBlockLock( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanEditBlock,\n\t\t\t\tcanMoveBlock,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanLockBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetTemplateLock,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst canEdit = canEditBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tcanEdit,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tcanLock: canLockBlockType( getBlockName( clientId ) ),\n\t\t\t\tisContentLocked: getTemplateLock( clientId ) === 'contentOnly',\n\t\t\t\tisLocked: ! canEdit || ! canMove || ! canRemove,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAK1B,mBAA0C;AAS3B,SAAR,aAA+B,UAAW;AAChD,aAAO;AAAA,IACN,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,aAAAA,KAAiB;AAE7B,YAAM,UAAU,aAAc,QAAS;AACvC,YAAM,UAAU,aAAc,QAAS;AACvC,YAAM,YAAY,eAAgB,QAAS;AAE3C,aAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,iBAAkB,aAAc,QAAS,CAAE;AAAA,QACpD,iBAAiB,gBAAiB,QAAS,MAAM;AAAA,QACjD,UAAU,CAAE,WAAW,CAAE,WAAW,CAAE;AAAA,MACvC;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACD;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Return details about the block lock status.\n *\n * @param {string} clientId The block client Id.\n *\n * @return {Object} Block lock status\n */\nexport default function useBlockLock( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanLockBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t\tisEditLockedBlock,\n\t\t\t\tisMoveLockedBlock,\n\t\t\t\tisRemoveLockedBlock,\n\t\t\t\tisLockedBlock,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\treturn {\n\t\t\t\tisEditLocked: isEditLockedBlock( clientId ),\n\t\t\t\tisMoveLocked: isMoveLockedBlock( clientId ),\n\t\t\t\tisRemoveLocked: isRemoveLockedBlock( clientId ),\n\t\t\t\tcanLock: canLockBlockType( getBlockName( clientId ) ),\n\t\t\t\tisLocked: isLockedBlock( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA0B;AAK1B,mBAA0C;AAC1C,yBAAuB;AASR,SAAR,aAA+B,UAAW;AAChD,aAAO;AAAA,IACN,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,QAAI,2BAAQ,OAAQ,aAAAA,KAAiB,CAAE;AAEvC,aAAO;AAAA,QACN,cAAc,kBAAmB,QAAS;AAAA,QAC1C,cAAc,kBAAmB,QAAS;AAAA,QAC1C,gBAAgB,oBAAqB,QAAS;AAAA,QAC9C,SAAS,iBAAkB,aAAc,QAAS,CAAE;AAAA,QACpD,UAAU,cAAe,QAAS;AAAA,MACnC;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACD;",
6
6
  "names": ["blockEditorStore"]
7
7
  }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/block-editor/src/components/block-settings-menu-controls/edit-section-menu-item.js
31
+ var edit_section_menu_item_exports = {};
32
+ __export(edit_section_menu_item_exports, {
33
+ EditSectionMenuItem: () => EditSectionMenuItem
34
+ });
35
+ module.exports = __toCommonJS(edit_section_menu_item_exports);
36
+ var import_components = require("@wordpress/components");
37
+ var import_i18n = require("@wordpress/i18n");
38
+ var import_use_content_only_section_edit = __toESM(require("../../hooks/use-content-only-section-edit"));
39
+ var import_jsx_runtime = require("react/jsx-runtime");
40
+ function EditSectionMenuItem({ clientId, onClose }) {
41
+ const {
42
+ isSectionBlock,
43
+ isEditingContentOnlySection,
44
+ editContentOnlySection
45
+ } = (0, import_use_content_only_section_edit.default)(clientId);
46
+ if (!window?.__experimentalContentOnlyPatternInsertion || !isSectionBlock || isEditingContentOnlySection) {
47
+ return null;
48
+ }
49
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
50
+ import_components.MenuItem,
51
+ {
52
+ onClick: () => {
53
+ editContentOnlySection(clientId);
54
+ onClose();
55
+ },
56
+ children: (0, import_i18n._x)("Edit section", "Editing a section in the Editor")
57
+ }
58
+ );
59
+ }
60
+ // Annotate the CommonJS export names for ESM import in node:
61
+ 0 && (module.exports = {
62
+ EditSectionMenuItem
63
+ });
64
+ //# sourceMappingURL=edit-section-menu-item.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/block-settings-menu-controls/edit-section-menu-item.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useContentOnlySectionEdit from '../../hooks/use-content-only-section-edit';\n\nexport function EditSectionMenuItem( { clientId, onClose } ) {\n\tconst {\n\t\tisSectionBlock,\n\t\tisEditingContentOnlySection,\n\t\teditContentOnlySection,\n\t} = useContentOnlySectionEdit( clientId );\n\n\t// Only show when the experiment is enabled, the block is a section block,\n\t// and we're not already editing it\n\tif (\n\t\t! window?.__experimentalContentOnlyPatternInsertion ||\n\t\t! isSectionBlock ||\n\t\tisEditingContentOnlySection\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\teditContentOnlySection( clientId );\n\t\t\t\tonClose();\n\t\t\t} }\n\t\t>\n\t\t\t{ _x( 'Edit section', 'Editing a section in the Editor' ) }\n\t\t</MenuItem>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AACzB,kBAAmB;AAKnB,2CAAsC;AAoBpC;AAlBK,SAAS,oBAAqB,EAAE,UAAU,QAAQ,GAAI;AAC5D,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,qCAAAA,SAA2B,QAAS;AAIxC,MACC,CAAE,QAAQ,6CACV,CAAE,kBACF,6BACC;AACD,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,SAAU,MAAM;AACf,+BAAwB,QAAS;AACjC,gBAAQ;AAAA,MACT;AAAA,MAEE,8BAAI,gBAAgB,iCAAkC;AAAA;AAAA,EACzD;AAEF;",
6
+ "names": ["useContentOnlySectionEdit"]
7
+ }
@@ -43,6 +43,7 @@ var import_block_mode_toggle = __toESM(require("../block-settings-menu/block-mod
43
43
  var import_content_lock = require("../content-lock");
44
44
  var import_block_rename = require("../block-rename");
45
45
  var import_block_visibility = require("../block-visibility");
46
+ var import_edit_section_menu_item = require("./edit-section-menu-item");
46
47
  var import_jsx_runtime = require("react/jsx-runtime");
47
48
  var { Fill, Slot } = (0, import_components.createSlotFill)("BlockSettingsMenuControls");
48
49
  var BlockSettingsMenuControlsSlot = ({ fillProps, clientIds = null }) => {
@@ -67,7 +68,7 @@ var BlockSettingsMenuControlsSlot = ({ fillProps, clientIds = null }) => {
67
68
  canToggleSelectedBlocksVisibility: getBlocksByClientId(
68
69
  ids
69
70
  ).every(
70
- (block) => (0, import_blocks.hasBlockSupport)(block.name, "blockVisibility", true)
71
+ (block) => (0, import_blocks.hasBlockSupport)(block.name, "visibility", true)
71
72
  )
72
73
  };
73
74
  },
@@ -101,6 +102,13 @@ var BlockSettingsMenuControlsSlot = ({ fillProps, clientIds = null }) => {
101
102
  onClose: fillProps?.onClose
102
103
  }
103
104
  ),
105
+ selectedClientIds.length === 1 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
106
+ import_edit_section_menu_item.EditSectionMenuItem,
107
+ {
108
+ clientId: selectedClientIds[0],
109
+ onClose: fillProps?.onClose
110
+ }
111
+ ),
104
112
  showLockButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
105
113
  import_block_lock.BlockLockMenuItem,
106
114
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-settings-menu-controls/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tMenuGroup,\n\t__experimentalStyleProvider as StyleProvider,\n} from '@wordpress/components';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseConvertToGroupButtonProps,\n\tConvertToGroupButton,\n} from '../convert-to-group-buttons';\nimport { BlockLockMenuItem, useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport BlockModeToggle from '../block-settings-menu/block-mode-toggle';\nimport { ModifyContentOnlySectionMenuItem } from '../content-lock';\nimport { BlockRenameControl, useBlockRename } from '../block-rename';\nimport { BlockVisibilityMenuItem } from '../block-visibility';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {\n\tconst {\n\t\tselectedBlocks,\n\t\tselectedClientIds,\n\t\tisContentOnly,\n\t\tcanToggleSelectedBlocksVisibility,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\tselectedBlocks: getBlockNamesByClientId( ids ),\n\t\t\t\tselectedClientIds: ids,\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( ids[ 0 ] ) === 'contentOnly',\n\t\t\t\tcanToggleSelectedBlocksVisibility: getBlocksByClientId(\n\t\t\t\t\tids\n\t\t\t\t).every( ( block ) =>\n\t\t\t\t\thasBlockSupport( block.name, 'blockVisibility', true )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { canLock } = useBlockLock( selectedClientIds[ 0 ] );\n\tconst { canRename } = useBlockRename( selectedBlocks[ 0 ] );\n\tconst showLockButton =\n\t\tselectedClientIds.length === 1 && canLock && ! isContentOnly;\n\tconst showRenameButton =\n\t\tselectedClientIds.length === 1 && canRename && ! isContentOnly;\n\tconst showVisibilityButton =\n\t\tcanToggleSelectedBlocksVisibility && ! isContentOnly;\n\n\t// Check if current selection of blocks is Groupable or Ungroupable\n\t// and pass this props down to ConvertToGroupButton.\n\tconst convertToGroupButtonProps =\n\t\tuseConvertToGroupButtonProps( selectedClientIds );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && ! isContentOnly;\n\n\treturn (\n\t\t<Slot\n\t\t\tfillProps={ {\n\t\t\t\t...fillProps,\n\t\t\t\tselectedBlocks,\n\t\t\t\tselectedClientIds,\n\t\t\t} }\n\t\t>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif (\n\t\t\t\t\t! fills?.length > 0 &&\n\t\t\t\t\t! showConvertToGroupButton &&\n\t\t\t\t\t! showLockButton\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t{ showConvertToGroupButton && (\n\t\t\t\t\t\t\t<ConvertToGroupButton\n\t\t\t\t\t\t\t\t{ ...convertToGroupButtonProps }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showLockButton && (\n\t\t\t\t\t\t\t<BlockLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showRenameButton && (\n\t\t\t\t\t\t\t<BlockRenameControl\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showVisibilityButton && (\n\t\t\t\t\t\t\t<BlockVisibilityMenuItem\n\t\t\t\t\t\t\t\tclientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t{ selectedClientIds.length === 1 && (\n\t\t\t\t\t\t\t<ModifyContentOnlySectionMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fillProps?.count === 1 && ! isContentOnly && (\n\t\t\t\t\t\t\t<BlockModeToggle\n\t\t\t\t\t\t\t\tclientId={ fillProps?.firstBlockClientId }\n\t\t\t\t\t\t\t\tonToggle={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Slot>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md\n *\n * @param {Object} props Fill props.\n * @return {Element} Element.\n */\nfunction BlockSettingsMenuControls( { ...props } ) {\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill { ...props } />\n\t\t</StyleProvider>\n\t);\n}\n\nBlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot;\n\nexport default BlockSettingsMenuControls;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAIO;AACP,oBAAgC;AAChC,kBAA0B;AAK1B,sCAGO;AACP,wBAAgD;AAChD,mBAA0C;AAC1C,+BAA4B;AAC5B,0BAAiD;AACjD,0BAAmD;AACnD,8BAAwC;AAsEnC;AApEL,IAAM,EAAE,MAAM,KAAK,QAAI,kCAAgB,2BAA4B;AAEnE,IAAM,gCAAgC,CAAE,EAAE,WAAW,YAAY,KAAK,MAAO;AAC5E,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,aAAAA,KAAiB;AAC7B,YAAM,MACL,cAAc,OAAO,YAAY,0BAA0B;AAC5D,aAAO;AAAA,QACN,gBAAgB,wBAAyB,GAAI;AAAA,QAC7C,mBAAmB;AAAA,QACnB,eACC,oBAAqB,IAAK,CAAE,CAAE,MAAM;AAAA,QACrC,mCAAmC;AAAA,UAClC;AAAA,QACD,EAAE;AAAA,UAAO,CAAE,cACV,+BAAiB,MAAM,MAAM,mBAAmB,IAAK;AAAA,QACtD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,QAAM,EAAE,QAAQ,QAAI,gCAAc,kBAAmB,CAAE,CAAE;AACzD,QAAM,EAAE,UAAU,QAAI,oCAAgB,eAAgB,CAAE,CAAE;AAC1D,QAAM,iBACL,kBAAkB,WAAW,KAAK,WAAW,CAAE;AAChD,QAAM,mBACL,kBAAkB,WAAW,KAAK,aAAa,CAAE;AAClD,QAAM,uBACL,qCAAqC,CAAE;AAIxC,QAAM,gCACL,8DAA8B,iBAAkB;AACjD,QAAM,EAAE,aAAa,cAAc,IAAI;AACvC,QAAM,4BACH,eAAe,kBAAmB,CAAE;AAEvC,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAY;AAAA,QACX,GAAG;AAAA,QACH;AAAA,QACA;AAAA,MACD;AAAA,MAEE,WAAE,UAAW;AACd,YACC,CAAE,OAAO,SAAS,KAClB,CAAE,4BACF,CAAE,gBACD;AACD,iBAAO;AAAA,QACR;AAEA,eACC,6CAAC,+BACE;AAAA,sCACD;AAAA,YAAC;AAAA;AAAA,cACE,GAAG;AAAA,cACL,SAAU,WAAW;AAAA;AAAA,UACtB;AAAA,UAEC,kBACD;AAAA,YAAC;AAAA;AAAA,cACA,UAAW,kBAAmB,CAAE;AAAA;AAAA,UACjC;AAAA,UAEC,oBACD;AAAA,YAAC;AAAA;AAAA,cACA,UAAW,kBAAmB,CAAE;AAAA;AAAA,UACjC;AAAA,UAEC,wBACD;AAAA,YAAC;AAAA;AAAA,cACA,WAAY;AAAA;AAAA,UACb;AAAA,UAEC;AAAA,UACA,kBAAkB,WAAW,KAC9B;AAAA,YAAC;AAAA;AAAA,cACA,UAAW,kBAAmB,CAAE;AAAA,cAChC,SAAU,WAAW;AAAA;AAAA,UACtB;AAAA,UAEC,WAAW,UAAU,KAAK,CAAE,iBAC7B;AAAA,YAAC,yBAAAC;AAAA,YAAA;AAAA,cACA,UAAW,WAAW;AAAA,cACtB,UAAW,WAAW;AAAA;AAAA,UACvB;AAAA,WAEF;AAAA,MAEF;AAAA;AAAA,EACD;AAEF;AAQA,SAAS,0BAA2B,EAAE,GAAG,MAAM,GAAI;AAClD,SACC,4CAAC,kBAAAC,6BAAA,EAAc,UACd,sDAAC,QAAO,GAAG,OAAQ,GACpB;AAEF;AAEA,0BAA0B,OAAO;AAEjC,IAAO,uCAAQ;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tMenuGroup,\n\t__experimentalStyleProvider as StyleProvider,\n} from '@wordpress/components';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseConvertToGroupButtonProps,\n\tConvertToGroupButton,\n} from '../convert-to-group-buttons';\nimport { BlockLockMenuItem, useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport BlockModeToggle from '../block-settings-menu/block-mode-toggle';\nimport { ModifyContentOnlySectionMenuItem } from '../content-lock';\nimport { BlockRenameControl, useBlockRename } from '../block-rename';\nimport { BlockVisibilityMenuItem } from '../block-visibility';\nimport { EditSectionMenuItem } from './edit-section-menu-item';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {\n\tconst {\n\t\tselectedBlocks,\n\t\tselectedClientIds,\n\t\tisContentOnly,\n\t\tcanToggleSelectedBlocksVisibility,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tgetBlockNamesByClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\tselectedBlocks: getBlockNamesByClientId( ids ),\n\t\t\t\tselectedClientIds: ids,\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( ids[ 0 ] ) === 'contentOnly',\n\t\t\t\tcanToggleSelectedBlocksVisibility: getBlocksByClientId(\n\t\t\t\t\tids\n\t\t\t\t).every( ( block ) =>\n\t\t\t\t\thasBlockSupport( block.name, 'visibility', true )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { canLock } = useBlockLock( selectedClientIds[ 0 ] );\n\tconst { canRename } = useBlockRename( selectedBlocks[ 0 ] );\n\tconst showLockButton =\n\t\tselectedClientIds.length === 1 && canLock && ! isContentOnly;\n\tconst showRenameButton =\n\t\tselectedClientIds.length === 1 && canRename && ! isContentOnly;\n\tconst showVisibilityButton =\n\t\tcanToggleSelectedBlocksVisibility && ! isContentOnly;\n\n\t// Check if current selection of blocks is Groupable or Ungroupable\n\t// and pass this props down to ConvertToGroupButton.\n\tconst convertToGroupButtonProps =\n\t\tuseConvertToGroupButtonProps( selectedClientIds );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton =\n\t\t( isGroupable || isUngroupable ) && ! isContentOnly;\n\n\treturn (\n\t\t<Slot\n\t\t\tfillProps={ {\n\t\t\t\t...fillProps,\n\t\t\t\tselectedBlocks,\n\t\t\t\tselectedClientIds,\n\t\t\t} }\n\t\t>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif (\n\t\t\t\t\t! fills?.length > 0 &&\n\t\t\t\t\t! showConvertToGroupButton &&\n\t\t\t\t\t! showLockButton\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t{ showConvertToGroupButton && (\n\t\t\t\t\t\t\t<ConvertToGroupButton\n\t\t\t\t\t\t\t\t{ ...convertToGroupButtonProps }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ selectedClientIds.length === 1 && (\n\t\t\t\t\t\t\t<EditSectionMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showLockButton && (\n\t\t\t\t\t\t\t<BlockLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showRenameButton && (\n\t\t\t\t\t\t\t<BlockRenameControl\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showVisibilityButton && (\n\t\t\t\t\t\t\t<BlockVisibilityMenuItem\n\t\t\t\t\t\t\t\tclientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t{ selectedClientIds.length === 1 && (\n\t\t\t\t\t\t\t<ModifyContentOnlySectionMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fillProps?.count === 1 && ! isContentOnly && (\n\t\t\t\t\t\t\t<BlockModeToggle\n\t\t\t\t\t\t\t\tclientId={ fillProps?.firstBlockClientId }\n\t\t\t\t\t\t\t\tonToggle={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Slot>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md\n *\n * @param {Object} props Fill props.\n * @return {Element} Element.\n */\nfunction BlockSettingsMenuControls( { ...props } ) {\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill { ...props } />\n\t\t</StyleProvider>\n\t);\n}\n\nBlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot;\n\nexport default BlockSettingsMenuControls;\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore", "BlockModeToggle", "StyleProvider"]
7
7
  }
@@ -52,7 +52,6 @@ function getBlockIconVariant({ select, clientIds }) {
52
52
  getBlockName,
53
53
  getBlockAttributes,
54
54
  getBlockParentsByBlockName,
55
- isSectionBlock,
56
55
  canRemoveBlocks,
57
56
  getTemplateLock,
58
57
  getBlockEditingMode
@@ -64,8 +63,8 @@ function getBlockIconVariant({ select, clientIds }) {
64
63
  const isSingleBlock = clientIds.length === 1;
65
64
  const blockName = isSingleBlock && getBlockName(clientIds[0]);
66
65
  const hasBlockStyles = isSingleBlock && !!getBlockStyles(blockName)?.length;
67
- const isSectionInSelection = clientIds.some(
68
- (id) => isSectionBlock(id)
66
+ const hasPatternNameInSelection = clientIds.some(
67
+ (id) => !!getBlockAttributes(id)?.metadata?.patternName
69
68
  );
70
69
  const hasPatternOverrides = clientIds.every(
71
70
  (clientId) => (0, import_block_bindings.hasPatternOverridesDefaultBinding)(
@@ -77,7 +76,7 @@ function getBlockIconVariant({ select, clientIds }) {
77
76
  );
78
77
  const canRemove = canRemoveBlocks(clientIds);
79
78
  const isDefaultEditingMode = getBlockEditingMode(clientIds[0]) === "default";
80
- const _hideTransformsForSections = window?.__experimentalContentOnlyPatternInsertion && isSectionInSelection;
79
+ const _hideTransformsForSections = window?.__experimentalContentOnlyPatternInsertion && hasPatternNameInSelection;
81
80
  const _showBlockSwitcher = !_hideTransformsForSections && isDefaultEditingMode && (hasBlockStyles || canRemove) && !hasTemplateLock;
82
81
  const _showPatternOverrides = hasPatternOverrides && hasParentPattern;
83
82
  if (_showBlockSwitcher) {
@@ -91,16 +90,17 @@ function getBlockIcon({ select, clientIds }) {
91
90
  const { getBlockName, getBlockAttributes } = (0, import_lock_unlock.unlock)(
92
91
  select(import_store.store)
93
92
  );
94
- const { getActiveBlockVariation } = select(import_blocks.store);
95
93
  const _isSingleBlock = clientIds.length === 1;
96
94
  const firstClientId = clientIds[0];
95
+ const blockAttributes = getBlockAttributes(firstClientId);
96
+ if (_isSingleBlock && blockAttributes?.metadata?.patternName && window?.__experimentalContentOnlyPatternInsertion) {
97
+ return import_icons.symbol;
98
+ }
97
99
  const blockName = getBlockName(firstClientId);
98
100
  const blockType = (0, import_blocks.getBlockType)(blockName);
99
101
  if (_isSingleBlock) {
100
- const match = getActiveBlockVariation(
101
- blockName,
102
- getBlockAttributes(firstClientId)
103
- );
102
+ const { getActiveBlockVariation } = select(import_blocks.store);
103
+ const match = getActiveBlockVariation(blockName, blockAttributes);
104
104
  return match?.icon || blockType?.icon;
105
105
  }
106
106
  const blockNames = clientIds.map((id) => getBlockName(id));