@wordpress/block-editor 15.8.1-next.dc3f6d3c1.0 → 15.9.1-next.6deb34194.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 (325) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +12 -0
  3. package/build/components/block-alignment-matrix-control/index.js +1 -8
  4. package/build/components/block-alignment-matrix-control/index.js.map +2 -2
  5. package/build/components/block-bindings/attribute-control.js +172 -0
  6. package/build/components/block-bindings/attribute-control.js.map +7 -0
  7. package/build/components/block-bindings/index.js +47 -0
  8. package/build/components/block-bindings/index.js.map +7 -0
  9. package/build/components/block-bindings/source-fields-list.js +135 -0
  10. package/build/components/block-bindings/source-fields-list.js.map +7 -0
  11. package/build/components/block-bindings/use-block-bindings-utils.js +66 -0
  12. package/build/components/block-bindings/use-block-bindings-utils.js.map +7 -0
  13. package/build/components/block-edit/edit.js +1 -3
  14. package/build/components/block-edit/edit.js.map +2 -2
  15. package/build/components/block-list/index.js +2 -1
  16. package/build/components/block-list/index.js.map +2 -2
  17. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +27 -5
  18. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +2 -2
  19. package/build/components/block-lock/modal.js +5 -5
  20. package/build/components/block-lock/modal.js.map +2 -2
  21. package/build/components/block-lock/use-block-lock.js +10 -13
  22. package/build/components/block-lock/use-block-lock.js.map +2 -2
  23. package/build/components/block-settings-menu-controls/index.js +1 -1
  24. package/build/components/block-settings-menu-controls/index.js.map +2 -2
  25. package/build/components/block-styles/preview-panel.js +3 -5
  26. package/build/components/block-styles/preview-panel.js.map +2 -2
  27. package/build/components/block-styles/use-styles-for-block.js +2 -2
  28. package/build/components/block-styles/use-styles-for-block.js.map +2 -2
  29. package/build/components/block-toolbar/index.js +1 -8
  30. package/build/components/block-toolbar/index.js.map +3 -3
  31. package/build/components/block-tools/index.js +56 -45
  32. package/build/components/block-tools/index.js.map +3 -3
  33. package/build/components/block-visibility/toolbar.js +1 -1
  34. package/build/components/block-visibility/toolbar.js.map +1 -1
  35. package/build/components/content-only-controls/fields-dropdown-menu.js +66 -0
  36. package/build/components/content-only-controls/fields-dropdown-menu.js.map +7 -0
  37. package/build/components/content-only-controls/index.js +202 -44
  38. package/build/components/content-only-controls/index.js.map +3 -3
  39. package/build/components/content-only-controls/link/index.js +92 -103
  40. package/build/components/content-only-controls/link/index.js.map +3 -3
  41. package/build/components/content-only-controls/media/index.js +134 -134
  42. package/build/components/content-only-controls/media/index.js.map +3 -3
  43. package/build/components/content-only-controls/rich-text/index.js +66 -74
  44. package/build/components/content-only-controls/rich-text/index.js.map +3 -3
  45. package/build/components/dimensions-tool/width-height-tool.js +4 -16
  46. package/build/components/dimensions-tool/width-height-tool.js.map +3 -3
  47. package/build/components/font-family/index.js +1 -15
  48. package/build/components/font-family/index.js.map +2 -2
  49. package/build/components/global-styles/dimensions-panel.js +35 -2
  50. package/build/components/global-styles/dimensions-panel.js.map +2 -2
  51. package/build/components/global-styles/hooks.js +1 -1
  52. package/build/components/global-styles/hooks.js.map +2 -2
  53. package/build/components/global-styles/typography-panel.js +1 -2
  54. package/build/components/global-styles/typography-panel.js.map +2 -2
  55. package/build/components/image-editor/cropper.js +3 -34
  56. package/build/components/image-editor/cropper.js.map +3 -3
  57. package/build/components/image-editor/index.js +9 -3
  58. package/build/components/image-editor/index.js.map +2 -2
  59. package/build/components/image-editor/use-transform-image.js +62 -32
  60. package/build/components/image-editor/use-transform-image.js.map +2 -2
  61. package/build/components/image-editor/zoom-dropdown.js +2 -2
  62. package/build/components/image-editor/zoom-dropdown.js.map +2 -2
  63. package/build/components/index.js +10 -3
  64. package/build/components/index.js.map +2 -2
  65. package/build/components/inserter-draggable-blocks/index.js +8 -4
  66. package/build/components/inserter-draggable-blocks/index.js.map +2 -2
  67. package/build/components/inspector-controls-tabs/content-tab.js +3 -2
  68. package/build/components/inspector-controls-tabs/content-tab.js.map +2 -2
  69. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -1
  70. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +2 -2
  71. package/build/components/link-control/index.js +15 -7
  72. package/build/components/link-control/index.js.map +2 -2
  73. package/build/components/list-view/block-select-button.js +3 -11
  74. package/build/components/list-view/block-select-button.js.map +2 -2
  75. package/build/components/list-view/block.js +9 -7
  76. package/build/components/list-view/block.js.map +2 -2
  77. package/build/components/media-placeholder/index.js +17 -4
  78. package/build/components/media-placeholder/index.js.map +2 -2
  79. package/build/components/media-placeholder/utils.js +60 -0
  80. package/build/components/media-placeholder/utils.js.map +7 -0
  81. package/build/components/media-replace-flow/index.js +20 -3
  82. package/build/components/media-replace-flow/index.js.map +2 -2
  83. package/build/components/tool-selector/index.js +46 -0
  84. package/build/components/tool-selector/index.js.map +7 -0
  85. package/build/components/use-block-commands/index.js +1 -1
  86. package/build/components/use-block-commands/index.js.map +2 -2
  87. package/build/components/use-block-drop-zone/index.js +1 -5
  88. package/build/components/use-block-drop-zone/index.js.map +2 -2
  89. package/build/hooks/block-bindings.js +22 -260
  90. package/build/hooks/block-bindings.js.map +3 -3
  91. package/build/hooks/dimensions.js +3 -3
  92. package/build/hooks/dimensions.js.map +2 -2
  93. package/build/hooks/metadata.js +1 -1
  94. package/build/hooks/metadata.js.map +2 -2
  95. package/build/hooks/utils.js +5 -1
  96. package/build/hooks/utils.js.map +2 -2
  97. package/build/layouts/grid.js +23 -28
  98. package/build/layouts/grid.js.map +2 -2
  99. package/build/store/private-selectors.js +43 -3
  100. package/build/store/private-selectors.js.map +2 -2
  101. package/build/store/reducer.js +2 -1
  102. package/build/store/reducer.js.map +2 -2
  103. package/build/store/selectors.js +6 -4
  104. package/build/store/selectors.js.map +2 -2
  105. package/build/utils/block-bindings.js +2 -44
  106. package/build/utils/block-bindings.js.map +3 -3
  107. package/build/utils/index.js +2 -5
  108. package/build/utils/index.js.map +2 -2
  109. package/build-module/components/block-alignment-matrix-control/index.js +1 -8
  110. package/build-module/components/block-alignment-matrix-control/index.js.map +2 -2
  111. package/build-module/components/block-bindings/attribute-control.js +150 -0
  112. package/build-module/components/block-bindings/attribute-control.js.map +7 -0
  113. package/build-module/components/block-bindings/index.js +10 -0
  114. package/build-module/components/block-bindings/index.js.map +7 -0
  115. package/build-module/components/block-bindings/source-fields-list.js +104 -0
  116. package/build-module/components/block-bindings/source-fields-list.js.map +7 -0
  117. package/build-module/components/block-bindings/use-block-bindings-utils.js +45 -0
  118. package/build-module/components/block-bindings/use-block-bindings-utils.js.map +7 -0
  119. package/build-module/components/block-edit/edit.js +1 -3
  120. package/build-module/components/block-edit/edit.js.map +2 -2
  121. package/build-module/components/block-list/index.js +2 -1
  122. package/build-module/components/block-list/index.js.map +2 -2
  123. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +27 -5
  124. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +2 -2
  125. package/build-module/components/block-lock/modal.js +5 -5
  126. package/build-module/components/block-lock/modal.js.map +2 -2
  127. package/build-module/components/block-lock/use-block-lock.js +10 -13
  128. package/build-module/components/block-lock/use-block-lock.js.map +2 -2
  129. package/build-module/components/block-settings-menu-controls/index.js +1 -1
  130. package/build-module/components/block-settings-menu-controls/index.js.map +2 -2
  131. package/build-module/components/block-styles/preview-panel.js +3 -5
  132. package/build-module/components/block-styles/preview-panel.js.map +2 -2
  133. package/build-module/components/block-styles/use-styles-for-block.js +2 -2
  134. package/build-module/components/block-styles/use-styles-for-block.js.map +2 -2
  135. package/build-module/components/block-toolbar/index.js +1 -8
  136. package/build-module/components/block-toolbar/index.js.map +2 -2
  137. package/build-module/components/block-tools/index.js +56 -45
  138. package/build-module/components/block-tools/index.js.map +2 -2
  139. package/build-module/components/block-visibility/toolbar.js +1 -1
  140. package/build-module/components/block-visibility/toolbar.js.map +1 -1
  141. package/build-module/components/content-only-controls/fields-dropdown-menu.js +45 -0
  142. package/build-module/components/content-only-controls/fields-dropdown-menu.js.map +7 -0
  143. package/build-module/components/content-only-controls/index.js +206 -46
  144. package/build-module/components/content-only-controls/index.js.map +2 -2
  145. package/build-module/components/content-only-controls/link/index.js +92 -104
  146. package/build-module/components/content-only-controls/link/index.js.map +2 -2
  147. package/build-module/components/content-only-controls/media/index.js +134 -135
  148. package/build-module/components/content-only-controls/media/index.js.map +2 -2
  149. package/build-module/components/content-only-controls/rich-text/index.js +68 -81
  150. package/build-module/components/content-only-controls/rich-text/index.js.map +2 -2
  151. package/build-module/components/dimensions-tool/width-height-tool.js +4 -6
  152. package/build-module/components/dimensions-tool/width-height-tool.js.map +2 -2
  153. package/build-module/components/font-family/index.js +1 -15
  154. package/build-module/components/font-family/index.js.map +2 -2
  155. package/build-module/components/global-styles/dimensions-panel.js +35 -2
  156. package/build-module/components/global-styles/dimensions-panel.js.map +2 -2
  157. package/build-module/components/global-styles/hooks.js +1 -1
  158. package/build-module/components/global-styles/hooks.js.map +2 -2
  159. package/build-module/components/global-styles/typography-panel.js +1 -2
  160. package/build-module/components/global-styles/typography-panel.js.map +2 -2
  161. package/build-module/components/image-editor/cropper.js +3 -34
  162. package/build-module/components/image-editor/cropper.js.map +2 -2
  163. package/build-module/components/image-editor/index.js +9 -3
  164. package/build-module/components/image-editor/index.js.map +2 -2
  165. package/build-module/components/image-editor/use-transform-image.js +63 -33
  166. package/build-module/components/image-editor/use-transform-image.js.map +2 -2
  167. package/build-module/components/image-editor/zoom-dropdown.js +2 -2
  168. package/build-module/components/image-editor/zoom-dropdown.js.map +2 -2
  169. package/build-module/components/index.js +74 -66
  170. package/build-module/components/index.js.map +2 -2
  171. package/build-module/components/inserter-draggable-blocks/index.js +8 -4
  172. package/build-module/components/inserter-draggable-blocks/index.js.map +2 -2
  173. package/build-module/components/inspector-controls-tabs/content-tab.js +3 -2
  174. package/build-module/components/inspector-controls-tabs/content-tab.js.map +2 -2
  175. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -1
  176. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +2 -2
  177. package/build-module/components/link-control/index.js +16 -8
  178. package/build-module/components/link-control/index.js.map +2 -2
  179. package/build-module/components/list-view/block-select-button.js +3 -11
  180. package/build-module/components/list-view/block-select-button.js.map +2 -2
  181. package/build-module/components/list-view/block.js +9 -7
  182. package/build-module/components/list-view/block.js.map +2 -2
  183. package/build-module/components/media-placeholder/index.js +18 -5
  184. package/build-module/components/media-placeholder/index.js.map +2 -2
  185. package/build-module/components/media-placeholder/utils.js +35 -0
  186. package/build-module/components/media-placeholder/utils.js.map +7 -0
  187. package/build-module/components/media-replace-flow/index.js +20 -3
  188. package/build-module/components/media-replace-flow/index.js.map +2 -2
  189. package/build-module/components/tool-selector/index.js +15 -0
  190. package/build-module/components/tool-selector/index.js.map +7 -0
  191. package/build-module/components/use-block-commands/index.js +1 -1
  192. package/build-module/components/use-block-commands/index.js.map +2 -2
  193. package/build-module/components/use-block-drop-zone/index.js +1 -5
  194. package/build-module/components/use-block-drop-zone/index.js.map +2 -2
  195. package/build-module/hooks/block-bindings.js +27 -270
  196. package/build-module/hooks/block-bindings.js.map +2 -2
  197. package/build-module/hooks/dimensions.js +3 -3
  198. package/build-module/hooks/dimensions.js.map +2 -2
  199. package/build-module/hooks/metadata.js +1 -1
  200. package/build-module/hooks/metadata.js.map +2 -2
  201. package/build-module/hooks/utils.js +5 -1
  202. package/build-module/hooks/utils.js.map +2 -2
  203. package/build-module/layouts/grid.js +23 -28
  204. package/build-module/layouts/grid.js.map +2 -2
  205. package/build-module/store/private-selectors.js +39 -3
  206. package/build-module/store/private-selectors.js.map +2 -2
  207. package/build-module/store/reducer.js +2 -1
  208. package/build-module/store/reducer.js.map +2 -2
  209. package/build-module/store/selectors.js +6 -4
  210. package/build-module/store/selectors.js.map +2 -2
  211. package/build-module/utils/block-bindings.js +1 -42
  212. package/build-module/utils/block-bindings.js.map +2 -2
  213. package/build-module/utils/index.js +1 -3
  214. package/build-module/utils/index.js.map +2 -2
  215. package/build-style/content-rtl.css +3 -0
  216. package/build-style/content.css +3 -0
  217. package/build-style/style-rtl.css +20 -11
  218. package/build-style/style.css +20 -11
  219. package/package.json +39 -39
  220. package/src/components/block-alignment-matrix-control/index.js +1 -5
  221. package/src/components/block-bindings/attribute-control.js +174 -0
  222. package/src/components/block-bindings/index.js +6 -0
  223. package/src/components/block-bindings/source-fields-list.js +130 -0
  224. package/src/components/block-bindings/use-block-bindings-utils.js +156 -0
  225. package/src/components/block-edit/edit.js +1 -3
  226. package/src/components/block-list/content.scss +5 -0
  227. package/src/components/block-list/index.js +3 -1
  228. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +34 -3
  229. package/src/components/block-lock/modal.js +6 -5
  230. package/src/components/block-lock/use-block-lock.js +10 -14
  231. package/src/components/block-patterns-list/stories/{index.story.js → index.story.jsx} +3 -1
  232. package/src/components/block-settings-menu-controls/index.js +1 -1
  233. package/src/components/block-styles/preview-panel.js +3 -5
  234. package/src/components/block-styles/use-styles-for-block.js +2 -2
  235. package/src/components/block-toolbar/index.js +1 -6
  236. package/src/components/block-toolbar/style.scss +6 -6
  237. package/src/components/block-tools/index.js +15 -2
  238. package/src/components/block-tools/style.scss +4 -0
  239. package/src/components/block-visibility/toolbar.js +1 -1
  240. package/src/components/content-only-controls/fields-dropdown-menu.js +53 -0
  241. package/src/components/content-only-controls/index.js +289 -50
  242. package/src/components/content-only-controls/link/index.js +62 -57
  243. package/src/components/content-only-controls/media/index.js +177 -156
  244. package/src/components/content-only-controls/rich-text/index.js +31 -44
  245. package/src/components/content-only-controls/styles.scss +10 -1
  246. package/src/components/dimensions-tool/width-height-tool.js +6 -13
  247. package/src/components/font-family/README.md +0 -9
  248. package/src/components/font-family/index.js +1 -16
  249. package/src/components/font-family/stories/{index.story.js → index.story.jsx} +0 -1
  250. package/src/components/global-styles/dimensions-panel.js +36 -0
  251. package/src/components/global-styles/hooks.js +1 -1
  252. package/src/components/global-styles/typography-panel.js +0 -1
  253. package/src/components/image-editor/cropper.js +3 -32
  254. package/src/components/image-editor/index.js +34 -29
  255. package/src/components/image-editor/use-transform-image.js +80 -34
  256. package/src/components/image-editor/zoom-dropdown.js +2 -2
  257. package/src/components/index.js +9 -1
  258. package/src/components/inserter/style.scss +1 -1
  259. package/src/components/inserter-draggable-blocks/index.js +19 -8
  260. package/src/components/inspector-controls-tabs/content-tab.js +6 -2
  261. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -5
  262. package/src/components/link-control/index.js +36 -12
  263. package/src/components/list-view/block-select-button.js +22 -30
  264. package/src/components/list-view/block.js +9 -7
  265. package/src/components/media-placeholder/index.js +20 -5
  266. package/src/components/media-placeholder/test/get-computed-accept-attribute.js +164 -0
  267. package/src/components/media-placeholder/utils.js +65 -0
  268. package/src/components/media-replace-flow/index.js +22 -3
  269. package/src/components/tool-selector/index.js +19 -0
  270. package/src/components/use-block-commands/index.js +1 -1
  271. package/src/components/use-block-drop-zone/index.js +1 -5
  272. package/src/hooks/block-bindings.js +27 -347
  273. package/src/hooks/dimensions.js +8 -3
  274. package/src/hooks/metadata.js +1 -1
  275. package/src/hooks/test/metadata.js +1 -1
  276. package/src/hooks/utils.js +4 -0
  277. package/src/layouts/grid.js +40 -72
  278. package/src/layouts/test/grid.js +14 -0
  279. package/src/store/private-selectors.js +123 -6
  280. package/src/store/reducer.js +3 -0
  281. package/src/store/selectors.js +6 -4
  282. package/src/store/test/private-selectors.js +242 -0
  283. package/src/store/test/reducer.js +17 -7
  284. package/src/style.scss +0 -1
  285. package/src/utils/block-bindings.js +0 -157
  286. package/src/utils/index.js +0 -1
  287. package/tsconfig.json +2 -0
  288. package/build/components/block-toolbar/block-name-context.js +0 -30
  289. package/build/components/block-toolbar/block-name-context.js.map +0 -7
  290. package/build/components/content-only-controls/plain-text/index.js +0 -68
  291. package/build/components/content-only-controls/plain-text/index.js.map +0 -7
  292. package/build-module/components/block-toolbar/block-name-context.js +0 -9
  293. package/build-module/components/block-toolbar/block-name-context.js.map +0 -7
  294. package/build-module/components/content-only-controls/plain-text/index.js +0 -50
  295. package/build-module/components/content-only-controls/plain-text/index.js.map +0 -7
  296. package/src/components/block-toolbar/block-name-context.js +0 -9
  297. package/src/components/content-only-controls/plain-text/index.js +0 -49
  298. package/src/components/font-family/style.scss +0 -7
  299. /package/src/components/alignment-control/stories/{aliginment-toolbar.story.js → aliginment-toolbar.story.jsx} +0 -0
  300. /package/src/components/alignment-control/stories/{index.story.js → index.story.jsx} +0 -0
  301. /package/src/components/block-alignment-matrix-control/stories/{index.story.js → index.story.jsx} +0 -0
  302. /package/src/{utils → components/block-bindings}/test/use-block-bindings-utils.js +0 -0
  303. /package/src/components/block-draggable/stories/{index.story.js → index.story.jsx} +0 -0
  304. /package/src/components/block-heading-level-dropdown/stories/{index.story.js → index.story.jsx} +0 -0
  305. /package/src/components/block-mover/stories/{index.story.js → index.story.jsx} +0 -0
  306. /package/src/components/block-title/stories/{index.story.js → index.story.jsx} +0 -0
  307. /package/src/components/border-radius-control/stories/{index.story.js → index.story.jsx} +0 -0
  308. /package/src/components/date-format-picker/stories/{index.story.js → index.story.jsx} +0 -0
  309. /package/src/components/dimensions-tool/stories/{aspect-ratio-tool.story.js → aspect-ratio-tool.story.jsx} +0 -0
  310. /package/src/components/dimensions-tool/stories/{index.story.js → index.story.jsx} +0 -0
  311. /package/src/components/dimensions-tool/stories/{scale-tool.story.js → scale-tool.story.jsx} +0 -0
  312. /package/src/components/dimensions-tool/stories/{width-height-tool.story.js → width-height-tool.story.jsx} +0 -0
  313. /package/src/components/height-control/stories/{index.story.js → index.story.jsx} +0 -0
  314. /package/src/components/inserter/stories/{index.story.js → index.story.jsx} +0 -0
  315. /package/src/components/line-height-control/stories/{index.story.js → index.story.jsx} +0 -0
  316. /package/src/components/plain-text/stories/{index.story.js → index.story.jsx} +0 -0
  317. /package/src/components/resolution-tool/stories/{index.story.js → index.story.jsx} +0 -0
  318. /package/src/components/tabbed-sidebar/stories/{index.story.js → index.story.jsx} +0 -0
  319. /package/src/components/text-alignment-control/stories/{index.story.js → index.story.jsx} +0 -0
  320. /package/src/components/text-decoration-control/stories/{index.story.js → index.story.jsx} +0 -0
  321. /package/src/components/text-transform-control/stories/{index.story.js → index.story.jsx} +0 -0
  322. /package/src/components/unit-control/stories/{index.story.js → index.story.jsx} +0 -0
  323. /package/src/components/url-popover/stories/{index.story.js → index.story.jsx} +0 -0
  324. /package/src/components/warning/stories/{index.story.js → index.story.jsx} +0 -0
  325. /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-edit/edit.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockDefaultClassName,\n\tgetBlockType,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { useCallback, useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockContext from '../block-context';\nimport isURLLike from '../link-control/is-url-like';\nimport {\n\thasPatternOverridesDefaultBinding,\n\treplacePatternOverridesDefaultBinding,\n} from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\nimport { PrivateBlockContext } from '../block-list/private-block-context';\n\n/**\n * Default value used for blocks which do not define their own context needs,\n * used to guarantee that a block's `context` prop will always be an object. It\n * is assigned as a constant since it is always expected to be an empty object,\n * and in order to avoid unnecessary React reconciliations of a changing object.\n *\n * @type {{}}\n */\nconst DEFAULT_BLOCK_CONTEXT = {};\n\nconst Edit = ( props ) => {\n\tconst { name } = props;\n\tconst blockType = getBlockType( name );\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\t// `edit` and `save` are functions or components describing the markup\n\t// with which a block is displayed. If `blockType` is valid, assign\n\t// them preferentially as the render value for the block.\n\tconst Component = blockType.edit || blockType.save;\n\n\treturn <Component { ...props } />;\n};\n\nconst EditWithFilters = withFilters( 'editor.BlockEdit' )( Edit );\n\nconst EditWithGeneratedProps = ( props ) => {\n\tconst { name, clientId, attributes, setAttributes } = props;\n\tconst registry = useRegistry();\n\tconst blockType = getBlockType( name );\n\tconst blockContext = useContext( BlockContext );\n\tconst registeredSources = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blocksStore ) ).getAllBlockBindingsSources(),\n\t\t[]\n\t);\n\tconst { bindableAttributes } = useContext( PrivateBlockContext );\n\n\tconst { blockBindings, context, hasPatternOverrides } = useMemo( () => {\n\t\t// Assign context values using the block type's declared context needs.\n\t\tconst computedContext = blockType?.usesContext\n\t\t\t? Object.fromEntries(\n\t\t\t\t\tObject.entries( blockContext ).filter( ( [ key ] ) =>\n\t\t\t\t\t\tblockType.usesContext.includes( key )\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: DEFAULT_BLOCK_CONTEXT;\n\t\t// Add context requested by Block Bindings sources.\n\t\tif ( attributes?.metadata?.bindings ) {\n\t\t\tObject.values( attributes?.metadata?.bindings || {} ).forEach(\n\t\t\t\t( binding ) => {\n\t\t\t\t\tregisteredSources[ binding?.source ]?.usesContext?.forEach(\n\t\t\t\t\t\t( key ) => {\n\t\t\t\t\t\t\tcomputedContext[ key ] = blockContext[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\tblockBindings: replacePatternOverridesDefaultBinding(\n\t\t\t\tattributes?.metadata?.bindings,\n\t\t\t\tbindableAttributes\n\t\t\t),\n\t\t\tcontext: computedContext,\n\t\t\thasPatternOverrides: hasPatternOverridesDefaultBinding(\n\t\t\t\tattributes?.metadata?.bindings\n\t\t\t),\n\t\t};\n\t}, [\n\t\tname,\n\t\tblockType?.usesContext,\n\t\tblockContext,\n\t\tattributes?.metadata?.bindings,\n\t\tregisteredSources,\n\t] );\n\n\tconst computedAttributes = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\treturn attributes;\n\t\t\t}\n\n\t\t\tconst attributesFromSources = {};\n\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\tfor ( const [ attributeName, binding ] of Object.entries(\n\t\t\t\tblockBindings\n\t\t\t) ) {\n\t\t\t\tconst { source: sourceName, args: sourceArgs } = binding;\n\t\t\t\tconst source = registeredSources[ sourceName ];\n\t\t\t\tif (\n\t\t\t\t\t! source ||\n\t\t\t\t\t! bindableAttributes?.includes( attributeName )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\targs: sourceArgs,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\tfor ( const [ source, bindings ] of blockBindingsBySource ) {\n\t\t\t\t\t// Get values in batch if the source supports it.\n\t\t\t\t\tlet values = {};\n\t\t\t\t\tif ( ! source.getValues ) {\n\t\t\t\t\t\tObject.keys( bindings ).forEach( ( attr ) => {\n\t\t\t\t\t\t\t// Default to the the source label when `getValues` doesn't exist.\n\t\t\t\t\t\t\tvalues[ attr ] = source.label;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues = source.getValues( {\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tfor ( const [ attributeName, value ] of Object.entries(\n\t\t\t\t\t\tvalues\n\t\t\t\t\t) ) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tattributeName === 'url' &&\n\t\t\t\t\t\t\t( ! value || ! isURLLike( value ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Return null if value is not a valid URL.\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...attributesFromSources,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tattributes,\n\t\t\tbindableAttributes,\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\tname,\n\t\t\tregisteredSources,\n\t\t]\n\t);\n\n\tconst setBoundAttributes = useCallback(\n\t\t( nextAttributes ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\tsetAttributes( nextAttributes );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tconst keptAttributes = { ...nextAttributes };\n\t\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\t\t// Loop only over the updated attributes to avoid modifying the bound ones that haven't changed.\n\t\t\t\tfor ( const [ attributeName, newValue ] of Object.entries(\n\t\t\t\t\tkeptAttributes\n\t\t\t\t) ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t! blockBindings[ attributeName ] ||\n\t\t\t\t\t\t! bindableAttributes?.includes( attributeName )\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst binding = blockBindings[ attributeName ];\n\t\t\t\t\tconst source = registeredSources[ binding?.source ];\n\t\t\t\t\tif ( ! source?.setValues ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\t\targs: binding.args,\n\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t\tdelete keptAttributes[ attributeName ];\n\t\t\t\t}\n\n\t\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\t\tfor ( const [\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tbindings,\n\t\t\t\t\t] of blockBindingsBySource ) {\n\t\t\t\t\t\tsource.setValues( {\n\t\t\t\t\t\t\tselect: registry.select,\n\t\t\t\t\t\t\tdispatch: registry.dispatch,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst hasParentPattern = !! context[ 'pattern/overrides' ];\n\n\t\t\t\tif (\n\t\t\t\t\t// Don't update non-connected attributes if the block is using pattern overrides\n\t\t\t\t\t// and the editing is happening while overriding the pattern (not editing the original).\n\t\t\t\t\t! ( hasPatternOverrides && hasParentPattern ) &&\n\t\t\t\t\tObject.keys( keptAttributes ).length\n\t\t\t\t) {\n\t\t\t\t\t// Don't update caption and href until they are supported.\n\t\t\t\t\tif ( hasPatternOverrides ) {\n\t\t\t\t\t\tdelete keptAttributes.caption;\n\t\t\t\t\t\tdelete keptAttributes.href;\n\t\t\t\t\t}\n\t\t\t\t\tsetAttributes( keptAttributes );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tbindableAttributes,\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\thasPatternOverrides,\n\t\t\tsetAttributes,\n\t\t\tregisteredSources,\n\t\t\tname,\n\t\t\tregistry,\n\t\t]\n\t);\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\tif ( blockType.apiVersion > 1 ) {\n\t\treturn (\n\t\t\t<EditWithFilters\n\t\t\t\t{ ...props }\n\t\t\t\tattributes={ computedAttributes }\n\t\t\t\tcontext={ context }\n\t\t\t\tsetAttributes={ setBoundAttributes }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Generate a class name for the block's editable form.\n\tconst generatedClassName = hasBlockSupport( blockType, 'className', true )\n\t\t? getBlockDefaultClassName( name )\n\t\t: null;\n\tconst className = clsx(\n\t\tgeneratedClassName,\n\t\tattributes?.className,\n\t\tprops.className\n\t);\n\n\treturn (\n\t\t<EditWithFilters\n\t\t\t{ ...props }\n\t\t\tattributes={ computedAttributes }\n\t\t\tclassName={ className }\n\t\t\tcontext={ context }\n\t\t\tsetAttributes={ setBoundAttributes }\n\t\t/>\n\t);\n};\n\nexport default EditWithGeneratedProps;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockDefaultClassName,\n\tgetBlockType,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { useCallback, useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockContext from '../block-context';\nimport isURLLike from '../link-control/is-url-like';\nimport {\n\thasPatternOverridesDefaultBinding,\n\treplacePatternOverridesDefaultBinding,\n} from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\nimport { PrivateBlockContext } from '../block-list/private-block-context';\n\n/**\n * Default value used for blocks which do not define their own context needs,\n * used to guarantee that a block's `context` prop will always be an object. It\n * is assigned as a constant since it is always expected to be an empty object,\n * and in order to avoid unnecessary React reconciliations of a changing object.\n *\n * @type {{}}\n */\nconst DEFAULT_BLOCK_CONTEXT = {};\n\nconst Edit = ( props ) => {\n\tconst { name } = props;\n\tconst blockType = getBlockType( name );\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\t// `edit` and `save` are functions or components describing the markup\n\t// with which a block is displayed. If `blockType` is valid, assign\n\t// them preferentially as the render value for the block.\n\tconst Component = blockType.edit || blockType.save;\n\n\treturn <Component { ...props } />;\n};\n\nconst EditWithFilters = withFilters( 'editor.BlockEdit' )( Edit );\n\nconst EditWithGeneratedProps = ( props ) => {\n\tconst { name, clientId, attributes, setAttributes } = props;\n\tconst registry = useRegistry();\n\tconst blockType = getBlockType( name );\n\tconst blockContext = useContext( BlockContext );\n\tconst registeredSources = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blocksStore ) ).getAllBlockBindingsSources(),\n\t\t[]\n\t);\n\tconst { bindableAttributes } = useContext( PrivateBlockContext );\n\n\tconst { blockBindings, context, hasPatternOverrides } = useMemo( () => {\n\t\t// Assign context values using the block type's declared context needs.\n\t\tconst computedContext = blockType?.usesContext\n\t\t\t? Object.fromEntries(\n\t\t\t\t\tObject.entries( blockContext ).filter( ( [ key ] ) =>\n\t\t\t\t\t\tblockType.usesContext.includes( key )\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: DEFAULT_BLOCK_CONTEXT;\n\t\t// Add context requested by Block Bindings sources.\n\t\tif ( attributes?.metadata?.bindings ) {\n\t\t\tObject.values( attributes?.metadata?.bindings || {} ).forEach(\n\t\t\t\t( binding ) => {\n\t\t\t\t\tregisteredSources[ binding?.source ]?.usesContext?.forEach(\n\t\t\t\t\t\t( key ) => {\n\t\t\t\t\t\t\tcomputedContext[ key ] = blockContext[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\tblockBindings: replacePatternOverridesDefaultBinding(\n\t\t\t\tattributes?.metadata?.bindings,\n\t\t\t\tbindableAttributes\n\t\t\t),\n\t\t\tcontext: computedContext,\n\t\t\thasPatternOverrides: hasPatternOverridesDefaultBinding(\n\t\t\t\tattributes?.metadata?.bindings\n\t\t\t),\n\t\t};\n\t}, [\n\t\tblockType?.usesContext,\n\t\tblockContext,\n\t\tattributes?.metadata?.bindings,\n\t\tbindableAttributes,\n\t\tregisteredSources,\n\t] );\n\n\tconst computedAttributes = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\treturn attributes;\n\t\t\t}\n\n\t\t\tconst attributesFromSources = {};\n\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\tfor ( const [ attributeName, binding ] of Object.entries(\n\t\t\t\tblockBindings\n\t\t\t) ) {\n\t\t\t\tconst { source: sourceName, args: sourceArgs } = binding;\n\t\t\t\tconst source = registeredSources[ sourceName ];\n\t\t\t\tif (\n\t\t\t\t\t! source ||\n\t\t\t\t\t! bindableAttributes?.includes( attributeName )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\targs: sourceArgs,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\tfor ( const [ source, bindings ] of blockBindingsBySource ) {\n\t\t\t\t\t// Get values in batch if the source supports it.\n\t\t\t\t\tlet values = {};\n\t\t\t\t\tif ( ! source.getValues ) {\n\t\t\t\t\t\tObject.keys( bindings ).forEach( ( attr ) => {\n\t\t\t\t\t\t\t// Default to the the source label when `getValues` doesn't exist.\n\t\t\t\t\t\t\tvalues[ attr ] = source.label;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues = source.getValues( {\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tfor ( const [ attributeName, value ] of Object.entries(\n\t\t\t\t\t\tvalues\n\t\t\t\t\t) ) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tattributeName === 'url' &&\n\t\t\t\t\t\t\t( ! value || ! isURLLike( value ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Return null if value is not a valid URL.\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...attributesFromSources,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tattributes,\n\t\t\tbindableAttributes,\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\tregisteredSources,\n\t\t]\n\t);\n\n\tconst setBoundAttributes = useCallback(\n\t\t( nextAttributes ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\tsetAttributes( nextAttributes );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tconst keptAttributes = { ...nextAttributes };\n\t\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\t\t// Loop only over the updated attributes to avoid modifying the bound ones that haven't changed.\n\t\t\t\tfor ( const [ attributeName, newValue ] of Object.entries(\n\t\t\t\t\tkeptAttributes\n\t\t\t\t) ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t! blockBindings[ attributeName ] ||\n\t\t\t\t\t\t! bindableAttributes?.includes( attributeName )\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst binding = blockBindings[ attributeName ];\n\t\t\t\t\tconst source = registeredSources[ binding?.source ];\n\t\t\t\t\tif ( ! source?.setValues ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\t\targs: binding.args,\n\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t\tdelete keptAttributes[ attributeName ];\n\t\t\t\t}\n\n\t\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\t\tfor ( const [\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tbindings,\n\t\t\t\t\t] of blockBindingsBySource ) {\n\t\t\t\t\t\tsource.setValues( {\n\t\t\t\t\t\t\tselect: registry.select,\n\t\t\t\t\t\t\tdispatch: registry.dispatch,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst hasParentPattern = !! context[ 'pattern/overrides' ];\n\n\t\t\t\tif (\n\t\t\t\t\t// Don't update non-connected attributes if the block is using pattern overrides\n\t\t\t\t\t// and the editing is happening while overriding the pattern (not editing the original).\n\t\t\t\t\t! ( hasPatternOverrides && hasParentPattern ) &&\n\t\t\t\t\tObject.keys( keptAttributes ).length\n\t\t\t\t) {\n\t\t\t\t\t// Don't update caption and href until they are supported.\n\t\t\t\t\tif ( hasPatternOverrides ) {\n\t\t\t\t\t\tdelete keptAttributes.caption;\n\t\t\t\t\t\tdelete keptAttributes.href;\n\t\t\t\t\t}\n\t\t\t\t\tsetAttributes( keptAttributes );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tbindableAttributes,\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\thasPatternOverrides,\n\t\t\tsetAttributes,\n\t\t\tregisteredSources,\n\t\t\tregistry,\n\t\t]\n\t);\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\tif ( blockType.apiVersion > 1 ) {\n\t\treturn (\n\t\t\t<EditWithFilters\n\t\t\t\t{ ...props }\n\t\t\t\tattributes={ computedAttributes }\n\t\t\t\tcontext={ context }\n\t\t\t\tsetAttributes={ setBoundAttributes }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Generate a class name for the block's editable form.\n\tconst generatedClassName = hasBlockSupport( blockType, 'className', true )\n\t\t? getBlockDefaultClassName( name )\n\t\t: null;\n\tconst className = clsx(\n\t\tgeneratedClassName,\n\t\tattributes?.className,\n\t\tprops.className\n\t);\n\n\treturn (\n\t\t<EditWithFilters\n\t\t\t{ ...props }\n\t\t\tattributes={ computedAttributes }\n\t\t\tclassName={ className }\n\t\t\tcontext={ context }\n\t\t\tsetAttributes={ setBoundAttributes }\n\t\t/>\n\t);\n};\n\nexport default EditWithGeneratedProps;\n"],
5
+ "mappings": "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",
6
6
  "names": ["BlockContext", "blocksStore", "isURLLike", "clsx"]
7
7
  }
@@ -201,6 +201,7 @@ function Items({
201
201
  rootClientId
202
202
  ));
203
203
  const hasSelectedRoot = !!(rootClientId && selectedBlockClientId && rootClientId === selectedBlockClientId);
204
+ const templateLock = getTemplateLock(rootClientId);
204
205
  return {
205
206
  order: _order,
206
207
  selectedBlocks: selectedBlockClientIds,
@@ -209,7 +210,7 @@ function Items({
209
210
  shouldRenderAppender: (!isSectionBlock(rootClientId) || isContainerInsertableToInContentOnlyMode(
210
211
  getBlockName(selectedBlockClientId),
211
212
  rootClientId
212
- )) && getBlockEditingMode(rootClientId) !== "disabled" && !getTemplateLock(rootClientId) && hasAppender && !_isZoomOut() && (hasCustomAppender || hasSelectedRoot || showRootAppender)
213
+ )) && getBlockEditingMode(rootClientId) !== "disabled" && (!templateLock || templateLock === "contentOnly") && hasAppender && !_isZoomOut() && (hasCustomAppender || hasSelectedRoot || showRootAppender)
213
214
  };
214
215
  },
215
216
  [rootClientId, hasAppender, hasCustomAppender]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-list/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAsyncModeProvider,\n\tuseSelect,\n\tuseDispatch,\n\tuseRegistry,\n} from '@wordpress/data';\nimport { useMergeRefs, useDebounce } from '@wordpress/compose';\nimport {\n\tcreateContext,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n} from '@wordpress/element';\nimport { getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockListBlock from './block';\nimport BlockListAppender from '../block-list-appender';\nimport { useInBetweenInserter } from './use-in-between-inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { LayoutProvider, defaultLayout } from './layout';\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useInnerBlocksProps } from '../inner-blocks';\nimport {\n\tBlockEditContextProvider,\n\tDEFAULT_BLOCK_EDIT_CONTEXT,\n} from '../block-edit/context';\nimport { useTypingObserver } from '../observe-typing';\nimport { ZoomOutSeparator } from './zoom-out-separator';\nimport { unlock } from '../../lock-unlock';\n\nexport const IntersectionObserver = createContext();\nIntersectionObserver.displayName = 'IntersectionObserverContext';\n\nconst pendingBlockVisibilityUpdatesPerRegistry = new WeakMap();\nconst delayedBlockVisibilityDebounceOptions = {\n\ttrailing: true,\n};\n\nfunction Root( { className, ...settings } ) {\n\tconst { isOutlineMode, isFocusMode, editedContentOnlySection } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tisTyping,\n\t\t\t\thasBlockSpotlight,\n\t\t\t\tgetEditedContentOnlySection,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { outlineMode, focusMode } = getSettings();\n\t\t\treturn {\n\t\t\t\tisOutlineMode: outlineMode && ! isTyping(),\n\t\t\t\tisFocusMode: focusMode || hasBlockSpotlight(),\n\t\t\t\teditedContentOnlySection: getEditedContentOnlySection(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst registry = useRegistry();\n\tconst { setBlockVisibility } = useDispatch( blockEditorStore );\n\n\tconst delayedBlockVisibilityUpdates = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst updates = {};\n\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t.get( registry )\n\t\t\t\t.forEach( ( [ id, isIntersecting ] ) => {\n\t\t\t\t\tupdates[ id ] = isIntersecting;\n\t\t\t\t} );\n\t\t\tsetBlockVisibility( updates );\n\t\t}, [ registry ] ),\n\t\t300,\n\t\tdelayedBlockVisibilityDebounceOptions\n\t);\n\tconst intersectionObserver = useMemo( () => {\n\t\tconst { IntersectionObserver: Observer } = window;\n\n\t\tif ( ! Observer ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn new Observer( ( entries ) => {\n\t\t\tif ( ! pendingBlockVisibilityUpdatesPerRegistry.get( registry ) ) {\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry.set( registry, [] );\n\t\t\t}\n\t\t\tfor ( const entry of entries ) {\n\t\t\t\tconst clientId = entry.target.getAttribute( 'data-block' );\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t\t.get( registry )\n\t\t\t\t\t.push( [ clientId, entry.isIntersecting ] );\n\t\t\t}\n\t\t\tdelayedBlockVisibilityUpdates();\n\t\t} );\n\t}, [] );\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tref: useMergeRefs( [\n\t\t\t\tuseBlockSelectionClearer(),\n\t\t\t\tuseInBetweenInserter(),\n\t\t\t\tuseTypingObserver(),\n\t\t\t] ),\n\t\t\tclassName: clsx( 'is-root-container', className, {\n\t\t\t\t'is-outline-mode': isOutlineMode,\n\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t} ),\n\t\t},\n\t\tsettings\n\t);\n\treturn (\n\t\t<IntersectionObserver.Provider value={ intersectionObserver }>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t\t{ !! editedContentOnlySection && (\n\t\t\t\t<StopEditingContentOnlySectionOnOutsideSelect\n\t\t\t\t\tclientId={ editedContentOnlySection }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</IntersectionObserver.Provider>\n\t);\n}\n\nfunction StopEditingContentOnlySectionOnOutsideSelect( { clientId } ) {\n\tconst { stopEditingContentOnlySection } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tconst isBlockOrDescendantSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockSelectionStart,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn (\n\t\t\t\t! getBlockSelectionStart() ||\n\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\thasSelectedInnerBlock( clientId, true )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! isBlockOrDescendantSelected ) {\n\t\t\tstopEditingContentOnlySection();\n\t\t}\n\t}, [ isBlockOrDescendantSelected, stopEditingContentOnlySection ] );\n\n\treturn null;\n}\n\nexport default function BlockList( settings ) {\n\treturn (\n\t\t<BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>\n\t\t\t<Root { ...settings } />\n\t\t</BlockEditContextProvider>\n\t);\n}\n\nconst EMPTY_ARRAY = [];\nconst EMPTY_SET = new Set();\n\nfunction Items( {\n\tplaceholder,\n\trootClientId,\n\trenderAppender: CustomAppender,\n\t__experimentalAppenderTagName,\n\tlayout = defaultLayout,\n} ) {\n\t// Avoid passing CustomAppender to useSelect because it could be a new\n\t// function on every render.\n\tconst hasAppender = CustomAppender !== false;\n\tconst hasCustomAppender = !! CustomAppender;\n\tconst {\n\t\torder,\n\t\tisZoomOut,\n\t\tselectedBlocks,\n\t\tvisibleBlocks,\n\t\tshouldRenderAppender,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t__unstableGetVisibleBlocks,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t\tisContainerInsertableToInContentOnlyMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisZoomOut: _isZoomOut,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst _order = getBlockOrder( rootClientId );\n\n\t\t\tif ( getSettings().isPreviewMode ) {\n\t\t\t\treturn {\n\t\t\t\t\torder: _order,\n\t\t\t\t\tselectedBlocks: EMPTY_ARRAY,\n\t\t\t\t\tvisibleBlocks: EMPTY_SET,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst showRootAppender =\n\t\t\t\t! rootClientId &&\n\t\t\t\t! selectedBlockClientId &&\n\t\t\t\t( ! _order.length ||\n\t\t\t\t\t! canInsertBlockType(\n\t\t\t\t\t\tgetDefaultBlockName(),\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t) );\n\t\t\tconst hasSelectedRoot = !! (\n\t\t\t\trootClientId &&\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\trootClientId === selectedBlockClientId\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\torder: _order,\n\t\t\t\tselectedBlocks: selectedBlockClientIds,\n\t\t\t\tvisibleBlocks: __unstableGetVisibleBlocks(),\n\t\t\t\tisZoomOut: _isZoomOut(),\n\t\t\t\tshouldRenderAppender:\n\t\t\t\t\t( ! isSectionBlock( rootClientId ) ||\n\t\t\t\t\t\tisContainerInsertableToInContentOnlyMode(\n\t\t\t\t\t\t\tgetBlockName( selectedBlockClientId ),\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t) ) &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) !== 'disabled' &&\n\t\t\t\t\t! getTemplateLock( rootClientId ) &&\n\t\t\t\t\thasAppender &&\n\t\t\t\t\t! _isZoomOut() &&\n\t\t\t\t\t( hasCustomAppender ||\n\t\t\t\t\t\thasSelectedRoot ||\n\t\t\t\t\t\tshowRootAppender ),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, hasAppender, hasCustomAppender ]\n\t);\n\n\treturn (\n\t\t<LayoutProvider value={ layout }>\n\t\t\t{ order.map( ( clientId ) => (\n\t\t\t\t<AsyncModeProvider\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t// Only provide data asynchronously if the block is\n\t\t\t\t\t\t// not visible and not selected.\n\t\t\t\t\t\t! visibleBlocks.has( clientId ) &&\n\t\t\t\t\t\t! selectedBlocks.includes( clientId )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"top\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</AsyncModeProvider>\n\t\t\t) ) }\n\t\t\t{ order.length < 1 && placeholder }\n\t\t\t{ shouldRenderAppender && (\n\t\t\t\t<BlockListAppender\n\t\t\t\t\ttagName={ __experimentalAppenderTagName }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tCustomAppender={ CustomAppender }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</LayoutProvider>\n\t);\n}\n\nexport function BlockListItems( props ) {\n\t// This component needs to always be synchronous as it's the one changing\n\t// the async mode depending on the block selection.\n\treturn (\n\t\t<AsyncModeProvider value={ false }>\n\t\t\t<Items { ...props } />\n\t\t</AsyncModeProvider>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAsyncModeProvider,\n\tuseSelect,\n\tuseDispatch,\n\tuseRegistry,\n} from '@wordpress/data';\nimport { useMergeRefs, useDebounce } from '@wordpress/compose';\nimport {\n\tcreateContext,\n\tuseEffect,\n\tuseMemo,\n\tuseCallback,\n} from '@wordpress/element';\nimport { getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockListBlock from './block';\nimport BlockListAppender from '../block-list-appender';\nimport { useInBetweenInserter } from './use-in-between-inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { LayoutProvider, defaultLayout } from './layout';\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useInnerBlocksProps } from '../inner-blocks';\nimport {\n\tBlockEditContextProvider,\n\tDEFAULT_BLOCK_EDIT_CONTEXT,\n} from '../block-edit/context';\nimport { useTypingObserver } from '../observe-typing';\nimport { ZoomOutSeparator } from './zoom-out-separator';\nimport { unlock } from '../../lock-unlock';\n\nexport const IntersectionObserver = createContext();\nIntersectionObserver.displayName = 'IntersectionObserverContext';\n\nconst pendingBlockVisibilityUpdatesPerRegistry = new WeakMap();\nconst delayedBlockVisibilityDebounceOptions = {\n\ttrailing: true,\n};\n\nfunction Root( { className, ...settings } ) {\n\tconst { isOutlineMode, isFocusMode, editedContentOnlySection } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tisTyping,\n\t\t\t\thasBlockSpotlight,\n\t\t\t\tgetEditedContentOnlySection,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { outlineMode, focusMode } = getSettings();\n\t\t\treturn {\n\t\t\t\tisOutlineMode: outlineMode && ! isTyping(),\n\t\t\t\tisFocusMode: focusMode || hasBlockSpotlight(),\n\t\t\t\teditedContentOnlySection: getEditedContentOnlySection(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst registry = useRegistry();\n\tconst { setBlockVisibility } = useDispatch( blockEditorStore );\n\n\tconst delayedBlockVisibilityUpdates = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst updates = {};\n\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t.get( registry )\n\t\t\t\t.forEach( ( [ id, isIntersecting ] ) => {\n\t\t\t\t\tupdates[ id ] = isIntersecting;\n\t\t\t\t} );\n\t\t\tsetBlockVisibility( updates );\n\t\t}, [ registry ] ),\n\t\t300,\n\t\tdelayedBlockVisibilityDebounceOptions\n\t);\n\tconst intersectionObserver = useMemo( () => {\n\t\tconst { IntersectionObserver: Observer } = window;\n\n\t\tif ( ! Observer ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn new Observer( ( entries ) => {\n\t\t\tif ( ! pendingBlockVisibilityUpdatesPerRegistry.get( registry ) ) {\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry.set( registry, [] );\n\t\t\t}\n\t\t\tfor ( const entry of entries ) {\n\t\t\t\tconst clientId = entry.target.getAttribute( 'data-block' );\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t\t.get( registry )\n\t\t\t\t\t.push( [ clientId, entry.isIntersecting ] );\n\t\t\t}\n\t\t\tdelayedBlockVisibilityUpdates();\n\t\t} );\n\t}, [] );\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tref: useMergeRefs( [\n\t\t\t\tuseBlockSelectionClearer(),\n\t\t\t\tuseInBetweenInserter(),\n\t\t\t\tuseTypingObserver(),\n\t\t\t] ),\n\t\t\tclassName: clsx( 'is-root-container', className, {\n\t\t\t\t'is-outline-mode': isOutlineMode,\n\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t} ),\n\t\t},\n\t\tsettings\n\t);\n\treturn (\n\t\t<IntersectionObserver.Provider value={ intersectionObserver }>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t\t{ !! editedContentOnlySection && (\n\t\t\t\t<StopEditingContentOnlySectionOnOutsideSelect\n\t\t\t\t\tclientId={ editedContentOnlySection }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</IntersectionObserver.Provider>\n\t);\n}\n\nfunction StopEditingContentOnlySectionOnOutsideSelect( { clientId } ) {\n\tconst { stopEditingContentOnlySection } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tconst isBlockOrDescendantSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockSelectionStart,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn (\n\t\t\t\t! getBlockSelectionStart() ||\n\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\thasSelectedInnerBlock( clientId, true )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! isBlockOrDescendantSelected ) {\n\t\t\tstopEditingContentOnlySection();\n\t\t}\n\t}, [ isBlockOrDescendantSelected, stopEditingContentOnlySection ] );\n\n\treturn null;\n}\n\nexport default function BlockList( settings ) {\n\treturn (\n\t\t<BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>\n\t\t\t<Root { ...settings } />\n\t\t</BlockEditContextProvider>\n\t);\n}\n\nconst EMPTY_ARRAY = [];\nconst EMPTY_SET = new Set();\n\nfunction Items( {\n\tplaceholder,\n\trootClientId,\n\trenderAppender: CustomAppender,\n\t__experimentalAppenderTagName,\n\tlayout = defaultLayout,\n} ) {\n\t// Avoid passing CustomAppender to useSelect because it could be a new\n\t// function on every render.\n\tconst hasAppender = CustomAppender !== false;\n\tconst hasCustomAppender = !! CustomAppender;\n\tconst {\n\t\torder,\n\t\tisZoomOut,\n\t\tselectedBlocks,\n\t\tvisibleBlocks,\n\t\tshouldRenderAppender,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t__unstableGetVisibleBlocks,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t\tisContainerInsertableToInContentOnlyMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisZoomOut: _isZoomOut,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst _order = getBlockOrder( rootClientId );\n\n\t\t\tif ( getSettings().isPreviewMode ) {\n\t\t\t\treturn {\n\t\t\t\t\torder: _order,\n\t\t\t\t\tselectedBlocks: EMPTY_ARRAY,\n\t\t\t\t\tvisibleBlocks: EMPTY_SET,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst showRootAppender =\n\t\t\t\t! rootClientId &&\n\t\t\t\t! selectedBlockClientId &&\n\t\t\t\t( ! _order.length ||\n\t\t\t\t\t! canInsertBlockType(\n\t\t\t\t\t\tgetDefaultBlockName(),\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t) );\n\t\t\tconst hasSelectedRoot = !! (\n\t\t\t\trootClientId &&\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\trootClientId === selectedBlockClientId\n\t\t\t);\n\n\t\t\tconst templateLock = getTemplateLock( rootClientId );\n\n\t\t\treturn {\n\t\t\t\torder: _order,\n\t\t\t\tselectedBlocks: selectedBlockClientIds,\n\t\t\t\tvisibleBlocks: __unstableGetVisibleBlocks(),\n\t\t\t\tisZoomOut: _isZoomOut(),\n\t\t\t\tshouldRenderAppender:\n\t\t\t\t\t( ! isSectionBlock( rootClientId ) ||\n\t\t\t\t\t\tisContainerInsertableToInContentOnlyMode(\n\t\t\t\t\t\t\tgetBlockName( selectedBlockClientId ),\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t) ) &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) !== 'disabled' &&\n\t\t\t\t\t( ! templateLock || templateLock === 'contentOnly' ) &&\n\t\t\t\t\thasAppender &&\n\t\t\t\t\t! _isZoomOut() &&\n\t\t\t\t\t( hasCustomAppender ||\n\t\t\t\t\t\thasSelectedRoot ||\n\t\t\t\t\t\tshowRootAppender ),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, hasAppender, hasCustomAppender ]\n\t);\n\n\treturn (\n\t\t<LayoutProvider value={ layout }>\n\t\t\t{ order.map( ( clientId ) => (\n\t\t\t\t<AsyncModeProvider\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t// Only provide data asynchronously if the block is\n\t\t\t\t\t\t// not visible and not selected.\n\t\t\t\t\t\t! visibleBlocks.has( clientId ) &&\n\t\t\t\t\t\t! selectedBlocks.includes( clientId )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"top\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</AsyncModeProvider>\n\t\t\t) ) }\n\t\t\t{ order.length < 1 && placeholder }\n\t\t\t{ shouldRenderAppender && (\n\t\t\t\t<BlockListAppender\n\t\t\t\t\ttagName={ __experimentalAppenderTagName }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tCustomAppender={ CustomAppender }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</LayoutProvider>\n\t);\n}\n\nexport function BlockListItems( props ) {\n\t// This component needs to always be synchronous as it's the one changing\n\t// the async mode depending on the block selection.\n\treturn (\n\t\t<AsyncModeProvider value={ false }>\n\t\t\t<Items { ...props } />\n\t\t</AsyncModeProvider>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore", "clsx", "BlockListBlock", "BlockListAppender"]
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
  }
@@ -68,7 +68,7 @@ var BlockSettingsMenuControlsSlot = ({ fillProps, clientIds = null }) => {
68
68
  canToggleSelectedBlocksVisibility: getBlocksByClientId(
69
69
  ids
70
70
  ).every(
71
- (block) => (0, import_blocks.hasBlockSupport)(block.name, "blockVisibility", true)
71
+ (block) => (0, import_blocks.hasBlockSupport)(block.name, "visibility", true)
72
72
  )
73
73
  };
74
74
  },
@@ -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';\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, '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{ 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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",
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
  }
@@ -33,7 +33,6 @@ __export(preview_panel_exports, {
33
33
  default: () => BlockStylesPreviewPanel
34
34
  });
35
35
  module.exports = __toCommonJS(preview_panel_exports);
36
- var import_blocks = require("@wordpress/blocks");
37
36
  var import_element = require("@wordpress/element");
38
37
  var import_preview_panel = __toESM(require("../inserter/preview-panel"));
39
38
  var import_utils = require("./utils");
@@ -44,20 +43,19 @@ function BlockStylesPreviewPanel({
44
43
  className,
45
44
  activeStyle
46
45
  }) {
47
- const example = (0, import_blocks.getBlockType)(genericPreviewBlock.name)?.example;
48
46
  const styleClassName = (0, import_utils.replaceActiveStyle)(className, activeStyle, style);
49
47
  const previewBlocks = (0, import_element.useMemo)(() => {
50
48
  return {
51
- ...genericPreviewBlock,
49
+ name: genericPreviewBlock.name,
52
50
  title: style.label || style.name,
53
51
  description: style.description,
54
52
  initialAttributes: {
55
53
  ...genericPreviewBlock.attributes,
56
54
  className: styleClassName + " block-editor-block-styles__block-preview-container"
57
55
  },
58
- example
56
+ example: genericPreviewBlock
59
57
  };
60
- }, [genericPreviewBlock, styleClassName]);
58
+ }, [genericPreviewBlock, style, styleClassName]);
61
59
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_preview_panel.default, { item: previewBlocks });
62
60
  }
63
61
  //# sourceMappingURL=preview-panel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-styles/preview-panel.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InserterPreviewPanel from '../inserter/preview-panel';\nimport { replaceActiveStyle } from './utils';\n\nexport default function BlockStylesPreviewPanel( {\n\tgenericPreviewBlock,\n\tstyle,\n\tclassName,\n\tactiveStyle,\n} ) {\n\tconst example = getBlockType( genericPreviewBlock.name )?.example;\n\tconst styleClassName = replaceActiveStyle( className, activeStyle, style );\n\tconst previewBlocks = useMemo( () => {\n\t\treturn {\n\t\t\t...genericPreviewBlock,\n\t\t\ttitle: style.label || style.name,\n\t\t\tdescription: style.description,\n\t\t\tinitialAttributes: {\n\t\t\t\t...genericPreviewBlock.attributes,\n\t\t\t\tclassName:\n\t\t\t\t\tstyleClassName +\n\t\t\t\t\t' block-editor-block-styles__block-preview-container',\n\t\t\t},\n\t\t\texample,\n\t\t};\n\t}, [ genericPreviewBlock, styleClassName ] );\n\n\treturn <InserterPreviewPanel item={ previewBlocks } />;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAA6B;AAC7B,qBAAwB;AAKxB,2BAAiC;AACjC,mBAAmC;AAyB3B;AAvBO,SAAR,wBAA0C;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,cAAU,4BAAc,oBAAoB,IAAK,GAAG;AAC1D,QAAM,qBAAiB,iCAAoB,WAAW,aAAa,KAAM;AACzE,QAAM,oBAAgB,wBAAS,MAAM;AACpC,WAAO;AAAA,MACN,GAAG;AAAA,MACH,OAAO,MAAM,SAAS,MAAM;AAAA,MAC5B,aAAa,MAAM;AAAA,MACnB,mBAAmB;AAAA,QAClB,GAAG,oBAAoB;AAAA,QACvB,WACC,iBACA;AAAA,MACF;AAAA,MACA;AAAA,IACD;AAAA,EACD,GAAG,CAAE,qBAAqB,cAAe,CAAE;AAE3C,SAAO,4CAAC,qBAAAA,SAAA,EAAqB,MAAO,eAAgB;AACrD;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport InserterPreviewPanel from '../inserter/preview-panel';\nimport { replaceActiveStyle } from './utils';\n\nexport default function BlockStylesPreviewPanel( {\n\tgenericPreviewBlock,\n\tstyle,\n\tclassName,\n\tactiveStyle,\n} ) {\n\tconst styleClassName = replaceActiveStyle( className, activeStyle, style );\n\tconst previewBlocks = useMemo( () => {\n\t\treturn {\n\t\t\tname: genericPreviewBlock.name,\n\t\t\ttitle: style.label || style.name,\n\t\t\tdescription: style.description,\n\t\t\tinitialAttributes: {\n\t\t\t\t...genericPreviewBlock.attributes,\n\t\t\t\tclassName:\n\t\t\t\t\tstyleClassName +\n\t\t\t\t\t' block-editor-block-styles__block-preview-container',\n\t\t\t},\n\t\t\texample: genericPreviewBlock,\n\t\t};\n\t}, [ genericPreviewBlock, style, styleClassName ] );\n\n\treturn <InserterPreviewPanel item={ previewBlocks } />;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAwB;AAKxB,2BAAiC;AACjC,mBAAmC;AAwB3B;AAtBO,SAAR,wBAA0C;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,qBAAiB,iCAAoB,WAAW,aAAa,KAAM;AACzE,QAAM,oBAAgB,wBAAS,MAAM;AACpC,WAAO;AAAA,MACN,MAAM,oBAAoB;AAAA,MAC1B,OAAO,MAAM,SAAS,MAAM;AAAA,MAC5B,aAAa,MAAM;AAAA,MACnB,mBAAmB;AAAA,QAClB,GAAG,oBAAoB;AAAA,QACvB,WACC,iBACA;AAAA,MACF;AAAA,MACA,SAAS;AAAA,IACV;AAAA,EACD,GAAG,CAAE,qBAAqB,OAAO,cAAe,CAAE;AAElD,SAAO,4CAAC,qBAAAA,SAAA,EAAqB,MAAO,eAAgB;AACrD;",
6
6
  "names": ["InserterPreviewPanel"]
7
7
  }
@@ -41,7 +41,7 @@ function useGenericPreviewBlock(block, type) {
41
41
  if (block) {
42
42
  return (0, import_blocks.cloneBlock)(block);
43
43
  }
44
- }, [type?.example ? block?.name : block, type]);
44
+ }, [block, type?.example, type?.name]);
45
45
  }
46
46
  function useStylesForBlocks({ clientId, onSwitch }) {
47
47
  const selector = (select) => {
@@ -53,7 +53,7 @@ function useStylesForBlocks({ clientId, onSwitch }) {
53
53
  const blockType2 = (0, import_blocks.getBlockType)(block2.name);
54
54
  const { getBlockStyles } = select(import_blocks.store);
55
55
  return {
56
- block: block2,
56
+ block: !blockType2?.example ? block2 : null,
57
57
  blockType: blockType2,
58
58
  styles: getBlockStyles(block2.name),
59
59
  className: block2.attributes.className || ""