@wordpress/block-editor 15.11.0 → 15.12.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 (393) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-breadcrumb/index.cjs +10 -2
  3. package/build/components/block-breadcrumb/index.cjs.map +2 -2
  4. package/build/components/block-controls/index.cjs +1 -1
  5. package/build/components/block-controls/index.cjs.map +2 -2
  6. package/build/components/block-inspector/index.cjs +8 -21
  7. package/build/components/block-inspector/index.cjs.map +3 -3
  8. package/build/components/block-list/block.cjs +6 -3
  9. package/build/components/block-list/block.cjs.map +3 -3
  10. package/build/components/block-list/index.cjs +26 -18
  11. package/build/components/block-list/index.cjs.map +2 -2
  12. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.cjs +39 -19
  13. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.cjs.map +2 -2
  14. package/build/components/block-list/use-in-between-inserter.cjs +4 -4
  15. package/build/components/block-list/use-in-between-inserter.cjs.map +2 -2
  16. package/build/components/block-settings-menu/block-settings-dropdown.cjs +10 -7
  17. package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +2 -2
  18. package/build/components/block-settings-menu-controls/edit-section-menu-item.cjs +1 -1
  19. package/build/components/block-settings-menu-controls/edit-section-menu-item.cjs.map +2 -2
  20. package/build/components/block-settings-menu-controls/index.cjs +11 -16
  21. package/build/components/block-settings-menu-controls/index.cjs.map +2 -2
  22. package/build/components/block-toolbar/block-toolbar-icon.cjs +6 -4
  23. package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
  24. package/build/components/block-toolbar/index.cjs +2 -2
  25. package/build/components/block-toolbar/index.cjs.map +2 -2
  26. package/build/components/block-tools/index.cjs +2 -26
  27. package/build/components/block-tools/index.cjs.map +2 -2
  28. package/build/components/block-variation-transforms/index.cjs +1 -2
  29. package/build/components/block-variation-transforms/index.cjs.map +2 -2
  30. package/build/components/block-visibility/index.cjs +7 -9
  31. package/build/components/block-visibility/index.cjs.map +3 -3
  32. package/build/components/block-visibility/modal.cjs +18 -103
  33. package/build/components/block-visibility/modal.cjs.map +2 -2
  34. package/build/components/block-visibility/use-block-visibility.cjs +1 -1
  35. package/build/components/block-visibility/use-block-visibility.cjs.map +2 -2
  36. package/build/components/block-visibility/utils.cjs +5 -1
  37. package/build/components/block-visibility/utils.cjs.map +2 -2
  38. package/build/components/block-visibility/viewport-menu-item.cjs +11 -4
  39. package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
  40. package/build/components/block-visibility/viewport-toolbar.cjs +4 -6
  41. package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
  42. package/build/components/block-visibility/viewport-visibility-info.cjs +121 -0
  43. package/build/components/block-visibility/viewport-visibility-info.cjs.map +7 -0
  44. package/build/components/color-palette/with-color-context.cjs +1 -1
  45. package/build/components/color-palette/with-color-context.cjs.map +2 -2
  46. package/build/components/color-style-selector/index.cjs +1 -1
  47. package/build/components/color-style-selector/index.cjs.map +2 -2
  48. package/build/components/colors/with-colors.cjs +5 -3
  49. package/build/components/colors/with-colors.cjs.map +2 -2
  50. package/build/components/colors-gradients/dropdown.cjs +1 -1
  51. package/build/components/colors-gradients/dropdown.cjs.map +2 -2
  52. package/build/components/editable-text/index.cjs +5 -1
  53. package/build/components/editable-text/index.cjs.map +2 -2
  54. package/build/components/font-sizes/with-font-sizes.cjs +5 -3
  55. package/build/components/font-sizes/with-font-sizes.cjs.map +2 -2
  56. package/build/components/global-styles/advanced-panel.cjs +26 -13
  57. package/build/components/global-styles/advanced-panel.cjs.map +2 -2
  58. package/build/components/global-styles/filters-panel.cjs +1 -1
  59. package/build/components/global-styles/filters-panel.cjs.map +2 -2
  60. package/build/components/global-styles/shadow-panel-components.cjs +1 -1
  61. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  62. package/build/components/gradients/with-gradient.cjs +1 -1
  63. package/build/components/gradients/with-gradient.cjs.map +2 -2
  64. package/build/components/inserter/index.cjs +1 -0
  65. package/build/components/inserter/index.cjs.map +2 -2
  66. package/build/components/inspector-controls/fill.cjs +12 -2
  67. package/build/components/inspector-controls/fill.cjs.map +2 -2
  68. package/build/components/inspector-controls/index.cjs +1 -1
  69. package/build/components/inspector-controls/index.cjs.map +2 -2
  70. package/build/components/inspector-controls-tabs/index.cjs +3 -3
  71. package/build/components/inspector-controls-tabs/index.cjs.map +3 -3
  72. package/build/components/inspector-controls-tabs/styles-tab.cjs +1 -1
  73. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
  74. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +2 -2
  75. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
  76. package/build/components/list-view/block-select-button.cjs +8 -16
  77. package/build/components/list-view/block-select-button.cjs.map +2 -2
  78. package/build/components/list-view/block.cjs +29 -34
  79. package/build/components/list-view/block.cjs.map +3 -3
  80. package/build/components/list-view/utils.cjs +3 -1
  81. package/build/components/list-view/utils.cjs.map +2 -2
  82. package/build/components/media-replace-flow/index.cjs +2 -2
  83. package/build/components/media-replace-flow/index.cjs.map +2 -2
  84. package/build/components/provider/index.cjs +7 -8
  85. package/build/components/provider/index.cjs.map +2 -2
  86. package/build/components/provider/with-registry-provider.cjs +1 -1
  87. package/build/components/provider/with-registry-provider.cjs.map +2 -2
  88. package/build/components/rich-text/index.cjs +1 -1
  89. package/build/components/rich-text/index.cjs.map +2 -2
  90. package/build/components/use-block-commands/index.cjs +2 -34
  91. package/build/components/use-block-commands/index.cjs.map +2 -2
  92. package/build/components/use-block-display-information/index.cjs +1 -1
  93. package/build/components/use-block-display-information/index.cjs.map +2 -2
  94. package/build/components/writing-flow/index.cjs +2 -0
  95. package/build/components/writing-flow/index.cjs.map +2 -2
  96. package/build/components/writing-flow/use-arrow-nav.cjs +3 -0
  97. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  98. package/build/components/writing-flow/use-drag-selection.cjs +2 -1
  99. package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
  100. package/build/components/writing-flow/use-preview-mode-nav.cjs +92 -0
  101. package/build/components/writing-flow/use-preview-mode-nav.cjs.map +7 -0
  102. package/build/hooks/block-renaming.cjs +1 -1
  103. package/build/hooks/block-renaming.cjs.map +2 -2
  104. package/build/hooks/cross-origin-isolation.cjs +1 -1
  105. package/build/hooks/cross-origin-isolation.cjs.map +2 -2
  106. package/build/hooks/custom-css.cjs +141 -0
  107. package/build/hooks/custom-css.cjs.map +7 -0
  108. package/build/hooks/fit-text.cjs +14 -7
  109. package/build/hooks/fit-text.cjs.map +2 -2
  110. package/build/hooks/grid-visualizer.cjs +1 -1
  111. package/build/hooks/grid-visualizer.cjs.map +2 -2
  112. package/build/hooks/index.cjs +4 -2
  113. package/build/hooks/index.cjs.map +3 -3
  114. package/build/hooks/layout.cjs +10 -4
  115. package/build/hooks/layout.cjs.map +2 -2
  116. package/build/hooks/list-view.cjs +9 -5
  117. package/build/hooks/list-view.cjs.map +3 -3
  118. package/build/hooks/utils.cjs +2 -2
  119. package/build/hooks/utils.cjs.map +2 -2
  120. package/build/layouts/grid.cjs +12 -1
  121. package/build/layouts/grid.cjs.map +2 -2
  122. package/build/store/actions.cjs +5 -0
  123. package/build/store/actions.cjs.map +2 -2
  124. package/build/store/defaults.cjs +3 -0
  125. package/build/store/defaults.cjs.map +2 -2
  126. package/build/store/private-selectors.cjs +46 -38
  127. package/build/store/private-selectors.cjs.map +2 -2
  128. package/build/store/reducer.cjs +5 -7
  129. package/build/store/reducer.cjs.map +2 -2
  130. package/build/store/selectors.cjs +15 -0
  131. package/build/store/selectors.cjs.map +2 -2
  132. package/build/utils/fit-text-utils.cjs +18 -4
  133. package/build/utils/fit-text-utils.cjs.map +2 -2
  134. package/build-module/components/block-breadcrumb/index.mjs +10 -2
  135. package/build-module/components/block-breadcrumb/index.mjs.map +2 -2
  136. package/build-module/components/block-controls/index.mjs +1 -1
  137. package/build-module/components/block-controls/index.mjs.map +2 -2
  138. package/build-module/components/block-inspector/index.mjs +8 -21
  139. package/build-module/components/block-inspector/index.mjs.map +2 -2
  140. package/build-module/components/block-list/block.mjs +6 -3
  141. package/build-module/components/block-list/block.mjs.map +3 -3
  142. package/build-module/components/block-list/index.mjs +26 -18
  143. package/build-module/components/block-list/index.mjs.map +2 -2
  144. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.mjs +39 -19
  145. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.mjs.map +2 -2
  146. package/build-module/components/block-list/use-in-between-inserter.mjs +4 -4
  147. package/build-module/components/block-list/use-in-between-inserter.mjs.map +2 -2
  148. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs +10 -7
  149. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
  150. package/build-module/components/block-settings-menu-controls/edit-section-menu-item.mjs +1 -1
  151. package/build-module/components/block-settings-menu-controls/edit-section-menu-item.mjs.map +2 -2
  152. package/build-module/components/block-settings-menu-controls/index.mjs +12 -17
  153. package/build-module/components/block-settings-menu-controls/index.mjs.map +2 -2
  154. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +6 -4
  155. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  156. package/build-module/components/block-toolbar/index.mjs +3 -3
  157. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  158. package/build-module/components/block-tools/index.mjs +2 -26
  159. package/build-module/components/block-tools/index.mjs.map +2 -2
  160. package/build-module/components/block-variation-transforms/index.mjs +1 -2
  161. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  162. package/build-module/components/block-visibility/index.mjs +6 -9
  163. package/build-module/components/block-visibility/index.mjs.map +2 -2
  164. package/build-module/components/block-visibility/modal.mjs +18 -103
  165. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  166. package/build-module/components/block-visibility/use-block-visibility.mjs +1 -1
  167. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  168. package/build-module/components/block-visibility/utils.mjs +5 -1
  169. package/build-module/components/block-visibility/utils.mjs.map +2 -2
  170. package/build-module/components/block-visibility/viewport-menu-item.mjs +11 -4
  171. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
  172. package/build-module/components/block-visibility/viewport-toolbar.mjs +4 -6
  173. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
  174. package/build-module/components/block-visibility/viewport-visibility-info.mjs +95 -0
  175. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +7 -0
  176. package/build-module/components/color-palette/with-color-context.mjs +1 -1
  177. package/build-module/components/color-palette/with-color-context.mjs.map +2 -2
  178. package/build-module/components/color-style-selector/index.mjs +1 -1
  179. package/build-module/components/color-style-selector/index.mjs.map +2 -2
  180. package/build-module/components/colors/with-colors.mjs +5 -3
  181. package/build-module/components/colors/with-colors.mjs.map +2 -2
  182. package/build-module/components/colors-gradients/dropdown.mjs +1 -1
  183. package/build-module/components/colors-gradients/dropdown.mjs.map +2 -2
  184. package/build-module/components/editable-text/index.mjs +5 -1
  185. package/build-module/components/editable-text/index.mjs.map +2 -2
  186. package/build-module/components/font-sizes/with-font-sizes.mjs +5 -3
  187. package/build-module/components/font-sizes/with-font-sizes.mjs.map +2 -2
  188. package/build-module/components/global-styles/advanced-panel.mjs +22 -13
  189. package/build-module/components/global-styles/advanced-panel.mjs.map +2 -2
  190. package/build-module/components/global-styles/filters-panel.mjs +1 -1
  191. package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
  192. package/build-module/components/global-styles/shadow-panel-components.mjs +1 -1
  193. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  194. package/build-module/components/gradients/with-gradient.mjs +1 -1
  195. package/build-module/components/gradients/with-gradient.mjs.map +2 -2
  196. package/build-module/components/inserter/index.mjs +1 -0
  197. package/build-module/components/inserter/index.mjs.map +2 -2
  198. package/build-module/components/inspector-controls/fill.mjs +12 -2
  199. package/build-module/components/inspector-controls/fill.mjs.map +2 -2
  200. package/build-module/components/inspector-controls/index.mjs +1 -1
  201. package/build-module/components/inspector-controls/index.mjs.map +2 -2
  202. package/build-module/components/inspector-controls-tabs/index.mjs +3 -3
  203. package/build-module/components/inspector-controls-tabs/index.mjs.map +2 -2
  204. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +1 -1
  205. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  206. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +2 -2
  207. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
  208. package/build-module/components/list-view/block-select-button.mjs +8 -16
  209. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  210. package/build-module/components/list-view/block.mjs +31 -36
  211. package/build-module/components/list-view/block.mjs.map +2 -2
  212. package/build-module/components/list-view/utils.mjs +3 -1
  213. package/build-module/components/list-view/utils.mjs.map +2 -2
  214. package/build-module/components/media-replace-flow/index.mjs +2 -2
  215. package/build-module/components/media-replace-flow/index.mjs.map +2 -2
  216. package/build-module/components/provider/index.mjs +7 -8
  217. package/build-module/components/provider/index.mjs.map +2 -2
  218. package/build-module/components/provider/with-registry-provider.mjs +1 -1
  219. package/build-module/components/provider/with-registry-provider.mjs.map +2 -2
  220. package/build-module/components/rich-text/index.mjs +1 -1
  221. package/build-module/components/rich-text/index.mjs.map +2 -2
  222. package/build-module/components/use-block-commands/index.mjs +3 -37
  223. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  224. package/build-module/components/use-block-display-information/index.mjs +1 -1
  225. package/build-module/components/use-block-display-information/index.mjs.map +2 -2
  226. package/build-module/components/writing-flow/index.mjs +2 -0
  227. package/build-module/components/writing-flow/index.mjs.map +2 -2
  228. package/build-module/components/writing-flow/use-arrow-nav.mjs +3 -0
  229. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  230. package/build-module/components/writing-flow/use-drag-selection.mjs +2 -1
  231. package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
  232. package/build-module/components/writing-flow/use-preview-mode-nav.mjs +67 -0
  233. package/build-module/components/writing-flow/use-preview-mode-nav.mjs.map +7 -0
  234. package/build-module/hooks/block-renaming.mjs +1 -1
  235. package/build-module/hooks/block-renaming.mjs.map +2 -2
  236. package/build-module/hooks/cross-origin-isolation.mjs +1 -1
  237. package/build-module/hooks/cross-origin-isolation.mjs.map +2 -2
  238. package/build-module/hooks/custom-css.mjs +112 -0
  239. package/build-module/hooks/custom-css.mjs.map +7 -0
  240. package/build-module/hooks/fit-text.mjs +14 -7
  241. package/build-module/hooks/fit-text.mjs.map +2 -2
  242. package/build-module/hooks/grid-visualizer.mjs +1 -1
  243. package/build-module/hooks/grid-visualizer.mjs.map +2 -2
  244. package/build-module/hooks/index.mjs +4 -2
  245. package/build-module/hooks/index.mjs.map +2 -2
  246. package/build-module/hooks/layout.mjs +10 -4
  247. package/build-module/hooks/layout.mjs.map +2 -2
  248. package/build-module/hooks/list-view.mjs +10 -6
  249. package/build-module/hooks/list-view.mjs.map +2 -2
  250. package/build-module/hooks/utils.mjs +2 -2
  251. package/build-module/hooks/utils.mjs.map +2 -2
  252. package/build-module/layouts/grid.mjs +12 -1
  253. package/build-module/layouts/grid.mjs.map +2 -2
  254. package/build-module/store/actions.mjs +5 -0
  255. package/build-module/store/actions.mjs.map +2 -2
  256. package/build-module/store/defaults.mjs +3 -0
  257. package/build-module/store/defaults.mjs.map +2 -2
  258. package/build-module/store/private-selectors.mjs +43 -41
  259. package/build-module/store/private-selectors.mjs.map +2 -2
  260. package/build-module/store/reducer.mjs +5 -7
  261. package/build-module/store/reducer.mjs.map +2 -2
  262. package/build-module/store/selectors.mjs +15 -0
  263. package/build-module/store/selectors.mjs.map +2 -2
  264. package/build-module/utils/fit-text-utils.mjs +18 -4
  265. package/build-module/utils/fit-text-utils.mjs.map +2 -2
  266. package/build-style/content-rtl.css +10 -0
  267. package/build-style/content.css +10 -0
  268. package/build-style/style-rtl.css +3 -0
  269. package/build-style/style.css +3 -0
  270. package/package.json +39 -39
  271. package/src/components/block-breadcrumb/index.js +6 -1
  272. package/src/components/block-controls/index.js +1 -1
  273. package/src/components/block-controls/test/index.js +1 -0
  274. package/src/components/block-edit/test/edit.js +10 -0
  275. package/src/components/block-inspector/index.js +15 -36
  276. package/src/components/block-list/block.js +5 -2
  277. package/src/components/block-list/content.scss +11 -0
  278. package/src/components/block-list/index.js +25 -17
  279. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +51 -36
  280. package/src/components/block-list/use-in-between-inserter.js +8 -6
  281. package/src/components/block-preview/test/index.js +11 -7
  282. package/src/components/block-settings-menu/block-settings-dropdown.js +11 -6
  283. package/src/components/block-settings-menu-controls/edit-section-menu-item.js +1 -7
  284. package/src/components/block-settings-menu-controls/index.js +16 -18
  285. package/src/components/block-switcher/test/index.js +2 -0
  286. package/src/components/block-switcher/test/use-transformed.patterns.js +2 -0
  287. package/src/components/block-switcher/test/utils.js +2 -0
  288. package/src/components/block-toolbar/block-toolbar-icon.js +6 -10
  289. package/src/components/block-toolbar/index.js +3 -9
  290. package/src/components/block-tools/index.js +2 -29
  291. package/src/components/block-variation-transforms/index.js +1 -4
  292. package/src/components/block-visibility/index.js +3 -19
  293. package/src/components/block-visibility/modal.js +16 -14
  294. package/src/components/block-visibility/test/use-block-visibility.js +27 -25
  295. package/src/components/block-visibility/test/utils.js +24 -8
  296. package/src/components/block-visibility/use-block-visibility.js +1 -4
  297. package/src/components/block-visibility/utils.js +9 -1
  298. package/src/components/block-visibility/viewport-menu-item.js +11 -5
  299. package/src/components/block-visibility/viewport-toolbar.js +5 -6
  300. package/src/components/block-visibility/viewport-visibility-info.js +131 -0
  301. package/src/components/color-palette/with-color-context.js +1 -1
  302. package/src/components/color-style-selector/index.js +2 -3
  303. package/src/components/colors/with-colors.js +23 -20
  304. package/src/components/colors-gradients/dropdown.js +2 -3
  305. package/src/components/editable-text/index.js +5 -1
  306. package/src/components/font-sizes/with-font-sizes.js +13 -10
  307. package/src/components/global-styles/advanced-panel.js +35 -16
  308. package/src/components/global-styles/filters-panel.js +2 -3
  309. package/src/components/global-styles/shadow-panel-components.js +1 -1
  310. package/src/components/global-styles/style.scss +9 -5
  311. package/src/components/gradients/with-gradient.js +7 -4
  312. package/src/components/inner-blocks/test/index.js +2 -0
  313. package/src/components/inserter/index.js +1 -0
  314. package/src/components/inserter/stories/index.story.jsx +31 -24
  315. package/src/components/inspector-controls/fill.js +25 -5
  316. package/src/components/inspector-controls/index.js +1 -1
  317. package/src/components/inspector-controls-tabs/index.js +6 -2
  318. package/src/components/inspector-controls-tabs/styles-tab.js +7 -8
  319. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +3 -4
  320. package/src/components/link-control/test/index.js +6 -1
  321. package/src/components/list-view/block-select-button.js +16 -25
  322. package/src/components/list-view/block.js +38 -43
  323. package/src/components/list-view/utils.js +4 -2
  324. package/src/components/media-replace-flow/index.js +3 -3
  325. package/src/components/media-replace-flow/test/index.js +13 -11
  326. package/src/components/provider/index.js +11 -10
  327. package/src/components/provider/test/use-block-sync.js +1 -0
  328. package/src/components/provider/with-registry-provider.js +1 -1
  329. package/src/components/rich-text/index.js +1 -1
  330. package/src/components/use-block-commands/index.js +0 -41
  331. package/src/components/use-block-display-information/index.js +1 -5
  332. package/src/components/writing-flow/index.js +2 -0
  333. package/src/components/writing-flow/use-arrow-nav.js +5 -0
  334. package/src/components/writing-flow/use-drag-selection.js +7 -1
  335. package/src/components/writing-flow/use-preview-mode-nav.js +102 -0
  336. package/src/hooks/block-renaming.js +5 -2
  337. package/src/hooks/cross-origin-isolation.js +19 -18
  338. package/src/hooks/custom-css.js +176 -0
  339. package/src/hooks/fit-text.js +20 -5
  340. package/src/hooks/grid-visualizer.js +15 -14
  341. package/src/hooks/index.js +4 -2
  342. package/src/hooks/layout.js +55 -43
  343. package/src/hooks/list-view.js +10 -6
  344. package/src/hooks/test/align.js +1 -0
  345. package/src/hooks/test/allowed-blocks.js +8 -0
  346. package/src/hooks/test/auto-inspector-controls.js +4 -0
  347. package/src/hooks/test/font-size.js +1 -0
  348. package/src/hooks/test/metadata.js +4 -0
  349. package/src/hooks/test/text-align.js +1 -0
  350. package/src/hooks/utils.js +123 -119
  351. package/src/layouts/grid.js +19 -3
  352. package/src/layouts/test/grid.js +1 -1
  353. package/src/store/actions.js +7 -0
  354. package/src/store/defaults.js +4 -0
  355. package/src/store/private-selectors.js +94 -64
  356. package/src/store/reducer.js +11 -18
  357. package/src/store/selectors.js +25 -0
  358. package/src/store/test/actions.js +7 -0
  359. package/src/store/test/private-selectors.js +116 -119
  360. package/src/store/test/reducer.js +262 -266
  361. package/src/store/test/registry-selectors.js +2 -0
  362. package/src/store/test/selectors.js +19 -0
  363. package/src/utils/fit-text-utils.js +31 -5
  364. package/build/components/block-visibility/block-visibility-info.cjs +0 -63
  365. package/build/components/block-visibility/block-visibility-info.cjs.map +0 -7
  366. package/build/components/block-visibility/menu-item.cjs +0 -109
  367. package/build/components/block-visibility/menu-item.cjs.map +0 -7
  368. package/build/components/block-visibility/toolbar.cjs +0 -92
  369. package/build/components/block-visibility/toolbar.cjs.map +0 -7
  370. package/build/components/content-lock/index.cjs +0 -31
  371. package/build/components/content-lock/index.cjs.map +0 -7
  372. package/build/components/content-lock/modify-content-lock-menu-item.cjs +0 -70
  373. package/build/components/content-lock/modify-content-lock-menu-item.cjs.map +0 -7
  374. package/build/hooks/content-lock-ui.cjs +0 -68
  375. package/build/hooks/content-lock-ui.cjs.map +0 -7
  376. package/build-module/components/block-visibility/block-visibility-info.mjs +0 -47
  377. package/build-module/components/block-visibility/block-visibility-info.mjs.map +0 -7
  378. package/build-module/components/block-visibility/menu-item.mjs +0 -88
  379. package/build-module/components/block-visibility/menu-item.mjs.map +0 -7
  380. package/build-module/components/block-visibility/toolbar.mjs +0 -71
  381. package/build-module/components/block-visibility/toolbar.mjs.map +0 -7
  382. package/build-module/components/content-lock/index.mjs +0 -6
  383. package/build-module/components/content-lock/index.mjs.map +0 -7
  384. package/build-module/components/content-lock/modify-content-lock-menu-item.mjs +0 -45
  385. package/build-module/components/content-lock/modify-content-lock-menu-item.mjs.map +0 -7
  386. package/build-module/hooks/content-lock-ui.mjs +0 -47
  387. package/build-module/hooks/content-lock-ui.mjs.map +0 -7
  388. package/src/components/block-visibility/block-visibility-info.js +0 -62
  389. package/src/components/block-visibility/menu-item.js +0 -96
  390. package/src/components/block-visibility/toolbar.js +0 -88
  391. package/src/components/content-lock/index.js +0 -1
  392. package/src/components/content-lock/modify-content-lock-menu-item.js +0 -67
  393. package/src/hooks/content-lock-ui.js +0 -76
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // packages/block-editor/src/hooks/content-lock-ui.js
21
- var content_lock_ui_exports = {};
22
- __export(content_lock_ui_exports, {
23
- default: () => content_lock_ui_default
24
- });
25
- module.exports = __toCommonJS(content_lock_ui_exports);
26
- var import_components = require("@wordpress/components");
27
- var import_data = require("@wordpress/data");
28
- var import_i18n = require("@wordpress/i18n");
29
- var import_element = require("@wordpress/element");
30
- var import_store = require("../store/index.cjs");
31
- var import_components2 = require("../components/index.cjs");
32
- var import_lock_unlock = require("../lock-unlock.cjs");
33
- var import_jsx_runtime = require("react/jsx-runtime");
34
- function ContentLockControlsPure({ clientId }) {
35
- const { templateLock, isLockedByParent, isEditingContentOnlySection } = (0, import_data.useSelect)(
36
- (select) => {
37
- const {
38
- getContentLockingParent,
39
- getTemplateLock,
40
- getEditedContentOnlySection
41
- } = (0, import_lock_unlock.unlock)(select(import_store.store));
42
- return {
43
- templateLock: getTemplateLock(clientId),
44
- isLockedByParent: !!getContentLockingParent(clientId),
45
- isEditingContentOnlySection: getEditedContentOnlySection() === clientId
46
- };
47
- },
48
- [clientId]
49
- );
50
- const { stopEditingContentOnlySection } = (0, import_lock_unlock.unlock)(
51
- (0, import_data.useDispatch)(import_store.store)
52
- );
53
- const isContentLocked = !isLockedByParent && templateLock === "contentOnly";
54
- const stopEditingAsBlockCallback = (0, import_element.useCallback)(() => {
55
- stopEditingContentOnlySection();
56
- }, [stopEditingContentOnlySection]);
57
- if (window?.__experimentalContentOnlyPatternInsertion || !isContentLocked && !isEditingContentOnlySection) {
58
- return null;
59
- }
60
- return isEditingContentOnlySection && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components2.BlockControls, { group: "other", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.ToolbarButton, { onClick: stopEditingAsBlockCallback, children: (0, import_i18n.__)("Done") }) });
61
- }
62
- var content_lock_ui_default = {
63
- edit: ContentLockControlsPure,
64
- hasSupport() {
65
- return true;
66
- }
67
- };
68
- //# sourceMappingURL=content-lock-ui.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/hooks/content-lock-ui.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { BlockControls } from '../components';\nimport { unlock } from '../lock-unlock';\n\n// The implementation of content locking is mainly in this file, although the mechanism\n// to stop editing a content only section when an outside block is selected is in the component\n// `StopEditingContentOnlySectionOnOutsideSelect` at block-editor/src/components/block-list/index.js.\n// Besides the components on this file and the file referenced above the implementation\n// also includes artifacts on the store (actions, reducers, and selector).\n\nfunction ContentLockControlsPure( { clientId } ) {\n\tconst { templateLock, isLockedByParent, isEditingContentOnlySection } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetContentLockingParent,\n\t\t\t\t\tgetTemplateLock,\n\t\t\t\t\tgetEditedContentOnlySection,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\t\treturn {\n\t\t\t\t\ttemplateLock: getTemplateLock( clientId ),\n\t\t\t\t\tisLockedByParent: !! getContentLockingParent( clientId ),\n\t\t\t\t\tisEditingContentOnlySection:\n\t\t\t\t\t\tgetEditedContentOnlySection() === clientId,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\n\tconst { stopEditingContentOnlySection } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tconst isContentLocked =\n\t\t! isLockedByParent && templateLock === 'contentOnly';\n\n\tconst stopEditingAsBlockCallback = useCallback( () => {\n\t\tstopEditingContentOnlySection();\n\t}, [ stopEditingContentOnlySection ] );\n\n\t// Hide the Done button when the content only pattern insertion experiment is active.\n\t// This is replaced by an alternative UI in the experiment.\n\tif (\n\t\twindow?.__experimentalContentOnlyPatternInsertion ||\n\t\t( ! isContentLocked && ! isEditingContentOnlySection )\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tisEditingContentOnlySection && (\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<ToolbarButton onClick={ stopEditingAsBlockCallback }>\n\t\t\t\t\t{ __( 'Done' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</BlockControls>\n\t\t)\n\t);\n}\n\nexport default {\n\tedit: ContentLockControlsPure,\n\thasSupport() {\n\t\treturn true;\n\t},\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAA8B;AAC9B,kBAAuC;AACvC,kBAAmB;AACnB,qBAA4B;AAK5B,mBAA0C;AAC1C,IAAAA,qBAA8B;AAC9B,yBAAuB;AAiDnB;AAzCJ,SAAS,wBAAyB,EAAE,SAAS,GAAI;AAChD,QAAM,EAAE,cAAc,kBAAkB,4BAA4B,QACnE;AAAA,IACC,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,QAAI,2BAAQ,OAAQ,aAAAC,KAAiB,CAAE;AACvC,aAAO;AAAA,QACN,cAAc,gBAAiB,QAAS;AAAA,QACxC,kBAAkB,CAAC,CAAE,wBAAyB,QAAS;AAAA,QACvD,6BACC,4BAA4B,MAAM;AAAA,MACpC;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAED,QAAM,EAAE,8BAA8B,QAAI;AAAA,QACzC,yBAAa,aAAAA,KAAiB;AAAA,EAC/B;AACA,QAAM,kBACL,CAAE,oBAAoB,iBAAiB;AAExC,QAAM,iCAA6B,4BAAa,MAAM;AACrD,kCAA8B;AAAA,EAC/B,GAAG,CAAE,6BAA8B,CAAE;AAIrC,MACC,QAAQ,6CACN,CAAE,mBAAmB,CAAE,6BACxB;AACD,WAAO;AAAA,EACR;AAEA,SACC,+BACC,4CAAC,oCAAc,OAAM,SACpB,sDAAC,mCAAc,SAAU,4BACtB,8BAAI,MAAO,GACd,GACD;AAGH;AAEA,IAAO,0BAAQ;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AACZ,WAAO;AAAA,EACR;AACD;",
6
- "names": ["import_components", "blockEditorStore"]
7
- }
@@ -1,47 +0,0 @@
1
- // packages/block-editor/src/components/block-visibility/block-visibility-info.js
2
- import {
3
- Icon,
4
- __experimentalText as Text,
5
- __experimentalHStack as HStack,
6
- privateApis as componentsPrivateApis
7
- } from "@wordpress/components";
8
- import { useSelect } from "@wordpress/data";
9
- import { __ } from "@wordpress/i18n";
10
- import { unseen } from "@wordpress/icons";
11
- import { unlock } from "../../lock-unlock.mjs";
12
- import { store as blockEditorStore } from "../../store/index.mjs";
13
- import { jsx, jsxs } from "react/jsx-runtime";
14
- var { Badge } = unlock(componentsPrivateApis);
15
- function BlockVisibilityInfo({ clientId }) {
16
- const { isBlockHidden, hasHiddenParent } = useSelect(
17
- (select) => {
18
- if (!clientId) {
19
- return { isBlockHidden: false, hasHiddenParent: false };
20
- }
21
- const { isBlockHidden: _isBlockHidden, getBlockParents } = unlock(
22
- select(blockEditorStore)
23
- );
24
- const blockHidden = _isBlockHidden(clientId);
25
- const parents = getBlockParents(clientId);
26
- const parentHidden = parents.some(
27
- (parentId) => _isBlockHidden(parentId)
28
- );
29
- return {
30
- isBlockHidden: blockHidden,
31
- hasHiddenParent: parentHidden
32
- };
33
- },
34
- [clientId]
35
- );
36
- if (!(isBlockHidden || hasHiddenParent)) {
37
- return null;
38
- }
39
- return /* @__PURE__ */ jsx(Badge, { className: "block-editor-block-visibility-info", children: /* @__PURE__ */ jsxs(HStack, { spacing: 2, justify: "start", children: [
40
- /* @__PURE__ */ jsx(Icon, { icon: unseen }),
41
- /* @__PURE__ */ jsx(Text, { children: isBlockHidden ? __("Block is hidden") : __("Parent block is hidden") })
42
- ] }) });
43
- }
44
- export {
45
- BlockVisibilityInfo as default
46
- };
47
- //# sourceMappingURL=block-visibility-info.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/block-visibility/block-visibility-info.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { unseen } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as blockEditorStore } from '../../store';\n\nconst { Badge } = unlock( componentsPrivateApis );\n\nexport default function BlockVisibilityInfo( { clientId } ) {\n\tconst { isBlockHidden, hasHiddenParent } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn { isBlockHidden: false, hasHiddenParent: false };\n\t\t\t}\n\t\t\tconst { isBlockHidden: _isBlockHidden, getBlockParents } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\n\t\t\tconst blockHidden = _isBlockHidden( clientId );\n\t\t\tconst parents = getBlockParents( clientId );\n\t\t\tconst parentHidden = parents.some( ( parentId ) =>\n\t\t\t\t_isBlockHidden( parentId )\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tisBlockHidden: blockHidden,\n\t\t\t\thasHiddenParent: parentHidden,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tif ( ! ( isBlockHidden || hasHiddenParent ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Badge className=\"block-editor-block-visibility-info\">\n\t\t\t<HStack spacing={ 2 } justify=\"start\">\n\t\t\t\t<Icon icon={ unseen } />\n\t\t\t\t<Text>\n\t\t\t\t\t{ isBlockHidden\n\t\t\t\t\t\t? __( 'Block is hidden' )\n\t\t\t\t\t\t: __( 'Parent block is hidden' ) }\n\t\t\t\t</Text>\n\t\t\t</HStack>\n\t\t</Badge>\n\t);\n}\n"],
5
- "mappings": ";AAGA;AAAA,EACC;AAAA,EACA,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,eAAe;AAAA,OACT;AACP,SAAS,iBAAiB;AAC1B,SAAS,UAAU;AACnB,SAAS,cAAc;AAKvB,SAAS,cAAc;AACvB,SAAS,SAAS,wBAAwB;AAkCvC,SACC,KADD;AAhCH,IAAM,EAAE,MAAM,IAAI,OAAQ,qBAAsB;AAEjC,SAAR,oBAAsC,EAAE,SAAS,GAAI;AAC3D,QAAM,EAAE,eAAe,gBAAgB,IAAI;AAAA,IAC1C,CAAE,WAAY;AACb,UAAK,CAAE,UAAW;AACjB,eAAO,EAAE,eAAe,OAAO,iBAAiB,MAAM;AAAA,MACvD;AACA,YAAM,EAAE,eAAe,gBAAgB,gBAAgB,IAAI;AAAA,QAC1D,OAAQ,gBAAiB;AAAA,MAC1B;AAEA,YAAM,cAAc,eAAgB,QAAS;AAC7C,YAAM,UAAU,gBAAiB,QAAS;AAC1C,YAAM,eAAe,QAAQ;AAAA,QAAM,CAAE,aACpC,eAAgB,QAAS;AAAA,MAC1B;AAEA,aAAO;AAAA,QACN,eAAe;AAAA,QACf,iBAAiB;AAAA,MAClB;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,MAAK,EAAI,iBAAiB,kBAAoB;AAC7C,WAAO;AAAA,EACR;AAEA,SACC,oBAAC,SAAM,WAAU,sCAChB,+BAAC,UAAO,SAAU,GAAI,SAAQ,SAC7B;AAAA,wBAAC,QAAK,MAAO,QAAS;AAAA,IACtB,oBAAC,QACE,0BACC,GAAI,iBAAkB,IACtB,GAAI,wBAAyB,GACjC;AAAA,KACD,GACD;AAEF;",
6
- "names": []
7
- }
@@ -1,88 +0,0 @@
1
- // packages/block-editor/src/components/block-visibility/menu-item.js
2
- import { __, sprintf } from "@wordpress/i18n";
3
- import { MenuItem } from "@wordpress/components";
4
- import { seen, unseen } from "@wordpress/icons";
5
- import { useSelect, useDispatch } from "@wordpress/data";
6
- import { store as noticesStore } from "@wordpress/notices";
7
- import { store as keyboardShortcutsStore } from "@wordpress/keyboard-shortcuts";
8
- import { cleanEmptyObject } from "../../hooks/utils.mjs";
9
- import { store as blockEditorStore } from "../../store/index.mjs";
10
- import { jsx } from "react/jsx-runtime";
11
- function BlockVisibilityMenuItem({ clientIds }) {
12
- const { updateBlockAttributes } = useDispatch(blockEditorStore);
13
- const { createSuccessNotice } = useDispatch(noticesStore);
14
- const blocks = useSelect(
15
- (select) => {
16
- return select(blockEditorStore).getBlocksByClientId(clientIds);
17
- },
18
- [clientIds]
19
- );
20
- const listViewShortcut = useSelect((select) => {
21
- return select(keyboardShortcutsStore).getShortcutRepresentation(
22
- "core/editor/toggle-list-view"
23
- );
24
- }, []);
25
- const hasHiddenBlock = blocks.some(
26
- (block) => block.attributes.metadata?.blockVisibility === false
27
- );
28
- const toggleBlockVisibility = () => {
29
- const isHiding = !hasHiddenBlock;
30
- const attributesByClientId = Object.fromEntries(
31
- blocks?.map(({ clientId, attributes }) => [
32
- clientId,
33
- {
34
- metadata: cleanEmptyObject({
35
- ...attributes?.metadata,
36
- blockVisibility: isHiding ? false : void 0
37
- })
38
- }
39
- ])
40
- );
41
- updateBlockAttributes(clientIds, attributesByClientId, {
42
- uniqueByBlock: true
43
- });
44
- if (isHiding) {
45
- if (blocks.length > 1) {
46
- createSuccessNotice(
47
- sprintf(
48
- // translators: %s: The shortcut key to access the List View.
49
- __(
50
- "Blocks hidden. You can access them via the List View (%s)."
51
- ),
52
- listViewShortcut
53
- ),
54
- {
55
- id: "block-visibility-hidden",
56
- type: "snackbar"
57
- }
58
- );
59
- } else {
60
- createSuccessNotice(
61
- sprintf(
62
- // translators: %s: The shortcut key to access the List View.
63
- __(
64
- "Block hidden. You can access it via the List View (%s)."
65
- ),
66
- listViewShortcut
67
- ),
68
- {
69
- id: "block-visibility-hidden",
70
- type: "snackbar"
71
- }
72
- );
73
- }
74
- }
75
- };
76
- return /* @__PURE__ */ jsx(
77
- MenuItem,
78
- {
79
- icon: hasHiddenBlock ? seen : unseen,
80
- onClick: toggleBlockVisibility,
81
- children: hasHiddenBlock ? __("Show") : __("Hide")
82
- }
83
- );
84
- }
85
- export {
86
- BlockVisibilityMenuItem as default
87
- };
88
- //# sourceMappingURL=menu-item.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/block-visibility/menu-item.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { seen, unseen } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockVisibilityMenuItem( { clientIds } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst blocks = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).getBlocksByClientId( clientIds );\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst listViewShortcut = useSelect( ( select ) => {\n\t\treturn select( keyboardShortcutsStore ).getShortcutRepresentation(\n\t\t\t'core/editor/toggle-list-view'\n\t\t);\n\t}, [] );\n\n\tconst hasHiddenBlock = blocks.some(\n\t\t( block ) => block.attributes.metadata?.blockVisibility === false\n\t);\n\n\tconst toggleBlockVisibility = () => {\n\t\tconst isHiding = ! hasHiddenBlock;\n\n\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\tblocks?.map( ( { clientId, attributes } ) => [\n\t\t\t\tclientId,\n\t\t\t\t{\n\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\tblockVisibility: isHiding ? false : undefined,\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t] )\n\t\t);\n\t\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\n\n\t\tif ( isHiding ) {\n\t\t\tif ( blocks.length > 1 ) {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Blocks hidden. You can access them via the List View (%s).'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'block-visibility-hidden',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Block hidden. You can access it via the List View (%s).'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'block-visibility-hidden',\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<MenuItem\n\t\t\ticon={ hasHiddenBlock ? seen : unseen }\n\t\t\tonClick={ toggleBlockVisibility }\n\t\t>\n\t\t\t{ hasHiddenBlock ? __( 'Show' ) : __( 'Hide' ) }\n\t\t</MenuItem>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,IAAI,eAAe;AAC5B,SAAS,gBAAgB;AACzB,SAAS,MAAM,cAAc;AAC7B,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,oBAAoB;AACtC,SAAS,SAAS,8BAA8B;AAKhD,SAAS,wBAAwB;AACjC,SAAS,SAAS,wBAAwB;AA0ExC;AAxEa,SAAR,wBAA0C,EAAE,UAAU,GAAI;AAChE,QAAM,EAAE,sBAAsB,IAAI,YAAa,gBAAiB;AAChE,QAAM,EAAE,oBAAoB,IAAI,YAAa,YAAa;AAC1D,QAAM,SAAS;AAAA,IACd,CAAE,WAAY;AACb,aAAO,OAAQ,gBAAiB,EAAE,oBAAqB,SAAU;AAAA,IAClE;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,QAAM,mBAAmB,UAAW,CAAE,WAAY;AACjD,WAAO,OAAQ,sBAAuB,EAAE;AAAA,MACvC;AAAA,IACD;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,iBAAiB,OAAO;AAAA,IAC7B,CAAE,UAAW,MAAM,WAAW,UAAU,oBAAoB;AAAA,EAC7D;AAEA,QAAM,wBAAwB,MAAM;AACnC,UAAM,WAAW,CAAE;AAEnB,UAAM,uBAAuB,OAAO;AAAA,MACnC,QAAQ,IAAK,CAAE,EAAE,UAAU,WAAW,MAAO;AAAA,QAC5C;AAAA,QACA;AAAA,UACC,UAAU,iBAAkB;AAAA,YAC3B,GAAG,YAAY;AAAA,YACf,iBAAiB,WAAW,QAAQ;AAAA,UACrC,CAAE;AAAA,QACH;AAAA,MACD,CAAE;AAAA,IACH;AACA,0BAAuB,WAAW,sBAAsB;AAAA,MACvD,eAAe;AAAA,IAChB,CAAE;AAEF,QAAK,UAAW;AACf,UAAK,OAAO,SAAS,GAAI;AACxB;AAAA,UACC;AAAA;AAAA,YAEC;AAAA,cACC;AAAA,YACD;AAAA,YACA;AAAA,UACD;AAAA,UACA;AAAA,YACC,IAAI;AAAA,YACJ,MAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD,OAAO;AACN;AAAA,UACC;AAAA;AAAA,YAEC;AAAA,cACC;AAAA,YACD;AAAA,YACA;AAAA,UACD;AAAA,UACA;AAAA,YACC,IAAI;AAAA,YACJ,MAAM;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO,iBAAiB,OAAO;AAAA,MAC/B,SAAU;AAAA,MAER,2BAAiB,GAAI,MAAO,IAAI,GAAI,MAAO;AAAA;AAAA,EAC9C;AAEF;",
6
- "names": []
7
- }
@@ -1,71 +0,0 @@
1
- // packages/block-editor/src/components/block-visibility/toolbar.js
2
- import { __ } from "@wordpress/i18n";
3
- import { ToolbarButton, ToolbarGroup } from "@wordpress/components";
4
- import { useRef, useEffect } from "@wordpress/element";
5
- import { seen, unseen } from "@wordpress/icons";
6
- import { useSelect, useDispatch } from "@wordpress/data";
7
- import { hasBlockSupport } from "@wordpress/blocks";
8
- import { store as blockEditorStore } from "../../store/index.mjs";
9
- import { cleanEmptyObject } from "../../hooks/utils.mjs";
10
- import { Fragment, jsx } from "react/jsx-runtime";
11
- function BlockVisibilityToolbar({ clientIds }) {
12
- const { blocks, canToggleBlockVisibility } = useSelect(
13
- (select) => {
14
- const { getBlockName, getBlocksByClientId } = select(blockEditorStore);
15
- const _blocks = getBlocksByClientId(clientIds);
16
- return {
17
- blocks: _blocks,
18
- canToggleBlockVisibility: _blocks.every(
19
- ({ clientId }) => hasBlockSupport(
20
- getBlockName(clientId),
21
- "visibility",
22
- true
23
- )
24
- )
25
- };
26
- },
27
- [clientIds]
28
- );
29
- const hasHiddenBlock = blocks.some(
30
- (block) => block.attributes.metadata?.blockVisibility === false
31
- );
32
- const hasBlockVisibilityButtonShownRef = useRef(false);
33
- const { updateBlockAttributes } = useDispatch(blockEditorStore);
34
- useEffect(() => {
35
- if (hasHiddenBlock) {
36
- hasBlockVisibilityButtonShownRef.current = true;
37
- }
38
- }, [hasHiddenBlock]);
39
- if (!hasHiddenBlock && !hasBlockVisibilityButtonShownRef.current) {
40
- return null;
41
- }
42
- const toggleBlockVisibility = () => {
43
- const attributesByClientId = Object.fromEntries(
44
- blocks?.map(({ clientId, attributes }) => [
45
- clientId,
46
- {
47
- metadata: cleanEmptyObject({
48
- ...attributes?.metadata,
49
- blockVisibility: hasHiddenBlock ? void 0 : false
50
- })
51
- }
52
- ])
53
- );
54
- updateBlockAttributes(clientIds, attributesByClientId, {
55
- uniqueByBlock: true
56
- });
57
- };
58
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(ToolbarGroup, { children: /* @__PURE__ */ jsx(
59
- ToolbarButton,
60
- {
61
- disabled: !canToggleBlockVisibility,
62
- icon: hasHiddenBlock ? unseen : seen,
63
- label: hasHiddenBlock ? __("Hidden") : __("Visible"),
64
- onClick: toggleBlockVisibility
65
- }
66
- ) }) });
67
- }
68
- export {
69
- BlockVisibilityToolbar as default
70
- };
71
- //# sourceMappingURL=toolbar.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/block-visibility/toolbar.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { seen, unseen } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { hasBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\n\nexport default function BlockVisibilityToolbar( { clientIds } ) {\n\tconst { blocks, canToggleBlockVisibility } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\treturn {\n\t\t\t\tblocks: _blocks,\n\t\t\t\tcanToggleBlockVisibility: _blocks.every( ( { clientId } ) =>\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'visibility',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst hasHiddenBlock = blocks.some(\n\t\t( block ) => block.attributes.metadata?.blockVisibility === false\n\t);\n\n\tconst hasBlockVisibilityButtonShownRef = useRef( false );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// If the block visibility button has been shown, we don't want to\n\t// remove it from the toolbar until the toolbar is rendered again\n\t// without it. Removing it beforehand can cause focus loss issues.\n\t// It needs to return focus from whence it came, and to do that,\n\t// we need to leave the button in the toolbar.\n\tuseEffect( () => {\n\t\tif ( hasHiddenBlock ) {\n\t\t\thasBlockVisibilityButtonShownRef.current = true;\n\t\t}\n\t}, [ hasHiddenBlock ] );\n\n\tif ( ! hasHiddenBlock && ! hasBlockVisibilityButtonShownRef.current ) {\n\t\treturn null;\n\t}\n\n\tconst toggleBlockVisibility = () => {\n\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\tblocks?.map( ( { clientId, attributes } ) => [\n\t\t\t\tclientId,\n\t\t\t\t{\n\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\tblockVisibility: hasHiddenBlock ? undefined : false,\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t] )\n\t\t);\n\t\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled={ ! canToggleBlockVisibility }\n\t\t\t\t\ticon={ hasHiddenBlock ? unseen : seen }\n\t\t\t\t\tlabel={ hasHiddenBlock ? __( 'Hidden' ) : __( 'Visible' ) }\n\t\t\t\t\tonClick={ toggleBlockVisibility }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,eAAe,oBAAoB;AAC5C,SAAS,QAAQ,iBAAiB;AAClC,SAAS,MAAM,cAAc;AAC7B,SAAS,WAAW,mBAAmB;AACvC,SAAS,uBAAuB;AAKhC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,wBAAwB;AA8D/B,mBAEE,WAFF;AA5Da,SAAR,uBAAyC,EAAE,UAAU,GAAI;AAC/D,QAAM,EAAE,QAAQ,yBAAyB,IAAI;AAAA,IAC5C,CAAE,WAAY;AACb,YAAM,EAAE,cAAc,oBAAoB,IACzC,OAAQ,gBAAiB;AAC1B,YAAM,UAAU,oBAAqB,SAAU;AAC/C,aAAO;AAAA,QACN,QAAQ;AAAA,QACR,0BAA0B,QAAQ;AAAA,UAAO,CAAE,EAAE,SAAS,MACrD;AAAA,YACC,aAAc,QAAS;AAAA,YACvB;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AAEA,QAAM,iBAAiB,OAAO;AAAA,IAC7B,CAAE,UAAW,MAAM,WAAW,UAAU,oBAAoB;AAAA,EAC7D;AAEA,QAAM,mCAAmC,OAAQ,KAAM;AACvD,QAAM,EAAE,sBAAsB,IAAI,YAAa,gBAAiB;AAOhE,YAAW,MAAM;AAChB,QAAK,gBAAiB;AACrB,uCAAiC,UAAU;AAAA,IAC5C;AAAA,EACD,GAAG,CAAE,cAAe,CAAE;AAEtB,MAAK,CAAE,kBAAkB,CAAE,iCAAiC,SAAU;AACrE,WAAO;AAAA,EACR;AAEA,QAAM,wBAAwB,MAAM;AACnC,UAAM,uBAAuB,OAAO;AAAA,MACnC,QAAQ,IAAK,CAAE,EAAE,UAAU,WAAW,MAAO;AAAA,QAC5C;AAAA,QACA;AAAA,UACC,UAAU,iBAAkB;AAAA,YAC3B,GAAG,YAAY;AAAA,YACf,iBAAiB,iBAAiB,SAAY;AAAA,UAC/C,CAAE;AAAA,QACH;AAAA,MACD,CAAE;AAAA,IACH;AACA,0BAAuB,WAAW,sBAAsB;AAAA,MACvD,eAAe;AAAA,IAChB,CAAE;AAAA,EACH;AAEA,SACC,gCACC,8BAAC,gBACA;AAAA,IAAC;AAAA;AAAA,MACA,UAAW,CAAE;AAAA,MACb,MAAO,iBAAiB,SAAS;AAAA,MACjC,OAAQ,iBAAiB,GAAI,QAAS,IAAI,GAAI,SAAU;AAAA,MACxD,SAAU;AAAA;AAAA,EACX,GACD,GACD;AAEF;",
6
- "names": []
7
- }
@@ -1,6 +0,0 @@
1
- // packages/block-editor/src/components/content-lock/index.js
2
- import { ModifyContentOnlySectionMenuItem } from "./modify-content-lock-menu-item.mjs";
3
- export {
4
- ModifyContentOnlySectionMenuItem
5
- };
6
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/content-lock/index.js"],
4
- "sourcesContent": ["export { ModifyContentOnlySectionMenuItem } from './modify-content-lock-menu-item';\n"],
5
- "mappings": ";AAAA,SAAS,wCAAwC;",
6
- "names": []
7
- }
@@ -1,45 +0,0 @@
1
- // packages/block-editor/src/components/content-lock/modify-content-lock-menu-item.js
2
- import { MenuItem } from "@wordpress/components";
3
- import { useDispatch, useSelect } from "@wordpress/data";
4
- import { _x } from "@wordpress/i18n";
5
- import { store as blockEditorStore } from "../../store/index.mjs";
6
- import { unlock } from "../../lock-unlock.mjs";
7
- import { jsx } from "react/jsx-runtime";
8
- function ModifyContentOnlySectionMenuItem({ clientId, onClose }) {
9
- const { templateLock, isLockedByParent, isEditingContentOnlySection } = useSelect(
10
- (select) => {
11
- const {
12
- getContentLockingParent,
13
- getTemplateLock,
14
- getEditedContentOnlySection
15
- } = unlock(select(blockEditorStore));
16
- return {
17
- templateLock: getTemplateLock(clientId),
18
- isLockedByParent: !!getContentLockingParent(clientId),
19
- isEditingContentOnlySection: getEditedContentOnlySection() === clientId
20
- };
21
- },
22
- [clientId]
23
- );
24
- const blockEditorActions = useDispatch(blockEditorStore);
25
- const isContentLocked = !isLockedByParent && templateLock === "contentOnly";
26
- if (window?.__experimentalContentOnlyPatternInsertion || !isContentLocked && !isEditingContentOnlySection) {
27
- return null;
28
- }
29
- const { editContentOnlySection } = unlock(blockEditorActions);
30
- const showContentOnlyModifyButton = !isEditingContentOnlySection && isContentLocked;
31
- return showContentOnlyModifyButton && /* @__PURE__ */ jsx(
32
- MenuItem,
33
- {
34
- onClick: () => {
35
- editContentOnlySection(clientId);
36
- onClose();
37
- },
38
- children: _x("Modify", "Unlock content locked blocks")
39
- }
40
- );
41
- }
42
- export {
43
- ModifyContentOnlySectionMenuItem
44
- };
45
- //# sourceMappingURL=modify-content-lock-menu-item.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/content-lock/modify-content-lock-menu-item.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n// The implementation of content locking is mainly in this file, although the mechanism\n// to stop editing a content only section when an outside block is selected is in the component\n// `StopEditingContentOnlySectionOnOutsideSelect` at block-editor/src/components/block-list/index.js.\n// Besides the components on this file and the file referenced above the implementation\n// also includes artifacts on the store (actions, reducers, and selector).\n\nexport function ModifyContentOnlySectionMenuItem( { clientId, onClose } ) {\n\tconst { templateLock, isLockedByParent, isEditingContentOnlySection } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetContentLockingParent,\n\t\t\t\t\tgetTemplateLock,\n\t\t\t\t\tgetEditedContentOnlySection,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\t\treturn {\n\t\t\t\t\ttemplateLock: getTemplateLock( clientId ),\n\t\t\t\t\tisLockedByParent: !! getContentLockingParent( clientId ),\n\t\t\t\t\tisEditingContentOnlySection:\n\t\t\t\t\t\tgetEditedContentOnlySection() === clientId,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\tconst blockEditorActions = useDispatch( blockEditorStore );\n\tconst isContentLocked =\n\t\t! isLockedByParent && templateLock === 'contentOnly';\n\n\t// Hide the Modify button when the content only pattern insertion experiment is active.\n\t// This is replaced by an alternative UI in the experiment.\n\tif (\n\t\twindow?.__experimentalContentOnlyPatternInsertion ||\n\t\t( ! isContentLocked && ! isEditingContentOnlySection )\n\t) {\n\t\treturn null;\n\t}\n\n\tconst { editContentOnlySection } = unlock( blockEditorActions );\n\tconst showContentOnlyModifyButton =\n\t\t! isEditingContentOnlySection && isContentLocked;\n\n\treturn (\n\t\tshowContentOnlyModifyButton && (\n\t\t\t<MenuItem\n\t\t\t\tonClick={ () => {\n\t\t\t\t\teditContentOnlySection( clientId );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ _x( 'Modify', 'Unlock content locked blocks' ) }\n\t\t\t</MenuItem>\n\t\t)\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,gBAAgB;AACzB,SAAS,aAAa,iBAAiB;AACvC,SAAS,UAAU;AAKnB,SAAS,SAAS,wBAAwB;AAC1C,SAAS,cAAc;AA6CpB;AArCI,SAAS,iCAAkC,EAAE,UAAU,QAAQ,GAAI;AACzE,QAAM,EAAE,cAAc,kBAAkB,4BAA4B,IACnE;AAAA,IACC,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,OAAQ,gBAAiB,CAAE;AACvC,aAAO;AAAA,QACN,cAAc,gBAAiB,QAAS;AAAA,QACxC,kBAAkB,CAAC,CAAE,wBAAyB,QAAS;AAAA,QACvD,6BACC,4BAA4B,MAAM;AAAA,MACpC;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACD,QAAM,qBAAqB,YAAa,gBAAiB;AACzD,QAAM,kBACL,CAAE,oBAAoB,iBAAiB;AAIxC,MACC,QAAQ,6CACN,CAAE,mBAAmB,CAAE,6BACxB;AACD,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,uBAAuB,IAAI,OAAQ,kBAAmB;AAC9D,QAAM,8BACL,CAAE,+BAA+B;AAElC,SACC,+BACC;AAAA,IAAC;AAAA;AAAA,MACA,SAAU,MAAM;AACf,+BAAwB,QAAS;AACjC,gBAAQ;AAAA,MACT;AAAA,MAEE,aAAI,UAAU,8BAA+B;AAAA;AAAA,EAChD;AAGH;",
6
- "names": []
7
- }
@@ -1,47 +0,0 @@
1
- // packages/block-editor/src/hooks/content-lock-ui.js
2
- import { ToolbarButton } from "@wordpress/components";
3
- import { useDispatch, useSelect } from "@wordpress/data";
4
- import { __ } from "@wordpress/i18n";
5
- import { useCallback } from "@wordpress/element";
6
- import { store as blockEditorStore } from "../store/index.mjs";
7
- import { BlockControls } from "../components/index.mjs";
8
- import { unlock } from "../lock-unlock.mjs";
9
- import { jsx } from "react/jsx-runtime";
10
- function ContentLockControlsPure({ clientId }) {
11
- const { templateLock, isLockedByParent, isEditingContentOnlySection } = useSelect(
12
- (select) => {
13
- const {
14
- getContentLockingParent,
15
- getTemplateLock,
16
- getEditedContentOnlySection
17
- } = unlock(select(blockEditorStore));
18
- return {
19
- templateLock: getTemplateLock(clientId),
20
- isLockedByParent: !!getContentLockingParent(clientId),
21
- isEditingContentOnlySection: getEditedContentOnlySection() === clientId
22
- };
23
- },
24
- [clientId]
25
- );
26
- const { stopEditingContentOnlySection } = unlock(
27
- useDispatch(blockEditorStore)
28
- );
29
- const isContentLocked = !isLockedByParent && templateLock === "contentOnly";
30
- const stopEditingAsBlockCallback = useCallback(() => {
31
- stopEditingContentOnlySection();
32
- }, [stopEditingContentOnlySection]);
33
- if (window?.__experimentalContentOnlyPatternInsertion || !isContentLocked && !isEditingContentOnlySection) {
34
- return null;
35
- }
36
- return isEditingContentOnlySection && /* @__PURE__ */ jsx(BlockControls, { group: "other", children: /* @__PURE__ */ jsx(ToolbarButton, { onClick: stopEditingAsBlockCallback, children: __("Done") }) });
37
- }
38
- var content_lock_ui_default = {
39
- edit: ContentLockControlsPure,
40
- hasSupport() {
41
- return true;
42
- }
43
- };
44
- export {
45
- content_lock_ui_default as default
46
- };
47
- //# sourceMappingURL=content-lock-ui.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/hooks/content-lock-ui.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { BlockControls } from '../components';\nimport { unlock } from '../lock-unlock';\n\n// The implementation of content locking is mainly in this file, although the mechanism\n// to stop editing a content only section when an outside block is selected is in the component\n// `StopEditingContentOnlySectionOnOutsideSelect` at block-editor/src/components/block-list/index.js.\n// Besides the components on this file and the file referenced above the implementation\n// also includes artifacts on the store (actions, reducers, and selector).\n\nfunction ContentLockControlsPure( { clientId } ) {\n\tconst { templateLock, isLockedByParent, isEditingContentOnlySection } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetContentLockingParent,\n\t\t\t\t\tgetTemplateLock,\n\t\t\t\t\tgetEditedContentOnlySection,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\t\treturn {\n\t\t\t\t\ttemplateLock: getTemplateLock( clientId ),\n\t\t\t\t\tisLockedByParent: !! getContentLockingParent( clientId ),\n\t\t\t\t\tisEditingContentOnlySection:\n\t\t\t\t\t\tgetEditedContentOnlySection() === clientId,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\n\tconst { stopEditingContentOnlySection } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tconst isContentLocked =\n\t\t! isLockedByParent && templateLock === 'contentOnly';\n\n\tconst stopEditingAsBlockCallback = useCallback( () => {\n\t\tstopEditingContentOnlySection();\n\t}, [ stopEditingContentOnlySection ] );\n\n\t// Hide the Done button when the content only pattern insertion experiment is active.\n\t// This is replaced by an alternative UI in the experiment.\n\tif (\n\t\twindow?.__experimentalContentOnlyPatternInsertion ||\n\t\t( ! isContentLocked && ! isEditingContentOnlySection )\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tisEditingContentOnlySection && (\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<ToolbarButton onClick={ stopEditingAsBlockCallback }>\n\t\t\t\t\t{ __( 'Done' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</BlockControls>\n\t\t)\n\t);\n}\n\nexport default {\n\tedit: ContentLockControlsPure,\n\thasSupport() {\n\t\treturn true;\n\t},\n};\n"],
5
- "mappings": ";AAGA,SAAS,qBAAqB;AAC9B,SAAS,aAAa,iBAAiB;AACvC,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAK5B,SAAS,SAAS,wBAAwB;AAC1C,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AAiDnB;AAzCJ,SAAS,wBAAyB,EAAE,SAAS,GAAI;AAChD,QAAM,EAAE,cAAc,kBAAkB,4BAA4B,IACnE;AAAA,IACC,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,OAAQ,gBAAiB,CAAE;AACvC,aAAO;AAAA,QACN,cAAc,gBAAiB,QAAS;AAAA,QACxC,kBAAkB,CAAC,CAAE,wBAAyB,QAAS;AAAA,QACvD,6BACC,4BAA4B,MAAM;AAAA,MACpC;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAED,QAAM,EAAE,8BAA8B,IAAI;AAAA,IACzC,YAAa,gBAAiB;AAAA,EAC/B;AACA,QAAM,kBACL,CAAE,oBAAoB,iBAAiB;AAExC,QAAM,6BAA6B,YAAa,MAAM;AACrD,kCAA8B;AAAA,EAC/B,GAAG,CAAE,6BAA8B,CAAE;AAIrC,MACC,QAAQ,6CACN,CAAE,mBAAmB,CAAE,6BACxB;AACD,WAAO;AAAA,EACR;AAEA,SACC,+BACC,oBAAC,iBAAc,OAAM,SACpB,8BAAC,iBAAc,SAAU,4BACtB,aAAI,MAAO,GACd,GACD;AAGH;AAEA,IAAO,0BAAQ;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AACZ,WAAO;AAAA,EACR;AACD;",
6
- "names": []
7
- }
@@ -1,62 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- Icon,
6
- __experimentalText as Text,
7
- __experimentalHStack as HStack,
8
- privateApis as componentsPrivateApis,
9
- } from '@wordpress/components';
10
- import { useSelect } from '@wordpress/data';
11
- import { __ } from '@wordpress/i18n';
12
- import { unseen } from '@wordpress/icons';
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
- import { unlock } from '../../lock-unlock';
18
- import { store as blockEditorStore } from '../../store';
19
-
20
- const { Badge } = unlock( componentsPrivateApis );
21
-
22
- export default function BlockVisibilityInfo( { clientId } ) {
23
- const { isBlockHidden, hasHiddenParent } = useSelect(
24
- ( select ) => {
25
- if ( ! clientId ) {
26
- return { isBlockHidden: false, hasHiddenParent: false };
27
- }
28
- const { isBlockHidden: _isBlockHidden, getBlockParents } = unlock(
29
- select( blockEditorStore )
30
- );
31
-
32
- const blockHidden = _isBlockHidden( clientId );
33
- const parents = getBlockParents( clientId );
34
- const parentHidden = parents.some( ( parentId ) =>
35
- _isBlockHidden( parentId )
36
- );
37
-
38
- return {
39
- isBlockHidden: blockHidden,
40
- hasHiddenParent: parentHidden,
41
- };
42
- },
43
- [ clientId ]
44
- );
45
-
46
- if ( ! ( isBlockHidden || hasHiddenParent ) ) {
47
- return null;
48
- }
49
-
50
- return (
51
- <Badge className="block-editor-block-visibility-info">
52
- <HStack spacing={ 2 } justify="start">
53
- <Icon icon={ unseen } />
54
- <Text>
55
- { isBlockHidden
56
- ? __( 'Block is hidden' )
57
- : __( 'Parent block is hidden' ) }
58
- </Text>
59
- </HStack>
60
- </Badge>
61
- );
62
- }
@@ -1,96 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __, sprintf } from '@wordpress/i18n';
5
- import { MenuItem } from '@wordpress/components';
6
- import { seen, unseen } from '@wordpress/icons';
7
- import { useSelect, useDispatch } from '@wordpress/data';
8
- import { store as noticesStore } from '@wordpress/notices';
9
- import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { cleanEmptyObject } from '../../hooks/utils';
15
- import { store as blockEditorStore } from '../../store';
16
-
17
- export default function BlockVisibilityMenuItem( { clientIds } ) {
18
- const { updateBlockAttributes } = useDispatch( blockEditorStore );
19
- const { createSuccessNotice } = useDispatch( noticesStore );
20
- const blocks = useSelect(
21
- ( select ) => {
22
- return select( blockEditorStore ).getBlocksByClientId( clientIds );
23
- },
24
- [ clientIds ]
25
- );
26
-
27
- const listViewShortcut = useSelect( ( select ) => {
28
- return select( keyboardShortcutsStore ).getShortcutRepresentation(
29
- 'core/editor/toggle-list-view'
30
- );
31
- }, [] );
32
-
33
- const hasHiddenBlock = blocks.some(
34
- ( block ) => block.attributes.metadata?.blockVisibility === false
35
- );
36
-
37
- const toggleBlockVisibility = () => {
38
- const isHiding = ! hasHiddenBlock;
39
-
40
- const attributesByClientId = Object.fromEntries(
41
- blocks?.map( ( { clientId, attributes } ) => [
42
- clientId,
43
- {
44
- metadata: cleanEmptyObject( {
45
- ...attributes?.metadata,
46
- blockVisibility: isHiding ? false : undefined,
47
- } ),
48
- },
49
- ] )
50
- );
51
- updateBlockAttributes( clientIds, attributesByClientId, {
52
- uniqueByBlock: true,
53
- } );
54
-
55
- if ( isHiding ) {
56
- if ( blocks.length > 1 ) {
57
- createSuccessNotice(
58
- sprintf(
59
- // translators: %s: The shortcut key to access the List View.
60
- __(
61
- 'Blocks hidden. You can access them via the List View (%s).'
62
- ),
63
- listViewShortcut
64
- ),
65
- {
66
- id: 'block-visibility-hidden',
67
- type: 'snackbar',
68
- }
69
- );
70
- } else {
71
- createSuccessNotice(
72
- sprintf(
73
- // translators: %s: The shortcut key to access the List View.
74
- __(
75
- 'Block hidden. You can access it via the List View (%s).'
76
- ),
77
- listViewShortcut
78
- ),
79
- {
80
- id: 'block-visibility-hidden',
81
- type: 'snackbar',
82
- }
83
- );
84
- }
85
- }
86
- };
87
-
88
- return (
89
- <MenuItem
90
- icon={ hasHiddenBlock ? seen : unseen }
91
- onClick={ toggleBlockVisibility }
92
- >
93
- { hasHiddenBlock ? __( 'Show' ) : __( 'Hide' ) }
94
- </MenuItem>
95
- );
96
- }