@wordpress/edit-site 3.0.1-next.253d9b6e21.0 → 3.0.3

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 (276) hide show
  1. package/README.md +1 -1
  2. package/build/components/block-editor/back-button.js +60 -0
  3. package/build/components/block-editor/back-button.js.map +1 -0
  4. package/build/components/block-editor/index.js +20 -5
  5. package/build/components/block-editor/index.js.map +1 -1
  6. package/build/components/edit-template-part-menu-button/index.js +63 -0
  7. package/build/components/edit-template-part-menu-button/index.js.map +1 -0
  8. package/build/components/editor/global-styles-provider.js +15 -2
  9. package/build/components/editor/global-styles-provider.js.map +1 -1
  10. package/build/components/editor/global-styles-renderer.js +8 -8
  11. package/build/components/editor/global-styles-renderer.js.map +1 -1
  12. package/build/components/editor/index.js +7 -7
  13. package/build/components/editor/index.js.map +1 -1
  14. package/build/components/editor/utils.js +4 -9
  15. package/build/components/editor/utils.js.map +1 -1
  16. package/build/components/{sidebar → global-styles}/border-panel.js +2 -2
  17. package/build/components/global-styles/border-panel.js.map +1 -0
  18. package/build/components/{sidebar → global-styles}/color-palette-panel.js +4 -2
  19. package/build/components/global-styles/color-palette-panel.js.map +1 -0
  20. package/build/components/{sidebar → global-styles}/color-panel.js +24 -21
  21. package/build/components/global-styles/color-panel.js.map +1 -0
  22. package/build/components/global-styles/context-menu.js +58 -0
  23. package/build/components/global-styles/context-menu.js.map +1 -0
  24. package/build/components/{sidebar → global-styles}/dimensions-panel.js +58 -8
  25. package/build/components/global-styles/dimensions-panel.js.map +1 -0
  26. package/build/components/global-styles/header.js +54 -0
  27. package/build/components/global-styles/header.js.map +1 -0
  28. package/build/components/global-styles/index.js +89 -0
  29. package/build/components/global-styles/index.js.map +1 -0
  30. package/build/components/global-styles/navigation-button.js +43 -0
  31. package/build/components/global-styles/navigation-button.js.map +1 -0
  32. package/build/components/global-styles/palette.js +57 -0
  33. package/build/components/global-styles/palette.js.map +1 -0
  34. package/build/components/global-styles/preview.js +59 -0
  35. package/build/components/global-styles/preview.js.map +1 -0
  36. package/build/components/global-styles/screen-block-list.js +76 -0
  37. package/build/components/global-styles/screen-block-list.js.map +1 -0
  38. package/build/components/global-styles/screen-block.js +45 -0
  39. package/build/components/global-styles/screen-block.js.map +1 -0
  40. package/build/components/global-styles/screen-color-palette.js +48 -0
  41. package/build/components/global-styles/screen-color-palette.js.map +1 -0
  42. package/build/components/global-styles/screen-colors.js +51 -0
  43. package/build/components/global-styles/screen-colors.js.map +1 -0
  44. package/build/components/global-styles/screen-layout.js +60 -0
  45. package/build/components/global-styles/screen-layout.js.map +1 -0
  46. package/build/components/global-styles/screen-root.js +44 -0
  47. package/build/components/global-styles/screen-root.js.map +1 -0
  48. package/build/components/global-styles/screen-typography.js +50 -0
  49. package/build/components/global-styles/screen-typography.js.map +1 -0
  50. package/build/components/global-styles/subtitle.js +25 -0
  51. package/build/components/global-styles/subtitle.js.map +1 -0
  52. package/build/components/{sidebar → global-styles}/typography-panel.js +1 -3
  53. package/build/components/global-styles/typography-panel.js.map +1 -0
  54. package/build/components/header/document-actions/index.js +1 -1
  55. package/build/components/header/document-actions/index.js.map +1 -1
  56. package/build/components/header/plugin-more-menu-item/index.js +82 -0
  57. package/build/components/header/plugin-more-menu-item/index.js.map +1 -0
  58. package/build/components/header/plugin-sidebar-more-menu-item/index.js +75 -0
  59. package/build/components/header/plugin-sidebar-more-menu-item/index.js.map +1 -0
  60. package/build/components/header/undo-redo/redo.js +1 -1
  61. package/build/components/header/undo-redo/redo.js.map +1 -1
  62. package/build/components/header/undo-redo/undo.js +1 -1
  63. package/build/components/header/undo-redo/undo.js.map +1 -1
  64. package/build/components/keyboard-shortcuts/index.js +2 -10
  65. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  66. package/build/components/navigation-sidebar/index.js +1 -1
  67. package/build/components/navigation-sidebar/index.js.map +1 -1
  68. package/build/components/navigation-sidebar/navigation-panel/constants.js +10 -10
  69. package/build/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
  70. package/build/components/navigation-sidebar/navigation-panel/content-navigation-item.js +1 -3
  71. package/build/components/navigation-sidebar/navigation-panel/content-navigation-item.js.map +1 -1
  72. package/build/components/save-button/index.js +1 -1
  73. package/build/components/save-button/index.js.map +1 -1
  74. package/build/components/secondary-sidebar/inserter-sidebar.js +2 -1
  75. package/build/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  76. package/build/components/sidebar/global-styles-sidebar.js +11 -161
  77. package/build/components/sidebar/global-styles-sidebar.js.map +1 -1
  78. package/build/components/sidebar/index.js +1 -6
  79. package/build/components/sidebar/index.js.map +1 -1
  80. package/build/components/sidebar/plugin-sidebar/index.js +95 -0
  81. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -0
  82. package/build/components/template-details/index.js +12 -6
  83. package/build/components/template-details/index.js.map +1 -1
  84. package/build/components/template-details/template-areas.js +73 -0
  85. package/build/components/template-details/template-areas.js.map +1 -0
  86. package/build/components/template-part-converter/convert-to-regular.js +3 -3
  87. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  88. package/build/components/template-part-converter/index.js +1 -1
  89. package/build/components/template-part-converter/index.js.map +1 -1
  90. package/build/components/url-query-controller/index.js +1 -1
  91. package/build/components/url-query-controller/index.js.map +1 -1
  92. package/build/index.js +24 -0
  93. package/build/index.js.map +1 -1
  94. package/build/store/actions.js +60 -7
  95. package/build/store/actions.js.map +1 -1
  96. package/build/store/constants.js +19 -1
  97. package/build/store/constants.js.map +1 -1
  98. package/build/store/reducer.js +16 -7
  99. package/build/store/reducer.js.map +1 -1
  100. package/build/store/selectors.js +91 -9
  101. package/build/store/selectors.js.map +1 -1
  102. package/build-module/components/block-editor/back-button.js +48 -0
  103. package/build-module/components/block-editor/back-button.js.map +1 -0
  104. package/build-module/components/block-editor/index.js +17 -5
  105. package/build-module/components/block-editor/index.js.map +1 -1
  106. package/build-module/components/edit-template-part-menu-button/index.js +49 -0
  107. package/build-module/components/edit-template-part-menu-button/index.js.map +1 -0
  108. package/build-module/components/editor/global-styles-provider.js +16 -3
  109. package/build-module/components/editor/global-styles-provider.js.map +1 -1
  110. package/build-module/components/editor/global-styles-renderer.js +8 -8
  111. package/build-module/components/editor/global-styles-renderer.js.map +1 -1
  112. package/build-module/components/editor/index.js +4 -5
  113. package/build-module/components/editor/index.js.map +1 -1
  114. package/build-module/components/editor/utils.js +2 -7
  115. package/build-module/components/editor/utils.js.map +1 -1
  116. package/build-module/components/{sidebar → global-styles}/border-panel.js +2 -2
  117. package/build-module/components/global-styles/border-panel.js.map +1 -0
  118. package/build-module/components/{sidebar → global-styles}/color-palette-panel.js +4 -2
  119. package/build-module/components/global-styles/color-palette-panel.js.map +1 -0
  120. package/build-module/components/{sidebar → global-styles}/color-panel.js +25 -22
  121. package/build-module/components/global-styles/color-panel.js.map +1 -0
  122. package/build-module/components/global-styles/context-menu.js +41 -0
  123. package/build-module/components/global-styles/context-menu.js.map +1 -0
  124. package/build-module/components/{sidebar → global-styles}/dimensions-panel.js +58 -9
  125. package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
  126. package/build-module/components/global-styles/header.js +41 -0
  127. package/build-module/components/global-styles/header.js.map +1 -0
  128. package/build-module/components/global-styles/index.js +70 -0
  129. package/build-module/components/global-styles/index.js.map +1 -0
  130. package/build-module/components/global-styles/navigation-button.js +31 -0
  131. package/build-module/components/global-styles/navigation-button.js.map +1 -0
  132. package/build-module/components/global-styles/palette.js +43 -0
  133. package/build-module/components/global-styles/palette.js.map +1 -0
  134. package/build-module/components/global-styles/preview.js +50 -0
  135. package/build-module/components/global-styles/preview.js.map +1 -0
  136. package/build-module/components/global-styles/screen-block-list.js +58 -0
  137. package/build-module/components/global-styles/screen-block-list.js.map +1 -0
  138. package/build-module/components/global-styles/screen-block.js +32 -0
  139. package/build-module/components/global-styles/screen-block.js.map +1 -0
  140. package/build-module/components/global-styles/screen-color-palette.js +35 -0
  141. package/build-module/components/global-styles/screen-color-palette.js.map +1 -0
  142. package/build-module/components/global-styles/screen-colors.js +38 -0
  143. package/build-module/components/global-styles/screen-colors.js.map +1 -0
  144. package/build-module/components/global-styles/screen-layout.js +44 -0
  145. package/build-module/components/global-styles/screen-layout.js.map +1 -0
  146. package/build-module/components/global-styles/screen-root.js +29 -0
  147. package/build-module/components/global-styles/screen-root.js.map +1 -0
  148. package/build-module/components/global-styles/screen-typography.js +37 -0
  149. package/build-module/components/global-styles/screen-typography.js.map +1 -0
  150. package/build-module/components/global-styles/subtitle.js +17 -0
  151. package/build-module/components/global-styles/subtitle.js.map +1 -0
  152. package/build-module/components/{sidebar → global-styles}/typography-panel.js +1 -2
  153. package/build-module/components/global-styles/typography-panel.js.map +1 -0
  154. package/build-module/components/header/document-actions/index.js +1 -1
  155. package/build-module/components/header/document-actions/index.js.map +1 -1
  156. package/build-module/components/header/plugin-more-menu-item/index.js +70 -0
  157. package/build-module/components/header/plugin-more-menu-item/index.js.map +1 -0
  158. package/build-module/components/header/plugin-sidebar-more-menu-item/index.js +64 -0
  159. package/build-module/components/header/plugin-sidebar-more-menu-item/index.js.map +1 -0
  160. package/build-module/components/header/undo-redo/redo.js +1 -1
  161. package/build-module/components/header/undo-redo/redo.js.map +1 -1
  162. package/build-module/components/header/undo-redo/undo.js +1 -1
  163. package/build-module/components/header/undo-redo/undo.js.map +1 -1
  164. package/build-module/components/keyboard-shortcuts/index.js +3 -11
  165. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  166. package/build-module/components/navigation-sidebar/index.js +1 -1
  167. package/build-module/components/navigation-sidebar/index.js.map +1 -1
  168. package/build-module/components/navigation-sidebar/navigation-panel/constants.js +5 -3
  169. package/build-module/components/navigation-sidebar/navigation-panel/constants.js.map +1 -1
  170. package/build-module/components/navigation-sidebar/navigation-panel/content-navigation-item.js +1 -3
  171. package/build-module/components/navigation-sidebar/navigation-panel/content-navigation-item.js.map +1 -1
  172. package/build-module/components/save-button/index.js +1 -1
  173. package/build-module/components/save-button/index.js.map +1 -1
  174. package/build-module/components/secondary-sidebar/inserter-sidebar.js +2 -1
  175. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  176. package/build-module/components/sidebar/global-styles-sidebar.js +13 -159
  177. package/build-module/components/sidebar/global-styles-sidebar.js.map +1 -1
  178. package/build-module/components/sidebar/index.js +2 -7
  179. package/build-module/components/sidebar/index.js.map +1 -1
  180. package/build-module/components/sidebar/plugin-sidebar/index.js +84 -0
  181. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -0
  182. package/build-module/components/template-details/index.js +13 -8
  183. package/build-module/components/template-details/index.js.map +1 -1
  184. package/build-module/components/template-details/template-areas.js +60 -0
  185. package/build-module/components/template-details/template-areas.js.map +1 -0
  186. package/build-module/components/template-part-converter/convert-to-regular.js +3 -3
  187. package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
  188. package/build-module/components/template-part-converter/index.js +1 -1
  189. package/build-module/components/template-part-converter/index.js.map +1 -1
  190. package/build-module/components/url-query-controller/index.js +1 -1
  191. package/build-module/components/url-query-controller/index.js.map +1 -1
  192. package/build-module/index.js +3 -0
  193. package/build-module/index.js.map +1 -1
  194. package/build-module/store/actions.js +51 -7
  195. package/build-module/store/actions.js.map +1 -1
  196. package/build-module/store/constants.js +13 -0
  197. package/build-module/store/constants.js.map +1 -1
  198. package/build-module/store/reducer.js +16 -7
  199. package/build-module/store/reducer.js.map +1 -1
  200. package/build-module/store/selectors.js +85 -9
  201. package/build-module/store/selectors.js.map +1 -1
  202. package/build-style/style-rtl.css +158 -19
  203. package/build-style/style.css +158 -19
  204. package/package.json +26 -26
  205. package/src/components/block-editor/back-button.js +44 -0
  206. package/src/components/block-editor/index.js +18 -2
  207. package/src/components/block-editor/style.scss +26 -0
  208. package/src/components/edit-template-part-menu-button/index.js +57 -0
  209. package/src/components/editor/global-styles-provider.js +19 -3
  210. package/src/components/editor/global-styles-renderer.js +8 -5
  211. package/src/components/editor/index.js +5 -8
  212. package/src/components/editor/test/global-styles-provider.js +131 -0
  213. package/src/components/editor/test/global-styles-renderer.js +1 -1
  214. package/src/components/editor/test/utils.js +146 -0
  215. package/src/components/editor/utils.js +2 -7
  216. package/src/components/{sidebar → global-styles}/border-panel.js +2 -2
  217. package/src/components/{sidebar → global-styles}/color-palette-panel.js +13 -11
  218. package/src/components/{sidebar → global-styles}/color-panel.js +43 -28
  219. package/src/components/global-styles/context-menu.js +54 -0
  220. package/src/components/{sidebar → global-styles}/dimensions-panel.js +60 -9
  221. package/src/components/global-styles/header.js +50 -0
  222. package/src/components/global-styles/index.js +81 -0
  223. package/src/components/global-styles/navigation-button.js +35 -0
  224. package/src/components/global-styles/palette.js +67 -0
  225. package/src/components/global-styles/preview.js +41 -0
  226. package/src/components/global-styles/screen-block-list.js +59 -0
  227. package/src/components/global-styles/screen-block.js +28 -0
  228. package/src/components/global-styles/screen-color-palette.js +33 -0
  229. package/src/components/global-styles/screen-colors.js +36 -0
  230. package/src/components/global-styles/screen-layout.js +45 -0
  231. package/src/components/global-styles/screen-root.js +43 -0
  232. package/src/components/global-styles/screen-typography.js +33 -0
  233. package/src/components/global-styles/style.scss +35 -0
  234. package/src/components/global-styles/subtitle.js +10 -0
  235. package/src/components/{sidebar → global-styles}/typography-panel.js +1 -2
  236. package/src/components/header/document-actions/index.js +1 -1
  237. package/src/components/header/plugin-more-menu-item/index.js +71 -0
  238. package/src/components/header/plugin-sidebar-more-menu-item/index.js +64 -0
  239. package/src/components/header/undo-redo/redo.js +4 -1
  240. package/src/components/header/undo-redo/undo.js +4 -1
  241. package/src/components/keyboard-shortcuts/index.js +25 -40
  242. package/src/components/navigation-sidebar/index.js +1 -1
  243. package/src/components/navigation-sidebar/navigation-panel/constants.js +9 -4
  244. package/src/components/navigation-sidebar/navigation-panel/content-navigation-item.js +1 -1
  245. package/src/components/navigation-sidebar/navigation-panel/style.scss +1 -0
  246. package/src/components/navigation-sidebar/navigation-toggle/style.scss +3 -2
  247. package/src/components/save-button/index.js +1 -1
  248. package/src/components/secondary-sidebar/inserter-sidebar.js +1 -0
  249. package/src/components/sidebar/global-styles-sidebar.js +14 -187
  250. package/src/components/sidebar/index.js +2 -7
  251. package/src/components/sidebar/plugin-sidebar/index.js +80 -0
  252. package/src/components/sidebar/style.scss +40 -0
  253. package/src/components/template-details/index.js +17 -7
  254. package/src/components/template-details/style.scss +36 -27
  255. package/src/components/template-details/template-areas.js +66 -0
  256. package/src/components/template-part-converter/convert-to-regular.js +2 -8
  257. package/src/components/template-part-converter/index.js +1 -1
  258. package/src/components/url-query-controller/index.js +1 -1
  259. package/src/index.js +3 -0
  260. package/src/store/actions.js +59 -7
  261. package/src/store/constants.js +15 -0
  262. package/src/store/reducer.js +26 -12
  263. package/src/store/selectors.js +96 -9
  264. package/src/store/test/reducer.js +40 -23
  265. package/src/store/test/selectors.js +34 -3
  266. package/src/style.scss +1 -0
  267. package/build/components/sidebar/border-panel.js.map +0 -1
  268. package/build/components/sidebar/color-palette-panel.js.map +0 -1
  269. package/build/components/sidebar/color-panel.js.map +0 -1
  270. package/build/components/sidebar/dimensions-panel.js.map +0 -1
  271. package/build/components/sidebar/typography-panel.js.map +0 -1
  272. package/build-module/components/sidebar/border-panel.js.map +0 -1
  273. package/build-module/components/sidebar/color-palette-panel.js.map +0 -1
  274. package/build-module/components/sidebar/color-panel.js.map +0 -1
  275. package/build-module/components/sidebar/dimensions-panel.js.map +0 -1
  276. package/build-module/components/sidebar/typography-panel.js.map +0 -1
@@ -10,13 +10,15 @@ exports.__experimentalGetPreviewDeviceType = __experimentalGetPreviewDeviceType;
10
10
  exports.getHomeTemplateId = getHomeTemplateId;
11
11
  exports.getEditedPostType = getEditedPostType;
12
12
  exports.getEditedPostId = getEditedPostId;
13
+ exports.getPreviousEditedPostType = getPreviousEditedPostType;
14
+ exports.getPreviousEditedPostId = getPreviousEditedPostId;
13
15
  exports.getPage = getPage;
14
16
  exports.getNavigationPanelActiveMenu = getNavigationPanelActiveMenu;
15
17
  exports.isNavigationOpened = isNavigationOpened;
16
18
  exports.isInserterOpened = isInserterOpened;
17
19
  exports.__experimentalGetInsertionPoint = __experimentalGetInsertionPoint;
18
20
  exports.isListViewOpened = isListViewOpened;
19
- exports.getCurrentTemplateNavigationPanelSubMenu = exports.getSettings = exports.getCanUserCreateMedia = void 0;
21
+ exports.getTemplateAreaBlocks = exports.getCurrentTemplateNavigationPanelSubMenu = exports.getSettings = exports.getCanUserCreateMedia = void 0;
20
22
 
21
23
  var _lodash = require("lodash");
22
24
 
@@ -28,6 +30,8 @@ var _data = require("@wordpress/data");
28
30
 
29
31
  var _mediaUtils = require("@wordpress/media-utils");
30
32
 
33
+ var _blocks = require("@wordpress/blocks");
34
+
31
35
  var _constants = require("../components/navigation-sidebar/navigation-panel/constants");
32
36
 
33
37
  var _templateHierarchy = require("../components/navigation-sidebar/navigation-panel/template-hierarchy");
@@ -44,6 +48,10 @@ var _templateHierarchy = require("../components/navigation-sidebar/navigation-pa
44
48
  * Internal dependencies
45
49
  */
46
50
 
51
+ /**
52
+ * @typedef {'template'|'template_type'} TemplateType Template type.
53
+ */
54
+
47
55
  /**
48
56
  * Returns whether the given feature is enabled or not.
49
57
  *
@@ -128,29 +136,61 @@ exports.getSettings = getSettings;
128
136
  function getHomeTemplateId(state) {
129
137
  return state.homeTemplateId;
130
138
  }
139
+
140
+ function getCurrentEditedPost(state) {
141
+ return state.editedPost[state.editedPost.length - 1] || {};
142
+ }
143
+
144
+ function getPreviousEditedPost(state) {
145
+ return state.editedPost[state.editedPost.length - 2] || {};
146
+ }
131
147
  /**
132
148
  * Returns the current edited post type (wp_template or wp_template_part).
133
149
  *
134
150
  * @param {Object} state Global application state.
135
151
  *
136
- * @return {number?} Template ID.
152
+ * @return {TemplateType?} Template type.
137
153
  */
138
154
 
139
155
 
140
156
  function getEditedPostType(state) {
141
- return state.editedPost.type;
157
+ return getCurrentEditedPost(state).type;
142
158
  }
143
159
  /**
144
160
  * Returns the ID of the currently edited template or template part.
145
161
  *
146
162
  * @param {Object} state Global application state.
147
163
  *
148
- * @return {number?} Post ID.
164
+ * @return {string?} Post ID.
149
165
  */
150
166
 
151
167
 
152
168
  function getEditedPostId(state) {
153
- return state.editedPost.id;
169
+ return getCurrentEditedPost(state).id;
170
+ }
171
+ /**
172
+ * Returns the previous edited post type (wp_template or wp_template_part).
173
+ *
174
+ * @param {Object} state Global application state.
175
+ *
176
+ * @return {TemplateType?} Template type.
177
+ */
178
+
179
+
180
+ function getPreviousEditedPostType(state) {
181
+ return getPreviousEditedPost(state).type;
182
+ }
183
+ /**
184
+ * Returns the ID of the previous edited template or template part.
185
+ *
186
+ * @param {Object} state Global application state.
187
+ *
188
+ * @return {string?} Post ID.
189
+ */
190
+
191
+
192
+ function getPreviousEditedPostId(state) {
193
+ return getPreviousEditedPost(state).id;
154
194
  }
155
195
  /**
156
196
  * Returns the current page object.
@@ -162,7 +202,7 @@ function getEditedPostId(state) {
162
202
 
163
203
 
164
204
  function getPage(state) {
165
- return state.editedPost.page;
205
+ return getCurrentEditedPost(state).page;
166
206
  }
167
207
  /**
168
208
  * Returns the active menu in the navigation panel.
@@ -242,18 +282,20 @@ function isInserterOpened(state) {
242
282
  *
243
283
  * @param {Object} state Global application state.
244
284
  *
245
- * @return {Object} The root client ID and index to insert at.
285
+ * @return {Object} The root client ID, index to insert at and starting filter value.
246
286
  */
247
287
 
248
288
 
249
289
  function __experimentalGetInsertionPoint(state) {
250
290
  const {
251
291
  rootClientId,
252
- insertionIndex
292
+ insertionIndex,
293
+ filterValue
253
294
  } = state.blockInserterPanel;
254
295
  return {
255
296
  rootClientId,
256
- insertionIndex
297
+ insertionIndex,
298
+ filterValue
257
299
  };
258
300
  }
259
301
  /**
@@ -268,4 +310,44 @@ function __experimentalGetInsertionPoint(state) {
268
310
  function isListViewOpened(state) {
269
311
  return state.listViewPanel;
270
312
  }
313
+ /**
314
+ * Returns the template part blocks grouped by areas for the current edited template.
315
+ *
316
+ * @param {Object} state Global application state.
317
+ * @return {Object} Template part blocks by areas.
318
+ */
319
+
320
+
321
+ const getTemplateAreaBlocks = (0, _data.createRegistrySelector)(select => state => {
322
+ const templateType = getEditedPostType(state);
323
+ const templateId = getEditedPostId(state);
324
+ const template = select(_coreData.store).getEditedEntityRecord('postType', templateType, templateId);
325
+ const templateParts = select(_coreData.store).getEntityRecords('postType', 'wp_template_part', {
326
+ per_page: -1
327
+ });
328
+ const templatePartsById = (0, _lodash.keyBy)(templateParts, templatePart => templatePart.id);
329
+ const templatePartBlocksByAreas = {};
330
+
331
+ for (const block of (_template$blocks = template.blocks) !== null && _template$blocks !== void 0 ? _template$blocks : []) {
332
+ var _template$blocks;
333
+
334
+ if ((0, _blocks.isTemplatePart)(block)) {
335
+ const {
336
+ attributes: {
337
+ theme,
338
+ slug
339
+ }
340
+ } = block;
341
+ const templatePartId = `${theme}//${slug}`;
342
+ const templatePart = templatePartsById[templatePartId];
343
+
344
+ if (templatePart) {
345
+ templatePartBlocksByAreas[templatePart.area] = block;
346
+ }
347
+ }
348
+ }
349
+
350
+ return templatePartBlocksByAreas;
351
+ });
352
+ exports.getTemplateAreaBlocks = getTemplateAreaBlocks;
271
353
  //# sourceMappingURL=selectors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/store/selectors.js"],"names":["isFeatureActive","state","feature","preferences","features","__experimentalGetPreviewDeviceType","deviceType","getCanUserCreateMedia","select","coreDataStore","canUser","getSettings","setIsInserterOpen","settings","outlineMode","focusMode","hasFixedToolbar","__experimentalSetIsInserterOpened","canUserCreateMedia","mediaUpload","onError","rest","wpAllowedMimeTypes","allowedMimeTypes","message","getHomeTemplateId","homeTemplateId","getEditedPostType","editedPost","type","getEditedPostId","id","getPage","page","getNavigationPanelActiveMenu","navigationPanel","menu","getCurrentTemplateNavigationPanelSubMenu","templateType","templateId","template","getEntityRecord","MENU_ROOT","find","submenu","area","MENU_TEMPLATE_PARTS","templates","getEntityRecords","per_page","showOnFront","getEditedEntityRecord","show_on_front","slug","MENU_TEMPLATES_UNUSED","isNavigationOpened","isOpen","isInserterOpened","blockInserterPanel","__experimentalGetInsertionPoint","rootClientId","insertionIndex","isListViewOpened","listViewPanel"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, map } from 'lodash';\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { createRegistrySelector } from '@wordpress/data';\nimport { uploadMedia } from '@wordpress/media-utils';\n\n/**\n * Internal dependencies\n */\nimport {\n\tMENU_ROOT,\n\tMENU_TEMPLATE_PARTS,\n\tMENU_TEMPLATES_UNUSED,\n\tTEMPLATE_PARTS_SUB_MENUS,\n} from '../components/navigation-sidebar/navigation-panel/constants';\nimport {\n\tgetTemplateLocation,\n\tisTemplateSuperseded,\n} from '../components/navigation-sidebar/navigation-panel/template-hierarchy';\n\n/**\n * Returns whether the given feature is enabled or not.\n *\n * @param {Object} state Global application state.\n * @param {string} feature Feature slug.\n *\n * @return {boolean} Is active.\n */\nexport function isFeatureActive( state, feature ) {\n\treturn get( state.preferences.features, [ feature ], false );\n}\n\n/**\n * Returns the current editing canvas device type.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Device type.\n */\nexport function __experimentalGetPreviewDeviceType( state ) {\n\treturn state.deviceType;\n}\n\n/**\n * Returns whether the current user can create media or not.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Whether the current user can create media or not.\n */\nexport const getCanUserCreateMedia = createRegistrySelector( ( select ) => () =>\n\tselect( coreDataStore ).canUser( 'create', 'media' )\n);\n\n/**\n * Returns the settings, taking into account active features and permissions.\n *\n * @param {Object} state Global application state.\n * @param {Function} setIsInserterOpen Setter for the open state of the global inserter.\n *\n * @return {Object} Settings.\n */\nexport const getSettings = createSelector(\n\t( state, setIsInserterOpen ) => {\n\t\tconst settings = {\n\t\t\t...state.settings,\n\t\t\toutlineMode: true,\n\t\t\tfocusMode: isFeatureActive( state, 'focusMode' ),\n\t\t\thasFixedToolbar: isFeatureActive( state, 'fixedToolbar' ),\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpen,\n\t\t};\n\n\t\tconst canUserCreateMedia = getCanUserCreateMedia( state );\n\t\tif ( ! canUserCreateMedia ) {\n\t\t\treturn settings;\n\t\t}\n\n\t\tsettings.mediaUpload = ( { onError, ...rest } ) => {\n\t\t\tuploadMedia( {\n\t\t\t\twpAllowedMimeTypes: state.settings.allowedMimeTypes,\n\t\t\t\tonError: ( { message } ) => onError( message ),\n\t\t\t\t...rest,\n\t\t\t} );\n\t\t};\n\t\treturn settings;\n\t},\n\t( state ) => [\n\t\tgetCanUserCreateMedia( state ),\n\t\tstate.settings,\n\t\tisFeatureActive( state, 'focusMode' ),\n\t\tisFeatureActive( state, 'fixedToolbar' ),\n\t]\n);\n\n/**\n * Returns the current home template ID.\n *\n * @param {Object} state Global application state.\n *\n * @return {number?} Home template ID.\n */\nexport function getHomeTemplateId( state ) {\n\treturn state.homeTemplateId;\n}\n\n/**\n * Returns the current edited post type (wp_template or wp_template_part).\n *\n * @param {Object} state Global application state.\n *\n * @return {number?} Template ID.\n */\nexport function getEditedPostType( state ) {\n\treturn state.editedPost.type;\n}\n\n/**\n * Returns the ID of the currently edited template or template part.\n *\n * @param {Object} state Global application state.\n *\n * @return {number?} Post ID.\n */\nexport function getEditedPostId( state ) {\n\treturn state.editedPost.id;\n}\n\n/**\n * Returns the current page object.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Page.\n */\nexport function getPage( state ) {\n\treturn state.editedPost.page;\n}\n\n/**\n * Returns the active menu in the navigation panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Active menu.\n */\nexport function getNavigationPanelActiveMenu( state ) {\n\treturn state.navigationPanel.menu;\n}\n\n/**\n * Returns the current template or template part's corresponding\n * navigation panel's sub menu, to be used with `openNavigationPanelToMenu`.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} The current template or template part's sub menu.\n */\nexport const getCurrentTemplateNavigationPanelSubMenu = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst templateType = getEditedPostType( state );\n\t\tconst templateId = getEditedPostId( state );\n\t\tconst template = templateId\n\t\t\t? select( coreDataStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\ttemplateType,\n\t\t\t\t\ttemplateId\n\t\t\t )\n\t\t\t: null;\n\n\t\tif ( ! template ) {\n\t\t\treturn MENU_ROOT;\n\t\t}\n\n\t\tif ( 'wp_template_part' === templateType ) {\n\t\t\treturn (\n\t\t\t\tTEMPLATE_PARTS_SUB_MENUS.find(\n\t\t\t\t\t( submenu ) => submenu.area === template?.area\n\t\t\t\t)?.menu || MENU_TEMPLATE_PARTS\n\t\t\t);\n\t\t}\n\n\t\tconst templates = select( coreDataStore ).getEntityRecords(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t}\n\t\t);\n\t\tconst showOnFront = select( coreDataStore ).getEditedEntityRecord(\n\t\t\t'root',\n\t\t\t'site'\n\t\t).show_on_front;\n\n\t\tif (\n\t\t\tisTemplateSuperseded(\n\t\t\t\ttemplate.slug,\n\t\t\t\tmap( templates, 'slug' ),\n\t\t\t\tshowOnFront\n\t\t\t)\n\t\t) {\n\t\t\treturn MENU_TEMPLATES_UNUSED;\n\t\t}\n\n\t\treturn getTemplateLocation( template.slug );\n\t}\n);\n\n/**\n * Returns the current opened/closed state of the navigation panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if the navigation panel should be open; false if closed.\n */\nexport function isNavigationOpened( state ) {\n\treturn state.navigationPanel.isOpen;\n}\n\n/**\n * Returns the current opened/closed state of the inserter panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if the inserter panel should be open; false if closed.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID and index to insert at.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tconst { rootClientId, insertionIndex } = state.blockInserterPanel;\n\treturn { rootClientId, insertionIndex };\n}\n\n/**\n * Returns the current opened/closed state of the list view panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if the list view panel should be open; false if closed.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/store/selectors.js"],"names":["isFeatureActive","state","feature","preferences","features","__experimentalGetPreviewDeviceType","deviceType","getCanUserCreateMedia","select","coreDataStore","canUser","getSettings","setIsInserterOpen","settings","outlineMode","focusMode","hasFixedToolbar","__experimentalSetIsInserterOpened","canUserCreateMedia","mediaUpload","onError","rest","wpAllowedMimeTypes","allowedMimeTypes","message","getHomeTemplateId","homeTemplateId","getCurrentEditedPost","editedPost","length","getPreviousEditedPost","getEditedPostType","type","getEditedPostId","id","getPreviousEditedPostType","getPreviousEditedPostId","getPage","page","getNavigationPanelActiveMenu","navigationPanel","menu","getCurrentTemplateNavigationPanelSubMenu","templateType","templateId","template","getEntityRecord","MENU_ROOT","find","submenu","area","MENU_TEMPLATE_PARTS","templates","getEntityRecords","per_page","showOnFront","getEditedEntityRecord","show_on_front","slug","MENU_TEMPLATES_UNUSED","isNavigationOpened","isOpen","isInserterOpened","blockInserterPanel","__experimentalGetInsertionPoint","rootClientId","insertionIndex","filterValue","isListViewOpened","listViewPanel","getTemplateAreaBlocks","templateParts","templatePartsById","templatePart","templatePartBlocksByAreas","block","blocks","attributes","theme","templatePartId"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, map, keyBy } from 'lodash';\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { createRegistrySelector } from '@wordpress/data';\nimport { uploadMedia } from '@wordpress/media-utils';\nimport { isTemplatePart } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tMENU_ROOT,\n\tMENU_TEMPLATE_PARTS,\n\tMENU_TEMPLATES_UNUSED,\n\tTEMPLATE_PARTS_SUB_MENUS,\n} from '../components/navigation-sidebar/navigation-panel/constants';\nimport {\n\tgetTemplateLocation,\n\tisTemplateSuperseded,\n} from '../components/navigation-sidebar/navigation-panel/template-hierarchy';\n\n/**\n * @typedef {'template'|'template_type'} TemplateType Template type.\n */\n\n/**\n * Returns whether the given feature is enabled or not.\n *\n * @param {Object} state Global application state.\n * @param {string} feature Feature slug.\n *\n * @return {boolean} Is active.\n */\nexport function isFeatureActive( state, feature ) {\n\treturn get( state.preferences.features, [ feature ], false );\n}\n\n/**\n * Returns the current editing canvas device type.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Device type.\n */\nexport function __experimentalGetPreviewDeviceType( state ) {\n\treturn state.deviceType;\n}\n\n/**\n * Returns whether the current user can create media or not.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Whether the current user can create media or not.\n */\nexport const getCanUserCreateMedia = createRegistrySelector( ( select ) => () =>\n\tselect( coreDataStore ).canUser( 'create', 'media' )\n);\n\n/**\n * Returns the settings, taking into account active features and permissions.\n *\n * @param {Object} state Global application state.\n * @param {Function} setIsInserterOpen Setter for the open state of the global inserter.\n *\n * @return {Object} Settings.\n */\nexport const getSettings = createSelector(\n\t( state, setIsInserterOpen ) => {\n\t\tconst settings = {\n\t\t\t...state.settings,\n\t\t\toutlineMode: true,\n\t\t\tfocusMode: isFeatureActive( state, 'focusMode' ),\n\t\t\thasFixedToolbar: isFeatureActive( state, 'fixedToolbar' ),\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpen,\n\t\t};\n\n\t\tconst canUserCreateMedia = getCanUserCreateMedia( state );\n\t\tif ( ! canUserCreateMedia ) {\n\t\t\treturn settings;\n\t\t}\n\n\t\tsettings.mediaUpload = ( { onError, ...rest } ) => {\n\t\t\tuploadMedia( {\n\t\t\t\twpAllowedMimeTypes: state.settings.allowedMimeTypes,\n\t\t\t\tonError: ( { message } ) => onError( message ),\n\t\t\t\t...rest,\n\t\t\t} );\n\t\t};\n\t\treturn settings;\n\t},\n\t( state ) => [\n\t\tgetCanUserCreateMedia( state ),\n\t\tstate.settings,\n\t\tisFeatureActive( state, 'focusMode' ),\n\t\tisFeatureActive( state, 'fixedToolbar' ),\n\t]\n);\n\n/**\n * Returns the current home template ID.\n *\n * @param {Object} state Global application state.\n *\n * @return {number?} Home template ID.\n */\nexport function getHomeTemplateId( state ) {\n\treturn state.homeTemplateId;\n}\n\nfunction getCurrentEditedPost( state ) {\n\treturn state.editedPost[ state.editedPost.length - 1 ] || {};\n}\n\nfunction getPreviousEditedPost( state ) {\n\treturn state.editedPost[ state.editedPost.length - 2 ] || {};\n}\n\n/**\n * Returns the current edited post type (wp_template or wp_template_part).\n *\n * @param {Object} state Global application state.\n *\n * @return {TemplateType?} Template type.\n */\nexport function getEditedPostType( state ) {\n\treturn getCurrentEditedPost( state ).type;\n}\n\n/**\n * Returns the ID of the currently edited template or template part.\n *\n * @param {Object} state Global application state.\n *\n * @return {string?} Post ID.\n */\nexport function getEditedPostId( state ) {\n\treturn getCurrentEditedPost( state ).id;\n}\n\n/**\n * Returns the previous edited post type (wp_template or wp_template_part).\n *\n * @param {Object} state Global application state.\n *\n * @return {TemplateType?} Template type.\n */\nexport function getPreviousEditedPostType( state ) {\n\treturn getPreviousEditedPost( state ).type;\n}\n\n/**\n * Returns the ID of the previous edited template or template part.\n *\n * @param {Object} state Global application state.\n *\n * @return {string?} Post ID.\n */\nexport function getPreviousEditedPostId( state ) {\n\treturn getPreviousEditedPost( state ).id;\n}\n\n/**\n * Returns the current page object.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Page.\n */\nexport function getPage( state ) {\n\treturn getCurrentEditedPost( state ).page;\n}\n\n/**\n * Returns the active menu in the navigation panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Active menu.\n */\nexport function getNavigationPanelActiveMenu( state ) {\n\treturn state.navigationPanel.menu;\n}\n\n/**\n * Returns the current template or template part's corresponding\n * navigation panel's sub menu, to be used with `openNavigationPanelToMenu`.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} The current template or template part's sub menu.\n */\nexport const getCurrentTemplateNavigationPanelSubMenu = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst templateType = getEditedPostType( state );\n\t\tconst templateId = getEditedPostId( state );\n\t\tconst template = templateId\n\t\t\t? select( coreDataStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\ttemplateType,\n\t\t\t\t\ttemplateId\n\t\t\t )\n\t\t\t: null;\n\n\t\tif ( ! template ) {\n\t\t\treturn MENU_ROOT;\n\t\t}\n\n\t\tif ( 'wp_template_part' === templateType ) {\n\t\t\treturn (\n\t\t\t\tTEMPLATE_PARTS_SUB_MENUS.find(\n\t\t\t\t\t( submenu ) => submenu.area === template?.area\n\t\t\t\t)?.menu || MENU_TEMPLATE_PARTS\n\t\t\t);\n\t\t}\n\n\t\tconst templates = select( coreDataStore ).getEntityRecords(\n\t\t\t'postType',\n\t\t\t'wp_template',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t}\n\t\t);\n\t\tconst showOnFront = select( coreDataStore ).getEditedEntityRecord(\n\t\t\t'root',\n\t\t\t'site'\n\t\t).show_on_front;\n\n\t\tif (\n\t\t\tisTemplateSuperseded(\n\t\t\t\ttemplate.slug,\n\t\t\t\tmap( templates, 'slug' ),\n\t\t\t\tshowOnFront\n\t\t\t)\n\t\t) {\n\t\t\treturn MENU_TEMPLATES_UNUSED;\n\t\t}\n\n\t\treturn getTemplateLocation( template.slug );\n\t}\n);\n\n/**\n * Returns the current opened/closed state of the navigation panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if the navigation panel should be open; false if closed.\n */\nexport function isNavigationOpened( state ) {\n\treturn state.navigationPanel.isOpen;\n}\n\n/**\n * Returns the current opened/closed state of the inserter panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if the inserter panel should be open; false if closed.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID, index to insert at and starting filter value.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tconst {\n\t\trootClientId,\n\t\tinsertionIndex,\n\t\tfilterValue,\n\t} = state.blockInserterPanel;\n\treturn { rootClientId, insertionIndex, filterValue };\n}\n\n/**\n * Returns the current opened/closed state of the list view panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if the list view panel should be open; false if closed.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n\n/**\n * Returns the template part blocks grouped by areas for the current edited template.\n *\n * @param {Object} state Global application state.\n * @return {Object} Template part blocks by areas.\n */\nexport const getTemplateAreaBlocks = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst templateType = getEditedPostType( state );\n\t\tconst templateId = getEditedPostId( state );\n\t\tconst template = select( coreDataStore ).getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\ttemplateType,\n\t\t\ttemplateId\n\t\t);\n\n\t\tconst templateParts = select( coreDataStore ).getEntityRecords(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t}\n\t\t);\n\t\tconst templatePartsById = keyBy(\n\t\t\ttemplateParts,\n\t\t\t( templatePart ) => templatePart.id\n\t\t);\n\n\t\tconst templatePartBlocksByAreas = {};\n\n\t\tfor ( const block of template.blocks ?? [] ) {\n\t\t\tif ( isTemplatePart( block ) ) {\n\t\t\t\tconst {\n\t\t\t\t\tattributes: { theme, slug },\n\t\t\t\t} = block;\n\t\t\t\tconst templatePartId = `${ theme }//${ slug }`;\n\t\t\t\tconst templatePart = templatePartsById[ templatePartId ];\n\n\t\t\t\tif ( templatePart ) {\n\t\t\t\t\ttemplatePartBlocksByAreas[ templatePart.area ] = block;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn templatePartBlocksByAreas;\n\t}\n);\n"]}
@@ -0,0 +1,48 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { Button } from '@wordpress/components';
7
+ import { arrowLeft } from '@wordpress/icons';
8
+ import { useSelect, useDispatch } from '@wordpress/data';
9
+ import { __ } from '@wordpress/i18n';
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+
14
+ import { store as editSiteStore } from '../../store';
15
+
16
+ function BackButton() {
17
+ const {
18
+ isTemplatePart,
19
+ previousTemplateId
20
+ } = useSelect(select => {
21
+ const {
22
+ getEditedPostType,
23
+ getPreviousEditedPostId
24
+ } = select(editSiteStore);
25
+ return {
26
+ isTemplatePart: getEditedPostType() === 'wp_template_part',
27
+ previousTemplateId: getPreviousEditedPostId()
28
+ };
29
+ }, []);
30
+ const {
31
+ goBack
32
+ } = useDispatch(editSiteStore);
33
+
34
+ if (!isTemplatePart || !previousTemplateId) {
35
+ return null;
36
+ }
37
+
38
+ return createElement(Button, {
39
+ className: "edit-site-visual-editor__back-button",
40
+ icon: arrowLeft,
41
+ onClick: () => {
42
+ goBack();
43
+ }
44
+ }, __('Back'));
45
+ }
46
+
47
+ export default BackButton;
48
+ //# sourceMappingURL=back-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/back-button.js"],"names":["Button","arrowLeft","useSelect","useDispatch","__","store","editSiteStore","BackButton","isTemplatePart","previousTemplateId","select","getEditedPostType","getPreviousEditedPostId","goBack"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,QAAuB,uBAAvB;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,aAAvC;;AAEA,SAASC,UAAT,GAAsB;AACrB,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA;AAAlB,MAAyCP,SAAS,CAAIQ,MAAF,IAAc;AACvE,UAAM;AAAEC,MAAAA,iBAAF;AAAqBC,MAAAA;AAArB,QAAiDF,MAAM,CAC5DJ,aAD4D,CAA7D;AAIA,WAAO;AACNE,MAAAA,cAAc,EAAEG,iBAAiB,OAAO,kBADlC;AAENF,MAAAA,kBAAkB,EAAEG,uBAAuB;AAFrC,KAAP;AAIA,GATuD,EASrD,EATqD,CAAxD;AAUA,QAAM;AAAEC,IAAAA;AAAF,MAAaV,WAAW,CAAEG,aAAF,CAA9B;;AAEA,MAAK,CAAEE,cAAF,IAAoB,CAAEC,kBAA3B,EAAgD;AAC/C,WAAO,IAAP;AACA;;AAED,SACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,sCADX;AAEC,IAAA,IAAI,EAAGR,SAFR;AAGC,IAAA,OAAO,EAAG,MAAM;AACfY,MAAAA,MAAM;AACN;AALF,KAOGT,EAAE,CAAE,MAAF,CAPL,CADD;AAWA;;AAED,eAAeG,UAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { arrowLeft } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\n\nfunction BackButton() {\n\tconst { isTemplatePart, previousTemplateId } = useSelect( ( select ) => {\n\t\tconst { getEditedPostType, getPreviousEditedPostId } = select(\n\t\t\teditSiteStore\n\t\t);\n\n\t\treturn {\n\t\t\tisTemplatePart: getEditedPostType() === 'wp_template_part',\n\t\t\tpreviousTemplateId: getPreviousEditedPostId(),\n\t\t};\n\t}, [] );\n\tconst { goBack } = useDispatch( editSiteStore );\n\n\tif ( ! isTemplatePart || ! previousTemplateId ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-site-visual-editor__back-button\"\n\t\t\ticon={ arrowLeft }\n\t\t\tonClick={ () => {\n\t\t\t\tgoBack();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Back' ) }\n\t\t</Button>\n\t);\n}\n\nexport default BackButton;\n"]}
@@ -1,9 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { createElement } from "@wordpress/element";
3
3
 
4
+ /**
5
+ * External dependencies
6
+ */
7
+ import classnames from 'classnames';
4
8
  /**
5
9
  * WordPress dependencies
6
10
  */
11
+
7
12
  import { useSelect, useDispatch } from '@wordpress/data';
8
13
  import { useCallback, useRef } from '@wordpress/element';
9
14
  import { useEntityBlockEditor } from '@wordpress/core-data';
@@ -18,6 +23,8 @@ import NavigateToLink from '../navigate-to-link';
18
23
  import { SidebarInspectorFill } from '../sidebar';
19
24
  import { store as editSiteStore } from '../../store';
20
25
  import BlockInspectorButton from './block-inspector-button';
26
+ import EditTemplatePartMenuButton from '../edit-template-part-menu-button';
27
+ import BackButton from './back-button';
21
28
  const LAYOUT = {
22
29
  type: 'default',
23
30
  // At the root level of the site editor, no alignments should be allowed.
@@ -53,27 +60,32 @@ export default function BlockEditor({
53
60
  const ref = useMouseMoveTypingReset();
54
61
  const contentRef = useRef();
55
62
  const mergedRefs = useMergeRefs([contentRef, useTypingObserver()]);
63
+ const isTemplatePart = templateType === 'wp_template_part';
56
64
  return createElement(BlockEditorProvider, {
57
65
  settings: settings,
58
66
  value: blocks,
59
67
  onInput: onInput,
60
68
  onChange: onChange,
61
69
  useSubRegistry: false
62
- }, createElement(TemplatePartConverter, null), createElement(__experimentalLinkControl.ViewerFill, null, useCallback(fillProps => createElement(NavigateToLink, _extends({}, fillProps, {
70
+ }, createElement(EditTemplatePartMenuButton, null), createElement(TemplatePartConverter, null), createElement(__experimentalLinkControl.ViewerFill, null, useCallback(fillProps => createElement(NavigateToLink, _extends({}, fillProps, {
63
71
  activePage: page,
64
72
  onActivePageChange: setPage
65
73
  })), [page])), createElement(SidebarInspectorFill, null, createElement(BlockInspector, null)), createElement(BlockTools, {
66
- className: "edit-site-visual-editor",
74
+ className: classnames('edit-site-visual-editor', {
75
+ 'is-focus-mode': isTemplatePart
76
+ }),
67
77
  __unstableContentRef: contentRef
68
- }, createElement(Iframe, {
78
+ }, createElement(BackButton, null), createElement(Iframe, {
69
79
  style: resizedCanvasStyles,
70
80
  head: createElement(EditorStyles, {
71
81
  styles: settings.styles
72
82
  }),
73
83
  ref: ref,
74
- contentRef: mergedRefs
84
+ contentRef: mergedRefs,
85
+ name: "editor-canvas",
86
+ className: "edit-site-visual-editor__editor-canvas"
75
87
  }, createElement(BlockList, {
76
- className: "edit-site-block-editor__block-list",
88
+ className: "edit-site-block-editor__block-list wp-site-blocks",
77
89
  __experimentalLayout: LAYOUT
78
90
  })), createElement(__unstableBlockSettingsMenuFirstItem, null, ({
79
91
  onClose
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/index.js"],"names":["useSelect","useDispatch","useCallback","useRef","useEntityBlockEditor","BlockEditorProvider","__experimentalLinkControl","BlockInspector","BlockList","BlockTools","__unstableBlockSettingsMenuFirstItem","__experimentalUseResizeCanvas","useResizeCanvas","__unstableUseTypingObserver","useTypingObserver","__unstableUseMouseMoveTypingReset","useMouseMoveTypingReset","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","useMergeRefs","TemplatePartConverter","NavigateToLink","SidebarInspectorFill","store","editSiteStore","BlockInspectorButton","LAYOUT","type","alignments","BlockEditor","setIsInserterOpen","settings","templateType","page","deviceType","select","getSettings","getEditedPostType","getPage","__experimentalGetPreviewDeviceType","blocks","onInput","onChange","setPage","resizedCanvasStyles","ref","contentRef","mergedRefs","fillProps","styles","onClose"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback, useRef } from '@wordpress/element';\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tBlockEditorProvider,\n\t__experimentalLinkControl,\n\tBlockInspector,\n\tBlockList,\n\tBlockTools,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n} from '@wordpress/block-editor';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartConverter from '../template-part-converter';\nimport NavigateToLink from '../navigate-to-link';\nimport { SidebarInspectorFill } from '../sidebar';\nimport { store as editSiteStore } from '../../store';\nimport BlockInspectorButton from './block-inspector-button';\n\nconst LAYOUT = {\n\ttype: 'default',\n\t// At the root level of the site editor, no alignments should be allowed.\n\talignments: [],\n};\n\nexport default function BlockEditor( { setIsInserterOpen } ) {\n\tconst { settings, templateType, page, deviceType } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetEditedPostType,\n\t\t\t\tgetPage,\n\t\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\t} = select( editSiteStore );\n\t\t\treturn {\n\t\t\t\tsettings: getSettings( setIsInserterOpen ),\n\t\t\t\ttemplateType: getEditedPostType(),\n\t\t\t\tpage: getPage(),\n\t\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\t};\n\t\t},\n\t\t[ setIsInserterOpen ]\n\t);\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\ttemplateType\n\t);\n\tconst { setPage } = useDispatch( editSiteStore );\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, true );\n\tconst ref = useMouseMoveTypingReset();\n\tconst contentRef = useRef();\n\tconst mergedRefs = useMergeRefs( [ contentRef, useTypingObserver() ] );\n\n\treturn (\n\t\t<BlockEditorProvider\n\t\t\tsettings={ settings }\n\t\t\tvalue={ blocks }\n\t\t\tonInput={ onInput }\n\t\t\tonChange={ onChange }\n\t\t\tuseSubRegistry={ false }\n\t\t>\n\t\t\t<TemplatePartConverter />\n\t\t\t<__experimentalLinkControl.ViewerFill>\n\t\t\t\t{ useCallback(\n\t\t\t\t\t( fillProps ) => (\n\t\t\t\t\t\t<NavigateToLink\n\t\t\t\t\t\t\t{ ...fillProps }\n\t\t\t\t\t\t\tactivePage={ page }\n\t\t\t\t\t\t\tonActivePageChange={ setPage }\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\t[ page ]\n\t\t\t\t) }\n\t\t\t</__experimentalLinkControl.ViewerFill>\n\t\t\t<SidebarInspectorFill>\n\t\t\t\t<BlockInspector />\n\t\t\t</SidebarInspectorFill>\n\t\t\t<BlockTools\n\t\t\t\tclassName=\"edit-site-visual-editor\"\n\t\t\t\t__unstableContentRef={ contentRef }\n\t\t\t>\n\t\t\t\t<Iframe\n\t\t\t\t\tstyle={ resizedCanvasStyles }\n\t\t\t\t\thead={ <EditorStyles styles={ settings.styles } /> }\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tcontentRef={ mergedRefs }\n\t\t\t\t>\n\t\t\t\t\t<BlockList\n\t\t\t\t\t\tclassName=\"edit-site-block-editor__block-list\"\n\t\t\t\t\t\t__experimentalLayout={ LAYOUT }\n\t\t\t\t\t/>\n\t\t\t\t</Iframe>\n\t\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t\t</BlockTools>\n\t\t</BlockEditorProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/index.js"],"names":["classnames","useSelect","useDispatch","useCallback","useRef","useEntityBlockEditor","BlockEditorProvider","__experimentalLinkControl","BlockInspector","BlockList","BlockTools","__unstableBlockSettingsMenuFirstItem","__experimentalUseResizeCanvas","useResizeCanvas","__unstableUseTypingObserver","useTypingObserver","__unstableUseMouseMoveTypingReset","useMouseMoveTypingReset","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","useMergeRefs","TemplatePartConverter","NavigateToLink","SidebarInspectorFill","store","editSiteStore","BlockInspectorButton","EditTemplatePartMenuButton","BackButton","LAYOUT","type","alignments","BlockEditor","setIsInserterOpen","settings","templateType","page","deviceType","select","getSettings","getEditedPostType","getPage","__experimentalGetPreviewDeviceType","blocks","onInput","onChange","setPage","resizedCanvasStyles","ref","contentRef","mergedRefs","isTemplatePart","fillProps","styles","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCallback, useRef } from '@wordpress/element';\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tBlockEditorProvider,\n\t__experimentalLinkControl,\n\tBlockInspector,\n\tBlockList,\n\tBlockTools,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n} from '@wordpress/block-editor';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartConverter from '../template-part-converter';\nimport NavigateToLink from '../navigate-to-link';\nimport { SidebarInspectorFill } from '../sidebar';\nimport { store as editSiteStore } from '../../store';\nimport BlockInspectorButton from './block-inspector-button';\nimport EditTemplatePartMenuButton from '../edit-template-part-menu-button';\nimport BackButton from './back-button';\n\nconst LAYOUT = {\n\ttype: 'default',\n\t// At the root level of the site editor, no alignments should be allowed.\n\talignments: [],\n};\n\nexport default function BlockEditor( { setIsInserterOpen } ) {\n\tconst { settings, templateType, page, deviceType } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetEditedPostType,\n\t\t\t\tgetPage,\n\t\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\t} = select( editSiteStore );\n\n\t\t\treturn {\n\t\t\t\tsettings: getSettings( setIsInserterOpen ),\n\t\t\t\ttemplateType: getEditedPostType(),\n\t\t\t\tpage: getPage(),\n\t\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\t};\n\t\t},\n\t\t[ setIsInserterOpen ]\n\t);\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\ttemplateType\n\t);\n\tconst { setPage } = useDispatch( editSiteStore );\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, true );\n\tconst ref = useMouseMoveTypingReset();\n\tconst contentRef = useRef();\n\tconst mergedRefs = useMergeRefs( [ contentRef, useTypingObserver() ] );\n\n\tconst isTemplatePart = templateType === 'wp_template_part';\n\n\treturn (\n\t\t<BlockEditorProvider\n\t\t\tsettings={ settings }\n\t\t\tvalue={ blocks }\n\t\t\tonInput={ onInput }\n\t\t\tonChange={ onChange }\n\t\t\tuseSubRegistry={ false }\n\t\t>\n\t\t\t<EditTemplatePartMenuButton />\n\t\t\t<TemplatePartConverter />\n\t\t\t<__experimentalLinkControl.ViewerFill>\n\t\t\t\t{ useCallback(\n\t\t\t\t\t( fillProps ) => (\n\t\t\t\t\t\t<NavigateToLink\n\t\t\t\t\t\t\t{ ...fillProps }\n\t\t\t\t\t\t\tactivePage={ page }\n\t\t\t\t\t\t\tonActivePageChange={ setPage }\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\t[ page ]\n\t\t\t\t) }\n\t\t\t</__experimentalLinkControl.ViewerFill>\n\t\t\t<SidebarInspectorFill>\n\t\t\t\t<BlockInspector />\n\t\t\t</SidebarInspectorFill>\n\t\t\t<BlockTools\n\t\t\t\tclassName={ classnames( 'edit-site-visual-editor', {\n\t\t\t\t\t'is-focus-mode': isTemplatePart,\n\t\t\t\t} ) }\n\t\t\t\t__unstableContentRef={ contentRef }\n\t\t\t>\n\t\t\t\t<BackButton />\n\t\t\t\t<Iframe\n\t\t\t\t\tstyle={ resizedCanvasStyles }\n\t\t\t\t\thead={ <EditorStyles styles={ settings.styles } /> }\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tcontentRef={ mergedRefs }\n\t\t\t\t\tname=\"editor-canvas\"\n\t\t\t\t\tclassName=\"edit-site-visual-editor__editor-canvas\"\n\t\t\t\t>\n\t\t\t\t\t<BlockList\n\t\t\t\t\t\tclassName=\"edit-site-block-editor__block-list wp-site-blocks\"\n\t\t\t\t\t\t__experimentalLayout={ LAYOUT }\n\t\t\t\t\t/>\n\t\t\t\t</Iframe>\n\t\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t\t</BlockTools>\n\t\t</BlockEditorProvider>\n\t);\n}\n"]}
@@ -0,0 +1,49 @@
1
+ import { createElement } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { useSelect, useDispatch } from '@wordpress/data';
7
+ import { store as blockEditorStore, BlockSettingsMenuControls } from '@wordpress/block-editor';
8
+ import { store as coreStore } from '@wordpress/core-data';
9
+ import { MenuItem } from '@wordpress/components';
10
+ import { isTemplatePart } from '@wordpress/blocks';
11
+ import { __, sprintf } from '@wordpress/i18n';
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+
16
+ import { store as editSiteStore } from '../../store';
17
+ export default function EditTemplatePartMenuButton() {
18
+ const selectedTemplatePart = useSelect(select => {
19
+ const block = select(blockEditorStore).getSelectedBlock();
20
+
21
+ if (block && isTemplatePart(block)) {
22
+ const {
23
+ theme,
24
+ slug
25
+ } = block.attributes;
26
+ return select(coreStore).getEntityRecord('postType', 'wp_template_part', // Ideally this should be an official public API.
27
+ `${theme}//${slug}`);
28
+ }
29
+ }, []);
30
+ const {
31
+ pushTemplatePart
32
+ } = useDispatch(editSiteStore);
33
+
34
+ if (!selectedTemplatePart) {
35
+ return null;
36
+ }
37
+
38
+ return createElement(BlockSettingsMenuControls, null, ({
39
+ onClose
40
+ }) => createElement(MenuItem, {
41
+ onClick: () => {
42
+ pushTemplatePart(selectedTemplatePart.id);
43
+ onClose();
44
+ }
45
+ },
46
+ /* translators: %s: template part title */
47
+ sprintf(__('Edit %s'), selectedTemplatePart.slug)));
48
+ }
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/edit-template-part-menu-button/index.js"],"names":["useSelect","useDispatch","store","blockEditorStore","BlockSettingsMenuControls","coreStore","MenuItem","isTemplatePart","__","sprintf","editSiteStore","EditTemplatePartMenuButton","selectedTemplatePart","select","block","getSelectedBlock","theme","slug","attributes","getEntityRecord","pushTemplatePart","onClose","id"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SACCC,KAAK,IAAIC,gBADV,EAECC,yBAFD,QAGO,yBAHP;AAIA,SAASF,KAAK,IAAIG,SAAlB,QAAmC,sBAAnC;AACA,SAASC,QAAT,QAAyB,uBAAzB;AACA,SAASC,cAAT,QAA+B,mBAA/B;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA;AACA;AACA;;AACA,SAASP,KAAK,IAAIQ,aAAlB,QAAuC,aAAvC;AAEA,eAAe,SAASC,0BAAT,GAAsC;AACpD,QAAMC,oBAAoB,GAAGZ,SAAS,CAAIa,MAAF,IAAc;AACrD,UAAMC,KAAK,GAAGD,MAAM,CAAEV,gBAAF,CAAN,CAA2BY,gBAA3B,EAAd;;AAEA,QAAKD,KAAK,IAAIP,cAAc,CAAEO,KAAF,CAA5B,EAAwC;AACvC,YAAM;AAAEE,QAAAA,KAAF;AAASC,QAAAA;AAAT,UAAkBH,KAAK,CAACI,UAA9B;AAEA,aAAOL,MAAM,CAAER,SAAF,CAAN,CAAoBc,eAApB,CACN,UADM,EAEN,kBAFM,EAGN;AACC,SAAGH,KAAO,KAAKC,IAAM,EAJhB,CAAP;AAMA;AACD,GAbqC,EAanC,EAbmC,CAAtC;AAcA,QAAM;AAAEG,IAAAA;AAAF,MAAuBnB,WAAW,CAAES,aAAF,CAAxC;;AAEA,MAAK,CAAEE,oBAAP,EAA8B;AAC7B,WAAO,IAAP;AACA;;AAED,SACC,cAAC,yBAAD,QACG,CAAE;AAAES,IAAAA;AAAF,GAAF,KACD,cAAC,QAAD;AACC,IAAA,OAAO,EAAG,MAAM;AACfD,MAAAA,gBAAgB,CAAER,oBAAoB,CAACU,EAAvB,CAAhB;AACAD,MAAAA,OAAO;AACP;AAJF;AAOE;AACAZ,EAAAA,OAAO,CAAED,EAAE,CAAE,SAAF,CAAJ,EAAmBI,oBAAoB,CAACK,IAAxC,CART,CAFF,CADD;AAiBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tstore as blockEditorStore,\n\tBlockSettingsMenuControls,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { MenuItem } from '@wordpress/components';\nimport { isTemplatePart } from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\n\nexport default function EditTemplatePartMenuButton() {\n\tconst selectedTemplatePart = useSelect( ( select ) => {\n\t\tconst block = select( blockEditorStore ).getSelectedBlock();\n\n\t\tif ( block && isTemplatePart( block ) ) {\n\t\t\tconst { theme, slug } = block.attributes;\n\n\t\t\treturn select( coreStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\t// Ideally this should be an official public API.\n\t\t\t\t`${ theme }//${ slug }`\n\t\t\t);\n\t\t}\n\t}, [] );\n\tconst { pushTemplatePart } = useDispatch( editSiteStore );\n\n\tif ( ! selectedTemplatePart ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tpushTemplatePart( selectedTemplatePart.id );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{\n\t\t\t\t\t\t/* translators: %s: template part title */\n\t\t\t\t\t\tsprintf( __( 'Edit %s' ), selectedTemplatePart.slug )\n\t\t\t\t\t}\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
@@ -3,7 +3,7 @@ import { createElement } from "@wordpress/element";
3
3
  /**
4
4
  * External dependencies
5
5
  */
6
- import { set, get, mergeWith, mapValues, setWith, clone } from 'lodash';
6
+ import { set, get, has, mergeWith, mapValues, setWith, clone } from 'lodash';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
@@ -59,8 +59,21 @@ export const useGlobalStylesReset = () => {
59
59
  const extractSupportKeys = supports => {
60
60
  const supportKeys = [];
61
61
  Object.keys(STYLE_PROPERTY).forEach(name => {
62
+ if (!STYLE_PROPERTY[name].support) {
63
+ return;
64
+ } // Opting out means that, for certain support keys like background color,
65
+ // blocks have to explicitly set the support value false. If the key is
66
+ // unset, we still enable it.
67
+
68
+
69
+ if (STYLE_PROPERTY[name].requiresOptOut) {
70
+ if (has(supports, STYLE_PROPERTY[name].support[0]) && get(supports, STYLE_PROPERTY[name].support) !== false) {
71
+ return supportKeys.push(name);
72
+ }
73
+ }
74
+
62
75
  if (get(supports, STYLE_PROPERTY[name].support, false)) {
63
- supportKeys.push(name);
76
+ return supportKeys.push(name);
64
77
  }
65
78
  });
66
79
  return supportKeys;
@@ -110,7 +123,7 @@ export default function GlobalStylesProvider({
110
123
  blockTypes: select(blocksStore).getBlockTypes(),
111
124
  settings: select(editSiteStore).getSettings()
112
125
  };
113
- });
126
+ }, []);
114
127
  const {
115
128
  updateSettings
116
129
  } = useDispatch(editSiteStore);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/editor/global-styles-provider.js"],"names":["set","get","mergeWith","mapValues","setWith","clone","createContext","useCallback","useContext","useEffect","useMemo","__EXPERIMENTAL_STYLE_PROPERTY","STYLE_PROPERTY","__EXPERIMENTAL_ELEMENTS","ELEMENTS","store","blocksStore","useEntityProp","useSelect","useDispatch","ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","getValueFromVariable","getPresetVariable","PRESET_METADATA","toCustomProperties","toStyles","editSiteStore","EMPTY_CONTENT","isGlobalStylesUserThemeJSON","version","EMPTY_CONTENT_STRING","JSON","stringify","GlobalStylesContext","getSetting","context","path","setSetting","newValue","getStyle","propertyName","origin","setStyle","contexts","mergeTreesCustomizer","objValue","srcValue","Array","isArray","useGlobalStylesContext","useGlobalStylesEntityContent","useGlobalStylesReset","content","setContent","canRestart","extractSupportKeys","supports","supportKeys","Object","keys","forEach","name","support","push","getBlockMetadata","blockTypes","result","blockType","selector","__experimentalSelector","replace","blockSelectors","split","elements","key","elementSelector","blockSelector","join","immutableSet","object","value","GlobalStylesProvider","children","baseStyles","settings","select","getBlockTypes","getSettings","updateSettings","blocks","__experimentalGlobalStylesBaseStyles","themeStyles","userStyles","mergedStyles","newUserStyles","parse","e","console","error","addUserToSettings","settingsToAdd","presetData","user","userStylesWithOrigin","newMergedStyles","nextValue","root","propertyPath","newContent","newSettings","styles","newStyles","nonGlobalStyles","filter","style","isGlobalStyles","customProperties","globalStyles","css","__experimentalNoWrapper","__experimentalFeatures"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,GAAT,EAAcC,GAAd,EAAmBC,SAAnB,EAA8BC,SAA9B,EAAyCC,OAAzC,EAAkDC,KAAlD,QAA+D,QAA/D;AAEA;AACA;AACA;;AACA,SACCC,aADD,EAECC,WAFD,EAGCC,UAHD,EAICC,SAJD,EAKCC,OALD,QAMO,oBANP;AAOA,SACCC,6BAA6B,IAAIC,cADlC,EAECC,uBAAuB,IAAIC,QAF5B,EAGCC,KAAK,IAAIC,WAHV,QAIO,mBAJP;AAKA,SAASC,aAAT,QAA8B,sBAA9B;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AAEA;AACA;AACA;;AACA,SACCC,eADD,EAECC,mBAFD,EAGCC,mBAHD,EAICC,oBAJD,EAKCC,iBALD,EAMCC,eAND,QAOO,SAPP;AAQA,SAASC,kBAAT,EAA6BC,QAA7B,QAA6C,0BAA7C;AACA,SAASZ,KAAK,IAAIa,aAAlB,QAAuC,aAAvC;AAEA,MAAMC,aAAa,GAAG;AAAEC,EAAAA,2BAA2B,EAAE,IAA/B;AAAqCC,EAAAA,OAAO,EAAE;AAA9C,CAAtB;AACA,MAAMC,oBAAoB,GAAGC,IAAI,CAACC,SAAL,CAAgBL,aAAhB,CAA7B;AAEA,MAAMM,mBAAmB,GAAG7B,aAAa,CAAE;AAC1C;AACA8B,EAAAA,UAAU,EAAE,CAAEC,OAAF,EAAWC,IAAX,KAAqB,CAAE,CAFO;AAG1CC,EAAAA,UAAU,EAAE,CAAEF,OAAF,EAAWC,IAAX,EAAiBE,QAAjB,KAA+B,CAAE,CAHH;AAI1CC,EAAAA,QAAQ,EAAE,CAAEJ,OAAF,EAAWK,YAAX,EAAyBC,MAAzB,KAAqC,CAAE,CAJP;AAK1CC,EAAAA,QAAQ,EAAE,CAAEP,OAAF,EAAWK,YAAX,EAAyBF,QAAzB,KAAuC,CAAE,CALT;AAM1CK,EAAAA,QAAQ,EAAE;AACV;;AAP0C,CAAF,CAAzC;;AAUA,MAAMC,oBAAoB,GAAG,CAAEC,QAAF,EAAYC,QAAZ,KAA0B;AACtD;AACA;AACA;AACA,MAAKC,KAAK,CAACC,OAAN,CAAeF,QAAf,CAAL,EAAiC;AAChC,WAAOA,QAAP;AACA;AACD,CAPD;;AASA,OAAO,MAAMG,sBAAsB,GAAG,MAAM3C,UAAU,CAAE2B,mBAAF,CAA/C;;AAEP,MAAMiB,4BAA4B,GAAG,MAAM;AAC1C,SAAOnC,aAAa,CAAE,UAAF,EAAc,kBAAd,EAAkC,SAAlC,CAApB;AACA,CAFD;;AAIA,OAAO,MAAMoC,oBAAoB,GAAG,MAAM;AACzC,QAAM,CAAEC,OAAF,EAAWC,UAAX,IAA0BH,4BAA4B,EAA5D;AACA,QAAMI,UAAU,GAAG,CAAC,CAAEF,OAAH,IAAcA,OAAO,KAAKtB,oBAA7C;AACA,SAAO,CACNwB,UADM,EAENjD,WAAW,CAAE,MAAMgD,UAAU,CAAEvB,oBAAF,CAAlB,EAA4C,CAAEuB,UAAF,CAA5C,CAFL,CAAP;AAIA,CAPM;;AASP,MAAME,kBAAkB,GAAKC,QAAF,IAAgB;AAC1C,QAAMC,WAAW,GAAG,EAApB;AACAC,EAAAA,MAAM,CAACC,IAAP,CAAajD,cAAb,EAA8BkD,OAA9B,CAAyCC,IAAF,IAAY;AAClD,QAAK9D,GAAG,CAAEyD,QAAF,EAAY9C,cAAc,CAAEmD,IAAF,CAAd,CAAuBC,OAAnC,EAA4C,KAA5C,CAAR,EAA8D;AAC7DL,MAAAA,WAAW,CAACM,IAAZ,CAAkBF,IAAlB;AACA;AACD,GAJD;AAKA,SAAOJ,WAAP;AACA,CARD;;AAUA,MAAMO,gBAAgB,GAAKC,UAAF,IAAkB;AAC1C,QAAMC,MAAM,GAAG,EAAf;AAEAD,EAAAA,UAAU,CAACL,OAAX,CAAsBO,SAAF,IAAiB;AAAA;;AACpC,UAAMN,IAAI,GAAGM,SAAS,CAACN,IAAvB;AACA,UAAML,QAAQ,GAAGD,kBAAkB,CAAEY,SAAF,aAAEA,SAAF,uBAAEA,SAAS,CAAEX,QAAb,CAAnC;AAEA,UAAMY,QAAQ,4BACbD,SADa,aACbA,SADa,8CACbA,SAAS,CAAEX,QADE,wDACb,oBAAqBa,sBADR,yEAEb,eAAeR,IAAI,CAACS,OAAL,CAAc,OAAd,EAAuB,EAAvB,EAA4BA,OAA5B,CAAqC,GAArC,EAA0C,GAA1C,CAFhB;AAGA,UAAMC,cAAc,GAAGH,QAAQ,CAACI,KAAT,CAAgB,GAAhB,CAAvB;AACA,UAAMC,QAAQ,GAAG,EAAjB;AACAf,IAAAA,MAAM,CAACC,IAAP,CAAa/C,QAAb,EAAwBgD,OAAxB,CAAmCc,GAAF,IAAW;AAC3C,YAAMC,eAAe,GAAG,EAAxB;AACAJ,MAAAA,cAAc,CAACX,OAAf,CAA0BgB,aAAF,IAAqB;AAC5CD,QAAAA,eAAe,CAACZ,IAAhB,CAAsBa,aAAa,GAAG,GAAhB,GAAsBhE,QAAQ,CAAE8D,GAAF,CAApD;AACA,OAFD;AAGAD,MAAAA,QAAQ,CAAEC,GAAF,CAAR,GAAkBC,eAAe,CAACE,IAAhB,CAAsB,GAAtB,CAAlB;AACA,KAND;AAOAX,IAAAA,MAAM,CAAEL,IAAF,CAAN,GAAiB;AAChBA,MAAAA,IADgB;AAEhBO,MAAAA,QAFgB;AAGhBZ,MAAAA,QAHgB;AAIhBiB,MAAAA;AAJgB,KAAjB;AAMA,GAtBD;AAwBA,SAAOP,MAAP;AACA,CA5BD;;AA8BA,SAASY,YAAT,CAAuBC,MAAvB,EAA+B3C,IAA/B,EAAqC4C,KAArC,EAA6C;AAC5C,SAAO9E,OAAO,CAAE6E,MAAM,GAAG5E,KAAK,CAAE4E,MAAF,CAAR,GAAqB,EAA7B,EAAiC3C,IAAjC,EAAuC4C,KAAvC,EAA8C7E,KAA9C,CAAd;AACA;;AAED,eAAe,SAAS8E,oBAAT,CAA+B;AAAEC,EAAAA,QAAF;AAAYC,EAAAA;AAAZ,CAA/B,EAA0D;AACxE,QAAM,CAAE/B,OAAF,EAAWC,UAAX,IAA0BH,4BAA4B,EAA5D;AACA,QAAM;AAAEe,IAAAA,UAAF;AAAcmB,IAAAA;AAAd,MAA2BpE,SAAS,CAAIqE,MAAF,IAAc;AACzD,WAAO;AACNpB,MAAAA,UAAU,EAAEoB,MAAM,CAAEvE,WAAF,CAAN,CAAsBwE,aAAtB,EADN;AAENF,MAAAA,QAAQ,EAAEC,MAAM,CAAE3D,aAAF,CAAN,CAAwB6D,WAAxB;AAFJ,KAAP;AAIA,GALyC,CAA1C;AAMA,QAAM;AAAEC,IAAAA;AAAF,MAAqBvE,WAAW,CAAES,aAAF,CAAtC;AAEA,QAAM+D,MAAM,GAAGjF,OAAO,CAAE,MAAMwD,gBAAgB,CAAEC,UAAF,CAAxB,EAAwC,CAC7DA,UAD6D,CAAxC,CAAtB;AAIA,QAAM;AAAEyB,IAAAA,oCAAoC,EAAEC;AAAxC,MAAwDP,QAA9D;AACA,QAAM;AAAEQ,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAA+BrF,OAAO,CAAE,MAAM;AACnD,QAAIsF,aAAJ;;AACA,QAAI;AAAA;;AACHA,MAAAA,aAAa,GAAG1C,OAAO,GAAGrB,IAAI,CAACgE,KAAL,CAAY3C,OAAZ,CAAH,GAA2BzB,aAAlD,CADG,CAGH;AACA;;AACA,UAAK,mBAAAmE,aAAa,UAAb,wDAAejE,OAAf,OAA2BsD,UAA3B,aAA2BA,UAA3B,uBAA2BA,UAAU,CAAEtD,OAAvC,CAAL,EAAsD;AACrDiE,QAAAA,aAAa,GAAGnE,aAAhB;AACA;AACD,KARD,CAQE,OAAQqE,CAAR,EAAY;AACb;AACAC,MAAAA,OAAO,CAACC,KAAR,CAAe,uBAAf;AACAD,MAAAA,OAAO,CAACC,KAAR,CAAeF,CAAf;AACA;;AACAF,MAAAA,aAAa,GAAGnE,aAAhB;AACA,KAhBkD,CAkBnD;AACA;;;AACA,QAAK,CAAEmE,aAAa,CAAClE,2BAArB,EAAmD;AAClDkE,MAAAA,aAAa,GAAGnE,aAAhB;AACA;;AAED,UAAMwE,iBAAiB,GAAKC,aAAF,IAAqB;AAC9C7E,MAAAA,eAAe,CAACqC,OAAhB,CAAyB,CAAE;AAAExB,QAAAA;AAAF,OAAF,KAAgB;AACxC,cAAMiE,UAAU,GAAGtG,GAAG,CAAEqG,aAAF,EAAiBhE,IAAjB,CAAtB;;AACA,YAAKiE,UAAL,EAAkB;AACjBD,UAAAA,aAAa,GAAGtB,YAAY,CAAEsB,aAAF,EAAiBhE,IAAjB,EAAuB;AAClDkE,YAAAA,IAAI,EAAED;AAD4C,WAAvB,CAA5B;AAGA;AACD,OAPD;AAQA,aAAOD,aAAP;AACA,KAVD;;AAYA,QAAIG,oBAAoB,GAAGT,aAA3B;;AACA,QAAKS,oBAAoB,CAACnB,QAA1B,EAAqC;AACpCmB,MAAAA,oBAAoB,GAAG,EACtB,GAAGA,oBADmB;AAEtBnB,QAAAA,QAAQ,EAAEe,iBAAiB,CAAEI,oBAAoB,CAACnB,QAAvB;AAFL,OAAvB;;AAIA,UAAKmB,oBAAoB,CAACnB,QAArB,CAA8BK,MAAnC,EAA4C;AAC3Cc,QAAAA,oBAAoB,CAACnB,QAArB,GAAgC,EAC/B,GAAGmB,oBAAoB,CAACnB,QADO;AAE/BK,UAAAA,MAAM,EAAExF,SAAS,CAChBsG,oBAAoB,CAACnB,QAArB,CAA8BK,MADd,EAEhBU,iBAFgB;AAFc,SAAhC;AAOA;AACD,KAnDkD,CAqDnD;AACA;;;AACA,UAAMK,eAAe,GAAGxG,SAAS,CAChC,EADgC,EAEhCmF,UAFgC,EAGhCoB,oBAHgC,EAIhC3D,oBAJgC,CAAjC;AAOA,WAAO;AACNgD,MAAAA,UAAU,EAAEE,aADN;AAEND,MAAAA,YAAY,EAAEW;AAFR,KAAP;AAIA,GAlE2C,EAkEzC,CAAEpD,OAAF,CAlEyC,CAA5C;AAoEA,QAAMqD,SAAS,GAAGjG,OAAO,CACxB,OAAQ;AACPkG,IAAAA,IAAI,EAAE;AACL7C,MAAAA,IAAI,EAAE3C,eADD;AAELkD,MAAAA,QAAQ,EAAEjD,mBAFL;AAGLqC,MAAAA,QAAQ,EAAEpC,mBAHL;AAILqD,MAAAA,QAAQ,EAAE7D;AAJL,KADC;AAOP6E,IAAAA,MAPO;AAQPvD,IAAAA,UAAU,EAAE,CAAEC,OAAF,EAAWwE,YAAX,KAA6B;AACxC,YAAMvE,IAAI,GACTD,OAAO,KAAKjB,eAAZ,GACGyF,YADH,GAEG,CAAE,QAAF,EAAYxE,OAAZ,EAAqB,GAAGwE,YAAxB,CAHJ;AAIA5G,MAAAA,GAAG,CAAE6F,UAAF,aAAEA,UAAF,uBAAEA,UAAU,CAAER,QAAd,EAAwBhD,IAAxB,CAAH;AACA,KAdM;AAePC,IAAAA,UAAU,EAAE,CAAEF,OAAF,EAAWwE,YAAX,EAAyBrE,QAAzB,KAAuC;AAClD,YAAMsE,UAAU,GAAG,EAAE,GAAGhB;AAAL,OAAnB;AACA,YAAMxD,IAAI,GACTD,OAAO,KAAKjB,eAAZ,GACG,CAAE,UAAF,CADH,GAEG,CAAE,UAAF,EAAc,QAAd,EAAwBiB,OAAxB,CAHJ;AAKA,UAAI0E,WAAW,GAAG9G,GAAG,CAAE6G,UAAF,EAAcxE,IAAd,CAArB;;AACA,UAAK,CAAEyE,WAAP,EAAqB;AACpBA,QAAAA,WAAW,GAAG,EAAd;AACA/G,QAAAA,GAAG,CAAE8G,UAAF,EAAcxE,IAAd,EAAoByE,WAApB,CAAH;AACA;;AACD/G,MAAAA,GAAG,CAAE+G,WAAF,EAAeF,YAAf,EAA6BrE,QAA7B,CAAH;AAEAe,MAAAA,UAAU,CAAEtB,IAAI,CAACC,SAAL,CAAgB4E,UAAhB,CAAF,CAAV;AACA,KA9BM;AA+BPrE,IAAAA,QAAQ,EAAE,CAAEJ,OAAF,EAAWK,YAAX,EAAyBC,MAAM,GAAG,QAAlC,KAAgD;AACzD,YAAMkE,YAAY,GAAGjG,cAAc,CAAE8B,YAAF,CAAd,CAA+BwC,KAApD;AACA,YAAM5C,IAAI,GACTD,OAAO,KAAKjB,eAAZ,GACGyF,YADH,GAEG,CAAE,QAAF,EAAYxE,OAAZ,EAAqB,GAAGwE,YAAxB,CAHJ;;AAKA,UAAKlE,MAAM,KAAK,OAAhB,EAA0B;AACzB,cAAMuC,KAAK,GAAGjF,GAAG,CAAE4F,WAAF,aAAEA,WAAF,uBAAEA,WAAW,CAAEmB,MAAf,EAAuB1E,IAAvB,CAAjB;AACA,eAAOf,oBAAoB,CAAEsE,WAAF,EAAexD,OAAf,EAAwB6C,KAAxB,CAA3B;AACA;;AAED,UAAKvC,MAAM,KAAK,MAAhB,EAAyB;AACxB,cAAMuC,KAAK,GAAGjF,GAAG,CAAE6F,UAAF,aAAEA,UAAF,uBAAEA,UAAU,CAAEkB,MAAd,EAAsB1E,IAAtB,CAAjB,CADwB,CAGxB;AACA;AACA;;AACA,eAAOf,oBAAoB,CAAEwE,YAAF,EAAgB1D,OAAhB,EAAyB6C,KAAzB,CAA3B;AACA;;AAED,YAAMA,KAAK,GAAGjF,GAAG,CAAE8F,YAAF,aAAEA,YAAF,uBAAEA,YAAY,CAAEiB,MAAhB,EAAwB1E,IAAxB,CAAjB;AACA,aAAOf,oBAAoB,CAAEwE,YAAF,EAAgB1D,OAAhB,EAAyB6C,KAAzB,CAA3B;AACA,KAtDM;AAuDPtC,IAAAA,QAAQ,EAAE,CAAEP,OAAF,EAAWK,YAAX,EAAyBF,QAAzB,KAAuC;AAChD,YAAMsE,UAAU,GAAG,EAAE,GAAGhB;AAAL,OAAnB;AAEA,YAAMxD,IAAI,GACTlB,eAAe,KAAKiB,OAApB,GACG,CAAE,QAAF,CADH,GAEG,CAAE,QAAF,EAAY,QAAZ,EAAsBA,OAAtB,CAHJ;AAIA,YAAMwE,YAAY,GAAGjG,cAAc,CAAE8B,YAAF,CAAd,CAA+BwC,KAApD;AAEA,UAAI+B,SAAS,GAAGhH,GAAG,CAAE6G,UAAF,EAAcxE,IAAd,CAAnB;;AACA,UAAK,CAAE2E,SAAP,EAAmB;AAClBA,QAAAA,SAAS,GAAG,EAAZ;AACAjH,QAAAA,GAAG,CAAE8G,UAAF,EAAcxE,IAAd,EAAoB2E,SAApB,CAAH;AACA;;AACDjH,MAAAA,GAAG,CACFiH,SADE,EAEFJ,YAFE,EAGFrF,iBAAiB,CAChBuE,YADgB,EAEhB1D,OAFgB,EAGhBK,YAHgB,EAIhBF,QAJgB,CAHf,CAAH;AAWAe,MAAAA,UAAU,CAAEtB,IAAI,CAACC,SAAL,CAAgB4E,UAAhB,CAAF,CAAV;AACA;AAjFM,GAAR,CADwB,EAoFxB,CAAExD,OAAF,EAAWyC,YAAX,EAAyBF,WAAzB,CApFwB,CAAzB;AAuFApF,EAAAA,SAAS,CAAE,MAAM;AAChB,UAAMyG,eAAe,GAAG5B,QAAQ,CAAC0B,MAAT,CAAgBG,MAAhB,CACrBC,KAAF,IAAa,CAAEA,KAAK,CAACC,cADE,CAAxB;AAGA,UAAMC,gBAAgB,GAAG5F,kBAAkB,CAAEqE,YAAF,EAAgBJ,MAAhB,CAA3C;AACA,UAAM4B,YAAY,GAAG5F,QAAQ,CAAEoE,YAAF,EAAgBJ,MAAhB,CAA7B;AACAD,IAAAA,cAAc,CAAE,EACf,GAAGJ,QADY;AAEf0B,MAAAA,MAAM,EAAE,CACP,GAAGE,eADI,EAEP;AACCM,QAAAA,GAAG,EAAEF,gBADN;AAECD,QAAAA,cAAc,EAAE,IAFjB;AAGCI,QAAAA,uBAAuB,EAAE;AAH1B,OAFO,EAOP;AACCD,QAAAA,GAAG,EAAED,YADN;AAECF,QAAAA,cAAc,EAAE;AAFjB,OAPO,CAFO;AAcfK,MAAAA,sBAAsB,EAAE3B,YAAY,CAACT;AAdtB,KAAF,CAAd;AAgBA,GAtBQ,EAsBN,CAAEK,MAAF,EAAUI,YAAV,CAtBM,CAAT;AAwBA,SACC,cAAC,mBAAD,CAAqB,QAArB;AAA8B,IAAA,KAAK,EAAGY;AAAtC,KACGvB,QADH,CADD;AAKA","sourcesContent":["/**\n * External dependencies\n */\nimport { set, get, mergeWith, mapValues, setWith, clone } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from '@wordpress/element';\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tROOT_BLOCK_NAME,\n\tROOT_BLOCK_SELECTOR,\n\tROOT_BLOCK_SUPPORTS,\n\tgetValueFromVariable,\n\tgetPresetVariable,\n\tPRESET_METADATA,\n} from './utils';\nimport { toCustomProperties, toStyles } from './global-styles-renderer';\nimport { store as editSiteStore } from '../../store';\n\nconst EMPTY_CONTENT = { isGlobalStylesUserThemeJSON: true, version: 1 };\nconst EMPTY_CONTENT_STRING = JSON.stringify( EMPTY_CONTENT );\n\nconst GlobalStylesContext = createContext( {\n\t/* eslint-disable no-unused-vars */\n\tgetSetting: ( context, path ) => {},\n\tsetSetting: ( context, path, newValue ) => {},\n\tgetStyle: ( context, propertyName, origin ) => {},\n\tsetStyle: ( context, propertyName, newValue ) => {},\n\tcontexts: {},\n\t/* eslint-enable no-unused-vars */\n} );\n\nconst mergeTreesCustomizer = ( objValue, srcValue ) => {\n\t// We only pass as arrays the presets,\n\t// in which case we want the new array of values\n\t// to override the old array (no merging).\n\tif ( Array.isArray( srcValue ) ) {\n\t\treturn srcValue;\n\t}\n};\n\nexport const useGlobalStylesContext = () => useContext( GlobalStylesContext );\n\nconst useGlobalStylesEntityContent = () => {\n\treturn useEntityProp( 'postType', 'wp_global_styles', 'content' );\n};\n\nexport const useGlobalStylesReset = () => {\n\tconst [ content, setContent ] = useGlobalStylesEntityContent();\n\tconst canRestart = !! content && content !== EMPTY_CONTENT_STRING;\n\treturn [\n\t\tcanRestart,\n\t\tuseCallback( () => setContent( EMPTY_CONTENT_STRING ), [ setContent ] ),\n\t];\n};\n\nconst extractSupportKeys = ( supports ) => {\n\tconst supportKeys = [];\n\tObject.keys( STYLE_PROPERTY ).forEach( ( name ) => {\n\t\tif ( get( supports, STYLE_PROPERTY[ name ].support, false ) ) {\n\t\t\tsupportKeys.push( name );\n\t\t}\n\t} );\n\treturn supportKeys;\n};\n\nconst getBlockMetadata = ( blockTypes ) => {\n\tconst result = {};\n\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst supports = extractSupportKeys( blockType?.supports );\n\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tconst blockSelectors = selector.split( ',' );\n\t\tconst elements = [];\n\t\tObject.keys( ELEMENTS ).forEach( ( key ) => {\n\t\t\tconst elementSelector = [];\n\t\t\tblockSelectors.forEach( ( blockSelector ) => {\n\t\t\t\telementSelector.push( blockSelector + ' ' + ELEMENTS[ key ] );\n\t\t\t} );\n\t\t\telements[ key ] = elementSelector.join( ',' );\n\t\t} );\n\t\tresult[ name ] = {\n\t\t\tname,\n\t\t\tselector,\n\t\t\tsupports,\n\t\t\telements,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nfunction immutableSet( object, path, value ) {\n\treturn setWith( object ? clone( object ) : {}, path, value, clone );\n}\n\nexport default function GlobalStylesProvider( { children, baseStyles } ) {\n\tconst [ content, setContent ] = useGlobalStylesEntityContent();\n\tconst { blockTypes, settings } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tblockTypes: select( blocksStore ).getBlockTypes(),\n\t\t\tsettings: select( editSiteStore ).getSettings(),\n\t\t};\n\t} );\n\tconst { updateSettings } = useDispatch( editSiteStore );\n\n\tconst blocks = useMemo( () => getBlockMetadata( blockTypes ), [\n\t\tblockTypes,\n\t] );\n\n\tconst { __experimentalGlobalStylesBaseStyles: themeStyles } = settings;\n\tconst { userStyles, mergedStyles } = useMemo( () => {\n\t\tlet newUserStyles;\n\t\ttry {\n\t\t\tnewUserStyles = content ? JSON.parse( content ) : EMPTY_CONTENT;\n\n\t\t\t// At the moment, we ignore previous user config that\n\t\t\t// is in a different version than the theme config.\n\t\t\tif ( newUserStyles?.version !== baseStyles?.version ) {\n\t\t\t\tnewUserStyles = EMPTY_CONTENT;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t/* eslint-disable no-console */\n\t\t\tconsole.error( 'User data is not JSON' );\n\t\t\tconsole.error( e );\n\t\t\t/* eslint-enable no-console */\n\t\t\tnewUserStyles = EMPTY_CONTENT;\n\t\t}\n\n\t\t// It is very important to verify if the flag isGlobalStylesUserThemeJSON is true.\n\t\t// If it is not true the content was not escaped and is not safe.\n\t\tif ( ! newUserStyles.isGlobalStylesUserThemeJSON ) {\n\t\t\tnewUserStyles = EMPTY_CONTENT;\n\t\t}\n\n\t\tconst addUserToSettings = ( settingsToAdd ) => {\n\t\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\t\tconst presetData = get( settingsToAdd, path );\n\t\t\t\tif ( presetData ) {\n\t\t\t\t\tsettingsToAdd = immutableSet( settingsToAdd, path, {\n\t\t\t\t\t\tuser: presetData,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn settingsToAdd;\n\t\t};\n\n\t\tlet userStylesWithOrigin = newUserStyles;\n\t\tif ( userStylesWithOrigin.settings ) {\n\t\t\tuserStylesWithOrigin = {\n\t\t\t\t...userStylesWithOrigin,\n\t\t\t\tsettings: addUserToSettings( userStylesWithOrigin.settings ),\n\t\t\t};\n\t\t\tif ( userStylesWithOrigin.settings.blocks ) {\n\t\t\t\tuserStylesWithOrigin.settings = {\n\t\t\t\t\t...userStylesWithOrigin.settings,\n\t\t\t\t\tblocks: mapValues(\n\t\t\t\t\t\tuserStylesWithOrigin.settings.blocks,\n\t\t\t\t\t\taddUserToSettings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// At this point, the version schema of the theme & user\n\t\t// is the same, so we can merge them.\n\t\tconst newMergedStyles = mergeWith(\n\t\t\t{},\n\t\t\tbaseStyles,\n\t\t\tuserStylesWithOrigin,\n\t\t\tmergeTreesCustomizer\n\t\t);\n\n\t\treturn {\n\t\t\tuserStyles: newUserStyles,\n\t\t\tmergedStyles: newMergedStyles,\n\t\t};\n\t}, [ content ] );\n\n\tconst nextValue = useMemo(\n\t\t() => ( {\n\t\t\troot: {\n\t\t\t\tname: ROOT_BLOCK_NAME,\n\t\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t\t\tsupports: ROOT_BLOCK_SUPPORTS,\n\t\t\t\telements: ELEMENTS,\n\t\t\t},\n\t\t\tblocks,\n\t\t\tgetSetting: ( context, propertyPath ) => {\n\t\t\t\tconst path =\n\t\t\t\t\tcontext === ROOT_BLOCK_NAME\n\t\t\t\t\t\t? propertyPath\n\t\t\t\t\t\t: [ 'blocks', context, ...propertyPath ];\n\t\t\t\tget( userStyles?.settings, path );\n\t\t\t},\n\t\t\tsetSetting: ( context, propertyPath, newValue ) => {\n\t\t\t\tconst newContent = { ...userStyles };\n\t\t\t\tconst path =\n\t\t\t\t\tcontext === ROOT_BLOCK_NAME\n\t\t\t\t\t\t? [ 'settings' ]\n\t\t\t\t\t\t: [ 'settings', 'blocks', context ];\n\n\t\t\t\tlet newSettings = get( newContent, path );\n\t\t\t\tif ( ! newSettings ) {\n\t\t\t\t\tnewSettings = {};\n\t\t\t\t\tset( newContent, path, newSettings );\n\t\t\t\t}\n\t\t\t\tset( newSettings, propertyPath, newValue );\n\n\t\t\t\tsetContent( JSON.stringify( newContent ) );\n\t\t\t},\n\t\t\tgetStyle: ( context, propertyName, origin = 'merged' ) => {\n\t\t\t\tconst propertyPath = STYLE_PROPERTY[ propertyName ].value;\n\t\t\t\tconst path =\n\t\t\t\t\tcontext === ROOT_BLOCK_NAME\n\t\t\t\t\t\t? propertyPath\n\t\t\t\t\t\t: [ 'blocks', context, ...propertyPath ];\n\n\t\t\t\tif ( origin === 'theme' ) {\n\t\t\t\t\tconst value = get( themeStyles?.styles, path );\n\t\t\t\t\treturn getValueFromVariable( themeStyles, context, value );\n\t\t\t\t}\n\n\t\t\t\tif ( origin === 'user' ) {\n\t\t\t\t\tconst value = get( userStyles?.styles, path );\n\n\t\t\t\t\t// We still need to use merged styles here because the\n\t\t\t\t\t// presets used to resolve user variable may be defined a\n\t\t\t\t\t// layer down ( core, theme, or user ).\n\t\t\t\t\treturn getValueFromVariable( mergedStyles, context, value );\n\t\t\t\t}\n\n\t\t\t\tconst value = get( mergedStyles?.styles, path );\n\t\t\t\treturn getValueFromVariable( mergedStyles, context, value );\n\t\t\t},\n\t\t\tsetStyle: ( context, propertyName, newValue ) => {\n\t\t\t\tconst newContent = { ...userStyles };\n\n\t\t\t\tconst path =\n\t\t\t\t\tROOT_BLOCK_NAME === context\n\t\t\t\t\t\t? [ 'styles' ]\n\t\t\t\t\t\t: [ 'styles', 'blocks', context ];\n\t\t\t\tconst propertyPath = STYLE_PROPERTY[ propertyName ].value;\n\n\t\t\t\tlet newStyles = get( newContent, path );\n\t\t\t\tif ( ! newStyles ) {\n\t\t\t\t\tnewStyles = {};\n\t\t\t\t\tset( newContent, path, newStyles );\n\t\t\t\t}\n\t\t\t\tset(\n\t\t\t\t\tnewStyles,\n\t\t\t\t\tpropertyPath,\n\t\t\t\t\tgetPresetVariable(\n\t\t\t\t\t\tmergedStyles,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tpropertyName,\n\t\t\t\t\t\tnewValue\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\tsetContent( JSON.stringify( newContent ) );\n\t\t\t},\n\t\t} ),\n\t\t[ content, mergedStyles, themeStyles ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst nonGlobalStyles = settings.styles.filter(\n\t\t\t( style ) => ! style.isGlobalStyles\n\t\t);\n\t\tconst customProperties = toCustomProperties( mergedStyles, blocks );\n\t\tconst globalStyles = toStyles( mergedStyles, blocks );\n\t\tupdateSettings( {\n\t\t\t...settings,\n\t\t\tstyles: [\n\t\t\t\t...nonGlobalStyles,\n\t\t\t\t{\n\t\t\t\t\tcss: customProperties,\n\t\t\t\t\tisGlobalStyles: true,\n\t\t\t\t\t__experimentalNoWrapper: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcss: globalStyles,\n\t\t\t\t\tisGlobalStyles: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\t__experimentalFeatures: mergedStyles.settings,\n\t\t} );\n\t}, [ blocks, mergedStyles ] );\n\n\treturn (\n\t\t<GlobalStylesContext.Provider value={ nextValue }>\n\t\t\t{ children }\n\t\t</GlobalStylesContext.Provider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/editor/global-styles-provider.js"],"names":["set","get","has","mergeWith","mapValues","setWith","clone","createContext","useCallback","useContext","useEffect","useMemo","__EXPERIMENTAL_STYLE_PROPERTY","STYLE_PROPERTY","__EXPERIMENTAL_ELEMENTS","ELEMENTS","store","blocksStore","useEntityProp","useSelect","useDispatch","ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","getValueFromVariable","getPresetVariable","PRESET_METADATA","toCustomProperties","toStyles","editSiteStore","EMPTY_CONTENT","isGlobalStylesUserThemeJSON","version","EMPTY_CONTENT_STRING","JSON","stringify","GlobalStylesContext","getSetting","context","path","setSetting","newValue","getStyle","propertyName","origin","setStyle","contexts","mergeTreesCustomizer","objValue","srcValue","Array","isArray","useGlobalStylesContext","useGlobalStylesEntityContent","useGlobalStylesReset","content","setContent","canRestart","extractSupportKeys","supports","supportKeys","Object","keys","forEach","name","support","requiresOptOut","push","getBlockMetadata","blockTypes","result","blockType","selector","__experimentalSelector","replace","blockSelectors","split","elements","key","elementSelector","blockSelector","join","immutableSet","object","value","GlobalStylesProvider","children","baseStyles","settings","select","getBlockTypes","getSettings","updateSettings","blocks","__experimentalGlobalStylesBaseStyles","themeStyles","userStyles","mergedStyles","newUserStyles","parse","e","console","error","addUserToSettings","settingsToAdd","presetData","user","userStylesWithOrigin","newMergedStyles","nextValue","root","propertyPath","newContent","newSettings","styles","newStyles","nonGlobalStyles","filter","style","isGlobalStyles","customProperties","globalStyles","css","__experimentalNoWrapper","__experimentalFeatures"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { set, get, has, mergeWith, mapValues, setWith, clone } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n} from '@wordpress/element';\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tROOT_BLOCK_NAME,\n\tROOT_BLOCK_SELECTOR,\n\tROOT_BLOCK_SUPPORTS,\n\tgetValueFromVariable,\n\tgetPresetVariable,\n\tPRESET_METADATA,\n} from './utils';\nimport { toCustomProperties, toStyles } from './global-styles-renderer';\nimport { store as editSiteStore } from '../../store';\n\nconst EMPTY_CONTENT = { isGlobalStylesUserThemeJSON: true, version: 1 };\nconst EMPTY_CONTENT_STRING = JSON.stringify( EMPTY_CONTENT );\n\nconst GlobalStylesContext = createContext( {\n\t/* eslint-disable no-unused-vars */\n\tgetSetting: ( context, path ) => {},\n\tsetSetting: ( context, path, newValue ) => {},\n\tgetStyle: ( context, propertyName, origin ) => {},\n\tsetStyle: ( context, propertyName, newValue ) => {},\n\tcontexts: {},\n\t/* eslint-enable no-unused-vars */\n} );\n\nconst mergeTreesCustomizer = ( objValue, srcValue ) => {\n\t// We only pass as arrays the presets,\n\t// in which case we want the new array of values\n\t// to override the old array (no merging).\n\tif ( Array.isArray( srcValue ) ) {\n\t\treturn srcValue;\n\t}\n};\n\nexport const useGlobalStylesContext = () => useContext( GlobalStylesContext );\n\nconst useGlobalStylesEntityContent = () => {\n\treturn useEntityProp( 'postType', 'wp_global_styles', 'content' );\n};\n\nexport const useGlobalStylesReset = () => {\n\tconst [ content, setContent ] = useGlobalStylesEntityContent();\n\tconst canRestart = !! content && content !== EMPTY_CONTENT_STRING;\n\treturn [\n\t\tcanRestart,\n\t\tuseCallback( () => setContent( EMPTY_CONTENT_STRING ), [ setContent ] ),\n\t];\n};\n\nconst extractSupportKeys = ( supports ) => {\n\tconst supportKeys = [];\n\tObject.keys( STYLE_PROPERTY ).forEach( ( name ) => {\n\t\tif ( ! STYLE_PROPERTY[ name ].support ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Opting out means that, for certain support keys like background color,\n\t\t// blocks have to explicitly set the support value false. If the key is\n\t\t// unset, we still enable it.\n\t\tif ( STYLE_PROPERTY[ name ].requiresOptOut ) {\n\t\t\tif (\n\t\t\t\thas( supports, STYLE_PROPERTY[ name ].support[ 0 ] ) &&\n\t\t\t\tget( supports, STYLE_PROPERTY[ name ].support ) !== false\n\t\t\t) {\n\t\t\t\treturn supportKeys.push( name );\n\t\t\t}\n\t\t}\n\n\t\tif ( get( supports, STYLE_PROPERTY[ name ].support, false ) ) {\n\t\t\treturn supportKeys.push( name );\n\t\t}\n\t} );\n\treturn supportKeys;\n};\n\nconst getBlockMetadata = ( blockTypes ) => {\n\tconst result = {};\n\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst supports = extractSupportKeys( blockType?.supports );\n\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tconst blockSelectors = selector.split( ',' );\n\t\tconst elements = [];\n\t\tObject.keys( ELEMENTS ).forEach( ( key ) => {\n\t\t\tconst elementSelector = [];\n\t\t\tblockSelectors.forEach( ( blockSelector ) => {\n\t\t\t\telementSelector.push( blockSelector + ' ' + ELEMENTS[ key ] );\n\t\t\t} );\n\t\t\telements[ key ] = elementSelector.join( ',' );\n\t\t} );\n\t\tresult[ name ] = {\n\t\t\tname,\n\t\t\tselector,\n\t\t\tsupports,\n\t\t\telements,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nfunction immutableSet( object, path, value ) {\n\treturn setWith( object ? clone( object ) : {}, path, value, clone );\n}\n\nexport default function GlobalStylesProvider( { children, baseStyles } ) {\n\tconst [ content, setContent ] = useGlobalStylesEntityContent();\n\tconst { blockTypes, settings } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tblockTypes: select( blocksStore ).getBlockTypes(),\n\t\t\tsettings: select( editSiteStore ).getSettings(),\n\t\t};\n\t}, [] );\n\tconst { updateSettings } = useDispatch( editSiteStore );\n\n\tconst blocks = useMemo( () => getBlockMetadata( blockTypes ), [\n\t\tblockTypes,\n\t] );\n\n\tconst { __experimentalGlobalStylesBaseStyles: themeStyles } = settings;\n\tconst { userStyles, mergedStyles } = useMemo( () => {\n\t\tlet newUserStyles;\n\t\ttry {\n\t\t\tnewUserStyles = content ? JSON.parse( content ) : EMPTY_CONTENT;\n\n\t\t\t// At the moment, we ignore previous user config that\n\t\t\t// is in a different version than the theme config.\n\t\t\tif ( newUserStyles?.version !== baseStyles?.version ) {\n\t\t\t\tnewUserStyles = EMPTY_CONTENT;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t/* eslint-disable no-console */\n\t\t\tconsole.error( 'User data is not JSON' );\n\t\t\tconsole.error( e );\n\t\t\t/* eslint-enable no-console */\n\t\t\tnewUserStyles = EMPTY_CONTENT;\n\t\t}\n\n\t\t// It is very important to verify if the flag isGlobalStylesUserThemeJSON is true.\n\t\t// If it is not true the content was not escaped and is not safe.\n\t\tif ( ! newUserStyles.isGlobalStylesUserThemeJSON ) {\n\t\t\tnewUserStyles = EMPTY_CONTENT;\n\t\t}\n\n\t\tconst addUserToSettings = ( settingsToAdd ) => {\n\t\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\t\tconst presetData = get( settingsToAdd, path );\n\t\t\t\tif ( presetData ) {\n\t\t\t\t\tsettingsToAdd = immutableSet( settingsToAdd, path, {\n\t\t\t\t\t\tuser: presetData,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn settingsToAdd;\n\t\t};\n\n\t\tlet userStylesWithOrigin = newUserStyles;\n\t\tif ( userStylesWithOrigin.settings ) {\n\t\t\tuserStylesWithOrigin = {\n\t\t\t\t...userStylesWithOrigin,\n\t\t\t\tsettings: addUserToSettings( userStylesWithOrigin.settings ),\n\t\t\t};\n\t\t\tif ( userStylesWithOrigin.settings.blocks ) {\n\t\t\t\tuserStylesWithOrigin.settings = {\n\t\t\t\t\t...userStylesWithOrigin.settings,\n\t\t\t\t\tblocks: mapValues(\n\t\t\t\t\t\tuserStylesWithOrigin.settings.blocks,\n\t\t\t\t\t\taddUserToSettings\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// At this point, the version schema of the theme & user\n\t\t// is the same, so we can merge them.\n\t\tconst newMergedStyles = mergeWith(\n\t\t\t{},\n\t\t\tbaseStyles,\n\t\t\tuserStylesWithOrigin,\n\t\t\tmergeTreesCustomizer\n\t\t);\n\n\t\treturn {\n\t\t\tuserStyles: newUserStyles,\n\t\t\tmergedStyles: newMergedStyles,\n\t\t};\n\t}, [ content ] );\n\n\tconst nextValue = useMemo(\n\t\t() => ( {\n\t\t\troot: {\n\t\t\t\tname: ROOT_BLOCK_NAME,\n\t\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t\t\tsupports: ROOT_BLOCK_SUPPORTS,\n\t\t\t\telements: ELEMENTS,\n\t\t\t},\n\t\t\tblocks,\n\t\t\tgetSetting: ( context, propertyPath ) => {\n\t\t\t\tconst path =\n\t\t\t\t\tcontext === ROOT_BLOCK_NAME\n\t\t\t\t\t\t? propertyPath\n\t\t\t\t\t\t: [ 'blocks', context, ...propertyPath ];\n\t\t\t\tget( userStyles?.settings, path );\n\t\t\t},\n\t\t\tsetSetting: ( context, propertyPath, newValue ) => {\n\t\t\t\tconst newContent = { ...userStyles };\n\t\t\t\tconst path =\n\t\t\t\t\tcontext === ROOT_BLOCK_NAME\n\t\t\t\t\t\t? [ 'settings' ]\n\t\t\t\t\t\t: [ 'settings', 'blocks', context ];\n\n\t\t\t\tlet newSettings = get( newContent, path );\n\t\t\t\tif ( ! newSettings ) {\n\t\t\t\t\tnewSettings = {};\n\t\t\t\t\tset( newContent, path, newSettings );\n\t\t\t\t}\n\t\t\t\tset( newSettings, propertyPath, newValue );\n\n\t\t\t\tsetContent( JSON.stringify( newContent ) );\n\t\t\t},\n\t\t\tgetStyle: ( context, propertyName, origin = 'merged' ) => {\n\t\t\t\tconst propertyPath = STYLE_PROPERTY[ propertyName ].value;\n\t\t\t\tconst path =\n\t\t\t\t\tcontext === ROOT_BLOCK_NAME\n\t\t\t\t\t\t? propertyPath\n\t\t\t\t\t\t: [ 'blocks', context, ...propertyPath ];\n\n\t\t\t\tif ( origin === 'theme' ) {\n\t\t\t\t\tconst value = get( themeStyles?.styles, path );\n\t\t\t\t\treturn getValueFromVariable( themeStyles, context, value );\n\t\t\t\t}\n\n\t\t\t\tif ( origin === 'user' ) {\n\t\t\t\t\tconst value = get( userStyles?.styles, path );\n\n\t\t\t\t\t// We still need to use merged styles here because the\n\t\t\t\t\t// presets used to resolve user variable may be defined a\n\t\t\t\t\t// layer down ( core, theme, or user ).\n\t\t\t\t\treturn getValueFromVariable( mergedStyles, context, value );\n\t\t\t\t}\n\n\t\t\t\tconst value = get( mergedStyles?.styles, path );\n\t\t\t\treturn getValueFromVariable( mergedStyles, context, value );\n\t\t\t},\n\t\t\tsetStyle: ( context, propertyName, newValue ) => {\n\t\t\t\tconst newContent = { ...userStyles };\n\n\t\t\t\tconst path =\n\t\t\t\t\tROOT_BLOCK_NAME === context\n\t\t\t\t\t\t? [ 'styles' ]\n\t\t\t\t\t\t: [ 'styles', 'blocks', context ];\n\t\t\t\tconst propertyPath = STYLE_PROPERTY[ propertyName ].value;\n\n\t\t\t\tlet newStyles = get( newContent, path );\n\t\t\t\tif ( ! newStyles ) {\n\t\t\t\t\tnewStyles = {};\n\t\t\t\t\tset( newContent, path, newStyles );\n\t\t\t\t}\n\t\t\t\tset(\n\t\t\t\t\tnewStyles,\n\t\t\t\t\tpropertyPath,\n\t\t\t\t\tgetPresetVariable(\n\t\t\t\t\t\tmergedStyles,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tpropertyName,\n\t\t\t\t\t\tnewValue\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\tsetContent( JSON.stringify( newContent ) );\n\t\t\t},\n\t\t} ),\n\t\t[ content, mergedStyles, themeStyles ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst nonGlobalStyles = settings.styles.filter(\n\t\t\t( style ) => ! style.isGlobalStyles\n\t\t);\n\t\tconst customProperties = toCustomProperties( mergedStyles, blocks );\n\t\tconst globalStyles = toStyles( mergedStyles, blocks );\n\t\tupdateSettings( {\n\t\t\t...settings,\n\t\t\tstyles: [\n\t\t\t\t...nonGlobalStyles,\n\t\t\t\t{\n\t\t\t\t\tcss: customProperties,\n\t\t\t\t\tisGlobalStyles: true,\n\t\t\t\t\t__experimentalNoWrapper: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcss: globalStyles,\n\t\t\t\t\tisGlobalStyles: true,\n\t\t\t\t},\n\t\t\t],\n\t\t\t__experimentalFeatures: mergedStyles.settings,\n\t\t} );\n\t}, [ blocks, mergedStyles ] );\n\n\treturn (\n\t\t<GlobalStylesContext.Provider value={ nextValue }>\n\t\t\t{ children }\n\t\t</GlobalStylesContext.Provider>\n\t);\n}\n"]}