@wordpress/edit-site 5.7.0 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/add-new-template/new-template.js +2 -1
  3. package/build/components/add-new-template/new-template.js.map +1 -1
  4. package/build/components/block-editor/index.js +7 -7
  5. package/build/components/block-editor/index.js.map +1 -1
  6. package/build/components/editor/index.js +6 -4
  7. package/build/components/editor/index.js.map +1 -1
  8. package/build/components/editor-canvas-container/index.js +117 -0
  9. package/build/components/editor-canvas-container/index.js.map +1 -0
  10. package/build/components/global-styles/border-panel.js +81 -1
  11. package/build/components/global-styles/border-panel.js.map +1 -1
  12. package/build/components/global-styles/context-menu.js +6 -8
  13. package/build/components/global-styles/context-menu.js.map +1 -1
  14. package/build/components/global-styles/dimensions-panel.js +11 -1
  15. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  16. package/build/components/global-styles/effects-panel.js +53 -0
  17. package/build/components/global-styles/effects-panel.js.map +1 -0
  18. package/build/components/global-styles/filters-panel.js +50 -0
  19. package/build/components/global-styles/filters-panel.js.map +1 -0
  20. package/build/components/global-styles/global-styles-provider.js +4 -15
  21. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  22. package/build/components/global-styles/preview.js +1 -1
  23. package/build/components/global-styles/preview.js.map +1 -1
  24. package/build/components/global-styles/screen-block-list.js +14 -8
  25. package/build/components/global-styles/screen-block-list.js.map +1 -1
  26. package/build/components/global-styles/screen-css.js +1 -1
  27. package/build/components/global-styles/screen-css.js.map +1 -1
  28. package/build/components/global-styles/screen-effects.js +15 -7
  29. package/build/components/global-styles/screen-effects.js.map +1 -1
  30. package/build/components/global-styles/screen-filters.js +2 -2
  31. package/build/components/global-styles/screen-filters.js.map +1 -1
  32. package/build/components/global-styles/screen-style-variations.js +8 -118
  33. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  34. package/build/components/global-styles/style-variations-container.js +149 -0
  35. package/build/components/global-styles/style-variations-container.js.map +1 -0
  36. package/build/components/global-styles/ui.js +52 -15
  37. package/build/components/global-styles/ui.js.map +1 -1
  38. package/build/components/header-edit-mode/index.js +11 -7
  39. package/build/components/header-edit-mode/index.js.map +1 -1
  40. package/build/components/header-edit-mode/more-menu/index.js +1 -1
  41. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  42. package/build/components/keyboard-shortcuts/index.js +0 -137
  43. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  44. package/build/components/layout/index.js +17 -8
  45. package/build/components/layout/index.js.map +1 -1
  46. package/build/components/list/table.js +3 -3
  47. package/build/components/list/table.js.map +1 -1
  48. package/build/components/preferences-modal/index.js +4 -0
  49. package/build/components/preferences-modal/index.js.map +1 -1
  50. package/build/components/sidebar/index.js +4 -0
  51. package/build/components/sidebar/index.js.map +1 -1
  52. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +28 -13
  53. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  54. package/build/components/sidebar-navigation-screen/index.js +8 -6
  55. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  56. package/build/components/sidebar-navigation-screen-global-styles/index.js +58 -0
  57. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -0
  58. package/build/components/sidebar-navigation-screen-main/index.js +5 -0
  59. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  60. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +114 -9
  61. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  62. package/build/components/site-hub/index.js +40 -17
  63. package/build/components/site-hub/index.js.map +1 -1
  64. package/build/components/site-icon/index.js +8 -7
  65. package/build/components/site-icon/index.js.map +1 -1
  66. package/build/components/start-template-options/index.js +9 -8
  67. package/build/components/start-template-options/index.js.map +1 -1
  68. package/build/components/style-book/index.js +9 -41
  69. package/build/components/style-book/index.js.map +1 -1
  70. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -3
  71. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  72. package/build/components/template-details/index.js +3 -1
  73. package/build/components/template-details/index.js.map +1 -1
  74. package/build/components/welcome-guide/styles.js +1 -1
  75. package/build/components/welcome-guide/styles.js.map +1 -1
  76. package/build/hooks/commands/index.js +19 -0
  77. package/build/hooks/commands/index.js.map +1 -0
  78. package/build/hooks/commands/use-navigation-commands.js +126 -0
  79. package/build/hooks/commands/use-navigation-commands.js.map +1 -0
  80. package/build/hooks/commands/use-wp-admin-commands.js +97 -0
  81. package/build/hooks/commands/use-wp-admin-commands.js.map +1 -0
  82. package/build/hooks/template-part-edit.js +2 -1
  83. package/build/hooks/template-part-edit.js.map +1 -1
  84. package/build/index.js +2 -1
  85. package/build/index.js.map +1 -1
  86. package/build/store/private-actions.js +19 -1
  87. package/build/store/private-actions.js.map +1 -1
  88. package/build/store/private-selectors.js +13 -0
  89. package/build/store/private-selectors.js.map +1 -1
  90. package/build/store/reducer.js +23 -1
  91. package/build/store/reducer.js.map +1 -1
  92. package/build/store/selectors.js +2 -1
  93. package/build/store/selectors.js.map +1 -1
  94. package/build-module/components/add-new-template/new-template.js +3 -2
  95. package/build-module/components/add-new-template/new-template.js.map +1 -1
  96. package/build-module/components/block-editor/index.js +6 -6
  97. package/build-module/components/block-editor/index.js.map +1 -1
  98. package/build-module/components/editor/index.js +6 -4
  99. package/build-module/components/editor/index.js.map +1 -1
  100. package/build-module/components/editor-canvas-container/index.js +100 -0
  101. package/build-module/components/editor-canvas-container/index.js.map +1 -0
  102. package/build-module/components/global-styles/border-panel.js +81 -1
  103. package/build-module/components/global-styles/border-panel.js.map +1 -1
  104. package/build-module/components/global-styles/context-menu.js +6 -6
  105. package/build-module/components/global-styles/context-menu.js.map +1 -1
  106. package/build-module/components/global-styles/dimensions-panel.js +11 -1
  107. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  108. package/build-module/components/global-styles/effects-panel.js +43 -0
  109. package/build-module/components/global-styles/effects-panel.js.map +1 -0
  110. package/build-module/components/global-styles/filters-panel.js +40 -0
  111. package/build-module/components/global-styles/filters-panel.js.map +1 -0
  112. package/build-module/components/global-styles/global-styles-provider.js +5 -16
  113. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  114. package/build-module/components/global-styles/preview.js +1 -1
  115. package/build-module/components/global-styles/preview.js.map +1 -1
  116. package/build-module/components/global-styles/screen-block-list.js +13 -8
  117. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  118. package/build-module/components/global-styles/screen-css.js +1 -1
  119. package/build-module/components/global-styles/screen-css.js.map +1 -1
  120. package/build-module/components/global-styles/screen-effects.js +13 -4
  121. package/build-module/components/global-styles/screen-effects.js.map +1 -1
  122. package/build-module/components/global-styles/screen-filters.js +2 -2
  123. package/build-module/components/global-styles/screen-filters.js.map +1 -1
  124. package/build-module/components/global-styles/screen-style-variations.js +11 -114
  125. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  126. package/build-module/components/global-styles/style-variations-container.js +130 -0
  127. package/build-module/components/global-styles/style-variations-container.js.map +1 -0
  128. package/build-module/components/global-styles/ui.js +49 -16
  129. package/build-module/components/global-styles/ui.js.map +1 -1
  130. package/build-module/components/header-edit-mode/index.js +10 -7
  131. package/build-module/components/header-edit-mode/index.js.map +1 -1
  132. package/build-module/components/header-edit-mode/more-menu/index.js +1 -1
  133. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  134. package/build-module/components/keyboard-shortcuts/index.js +1 -135
  135. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  136. package/build-module/components/layout/index.js +14 -8
  137. package/build-module/components/layout/index.js.map +1 -1
  138. package/build-module/components/list/table.js +3 -3
  139. package/build-module/components/list/table.js.map +1 -1
  140. package/build-module/components/preferences-modal/index.js +4 -0
  141. package/build-module/components/preferences-modal/index.js.map +1 -1
  142. package/build-module/components/sidebar/index.js +3 -0
  143. package/build-module/components/sidebar/index.js.map +1 -1
  144. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +28 -15
  145. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  146. package/build-module/components/sidebar-navigation-screen/index.js +9 -7
  147. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  148. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +41 -0
  149. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -0
  150. package/build-module/components/sidebar-navigation-screen-main/index.js +6 -1
  151. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  152. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +113 -11
  153. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  154. package/build-module/components/site-hub/index.js +40 -18
  155. package/build-module/components/site-hub/index.js.map +1 -1
  156. package/build-module/components/site-icon/index.js +8 -7
  157. package/build-module/components/site-icon/index.js.map +1 -1
  158. package/build-module/components/start-template-options/index.js +9 -8
  159. package/build-module/components/start-template-options/index.js.map +1 -1
  160. package/build-module/components/style-book/index.js +10 -41
  161. package/build-module/components/style-book/index.js.map +1 -1
  162. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -3
  163. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  164. package/build-module/components/template-details/index.js +3 -1
  165. package/build-module/components/template-details/index.js.map +1 -1
  166. package/build-module/components/welcome-guide/styles.js +1 -1
  167. package/build-module/components/welcome-guide/styles.js.map +1 -1
  168. package/build-module/hooks/commands/index.js +10 -0
  169. package/build-module/hooks/commands/index.js.map +1 -0
  170. package/build-module/hooks/commands/use-navigation-commands.js +109 -0
  171. package/build-module/hooks/commands/use-navigation-commands.js.map +1 -0
  172. package/build-module/hooks/commands/use-wp-admin-commands.js +81 -0
  173. package/build-module/hooks/commands/use-wp-admin-commands.js.map +1 -0
  174. package/build-module/hooks/template-part-edit.js +2 -1
  175. package/build-module/hooks/template-part-edit.js.map +1 -1
  176. package/build-module/index.js +2 -1
  177. package/build-module/index.js.map +1 -1
  178. package/build-module/store/private-actions.js +15 -0
  179. package/build-module/store/private-actions.js.map +1 -1
  180. package/build-module/store/private-selectors.js +11 -0
  181. package/build-module/store/private-selectors.js.map +1 -1
  182. package/build-module/store/reducer.js +23 -1
  183. package/build-module/store/reducer.js.map +1 -1
  184. package/build-module/store/selectors.js +2 -1
  185. package/build-module/store/selectors.js.map +1 -1
  186. package/build-style/style-rtl.css +133 -107
  187. package/build-style/style.css +133 -107
  188. package/package.json +34 -32
  189. package/src/components/add-new-template/new-template.js +3 -0
  190. package/src/components/block-editor/index.js +8 -8
  191. package/src/components/editor/index.js +11 -3
  192. package/src/components/editor-canvas-container/index.js +115 -0
  193. package/src/components/editor-canvas-container/style.scss +19 -0
  194. package/src/components/global-styles/border-panel.js +73 -1
  195. package/src/components/global-styles/context-menu.js +6 -6
  196. package/src/components/global-styles/dimensions-panel.js +11 -0
  197. package/src/components/global-styles/effects-panel.js +40 -0
  198. package/src/components/global-styles/filters-panel.js +39 -0
  199. package/src/components/global-styles/global-styles-provider.js +4 -18
  200. package/src/components/global-styles/preview.js +1 -1
  201. package/src/components/global-styles/screen-block-list.js +9 -5
  202. package/src/components/global-styles/screen-css.js +1 -1
  203. package/src/components/global-styles/screen-effects.js +12 -5
  204. package/src/components/global-styles/screen-filters.js +2 -2
  205. package/src/components/global-styles/screen-style-variations.js +10 -129
  206. package/src/components/global-styles/style-variations-container.js +136 -0
  207. package/src/components/global-styles/style.scss +0 -39
  208. package/src/components/global-styles/ui.js +54 -8
  209. package/src/components/header-edit-mode/index.js +14 -5
  210. package/src/components/header-edit-mode/more-menu/index.js +1 -1
  211. package/src/components/keyboard-shortcuts/index.js +1 -155
  212. package/src/components/layout/index.js +13 -16
  213. package/src/components/layout/style.scss +31 -4
  214. package/src/components/list/table.js +16 -2
  215. package/src/components/preferences-modal/index.js +7 -0
  216. package/src/components/secondary-sidebar/style.scss +23 -5
  217. package/src/components/sidebar/index.js +4 -0
  218. package/src/components/sidebar/style.scss +2 -1
  219. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +36 -17
  220. package/src/components/sidebar-navigation-screen/index.js +10 -5
  221. package/src/components/sidebar-navigation-screen/style.scss +20 -5
  222. package/src/components/sidebar-navigation-screen-global-styles/index.js +41 -0
  223. package/src/components/sidebar-navigation-screen-main/index.js +9 -1
  224. package/src/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +134 -9
  225. package/src/components/site-hub/index.js +51 -23
  226. package/src/components/site-icon/index.js +6 -11
  227. package/src/components/site-icon/style.scss +8 -3
  228. package/src/components/start-template-options/index.js +13 -12
  229. package/src/components/start-template-options/style.scss +18 -43
  230. package/src/components/style-book/index.js +7 -51
  231. package/src/components/style-book/style.scss +0 -18
  232. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +4 -3
  233. package/src/components/template-details/index.js +1 -0
  234. package/src/components/welcome-guide/styles.js +1 -1
  235. package/src/hooks/commands/index.js +10 -0
  236. package/src/hooks/commands/use-navigation-commands.js +112 -0
  237. package/src/hooks/commands/use-wp-admin-commands.js +79 -0
  238. package/src/hooks/template-part-edit.js +1 -0
  239. package/src/index.js +1 -0
  240. package/src/store/private-actions.js +14 -0
  241. package/src/store/private-selectors.js +11 -0
  242. package/src/store/reducer.js +18 -0
  243. package/src/store/selectors.js +2 -1
  244. package/src/style.scss +1 -0
  245. package/build/components/global-styles/duotone-panel.js +0 -78
  246. package/build/components/global-styles/duotone-panel.js.map +0 -1
  247. package/build/components/global-styles/filter-utils.js +0 -17
  248. package/build/components/global-styles/filter-utils.js.map +0 -1
  249. package/build/components/global-styles/shadow-panel.js +0 -197
  250. package/build/components/global-styles/shadow-panel.js.map +0 -1
  251. package/build-module/components/global-styles/duotone-panel.js +0 -67
  252. package/build-module/components/global-styles/duotone-panel.js.map +0 -1
  253. package/build-module/components/global-styles/filter-utils.js +0 -9
  254. package/build-module/components/global-styles/filter-utils.js.map +0 -1
  255. package/build-module/components/global-styles/shadow-panel.js +0 -178
  256. package/build-module/components/global-styles/shadow-panel.js.map +0 -1
  257. package/src/components/global-styles/duotone-panel.js +0 -82
  258. package/src/components/global-styles/filter-utils.js +0 -9
  259. package/src/components/global-styles/shadow-panel.js +0 -178
@@ -119,7 +119,7 @@ export default function WelcomeGuideStyles() {
119
119
  ) }
120
120
  <ExternalLink
121
121
  href={ __(
122
- 'https://wordpress.org/support/article/styles-overview/'
122
+ 'https://wordpress.org/documentation/article/styles-overview/'
123
123
  ) }
124
124
  >
125
125
  { __(
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { useNavigationCommands } from './use-navigation-commands';
5
+ import { useWPAdminCommands } from './use-wp-admin-commands';
6
+
7
+ export function useCommands() {
8
+ useWPAdminCommands();
9
+ useNavigationCommands();
10
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { privateApis } from '@wordpress/commands';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { useMemo } from '@wordpress/element';
7
+ import { useSelect } from '@wordpress/data';
8
+ import { store as coreStore } from '@wordpress/core-data';
9
+ import { post, page, layout, symbolFilled } from '@wordpress/icons';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import { store as editSiteStore } from '../../store';
15
+ import { unlock } from '../../private-apis';
16
+ import { useHistory } from '../../components/routes';
17
+
18
+ const { useCommandLoader } = unlock( privateApis );
19
+
20
+ const icons = {
21
+ post,
22
+ page,
23
+ wp_template: layout,
24
+ wp_template_part: symbolFilled,
25
+ };
26
+
27
+ const getNavigationCommandLoaderPerPostType = ( postType ) =>
28
+ function useNavigationCommandLoader( { search } ) {
29
+ const supportsSearch = ! [ 'wp_template', 'wp_template_part' ].includes(
30
+ postType
31
+ );
32
+ const deps = supportsSearch ? [ search ] : [];
33
+ const history = useHistory();
34
+ const { canvasMode, records, isLoading } = useSelect( ( select ) => {
35
+ const { getEntityRecords } = select( coreStore );
36
+ const query = supportsSearch
37
+ ? {
38
+ search: !! search ? search : undefined,
39
+ per_page: 10,
40
+ orderby: search ? 'relevance' : 'date',
41
+ }
42
+ : {
43
+ per_page: -1,
44
+ };
45
+ return {
46
+ records: getEntityRecords( 'postType', postType, query ),
47
+ isLoading: ! select( coreStore ).hasFinishedResolution(
48
+ 'getEntityRecords',
49
+ [ 'postType', postType, query ]
50
+ ),
51
+ canvasMode: unlock( select( editSiteStore ) ).getCanvasMode(),
52
+ };
53
+ }, deps );
54
+
55
+ const commands = useMemo( () => {
56
+ return ( records ?? [] ).slice( 0, 10 ).map( ( record ) => {
57
+ return {
58
+ name: record.title?.rendered + ' ' + record.id,
59
+ label: record.title?.rendered
60
+ ? record.title?.rendered
61
+ : __( '(no title)' ),
62
+ icon: icons[ postType ],
63
+ callback: ( { close } ) => {
64
+ history.push( {
65
+ postType,
66
+ postId: record.id,
67
+ canvas:
68
+ canvasMode === 'edit' ? canvasMode : undefined,
69
+ } );
70
+ close();
71
+ },
72
+ };
73
+ } );
74
+ }, [ records, history, canvasMode ] );
75
+
76
+ return {
77
+ commands,
78
+ isLoading,
79
+ };
80
+ };
81
+
82
+ const usePageNavigationCommandLoader =
83
+ getNavigationCommandLoaderPerPostType( 'page' );
84
+ const usePostNavigationCommandLoader =
85
+ getNavigationCommandLoaderPerPostType( 'post' );
86
+ const useTemplateNavigationCommandLoader =
87
+ getNavigationCommandLoaderPerPostType( 'wp_template' );
88
+ const useTemplatePartNavigationCommandLoader =
89
+ getNavigationCommandLoaderPerPostType( 'wp_template_part' );
90
+
91
+ export function useNavigationCommands() {
92
+ useCommandLoader( {
93
+ name: 'core/edit-site/navigate-pages',
94
+ group: __( 'Pages' ),
95
+ hook: usePageNavigationCommandLoader,
96
+ } );
97
+ useCommandLoader( {
98
+ name: 'core/edit-site/navigate-posts',
99
+ group: __( 'Posts' ),
100
+ hook: usePostNavigationCommandLoader,
101
+ } );
102
+ useCommandLoader( {
103
+ name: 'core/edit-site/navigate-templates',
104
+ group: __( 'Templates' ),
105
+ hook: useTemplateNavigationCommandLoader,
106
+ } );
107
+ useCommandLoader( {
108
+ name: 'core/edit-site/navigate-template-parts',
109
+ group: __( 'Template Parts' ),
110
+ hook: useTemplatePartNavigationCommandLoader,
111
+ } );
112
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { privateApis } from '@wordpress/commands';
5
+ import { __, sprintf } from '@wordpress/i18n';
6
+ import { useSelect } from '@wordpress/data';
7
+ import { addQueryArgs } from '@wordpress/url';
8
+ import { useMemo } from '@wordpress/element';
9
+ import { plus } from '@wordpress/icons';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import { store as editSiteStore } from '../../store';
15
+ import { unlock } from '../../private-apis';
16
+
17
+ const { useCommandLoader } = unlock( privateApis );
18
+
19
+ const getWPAdminAddCommandLoader = ( postType ) =>
20
+ function useAddCommandLoader( { search } ) {
21
+ let label;
22
+ if ( postType === 'post' ) {
23
+ label = __( 'Add a new post' );
24
+ } else if ( postType === 'page' ) {
25
+ label = __( 'Add a new page' );
26
+ } else {
27
+ throw 'unsupported post type ' + postType;
28
+ }
29
+ const hasRecordTitle =
30
+ !! search && ! label.toLowerCase().includes( search.toLowerCase() );
31
+ if ( postType === 'post' && hasRecordTitle ) {
32
+ /* translators: %s: Post title placeholder */
33
+ label = sprintf( __( 'Add a new post "%s"' ), search );
34
+ } else if ( postType === 'page' && hasRecordTitle ) {
35
+ /* translators: %s: Page title placeholder */
36
+ label = sprintf( __( 'Add a new page "%s"' ), search );
37
+ }
38
+
39
+ const newPostLink = useSelect( ( select ) => {
40
+ const { getSettings } = unlock( select( editSiteStore ) );
41
+ return getSettings().newPostLink ?? 'post-new.php';
42
+ }, [] );
43
+
44
+ const commands = useMemo(
45
+ () => [
46
+ {
47
+ name: 'core/wp-admin/add-' + postType + '-' + search,
48
+ label,
49
+ icon: plus,
50
+ callback: () => {
51
+ document.location.href = addQueryArgs( newPostLink, {
52
+ post_type: postType,
53
+ post_title: hasRecordTitle ? search : undefined,
54
+ } );
55
+ },
56
+ },
57
+ ],
58
+ [ newPostLink, hasRecordTitle, search, label ]
59
+ );
60
+
61
+ return {
62
+ isLoading: false,
63
+ commands,
64
+ };
65
+ };
66
+
67
+ const useAddPostLoader = getWPAdminAddCommandLoader( 'post' );
68
+ const useAddPageLoader = getWPAdminAddCommandLoader( 'page' );
69
+
70
+ export function useWPAdminCommands() {
71
+ useCommandLoader( {
72
+ name: 'core/wp-admin/add-post-loader',
73
+ hook: useAddPostLoader,
74
+ } );
75
+ useCommandLoader( {
76
+ name: 'core/wp-admin/add-page-loader',
77
+ hook: useAddPageLoader,
78
+ } );
79
+ }
@@ -34,6 +34,7 @@ function EditTemplatePartMenuItem( { attributes } ) {
34
34
  {
35
35
  postId: templatePart?.id,
36
36
  postType: templatePart?.type,
37
+ canvas: 'edit',
37
38
  },
38
39
  {
39
40
  fromTemplateId: params.postId,
package/src/index.js CHANGED
@@ -67,6 +67,7 @@ export function initializeEditor( id, settings ) {
67
67
  welcomeGuide: true,
68
68
  welcomeGuideStyles: true,
69
69
  showListViewByDefault: false,
70
+ showBlockBreadcrumbs: true,
70
71
  } );
71
72
 
72
73
  dispatch( interfaceStore ).setDefaultComplementaryArea(
@@ -27,3 +27,17 @@ export const setCanvasMode =
27
27
  dispatch.setIsListViewOpened( true );
28
28
  }
29
29
  };
30
+
31
+ /**
32
+ * Action that switches the editor canvas container view.
33
+ *
34
+ * @param {?string} view Editor canvas container view.
35
+ */
36
+ export const setEditorCanvasContainerView =
37
+ ( view ) =>
38
+ ( { dispatch } ) => {
39
+ dispatch( {
40
+ type: 'SET_EDITOR_CANVAS_CONTAINER_VIEW',
41
+ view,
42
+ } );
43
+ };
@@ -8,3 +8,14 @@
8
8
  export function getCanvasMode( state ) {
9
9
  return state.canvasMode;
10
10
  }
11
+
12
+ /**
13
+ * Returns the editor canvas container view.
14
+ *
15
+ * @param {Object} state Global application state.
16
+ *
17
+ * @return {string} Editor canvas container view.
18
+ */
19
+ export function getEditorCanvasContainerView( state ) {
20
+ return state.editorCanvasContainerView;
21
+ }
@@ -140,6 +140,23 @@ function canvasMode( state = 'init', action ) {
140
140
  return state;
141
141
  }
142
142
 
143
+ /**
144
+ * Reducer used to track the site editor canvas container view.
145
+ * Default is `undefined`, denoting the default, visual block editor.
146
+ * This could be, for example, `'style-book'` (the style book).
147
+ *
148
+ * @param {string|undefined} state Current state.
149
+ * @param {Object} action Dispatched action.
150
+ */
151
+ function editorCanvasContainerView( state = undefined, action ) {
152
+ switch ( action.type ) {
153
+ case 'SET_EDITOR_CANVAS_CONTAINER_VIEW':
154
+ return action.view;
155
+ }
156
+
157
+ return state;
158
+ }
159
+
143
160
  export default combineReducers( {
144
161
  deviceType,
145
162
  settings,
@@ -148,4 +165,5 @@ export default combineReducers( {
148
165
  listViewPanel,
149
166
  saveViewPanel,
150
167
  canvasMode,
168
+ editorCanvasContainerView,
151
169
  } );
@@ -39,13 +39,14 @@ export const __unstableGetPreference = createRegistrySelector(
39
39
  /**
40
40
  * Returns whether the given feature is enabled or not.
41
41
  *
42
+ * @deprecated
42
43
  * @param {Object} state Global application state.
43
44
  * @param {string} featureName Feature slug.
44
45
  *
45
46
  * @return {boolean} Is active.
46
47
  */
47
48
  export function isFeatureActive( state, featureName ) {
48
- deprecated( `select( 'core/interface' ).isFeatureActive`, {
49
+ deprecated( `select( 'core/edit-site' ).isFeatureActive`, {
49
50
  since: '6.0',
50
51
  alternative: `select( 'core/preferences' ).get`,
51
52
  } );
package/src/style.scss CHANGED
@@ -31,6 +31,7 @@
31
31
  @import "./components/sidebar-navigation-screen-navigation-menus/style.scss";
32
32
  @import "./components/site-icon/style.scss";
33
33
  @import "./components/style-book/style.scss";
34
+ @import "./components/editor-canvas-container/style.scss";
34
35
  @import "./hooks/push-changes-to-global-styles/style.scss";
35
36
 
36
37
  html #wpadminbar {
@@ -1,78 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _element = require("@wordpress/element");
9
-
10
- var _i18n = require("@wordpress/i18n");
11
-
12
- var _components = require("@wordpress/components");
13
-
14
- var _blockEditor = require("@wordpress/block-editor");
15
-
16
- var _privateApis = require("../../private-apis");
17
-
18
- /**
19
- * WordPress dependencies
20
- */
21
-
22
- /**
23
- * Internal dependencies
24
- */
25
- const {
26
- useGlobalStyle
27
- } = (0, _privateApis.unlock)(_blockEditor.privateApis);
28
- const EMPTY_ARRAY = [];
29
-
30
- function useMultiOriginPresets(_ref) {
31
- let {
32
- presetSetting,
33
- defaultSetting
34
- } = _ref;
35
- const disableDefault = !(0, _blockEditor.useSetting)(defaultSetting);
36
- const userPresets = (0, _blockEditor.useSetting)(`${presetSetting}.custom`) || EMPTY_ARRAY;
37
- const themePresets = (0, _blockEditor.useSetting)(`${presetSetting}.theme`) || EMPTY_ARRAY;
38
- const defaultPresets = (0, _blockEditor.useSetting)(`${presetSetting}.default`) || EMPTY_ARRAY;
39
- return (0, _element.useMemo)(() => [...userPresets, ...themePresets, ...(disableDefault ? EMPTY_ARRAY : defaultPresets)], [disableDefault, userPresets, themePresets, defaultPresets]);
40
- }
41
-
42
- function DuotonePanel(_ref2) {
43
- let {
44
- name
45
- } = _ref2;
46
- const [themeDuotone, setThemeDuotone] = useGlobalStyle('filter.duotone', name);
47
- const duotonePalette = useMultiOriginPresets({
48
- presetSetting: 'color.duotone',
49
- defaultSetting: 'color.defaultDuotone'
50
- });
51
- const colorPalette = useMultiOriginPresets({
52
- presetSetting: 'color.palette',
53
- defaultSetting: 'color.defaultPalette'
54
- });
55
-
56
- if ((duotonePalette === null || duotonePalette === void 0 ? void 0 : duotonePalette.length) === 0) {
57
- return null;
58
- }
59
-
60
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.__experimentalToolsPanel, {
61
- label: (0, _i18n.__)('Duotone')
62
- }, (0, _element.createElement)("span", {
63
- className: "span-columns"
64
- }, (0, _i18n.__)('Create a two-tone color effect without losing your original image.')), (0, _element.createElement)("div", {
65
- className: "span-columns"
66
- }, (0, _element.createElement)(_components.DuotonePicker, {
67
- colorPalette: colorPalette,
68
- duotonePalette: duotonePalette,
69
- disableCustomColors: true,
70
- disableCustomDuotone: true,
71
- value: themeDuotone,
72
- onChange: setThemeDuotone
73
- }))));
74
- }
75
-
76
- var _default = DuotonePanel;
77
- exports.default = _default;
78
- //# sourceMappingURL=duotone-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/duotone-panel.js"],"names":["useGlobalStyle","blockEditorPrivateApis","EMPTY_ARRAY","useMultiOriginPresets","presetSetting","defaultSetting","disableDefault","userPresets","themePresets","defaultPresets","DuotonePanel","name","themeDuotone","setThemeDuotone","duotonePalette","colorPalette","length"],"mappings":";;;;;;;AAYA;;AATA;;AACA;;AAIA;;AASA;;AAjBA;AACA;AACA;;AAYA;AACA;AACA;AAEA,MAAM;AAAEA,EAAAA;AAAF,IAAqB,yBAAQC,wBAAR,CAA3B;AAEA,MAAMC,WAAW,GAAG,EAApB;;AAEA,SAASC,qBAAT,OAAoE;AAAA,MAApC;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA;AAAjB,GAAoC;AACnE,QAAMC,cAAc,GAAG,CAAE,6BAAYD,cAAZ,CAAzB;AACA,QAAME,WAAW,GAChB,6BAAa,GAAGH,aAAe,SAA/B,KAA6CF,WAD9C;AAEA,QAAMM,YAAY,GACjB,6BAAa,GAAGJ,aAAe,QAA/B,KAA4CF,WAD7C;AAEA,QAAMO,cAAc,GACnB,6BAAa,GAAGL,aAAe,UAA/B,KAA8CF,WAD/C;AAEA,SAAO,sBACN,MAAM,CACL,GAAGK,WADE,EAEL,GAAGC,YAFE,EAGL,IAAKF,cAAc,GAAGJ,WAAH,GAAiBO,cAApC,CAHK,CADA,EAMN,CAAEH,cAAF,EAAkBC,WAAlB,EAA+BC,YAA/B,EAA6CC,cAA7C,CANM,CAAP;AAQA;;AAED,SAASC,YAAT,QAAkC;AAAA,MAAX;AAAEC,IAAAA;AAAF,GAAW;AACjC,QAAM,CAAEC,YAAF,EAAgBC,eAAhB,IAAoCb,cAAc,CACvD,gBADuD,EAEvDW,IAFuD,CAAxD;AAKA,QAAMG,cAAc,GAAGX,qBAAqB,CAAE;AAC7CC,IAAAA,aAAa,EAAE,eAD8B;AAE7CC,IAAAA,cAAc,EAAE;AAF6B,GAAF,CAA5C;AAIA,QAAMU,YAAY,GAAGZ,qBAAqB,CAAE;AAC3CC,IAAAA,aAAa,EAAE,eAD4B;AAE3CC,IAAAA,cAAc,EAAE;AAF2B,GAAF,CAA1C;;AAKA,MAAK,CAAAS,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAEE,MAAhB,MAA2B,CAAhC,EAAoC;AACnC,WAAO,IAAP;AACA;;AACD,SACC,qDACC,4BAAC,oCAAD;AAAY,IAAA,KAAK,EAAG,cAAI,SAAJ;AAApB,KACC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACG,cACD,oEADC,CADH,CADD,EAMC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,yBAAD;AACC,IAAA,YAAY,EAAGD,YADhB;AAEC,IAAA,cAAc,EAAGD,cAFlB;AAGC,IAAA,mBAAmB,EAAG,IAHvB;AAIC,IAAA,oBAAoB,EAAG,IAJxB;AAKC,IAAA,KAAK,EAAGF,YALT;AAMC,IAAA,QAAQ,EAAGC;AANZ,IADD,CAND,CADD,CADD;AAqBA;;eAEcH,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\tDuotonePicker,\n} from '@wordpress/components';\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tuseSetting,\n} from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../private-apis';\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nfunction useMultiOriginPresets( { presetSetting, defaultSetting } ) {\n\tconst disableDefault = ! useSetting( defaultSetting );\n\tconst userPresets =\n\t\tuseSetting( `${ presetSetting }.custom` ) || EMPTY_ARRAY;\n\tconst themePresets =\n\t\tuseSetting( `${ presetSetting }.theme` ) || EMPTY_ARRAY;\n\tconst defaultPresets =\n\t\tuseSetting( `${ presetSetting }.default` ) || EMPTY_ARRAY;\n\treturn useMemo(\n\t\t() => [\n\t\t\t...userPresets,\n\t\t\t...themePresets,\n\t\t\t...( disableDefault ? EMPTY_ARRAY : defaultPresets ),\n\t\t],\n\t\t[ disableDefault, userPresets, themePresets, defaultPresets ]\n\t);\n}\n\nfunction DuotonePanel( { name } ) {\n\tconst [ themeDuotone, setThemeDuotone ] = useGlobalStyle(\n\t\t'filter.duotone',\n\t\tname\n\t);\n\n\tconst duotonePalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.duotone',\n\t\tdefaultSetting: 'color.defaultDuotone',\n\t} );\n\tconst colorPalette = useMultiOriginPresets( {\n\t\tpresetSetting: 'color.palette',\n\t\tdefaultSetting: 'color.defaultPalette',\n\t} );\n\n\tif ( duotonePalette?.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t<ToolsPanel label={ __( 'Duotone' ) }>\n\t\t\t\t<span className=\"span-columns\">\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Create a two-tone color effect without losing your original image.'\n\t\t\t\t\t) }\n\t\t\t\t</span>\n\t\t\t\t<div className=\"span-columns\">\n\t\t\t\t\t<DuotonePicker\n\t\t\t\t\t\tcolorPalette={ colorPalette }\n\t\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\t\tdisableCustomColors={ true }\n\t\t\t\t\t\tdisableCustomDuotone={ true }\n\t\t\t\t\t\tvalue={ themeDuotone }\n\t\t\t\t\t\tonChange={ setThemeDuotone }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</ToolsPanel>\n\t\t</>\n\t);\n}\n\nexport default DuotonePanel;\n"]}
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useHasFilterPanel = useHasFilterPanel;
7
-
8
- var _hooks = require("./hooks");
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- function useHasFilterPanel(name) {
14
- const supports = (0, _hooks.useSupportedStyles)(name);
15
- return supports.includes('filter');
16
- }
17
- //# sourceMappingURL=filter-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/filter-utils.js"],"names":["useHasFilterPanel","name","supports","includes"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;AAGO,SAASA,iBAAT,CAA4BC,IAA5B,EAAmC;AACzC,QAAMC,QAAQ,GAAG,+BAAoBD,IAApB,CAAjB;AACA,SAAOC,QAAQ,CAACC,QAAT,CAAmB,QAAnB,CAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport { useSupportedStyles } from './hooks';\n\nexport function useHasFilterPanel( name ) {\n\tconst supports = useSupportedStyles( name );\n\treturn supports.includes( 'filter' );\n}\n"]}
@@ -1,197 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = ShadowPanel;
9
- exports.useHasShadowControl = useHasShadowControl;
10
-
11
- var _element = require("@wordpress/element");
12
-
13
- var _classnames = _interopRequireDefault(require("classnames"));
14
-
15
- var _components = require("@wordpress/components");
16
-
17
- var _i18n = require("@wordpress/i18n");
18
-
19
- var _icons = require("@wordpress/icons");
20
-
21
- var _blockEditor = require("@wordpress/block-editor");
22
-
23
- var _hooks = require("./hooks");
24
-
25
- var _iconWithCurrentColor = require("./icon-with-current-color");
26
-
27
- var _privateApis = require("../../private-apis");
28
-
29
- /**
30
- * External dependencies
31
- */
32
-
33
- /**
34
- * WordPress dependencies
35
- */
36
-
37
- /**
38
- * Internal dependencies
39
- */
40
- const {
41
- useGlobalSetting,
42
- useGlobalStyle
43
- } = (0, _privateApis.unlock)(_blockEditor.privateApis);
44
-
45
- function useHasShadowControl(name) {
46
- const supports = (0, _hooks.useSupportedStyles)(name);
47
- return supports.includes('shadow');
48
- }
49
-
50
- function ShadowPanel(_ref) {
51
- let {
52
- name,
53
- variation = ''
54
- } = _ref;
55
- const prefix = variation ? `variations.${variation}.` : '';
56
- const [shadow, setShadow] = useGlobalStyle(`${prefix}shadow`, name);
57
- const [userShadow] = useGlobalStyle(`${prefix}shadow`, name, 'user');
58
-
59
- const hasShadow = () => !!userShadow;
60
-
61
- const resetShadow = (0, _element.useCallback)(() => setShadow(undefined), [setShadow]);
62
- const resetAll = (0, _element.useCallback)(() => resetShadow(undefined), [resetShadow]);
63
- return (0, _element.createElement)(_components.__experimentalToolsPanel, {
64
- label: (0, _i18n.__)('Shadow'),
65
- resetAll: resetAll
66
- }, (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
67
- label: (0, _i18n.__)('Shadow'),
68
- hasValue: hasShadow,
69
- onDeselect: resetShadow,
70
- isShownByDefault: true
71
- }, (0, _element.createElement)(_components.__experimentalItemGroup, {
72
- isBordered: true,
73
- isSeparated: true
74
- }, (0, _element.createElement)(ShadowPopover, {
75
- shadow: shadow,
76
- onShadowChange: setShadow
77
- }))));
78
- }
79
-
80
- const ShadowPopover = _ref2 => {
81
- let {
82
- shadow,
83
- onShadowChange
84
- } = _ref2;
85
- const popoverProps = {
86
- placement: 'left-start',
87
- offset: 36,
88
- shift: true
89
- };
90
- return (0, _element.createElement)(_components.Dropdown, {
91
- popoverProps: popoverProps,
92
- className: "edit-site-global-styles__shadow-dropdown",
93
- renderToggle: renderShadowToggle(),
94
- renderContent: () => (0, _element.createElement)(_components.__experimentalDropdownContentWrapper, {
95
- paddingSize: "medium"
96
- }, (0, _element.createElement)(ShadowPopoverContainer, {
97
- shadow: shadow,
98
- onShadowChange: onShadowChange
99
- }))
100
- });
101
- };
102
-
103
- function renderShadowToggle() {
104
- return _ref3 => {
105
- let {
106
- onToggle,
107
- isOpen
108
- } = _ref3;
109
- const toggleProps = {
110
- onClick: onToggle,
111
- className: (0, _classnames.default)({
112
- 'is-open': isOpen
113
- }),
114
- 'aria-expanded': isOpen
115
- };
116
- return (0, _element.createElement)(_components.Button, toggleProps, (0, _element.createElement)(_components.__experimentalHStack, {
117
- justify: "flex-start"
118
- }, (0, _element.createElement)(_iconWithCurrentColor.IconWithCurrentColor, {
119
- icon: _icons.shadow,
120
- size: 24
121
- }), (0, _element.createElement)(_components.FlexItem, {
122
- className: "edit-site-global-styles__shadow-label"
123
- }, (0, _i18n.__)('Shadow'))));
124
- };
125
- }
126
-
127
- function ShadowPopoverContainer(_ref4) {
128
- let {
129
- shadow,
130
- onShadowChange
131
- } = _ref4;
132
- const [defaultShadows] = useGlobalSetting('shadow.presets.default');
133
- const [themeShadows] = useGlobalSetting('shadow.presets.theme');
134
- const [defaultPresetsEnabled] = useGlobalSetting('shadow.defaultPresets');
135
- const shadows = [...(defaultPresetsEnabled ? defaultShadows : []), ...(themeShadows || [])];
136
- return (0, _element.createElement)("div", {
137
- className: "edit-site-global-styles__shadow-panel"
138
- }, (0, _element.createElement)(_components.__experimentalVStack, {
139
- spacing: 4
140
- }, (0, _element.createElement)(_components.__experimentalHeading, {
141
- level: 5
142
- }, (0, _i18n.__)('Shadow')), (0, _element.createElement)(ShadowPresets, {
143
- presets: shadows,
144
- activeShadow: shadow,
145
- onSelect: onShadowChange
146
- })));
147
- }
148
-
149
- function ShadowPresets(_ref5) {
150
- let {
151
- presets,
152
- activeShadow,
153
- onSelect
154
- } = _ref5;
155
- return !presets ? null : (0, _element.createElement)(_components.__experimentalGrid, {
156
- columns: 6,
157
- gap: 0,
158
- align: "center",
159
- justify: "center"
160
- }, presets.map(_ref6 => {
161
- let {
162
- name,
163
- slug,
164
- shadow
165
- } = _ref6;
166
- return (0, _element.createElement)(ShadowIndicator, {
167
- key: slug,
168
- label: name,
169
- isActive: shadow === activeShadow,
170
- onSelect: () => onSelect(shadow === activeShadow ? undefined : shadow),
171
- shadow: shadow
172
- });
173
- }));
174
- }
175
-
176
- function ShadowIndicator(_ref7) {
177
- let {
178
- label,
179
- isActive,
180
- onSelect,
181
- shadow
182
- } = _ref7;
183
- return (0, _element.createElement)("div", {
184
- className: "edit-site-global-styles__shadow-indicator-wrapper"
185
- }, (0, _element.createElement)(_components.Button, {
186
- className: "edit-site-global-styles__shadow-indicator",
187
- onClick: onSelect,
188
- label: label,
189
- style: {
190
- boxShadow: shadow
191
- },
192
- showTooltip: true
193
- }, isActive && (0, _element.createElement)(_icons.Icon, {
194
- icon: _icons.check
195
- })));
196
- }
197
- //# sourceMappingURL=shadow-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/shadow-panel.js"],"names":["useGlobalSetting","useGlobalStyle","blockEditorPrivateApis","useHasShadowControl","name","supports","includes","ShadowPanel","variation","prefix","shadow","setShadow","userShadow","hasShadow","resetShadow","undefined","resetAll","ShadowPopover","onShadowChange","popoverProps","placement","offset","shift","renderShadowToggle","onToggle","isOpen","toggleProps","onClick","className","shadowIcon","ShadowPopoverContainer","defaultShadows","themeShadows","defaultPresetsEnabled","shadows","ShadowPresets","presets","activeShadow","onSelect","map","slug","ShadowIndicator","label","isActive","boxShadow","check"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalGrid as Grid,\n\t__experimentalHeading as Heading,\n\tFlexItem,\n\tDropdown,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { shadow as shadowIcon, Icon, check } from '@wordpress/icons';\nimport { useCallback } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { useSupportedStyles } from './hooks';\nimport { IconWithCurrentColor } from './icon-with-current-color';\nimport { unlock } from '../../private-apis';\n\nconst { useGlobalSetting, useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nexport function useHasShadowControl( name ) {\n\tconst supports = useSupportedStyles( name );\n\treturn supports.includes( 'shadow' );\n}\n\nexport default function ShadowPanel( { name, variation = '' } ) {\n\tconst prefix = variation ? `variations.${ variation }.` : '';\n\tconst [ shadow, setShadow ] = useGlobalStyle( `${ prefix }shadow`, name );\n\tconst [ userShadow ] = useGlobalStyle( `${ prefix }shadow`, name, 'user' );\n\tconst hasShadow = () => !! userShadow;\n\n\tconst resetShadow = useCallback(\n\t\t() => setShadow( undefined ),\n\t\t[ setShadow ]\n\t);\n\tconst resetAll = useCallback(\n\t\t() => resetShadow( undefined ),\n\t\t[ resetShadow ]\n\t);\n\n\treturn (\n\t\t<ToolsPanel label={ __( 'Shadow' ) } resetAll={ resetAll }>\n\t\t\t<ToolsPanelItem\n\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\thasValue={ hasShadow }\n\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\tisShownByDefault\n\t\t\t>\n\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ setShadow }\n\t\t\t\t\t/>\n\t\t\t\t</ItemGroup>\n\t\t\t</ToolsPanelItem>\n\t\t</ToolsPanel>\n\t);\n}\n\nconst ShadowPopover = ( { shadow, onShadowChange } ) => {\n\tconst popoverProps = {\n\t\tplacement: 'left-start',\n\t\toffset: 36,\n\t\tshift: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tclassName=\"edit-site-global-styles__shadow-dropdown\"\n\t\t\trenderToggle={ renderShadowToggle() }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper paddingSize=\"medium\">\n\t\t\t\t\t<ShadowPopoverContainer\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ onShadowChange }\n\t\t\t\t\t/>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\nfunction renderShadowToggle() {\n\treturn ( { onToggle, isOpen } ) => {\n\t\tconst toggleProps = {\n\t\t\tonClick: onToggle,\n\t\t\tclassName: classnames( { 'is-open': isOpen } ),\n\t\t\t'aria-expanded': isOpen,\n\t\t};\n\n\t\treturn (\n\t\t\t<Button { ...toggleProps }>\n\t\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t\t<IconWithCurrentColor icon={ shadowIcon } size={ 24 } />\n\t\t\t\t\t<FlexItem className=\"edit-site-global-styles__shadow-label\">\n\t\t\t\t\t\t{ __( 'Shadow' ) }\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t</Button>\n\t\t);\n\t};\n}\n\nfunction ShadowPopoverContainer( { shadow, onShadowChange } ) {\n\tconst [ defaultShadows ] = useGlobalSetting( 'shadow.presets.default' );\n\tconst [ themeShadows ] = useGlobalSetting( 'shadow.presets.theme' );\n\tconst [ defaultPresetsEnabled ] = useGlobalSetting(\n\t\t'shadow.defaultPresets'\n\t);\n\n\tconst shadows = [\n\t\t...( defaultPresetsEnabled ? defaultShadows : [] ),\n\t\t...( themeShadows || [] ),\n\t];\n\n\treturn (\n\t\t<div className=\"edit-site-global-styles__shadow-panel\">\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<Heading level={ 5 }>{ __( 'Shadow' ) }</Heading>\n\t\t\t\t<ShadowPresets\n\t\t\t\t\tpresets={ shadows }\n\t\t\t\t\tactiveShadow={ shadow }\n\t\t\t\t\tonSelect={ onShadowChange }\n\t\t\t\t/>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nfunction ShadowPresets( { presets, activeShadow, onSelect } ) {\n\treturn ! presets ? null : (\n\t\t<Grid columns={ 6 } gap={ 0 } align=\"center\" justify=\"center\">\n\t\t\t{ presets.map( ( { name, slug, shadow } ) => (\n\t\t\t\t<ShadowIndicator\n\t\t\t\t\tkey={ slug }\n\t\t\t\t\tlabel={ name }\n\t\t\t\t\tisActive={ shadow === activeShadow }\n\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\tonSelect( shadow === activeShadow ? undefined : shadow )\n\t\t\t\t\t}\n\t\t\t\t\tshadow={ shadow }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</Grid>\n\t);\n}\n\nfunction ShadowIndicator( { label, isActive, onSelect, shadow } ) {\n\treturn (\n\t\t<div className=\"edit-site-global-styles__shadow-indicator-wrapper\">\n\t\t\t<Button\n\t\t\t\tclassName=\"edit-site-global-styles__shadow-indicator\"\n\t\t\t\tonClick={ onSelect }\n\t\t\t\tlabel={ label }\n\t\t\t\tstyle={ { boxShadow: shadow } }\n\t\t\t\tshowTooltip\n\t\t\t>\n\t\t\t\t{ isActive && <Icon icon={ check } /> }\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n"]}