@wordpress/edit-site 5.2.0 → 5.3.1

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 (409) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/add-new-template/add-custom-generic-template-modal.js +8 -10
  3. package/build/components/add-new-template/add-custom-generic-template-modal.js.map +1 -1
  4. package/build/components/add-new-template/add-custom-template-modal.js +0 -1
  5. package/build/components/add-new-template/add-custom-template-modal.js.map +1 -1
  6. package/build/components/add-new-template/new-template-part.js +9 -32
  7. package/build/components/add-new-template/new-template-part.js.map +1 -1
  8. package/build/components/add-new-template/new-template.js +5 -4
  9. package/build/components/add-new-template/new-template.js.map +1 -1
  10. package/build/components/add-new-template/utils.js +1 -9
  11. package/build/components/add-new-template/utils.js.map +1 -1
  12. package/build/components/app/index.js +2 -7
  13. package/build/components/app/index.js.map +1 -1
  14. package/build/components/block-editor/editor-canvas.js +13 -2
  15. package/build/components/block-editor/editor-canvas.js.map +1 -1
  16. package/build/components/block-editor/index.js +16 -14
  17. package/build/components/block-editor/index.js.map +1 -1
  18. package/build/components/block-editor/inserter-media-categories.js +237 -0
  19. package/build/components/block-editor/inserter-media-categories.js.map +1 -0
  20. package/build/components/canvas-spinner/index.js +20 -0
  21. package/build/components/canvas-spinner/index.js.map +1 -0
  22. package/build/components/create-template-part-modal/index.js +4 -2
  23. package/build/components/create-template-part-modal/index.js.map +1 -1
  24. package/build/components/editor/index.js +9 -5
  25. package/build/components/editor/index.js.map +1 -1
  26. package/build/components/error-boundary/index.js +2 -12
  27. package/build/components/error-boundary/index.js.map +1 -1
  28. package/build/components/error-boundary/warning.js +5 -28
  29. package/build/components/error-boundary/warning.js.map +1 -1
  30. package/build/components/global-styles/block-preview-panel.js +2 -2
  31. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  32. package/build/components/global-styles/border-panel.js +17 -9
  33. package/build/components/global-styles/border-panel.js.map +1 -1
  34. package/build/components/global-styles/color-palette-panel.js +13 -7
  35. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  36. package/build/components/global-styles/context-menu.js +39 -4
  37. package/build/components/global-styles/context-menu.js.map +1 -1
  38. package/build/components/global-styles/custom-css.js +65 -14
  39. package/build/components/global-styles/custom-css.js.map +1 -1
  40. package/build/components/global-styles/dimensions-panel.js +49 -31
  41. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  42. package/build/components/global-styles/global-styles-provider.js +13 -3
  43. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  44. package/build/components/global-styles/gradients-palette-panel.js +17 -11
  45. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  46. package/build/components/global-styles/hooks.js +21 -142
  47. package/build/components/global-styles/hooks.js.map +1 -1
  48. package/build/components/global-styles/index.js +0 -28
  49. package/build/components/global-styles/index.js.map +1 -1
  50. package/build/components/global-styles/palette.js +11 -4
  51. package/build/components/global-styles/palette.js.map +1 -1
  52. package/build/components/global-styles/preview.js +18 -15
  53. package/build/components/global-styles/preview.js.map +1 -1
  54. package/build/components/global-styles/screen-background-color.js +27 -13
  55. package/build/components/global-styles/screen-background-color.js.map +1 -1
  56. package/build/components/global-styles/screen-border.js +10 -4
  57. package/build/components/global-styles/screen-border.js.map +1 -1
  58. package/build/components/global-styles/screen-button-color.js +16 -9
  59. package/build/components/global-styles/screen-button-color.js.map +1 -1
  60. package/build/components/global-styles/screen-colors.js +43 -34
  61. package/build/components/global-styles/screen-colors.js.map +1 -1
  62. package/build/components/global-styles/screen-css.js +20 -8
  63. package/build/components/global-styles/screen-css.js.map +1 -1
  64. package/build/components/global-styles/screen-heading-color.js +23 -16
  65. package/build/components/global-styles/screen-heading-color.js.map +1 -1
  66. package/build/components/global-styles/screen-layout.js +3 -3
  67. package/build/components/global-styles/screen-layout.js.map +1 -1
  68. package/build/components/global-styles/screen-link-color.js +18 -11
  69. package/build/components/global-styles/screen-link-color.js.map +1 -1
  70. package/build/components/global-styles/screen-root.js +25 -9
  71. package/build/components/global-styles/screen-root.js.map +1 -1
  72. package/build/components/global-styles/screen-style-variations.js +8 -4
  73. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  74. package/build/components/global-styles/screen-text-color.js +14 -7
  75. package/build/components/global-styles/screen-text-color.js.map +1 -1
  76. package/build/components/global-styles/screen-typography.js +18 -12
  77. package/build/components/global-styles/screen-typography.js.map +1 -1
  78. package/build/components/global-styles/shadow-panel.js +196 -0
  79. package/build/components/global-styles/shadow-panel.js.map +1 -0
  80. package/build/components/global-styles/typography-panel.js +43 -29
  81. package/build/components/global-styles/typography-panel.js.map +1 -1
  82. package/build/components/global-styles/typography-preview.js +19 -9
  83. package/build/components/global-styles/typography-preview.js.map +1 -1
  84. package/build/components/global-styles/ui.js +104 -34
  85. package/build/components/global-styles/ui.js.map +1 -1
  86. package/build/components/global-styles/utils.js +5 -334
  87. package/build/components/global-styles/utils.js.map +1 -1
  88. package/build/components/global-styles-renderer/index.js +7 -5
  89. package/build/components/global-styles-renderer/index.js.map +1 -1
  90. package/build/components/header-edit-mode/document-actions/index.js +2 -2
  91. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  92. package/build/components/keyboard-shortcut-help-modal/index.js +0 -1
  93. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  94. package/build/components/layout/index.js +11 -11
  95. package/build/components/layout/index.js.map +1 -1
  96. package/build/components/list/actions/rename-menu-item.js +8 -11
  97. package/build/components/list/actions/rename-menu-item.js.map +1 -1
  98. package/build/components/{sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js → navigation-inspector/index.js} +9 -6
  99. package/build/components/navigation-inspector/index.js.map +1 -0
  100. package/build/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/navigation-menu.js +14 -14
  101. package/build/components/navigation-inspector/navigation-menu.js.map +1 -0
  102. package/build/components/sidebar/index.js +3 -1
  103. package/build/components/sidebar/index.js.map +1 -1
  104. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +3 -18
  105. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  106. package/build/components/sidebar-edit-mode/index.js +1 -14
  107. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  108. package/build/components/sidebar-navigation-screen/index.js +3 -2
  109. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  110. package/build/components/sidebar-navigation-screen-main/index.js +23 -1
  111. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  112. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +52 -0
  113. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -0
  114. package/build/components/sidebar-navigation-screen-templates/index.js +3 -8
  115. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  116. package/build/components/site-hub/index.js +11 -10
  117. package/build/components/site-hub/index.js.map +1 -1
  118. package/build/components/site-icon/index.js +1 -1
  119. package/build/components/site-icon/index.js.map +1 -1
  120. package/build/components/style-book/index.js +7 -4
  121. package/build/components/style-book/index.js.map +1 -1
  122. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +6 -4
  123. package/build/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  124. package/build/components/template-part-converter/convert-to-template-part.js +5 -9
  125. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  126. package/build/experiments.js +19 -0
  127. package/build/experiments.js.map +1 -0
  128. package/build/hooks/push-changes-to-global-styles/index.js +65 -6
  129. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  130. package/build/index.js +53 -60
  131. package/build/index.js.map +1 -1
  132. package/build/store/actions.js +1 -27
  133. package/build/store/actions.js.map +1 -1
  134. package/build/store/index.js +8 -0
  135. package/build/store/index.js.map +1 -1
  136. package/build/store/private-actions.js +40 -0
  137. package/build/store/private-actions.js.map +1 -0
  138. package/build/store/private-selectors.js +18 -0
  139. package/build/store/private-selectors.js.map +1 -0
  140. package/build/store/selectors.js +7 -40
  141. package/build/store/selectors.js.map +1 -1
  142. package/build/store/utils.js +77 -0
  143. package/build/store/utils.js.map +1 -0
  144. package/build/utils/template-part-create.js +71 -0
  145. package/build/utils/template-part-create.js.map +1 -0
  146. package/build-module/components/add-new-template/add-custom-generic-template-modal.js +9 -11
  147. package/build-module/components/add-new-template/add-custom-generic-template-modal.js.map +1 -1
  148. package/build-module/components/add-new-template/add-custom-template-modal.js +0 -1
  149. package/build-module/components/add-new-template/add-custom-template-modal.js.map +1 -1
  150. package/build-module/components/add-new-template/new-template-part.js +8 -31
  151. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  152. package/build-module/components/add-new-template/new-template.js +4 -4
  153. package/build-module/components/add-new-template/new-template.js.map +1 -1
  154. package/build-module/components/add-new-template/utils.js +0 -5
  155. package/build-module/components/add-new-template/utils.js.map +1 -1
  156. package/build-module/components/app/index.js +2 -7
  157. package/build-module/components/app/index.js.map +1 -1
  158. package/build-module/components/block-editor/editor-canvas.js +13 -3
  159. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  160. package/build-module/components/block-editor/index.js +17 -15
  161. package/build-module/components/block-editor/index.js.map +1 -1
  162. package/build-module/components/block-editor/inserter-media-categories.js +225 -0
  163. package/build-module/components/block-editor/inserter-media-categories.js.map +1 -0
  164. package/build-module/components/canvas-spinner/index.js +12 -0
  165. package/build-module/components/canvas-spinner/index.js.map +1 -0
  166. package/build-module/components/create-template-part-modal/index.js +5 -3
  167. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  168. package/build-module/components/editor/index.js +7 -5
  169. package/build-module/components/editor/index.js.map +1 -1
  170. package/build-module/components/error-boundary/index.js +2 -12
  171. package/build-module/components/error-boundary/index.js.map +1 -1
  172. package/build-module/components/error-boundary/warning.js +5 -28
  173. package/build-module/components/error-boundary/warning.js.map +1 -1
  174. package/build-module/components/global-styles/block-preview-panel.js +2 -2
  175. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  176. package/build-module/components/global-styles/border-panel.js +17 -11
  177. package/build-module/components/global-styles/border-panel.js.map +1 -1
  178. package/build-module/components/global-styles/color-palette-panel.js +11 -7
  179. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  180. package/build-module/components/global-styles/context-menu.js +40 -8
  181. package/build-module/components/global-styles/context-menu.js.map +1 -1
  182. package/build-module/components/global-styles/custom-css.js +61 -15
  183. package/build-module/components/global-styles/custom-css.js.map +1 -1
  184. package/build-module/components/global-styles/dimensions-panel.js +49 -32
  185. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  186. package/build-module/components/global-styles/global-styles-provider.js +7 -2
  187. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  188. package/build-module/components/global-styles/gradients-palette-panel.js +15 -11
  189. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  190. package/build-module/components/global-styles/hooks.js +23 -134
  191. package/build-module/components/global-styles/hooks.js.map +1 -1
  192. package/build-module/components/global-styles/index.js +0 -2
  193. package/build-module/components/global-styles/index.js.map +1 -1
  194. package/build-module/components/global-styles/palette.js +10 -5
  195. package/build-module/components/global-styles/palette.js.map +1 -1
  196. package/build-module/components/global-styles/preview.js +18 -14
  197. package/build-module/components/global-styles/preview.js.map +1 -1
  198. package/build-module/components/global-styles/screen-background-color.js +26 -15
  199. package/build-module/components/global-styles/screen-background-color.js.map +1 -1
  200. package/build-module/components/global-styles/screen-border.js +10 -5
  201. package/build-module/components/global-styles/screen-border.js.map +1 -1
  202. package/build-module/components/global-styles/screen-button-color.js +16 -11
  203. package/build-module/components/global-styles/screen-button-color.js.map +1 -1
  204. package/build-module/components/global-styles/screen-colors.js +43 -37
  205. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  206. package/build-module/components/global-styles/screen-css.js +21 -9
  207. package/build-module/components/global-styles/screen-css.js.map +1 -1
  208. package/build-module/components/global-styles/screen-heading-color.js +23 -18
  209. package/build-module/components/global-styles/screen-heading-color.js.map +1 -1
  210. package/build-module/components/global-styles/screen-layout.js +4 -4
  211. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  212. package/build-module/components/global-styles/screen-link-color.js +18 -13
  213. package/build-module/components/global-styles/screen-link-color.js.map +1 -1
  214. package/build-module/components/global-styles/screen-root.js +23 -9
  215. package/build-module/components/global-styles/screen-root.js.map +1 -1
  216. package/build-module/components/global-styles/screen-style-variations.js +5 -2
  217. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  218. package/build-module/components/global-styles/screen-text-color.js +14 -9
  219. package/build-module/components/global-styles/screen-text-color.js.map +1 -1
  220. package/build-module/components/global-styles/screen-typography.js +16 -12
  221. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  222. package/build-module/components/global-styles/shadow-panel.js +177 -0
  223. package/build-module/components/global-styles/shadow-panel.js.map +1 -0
  224. package/build-module/components/global-styles/typography-panel.js +43 -31
  225. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  226. package/build-module/components/global-styles/typography-preview.js +17 -9
  227. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  228. package/build-module/components/global-styles/ui.js +98 -35
  229. package/build-module/components/global-styles/ui.js.map +1 -1
  230. package/build-module/components/global-styles/utils.js +4 -319
  231. package/build-module/components/global-styles/utils.js.map +1 -1
  232. package/build-module/components/global-styles-renderer/index.js +5 -5
  233. package/build-module/components/global-styles-renderer/index.js.map +1 -1
  234. package/build-module/components/header-edit-mode/document-actions/index.js +2 -2
  235. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  236. package/build-module/components/keyboard-shortcut-help-modal/index.js +0 -1
  237. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  238. package/build-module/components/layout/index.js +10 -11
  239. package/build-module/components/layout/index.js.map +1 -1
  240. package/build-module/components/list/actions/rename-menu-item.js +9 -12
  241. package/build-module/components/list/actions/rename-menu-item.js.map +1 -1
  242. package/build-module/components/{sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js → navigation-inspector/index.js} +9 -6
  243. package/build-module/components/navigation-inspector/index.js.map +1 -0
  244. package/build-module/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/navigation-menu.js +14 -15
  245. package/build-module/components/navigation-inspector/navigation-menu.js.map +1 -0
  246. package/build-module/components/sidebar/index.js +2 -1
  247. package/build-module/components/sidebar/index.js.map +1 -1
  248. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +6 -21
  249. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  250. package/build-module/components/sidebar-edit-mode/index.js +1 -13
  251. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  252. package/build-module/components/sidebar-navigation-screen/index.js +3 -2
  253. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  254. package/build-module/components/sidebar-navigation-screen-main/index.js +22 -2
  255. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  256. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +40 -0
  257. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -0
  258. package/build-module/components/sidebar-navigation-screen-templates/index.js +4 -9
  259. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  260. package/build-module/components/site-hub/index.js +10 -10
  261. package/build-module/components/site-hub/index.js.map +1 -1
  262. package/build-module/components/site-icon/index.js +1 -1
  263. package/build-module/components/site-icon/index.js.map +1 -1
  264. package/build-module/components/style-book/index.js +8 -5
  265. package/build-module/components/style-book/index.js.map +1 -1
  266. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +5 -4
  267. package/build-module/components/sync-state-with-url/use-sync-canvas-mode-with-url.js.map +1 -1
  268. package/build-module/components/template-part-converter/convert-to-template-part.js +5 -9
  269. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  270. package/build-module/experiments.js +9 -0
  271. package/build-module/experiments.js.map +1 -0
  272. package/build-module/hooks/push-changes-to-global-styles/index.js +62 -3
  273. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  274. package/build-module/index.js +52 -60
  275. package/build-module/index.js.map +1 -1
  276. package/build-module/store/actions.js +0 -23
  277. package/build-module/store/actions.js.map +1 -1
  278. package/build-module/store/index.js +5 -0
  279. package/build-module/store/index.js.map +1 -1
  280. package/build-module/store/private-actions.js +29 -0
  281. package/build-module/store/private-actions.js.map +1 -0
  282. package/build-module/store/private-selectors.js +11 -0
  283. package/build-module/store/private-selectors.js.map +1 -0
  284. package/build-module/store/selectors.js +6 -37
  285. package/build-module/store/selectors.js.map +1 -1
  286. package/build-module/store/utils.js +66 -0
  287. package/build-module/store/utils.js.map +1 -0
  288. package/build-module/utils/template-part-create.js +53 -0
  289. package/build-module/utils/template-part-create.js.map +1 -0
  290. package/build-style/style-rtl.css +314 -216
  291. package/build-style/style.css +314 -216
  292. package/package.json +32 -30
  293. package/src/components/add-new-template/add-custom-generic-template-modal.js +20 -28
  294. package/src/components/add-new-template/add-custom-template-modal.js +0 -1
  295. package/src/components/add-new-template/new-template-part.js +14 -34
  296. package/src/components/add-new-template/new-template.js +5 -3
  297. package/src/components/add-new-template/style.scss +0 -4
  298. package/src/components/add-new-template/utils.js +0 -14
  299. package/src/components/app/index.js +2 -2
  300. package/src/components/block-editor/editor-canvas.js +12 -2
  301. package/src/components/block-editor/index.js +16 -28
  302. package/src/components/block-editor/inserter-media-categories.js +247 -0
  303. package/src/components/block-editor/style.scss +20 -7
  304. package/src/components/canvas-spinner/index.js +12 -0
  305. package/src/components/canvas-spinner/style.scss +7 -0
  306. package/src/components/create-template-part-modal/index.js +75 -67
  307. package/src/components/create-template-part-modal/style.scss +0 -10
  308. package/src/components/editor/index.js +8 -5
  309. package/src/components/error-boundary/index.js +2 -10
  310. package/src/components/error-boundary/warning.js +6 -35
  311. package/src/components/global-styles/README.md +1 -75
  312. package/src/components/global-styles/block-preview-panel.js +2 -2
  313. package/src/components/global-styles/border-panel.js +19 -17
  314. package/src/components/global-styles/color-palette-panel.js +10 -7
  315. package/src/components/global-styles/context-menu.js +114 -44
  316. package/src/components/global-styles/custom-css.js +76 -19
  317. package/src/components/global-styles/dimensions-panel.js +46 -36
  318. package/src/components/global-styles/global-styles-provider.js +6 -2
  319. package/src/components/global-styles/gradients-palette-panel.js +17 -11
  320. package/src/components/global-styles/hooks.js +31 -155
  321. package/src/components/global-styles/index.js +0 -2
  322. package/src/components/global-styles/palette.js +9 -5
  323. package/src/components/global-styles/preview.js +19 -13
  324. package/src/components/global-styles/screen-background-color.js +37 -21
  325. package/src/components/global-styles/screen-border.js +10 -5
  326. package/src/components/global-styles/screen-button-color.js +21 -19
  327. package/src/components/global-styles/screen-colors.js +48 -65
  328. package/src/components/global-styles/screen-css.js +30 -14
  329. package/src/components/global-styles/screen-heading-color.js +32 -27
  330. package/src/components/global-styles/screen-layout.js +4 -7
  331. package/src/components/global-styles/screen-link-color.js +26 -26
  332. package/src/components/global-styles/screen-root.js +24 -9
  333. package/src/components/global-styles/screen-style-variations.js +7 -2
  334. package/src/components/global-styles/screen-text-color.js +15 -19
  335. package/src/components/global-styles/screen-typography.js +27 -12
  336. package/src/components/global-styles/shadow-panel.js +174 -0
  337. package/src/components/global-styles/style.scss +85 -1
  338. package/src/components/global-styles/typography-panel.js +60 -48
  339. package/src/components/global-styles/typography-preview.js +28 -9
  340. package/src/components/global-styles/ui.js +97 -53
  341. package/src/components/global-styles/utils.js +4 -371
  342. package/src/components/global-styles-renderer/index.js +3 -4
  343. package/src/components/header-edit-mode/document-actions/index.js +1 -1
  344. package/src/components/keyboard-shortcut-help-modal/index.js +0 -1
  345. package/src/components/layout/index.js +12 -4
  346. package/src/components/layout/style.scss +4 -5
  347. package/src/components/list/actions/rename-menu-item.js +14 -23
  348. package/src/components/list/style.scss +0 -4
  349. package/src/components/{sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js → navigation-inspector/index.js} +2 -2
  350. package/src/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/navigation-menu.js +10 -12
  351. package/src/components/{sidebar-edit-mode/navigation-menu-sidebar → navigation-inspector}/style.scss +0 -17
  352. package/src/components/sidebar/index.js +2 -0
  353. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +8 -32
  354. package/src/components/sidebar-edit-mode/index.js +0 -11
  355. package/src/components/sidebar-edit-mode/settings-header/style.scss +8 -0
  356. package/src/components/sidebar-navigation-item/style.scss +28 -3
  357. package/src/components/sidebar-navigation-screen/index.js +4 -3
  358. package/src/components/sidebar-navigation-screen/style.scss +2 -0
  359. package/src/components/sidebar-navigation-screen-main/index.js +23 -1
  360. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +45 -0
  361. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +12 -0
  362. package/src/components/sidebar-navigation-screen-templates/index.js +12 -19
  363. package/src/components/site-hub/index.js +8 -10
  364. package/src/components/site-hub/style.scss +7 -1
  365. package/src/components/site-icon/index.js +1 -1
  366. package/src/components/site-icon/style.scss +2 -2
  367. package/src/components/style-book/index.js +10 -5
  368. package/src/components/sync-state-with-url/use-sync-canvas-mode-with-url.js +4 -3
  369. package/src/components/template-part-converter/convert-to-template-part.js +12 -10
  370. package/src/experiments.js +10 -0
  371. package/src/hooks/push-changes-to-global-styles/index.js +63 -5
  372. package/src/index.js +51 -59
  373. package/src/store/actions.js +0 -24
  374. package/src/store/index.js +5 -0
  375. package/src/store/private-actions.js +29 -0
  376. package/src/store/private-selectors.js +10 -0
  377. package/src/store/selectors.js +6 -37
  378. package/src/store/test/utils.js +181 -0
  379. package/src/store/utils.js +69 -0
  380. package/src/style.scss +4 -2
  381. package/src/utils/template-part-create.js +62 -0
  382. package/src/utils/test/template-part-create.js +63 -0
  383. package/build/components/global-styles/context.js +0 -22
  384. package/build/components/global-styles/context.js.map +0 -1
  385. package/build/components/global-styles/typography-utils.js +0 -92
  386. package/build/components/global-styles/typography-utils.js.map +0 -1
  387. package/build/components/global-styles/use-global-styles-output.js +0 -943
  388. package/build/components/global-styles/use-global-styles-output.js.map +0 -1
  389. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/index.js +0 -42
  390. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +0 -1
  391. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  392. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  393. package/build-module/components/global-styles/context.js +0 -12
  394. package/build-module/components/global-styles/context.js.map +0 -1
  395. package/build-module/components/global-styles/typography-utils.js +0 -84
  396. package/build-module/components/global-styles/typography-utils.js.map +0 -1
  397. package/build-module/components/global-styles/use-global-styles-output.js +0 -901
  398. package/build-module/components/global-styles/use-global-styles-output.js.map +0 -1
  399. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/index.js +0 -28
  400. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +0 -1
  401. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  402. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  403. package/src/components/global-styles/context.js +0 -15
  404. package/src/components/global-styles/test/typography-utils.js +0 -393
  405. package/src/components/global-styles/test/use-global-styles-output.js +0 -814
  406. package/src/components/global-styles/test/utils.js +0 -206
  407. package/src/components/global-styles/typography-utils.js +0 -87
  408. package/src/components/global-styles/use-global-styles-output.js +0 -1059
  409. package/src/components/sidebar-edit-mode/navigation-menu-sidebar/index.js +0 -37
@@ -1,34 +1,28 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- DropdownMenu,
6
- FlexItem,
7
- FlexBlock,
8
- Flex,
9
- Button,
10
- } from '@wordpress/components';
4
+ import { FlexItem, FlexBlock, Flex, Button } from '@wordpress/components';
11
5
  import { __ } from '@wordpress/i18n';
12
- import { styles, moreVertical, seen } from '@wordpress/icons';
13
- import { useDispatch, useSelect } from '@wordpress/data';
14
- import { store as preferencesStore } from '@wordpress/preferences';
6
+ import { styles, seen } from '@wordpress/icons';
7
+ import { useSelect } from '@wordpress/data';
8
+
15
9
  import { useState, useEffect } from '@wordpress/element';
16
10
 
17
11
  /**
18
12
  * Internal dependencies
19
13
  */
20
14
  import DefaultSidebar from './default-sidebar';
21
- import { GlobalStylesUI, useGlobalStylesReset } from '../global-styles';
15
+ import { GlobalStylesUI } from '../global-styles';
22
16
  import { store as editSiteStore } from '../../store';
17
+ import { GlobalStylesMenuSlot } from '../global-styles/ui';
23
18
 
24
19
  export default function GlobalStylesSidebar() {
25
- const [ canReset, onReset ] = useGlobalStylesReset();
26
- const { toggle } = useDispatch( preferencesStore );
27
20
  const [ isStyleBookOpened, setIsStyleBookOpened ] = useState( false );
28
21
  const editorMode = useSelect(
29
22
  ( select ) => select( editSiteStore ).getEditorMode(),
30
23
  []
31
24
  );
25
+
32
26
  useEffect( () => {
33
27
  if ( editorMode !== 'visual' ) {
34
28
  setIsStyleBookOpened( false );
@@ -63,25 +57,7 @@ export default function GlobalStylesSidebar() {
63
57
  />
64
58
  </FlexItem>
65
59
  <FlexItem>
66
- <DropdownMenu
67
- icon={ moreVertical }
68
- label={ __( 'More Styles actions' ) }
69
- controls={ [
70
- {
71
- title: __( 'Reset to defaults' ),
72
- onClick: onReset,
73
- isDisabled: ! canReset,
74
- },
75
- {
76
- title: __( 'Welcome Guide' ),
77
- onClick: () =>
78
- toggle(
79
- 'core/edit-site',
80
- 'welcomeGuideStyles'
81
- ),
82
- },
83
- ] }
84
- />
60
+ <GlobalStylesMenuSlot />
85
61
  </FlexItem>
86
62
  </Flex>
87
63
  }
@@ -14,7 +14,6 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
14
14
  */
15
15
  import DefaultSidebar from './default-sidebar';
16
16
  import GlobalStylesSidebar from './global-styles-sidebar';
17
- import NavigationMenuSidebar from './navigation-menu-sidebar';
18
17
  import { STORE_NAME } from '../../store/constants';
19
18
  import SettingsHeader from './settings-header';
20
19
  import TemplateCard from './template-card';
@@ -64,15 +63,6 @@ export function SidebarComplementaryAreaFills() {
64
63
  sidebarName = hasBlockSelection ? SIDEBAR_BLOCK : SIDEBAR_TEMPLATE;
65
64
  }
66
65
 
67
- // Conditionally include NavMenu sidebar in Plugin only.
68
- // Optimise for dead code elimination.
69
- // See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.
70
- let MaybeNavigationMenuSidebar = Fragment;
71
-
72
- if ( window?.__experimentalEnableOffCanvasNavigationEditor === true ) {
73
- MaybeNavigationMenuSidebar = NavigationMenuSidebar;
74
- }
75
-
76
66
  return (
77
67
  <>
78
68
  <DefaultSidebar
@@ -93,7 +83,6 @@ export function SidebarComplementaryAreaFills() {
93
83
  ) }
94
84
  </DefaultSidebar>
95
85
  { supportsGlobalStyles && <GlobalStylesSidebar /> }
96
- <MaybeNavigationMenuSidebar />
97
86
  </>
98
87
  );
99
88
  }
@@ -42,6 +42,7 @@
42
42
  &:focus:not(:disabled) {
43
43
  position: relative;
44
44
  box-shadow: none;
45
+ outline: none;
45
46
  }
46
47
 
47
48
  // Tab indicator
@@ -66,6 +67,10 @@
66
67
  // Active.
67
68
  &.is-active::after {
68
69
  height: calc(1 * var(--wp-admin-border-width-focus));
70
+
71
+ // Windows high contrast mode.
72
+ outline: 2px solid transparent;
73
+ outline-offset: -1px;
69
74
  }
70
75
 
71
76
  // Focus.
@@ -89,5 +94,8 @@
89
94
 
90
95
  &:focus-visible::before {
91
96
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
97
+
98
+ // Windows high contrast mode.
99
+ outline: 2px solid transparent;
92
100
  }
93
101
  }
@@ -3,15 +3,40 @@
3
3
  border-width: $border-width-tab;
4
4
 
5
5
  &:hover,
6
- &:focus {
6
+ &:focus,
7
+ &[aria-current] {
7
8
  color: $white;
8
9
  background: $gray-800;
9
10
  border-width: $border-width-tab;
10
11
  }
11
12
 
12
13
  &[aria-current] {
13
- color: $white;
14
14
  background: var(--wp-admin-theme-color);
15
- border-width: $border-width-tab;
16
15
  }
17
16
  }
17
+
18
+ .edit-site-sidebar-navigation-screen__content .edit-site-navigation-inspector .components-button {
19
+ color: $gray-600;
20
+ &:hover,
21
+ &:focus,
22
+ &[aria-current] {
23
+ color: $white;
24
+ }
25
+ }
26
+
27
+ .edit-site-sidebar-navigation-screen__content .edit-site-navigation-inspector .offcanvas-editor-list-view-leaf {
28
+ &:hover,
29
+ &:focus,
30
+ &[aria-current] {
31
+ background: $gray-800;
32
+ }
33
+ .block-editor-list-view-block__menu {
34
+ margin-left: -$grid-unit-10;
35
+ }
36
+ }
37
+
38
+ .edit-site-sidebar-navigation-screen__content .block-editor-list-view-block-select-button {
39
+ cursor: grab;
40
+ width: calc(100% - #{ $border-width-focus });
41
+ padding: $grid-unit-10;
42
+ }
@@ -14,6 +14,7 @@ export default function SidebarNavigationScreen( {
14
14
  path,
15
15
  parentTitle,
16
16
  title,
17
+ actions,
17
18
  content,
18
19
  } ) {
19
20
  return (
@@ -40,10 +41,10 @@ export default function SidebarNavigationScreen( {
40
41
  ) : (
41
42
  <div className="edit-site-sidebar-navigation-screen__icon-placeholder" />
42
43
  ) }
43
-
44
- <div className="edit-site-sidebar-navigation-screen__title">
44
+ <h2 className="edit-site-sidebar-navigation-screen__title">
45
45
  { title }
46
- </div>
46
+ </h2>
47
+ { actions }
47
48
  </HStack>
48
49
 
49
50
  <nav className="edit-site-sidebar-navigation-screen__content">
@@ -24,6 +24,8 @@
24
24
  font-size: calc(1.56 * 13px);
25
25
  font-weight: 500;
26
26
  flex-grow: 1;
27
+ color: $white;
28
+ margin: 0;
27
29
  }
28
30
 
29
31
  .edit-site-sidebar-navigation-screen__back {
@@ -6,7 +6,9 @@ import {
6
6
  __experimentalNavigatorButton as NavigatorButton,
7
7
  } from '@wordpress/components';
8
8
  import { __ } from '@wordpress/i18n';
9
- import { layout, symbolFilled } from '@wordpress/icons';
9
+ import { layout, symbolFilled, navigation } from '@wordpress/icons';
10
+ import { useSelect } from '@wordpress/data';
11
+ import { store as coreStore } from '@wordpress/core-data';
10
12
 
11
13
  /**
12
14
  * Internal dependencies
@@ -15,12 +17,32 @@ import SidebarNavigationScreen from '../sidebar-navigation-screen';
15
17
  import SidebarNavigationItem from '../sidebar-navigation-item';
16
18
 
17
19
  export default function SidebarNavigationScreenMain() {
20
+ const { navigationMenus } = useSelect( ( select ) => {
21
+ const { getEntityRecords } = select( coreStore );
22
+ return {
23
+ navigationMenus: getEntityRecords( 'postType', 'wp_navigation', {
24
+ per_page: -1,
25
+ status: 'publish',
26
+ } ),
27
+ };
28
+ } );
29
+
18
30
  return (
19
31
  <SidebarNavigationScreen
20
32
  path="/"
21
33
  title={ __( 'Design' ) }
22
34
  content={
23
35
  <ItemGroup>
36
+ { !! navigationMenus && navigationMenus.length > 0 && (
37
+ <NavigatorButton
38
+ as={ SidebarNavigationItem }
39
+ path="/navigation"
40
+ withChevron
41
+ icon={ navigation }
42
+ >
43
+ { __( 'Navigation' ) }
44
+ </NavigatorButton>
45
+ ) }
24
46
  <NavigatorButton
25
47
  as={ SidebarNavigationItem }
26
48
  path="/templates"
@@ -0,0 +1,45 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { useCallback } from '@wordpress/element';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import SidebarNavigationScreen from '../sidebar-navigation-screen';
11
+ import NavigationInspector from '../navigation-inspector';
12
+ import { useHistory } from '../routes';
13
+
14
+ export default function SidebarNavigationScreenNavigationMenus() {
15
+ const history = useHistory();
16
+ const onSelect = useCallback(
17
+ ( selectedBlock ) => {
18
+ const { attributes } = selectedBlock;
19
+ if (
20
+ attributes.kind === 'post-type' &&
21
+ attributes.id &&
22
+ attributes.type &&
23
+ history
24
+ ) {
25
+ history.push( {
26
+ postType: attributes.type,
27
+ postId: attributes.id,
28
+ } );
29
+ }
30
+ },
31
+ [ history ]
32
+ );
33
+ return (
34
+ <SidebarNavigationScreen
35
+ path="/navigation"
36
+ parentTitle={ __( 'Design' ) }
37
+ title={ __( 'Navigation' ) }
38
+ content={
39
+ <div className="edit-site-sidebar-navigation-screen-navigation-menus">
40
+ <NavigationInspector onSelect={ onSelect } />
41
+ </div>
42
+ }
43
+ />
44
+ );
45
+ }
@@ -0,0 +1,12 @@
1
+ .edit-site-sidebar-navigation-screen-navigation-menus {
2
+ .block-editor-list-view-block__menu-edit,
3
+ .edit-site-navigation-inspector__select-menu {
4
+ display: none;
5
+ }
6
+ .offcanvas-editor-list-view-leaf {
7
+ max-width: calc(100% - #{ $grid-unit-05 });
8
+ }
9
+ .block-editor-list-view-leaf .block-editor-list-view-block__contents-cell {
10
+ width: 100%;
11
+ }
12
+ }
@@ -1,10 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- __experimentalItemGroup as ItemGroup,
6
- __experimentalHStack as HStack,
7
- } from '@wordpress/components';
4
+ import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
8
5
  import { __ } from '@wordpress/i18n';
9
6
  import { useSelect } from '@wordpress/data';
10
7
  import { useEntityRecords } from '@wordpress/core-data';
@@ -119,21 +116,17 @@ export default function SidebarNavigationScreenTemplates( {
119
116
  <SidebarNavigationScreen
120
117
  path={ config[ postType ].path }
121
118
  parentTitle={ __( 'Design' ) }
122
- title={
123
- <HStack justify="space-between">
124
- <div style={ { flexShrink: 0 } }>
125
- { config[ postType ].labels.title }
126
- </div>
127
- { ! isMobileViewport && (
128
- <AddNewTemplate
129
- templateType={ postType }
130
- toggleProps={ {
131
- className:
132
- 'edit-site-sidebar-navigation-screen-templates__add-button',
133
- } }
134
- />
135
- ) }
136
- </HStack>
119
+ title={ config[ postType ].labels.title }
120
+ actions={
121
+ ! isMobileViewport && (
122
+ <AddNewTemplate
123
+ templateType={ postType }
124
+ toggleProps={ {
125
+ className:
126
+ 'edit-site-sidebar-navigation-screen-templates__add-button',
127
+ } }
128
+ />
129
+ )
137
130
  }
138
131
  content={
139
132
  <>
@@ -27,6 +27,7 @@ import { useLocation } from '../routes';
27
27
  import getIsListPage from '../../utils/get-is-list-page';
28
28
  import SiteIcon from '../site-icon';
29
29
  import useEditedEntityRecord from '../use-edited-entity-record';
30
+ import { unlock } from '../../experiments';
30
31
 
31
32
  const HUB_ANIMATION_DURATION = 0.3;
32
33
 
@@ -38,13 +39,10 @@ const SiteHub = forwardRef(
38
39
  const { canvasMode, dashboardLink, entityConfig } = useSelect(
39
40
  ( select ) => {
40
41
  select( editSiteStore ).getEditedPostType();
41
- const {
42
- __unstableGetCanvasMode,
43
- getSettings,
44
- getEditedPostType,
45
- } = select( editSiteStore );
42
+ const { getCanvasMode, getSettings, getEditedPostType } =
43
+ unlock( select( editSiteStore ) );
46
44
  return {
47
- canvasMode: __unstableGetCanvasMode(),
45
+ canvasMode: getCanvasMode(),
48
46
  dashboardLink: getSettings().__experimentalDashboardLink,
49
47
  entityConfig: select( coreStore ).getEntityConfig(
50
48
  'postType',
@@ -56,7 +54,7 @@ const SiteHub = forwardRef(
56
54
  );
57
55
  const disableMotion = useReducedMotion();
58
56
  const isMobileViewport = useViewportMatch( 'medium', '<' );
59
- const { __unstableSetCanvasMode } = useDispatch( editSiteStore );
57
+ const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
60
58
  const { clearSelectedBlock } = useDispatch( blockEditorStore );
61
59
  const showEditButton =
62
60
  ( isEditorPage && canvasMode === 'view' && ! isMobileViewport ) ||
@@ -77,7 +75,7 @@ const SiteHub = forwardRef(
77
75
  onClick: () => {
78
76
  clearSelectedBlock();
79
77
  setIsMobileCanvasVisible( false );
80
- __unstableSetCanvasMode( 'view' );
78
+ setCanvasMode( 'view' );
81
79
  },
82
80
  };
83
81
  const { getTitle } = useEditedEntityRecord();
@@ -100,6 +98,7 @@ const SiteHub = forwardRef(
100
98
  <HStack
101
99
  justify="flex-start"
102
100
  className="edit-site-site-hub__text-content"
101
+ spacing="0"
103
102
  >
104
103
  <motion.div
105
104
  className="edit-site-site-hub__view-mode-toggle-container"
@@ -135,9 +134,8 @@ const SiteHub = forwardRef(
135
134
  { showEditButton && (
136
135
  <Button
137
136
  className="edit-site-site-hub__edit-button"
138
- label={ __( 'Open the editor' ) }
139
137
  onClick={ () => {
140
- __unstableSetCanvasMode( 'edit' );
138
+ setCanvasMode( 'edit' );
141
139
  } }
142
140
  variant="primary"
143
141
  >
@@ -15,10 +15,16 @@
15
15
 
16
16
  .edit-site-site-hub__view-mode-toggle-container {
17
17
  height: $header-height;
18
- width: $header-height;
18
+ width: $header-height + 4px;
19
19
  flex-shrink: 0;
20
20
  }
21
21
 
22
+ .edit-site-layout.is-edit-mode {
23
+ .edit-site-site-hub__view-mode-toggle-container {
24
+ width: $header-height;
25
+ }
26
+ }
27
+
22
28
  .edit-site-site-hub__text-content {
23
29
  // Necessary for the ellipsis to work.
24
30
  overflow: hidden;
@@ -41,7 +41,7 @@ function SiteIcon( { className } ) {
41
41
  ) : (
42
42
  <Icon
43
43
  className="edit-site-site-icon__icon"
44
- size="36px"
44
+ size="32px"
45
45
  icon={ wordpress }
46
46
  />
47
47
  );
@@ -3,8 +3,8 @@
3
3
  }
4
4
 
5
5
  .edit-site-site-icon__image {
6
- width: $button-size;
7
- height: $button-size;
6
+ width: $grid-unit-40;
7
+ height: $grid-unit-40;
8
8
  border-radius: $radius-block-ui;
9
9
  object-fit: cover;
10
10
  }
@@ -19,7 +19,10 @@ import {
19
19
  getBlockFromExample,
20
20
  createBlock,
21
21
  } from '@wordpress/blocks';
22
- import { BlockPreview } from '@wordpress/block-editor';
22
+ import {
23
+ BlockPreview,
24
+ experiments as blockEditorExperiments,
25
+ } from '@wordpress/block-editor';
23
26
  import { closeSmall } from '@wordpress/icons';
24
27
  import { useResizeObserver } from '@wordpress/compose';
25
28
  import { useMemo, memo } from '@wordpress/element';
@@ -27,7 +30,9 @@ import { useMemo, memo } from '@wordpress/element';
27
30
  /**
28
31
  * Internal dependencies
29
32
  */
30
- import { useStyle } from '../global-styles';
33
+ import { unlock } from '../../experiments';
34
+
35
+ const { useGlobalStyle } = unlock( blockEditorExperiments );
31
36
 
32
37
  const SLOT_FILL_NAME = 'EditSiteStyleBook';
33
38
  const { Slot: StyleBookSlot, Fill: StyleBookFill } =
@@ -81,8 +86,8 @@ function getExamples() {
81
86
 
82
87
  function StyleBook( { isSelected, onSelect, onClose } ) {
83
88
  const [ resizeObserver, sizes ] = useResizeObserver();
84
- const [ textColor ] = useStyle( 'color.text' );
85
- const [ backgroundColor ] = useStyle( 'color.background' );
89
+ const [ textColor ] = useGlobalStyle( 'color.text' );
90
+ const [ backgroundColor ] = useGlobalStyle( 'color.background' );
86
91
  const examples = useMemo( getExamples, [] );
87
92
  const tabs = useMemo(
88
93
  () =>
@@ -171,7 +176,7 @@ const Example = memo( ( { title, blocks, isSelected, onClick } ) => (
171
176
  <BlockPreview
172
177
  blocks={ blocks }
173
178
  viewportWidth={ 0 }
174
- __experimentalStyles={ [
179
+ additionalStyles={ [
175
180
  {
176
181
  css:
177
182
  '.wp-block:first-child { margin-top: 0; }' +
@@ -9,15 +9,16 @@ import { useSelect, useDispatch } from '@wordpress/data';
9
9
  */
10
10
  import { store as editSiteStore } from '../../store';
11
11
  import { useLocation, useHistory } from '../routes';
12
+ import { unlock } from '../../experiments';
12
13
 
13
14
  export default function useSyncCanvasModeWithURL() {
14
15
  const history = useHistory();
15
16
  const { params } = useLocation();
16
17
  const canvasMode = useSelect(
17
- ( select ) => select( editSiteStore ).__unstableGetCanvasMode(),
18
+ ( select ) => unlock( select( editSiteStore ) ).getCanvasMode(),
18
19
  []
19
20
  );
20
- const { __unstableSetCanvasMode } = useDispatch( editSiteStore );
21
+ const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
21
22
  const currentCanvasMode = useRef( canvasMode );
22
23
  const { canvas: canvasInUrl = 'view' } = params;
23
24
  const currentCanvasInUrl = useRef( canvasInUrl );
@@ -34,7 +35,7 @@ export default function useSyncCanvasModeWithURL() {
34
35
  useEffect( () => {
35
36
  currentCanvasInUrl.current = canvasInUrl;
36
37
  if ( canvasInUrl !== currentCanvasMode.current ) {
37
- __unstableSetCanvasMode( canvasInUrl );
38
+ setCanvasMode( canvasInUrl );
38
39
  }
39
40
  }, [ canvasInUrl ] );
40
41
  }
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { kebabCase } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -24,12 +19,18 @@ import { symbolFilled } from '@wordpress/icons';
24
19
  */
25
20
  import CreateTemplatePartModal from '../create-template-part-modal';
26
21
  import { store as editSiteStore } from '../../store';
22
+ import {
23
+ useExistingTemplateParts,
24
+ getUniqueTemplatePartTitle,
25
+ getCleanTemplatePartSlug,
26
+ } from '../../utils/template-part-create';
27
27
 
28
28
  export default function ConvertToTemplatePart( { clientIds, blocks } ) {
29
29
  const [ isModalOpen, setIsModalOpen ] = useState( false );
30
30
  const { replaceBlocks } = useDispatch( blockEditorStore );
31
31
  const { saveEntityRecord } = useDispatch( coreStore );
32
32
  const { createSuccessNotice } = useDispatch( noticesStore );
33
+ const existingTemplateParts = useExistingTemplateParts();
33
34
 
34
35
  const { canCreate } = useSelect( ( select ) => {
35
36
  const { supportsTemplatePartsMode } =
@@ -44,17 +45,18 @@ export default function ConvertToTemplatePart( { clientIds, blocks } ) {
44
45
  }
45
46
 
46
47
  const onConvert = async ( { title, area } ) => {
47
- // Currently template parts only allow latin chars.
48
- // Fallback slug will receive suffix by default.
49
- const cleanSlug =
50
- kebabCase( title ).replace( /[^\w-]+/g, '' ) || 'wp-custom-part';
48
+ const uniqueTitle = getUniqueTemplatePartTitle(
49
+ title,
50
+ existingTemplateParts
51
+ );
52
+ const cleanSlug = getCleanTemplatePartSlug( uniqueTitle );
51
53
 
52
54
  const templatePart = await saveEntityRecord(
53
55
  'postType',
54
56
  'wp_template_part',
55
57
  {
56
58
  slug: cleanSlug,
57
- title,
59
+ title: uniqueTitle,
58
60
  content: serialize( blocks ),
59
61
  area,
60
62
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/experiments';
5
+
6
+ export const { lock, unlock } =
7
+ __dangerousOptInToUnstableAPIsOnlyForCoreModules(
8
+ 'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',
9
+ '@wordpress/edit-site'
10
+ );
@@ -11,6 +11,7 @@ import { createHigherOrderComponent } from '@wordpress/compose';
11
11
  import {
12
12
  InspectorAdvancedControls,
13
13
  store as blockEditorStore,
14
+ experiments as blockEditorExperiments,
14
15
  } from '@wordpress/block-editor';
15
16
  import { BaseControl, Button } from '@wordpress/components';
16
17
  import { __, sprintf } from '@wordpress/i18n';
@@ -26,11 +27,68 @@ import { store as noticesStore } from '@wordpress/notices';
26
27
  * Internal dependencies
27
28
  */
28
29
  import { getSupportedGlobalStylesPanels } from '../../components/global-styles/hooks';
29
- import { GlobalStylesContext } from '../../components/global-styles/context';
30
- import {
31
- STYLE_PATH_TO_CSS_VAR_INFIX,
32
- STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE,
33
- } from '../../components/global-styles/utils';
30
+ import { unlock } from '../../experiments';
31
+
32
+ const { GlobalStylesContext } = unlock( blockEditorExperiments );
33
+
34
+ // TODO: Temporary duplication of constant in @wordpress/block-editor. Can be
35
+ // removed by moving PushChangesToGlobalStylesControl to
36
+ // @wordpress/block-editor.
37
+ const STYLE_PATH_TO_CSS_VAR_INFIX = {
38
+ 'color.background': 'color',
39
+ 'color.text': 'color',
40
+ 'elements.link.color.text': 'color',
41
+ 'elements.link.:hover.color.text': 'color',
42
+ 'elements.link.typography.fontFamily': 'font-family',
43
+ 'elements.link.typography.fontSize': 'font-size',
44
+ 'elements.button.color.text': 'color',
45
+ 'elements.button.color.background': 'color',
46
+ 'elements.button.typography.fontFamily': 'font-family',
47
+ 'elements.button.typography.fontSize': 'font-size',
48
+ 'elements.heading.color': 'color',
49
+ 'elements.heading.color.background': 'color',
50
+ 'elements.heading.typography.fontFamily': 'font-family',
51
+ 'elements.heading.gradient': 'gradient',
52
+ 'elements.heading.color.gradient': 'gradient',
53
+ 'elements.h1.color': 'color',
54
+ 'elements.h1.color.background': 'color',
55
+ 'elements.h1.typography.fontFamily': 'font-family',
56
+ 'elements.h1.color.gradient': 'gradient',
57
+ 'elements.h2.color': 'color',
58
+ 'elements.h2.color.background': 'color',
59
+ 'elements.h2.typography.fontFamily': 'font-family',
60
+ 'elements.h2.color.gradient': 'gradient',
61
+ 'elements.h3.color': 'color',
62
+ 'elements.h3.color.background': 'color',
63
+ 'elements.h3.typography.fontFamily': 'font-family',
64
+ 'elements.h3.color.gradient': 'gradient',
65
+ 'elements.h4.color': 'color',
66
+ 'elements.h4.color.background': 'color',
67
+ 'elements.h4.typography.fontFamily': 'font-family',
68
+ 'elements.h4.color.gradient': 'gradient',
69
+ 'elements.h5.color': 'color',
70
+ 'elements.h5.color.background': 'color',
71
+ 'elements.h5.typography.fontFamily': 'font-family',
72
+ 'elements.h5.color.gradient': 'gradient',
73
+ 'elements.h6.color': 'color',
74
+ 'elements.h6.color.background': 'color',
75
+ 'elements.h6.typography.fontFamily': 'font-family',
76
+ 'elements.h6.color.gradient': 'gradient',
77
+ 'color.gradient': 'gradient',
78
+ 'typography.fontSize': 'font-size',
79
+ 'typography.fontFamily': 'font-family',
80
+ };
81
+
82
+ // TODO: Temporary duplication of constant in @wordpress/block-editor. Can be
83
+ // removed by moving PushChangesToGlobalStylesControl to
84
+ // @wordpress/block-editor.
85
+ const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {
86
+ 'color.background': 'backgroundColor',
87
+ 'color.text': 'textColor',
88
+ 'color.gradient': 'gradient',
89
+ 'typography.fontSize': 'fontSize',
90
+ 'typography.fontFamily': 'fontFamily',
91
+ };
34
92
 
35
93
  function getChangesToPush( name, attributes ) {
36
94
  return getSupportedGlobalStylesPanels( name ).flatMap( ( key ) => {