@wordpress/block-editor 13.3.0 → 13.4.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 (311) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +0 -4
  3. package/build/components/alignment-control/ui.js +2 -2
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/ui.js +1 -1
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.native.js +1 -1
  8. package/build/components/block-alignment-control/ui.native.js.map +1 -1
  9. package/build/components/block-inspector/index.js +6 -3
  10. package/build/components/block-inspector/index.js.map +1 -1
  11. package/build/components/block-list/use-block-props/index.js +3 -1
  12. package/build/components/block-list/use-block-props/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-block-refs.js +9 -2
  14. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-is-hovered.js +25 -9
  16. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  17. package/build/components/block-list/use-in-between-inserter.js +3 -2
  18. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  19. package/build/components/block-lock/modal.js +2 -0
  20. package/build/components/block-lock/modal.js.map +1 -1
  21. package/build/components/block-removal-warning-modal/index.js +2 -0
  22. package/build/components/block-removal-warning-modal/index.js.map +1 -1
  23. package/build/components/block-switcher/index.js +1 -1
  24. package/build/components/block-switcher/index.js.map +1 -1
  25. package/build/components/block-switcher/pattern-transformations-menu.js +11 -12
  26. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  27. package/build/components/block-switcher/preview-block-popover.js +20 -17
  28. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  29. package/build/components/block-toolbar/shuffle.js +5 -2
  30. package/build/components/block-toolbar/shuffle.js.map +1 -1
  31. package/build/components/block-tools/use-show-block-tools.js +7 -8
  32. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  33. package/build/components/block-tools/zoom-out-mode-inserter-button.js +45 -0
  34. package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  35. package/build/components/block-tools/zoom-out-mode-inserters.js +27 -27
  36. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  37. package/build/components/block-tools/zoom-out-popover.js +2 -1
  38. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  39. package/build/components/block-tools/zoom-out-toolbar.js +1 -1
  40. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  41. package/build/components/date-format-picker/index.js +2 -11
  42. package/build/components/date-format-picker/index.js.map +1 -1
  43. package/build/components/default-block-appender/index.js +7 -4
  44. package/build/components/default-block-appender/index.js.map +1 -1
  45. package/build/components/font-appearance-control/index.js +2 -7
  46. package/build/components/font-appearance-control/index.js.map +1 -1
  47. package/build/components/global-styles/background-panel.js +8 -1
  48. package/build/components/global-styles/background-panel.js.map +1 -1
  49. package/build/components/global-styles/hooks.js +5 -1
  50. package/build/components/global-styles/hooks.js.map +1 -1
  51. package/build/components/global-styles/typography-panel.js +26 -43
  52. package/build/components/global-styles/typography-panel.js.map +1 -1
  53. package/build/components/global-styles/typography-utils.js +78 -7
  54. package/build/components/global-styles/typography-utils.js.map +1 -1
  55. package/build/components/global-styles/use-global-styles-output.js +24 -5
  56. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  57. package/build/components/grid/grid-item-movers.js +89 -44
  58. package/build/components/grid/grid-item-movers.js.map +1 -1
  59. package/build/components/grid/grid-visualizer.js +1 -1
  60. package/build/components/grid/grid-visualizer.js.map +1 -1
  61. package/build/components/grid/use-grid-layout-sync.js +40 -28
  62. package/build/components/grid/use-grid-layout-sync.js.map +1 -1
  63. package/build/components/index.js +1 -9
  64. package/build/components/index.js.map +1 -1
  65. package/build/components/inner-blocks/index.js +1 -1
  66. package/build/components/inner-blocks/index.js.map +1 -1
  67. package/build/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  68. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  69. package/build/components/inserter/media-tab/media-panel.js +1 -0
  70. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  71. package/build/components/inserter/menu.js +1 -1
  72. package/build/components/inserter/menu.js.map +1 -1
  73. package/build/components/inserter/preview-panel.js +20 -3
  74. package/build/components/inserter/preview-panel.js.map +1 -1
  75. package/build/components/inserter-draggable-blocks/index.js +10 -3
  76. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  77. package/build/components/inspector-controls-tabs/settings-tab.js +1 -2
  78. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  79. package/build/components/list-view/block-select-button.js +2 -6
  80. package/build/components/list-view/block-select-button.js.map +1 -1
  81. package/build/components/list-view/block.js +2 -2
  82. package/build/components/list-view/block.js.map +1 -1
  83. package/build/components/list-view/utils.js +3 -1
  84. package/build/components/list-view/utils.js.map +1 -1
  85. package/build/components/rich-text/format-toolbar/index.js +1 -1
  86. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  87. package/build/components/rich-text/index.js +1 -1
  88. package/build/components/rich-text/index.js.map +1 -1
  89. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  90. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  91. package/build/components/url-popover/image-url-input-ui.js +3 -3
  92. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  93. package/build/hooks/grid-visualizer.js +5 -8
  94. package/build/hooks/grid-visualizer.js.map +1 -1
  95. package/build/hooks/layout-child.js +9 -2
  96. package/build/hooks/layout-child.js.map +1 -1
  97. package/build/hooks/position.js +3 -7
  98. package/build/hooks/position.js.map +1 -1
  99. package/build/hooks/use-bindings-attributes.js +81 -50
  100. package/build/hooks/use-bindings-attributes.js.map +1 -1
  101. package/build/layouts/constrained.js +6 -2
  102. package/build/layouts/constrained.js.map +1 -1
  103. package/build/layouts/grid.js +2 -0
  104. package/build/layouts/grid.js.map +1 -1
  105. package/build/private-apis.js +0 -3
  106. package/build/private-apis.js.map +1 -1
  107. package/build/store/actions.js +18 -1
  108. package/build/store/actions.js.map +1 -1
  109. package/build/store/reducer.js +19 -1
  110. package/build/store/reducer.js.map +1 -1
  111. package/build/store/selectors.js +13 -1
  112. package/build/store/selectors.js.map +1 -1
  113. package/build-module/components/alignment-control/ui.js +2 -2
  114. package/build-module/components/alignment-control/ui.js.map +1 -1
  115. package/build-module/components/block-alignment-control/ui.js +1 -1
  116. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  117. package/build-module/components/block-alignment-control/ui.native.js +1 -1
  118. package/build-module/components/block-alignment-control/ui.native.js.map +1 -1
  119. package/build-module/components/block-inspector/index.js +6 -3
  120. package/build-module/components/block-inspector/index.js.map +1 -1
  121. package/build-module/components/block-list/use-block-props/index.js +3 -1
  122. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  123. package/build-module/components/block-list/use-block-props/use-block-refs.js +11 -4
  124. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  125. package/build-module/components/block-list/use-block-props/use-is-hovered.js +26 -9
  126. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  127. package/build-module/components/block-list/use-in-between-inserter.js +3 -2
  128. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  129. package/build-module/components/block-lock/modal.js +2 -0
  130. package/build-module/components/block-lock/modal.js.map +1 -1
  131. package/build-module/components/block-removal-warning-modal/index.js +2 -0
  132. package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
  133. package/build-module/components/block-switcher/index.js +1 -1
  134. package/build-module/components/block-switcher/index.js.map +1 -1
  135. package/build-module/components/block-switcher/pattern-transformations-menu.js +12 -13
  136. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  137. package/build-module/components/block-switcher/preview-block-popover.js +20 -17
  138. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  139. package/build-module/components/block-toolbar/shuffle.js +5 -2
  140. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  141. package/build-module/components/block-tools/use-show-block-tools.js +7 -8
  142. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  143. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +37 -0
  144. package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
  145. package/build-module/components/block-tools/zoom-out-mode-inserters.js +28 -28
  146. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  147. package/build-module/components/block-tools/zoom-out-popover.js +2 -1
  148. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  149. package/build-module/components/block-tools/zoom-out-toolbar.js +1 -1
  150. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  151. package/build-module/components/date-format-picker/index.js +4 -12
  152. package/build-module/components/date-format-picker/index.js.map +1 -1
  153. package/build-module/components/default-block-appender/index.js +7 -4
  154. package/build-module/components/default-block-appender/index.js.map +1 -1
  155. package/build-module/components/font-appearance-control/index.js +3 -6
  156. package/build-module/components/font-appearance-control/index.js.map +1 -1
  157. package/build-module/components/global-styles/background-panel.js +8 -1
  158. package/build-module/components/global-styles/background-panel.js.map +1 -1
  159. package/build-module/components/global-styles/hooks.js +5 -1
  160. package/build-module/components/global-styles/hooks.js.map +1 -1
  161. package/build-module/components/global-styles/typography-panel.js +27 -44
  162. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  163. package/build-module/components/global-styles/typography-utils.js +76 -7
  164. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  165. package/build-module/components/global-styles/use-global-styles-output.js +24 -5
  166. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  167. package/build-module/components/grid/grid-item-movers.js +92 -46
  168. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  169. package/build-module/components/grid/grid-visualizer.js +1 -1
  170. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  171. package/build-module/components/grid/use-grid-layout-sync.js +41 -29
  172. package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
  173. package/build-module/components/index.js +0 -5
  174. package/build-module/components/index.js.map +1 -1
  175. package/build-module/components/inner-blocks/index.js +1 -1
  176. package/build-module/components/inner-blocks/index.js.map +1 -1
  177. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
  178. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  179. package/build-module/components/inserter/media-tab/media-panel.js +1 -0
  180. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  181. package/build-module/components/inserter/menu.js +1 -1
  182. package/build-module/components/inserter/menu.js.map +1 -1
  183. package/build-module/components/inserter/preview-panel.js +20 -3
  184. package/build-module/components/inserter/preview-panel.js.map +1 -1
  185. package/build-module/components/inserter-draggable-blocks/index.js +10 -3
  186. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  187. package/build-module/components/inspector-controls-tabs/settings-tab.js +1 -2
  188. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  189. package/build-module/components/list-view/block-select-button.js +3 -7
  190. package/build-module/components/list-view/block-select-button.js.map +1 -1
  191. package/build-module/components/list-view/block.js +2 -2
  192. package/build-module/components/list-view/block.js.map +1 -1
  193. package/build-module/components/list-view/utils.js +3 -1
  194. package/build-module/components/list-view/utils.js.map +1 -1
  195. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  196. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  197. package/build-module/components/rich-text/index.js +1 -1
  198. package/build-module/components/rich-text/index.js.map +1 -1
  199. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  200. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  201. package/build-module/components/url-popover/image-url-input-ui.js +3 -3
  202. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  203. package/build-module/hooks/grid-visualizer.js +5 -8
  204. package/build-module/hooks/grid-visualizer.js.map +1 -1
  205. package/build-module/hooks/layout-child.js +9 -2
  206. package/build-module/hooks/layout-child.js.map +1 -1
  207. package/build-module/hooks/position.js +3 -7
  208. package/build-module/hooks/position.js.map +1 -1
  209. package/build-module/hooks/use-bindings-attributes.js +81 -51
  210. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  211. package/build-module/layouts/constrained.js +6 -2
  212. package/build-module/layouts/constrained.js.map +1 -1
  213. package/build-module/layouts/grid.js +2 -0
  214. package/build-module/layouts/grid.js.map +1 -1
  215. package/build-module/private-apis.js +0 -3
  216. package/build-module/private-apis.js.map +1 -1
  217. package/build-module/store/actions.js +15 -0
  218. package/build-module/store/actions.js.map +1 -1
  219. package/build-module/store/reducer.js +18 -1
  220. package/build-module/store/reducer.js.map +1 -1
  221. package/build-module/store/selectors.js +10 -0
  222. package/build-module/store/selectors.js.map +1 -1
  223. package/build-style/content-rtl.css +6 -6
  224. package/build-style/content.css +6 -6
  225. package/build-style/style-rtl.css +167 -103
  226. package/build-style/style.css +167 -103
  227. package/build-types/components/block-context/index.d.ts +2 -2
  228. package/build-types/components/block-context/index.d.ts.map +1 -1
  229. package/build-types/utils/dom.d.ts.map +1 -1
  230. package/package.json +31 -31
  231. package/src/components/alignment-control/ui.js +2 -2
  232. package/src/components/block-alignment-control/ui.js +1 -1
  233. package/src/components/block-alignment-control/ui.native.js +1 -1
  234. package/src/components/block-context/README.md +4 -4
  235. package/src/components/block-inspector/index.js +8 -4
  236. package/src/components/block-list/content.scss +2 -16
  237. package/src/components/block-list/use-block-props/index.js +1 -1
  238. package/src/components/block-list/use-block-props/use-block-refs.js +19 -3
  239. package/src/components/block-list/use-block-props/use-is-hovered.js +26 -11
  240. package/src/components/block-list/use-in-between-inserter.js +5 -1
  241. package/src/components/block-lock/modal.js +10 -2
  242. package/src/components/block-lock/style.scss +4 -8
  243. package/src/components/block-patterns-paging/style.scss +0 -23
  244. package/src/components/block-removal-warning-modal/index.js +10 -2
  245. package/src/components/block-switcher/index.js +1 -1
  246. package/src/components/block-switcher/pattern-transformations-menu.js +17 -15
  247. package/src/components/block-switcher/preview-block-popover.js +20 -14
  248. package/src/components/block-switcher/style.scss +8 -17
  249. package/src/components/block-toolbar/shuffle.js +8 -1
  250. package/src/components/block-tools/style.scss +8 -0
  251. package/src/components/block-tools/use-show-block-tools.js +12 -9
  252. package/src/components/block-tools/zoom-out-mode-inserter-button.js +47 -0
  253. package/src/components/block-tools/zoom-out-mode-inserters.js +43 -33
  254. package/src/components/block-tools/zoom-out-popover.js +1 -0
  255. package/src/components/block-tools/zoom-out-toolbar.js +1 -1
  256. package/src/components/date-format-picker/index.js +2 -11
  257. package/src/components/default-block-appender/index.js +11 -4
  258. package/src/components/font-appearance-control/index.js +1 -5
  259. package/src/components/global-styles/background-panel.js +21 -1
  260. package/src/components/global-styles/hooks.js +5 -1
  261. package/src/components/global-styles/style.scss +12 -0
  262. package/src/components/global-styles/test/typography-utils.js +325 -0
  263. package/src/components/global-styles/test/use-global-styles-output.js +3 -1
  264. package/src/components/global-styles/typography-panel.js +36 -44
  265. package/src/components/global-styles/typography-utils.js +103 -7
  266. package/src/components/global-styles/use-global-styles-output.js +22 -2
  267. package/src/components/grid/grid-item-movers.js +139 -69
  268. package/src/components/grid/grid-visualizer.js +1 -1
  269. package/src/components/grid/style.scss +114 -0
  270. package/src/components/grid/use-grid-layout-sync.js +66 -27
  271. package/src/components/iframe/content.scss +1 -1
  272. package/src/components/index.js +0 -5
  273. package/src/components/inner-blocks/index.js +4 -1
  274. package/src/components/inserter/block-patterns-tab/patterns-filter.js +40 -44
  275. package/src/components/inserter/media-tab/media-panel.js +1 -0
  276. package/src/components/inserter/menu.js +1 -1
  277. package/src/components/inserter/preview-panel.js +27 -4
  278. package/src/components/inserter/style.scss +57 -43
  279. package/src/components/inserter-draggable-blocks/index.js +11 -3
  280. package/src/components/inspector-controls-tabs/settings-tab.js +0 -2
  281. package/src/components/inspector-controls-tabs/style.scss +0 -21
  282. package/src/components/list-view/block-select-button.js +3 -13
  283. package/src/components/list-view/block.js +10 -3
  284. package/src/components/list-view/style.scss +2 -1
  285. package/src/components/list-view/utils.js +13 -2
  286. package/src/components/rich-text/format-toolbar/index.js +1 -1
  287. package/src/components/rich-text/index.js +1 -1
  288. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -1
  289. package/src/components/url-popover/image-url-input-ui.js +3 -3
  290. package/src/components/url-popover/style.scss +1 -0
  291. package/src/hooks/grid-visualizer.js +5 -7
  292. package/src/hooks/layout-child.js +12 -3
  293. package/src/hooks/position.js +3 -13
  294. package/src/hooks/use-bindings-attributes.js +89 -59
  295. package/src/layouts/constrained.js +10 -2
  296. package/src/layouts/grid.js +2 -0
  297. package/src/private-apis.js +0 -6
  298. package/src/store/actions.js +15 -0
  299. package/src/store/reducer.js +18 -0
  300. package/src/store/selectors.js +10 -0
  301. package/tsconfig.tsbuildinfo +1 -1
  302. package/build/components/inserter/reusable-block-rename-hint.js +0 -71
  303. package/build/components/inserter/reusable-block-rename-hint.js.map +0 -1
  304. package/build/components/inspector-controls-tabs/settings-tab-hint.js +0 -53
  305. package/build/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  306. package/build-module/components/inserter/reusable-block-rename-hint.js +0 -64
  307. package/build-module/components/inserter/reusable-block-rename-hint.js.map +0 -1
  308. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js +0 -47
  309. package/build-module/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
  310. package/src/components/inserter/reusable-block-rename-hint.js +0 -69
  311. package/src/components/inspector-controls-tabs/settings-tab-hint.js +0 -52
@@ -2,15 +2,13 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useSelect } from '@wordpress/data';
5
- import { useEffect, useRef, useState } from '@wordpress/element';
6
- import { Button } from '@wordpress/components';
7
- import { plus } from '@wordpress/icons';
8
- import { _x } from '@wordpress/i18n';
5
+ import { useEffect, useState } from '@wordpress/element';
9
6
 
10
7
  /**
11
8
  * Internal dependencies
12
9
  */
13
10
  import BlockPopoverInbetween from '../block-popover/inbetween';
11
+ import ZoomOutModeInserterButton from './zoom-out-mode-inserter-button';
14
12
  import { store as blockEditorStore } from '../../store';
15
13
  import { unlock } from '../../lock-unlock';
16
14
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -18,16 +16,20 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
18
16
  function ZoomOutModeInserters() {
19
17
  const [isReady, setIsReady] = useState(false);
20
18
  const {
19
+ hasSelection,
21
20
  blockOrder,
22
- sectionRootClientId,
23
21
  insertionPoint,
24
22
  setInserterIsOpened,
25
- hasSelection
23
+ sectionRootClientId,
24
+ selectedBlockClientId,
25
+ hoveredBlockClientId
26
26
  } = useSelect(select => {
27
27
  const {
28
28
  getSettings,
29
29
  getBlockOrder,
30
- getSelectionStart
30
+ getSelectionStart,
31
+ getSelectedBlockClientId,
32
+ getHoveredBlockClientId
31
33
  } = select(blockEditorStore);
32
34
  const {
33
35
  sectionRootClientId: root
@@ -44,18 +46,11 @@ function ZoomOutModeInserters() {
44
46
  blockOrder: getBlockOrder(root),
45
47
  insertionPoint: unlock(editor).getInsertionPoint(),
46
48
  sectionRootClientId: root,
47
- setInserterIsOpened: getSettings().__experimentalSetIsInserterOpened
49
+ setInserterIsOpened: getSettings().__experimentalSetIsInserterOpened,
50
+ selectedBlockClientId: getSelectedBlockClientId(),
51
+ hoveredBlockClientId: getHoveredBlockClientId()
48
52
  };
49
53
  }, []);
50
- const isMounted = useRef(false);
51
- useEffect(() => {
52
- if (!isMounted.current) {
53
- isMounted.current = true;
54
- return;
55
- }
56
- // reset insertion point when the block order changes
57
- setInserterIsOpened(true);
58
- }, [blockOrder, setInserterIsOpened]);
59
54
 
60
55
  // Defer the initial rendering to avoid the jumps due to the animation.
61
56
  useEffect(() => {
@@ -66,14 +61,23 @@ function ZoomOutModeInserters() {
66
61
  clearTimeout(timeout);
67
62
  };
68
63
  }, []);
69
- if (!isReady || !hasSelection) {
64
+ if (!isReady) {
70
65
  return null;
71
66
  }
72
67
  return [undefined, ...blockOrder].map((clientId, index) => {
68
+ const shouldRenderInserter = insertionPoint.insertionIndex !== index;
69
+ const shouldRenderInsertionPoint = insertionPoint.insertionIndex === index;
70
+ if (!shouldRenderInserter && !shouldRenderInsertionPoint) {
71
+ return null;
72
+ }
73
+ const previousClientId = clientId;
74
+ const nextClientId = blockOrder[index];
75
+ const isSelected = hasSelection && (selectedBlockClientId === previousClientId || selectedBlockClientId === nextClientId);
76
+ const isHovered = hoveredBlockClientId === previousClientId || hoveredBlockClientId === nextClientId;
73
77
  return /*#__PURE__*/_jsxs(BlockPopoverInbetween, {
74
- previousClientId: clientId,
75
- nextClientId: blockOrder[index],
76
- children: [insertionPoint.insertionIndex === index && /*#__PURE__*/_jsx("div", {
78
+ previousClientId: previousClientId,
79
+ nextClientId: nextClientId,
80
+ children: [shouldRenderInsertionPoint && /*#__PURE__*/_jsx("div", {
77
81
  style: {
78
82
  borderRadius: '0',
79
83
  height: '12px',
@@ -82,11 +86,8 @@ function ZoomOutModeInserters() {
82
86
  width: '100%'
83
87
  },
84
88
  className: "block-editor-block-list__insertion-point-indicator"
85
- }), insertionPoint.insertionIndex !== index && /*#__PURE__*/_jsx(Button, {
86
- variant: "primary",
87
- icon: plus,
88
- size: "compact",
89
- className: "block-editor-button-pattern-inserter__button",
89
+ }), shouldRenderInserter && /*#__PURE__*/_jsx(ZoomOutModeInserterButton, {
90
+ isVisible: isSelected || isHovered,
90
91
  onClick: () => {
91
92
  setInserterIsOpened({
92
93
  rootClientId: sectionRootClientId,
@@ -94,8 +95,7 @@ function ZoomOutModeInserters() {
94
95
  tab: 'patterns',
95
96
  category: 'all'
96
97
  });
97
- },
98
- label: _x('Add pattern', 'Generic label for pattern inserter button')
98
+ }
99
99
  })]
100
100
  }, index);
101
101
  });
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useEffect","useRef","useState","Button","plus","_x","BlockPopoverInbetween","store","blockEditorStore","unlock","jsx","_jsx","jsxs","_jsxs","ZoomOutModeInserters","isReady","setIsReady","blockOrder","sectionRootClientId","insertionPoint","setInserterIsOpened","hasSelection","select","getSettings","getBlockOrder","getSelectionStart","root","editor","clientId","getInsertionPoint","__experimentalSetIsInserterOpened","isMounted","current","timeout","setTimeout","clearTimeout","undefined","map","index","previousClientId","nextClientId","children","insertionIndex","style","borderRadius","height","opacity","transform","width","className","variant","icon","size","onClick","rootClientId","tab","category","label"],"sources":["@wordpress/block-editor/src/components/block-tools/zoom-out-mode-inserters.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { Button } from '@wordpress/components';\nimport { plus } from '@wordpress/icons';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockPopoverInbetween from '../block-popover/inbetween';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction ZoomOutModeInserters() {\n\tconst [ isReady, setIsReady ] = useState( false );\n\tconst {\n\t\tblockOrder,\n\t\tsectionRootClientId,\n\t\tinsertionPoint,\n\t\tsetInserterIsOpened,\n\t\thasSelection,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSettings, getBlockOrder, getSelectionStart } =\n\t\t\tselect( blockEditorStore );\n\t\tconst { sectionRootClientId: root } = unlock( getSettings() );\n\t\t// To do: move ZoomOutModeInserters to core/editor.\n\t\t// Or we perhaps we should move the insertion point state to the\n\t\t// block-editor store. I'm not sure what it was ever moved to the editor\n\t\t// store, because all the inserter components all live in the\n\t\t// block-editor package.\n\t\t// eslint-disable-next-line @wordpress/data-no-store-string-literals\n\t\tconst editor = select( 'core/editor' );\n\t\treturn {\n\t\t\thasSelection: !! getSelectionStart().clientId,\n\t\t\tblockOrder: getBlockOrder( root ),\n\t\t\tinsertionPoint: unlock( editor ).getInsertionPoint(),\n\t\t\tsectionRootClientId: root,\n\t\t\tsetInserterIsOpened:\n\t\t\t\tgetSettings().__experimentalSetIsInserterOpened,\n\t\t};\n\t}, [] );\n\n\tconst isMounted = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( ! isMounted.current ) {\n\t\t\tisMounted.current = true;\n\t\t\treturn;\n\t\t}\n\t\t// reset insertion point when the block order changes\n\t\tsetInserterIsOpened( true );\n\t}, [ blockOrder, setInserterIsOpened ] );\n\n\t// Defer the initial rendering to avoid the jumps due to the animation.\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tsetIsReady( true );\n\t\t}, 500 );\n\t\treturn () => {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t}, [] );\n\n\tif ( ! isReady || ! hasSelection ) {\n\t\treturn null;\n\t}\n\n\treturn [ undefined, ...blockOrder ].map( ( clientId, index ) => {\n\t\treturn (\n\t\t\t<BlockPopoverInbetween\n\t\t\t\tkey={ index }\n\t\t\t\tpreviousClientId={ clientId }\n\t\t\t\tnextClientId={ blockOrder[ index ] }\n\t\t\t>\n\t\t\t\t{ insertionPoint.insertionIndex === index && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tborderRadius: '0',\n\t\t\t\t\t\t\theight: '12px',\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tclassName=\"block-editor-block-list__insertion-point-indicator\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ insertionPoint.insertionIndex !== index && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"block-editor-button-pattern-inserter__button\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetInserterIsOpened( {\n\t\t\t\t\t\t\t\trootClientId: sectionRootClientId,\n\t\t\t\t\t\t\t\tinsertionIndex: index,\n\t\t\t\t\t\t\t\ttab: 'patterns',\n\t\t\t\t\t\t\t\tcategory: 'all',\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t'Add pattern',\n\t\t\t\t\t\t\t'Generic label for pattern inserter button'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockPopoverInbetween>\n\t\t);\n\t} );\n}\n\nexport default ZoomOutModeInserters;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","useEffect","useState","BlockPopoverInbetween","ZoomOutModeInserterButton","store","blockEditorStore","unlock","jsx","_jsx","jsxs","_jsxs","ZoomOutModeInserters","isReady","setIsReady","hasSelection","blockOrder","insertionPoint","setInserterIsOpened","sectionRootClientId","selectedBlockClientId","hoveredBlockClientId","select","getSettings","getBlockOrder","getSelectionStart","getSelectedBlockClientId","getHoveredBlockClientId","root","editor","clientId","getInsertionPoint","__experimentalSetIsInserterOpened","timeout","setTimeout","clearTimeout","undefined","map","index","shouldRenderInserter","insertionIndex","shouldRenderInsertionPoint","previousClientId","nextClientId","isSelected","isHovered","children","style","borderRadius","height","opacity","transform","width","className","isVisible","onClick","rootClientId","tab","category"],"sources":["@wordpress/block-editor/src/components/block-tools/zoom-out-mode-inserters.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockPopoverInbetween from '../block-popover/inbetween';\nimport ZoomOutModeInserterButton from './zoom-out-mode-inserter-button';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction ZoomOutModeInserters() {\n\tconst [ isReady, setIsReady ] = useState( false );\n\tconst {\n\t\thasSelection,\n\t\tblockOrder,\n\t\tinsertionPoint,\n\t\tsetInserterIsOpened,\n\t\tsectionRootClientId,\n\t\tselectedBlockClientId,\n\t\thoveredBlockClientId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSettings,\n\t\t\tgetBlockOrder,\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetHoveredBlockClientId,\n\t\t} = select( blockEditorStore );\n\t\tconst { sectionRootClientId: root } = unlock( getSettings() );\n\t\t// To do: move ZoomOutModeInserters to core/editor.\n\t\t// Or we perhaps we should move the insertion point state to the\n\t\t// block-editor store. I'm not sure what it was ever moved to the editor\n\t\t// store, because all the inserter components all live in the\n\t\t// block-editor package.\n\t\t// eslint-disable-next-line @wordpress/data-no-store-string-literals\n\t\tconst editor = select( 'core/editor' );\n\t\treturn {\n\t\t\thasSelection: !! getSelectionStart().clientId,\n\t\t\tblockOrder: getBlockOrder( root ),\n\t\t\tinsertionPoint: unlock( editor ).getInsertionPoint(),\n\t\t\tsectionRootClientId: root,\n\t\t\tsetInserterIsOpened:\n\t\t\t\tgetSettings().__experimentalSetIsInserterOpened,\n\t\t\tselectedBlockClientId: getSelectedBlockClientId(),\n\t\t\thoveredBlockClientId: getHoveredBlockClientId(),\n\t\t};\n\t}, [] );\n\n\t// Defer the initial rendering to avoid the jumps due to the animation.\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tsetIsReady( true );\n\t\t}, 500 );\n\t\treturn () => {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t}, [] );\n\n\tif ( ! isReady ) {\n\t\treturn null;\n\t}\n\n\treturn [ undefined, ...blockOrder ].map( ( clientId, index ) => {\n\t\tconst shouldRenderInserter = insertionPoint.insertionIndex !== index;\n\n\t\tconst shouldRenderInsertionPoint =\n\t\t\tinsertionPoint.insertionIndex === index;\n\n\t\tif ( ! shouldRenderInserter && ! shouldRenderInsertionPoint ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst previousClientId = clientId;\n\t\tconst nextClientId = blockOrder[ index ];\n\n\t\tconst isSelected =\n\t\t\thasSelection &&\n\t\t\t( selectedBlockClientId === previousClientId ||\n\t\t\t\tselectedBlockClientId === nextClientId );\n\n\t\tconst isHovered =\n\t\t\thoveredBlockClientId === previousClientId ||\n\t\t\thoveredBlockClientId === nextClientId;\n\n\t\treturn (\n\t\t\t<BlockPopoverInbetween\n\t\t\t\tkey={ index }\n\t\t\t\tpreviousClientId={ previousClientId }\n\t\t\t\tnextClientId={ nextClientId }\n\t\t\t>\n\t\t\t\t{ shouldRenderInsertionPoint && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tborderRadius: '0',\n\t\t\t\t\t\t\theight: '12px',\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tclassName=\"block-editor-block-list__insertion-point-indicator\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ shouldRenderInserter && (\n\t\t\t\t\t<ZoomOutModeInserterButton\n\t\t\t\t\t\tisVisible={ isSelected || isHovered }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetInserterIsOpened( {\n\t\t\t\t\t\t\t\trootClientId: sectionRootClientId,\n\t\t\t\t\t\t\t\tinsertionIndex: index,\n\t\t\t\t\t\t\t\ttab: 'patterns',\n\t\t\t\t\t\t\t\tcategory: 'all',\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) }\n\t\t\t</BlockPopoverInbetween>\n\t\t);\n\t} );\n}\n\nexport default ZoomOutModeInserters;\n"],"mappings":"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","ignoreList":[]}
@@ -29,7 +29,8 @@ export default function ZoomOutPopover({
29
29
  const props = {
30
30
  ...popoverProps,
31
31
  placement: 'left-start',
32
- flip: false
32
+ flip: false,
33
+ shift: true
33
34
  };
34
35
  return /*#__PURE__*/_jsx(BlockPopover, {
35
36
  clientId: capturingClientId || clientId,
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","BlockPopover","useBlockToolbarPopoverProps","useSelectedBlockToolProps","ZoomOutToolbar","jsx","_jsx","ZoomOutPopover","clientId","__unstableContentRef","capturingClientId","isInsertionPointVisible","lastClientId","rootClientId","popoverProps","contentElement","current","props","placement","flip","bottomClientId","className","resize","children"],"sources":["@wordpress/block-editor/src/components/block-tools/zoom-out-popover.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * Internal dependencies\n */\nimport BlockPopover from '../block-popover';\nimport useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';\nimport useSelectedBlockToolProps from './use-selected-block-tool-props';\nimport ZoomOutToolbar from './zoom-out-toolbar';\n\nexport default function ZoomOutPopover( { clientId, __unstableContentRef } ) {\n\tconst {\n\t\tcapturingClientId,\n\t\tisInsertionPointVisible,\n\t\tlastClientId,\n\t\trootClientId,\n\t} = useSelectedBlockToolProps( clientId );\n\n\tconst popoverProps = useBlockToolbarPopoverProps( {\n\t\tcontentElement: __unstableContentRef?.current,\n\t\tclientId,\n\t} );\n\n\t// Override some of the popover props for the zoom-out toolbar.\n\tconst props = {\n\t\t...popoverProps,\n\t\tplacement: 'left-start',\n\t\tflip: false,\n\t};\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ capturingClientId || clientId }\n\t\t\tbottomClientId={ lastClientId }\n\t\t\tclassName={ clsx( 'zoom-out-toolbar-popover', {\n\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t} ) }\n\t\t\tresize={ false }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<ZoomOutToolbar\n\t\t\t\tclientId={ clientId }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t</BlockPopover>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;AACvB;AACA;AACA;AACA,OAAOC,YAAY,MAAM,kBAAkB;AAC3C,OAAOC,2BAA2B,MAAM,mCAAmC;AAC3E,OAAOC,yBAAyB,MAAM,iCAAiC;AACvE,OAAOC,cAAc,MAAM,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhD,eAAe,SAASC,cAAcA,CAAE;EAAEC,QAAQ;EAAEC;AAAqB,CAAC,EAAG;EAC5E,MAAM;IACLC,iBAAiB;IACjBC,uBAAuB;IACvBC,YAAY;IACZC;EACD,CAAC,GAAGV,yBAAyB,CAAEK,QAAS,CAAC;EAEzC,MAAMM,YAAY,GAAGZ,2BAA2B,CAAE;IACjDa,cAAc,EAAEN,oBAAoB,EAAEO,OAAO;IAC7CR;EACD,CAAE,CAAC;;EAEH;EACA,MAAMS,KAAK,GAAG;IACb,GAAGH,YAAY;IACfI,SAAS,EAAE,YAAY;IACvBC,IAAI,EAAE;EACP,CAAC;EAED,oBACCb,IAAA,CAACL,YAAY;IACZO,QAAQ,EAAGE,iBAAiB,IAAIF,QAAU;IAC1CY,cAAc,EAAGR,YAAc;IAC/BS,SAAS,EAAGrB,IAAI,CAAE,0BAA0B,EAAE;MAC7C,4BAA4B,EAAEW;IAC/B,CAAE,CAAG;IACLW,MAAM,EAAG,KAAO;IAAA,GACXL,KAAK;IAAAM,QAAA,eAEVjB,IAAA,CAACF,cAAc;MACdI,QAAQ,EAAGA,QAAU;MACrBK,YAAY,EAAGA;IAAc,CAC7B;EAAC,CACW,CAAC;AAEjB","ignoreList":[]}
1
+ {"version":3,"names":["clsx","BlockPopover","useBlockToolbarPopoverProps","useSelectedBlockToolProps","ZoomOutToolbar","jsx","_jsx","ZoomOutPopover","clientId","__unstableContentRef","capturingClientId","isInsertionPointVisible","lastClientId","rootClientId","popoverProps","contentElement","current","props","placement","flip","shift","bottomClientId","className","resize","children"],"sources":["@wordpress/block-editor/src/components/block-tools/zoom-out-popover.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * Internal dependencies\n */\nimport BlockPopover from '../block-popover';\nimport useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';\nimport useSelectedBlockToolProps from './use-selected-block-tool-props';\nimport ZoomOutToolbar from './zoom-out-toolbar';\n\nexport default function ZoomOutPopover( { clientId, __unstableContentRef } ) {\n\tconst {\n\t\tcapturingClientId,\n\t\tisInsertionPointVisible,\n\t\tlastClientId,\n\t\trootClientId,\n\t} = useSelectedBlockToolProps( clientId );\n\n\tconst popoverProps = useBlockToolbarPopoverProps( {\n\t\tcontentElement: __unstableContentRef?.current,\n\t\tclientId,\n\t} );\n\n\t// Override some of the popover props for the zoom-out toolbar.\n\tconst props = {\n\t\t...popoverProps,\n\t\tplacement: 'left-start',\n\t\tflip: false,\n\t\tshift: true,\n\t};\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ capturingClientId || clientId }\n\t\t\tbottomClientId={ lastClientId }\n\t\t\tclassName={ clsx( 'zoom-out-toolbar-popover', {\n\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t} ) }\n\t\t\tresize={ false }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<ZoomOutToolbar\n\t\t\t\tclientId={ clientId }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t</BlockPopover>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;AACvB;AACA;AACA;AACA,OAAOC,YAAY,MAAM,kBAAkB;AAC3C,OAAOC,2BAA2B,MAAM,mCAAmC;AAC3E,OAAOC,yBAAyB,MAAM,iCAAiC;AACvE,OAAOC,cAAc,MAAM,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhD,eAAe,SAASC,cAAcA,CAAE;EAAEC,QAAQ;EAAEC;AAAqB,CAAC,EAAG;EAC5E,MAAM;IACLC,iBAAiB;IACjBC,uBAAuB;IACvBC,YAAY;IACZC;EACD,CAAC,GAAGV,yBAAyB,CAAEK,QAAS,CAAC;EAEzC,MAAMM,YAAY,GAAGZ,2BAA2B,CAAE;IACjDa,cAAc,EAAEN,oBAAoB,EAAEO,OAAO;IAC7CR;EACD,CAAE,CAAC;;EAEH;EACA,MAAMS,KAAK,GAAG;IACb,GAAGH,YAAY;IACfI,SAAS,EAAE,YAAY;IACvBC,IAAI,EAAE,KAAK;IACXC,KAAK,EAAE;EACR,CAAC;EAED,oBACCd,IAAA,CAACL,YAAY;IACZO,QAAQ,EAAGE,iBAAiB,IAAIF,QAAU;IAC1Ca,cAAc,EAAGT,YAAc;IAC/BU,SAAS,EAAGtB,IAAI,CAAE,0BAA0B,EAAE;MAC7C,4BAA4B,EAAEW;IAC/B,CAAE,CAAG;IACLY,MAAM,EAAG,KAAO;IAAA,GACXN,KAAK;IAAAO,QAAA,eAEVlB,IAAA,CAACF,cAAc;MACdI,QAAQ,EAAGA,QAAU;MACrBK,YAAY,EAAGA;IAAc,CAC7B;EAAC,CACW,CAAC;AAEjB","ignoreList":[]}
@@ -121,7 +121,7 @@ export default function ZoomOutToolbar({
121
121
  }), canRemove && !isBlockTemplatePart && /*#__PURE__*/_jsx(ToolbarButton, {
122
122
  className: "zoom-out-toolbar-button",
123
123
  icon: trash,
124
- label: "Delete",
124
+ label: __('Delete'),
125
125
  onClick: () => {
126
126
  removeBlock(clientId);
127
127
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","dragHandle","trash","Button","ToolbarButton","useSelect","useDispatch","store","blocksStore","__","blockEditorStore","BlockDraggable","BlockMover","Shuffle","NavigableToolbar","jsx","_jsx","jsxs","_jsxs","ZoomOutToolbar","clientId","rootClientId","selected","select","getBlock","hasBlockMovingClientId","getNextBlockClientId","getPreviousBlockClientId","canRemoveBlock","canMoveBlock","getBlockType","name","blockType","isBlockTemplatePart","isNextBlockTemplatePart","nextClientId","nextName","nextBlockType","isPrevBlockTemplatePart","prevClientId","prevName","prevBlockType","blockMovingMode","canRemove","canMove","removeBlock","classNames","showBlockDraggable","className","variant","orientation","children","clientIds","draggableProps","icon","label","iconSize","size","tabIndex","hideDragHandle","isBlockMoverUpButtonDisabled","isBlockMoverDownButtonDisabled","as","onClick"],"sources":["@wordpress/block-editor/src/components/block-tools/zoom-out-toolbar.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { dragHandle, trash } from '@wordpress/icons';\nimport { Button, ToolbarButton } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockDraggable from '../block-draggable';\nimport BlockMover from '../block-mover';\nimport Shuffle from '../block-toolbar/shuffle';\nimport NavigableToolbar from '../navigable-toolbar';\n\nexport default function ZoomOutToolbar( { clientId, rootClientId } ) {\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockType } = select( blocksStore );\n\t\t\tconst { name } = getBlock( clientId );\n\t\t\tconst blockType = getBlockType( name );\n\t\t\tconst isBlockTemplatePart =\n\t\t\t\tblockType?.name === 'core/template-part';\n\n\t\t\tlet isNextBlockTemplatePart = false;\n\t\t\tconst nextClientId = getNextBlockClientId();\n\t\t\tif ( nextClientId ) {\n\t\t\t\tconst { name: nextName } = getBlock( nextClientId );\n\t\t\t\tconst nextBlockType = getBlockType( nextName );\n\t\t\t\tisNextBlockTemplatePart =\n\t\t\t\t\tnextBlockType?.name === 'core/template-part';\n\t\t\t}\n\n\t\t\tlet isPrevBlockTemplatePart = false;\n\t\t\tconst prevClientId = getPreviousBlockClientId();\n\t\t\tif ( prevClientId ) {\n\t\t\t\tconst { name: prevName } = getBlock( prevClientId );\n\t\t\t\tconst prevBlockType = getBlockType( prevName );\n\t\t\t\tisPrevBlockTemplatePart =\n\t\t\t\t\tprevBlockType?.name === 'core/template-part';\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tblockMovingMode: hasBlockMovingClientId(),\n\t\t\t\tisBlockTemplatePart,\n\t\t\t\tisNextBlockTemplatePart,\n\t\t\t\tisPrevBlockTemplatePart,\n\t\t\t\tcanRemove: canRemoveBlock( clientId, rootClientId ),\n\t\t\t\tcanMove: canMoveBlock( clientId, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\tconst {\n\t\tblockMovingMode,\n\t\tisBlockTemplatePart,\n\t\tisNextBlockTemplatePart,\n\t\tisPrevBlockTemplatePart,\n\t\tcanRemove,\n\t\tcanMove,\n\t} = selected;\n\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\n\tconst classNames = clsx( 'zoom-out-toolbar', {\n\t\t'is-block-moving-mode': !! blockMovingMode,\n\t} );\n\n\tconst showBlockDraggable = canMove && ! isBlockTemplatePart;\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tclassName={ classNames }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant=\"unstyled\"\n\t\t\torientation=\"vertical\"\n\t\t>\n\t\t\t{ showBlockDraggable && (\n\t\t\t\t<BlockDraggable clientIds={ [ clientId ] }>\n\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\tclassName=\"block-selection-button_drag-handle zoom-out-toolbar-button\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tlabel={ __( 'Drag' ) }\n\t\t\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t) }\n\t\t\t{ ! isBlockTemplatePart && (\n\t\t\t\t<BlockMover\n\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\thideDragHandle\n\t\t\t\t\tisBlockMoverUpButtonDisabled={ isPrevBlockTemplatePart }\n\t\t\t\t\tisBlockMoverDownButtonDisabled={ isNextBlockTemplatePart }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canMove && canRemove && (\n\t\t\t\t<Shuffle clientId={ clientId } as={ ToolbarButton } />\n\t\t\t) }\n\t\t\t{ canRemove && ! isBlockTemplatePart && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tclassName=\"zoom-out-toolbar-button\"\n\t\t\t\t\ticon={ trash }\n\t\t\t\t\tlabel=\"Delete\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</NavigableToolbar>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","dragHandle","trash","Button","ToolbarButton","useSelect","useDispatch","store","blocksStore","__","blockEditorStore","BlockDraggable","BlockMover","Shuffle","NavigableToolbar","jsx","_jsx","jsxs","_jsxs","ZoomOutToolbar","clientId","rootClientId","selected","select","getBlock","hasBlockMovingClientId","getNextBlockClientId","getPreviousBlockClientId","canRemoveBlock","canMoveBlock","getBlockType","name","blockType","isBlockTemplatePart","isNextBlockTemplatePart","nextClientId","nextName","nextBlockType","isPrevBlockTemplatePart","prevClientId","prevName","prevBlockType","blockMovingMode","canRemove","canMove","removeBlock","classNames","showBlockDraggable","className","variant","orientation","children","clientIds","draggableProps","icon","label","iconSize","size","tabIndex","hideDragHandle","isBlockMoverUpButtonDisabled","isBlockMoverDownButtonDisabled","as","onClick"],"sources":["@wordpress/block-editor/src/components/block-tools/zoom-out-toolbar.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { dragHandle, trash } from '@wordpress/icons';\nimport { Button, ToolbarButton } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockDraggable from '../block-draggable';\nimport BlockMover from '../block-mover';\nimport Shuffle from '../block-toolbar/shuffle';\nimport NavigableToolbar from '../navigable-toolbar';\n\nexport default function ZoomOutToolbar( { clientId, rootClientId } ) {\n\tconst selected = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockType } = select( blocksStore );\n\t\t\tconst { name } = getBlock( clientId );\n\t\t\tconst blockType = getBlockType( name );\n\t\t\tconst isBlockTemplatePart =\n\t\t\t\tblockType?.name === 'core/template-part';\n\n\t\t\tlet isNextBlockTemplatePart = false;\n\t\t\tconst nextClientId = getNextBlockClientId();\n\t\t\tif ( nextClientId ) {\n\t\t\t\tconst { name: nextName } = getBlock( nextClientId );\n\t\t\t\tconst nextBlockType = getBlockType( nextName );\n\t\t\t\tisNextBlockTemplatePart =\n\t\t\t\t\tnextBlockType?.name === 'core/template-part';\n\t\t\t}\n\n\t\t\tlet isPrevBlockTemplatePart = false;\n\t\t\tconst prevClientId = getPreviousBlockClientId();\n\t\t\tif ( prevClientId ) {\n\t\t\t\tconst { name: prevName } = getBlock( prevClientId );\n\t\t\t\tconst prevBlockType = getBlockType( prevName );\n\t\t\t\tisPrevBlockTemplatePart =\n\t\t\t\t\tprevBlockType?.name === 'core/template-part';\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tblockMovingMode: hasBlockMovingClientId(),\n\t\t\t\tisBlockTemplatePart,\n\t\t\t\tisNextBlockTemplatePart,\n\t\t\t\tisPrevBlockTemplatePart,\n\t\t\t\tcanRemove: canRemoveBlock( clientId, rootClientId ),\n\t\t\t\tcanMove: canMoveBlock( clientId, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\tconst {\n\t\tblockMovingMode,\n\t\tisBlockTemplatePart,\n\t\tisNextBlockTemplatePart,\n\t\tisPrevBlockTemplatePart,\n\t\tcanRemove,\n\t\tcanMove,\n\t} = selected;\n\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\n\tconst classNames = clsx( 'zoom-out-toolbar', {\n\t\t'is-block-moving-mode': !! blockMovingMode,\n\t} );\n\n\tconst showBlockDraggable = canMove && ! isBlockTemplatePart;\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tclassName={ classNames }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant=\"unstyled\"\n\t\t\torientation=\"vertical\"\n\t\t>\n\t\t\t{ showBlockDraggable && (\n\t\t\t\t<BlockDraggable clientIds={ [ clientId ] }>\n\t\t\t\t\t{ ( draggableProps ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ dragHandle }\n\t\t\t\t\t\t\tclassName=\"block-selection-button_drag-handle zoom-out-toolbar-button\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tlabel={ __( 'Drag' ) }\n\t\t\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t// Should not be able to tab to drag handle as this\n\t\t\t\t\t\t\t// button can only be used with a pointer device.\n\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t{ ...draggableProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t) }\n\t\t\t{ ! isBlockTemplatePart && (\n\t\t\t\t<BlockMover\n\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\thideDragHandle\n\t\t\t\t\tisBlockMoverUpButtonDisabled={ isPrevBlockTemplatePart }\n\t\t\t\t\tisBlockMoverDownButtonDisabled={ isNextBlockTemplatePart }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canMove && canRemove && (\n\t\t\t\t<Shuffle clientId={ clientId } as={ ToolbarButton } />\n\t\t\t) }\n\t\t\t{ canRemove && ! isBlockTemplatePart && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tclassName=\"zoom-out-toolbar-button\"\n\t\t\t\t\ticon={ trash }\n\t\t\t\t\tlabel={ __( 'Delete' ) }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</NavigableToolbar>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,20 +4,12 @@
4
4
  import { _x, __ } from '@wordpress/i18n';
5
5
  import { dateI18n, humanTimeDiff } from '@wordpress/date';
6
6
  import { useState, createInterpolateElement } from '@wordpress/element';
7
- import { TextControl, ExternalLink, VisuallyHidden, ToggleControl, __experimentalVStack as VStack, privateApis as componentsPrivateApis } from '@wordpress/components';
8
-
9
- /**
10
- * Internal dependencies
11
- */
12
- import { unlock } from '../../lock-unlock';
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- import { jsxs as _jsxs } from "react/jsx-runtime";
15
- const {
16
- CustomSelectControlV2Legacy: CustomSelectControl
17
- } = unlock(componentsPrivateApis);
7
+ import { TextControl, ExternalLink, VisuallyHidden, ToggleControl, __experimentalVStack as VStack, CustomSelectControl } from '@wordpress/components';
18
8
 
19
9
  // So that we illustrate the different formats in the dropdown properly, show a date that is
20
10
  // somwhat recent, has a day greater than 12, and a month with more than three letters.
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsxs as _jsxs } from "react/jsx-runtime";
21
13
  const exampleDate = new Date();
22
14
  exampleDate.setDate(20);
23
15
  exampleDate.setMonth(exampleDate.getMonth() - 3);
@@ -103,7 +95,7 @@ function NonDefaultControls({
103
95
  key: 'custom',
104
96
  name: __('Custom'),
105
97
  className: 'block-editor-date-format-picker__custom-format-select-control__custom-option',
106
- __experimentalHint: __('Enter your own date format')
98
+ hint: __('Enter your own date format')
107
99
  };
108
100
  const [isCustom, setIsCustom] = useState(() => !!format && !suggestedOptions.some(option => option.format === format));
109
101
  return /*#__PURE__*/_jsxs(VStack, {
@@ -1 +1 @@
1
- {"version":3,"names":["_x","__","dateI18n","humanTimeDiff","useState","createInterpolateElement","TextControl","ExternalLink","VisuallyHidden","ToggleControl","__experimentalVStack","VStack","privateApis","componentsPrivateApis","unlock","jsx","_jsx","jsxs","_jsxs","CustomSelectControlV2Legacy","CustomSelectControl","exampleDate","Date","setDate","setMonth","getMonth","DateFormatPicker","format","defaultFormat","onChange","className","children","as","__nextHasNoMarginBottom","label","help","checked","NonDefaultControls","_suggestedOptions$fin","suggestedFormats","Set","suggestedOptions","map","suggestedFormat","index","key","name","customOption","__experimentalHint","isCustom","setIsCustom","some","option","options","value","find","selectedItem","hideLabelFromVision","Link","href"],"sources":["@wordpress/block-editor/src/components/date-format-picker/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _x, __ } from '@wordpress/i18n';\nimport { dateI18n, humanTimeDiff } from '@wordpress/date';\nimport { useState, createInterpolateElement } from '@wordpress/element';\nimport {\n\tTextControl,\n\tExternalLink,\n\tVisuallyHidden,\n\tToggleControl,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { CustomSelectControlV2Legacy: CustomSelectControl } = unlock(\n\tcomponentsPrivateApis\n);\n\n// So that we illustrate the different formats in the dropdown properly, show a date that is\n// somwhat recent, has a day greater than 12, and a month with more than three letters.\nconst exampleDate = new Date();\nexampleDate.setDate( 20 );\nexampleDate.setMonth( exampleDate.getMonth() - 3 );\nif ( exampleDate.getMonth() === 4 ) {\n\t// May has three letters, so use March.\n\texampleDate.setMonth( 3 );\n}\n\n/**\n * The `DateFormatPicker` component renders controls that let the user choose a\n * _date format_. That is, how they want their dates to be formatted.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/date-format-picker/README.md\n *\n * @param {Object} props\n * @param {string|null} props.format The selected date\n * format. If\n * `null`,\n * _Default_ is\n * selected.\n * @param {string} props.defaultFormat The date format that\n * will be used if the\n * user selects\n * 'Default'.\n * @param {( format: string|null ) => void} props.onChange Called when a\n * selection is\n * made. If `null`,\n * _Default_ is\n * selected.\n */\nexport default function DateFormatPicker( {\n\tformat,\n\tdefaultFormat,\n\tonChange,\n} ) {\n\treturn (\n\t\t<fieldset className=\"block-editor-date-format-picker\">\n\t\t\t<VisuallyHidden as=\"legend\">{ __( 'Date format' ) }</VisuallyHidden>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Default format' ) }\n\t\t\t\thelp={ `${ __( 'Example:' ) } ${ dateI18n(\n\t\t\t\t\tdefaultFormat,\n\t\t\t\t\texampleDate\n\t\t\t\t) }` }\n\t\t\t\tchecked={ ! format }\n\t\t\t\tonChange={ ( checked ) =>\n\t\t\t\t\tonChange( checked ? null : defaultFormat )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ format && (\n\t\t\t\t<NonDefaultControls format={ format } onChange={ onChange } />\n\t\t\t) }\n\t\t</fieldset>\n\t);\n}\n\nfunction NonDefaultControls( { format, onChange } ) {\n\t// Suggest a short format, medium format, long format, and a standardised\n\t// (YYYY-MM-DD) format. The short, medium, and long formats are localised as\n\t// different languages have different ways of writing these. For example, 'F\n\t// j, Y' (April 20, 2022) in American English (en_US) is 'j. F Y' (20. April\n\t// 2022) in German (de). The resultant array is de-duplicated as some\n\t// languages will use the same format string for short, medium, and long\n\t// formats.\n\tconst suggestedFormats = [\n\t\t...new Set( [\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t'Y-m-d',\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'n/j/Y', 'short date format' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'n/j/Y g:i A', 'short date format with time' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'M j, Y', 'medium date format' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'M j, Y g:i A', 'medium date format with time' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'F j, Y', 'long date format' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'M j', 'short date format without the year' ),\n\t\t] ),\n\t];\n\n\tconst suggestedOptions = [\n\t\t...suggestedFormats.map( ( suggestedFormat, index ) => ( {\n\t\t\tkey: `suggested-${ index }`,\n\t\t\tname: dateI18n( suggestedFormat, exampleDate ),\n\t\t\tformat: suggestedFormat,\n\t\t} ) ),\n\t\t{\n\t\t\tkey: 'human-diff',\n\t\t\tname: humanTimeDiff( exampleDate ),\n\t\t\tformat: 'human-diff',\n\t\t},\n\t];\n\n\tconst customOption = {\n\t\tkey: 'custom',\n\t\tname: __( 'Custom' ),\n\t\tclassName:\n\t\t\t'block-editor-date-format-picker__custom-format-select-control__custom-option',\n\t\t__experimentalHint: __( 'Enter your own date format' ),\n\t};\n\n\tconst [ isCustom, setIsCustom ] = useState(\n\t\t() =>\n\t\t\t!! format &&\n\t\t\t! suggestedOptions.some( ( option ) => option.format === format )\n\t);\n\n\treturn (\n\t\t<VStack>\n\t\t\t<CustomSelectControl\n\t\t\t\tlabel={ __( 'Choose a format' ) }\n\t\t\t\toptions={ [ ...suggestedOptions, customOption ] }\n\t\t\t\tvalue={\n\t\t\t\t\tisCustom\n\t\t\t\t\t\t? customOption\n\t\t\t\t\t\t: suggestedOptions.find(\n\t\t\t\t\t\t\t\t( option ) => option.format === format\n\t\t\t\t\t\t ) ?? customOption\n\t\t\t\t}\n\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\tif ( selectedItem === customOption ) {\n\t\t\t\t\t\tsetIsCustom( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetIsCustom( false );\n\t\t\t\t\t\tonChange( selectedItem.format );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t{ isCustom && (\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Custom format' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\thelp={ createInterpolateElement(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Enter a date or time <Link>format string</Link>.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLink: (\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/documentation/article/customize-date-and-time-format/'\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}\n\t\t\t\t\t) }\n\t\t\t\t\tvalue={ format }\n\t\t\t\t\tonChange={ ( value ) => onChange( value ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_x","__","dateI18n","humanTimeDiff","useState","createInterpolateElement","TextControl","ExternalLink","VisuallyHidden","ToggleControl","__experimentalVStack","VStack","CustomSelectControl","jsx","_jsx","jsxs","_jsxs","exampleDate","Date","setDate","setMonth","getMonth","DateFormatPicker","format","defaultFormat","onChange","className","children","as","__nextHasNoMarginBottom","label","help","checked","NonDefaultControls","_suggestedOptions$fin","suggestedFormats","Set","suggestedOptions","map","suggestedFormat","index","key","name","customOption","hint","isCustom","setIsCustom","some","option","options","value","find","selectedItem","hideLabelFromVision","Link","href"],"sources":["@wordpress/block-editor/src/components/date-format-picker/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _x, __ } from '@wordpress/i18n';\nimport { dateI18n, humanTimeDiff } from '@wordpress/date';\nimport { useState, createInterpolateElement } from '@wordpress/element';\nimport {\n\tTextControl,\n\tExternalLink,\n\tVisuallyHidden,\n\tToggleControl,\n\t__experimentalVStack as VStack,\n\tCustomSelectControl,\n} from '@wordpress/components';\n\n// So that we illustrate the different formats in the dropdown properly, show a date that is\n// somwhat recent, has a day greater than 12, and a month with more than three letters.\nconst exampleDate = new Date();\nexampleDate.setDate( 20 );\nexampleDate.setMonth( exampleDate.getMonth() - 3 );\nif ( exampleDate.getMonth() === 4 ) {\n\t// May has three letters, so use March.\n\texampleDate.setMonth( 3 );\n}\n\n/**\n * The `DateFormatPicker` component renders controls that let the user choose a\n * _date format_. That is, how they want their dates to be formatted.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/date-format-picker/README.md\n *\n * @param {Object} props\n * @param {string|null} props.format The selected date\n * format. If\n * `null`,\n * _Default_ is\n * selected.\n * @param {string} props.defaultFormat The date format that\n * will be used if the\n * user selects\n * 'Default'.\n * @param {( format: string|null ) => void} props.onChange Called when a\n * selection is\n * made. If `null`,\n * _Default_ is\n * selected.\n */\nexport default function DateFormatPicker( {\n\tformat,\n\tdefaultFormat,\n\tonChange,\n} ) {\n\treturn (\n\t\t<fieldset className=\"block-editor-date-format-picker\">\n\t\t\t<VisuallyHidden as=\"legend\">{ __( 'Date format' ) }</VisuallyHidden>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Default format' ) }\n\t\t\t\thelp={ `${ __( 'Example:' ) } ${ dateI18n(\n\t\t\t\t\tdefaultFormat,\n\t\t\t\t\texampleDate\n\t\t\t\t) }` }\n\t\t\t\tchecked={ ! format }\n\t\t\t\tonChange={ ( checked ) =>\n\t\t\t\t\tonChange( checked ? null : defaultFormat )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ format && (\n\t\t\t\t<NonDefaultControls format={ format } onChange={ onChange } />\n\t\t\t) }\n\t\t</fieldset>\n\t);\n}\n\nfunction NonDefaultControls( { format, onChange } ) {\n\t// Suggest a short format, medium format, long format, and a standardised\n\t// (YYYY-MM-DD) format. The short, medium, and long formats are localised as\n\t// different languages have different ways of writing these. For example, 'F\n\t// j, Y' (April 20, 2022) in American English (en_US) is 'j. F Y' (20. April\n\t// 2022) in German (de). The resultant array is de-duplicated as some\n\t// languages will use the same format string for short, medium, and long\n\t// formats.\n\tconst suggestedFormats = [\n\t\t...new Set( [\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t'Y-m-d',\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'n/j/Y', 'short date format' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'n/j/Y g:i A', 'short date format with time' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'M j, Y', 'medium date format' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'M j, Y g:i A', 'medium date format with time' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'F j, Y', 'long date format' ),\n\t\t\t/* translators: See https://www.php.net/manual/datetime.format.php */\n\t\t\t_x( 'M j', 'short date format without the year' ),\n\t\t] ),\n\t];\n\n\tconst suggestedOptions = [\n\t\t...suggestedFormats.map( ( suggestedFormat, index ) => ( {\n\t\t\tkey: `suggested-${ index }`,\n\t\t\tname: dateI18n( suggestedFormat, exampleDate ),\n\t\t\tformat: suggestedFormat,\n\t\t} ) ),\n\t\t{\n\t\t\tkey: 'human-diff',\n\t\t\tname: humanTimeDiff( exampleDate ),\n\t\t\tformat: 'human-diff',\n\t\t},\n\t];\n\n\tconst customOption = {\n\t\tkey: 'custom',\n\t\tname: __( 'Custom' ),\n\t\tclassName:\n\t\t\t'block-editor-date-format-picker__custom-format-select-control__custom-option',\n\t\thint: __( 'Enter your own date format' ),\n\t};\n\n\tconst [ isCustom, setIsCustom ] = useState(\n\t\t() =>\n\t\t\t!! format &&\n\t\t\t! suggestedOptions.some( ( option ) => option.format === format )\n\t);\n\n\treturn (\n\t\t<VStack>\n\t\t\t<CustomSelectControl\n\t\t\t\tlabel={ __( 'Choose a format' ) }\n\t\t\t\toptions={ [ ...suggestedOptions, customOption ] }\n\t\t\t\tvalue={\n\t\t\t\t\tisCustom\n\t\t\t\t\t\t? customOption\n\t\t\t\t\t\t: suggestedOptions.find(\n\t\t\t\t\t\t\t\t( option ) => option.format === format\n\t\t\t\t\t\t ) ?? customOption\n\t\t\t\t}\n\t\t\t\tonChange={ ( { selectedItem } ) => {\n\t\t\t\t\tif ( selectedItem === customOption ) {\n\t\t\t\t\t\tsetIsCustom( true );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetIsCustom( false );\n\t\t\t\t\t\tonChange( selectedItem.format );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t{ isCustom && (\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Custom format' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\thelp={ createInterpolateElement(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Enter a date or time <Link>format string</Link>.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tLink: (\n\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/documentation/article/customize-date-and-time-format/'\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}\n\t\t\t\t\t) }\n\t\t\t\t\tvalue={ format }\n\t\t\t\t\tonChange={ ( value ) => onChange( value ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -30,12 +30,14 @@ export default function DefaultBlockAppender({
30
30
  const {
31
31
  showPrompt,
32
32
  isLocked,
33
- placeholder
33
+ placeholder,
34
+ isManualGrid
34
35
  } = useSelect(select => {
35
36
  const {
36
37
  getBlockCount,
37
38
  getSettings,
38
- getTemplateLock
39
+ getTemplateLock,
40
+ getBlockAttributes
39
41
  } = select(blockEditorStore);
40
42
  const isEmpty = !getBlockCount(rootClientId);
41
43
  const {
@@ -44,14 +46,15 @@ export default function DefaultBlockAppender({
44
46
  return {
45
47
  showPrompt: isEmpty,
46
48
  isLocked: !!getTemplateLock(rootClientId),
47
- placeholder: bodyPlaceholder
49
+ placeholder: bodyPlaceholder,
50
+ isManualGrid: getBlockAttributes(rootClientId)?.layout?.isManualPlacement
48
51
  };
49
52
  }, [rootClientId]);
50
53
  const {
51
54
  insertDefaultBlock,
52
55
  startTyping
53
56
  } = useDispatch(blockEditorStore);
54
- if (isLocked) {
57
+ if (isLocked || isManualGrid) {
55
58
  return null;
56
59
  }
57
60
  const value = decodeEntities(placeholder) || __('Type / to choose a block');
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","decodeEntities","useSelect","useDispatch","ENTER","SPACE","Inserter","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","ZWNBSP","DefaultBlockAppender","rootClientId","showPrompt","isLocked","placeholder","select","getBlockCount","getSettings","getTemplateLock","isEmpty","bodyPlaceholder","insertDefaultBlock","startTyping","value","onAppend","undefined","className","children","tabIndex","role","onKeyDown","event","keyCode","onClick","onFocus","position","isAppender","__experimentalIsQuick"],"sources":["@wordpress/block-editor/src/components/default-block-appender/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Zero width non-breaking space, used as padding for the paragraph when it is\n * empty.\n */\nexport const ZWNBSP = '\\ufeff';\n\nexport default function DefaultBlockAppender( { rootClientId } ) {\n\tconst { showPrompt, isLocked, placeholder } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockCount, getSettings, getTemplateLock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst isEmpty = ! getBlockCount( rootClientId );\n\t\t\tconst { bodyPlaceholder } = getSettings();\n\n\t\t\treturn {\n\t\t\t\tshowPrompt: isEmpty,\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\tplaceholder: bodyPlaceholder,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst { insertDefaultBlock, startTyping } = useDispatch( blockEditorStore );\n\n\tif ( isLocked ) {\n\t\treturn null;\n\t}\n\n\tconst value =\n\t\tdecodeEntities( placeholder ) || __( 'Type / to choose a block' );\n\n\tconst onAppend = () => {\n\t\tinsertDefaultBlock( undefined, rootClientId );\n\t\tstartTyping();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tdata-root-client-id={ rootClientId || '' }\n\t\t\tclassName={ clsx( 'block-editor-default-block-appender', {\n\t\t\t\t'has-visible-prompt': showPrompt,\n\t\t\t} ) }\n\t\t>\n\t\t\t<p\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\t// We want this element to be styled as a paragraph by themes.\n\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label={ __( 'Add default block' ) }\n\t\t\t\t// A wrapping container for this one already has the wp-block className.\n\t\t\t\tclassName=\"block-editor-default-block-appender__content\"\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\tif ( ENTER === event.keyCode || SPACE === event.keyCode ) {\n\t\t\t\t\t\tonAppend();\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tonClick={ () => onAppend() }\n\t\t\t\tonFocus={ () => {\n\t\t\t\t\tif ( showPrompt ) {\n\t\t\t\t\t\tonAppend();\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ showPrompt ? value : ZWNBSP }\n\t\t\t</p>\n\t\t\t<Inserter\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tposition=\"bottom right\"\n\t\t\t\tisAppender\n\t\t\t\t__experimentalIsQuick\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,EAAEC,KAAK,QAAQ,qBAAqB;;AAElD;AACA;AACA;AACA,OAAOC,QAAQ,MAAM,aAAa;AAClC,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;;AAEvD;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAIA,OAAO,MAAMC,MAAM,GAAG,QAAQ;AAE9B,eAAe,SAASC,oBAAoBA,CAAE;EAAEC;AAAa,CAAC,EAAG;EAChE,MAAM;IAAEC,UAAU;IAAEC,QAAQ;IAAEC;EAAY,CAAC,GAAGhB,SAAS,CACpDiB,MAAM,IAAM;IACb,MAAM;MAAEC,aAAa;MAAEC,WAAW;MAAEC;IAAgB,CAAC,GACpDH,MAAM,CAAEX,gBAAiB,CAAC;IAE3B,MAAMe,OAAO,GAAG,CAAEH,aAAa,CAAEL,YAAa,CAAC;IAC/C,MAAM;MAAES;IAAgB,CAAC,GAAGH,WAAW,CAAC,CAAC;IAEzC,OAAO;MACNL,UAAU,EAAEO,OAAO;MACnBN,QAAQ,EAAE,CAAC,CAAEK,eAAe,CAAEP,YAAa,CAAC;MAC5CG,WAAW,EAAEM;IACd,CAAC;EACF,CAAC,EACD,CAAET,YAAY,CACf,CAAC;EAED,MAAM;IAAEU,kBAAkB;IAAEC;EAAY,CAAC,GAAGvB,WAAW,CAAEK,gBAAiB,CAAC;EAE3E,IAAKS,QAAQ,EAAG;IACf,OAAO,IAAI;EACZ;EAEA,MAAMU,KAAK,GACV1B,cAAc,CAAEiB,WAAY,CAAC,IAAIlB,EAAE,CAAE,0BAA2B,CAAC;EAElE,MAAM4B,QAAQ,GAAGA,CAAA,KAAM;IACtBH,kBAAkB,CAAEI,SAAS,EAAEd,YAAa,CAAC;IAC7CW,WAAW,CAAC,CAAC;EACd,CAAC;EAED,oBACCd,KAAA;IACC,uBAAsBG,YAAY,IAAI,EAAI;IAC1Ce,SAAS,EAAG/B,IAAI,CAAE,qCAAqC,EAAE;MACxD,oBAAoB,EAAEiB;IACvB,CAAE,CAAG;IAAAe,QAAA,gBAELrB,IAAA;MACCsB,QAAQ,EAAC;MACT;MACA;MAAA;MACAC,IAAI,EAAC,QAAQ;MACb,cAAajC,EAAE,CAAE,mBAAoB;MACrC;MAAA;MACA8B,SAAS,EAAC,8CAA8C;MACxDI,SAAS,EAAKC,KAAK,IAAM;QACxB,IAAK/B,KAAK,KAAK+B,KAAK,CAACC,OAAO,IAAI/B,KAAK,KAAK8B,KAAK,CAACC,OAAO,EAAG;UACzDR,QAAQ,CAAC,CAAC;QACX;MACD,CAAG;MACHS,OAAO,EAAGA,CAAA,KAAMT,QAAQ,CAAC,CAAG;MAC5BU,OAAO,EAAGA,CAAA,KAAM;QACf,IAAKtB,UAAU,EAAG;UACjBY,QAAQ,CAAC,CAAC;QACX;MACD,CAAG;MAAAG,QAAA,EAEDf,UAAU,GAAGW,KAAK,GAAGd;IAAM,CAC3B,CAAC,eACJH,IAAA,CAACJ,QAAQ;MACRS,YAAY,EAAGA,YAAc;MAC7BwB,QAAQ,EAAC,cAAc;MACvBC,UAAU;MACVC,qBAAqB;IAAA,CACrB,CAAC;EAAA,CACE,CAAC;AAER","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__","decodeEntities","useSelect","useDispatch","ENTER","SPACE","Inserter","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","ZWNBSP","DefaultBlockAppender","rootClientId","showPrompt","isLocked","placeholder","isManualGrid","select","getBlockCount","getSettings","getTemplateLock","getBlockAttributes","isEmpty","bodyPlaceholder","layout","isManualPlacement","insertDefaultBlock","startTyping","value","onAppend","undefined","className","children","tabIndex","role","onKeyDown","event","keyCode","onClick","onFocus","position","isAppender","__experimentalIsQuick"],"sources":["@wordpress/block-editor/src/components/default-block-appender/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Zero width non-breaking space, used as padding for the paragraph when it is\n * empty.\n */\nexport const ZWNBSP = '\\ufeff';\n\nexport default function DefaultBlockAppender( { rootClientId } ) {\n\tconst { showPrompt, isLocked, placeholder, isManualGrid } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetSettings,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst isEmpty = ! getBlockCount( rootClientId );\n\t\t\tconst { bodyPlaceholder } = getSettings();\n\n\t\t\treturn {\n\t\t\t\tshowPrompt: isEmpty,\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\tplaceholder: bodyPlaceholder,\n\t\t\t\tisManualGrid:\n\t\t\t\t\tgetBlockAttributes( rootClientId )?.layout\n\t\t\t\t\t\t?.isManualPlacement,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst { insertDefaultBlock, startTyping } = useDispatch( blockEditorStore );\n\n\tif ( isLocked || isManualGrid ) {\n\t\treturn null;\n\t}\n\n\tconst value =\n\t\tdecodeEntities( placeholder ) || __( 'Type / to choose a block' );\n\n\tconst onAppend = () => {\n\t\tinsertDefaultBlock( undefined, rootClientId );\n\t\tstartTyping();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tdata-root-client-id={ rootClientId || '' }\n\t\t\tclassName={ clsx( 'block-editor-default-block-appender', {\n\t\t\t\t'has-visible-prompt': showPrompt,\n\t\t\t} ) }\n\t\t>\n\t\t\t<p\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\t// We want this element to be styled as a paragraph by themes.\n\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label={ __( 'Add default block' ) }\n\t\t\t\t// A wrapping container for this one already has the wp-block className.\n\t\t\t\tclassName=\"block-editor-default-block-appender__content\"\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\tif ( ENTER === event.keyCode || SPACE === event.keyCode ) {\n\t\t\t\t\t\tonAppend();\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tonClick={ () => onAppend() }\n\t\t\t\tonFocus={ () => {\n\t\t\t\t\tif ( showPrompt ) {\n\t\t\t\t\t\tonAppend();\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ showPrompt ? value : ZWNBSP }\n\t\t\t</p>\n\t\t\t<Inserter\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tposition=\"bottom right\"\n\t\t\t\tisAppender\n\t\t\t\t__experimentalIsQuick\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,EAAEC,KAAK,QAAQ,qBAAqB;;AAElD;AACA;AACA;AACA,OAAOC,QAAQ,MAAM,aAAa;AAClC,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;;AAEvD;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAIA,OAAO,MAAMC,MAAM,GAAG,QAAQ;AAE9B,eAAe,SAASC,oBAAoBA,CAAE;EAAEC;AAAa,CAAC,EAAG;EAChE,MAAM;IAAEC,UAAU;IAAEC,QAAQ;IAAEC,WAAW;IAAEC;EAAa,CAAC,GAAGjB,SAAS,CAClEkB,MAAM,IAAM;IACb,MAAM;MACLC,aAAa;MACbC,WAAW;MACXC,eAAe;MACfC;IACD,CAAC,GAAGJ,MAAM,CAAEZ,gBAAiB,CAAC;IAE9B,MAAMiB,OAAO,GAAG,CAAEJ,aAAa,CAAEN,YAAa,CAAC;IAC/C,MAAM;MAAEW;IAAgB,CAAC,GAAGJ,WAAW,CAAC,CAAC;IAEzC,OAAO;MACNN,UAAU,EAAES,OAAO;MACnBR,QAAQ,EAAE,CAAC,CAAEM,eAAe,CAAER,YAAa,CAAC;MAC5CG,WAAW,EAAEQ,eAAe;MAC5BP,YAAY,EACXK,kBAAkB,CAAET,YAAa,CAAC,EAAEY,MAAM,EACvCC;IACL,CAAC;EACF,CAAC,EACD,CAAEb,YAAY,CACf,CAAC;EAED,MAAM;IAAEc,kBAAkB;IAAEC;EAAY,CAAC,GAAG3B,WAAW,CAAEK,gBAAiB,CAAC;EAE3E,IAAKS,QAAQ,IAAIE,YAAY,EAAG;IAC/B,OAAO,IAAI;EACZ;EAEA,MAAMY,KAAK,GACV9B,cAAc,CAAEiB,WAAY,CAAC,IAAIlB,EAAE,CAAE,0BAA2B,CAAC;EAElE,MAAMgC,QAAQ,GAAGA,CAAA,KAAM;IACtBH,kBAAkB,CAAEI,SAAS,EAAElB,YAAa,CAAC;IAC7Ce,WAAW,CAAC,CAAC;EACd,CAAC;EAED,oBACClB,KAAA;IACC,uBAAsBG,YAAY,IAAI,EAAI;IAC1CmB,SAAS,EAAGnC,IAAI,CAAE,qCAAqC,EAAE;MACxD,oBAAoB,EAAEiB;IACvB,CAAE,CAAG;IAAAmB,QAAA,gBAELzB,IAAA;MACC0B,QAAQ,EAAC;MACT;MACA;MAAA;MACAC,IAAI,EAAC,QAAQ;MACb,cAAarC,EAAE,CAAE,mBAAoB;MACrC;MAAA;MACAkC,SAAS,EAAC,8CAA8C;MACxDI,SAAS,EAAKC,KAAK,IAAM;QACxB,IAAKnC,KAAK,KAAKmC,KAAK,CAACC,OAAO,IAAInC,KAAK,KAAKkC,KAAK,CAACC,OAAO,EAAG;UACzDR,QAAQ,CAAC,CAAC;QACX;MACD,CAAG;MACHS,OAAO,EAAGA,CAAA,KAAMT,QAAQ,CAAC,CAAG;MAC5BU,OAAO,EAAGA,CAAA,KAAM;QACf,IAAK1B,UAAU,EAAG;UACjBgB,QAAQ,CAAC,CAAC;QACX;MACD,CAAG;MAAAG,QAAA,EAEDnB,UAAU,GAAGe,KAAK,GAAGlB;IAAM,CAC3B,CAAC,eACJH,IAAA,CAACJ,QAAQ;MACRS,YAAY,EAAGA,YAAc;MAC7B4B,QAAQ,EAAC,cAAc;MACvBC,UAAU;MACVC,qBAAqB;IAAA,CACrB,CAAC;EAAA,CACE,CAAC;AAER","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { privateApis as componentsPrivateApis } from '@wordpress/components';
4
+ import { CustomSelectControl } from '@wordpress/components';
5
5
  import { useMemo } from '@wordpress/element';
6
6
  import { __, sprintf } from '@wordpress/i18n';
7
7
 
@@ -9,11 +9,7 @@ import { __, sprintf } from '@wordpress/i18n';
9
9
  * Internal dependencies
10
10
  */
11
11
  import { getFontStylesAndWeights } from '../../utils/get-font-styles-and-weights';
12
- import { unlock } from '../../lock-unlock';
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- const {
15
- CustomSelectControlV2Legacy: CustomSelectControl
16
- } = unlock(componentsPrivateApis);
12
+
17
13
  /**
18
14
  * Adjusts font appearance field label in case either font styles or weights
19
15
  * are disabled.
@@ -22,6 +18,7 @@ const {
22
18
  * @param {boolean} hasFontWeights Whether font weights are enabled and present.
23
19
  * @return {string} A label representing what font appearance is being edited.
24
20
  */
21
+ import { jsx as _jsx } from "react/jsx-runtime";
25
22
  const getFontAppearanceLabel = (hasFontStyles, hasFontWeights) => {
26
23
  if (!hasFontStyles) {
27
24
  return __('Font weight');
@@ -1 +1 @@
1
- {"version":3,"names":["privateApis","componentsPrivateApis","useMemo","__","sprintf","getFontStylesAndWeights","unlock","jsx","_jsx","CustomSelectControlV2Legacy","CustomSelectControl","getFontAppearanceLabel","hasFontStyles","hasFontWeights","FontAppearanceControl","props","onChange","fontFamilyFaces","value","fontStyle","fontWeight","otherProps","hasStylesOrWeights","label","defaultOption","key","name","style","undefined","fontStyles","fontWeights","combinedStyleAndWeightOptions","combineOptions","combinedOptions","push","styleOptions","forEach","weightOptions","selectOptions","options","currentSelection","find","option","getDescribedBy","className","describedBy","selectedItem"],"sources":["@wordpress/block-editor/src/components/font-appearance-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { getFontStylesAndWeights } from '../../utils/get-font-styles-and-weights';\nimport { unlock } from '../../lock-unlock';\n\nconst { CustomSelectControlV2Legacy: CustomSelectControl } = unlock(\n\tcomponentsPrivateApis\n);\n/**\n * Adjusts font appearance field label in case either font styles or weights\n * are disabled.\n *\n * @param {boolean} hasFontStyles Whether font styles are enabled and present.\n * @param {boolean} hasFontWeights Whether font weights are enabled and present.\n * @return {string} A label representing what font appearance is being edited.\n */\nconst getFontAppearanceLabel = ( hasFontStyles, hasFontWeights ) => {\n\tif ( ! hasFontStyles ) {\n\t\treturn __( 'Font weight' );\n\t}\n\n\tif ( ! hasFontWeights ) {\n\t\treturn __( 'Font style' );\n\t}\n\n\treturn __( 'Appearance' );\n};\n\n/**\n * Control to display font style and weight options of the active font.\n *\n * @param {Object} props Component props.\n *\n * @return {Element} Font appearance control.\n */\nexport default function FontAppearanceControl( props ) {\n\tconst {\n\t\tonChange,\n\t\thasFontStyles = true,\n\t\thasFontWeights = true,\n\t\tfontFamilyFaces,\n\t\tvalue: { fontStyle, fontWeight },\n\t\t...otherProps\n\t} = props;\n\tconst hasStylesOrWeights = hasFontStyles || hasFontWeights;\n\tconst label = getFontAppearanceLabel( hasFontStyles, hasFontWeights );\n\tconst defaultOption = {\n\t\tkey: 'default',\n\t\tname: __( 'Default' ),\n\t\tstyle: { fontStyle: undefined, fontWeight: undefined },\n\t};\n\tconst { fontStyles, fontWeights, combinedStyleAndWeightOptions } =\n\t\tgetFontStylesAndWeights( fontFamilyFaces );\n\n\t// Generates select options for combined font styles and weights.\n\tconst combineOptions = () => {\n\t\tconst combinedOptions = [ defaultOption ];\n\t\tif ( combinedStyleAndWeightOptions ) {\n\t\t\tcombinedOptions.push( ...combinedStyleAndWeightOptions );\n\t\t}\n\t\treturn combinedOptions;\n\t};\n\n\t// Generates select options for font styles only.\n\tconst styleOptions = () => {\n\t\tconst combinedOptions = [ defaultOption ];\n\t\tfontStyles.forEach( ( { name, value } ) => {\n\t\t\tcombinedOptions.push( {\n\t\t\t\tkey: value,\n\t\t\t\tname,\n\t\t\t\tstyle: { fontStyle: value, fontWeight: undefined },\n\t\t\t} );\n\t\t} );\n\t\treturn combinedOptions;\n\t};\n\n\t// Generates select options for font weights only.\n\tconst weightOptions = () => {\n\t\tconst combinedOptions = [ defaultOption ];\n\t\tfontWeights.forEach( ( { name, value } ) => {\n\t\t\tcombinedOptions.push( {\n\t\t\t\tkey: value,\n\t\t\t\tname,\n\t\t\t\tstyle: { fontStyle: undefined, fontWeight: value },\n\t\t\t} );\n\t\t} );\n\t\treturn combinedOptions;\n\t};\n\n\t// Map font styles and weights to select options.\n\tconst selectOptions = useMemo( () => {\n\t\t// Display combined available font style and weight options.\n\t\tif ( hasFontStyles && hasFontWeights ) {\n\t\t\treturn combineOptions();\n\t\t}\n\n\t\t// Display only font style options or font weight options.\n\t\treturn hasFontStyles ? styleOptions() : weightOptions();\n\t}, [\n\t\tprops.options,\n\t\tfontStyles,\n\t\tfontWeights,\n\t\tcombinedStyleAndWeightOptions,\n\t] );\n\n\t// Find current selection by comparing font style & weight against options,\n\t// and fall back to the Default option if there is no matching option.\n\tconst currentSelection =\n\t\tselectOptions.find(\n\t\t\t( option ) =>\n\t\t\t\toption.style.fontStyle === fontStyle &&\n\t\t\t\toption.style.fontWeight === fontWeight\n\t\t) || selectOptions[ 0 ];\n\n\t// Adjusts screen reader description based on styles or weights.\n\tconst getDescribedBy = () => {\n\t\tif ( ! currentSelection ) {\n\t\t\treturn __( 'No selected font appearance' );\n\t\t}\n\n\t\tif ( ! hasFontStyles ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: Currently selected font weight.\n\t\t\t\t__( 'Currently selected font weight: %s' ),\n\t\t\t\tcurrentSelection.name\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasFontWeights ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: Currently selected font style.\n\t\t\t\t__( 'Currently selected font style: %s' ),\n\t\t\t\tcurrentSelection.name\n\t\t\t);\n\t\t}\n\n\t\treturn sprintf(\n\t\t\t// translators: %s: Currently selected font appearance.\n\t\t\t__( 'Currently selected font appearance: %s' ),\n\t\t\tcurrentSelection.name\n\t\t);\n\t};\n\n\treturn (\n\t\thasStylesOrWeights && (\n\t\t\t<CustomSelectControl\n\t\t\t\t{ ...otherProps }\n\t\t\t\tclassName=\"components-font-appearance-control\"\n\t\t\t\tlabel={ label }\n\t\t\t\tdescribedBy={ getDescribedBy() }\n\t\t\t\toptions={ selectOptions }\n\t\t\t\tvalue={ currentSelection }\n\t\t\t\tonChange={ ( { selectedItem } ) =>\n\t\t\t\t\tonChange( selectedItem.style )\n\t\t\t\t}\n\t\t\t/>\n\t\t)\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,IAAIC,qBAAqB,QAAQ,uBAAuB;AAC5E,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;;AAE7C;AACA;AACA;AACA,SAASC,uBAAuB,QAAQ,yCAAyC;AACjF,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,MAAM;EAAEC,2BAA2B,EAAEC;AAAoB,CAAC,GAAGJ,MAAM,CAClEL,qBACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMU,sBAAsB,GAAGA,CAAEC,aAAa,EAAEC,cAAc,KAAM;EACnE,IAAK,CAAED,aAAa,EAAG;IACtB,OAAOT,EAAE,CAAE,aAAc,CAAC;EAC3B;EAEA,IAAK,CAAEU,cAAc,EAAG;IACvB,OAAOV,EAAE,CAAE,YAAa,CAAC;EAC1B;EAEA,OAAOA,EAAE,CAAE,YAAa,CAAC;AAC1B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASW,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAM;IACLC,QAAQ;IACRJ,aAAa,GAAG,IAAI;IACpBC,cAAc,GAAG,IAAI;IACrBI,eAAe;IACfC,KAAK,EAAE;MAAEC,SAAS;MAAEC;IAAW,CAAC;IAChC,GAAGC;EACJ,CAAC,GAAGN,KAAK;EACT,MAAMO,kBAAkB,GAAGV,aAAa,IAAIC,cAAc;EAC1D,MAAMU,KAAK,GAAGZ,sBAAsB,CAAEC,aAAa,EAAEC,cAAe,CAAC;EACrE,MAAMW,aAAa,GAAG;IACrBC,GAAG,EAAE,SAAS;IACdC,IAAI,EAAEvB,EAAE,CAAE,SAAU,CAAC;IACrBwB,KAAK,EAAE;MAAER,SAAS,EAAES,SAAS;MAAER,UAAU,EAAEQ;IAAU;EACtD,CAAC;EACD,MAAM;IAAEC,UAAU;IAAEC,WAAW;IAAEC;EAA8B,CAAC,GAC/D1B,uBAAuB,CAAEY,eAAgB,CAAC;;EAE3C;EACA,MAAMe,cAAc,GAAGA,CAAA,KAAM;IAC5B,MAAMC,eAAe,GAAG,CAAET,aAAa,CAAE;IACzC,IAAKO,6BAA6B,EAAG;MACpCE,eAAe,CAACC,IAAI,CAAE,GAAGH,6BAA8B,CAAC;IACzD;IACA,OAAOE,eAAe;EACvB,CAAC;;EAED;EACA,MAAME,YAAY,GAAGA,CAAA,KAAM;IAC1B,MAAMF,eAAe,GAAG,CAAET,aAAa,CAAE;IACzCK,UAAU,CAACO,OAAO,CAAE,CAAE;MAAEV,IAAI;MAAER;IAAM,CAAC,KAAM;MAC1Ce,eAAe,CAACC,IAAI,CAAE;QACrBT,GAAG,EAAEP,KAAK;QACVQ,IAAI;QACJC,KAAK,EAAE;UAAER,SAAS,EAAED,KAAK;UAAEE,UAAU,EAAEQ;QAAU;MAClD,CAAE,CAAC;IACJ,CAAE,CAAC;IACH,OAAOK,eAAe;EACvB,CAAC;;EAED;EACA,MAAMI,aAAa,GAAGA,CAAA,KAAM;IAC3B,MAAMJ,eAAe,GAAG,CAAET,aAAa,CAAE;IACzCM,WAAW,CAACM,OAAO,CAAE,CAAE;MAAEV,IAAI;MAAER;IAAM,CAAC,KAAM;MAC3Ce,eAAe,CAACC,IAAI,CAAE;QACrBT,GAAG,EAAEP,KAAK;QACVQ,IAAI;QACJC,KAAK,EAAE;UAAER,SAAS,EAAES,SAAS;UAAER,UAAU,EAAEF;QAAM;MAClD,CAAE,CAAC;IACJ,CAAE,CAAC;IACH,OAAOe,eAAe;EACvB,CAAC;;EAED;EACA,MAAMK,aAAa,GAAGpC,OAAO,CAAE,MAAM;IACpC;IACA,IAAKU,aAAa,IAAIC,cAAc,EAAG;MACtC,OAAOmB,cAAc,CAAC,CAAC;IACxB;;IAEA;IACA,OAAOpB,aAAa,GAAGuB,YAAY,CAAC,CAAC,GAAGE,aAAa,CAAC,CAAC;EACxD,CAAC,EAAE,CACFtB,KAAK,CAACwB,OAAO,EACbV,UAAU,EACVC,WAAW,EACXC,6BAA6B,CAC5B,CAAC;;EAEH;EACA;EACA,MAAMS,gBAAgB,GACrBF,aAAa,CAACG,IAAI,CACfC,MAAM,IACPA,MAAM,CAACf,KAAK,CAACR,SAAS,KAAKA,SAAS,IACpCuB,MAAM,CAACf,KAAK,CAACP,UAAU,KAAKA,UAC9B,CAAC,IAAIkB,aAAa,CAAE,CAAC,CAAE;;EAExB;EACA,MAAMK,cAAc,GAAGA,CAAA,KAAM;IAC5B,IAAK,CAAEH,gBAAgB,EAAG;MACzB,OAAOrC,EAAE,CAAE,6BAA8B,CAAC;IAC3C;IAEA,IAAK,CAAES,aAAa,EAAG;MACtB,OAAOR,OAAO;MACb;MACAD,EAAE,CAAE,oCAAqC,CAAC,EAC1CqC,gBAAgB,CAACd,IAClB,CAAC;IACF;IAEA,IAAK,CAAEb,cAAc,EAAG;MACvB,OAAOT,OAAO;MACb;MACAD,EAAE,CAAE,mCAAoC,CAAC,EACzCqC,gBAAgB,CAACd,IAClB,CAAC;IACF;IAEA,OAAOtB,OAAO;IACb;IACAD,EAAE,CAAE,wCAAyC,CAAC,EAC9CqC,gBAAgB,CAACd,IAClB,CAAC;EACF,CAAC;EAED,OACCJ,kBAAkB,iBACjBd,IAAA,CAACE,mBAAmB;IAAA,GACdW,UAAU;IACfuB,SAAS,EAAC,oCAAoC;IAC9CrB,KAAK,EAAGA,KAAO;IACfsB,WAAW,EAAGF,cAAc,CAAC,CAAG;IAChCJ,OAAO,EAAGD,aAAe;IACzBpB,KAAK,EAAGsB,gBAAkB;IAC1BxB,QAAQ,EAAGA,CAAE;MAAE8B;IAAa,CAAC,KAC5B9B,QAAQ,CAAE8B,YAAY,CAACnB,KAAM;EAC7B,CACD,CACD;AAEH","ignoreList":[]}
1
+ {"version":3,"names":["CustomSelectControl","useMemo","__","sprintf","getFontStylesAndWeights","jsx","_jsx","getFontAppearanceLabel","hasFontStyles","hasFontWeights","FontAppearanceControl","props","onChange","fontFamilyFaces","value","fontStyle","fontWeight","otherProps","hasStylesOrWeights","label","defaultOption","key","name","style","undefined","fontStyles","fontWeights","combinedStyleAndWeightOptions","combineOptions","combinedOptions","push","styleOptions","forEach","weightOptions","selectOptions","options","currentSelection","find","option","getDescribedBy","className","describedBy","selectedItem"],"sources":["@wordpress/block-editor/src/components/font-appearance-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { CustomSelectControl } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { getFontStylesAndWeights } from '../../utils/get-font-styles-and-weights';\n\n/**\n * Adjusts font appearance field label in case either font styles or weights\n * are disabled.\n *\n * @param {boolean} hasFontStyles Whether font styles are enabled and present.\n * @param {boolean} hasFontWeights Whether font weights are enabled and present.\n * @return {string} A label representing what font appearance is being edited.\n */\nconst getFontAppearanceLabel = ( hasFontStyles, hasFontWeights ) => {\n\tif ( ! hasFontStyles ) {\n\t\treturn __( 'Font weight' );\n\t}\n\n\tif ( ! hasFontWeights ) {\n\t\treturn __( 'Font style' );\n\t}\n\n\treturn __( 'Appearance' );\n};\n\n/**\n * Control to display font style and weight options of the active font.\n *\n * @param {Object} props Component props.\n *\n * @return {Element} Font appearance control.\n */\nexport default function FontAppearanceControl( props ) {\n\tconst {\n\t\tonChange,\n\t\thasFontStyles = true,\n\t\thasFontWeights = true,\n\t\tfontFamilyFaces,\n\t\tvalue: { fontStyle, fontWeight },\n\t\t...otherProps\n\t} = props;\n\tconst hasStylesOrWeights = hasFontStyles || hasFontWeights;\n\tconst label = getFontAppearanceLabel( hasFontStyles, hasFontWeights );\n\tconst defaultOption = {\n\t\tkey: 'default',\n\t\tname: __( 'Default' ),\n\t\tstyle: { fontStyle: undefined, fontWeight: undefined },\n\t};\n\tconst { fontStyles, fontWeights, combinedStyleAndWeightOptions } =\n\t\tgetFontStylesAndWeights( fontFamilyFaces );\n\n\t// Generates select options for combined font styles and weights.\n\tconst combineOptions = () => {\n\t\tconst combinedOptions = [ defaultOption ];\n\t\tif ( combinedStyleAndWeightOptions ) {\n\t\t\tcombinedOptions.push( ...combinedStyleAndWeightOptions );\n\t\t}\n\t\treturn combinedOptions;\n\t};\n\n\t// Generates select options for font styles only.\n\tconst styleOptions = () => {\n\t\tconst combinedOptions = [ defaultOption ];\n\t\tfontStyles.forEach( ( { name, value } ) => {\n\t\t\tcombinedOptions.push( {\n\t\t\t\tkey: value,\n\t\t\t\tname,\n\t\t\t\tstyle: { fontStyle: value, fontWeight: undefined },\n\t\t\t} );\n\t\t} );\n\t\treturn combinedOptions;\n\t};\n\n\t// Generates select options for font weights only.\n\tconst weightOptions = () => {\n\t\tconst combinedOptions = [ defaultOption ];\n\t\tfontWeights.forEach( ( { name, value } ) => {\n\t\t\tcombinedOptions.push( {\n\t\t\t\tkey: value,\n\t\t\t\tname,\n\t\t\t\tstyle: { fontStyle: undefined, fontWeight: value },\n\t\t\t} );\n\t\t} );\n\t\treturn combinedOptions;\n\t};\n\n\t// Map font styles and weights to select options.\n\tconst selectOptions = useMemo( () => {\n\t\t// Display combined available font style and weight options.\n\t\tif ( hasFontStyles && hasFontWeights ) {\n\t\t\treturn combineOptions();\n\t\t}\n\n\t\t// Display only font style options or font weight options.\n\t\treturn hasFontStyles ? styleOptions() : weightOptions();\n\t}, [\n\t\tprops.options,\n\t\tfontStyles,\n\t\tfontWeights,\n\t\tcombinedStyleAndWeightOptions,\n\t] );\n\n\t// Find current selection by comparing font style & weight against options,\n\t// and fall back to the Default option if there is no matching option.\n\tconst currentSelection =\n\t\tselectOptions.find(\n\t\t\t( option ) =>\n\t\t\t\toption.style.fontStyle === fontStyle &&\n\t\t\t\toption.style.fontWeight === fontWeight\n\t\t) || selectOptions[ 0 ];\n\n\t// Adjusts screen reader description based on styles or weights.\n\tconst getDescribedBy = () => {\n\t\tif ( ! currentSelection ) {\n\t\t\treturn __( 'No selected font appearance' );\n\t\t}\n\n\t\tif ( ! hasFontStyles ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: Currently selected font weight.\n\t\t\t\t__( 'Currently selected font weight: %s' ),\n\t\t\t\tcurrentSelection.name\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasFontWeights ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: Currently selected font style.\n\t\t\t\t__( 'Currently selected font style: %s' ),\n\t\t\t\tcurrentSelection.name\n\t\t\t);\n\t\t}\n\n\t\treturn sprintf(\n\t\t\t// translators: %s: Currently selected font appearance.\n\t\t\t__( 'Currently selected font appearance: %s' ),\n\t\t\tcurrentSelection.name\n\t\t);\n\t};\n\n\treturn (\n\t\thasStylesOrWeights && (\n\t\t\t<CustomSelectControl\n\t\t\t\t{ ...otherProps }\n\t\t\t\tclassName=\"components-font-appearance-control\"\n\t\t\t\tlabel={ label }\n\t\t\t\tdescribedBy={ getDescribedBy() }\n\t\t\t\toptions={ selectOptions }\n\t\t\t\tvalue={ currentSelection }\n\t\t\t\tonChange={ ( { selectedItem } ) =>\n\t\t\t\t\tonChange( selectedItem.style )\n\t\t\t\t}\n\t\t\t/>\n\t\t)\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -346,6 +346,7 @@ function BackgroundSizeControls({
346
346
  const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
347
347
  const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
348
348
  const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
349
+ const attachmentValue = style?.background?.backgroundAttachment || inheritedValue?.background?.backgroundAttachment;
349
350
 
350
351
  /*
351
352
  * An `undefined` value is replaced with any supplied
@@ -405,8 +406,9 @@ function BackgroundSizeControls({
405
406
  onChange(setImmutably(style, ['background', 'backgroundPosition'], coordsToBackgroundPosition(next)));
406
407
  };
407
408
  const toggleIsRepeated = () => onChange(setImmutably(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
409
+ const toggleScrollWithPage = () => onChange(setImmutably(style, ['background', 'backgroundAttachment'], attachmentValue === 'fixed' ? 'scroll' : 'fixed'));
408
410
  return /*#__PURE__*/_jsxs(VStack, {
409
- spacing: 3,
411
+ spacing: 4,
410
412
  className: "single-column",
411
413
  children: [/*#__PURE__*/_jsx(FocalPointPicker, {
412
414
  __next40pxDefaultSize: true,
@@ -415,6 +417,11 @@ function BackgroundSizeControls({
415
417
  url: getResolvedThemeFilePath(imageValue, themeFileURIs),
416
418
  value: backgroundPositionToCoords(positionValue),
417
419
  onChange: updateBackgroundPosition
420
+ }), /*#__PURE__*/_jsx(ToggleControl, {
421
+ label: __('Fixed background'),
422
+ checked: attachmentValue === 'fixed',
423
+ onChange: toggleScrollWithPage,
424
+ help: __('Whether your image should scroll with the page or stay fixed in place.')
418
425
  }), /*#__PURE__*/_jsxs(ToggleGroupControl, {
419
426
  size: "__unstable-large",
420
427
  label: __('Size'),