@wordpress/edit-site 5.19.0 → 5.19.2

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 (448) hide show
  1. package/build/components/add-new-pattern/index.js +3 -3
  2. package/build/components/add-new-pattern/index.js.map +1 -1
  3. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js +73 -0
  4. package/build/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +1 -0
  5. package/build/components/block-editor/block-editor-provider/index.js +31 -0
  6. package/build/components/block-editor/block-editor-provider/index.js.map +1 -0
  7. package/build/components/block-editor/{providers → block-editor-provider}/navigation-block-editor-provider.js +2 -1
  8. package/build/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +1 -0
  9. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js +76 -0
  10. package/build/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +1 -0
  11. package/build/components/block-editor/index.js +2 -9
  12. package/build/components/block-editor/index.js.map +1 -1
  13. package/build/components/block-editor/site-editor-canvas.js +1 -1
  14. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  15. package/build/components/create-template-part-modal/index.js +8 -12
  16. package/build/components/create-template-part-modal/index.js.map +1 -1
  17. package/build/components/editor/index.js +4 -1
  18. package/build/components/editor/index.js.map +1 -1
  19. package/build/components/global-styles/font-families.js +2 -1
  20. package/build/components/global-styles/font-families.js.map +1 -1
  21. package/build/components/global-styles/font-family-item.js +2 -2
  22. package/build/components/global-styles/font-family-item.js.map +1 -1
  23. package/build/components/global-styles/font-library-modal/collection-font-details.js +49 -0
  24. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -0
  25. package/build/components/global-styles/font-library-modal/collection-font-variant.js +55 -0
  26. package/build/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -0
  27. package/build/components/global-styles/font-library-modal/context.js +26 -2
  28. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  29. package/build/components/global-styles/font-library-modal/font-card.js +7 -4
  30. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -1
  31. package/build/components/global-styles/font-library-modal/font-collection.js +172 -0
  32. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -0
  33. package/build/components/global-styles/font-library-modal/font-demo.js +30 -13
  34. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  35. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +41 -0
  36. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -0
  37. package/build/components/global-styles/font-library-modal/index.js +25 -7
  38. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  39. package/build/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  40. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  41. package/build/components/global-styles/font-library-modal/library-font-card.js +0 -5
  42. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  43. package/build/components/global-styles/font-library-modal/library-font-details.js +2 -1
  44. package/build/components/global-styles/font-library-modal/library-font-details.js.map +1 -1
  45. package/build/components/global-styles/font-library-modal/resolvers.js +16 -0
  46. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  47. package/build/components/global-styles/font-library-modal/tab-layout.js +2 -2
  48. package/build/components/global-styles/font-library-modal/tab-layout.js.map +1 -1
  49. package/build/components/global-styles/font-library-modal/utils/constants.js +1 -7
  50. package/build/components/global-styles/font-library-modal/utils/constants.js.map +1 -1
  51. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +21 -0
  52. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -0
  53. package/build/components/global-styles/font-library-modal/utils/fonts-outline.js +20 -0
  54. package/build/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -0
  55. package/build/components/global-styles/font-library-modal/utils/index.js +2 -52
  56. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  57. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +76 -0
  58. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -0
  59. package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js +36 -0
  60. package/build/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +1 -0
  61. package/build/components/global-styles/screen-typography.js +1 -1
  62. package/build/components/global-styles/screen-typography.js.map +1 -1
  63. package/build/components/header-edit-mode/document-actions/index.js +9 -8
  64. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  65. package/build/components/header-edit-mode/index.js +4 -1
  66. package/build/components/header-edit-mode/index.js.map +1 -1
  67. package/build/components/layout/index.js +5 -1
  68. package/build/components/layout/index.js.map +1 -1
  69. package/build/components/list/added-by.js +13 -8
  70. package/build/components/list/added-by.js.map +1 -1
  71. package/build/components/list/index.js +2 -1
  72. package/build/components/list/index.js.map +1 -1
  73. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +2 -3
  74. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  75. package/build/components/page-patterns/duplicate-menu-item.js +5 -5
  76. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  77. package/build/components/page-patterns/grid-item.js +5 -5
  78. package/build/components/page-patterns/grid-item.js.map +1 -1
  79. package/build/components/page-patterns/index.js +1 -1
  80. package/build/components/page-patterns/index.js.map +1 -1
  81. package/build/components/page-patterns/search-items.js +1 -1
  82. package/build/components/page-patterns/search-items.js.map +1 -1
  83. package/build/components/page-patterns/use-patterns.js +28 -34
  84. package/build/components/page-patterns/use-patterns.js.map +1 -1
  85. package/build/components/page-template-parts/add-new-template-part.js +3 -2
  86. package/build/components/page-template-parts/add-new-template-part.js.map +1 -1
  87. package/build/components/page-template-parts/index.js +2 -1
  88. package/build/components/page-template-parts/index.js.map +1 -1
  89. package/build/components/page-templates/index.js +3 -2
  90. package/build/components/page-templates/index.js.map +1 -1
  91. package/build/components/save-hub/index.js +2 -1
  92. package/build/components/save-hub/index.js.map +1 -1
  93. package/build/components/secondary-sidebar/list-view-sidebar.js +24 -17
  94. package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  95. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +21 -3
  96. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  97. package/build/components/sidebar-edit-mode/page-panels/hooks.js +2 -1
  98. package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  99. package/build/components/sidebar-edit-mode/settings-header/index.js +2 -6
  100. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  101. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +9 -2
  102. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
  103. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js +2 -1
  104. package/build/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +1 -1
  105. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +2 -1
  106. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  107. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +3 -2
  108. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  109. package/build/components/sidebar-navigation-screen-page/page-details.js +2 -1
  110. package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
  111. package/build/components/sidebar-navigation-screen-pages/index.js +5 -4
  112. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  113. package/build/components/sidebar-navigation-screen-pattern/index.js +2 -1
  114. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  115. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +3 -2
  116. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  117. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
  118. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  119. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +2 -1
  120. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  121. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +8 -7
  122. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  123. package/build/components/sidebar-navigation-screen-patterns/index.js +3 -3
  124. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  125. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +7 -2
  126. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  127. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +7 -2
  128. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  129. package/build/components/sidebar-navigation-screen-template/home-template-details.js +2 -1
  130. package/build/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  131. package/build/components/sidebar-navigation-screen-templates/index.js +4 -3
  132. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  133. package/build/components/sidebar-navigation-screen-templates-browse/index.js +3 -2
  134. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  135. package/build/components/start-template-options/index.js +20 -2
  136. package/build/components/start-template-options/index.js.map +1 -1
  137. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -4
  138. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  139. package/build/components/sync-state-with-url/use-sync-path-with-url.js +4 -3
  140. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  141. package/build/components/template-actions/index.js +2 -1
  142. package/build/components/template-actions/index.js.map +1 -1
  143. package/build/components/template-actions/rename-menu-item.js +8 -3
  144. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  145. package/build/hooks/commands/use-edit-mode-commands.js +4 -3
  146. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  147. package/build/hooks/navigation-menu-edit.js +2 -1
  148. package/build/hooks/navigation-menu-edit.js.map +1 -1
  149. package/build/hooks/template-part-edit.js +2 -1
  150. package/build/hooks/template-part-edit.js.map +1 -1
  151. package/build/store/actions.js +10 -9
  152. package/build/store/actions.js.map +1 -1
  153. package/build/store/constants.js +1 -9
  154. package/build/store/constants.js.map +1 -1
  155. package/build/store/private-actions.js +21 -1
  156. package/build/store/private-actions.js.map +1 -1
  157. package/build/store/private-selectors.js +23 -0
  158. package/build/store/private-selectors.js.map +1 -1
  159. package/build/store/reducer.js +19 -1
  160. package/build/store/reducer.js.map +1 -1
  161. package/build/store/selectors.js +3 -2
  162. package/build/store/selectors.js.map +1 -1
  163. package/build/utils/constants.js +22 -3
  164. package/build/utils/constants.js.map +1 -1
  165. package/build/utils/is-template-removable.js +1 -1
  166. package/build/utils/is-template-removable.js.map +1 -1
  167. package/build/utils/is-template-revertable.js +1 -1
  168. package/build/utils/is-template-revertable.js.map +1 -1
  169. package/build/utils/template-part-create.js +6 -1
  170. package/build/utils/template-part-create.js.map +1 -1
  171. package/build-module/components/add-new-pattern/index.js +3 -3
  172. package/build-module/components/add-new-pattern/index.js.map +1 -1
  173. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js +65 -0
  174. package/build-module/components/block-editor/block-editor-provider/default-block-editor-provider.js.map +1 -0
  175. package/build-module/components/block-editor/block-editor-provider/index.js +23 -0
  176. package/build-module/components/block-editor/block-editor-provider/index.js.map +1 -0
  177. package/build-module/components/block-editor/{providers → block-editor-provider}/navigation-block-editor-provider.js +2 -1
  178. package/build-module/components/block-editor/block-editor-provider/navigation-block-editor-provider.js.map +1 -0
  179. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js +70 -0
  180. package/build-module/components/block-editor/block-editor-provider/use-page-content-blocks.js.map +1 -0
  181. package/build-module/components/block-editor/index.js +1 -8
  182. package/build-module/components/block-editor/index.js.map +1 -1
  183. package/build-module/components/block-editor/site-editor-canvas.js +2 -2
  184. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  185. package/build-module/components/create-template-part-modal/index.js +8 -12
  186. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  187. package/build-module/components/editor/index.js +4 -1
  188. package/build-module/components/editor/index.js.map +1 -1
  189. package/build-module/components/global-styles/font-families.js +3 -2
  190. package/build-module/components/global-styles/font-families.js.map +1 -1
  191. package/build-module/components/global-styles/font-family-item.js +2 -2
  192. package/build-module/components/global-styles/font-family-item.js.map +1 -1
  193. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +40 -0
  194. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -0
  195. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js +45 -0
  196. package/build-module/components/global-styles/font-library-modal/collection-font-variant.js.map +1 -0
  197. package/build-module/components/global-styles/font-library-modal/context.js +27 -3
  198. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  199. package/build-module/components/global-styles/font-library-modal/font-card.js +8 -5
  200. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -1
  201. package/build-module/components/global-styles/font-library-modal/font-collection.js +164 -0
  202. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -0
  203. package/build-module/components/global-styles/font-library-modal/font-demo.js +30 -13
  204. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -1
  205. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +33 -0
  206. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -0
  207. package/build-module/components/global-styles/font-library-modal/index.js +26 -7
  208. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  209. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  210. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  211. package/build-module/components/global-styles/font-library-modal/library-font-card.js +0 -5
  212. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  213. package/build-module/components/global-styles/font-library-modal/library-font-details.js +2 -1
  214. package/build-module/components/global-styles/font-library-modal/library-font-details.js.map +1 -1
  215. package/build-module/components/global-styles/font-library-modal/resolvers.js +14 -0
  216. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  217. package/build-module/components/global-styles/font-library-modal/tab-layout.js +2 -2
  218. package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +1 -1
  219. package/build-module/components/global-styles/font-library-modal/utils/constants.js +1 -6
  220. package/build-module/components/global-styles/font-library-modal/utils/constants.js.map +1 -1
  221. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +15 -0
  222. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -0
  223. package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js +13 -0
  224. package/build-module/components/global-styles/font-library-modal/utils/fonts-outline.js.map +1 -0
  225. package/build-module/components/global-styles/font-library-modal/utils/index.js +2 -51
  226. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  227. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +68 -0
  228. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -0
  229. package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js +30 -0
  230. package/build-module/components/global-styles/font-library-modal/utils/sort-font-faces.js.map +1 -0
  231. package/build-module/components/global-styles/screen-typography.js +1 -1
  232. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  233. package/build-module/components/header-edit-mode/document-actions/index.js +9 -8
  234. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  235. package/build-module/components/header-edit-mode/index.js +4 -1
  236. package/build-module/components/header-edit-mode/index.js.map +1 -1
  237. package/build-module/components/layout/index.js +5 -1
  238. package/build-module/components/layout/index.js.map +1 -1
  239. package/build-module/components/list/added-by.js +13 -8
  240. package/build-module/components/list/added-by.js.map +1 -1
  241. package/build-module/components/list/index.js +2 -1
  242. package/build-module/components/list/index.js.map +1 -1
  243. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +2 -3
  244. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  245. package/build-module/components/page-patterns/duplicate-menu-item.js +5 -5
  246. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  247. package/build-module/components/page-patterns/grid-item.js +5 -5
  248. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  249. package/build-module/components/page-patterns/index.js +1 -1
  250. package/build-module/components/page-patterns/index.js.map +1 -1
  251. package/build-module/components/page-patterns/search-items.js +2 -2
  252. package/build-module/components/page-patterns/search-items.js.map +1 -1
  253. package/build-module/components/page-patterns/use-patterns.js +28 -35
  254. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  255. package/build-module/components/page-template-parts/add-new-template-part.js +3 -2
  256. package/build-module/components/page-template-parts/add-new-template-part.js.map +1 -1
  257. package/build-module/components/page-template-parts/index.js +2 -1
  258. package/build-module/components/page-template-parts/index.js.map +1 -1
  259. package/build-module/components/page-templates/index.js +3 -2
  260. package/build-module/components/page-templates/index.js.map +1 -1
  261. package/build-module/components/save-hub/index.js +2 -1
  262. package/build-module/components/save-hub/index.js.map +1 -1
  263. package/build-module/components/secondary-sidebar/list-view-sidebar.js +26 -19
  264. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  265. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +21 -3
  266. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  267. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +2 -1
  268. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -1
  269. package/build-module/components/sidebar-edit-mode/settings-header/index.js +2 -6
  270. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  271. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +9 -2
  272. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -1
  273. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js +2 -1
  274. package/build-module/components/sidebar-navigation-screen-navigation-menu/edit-button.js.map +1 -1
  275. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +3 -1
  276. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  277. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +3 -2
  278. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  279. package/build-module/components/sidebar-navigation-screen-page/page-details.js +2 -1
  280. package/build-module/components/sidebar-navigation-screen-page/page-details.js.map +1 -1
  281. package/build-module/components/sidebar-navigation-screen-pages/index.js +5 -4
  282. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  283. package/build-module/components/sidebar-navigation-screen-pattern/index.js +2 -1
  284. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  285. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +3 -2
  286. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js.map +1 -1
  287. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
  288. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  289. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +2 -1
  290. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  291. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +8 -7
  292. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  293. package/build-module/components/sidebar-navigation-screen-patterns/index.js +4 -4
  294. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  295. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +8 -3
  296. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  297. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +7 -2
  298. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  299. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js +2 -1
  300. package/build-module/components/sidebar-navigation-screen-template/home-template-details.js.map +1 -1
  301. package/build-module/components/sidebar-navigation-screen-templates/index.js +4 -3
  302. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  303. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +3 -2
  304. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  305. package/build-module/components/start-template-options/index.js +20 -2
  306. package/build-module/components/start-template-options/index.js.map +1 -1
  307. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -4
  308. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  309. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +4 -3
  310. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  311. package/build-module/components/template-actions/index.js +2 -1
  312. package/build-module/components/template-actions/index.js.map +1 -1
  313. package/build-module/components/template-actions/rename-menu-item.js +8 -3
  314. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  315. package/build-module/hooks/commands/use-edit-mode-commands.js +4 -3
  316. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  317. package/build-module/hooks/navigation-menu-edit.js +2 -1
  318. package/build-module/hooks/navigation-menu-edit.js.map +1 -1
  319. package/build-module/hooks/template-part-edit.js +2 -1
  320. package/build-module/hooks/template-part-edit.js.map +1 -1
  321. package/build-module/store/actions.js +10 -10
  322. package/build-module/store/actions.js.map +1 -1
  323. package/build-module/store/constants.js +0 -4
  324. package/build-module/store/constants.js.map +1 -1
  325. package/build-module/store/private-actions.js +19 -0
  326. package/build-module/store/private-actions.js.map +1 -1
  327. package/build-module/store/private-selectors.js +22 -0
  328. package/build-module/store/private-selectors.js.map +1 -1
  329. package/build-module/store/reducer.js +18 -1
  330. package/build-module/store/reducer.js.map +1 -1
  331. package/build-module/store/selectors.js +3 -3
  332. package/build-module/store/selectors.js.map +1 -1
  333. package/build-module/utils/constants.js +17 -1
  334. package/build-module/utils/constants.js.map +1 -1
  335. package/build-module/utils/is-template-removable.js +2 -2
  336. package/build-module/utils/is-template-removable.js.map +1 -1
  337. package/build-module/utils/is-template-revertable.js +2 -2
  338. package/build-module/utils/is-template-revertable.js.map +1 -1
  339. package/build-module/utils/template-part-create.js +6 -1
  340. package/build-module/utils/template-part-create.js.map +1 -1
  341. package/build-style/style-rtl.css +23 -0
  342. package/build-style/style.css +23 -0
  343. package/package.json +40 -40
  344. package/src/components/add-new-pattern/index.js +3 -3
  345. package/src/components/block-editor/block-editor-provider/default-block-editor-provider.js +70 -0
  346. package/src/components/block-editor/block-editor-provider/index.js +29 -0
  347. package/src/components/block-editor/{providers → block-editor-provider}/navigation-block-editor-provider.js +2 -1
  348. package/src/components/block-editor/block-editor-provider/test/use-page-content-blocks.js +87 -0
  349. package/src/components/block-editor/block-editor-provider/use-page-content-blocks.js +77 -0
  350. package/src/components/block-editor/index.js +1 -14
  351. package/src/components/block-editor/site-editor-canvas.js +5 -2
  352. package/src/components/create-template-part-modal/index.js +11 -12
  353. package/src/components/editor/index.js +6 -2
  354. package/src/components/global-styles/font-families.js +5 -1
  355. package/src/components/global-styles/font-family-item.js +2 -2
  356. package/src/components/global-styles/font-library-modal/collection-font-details.js +56 -0
  357. package/src/components/global-styles/font-library-modal/collection-font-variant.js +45 -0
  358. package/src/components/global-styles/font-library-modal/context.js +33 -2
  359. package/src/components/global-styles/font-library-modal/font-card.js +9 -4
  360. package/src/components/global-styles/font-library-modal/font-collection.js +257 -0
  361. package/src/components/global-styles/font-library-modal/font-demo.js +36 -10
  362. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +50 -0
  363. package/src/components/global-styles/font-library-modal/index.js +30 -5
  364. package/src/components/global-styles/font-library-modal/installed-fonts.js +1 -1
  365. package/src/components/global-styles/font-library-modal/library-font-card.js +1 -8
  366. package/src/components/global-styles/font-library-modal/library-font-details.js +2 -3
  367. package/src/components/global-styles/font-library-modal/resolvers.js +16 -0
  368. package/src/components/global-styles/font-library-modal/style.scss +26 -0
  369. package/src/components/global-styles/font-library-modal/tab-layout.js +2 -2
  370. package/src/components/global-styles/font-library-modal/utils/constants.js +1 -9
  371. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +18 -0
  372. package/src/components/global-styles/font-library-modal/utils/fonts-outline.js +21 -0
  373. package/src/components/global-styles/font-library-modal/utils/index.js +9 -69
  374. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +86 -0
  375. package/src/components/global-styles/font-library-modal/utils/sort-font-faces.js +33 -0
  376. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +69 -0
  377. package/src/components/global-styles/font-library-modal/utils/test/fonts-outline.spec.js +109 -0
  378. package/src/components/global-styles/font-library-modal/utils/test/{getPreviewStyle.spec.js → preview-styles.spec.js} +49 -9
  379. package/src/components/global-styles/font-library-modal/utils/test/sort-font-faces.js +74 -0
  380. package/src/components/global-styles/screen-typography.js +4 -1
  381. package/src/components/header-edit-mode/document-actions/index.js +17 -8
  382. package/src/components/header-edit-mode/index.js +2 -1
  383. package/src/components/layout/index.js +10 -1
  384. package/src/components/list/added-by.js +29 -11
  385. package/src/components/list/index.js +7 -1
  386. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +2 -8
  387. package/src/components/page-patterns/duplicate-menu-item.js +5 -5
  388. package/src/components/page-patterns/grid-item.js +5 -5
  389. package/src/components/page-patterns/index.js +1 -1
  390. package/src/components/page-patterns/search-items.js +7 -1
  391. package/src/components/page-patterns/use-patterns.js +190 -134
  392. package/src/components/page-template-parts/add-new-template-part.js +5 -2
  393. package/src/components/page-template-parts/index.js +2 -1
  394. package/src/components/page-templates/index.js +3 -2
  395. package/src/components/save-hub/index.js +2 -1
  396. package/src/components/secondary-sidebar/list-view-sidebar.js +31 -26
  397. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +48 -20
  398. package/src/components/sidebar-edit-mode/page-panels/hooks.js +9 -4
  399. package/src/components/sidebar-edit-mode/page-panels/style.scss +6 -0
  400. package/src/components/sidebar-edit-mode/settings-header/index.js +4 -7
  401. package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +9 -2
  402. package/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js +2 -1
  403. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +3 -1
  404. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +3 -2
  405. package/src/components/sidebar-navigation-screen-page/page-details.js +2 -1
  406. package/src/components/sidebar-navigation-screen-pages/index.js +5 -4
  407. package/src/components/sidebar-navigation-screen-pattern/index.js +2 -1
  408. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu-list-item.js +8 -2
  409. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +7 -1
  410. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +2 -1
  411. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +18 -8
  412. package/src/components/sidebar-navigation-screen-patterns/index.js +8 -4
  413. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +16 -3
  414. package/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +12 -2
  415. package/src/components/sidebar-navigation-screen-template/home-template-details.js +2 -1
  416. package/src/components/sidebar-navigation-screen-templates/index.js +4 -3
  417. package/src/components/sidebar-navigation-screen-templates-browse/index.js +6 -2
  418. package/src/components/start-template-options/index.js +39 -2
  419. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +10 -4
  420. package/src/components/sync-state-with-url/use-sync-path-with-url.js +8 -3
  421. package/src/components/template-actions/index.js +2 -1
  422. package/src/components/template-actions/rename-menu-item.js +8 -3
  423. package/src/hooks/commands/use-edit-mode-commands.js +4 -3
  424. package/src/hooks/navigation-menu-edit.js +2 -1
  425. package/src/hooks/template-part-edit.js +2 -1
  426. package/src/store/actions.js +18 -10
  427. package/src/store/constants.js +0 -5
  428. package/src/store/private-actions.js +19 -0
  429. package/src/store/private-selectors.js +22 -0
  430. package/src/store/reducer.js +18 -0
  431. package/src/store/selectors.js +6 -3
  432. package/src/store/test/reducer.js +18 -0
  433. package/src/utils/constants.js +17 -1
  434. package/src/utils/is-template-removable.js +2 -2
  435. package/src/utils/is-template-revertable.js +2 -2
  436. package/src/utils/template-part-create.js +6 -1
  437. package/build/components/block-editor/get-block-editor-provider.js +0 -35
  438. package/build/components/block-editor/get-block-editor-provider.js.map +0 -1
  439. package/build/components/block-editor/providers/default-block-editor-provider.js +0 -49
  440. package/build/components/block-editor/providers/default-block-editor-provider.js.map +0 -1
  441. package/build/components/block-editor/providers/navigation-block-editor-provider.js.map +0 -1
  442. package/build-module/components/block-editor/get-block-editor-provider.js +0 -28
  443. package/build-module/components/block-editor/get-block-editor-provider.js.map +0 -1
  444. package/build-module/components/block-editor/providers/default-block-editor-provider.js +0 -41
  445. package/build-module/components/block-editor/providers/default-block-editor-provider.js.map +0 -1
  446. package/build-module/components/block-editor/providers/navigation-block-editor-provider.js.map +0 -1
  447. package/src/components/block-editor/get-block-editor-provider.js +0 -29
  448. package/src/components/block-editor/providers/default-block-editor-provider.js +0 -44
@@ -4,9 +4,9 @@ import { createElement } from "@wordpress/element";
4
4
  */
5
5
  import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
6
6
  import { Button } from '@wordpress/components';
7
- import { useFocusOnMount, useFocusReturn, useMergeRefs } from '@wordpress/compose';
7
+ import { useFocusOnMount, useMergeRefs } from '@wordpress/compose';
8
8
  import { useDispatch } from '@wordpress/data';
9
- import { useRef, useState } from '@wordpress/element';
9
+ import { useCallback, useRef, useState } from '@wordpress/element';
10
10
  import { __ } from '@wordpress/i18n';
11
11
  import { closeSmall } from '@wordpress/icons';
12
12
  import { ESCAPE } from '@wordpress/keycodes';
@@ -21,21 +21,27 @@ import { unlock } from '../../lock-unlock';
21
21
  const {
22
22
  PrivateListView
23
23
  } = unlock(blockEditorPrivateApis);
24
- export default function ListViewSidebar() {
24
+ export default function ListViewSidebar({
25
+ listViewToggleElement
26
+ }) {
25
27
  const {
26
28
  setIsListViewOpened
27
29
  } = useDispatch(editSiteStore);
28
30
 
29
31
  // This hook handles focus when the sidebar first renders.
30
32
  const focusOnMountRef = useFocusOnMount('firstElement');
31
- // The next 2 hooks handle focus for when the sidebar closes and returning focus to the element that had focus before sidebar opened.
32
- const headerFocusReturnRef = useFocusReturn();
33
- const contentFocusReturnRef = useFocusReturn();
34
- function closeOnEscape(event) {
33
+
34
+ // When closing the list view, focus should return to the toggle button.
35
+ const closeListView = useCallback(() => {
36
+ setIsListViewOpened(false);
37
+ listViewToggleElement?.focus();
38
+ }, [listViewToggleElement, setIsListViewOpened]);
39
+ const closeOnEscape = useCallback(event => {
35
40
  if (event.keyCode === ESCAPE && !event.defaultPrevented) {
36
- setIsListViewOpened(false);
41
+ event.preventDefault();
42
+ closeListView();
37
43
  }
38
- }
44
+ }, [closeListView]);
39
45
 
40
46
  // Use internal state instead of a ref to make sure that the component
41
47
  // re-renders when the dropZoneElement updates.
@@ -59,17 +65,19 @@ export default function ListViewSidebar() {
59
65
  const listViewFocusArea = sidebarRef.current.contains(listViewApplicationFocus) ? listViewApplicationFocus : sidebarCloseButtonRef.current;
60
66
  listViewFocusArea.focus();
61
67
  }
62
-
63
- // This only fires when the sidebar is open because of the conditional rendering. It is the same shortcut to open but that is defined as a global shortcut and only fires when the sidebar is closed.
64
- useShortcut('core/edit-site/toggle-list-view', () => {
68
+ const handleToggleListViewShortcut = useCallback(() => {
65
69
  // If the sidebar has focus, it is safe to close.
66
70
  if (sidebarRef.current.contains(sidebarRef.current.ownerDocument.activeElement)) {
67
- setIsListViewOpened(false);
68
- // If the list view or close button does not have focus, focus should be moved to it.
71
+ closeListView();
69
72
  } else {
73
+ // If the list view or close button does not have focus, focus should be moved to it.
70
74
  handleSidebarFocus();
71
75
  }
72
- });
76
+ }, [closeListView]);
77
+
78
+ // This only fires when the sidebar is open because of the conditional rendering.
79
+ // It is the same shortcut to open but that is defined as a global shortcut and only fires when the sidebar is closed.
80
+ useShortcut('core/edit-site/toggle-list-view', handleToggleListViewShortcut);
73
81
  return (
74
82
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
75
83
  createElement("div", {
@@ -77,16 +85,15 @@ export default function ListViewSidebar() {
77
85
  onKeyDown: closeOnEscape,
78
86
  ref: sidebarRef
79
87
  }, createElement("div", {
80
- className: "edit-site-editor__list-view-panel-header",
81
- ref: headerFocusReturnRef
88
+ className: "edit-site-editor__list-view-panel-header"
82
89
  }, createElement("strong", null, __('List View')), createElement(Button, {
83
90
  icon: closeSmall,
84
91
  label: __('Close'),
85
- onClick: () => setIsListViewOpened(false),
92
+ onClick: closeListView,
86
93
  ref: sidebarCloseButtonRef
87
94
  })), createElement("div", {
88
95
  className: "edit-site-editor__list-view-panel-content",
89
- ref: useMergeRefs([contentFocusReturnRef, focusOnMountRef, setDropZoneElement, listViewRef])
96
+ ref: useMergeRefs([focusOnMountRef, setDropZoneElement, listViewRef])
90
97
  }, createElement(PrivateListView, {
91
98
  dropZoneElement: dropZoneElement
92
99
  })))
@@ -1 +1 @@
1
- {"version":3,"names":["privateApis","blockEditorPrivateApis","Button","useFocusOnMount","useFocusReturn","useMergeRefs","useDispatch","useRef","useState","__","closeSmall","ESCAPE","focus","useShortcut","store","editSiteStore","unlock","PrivateListView","ListViewSidebar","setIsListViewOpened","focusOnMountRef","headerFocusReturnRef","contentFocusReturnRef","closeOnEscape","event","keyCode","defaultPrevented","dropZoneElement","setDropZoneElement","sidebarRef","sidebarCloseButtonRef","listViewRef","handleSidebarFocus","listViewApplicationFocus","tabbable","find","current","listViewFocusArea","contains","ownerDocument","activeElement","createElement","className","onKeyDown","ref","icon","label","onClick"],"sources":["@wordpress/edit-site/src/components/secondary-sidebar/list-view-sidebar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { Button } from '@wordpress/components';\nimport {\n\tuseFocusOnMount,\n\tuseFocusReturn,\n\tuseMergeRefs,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\nimport { useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\nimport { ESCAPE } from '@wordpress/keycodes';\nimport { focus } from '@wordpress/dom';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { PrivateListView } = unlock( blockEditorPrivateApis );\n\nexport default function ListViewSidebar() {\n\tconst { setIsListViewOpened } = useDispatch( editSiteStore );\n\n\t// This hook handles focus when the sidebar first renders.\n\tconst focusOnMountRef = useFocusOnMount( 'firstElement' );\n\t// The next 2 hooks handle focus for when the sidebar closes and returning focus to the element that had focus before sidebar opened.\n\tconst headerFocusReturnRef = useFocusReturn();\n\tconst contentFocusReturnRef = useFocusReturn();\n\n\tfunction closeOnEscape( event ) {\n\t\tif ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {\n\t\t\tsetIsListViewOpened( false );\n\t\t}\n\t}\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the dropZoneElement updates.\n\tconst [ dropZoneElement, setDropZoneElement ] = useState( null );\n\n\t// This ref refers to the sidebar as a whole.\n\tconst sidebarRef = useRef();\n\t// This ref refers to the close button.\n\tconst sidebarCloseButtonRef = useRef();\n\t// This ref refers to the list view application area.\n\tconst listViewRef = useRef();\n\n\t/*\n\t * Callback function to handle list view or close button focus.\n\t *\n\t * @return void\n\t */\n\tfunction handleSidebarFocus() {\n\t\t// Either focus the list view or the sidebar close button. Must have a fallback because the list view does not render when there are no blocks.\n\t\tconst listViewApplicationFocus = focus.tabbable.find(\n\t\t\tlistViewRef.current\n\t\t)[ 0 ];\n\t\tconst listViewFocusArea = sidebarRef.current.contains(\n\t\t\tlistViewApplicationFocus\n\t\t)\n\t\t\t? listViewApplicationFocus\n\t\t\t: sidebarCloseButtonRef.current;\n\t\tlistViewFocusArea.focus();\n\t}\n\n\t// This only fires when the sidebar is open because of the conditional rendering. It is the same shortcut to open but that is defined as a global shortcut and only fires when the sidebar is closed.\n\tuseShortcut( 'core/edit-site/toggle-list-view', () => {\n\t\t// If the sidebar has focus, it is safe to close.\n\t\tif (\n\t\t\tsidebarRef.current.contains(\n\t\t\t\tsidebarRef.current.ownerDocument.activeElement\n\t\t\t)\n\t\t) {\n\t\t\tsetIsListViewOpened( false );\n\t\t\t// If the list view or close button does not have focus, focus should be moved to it.\n\t\t} else {\n\t\t\thandleSidebarFocus();\n\t\t}\n\t} );\n\n\treturn (\n\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n\t\t<div\n\t\t\tclassName=\"edit-site-editor__list-view-panel\"\n\t\t\tonKeyDown={ closeOnEscape }\n\t\t\tref={ sidebarRef }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-site-editor__list-view-panel-header\"\n\t\t\t\tref={ headerFocusReturnRef }\n\t\t\t>\n\t\t\t\t<strong>{ __( 'List View' ) }</strong>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\tonClick={ () => setIsListViewOpened( false ) }\n\t\t\t\t\tref={ sidebarCloseButtonRef }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-site-editor__list-view-panel-content\"\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tcontentFocusReturnRef,\n\t\t\t\t\tfocusOnMountRef,\n\t\t\t\t\tsetDropZoneElement,\n\t\t\t\t\tlistViewRef,\n\t\t\t\t] ) }\n\t\t\t>\n\t\t\t\t<PrivateListView dropZoneElement={ dropZoneElement } />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["privateApis","blockEditorPrivateApis","Button","useFocusOnMount","useMergeRefs","useDispatch","useCallback","useRef","useState","__","closeSmall","ESCAPE","focus","useShortcut","store","editSiteStore","unlock","PrivateListView","ListViewSidebar","listViewToggleElement","setIsListViewOpened","focusOnMountRef","closeListView","closeOnEscape","event","keyCode","defaultPrevented","preventDefault","dropZoneElement","setDropZoneElement","sidebarRef","sidebarCloseButtonRef","listViewRef","handleSidebarFocus","listViewApplicationFocus","tabbable","find","current","listViewFocusArea","contains","handleToggleListViewShortcut","ownerDocument","activeElement","createElement","className","onKeyDown","ref","icon","label","onClick"],"sources":["@wordpress/edit-site/src/components/secondary-sidebar/list-view-sidebar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { Button } from '@wordpress/components';\nimport { useFocusOnMount, useMergeRefs } from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\nimport { useCallback, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { closeSmall } from '@wordpress/icons';\nimport { ESCAPE } from '@wordpress/keycodes';\nimport { focus } from '@wordpress/dom';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { PrivateListView } = unlock( blockEditorPrivateApis );\n\nexport default function ListViewSidebar( { listViewToggleElement } ) {\n\tconst { setIsListViewOpened } = useDispatch( editSiteStore );\n\n\t// This hook handles focus when the sidebar first renders.\n\tconst focusOnMountRef = useFocusOnMount( 'firstElement' );\n\n\t// When closing the list view, focus should return to the toggle button.\n\tconst closeListView = useCallback( () => {\n\t\tsetIsListViewOpened( false );\n\t\tlistViewToggleElement?.focus();\n\t}, [ listViewToggleElement, setIsListViewOpened ] );\n\n\tconst closeOnEscape = useCallback(\n\t\t( event ) => {\n\t\t\tif ( event.keyCode === ESCAPE && ! event.defaultPrevented ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcloseListView();\n\t\t\t}\n\t\t},\n\t\t[ closeListView ]\n\t);\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the dropZoneElement updates.\n\tconst [ dropZoneElement, setDropZoneElement ] = useState( null );\n\n\t// This ref refers to the sidebar as a whole.\n\tconst sidebarRef = useRef();\n\t// This ref refers to the close button.\n\tconst sidebarCloseButtonRef = useRef();\n\t// This ref refers to the list view application area.\n\tconst listViewRef = useRef();\n\n\t/*\n\t * Callback function to handle list view or close button focus.\n\t *\n\t * @return void\n\t */\n\tfunction handleSidebarFocus() {\n\t\t// Either focus the list view or the sidebar close button. Must have a fallback because the list view does not render when there are no blocks.\n\t\tconst listViewApplicationFocus = focus.tabbable.find(\n\t\t\tlistViewRef.current\n\t\t)[ 0 ];\n\t\tconst listViewFocusArea = sidebarRef.current.contains(\n\t\t\tlistViewApplicationFocus\n\t\t)\n\t\t\t? listViewApplicationFocus\n\t\t\t: sidebarCloseButtonRef.current;\n\t\tlistViewFocusArea.focus();\n\t}\n\n\tconst handleToggleListViewShortcut = useCallback( () => {\n\t\t// If the sidebar has focus, it is safe to close.\n\t\tif (\n\t\t\tsidebarRef.current.contains(\n\t\t\t\tsidebarRef.current.ownerDocument.activeElement\n\t\t\t)\n\t\t) {\n\t\t\tcloseListView();\n\t\t} else {\n\t\t\t// If the list view or close button does not have focus, focus should be moved to it.\n\t\t\thandleSidebarFocus();\n\t\t}\n\t}, [ closeListView ] );\n\n\t// This only fires when the sidebar is open because of the conditional rendering.\n\t// It is the same shortcut to open but that is defined as a global shortcut and only fires when the sidebar is closed.\n\tuseShortcut(\n\t\t'core/edit-site/toggle-list-view',\n\t\thandleToggleListViewShortcut\n\t);\n\n\treturn (\n\t\t// eslint-disable-next-line jsx-a11y/no-static-element-interactions\n\t\t<div\n\t\t\tclassName=\"edit-site-editor__list-view-panel\"\n\t\t\tonKeyDown={ closeOnEscape }\n\t\t\tref={ sidebarRef }\n\t\t>\n\t\t\t<div className=\"edit-site-editor__list-view-panel-header\">\n\t\t\t\t<strong>{ __( 'List View' ) }</strong>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\tonClick={ closeListView }\n\t\t\t\t\tref={ sidebarCloseButtonRef }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-site-editor__list-view-panel-content\"\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tfocusOnMountRef,\n\t\t\t\t\tsetDropZoneElement,\n\t\t\t\t\tlistViewRef,\n\t\t\t\t] ) }\n\t\t\t>\n\t\t\t\t<PrivateListView dropZoneElement={ dropZoneElement } />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { decodeEntities } from '@wordpress/html-entities';
7
7
  import { DropdownMenu, MenuGroup, MenuItem, __experimentalHStack as HStack, __experimentalText as Text } from '@wordpress/components';
8
8
  import { __ } from '@wordpress/i18n';
9
9
  import { store as coreStore } from '@wordpress/core-data';
10
+ import { check } from '@wordpress/icons';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -14,6 +15,7 @@ import { store as coreStore } from '@wordpress/core-data';
14
15
  import { store as editSiteStore } from '../../../store';
15
16
  import SwapTemplateButton from './swap-template-button';
16
17
  import ResetDefaultTemplate from './reset-default-template';
18
+ import { unlock } from '../../../lock-unlock';
17
19
  const POPOVER_PROPS = {
18
20
  className: 'edit-site-page-panels-edit-template__dropdown',
19
21
  placement: 'bottom-start'
@@ -21,13 +23,18 @@ const POPOVER_PROPS = {
21
23
  export default function EditTemplate() {
22
24
  const {
23
25
  hasResolved,
24
- template
26
+ template,
27
+ isTemplateHidden
25
28
  } = useSelect(select => {
26
29
  const {
27
30
  getEditedPostContext,
28
31
  getEditedPostType,
29
32
  getEditedPostId
30
33
  } = select(editSiteStore);
34
+ const {
35
+ getCanvasMode,
36
+ getPageContentFocusType
37
+ } = unlock(select(editSiteStore));
31
38
  const {
32
39
  getEditedEntityRecord,
33
40
  hasFinishedResolution
@@ -37,12 +44,18 @@ export default function EditTemplate() {
37
44
  return {
38
45
  context: _context,
39
46
  hasResolved: hasFinishedResolution('getEditedEntityRecord', queryArgs),
40
- template: getEditedEntityRecord(...queryArgs)
47
+ template: getEditedEntityRecord(...queryArgs),
48
+ isTemplateHidden: getCanvasMode() === 'edit' && getPageContentFocusType() === 'hideTemplate'
41
49
  };
42
50
  }, []);
43
51
  const {
44
52
  setHasPageContentFocus
45
53
  } = useDispatch(editSiteStore);
54
+ // Disable reason: `useDispatch` can't be called conditionally.
55
+ // eslint-disable-next-line @wordpress/no-unused-vars-before-return
56
+ const {
57
+ setPageContentFocusType
58
+ } = unlock(useDispatch(editSiteStore));
46
59
  if (!hasResolved) {
47
60
  return null;
48
61
  }
@@ -71,6 +84,11 @@ export default function EditTemplate() {
71
84
  onClick: onClose
72
85
  })), createElement(ResetDefaultTemplate, {
73
86
  onClick: onClose
74
- }))));
87
+ }), createElement(MenuGroup, null, createElement(MenuItem, {
88
+ icon: !isTemplateHidden ? check : undefined,
89
+ onClick: () => {
90
+ setPageContentFocusType(isTemplateHidden ? 'disableTemplate' : 'hideTemplate');
91
+ }
92
+ }, __('Template preview'))))));
75
93
  }
76
94
  //# sourceMappingURL=edit-template.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","decodeEntities","DropdownMenu","MenuGroup","MenuItem","__experimentalHStack","HStack","__experimentalText","Text","__","store","coreStore","editSiteStore","SwapTemplateButton","ResetDefaultTemplate","POPOVER_PROPS","className","placement","EditTemplate","hasResolved","template","select","getEditedPostContext","getEditedPostType","getEditedPostId","getEditedEntityRecord","hasFinishedResolution","_context","queryArgs","context","setHasPageContentFocus","createElement","popoverProps","focusOnMount","toggleProps","variant","label","text","title","icon","onClose","Fragment","onClick"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/page-panels/edit-template.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport SwapTemplateButton from './swap-template-button';\nimport ResetDefaultTemplate from './reset-default-template';\n\nconst POPOVER_PROPS = {\n\tclassName: 'edit-site-page-panels-edit-template__dropdown',\n\tplacement: 'bottom-start',\n};\n\nexport default function EditTemplate() {\n\tconst { hasResolved, template } = useSelect( ( select ) => {\n\t\tconst { getEditedPostContext, getEditedPostType, getEditedPostId } =\n\t\t\tselect( editSiteStore );\n\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\tselect( coreStore );\n\t\tconst _context = getEditedPostContext();\n\t\tconst queryArgs = [\n\t\t\t'postType',\n\t\t\tgetEditedPostType(),\n\t\t\tgetEditedPostId(),\n\t\t];\n\t\treturn {\n\t\t\tcontext: _context,\n\t\t\thasResolved: hasFinishedResolution(\n\t\t\t\t'getEditedEntityRecord',\n\t\t\t\tqueryArgs\n\t\t\t),\n\t\t\ttemplate: getEditedEntityRecord( ...queryArgs ),\n\t\t};\n\t}, [] );\n\n\tconst { setHasPageContentFocus } = useDispatch( editSiteStore );\n\n\tif ( ! hasResolved ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<HStack className=\"edit-site-summary-field\">\n\t\t\t<Text className=\"edit-site-summary-field__label\">\n\t\t\t\t{ __( 'Template' ) }\n\t\t\t</Text>\n\t\t\t<DropdownMenu\n\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\tfocusOnMount\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t\tclassName: 'edit-site-summary-field__trigger',\n\t\t\t\t} }\n\t\t\t\tlabel={ __( 'Template options' ) }\n\t\t\t\ttext={ decodeEntities( template.title ) }\n\t\t\t\ticon={ null }\n\t\t\t>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetHasPageContentFocus( false );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Edit template' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t<SwapTemplateButton onClick={ onClose } />\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<ResetDefaultTemplate onClick={ onClose } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t</HStack>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SACCC,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,oBAAoB,IAAIC,MAAM,EAC9BC,kBAAkB,IAAIC,IAAI,QACpB,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASD,KAAK,IAAIE,aAAa,QAAQ,gBAAgB;AACvD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,oBAAoB,MAAM,0BAA0B;AAE3D,MAAMC,aAAa,GAAG;EACrBC,SAAS,EAAE,+CAA+C;EAC1DC,SAAS,EAAE;AACZ,CAAC;AAED,eAAe,SAASC,YAAYA,CAAA,EAAG;EACtC,MAAM;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGrB,SAAS,CAAIsB,MAAM,IAAM;IAC1D,MAAM;MAAEC,oBAAoB;MAAEC,iBAAiB;MAAEC;IAAgB,CAAC,GACjEH,MAAM,CAAET,aAAc,CAAC;IACxB,MAAM;MAAEa,qBAAqB;MAAEC;IAAsB,CAAC,GACrDL,MAAM,CAAEV,SAAU,CAAC;IACpB,MAAMgB,QAAQ,GAAGL,oBAAoB,CAAC,CAAC;IACvC,MAAMM,SAAS,GAAG,CACjB,UAAU,EACVL,iBAAiB,CAAC,CAAC,EACnBC,eAAe,CAAC,CAAC,CACjB;IACD,OAAO;MACNK,OAAO,EAAEF,QAAQ;MACjBR,WAAW,EAAEO,qBAAqB,CACjC,uBAAuB,EACvBE,SACD,CAAC;MACDR,QAAQ,EAAEK,qBAAqB,CAAE,GAAGG,SAAU;IAC/C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEE;EAAuB,CAAC,GAAG9B,WAAW,CAAEY,aAAc,CAAC;EAE/D,IAAK,CAAEO,WAAW,EAAG;IACpB,OAAO,IAAI;EACZ;EAEA,OACCY,aAAA,CAACzB,MAAM;IAACU,SAAS,EAAC;EAAyB,GAC1Ce,aAAA,CAACvB,IAAI;IAACQ,SAAS,EAAC;EAAgC,GAC7CP,EAAE,CAAE,UAAW,CACZ,CAAC,EACPsB,aAAA,CAAC7B,YAAY;IACZ8B,YAAY,EAAGjB,aAAe;IAC9BkB,YAAY;IACZC,WAAW,EAAG;MACbC,OAAO,EAAE,UAAU;MACnBnB,SAAS,EAAE;IACZ,CAAG;IACHoB,KAAK,EAAG3B,EAAE,CAAE,kBAAmB,CAAG;IAClC4B,IAAI,EAAGpC,cAAc,CAAEmB,QAAQ,CAACkB,KAAM,CAAG;IACzCC,IAAI,EAAG;EAAM,GAEX,CAAE;IAAEC;EAAQ,CAAC,KACdT,aAAA,CAAAU,QAAA,QACCV,aAAA,CAAC5B,SAAS,QACT4B,aAAA,CAAC3B,QAAQ;IACRsC,OAAO,EAAGA,CAAA,KAAM;MACfZ,sBAAsB,CAAE,KAAM,CAAC;MAC/BU,OAAO,CAAC,CAAC;IACV;EAAG,GAED/B,EAAE,CAAE,eAAgB,CACb,CAAC,EACXsB,aAAA,CAAClB,kBAAkB;IAAC6B,OAAO,EAAGF;EAAS,CAAE,CAC/B,CAAC,EACZT,aAAA,CAACjB,oBAAoB;IAAC4B,OAAO,EAAGF;EAAS,CAAE,CAC1C,CAEU,CACP,CAAC;AAEX"}
1
+ {"version":3,"names":["useSelect","useDispatch","decodeEntities","DropdownMenu","MenuGroup","MenuItem","__experimentalHStack","HStack","__experimentalText","Text","__","store","coreStore","check","editSiteStore","SwapTemplateButton","ResetDefaultTemplate","unlock","POPOVER_PROPS","className","placement","EditTemplate","hasResolved","template","isTemplateHidden","select","getEditedPostContext","getEditedPostType","getEditedPostId","getCanvasMode","getPageContentFocusType","getEditedEntityRecord","hasFinishedResolution","_context","queryArgs","context","setHasPageContentFocus","setPageContentFocusType","createElement","popoverProps","focusOnMount","toggleProps","variant","label","text","title","icon","onClose","Fragment","onClick","undefined"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/page-panels/edit-template.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { check } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport SwapTemplateButton from './swap-template-button';\nimport ResetDefaultTemplate from './reset-default-template';\nimport { unlock } from '../../../lock-unlock';\n\nconst POPOVER_PROPS = {\n\tclassName: 'edit-site-page-panels-edit-template__dropdown',\n\tplacement: 'bottom-start',\n};\n\nexport default function EditTemplate() {\n\tconst { hasResolved, template, isTemplateHidden } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedPostContext, getEditedPostType, getEditedPostId } =\n\t\t\t\tselect( editSiteStore );\n\t\t\tconst { getCanvasMode, getPageContentFocusType } = unlock(\n\t\t\t\tselect( editSiteStore )\n\t\t\t);\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _context = getEditedPostContext();\n\t\t\tconst queryArgs = [\n\t\t\t\t'postType',\n\t\t\t\tgetEditedPostType(),\n\t\t\t\tgetEditedPostId(),\n\t\t\t];\n\t\t\treturn {\n\t\t\t\tcontext: _context,\n\t\t\t\thasResolved: hasFinishedResolution(\n\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\tqueryArgs\n\t\t\t\t),\n\t\t\t\ttemplate: getEditedEntityRecord( ...queryArgs ),\n\t\t\t\tisTemplateHidden:\n\t\t\t\t\tgetCanvasMode() === 'edit' &&\n\t\t\t\t\tgetPageContentFocusType() === 'hideTemplate',\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { setHasPageContentFocus } = useDispatch( editSiteStore );\n\t// Disable reason: `useDispatch` can't be called conditionally.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { setPageContentFocusType } = unlock( useDispatch( editSiteStore ) );\n\n\tif ( ! hasResolved ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<HStack className=\"edit-site-summary-field\">\n\t\t\t<Text className=\"edit-site-summary-field__label\">\n\t\t\t\t{ __( 'Template' ) }\n\t\t\t</Text>\n\t\t\t<DropdownMenu\n\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\tfocusOnMount\n\t\t\t\ttoggleProps={ {\n\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t\tclassName: 'edit-site-summary-field__trigger',\n\t\t\t\t} }\n\t\t\t\tlabel={ __( 'Template options' ) }\n\t\t\t\ttext={ decodeEntities( template.title ) }\n\t\t\t\ticon={ null }\n\t\t\t>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetHasPageContentFocus( false );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Edit template' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t<SwapTemplateButton onClick={ onClose } />\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<ResetDefaultTemplate onClick={ onClose } />\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ ! isTemplateHidden ? check : undefined }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetPageContentFocusType(\n\t\t\t\t\t\t\t\t\t\tisTemplateHidden\n\t\t\t\t\t\t\t\t\t\t\t? 'disableTemplate'\n\t\t\t\t\t\t\t\t\t\t\t: 'hideTemplate'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Template preview' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t</HStack>\n\t);\n}\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ import { store as coreStore } from '@wordpress/core-data';
9
9
  * Internal dependencies
10
10
  */
11
11
  import { store as editSiteStore } from '../../../store';
12
+ import { TEMPLATE_POST_TYPE } from '../../../utils/constants';
12
13
  export function useEditedPostContext() {
13
14
  return useSelect(select => select(editSiteStore).getEditedPostContext(), []);
14
15
  }
@@ -19,7 +20,7 @@ export function useIsPostsPage() {
19
20
  return useSelect(select => +postId === select(coreStore).getEntityRecord('root', 'site')?.page_for_posts, [postId]);
20
21
  }
21
22
  function useTemplates() {
22
- return useSelect(select => select(coreStore).getEntityRecords('postType', 'wp_template', {
23
+ return useSelect(select => select(coreStore).getEntityRecords('postType', TEMPLATE_POST_TYPE, {
23
24
  per_page: -1,
24
25
  post_type: 'page'
25
26
  }), []);
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useMemo","store","coreStore","editSiteStore","useEditedPostContext","select","getEditedPostContext","useIsPostsPage","postId","getEntityRecord","page_for_posts","useTemplates","getEntityRecords","per_page","post_type","useAvailableTemplates","currentTemplateSlug","useCurrentTemplateSlug","isPostsPage","templates","filter","template","is_custom","slug","content","raw","postType","entityTemplate","post","getEditedEntityRecord","find"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/page-panels/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\n\nexport function useEditedPostContext() {\n\treturn useSelect(\n\t\t( select ) => select( editSiteStore ).getEditedPostContext(),\n\t\t[]\n\t);\n}\n\nexport function useIsPostsPage() {\n\tconst { postId } = useEditedPostContext();\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\t+postId ===\n\t\t\tselect( coreStore ).getEntityRecord( 'root', 'site' )\n\t\t\t\t?.page_for_posts,\n\t\t[ postId ]\n\t);\n}\n\nfunction useTemplates() {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords( 'postType', 'wp_template', {\n\t\t\t\tper_page: -1,\n\t\t\t\tpost_type: 'page',\n\t\t\t} ),\n\t\t[]\n\t);\n}\n\nexport function useAvailableTemplates() {\n\tconst currentTemplateSlug = useCurrentTemplateSlug();\n\tconst isPostsPage = useIsPostsPage();\n\tconst templates = useTemplates();\n\treturn useMemo(\n\t\t() =>\n\t\t\t// The posts page template cannot be changed.\n\t\t\t! isPostsPage &&\n\t\t\ttemplates?.filter(\n\t\t\t\t( template ) =>\n\t\t\t\t\ttemplate.is_custom &&\n\t\t\t\t\ttemplate.slug !== currentTemplateSlug &&\n\t\t\t\t\t!! template.content.raw // Skip empty templates.\n\t\t\t),\n\t\t[ templates, currentTemplateSlug, isPostsPage ]\n\t);\n}\n\nexport function useCurrentTemplateSlug() {\n\tconst { postType, postId } = useEditedPostContext();\n\tconst templates = useTemplates();\n\tconst entityTemplate = useSelect(\n\t\t( select ) => {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\treturn post?.template;\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tif ( ! entityTemplate ) {\n\t\treturn;\n\t}\n\t// If a page has a `template` set and is not included in the list\n\t// of the theme's templates, do not return it, in order to resolve\n\t// to the current theme's default template.\n\treturn templates?.find( ( template ) => template.slug === entityTemplate )\n\t\t?.slug;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASD,KAAK,IAAIE,aAAa,QAAQ,gBAAgB;AAEvD,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACtC,OAAOL,SAAS,CACbM,MAAM,IAAMA,MAAM,CAAEF,aAAc,CAAC,CAACG,oBAAoB,CAAC,CAAC,EAC5D,EACD,CAAC;AACF;AAEA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAChC,MAAM;IAAEC;EAAO,CAAC,GAAGJ,oBAAoB,CAAC,CAAC;EACzC,OAAOL,SAAS,CACbM,MAAM,IACP,CAACG,MAAM,KACPH,MAAM,CAAEH,SAAU,CAAC,CAACO,eAAe,CAAE,MAAM,EAAE,MAAO,CAAC,EAClDC,cAAc,EAClB,CAAEF,MAAM,CACT,CAAC;AACF;AAEA,SAASG,YAAYA,CAAA,EAAG;EACvB,OAAOZ,SAAS,CACbM,MAAM,IACPA,MAAM,CAAEH,SAAU,CAAC,CAACU,gBAAgB,CAAE,UAAU,EAAE,aAAa,EAAE;IAChEC,QAAQ,EAAE,CAAC,CAAC;IACZC,SAAS,EAAE;EACZ,CAAE,CAAC,EACJ,EACD,CAAC;AACF;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACvC,MAAMC,mBAAmB,GAAGC,sBAAsB,CAAC,CAAC;EACpD,MAAMC,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,MAAMY,SAAS,GAAGR,YAAY,CAAC,CAAC;EAChC,OAAOX,OAAO,CACb;EACC;EACA,CAAEkB,WAAW,IACbC,SAAS,EAAEC,MAAM,CACdC,QAAQ,IACTA,QAAQ,CAACC,SAAS,IAClBD,QAAQ,CAACE,IAAI,KAAKP,mBAAmB,IACrC,CAAC,CAAEK,QAAQ,CAACG,OAAO,CAACC,GAAG,CAAC;EAC1B,CAAC,EACF,CAAEN,SAAS,EAAEH,mBAAmB,EAAEE,WAAW,CAC9C,CAAC;AACF;AAEA,OAAO,SAASD,sBAAsBA,CAAA,EAAG;EACxC,MAAM;IAAES,QAAQ;IAAElB;EAAO,CAAC,GAAGJ,oBAAoB,CAAC,CAAC;EACnD,MAAMe,SAAS,GAAGR,YAAY,CAAC,CAAC;EAChC,MAAMgB,cAAc,GAAG5B,SAAS,CAC7BM,MAAM,IAAM;IACb,MAAMuB,IAAI,GAAGvB,MAAM,CAAEH,SAAU,CAAC,CAAC2B,qBAAqB,CACrD,UAAU,EACVH,QAAQ,EACRlB,MACD,CAAC;IACD,OAAOoB,IAAI,EAAEP,QAAQ;EACtB,CAAC,EACD,CAAEK,QAAQ,EAAElB,MAAM,CACnB,CAAC;EAED,IAAK,CAAEmB,cAAc,EAAG;IACvB;EACD;EACA;EACA;EACA;EACA,OAAOR,SAAS,EAAEW,IAAI,CAAIT,QAAQ,IAAMA,QAAQ,CAACE,IAAI,KAAKI,cAAe,CAAC,EACvEJ,IAAI;AACR"}
1
+ {"version":3,"names":["useSelect","useMemo","store","coreStore","editSiteStore","TEMPLATE_POST_TYPE","useEditedPostContext","select","getEditedPostContext","useIsPostsPage","postId","getEntityRecord","page_for_posts","useTemplates","getEntityRecords","per_page","post_type","useAvailableTemplates","currentTemplateSlug","useCurrentTemplateSlug","isPostsPage","templates","filter","template","is_custom","slug","content","raw","postType","entityTemplate","post","getEditedEntityRecord","find"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/page-panels/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\nimport { TEMPLATE_POST_TYPE } from '../../../utils/constants';\n\nexport function useEditedPostContext() {\n\treturn useSelect(\n\t\t( select ) => select( editSiteStore ).getEditedPostContext(),\n\t\t[]\n\t);\n}\n\nexport function useIsPostsPage() {\n\tconst { postId } = useEditedPostContext();\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\t+postId ===\n\t\t\tselect( coreStore ).getEntityRecord( 'root', 'site' )\n\t\t\t\t?.page_for_posts,\n\t\t[ postId ]\n\t);\n}\n\nfunction useTemplates() {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t\tpost_type: 'page',\n\t\t\t\t}\n\t\t\t),\n\t\t[]\n\t);\n}\n\nexport function useAvailableTemplates() {\n\tconst currentTemplateSlug = useCurrentTemplateSlug();\n\tconst isPostsPage = useIsPostsPage();\n\tconst templates = useTemplates();\n\treturn useMemo(\n\t\t() =>\n\t\t\t// The posts page template cannot be changed.\n\t\t\t! isPostsPage &&\n\t\t\ttemplates?.filter(\n\t\t\t\t( template ) =>\n\t\t\t\t\ttemplate.is_custom &&\n\t\t\t\t\ttemplate.slug !== currentTemplateSlug &&\n\t\t\t\t\t!! template.content.raw // Skip empty templates.\n\t\t\t),\n\t\t[ templates, currentTemplateSlug, isPostsPage ]\n\t);\n}\n\nexport function useCurrentTemplateSlug() {\n\tconst { postType, postId } = useEditedPostContext();\n\tconst templates = useTemplates();\n\tconst entityTemplate = useSelect(\n\t\t( select ) => {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\treturn post?.template;\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tif ( ! entityTemplate ) {\n\t\treturn;\n\t}\n\t// If a page has a `template` set and is not included in the list\n\t// of the theme's templates, do not return it, in order to resolve\n\t// to the current theme's default template.\n\treturn templates?.find( ( template ) => template.slug === entityTemplate )\n\t\t?.slug;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASD,KAAK,IAAIE,aAAa,QAAQ,gBAAgB;AACvD,SAASC,kBAAkB,QAAQ,0BAA0B;AAE7D,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACtC,OAAON,SAAS,CACbO,MAAM,IAAMA,MAAM,CAAEH,aAAc,CAAC,CAACI,oBAAoB,CAAC,CAAC,EAC5D,EACD,CAAC;AACF;AAEA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAChC,MAAM;IAAEC;EAAO,CAAC,GAAGJ,oBAAoB,CAAC,CAAC;EACzC,OAAON,SAAS,CACbO,MAAM,IACP,CAACG,MAAM,KACPH,MAAM,CAAEJ,SAAU,CAAC,CAACQ,eAAe,CAAE,MAAM,EAAE,MAAO,CAAC,EAClDC,cAAc,EAClB,CAAEF,MAAM,CACT,CAAC;AACF;AAEA,SAASG,YAAYA,CAAA,EAAG;EACvB,OAAOb,SAAS,CACbO,MAAM,IACPA,MAAM,CAAEJ,SAAU,CAAC,CAACW,gBAAgB,CACnC,UAAU,EACVT,kBAAkB,EAClB;IACCU,QAAQ,EAAE,CAAC,CAAC;IACZC,SAAS,EAAE;EACZ,CACD,CAAC,EACF,EACD,CAAC;AACF;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACvC,MAAMC,mBAAmB,GAAGC,sBAAsB,CAAC,CAAC;EACpD,MAAMC,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,MAAMY,SAAS,GAAGR,YAAY,CAAC,CAAC;EAChC,OAAOZ,OAAO,CACb;EACC;EACA,CAAEmB,WAAW,IACbC,SAAS,EAAEC,MAAM,CACdC,QAAQ,IACTA,QAAQ,CAACC,SAAS,IAClBD,QAAQ,CAACE,IAAI,KAAKP,mBAAmB,IACrC,CAAC,CAAEK,QAAQ,CAACG,OAAO,CAACC,GAAG,CAAC;EAC1B,CAAC,EACF,CAAEN,SAAS,EAAEH,mBAAmB,EAAEE,WAAW,CAC9C,CAAC;AACF;AAEA,OAAO,SAASD,sBAAsBA,CAAA,EAAG;EACxC,MAAM;IAAES,QAAQ;IAAElB;EAAO,CAAC,GAAGJ,oBAAoB,CAAC,CAAC;EACnD,MAAMe,SAAS,GAAGR,YAAY,CAAC,CAAC;EAChC,MAAMgB,cAAc,GAAG7B,SAAS,CAC7BO,MAAM,IAAM;IACb,MAAMuB,IAAI,GAAGvB,MAAM,CAAEJ,SAAU,CAAC,CAAC4B,qBAAqB,CACrD,UAAU,EACVH,QAAQ,EACRlB,MACD,CAAC;IACD,OAAOoB,IAAI,EAAEP,QAAQ;EACtB,CAAC,EACD,CAAEK,QAAQ,EAAElB,MAAM,CACnB,CAAC;EAED,IAAK,CAAEmB,cAAc,EAAG;IACvB;EACD;EACA;EACA;EACA;EACA,OAAOR,SAAS,EAAEW,IAAI,CAAIT,QAAQ,IAAMA,QAAQ,CAACE,IAAI,KAAKI,cAAe,CAAC,EACvEJ,IAAI;AACR"}
@@ -18,11 +18,7 @@ import { store as interfaceStore } from '@wordpress/interface';
18
18
  import { STORE_NAME } from '../../../store/constants';
19
19
  import { SIDEBAR_BLOCK, SIDEBAR_TEMPLATE } from '../constants';
20
20
  import { store as editSiteStore } from '../../../store';
21
- const entityLabels = {
22
- wp_navigation: __('Navigation'),
23
- wp_block: __('Pattern'),
24
- wp_template: __('Template')
25
- };
21
+ import { POST_TYPE_LABELS, TEMPLATE_POST_TYPE } from '../../../utils/constants';
26
22
  const SettingsHeader = ({
27
23
  sidebarName
28
24
  }) => {
@@ -39,7 +35,7 @@ const SettingsHeader = ({
39
35
  entityType: getEditedPostType()
40
36
  };
41
37
  });
42
- const entityLabel = entityLabels[entityType] || entityLabels.wp_template;
38
+ const entityLabel = POST_TYPE_LABELS[entityType] || POST_TYPE_LABELS[TEMPLATE_POST_TYPE];
43
39
  const {
44
40
  enableComplementaryArea
45
41
  } = useDispatch(interfaceStore);
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","Button","__","sprintf","useSelect","useDispatch","store","interfaceStore","STORE_NAME","SIDEBAR_BLOCK","SIDEBAR_TEMPLATE","editSiteStore","entityLabels","wp_navigation","wp_block","wp_template","SettingsHeader","sidebarName","hasPageContentFocus","entityType","select","getEditedPostType","_hasPageContentFocus","entityLabel","enableComplementaryArea","openTemplateSettings","openBlockSettings","templateAriaLabel","createElement","onClick","className"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/settings-header/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../../../store/constants';\nimport { SIDEBAR_BLOCK, SIDEBAR_TEMPLATE } from '../constants';\nimport { store as editSiteStore } from '../../../store';\n\nconst entityLabels = {\n\twp_navigation: __( 'Navigation' ),\n\twp_block: __( 'Pattern' ),\n\twp_template: __( 'Template' ),\n};\n\nconst SettingsHeader = ( { sidebarName } ) => {\n\tconst { hasPageContentFocus, entityType } = useSelect( ( select ) => {\n\t\tconst { getEditedPostType, hasPageContentFocus: _hasPageContentFocus } =\n\t\t\tselect( editSiteStore );\n\n\t\treturn {\n\t\t\thasPageContentFocus: _hasPageContentFocus(),\n\t\t\tentityType: getEditedPostType(),\n\t\t};\n\t} );\n\n\tconst entityLabel = entityLabels[ entityType ] || entityLabels.wp_template;\n\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\tconst openTemplateSettings = () =>\n\t\tenableComplementaryArea( STORE_NAME, SIDEBAR_TEMPLATE );\n\tconst openBlockSettings = () =>\n\t\tenableComplementaryArea( STORE_NAME, SIDEBAR_BLOCK );\n\n\tlet templateAriaLabel;\n\tif ( hasPageContentFocus ) {\n\t\ttemplateAriaLabel =\n\t\t\tsidebarName === SIDEBAR_TEMPLATE\n\t\t\t\t? // translators: ARIA label for the Template sidebar tab, selected.\n\t\t\t\t __( 'Page (selected)' )\n\t\t\t\t: // translators: ARIA label for the Template Settings Sidebar tab, not selected.\n\t\t\t\t __( 'Page' );\n\t} else {\n\t\ttemplateAriaLabel =\n\t\t\tsidebarName === SIDEBAR_TEMPLATE\n\t\t\t\t? // translators: ARIA label for the Template sidebar tab, selected.\n\t\t\t\t sprintf( __( '%s (selected)' ), entityLabel )\n\t\t\t\t: // translators: ARIA label for the Template Settings Sidebar tab, not selected.\n\t\t\t\t entityLabel;\n\t}\n\n\t/* Use a list so screen readers will announce how many tabs there are. */\n\treturn (\n\t\t<ul>\n\t\t\t<li>\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ openTemplateSettings }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'edit-site-sidebar-edit-mode__panel-tab',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-active': sidebarName === SIDEBAR_TEMPLATE,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\taria-label={ templateAriaLabel }\n\t\t\t\t\tdata-label={\n\t\t\t\t\t\thasPageContentFocus ? __( 'Page' ) : entityLabel\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ hasPageContentFocus ? __( 'Page' ) : entityLabel }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ openBlockSettings }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'edit-site-sidebar-edit-mode__panel-tab',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-active': sidebarName === SIDEBAR_BLOCK,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tsidebarName === SIDEBAR_BLOCK\n\t\t\t\t\t\t\t? // translators: ARIA label for the Block Settings Sidebar tab, selected.\n\t\t\t\t\t\t\t __( 'Block (selected)' )\n\t\t\t\t\t\t\t: // translators: ARIA label for the Block Settings Sidebar tab, not selected.\n\t\t\t\t\t\t\t __( 'Block' )\n\t\t\t\t\t}\n\t\t\t\t\tdata-label={ __( 'Block' ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Block' ) }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</ul>\n\t);\n};\n\nexport default SettingsHeader;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,cAAc,QAAQ,sBAAsB;;AAE9D;AACA;AACA;AACA,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,aAAa,EAAEC,gBAAgB,QAAQ,cAAc;AAC9D,SAASJ,KAAK,IAAIK,aAAa,QAAQ,gBAAgB;AAEvD,MAAMC,YAAY,GAAG;EACpBC,aAAa,EAAEX,EAAE,CAAE,YAAa,CAAC;EACjCY,QAAQ,EAAEZ,EAAE,CAAE,SAAU,CAAC;EACzBa,WAAW,EAAEb,EAAE,CAAE,UAAW;AAC7B,CAAC;AAED,MAAMc,cAAc,GAAGA,CAAE;EAAEC;AAAY,CAAC,KAAM;EAC7C,MAAM;IAAEC,mBAAmB;IAAEC;EAAW,CAAC,GAAGf,SAAS,CAAIgB,MAAM,IAAM;IACpE,MAAM;MAAEC,iBAAiB;MAAEH,mBAAmB,EAAEI;IAAqB,CAAC,GACrEF,MAAM,CAAET,aAAc,CAAC;IAExB,OAAO;MACNO,mBAAmB,EAAEI,oBAAoB,CAAC,CAAC;MAC3CH,UAAU,EAAEE,iBAAiB,CAAC;IAC/B,CAAC;EACF,CAAE,CAAC;EAEH,MAAME,WAAW,GAAGX,YAAY,CAAEO,UAAU,CAAE,IAAIP,YAAY,CAACG,WAAW;EAE1E,MAAM;IAAES;EAAwB,CAAC,GAAGnB,WAAW,CAAEE,cAAe,CAAC;EACjE,MAAMkB,oBAAoB,GAAGA,CAAA,KAC5BD,uBAAuB,CAAEhB,UAAU,EAAEE,gBAAiB,CAAC;EACxD,MAAMgB,iBAAiB,GAAGA,CAAA,KACzBF,uBAAuB,CAAEhB,UAAU,EAAEC,aAAc,CAAC;EAErD,IAAIkB,iBAAiB;EACrB,IAAKT,mBAAmB,EAAG;IAC1BS,iBAAiB,GAChBV,WAAW,KAAKP,gBAAgB;IAC7B;IACAR,EAAE,CAAE,iBAAkB,CAAC;IACvB;IACAA,EAAE,CAAE,MAAO,CAAC;EACjB,CAAC,MAAM;IACNyB,iBAAiB,GAChBV,WAAW,KAAKP,gBAAgB;IAC7B;IACAP,OAAO,CAAED,EAAE,CAAE,eAAgB,CAAC,EAAEqB,WAAY,CAAC;IAC7C;IACAA,WAAW;EAChB;;EAEA;EACA,OACCK,aAAA,aACCA,aAAA,aACCA,aAAA,CAAC3B,MAAM;IACN4B,OAAO,EAAGJ,oBAAsB;IAChCK,SAAS,EAAG9B,UAAU,CACrB,wCAAwC,EACxC;MACC,WAAW,EAAEiB,WAAW,KAAKP;IAC9B,CACD,CAAG;IACH,cAAaiB,iBAAmB;IAChC,cACCT,mBAAmB,GAAGhB,EAAE,CAAE,MAAO,CAAC,GAAGqB;EACrC,GAECL,mBAAmB,GAAGhB,EAAE,CAAE,MAAO,CAAC,GAAGqB,WAChC,CACL,CAAC,EACLK,aAAA,aACCA,aAAA,CAAC3B,MAAM;IACN4B,OAAO,EAAGH,iBAAmB;IAC7BI,SAAS,EAAG9B,UAAU,CACrB,wCAAwC,EACxC;MACC,WAAW,EAAEiB,WAAW,KAAKR;IAC9B,CACD,CAAG;IACH,cACCQ,WAAW,KAAKR,aAAa;IAC1B;IACAP,EAAE,CAAE,kBAAmB,CAAC;IACxB;IACAA,EAAE,CAAE,OAAQ,CACf;IACD,cAAaA,EAAE,CAAE,OAAQ;EAAG,GAE1BA,EAAE,CAAE,OAAQ,CACP,CACL,CACD,CAAC;AAEP,CAAC;AAED,eAAec,cAAc"}
1
+ {"version":3,"names":["classnames","Button","__","sprintf","useSelect","useDispatch","store","interfaceStore","STORE_NAME","SIDEBAR_BLOCK","SIDEBAR_TEMPLATE","editSiteStore","POST_TYPE_LABELS","TEMPLATE_POST_TYPE","SettingsHeader","sidebarName","hasPageContentFocus","entityType","select","getEditedPostType","_hasPageContentFocus","entityLabel","enableComplementaryArea","openTemplateSettings","openBlockSettings","templateAriaLabel","createElement","onClick","className"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/settings-header/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { STORE_NAME } from '../../../store/constants';\nimport { SIDEBAR_BLOCK, SIDEBAR_TEMPLATE } from '../constants';\nimport { store as editSiteStore } from '../../../store';\nimport { POST_TYPE_LABELS, TEMPLATE_POST_TYPE } from '../../../utils/constants';\n\nconst SettingsHeader = ( { sidebarName } ) => {\n\tconst { hasPageContentFocus, entityType } = useSelect( ( select ) => {\n\t\tconst { getEditedPostType, hasPageContentFocus: _hasPageContentFocus } =\n\t\t\tselect( editSiteStore );\n\n\t\treturn {\n\t\t\thasPageContentFocus: _hasPageContentFocus(),\n\t\t\tentityType: getEditedPostType(),\n\t\t};\n\t} );\n\n\tconst entityLabel =\n\t\tPOST_TYPE_LABELS[ entityType ] ||\n\t\tPOST_TYPE_LABELS[ TEMPLATE_POST_TYPE ];\n\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\tconst openTemplateSettings = () =>\n\t\tenableComplementaryArea( STORE_NAME, SIDEBAR_TEMPLATE );\n\tconst openBlockSettings = () =>\n\t\tenableComplementaryArea( STORE_NAME, SIDEBAR_BLOCK );\n\n\tlet templateAriaLabel;\n\tif ( hasPageContentFocus ) {\n\t\ttemplateAriaLabel =\n\t\t\tsidebarName === SIDEBAR_TEMPLATE\n\t\t\t\t? // translators: ARIA label for the Template sidebar tab, selected.\n\t\t\t\t __( 'Page (selected)' )\n\t\t\t\t: // translators: ARIA label for the Template Settings Sidebar tab, not selected.\n\t\t\t\t __( 'Page' );\n\t} else {\n\t\ttemplateAriaLabel =\n\t\t\tsidebarName === SIDEBAR_TEMPLATE\n\t\t\t\t? // translators: ARIA label for the Template sidebar tab, selected.\n\t\t\t\t sprintf( __( '%s (selected)' ), entityLabel )\n\t\t\t\t: // translators: ARIA label for the Template Settings Sidebar tab, not selected.\n\t\t\t\t entityLabel;\n\t}\n\n\t/* Use a list so screen readers will announce how many tabs there are. */\n\treturn (\n\t\t<ul>\n\t\t\t<li>\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ openTemplateSettings }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'edit-site-sidebar-edit-mode__panel-tab',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-active': sidebarName === SIDEBAR_TEMPLATE,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\taria-label={ templateAriaLabel }\n\t\t\t\t\tdata-label={\n\t\t\t\t\t\thasPageContentFocus ? __( 'Page' ) : entityLabel\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ hasPageContentFocus ? __( 'Page' ) : entityLabel }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ openBlockSettings }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'edit-site-sidebar-edit-mode__panel-tab',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-active': sidebarName === SIDEBAR_BLOCK,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tsidebarName === SIDEBAR_BLOCK\n\t\t\t\t\t\t\t? // translators: ARIA label for the Block Settings Sidebar tab, selected.\n\t\t\t\t\t\t\t __( 'Block (selected)' )\n\t\t\t\t\t\t\t: // translators: ARIA label for the Block Settings Sidebar tab, not selected.\n\t\t\t\t\t\t\t __( 'Block' )\n\t\t\t\t\t}\n\t\t\t\t\tdata-label={ __( 'Block' ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Block' ) }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</ul>\n\t);\n};\n\nexport default SettingsHeader;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,cAAc,QAAQ,sBAAsB;;AAE9D;AACA;AACA;AACA,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,aAAa,EAAEC,gBAAgB,QAAQ,cAAc;AAC9D,SAASJ,KAAK,IAAIK,aAAa,QAAQ,gBAAgB;AACvD,SAASC,gBAAgB,EAAEC,kBAAkB,QAAQ,0BAA0B;AAE/E,MAAMC,cAAc,GAAGA,CAAE;EAAEC;AAAY,CAAC,KAAM;EAC7C,MAAM;IAAEC,mBAAmB;IAAEC;EAAW,CAAC,GAAGb,SAAS,CAAIc,MAAM,IAAM;IACpE,MAAM;MAAEC,iBAAiB;MAAEH,mBAAmB,EAAEI;IAAqB,CAAC,GACrEF,MAAM,CAAEP,aAAc,CAAC;IAExB,OAAO;MACNK,mBAAmB,EAAEI,oBAAoB,CAAC,CAAC;MAC3CH,UAAU,EAAEE,iBAAiB,CAAC;IAC/B,CAAC;EACF,CAAE,CAAC;EAEH,MAAME,WAAW,GAChBT,gBAAgB,CAAEK,UAAU,CAAE,IAC9BL,gBAAgB,CAAEC,kBAAkB,CAAE;EAEvC,MAAM;IAAES;EAAwB,CAAC,GAAGjB,WAAW,CAAEE,cAAe,CAAC;EACjE,MAAMgB,oBAAoB,GAAGA,CAAA,KAC5BD,uBAAuB,CAAEd,UAAU,EAAEE,gBAAiB,CAAC;EACxD,MAAMc,iBAAiB,GAAGA,CAAA,KACzBF,uBAAuB,CAAEd,UAAU,EAAEC,aAAc,CAAC;EAErD,IAAIgB,iBAAiB;EACrB,IAAKT,mBAAmB,EAAG;IAC1BS,iBAAiB,GAChBV,WAAW,KAAKL,gBAAgB;IAC7B;IACAR,EAAE,CAAE,iBAAkB,CAAC;IACvB;IACAA,EAAE,CAAE,MAAO,CAAC;EACjB,CAAC,MAAM;IACNuB,iBAAiB,GAChBV,WAAW,KAAKL,gBAAgB;IAC7B;IACAP,OAAO,CAAED,EAAE,CAAE,eAAgB,CAAC,EAAEmB,WAAY,CAAC;IAC7C;IACAA,WAAW;EAChB;;EAEA;EACA,OACCK,aAAA,aACCA,aAAA,aACCA,aAAA,CAACzB,MAAM;IACN0B,OAAO,EAAGJ,oBAAsB;IAChCK,SAAS,EAAG5B,UAAU,CACrB,wCAAwC,EACxC;MACC,WAAW,EAAEe,WAAW,KAAKL;IAC9B,CACD,CAAG;IACH,cAAae,iBAAmB;IAChC,cACCT,mBAAmB,GAAGd,EAAE,CAAE,MAAO,CAAC,GAAGmB;EACrC,GAECL,mBAAmB,GAAGd,EAAE,CAAE,MAAO,CAAC,GAAGmB,WAChC,CACL,CAAC,EACLK,aAAA,aACCA,aAAA,CAACzB,MAAM;IACN0B,OAAO,EAAGH,iBAAmB;IAC7BI,SAAS,EAAG5B,UAAU,CACrB,wCAAwC,EACxC;MACC,WAAW,EAAEe,WAAW,KAAKN;IAC9B,CACD,CAAG;IACH,cACCM,WAAW,KAAKN,aAAa;IAC1B;IACAP,EAAE,CAAE,kBAAmB,CAAC;IACxB;IACAA,EAAE,CAAE,OAAQ,CACf;IACD,cAAaA,EAAE,CAAE,OAAQ;EAAG,GAE1BA,EAAE,CAAE,OAAQ,CACP,CACL,CACD,CAAC;AAEP,CAAC;AAED,eAAeY,cAAc"}
@@ -10,6 +10,11 @@ import { store as coreStore } from '@wordpress/core-data';
10
10
  import { useDebounce } from '@wordpress/compose';
11
11
  import { store as noticesStore } from '@wordpress/notices';
12
12
  import { decodeEntities } from '@wordpress/html-entities';
13
+
14
+ /**
15
+ * Internal dependencies
16
+ */
17
+ import { PATTERN_TYPES } from '../../../utils/constants';
13
18
  export const unescapeString = arg => {
14
19
  return decodeEntities(arg);
15
20
  };
@@ -114,7 +119,8 @@ export default function PatternCategories({
114
119
  }, [searchResults]);
115
120
  const {
116
121
  saveEntityRecord,
117
- editEntityRecord
122
+ editEntityRecord,
123
+ invalidateResolution
118
124
  } = useDispatch(coreStore);
119
125
  const {
120
126
  createErrorNotice
@@ -127,6 +133,7 @@ export default function PatternCategories({
127
133
  const newTerm = await saveEntityRecord('taxonomy', slug, term, {
128
134
  throwOnError: true
129
135
  });
136
+ invalidateResolution('getUserPatternCategories');
130
137
  return unescapeTerm(newTerm);
131
138
  } catch (error) {
132
139
  if (error.code !== 'term_exists') {
@@ -139,7 +146,7 @@ export default function PatternCategories({
139
146
  }
140
147
  }
141
148
  function onUpdateTerms(newTermIds) {
142
- editEntityRecord('postType', 'wp_block', post.id, {
149
+ editEntityRecord('postType', PATTERN_TYPES.user, post.id, {
143
150
  wp_pattern_category: newTermIds
144
151
  });
145
152
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__","_x","sprintf","useEffect","useMemo","useState","FormTokenField","PanelRow","useSelect","useDispatch","store","coreStore","useDebounce","noticesStore","decodeEntities","unescapeString","arg","unescapeTerm","term","name","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","find","id","PatternCategories","post","_taxonomy$labels$sing","slug","values","setValues","search","setSearch","debouncedSearch","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","_post$_links","_post$_links2","getEntityRecords","getTaxonomy","hasFinishedResolution","_taxonomy","_termIds","wp_pattern_category","length","query","include","join","_links","rest_base","termIds","searchResults","newValues","suggestions","saveEntityRecord","editEntityRecord","createErrorNotice","findOrCreateTerm","newTerm","throwOnError","error","code","data","term_id","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","filter","Promise","all","then","newTerms","newAvailableTerms","concat","catch","message","type","singularName","labels","singular_name","termAddedLabel","termRemovedLabel","removeTermLabel","createElement","initialOpen","title","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","tokenizeOnBlur"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/template-panel/pattern-categories.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport { FormTokenField, PanelRow } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nexport const unescapeString = ( arg ) => {\n\treturn decodeEntities( arg );\n};\n\n/**\n * Returns a term object with name unescaped.\n *\n * @param {Object} term The term object to unescape.\n *\n * @return {Object} Term object with name property unescaped.\n */\nexport const unescapeTerm = ( term ) => {\n\treturn {\n\t\t...term,\n\t\tname: unescapeString( term.name ),\n\t};\n};\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names.map(\n\t\t( termName ) =>\n\t\t\tterms.find( ( term ) => isSameTermName( term.name, termName ) ).id\n\t);\n};\n\nexport default function PatternCategories( { post } ) {\n\tconst slug = 'wp_pattern_category';\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst {\n\t\tterms,\n\t\ttaxonomy,\n\t\thasAssignAction,\n\t\thasCreateAction,\n\t\thasResolvedTerms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords, getTaxonomy, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds =\n\t\t\t\tpost?.wp_pattern_category?.length > 0\n\t\t\t\t\t? post?.wp_pattern_category\n\t\t\t\t\t: EMPTY_ARRAY;\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds?.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds?.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug, post ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { saveEntityRecord, editEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\t\t\treturn unescapeTerm( newTerm );\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: term.name,\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditEntityRecord( 'postType', 'wp_block', post.id, {\n\t\t\twp_pattern_category: newTermIds,\n\t\t} );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = termNames.reduce( ( acc, name ) => {\n\t\t\tif (\n\t\t\t\t! acc.some( ( n ) => n.toLowerCase() === name.toLowerCase() )\n\t\t\t) {\n\t\t\t\tacc.push( name );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! availableTerms.find( ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, availableTerms )\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( { name: termName } )\n\t\t\t)\n\t\t)\n\t\t\t.then( ( newTerms ) => {\n\t\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\t\treturn onUpdateTerms(\n\t\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} );\n\t}\n\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<PanelRow initialOpen={ true } title={ __( 'Categories' ) }>\n\t\t\t<FormTokenField\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ __( 'Pattern categories' ) }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t\ttokenizeOnBlur\n\t\t\t/>\n\t\t</PanelRow>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["__","_x","sprintf","useEffect","useMemo","useState","FormTokenField","PanelRow","useSelect","useDispatch","store","coreStore","useDebounce","noticesStore","decodeEntities","PATTERN_TYPES","unescapeString","arg","unescapeTerm","term","name","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","find","id","PatternCategories","post","_taxonomy$labels$sing","slug","values","setValues","search","setSearch","debouncedSearch","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","_post$_links","_post$_links2","getEntityRecords","getTaxonomy","hasFinishedResolution","_taxonomy","_termIds","wp_pattern_category","length","query","include","join","_links","rest_base","termIds","searchResults","newValues","suggestions","saveEntityRecord","editEntityRecord","invalidateResolution","createErrorNotice","findOrCreateTerm","newTerm","throwOnError","error","code","data","term_id","onUpdateTerms","newTermIds","user","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","filter","Promise","all","then","newTerms","newAvailableTerms","concat","catch","message","type","singularName","labels","singular_name","termAddedLabel","termRemovedLabel","removeTermLabel","createElement","initialOpen","title","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","tokenizeOnBlur"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/template-panel/pattern-categories.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport { FormTokenField, PanelRow } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_TYPES } from '../../../utils/constants';\n\nexport const unescapeString = ( arg ) => {\n\treturn decodeEntities( arg );\n};\n\n/**\n * Returns a term object with name unescaped.\n *\n * @param {Object} term The term object to unescape.\n *\n * @return {Object} Term object with name property unescaped.\n */\nexport const unescapeTerm = ( term ) => {\n\treturn {\n\t\t...term,\n\t\tname: unescapeString( term.name ),\n\t};\n};\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names.map(\n\t\t( termName ) =>\n\t\t\tterms.find( ( term ) => isSameTermName( term.name, termName ) ).id\n\t);\n};\n\nexport default function PatternCategories( { post } ) {\n\tconst slug = 'wp_pattern_category';\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst {\n\t\tterms,\n\t\ttaxonomy,\n\t\thasAssignAction,\n\t\thasCreateAction,\n\t\thasResolvedTerms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords, getTaxonomy, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds =\n\t\t\t\tpost?.wp_pattern_category?.length > 0\n\t\t\t\t\t? post?.wp_pattern_category\n\t\t\t\t\t: EMPTY_ARRAY;\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds?.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds?.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug, post ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { saveEntityRecord, editEntityRecord, invalidateResolution } =\n\t\tuseDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\treturn unescapeTerm( newTerm );\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: term.name,\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditEntityRecord( 'postType', PATTERN_TYPES.user, post.id, {\n\t\t\twp_pattern_category: newTermIds,\n\t\t} );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = termNames.reduce( ( acc, name ) => {\n\t\t\tif (\n\t\t\t\t! acc.some( ( n ) => n.toLowerCase() === name.toLowerCase() )\n\t\t\t) {\n\t\t\t\tacc.push( name );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! availableTerms.find( ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, availableTerms )\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( { name: termName } )\n\t\t\t)\n\t\t)\n\t\t\t.then( ( newTerms ) => {\n\t\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\t\treturn onUpdateTerms(\n\t\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} );\n\t}\n\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<PanelRow initialOpen={ true } title={ __( 'Categories' ) }>\n\t\t\t<FormTokenField\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ __( 'Pattern categories' ) }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t\ttokenizeOnBlur\n\t\t\t/>\n\t\t</PanelRow>\n\t);\n}\n"],"mappings":"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"}
@@ -9,12 +9,13 @@ import { pencil } from '@wordpress/icons';
9
9
  */
10
10
  import SidebarButton from '../sidebar-button';
11
11
  import { useLink } from '../routes/link';
12
+ import { NAVIGATION_POST_TYPE } from '../../utils/constants';
12
13
  export default function EditButton({
13
14
  postId
14
15
  }) {
15
16
  const linkInfo = useLink({
16
17
  postId,
17
- postType: 'wp_navigation',
18
+ postType: NAVIGATION_POST_TYPE,
18
19
  canvas: 'edit'
19
20
  });
20
21
  return createElement(SidebarButton, {
@@ -1 +1 @@
1
- {"version":3,"names":["__","pencil","SidebarButton","useLink","EditButton","postId","linkInfo","postType","canvas","createElement","label","icon"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { pencil } from '@wordpress/icons';\n/**\n * Internal dependencies\n */\nimport SidebarButton from '../sidebar-button';\nimport { useLink } from '../routes/link';\n\nexport default function EditButton( { postId } ) {\n\tconst linkInfo = useLink( {\n\t\tpostId,\n\t\tpostType: 'wp_navigation',\n\t\tcanvas: 'edit',\n\t} );\n\treturn (\n\t\t<SidebarButton { ...linkInfo } label={ __( 'Edit' ) } icon={ pencil } />\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,QAAQ,kBAAkB;AACzC;AACA;AACA;AACA,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,SAASC,OAAO,QAAQ,gBAAgB;AAExC,eAAe,SAASC,UAAUA,CAAE;EAAEC;AAAO,CAAC,EAAG;EAChD,MAAMC,QAAQ,GAAGH,OAAO,CAAE;IACzBE,MAAM;IACNE,QAAQ,EAAE,eAAe;IACzBC,MAAM,EAAE;EACT,CAAE,CAAC;EACH,OACCC,aAAA,CAACP,aAAa;IAAA,GAAMI,QAAQ;IAAGI,KAAK,EAAGV,EAAE,CAAE,MAAO,CAAG;IAACW,IAAI,EAAGV;EAAQ,CAAE,CAAC;AAE1E"}
1
+ {"version":3,"names":["__","pencil","SidebarButton","useLink","NAVIGATION_POST_TYPE","EditButton","postId","linkInfo","postType","canvas","createElement","label","icon"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-navigation-menu/edit-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { pencil } from '@wordpress/icons';\n/**\n * Internal dependencies\n */\nimport SidebarButton from '../sidebar-button';\nimport { useLink } from '../routes/link';\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\n\nexport default function EditButton( { postId } ) {\n\tconst linkInfo = useLink( {\n\t\tpostId,\n\t\tpostType: NAVIGATION_POST_TYPE,\n\t\tcanvas: 'edit',\n\t} );\n\treturn (\n\t\t<SidebarButton { ...linkInfo } label={ __( 'Edit' ) } icon={ pencil } />\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,QAAQ,kBAAkB;AACzC;AACA;AACA;AACA,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,oBAAoB,QAAQ,uBAAuB;AAE5D,eAAe,SAASC,UAAUA,CAAE;EAAEC;AAAO,CAAC,EAAG;EAChD,MAAMC,QAAQ,GAAGJ,OAAO,CAAE;IACzBG,MAAM;IACNE,QAAQ,EAAEJ,oBAAoB;IAC9BK,MAAM,EAAE;EACT,CAAE,CAAC;EACH,OACCC,aAAA,CAACR,aAAa;IAAA,GAAMK,QAAQ;IAAGI,KAAK,EAAGX,EAAE,CAAE,MAAO,CAAG;IAACY,IAAI,EAAGX;EAAQ,CAAE,CAAC;AAE1E"}
@@ -6,10 +6,12 @@ import { __experimentalUseNavigator as useNavigator } from '@wordpress/component
6
6
  import { __, sprintf } from '@wordpress/i18n';
7
7
  import { useSelect, useDispatch } from '@wordpress/data';
8
8
  import { store as noticesStore } from '@wordpress/notices';
9
+
9
10
  /**
10
11
  * Internal dependencies
11
12
  */
12
13
  import { postType } from '.';
14
+ import { NAVIGATION_POST_TYPE } from '../../utils/constants';
13
15
  function useDeleteNavigationMenu() {
14
16
  const {
15
17
  goTo
@@ -67,7 +69,7 @@ function useSaveNavigationMenu() {
67
69
  }
68
70
  const postId = navigationMenu?.id;
69
71
  // Prepare for revert in case of error.
70
- const originalRecord = getEditedEntityRecord('postType', 'wp_navigation', postId);
72
+ const originalRecord = getEditedEntityRecord('postType', NAVIGATION_POST_TYPE, postId);
71
73
 
72
74
  // Apply the edits.
73
75
  editEntityRecord('postType', postType, postId, edits);
@@ -1 +1 @@
1
- {"version":3,"names":["store","coreStore","__experimentalUseNavigator","useNavigator","__","sprintf","useSelect","useDispatch","noticesStore","postType","useDeleteNavigationMenu","goTo","deleteEntityRecord","createSuccessNotice","createErrorNotice","handleDelete","navigationMenu","postId","id","force","throwOnError","type","error","message","useSaveNavigationMenu","getEditedEntityRecord","select","getEditedEntityRecordSelector","editEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","handleSave","edits","originalRecord","recordPropertiesToSave","Object","keys","useDuplicateNavigationMenu","saveEntityRecord","handleDuplicate","menuTitle","title","rendered","slug","savedRecord","content","raw","status","useNavigationMenuHandlers"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseNavigator as useNavigator } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n/**\n * Internal dependencies\n */\nimport { postType } from '.';\n\nfunction useDeleteNavigationMenu() {\n\tconst { goTo } = useNavigator();\n\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleDelete = async ( navigationMenu ) => {\n\t\tconst postId = navigationMenu?.id;\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\t{\n\t\t\t\t\tforce: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tcreateSuccessNotice( __( 'Deleted Navigation menu' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tgoTo( '/navigation' );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be deleted. */\n\t\t\t\t\t__( `Unable to delete Navigation menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleDelete;\n}\n\nfunction useSaveNavigationMenu() {\n\tconst { getEditedEntityRecord } = useSelect( ( select ) => {\n\t\tconst { getEditedEntityRecord: getEditedEntityRecordSelector } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\tgetEditedEntityRecord: getEditedEntityRecordSelector,\n\t\t};\n\t}, [] );\n\n\tconst {\n\t\teditEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleSave = async ( navigationMenu, edits ) => {\n\t\tif ( ! edits ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst postId = navigationMenu?.id;\n\t\t// Prepare for revert in case of error.\n\t\tconst originalRecord = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_navigation',\n\t\t\tpostId\n\t\t);\n\n\t\t// Apply the edits.\n\t\teditEntityRecord( 'postType', postType, postId, edits );\n\n\t\tconst recordPropertiesToSave = Object.keys( edits );\n\n\t\t// Attempt to persist.\n\t\ttry {\n\t\t\tawait saveSpecifiedEntityEdits(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\trecordPropertiesToSave,\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tcreateSuccessNotice( __( 'Renamed Navigation menu' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Revert to original in case of error.\n\t\t\teditEntityRecord( 'postType', postType, postId, originalRecord );\n\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be renamed. */\n\t\t\t\t\t__( `Unable to rename Navigation menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleSave;\n}\n\nfunction useDuplicateNavigationMenu() {\n\tconst { goTo } = useNavigator();\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleDuplicate = async ( navigationMenu ) => {\n\t\tconst menuTitle =\n\t\t\tnavigationMenu?.title?.rendered || navigationMenu?.slug;\n\n\t\ttry {\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\t{\n\t\t\t\t\ttitle: sprintf(\n\t\t\t\t\t\t/* translators: %s: Navigation menu title */\n\t\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\t\tmenuTitle\n\t\t\t\t\t),\n\t\t\t\t\tcontent: navigationMenu?.content?.raw,\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( savedRecord ) {\n\t\t\t\tcreateSuccessNotice( __( 'Duplicated Navigation menu' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\tgoTo( `/navigation/${ postType }/${ savedRecord.id }` );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be deleted. */\n\t\t\t\t\t__( `Unable to duplicate Navigation menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleDuplicate;\n}\n\nexport default function useNavigationMenuHandlers() {\n\treturn {\n\t\thandleDelete: useDeleteNavigationMenu(),\n\t\thandleSave: useSaveNavigationMenu(),\n\t\thandleDuplicate: useDuplicateNavigationMenu(),\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["store","coreStore","__experimentalUseNavigator","useNavigator","__","sprintf","useSelect","useDispatch","noticesStore","postType","NAVIGATION_POST_TYPE","useDeleteNavigationMenu","goTo","deleteEntityRecord","createSuccessNotice","createErrorNotice","handleDelete","navigationMenu","postId","id","force","throwOnError","type","error","message","useSaveNavigationMenu","getEditedEntityRecord","select","getEditedEntityRecordSelector","editEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","handleSave","edits","originalRecord","recordPropertiesToSave","Object","keys","useDuplicateNavigationMenu","saveEntityRecord","handleDuplicate","menuTitle","title","rendered","slug","savedRecord","content","raw","status","useNavigationMenuHandlers"],"sources":["@wordpress/edit-site/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseNavigator as useNavigator } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { postType } from '.';\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\n\nfunction useDeleteNavigationMenu() {\n\tconst { goTo } = useNavigator();\n\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleDelete = async ( navigationMenu ) => {\n\t\tconst postId = navigationMenu?.id;\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\t{\n\t\t\t\t\tforce: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tcreateSuccessNotice( __( 'Deleted Navigation menu' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tgoTo( '/navigation' );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be deleted. */\n\t\t\t\t\t__( `Unable to delete Navigation menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleDelete;\n}\n\nfunction useSaveNavigationMenu() {\n\tconst { getEditedEntityRecord } = useSelect( ( select ) => {\n\t\tconst { getEditedEntityRecord: getEditedEntityRecordSelector } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\tgetEditedEntityRecord: getEditedEntityRecordSelector,\n\t\t};\n\t}, [] );\n\n\tconst {\n\t\teditEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleSave = async ( navigationMenu, edits ) => {\n\t\tif ( ! edits ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst postId = navigationMenu?.id;\n\t\t// Prepare for revert in case of error.\n\t\tconst originalRecord = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tNAVIGATION_POST_TYPE,\n\t\t\tpostId\n\t\t);\n\n\t\t// Apply the edits.\n\t\teditEntityRecord( 'postType', postType, postId, edits );\n\n\t\tconst recordPropertiesToSave = Object.keys( edits );\n\n\t\t// Attempt to persist.\n\t\ttry {\n\t\t\tawait saveSpecifiedEntityEdits(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\trecordPropertiesToSave,\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tcreateSuccessNotice( __( 'Renamed Navigation menu' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Revert to original in case of error.\n\t\t\teditEntityRecord( 'postType', postType, postId, originalRecord );\n\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be renamed. */\n\t\t\t\t\t__( `Unable to rename Navigation menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleSave;\n}\n\nfunction useDuplicateNavigationMenu() {\n\tconst { goTo } = useNavigator();\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleDuplicate = async ( navigationMenu ) => {\n\t\tconst menuTitle =\n\t\t\tnavigationMenu?.title?.rendered || navigationMenu?.slug;\n\n\t\ttry {\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\t{\n\t\t\t\t\ttitle: sprintf(\n\t\t\t\t\t\t/* translators: %s: Navigation menu title */\n\t\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\t\tmenuTitle\n\t\t\t\t\t),\n\t\t\t\t\tcontent: navigationMenu?.content?.raw,\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( savedRecord ) {\n\t\t\t\tcreateSuccessNotice( __( 'Duplicated Navigation menu' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\tgoTo( `/navigation/${ postType }/${ savedRecord.id }` );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be deleted. */\n\t\t\t\t\t__( `Unable to duplicate Navigation menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleDuplicate;\n}\n\nexport default function useNavigationMenuHandlers() {\n\treturn {\n\t\thandleDelete: useDeleteNavigationMenu(),\n\t\thandleSave: useSaveNavigationMenu(),\n\t\thandleDuplicate: useDuplicateNavigationMenu(),\n\t};\n}\n"],"mappings":"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"}
@@ -19,6 +19,7 @@ import { useLink } from '../routes/link';
19
19
  import SingleNavigationMenu from '../sidebar-navigation-screen-navigation-menu/single-navigation-menu';
20
20
  import useNavigationMenuHandlers from '../sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers';
21
21
  import { unlock } from '../../lock-unlock';
22
+ import { NAVIGATION_POST_TYPE } from '../../utils/constants';
22
23
 
23
24
  // Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js.
24
25
  function buildMenuLabel(title, id, status) {
@@ -41,7 +42,7 @@ export default function SidebarNavigationScreenNavigationMenus() {
41
42
  records: navigationMenus,
42
43
  isResolving: isResolvingNavigationMenus,
43
44
  hasResolved: hasResolvedNavigationMenus
44
- } = useEntityRecords('postType', `wp_navigation`, PRELOADED_NAVIGATION_MENUS_QUERY);
45
+ } = useEntityRecords('postType', NAVIGATION_POST_TYPE, PRELOADED_NAVIGATION_MENUS_QUERY);
45
46
  const isLoading = isResolvingNavigationMenus && !hasResolvedNavigationMenus;
46
47
  const {
47
48
  getNavigationFallbackId
@@ -114,7 +115,7 @@ const NavMenuItem = ({
114
115
  }) => {
115
116
  const linkInfo = useLink({
116
117
  postId,
117
- postType: 'wp_navigation'
118
+ postType: NAVIGATION_POST_TYPE
118
119
  });
119
120
  return createElement(SidebarNavigationItem, {
120
121
  ...linkInfo,