@wordpress/edit-site 5.22.0 → 5.24.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 (524) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/actions/index.js +115 -15
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/add-new-template/new-template.js +0 -7
  5. package/build/components/add-new-template/new-template.js.map +1 -1
  6. package/build/components/block-editor/site-editor-canvas.js +7 -2
  7. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  8. package/build/components/block-editor/use-site-editor-settings.js +54 -63
  9. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  10. package/build/components/dataviews/add-filter.js +91 -0
  11. package/build/components/dataviews/add-filter.js.map +1 -0
  12. package/build/components/dataviews/constants.js +14 -0
  13. package/build/components/dataviews/constants.js.map +1 -0
  14. package/build/components/dataviews/dataviews.js +30 -9
  15. package/build/components/dataviews/dataviews.js.map +1 -1
  16. package/build/components/dataviews/filter-summary.js +62 -0
  17. package/build/components/dataviews/filter-summary.js.map +1 -0
  18. package/build/components/dataviews/filters.js +37 -48
  19. package/build/components/dataviews/filters.js.map +1 -1
  20. package/build/components/dataviews/index.js +9 -2
  21. package/build/components/dataviews/index.js.map +1 -1
  22. package/build/components/dataviews/item-actions.js +139 -17
  23. package/build/components/dataviews/item-actions.js.map +1 -1
  24. package/build/components/dataviews/pagination.js +7 -2
  25. package/build/components/dataviews/pagination.js.map +1 -1
  26. package/build/components/dataviews/reset-filters.js +33 -0
  27. package/build/components/dataviews/reset-filters.js.map +1 -0
  28. package/build/components/dataviews/search.js +1 -0
  29. package/build/components/dataviews/search.js.map +1 -1
  30. package/build/components/dataviews/view-actions.js +49 -32
  31. package/build/components/dataviews/view-actions.js.map +1 -1
  32. package/build/components/dataviews/view-grid.js +48 -25
  33. package/build/components/dataviews/view-grid.js.map +1 -1
  34. package/build/components/dataviews/view-list.js +130 -14
  35. package/build/components/dataviews/view-list.js.map +1 -1
  36. package/build/components/dataviews/view-side-by-side.js +20 -0
  37. package/build/components/dataviews/view-side-by-side.js.map +1 -0
  38. package/build/components/editor/index.js +52 -56
  39. package/build/components/editor/index.js.map +1 -1
  40. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  41. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
  42. package/build/components/global-styles/font-library-modal/utils/index.js +15 -2
  43. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  44. package/build/components/global-styles/header.js +4 -2
  45. package/build/components/global-styles/header.js.map +1 -1
  46. package/build/components/global-styles/screen-block-list.js +22 -16
  47. package/build/components/global-styles/screen-block-list.js.map +1 -1
  48. package/build/components/global-styles/screen-revisions/index.js +66 -24
  49. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  50. package/build/components/global-styles/screen-revisions/revisions-buttons.js +52 -24
  51. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  52. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
  53. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  54. package/build/components/global-styles/screen-root.js +3 -3
  55. package/build/components/global-styles/screen-root.js.map +1 -1
  56. package/build/components/global-styles/ui.js +31 -39
  57. package/build/components/global-styles/ui.js.map +1 -1
  58. package/build/components/global-styles-renderer/index.js +1 -1
  59. package/build/components/global-styles-renderer/index.js.map +1 -1
  60. package/build/components/header-edit-mode/document-actions/index.js +21 -16
  61. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  62. package/build/components/header-edit-mode/document-tools/index.js +160 -0
  63. package/build/components/header-edit-mode/document-tools/index.js.map +1 -0
  64. package/build/components/header-edit-mode/index.js +50 -117
  65. package/build/components/header-edit-mode/index.js.map +1 -1
  66. package/build/components/header-edit-mode/more-menu/index.js +1 -1
  67. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  68. package/build/components/header-edit-mode/more-menu/site-export.js +2 -6
  69. package/build/components/header-edit-mode/more-menu/site-export.js.map +1 -1
  70. package/build/components/layout/index.js +4 -19
  71. package/build/components/layout/index.js.map +1 -1
  72. package/build/components/list/added-by.js +44 -54
  73. package/build/components/list/added-by.js.map +1 -1
  74. package/build/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +11 -15
  75. package/build/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
  76. package/build/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  77. package/build/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
  78. package/build/components/page-content-focus-notifications/index.js +22 -0
  79. package/build/components/page-content-focus-notifications/index.js.map +1 -0
  80. package/build/components/page-main/index.js +2 -1
  81. package/build/components/page-main/index.js.map +1 -1
  82. package/build/components/page-pages/index.js +137 -88
  83. package/build/components/page-pages/index.js.map +1 -1
  84. package/build/components/page-pages/side-editor.js +25 -0
  85. package/build/components/page-pages/side-editor.js.map +1 -0
  86. package/build/components/page-patterns/grid-item.js +2 -2
  87. package/build/components/page-patterns/grid-item.js.map +1 -1
  88. package/build/components/page-patterns/patterns-list.js +3 -3
  89. package/build/components/page-patterns/patterns-list.js.map +1 -1
  90. package/build/components/page-patterns/use-patterns.js +2 -2
  91. package/build/components/page-patterns/use-patterns.js.map +1 -1
  92. package/build/components/page-templates/dataviews-templates.js +316 -0
  93. package/build/components/page-templates/dataviews-templates.js.map +1 -0
  94. package/build/components/page-templates/template-actions.js +168 -0
  95. package/build/components/page-templates/template-actions.js.map +1 -0
  96. package/build/components/preferences-modal/index.js +1 -1
  97. package/build/components/preferences-modal/index.js.map +1 -1
  98. package/build/components/save-button/index.js +9 -6
  99. package/build/components/save-button/index.js.map +1 -1
  100. package/build/components/save-hub/index.js +14 -0
  101. package/build/components/save-hub/index.js.map +1 -1
  102. package/build/components/sidebar/index.js +1 -2
  103. package/build/components/sidebar/index.js.map +1 -1
  104. package/build/components/sidebar-dataviews/add-new-view.js +124 -0
  105. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -0
  106. package/build/components/sidebar-dataviews/custom-dataviews-list.js +191 -0
  107. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -0
  108. package/build/components/sidebar-dataviews/dataview-item.js +71 -0
  109. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -0
  110. package/build/components/sidebar-dataviews/default-views.js +65 -0
  111. package/build/components/sidebar-dataviews/default-views.js.map +1 -0
  112. package/build/components/sidebar-dataviews/index.js +21 -38
  113. package/build/components/sidebar-dataviews/index.js.map +1 -1
  114. package/build/components/sidebar-edit-mode/default-sidebar.js +2 -6
  115. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  116. package/build/components/sidebar-edit-mode/index.js +6 -5
  117. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  118. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +18 -29
  119. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  120. package/build/components/sidebar-edit-mode/page-panels/hooks.js +22 -8
  121. package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  122. package/build/components/sidebar-edit-mode/page-panels/page-status.js +8 -5
  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 +5 -8
  125. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  126. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +6 -14
  127. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  128. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +4 -12
  129. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -1
  130. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +2 -6
  131. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  132. package/build/components/sidebar-edit-mode/settings-header/index.js +10 -6
  133. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  134. package/build/components/sidebar-edit-mode/template-panel/hooks.js +3 -3
  135. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  136. package/build/components/sidebar-navigation-screen-global-styles/index.js +1 -1
  137. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
  139. package/build/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-page/index.js +23 -4
  141. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  142. package/build/components/sidebar-navigation-screen-page/page-details.js +3 -11
  143. package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
  144. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  145. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  146. package/build/components/site-hub/index.js +18 -6
  147. package/build/components/site-hub/index.js.map +1 -1
  148. package/build/components/start-template-options/index.js +12 -16
  149. package/build/components/start-template-options/index.js.map +1 -1
  150. package/build/components/style-book/index.js +22 -12
  151. package/build/components/style-book/index.js.map +1 -1
  152. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +150 -55
  153. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  154. package/build/components/template-part-converter/convert-to-regular.js +1 -1
  155. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  156. package/build/components/welcome-guide/page.js +2 -2
  157. package/build/components/welcome-guide/page.js.map +1 -1
  158. package/build/components/welcome-guide/template.js +6 -3
  159. package/build/components/welcome-guide/template.js.map +1 -1
  160. package/build/hooks/commands/use-edit-mode-commands.js +24 -14
  161. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  162. package/build/hooks/push-changes-to-global-styles/index.js +3 -1
  163. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  164. package/build/hooks/template-part-edit.js +6 -2
  165. package/build/hooks/template-part-edit.js.map +1 -1
  166. package/build/index.js +0 -3
  167. package/build/index.js.map +1 -1
  168. package/build/store/actions.js +39 -83
  169. package/build/store/actions.js.map +1 -1
  170. package/build/store/private-actions.js +2 -27
  171. package/build/store/private-actions.js.map +1 -1
  172. package/build/store/private-selectors.js +0 -23
  173. package/build/store/private-selectors.js.map +1 -1
  174. package/build/store/reducer.js +1 -40
  175. package/build/store/reducer.js.map +1 -1
  176. package/build/store/selectors.js +33 -67
  177. package/build/store/selectors.js.map +1 -1
  178. package/build/utils/constants.js +3 -14
  179. package/build/utils/constants.js.map +1 -1
  180. package/build-module/components/actions/index.js +113 -14
  181. package/build-module/components/actions/index.js.map +1 -1
  182. package/build-module/components/add-new-template/new-template.js +0 -7
  183. package/build-module/components/add-new-template/new-template.js.map +1 -1
  184. package/build-module/components/block-editor/site-editor-canvas.js +7 -2
  185. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  186. package/build-module/components/block-editor/use-site-editor-settings.js +54 -62
  187. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  188. package/build-module/components/dataviews/add-filter.js +84 -0
  189. package/build-module/components/dataviews/add-filter.js.map +1 -0
  190. package/build-module/components/dataviews/constants.js +6 -0
  191. package/build-module/components/dataviews/constants.js.map +1 -0
  192. package/build-module/components/dataviews/dataviews.js +29 -9
  193. package/build-module/components/dataviews/dataviews.js.map +1 -1
  194. package/build-module/components/dataviews/filter-summary.js +55 -0
  195. package/build-module/components/dataviews/filter-summary.js.map +1 -0
  196. package/build-module/components/dataviews/filters.js +37 -48
  197. package/build-module/components/dataviews/filters.js.map +1 -1
  198. package/build-module/components/dataviews/index.js +1 -1
  199. package/build-module/components/dataviews/index.js.map +1 -1
  200. package/build-module/components/dataviews/item-actions.js +142 -20
  201. package/build-module/components/dataviews/item-actions.js.map +1 -1
  202. package/build-module/components/dataviews/pagination.js +7 -2
  203. package/build-module/components/dataviews/pagination.js.map +1 -1
  204. package/build-module/components/dataviews/reset-filters.js +26 -0
  205. package/build-module/components/dataviews/reset-filters.js.map +1 -0
  206. package/build-module/components/dataviews/search.js +1 -0
  207. package/build-module/components/dataviews/search.js.map +1 -1
  208. package/build-module/components/dataviews/view-actions.js +50 -33
  209. package/build-module/components/dataviews/view-actions.js.map +1 -1
  210. package/build-module/components/dataviews/view-grid.js +49 -26
  211. package/build-module/components/dataviews/view-grid.js.map +1 -1
  212. package/build-module/components/dataviews/view-list.js +132 -16
  213. package/build-module/components/dataviews/view-list.js.map +1 -1
  214. package/build-module/components/dataviews/view-side-by-side.js +12 -0
  215. package/build-module/components/dataviews/view-side-by-side.js.map +1 -0
  216. package/build-module/components/editor/index.js +55 -59
  217. package/build-module/components/editor/index.js.map +1 -1
  218. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  219. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -1
  220. package/build-module/components/global-styles/font-library-modal/utils/index.js +14 -2
  221. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  222. package/build-module/components/global-styles/header.js +4 -2
  223. package/build-module/components/global-styles/header.js.map +1 -1
  224. package/build-module/components/global-styles/screen-block-list.js +23 -17
  225. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  226. package/build-module/components/global-styles/screen-revisions/index.js +67 -25
  227. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  228. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +51 -24
  229. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  230. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +9 -3
  231. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  232. package/build-module/components/global-styles/screen-root.js +3 -3
  233. package/build-module/components/global-styles/screen-root.js.map +1 -1
  234. package/build-module/components/global-styles/ui.js +31 -39
  235. package/build-module/components/global-styles/ui.js.map +1 -1
  236. package/build-module/components/global-styles-renderer/index.js +1 -1
  237. package/build-module/components/global-styles-renderer/index.js.map +1 -1
  238. package/build-module/components/header-edit-mode/document-actions/index.js +21 -16
  239. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  240. package/build-module/components/header-edit-mode/document-tools/index.js +152 -0
  241. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -0
  242. package/build-module/components/header-edit-mode/index.js +54 -121
  243. package/build-module/components/header-edit-mode/index.js.map +1 -1
  244. package/build-module/components/header-edit-mode/more-menu/index.js +1 -1
  245. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  246. package/build-module/components/header-edit-mode/more-menu/site-export.js +2 -6
  247. package/build-module/components/header-edit-mode/more-menu/site-export.js.map +1 -1
  248. package/build-module/components/layout/index.js +5 -20
  249. package/build-module/components/layout/index.js.map +1 -1
  250. package/build-module/components/list/added-by.js +45 -56
  251. package/build-module/components/list/added-by.js.map +1 -1
  252. package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +11 -15
  253. package/build-module/components/page-content-focus-notifications/back-to-page-notification.js.map +1 -0
  254. package/build-module/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  255. package/build-module/components/page-content-focus-notifications/edit-template-notification.js.map +1 -0
  256. package/build-module/components/page-content-focus-notifications/index.js +14 -0
  257. package/build-module/components/page-content-focus-notifications/index.js.map +1 -0
  258. package/build-module/components/page-main/index.js +2 -1
  259. package/build-module/components/page-main/index.js.map +1 -1
  260. package/build-module/components/page-pages/index.js +141 -90
  261. package/build-module/components/page-pages/index.js.map +1 -1
  262. package/build-module/components/page-pages/side-editor.js +17 -0
  263. package/build-module/components/page-pages/side-editor.js.map +1 -0
  264. package/build-module/components/page-patterns/grid-item.js +2 -2
  265. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  266. package/build-module/components/page-patterns/patterns-list.js +4 -4
  267. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  268. package/build-module/components/page-patterns/use-patterns.js +3 -3
  269. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  270. package/build-module/components/page-templates/dataviews-templates.js +308 -0
  271. package/build-module/components/page-templates/dataviews-templates.js.map +1 -0
  272. package/build-module/components/page-templates/template-actions.js +157 -0
  273. package/build-module/components/page-templates/template-actions.js.map +1 -0
  274. package/build-module/components/preferences-modal/index.js +1 -1
  275. package/build-module/components/preferences-modal/index.js.map +1 -1
  276. package/build-module/components/save-button/index.js +11 -8
  277. package/build-module/components/save-button/index.js.map +1 -1
  278. package/build-module/components/save-hub/index.js +14 -0
  279. package/build-module/components/save-hub/index.js.map +1 -1
  280. package/build-module/components/sidebar/index.js +1 -2
  281. package/build-module/components/sidebar/index.js.map +1 -1
  282. package/build-module/components/sidebar-dataviews/add-new-view.js +116 -0
  283. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -0
  284. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +182 -0
  285. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -0
  286. package/build-module/components/sidebar-dataviews/dataview-item.js +63 -0
  287. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -0
  288. package/build-module/components/sidebar-dataviews/default-views.js +57 -0
  289. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -0
  290. package/build-module/components/sidebar-dataviews/index.js +22 -39
  291. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  292. package/build-module/components/sidebar-edit-mode/default-sidebar.js +2 -6
  293. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  294. package/build-module/components/sidebar-edit-mode/index.js +6 -5
  295. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  296. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +20 -31
  297. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  298. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +21 -7
  299. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  300. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +9 -6
  301. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  302. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +6 -8
  303. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  304. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +8 -16
  305. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -1
  306. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +5 -13
  307. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -1
  308. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +2 -6
  309. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  310. package/build-module/components/sidebar-edit-mode/settings-header/index.js +10 -6
  311. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  312. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +4 -4
  313. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  314. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +1 -1
  315. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  316. package/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
  317. package/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js.map +1 -1
  318. package/build-module/components/sidebar-navigation-screen-page/index.js +23 -4
  319. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  320. package/build-module/components/sidebar-navigation-screen-page/page-details.js +3 -11
  321. package/build-module/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
  322. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -2
  323. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  324. package/build-module/components/site-hub/index.js +19 -7
  325. package/build-module/components/site-hub/index.js.map +1 -1
  326. package/build-module/components/start-template-options/index.js +13 -16
  327. package/build-module/components/start-template-options/index.js.map +1 -1
  328. package/build-module/components/style-book/index.js +22 -12
  329. package/build-module/components/style-book/index.js.map +1 -1
  330. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +150 -56
  331. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  332. package/build-module/components/template-part-converter/convert-to-regular.js +1 -1
  333. package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
  334. package/build-module/components/welcome-guide/page.js +2 -2
  335. package/build-module/components/welcome-guide/page.js.map +1 -1
  336. package/build-module/components/welcome-guide/template.js +6 -3
  337. package/build-module/components/welcome-guide/template.js.map +1 -1
  338. package/build-module/hooks/commands/use-edit-mode-commands.js +24 -14
  339. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  340. package/build-module/hooks/push-changes-to-global-styles/index.js +4 -2
  341. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  342. package/build-module/hooks/template-part-edit.js +6 -2
  343. package/build-module/hooks/template-part-edit.js.map +1 -1
  344. package/build-module/index.js +0 -3
  345. package/build-module/index.js.map +1 -1
  346. package/build-module/store/actions.js +37 -80
  347. package/build-module/store/actions.js.map +1 -1
  348. package/build-module/store/private-actions.js +1 -25
  349. package/build-module/store/private-actions.js.map +1 -1
  350. package/build-module/store/private-selectors.js +0 -22
  351. package/build-module/store/private-selectors.js.map +1 -1
  352. package/build-module/store/reducer.js +1 -38
  353. package/build-module/store/reducer.js.map +1 -1
  354. package/build-module/store/selectors.js +27 -62
  355. package/build-module/store/selectors.js.map +1 -1
  356. package/build-module/utils/constants.js +1 -11
  357. package/build-module/utils/constants.js.map +1 -1
  358. package/build-style/style-rtl.css +221 -181
  359. package/build-style/style.css +221 -181
  360. package/package.json +41 -41
  361. package/src/components/actions/index.js +150 -14
  362. package/src/components/add-new-template/new-template.js +0 -5
  363. package/src/components/block-editor/site-editor-canvas.js +8 -2
  364. package/src/components/block-editor/style.scss +0 -87
  365. package/src/components/block-editor/use-site-editor-settings.js +68 -89
  366. package/src/components/dataviews/README.md +80 -83
  367. package/src/components/dataviews/add-filter.js +108 -0
  368. package/src/components/dataviews/constants.js +5 -0
  369. package/src/components/dataviews/dataviews.js +28 -10
  370. package/src/components/dataviews/filter-summary.js +79 -0
  371. package/src/components/dataviews/filters.js +48 -58
  372. package/src/components/dataviews/index.js +1 -1
  373. package/src/components/dataviews/item-actions.js +169 -30
  374. package/src/components/dataviews/pagination.js +9 -4
  375. package/src/components/dataviews/reset-filters.js +26 -0
  376. package/src/components/dataviews/search.js +1 -0
  377. package/src/components/dataviews/style.scss +89 -9
  378. package/src/components/dataviews/view-actions.js +77 -49
  379. package/src/components/dataviews/view-grid.js +63 -38
  380. package/src/components/dataviews/view-list.js +182 -18
  381. package/src/components/dataviews/view-side-by-side.js +9 -0
  382. package/src/components/editor/index.js +135 -123
  383. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +1 -1
  384. package/src/components/global-styles/font-library-modal/utils/index.js +20 -9
  385. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +46 -15
  386. package/src/components/global-styles/font-library-modal/utils/test/wpKebabCase.spec.js +28 -0
  387. package/src/components/global-styles/header.js +2 -1
  388. package/src/components/global-styles/screen-block-list.js +37 -26
  389. package/src/components/global-styles/screen-revisions/index.js +91 -35
  390. package/src/components/global-styles/screen-revisions/revisions-buttons.js +65 -45
  391. package/src/components/global-styles/screen-revisions/style.scss +52 -28
  392. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +15 -6
  393. package/src/components/global-styles/screen-root.js +2 -1
  394. package/src/components/global-styles/style.scss +0 -11
  395. package/src/components/global-styles/ui.js +60 -75
  396. package/src/components/global-styles-renderer/index.js +1 -1
  397. package/src/components/header-edit-mode/document-actions/index.js +20 -18
  398. package/src/components/header-edit-mode/document-tools/index.js +201 -0
  399. package/src/components/header-edit-mode/index.js +87 -184
  400. package/src/components/header-edit-mode/more-menu/index.js +1 -1
  401. package/src/components/header-edit-mode/more-menu/site-export.js +2 -6
  402. package/src/components/header-edit-mode/style.scss +35 -2
  403. package/src/components/layout/index.js +4 -11
  404. package/src/components/layout/style.scss +6 -18
  405. package/src/components/list/added-by.js +24 -64
  406. package/src/components/list/style.scss +11 -13
  407. package/src/components/{page-content-focus-manager → page-content-focus-notifications}/back-to-page-notification.js +10 -22
  408. package/src/components/{page-content-focus-manager → page-content-focus-notifications}/edit-template-notification.js +9 -13
  409. package/src/components/page-content-focus-notifications/index.js +14 -0
  410. package/src/components/page-main/index.js +6 -1
  411. package/src/components/page-pages/index.js +167 -91
  412. package/src/components/page-pages/side-editor.js +14 -0
  413. package/src/components/page-patterns/grid-item.js +3 -3
  414. package/src/components/page-patterns/patterns-list.js +10 -4
  415. package/src/components/page-patterns/use-patterns.js +4 -3
  416. package/src/components/page-templates/dataviews-templates.js +345 -0
  417. package/src/components/page-templates/style.scss +13 -0
  418. package/src/components/page-templates/template-actions.js +209 -0
  419. package/src/components/preferences-modal/index.js +1 -1
  420. package/src/components/save-button/index.js +37 -24
  421. package/src/components/save-hub/index.js +15 -0
  422. package/src/components/save-hub/style.scss +7 -0
  423. package/src/components/sidebar/index.js +1 -2
  424. package/src/components/sidebar-dataviews/add-new-view.js +141 -0
  425. package/src/components/sidebar-dataviews/custom-dataviews-list.js +229 -0
  426. package/src/components/sidebar-dataviews/dataview-item.js +67 -0
  427. package/src/components/sidebar-dataviews/default-views.js +59 -0
  428. package/src/components/sidebar-dataviews/index.js +36 -45
  429. package/src/components/sidebar-dataviews/style.scss +29 -0
  430. package/src/components/sidebar-edit-mode/default-sidebar.js +6 -6
  431. package/src/components/sidebar-edit-mode/index.js +13 -9
  432. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +31 -57
  433. package/src/components/sidebar-edit-mode/page-panels/hooks.js +20 -9
  434. package/src/components/sidebar-edit-mode/page-panels/page-status.js +6 -6
  435. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +10 -8
  436. package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +13 -12
  437. package/src/components/sidebar-edit-mode/page-panels/style.scss +14 -19
  438. package/src/components/sidebar-edit-mode/page-panels/swap-template-button.js +10 -9
  439. package/src/components/sidebar-edit-mode/plugin-sidebar/index.js +6 -6
  440. package/src/components/sidebar-edit-mode/settings-header/index.js +8 -9
  441. package/src/components/sidebar-edit-mode/template-panel/hooks.js +11 -7
  442. package/src/components/sidebar-navigation-screen/style.scss +1 -0
  443. package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -1
  444. package/src/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js +1 -1
  445. package/src/components/sidebar-navigation-screen-page/index.js +24 -3
  446. package/src/components/sidebar-navigation-screen-page/page-details.js +4 -17
  447. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -2
  448. package/src/components/sidebar-navigation-screen-template/style.scss +6 -1
  449. package/src/components/site-hub/index.js +9 -8
  450. package/src/components/start-template-options/index.js +14 -12
  451. package/src/components/style-book/index.js +48 -35
  452. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +182 -63
  453. package/src/components/template-part-converter/convert-to-regular.js +1 -1
  454. package/src/components/welcome-guide/page.js +2 -2
  455. package/src/components/welcome-guide/template.js +4 -2
  456. package/src/hooks/commands/use-edit-mode-commands.js +22 -16
  457. package/src/hooks/push-changes-to-global-styles/index.js +13 -6
  458. package/src/hooks/template-part-edit.js +4 -2
  459. package/src/index.js +0 -8
  460. package/src/store/actions.js +42 -96
  461. package/src/store/private-actions.js +1 -24
  462. package/src/store/private-selectors.js +0 -22
  463. package/src/store/reducer.js +0 -39
  464. package/src/store/selectors.js +43 -95
  465. package/src/store/test/actions.js +14 -169
  466. package/src/store/test/reducer.js +0 -62
  467. package/src/store/test/selectors.js +0 -117
  468. package/src/style.scss +2 -0
  469. package/src/utils/constants.js +1 -11
  470. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -77
  471. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +0 -1
  472. package/build/components/block-editor/block-editor-provider/index.js +0 -31
  473. package/build/components/block-editor/block-editor-provider/index.js.map +0 -1
  474. package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -110
  475. package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +0 -1
  476. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -84
  477. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +0 -1
  478. package/build/components/block-editor/index.js +0 -30
  479. package/build/components/block-editor/index.js.map +0 -1
  480. package/build/components/dataviews/in-filter.js +0 -49
  481. package/build/components/dataviews/in-filter.js.map +0 -1
  482. package/build/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
  483. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -50
  484. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
  485. package/build/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
  486. package/build/components/page-content-focus-manager/index.js +0 -61
  487. package/build/components/page-content-focus-manager/index.js.map +0 -1
  488. package/build/components/page-pages/default-views.js +0 -62
  489. package/build/components/page-pages/default-views.js.map +0 -1
  490. package/build/components/sidebar-edit-mode/page-panels/publish-date.js +0 -87
  491. package/build/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
  492. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -69
  493. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +0 -1
  494. package/build-module/components/block-editor/block-editor-provider/index.js +0 -23
  495. package/build-module/components/block-editor/block-editor-provider/index.js.map +0 -1
  496. package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -102
  497. package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +0 -1
  498. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -78
  499. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +0 -1
  500. package/build-module/components/block-editor/index.js +0 -22
  501. package/build-module/components/block-editor/index.js.map +0 -1
  502. package/build-module/components/dataviews/in-filter.js +0 -41
  503. package/build-module/components/dataviews/in-filter.js.map +0 -1
  504. package/build-module/components/page-content-focus-manager/back-to-page-notification.js.map +0 -1
  505. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -43
  506. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +0 -1
  507. package/build-module/components/page-content-focus-manager/edit-template-notification.js.map +0 -1
  508. package/build-module/components/page-content-focus-manager/index.js +0 -52
  509. package/build-module/components/page-content-focus-manager/index.js.map +0 -1
  510. package/build-module/components/page-pages/default-views.js +0 -55
  511. package/build-module/components/page-pages/default-views.js.map +0 -1
  512. package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js +0 -80
  513. package/build-module/components/sidebar-edit-mode/page-panels/publish-date.js.map +0 -1
  514. package/src/components/block-editor/block-editor-provider/default-block-editor-provider.js +0 -75
  515. package/src/components/block-editor/block-editor-provider/index.js +0 -29
  516. package/src/components/block-editor/block-editor-provider/navigation-block-editor-provider.js +0 -114
  517. package/src/components/block-editor/block-editor-provider/test/use-page-content-blocks.js +0 -116
  518. package/src/components/block-editor/block-editor-provider/use-page-content-blocks.js +0 -90
  519. package/src/components/block-editor/index.js +0 -28
  520. package/src/components/dataviews/in-filter.js +0 -45
  521. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +0 -52
  522. package/src/components/page-content-focus-manager/index.js +0 -51
  523. package/src/components/page-pages/default-views.js +0 -60
  524. package/src/components/sidebar-edit-mode/page-panels/publish-date.js +0 -94
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useSelect","useDispatch","Button","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","__experimentalHStack","HStack","useReducedMotion","__","store","blockEditorStore","coreStore","decodeEntities","forwardRef","search","external","commandsStore","displayShortcut","editSiteStore","SiteIcon","unlock","HUB_ANIMATION_DURATION","SiteHub","isTransparent","restProps","ref","canvasMode","dashboardLink","homeUrl","siteTitle","select","getCanvasMode","getSettings","getSite","getUnstableBase","__experimentalDashboardLink","home","title","open","openCommandCenter","disableMotion","setCanvasMode","__experimentalSetPreviewDeviceType","setPreviewDeviceType","clearSelectedBlock","isBackToDashboardButton","siteIconButtonProps","href","label","role","onClick","event","preventDefault","createElement","div","className","initial","transition","type","duration","ease","justify","alignment","spacing","layout","animate","scale","whileHover","opacity","exit","delay","target","icon","shortcut","primary"],"sources":["@wordpress/edit-site/src/components/site-hub/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { forwardRef } from '@wordpress/element';\nimport { search, external } from '@wordpress/icons';\nimport { store as commandsStore } from '@wordpress/commands';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport SiteIcon from '../site-icon';\nimport { unlock } from '../../lock-unlock';\n\nconst HUB_ANIMATION_DURATION = 0.3;\n\nconst SiteHub = forwardRef( ( { isTransparent, ...restProps }, ref ) => {\n\tconst { canvasMode, dashboardLink, homeUrl, siteTitle } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCanvasMode, getSettings } = unlock(\n\t\t\t\tselect( editSiteStore )\n\t\t\t);\n\n\t\t\tconst {\n\t\t\t\tgetSite,\n\t\t\t\tgetUnstableBase, // Site index.\n\t\t\t} = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tcanvasMode: getCanvasMode(),\n\t\t\t\tdashboardLink:\n\t\t\t\t\tgetSettings().__experimentalDashboardLink || 'index.php',\n\t\t\t\thomeUrl: getUnstableBase()?.home,\n\t\t\t\tsiteTitle: getSite()?.title,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst { open: openCommandCenter } = useDispatch( commandsStore );\n\n\tconst disableMotion = useReducedMotion();\n\tconst {\n\t\tsetCanvasMode,\n\t\t__experimentalSetPreviewDeviceType: setPreviewDeviceType,\n\t} = unlock( useDispatch( editSiteStore ) );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst isBackToDashboardButton = canvasMode === 'view';\n\tconst siteIconButtonProps = isBackToDashboardButton\n\t\t? {\n\t\t\t\thref: dashboardLink,\n\t\t\t\tlabel: __( 'Go to the Dashboard' ),\n\t\t }\n\t\t: {\n\t\t\t\thref: dashboardLink, // We need to keep the `href` here so the component doesn't remount as a `<button>` and break the animation.\n\t\t\t\trole: 'button',\n\t\t\t\tlabel: __( 'Open Navigation' ),\n\t\t\t\tonClick: ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( canvasMode === 'edit' ) {\n\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\tsetPreviewDeviceType( 'Desktop' );\n\t\t\t\t\t\tsetCanvasMode( 'view' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t };\n\n\treturn (\n\t\t<motion.div\n\t\t\tref={ ref }\n\t\t\t{ ...restProps }\n\t\t\tclassName={ classnames(\n\t\t\t\t'edit-site-site-hub',\n\t\t\t\trestProps.className\n\t\t\t) }\n\t\t\tinitial={ false }\n\t\t\ttransition={ {\n\t\t\t\ttype: 'tween',\n\t\t\t\tduration: disableMotion ? 0 : HUB_ANIMATION_DURATION,\n\t\t\t\tease: 'easeOut',\n\t\t\t} }\n\t\t>\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\talignment=\"center\"\n\t\t\t\tclassName=\"edit-site-site-hub__container\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\tclassName=\"edit-site-site-hub__text-content\"\n\t\t\t\t\tspacing=\"0\"\n\t\t\t\t>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'edit-site-site-hub__view-mode-toggle-container',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'has-transparent-background': isTransparent,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tlayout\n\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\tduration: disableMotion\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: HUB_ANIMATION_DURATION,\n\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{ ...siteIconButtonProps }\n\t\t\t\t\t\t\tclassName=\"edit-site-layout__view-mode-toggle\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\tinitial={ false }\n\t\t\t\t\t\t\t\tanimate={ {\n\t\t\t\t\t\t\t\t\tscale: canvasMode === 'view' ? 0.5 : 1,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\twhileHover={ {\n\t\t\t\t\t\t\t\t\tscale: canvasMode === 'view' ? 0.5 : 0.96,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\t\t\tduration: disableMotion\n\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t: HUB_ANIMATION_DURATION,\n\t\t\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SiteIcon className=\"edit-site-layout__view-mode-toggle-icon\" />\n\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</motion.div>\n\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tlayout={ canvasMode === 'edit' }\n\t\t\t\t\t\t\tanimate={ {\n\t\t\t\t\t\t\t\topacity: canvasMode === 'view' ? 1 : 0,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\texit={ {\n\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'edit-site-site-hub__site-title',\n\t\t\t\t\t\t\t\t{ 'is-transparent': isTransparent }\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\t\tduration: disableMotion ? 0 : 0.2,\n\t\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t\t\tdelay: canvasMode === 'view' ? 0.1 : 0,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ decodeEntities( siteTitle ) }\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t{ canvasMode === 'view' && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\tlabel={ __( 'View site (opens in a new tab)' ) }\n\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t'View site (opens in a new tab)'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\tclassName=\"edit-site-site-hub__site-view-link\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t\t{ canvasMode === 'view' && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'edit-site-site-hub_toggle-command-center',\n\t\t\t\t\t\t\t{ 'is-transparent': isTransparent }\n\t\t\t\t\t\t) }\n\t\t\t\t\t\ticon={ search }\n\t\t\t\t\t\tonClick={ () => openCommandCenter() }\n\t\t\t\t\t\tlabel={ __( 'Open command palette' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</motion.div>\n\t);\n} );\n\nexport default SiteHub;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","useSelect","useDispatch","Button","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","__experimentalHStack","HStack","useReducedMotion","__","store","blockEditorStore","coreStore","decodeEntities","memo","search","external","commandsStore","displayShortcut","editSiteStore","SiteIcon","unlock","HUB_ANIMATION_DURATION","SiteHub","isTransparent","className","canvasMode","dashboardLink","homeUrl","siteTitle","select","getCanvasMode","getSettings","getSite","getUnstableBase","__experimentalDashboardLink","home","title","open","openCommandCenter","disableMotion","setCanvasMode","__experimentalSetPreviewDeviceType","setPreviewDeviceType","clearSelectedBlock","isBackToDashboardButton","siteIconButtonProps","href","label","role","onClick","event","preventDefault","createElement","div","variants","isDistractionFree","x","isDistractionFreeHovering","view","edit","initial","transition","type","duration","ease","justify","alignment","spacing","layout","animate","scale","whileHover","opacity","exit","delay","target","icon","shortcut","primary"],"sources":["@wordpress/edit-site/src/components/site-hub/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { memo } from '@wordpress/element';\nimport { search, external } from '@wordpress/icons';\nimport { store as commandsStore } from '@wordpress/commands';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport SiteIcon from '../site-icon';\nimport { unlock } from '../../lock-unlock';\n\nconst HUB_ANIMATION_DURATION = 0.3;\n\nconst SiteHub = memo( ( { isTransparent, className } ) => {\n\tconst { canvasMode, dashboardLink, homeUrl, siteTitle } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCanvasMode, getSettings } = unlock(\n\t\t\t\tselect( editSiteStore )\n\t\t\t);\n\n\t\t\tconst {\n\t\t\t\tgetSite,\n\t\t\t\tgetUnstableBase, // Site index.\n\t\t\t} = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tcanvasMode: getCanvasMode(),\n\t\t\t\tdashboardLink:\n\t\t\t\t\tgetSettings().__experimentalDashboardLink || 'index.php',\n\t\t\t\thomeUrl: getUnstableBase()?.home,\n\t\t\t\tsiteTitle: getSite()?.title,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst { open: openCommandCenter } = useDispatch( commandsStore );\n\n\tconst disableMotion = useReducedMotion();\n\tconst {\n\t\tsetCanvasMode,\n\t\t__experimentalSetPreviewDeviceType: setPreviewDeviceType,\n\t} = unlock( useDispatch( editSiteStore ) );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst isBackToDashboardButton = canvasMode === 'view';\n\tconst siteIconButtonProps = isBackToDashboardButton\n\t\t? {\n\t\t\t\thref: dashboardLink,\n\t\t\t\tlabel: __( 'Go to the Dashboard' ),\n\t\t }\n\t\t: {\n\t\t\t\thref: dashboardLink, // We need to keep the `href` here so the component doesn't remount as a `<button>` and break the animation.\n\t\t\t\trole: 'button',\n\t\t\t\tlabel: __( 'Open Navigation' ),\n\t\t\t\tonClick: ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( canvasMode === 'edit' ) {\n\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\tsetPreviewDeviceType( 'Desktop' );\n\t\t\t\t\t\tsetCanvasMode( 'view' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t };\n\n\treturn (\n\t\t<motion.div\n\t\t\tclassName={ classnames( 'edit-site-site-hub', className ) }\n\t\t\tvariants={ {\n\t\t\t\tisDistractionFree: { x: '-100%' },\n\t\t\t\tisDistractionFreeHovering: { x: 0 },\n\t\t\t\tview: { x: 0 },\n\t\t\t\tedit: { x: 0 },\n\t\t\t} }\n\t\t\tinitial={ false }\n\t\t\ttransition={ {\n\t\t\t\ttype: 'tween',\n\t\t\t\tduration: disableMotion ? 0 : HUB_ANIMATION_DURATION,\n\t\t\t\tease: 'easeOut',\n\t\t\t} }\n\t\t>\n\t\t\t<HStack\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\talignment=\"center\"\n\t\t\t\tclassName=\"edit-site-site-hub__container\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\tclassName=\"edit-site-site-hub__text-content\"\n\t\t\t\t\tspacing=\"0\"\n\t\t\t\t>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'edit-site-site-hub__view-mode-toggle-container',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'has-transparent-background': isTransparent,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tlayout\n\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\tduration: disableMotion\n\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t: HUB_ANIMATION_DURATION,\n\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{ ...siteIconButtonProps }\n\t\t\t\t\t\t\tclassName=\"edit-site-layout__view-mode-toggle\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\tinitial={ false }\n\t\t\t\t\t\t\t\tanimate={ {\n\t\t\t\t\t\t\t\t\tscale: canvasMode === 'view' ? 0.5 : 1,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\twhileHover={ {\n\t\t\t\t\t\t\t\t\tscale: canvasMode === 'view' ? 0.5 : 0.96,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\t\t\tduration: disableMotion\n\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t: HUB_ANIMATION_DURATION,\n\t\t\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SiteIcon className=\"edit-site-layout__view-mode-toggle-icon\" />\n\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</motion.div>\n\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tlayout={ canvasMode === 'edit' }\n\t\t\t\t\t\t\tanimate={ {\n\t\t\t\t\t\t\t\topacity: canvasMode === 'view' ? 1 : 0,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\texit={ {\n\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'edit-site-site-hub__site-title',\n\t\t\t\t\t\t\t\t{ 'is-transparent': isTransparent }\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\t\tduration: disableMotion ? 0 : 0.2,\n\t\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t\t\tdelay: canvasMode === 'view' ? 0.1 : 0,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ decodeEntities( siteTitle ) }\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t{ canvasMode === 'view' && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\tlabel={ __( 'View site (opens in a new tab)' ) }\n\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t'View site (opens in a new tab)'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\tclassName=\"edit-site-site-hub__site-view-link\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t\t{ canvasMode === 'view' && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'edit-site-site-hub_toggle-command-center',\n\t\t\t\t\t\t\t{ 'is-transparent': isTransparent }\n\t\t\t\t\t\t) }\n\t\t\t\t\t\ticon={ search }\n\t\t\t\t\t\tonClick={ () => openCommandCenter() }\n\t\t\t\t\t\tlabel={ __( 'Open command palette' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t</motion.div>\n\t);\n} );\n\nexport default SiteHub;\n"],"mappings":"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"}
@@ -4,15 +4,13 @@ import { createElement } from "react";
4
4
  */
5
5
  import { Modal, Flex, FlexItem, Button } from '@wordpress/components';
6
6
  import { __ } from '@wordpress/i18n';
7
- import { useState, useEffect, useMemo } from '@wordpress/element';
7
+ import { useState, useMemo } from '@wordpress/element';
8
8
  import { __experimentalBlockPatternsList as BlockPatternsList, store as blockEditorStore } from '@wordpress/block-editor';
9
9
  import { useSelect } from '@wordpress/data';
10
10
  import { useAsyncList } from '@wordpress/compose';
11
11
  import { store as preferencesStore } from '@wordpress/preferences';
12
12
  import { parse } from '@wordpress/blocks';
13
13
  import { store as coreStore, useEntityBlockEditor } from '@wordpress/core-data';
14
- import apiFetch from '@wordpress/api-fetch';
15
- import { addQueryArgs } from '@wordpress/url';
16
14
 
17
15
  /**
18
16
  * Internal dependencies
@@ -20,19 +18,18 @@ import { addQueryArgs } from '@wordpress/url';
20
18
  import { store as editSiteStore } from '../../store';
21
19
  import { TEMPLATE_POST_TYPE } from '../../utils/constants';
22
20
  function useFallbackTemplateContent(slug, isCustom = false) {
23
- const [templateContent, setTemplateContent] = useState('');
24
- useEffect(() => {
25
- apiFetch({
26
- path: addQueryArgs('/wp/v2/templates/lookup', {
27
- slug,
28
- is_custom: isCustom,
29
- ignore_empty: true
30
- })
31
- }).then(({
32
- content
33
- }) => setTemplateContent(content.raw));
34
- }, [isCustom, slug]);
35
- return templateContent;
21
+ return useSelect(select => {
22
+ const {
23
+ getEntityRecord,
24
+ getDefaultTemplateId
25
+ } = select(coreStore);
26
+ const templateId = getDefaultTemplateId({
27
+ slug,
28
+ is_custom: isCustom,
29
+ ignore_empty: true
30
+ });
31
+ return templateId ? getEntityRecord('postType', TEMPLATE_POST_TYPE, templateId)?.content?.raw : undefined;
32
+ }, [slug, isCustom]);
36
33
  }
37
34
  function useStartPatterns(fallbackContent) {
38
35
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["Modal","Flex","FlexItem","Button","__","useState","useEffect","useMemo","__experimentalBlockPatternsList","BlockPatternsList","store","blockEditorStore","useSelect","useAsyncList","preferencesStore","parse","coreStore","useEntityBlockEditor","apiFetch","addQueryArgs","editSiteStore","TEMPLATE_POST_TYPE","useFallbackTemplateContent","slug","isCustom","templateContent","setTemplateContent","path","is_custom","ignore_empty","then","content","raw","useStartPatterns","fallbackContent","patterns","select","getEditedPostType","getEditedPostId","getEntityRecord","postId","postType","record","getSettings","__experimentalBlockPatterns","currentThemeStylesheet","getCurrentTheme","stylesheet","injectThemeAttributeInBlockTemplateContent","block","innerBlocks","find","innerBlock","name","map","attributes","theme","undefined","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, useEffect, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalBlockPatternsList as BlockPatternsList,\n\tstore as blockEditorStore,\n} 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';\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\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\tconst [ templateContent, setTemplateContent ] = useState( '' );\n\n\tuseEffect( () => {\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/templates/lookup', {\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} ).then( ( { content } ) => setTemplateContent( content.raw ) );\n\t}, [ isCustom, slug ] );\n\treturn templateContent;\n}\n\nfunction useStartPatterns( fallbackContent ) {\n\tconst { slug, patterns } = useSelect( ( select ) => {\n\t\tconst { getEditedPostType, getEditedPostId } = select( editSiteStore );\n\t\tconst { getEntityRecord } = select( coreStore );\n\t\tconst postId = getEditedPostId();\n\t\tconst postType = getEditedPostType();\n\t\tconst record = getEntityRecord( 'postType', postType, postId );\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tslug: record.slug,\n\t\t\tpatterns: getSettings().__experimentalBlockPatterns,\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":";AAAA;AACA;AACA;AACA,SAASA,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,QAAQ,uBAAuB;AACrE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,QAAQ,oBAAoB;AACjE,SACCC,+BAA+B,IAAIC,iBAAiB,EACpDC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASH,KAAK,IAAII,gBAAgB,QAAQ,wBAAwB;AAClE,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASL,KAAK,IAAIM,SAAS,EAAEC,oBAAoB,QAAQ,sBAAsB;AAC/E,OAAOC,QAAQ,MAAM,sBAAsB;AAC3C,SAASC,YAAY,QAAQ,gBAAgB;;AAE7C;AACA;AACA;AACA,SAAST,KAAK,IAAIU,aAAa,QAAQ,aAAa;AACpD,SAASC,kBAAkB,QAAQ,uBAAuB;AAE1D,SAASC,0BAA0BA,CAAEC,IAAI,EAAEC,QAAQ,GAAG,KAAK,EAAG;EAC7D,MAAM,CAAEC,eAAe,EAAEC,kBAAkB,CAAE,GAAGrB,QAAQ,CAAE,EAAG,CAAC;EAE9DC,SAAS,CAAE,MAAM;IAChBY,QAAQ,CAAE;MACTS,IAAI,EAAER,YAAY,CAAE,yBAAyB,EAAE;QAC9CI,IAAI;QACJK,SAAS,EAAEJ,QAAQ;QACnBK,YAAY,EAAE;MACf,CAAE;IACH,CAAE,CAAC,CAACC,IAAI,CAAE,CAAE;MAAEC;IAAQ,CAAC,KAAML,kBAAkB,CAAEK,OAAO,CAACC,GAAI,CAAE,CAAC;EACjE,CAAC,EAAE,CAAER,QAAQ,EAAED,IAAI,CAAG,CAAC;EACvB,OAAOE,eAAe;AACvB;AAEA,SAASQ,gBAAgBA,CAAEC,eAAe,EAAG;EAC5C,MAAM;IAAEX,IAAI;IAAEY;EAAS,CAAC,GAAGvB,SAAS,CAAIwB,MAAM,IAAM;IACnD,MAAM;MAAEC,iBAAiB;MAAEC;IAAgB,CAAC,GAAGF,MAAM,CAAEhB,aAAc,CAAC;IACtE,MAAM;MAAEmB;IAAgB,CAAC,GAAGH,MAAM,CAAEpB,SAAU,CAAC;IAC/C,MAAMwB,MAAM,GAAGF,eAAe,CAAC,CAAC;IAChC,MAAMG,QAAQ,GAAGJ,iBAAiB,CAAC,CAAC;IACpC,MAAMK,MAAM,GAAGH,eAAe,CAAE,UAAU,EAAEE,QAAQ,EAAED,MAAO,CAAC;IAC9D,MAAM;MAAEG;IAAY,CAAC,GAAGP,MAAM,CAAEzB,gBAAiB,CAAC;IAClD,OAAO;MACNY,IAAI,EAAEmB,MAAM,CAACnB,IAAI;MACjBY,QAAQ,EAAEQ,WAAW,CAAC,CAAC,CAACC;IACzB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,sBAAsB,GAAGjC,SAAS,CACrCwB,MAAM,IAAMA,MAAM,CAAEpB,SAAU,CAAC,CAAC8B,eAAe,CAAC,CAAC,CAACC,UACrD,CAAC;;EAED;EACA,SAASC,0CAA0CA,CAAEC,KAAK,EAAG;IAC5D,IACCA,KAAK,CAACC,WAAW,CAACC,IAAI,CACnBC,UAAU,IAAMA,UAAU,CAACC,IAAI,KAAK,oBACvC,CAAC,EACA;MACDJ,KAAK,CAACC,WAAW,GAAGD,KAAK,CAACC,WAAW,CAACI,GAAG,CAAIF,UAAU,IAAM;QAC5D,IACCA,UAAU,CAACC,IAAI,KAAK,oBAAoB,IACxCD,UAAU,CAACG,UAAU,CAACC,KAAK,KAAKC,SAAS,EACxC;UACDL,UAAU,CAACG,UAAU,CAACC,KAAK,GAAGX,sBAAsB;QACrD;QACA,OAAOO,UAAU;MAClB,CAAE,CAAC;IACJ;IAEA,IACCH,KAAK,CAACI,IAAI,KAAK,oBAAoB,IACnCJ,KAAK,CAACM,UAAU,CAACC,KAAK,KAAKC,SAAS,EACnC;MACDR,KAAK,CAACM,UAAU,CAACC,KAAK,GAAGX,sBAAsB;IAChD;IACA,OAAOI,KAAK;EACb;EAEA,OAAO1C,OAAO,CAAE,MAAM;IACrB;IACA,OAAO,CACN;MACC8C,IAAI,EAAE,UAAU;MAChBK,MAAM,EAAE3C,KAAK,CAAEmB,eAAgB,CAAC;MAChCyB,KAAK,EAAEvD,EAAE,CAAE,kBAAmB;IAC/B,CAAC,EACD,GAAG+B,QAAQ,CACTyB,MAAM,CAAIC,OAAO,IAAM;MACvB,OACCC,KAAK,CAACC,OAAO,CAAEF,OAAO,CAACG,aAAc,CAAC,IACtCH,OAAO,CAACG,aAAa,CAACC,IAAI,CAAIC,YAAY,IACzC3C,IAAI,CAAC4C,UAAU,CAAED,YAAa,CAC/B,CAAC;IAEH,CAAE,CAAC,CACFZ,GAAG,CAAIO,OAAO,IAAM;MACpB,OAAO;QACN,GAAGA,OAAO;QACVH,MAAM,EAAE3C,KAAK,CAAE8C,OAAO,CAAC9B,OAAQ,CAAC,CAACuB,GAAG,CAAIL,KAAK,IAC5CD,0CAA0C,CAAEC,KAAM,CACnD;MACD,CAAC;IACF,CAAE,CAAC,CACJ;EACF,CAAC,EAAE,CAAEf,eAAe,EAAEX,IAAI,EAAEY,QAAQ,CAAG,CAAC;AACzC;AAEA,SAASiC,gBAAgBA,CAAE;EAAElC,eAAe;EAAEmC,eAAe;EAAE5B;AAAS,CAAC,EAAG;EAC3E,MAAM,IAAM6B,QAAQ,CAAE,GAAGrD,oBAAoB,CAAE,UAAU,EAAEwB,QAAS,CAAC;EACrE,MAAM8B,aAAa,GAAGtC,gBAAgB,CAAEC,eAAgB,CAAC;EACzD,MAAMsC,kBAAkB,GAAG3D,YAAY,CAAE0D,aAAc,CAAC;EACxD,OACCE,aAAA,CAAChE,iBAAiB;IACjB8D,aAAa,EAAGA,aAAe;IAC/BG,aAAa,EAAGF,kBAAoB;IACpCG,cAAc,EAAGA,CAAEd,OAAO,EAAEH,MAAM,KAAM;MACvCY,QAAQ,CAAEZ,MAAM,EAAE;QAAEkB,SAAS,EAAEnB;MAAU,CAAE,CAAC;MAC5CY,eAAe,CAAC,CAAC;IAClB;EAAG,CACH,CAAC;AAEJ;AAEA,SAASQ,UAAUA,CAAE;EAAEtD,IAAI;EAAEC,QAAQ;EAAEsD,OAAO;EAAErC;AAAS,CAAC,EAAG;EAC5D,MAAMP,eAAe,GAAGZ,0BAA0B,CAAEC,IAAI,EAAEC,QAAS,CAAC;EACpE,IAAK,CAAEU,eAAe,EAAG;IACxB,OAAO,IAAI;EACZ;EACA,OACCuC,aAAA,CAACzE,KAAK;IACL+E,SAAS,EAAC,yCAAyC;IACnDpB,KAAK,EAAGvD,EAAE,CAAE,kBAAmB,CAAG;IAClC4E,UAAU,EAAG5E,EAAE,CAAE,QAAS,CAAG;IAC7B6E,YAAY,EAAC,cAAc;IAC3BC,cAAc,EAAGJ,OAAS;IAC1BK,YAAY,EAAG;EAAM,GAErBV,aAAA;IAAKM,SAAS,EAAC;EAAiD,GAC/DN,aAAA,CAACL,gBAAgB;IAChBlC,eAAe,EAAGA,eAAiB;IACnCX,IAAI,EAAGA,IAAM;IACbC,QAAQ,EAAGA,QAAU;IACrBiB,QAAQ,EAAGA,QAAU;IACrB4B,eAAe,EAAGA,CAAA,KAAM;MACvBS,OAAO,CAAC,CAAC;IACV;EAAG,CACH,CACG,CAAC,EACNL,aAAA,CAACxE,IAAI;IACJ8E,SAAS,EAAC,kDAAkD;IAC5DK,OAAO,EAAC,UAAU;IAClBC,QAAQ,EAAG;EAAO,GAElBZ,aAAA,CAACvE,QAAQ,QACRuE,aAAA,CAACtE,MAAM;IAACmF,OAAO,EAAC,UAAU;IAACC,OAAO,EAAGT;EAAS,GAC3C1E,EAAE,CAAE,MAAO,CACN,CACC,CACL,CACA,CAAC;AAEV;AAEA,MAAMoF,2BAA2B,GAAG;EACnCC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE;AACT,CAAC;AAED,eAAe,SAASC,oBAAoBA,CAAA,EAAG;EAC9C,MAAM,CAAEC,UAAU,EAAEC,aAAa,CAAE,GAAGxF,QAAQ,CAC7CmF,2BAA2B,CAACC,OAC7B,CAAC;EACD,MAAM;IAAEK,eAAe;IAAEvE,IAAI;IAAEC,QAAQ;IAAEiB;EAAS,CAAC,GAAG7B,SAAS,CAC5DwB,MAAM,IAAM;IACb,MAAM;MAAEC,iBAAiB;MAAEC;IAAgB,CAAC,GAC3CF,MAAM,CAAEhB,aAAc,CAAC;IACxB,MAAM2E,SAAS,GAAG1D,iBAAiB,CAAC,CAAC;IACrC,MAAMG,MAAM,GAAGF,eAAe,CAAC,CAAC;IAChC,MAAM;MAAE0D,qBAAqB;MAAEC;IAAwB,CAAC,GACvD7D,MAAM,CAAEpB,SAAU,CAAC;IACpB,MAAMkF,cAAc,GAAGF,qBAAqB,CAC3C,UAAU,EACVD,SAAS,EACTvD,MACD,CAAC;IACD,MAAM2D,QAAQ,GAAGF,uBAAuB,CACvC,UAAU,EACVF,SAAS,EACTvD,MACD,CAAC;IAED,OAAO;MACNsD,eAAe,EACd,CAAEK,QAAQ,IACV,EAAE,KAAKD,cAAc,CAACnE,OAAO,IAC7BV,kBAAkB,KAAK0E,SAAS,IAChC,CAAE3D,MAAM,CAAEtB,gBAAiB,CAAC,CAACsF,GAAG,CAC/B,gBAAgB,EAChB,cACD,CAAC;MACF7E,IAAI,EAAE2E,cAAc,CAAC3E,IAAI;MACzBC,QAAQ,EAAE0E,cAAc,CAACtE,SAAS;MAClCa,QAAQ,EAAEsD;IACX,CAAC;EACF,CAAC,EACD,EACD,CAAC;EAED,IACGH,UAAU,KAAKJ,2BAA2B,CAACC,OAAO,IACnD,CAAEK,eAAe,IAClBF,UAAU,KAAKJ,2BAA2B,CAACE,MAAM,EAChD;IACD,OAAO,IAAI;EACZ;EAEA,OACCjB,aAAA,CAACI,UAAU;IACVtD,IAAI,EAAGA,IAAM;IACbC,QAAQ,EAAGA,QAAU;IACrBiB,QAAQ,EAAGA,QAAU;IACrBqC,OAAO,EAAGA,CAAA,KACTe,aAAa,CAAEL,2BAA2B,CAACE,MAAO;EAClD,CACD,CAAC;AAEJ"}
1
+ {"version":3,"names":["Modal","Flex","FlexItem","Button","__","useState","useMemo","__experimentalBlockPatternsList","BlockPatternsList","store","blockEditorStore","useSelect","useAsyncList","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","postId","postType","record","getSettings","__experimentalBlockPatterns","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 {\n\t__experimentalBlockPatternsList as BlockPatternsList,\n\tstore as blockEditorStore,\n} 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 } = select( coreStore );\n\t\tconst postId = getEditedPostId();\n\t\tconst postType = getEditedPostType();\n\t\tconst record = getEntityRecord( 'postType', postType, postId );\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tslug: record.slug,\n\t\t\tpatterns: getSettings().__experimentalBlockPatterns,\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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"}
@@ -7,7 +7,7 @@ import classnames from 'classnames';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { __unstableComposite as Composite, __unstableUseCompositeState as useCompositeState, __unstableCompositeItem as CompositeItem, Disabled, TabPanel } from '@wordpress/components';
10
+ import { Disabled, TabPanel, privateApis as componentsPrivateApis } from '@wordpress/components';
11
11
  import { __, sprintf } from '@wordpress/i18n';
12
12
  import { getCategories, getBlockTypes, getBlockFromExample, createBlock } from '@wordpress/blocks';
13
13
  import { BlockList, privateApis as blockEditorPrivateApis, store as blockEditorStore, __unstableEditorStyles as EditorStyles, __unstableIframe as Iframe } from '@wordpress/block-editor';
@@ -25,6 +25,11 @@ const {
25
25
  ExperimentalBlockEditorProvider,
26
26
  useGlobalStyle
27
27
  } = unlock(blockEditorPrivateApis);
28
+ const {
29
+ CompositeV2: Composite,
30
+ CompositeItemV2: CompositeItem,
31
+ useCompositeStoreV2: useCompositeStore
32
+ } = unlock(componentsPrivateApis);
28
33
 
29
34
  // The content area of the Style Book is rendered within an iframe so that global styles
30
35
  // are applied to elements within the entire content area. To support elements that are
@@ -49,6 +54,8 @@ const STYLE_BOOK_IFRAME_STYLES = `
49
54
  padding: 16px;
50
55
  width: 100%;
51
56
  box-sizing: border-box;
57
+ scroll-margin-top: 32px;
58
+ scroll-margin-bottom: 32px;
52
59
  }
53
60
 
54
61
  .edit-site-style-book__example.is-selected {
@@ -254,7 +261,8 @@ const StyleBookBody = ({
254
261
  // translators: %s: Category of blocks, e.g. Text.
255
262
  __('Examples of blocks in the %s category'), title) : __('Examples of blocks'),
256
263
  isSelected: isSelected,
257
- onSelect: onSelect
264
+ onSelect: onSelect,
265
+ key: category
258
266
  }));
259
267
  };
260
268
  const Examples = memo(({
@@ -265,17 +273,17 @@ const Examples = memo(({
265
273
  isSelected,
266
274
  onSelect
267
275
  }) => {
268
- const composite = useCompositeState({
276
+ const compositeStore = useCompositeStore({
269
277
  orientation: 'vertical'
270
278
  });
271
279
  return createElement(Composite, {
272
- ...composite,
280
+ store: compositeStore,
273
281
  className: className,
274
- "aria-label": label
282
+ "aria-label": label,
283
+ role: "grid"
275
284
  }, examples.filter(example => category ? example.category === category : true).map(example => createElement(Example, {
276
285
  key: example.name,
277
286
  id: `example-${example.name}`,
278
- composite: composite,
279
287
  title: example.title,
280
288
  blocks: example.blocks,
281
289
  isSelected: isSelected(example.name),
@@ -285,7 +293,6 @@ const Examples = memo(({
285
293
  })));
286
294
  });
287
295
  const Example = ({
288
- composite,
289
296
  id,
290
297
  title,
291
298
  blocks,
@@ -300,8 +307,11 @@ const Example = ({
300
307
 
301
308
  // Cache the list of blocks to avoid additional processing when the component is re-rendered.
302
309
  const renderedBlocks = useMemo(() => Array.isArray(blocks) ? blocks : [blocks], [blocks]);
303
- return createElement(CompositeItem, {
304
- ...composite,
310
+ return createElement("div", {
311
+ role: "row"
312
+ }, createElement("div", {
313
+ role: "gridcell"
314
+ }, createElement(CompositeItem, {
305
315
  className: classnames('edit-site-style-book__example', {
306
316
  'is-selected': isSelected
307
317
  }),
@@ -309,9 +319,9 @@ const Example = ({
309
319
  "aria-label": sprintf(
310
320
  // translators: %s: Title of a block, e.g. Heading.
311
321
  __('Open %s styles in Styles panel'), title),
312
- onClick: onClick,
322
+ render: createElement("div", null),
313
323
  role: "button",
314
- as: "div"
324
+ onClick: onClick
315
325
  }, createElement("span", {
316
326
  className: "edit-site-style-book__example-title"
317
327
  }, title), createElement("div", {
@@ -324,7 +334,7 @@ const Example = ({
324
334
  settings: settings
325
335
  }, createElement(BlockList, {
326
336
  renderAppender: false
327
- })))));
337
+ })))))));
328
338
  };
329
339
  export default StyleBook;
330
340
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","__unstableComposite","Composite","__unstableUseCompositeState","useCompositeState","__unstableCompositeItem","CompositeItem","Disabled","TabPanel","__","sprintf","getCategories","getBlockTypes","getBlockFromExample","createBlock","BlockList","privateApis","blockEditorPrivateApis","store","blockEditorStore","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","useSelect","useResizeObserver","useMemo","useState","memo","ENTER","SPACE","unlock","EditorCanvasContainer","ExperimentalBlockEditorProvider","useGlobalStyle","STYLE_BOOK_IFRAME_STYLES","getExamples","headingsExample","name","title","category","blocks","content","level","otherExamples","filter","blockType","example","supports","inserter","map","StyleBook","enableResizing","isSelected","onClick","onSelect","showCloseButton","showTabs","resizeObserver","sizes","textColor","backgroundColor","examples","tabs","some","slug","icon","originalSettings","select","getSettings","settings","__unstableIsPreviewMode","createElement","closeButtonLabel","className","width","style","color","background","tab","StyleBookBody","isFocused","setIsFocused","buttonModeProps","role","onFocus","onBlur","onKeyDown","event","defaultPrevented","keyCode","preventDefault","readonly","buttonModeStyles","tabIndex","styles","Examples","label","composite","orientation","Example","key","id","renderedBlocks","Array","isArray","as","value","renderAppender"],"sources":["@wordpress/edit-site/src/components/style-book/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__unstableComposite as Composite,\n\t__unstableUseCompositeState as useCompositeState,\n\t__unstableCompositeItem as CompositeItem,\n\tDisabled,\n\tTabPanel,\n} from '@wordpress/components';\n\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tgetCategories,\n\tgetBlockTypes,\n\tgetBlockFromExample,\n\tcreateBlock,\n} from '@wordpress/blocks';\nimport {\n\tBlockList,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useResizeObserver } from '@wordpress/compose';\nimport { useMemo, useState, memo } from '@wordpress/element';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport EditorCanvasContainer from '../editor-canvas-container';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\n\n// The content area of the Style Book is rendered within an iframe so that global styles\n// are applied to elements within the entire content area. To support elements that are\n// not part of the block previews, such as headings and layout for the block previews,\n// additional CSS rules need to be passed into the iframe. These are hard-coded below.\n// Note that button styles are unset, and then focus rules from the `Button` component are\n// applied to the `button` element, targeted via `.edit-site-style-book__example`.\n// This is to ensure that browser default styles for buttons are not applied to the previews.\nconst STYLE_BOOK_IFRAME_STYLES = `\n\t.edit-site-style-book__examples {\n\t\tmax-width: 900px;\n\t\tmargin: 0 auto;\n\t}\n\n\t.edit-site-style-book__example {\n\t\tborder-radius: 2px;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 40px;\n\t\tmargin-bottom: 40px;\n\t\tpadding: 16px;\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.edit-site-style-book__example.is-selected {\n\t\tbox-shadow: 0 0 0 1px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));\n\t}\n\n\t.edit-site-style-book__example:focus:not(:disabled) {\n\t\tbox-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));\n\t\toutline: 3px solid transparent;\n\t}\n\n\t.edit-site-style-book__examples.is-wide .edit-site-style-book__example {\n\t\tflex-direction: row;\n\t}\n\n\t.edit-site-style-book__example-title {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n\t\tfont-size: 11px;\n\t\tfont-weight: 500;\n\t\tline-height: normal;\n\t\tmargin: 0;\n\t\ttext-align: left;\n\t\ttext-transform: uppercase;\n\t}\n\n\t.edit-site-style-book__examples.is-wide .edit-site-style-book__example-title {\n\t\ttext-align: right;\n\t\twidth: 120px;\n\t}\n\n\t.edit-site-style-book__example-preview {\n\t\twidth: 100%;\n\t}\n\n\t.edit-site-style-book__example-preview .block-editor-block-list__insertion-point,\n\t.edit-site-style-book__example-preview .block-list-appender {\n\t\tdisplay: none;\n\t}\n\n\t.edit-site-style-book__example-preview .is-root-container > .wp-block:first-child {\n\t\tmargin-top: 0;\n\t}\n\t.edit-site-style-book__example-preview .is-root-container > .wp-block:last-child {\n\t\tmargin-bottom: 0;\n\t}\n`;\n\nfunction getExamples() {\n\t// Use our own example for the Heading block so that we can show multiple\n\t// heading levels.\n\tconst headingsExample = {\n\t\tname: 'core/heading',\n\t\ttitle: __( 'Headings' ),\n\t\tcategory: 'text',\n\t\tblocks: [\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 1,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 2,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 3,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 4,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 5,\n\t\t\t} ),\n\t\t],\n\t};\n\n\tconst otherExamples = getBlockTypes()\n\t\t.filter( ( blockType ) => {\n\t\t\tconst { name, example, supports } = blockType;\n\t\t\treturn (\n\t\t\t\tname !== 'core/heading' &&\n\t\t\t\t!! example &&\n\t\t\t\tsupports.inserter !== false\n\t\t\t);\n\t\t} )\n\t\t.map( ( blockType ) => ( {\n\t\t\tname: blockType.name,\n\t\t\ttitle: blockType.title,\n\t\t\tcategory: blockType.category,\n\t\t\tblocks: getBlockFromExample( blockType.name, blockType.example ),\n\t\t} ) );\n\n\treturn [ headingsExample, ...otherExamples ];\n}\n\nfunction StyleBook( {\n\tenableResizing = true,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tshowCloseButton = true,\n\tshowTabs = true,\n} ) {\n\tconst [ resizeObserver, sizes ] = useResizeObserver();\n\tconst [ textColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst examples = useMemo( getExamples, [] );\n\tconst tabs = useMemo(\n\t\t() =>\n\t\t\tgetCategories()\n\t\t\t\t.filter( ( category ) =>\n\t\t\t\t\texamples.some(\n\t\t\t\t\t\t( example ) => example.category === category.slug\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( category ) => ( {\n\t\t\t\t\tname: category.slug,\n\t\t\t\t\ttitle: category.title,\n\t\t\t\t\ticon: category.icon,\n\t\t\t\t} ) ),\n\t\t[ examples ]\n\t);\n\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( { ...originalSettings, __unstableIsPreviewMode: true } ),\n\t\t[ originalSettings ]\n\t);\n\n\treturn (\n\t\t<EditorCanvasContainer\n\t\t\tenableResizing={ enableResizing }\n\t\t\tcloseButtonLabel={\n\t\t\t\tshowCloseButton ? __( 'Close Style Book' ) : null\n\t\t\t}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'edit-site-style-book', {\n\t\t\t\t\t'is-wide': sizes.width > 600,\n\t\t\t\t\t'is-button': !! onClick,\n\t\t\t\t} ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: textColor,\n\t\t\t\t\tbackground: backgroundColor,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ resizeObserver }\n\t\t\t\t{ showTabs ? (\n\t\t\t\t\t<TabPanel\n\t\t\t\t\t\tclassName=\"edit-site-style-book__tab-panel\"\n\t\t\t\t\t\ttabs={ tabs }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\t\t\tcategory={ tab.name }\n\t\t\t\t\t\t\t\texamples={ examples }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\tsizes={ sizes }\n\t\t\t\t\t\t\t\ttitle={ tab.title }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TabPanel>\n\t\t\t\t) : (\n\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\texamples={ examples }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tsizes={ sizes }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorCanvasContainer>\n\t);\n}\n\nconst StyleBookBody = ( {\n\tcategory,\n\texamples,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tsettings,\n\tsizes,\n\ttitle,\n} ) => {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\n\t// The presence of an `onClick` prop indicates that the Style Book is being used as a button.\n\t// In this case, add additional props to the iframe to make it behave like a button.\n\tconst buttonModeProps = {\n\t\trole: 'button',\n\t\tonFocus: () => setIsFocused( true ),\n\t\tonBlur: () => setIsFocused( false ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { keyCode } = event;\n\t\t\tif ( onClick && ( keyCode === ENTER || keyCode === SPACE ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\tonClick: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( onClick ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\treadonly: true,\n\t};\n\n\tconst buttonModeStyles = onClick\n\t\t? 'body { cursor: pointer; } body * { pointer-events: none; }'\n\t\t: '';\n\n\treturn (\n\t\t<Iframe\n\t\t\tclassName={ classnames( 'edit-site-style-book__iframe', {\n\t\t\t\t'is-focused': isFocused && !! onClick,\n\t\t\t\t'is-button': !! onClick,\n\t\t\t} ) }\n\t\t\tname=\"style-book-canvas\"\n\t\t\ttabIndex={ 0 }\n\t\t\t{ ...( onClick ? buttonModeProps : {} ) }\n\t\t>\n\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t<style>\n\t\t\t\t{\n\t\t\t\t\t// Forming a \"block formatting context\" to prevent margin collapsing.\n\t\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context\n\t\t\t\t\t`.is-root-container { display: flow-root; }\n\t\t\t\t\t\tbody { position: relative; padding: 32px !important; }` +\n\t\t\t\t\t\tSTYLE_BOOK_IFRAME_STYLES +\n\t\t\t\t\t\tbuttonModeStyles\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<Examples\n\t\t\t\tclassName={ classnames( 'edit-site-style-book__examples', {\n\t\t\t\t\t'is-wide': sizes.width > 600,\n\t\t\t\t} ) }\n\t\t\t\texamples={ examples }\n\t\t\t\tcategory={ category }\n\t\t\t\tlabel={\n\t\t\t\t\ttitle\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Category of blocks, e.g. Text.\n\t\t\t\t\t\t\t\t__( 'Examples of blocks in the %s category' ),\n\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Examples of blocks' )\n\t\t\t\t}\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t/>\n\t\t</Iframe>\n\t);\n};\n\nconst Examples = memo(\n\t( { className, examples, category, label, isSelected, onSelect } ) => {\n\t\tconst composite = useCompositeState( { orientation: 'vertical' } );\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\t{ ...composite }\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ label }\n\t\t\t>\n\t\t\t\t{ examples\n\t\t\t\t\t.filter( ( example ) =>\n\t\t\t\t\t\tcategory ? example.category === category : true\n\t\t\t\t\t)\n\t\t\t\t\t.map( ( example ) => (\n\t\t\t\t\t\t<Example\n\t\t\t\t\t\t\tkey={ example.name }\n\t\t\t\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\t\t\t\tcomposite={ composite }\n\t\t\t\t\t\t\ttitle={ example.title }\n\t\t\t\t\t\t\tblocks={ example.blocks }\n\t\t\t\t\t\t\tisSelected={ isSelected( example.name ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonSelect?.( example.name );\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</Composite>\n\t\t);\n\t}\n);\n\nconst Example = ( { composite, id, title, blocks, isSelected, onClick } ) => {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( { ...originalSettings, __unstableIsPreviewMode: true } ),\n\t\t[ originalSettings ]\n\t);\n\n\t// Cache the list of blocks to avoid additional processing when the component is re-rendered.\n\tconst renderedBlocks = useMemo(\n\t\t() => ( Array.isArray( blocks ) ? blocks : [ blocks ] ),\n\t\t[ blocks ]\n\t);\n\n\treturn (\n\t\t<CompositeItem\n\t\t\t{ ...composite }\n\t\t\tclassName={ classnames( 'edit-site-style-book__example', {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\tid={ id }\n\t\t\taria-label={ sprintf(\n\t\t\t\t// translators: %s: Title of a block, e.g. Heading.\n\t\t\t\t__( 'Open %s styles in Styles panel' ),\n\t\t\t\ttitle\n\t\t\t) }\n\t\t\tonClick={ onClick }\n\t\t\trole=\"button\"\n\t\t\tas=\"div\"\n\t\t>\n\t\t\t<span className=\"edit-site-style-book__example-title\">\n\t\t\t\t{ title }\n\t\t\t</span>\n\t\t\t<div className=\"edit-site-style-book__example-preview\" aria-hidden>\n\t\t\t\t<Disabled className=\"edit-site-style-book__example-preview__content\">\n\t\t\t\t\t<ExperimentalBlockEditorProvider\n\t\t\t\t\t\tvalue={ renderedBlocks }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockList renderAppender={ false } />\n\t\t\t\t\t</ExperimentalBlockEditorProvider>\n\t\t\t\t</Disabled>\n\t\t\t</div>\n\t\t</CompositeItem>\n\t);\n};\n\nexport default StyleBook;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","Disabled","TabPanel","privateApis","componentsPrivateApis","__","sprintf","getCategories","getBlockTypes","getBlockFromExample","createBlock","BlockList","blockEditorPrivateApis","store","blockEditorStore","__unstableEditorStyles","EditorStyles","__unstableIframe","Iframe","useSelect","useResizeObserver","useMemo","useState","memo","ENTER","SPACE","unlock","EditorCanvasContainer","ExperimentalBlockEditorProvider","useGlobalStyle","CompositeV2","Composite","CompositeItemV2","CompositeItem","useCompositeStoreV2","useCompositeStore","STYLE_BOOK_IFRAME_STYLES","getExamples","headingsExample","name","title","category","blocks","content","level","otherExamples","filter","blockType","example","supports","inserter","map","StyleBook","enableResizing","isSelected","onClick","onSelect","showCloseButton","showTabs","resizeObserver","sizes","textColor","backgroundColor","examples","tabs","some","slug","icon","originalSettings","select","getSettings","settings","__unstableIsPreviewMode","createElement","closeButtonLabel","className","width","style","color","background","tab","StyleBookBody","isFocused","setIsFocused","buttonModeProps","role","onFocus","onBlur","onKeyDown","event","defaultPrevented","keyCode","preventDefault","readonly","buttonModeStyles","tabIndex","styles","Examples","label","key","compositeStore","orientation","Example","id","renderedBlocks","Array","isArray","render","value","renderAppender"],"sources":["@wordpress/edit-site/src/components/style-book/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDisabled,\n\tTabPanel,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tgetCategories,\n\tgetBlockTypes,\n\tgetBlockFromExample,\n\tcreateBlock,\n} from '@wordpress/blocks';\nimport {\n\tBlockList,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useResizeObserver } from '@wordpress/compose';\nimport { useMemo, useState, memo } from '@wordpress/element';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport EditorCanvasContainer from '../editor-canvas-container';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\n\nconst {\n\tCompositeV2: Composite,\n\tCompositeItemV2: CompositeItem,\n\tuseCompositeStoreV2: useCompositeStore,\n} = unlock( componentsPrivateApis );\n\n// The content area of the Style Book is rendered within an iframe so that global styles\n// are applied to elements within the entire content area. To support elements that are\n// not part of the block previews, such as headings and layout for the block previews,\n// additional CSS rules need to be passed into the iframe. These are hard-coded below.\n// Note that button styles are unset, and then focus rules from the `Button` component are\n// applied to the `button` element, targeted via `.edit-site-style-book__example`.\n// This is to ensure that browser default styles for buttons are not applied to the previews.\nconst STYLE_BOOK_IFRAME_STYLES = `\n\t.edit-site-style-book__examples {\n\t\tmax-width: 900px;\n\t\tmargin: 0 auto;\n\t}\n\n\t.edit-site-style-book__example {\n\t\tborder-radius: 2px;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 40px;\n\t\tmargin-bottom: 40px;\n\t\tpadding: 16px;\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\tscroll-margin-top: 32px;\n\t\tscroll-margin-bottom: 32px;\n\t}\n\n\t.edit-site-style-book__example.is-selected {\n\t\tbox-shadow: 0 0 0 1px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));\n\t}\n\n\t.edit-site-style-book__example:focus:not(:disabled) {\n\t\tbox-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba));\n\t\toutline: 3px solid transparent;\n\t}\n\n\t.edit-site-style-book__examples.is-wide .edit-site-style-book__example {\n\t\tflex-direction: row;\n\t}\n\n\t.edit-site-style-book__example-title {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n\t\tfont-size: 11px;\n\t\tfont-weight: 500;\n\t\tline-height: normal;\n\t\tmargin: 0;\n\t\ttext-align: left;\n\t\ttext-transform: uppercase;\n\t}\n\n\t.edit-site-style-book__examples.is-wide .edit-site-style-book__example-title {\n\t\ttext-align: right;\n\t\twidth: 120px;\n\t}\n\n\t.edit-site-style-book__example-preview {\n\t\twidth: 100%;\n\t}\n\n\t.edit-site-style-book__example-preview .block-editor-block-list__insertion-point,\n\t.edit-site-style-book__example-preview .block-list-appender {\n\t\tdisplay: none;\n\t}\n\n\t.edit-site-style-book__example-preview .is-root-container > .wp-block:first-child {\n\t\tmargin-top: 0;\n\t}\n\t.edit-site-style-book__example-preview .is-root-container > .wp-block:last-child {\n\t\tmargin-bottom: 0;\n\t}\n`;\n\nfunction getExamples() {\n\t// Use our own example for the Heading block so that we can show multiple\n\t// heading levels.\n\tconst headingsExample = {\n\t\tname: 'core/heading',\n\t\ttitle: __( 'Headings' ),\n\t\tcategory: 'text',\n\t\tblocks: [\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 1,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 2,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 3,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 4,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\tcontent: __( 'Code Is Poetry' ),\n\t\t\t\tlevel: 5,\n\t\t\t} ),\n\t\t],\n\t};\n\n\tconst otherExamples = getBlockTypes()\n\t\t.filter( ( blockType ) => {\n\t\t\tconst { name, example, supports } = blockType;\n\t\t\treturn (\n\t\t\t\tname !== 'core/heading' &&\n\t\t\t\t!! example &&\n\t\t\t\tsupports.inserter !== false\n\t\t\t);\n\t\t} )\n\t\t.map( ( blockType ) => ( {\n\t\t\tname: blockType.name,\n\t\t\ttitle: blockType.title,\n\t\t\tcategory: blockType.category,\n\t\t\tblocks: getBlockFromExample( blockType.name, blockType.example ),\n\t\t} ) );\n\n\treturn [ headingsExample, ...otherExamples ];\n}\n\nfunction StyleBook( {\n\tenableResizing = true,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tshowCloseButton = true,\n\tshowTabs = true,\n} ) {\n\tconst [ resizeObserver, sizes ] = useResizeObserver();\n\tconst [ textColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst examples = useMemo( getExamples, [] );\n\tconst tabs = useMemo(\n\t\t() =>\n\t\t\tgetCategories()\n\t\t\t\t.filter( ( category ) =>\n\t\t\t\t\texamples.some(\n\t\t\t\t\t\t( example ) => example.category === category.slug\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( category ) => ( {\n\t\t\t\t\tname: category.slug,\n\t\t\t\t\ttitle: category.title,\n\t\t\t\t\ticon: category.icon,\n\t\t\t\t} ) ),\n\t\t[ examples ]\n\t);\n\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( { ...originalSettings, __unstableIsPreviewMode: true } ),\n\t\t[ originalSettings ]\n\t);\n\n\treturn (\n\t\t<EditorCanvasContainer\n\t\t\tenableResizing={ enableResizing }\n\t\t\tcloseButtonLabel={\n\t\t\t\tshowCloseButton ? __( 'Close Style Book' ) : null\n\t\t\t}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'edit-site-style-book', {\n\t\t\t\t\t'is-wide': sizes.width > 600,\n\t\t\t\t\t'is-button': !! onClick,\n\t\t\t\t} ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: textColor,\n\t\t\t\t\tbackground: backgroundColor,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ resizeObserver }\n\t\t\t\t{ showTabs ? (\n\t\t\t\t\t<TabPanel\n\t\t\t\t\t\tclassName=\"edit-site-style-book__tab-panel\"\n\t\t\t\t\t\ttabs={ tabs }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\t\t\tcategory={ tab.name }\n\t\t\t\t\t\t\t\texamples={ examples }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\tsizes={ sizes }\n\t\t\t\t\t\t\t\ttitle={ tab.title }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TabPanel>\n\t\t\t\t) : (\n\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\texamples={ examples }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tsizes={ sizes }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorCanvasContainer>\n\t);\n}\n\nconst StyleBookBody = ( {\n\tcategory,\n\texamples,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tsettings,\n\tsizes,\n\ttitle,\n} ) => {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\n\t// The presence of an `onClick` prop indicates that the Style Book is being used as a button.\n\t// In this case, add additional props to the iframe to make it behave like a button.\n\tconst buttonModeProps = {\n\t\trole: 'button',\n\t\tonFocus: () => setIsFocused( true ),\n\t\tonBlur: () => setIsFocused( false ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { keyCode } = event;\n\t\t\tif ( onClick && ( keyCode === ENTER || keyCode === SPACE ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\tonClick: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( onClick ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\treadonly: true,\n\t};\n\n\tconst buttonModeStyles = onClick\n\t\t? 'body { cursor: pointer; } body * { pointer-events: none; }'\n\t\t: '';\n\n\treturn (\n\t\t<Iframe\n\t\t\tclassName={ classnames( 'edit-site-style-book__iframe', {\n\t\t\t\t'is-focused': isFocused && !! onClick,\n\t\t\t\t'is-button': !! onClick,\n\t\t\t} ) }\n\t\t\tname=\"style-book-canvas\"\n\t\t\ttabIndex={ 0 }\n\t\t\t{ ...( onClick ? buttonModeProps : {} ) }\n\t\t>\n\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t<style>\n\t\t\t\t{\n\t\t\t\t\t// Forming a \"block formatting context\" to prevent margin collapsing.\n\t\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context\n\t\t\t\t\t`.is-root-container { display: flow-root; }\n\t\t\t\t\t\tbody { position: relative; padding: 32px !important; }` +\n\t\t\t\t\t\tSTYLE_BOOK_IFRAME_STYLES +\n\t\t\t\t\t\tbuttonModeStyles\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t<Examples\n\t\t\t\tclassName={ classnames( 'edit-site-style-book__examples', {\n\t\t\t\t\t'is-wide': sizes.width > 600,\n\t\t\t\t} ) }\n\t\t\t\texamples={ examples }\n\t\t\t\tcategory={ category }\n\t\t\t\tlabel={\n\t\t\t\t\ttitle\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Category of blocks, e.g. Text.\n\t\t\t\t\t\t\t\t__( 'Examples of blocks in the %s category' ),\n\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Examples of blocks' )\n\t\t\t\t}\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tkey={ category }\n\t\t\t/>\n\t\t</Iframe>\n\t);\n};\n\nconst Examples = memo(\n\t( { className, examples, category, label, isSelected, onSelect } ) => {\n\t\tconst compositeStore = useCompositeStore( { orientation: 'vertical' } );\n\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\tstore={ compositeStore }\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ label }\n\t\t\t\trole=\"grid\"\n\t\t\t>\n\t\t\t\t{ examples\n\t\t\t\t\t.filter( ( example ) =>\n\t\t\t\t\t\tcategory ? example.category === category : true\n\t\t\t\t\t)\n\t\t\t\t\t.map( ( example ) => (\n\t\t\t\t\t\t<Example\n\t\t\t\t\t\t\tkey={ example.name }\n\t\t\t\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\t\t\t\ttitle={ example.title }\n\t\t\t\t\t\t\tblocks={ example.blocks }\n\t\t\t\t\t\t\tisSelected={ isSelected( example.name ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonSelect?.( example.name );\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</Composite>\n\t\t);\n\t}\n);\n\nconst Example = ( { id, title, blocks, isSelected, onClick } ) => {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( { ...originalSettings, __unstableIsPreviewMode: true } ),\n\t\t[ originalSettings ]\n\t);\n\n\t// Cache the list of blocks to avoid additional processing when the component is re-rendered.\n\tconst renderedBlocks = useMemo(\n\t\t() => ( Array.isArray( blocks ) ? blocks : [ blocks ] ),\n\t\t[ blocks ]\n\t);\n\n\treturn (\n\t\t<div role=\"row\">\n\t\t\t<div role=\"gridcell\">\n\t\t\t\t<CompositeItem\n\t\t\t\t\tclassName={ classnames( 'edit-site-style-book__example', {\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t} ) }\n\t\t\t\t\tid={ id }\n\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t// translators: %s: Title of a block, e.g. Heading.\n\t\t\t\t\t\t__( 'Open %s styles in Styles panel' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t) }\n\t\t\t\t\trender={ <div /> }\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"edit-site-style-book__example-title\">\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"edit-site-style-book__example-preview\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<Disabled className=\"edit-site-style-book__example-preview__content\">\n\t\t\t\t\t\t\t<ExperimentalBlockEditorProvider\n\t\t\t\t\t\t\t\tvalue={ renderedBlocks }\n\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BlockList renderAppender={ false } />\n\t\t\t\t\t\t\t</ExperimentalBlockEditorProvider>\n\t\t\t\t\t\t</Disabled>\n\t\t\t\t\t</div>\n\t\t\t\t</CompositeItem>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default StyleBook;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useEffect } from '@wordpress/element';
4
+ import { useEffect, useMemo } from '@wordpress/element';
5
5
  import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import { store as coreDataStore } from '@wordpress/core-data';
7
7
  import { privateApis as routerPrivateApis } from '@wordpress/router';
@@ -15,76 +15,170 @@ import { TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATT
15
15
  const {
16
16
  useLocation
17
17
  } = unlock(routerPrivateApis);
18
- export default function useInitEditedEntityFromURL() {
19
- const {
20
- params: {
21
- postId,
22
- postType
23
- } = {}
24
- } = useLocation();
18
+ const postTypesWithoutParentTemplate = [TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATTERN_TYPES.user];
19
+ function useResolveEditedEntityAndContext({
20
+ postId,
21
+ postType
22
+ }) {
25
23
  const {
26
- isRequestingSite,
24
+ hasLoadedAllDependencies,
27
25
  homepageId,
28
- url
26
+ url,
27
+ frontPageTemplateId
29
28
  } = useSelect(select => {
30
29
  const {
31
30
  getSite,
32
- getUnstableBase
31
+ getUnstableBase,
32
+ getEntityRecords
33
33
  } = select(coreDataStore);
34
34
  const siteData = getSite();
35
35
  const base = getUnstableBase();
36
+ const templates = getEntityRecords('postType', TEMPLATE_POST_TYPE, {
37
+ per_page: -1
38
+ });
39
+ let _frontPateTemplateId;
40
+ if (templates) {
41
+ const frontPageTemplate = templates.find(t => t.slug === 'front-page');
42
+ _frontPateTemplateId = frontPageTemplate ? frontPageTemplate.id : false;
43
+ }
36
44
  return {
37
- isRequestingSite: !base,
38
- homepageId: siteData?.show_on_front === 'page' ? siteData.page_on_front : null,
39
- url: base?.home
45
+ hasLoadedAllDependencies: !!base && !!siteData,
46
+ homepageId: siteData?.show_on_front === 'page' ? siteData.page_on_front.toString() : null,
47
+ url: base?.home,
48
+ frontPageTemplateId: _frontPateTemplateId
40
49
  };
41
50
  }, []);
42
- const {
43
- setEditedEntity,
44
- setTemplate,
45
- setTemplatePart,
46
- setPage,
47
- setNavigationMenu
48
- } = useDispatch(editSiteStore);
49
- useEffect(() => {
50
- if (postType && postId) {
51
- switch (postType) {
52
- case TEMPLATE_POST_TYPE:
53
- setTemplate(postId);
54
- break;
55
- case TEMPLATE_PART_POST_TYPE:
56
- setTemplatePart(postId);
57
- break;
58
- case NAVIGATION_POST_TYPE:
59
- setNavigationMenu(postId);
60
- break;
61
- case PATTERN_TYPES.user:
62
- setEditedEntity(postType, postId);
63
- break;
64
- default:
65
- setPage({
66
- context: {
67
- postType,
68
- postId
69
- }
70
- });
51
+
52
+ /**
53
+ * This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId
54
+ * in order to match the frontend as closely as possible in the site editor.
55
+ *
56
+ * It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.
57
+ */
58
+ const resolvedTemplateId = useSelect(select => {
59
+ // If we're rendering a post type that doesn't have a template
60
+ // no need to resolve its template.
61
+ if (postTypesWithoutParentTemplate.includes(postType)) {
62
+ return undefined;
63
+ }
64
+ const {
65
+ getEditedEntityRecord,
66
+ getEntityRecords,
67
+ getDefaultTemplateId,
68
+ __experimentalGetTemplateForLink
69
+ } = select(coreDataStore);
70
+ function resolveTemplateForPostTypeAndId(postTypeToResolve, postIdToResolve) {
71
+ // For the front page, we always use the front page template if existing.
72
+ if (postTypeToResolve === 'page' && homepageId === postIdToResolve) {
73
+ // We're still checking whether the front page template exists.
74
+ // Don't resolve the template yet.
75
+ if (frontPageTemplateId === undefined) {
76
+ return undefined;
77
+ }
78
+ if (!!frontPageTemplateId) {
79
+ return frontPageTemplateId;
80
+ }
81
+ }
82
+ const editedEntity = getEditedEntityRecord('postType', postTypeToResolve, postIdToResolve);
83
+ if (!editedEntity) {
84
+ return undefined;
71
85
  }
72
- return;
86
+ // First see if the post/page has an assigned template and fetch it.
87
+ const currentTemplateSlug = editedEntity.template;
88
+ if (currentTemplateSlug) {
89
+ const currentTemplate = getEntityRecords('postType', TEMPLATE_POST_TYPE, {
90
+ per_page: -1
91
+ })?.find(({
92
+ slug
93
+ }) => slug === currentTemplateSlug);
94
+ if (currentTemplate) {
95
+ return currentTemplate.id;
96
+ }
97
+ }
98
+
99
+ // If no template is assigned, use the default template.
100
+ return getDefaultTemplateId({
101
+ slug: `${postTypeToResolve}-${editedEntity?.slug}`
102
+ });
103
+ }
104
+ if (!hasLoadedAllDependencies) {
105
+ return undefined;
106
+ }
107
+
108
+ // If we're rendering a specific page, post... we need to resolve its template.
109
+ if (postType && postId) {
110
+ return resolveTemplateForPostTypeAndId(postType, postId);
73
111
  }
74
112
 
75
- // In all other cases, we need to set the home page in the site editor view.
113
+ // If we're rendering the home page, and we have a static home page, resolve its template.
76
114
  if (homepageId) {
77
- setPage({
78
- context: {
79
- postType: 'page',
80
- postId: homepageId
81
- }
82
- });
83
- } else if (!isRequestingSite) {
84
- setPage({
85
- path: url
86
- });
115
+ return resolveTemplateForPostTypeAndId('page', homepageId);
116
+ }
117
+
118
+ // If we're not rendering a specific page, use the front page template.
119
+ if (url) {
120
+ const template = __experimentalGetTemplateForLink(url);
121
+ return template?.id;
122
+ }
123
+ }, [homepageId, hasLoadedAllDependencies, url, postId, postType, frontPageTemplateId]);
124
+ const context = useMemo(() => {
125
+ if (postTypesWithoutParentTemplate.includes(postType)) {
126
+ return {};
127
+ }
128
+ if (postType && postId) {
129
+ return {
130
+ postType,
131
+ postId
132
+ };
133
+ }
134
+ if (homepageId) {
135
+ return {
136
+ postType: 'page',
137
+ postId: homepageId
138
+ };
139
+ }
140
+ return {};
141
+ }, [homepageId, postType, postId]);
142
+ if (postTypesWithoutParentTemplate.includes(postType)) {
143
+ return {
144
+ isReady: true,
145
+ postType,
146
+ postId,
147
+ context
148
+ };
149
+ }
150
+ if (hasLoadedAllDependencies) {
151
+ return {
152
+ isReady: resolvedTemplateId !== undefined,
153
+ postType: TEMPLATE_POST_TYPE,
154
+ postId: resolvedTemplateId,
155
+ context
156
+ };
157
+ }
158
+ return {
159
+ isReady: false
160
+ };
161
+ }
162
+ export function useInitEditedEntity(params) {
163
+ const {
164
+ postType,
165
+ postId,
166
+ context,
167
+ isReady
168
+ } = useResolveEditedEntityAndContext(params);
169
+ const {
170
+ setEditedEntity
171
+ } = useDispatch(editSiteStore);
172
+ useEffect(() => {
173
+ if (isReady) {
174
+ setEditedEntity(postType, postId, context);
87
175
  }
88
- }, [url, postId, postType, homepageId, isRequestingSite, setEditedEntity, setPage, setTemplate, setTemplatePart, setNavigationMenu]);
176
+ }, [isReady, postType, postId, context, setEditedEntity]);
177
+ }
178
+ export default function useInitEditedEntityFromURL() {
179
+ const {
180
+ params = {}
181
+ } = useLocation();
182
+ return useInitEditedEntity(params);
89
183
  }
90
184
  //# sourceMappingURL=use-init-edited-entity-from-url.js.map