@wordpress/edit-site 5.29.0 → 5.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/actions/index.js +3 -5
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/block-editor/editor-canvas.js +18 -6
  5. package/build/components/block-editor/editor-canvas.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +1 -1
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +1 -15
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  11. package/build/components/global-styles/font-families.js +1 -1
  12. package/build/components/global-styles/font-families.js.map +1 -1
  13. package/build/components/global-styles/font-library-modal/collection-font-variant.js +2 -2
  14. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  15. package/build/components/global-styles/font-library-modal/context.js +70 -59
  16. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  17. package/build/components/global-styles/font-library-modal/font-card.js +10 -15
  18. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
  19. package/build/components/global-styles/font-library-modal/font-collection.js +121 -78
  20. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  21. package/build/components/global-styles/font-library-modal/font-demo.js +29 -8
  22. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +3 -2
  24. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  25. package/build/components/global-styles/font-library-modal/index.js +19 -6
  26. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  27. package/build/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  28. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  30. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/upload-fonts.js +51 -23
  32. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  33. package/build/components/global-styles/font-library-modal/utils/index.js +39 -5
  34. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  35. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -1
  36. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  37. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  38. package/build/components/global-styles/header.js +2 -2
  39. package/build/components/global-styles/header.js.map +1 -1
  40. package/build/components/global-styles/highlighted-colors.js +50 -0
  41. package/build/components/global-styles/highlighted-colors.js.map +1 -0
  42. package/build/components/global-styles/hooks.js +50 -1
  43. package/build/components/global-styles/hooks.js.map +1 -1
  44. package/build/components/global-styles/preview-colors.js +62 -0
  45. package/build/components/global-styles/preview-colors.js.map +1 -0
  46. package/build/components/global-styles/preview-iframe.js +130 -0
  47. package/build/components/global-styles/preview-iframe.js.map +1 -0
  48. package/build/components/global-styles/preview-styles.js +163 -0
  49. package/build/components/global-styles/preview-styles.js.map +1 -0
  50. package/build/components/global-styles/screen-block-list.js +1 -1
  51. package/build/components/global-styles/screen-block-list.js.map +1 -1
  52. package/build/components/global-styles/screen-block.js +1 -1
  53. package/build/components/global-styles/screen-block.js.map +1 -1
  54. package/build/components/global-styles/screen-colors.js +3 -2
  55. package/build/components/global-styles/screen-colors.js.map +1 -1
  56. package/build/components/global-styles/screen-revisions/index.js +2 -2
  57. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  58. package/build/components/global-styles/screen-root.js +2 -2
  59. package/build/components/global-styles/screen-root.js.map +1 -1
  60. package/build/components/global-styles/screen-typography.js +5 -2
  61. package/build/components/global-styles/screen-typography.js.map +1 -1
  62. package/build/components/global-styles/style-variations-container.js +12 -84
  63. package/build/components/global-styles/style-variations-container.js.map +1 -1
  64. package/build/components/global-styles/{typogrphy-elements.js → typography-elements.js} +4 -2
  65. package/build/components/global-styles/typography-elements.js.map +1 -0
  66. package/build/components/global-styles/typography-example.js +67 -0
  67. package/build/components/global-styles/typography-example.js.map +1 -0
  68. package/build/components/global-styles/typography-preview.js +3 -1
  69. package/build/components/global-styles/typography-preview.js.map +1 -1
  70. package/build/components/global-styles/ui.js +27 -2
  71. package/build/components/global-styles/ui.js.map +1 -1
  72. package/build/components/global-styles/utils.js +22 -0
  73. package/build/components/global-styles/utils.js.map +1 -1
  74. package/build/components/global-styles/variations/variation.js +90 -0
  75. package/build/components/global-styles/variations/variation.js.map +1 -0
  76. package/build/components/global-styles/variations/variations-color.js +35 -0
  77. package/build/components/global-styles/variations/variations-color.js.map +1 -0
  78. package/build/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  79. package/build/components/global-styles/variations/variations-panel.js.map +1 -0
  80. package/build/components/global-styles/variations/variations-typography.js +54 -0
  81. package/build/components/global-styles/variations/variations-typography.js.map +1 -0
  82. package/build/components/header-edit-mode/index.js +14 -12
  83. package/build/components/header-edit-mode/index.js.map +1 -1
  84. package/build/components/header-edit-mode/more-menu/index.js +10 -2
  85. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  86. package/build/components/keyboard-shortcut-help-modal/config.js +6 -0
  87. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  88. package/build/components/keyboard-shortcuts/global.js +17 -3
  89. package/build/components/keyboard-shortcuts/global.js.map +1 -1
  90. package/build/components/layout/index.js +4 -1
  91. package/build/components/layout/index.js.map +1 -1
  92. package/build/components/layout/router.js +2 -5
  93. package/build/components/layout/router.js.map +1 -1
  94. package/build/components/page-pages/index.js +6 -11
  95. package/build/components/page-pages/index.js.map +1 -1
  96. package/build/components/page-patterns/delete-category-menu-item.js +6 -1
  97. package/build/components/page-patterns/delete-category-menu-item.js.map +1 -1
  98. package/build/components/page-patterns/index.js +15 -18
  99. package/build/components/page-patterns/index.js.map +1 -1
  100. package/build/components/page-patterns/use-patterns.js +9 -9
  101. package/build/components/page-patterns/use-patterns.js.map +1 -1
  102. package/build/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -61
  103. package/build/components/page-templates-template-parts/hooks.js.map +1 -0
  104. package/build/components/page-templates-template-parts/index.js +25 -22
  105. package/build/components/page-templates-template-parts/index.js.map +1 -1
  106. package/build/components/resizable-frame/index.js +2 -1
  107. package/build/components/resizable-frame/index.js.map +1 -1
  108. package/build/components/revisions/index.js.map +1 -1
  109. package/build/components/save-panel/index.js +31 -11
  110. package/build/components/save-panel/index.js.map +1 -1
  111. package/build/components/sidebar/index.js +3 -4
  112. package/build/components/sidebar/index.js.map +1 -1
  113. package/build/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  114. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  115. package/build/components/sidebar-dataviews/dataview-item.js +2 -2
  116. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  117. package/build/components/sidebar-dataviews/default-views.js +4 -2
  118. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  119. package/build/components/sidebar-dataviews/index.js +4 -3
  120. package/build/components/sidebar-dataviews/index.js.map +1 -1
  121. package/build/components/sidebar-edit-mode/page-panels/index.js +2 -2
  122. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  123. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  124. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +3 -1
  125. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  126. package/build/components/sidebar-edit-mode/sidebar-card/index.js +12 -6
  127. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -1
  128. package/build/components/sidebar-edit-mode/template-panel/index.js +23 -3
  129. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-global-styles/index.js +13 -1
  131. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-main/index.js +1 -2
  133. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  134. package/build/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +4 -5
  135. package/build/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  136. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  137. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  139. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  141. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  142. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  143. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  144. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +2 -2
  145. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  146. package/build/components/sidebar-navigation-screen-template/index.js +7 -3
  147. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  148. package/build/components/sidebar-navigation-screen-templates-browse/content.js +6 -6
  149. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  150. package/build/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  151. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  152. package/build/components/start-template-options/index.js.map +1 -1
  153. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  154. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  155. package/build/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  156. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  157. package/build/components/template-actions/index.js +44 -27
  158. package/build/components/template-actions/index.js.map +1 -1
  159. package/build/components/welcome-guide/editor.js +11 -2
  160. package/build/components/welcome-guide/editor.js.map +1 -1
  161. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +78 -0
  162. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  163. package/build/utils/constants.js +5 -3
  164. package/build/utils/constants.js.map +1 -1
  165. package/build/utils/get-is-list-page.js +1 -1
  166. package/build/utils/get-is-list-page.js.map +1 -1
  167. package/build/utils/math.js +98 -0
  168. package/build/utils/math.js.map +1 -0
  169. package/build-module/components/actions/index.js +4 -6
  170. package/build-module/components/actions/index.js.map +1 -1
  171. package/build-module/components/block-editor/editor-canvas.js +18 -6
  172. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  173. package/build-module/components/block-editor/use-site-editor-settings.js +1 -1
  174. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  175. package/build-module/components/editor/index.js +2 -16
  176. package/build-module/components/editor/index.js.map +1 -1
  177. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  178. package/build-module/components/global-styles/font-families.js +1 -1
  179. package/build-module/components/global-styles/font-families.js.map +1 -1
  180. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +4 -4
  181. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -1
  182. package/build-module/components/global-styles/font-library-modal/context.js +72 -61
  183. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  184. package/build-module/components/global-styles/font-library-modal/font-card.js +11 -16
  185. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -1
  186. package/build-module/components/global-styles/font-library-modal/font-collection.js +124 -81
  187. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  188. package/build-module/components/global-styles/font-library-modal/font-demo.js +30 -9
  189. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  190. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +4 -3
  191. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  192. package/build-module/components/global-styles/font-library-modal/index.js +19 -6
  193. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  194. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +151 -79
  195. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  196. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +4 -4
  197. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  198. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +52 -24
  199. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  200. package/build-module/components/global-styles/font-library-modal/utils/index.js +38 -5
  201. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  202. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -1
  203. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  204. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  205. package/build-module/components/global-styles/header.js +2 -2
  206. package/build-module/components/global-styles/header.js.map +1 -1
  207. package/build-module/components/global-styles/highlighted-colors.js +43 -0
  208. package/build-module/components/global-styles/highlighted-colors.js.map +1 -0
  209. package/build-module/components/global-styles/hooks.js +48 -1
  210. package/build-module/components/global-styles/hooks.js.map +1 -1
  211. package/build-module/components/global-styles/preview-colors.js +54 -0
  212. package/build-module/components/global-styles/preview-colors.js.map +1 -0
  213. package/build-module/components/global-styles/preview-iframe.js +123 -0
  214. package/build-module/components/global-styles/preview-iframe.js.map +1 -0
  215. package/build-module/components/global-styles/preview-styles.js +155 -0
  216. package/build-module/components/global-styles/preview-styles.js.map +1 -0
  217. package/build-module/components/global-styles/screen-block-list.js +1 -1
  218. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  219. package/build-module/components/global-styles/screen-block.js +1 -1
  220. package/build-module/components/global-styles/screen-block.js.map +1 -1
  221. package/build-module/components/global-styles/screen-colors.js +3 -2
  222. package/build-module/components/global-styles/screen-colors.js.map +1 -1
  223. package/build-module/components/global-styles/screen-revisions/index.js +2 -2
  224. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  225. package/build-module/components/global-styles/screen-root.js +2 -2
  226. package/build-module/components/global-styles/screen-root.js.map +1 -1
  227. package/build-module/components/global-styles/screen-typography.js +5 -2
  228. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  229. package/build-module/components/global-styles/style-variations-container.js +13 -85
  230. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  231. package/build-module/components/global-styles/{typogrphy-elements.js → typography-elements.js} +4 -2
  232. package/build-module/components/global-styles/typography-elements.js.map +1 -0
  233. package/build-module/components/global-styles/typography-example.js +60 -0
  234. package/build-module/components/global-styles/typography-example.js.map +1 -0
  235. package/build-module/components/global-styles/typography-preview.js +3 -1
  236. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  237. package/build-module/components/global-styles/ui.js +27 -2
  238. package/build-module/components/global-styles/ui.js.map +1 -1
  239. package/build-module/components/global-styles/utils.js +21 -0
  240. package/build-module/components/global-styles/utils.js.map +1 -1
  241. package/build-module/components/global-styles/variations/variation.js +82 -0
  242. package/build-module/components/global-styles/variations/variation.js.map +1 -0
  243. package/build-module/components/global-styles/variations/variations-color.js +27 -0
  244. package/build-module/components/global-styles/variations/variations-color.js.map +1 -0
  245. package/build-module/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  246. package/build-module/components/global-styles/variations/variations-panel.js.map +1 -0
  247. package/build-module/components/global-styles/variations/variations-typography.js +46 -0
  248. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -0
  249. package/build-module/components/header-edit-mode/index.js +15 -13
  250. package/build-module/components/header-edit-mode/index.js.map +1 -1
  251. package/build-module/components/header-edit-mode/more-menu/index.js +13 -5
  252. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  253. package/build-module/components/keyboard-shortcut-help-modal/config.js +6 -0
  254. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  255. package/build-module/components/keyboard-shortcuts/global.js +17 -3
  256. package/build-module/components/keyboard-shortcuts/global.js.map +1 -1
  257. package/build-module/components/layout/index.js +4 -1
  258. package/build-module/components/layout/index.js.map +1 -1
  259. package/build-module/components/layout/router.js +2 -5
  260. package/build-module/components/layout/router.js.map +1 -1
  261. package/build-module/components/page-pages/index.js +7 -12
  262. package/build-module/components/page-pages/index.js.map +1 -1
  263. package/build-module/components/page-patterns/delete-category-menu-item.js +6 -1
  264. package/build-module/components/page-patterns/delete-category-menu-item.js.map +1 -1
  265. package/build-module/components/page-patterns/index.js +16 -19
  266. package/build-module/components/page-patterns/index.js.map +1 -1
  267. package/build-module/components/page-patterns/use-patterns.js +9 -9
  268. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  269. package/build-module/components/{list/added-by.js → page-templates-template-parts/hooks.js} +2 -59
  270. package/build-module/components/page-templates-template-parts/hooks.js.map +1 -0
  271. package/build-module/components/page-templates-template-parts/index.js +25 -22
  272. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  273. package/build-module/components/resizable-frame/index.js +2 -1
  274. package/build-module/components/resizable-frame/index.js.map +1 -1
  275. package/build-module/components/revisions/index.js.map +1 -1
  276. package/build-module/components/save-panel/index.js +31 -11
  277. package/build-module/components/save-panel/index.js.map +1 -1
  278. package/build-module/components/sidebar/index.js +3 -4
  279. package/build-module/components/sidebar/index.js.map +1 -1
  280. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  281. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  282. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -2
  283. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  284. package/build-module/components/sidebar-dataviews/default-views.js +6 -4
  285. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  286. package/build-module/components/sidebar-dataviews/index.js +4 -3
  287. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  288. package/build-module/components/sidebar-edit-mode/page-panels/index.js +3 -3
  289. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  290. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  291. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +4 -2
  292. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  293. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +13 -7
  294. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -1
  295. package/build-module/components/sidebar-edit-mode/template-panel/index.js +24 -4
  296. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  297. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +14 -2
  298. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  299. package/build-module/components/sidebar-navigation-screen-main/index.js +1 -2
  300. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  301. package/build-module/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  302. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js.map +1 -0
  303. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +6 -6
  304. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  305. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -3
  306. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  307. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +1 -1
  308. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  309. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  310. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  311. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  312. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  313. package/build-module/components/sidebar-navigation-screen-template/index.js +6 -2
  314. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  315. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +5 -5
  316. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -1
  317. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +7 -5
  318. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  319. package/build-module/components/start-template-options/index.js.map +1 -1
  320. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  321. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  322. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +1 -11
  323. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  324. package/build-module/components/template-actions/index.js +44 -27
  325. package/build-module/components/template-actions/index.js.map +1 -1
  326. package/build-module/components/welcome-guide/editor.js +11 -2
  327. package/build-module/components/welcome-guide/editor.js.map +1 -1
  328. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +76 -1
  329. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  330. package/build-module/utils/constants.js +4 -2
  331. package/build-module/utils/constants.js.map +1 -1
  332. package/build-module/utils/get-is-list-page.js +1 -1
  333. package/build-module/utils/get-is-list-page.js.map +1 -1
  334. package/build-module/utils/math.js +92 -0
  335. package/build-module/utils/math.js.map +1 -0
  336. package/build-style/style-rtl.css +196 -315
  337. package/build-style/style.css +196 -315
  338. package/package.json +42 -42
  339. package/src/components/actions/index.js +4 -6
  340. package/src/components/block-editor/editor-canvas.js +20 -6
  341. package/src/components/block-editor/style.scss +0 -3
  342. package/src/components/block-editor/use-site-editor-settings.js +0 -2
  343. package/src/components/editor/index.js +0 -20
  344. package/src/components/global-styles/color-palette-panel.js +0 -1
  345. package/src/components/global-styles/font-families.js +1 -1
  346. package/src/components/global-styles/font-library-modal/collection-font-variant.js +5 -5
  347. package/src/components/global-styles/font-library-modal/context.js +136 -107
  348. package/src/components/global-styles/font-library-modal/font-card.js +11 -26
  349. package/src/components/global-styles/font-library-modal/font-collection.js +298 -218
  350. package/src/components/global-styles/font-library-modal/font-demo.js +38 -4
  351. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +9 -2
  352. package/src/components/global-styles/font-library-modal/index.js +23 -16
  353. package/src/components/global-styles/font-library-modal/installed-fonts.js +243 -114
  354. package/src/components/global-styles/font-library-modal/library-font-variant.js +5 -5
  355. package/src/components/global-styles/font-library-modal/style.scss +27 -11
  356. package/src/components/global-styles/font-library-modal/upload-fonts.js +70 -27
  357. package/src/components/global-styles/font-library-modal/utils/index.js +45 -5
  358. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +6 -1
  359. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +7 -18
  360. package/src/components/global-styles/gradients-palette-panel.js +2 -2
  361. package/src/components/global-styles/header.js +2 -2
  362. package/src/components/global-styles/highlighted-colors.js +39 -0
  363. package/src/components/global-styles/hooks.js +68 -1
  364. package/src/components/global-styles/preview-colors.js +61 -0
  365. package/src/components/global-styles/preview-iframe.js +152 -0
  366. package/src/components/global-styles/preview-styles.js +185 -0
  367. package/src/components/global-styles/screen-block-list.js +1 -1
  368. package/src/components/global-styles/screen-block.js +4 -1
  369. package/src/components/global-styles/screen-colors.js +3 -2
  370. package/src/components/global-styles/screen-revisions/index.js +5 -2
  371. package/src/components/global-styles/screen-root.js +2 -2
  372. package/src/components/global-styles/screen-typography.js +8 -2
  373. package/src/components/global-styles/style-variations-container.js +14 -92
  374. package/src/components/global-styles/style.scss +4 -35
  375. package/src/components/global-styles/{typogrphy-elements.js → typography-elements.js} +5 -1
  376. package/src/components/global-styles/typography-example.js +64 -0
  377. package/src/components/global-styles/typography-preview.js +3 -1
  378. package/src/components/global-styles/ui.js +26 -2
  379. package/src/components/global-styles/utils.js +37 -0
  380. package/src/components/global-styles/variations/style.scss +38 -0
  381. package/src/components/global-styles/variations/variation.js +93 -0
  382. package/src/components/global-styles/variations/variations-color.js +34 -0
  383. package/src/components/global-styles/{variations-panel.js → variations/variations-panel.js} +1 -1
  384. package/src/components/global-styles/variations/variations-typography.js +63 -0
  385. package/src/components/header-edit-mode/index.js +21 -27
  386. package/src/components/header-edit-mode/more-menu/index.js +17 -8
  387. package/src/components/header-edit-mode/style.scss +4 -0
  388. package/src/components/keyboard-shortcut-help-modal/config.js +4 -0
  389. package/src/components/keyboard-shortcuts/global.js +16 -4
  390. package/src/components/layout/index.js +5 -0
  391. package/src/components/layout/router.js +2 -7
  392. package/src/components/page-pages/index.js +8 -13
  393. package/src/components/page-patterns/delete-category-menu-item.js +7 -0
  394. package/src/components/page-patterns/index.js +23 -24
  395. package/src/components/page-patterns/use-patterns.js +17 -10
  396. package/src/components/{list/added-by.js → page-templates-template-parts/hooks.js} +1 -66
  397. package/src/components/page-templates-template-parts/index.js +34 -25
  398. package/src/components/page-templates-template-parts/style.scss +48 -0
  399. package/src/components/resizable-frame/index.js +1 -0
  400. package/src/components/revisions/index.js +1 -1
  401. package/src/components/save-panel/index.js +56 -27
  402. package/src/components/sidebar/index.js +3 -4
  403. package/src/components/sidebar-dataviews/custom-dataviews-list.js +2 -2
  404. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  405. package/src/components/sidebar-dataviews/default-views.js +14 -4
  406. package/src/components/sidebar-dataviews/index.js +4 -3
  407. package/src/components/sidebar-edit-mode/page-panels/index.js +2 -2
  408. package/src/components/sidebar-edit-mode/page-panels/page-status.js +1 -1
  409. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  410. package/src/components/sidebar-edit-mode/sidebar-card/index.js +30 -11
  411. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +10 -11
  412. package/src/components/sidebar-edit-mode/template-panel/index.js +25 -6
  413. package/src/components/sidebar-navigation-screen/style.scss +10 -1
  414. package/src/components/sidebar-navigation-screen-global-styles/index.js +35 -2
  415. package/src/components/sidebar-navigation-screen-main/index.js +0 -2
  416. package/src/components/sidebar-navigation-screen-navigation-menu/{delete-modal.js → delete-confirm-dialog.js} +3 -4
  417. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +11 -9
  418. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +0 -2
  419. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +6 -3
  420. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +1 -1
  421. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +1 -1
  422. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +1 -1
  423. package/src/components/sidebar-navigation-screen-template/index.js +7 -2
  424. package/src/components/sidebar-navigation-screen-templates-browse/content.js +5 -5
  425. package/src/components/sidebar-navigation-screen-templates-browse/index.js +5 -3
  426. package/src/components/start-template-options/index.js +1 -1
  427. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +1 -1
  428. package/src/components/sync-state-with-url/use-sync-path-with-url.js +3 -19
  429. package/src/components/template-actions/index.js +63 -46
  430. package/src/components/welcome-guide/editor.js +9 -6
  431. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +173 -0
  432. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +85 -1
  433. package/src/style.scss +2 -3
  434. package/src/utils/constants.js +4 -2
  435. package/src/utils/get-is-list-page.js +1 -1
  436. package/src/utils/math.js +93 -0
  437. package/build/components/global-styles/font-library-modal/collection-font-details.js +0 -50
  438. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  439. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -30
  440. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  441. package/build/components/global-styles/font-library-modal/library-font-card.js +0 -39
  442. package/build/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  443. package/build/components/global-styles/font-library-modal/tab-panel-layout.js +0 -67
  444. package/build/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  445. package/build/components/global-styles/preview.js +0 -271
  446. package/build/components/global-styles/preview.js.map +0 -1
  447. package/build/components/global-styles/typogrphy-elements.js.map +0 -1
  448. package/build/components/global-styles/variations-panel.js.map +0 -1
  449. package/build/components/list/added-by.js.map +0 -1
  450. package/build/components/list/header.js +0 -55
  451. package/build/components/list/header.js.map +0 -1
  452. package/build/components/list/index.js +0 -80
  453. package/build/components/list/index.js.map +0 -1
  454. package/build/components/list/table.js +0 -94
  455. package/build/components/list/table.js.map +0 -1
  456. package/build/components/list/use-register-shortcuts.js +0 -51
  457. package/build/components/list/use-register-shortcuts.js.map +0 -1
  458. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +0 -50
  459. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  460. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +0 -36
  461. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  462. package/build/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  463. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -36
  464. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  465. package/build/components/sidebar-navigation-screen-templates/index.js +0 -132
  466. package/build/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  467. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +0 -42
  468. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +0 -1
  469. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -23
  470. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +0 -1
  471. package/build-module/components/global-styles/font-library-modal/library-font-card.js +0 -31
  472. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +0 -1
  473. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js +0 -60
  474. package/build-module/components/global-styles/font-library-modal/tab-panel-layout.js.map +0 -1
  475. package/build-module/components/global-styles/preview.js +0 -264
  476. package/build-module/components/global-styles/preview.js.map +0 -1
  477. package/build-module/components/global-styles/typogrphy-elements.js.map +0 -1
  478. package/build-module/components/global-styles/variations-panel.js.map +0 -1
  479. package/build-module/components/list/added-by.js.map +0 -1
  480. package/build-module/components/list/header.js +0 -47
  481. package/build-module/components/list/header.js.map +0 -1
  482. package/build-module/components/list/index.js +0 -72
  483. package/build-module/components/list/index.js.map +0 -1
  484. package/build-module/components/list/table.js +0 -86
  485. package/build-module/components/list/table.js.map +0 -1
  486. package/build-module/components/list/use-register-shortcuts.js +0 -45
  487. package/build-module/components/list/use-register-shortcuts.js.map +0 -1
  488. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +0 -42
  489. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +0 -1
  490. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +0 -29
  491. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +0 -1
  492. package/build-module/components/sidebar-navigation-screen-navigation-menu/delete-modal.js.map +0 -1
  493. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -27
  494. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +0 -1
  495. package/build-module/components/sidebar-navigation-screen-templates/index.js +0 -124
  496. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +0 -1
  497. package/src/components/global-styles/font-library-modal/collection-font-details.js +0 -56
  498. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +0 -33
  499. package/src/components/global-styles/font-library-modal/library-font-card.js +0 -34
  500. package/src/components/global-styles/font-library-modal/tab-panel-layout.js +0 -85
  501. package/src/components/global-styles/preview.js +0 -327
  502. package/src/components/list/header.js +0 -48
  503. package/src/components/list/index.js +0 -87
  504. package/src/components/list/style.scss +0 -188
  505. package/src/components/list/table.js +0 -140
  506. package/src/components/list/use-register-shortcuts.js +0 -49
  507. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +0 -49
  508. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +0 -34
  509. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +0 -22
  510. package/src/components/sidebar-navigation-screen-templates/index.js +0 -156
  511. package/src/components/sidebar-navigation-screen-templates/style.scss +0 -9
@@ -17,13 +17,15 @@ import { unlock } from '../../lock-unlock';
17
17
  import DataviewsTemplatesSidebarContent from './content';
18
18
  const config = {
19
19
  [TEMPLATE_POST_TYPE]: {
20
- title: __('All templates'),
21
- description: __('Create new templates, or reset any customizations made to the templates supplied by your theme.')
20
+ title: __('Manage templates'),
21
+ description: __('Create new templates, or reset any customizations made to the templates supplied by your theme.'),
22
+ contentTitle: __('All templates')
22
23
  },
23
24
  [TEMPLATE_PART_POST_TYPE]: {
24
- title: __('All template parts'),
25
+ title: __('Manage template parts'),
25
26
  description: __('Create new template parts, or reset any customizations made to the template parts supplied by your theme.'),
26
- backPath: '/patterns'
27
+ backPath: '/patterns',
28
+ contentTitle: __('All template parts')
27
29
  }
28
30
  };
29
31
  const {
@@ -55,7 +57,7 @@ export default function SidebarNavigationScreenTemplatesBrowse() {
55
57
  content: createElement(DataviewsTemplatesSidebarContent, {
56
58
  activeView: activeView,
57
59
  postType: postType,
58
- config: config
60
+ title: config[postType].contentTitle
59
61
  })
60
62
  });
61
63
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__","useSelect","__experimentalUseNavigator","useNavigator","privateApis","routerPrivateApis","SidebarNavigationScreen","store","editSiteStore","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","unlock","DataviewsTemplatesSidebarContent","config","title","description","backPath","useLocation","SidebarNavigationScreenTemplatesBrowse","params","postType","didAccessPatternsPage","activeView","isTemplatePartsMode","select","getSettings","supportsTemplatePartsMode","createElement","isRoot","content"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-templates-browse/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\nimport { __experimentalUseNavigator as useNavigator } from '@wordpress/components';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport { store as editSiteStore } from '../../store';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport DataviewsTemplatesSidebarContent from './content';\n\nconst config = {\n\t[ TEMPLATE_POST_TYPE ]: {\n\t\ttitle: __( 'All templates' ),\n\t\tdescription: __(\n\t\t\t'Create new templates, or reset any customizations made to the templates supplied by your theme.'\n\t\t),\n\t},\n\t[ TEMPLATE_PART_POST_TYPE ]: {\n\t\ttitle: __( 'All template parts' ),\n\t\tdescription: __(\n\t\t\t'Create new template parts, or reset any customizations made to the template parts supplied by your theme.'\n\t\t),\n\t\tbackPath: '/patterns',\n\t},\n};\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport default function SidebarNavigationScreenTemplatesBrowse() {\n\tconst {\n\t\tparams: { postType },\n\t} = useNavigator();\n\tconst {\n\t\tparams: { didAccessPatternsPage, activeView = 'all' },\n\t} = useLocation();\n\n\tconst isTemplatePartsMode = useSelect( ( select ) => {\n\t\treturn !! select( editSiteStore ).getSettings()\n\t\t\t.supportsTemplatePartsMode;\n\t}, [] );\n\n\treturn (\n\t\t<SidebarNavigationScreen\n\t\t\t// If a classic theme that supports template parts has never\n\t\t\t// accessed the Patterns page, return to the dashboard.\n\t\t\tisRoot={ isTemplatePartsMode && ! didAccessPatternsPage }\n\t\t\ttitle={ config[ postType ].title }\n\t\t\tdescription={ config[ postType ].description }\n\t\t\tbackPath={ config[ postType ].backPath }\n\t\t\tcontent={\n\t\t\t\t<DataviewsTemplatesSidebarContent\n\t\t\t\t\tactiveView={ activeView }\n\t\t\t\t\tpostType={ postType }\n\t\t\t\t\tconfig={ config }\n\t\t\t\t/>\n\t\t\t}\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,iBAAiB;AAE3C,SAASC,0BAA0B,IAAIC,YAAY,QAAQ,uBAAuB;AAClF,SAASC,WAAW,IAAIC,iBAAiB,QAAQ,mBAAmB;;AAEpE;AACA;AACA;AACA,OAAOC,uBAAuB,MAAM,8BAA8B;AAClE,SAASC,KAAK,IAAIC,aAAa,QAAQ,aAAa;AACpD,SACCC,kBAAkB,EAClBC,uBAAuB,QACjB,uBAAuB;AAC9B,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,gCAAgC,MAAM,WAAW;AAExD,MAAMC,MAAM,GAAG;EACd,CAAEJ,kBAAkB,GAAI;IACvBK,KAAK,EAAEd,EAAE,CAAE,eAAgB,CAAC;IAC5Be,WAAW,EAAEf,EAAE,CACd,iGACD;EACD,CAAC;EACD,CAAEU,uBAAuB,GAAI;IAC5BI,KAAK,EAAEd,EAAE,CAAE,oBAAqB,CAAC;IACjCe,WAAW,EAAEf,EAAE,CACd,2GACD,CAAC;IACDgB,QAAQ,EAAE;EACX;AACD,CAAC;AAED,MAAM;EAAEC;AAAY,CAAC,GAAGN,MAAM,CAAEN,iBAAkB,CAAC;AAEnD,eAAe,SAASa,sCAAsCA,CAAA,EAAG;EAChE,MAAM;IACLC,MAAM,EAAE;MAAEC;IAAS;EACpB,CAAC,GAAGjB,YAAY,CAAC,CAAC;EAClB,MAAM;IACLgB,MAAM,EAAE;MAAEE,qBAAqB;MAAEC,UAAU,GAAG;IAAM;EACrD,CAAC,GAAGL,WAAW,CAAC,CAAC;EAEjB,MAAMM,mBAAmB,GAAGtB,SAAS,CAAIuB,MAAM,IAAM;IACpD,OAAO,CAAC,CAAEA,MAAM,CAAEhB,aAAc,CAAC,CAACiB,WAAW,CAAC,CAAC,CAC7CC,yBAAyB;EAC5B,CAAC,EAAE,EAAG,CAAC;EAEP,OACCC,aAAA,CAACrB;EACA;EACA;EAAA;IACAsB,MAAM,EAAGL,mBAAmB,IAAI,CAAEF,qBAAuB;IACzDP,KAAK,EAAGD,MAAM,CAAEO,QAAQ,CAAE,CAACN,KAAO;IAClCC,WAAW,EAAGF,MAAM,CAAEO,QAAQ,CAAE,CAACL,WAAa;IAC9CC,QAAQ,EAAGH,MAAM,CAAEO,QAAQ,CAAE,CAACJ,QAAU;IACxCa,OAAO,EACNF,aAAA,CAACf,gCAAgC;MAChCU,UAAU,EAAGA,UAAY;MACzBF,QAAQ,EAAGA,QAAU;MACrBP,MAAM,EAAGA;IAAQ,CACjB;EACD,CACD,CAAC;AAEJ"}
1
+ {"version":3,"names":["__","useSelect","__experimentalUseNavigator","useNavigator","privateApis","routerPrivateApis","SidebarNavigationScreen","store","editSiteStore","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","unlock","DataviewsTemplatesSidebarContent","config","title","description","contentTitle","backPath","useLocation","SidebarNavigationScreenTemplatesBrowse","params","postType","didAccessPatternsPage","activeView","isTemplatePartsMode","select","getSettings","supportsTemplatePartsMode","createElement","isRoot","content"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-templates-browse/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\nimport { __experimentalUseNavigator as useNavigator } from '@wordpress/components';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport { store as editSiteStore } from '../../store';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport DataviewsTemplatesSidebarContent from './content';\n\nconst config = {\n\t[ TEMPLATE_POST_TYPE ]: {\n\t\ttitle: __( 'Manage templates' ),\n\t\tdescription: __(\n\t\t\t'Create new templates, or reset any customizations made to the templates supplied by your theme.'\n\t\t),\n\t\tcontentTitle: __( 'All templates' ),\n\t},\n\t[ TEMPLATE_PART_POST_TYPE ]: {\n\t\ttitle: __( 'Manage template parts' ),\n\t\tdescription: __(\n\t\t\t'Create new template parts, or reset any customizations made to the template parts supplied by your theme.'\n\t\t),\n\t\tbackPath: '/patterns',\n\t\tcontentTitle: __( 'All template parts' ),\n\t},\n};\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport default function SidebarNavigationScreenTemplatesBrowse() {\n\tconst {\n\t\tparams: { postType },\n\t} = useNavigator();\n\tconst {\n\t\tparams: { didAccessPatternsPage, activeView = 'all' },\n\t} = useLocation();\n\n\tconst isTemplatePartsMode = useSelect( ( select ) => {\n\t\treturn !! select( editSiteStore ).getSettings()\n\t\t\t.supportsTemplatePartsMode;\n\t}, [] );\n\n\treturn (\n\t\t<SidebarNavigationScreen\n\t\t\t// If a classic theme that supports template parts has never\n\t\t\t// accessed the Patterns page, return to the dashboard.\n\t\t\tisRoot={ isTemplatePartsMode && ! didAccessPatternsPage }\n\t\t\ttitle={ config[ postType ].title }\n\t\t\tdescription={ config[ postType ].description }\n\t\t\tbackPath={ config[ postType ].backPath }\n\t\t\tcontent={\n\t\t\t\t<DataviewsTemplatesSidebarContent\n\t\t\t\t\tactiveView={ activeView }\n\t\t\t\t\tpostType={ postType }\n\t\t\t\t\ttitle={ config[ postType ].contentTitle }\n\t\t\t\t/>\n\t\t\t}\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,iBAAiB;AAE3C,SAASC,0BAA0B,IAAIC,YAAY,QAAQ,uBAAuB;AAClF,SAASC,WAAW,IAAIC,iBAAiB,QAAQ,mBAAmB;;AAEpE;AACA;AACA;AACA,OAAOC,uBAAuB,MAAM,8BAA8B;AAClE,SAASC,KAAK,IAAIC,aAAa,QAAQ,aAAa;AACpD,SACCC,kBAAkB,EAClBC,uBAAuB,QACjB,uBAAuB;AAC9B,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,gCAAgC,MAAM,WAAW;AAExD,MAAMC,MAAM,GAAG;EACd,CAAEJ,kBAAkB,GAAI;IACvBK,KAAK,EAAEd,EAAE,CAAE,kBAAmB,CAAC;IAC/Be,WAAW,EAAEf,EAAE,CACd,iGACD,CAAC;IACDgB,YAAY,EAAEhB,EAAE,CAAE,eAAgB;EACnC,CAAC;EACD,CAAEU,uBAAuB,GAAI;IAC5BI,KAAK,EAAEd,EAAE,CAAE,uBAAwB,CAAC;IACpCe,WAAW,EAAEf,EAAE,CACd,2GACD,CAAC;IACDiB,QAAQ,EAAE,WAAW;IACrBD,YAAY,EAAEhB,EAAE,CAAE,oBAAqB;EACxC;AACD,CAAC;AAED,MAAM;EAAEkB;AAAY,CAAC,GAAGP,MAAM,CAAEN,iBAAkB,CAAC;AAEnD,eAAe,SAASc,sCAAsCA,CAAA,EAAG;EAChE,MAAM;IACLC,MAAM,EAAE;MAAEC;IAAS;EACpB,CAAC,GAAGlB,YAAY,CAAC,CAAC;EAClB,MAAM;IACLiB,MAAM,EAAE;MAAEE,qBAAqB;MAAEC,UAAU,GAAG;IAAM;EACrD,CAAC,GAAGL,WAAW,CAAC,CAAC;EAEjB,MAAMM,mBAAmB,GAAGvB,SAAS,CAAIwB,MAAM,IAAM;IACpD,OAAO,CAAC,CAAEA,MAAM,CAAEjB,aAAc,CAAC,CAACkB,WAAW,CAAC,CAAC,CAC7CC,yBAAyB;EAC5B,CAAC,EAAE,EAAG,CAAC;EAEP,OACCC,aAAA,CAACtB;EACA;EACA;EAAA;IACAuB,MAAM,EAAGL,mBAAmB,IAAI,CAAEF,qBAAuB;IACzDR,KAAK,EAAGD,MAAM,CAAEQ,QAAQ,CAAE,CAACP,KAAO;IAClCC,WAAW,EAAGF,MAAM,CAAEQ,QAAQ,CAAE,CAACN,WAAa;IAC9CE,QAAQ,EAAGJ,MAAM,CAAEQ,QAAQ,CAAE,CAACJ,QAAU;IACxCa,OAAO,EACNF,aAAA,CAAChB,gCAAgC;MAChCW,UAAU,EAAGA,UAAY;MACzBF,QAAQ,EAAGA,QAAU;MACrBP,KAAK,EAAGD,MAAM,CAAEQ,QAAQ,CAAE,CAACL;IAAc,CACzC;EACD,CACD,CAAC;AAEJ"}
@@ -1 +1 @@
1
- {"version":3,"names":["Modal","Flex","FlexItem","Button","__","useState","useMemo","__experimentalBlockPatternsList","BlockPatternsList","useSelect","useAsyncList","store","preferencesStore","parse","coreStore","useEntityBlockEditor","editSiteStore","TEMPLATE_POST_TYPE","useFallbackTemplateContent","slug","isCustom","select","getEntityRecord","getDefaultTemplateId","templateId","is_custom","ignore_empty","content","raw","undefined","useStartPatterns","fallbackContent","patterns","getEditedPostType","getEditedPostId","getBlockPatterns","postId","postType","record","currentThemeStylesheet","getCurrentTheme","stylesheet","injectThemeAttributeInBlockTemplateContent","block","innerBlocks","find","innerBlock","name","map","attributes","theme","blocks","title","filter","pattern","Array","isArray","templateTypes","some","templateType","startsWith","PatternSelection","onChoosePattern","onChange","blockPatterns","shownBlockPatterns","createElement","shownPatterns","onClickPattern","selection","StartModal","onClose","className","closeLabel","focusOnMount","onRequestClose","isFullScreen","justify","expanded","variant","onClick","START_TEMPLATE_MODAL_STATES","INITIAL","CLOSED","StartTemplateOptions","modalState","setModalState","shouldOpenModal","_postType","getEditedEntityRecord","hasEditsForEntityRecord","templateRecord","hasEdits","get"],"sources":["@wordpress/edit-site/src/components/start-template-options/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Modal, Flex, FlexItem, Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo } from '@wordpress/element';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { parse } from '@wordpress/blocks';\nimport { store as coreStore, useEntityBlockEditor } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nfunction useFallbackTemplateContent( slug, isCustom = false ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getDefaultTemplateId } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst templateId = getDefaultTemplateId( {\n\t\t\t\tslug,\n\t\t\t\tis_custom: isCustom,\n\t\t\t\tignore_empty: true,\n\t\t\t} );\n\t\t\treturn templateId\n\t\t\t\t? getEntityRecord( 'postType', TEMPLATE_POST_TYPE, templateId )\n\t\t\t\t\t\t?.content?.raw\n\t\t\t\t: undefined;\n\t\t},\n\t\t[ slug, isCustom ]\n\t);\n}\n\nfunction useStartPatterns( fallbackContent ) {\n\tconst { slug, patterns } = useSelect( ( select ) => {\n\t\tconst { getEditedPostType, getEditedPostId } = select( editSiteStore );\n\t\tconst { getEntityRecord, getBlockPatterns } = select( coreStore );\n\t\tconst postId = getEditedPostId();\n\t\tconst postType = getEditedPostType();\n\t\tconst record = getEntityRecord( 'postType', postType, postId );\n\t\treturn {\n\t\t\tslug: record.slug,\n\t\t\tpatterns: getBlockPatterns(),\n\t\t};\n\t}, [] );\n\n\tconst currentThemeStylesheet = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme().stylesheet\n\t);\n\n\t// Duplicated from packages/block-library/src/pattern/edit.js.\n\tfunction injectThemeAttributeInBlockTemplateContent( block ) {\n\t\tif (\n\t\t\tblock.innerBlocks.find(\n\t\t\t\t( innerBlock ) => innerBlock.name === 'core/template-part'\n\t\t\t)\n\t\t) {\n\t\t\tblock.innerBlocks = block.innerBlocks.map( ( innerBlock ) => {\n\t\t\t\tif (\n\t\t\t\t\tinnerBlock.name === 'core/template-part' &&\n\t\t\t\t\tinnerBlock.attributes.theme === undefined\n\t\t\t\t) {\n\t\t\t\t\tinnerBlock.attributes.theme = currentThemeStylesheet;\n\t\t\t\t}\n\t\t\t\treturn innerBlock;\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tblock.name === 'core/template-part' &&\n\t\t\tblock.attributes.theme === undefined\n\t\t) {\n\t\t\tblock.attributes.theme = currentThemeStylesheet;\n\t\t}\n\t\treturn block;\n\t}\n\n\treturn useMemo( () => {\n\t\t// filter patterns that are supposed to be used in the current template being edited.\n\t\treturn [\n\t\t\t{\n\t\t\t\tname: 'fallback',\n\t\t\t\tblocks: parse( fallbackContent ),\n\t\t\t\ttitle: __( 'Fallback content' ),\n\t\t\t},\n\t\t\t...patterns\n\t\t\t\t.filter( ( pattern ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tArray.isArray( pattern.templateTypes ) &&\n\t\t\t\t\t\tpattern.templateTypes.some( ( templateType ) =>\n\t\t\t\t\t\t\tslug.startsWith( templateType )\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} )\n\t\t\t\t.map( ( pattern ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...pattern,\n\t\t\t\t\t\tblocks: parse( pattern.content ).map( ( block ) =>\n\t\t\t\t\t\t\tinjectThemeAttributeInBlockTemplateContent( block )\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t} ),\n\t\t];\n\t}, [ fallbackContent, slug, patterns ] );\n}\n\nfunction PatternSelection( { fallbackContent, onChoosePattern, postType } ) {\n\tconst [ , , onChange ] = useEntityBlockEditor( 'postType', postType );\n\tconst blockPatterns = useStartPatterns( fallbackContent );\n\tconst shownBlockPatterns = useAsyncList( blockPatterns );\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tblockPatterns={ blockPatterns }\n\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\tonChange( blocks, { selection: undefined } );\n\t\t\t\tonChoosePattern();\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction StartModal( { slug, isCustom, onClose, postType } ) {\n\tconst fallbackContent = useFallbackTemplateContent( slug, isCustom );\n\tif ( ! fallbackContent ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-site-start-template-options__modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\tfocusOnMount=\"firstElement\"\n\t\t\tonRequestClose={ onClose }\n\t\t\tisFullScreen={ true }\n\t\t>\n\t\t\t<div className=\"edit-site-start-template-options__modal-content\">\n\t\t\t\t<PatternSelection\n\t\t\t\t\tfallbackContent={ fallbackContent }\n\t\t\t\t\tslug={ slug }\n\t\t\t\t\tisCustom={ isCustom }\n\t\t\t\t\tpostType={ postType }\n\t\t\t\t\tonChoosePattern={ () => {\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Flex\n\t\t\t\tclassName=\"edit-site-start-template-options__modal__actions\"\n\t\t\t\tjustify=\"flex-end\"\n\t\t\t\texpanded={ false }\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t{ __( 'Skip' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</Modal>\n\t);\n}\n\nconst START_TEMPLATE_MODAL_STATES = {\n\tINITIAL: 'INITIAL',\n\tCLOSED: 'CLOSED',\n};\n\nexport default function StartTemplateOptions() {\n\tconst [ modalState, setModalState ] = useState(\n\t\tSTART_TEMPLATE_MODAL_STATES.INITIAL\n\t);\n\tconst { shouldOpenModal, slug, isCustom, postType } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedPostType, getEditedPostId } =\n\t\t\t\tselect( editSiteStore );\n\t\t\tconst _postType = getEditedPostType();\n\t\t\tconst postId = getEditedPostId();\n\t\t\tconst { getEditedEntityRecord, hasEditsForEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst templateRecord = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t_postType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\tconst hasEdits = hasEditsForEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t_postType,\n\t\t\t\tpostId\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tshouldOpenModal:\n\t\t\t\t\t! hasEdits &&\n\t\t\t\t\t'' === templateRecord.content &&\n\t\t\t\t\tTEMPLATE_POST_TYPE === _postType &&\n\t\t\t\t\t! select( preferencesStore ).get(\n\t\t\t\t\t\t'core/edit-site',\n\t\t\t\t\t\t'welcomeGuide'\n\t\t\t\t\t),\n\t\t\t\tslug: templateRecord.slug,\n\t\t\t\tisCustom: templateRecord.is_custom,\n\t\t\t\tpostType: _postType,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif (\n\t\t( modalState === START_TEMPLATE_MODAL_STATES.INITIAL &&\n\t\t\t! shouldOpenModal ) ||\n\t\tmodalState === START_TEMPLATE_MODAL_STATES.CLOSED\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StartModal\n\t\t\tslug={ slug }\n\t\t\tisCustom={ isCustom }\n\t\t\tpostType={ postType }\n\t\t\tonClose={ () =>\n\t\t\t\tsetModalState( START_TEMPLATE_MODAL_STATES.CLOSED )\n\t\t\t}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Modal","Flex","FlexItem","Button","__","useState","useMemo","__experimentalBlockPatternsList","BlockPatternsList","useSelect","useAsyncList","store","preferencesStore","parse","coreStore","useEntityBlockEditor","editSiteStore","TEMPLATE_POST_TYPE","useFallbackTemplateContent","slug","isCustom","select","getEntityRecord","getDefaultTemplateId","templateId","is_custom","ignore_empty","content","raw","undefined","useStartPatterns","fallbackContent","patterns","getEditedPostType","getEditedPostId","getBlockPatterns","postId","postType","record","currentThemeStylesheet","getCurrentTheme","stylesheet","injectThemeAttributeInBlockTemplateContent","block","innerBlocks","find","innerBlock","name","map","attributes","theme","blocks","title","filter","pattern","Array","isArray","templateTypes","some","templateType","startsWith","PatternSelection","onChoosePattern","onChange","blockPatterns","shownBlockPatterns","createElement","shownPatterns","onClickPattern","selection","StartModal","onClose","className","closeLabel","focusOnMount","onRequestClose","isFullScreen","justify","expanded","variant","onClick","START_TEMPLATE_MODAL_STATES","INITIAL","CLOSED","StartTemplateOptions","modalState","setModalState","shouldOpenModal","_postType","getEditedEntityRecord","hasEditsForEntityRecord","templateRecord","hasEdits","get"],"sources":["@wordpress/edit-site/src/components/start-template-options/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Modal, Flex, FlexItem, Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo } from '@wordpress/element';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { parse } from '@wordpress/blocks';\nimport { store as coreStore, useEntityBlockEditor } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nfunction useFallbackTemplateContent( slug, isCustom = false ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getDefaultTemplateId } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst templateId = getDefaultTemplateId( {\n\t\t\t\tslug,\n\t\t\t\tis_custom: isCustom,\n\t\t\t\tignore_empty: true,\n\t\t\t} );\n\t\t\treturn templateId\n\t\t\t\t? getEntityRecord( 'postType', TEMPLATE_POST_TYPE, templateId )\n\t\t\t\t\t\t?.content?.raw\n\t\t\t\t: undefined;\n\t\t},\n\t\t[ slug, isCustom ]\n\t);\n}\n\nfunction useStartPatterns( fallbackContent ) {\n\tconst { slug, patterns } = useSelect( ( select ) => {\n\t\tconst { getEditedPostType, getEditedPostId } = select( editSiteStore );\n\t\tconst { getEntityRecord, getBlockPatterns } = select( coreStore );\n\t\tconst postId = getEditedPostId();\n\t\tconst postType = getEditedPostType();\n\t\tconst record = getEntityRecord( 'postType', postType, postId );\n\t\treturn {\n\t\t\tslug: record.slug,\n\t\t\tpatterns: getBlockPatterns(),\n\t\t};\n\t}, [] );\n\n\tconst currentThemeStylesheet = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme().stylesheet\n\t);\n\n\t// Duplicated from packages/block-library/src/pattern/edit.js.\n\tfunction injectThemeAttributeInBlockTemplateContent( block ) {\n\t\tif (\n\t\t\tblock.innerBlocks.find(\n\t\t\t\t( innerBlock ) => innerBlock.name === 'core/template-part'\n\t\t\t)\n\t\t) {\n\t\t\tblock.innerBlocks = block.innerBlocks.map( ( innerBlock ) => {\n\t\t\t\tif (\n\t\t\t\t\tinnerBlock.name === 'core/template-part' &&\n\t\t\t\t\tinnerBlock.attributes.theme === undefined\n\t\t\t\t) {\n\t\t\t\t\tinnerBlock.attributes.theme = currentThemeStylesheet;\n\t\t\t\t}\n\t\t\t\treturn innerBlock;\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tblock.name === 'core/template-part' &&\n\t\t\tblock.attributes.theme === undefined\n\t\t) {\n\t\t\tblock.attributes.theme = currentThemeStylesheet;\n\t\t}\n\t\treturn block;\n\t}\n\n\treturn useMemo( () => {\n\t\t// filter patterns that are supposed to be used in the current template being edited.\n\t\treturn [\n\t\t\t{\n\t\t\t\tname: 'fallback',\n\t\t\t\tblocks: parse( fallbackContent ),\n\t\t\t\ttitle: __( 'Fallback content' ),\n\t\t\t},\n\t\t\t...patterns\n\t\t\t\t.filter( ( pattern ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tArray.isArray( pattern.templateTypes ) &&\n\t\t\t\t\t\tpattern.templateTypes.some( ( templateType ) =>\n\t\t\t\t\t\t\tslug.startsWith( templateType )\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} )\n\t\t\t\t.map( ( pattern ) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...pattern,\n\t\t\t\t\t\tblocks: parse( pattern.content ).map( ( block ) =>\n\t\t\t\t\t\t\tinjectThemeAttributeInBlockTemplateContent( block )\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t} ),\n\t\t];\n\t}, [ fallbackContent, slug, patterns ] );\n}\n\nfunction PatternSelection( { fallbackContent, onChoosePattern, postType } ) {\n\tconst [ , , onChange ] = useEntityBlockEditor( 'postType', postType );\n\tconst blockPatterns = useStartPatterns( fallbackContent );\n\tconst shownBlockPatterns = useAsyncList( blockPatterns );\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tblockPatterns={ blockPatterns }\n\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\tonChange( blocks, { selection: undefined } );\n\t\t\t\tonChoosePattern();\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction StartModal( { slug, isCustom, onClose, postType } ) {\n\tconst fallbackContent = useFallbackTemplateContent( slug, isCustom );\n\tif ( ! fallbackContent ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-site-start-template-options__modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\tfocusOnMount=\"firstElement\"\n\t\t\tonRequestClose={ onClose }\n\t\t\tisFullScreen\n\t\t>\n\t\t\t<div className=\"edit-site-start-template-options__modal-content\">\n\t\t\t\t<PatternSelection\n\t\t\t\t\tfallbackContent={ fallbackContent }\n\t\t\t\t\tslug={ slug }\n\t\t\t\t\tisCustom={ isCustom }\n\t\t\t\t\tpostType={ postType }\n\t\t\t\t\tonChoosePattern={ () => {\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Flex\n\t\t\t\tclassName=\"edit-site-start-template-options__modal__actions\"\n\t\t\t\tjustify=\"flex-end\"\n\t\t\t\texpanded={ false }\n\t\t\t>\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t{ __( 'Skip' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</Modal>\n\t);\n}\n\nconst START_TEMPLATE_MODAL_STATES = {\n\tINITIAL: 'INITIAL',\n\tCLOSED: 'CLOSED',\n};\n\nexport default function StartTemplateOptions() {\n\tconst [ modalState, setModalState ] = useState(\n\t\tSTART_TEMPLATE_MODAL_STATES.INITIAL\n\t);\n\tconst { shouldOpenModal, slug, isCustom, postType } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedPostType, getEditedPostId } =\n\t\t\t\tselect( editSiteStore );\n\t\t\tconst _postType = getEditedPostType();\n\t\t\tconst postId = getEditedPostId();\n\t\t\tconst { getEditedEntityRecord, hasEditsForEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst templateRecord = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t_postType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\tconst hasEdits = hasEditsForEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t_postType,\n\t\t\t\tpostId\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tshouldOpenModal:\n\t\t\t\t\t! hasEdits &&\n\t\t\t\t\t'' === templateRecord.content &&\n\t\t\t\t\tTEMPLATE_POST_TYPE === _postType &&\n\t\t\t\t\t! select( preferencesStore ).get(\n\t\t\t\t\t\t'core/edit-site',\n\t\t\t\t\t\t'welcomeGuide'\n\t\t\t\t\t),\n\t\t\t\tslug: templateRecord.slug,\n\t\t\t\tisCustom: templateRecord.is_custom,\n\t\t\t\tpostType: _postType,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif (\n\t\t( modalState === START_TEMPLATE_MODAL_STATES.INITIAL &&\n\t\t\t! shouldOpenModal ) ||\n\t\tmodalState === START_TEMPLATE_MODAL_STATES.CLOSED\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StartModal\n\t\t\tslug={ slug }\n\t\t\tisCustom={ isCustom }\n\t\t\tpostType={ postType }\n\t\t\tonClose={ () =>\n\t\t\t\tsetModalState( START_TEMPLATE_MODAL_STATES.CLOSED )\n\t\t\t}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -162,7 +162,7 @@ function useResolveEditedEntityAndContext({
162
162
  }
163
163
  return {};
164
164
  }, [homepageId, postType, postId, path]);
165
- if (path === '/wp_template/all' && postId) {
165
+ if (path === '/wp_template' && postId) {
166
166
  return {
167
167
  isReady: true,
168
168
  postType: 'wp_template',
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","useSelect","useDispatch","store","coreDataStore","privateApis","routerPrivateApis","editSiteStore","unlock","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","NAVIGATION_POST_TYPE","PATTERN_TYPES","useLocation","postTypesWithoutParentTemplate","user","useResolveEditedEntityAndContext","path","postId","postType","hasLoadedAllDependencies","homepageId","url","frontPageTemplateId","select","getSite","getUnstableBase","getEntityRecords","siteData","base","templates","per_page","_frontPateTemplateId","frontPageTemplate","find","t","slug","id","show_on_front","includes","page_on_front","toString","home","resolvedTemplateId","undefined","getEditedEntityRecord","getDefaultTemplateId","__experimentalGetTemplateForLink","resolveTemplateForPostTypeAndId","postTypeToResolve","postIdToResolve","editedEntity","currentTemplateSlug","template","currentTemplate","slugToCheck","context","isReady","useInitEditedEntityFromURL","params","setEditedEntity"],"sources":["@wordpress/edit-site/src/components/sync-state-with-url/use-init-edited-entity-from-url.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst postTypesWithoutParentTemplate = [\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n\tPATTERN_TYPES.user,\n];\n\nfunction useResolveEditedEntityAndContext( { path, postId, postType } ) {\n\tconst { hasLoadedAllDependencies, homepageId, url, frontPageTemplateId } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getSite, getUnstableBase, getEntityRecords } =\n\t\t\t\tselect( coreDataStore );\n\t\t\tconst siteData = getSite();\n\t\t\tconst base = getUnstableBase();\n\t\t\tconst templates = getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t);\n\t\t\tlet _frontPateTemplateId;\n\t\t\tif ( templates ) {\n\t\t\t\tconst frontPageTemplate = templates.find(\n\t\t\t\t\t( t ) => t.slug === 'front-page'\n\t\t\t\t);\n\t\t\t\t_frontPateTemplateId = frontPageTemplate\n\t\t\t\t\t? frontPageTemplate.id\n\t\t\t\t\t: false;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\thasLoadedAllDependencies: !! base && !! siteData,\n\t\t\t\thomepageId:\n\t\t\t\t\tsiteData?.show_on_front === 'page' &&\n\t\t\t\t\t[ 'number', 'string' ].includes(\n\t\t\t\t\t\ttypeof siteData.page_on_front\n\t\t\t\t\t)\n\t\t\t\t\t\t? siteData.page_on_front.toString()\n\t\t\t\t\t\t: null,\n\t\t\t\turl: base?.home,\n\t\t\t\tfrontPageTemplateId: _frontPateTemplateId,\n\t\t\t};\n\t\t}, [] );\n\n\t/**\n\t * This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId\n\t * in order to match the frontend as closely as possible in the site editor.\n\t *\n\t * It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.\n\t */\n\tconst resolvedTemplateId = useSelect(\n\t\t( select ) => {\n\t\t\t// If we're rendering a post type that doesn't have a template\n\t\t\t// no need to resolve its template.\n\t\t\tif ( postTypesWithoutParentTemplate.includes( postType ) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\tgetEntityRecords,\n\t\t\t\tgetDefaultTemplateId,\n\t\t\t\t__experimentalGetTemplateForLink,\n\t\t\t} = select( coreDataStore );\n\n\t\t\tfunction resolveTemplateForPostTypeAndId(\n\t\t\t\tpostTypeToResolve,\n\t\t\t\tpostIdToResolve\n\t\t\t) {\n\t\t\t\t// For the front page, we always use the front page template if existing.\n\t\t\t\tif (\n\t\t\t\t\tpostTypeToResolve === 'page' &&\n\t\t\t\t\thomepageId === postIdToResolve\n\t\t\t\t) {\n\t\t\t\t\t// We're still checking whether the front page template exists.\n\t\t\t\t\t// Don't resolve the template yet.\n\t\t\t\t\tif ( frontPageTemplateId === undefined ) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !! frontPageTemplateId ) {\n\t\t\t\t\t\treturn frontPageTemplateId;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst editedEntity = getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostTypeToResolve,\n\t\t\t\t\tpostIdToResolve\n\t\t\t\t);\n\t\t\t\tif ( ! editedEntity ) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\t// First see if the post/page has an assigned template and fetch it.\n\t\t\t\tconst currentTemplateSlug = editedEntity.template;\n\t\t\t\tif ( currentTemplateSlug ) {\n\t\t\t\t\tconst currentTemplate = getEntityRecords(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t\t}\n\t\t\t\t\t)?.find( ( { slug } ) => slug === currentTemplateSlug );\n\t\t\t\t\tif ( currentTemplate ) {\n\t\t\t\t\t\treturn currentTemplate.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If no template is assigned, use the default template.\n\t\t\t\tlet slugToCheck;\n\t\t\t\t// In `draft` status we might not have a slug available, so we use the `single`\n\t\t\t\t// post type templates slug(ex page, single-post, single-product etc..).\n\t\t\t\t// Pages do not need the `single` prefix in the slug to be prioritized\n\t\t\t\t// through template hierarchy.\n\t\t\t\tif ( editedEntity.slug ) {\n\t\t\t\t\tslugToCheck =\n\t\t\t\t\t\tpostTypeToResolve === 'page'\n\t\t\t\t\t\t\t? `${ postTypeToResolve }-${ editedEntity.slug }`\n\t\t\t\t\t\t\t: `single-${ postTypeToResolve }-${ editedEntity.slug }`;\n\t\t\t\t} else {\n\t\t\t\t\tslugToCheck =\n\t\t\t\t\t\tpostTypeToResolve === 'page'\n\t\t\t\t\t\t\t? 'page'\n\t\t\t\t\t\t\t: `single-${ postTypeToResolve }`;\n\t\t\t\t}\n\t\t\t\treturn getDefaultTemplateId( {\n\t\t\t\t\tslug: slugToCheck,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( ! hasLoadedAllDependencies ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// If we're rendering a specific page, post... we need to resolve its template.\n\t\t\tif ( postType && postId ) {\n\t\t\t\treturn resolveTemplateForPostTypeAndId( postType, postId );\n\t\t\t}\n\n\t\t\t// Some URLs in list views are different\n\t\t\tif ( path === '/pages' && postId ) {\n\t\t\t\treturn resolveTemplateForPostTypeAndId( 'page', postId );\n\t\t\t}\n\n\t\t\t// If we're rendering the home page, and we have a static home page, resolve its template.\n\t\t\tif ( homepageId ) {\n\t\t\t\treturn resolveTemplateForPostTypeAndId( 'page', homepageId );\n\t\t\t}\n\n\t\t\t// If we're not rendering a specific page, use the front page template.\n\t\t\tif ( url ) {\n\t\t\t\tconst template = __experimentalGetTemplateForLink( url );\n\t\t\t\treturn template?.id;\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\thomepageId,\n\t\t\thasLoadedAllDependencies,\n\t\t\turl,\n\t\t\tpostId,\n\t\t\tpostType,\n\t\t\tpath,\n\t\t\tfrontPageTemplateId,\n\t\t]\n\t);\n\n\tconst context = useMemo( () => {\n\t\tif ( postTypesWithoutParentTemplate.includes( postType ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tif ( postType && postId ) {\n\t\t\treturn { postType, postId };\n\t\t}\n\n\t\t// Some URLs in list views are different\n\t\tif ( path === '/pages' && postId ) {\n\t\t\treturn { postType: 'page', postId };\n\t\t}\n\n\t\tif ( homepageId ) {\n\t\t\treturn { postType: 'page', postId: homepageId };\n\t\t}\n\n\t\treturn {};\n\t}, [ homepageId, postType, postId, path ] );\n\n\tif ( path === '/wp_template/all' && postId ) {\n\t\treturn { isReady: true, postType: 'wp_template', postId, context };\n\t}\n\n\tif ( path === '/wp_template_part/all' && postId ) {\n\t\treturn { isReady: true, postType: 'wp_template_part', postId, context };\n\t}\n\n\tif ( postTypesWithoutParentTemplate.includes( postType ) ) {\n\t\treturn { isReady: true, postType, postId, context };\n\t}\n\n\tif ( hasLoadedAllDependencies ) {\n\t\treturn {\n\t\t\tisReady: resolvedTemplateId !== undefined,\n\t\t\tpostType: TEMPLATE_POST_TYPE,\n\t\t\tpostId: resolvedTemplateId,\n\t\t\tcontext,\n\t\t};\n\t}\n\n\treturn { isReady: false };\n}\n\nexport default function useInitEditedEntityFromURL() {\n\tconst { params = {} } = useLocation();\n\tconst { postType, postId, context, isReady } =\n\t\tuseResolveEditedEntityAndContext( params );\n\n\tconst { setEditedEntity } = useDispatch( editSiteStore );\n\n\tuseEffect( () => {\n\t\tif ( isReady ) {\n\t\t\tsetEditedEntity( postType, postId, context );\n\t\t}\n\t}, [ isReady, postType, postId, context, setEditedEntity ] );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useEffect","useMemo","useSelect","useDispatch","store","coreDataStore","privateApis","routerPrivateApis","editSiteStore","unlock","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","NAVIGATION_POST_TYPE","PATTERN_TYPES","useLocation","postTypesWithoutParentTemplate","user","useResolveEditedEntityAndContext","path","postId","postType","hasLoadedAllDependencies","homepageId","url","frontPageTemplateId","select","getSite","getUnstableBase","getEntityRecords","siteData","base","templates","per_page","_frontPateTemplateId","frontPageTemplate","find","t","slug","id","show_on_front","includes","page_on_front","toString","home","resolvedTemplateId","undefined","getEditedEntityRecord","getDefaultTemplateId","__experimentalGetTemplateForLink","resolveTemplateForPostTypeAndId","postTypeToResolve","postIdToResolve","editedEntity","currentTemplateSlug","template","currentTemplate","slugToCheck","context","isReady","useInitEditedEntityFromURL","params","setEditedEntity"],"sources":["@wordpress/edit-site/src/components/sync-state-with-url/use-init-edited-entity-from-url.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst postTypesWithoutParentTemplate = [\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n\tPATTERN_TYPES.user,\n];\n\nfunction useResolveEditedEntityAndContext( { path, postId, postType } ) {\n\tconst { hasLoadedAllDependencies, homepageId, url, frontPageTemplateId } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getSite, getUnstableBase, getEntityRecords } =\n\t\t\t\tselect( coreDataStore );\n\t\t\tconst siteData = getSite();\n\t\t\tconst base = getUnstableBase();\n\t\t\tconst templates = getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t);\n\t\t\tlet _frontPateTemplateId;\n\t\t\tif ( templates ) {\n\t\t\t\tconst frontPageTemplate = templates.find(\n\t\t\t\t\t( t ) => t.slug === 'front-page'\n\t\t\t\t);\n\t\t\t\t_frontPateTemplateId = frontPageTemplate\n\t\t\t\t\t? frontPageTemplate.id\n\t\t\t\t\t: false;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\thasLoadedAllDependencies: !! base && !! siteData,\n\t\t\t\thomepageId:\n\t\t\t\t\tsiteData?.show_on_front === 'page' &&\n\t\t\t\t\t[ 'number', 'string' ].includes(\n\t\t\t\t\t\ttypeof siteData.page_on_front\n\t\t\t\t\t)\n\t\t\t\t\t\t? siteData.page_on_front.toString()\n\t\t\t\t\t\t: null,\n\t\t\t\turl: base?.home,\n\t\t\t\tfrontPageTemplateId: _frontPateTemplateId,\n\t\t\t};\n\t\t}, [] );\n\n\t/**\n\t * This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId\n\t * in order to match the frontend as closely as possible in the site editor.\n\t *\n\t * It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.\n\t */\n\tconst resolvedTemplateId = useSelect(\n\t\t( select ) => {\n\t\t\t// If we're rendering a post type that doesn't have a template\n\t\t\t// no need to resolve its template.\n\t\t\tif ( postTypesWithoutParentTemplate.includes( postType ) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\tgetEntityRecords,\n\t\t\t\tgetDefaultTemplateId,\n\t\t\t\t__experimentalGetTemplateForLink,\n\t\t\t} = select( coreDataStore );\n\n\t\t\tfunction resolveTemplateForPostTypeAndId(\n\t\t\t\tpostTypeToResolve,\n\t\t\t\tpostIdToResolve\n\t\t\t) {\n\t\t\t\t// For the front page, we always use the front page template if existing.\n\t\t\t\tif (\n\t\t\t\t\tpostTypeToResolve === 'page' &&\n\t\t\t\t\thomepageId === postIdToResolve\n\t\t\t\t) {\n\t\t\t\t\t// We're still checking whether the front page template exists.\n\t\t\t\t\t// Don't resolve the template yet.\n\t\t\t\t\tif ( frontPageTemplateId === undefined ) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !! frontPageTemplateId ) {\n\t\t\t\t\t\treturn frontPageTemplateId;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst editedEntity = getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostTypeToResolve,\n\t\t\t\t\tpostIdToResolve\n\t\t\t\t);\n\t\t\t\tif ( ! editedEntity ) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\t// First see if the post/page has an assigned template and fetch it.\n\t\t\t\tconst currentTemplateSlug = editedEntity.template;\n\t\t\t\tif ( currentTemplateSlug ) {\n\t\t\t\t\tconst currentTemplate = getEntityRecords(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t\t}\n\t\t\t\t\t)?.find( ( { slug } ) => slug === currentTemplateSlug );\n\t\t\t\t\tif ( currentTemplate ) {\n\t\t\t\t\t\treturn currentTemplate.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If no template is assigned, use the default template.\n\t\t\t\tlet slugToCheck;\n\t\t\t\t// In `draft` status we might not have a slug available, so we use the `single`\n\t\t\t\t// post type templates slug(ex page, single-post, single-product etc..).\n\t\t\t\t// Pages do not need the `single` prefix in the slug to be prioritized\n\t\t\t\t// through template hierarchy.\n\t\t\t\tif ( editedEntity.slug ) {\n\t\t\t\t\tslugToCheck =\n\t\t\t\t\t\tpostTypeToResolve === 'page'\n\t\t\t\t\t\t\t? `${ postTypeToResolve }-${ editedEntity.slug }`\n\t\t\t\t\t\t\t: `single-${ postTypeToResolve }-${ editedEntity.slug }`;\n\t\t\t\t} else {\n\t\t\t\t\tslugToCheck =\n\t\t\t\t\t\tpostTypeToResolve === 'page'\n\t\t\t\t\t\t\t? 'page'\n\t\t\t\t\t\t\t: `single-${ postTypeToResolve }`;\n\t\t\t\t}\n\t\t\t\treturn getDefaultTemplateId( {\n\t\t\t\t\tslug: slugToCheck,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( ! hasLoadedAllDependencies ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// If we're rendering a specific page, post... we need to resolve its template.\n\t\t\tif ( postType && postId ) {\n\t\t\t\treturn resolveTemplateForPostTypeAndId( postType, postId );\n\t\t\t}\n\n\t\t\t// Some URLs in list views are different\n\t\t\tif ( path === '/pages' && postId ) {\n\t\t\t\treturn resolveTemplateForPostTypeAndId( 'page', postId );\n\t\t\t}\n\n\t\t\t// If we're rendering the home page, and we have a static home page, resolve its template.\n\t\t\tif ( homepageId ) {\n\t\t\t\treturn resolveTemplateForPostTypeAndId( 'page', homepageId );\n\t\t\t}\n\n\t\t\t// If we're not rendering a specific page, use the front page template.\n\t\t\tif ( url ) {\n\t\t\t\tconst template = __experimentalGetTemplateForLink( url );\n\t\t\t\treturn template?.id;\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\thomepageId,\n\t\t\thasLoadedAllDependencies,\n\t\t\turl,\n\t\t\tpostId,\n\t\t\tpostType,\n\t\t\tpath,\n\t\t\tfrontPageTemplateId,\n\t\t]\n\t);\n\n\tconst context = useMemo( () => {\n\t\tif ( postTypesWithoutParentTemplate.includes( postType ) ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tif ( postType && postId ) {\n\t\t\treturn { postType, postId };\n\t\t}\n\n\t\t// Some URLs in list views are different\n\t\tif ( path === '/pages' && postId ) {\n\t\t\treturn { postType: 'page', postId };\n\t\t}\n\n\t\tif ( homepageId ) {\n\t\t\treturn { postType: 'page', postId: homepageId };\n\t\t}\n\n\t\treturn {};\n\t}, [ homepageId, postType, postId, path ] );\n\n\tif ( path === '/wp_template' && postId ) {\n\t\treturn { isReady: true, postType: 'wp_template', postId, context };\n\t}\n\n\tif ( path === '/wp_template_part/all' && postId ) {\n\t\treturn { isReady: true, postType: 'wp_template_part', postId, context };\n\t}\n\n\tif ( postTypesWithoutParentTemplate.includes( postType ) ) {\n\t\treturn { isReady: true, postType, postId, context };\n\t}\n\n\tif ( hasLoadedAllDependencies ) {\n\t\treturn {\n\t\t\tisReady: resolvedTemplateId !== undefined,\n\t\t\tpostType: TEMPLATE_POST_TYPE,\n\t\t\tpostId: resolvedTemplateId,\n\t\t\tcontext,\n\t\t};\n\t}\n\n\treturn { isReady: false };\n}\n\nexport default function useInitEditedEntityFromURL() {\n\tconst { params = {} } = useLocation();\n\tconst { postType, postId, context, isReady } =\n\t\tuseResolveEditedEntityAndContext( params );\n\n\tconst { setEditedEntity } = useDispatch( editSiteStore );\n\n\tuseEffect( () => {\n\t\tif ( isReady ) {\n\t\t\tsetEditedEntity( postType, postId, context );\n\t\t}\n\t}, [ isReady, postType, postId, context, setEditedEntity ] );\n}\n"],"mappings":"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"}
@@ -87,20 +87,10 @@ export default function useSyncPathWithURL() {
87
87
  canvas: undefined,
88
88
  path: navigatorLocation.path
89
89
  });
90
- } else if (navigatorLocation.path === '/wp_template/all' && !window?.__experimentalAdminViews) {
91
- // When the experiment is disabled, we only support table layout.
92
- // Clear it out from the URL, so layouts other than table cannot be accessed.
93
- updateUrlParams({
94
- postType: undefined,
95
- categoryType: undefined,
96
- categoryId: undefined,
97
- path: navigatorLocation.path,
98
- layout: undefined
99
- });
100
90
  } else if (
101
91
  // These sidebar paths are special in the sense that the url in these pages may or may not have a postId and we need to retain it if it has.
102
92
  // The "type" property should be kept as well.
103
- navigatorLocation.path === '/pages' && window?.__experimentalAdminViews || navigatorLocation.path === '/wp_template/all' && window?.__experimentalAdminViews || navigatorLocation.path === '/wp_template_part/all' && window?.__experimentalAdminViews) {
93
+ navigatorLocation.path === '/pages' || navigatorLocation.path === '/wp_template' || navigatorLocation.path === '/wp_template_part/all') {
104
94
  updateUrlParams({
105
95
  postType: undefined,
106
96
  categoryType: undefined,
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalUseNavigator","useNavigator","useEffect","useRef","privateApis","routerPrivateApis","unlock","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","PATTERN_TYPES","useLocation","useHistory","getPathFromURL","urlParams","_urlParams$path","path","postType","postId","user","encodeURIComponent","isSubset","subset","superset","Object","entries","every","key","value","useSyncPathWithURL","history","params","location","navigatorLocation","navigatorParams","goTo","isMounting","current","updateUrlParams","newUrlParams","updatedParams","push","undefined","layout","startsWith","canvas","window","__experimentalAdminViews","categoryType","categoryId"],"sources":["@wordpress/edit-site/src/components/sync-state-with-url/use-sync-path-with-url.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalUseNavigator as useNavigator } from '@wordpress/components';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nexport function getPathFromURL( urlParams ) {\n\tlet path = urlParams?.path ?? '/';\n\n\t// Compute the navigator path based on the URL params.\n\tif ( urlParams?.postType && urlParams?.postId ) {\n\t\tswitch ( urlParams.postType ) {\n\t\t\tcase PATTERN_TYPES.user:\n\t\t\tcase TEMPLATE_POST_TYPE:\n\t\t\tcase TEMPLATE_PART_POST_TYPE:\n\t\t\tcase 'page':\n\t\t\t\tpath = `/${ encodeURIComponent(\n\t\t\t\t\turlParams.postType\n\t\t\t\t) }/${ encodeURIComponent( urlParams.postId ) }`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpath = `/navigation/${ encodeURIComponent(\n\t\t\t\t\turlParams.postType\n\t\t\t\t) }/${ encodeURIComponent( urlParams.postId ) }`;\n\t\t}\n\t}\n\n\treturn path;\n}\n\nfunction isSubset( subset, superset ) {\n\treturn Object.entries( subset ).every( ( [ key, value ] ) => {\n\t\treturn superset[ key ] === value;\n\t} );\n}\n\nexport default function useSyncPathWithURL() {\n\tconst history = useHistory();\n\tconst { params: urlParams } = useLocation();\n\tconst {\n\t\tlocation: navigatorLocation,\n\t\tparams: navigatorParams,\n\t\tgoTo,\n\t} = useNavigator();\n\tconst isMounting = useRef( true );\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// The navigatorParams are only initially filled properly when the\n\t\t\t// navigator screens mount. so we ignore the first synchronisation.\n\t\t\tif ( isMounting.current ) {\n\t\t\t\tisMounting.current = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction updateUrlParams( newUrlParams ) {\n\t\t\t\tif ( isSubset( newUrlParams, urlParams ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst updatedParams = {\n\t\t\t\t\t...urlParams,\n\t\t\t\t\t...newUrlParams,\n\t\t\t\t};\n\t\t\t\thistory.push( updatedParams );\n\t\t\t}\n\n\t\t\tif ( navigatorParams?.postType && navigatorParams?.postId ) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: navigatorParams?.postType,\n\t\t\t\t\tpostId: navigatorParams?.postId,\n\t\t\t\t\tpath: undefined,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tnavigatorLocation.path.startsWith( '/page/' ) &&\n\t\t\t\tnavigatorParams?.postId\n\t\t\t) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: 'page',\n\t\t\t\t\tpostId: navigatorParams?.postId,\n\t\t\t\t\tpath: undefined,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\t\t\t} else if ( navigatorLocation.path === '/patterns' ) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: undefined,\n\t\t\t\t\tpostId: undefined,\n\t\t\t\t\tcanvas: undefined,\n\t\t\t\t\tpath: navigatorLocation.path,\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tnavigatorLocation.path === '/wp_template/all' &&\n\t\t\t\t! window?.__experimentalAdminViews\n\t\t\t) {\n\t\t\t\t// When the experiment is disabled, we only support table layout.\n\t\t\t\t// Clear it out from the URL, so layouts other than table cannot be accessed.\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: undefined,\n\t\t\t\t\tcategoryType: undefined,\n\t\t\t\t\tcategoryId: undefined,\n\t\t\t\t\tpath: navigatorLocation.path,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\t// These sidebar paths are special in the sense that the url in these pages may or may not have a postId and we need to retain it if it has.\n\t\t\t\t// The \"type\" property should be kept as well.\n\t\t\t\t( navigatorLocation.path === '/pages' &&\n\t\t\t\t\twindow?.__experimentalAdminViews ) ||\n\t\t\t\t( navigatorLocation.path === '/wp_template/all' &&\n\t\t\t\t\twindow?.__experimentalAdminViews ) ||\n\t\t\t\t( navigatorLocation.path === '/wp_template_part/all' &&\n\t\t\t\t\twindow?.__experimentalAdminViews )\n\t\t\t) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: undefined,\n\t\t\t\t\tcategoryType: undefined,\n\t\t\t\t\tcategoryId: undefined,\n\t\t\t\t\tpath: navigatorLocation.path,\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: undefined,\n\t\t\t\t\tpostId: undefined,\n\t\t\t\t\tcategoryType: undefined,\n\t\t\t\t\tcategoryId: undefined,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t\tpath:\n\t\t\t\t\t\tnavigatorLocation.path === '/'\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: navigatorLocation.path,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t// Trigger only when navigator changes to prevent infinite loops.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ navigatorLocation?.path, navigatorParams ]\n\t);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst path = getPathFromURL( urlParams );\n\t\t\tif ( navigatorLocation.path !== path ) {\n\t\t\t\tgoTo( path );\n\t\t\t}\n\t\t},\n\t\t// Trigger only when URL changes to prevent infinite loops.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ urlParams ]\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["__experimentalUseNavigator","useNavigator","useEffect","useRef","privateApis","routerPrivateApis","unlock","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","PATTERN_TYPES","useLocation","useHistory","getPathFromURL","urlParams","_urlParams$path","path","postType","postId","user","encodeURIComponent","isSubset","subset","superset","Object","entries","every","key","value","useSyncPathWithURL","history","params","location","navigatorLocation","navigatorParams","goTo","isMounting","current","updateUrlParams","newUrlParams","updatedParams","push","undefined","layout","startsWith","canvas","categoryType","categoryId"],"sources":["@wordpress/edit-site/src/components/sync-state-with-url/use-sync-path-with-url.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalUseNavigator as useNavigator } from '@wordpress/components';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nexport function getPathFromURL( urlParams ) {\n\tlet path = urlParams?.path ?? '/';\n\n\t// Compute the navigator path based on the URL params.\n\tif ( urlParams?.postType && urlParams?.postId ) {\n\t\tswitch ( urlParams.postType ) {\n\t\t\tcase PATTERN_TYPES.user:\n\t\t\tcase TEMPLATE_POST_TYPE:\n\t\t\tcase TEMPLATE_PART_POST_TYPE:\n\t\t\tcase 'page':\n\t\t\t\tpath = `/${ encodeURIComponent(\n\t\t\t\t\turlParams.postType\n\t\t\t\t) }/${ encodeURIComponent( urlParams.postId ) }`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpath = `/navigation/${ encodeURIComponent(\n\t\t\t\t\turlParams.postType\n\t\t\t\t) }/${ encodeURIComponent( urlParams.postId ) }`;\n\t\t}\n\t}\n\n\treturn path;\n}\n\nfunction isSubset( subset, superset ) {\n\treturn Object.entries( subset ).every( ( [ key, value ] ) => {\n\t\treturn superset[ key ] === value;\n\t} );\n}\n\nexport default function useSyncPathWithURL() {\n\tconst history = useHistory();\n\tconst { params: urlParams } = useLocation();\n\tconst {\n\t\tlocation: navigatorLocation,\n\t\tparams: navigatorParams,\n\t\tgoTo,\n\t} = useNavigator();\n\tconst isMounting = useRef( true );\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// The navigatorParams are only initially filled properly when the\n\t\t\t// navigator screens mount. so we ignore the first synchronisation.\n\t\t\tif ( isMounting.current ) {\n\t\t\t\tisMounting.current = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction updateUrlParams( newUrlParams ) {\n\t\t\t\tif ( isSubset( newUrlParams, urlParams ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst updatedParams = {\n\t\t\t\t\t...urlParams,\n\t\t\t\t\t...newUrlParams,\n\t\t\t\t};\n\t\t\t\thistory.push( updatedParams );\n\t\t\t}\n\n\t\t\tif ( navigatorParams?.postType && navigatorParams?.postId ) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: navigatorParams?.postType,\n\t\t\t\t\tpostId: navigatorParams?.postId,\n\t\t\t\t\tpath: undefined,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tnavigatorLocation.path.startsWith( '/page/' ) &&\n\t\t\t\tnavigatorParams?.postId\n\t\t\t) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: 'page',\n\t\t\t\t\tpostId: navigatorParams?.postId,\n\t\t\t\t\tpath: undefined,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t} );\n\t\t\t} else if ( navigatorLocation.path === '/patterns' ) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: undefined,\n\t\t\t\t\tpostId: undefined,\n\t\t\t\t\tcanvas: undefined,\n\t\t\t\t\tpath: navigatorLocation.path,\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\t// These sidebar paths are special in the sense that the url in these pages may or may not have a postId and we need to retain it if it has.\n\t\t\t\t// The \"type\" property should be kept as well.\n\t\t\t\tnavigatorLocation.path === '/pages' ||\n\t\t\t\tnavigatorLocation.path === '/wp_template' ||\n\t\t\t\tnavigatorLocation.path === '/wp_template_part/all'\n\t\t\t) {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: undefined,\n\t\t\t\t\tcategoryType: undefined,\n\t\t\t\t\tcategoryId: undefined,\n\t\t\t\t\tpath: navigatorLocation.path,\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tupdateUrlParams( {\n\t\t\t\t\tpostType: undefined,\n\t\t\t\t\tpostId: undefined,\n\t\t\t\t\tcategoryType: undefined,\n\t\t\t\t\tcategoryId: undefined,\n\t\t\t\t\tlayout: undefined,\n\t\t\t\t\tpath:\n\t\t\t\t\t\tnavigatorLocation.path === '/'\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: navigatorLocation.path,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t// Trigger only when navigator changes to prevent infinite loops.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ navigatorLocation?.path, navigatorParams ]\n\t);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst path = getPathFromURL( urlParams );\n\t\t\tif ( navigatorLocation.path !== path ) {\n\t\t\t\tgoTo( path );\n\t\t\t}\n\t\t},\n\t\t// Trigger only when URL changes to prevent infinite loops.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ urlParams ]\n\t);\n}\n"],"mappings":"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"}
@@ -28,7 +28,41 @@ export default function TemplateActions({
28
28
  }) {
29
29
  const template = useSelect(select => select(coreStore).getEntityRecord('postType', postType, postId), [postType, postId]);
30
30
  const {
31
- removeTemplate,
31
+ removeTemplate
32
+ } = useDispatch(editSiteStore);
33
+ const isRemovable = isTemplateRemovable(template);
34
+ const isRevertable = isTemplateRevertable(template);
35
+ if (!isRemovable && !isRevertable) {
36
+ return null;
37
+ }
38
+ return createElement(DropdownMenu, {
39
+ icon: moreVertical,
40
+ label: __('Actions'),
41
+ className: className,
42
+ toggleProps: toggleProps
43
+ }, ({
44
+ onClose
45
+ }) => createElement(MenuGroup, null, isRemovable && createElement(Fragment, null, createElement(RenameMenuItem, {
46
+ template: template,
47
+ onClose: onClose
48
+ }), createElement(DeleteMenuItem, {
49
+ onRemove: () => {
50
+ removeTemplate(template);
51
+ onRemove?.();
52
+ onClose();
53
+ },
54
+ title: template.title.rendered
55
+ })), isRevertable && createElement(ResetMenuItem, {
56
+ template: template,
57
+ onClose: onClose
58
+ })));
59
+ }
60
+ function ResetMenuItem({
61
+ template,
62
+ onClose
63
+ }) {
64
+ const [isModalOpen, setIsModalOpen] = useState(false);
65
+ const {
32
66
  revertTemplate
33
67
  } = useDispatch(editSiteStore);
34
68
  const {
@@ -38,11 +72,6 @@ export default function TemplateActions({
38
72
  createSuccessNotice,
39
73
  createErrorNotice
40
74
  } = useDispatch(noticesStore);
41
- const isRemovable = isTemplateRemovable(template);
42
- const isRevertable = isTemplateRevertable(template);
43
- if (!isRemovable && !isRevertable) {
44
- return null;
45
- }
46
75
  async function revertAndSaveTemplate() {
47
76
  try {
48
77
  await revertTemplate(template, {
@@ -62,30 +91,18 @@ export default function TemplateActions({
62
91
  });
63
92
  }
64
93
  }
65
- return createElement(DropdownMenu, {
66
- icon: moreVertical,
67
- label: __('Actions'),
68
- className: className,
69
- toggleProps: toggleProps
70
- }, ({
71
- onClose
72
- }) => createElement(MenuGroup, null, isRemovable && createElement(Fragment, null, createElement(RenameMenuItem, {
73
- template: template,
74
- onClose: onClose
75
- }), createElement(DeleteMenuItem, {
76
- onRemove: () => {
77
- removeTemplate(template);
78
- onRemove?.();
79
- onClose();
80
- },
81
- title: template.title.rendered
82
- })), isRevertable && createElement(MenuItem, {
94
+ return createElement(Fragment, null, createElement(MenuItem, {
83
95
  info: __('Use the template as supplied by the theme.'),
84
- onClick: () => {
96
+ onClick: () => setIsModalOpen(true)
97
+ }, __('Clear customizations')), createElement(ConfirmDialog, {
98
+ isOpen: isModalOpen,
99
+ onConfirm: () => {
85
100
  revertAndSaveTemplate();
86
101
  onClose();
87
- }
88
- }, __('Clear customizations'))));
102
+ },
103
+ onCancel: () => setIsModalOpen(false),
104
+ confirmButtonText: __('Clear')
105
+ }, __('Are you sure you want to clear these customizations?')));
89
106
  }
90
107
  function DeleteMenuItem({
91
108
  onRemove,
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","useSelect","store","coreStore","useState","__","sprintf","DropdownMenu","MenuGroup","MenuItem","__experimentalConfirmDialog","ConfirmDialog","moreVertical","noticesStore","decodeEntities","editSiteStore","isTemplateRemovable","isTemplateRevertable","RenameMenuItem","TEMPLATE_POST_TYPE","TemplateActions","postType","postId","className","toggleProps","onRemove","template","select","getEntityRecord","removeTemplate","revertTemplate","saveEditedEntityRecord","createSuccessNotice","createErrorNotice","isRemovable","isRevertable","revertAndSaveTemplate","allowUndo","type","id","title","rendered","error","fallbackErrorMessage","errorMessage","message","code","createElement","icon","label","onClose","Fragment","DeleteMenuItem","info","onClick","isModalOpen","setIsModalOpen","isDestructive","isOpen","onConfirm","onCancel","confirmButtonText"],"sources":["@wordpress/edit-site/src/components/template-actions/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport isTemplateRemovable from '../../utils/is-template-removable';\nimport isTemplateRevertable from '../../utils/is-template-revertable';\nimport RenameMenuItem from './rename-menu-item';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nexport default function TemplateActions( {\n\tpostType,\n\tpostId,\n\tclassName,\n\ttoggleProps,\n\tonRemove,\n} ) {\n\tconst template = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecord( 'postType', postType, postId ),\n\t\t[ postType, postId ]\n\t);\n\tconst { removeTemplate, revertTemplate } = useDispatch( editSiteStore );\n\tconst { saveEditedEntityRecord } = useDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst isRemovable = isTemplateRemovable( template );\n\tconst isRevertable = isTemplateRevertable( template );\n\n\tif ( ! isRemovable && ! isRevertable ) {\n\t\treturn null;\n\t}\n\n\tasync function revertAndSaveTemplate() {\n\t\ttry {\n\t\t\tawait revertTemplate( template, { allowUndo: false } );\n\t\t\tawait saveEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\ttemplate.type,\n\t\t\t\ttemplate.id\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: The template/part's name. */\n\t\t\t\t\t__( '\"%s\" reverted.' ),\n\t\t\t\t\tdecodeEntities( template.title.rendered )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-template-reverted',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst fallbackErrorMessage =\n\t\t\t\ttemplate.type === TEMPLATE_POST_TYPE\n\t\t\t\t\t? __( 'An error occurred while reverting the template.' )\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while reverting the template part.'\n\t\t\t\t\t );\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: fallbackErrorMessage;\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName={ className }\n\t\t\ttoggleProps={ toggleProps }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t{ isRemovable && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DeleteMenuItem\n\t\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\t\tremoveTemplate( template );\n\t\t\t\t\t\t\t\t\tonRemove?.();\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\ttitle={ template.title.rendered }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isRevertable && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t'Use the template as supplied by the theme.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\trevertAndSaveTemplate();\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear customizations' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction DeleteMenuItem( { onRemove, title } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\treturn (\n\t\t<>\n\t\t\t<MenuItem isDestructive onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Delete' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ onRemove }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %s: The template or template part's title.\n\t\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useDispatch","useSelect","store","coreStore","useState","__","sprintf","DropdownMenu","MenuGroup","MenuItem","__experimentalConfirmDialog","ConfirmDialog","moreVertical","noticesStore","decodeEntities","editSiteStore","isTemplateRemovable","isTemplateRevertable","RenameMenuItem","TEMPLATE_POST_TYPE","TemplateActions","postType","postId","className","toggleProps","onRemove","template","select","getEntityRecord","removeTemplate","isRemovable","isRevertable","createElement","icon","label","onClose","Fragment","DeleteMenuItem","title","rendered","ResetMenuItem","isModalOpen","setIsModalOpen","revertTemplate","saveEditedEntityRecord","createSuccessNotice","createErrorNotice","revertAndSaveTemplate","allowUndo","type","id","error","fallbackErrorMessage","errorMessage","message","code","info","onClick","isOpen","onConfirm","onCancel","confirmButtonText","isDestructive"],"sources":["@wordpress/edit-site/src/components/template-actions/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport isTemplateRemovable from '../../utils/is-template-removable';\nimport isTemplateRevertable from '../../utils/is-template-revertable';\nimport RenameMenuItem from './rename-menu-item';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nexport default function TemplateActions( {\n\tpostType,\n\tpostId,\n\tclassName,\n\ttoggleProps,\n\tonRemove,\n} ) {\n\tconst template = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecord( 'postType', postType, postId ),\n\t\t[ postType, postId ]\n\t);\n\tconst { removeTemplate } = useDispatch( editSiteStore );\n\tconst isRemovable = isTemplateRemovable( template );\n\tconst isRevertable = isTemplateRevertable( template );\n\n\tif ( ! isRemovable && ! isRevertable ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Actions' ) }\n\t\t\tclassName={ className }\n\t\t\ttoggleProps={ toggleProps }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t{ isRemovable && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DeleteMenuItem\n\t\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\t\tremoveTemplate( template );\n\t\t\t\t\t\t\t\t\tonRemove?.();\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\ttitle={ template.title.rendered }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isRevertable && (\n\t\t\t\t\t\t<ResetMenuItem\n\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction ResetMenuItem( { template, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst { revertTemplate } = useDispatch( editSiteStore );\n\tconst { saveEditedEntityRecord } = useDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tasync function revertAndSaveTemplate() {\n\t\ttry {\n\t\t\tawait revertTemplate( template, { allowUndo: false } );\n\t\t\tawait saveEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\ttemplate.type,\n\t\t\t\ttemplate.id\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: The template/part's name. */\n\t\t\t\t\t__( '\"%s\" reverted.' ),\n\t\t\t\t\tdecodeEntities( template.title.rendered )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-template-reverted',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst fallbackErrorMessage =\n\t\t\t\ttemplate.type === TEMPLATE_POST_TYPE\n\t\t\t\t\t? __( 'An error occurred while reverting the template.' )\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while reverting the template part.'\n\t\t\t\t\t );\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: fallbackErrorMessage;\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t}\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\tinfo={ __( 'Use the template as supplied by the theme.' ) }\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t>\n\t\t\t\t{ __( 'Clear customizations' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ () => {\n\t\t\t\t\trevertAndSaveTemplate();\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Clear' ) }\n\t\t\t>\n\t\t\t\t{ __( 'Are you sure you want to clear these customizations?' ) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n\nfunction DeleteMenuItem( { onRemove, title } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\treturn (\n\t\t<>\n\t\t\t<MenuItem isDestructive onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Delete' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ onRemove }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %s: The template or template part's title.\n\t\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { Guide } from '@wordpress/components';
7
7
  import { __ } from '@wordpress/i18n';
8
8
  import { createInterpolateElement } from '@wordpress/element';
9
9
  import { store as preferencesStore } from '@wordpress/preferences';
10
+ import { store as coreStore } from '@wordpress/core-data';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -16,8 +17,16 @@ export default function WelcomeGuideEditor() {
16
17
  const {
17
18
  toggle
18
19
  } = useDispatch(preferencesStore);
19
- const isActive = useSelect(select => !!select(preferencesStore).get('core/edit-site', 'welcomeGuide'), []);
20
- if (!isActive) {
20
+ const {
21
+ isActive,
22
+ isBlockBasedTheme
23
+ } = useSelect(select => {
24
+ return {
25
+ isActive: !!select(preferencesStore).get('core/edit-site', 'welcomeGuide'),
26
+ isBlockBasedTheme: select(coreStore).getCurrentTheme()?.is_block_theme
27
+ };
28
+ }, []);
29
+ if (!isActive || !isBlockBasedTheme) {
21
30
  return null;
22
31
  }
23
32
  return createElement(Guide, {
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","useSelect","Guide","__","createInterpolateElement","store","preferencesStore","WelcomeGuideImage","WelcomeGuideEditor","toggle","isActive","select","get","createElement","className","contentLabel","finishButtonText","onFinish","pages","image","nonAnimatedSrc","animatedSrc","content","Fragment","StylesIconImage","alt","src"],"sources":["@wordpress/edit-site/src/components/welcome-guide/editor.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideImage from './image';\n\nexport default function WelcomeGuideEditor() {\n\tconst { toggle } = useDispatch( preferencesStore );\n\n\tconst isActive = useSelect(\n\t\t( select ) =>\n\t\t\t!! select( preferencesStore ).get(\n\t\t\t\t'core/edit-site',\n\t\t\t\t'welcomeGuide'\n\t\t\t),\n\t\t[]\n\t);\n\n\tif ( ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-site-welcome-guide guide-editor\"\n\t\t\tcontentLabel={ __( 'Welcome to the site editor' ) }\n\t\t\tfinishButtonText={ __( 'Get started' ) }\n\t\t\tonFinish={ () => toggle( 'core/edit-site', 'welcomeGuide' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/edit-your-site.svg?1\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/edit-your-site.gif?1\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-site-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Edit your site' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Design everything on your site — from the header right down to the footer — using blocks.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'Click <StylesIconImage /> to start designing your blocks, and choose your typography, layout, and colors.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tStylesIconImage: (\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\talt={ __( 'styles' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t] }\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,wBAAwB,QAAQ,oBAAoB;AAC7D,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,wBAAwB;;AAElE;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,SAAS;AAEvC,eAAe,SAASC,kBAAkBA,CAAA,EAAG;EAC5C,MAAM;IAAEC;EAAO,CAAC,GAAGT,WAAW,CAAEM,gBAAiB,CAAC;EAElD,MAAMI,QAAQ,GAAGT,SAAS,CACvBU,MAAM,IACP,CAAC,CAAEA,MAAM,CAAEL,gBAAiB,CAAC,CAACM,GAAG,CAChC,gBAAgB,EAChB,cACD,CAAC,EACF,EACD,CAAC;EAED,IAAK,CAAEF,QAAQ,EAAG;IACjB,OAAO,IAAI;EACZ;EAEA,OACCG,aAAA,CAACX,KAAK;IACLY,SAAS,EAAC,sCAAsC;IAChDC,YAAY,EAAGZ,EAAE,CAAE,4BAA6B,CAAG;IACnDa,gBAAgB,EAAGb,EAAE,CAAE,aAAc,CAAG;IACxCc,QAAQ,EAAGA,CAAA,KAAMR,MAAM,CAAE,gBAAgB,EAAE,cAAe,CAAG;IAC7DS,KAAK,EAAG,CACP;MACCC,KAAK,EACJN,aAAA,CAACN,iBAAiB;QACjBa,cAAc,EAAC,0DAA0D;QACzEC,WAAW,EAAC;MAA0D,CACtE,CACD;MACDC,OAAO,EACNT,aAAA,CAAAU,QAAA,QACCV,aAAA;QAAIC,SAAS,EAAC;MAAkC,GAC7CX,EAAE,CAAE,gBAAiB,CACpB,CAAC,EACLU,aAAA;QAAGC,SAAS,EAAC;MAA+B,GACzCX,EAAE,CACH,2FACD,CACE,CAAC,EACJU,aAAA;QAAGC,SAAS,EAAC;MAA+B,GACzCV,wBAAwB,CACzBD,EAAE,CACD,2GACD,CAAC,EACD;QACCqB,eAAe,EACdX,aAAA;UACCY,GAAG,EAAGtB,EAAE,CAAE,QAAS,CAAG;UACtBuB,GAAG,EAAC;QAAuR,CAC3R;MAEH,CACD,CACE,CACF;IAEJ,CAAC;EACC,CACH,CAAC;AAEJ"}
1
+ {"version":3,"names":["useDispatch","useSelect","Guide","__","createInterpolateElement","store","preferencesStore","coreStore","WelcomeGuideImage","WelcomeGuideEditor","toggle","isActive","isBlockBasedTheme","select","get","getCurrentTheme","is_block_theme","createElement","className","contentLabel","finishButtonText","onFinish","pages","image","nonAnimatedSrc","animatedSrc","content","Fragment","StylesIconImage","alt","src"],"sources":["@wordpress/edit-site/src/components/welcome-guide/editor.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideImage from './image';\n\nexport default function WelcomeGuideEditor() {\n\tconst { toggle } = useDispatch( preferencesStore );\n\n\tconst { isActive, isBlockBasedTheme } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tisActive: !! select( preferencesStore ).get(\n\t\t\t\t'core/edit-site',\n\t\t\t\t'welcomeGuide'\n\t\t\t),\n\t\t\tisBlockBasedTheme:\n\t\t\t\tselect( coreStore ).getCurrentTheme()?.is_block_theme,\n\t\t};\n\t}, [] );\n\n\tif ( ! isActive || ! isBlockBasedTheme ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-site-welcome-guide guide-editor\"\n\t\t\tcontentLabel={ __( 'Welcome to the site editor' ) }\n\t\t\tfinishButtonText={ __( 'Get started' ) }\n\t\t\tonFinish={ () => toggle( 'core/edit-site', 'welcomeGuide' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/edit-your-site.svg?1\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/edit-your-site.gif?1\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-site-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Edit your site' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Design everything on your site — from the header right down to the footer — using blocks.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'Click <StylesIconImage /> to start designing your blocks, and choose your typography, layout, and colors.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tStylesIconImage: (\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\talt={ __( 'styles' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t] }\n\t\t/>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,wBAAwB,QAAQ,oBAAoB;AAC7D,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,wBAAwB;AAClE,SAASD,KAAK,IAAIE,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,SAAS;AAEvC,eAAe,SAASC,kBAAkBA,CAAA,EAAG;EAC5C,MAAM;IAAEC;EAAO,CAAC,GAAGV,WAAW,CAAEM,gBAAiB,CAAC;EAElD,MAAM;IAAEK,QAAQ;IAAEC;EAAkB,CAAC,GAAGX,SAAS,CAAIY,MAAM,IAAM;IAChE,OAAO;MACNF,QAAQ,EAAE,CAAC,CAAEE,MAAM,CAAEP,gBAAiB,CAAC,CAACQ,GAAG,CAC1C,gBAAgB,EAChB,cACD,CAAC;MACDF,iBAAiB,EAChBC,MAAM,CAAEN,SAAU,CAAC,CAACQ,eAAe,CAAC,CAAC,EAAEC;IACzC,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,IAAK,CAAEL,QAAQ,IAAI,CAAEC,iBAAiB,EAAG;IACxC,OAAO,IAAI;EACZ;EAEA,OACCK,aAAA,CAACf,KAAK;IACLgB,SAAS,EAAC,sCAAsC;IAChDC,YAAY,EAAGhB,EAAE,CAAE,4BAA6B,CAAG;IACnDiB,gBAAgB,EAAGjB,EAAE,CAAE,aAAc,CAAG;IACxCkB,QAAQ,EAAGA,CAAA,KAAMX,MAAM,CAAE,gBAAgB,EAAE,cAAe,CAAG;IAC7DY,KAAK,EAAG,CACP;MACCC,KAAK,EACJN,aAAA,CAACT,iBAAiB;QACjBgB,cAAc,EAAC,0DAA0D;QACzEC,WAAW,EAAC;MAA0D,CACtE,CACD;MACDC,OAAO,EACNT,aAAA,CAAAU,QAAA,QACCV,aAAA;QAAIC,SAAS,EAAC;MAAkC,GAC7Cf,EAAE,CAAE,gBAAiB,CACpB,CAAC,EACLc,aAAA;QAAGC,SAAS,EAAC;MAA+B,GACzCf,EAAE,CACH,2FACD,CACE,CAAC,EACJc,aAAA;QAAGC,SAAS,EAAC;MAA+B,GACzCd,wBAAwB,CACzBD,EAAE,CACD,2GACD,CAAC,EACD;QACCyB,eAAe,EACdX,aAAA;UACCY,GAAG,EAAG1B,EAAE,CAAE,QAAS,CAAG;UACtB2B,GAAG,EAAC;QAAuR,CAC3R;MAEH,CACD,CACE,CACF;IAEJ,CAAC;EACC,CACH,CAAC;AAEJ"}
@@ -1,13 +1,84 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useMemo } from '@wordpress/element';
4
+ import { useSelect } from '@wordpress/data';
5
+ import { store as coreStore } from '@wordpress/core-data';
6
+ import { useContext, useMemo } from '@wordpress/element';
7
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
8
+ import { __ } from '@wordpress/i18n';
5
9
 
6
10
  /**
7
11
  * Internal dependencies
8
12
  */
9
13
  import { mergeBaseAndUserConfigs } from '../../components/global-styles/global-styles-provider';
10
14
  import cloneDeep from '../../utils/clone-deep';
15
+ import { unlock } from '../../lock-unlock';
16
+ const {
17
+ GlobalStylesContext
18
+ } = unlock(blockEditorPrivateApis);
19
+
20
+ /**
21
+ * Removes all instances of a property from an object.
22
+ *
23
+ * @param {Object} object The object to remove the property from.
24
+ * @param {string} property The property to remove.
25
+ * @return {Object} The modified object.
26
+ */
27
+ export function removePropertyFromObject(object, property) {
28
+ if (!property || typeof property !== 'string') {
29
+ return object;
30
+ }
31
+ if (typeof object !== 'object' || !Object.keys(object).length) {
32
+ return object;
33
+ }
34
+ for (const key in object) {
35
+ if (key === property) {
36
+ delete object[key];
37
+ } else if (typeof object[key] === 'object') {
38
+ removePropertyFromObject(object[key], property);
39
+ }
40
+ }
41
+ return object;
42
+ }
43
+
44
+ /**
45
+ * A convenience wrapper for `useThemeStyleVariationsByProperty()` that fetches the current theme style variations,
46
+ * and user-defined global style/settings object.
47
+ *
48
+ * @param {Object} props Object of hook args.
49
+ * @param {string} props.property The property to filter by.
50
+ * @param {Function} props.filter Optional. The filter function to apply to the variations.
51
+ * @return {Object[]|*} The merged object.
52
+ */
53
+ export function useCurrentMergeThemeStyleVariationsWithUserConfig({
54
+ property,
55
+ filter
56
+ }) {
57
+ const {
58
+ variationsFromTheme
59
+ } = useSelect(select => {
60
+ const _variationsFromTheme = select(coreStore).__experimentalGetCurrentThemeGlobalStylesVariations();
61
+ return {
62
+ variationsFromTheme: _variationsFromTheme || []
63
+ };
64
+ }, []);
65
+ const {
66
+ user: baseVariation
67
+ } = useContext(GlobalStylesContext);
68
+ const variations = useMemo(() => {
69
+ return [{
70
+ title: __('Default'),
71
+ settings: {},
72
+ styles: {}
73
+ }, ...variationsFromTheme];
74
+ }, [variationsFromTheme]);
75
+ return useThemeStyleVariationsByProperty({
76
+ variations,
77
+ property,
78
+ filter,
79
+ baseVariation: removePropertyFromObject(cloneDeep(baseVariation), property)
80
+ });
81
+ }
11
82
 
12
83
  /**
13
84
  * Returns a new object, with properties specified in `property`,
@@ -39,6 +110,10 @@ export const filterObjectByProperty = (object, property) => {
39
110
 
40
111
  /**
41
112
  * Returns a new object with only the properties specified in `property`.
113
+ * Optional merges the baseVariation object with the variation object.
114
+ * Note: this function will only overwrite the specified property in baseVariation if it exists.
115
+ * The baseVariation will not be otherwise modified. To strip a property from the baseVariation object, use `removePropertyFromObject`.
116
+ * See useCurrentMergeThemeStyleVariationsWithUserConfig for an example of how to use this function.
42
117
  *
43
118
  * @param {Object} props Object of hook args.
44
119
  * @param {Object[]} props.variations The theme style variations to filter.