@wordpress/edit-site 5.0.0 → 5.2.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 (262) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE.md +1 -1
  3. package/build/components/add-new-template/new-template-part.js +21 -1
  4. package/build/components/add-new-template/new-template-part.js.map +1 -1
  5. package/build/components/add-new-template/utils.js +9 -1
  6. package/build/components/add-new-template/utils.js.map +1 -1
  7. package/build/components/block-editor/editor-canvas.js +0 -1
  8. package/build/components/block-editor/editor-canvas.js.map +1 -1
  9. package/build/components/block-editor/index.js +17 -52
  10. package/build/components/block-editor/index.js.map +1 -1
  11. package/build/components/block-editor/resize-handle.js +2 -1
  12. package/build/components/block-editor/resize-handle.js.map +1 -1
  13. package/build/components/editor/index.js +5 -17
  14. package/build/components/editor/index.js.map +1 -1
  15. package/build/components/global-styles/block-preview-panel.js +27 -6
  16. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  17. package/build/components/global-styles/border-panel.js +5 -5
  18. package/build/components/global-styles/border-panel.js.map +1 -1
  19. package/build/components/global-styles/context-menu.js +9 -1
  20. package/build/components/global-styles/context-menu.js.map +1 -1
  21. package/build/components/global-styles/custom-css.js +1 -0
  22. package/build/components/global-styles/custom-css.js.map +1 -1
  23. package/build/components/global-styles/dimensions-panel.js +16 -11
  24. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  25. package/build/components/global-styles/global-styles-provider.js +3 -2
  26. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  27. package/build/components/global-styles/screen-background-color.js +6 -6
  28. package/build/components/global-styles/screen-background-color.js.map +1 -1
  29. package/build/components/global-styles/screen-block-list.js +4 -1
  30. package/build/components/global-styles/screen-block-list.js.map +1 -1
  31. package/build/components/global-styles/screen-block.js +2 -6
  32. package/build/components/global-styles/screen-block.js.map +1 -1
  33. package/build/components/global-styles/screen-border.js +12 -2
  34. package/build/components/global-styles/screen-border.js.map +1 -1
  35. package/build/components/global-styles/screen-button-color.js +3 -4
  36. package/build/components/global-styles/screen-button-color.js.map +1 -1
  37. package/build/components/global-styles/screen-colors.js +53 -25
  38. package/build/components/global-styles/screen-colors.js.map +1 -1
  39. package/build/components/global-styles/screen-heading-color.js +9 -10
  40. package/build/components/global-styles/screen-heading-color.js.map +1 -1
  41. package/build/components/global-styles/screen-layout.js +12 -2
  42. package/build/components/global-styles/screen-layout.js.map +1 -1
  43. package/build/components/global-styles/screen-link-color.js +8 -8
  44. package/build/components/global-styles/screen-link-color.js.map +1 -1
  45. package/build/components/global-styles/screen-root.js +7 -2
  46. package/build/components/global-styles/screen-root.js.map +1 -1
  47. package/build/components/global-styles/screen-text-color.js +4 -4
  48. package/build/components/global-styles/screen-text-color.js.map +1 -1
  49. package/build/components/global-styles/screen-typography.js +11 -1
  50. package/build/components/global-styles/screen-typography.js.map +1 -1
  51. package/build/components/global-styles/screen-variations.js +71 -0
  52. package/build/components/global-styles/screen-variations.js.map +1 -0
  53. package/build/components/global-styles/typography-panel.js +9 -8
  54. package/build/components/global-styles/typography-panel.js.map +1 -1
  55. package/build/components/global-styles/typography-utils.js +17 -5
  56. package/build/components/global-styles/typography-utils.js.map +1 -1
  57. package/build/components/global-styles/ui.js +85 -18
  58. package/build/components/global-styles/ui.js.map +1 -1
  59. package/build/components/global-styles/use-global-styles-output.js +119 -33
  60. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  61. package/build/components/global-styles/utils.js +60 -3
  62. package/build/components/global-styles/utils.js.map +1 -1
  63. package/build/components/global-styles/variations-panel.js +85 -0
  64. package/build/components/global-styles/variations-panel.js.map +1 -0
  65. package/build/components/header-edit-mode/document-actions/index.js +10 -41
  66. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  67. package/build/components/layout/index.js +129 -87
  68. package/build/components/layout/index.js.map +1 -1
  69. package/build/components/sidebar/index.js +5 -1
  70. package/build/components/sidebar/index.js.map +1 -1
  71. package/build/components/sidebar-edit-mode/index.js +3 -1
  72. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  73. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js +2 -0
  74. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +1 -1
  75. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js +10 -0
  76. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-main/index.js +1 -31
  78. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  79. package/build/components/sidebar-navigation-screen-templates/index.js +3 -22
  80. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  81. package/build/components/site-hub/index.js +149 -0
  82. package/build/components/site-hub/index.js.map +1 -0
  83. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +54 -0
  84. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -0
  85. package/build/components/template-details/edit-template-title.js +1 -0
  86. package/build/components/template-details/edit-template-title.js.map +1 -1
  87. package/build/components/template-details/template-part-area-selector.js +1 -0
  88. package/build/components/template-details/template-part-area-selector.js.map +1 -1
  89. package/build/components/use-edited-entity-record/index.js +60 -0
  90. package/build/components/use-edited-entity-record/index.js.map +1 -0
  91. package/build/hooks/index.js +2 -0
  92. package/build/hooks/index.js.map +1 -1
  93. package/build/hooks/push-changes-to-global-styles/index.js +144 -0
  94. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -0
  95. package/build/index.js +5 -0
  96. package/build/index.js.map +1 -1
  97. package/build/store/reducer.js +1 -1
  98. package/build/store/reducer.js.map +1 -1
  99. package/build-module/components/add-new-template/new-template-part.js +20 -1
  100. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  101. package/build-module/components/add-new-template/utils.js +5 -0
  102. package/build-module/components/add-new-template/utils.js.map +1 -1
  103. package/build-module/components/block-editor/editor-canvas.js +0 -1
  104. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  105. package/build-module/components/block-editor/index.js +19 -50
  106. package/build-module/components/block-editor/index.js.map +1 -1
  107. package/build-module/components/block-editor/resize-handle.js +2 -1
  108. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  109. package/build-module/components/editor/index.js +2 -13
  110. package/build-module/components/editor/index.js.map +1 -1
  111. package/build-module/components/global-styles/block-preview-panel.js +26 -6
  112. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  113. package/build-module/components/global-styles/border-panel.js +5 -5
  114. package/build-module/components/global-styles/border-panel.js.map +1 -1
  115. package/build-module/components/global-styles/context-menu.js +7 -1
  116. package/build-module/components/global-styles/context-menu.js.map +1 -1
  117. package/build-module/components/global-styles/custom-css.js +1 -0
  118. package/build-module/components/global-styles/custom-css.js.map +1 -1
  119. package/build-module/components/global-styles/dimensions-panel.js +16 -11
  120. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  121. package/build-module/components/global-styles/global-styles-provider.js +3 -2
  122. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  123. package/build-module/components/global-styles/screen-background-color.js +6 -6
  124. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  125. package/build-module/components/global-styles/screen-block-list.js +3 -1
  126. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  127. package/build-module/components/global-styles/screen-block.js +2 -5
  128. package/build-module/components/global-styles/screen-block.js.map +1 -1
  129. package/build-module/components/global-styles/screen-border.js +10 -2
  130. package/build-module/components/global-styles/screen-border.js.map +1 -1
  131. package/build-module/components/global-styles/screen-button-color.js +3 -4
  132. package/build-module/components/global-styles/screen-button-color.js.map +1 -1
  133. package/build-module/components/global-styles/screen-colors.js +51 -25
  134. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  135. package/build-module/components/global-styles/screen-heading-color.js +9 -10
  136. package/build-module/components/global-styles/screen-heading-color.js.map +1 -1
  137. package/build-module/components/global-styles/screen-layout.js +10 -2
  138. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  139. package/build-module/components/global-styles/screen-link-color.js +8 -8
  140. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  141. package/build-module/components/global-styles/screen-root.js +8 -3
  142. package/build-module/components/global-styles/screen-root.js.map +1 -1
  143. package/build-module/components/global-styles/screen-text-color.js +4 -4
  144. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  145. package/build-module/components/global-styles/screen-typography.js +9 -1
  146. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  147. package/build-module/components/global-styles/screen-variations.js +54 -0
  148. package/build-module/components/global-styles/screen-variations.js.map +1 -0
  149. package/build-module/components/global-styles/typography-panel.js +9 -8
  150. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  151. package/build-module/components/global-styles/typography-utils.js +17 -5
  152. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  153. package/build-module/components/global-styles/ui.js +84 -19
  154. package/build-module/components/global-styles/ui.js.map +1 -1
  155. package/build-module/components/global-styles/use-global-styles-output.js +121 -35
  156. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  157. package/build-module/components/global-styles/utils.js +56 -3
  158. package/build-module/components/global-styles/utils.js.map +1 -1
  159. package/build-module/components/global-styles/variations-panel.js +68 -0
  160. package/build-module/components/global-styles/variations-panel.js.map +1 -0
  161. package/build-module/components/header-edit-mode/document-actions/index.js +10 -38
  162. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  163. package/build-module/components/layout/index.js +129 -88
  164. package/build-module/components/layout/index.js.map +1 -1
  165. package/build-module/components/sidebar/index.js +4 -1
  166. package/build-module/components/sidebar/index.js.map +1 -1
  167. package/build-module/components/sidebar-edit-mode/index.js +3 -1
  168. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  169. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js +2 -0
  170. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +1 -1
  171. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js +11 -1
  172. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -1
  173. package/build-module/components/sidebar-navigation-screen-main/index.js +2 -27
  174. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  175. package/build-module/components/sidebar-navigation-screen-templates/index.js +5 -23
  176. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  177. package/build-module/components/site-hub/index.js +127 -0
  178. package/build-module/components/site-hub/index.js.map +1 -0
  179. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +43 -0
  180. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -0
  181. package/build-module/components/template-details/edit-template-title.js +1 -0
  182. package/build-module/components/template-details/edit-template-title.js.map +1 -1
  183. package/build-module/components/template-details/template-part-area-selector.js +1 -0
  184. package/build-module/components/template-details/template-part-area-selector.js.map +1 -1
  185. package/build-module/components/use-edited-entity-record/index.js +48 -0
  186. package/build-module/components/use-edited-entity-record/index.js.map +1 -0
  187. package/build-module/hooks/index.js +1 -0
  188. package/build-module/hooks/index.js.map +1 -1
  189. package/build-module/hooks/push-changes-to-global-styles/index.js +132 -0
  190. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -0
  191. package/build-module/index.js +4 -0
  192. package/build-module/index.js.map +1 -1
  193. package/build-module/store/reducer.js +1 -1
  194. package/build-module/store/reducer.js.map +1 -1
  195. package/build-style/style-rtl.css +190 -125
  196. package/build-style/style.css +190 -125
  197. package/package.json +30 -29
  198. package/src/components/add-new-template/new-template-part.js +23 -1
  199. package/src/components/add-new-template/utils.js +14 -0
  200. package/src/components/block-editor/editor-canvas.js +0 -1
  201. package/src/components/block-editor/index.js +14 -59
  202. package/src/components/block-editor/resize-handle.js +6 -2
  203. package/src/components/block-editor/style.scss +43 -7
  204. package/src/components/editor/index.js +2 -17
  205. package/src/components/global-styles/block-preview-panel.js +37 -10
  206. package/src/components/global-styles/border-panel.js +8 -5
  207. package/src/components/global-styles/context-menu.js +6 -0
  208. package/src/components/global-styles/custom-css.js +1 -0
  209. package/src/components/global-styles/dimensions-panel.js +32 -15
  210. package/src/components/global-styles/global-styles-provider.js +11 -5
  211. package/src/components/global-styles/screen-background-color.js +12 -6
  212. package/src/components/global-styles/screen-block-list.js +6 -1
  213. package/src/components/global-styles/screen-block.js +1 -4
  214. package/src/components/global-styles/screen-border.js +8 -3
  215. package/src/components/global-styles/screen-button-color.js +2 -4
  216. package/src/components/global-styles/screen-colors.js +84 -20
  217. package/src/components/global-styles/screen-heading-color.js +8 -10
  218. package/src/components/global-styles/screen-layout.js +11 -3
  219. package/src/components/global-styles/screen-link-color.js +19 -8
  220. package/src/components/global-styles/screen-root.js +34 -27
  221. package/src/components/global-styles/screen-text-color.js +7 -4
  222. package/src/components/global-styles/screen-typography.js +13 -3
  223. package/src/components/global-styles/screen-variations.js +47 -0
  224. package/src/components/global-styles/style.scss +9 -0
  225. package/src/components/global-styles/test/typography-utils.js +72 -23
  226. package/src/components/global-styles/test/use-global-styles-output.js +1 -1
  227. package/src/components/global-styles/typography-panel.js +31 -8
  228. package/src/components/global-styles/typography-utils.js +24 -4
  229. package/src/components/global-styles/ui.js +101 -13
  230. package/src/components/global-styles/use-global-styles-output.js +137 -14
  231. package/src/components/global-styles/utils.js +56 -3
  232. package/src/components/global-styles/variations-panel.js +78 -0
  233. package/src/components/header-edit-mode/document-actions/index.js +18 -37
  234. package/src/components/header-edit-mode/style.scss +1 -0
  235. package/src/components/layout/index.js +217 -172
  236. package/src/components/layout/style.scss +98 -66
  237. package/src/components/list/style.scss +1 -8
  238. package/src/components/sidebar/index.js +4 -1
  239. package/src/components/sidebar-edit-mode/index.js +1 -1
  240. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js +2 -0
  241. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js +10 -0
  242. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/style.scss +4 -0
  243. package/src/components/sidebar-navigation-screen/style.scss +2 -4
  244. package/src/components/sidebar-navigation-screen-main/index.js +1 -29
  245. package/src/components/sidebar-navigation-screen-templates/index.js +9 -27
  246. package/src/components/site-hub/index.js +161 -0
  247. package/src/components/site-hub/style.scss +31 -0
  248. package/src/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +40 -0
  249. package/src/components/template-details/edit-template-title.js +1 -0
  250. package/src/components/template-details/template-part-area-selector.js +1 -0
  251. package/src/components/use-edited-entity-record/index.js +37 -0
  252. package/src/hooks/index.js +1 -0
  253. package/src/hooks/push-changes-to-global-styles/index.js +162 -0
  254. package/src/hooks/push-changes-to-global-styles/style.scss +4 -0
  255. package/src/index.js +2 -0
  256. package/src/store/reducer.js +1 -1
  257. package/src/style.scss +2 -0
  258. package/build/components/site-title/index.js +0 -55
  259. package/build/components/site-title/index.js.map +0 -1
  260. package/build-module/components/site-title/index.js +0 -43
  261. package/build-module/components/site-title/index.js.map +0 -1
  262. package/src/components/site-title/index.js +0 -39
@@ -0,0 +1,40 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useEffect, useRef } from '@wordpress/element';
5
+ import { useSelect, useDispatch } from '@wordpress/data';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { store as editSiteStore } from '../../store';
11
+ import { useLocation, useHistory } from '../routes';
12
+
13
+ export default function useSyncCanvasModeWithURL() {
14
+ const history = useHistory();
15
+ const { params } = useLocation();
16
+ const canvasMode = useSelect(
17
+ ( select ) => select( editSiteStore ).__unstableGetCanvasMode(),
18
+ []
19
+ );
20
+ const { __unstableSetCanvasMode } = useDispatch( editSiteStore );
21
+ const currentCanvasMode = useRef( canvasMode );
22
+ const { canvas: canvasInUrl = 'view' } = params;
23
+ const currentCanvasInUrl = useRef( canvasInUrl );
24
+ useEffect( () => {
25
+ currentCanvasMode.current = canvasMode;
26
+ if ( currentCanvasMode !== currentCanvasInUrl ) {
27
+ history.push( {
28
+ ...params,
29
+ canvas: canvasMode,
30
+ } );
31
+ }
32
+ }, [ canvasMode ] );
33
+
34
+ useEffect( () => {
35
+ currentCanvasInUrl.current = canvasInUrl;
36
+ if ( canvasInUrl !== currentCanvasMode.current ) {
37
+ __unstableSetCanvasMode( canvasInUrl );
38
+ }
39
+ }, [ canvasInUrl ] );
40
+ }
@@ -17,6 +17,7 @@ export default function EditTemplateTitle( { template } ) {
17
17
 
18
18
  return (
19
19
  <TextControl
20
+ __nextHasNoMarginBottom
20
21
  label={ __( 'Title' ) }
21
22
  value={ forceEmpty ? '' : title }
22
23
  help={
@@ -28,6 +28,7 @@ export default function TemplatePartAreaSelector( { id } ) {
28
28
 
29
29
  return (
30
30
  <SelectControl
31
+ __nextHasNoMarginBottom
31
32
  label={ __( 'Area' ) }
32
33
  labelPosition="top"
33
34
  options={ areaOptions }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect } from '@wordpress/data';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { store as editorStore } from '@wordpress/editor';
7
+ import { decodeEntities } from '@wordpress/html-entities';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { store as editSiteStore } from '../../store';
13
+
14
+ export default function useEditedEntityRecord() {
15
+ const { record, title, isLoaded } = useSelect( ( select ) => {
16
+ const { getEditedPostType, getEditedPostId } = select( editSiteStore );
17
+ const { getEditedEntityRecord } = select( coreStore );
18
+ const { __experimentalGetTemplateInfo: getTemplateInfo } =
19
+ select( editorStore );
20
+ const postType = getEditedPostType();
21
+ const postId = getEditedPostId();
22
+ const _record = getEditedEntityRecord( 'postType', postType, postId );
23
+ const _isLoaded = !! postId;
24
+
25
+ return {
26
+ record: _record,
27
+ title: getTemplateInfo( _record ).title,
28
+ isLoaded: _isLoaded,
29
+ };
30
+ }, [] );
31
+
32
+ return {
33
+ isLoaded,
34
+ record,
35
+ getTitle: () => ( title ? decodeEntities( title ) : null ),
36
+ };
37
+ }
@@ -2,4 +2,5 @@
2
2
  * Internal dependencies
3
3
  */
4
4
  import './components';
5
+ import './push-changes-to-global-styles';
5
6
  import './template-part-edit';
@@ -0,0 +1,162 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { get, set } from 'lodash';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { addFilter } from '@wordpress/hooks';
10
+ import { createHigherOrderComponent } from '@wordpress/compose';
11
+ import {
12
+ InspectorAdvancedControls,
13
+ store as blockEditorStore,
14
+ } from '@wordpress/block-editor';
15
+ import { BaseControl, Button } from '@wordpress/components';
16
+ import { __, sprintf } from '@wordpress/i18n';
17
+ import {
18
+ __EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,
19
+ getBlockType,
20
+ } from '@wordpress/blocks';
21
+ import { useContext, useMemo, useCallback } from '@wordpress/element';
22
+ import { useDispatch } from '@wordpress/data';
23
+ import { store as noticesStore } from '@wordpress/notices';
24
+
25
+ /**
26
+ * Internal dependencies
27
+ */
28
+ import { getSupportedGlobalStylesPanels } from '../../components/global-styles/hooks';
29
+ import { GlobalStylesContext } from '../../components/global-styles/context';
30
+ import {
31
+ STYLE_PATH_TO_CSS_VAR_INFIX,
32
+ STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE,
33
+ } from '../../components/global-styles/utils';
34
+
35
+ function getChangesToPush( name, attributes ) {
36
+ return getSupportedGlobalStylesPanels( name ).flatMap( ( key ) => {
37
+ if ( ! STYLE_PROPERTY[ key ] ) {
38
+ return [];
39
+ }
40
+ const { value: path } = STYLE_PROPERTY[ key ];
41
+ const presetAttributeKey = path.join( '.' );
42
+ const presetAttributeValue =
43
+ attributes[
44
+ STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE[ presetAttributeKey ]
45
+ ];
46
+ const value = presetAttributeValue
47
+ ? `var:preset|${ STYLE_PATH_TO_CSS_VAR_INFIX[ presetAttributeKey ] }|${ presetAttributeValue }`
48
+ : get( attributes.style, path );
49
+ return value ? [ { path, value } ] : [];
50
+ } );
51
+ }
52
+
53
+ function cloneDeep( object ) {
54
+ return ! object ? {} : JSON.parse( JSON.stringify( object ) );
55
+ }
56
+
57
+ function PushChangesToGlobalStylesControl( {
58
+ name,
59
+ attributes,
60
+ setAttributes,
61
+ } ) {
62
+ const changes = useMemo(
63
+ () => getChangesToPush( name, attributes ),
64
+ [ name, attributes ]
65
+ );
66
+
67
+ const { user: userConfig, setUserConfig } =
68
+ useContext( GlobalStylesContext );
69
+
70
+ const { __unstableMarkNextChangeAsNotPersistent } =
71
+ useDispatch( blockEditorStore );
72
+ const { createSuccessNotice } = useDispatch( noticesStore );
73
+
74
+ const pushChanges = useCallback( () => {
75
+ if ( changes.length === 0 ) {
76
+ return;
77
+ }
78
+
79
+ const { style: blockStyles } = attributes;
80
+
81
+ const newBlockStyles = cloneDeep( blockStyles );
82
+ const newUserConfig = cloneDeep( userConfig );
83
+
84
+ for ( const { path, value } of changes ) {
85
+ set( newBlockStyles, path, undefined );
86
+ set( newUserConfig, [ 'styles', 'blocks', name, ...path ], value );
87
+ }
88
+
89
+ // @wordpress/core-data doesn't support editing multiple entity types in
90
+ // a single undo level. So for now, we disable @wordpress/core-data undo
91
+ // tracking and implement our own Undo button in the snackbar
92
+ // notification.
93
+ __unstableMarkNextChangeAsNotPersistent();
94
+ setAttributes( { style: newBlockStyles } );
95
+ setUserConfig( () => newUserConfig, { undoIgnore: true } );
96
+
97
+ createSuccessNotice(
98
+ sprintf(
99
+ // translators: %s: Title of the block e.g. 'Heading'.
100
+ __( '%s styles applied.' ),
101
+ getBlockType( name ).title
102
+ ),
103
+ {
104
+ type: 'snackbar',
105
+ actions: [
106
+ {
107
+ label: __( 'Undo' ),
108
+ onClick() {
109
+ __unstableMarkNextChangeAsNotPersistent();
110
+ setAttributes( { style: blockStyles } );
111
+ setUserConfig( () => userConfig, {
112
+ undoIgnore: true,
113
+ } );
114
+ },
115
+ },
116
+ ],
117
+ }
118
+ );
119
+ }, [ changes, attributes, userConfig, name ] );
120
+
121
+ return (
122
+ <BaseControl
123
+ className="edit-site-push-changes-to-global-styles-control"
124
+ help={ sprintf(
125
+ // translators: %s: Title of the block e.g. 'Heading'.
126
+ __(
127
+ 'Apply this block’s typography, spacing, dimensions, and color styles to all %s blocks.'
128
+ ),
129
+ getBlockType( name ).title
130
+ ) }
131
+ >
132
+ <BaseControl.VisualLabel>
133
+ { __( 'Styles' ) }
134
+ </BaseControl.VisualLabel>
135
+ <Button
136
+ variant="primary"
137
+ disabled={ changes.length === 0 }
138
+ onClick={ pushChanges }
139
+ >
140
+ { __( 'Apply globally' ) }
141
+ </Button>
142
+ </BaseControl>
143
+ );
144
+ }
145
+
146
+ const withPushChangesToGlobalStyles = createHigherOrderComponent(
147
+ ( BlockEdit ) => ( props ) =>
148
+ (
149
+ <>
150
+ <BlockEdit { ...props } />
151
+ <InspectorAdvancedControls>
152
+ <PushChangesToGlobalStylesControl { ...props } />
153
+ </InspectorAdvancedControls>
154
+ </>
155
+ )
156
+ );
157
+
158
+ addFilter(
159
+ 'editor.BlockEdit',
160
+ 'core/edit-site/push-changes-to-global-styles',
161
+ withPushChangesToGlobalStyles
162
+ );
@@ -0,0 +1,4 @@
1
+ .edit-site-push-changes-to-global-styles-control .components-button {
2
+ justify-content: center;
3
+ width: 100%;
4
+ }
package/src/index.js CHANGED
@@ -16,6 +16,7 @@ import { store as editorStore } from '@wordpress/editor';
16
16
  import { store as interfaceStore } from '@wordpress/interface';
17
17
  import { store as preferencesStore } from '@wordpress/preferences';
18
18
  import { addFilter } from '@wordpress/hooks';
19
+ import { registerLegacyWidgetBlock } from '@wordpress/widgets';
19
20
 
20
21
  /**
21
22
  * Internal dependencies
@@ -109,6 +110,7 @@ export function initializeEditor( id, settings ) {
109
110
 
110
111
  dispatch( blocksStore ).__experimentalReapplyBlockTypeFilters();
111
112
  registerCoreBlocks();
113
+ registerLegacyWidgetBlock( { inserter: false } );
112
114
  if ( process.env.IS_GUTENBERG_PLUGIN ) {
113
115
  __experimentalRegisterExperimentalCoreBlocks( {
114
116
  enableFSEBlocks: true,
@@ -131,7 +131,7 @@ export function saveViewPanel( state = false, action ) {
131
131
  * @param {Object} state Current state.
132
132
  * @param {Object} action Dispatched action.
133
133
  */
134
- function canvasMode( state = 'view', action ) {
134
+ function canvasMode( state = 'init', action ) {
135
135
  switch ( action.type ) {
136
136
  case 'SET_CANVAS_MODE':
137
137
  return action.mode;
package/src/style.scss CHANGED
@@ -22,8 +22,10 @@
22
22
  @import "./components/sidebar-navigation-item/style.scss";
23
23
  @import "./components/sidebar-navigation-screen/style.scss";
24
24
  @import "./components/sidebar-navigation-screen-templates/style.scss";
25
+ @import "./components/site-hub/style.scss";
25
26
  @import "./components/site-icon/style.scss";
26
27
  @import "./components/style-book/style.scss";
28
+ @import "./hooks/push-changes-to-global-styles/style.scss";
27
29
 
28
30
  html #wpadminbar {
29
31
  display: none;
@@ -1,55 +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 = void 0;
9
-
10
- var _element = require("@wordpress/element");
11
-
12
- var _classnames = _interopRequireDefault(require("classnames"));
13
-
14
- var _data = require("@wordpress/data");
15
-
16
- var _coreData = require("@wordpress/core-data");
17
-
18
- /**
19
- * External dependencies
20
- */
21
-
22
- /**
23
- * WordPress dependencies
24
- */
25
- function SiteTitle(_ref) {
26
- let {
27
- className
28
- } = _ref;
29
- const {
30
- isRequestingSite,
31
- siteTitle
32
- } = (0, _data.useSelect)(select => {
33
- const {
34
- getEntityRecord,
35
- isResolving
36
- } = select(_coreData.store);
37
- const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
38
- return {
39
- isRequestingSite: isResolving('core', 'getEntityRecord', ['root', '__unstableBase', undefined]),
40
- siteTitle: siteData.name
41
- };
42
- }, []);
43
-
44
- if (isRequestingSite && !siteTitle) {
45
- return null;
46
- }
47
-
48
- return (0, _element.createElement)("div", {
49
- className: (0, _classnames.default)(className, 'edit-site-site-title')
50
- }, siteTitle);
51
- }
52
-
53
- var _default = SiteTitle;
54
- exports.default = _default;
55
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/site-title/index.js"],"names":["SiteTitle","className","isRequestingSite","siteTitle","select","getEntityRecord","isResolving","coreDataStore","siteData","undefined","name"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AACA;;AATA;AACA;AACA;;AAGA;AACA;AACA;AAIA,SAASA,SAAT,OAAoC;AAAA,MAAhB;AAAEC,IAAAA;AAAF,GAAgB;AACnC,QAAM;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAAkC,qBAAaC,MAAF,IAAc;AAChE,UAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAmCF,MAAM,CAAEG,eAAF,CAA/C;AACA,UAAMC,QAAQ,GACbH,eAAe,CAAE,MAAF,EAAU,gBAAV,EAA4BI,SAA5B,CAAf,IAA0D,EAD3D;AAGA,WAAO;AACNP,MAAAA,gBAAgB,EAAEI,WAAW,CAAE,MAAF,EAAU,iBAAV,EAA6B,CACzD,MADyD,EAEzD,gBAFyD,EAGzDG,SAHyD,CAA7B,CADvB;AAMNN,MAAAA,SAAS,EAAEK,QAAQ,CAACE;AANd,KAAP;AAQA,GAbuC,EAarC,EAbqC,CAAxC;;AAeA,MAAKR,gBAAgB,IAAI,CAAEC,SAA3B,EAAuC;AACtC,WAAO,IAAP;AACA;;AAED,SACC;AAAK,IAAA,SAAS,EAAG,yBAAYF,SAAZ,EAAuB,sBAAvB;AAAjB,KACGE,SADH,CADD;AAKA;;eAEcH,S","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\n\nfunction SiteTitle( { className } ) {\n\tconst { isRequestingSite, siteTitle } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord, isResolving } = select( coreDataStore );\n\t\tconst siteData =\n\t\t\tgetEntityRecord( 'root', '__unstableBase', undefined ) || {};\n\n\t\treturn {\n\t\t\tisRequestingSite: isResolving( 'core', 'getEntityRecord', [\n\t\t\t\t'root',\n\t\t\t\t'__unstableBase',\n\t\t\t\tundefined,\n\t\t\t] ),\n\t\t\tsiteTitle: siteData.name,\n\t\t};\n\t}, [] );\n\n\tif ( isRequestingSite && ! siteTitle ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={ classnames( className, 'edit-site-site-title' ) }>\n\t\t\t{ siteTitle }\n\t\t</div>\n\t);\n}\n\nexport default SiteTitle;\n"]}
@@ -1,43 +0,0 @@
1
- import { createElement } from "@wordpress/element";
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import classnames from 'classnames';
7
- /**
8
- * WordPress dependencies
9
- */
10
-
11
- import { useSelect } from '@wordpress/data';
12
- import { store as coreDataStore } from '@wordpress/core-data';
13
-
14
- function SiteTitle(_ref) {
15
- let {
16
- className
17
- } = _ref;
18
- const {
19
- isRequestingSite,
20
- siteTitle
21
- } = useSelect(select => {
22
- const {
23
- getEntityRecord,
24
- isResolving
25
- } = select(coreDataStore);
26
- const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
27
- return {
28
- isRequestingSite: isResolving('core', 'getEntityRecord', ['root', '__unstableBase', undefined]),
29
- siteTitle: siteData.name
30
- };
31
- }, []);
32
-
33
- if (isRequestingSite && !siteTitle) {
34
- return null;
35
- }
36
-
37
- return createElement("div", {
38
- className: classnames(className, 'edit-site-site-title')
39
- }, siteTitle);
40
- }
41
-
42
- export default SiteTitle;
43
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/site-title/index.js"],"names":["classnames","useSelect","store","coreDataStore","SiteTitle","className","isRequestingSite","siteTitle","select","getEntityRecord","isResolving","siteData","undefined","name"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,sBAAvC;;AAEA,SAASC,SAAT,OAAoC;AAAA,MAAhB;AAAEC,IAAAA;AAAF,GAAgB;AACnC,QAAM;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAAkCN,SAAS,CAAIO,MAAF,IAAc;AAChE,UAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAmCF,MAAM,CAAEL,aAAF,CAA/C;AACA,UAAMQ,QAAQ,GACbF,eAAe,CAAE,MAAF,EAAU,gBAAV,EAA4BG,SAA5B,CAAf,IAA0D,EAD3D;AAGA,WAAO;AACNN,MAAAA,gBAAgB,EAAEI,WAAW,CAAE,MAAF,EAAU,iBAAV,EAA6B,CACzD,MADyD,EAEzD,gBAFyD,EAGzDE,SAHyD,CAA7B,CADvB;AAMNL,MAAAA,SAAS,EAAEI,QAAQ,CAACE;AANd,KAAP;AAQA,GAbgD,EAa9C,EAb8C,CAAjD;;AAeA,MAAKP,gBAAgB,IAAI,CAAEC,SAA3B,EAAuC;AACtC,WAAO,IAAP;AACA;;AAED,SACC;AAAK,IAAA,SAAS,EAAGP,UAAU,CAAEK,SAAF,EAAa,sBAAb;AAA3B,KACGE,SADH,CADD;AAKA;;AAED,eAAeH,SAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\n\nfunction SiteTitle( { className } ) {\n\tconst { isRequestingSite, siteTitle } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord, isResolving } = select( coreDataStore );\n\t\tconst siteData =\n\t\t\tgetEntityRecord( 'root', '__unstableBase', undefined ) || {};\n\n\t\treturn {\n\t\t\tisRequestingSite: isResolving( 'core', 'getEntityRecord', [\n\t\t\t\t'root',\n\t\t\t\t'__unstableBase',\n\t\t\t\tundefined,\n\t\t\t] ),\n\t\t\tsiteTitle: siteData.name,\n\t\t};\n\t}, [] );\n\n\tif ( isRequestingSite && ! siteTitle ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={ classnames( className, 'edit-site-site-title' ) }>\n\t\t\t{ siteTitle }\n\t\t</div>\n\t);\n}\n\nexport default SiteTitle;\n"]}
@@ -1,39 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import classnames from 'classnames';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { useSelect } from '@wordpress/data';
10
- import { store as coreDataStore } from '@wordpress/core-data';
11
-
12
- function SiteTitle( { className } ) {
13
- const { isRequestingSite, siteTitle } = useSelect( ( select ) => {
14
- const { getEntityRecord, isResolving } = select( coreDataStore );
15
- const siteData =
16
- getEntityRecord( 'root', '__unstableBase', undefined ) || {};
17
-
18
- return {
19
- isRequestingSite: isResolving( 'core', 'getEntityRecord', [
20
- 'root',
21
- '__unstableBase',
22
- undefined,
23
- ] ),
24
- siteTitle: siteData.name,
25
- };
26
- }, [] );
27
-
28
- if ( isRequestingSite && ! siteTitle ) {
29
- return null;
30
- }
31
-
32
- return (
33
- <div className={ classnames( className, 'edit-site-site-title' ) }>
34
- { siteTitle }
35
- </div>
36
- );
37
- }
38
-
39
- export default SiteTitle;