@wordpress/edit-site 5.10.0 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (678) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/add-new-page/index.js +105 -0
  3. package/build/components/add-new-page/index.js.map +1 -0
  4. package/build/components/add-new-template/{add-custom-generic-template-modal.js → add-custom-generic-template-modal-content.js} +9 -25
  5. package/build/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -0
  6. package/build/components/add-new-template/{add-custom-template-modal.js → add-custom-template-modal-content.js} +28 -41
  7. package/build/components/add-new-template/add-custom-template-modal-content.js.map +1 -0
  8. package/build/components/add-new-template/index.js +4 -5
  9. package/build/components/add-new-template/index.js.map +1 -1
  10. package/build/components/add-new-template/new-template-part.js +9 -12
  11. package/build/components/add-new-template/new-template-part.js.map +1 -1
  12. package/build/components/add-new-template/new-template.js +106 -80
  13. package/build/components/add-new-template/new-template.js.map +1 -1
  14. package/build/components/add-new-template/utils.js +71 -120
  15. package/build/components/add-new-template/utils.js.map +1 -1
  16. package/build/components/block-editor/back-button.js +1 -3
  17. package/build/components/block-editor/back-button.js.map +1 -1
  18. package/build/components/block-editor/block-inspector-button.js +3 -4
  19. package/build/components/block-editor/block-inspector-button.js.map +1 -1
  20. package/build/components/block-editor/editor-canvas.js +6 -7
  21. package/build/components/block-editor/editor-canvas.js.map +1 -1
  22. package/build/components/block-editor/index.js +14 -13
  23. package/build/components/block-editor/index.js.map +1 -1
  24. package/build/components/block-editor/inserter-media-categories.js +25 -42
  25. package/build/components/block-editor/inserter-media-categories.js.map +1 -1
  26. package/build/components/block-editor/resizable-editor.js +6 -7
  27. package/build/components/block-editor/resizable-editor.js.map +1 -1
  28. package/build/components/block-editor/resize-handle.js +5 -7
  29. package/build/components/block-editor/resize-handle.js.map +1 -1
  30. package/build/components/code-editor/code-editor-text-area.js +5 -6
  31. package/build/components/code-editor/code-editor-text-area.js.map +1 -1
  32. package/build/components/create-template-part-modal/index.js +30 -35
  33. package/build/components/create-template-part-modal/index.js.map +1 -1
  34. package/build/components/editor/index.js +37 -53
  35. package/build/components/editor/index.js.map +1 -1
  36. package/build/components/editor-canvas-container/index.js +15 -9
  37. package/build/components/editor-canvas-container/index.js.map +1 -1
  38. package/build/components/error-boundary/warning.js +8 -10
  39. package/build/components/error-boundary/warning.js.map +1 -1
  40. package/build/components/global-styles/block-preview-panel.js +7 -10
  41. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  42. package/build/components/global-styles/color-indicator-wrapper.js +4 -5
  43. package/build/components/global-styles/color-indicator-wrapper.js.map +1 -1
  44. package/build/components/global-styles/color-palette-panel.js +3 -4
  45. package/build/components/global-styles/color-palette-panel.js.map +1 -1
  46. package/build/components/global-styles/dimensions-panel.js +1 -3
  47. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  48. package/build/components/global-styles/global-styles-provider.js +8 -10
  49. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  50. package/build/components/global-styles/gradients-palette-panel.js +3 -4
  51. package/build/components/global-styles/gradients-palette-panel.js.map +1 -1
  52. package/build/components/global-styles/header.js +4 -5
  53. package/build/components/global-styles/header.js.map +1 -1
  54. package/build/components/global-styles/icon-with-current-color.js +4 -5
  55. package/build/components/global-styles/icon-with-current-color.js.map +1 -1
  56. package/build/components/global-styles/navigation-button.js +5 -6
  57. package/build/components/global-styles/navigation-button.js.map +1 -1
  58. package/build/components/global-styles/palette.js +10 -14
  59. package/build/components/global-styles/palette.js.map +1 -1
  60. package/build/components/global-styles/preview.js +41 -51
  61. package/build/components/global-styles/preview.js.map +1 -1
  62. package/build/components/global-styles/screen-block-list.js +4 -7
  63. package/build/components/global-styles/screen-block-list.js.map +1 -1
  64. package/build/components/global-styles/screen-block.js +88 -12
  65. package/build/components/global-styles/screen-block.js.map +1 -1
  66. package/build/components/global-styles/screen-color-palette.js +3 -4
  67. package/build/components/global-styles/screen-color-palette.js.map +1 -1
  68. package/build/components/global-styles/screen-revisions/index.js +10 -17
  69. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  70. package/build/components/global-styles/screen-revisions/revisions-buttons.js +26 -33
  71. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  72. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +20 -35
  73. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  74. package/build/components/global-styles/screen-root.js +5 -5
  75. package/build/components/global-styles/screen-root.js.map +1 -1
  76. package/build/components/global-styles/screen-typography-element.js +3 -4
  77. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  78. package/build/components/global-styles/screen-typography.js +5 -6
  79. package/build/components/global-styles/screen-typography.js.map +1 -1
  80. package/build/components/global-styles/style-variations-container.js +11 -16
  81. package/build/components/global-styles/style-variations-container.js.map +1 -1
  82. package/build/components/global-styles/subtitle.js +4 -5
  83. package/build/components/global-styles/subtitle.js.map +1 -1
  84. package/build/components/global-styles/typography-panel.js +4 -5
  85. package/build/components/global-styles/typography-panel.js.map +1 -1
  86. package/build/components/global-styles/typography-preview.js +5 -6
  87. package/build/components/global-styles/typography-preview.js.map +1 -1
  88. package/build/components/global-styles/ui.js +49 -30
  89. package/build/components/global-styles/ui.js.map +1 -1
  90. package/build/components/global-styles/variations-panel.js +5 -6
  91. package/build/components/global-styles/variations-panel.js.map +1 -1
  92. package/build/components/header-edit-mode/document-actions/index.js +99 -95
  93. package/build/components/header-edit-mode/document-actions/index.js.map +1 -1
  94. package/build/components/header-edit-mode/index.js +16 -7
  95. package/build/components/header-edit-mode/index.js.map +1 -1
  96. package/build/components/header-edit-mode/more-menu/index.js +49 -53
  97. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  98. package/build/components/header-edit-mode/tools-more-menu-group/index.js +5 -14
  99. package/build/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -1
  100. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +3 -4
  101. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  102. package/build/components/keyboard-shortcut-help-modal/index.js +41 -51
  103. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  104. package/build/components/keyboard-shortcut-help-modal/shortcut.js +10 -12
  105. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  106. package/build/components/layout/hooks.js +54 -0
  107. package/build/components/layout/hooks.js.map +1 -0
  108. package/build/components/layout/index.js +33 -94
  109. package/build/components/layout/index.js.map +1 -1
  110. package/build/components/list/added-by.js +13 -23
  111. package/build/components/list/added-by.js.map +1 -1
  112. package/build/components/list/header.js +4 -7
  113. package/build/components/list/header.js.map +1 -1
  114. package/build/components/list/index.js +2 -4
  115. package/build/components/list/index.js.map +1 -1
  116. package/build/components/list/table.js +35 -40
  117. package/build/components/list/table.js.map +1 -1
  118. package/build/components/page-actions/delete-page-menu-item.js +70 -0
  119. package/build/components/page-actions/delete-page-menu-item.js.map +1 -0
  120. package/build/components/page-actions/index.js +43 -0
  121. package/build/components/page-actions/index.js.map +1 -0
  122. package/build/components/page-content-lock/constants.js +9 -0
  123. package/build/components/page-content-lock/constants.js.map +1 -0
  124. package/build/components/page-content-lock/index.js +29 -0
  125. package/build/components/page-content-lock/index.js.map +1 -0
  126. package/build/components/page-content-lock/use-disable-non-content-blocks.js +49 -0
  127. package/build/components/page-content-lock/use-disable-non-content-blocks.js.map +1 -0
  128. package/build/components/page-content-lock/use-page-content-lock-notifications.js +112 -0
  129. package/build/components/page-content-lock/use-page-content-lock-notifications.js.map +1 -0
  130. package/build/components/preferences-modal/index.js +4 -5
  131. package/build/components/preferences-modal/index.js.map +1 -1
  132. package/build/components/resizable-frame/index.js +250 -0
  133. package/build/components/resizable-frame/index.js.map +1 -0
  134. package/build/components/revisions/index.js +13 -15
  135. package/build/components/revisions/index.js.map +1 -1
  136. package/build/components/routes/link.js +8 -12
  137. package/build/components/routes/link.js.map +1 -1
  138. package/build/components/routes/use-title.js +1 -5
  139. package/build/components/routes/use-title.js.map +1 -1
  140. package/build/components/save-button/index.js +13 -7
  141. package/build/components/save-button/index.js.map +1 -1
  142. package/build/components/save-hub/index.js +97 -5
  143. package/build/components/save-hub/index.js.map +1 -1
  144. package/build/components/save-panel/index.js +63 -17
  145. package/build/components/save-panel/index.js.map +1 -1
  146. package/build/components/secondary-sidebar/list-view-sidebar.js +12 -6
  147. package/build/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  148. package/build/components/sidebar/index.js +11 -9
  149. package/build/components/sidebar/index.js.map +1 -1
  150. package/build/components/sidebar-edit-mode/default-sidebar.js +11 -12
  151. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  152. package/build/components/sidebar-edit-mode/index.js +13 -10
  153. package/build/components/sidebar-edit-mode/index.js.map +1 -1
  154. package/build/components/sidebar-edit-mode/page-panels/content-blocks-list.js +79 -0
  155. package/build/components/sidebar-edit-mode/page-panels/content-blocks-list.js.map +1 -0
  156. package/build/components/sidebar-edit-mode/page-panels/index.js +86 -0
  157. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -0
  158. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js +4 -5
  159. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  160. package/build/components/sidebar-edit-mode/settings-header/index.js +39 -21
  161. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  162. package/build/components/sidebar-edit-mode/sidebar-card/index.js +46 -0
  163. package/build/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -0
  164. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js +3 -4
  165. package/build/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +1 -1
  166. package/build/components/sidebar-edit-mode/{template-card → template-panel}/index.js +22 -18
  167. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -0
  168. package/build/components/sidebar-edit-mode/{template-revisions/index.js → template-panel/last-revision.js} +7 -8
  169. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -0
  170. package/build/components/sidebar-edit-mode/{template-card → template-panel}/template-actions.js +12 -16
  171. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -0
  172. package/build/components/sidebar-edit-mode/{template-card → template-panel}/template-areas.js +15 -19
  173. package/build/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -0
  174. package/build/components/sidebar-navigation-item/index.js +7 -8
  175. package/build/components/sidebar-navigation-item/index.js.map +1 -1
  176. package/build/components/sidebar-navigation-screen/index.js +21 -14
  177. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  178. package/build/components/sidebar-navigation-screen-global-styles/index.js +166 -12
  179. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  180. package/build/components/sidebar-navigation-screen-main/index.js +24 -33
  181. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  182. package/build/components/sidebar-navigation-screen-navigation-item/index.js +3 -5
  183. package/build/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  184. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +159 -0
  185. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -0
  186. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js +17 -0
  187. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -0
  188. package/build/components/sidebar-navigation-screen-navigation-menus/index.js +51 -107
  189. package/build/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  190. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +84 -0
  191. package/build/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js.map +1 -0
  192. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +16 -74
  193. package/build/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  194. package/build/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +52 -0
  195. package/build/components/sidebar-navigation-screen-navigation-menus/navigator-button.js.map +1 -0
  196. package/build/components/sidebar-navigation-screen-page/index.js +81 -10
  197. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  198. package/build/components/sidebar-navigation-screen-page/page-details.js +148 -0
  199. package/build/components/sidebar-navigation-screen-page/page-details.js.map +1 -0
  200. package/build/components/sidebar-navigation-screen-page/status-label.js +110 -0
  201. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -0
  202. package/build/components/sidebar-navigation-screen-pages/index.js +128 -17
  203. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  204. package/build/components/sidebar-navigation-screen-template/index.js +22 -16
  205. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  206. package/build/components/sidebar-navigation-screen-template-part/index.js +105 -0
  207. package/build/components/sidebar-navigation-screen-template-part/index.js.map +1 -0
  208. package/build/components/sidebar-navigation-screen-templates/index.js +44 -24
  209. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  210. package/build/components/sidebar-navigation-subtitle/index.js +3 -4
  211. package/build/components/sidebar-navigation-subtitle/index.js.map +1 -1
  212. package/build/components/site-hub/index.js +20 -15
  213. package/build/components/site-hub/index.js.map +1 -1
  214. package/build/components/site-icon/index.js +4 -5
  215. package/build/components/site-icon/index.js.map +1 -1
  216. package/build/components/start-template-options/index.js +15 -21
  217. package/build/components/start-template-options/index.js.map +1 -1
  218. package/build/components/style-book/index.js +107 -37
  219. package/build/components/style-book/index.js.map +1 -1
  220. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +2 -2
  221. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  222. package/build/components/sync-state-with-url/use-sync-path-with-url.js +9 -10
  223. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  224. package/build/components/{list/actions → template-actions}/index.js +39 -33
  225. package/build/components/template-actions/index.js.map +1 -0
  226. package/build/components/{list/actions → template-actions}/rename-menu-item.js +4 -5
  227. package/build/components/template-actions/rename-menu-item.js.map +1 -0
  228. package/build/components/template-part-converter/convert-to-regular.js +4 -5
  229. package/build/components/template-part-converter/convert-to-regular.js.map +1 -1
  230. package/build/components/template-part-converter/convert-to-template-part.js +8 -10
  231. package/build/components/template-part-converter/convert-to-template-part.js.map +1 -1
  232. package/build/components/template-part-converter/index.js +12 -18
  233. package/build/components/template-part-converter/index.js.map +1 -1
  234. package/build/components/use-edited-entity-record/index.js +8 -4
  235. package/build/components/use-edited-entity-record/index.js.map +1 -1
  236. package/build/components/welcome-guide/image.js +4 -5
  237. package/build/components/welcome-guide/image.js.map +1 -1
  238. package/build/hooks/commands/use-edit-mode-commands.js +103 -0
  239. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -0
  240. package/build/hooks/push-changes-to-global-styles/index.js +11 -8
  241. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  242. package/build/hooks/template-part-edit.js +5 -6
  243. package/build/hooks/template-part-edit.js.map +1 -1
  244. package/build/index.js +3 -6
  245. package/build/index.js.map +1 -1
  246. package/build/store/actions.js +131 -125
  247. package/build/store/actions.js.map +1 -1
  248. package/build/store/private-actions.js +7 -10
  249. package/build/store/private-actions.js.map +1 -1
  250. package/build/store/reducer.js +32 -33
  251. package/build/store/reducer.js.map +1 -1
  252. package/build/store/selectors.js +35 -11
  253. package/build/store/selectors.js.map +1 -1
  254. package/build/store/utils.js +1 -3
  255. package/build/store/utils.js.map +1 -1
  256. package/build/utils/get-is-list-page.js +3 -4
  257. package/build/utils/get-is-list-page.js.map +1 -1
  258. package/build/utils/is-previewing-theme.js +1 -3
  259. package/build/utils/is-previewing-theme.js.map +1 -1
  260. package/build/utils/is-template-revertable.js +1 -1
  261. package/build/utils/is-template-revertable.js.map +1 -1
  262. package/build-module/components/add-new-page/index.js +93 -0
  263. package/build-module/components/add-new-page/index.js.map +1 -0
  264. package/build-module/components/add-new-template/{add-custom-generic-template-modal.js → add-custom-generic-template-modal-content.js} +10 -23
  265. package/build-module/components/add-new-template/add-custom-generic-template-modal-content.js.map +1 -0
  266. package/build-module/components/add-new-template/{add-custom-template-modal.js → add-custom-template-modal-content.js} +30 -42
  267. package/build-module/components/add-new-template/add-custom-template-modal-content.js.map +1 -0
  268. package/build-module/components/add-new-template/index.js +4 -5
  269. package/build-module/components/add-new-template/index.js.map +1 -1
  270. package/build-module/components/add-new-template/new-template-part.js +9 -12
  271. package/build-module/components/add-new-template/new-template-part.js.map +1 -1
  272. package/build-module/components/add-new-template/new-template.js +105 -82
  273. package/build-module/components/add-new-template/new-template.js.map +1 -1
  274. package/build-module/components/add-new-template/utils.js +71 -120
  275. package/build-module/components/add-new-template/utils.js.map +1 -1
  276. package/build-module/components/block-editor/back-button.js +1 -3
  277. package/build-module/components/block-editor/back-button.js.map +1 -1
  278. package/build-module/components/block-editor/block-inspector-button.js +3 -4
  279. package/build-module/components/block-editor/block-inspector-button.js.map +1 -1
  280. package/build-module/components/block-editor/editor-canvas.js +6 -7
  281. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  282. package/build-module/components/block-editor/index.js +13 -13
  283. package/build-module/components/block-editor/index.js.map +1 -1
  284. package/build-module/components/block-editor/inserter-media-categories.js +25 -42
  285. package/build-module/components/block-editor/inserter-media-categories.js.map +1 -1
  286. package/build-module/components/block-editor/resizable-editor.js +6 -7
  287. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  288. package/build-module/components/block-editor/resize-handle.js +5 -7
  289. package/build-module/components/block-editor/resize-handle.js.map +1 -1
  290. package/build-module/components/code-editor/code-editor-text-area.js +5 -6
  291. package/build-module/components/code-editor/code-editor-text-area.js.map +1 -1
  292. package/build-module/components/create-template-part-modal/index.js +31 -36
  293. package/build-module/components/create-template-part-modal/index.js.map +1 -1
  294. package/build-module/components/editor/index.js +38 -56
  295. package/build-module/components/editor/index.js.map +1 -1
  296. package/build-module/components/editor-canvas-container/index.js +12 -9
  297. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  298. package/build-module/components/error-boundary/warning.js +8 -10
  299. package/build-module/components/error-boundary/warning.js.map +1 -1
  300. package/build-module/components/global-styles/block-preview-panel.js +7 -10
  301. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  302. package/build-module/components/global-styles/color-indicator-wrapper.js +4 -5
  303. package/build-module/components/global-styles/color-indicator-wrapper.js.map +1 -1
  304. package/build-module/components/global-styles/color-palette-panel.js +3 -4
  305. package/build-module/components/global-styles/color-palette-panel.js.map +1 -1
  306. package/build-module/components/global-styles/dimensions-panel.js +1 -3
  307. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  308. package/build-module/components/global-styles/global-styles-provider.js +8 -10
  309. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  310. package/build-module/components/global-styles/gradients-palette-panel.js +3 -4
  311. package/build-module/components/global-styles/gradients-palette-panel.js.map +1 -1
  312. package/build-module/components/global-styles/header.js +4 -5
  313. package/build-module/components/global-styles/header.js.map +1 -1
  314. package/build-module/components/global-styles/icon-with-current-color.js +4 -5
  315. package/build-module/components/global-styles/icon-with-current-color.js.map +1 -1
  316. package/build-module/components/global-styles/navigation-button.js +5 -6
  317. package/build-module/components/global-styles/navigation-button.js.map +1 -1
  318. package/build-module/components/global-styles/palette.js +10 -14
  319. package/build-module/components/global-styles/palette.js.map +1 -1
  320. package/build-module/components/global-styles/preview.js +41 -51
  321. package/build-module/components/global-styles/preview.js.map +1 -1
  322. package/build-module/components/global-styles/screen-block-list.js +4 -7
  323. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  324. package/build-module/components/global-styles/screen-block.js +90 -13
  325. package/build-module/components/global-styles/screen-block.js.map +1 -1
  326. package/build-module/components/global-styles/screen-color-palette.js +3 -4
  327. package/build-module/components/global-styles/screen-color-palette.js.map +1 -1
  328. package/build-module/components/global-styles/screen-revisions/index.js +10 -17
  329. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  330. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +26 -34
  331. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  332. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +20 -34
  333. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  334. package/build-module/components/global-styles/screen-root.js +5 -5
  335. package/build-module/components/global-styles/screen-root.js.map +1 -1
  336. package/build-module/components/global-styles/screen-typography-element.js +3 -4
  337. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  338. package/build-module/components/global-styles/screen-typography.js +5 -6
  339. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  340. package/build-module/components/global-styles/style-variations-container.js +12 -17
  341. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  342. package/build-module/components/global-styles/subtitle.js +4 -5
  343. package/build-module/components/global-styles/subtitle.js.map +1 -1
  344. package/build-module/components/global-styles/typography-panel.js +4 -5
  345. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  346. package/build-module/components/global-styles/typography-preview.js +5 -6
  347. package/build-module/components/global-styles/typography-preview.js.map +1 -1
  348. package/build-module/components/global-styles/ui.js +50 -31
  349. package/build-module/components/global-styles/ui.js.map +1 -1
  350. package/build-module/components/global-styles/variations-panel.js +5 -6
  351. package/build-module/components/global-styles/variations-panel.js.map +1 -1
  352. package/build-module/components/header-edit-mode/document-actions/index.js +99 -97
  353. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -1
  354. package/build-module/components/header-edit-mode/index.js +16 -8
  355. package/build-module/components/header-edit-mode/index.js.map +1 -1
  356. package/build-module/components/header-edit-mode/more-menu/index.js +49 -53
  357. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  358. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js +5 -13
  359. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -1
  360. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +3 -4
  361. package/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  362. package/build-module/components/keyboard-shortcut-help-modal/index.js +39 -49
  363. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  364. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js +10 -12
  365. package/build-module/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  366. package/build-module/components/layout/hooks.js +41 -0
  367. package/build-module/components/layout/hooks.js.map +1 -0
  368. package/build-module/components/layout/index.js +34 -97
  369. package/build-module/components/layout/index.js.map +1 -1
  370. package/build-module/components/list/added-by.js +13 -23
  371. package/build-module/components/list/added-by.js.map +1 -1
  372. package/build-module/components/list/header.js +4 -7
  373. package/build-module/components/list/header.js.map +1 -1
  374. package/build-module/components/list/index.js +2 -4
  375. package/build-module/components/list/index.js.map +1 -1
  376. package/build-module/components/list/table.js +34 -39
  377. package/build-module/components/list/table.js.map +1 -1
  378. package/build-module/components/page-actions/delete-page-menu-item.js +58 -0
  379. package/build-module/components/page-actions/delete-page-menu-item.js.map +1 -0
  380. package/build-module/components/page-actions/index.js +30 -0
  381. package/build-module/components/page-actions/index.js.map +1 -0
  382. package/build-module/components/page-content-lock/constants.js +2 -0
  383. package/build-module/components/page-content-lock/constants.js.map +1 -0
  384. package/build-module/components/page-content-lock/index.js +14 -0
  385. package/build-module/components/page-content-lock/index.js.map +1 -0
  386. package/build-module/components/page-content-lock/use-disable-non-content-blocks.js +36 -0
  387. package/build-module/components/page-content-lock/use-disable-non-content-blocks.js.map +1 -0
  388. package/build-module/components/page-content-lock/use-page-content-lock-notifications.js +98 -0
  389. package/build-module/components/page-content-lock/use-page-content-lock-notifications.js.map +1 -0
  390. package/build-module/components/preferences-modal/index.js +4 -5
  391. package/build-module/components/preferences-modal/index.js.map +1 -1
  392. package/build-module/components/resizable-frame/index.js +236 -0
  393. package/build-module/components/resizable-frame/index.js.map +1 -0
  394. package/build-module/components/revisions/index.js +13 -14
  395. package/build-module/components/revisions/index.js.map +1 -1
  396. package/build-module/components/routes/link.js +8 -12
  397. package/build-module/components/routes/link.js.map +1 -1
  398. package/build-module/components/routes/use-title.js +1 -5
  399. package/build-module/components/routes/use-title.js.map +1 -1
  400. package/build-module/components/save-button/index.js +13 -7
  401. package/build-module/components/save-button/index.js.map +1 -1
  402. package/build-module/components/save-hub/index.js +95 -8
  403. package/build-module/components/save-hub/index.js.map +1 -1
  404. package/build-module/components/save-panel/index.js +62 -19
  405. package/build-module/components/save-panel/index.js.map +1 -1
  406. package/build-module/components/secondary-sidebar/list-view-sidebar.js +12 -6
  407. package/build-module/components/secondary-sidebar/list-view-sidebar.js.map +1 -1
  408. package/build-module/components/sidebar/index.js +9 -8
  409. package/build-module/components/sidebar/index.js.map +1 -1
  410. package/build-module/components/sidebar-edit-mode/default-sidebar.js +11 -12
  411. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -1
  412. package/build-module/components/sidebar-edit-mode/index.js +14 -11
  413. package/build-module/components/sidebar-edit-mode/index.js.map +1 -1
  414. package/build-module/components/sidebar-edit-mode/page-panels/content-blocks-list.js +67 -0
  415. package/build-module/components/sidebar-edit-mode/page-panels/content-blocks-list.js.map +1 -0
  416. package/build-module/components/sidebar-edit-mode/page-panels/index.js +67 -0
  417. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -0
  418. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js +4 -5
  419. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -1
  420. package/build-module/components/sidebar-edit-mode/settings-header/index.js +36 -22
  421. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -1
  422. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js +35 -0
  423. package/build-module/components/sidebar-edit-mode/sidebar-card/index.js.map +1 -0
  424. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js +3 -4
  425. package/build-module/components/sidebar-edit-mode/sidebar-fixed-bottom.js.map +1 -1
  426. package/build-module/components/sidebar-edit-mode/{template-card → template-panel}/index.js +20 -19
  427. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -0
  428. package/build-module/components/sidebar-edit-mode/{template-revisions/index.js → template-panel/last-revision.js} +7 -8
  429. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -0
  430. package/build-module/components/sidebar-edit-mode/{template-card → template-panel}/template-actions.js +12 -16
  431. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -0
  432. package/build-module/components/sidebar-edit-mode/{template-card → template-panel}/template-areas.js +15 -19
  433. package/build-module/components/sidebar-edit-mode/template-panel/template-areas.js.map +1 -0
  434. package/build-module/components/sidebar-navigation-item/index.js +7 -8
  435. package/build-module/components/sidebar-navigation-item/index.js.map +1 -1
  436. package/build-module/components/sidebar-navigation-screen/index.js +22 -15
  437. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  438. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +161 -15
  439. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  440. package/build-module/components/sidebar-navigation-screen-main/index.js +21 -32
  441. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  442. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js +3 -5
  443. package/build-module/components/sidebar-navigation-screen-navigation-item/index.js.map +1 -1
  444. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +138 -0
  445. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -0
  446. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js +10 -0
  447. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -0
  448. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js +49 -106
  449. package/build-module/components/sidebar-navigation-screen-navigation-menus/index.js.map +1 -1
  450. package/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +68 -0
  451. package/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js.map +1 -0
  452. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +14 -74
  453. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js.map +1 -1
  454. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +39 -0
  455. package/build-module/components/sidebar-navigation-screen-navigation-menus/navigator-button.js.map +1 -0
  456. package/build-module/components/sidebar-navigation-screen-page/index.js +79 -14
  457. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  458. package/build-module/components/sidebar-navigation-screen-page/page-details.js +131 -0
  459. package/build-module/components/sidebar-navigation-screen-page/page-details.js.map +1 -0
  460. package/build-module/components/sidebar-navigation-screen-page/status-label.js +97 -0
  461. package/build-module/components/sidebar-navigation-screen-page/status-label.js.map +1 -0
  462. package/build-module/components/sidebar-navigation-screen-pages/index.js +125 -19
  463. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  464. package/build-module/components/sidebar-navigation-screen-template/index.js +22 -17
  465. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  466. package/build-module/components/sidebar-navigation-screen-template-part/index.js +86 -0
  467. package/build-module/components/sidebar-navigation-screen-template-part/index.js.map +1 -0
  468. package/build-module/components/sidebar-navigation-screen-templates/index.js +43 -24
  469. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  470. package/build-module/components/sidebar-navigation-subtitle/index.js +3 -4
  471. package/build-module/components/sidebar-navigation-subtitle/index.js.map +1 -1
  472. package/build-module/components/site-hub/index.js +21 -16
  473. package/build-module/components/site-hub/index.js.map +1 -1
  474. package/build-module/components/site-icon/index.js +4 -5
  475. package/build-module/components/site-icon/index.js.map +1 -1
  476. package/build-module/components/start-template-options/index.js +15 -21
  477. package/build-module/components/start-template-options/index.js.map +1 -1
  478. package/build-module/components/style-book/index.js +107 -38
  479. package/build-module/components/style-book/index.js.map +1 -1
  480. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +2 -2
  481. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  482. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +9 -10
  483. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  484. package/build-module/components/template-actions/index.js +92 -0
  485. package/build-module/components/template-actions/index.js.map +1 -0
  486. package/build-module/components/{list/actions → template-actions}/rename-menu-item.js +4 -5
  487. package/build-module/components/template-actions/rename-menu-item.js.map +1 -0
  488. package/build-module/components/template-part-converter/convert-to-regular.js +4 -5
  489. package/build-module/components/template-part-converter/convert-to-regular.js.map +1 -1
  490. package/build-module/components/template-part-converter/convert-to-template-part.js +8 -10
  491. package/build-module/components/template-part-converter/convert-to-template-part.js.map +1 -1
  492. package/build-module/components/template-part-converter/index.js +12 -18
  493. package/build-module/components/template-part-converter/index.js.map +1 -1
  494. package/build-module/components/use-edited-entity-record/index.js +8 -4
  495. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  496. package/build-module/components/welcome-guide/image.js +4 -5
  497. package/build-module/components/welcome-guide/image.js.map +1 -1
  498. package/build-module/hooks/commands/use-edit-mode-commands.js +84 -0
  499. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -0
  500. package/build-module/hooks/push-changes-to-global-styles/index.js +11 -8
  501. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  502. package/build-module/hooks/template-part-edit.js +5 -6
  503. package/build-module/hooks/template-part-edit.js.map +1 -1
  504. package/build-module/index.js +3 -6
  505. package/build-module/index.js.map +1 -1
  506. package/build-module/store/actions.js +127 -126
  507. package/build-module/store/actions.js.map +1 -1
  508. package/build-module/store/private-actions.js +7 -10
  509. package/build-module/store/private-actions.js.map +1 -1
  510. package/build-module/store/reducer.js +30 -33
  511. package/build-module/store/reducer.js.map +1 -1
  512. package/build-module/store/selectors.js +31 -11
  513. package/build-module/store/selectors.js.map +1 -1
  514. package/build-module/store/utils.js +1 -3
  515. package/build-module/store/utils.js.map +1 -1
  516. package/build-module/utils/get-is-list-page.js +3 -4
  517. package/build-module/utils/get-is-list-page.js.map +1 -1
  518. package/build-module/utils/is-previewing-theme.js +1 -3
  519. package/build-module/utils/is-previewing-theme.js.map +1 -1
  520. package/build-module/utils/is-template-revertable.js +1 -1
  521. package/build-module/utils/is-template-revertable.js.map +1 -1
  522. package/build-style/style-rtl.css +477 -232
  523. package/build-style/style.css +478 -232
  524. package/package.json +40 -37
  525. package/src/components/add-new-page/index.js +105 -0
  526. package/src/components/add-new-template/add-custom-generic-template-modal-content.js +82 -0
  527. package/src/components/add-new-template/{add-custom-template-modal.js → add-custom-template-modal-content.js} +13 -26
  528. package/src/components/add-new-template/new-template.js +141 -154
  529. package/src/components/add-new-template/style.scss +79 -66
  530. package/src/components/block-editor/index.js +27 -17
  531. package/src/components/create-template-part-modal/index.js +19 -25
  532. package/src/components/editor/index.js +30 -53
  533. package/src/components/editor/style.scss +11 -1
  534. package/src/components/editor-canvas-container/index.js +28 -19
  535. package/src/components/global-styles/screen-block.js +74 -3
  536. package/src/components/global-styles/screen-revisions/index.js +3 -11
  537. package/src/components/global-styles/screen-revisions/revisions-buttons.js +33 -25
  538. package/src/components/global-styles/screen-revisions/style.scss +3 -2
  539. package/src/components/global-styles/screen-revisions/test/use-global-styles-revisions.js +16 -3
  540. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +22 -24
  541. package/src/components/global-styles/screen-root.js +5 -3
  542. package/src/components/global-styles/style-variations-container.js +13 -18
  543. package/src/components/global-styles/style.scss +3 -0
  544. package/src/components/global-styles/ui.js +39 -9
  545. package/src/components/header-edit-mode/document-actions/index.js +112 -121
  546. package/src/components/header-edit-mode/document-actions/style.scss +78 -54
  547. package/src/components/header-edit-mode/index.js +18 -0
  548. package/src/components/header-edit-mode/style.scss +1 -0
  549. package/src/components/header-edit-mode/tools-more-menu-group/index.js +1 -6
  550. package/src/components/layout/hooks.js +46 -0
  551. package/src/components/layout/index.js +47 -122
  552. package/src/components/layout/style.scss +8 -2
  553. package/src/components/list/style.scss +1 -0
  554. package/src/components/list/table.js +6 -2
  555. package/src/components/page-actions/delete-page-menu-item.js +71 -0
  556. package/src/components/page-actions/index.js +36 -0
  557. package/src/components/page-content-lock/constants.js +5 -0
  558. package/src/components/page-content-lock/index.js +14 -0
  559. package/src/components/page-content-lock/use-disable-non-content-blocks.js +44 -0
  560. package/src/components/page-content-lock/use-page-content-lock-notifications.js +128 -0
  561. package/src/components/resizable-frame/index.js +263 -0
  562. package/src/components/resizable-frame/style.scss +71 -0
  563. package/src/components/revisions/index.js +7 -7
  564. package/src/components/save-button/index.js +6 -0
  565. package/src/components/save-hub/index.js +143 -38
  566. package/src/components/save-hub/style.scss +6 -0
  567. package/src/components/save-panel/index.js +62 -15
  568. package/src/components/secondary-sidebar/list-view-sidebar.js +10 -2
  569. package/src/components/sidebar/index.js +10 -8
  570. package/src/components/sidebar/style.scss +3 -4
  571. package/src/components/sidebar-edit-mode/index.js +16 -14
  572. package/src/components/sidebar-edit-mode/page-panels/content-blocks-list.js +77 -0
  573. package/src/components/sidebar-edit-mode/page-panels/index.js +89 -0
  574. package/src/components/sidebar-edit-mode/page-panels/style.scss +10 -0
  575. package/src/components/sidebar-edit-mode/settings-header/index.js +51 -28
  576. package/src/components/sidebar-edit-mode/sidebar-card/index.js +34 -0
  577. package/src/components/sidebar-edit-mode/sidebar-card/style.scss +34 -0
  578. package/src/components/sidebar-edit-mode/{template-card → template-panel}/index.js +22 -19
  579. package/src/components/sidebar-edit-mode/{template-revisions/index.js → template-panel/last-revision.js} +1 -2
  580. package/src/components/sidebar-edit-mode/{template-card → template-panel}/style.scss +2 -32
  581. package/src/components/sidebar-navigation-item/style.scss +9 -0
  582. package/src/components/sidebar-navigation-screen/index.js +74 -50
  583. package/src/components/sidebar-navigation-screen/style.scss +46 -6
  584. package/src/components/sidebar-navigation-screen-global-styles/index.js +212 -21
  585. package/src/components/sidebar-navigation-screen-global-styles/style.scss +15 -0
  586. package/src/components/sidebar-navigation-screen-main/index.js +35 -52
  587. package/src/components/sidebar-navigation-screen-navigation-menu/index.js +157 -0
  588. package/src/components/sidebar-navigation-screen-navigation-menus/constants.js +9 -0
  589. package/src/components/sidebar-navigation-screen-navigation-menus/index.js +63 -117
  590. package/src/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js +83 -0
  591. package/src/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js +6 -72
  592. package/src/components/sidebar-navigation-screen-navigation-menus/navigator-button.js +47 -0
  593. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +7 -21
  594. package/src/components/sidebar-navigation-screen-page/index.js +137 -24
  595. package/src/components/sidebar-navigation-screen-page/page-details.js +163 -0
  596. package/src/components/sidebar-navigation-screen-page/status-label.js +101 -0
  597. package/src/components/sidebar-navigation-screen-page/style.scss +80 -0
  598. package/src/components/sidebar-navigation-screen-pages/index.js +180 -44
  599. package/src/components/sidebar-navigation-screen-template/index.js +25 -22
  600. package/src/components/sidebar-navigation-screen-template-part/index.js +103 -0
  601. package/src/components/sidebar-navigation-screen-templates/index.js +52 -13
  602. package/src/components/sidebar-navigation-subtitle/style.scss +2 -2
  603. package/src/components/site-hub/index.js +29 -15
  604. package/src/components/site-hub/style.scss +26 -0
  605. package/src/components/start-template-options/style.scss +20 -21
  606. package/src/components/style-book/index.js +132 -43
  607. package/src/components/style-book/style.scss +19 -0
  608. package/src/components/{list/actions → template-actions}/index.js +31 -11
  609. package/src/components/use-edited-entity-record/index.js +12 -3
  610. package/src/hooks/commands/use-edit-mode-commands.js +79 -0
  611. package/src/hooks/push-changes-to-global-styles/index.js +13 -7
  612. package/src/store/actions.js +24 -6
  613. package/src/store/reducer.js +20 -0
  614. package/src/store/selectors.js +24 -0
  615. package/src/store/test/actions.js +31 -0
  616. package/src/store/test/reducer.js +44 -0
  617. package/src/store/test/selectors.js +57 -0
  618. package/src/store/test/utils.js +15 -5
  619. package/src/style.scss +6 -3
  620. package/src/utils/is-previewing-theme.js +1 -4
  621. package/build/components/add-new-template/add-custom-generic-template-modal.js.map +0 -1
  622. package/build/components/add-new-template/add-custom-template-modal.js.map +0 -1
  623. package/build/components/global-styles/border-panel.js +0 -135
  624. package/build/components/global-styles/border-panel.js.map +0 -1
  625. package/build/components/list/actions/index.js.map +0 -1
  626. package/build/components/list/actions/rename-menu-item.js.map +0 -1
  627. package/build/components/navigate-to-link/index.js +0 -51
  628. package/build/components/navigate-to-link/index.js.map +0 -1
  629. package/build/components/sidebar-edit-mode/template-card/index.js.map +0 -1
  630. package/build/components/sidebar-edit-mode/template-card/template-actions.js.map +0 -1
  631. package/build/components/sidebar-edit-mode/template-card/template-areas.js.map +0 -1
  632. package/build/components/sidebar-edit-mode/template-revisions/index.js.map +0 -1
  633. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js +0 -19
  634. package/build/components/sidebar-navigation-screen-navigation-menus/loader.js.map +0 -1
  635. package/build/components/template-details/edit-template-title.js +0 -42
  636. package/build/components/template-details/edit-template-title.js.map +0 -1
  637. package/build/components/template-details/index.js +0 -103
  638. package/build/components/template-details/index.js.map +0 -1
  639. package/build/components/template-details/template-areas.js +0 -166
  640. package/build/components/template-details/template-areas.js.map +0 -1
  641. package/build/components/template-details/template-part-area-selector.js +0 -48
  642. package/build/components/template-details/template-part-area-selector.js.map +0 -1
  643. package/build-module/components/add-new-template/add-custom-generic-template-modal.js.map +0 -1
  644. package/build-module/components/add-new-template/add-custom-template-modal.js.map +0 -1
  645. package/build-module/components/global-styles/border-panel.js +0 -125
  646. package/build-module/components/global-styles/border-panel.js.map +0 -1
  647. package/build-module/components/list/actions/index.js +0 -86
  648. package/build-module/components/list/actions/index.js.map +0 -1
  649. package/build-module/components/list/actions/rename-menu-item.js.map +0 -1
  650. package/build-module/components/navigate-to-link/index.js +0 -39
  651. package/build-module/components/navigate-to-link/index.js.map +0 -1
  652. package/build-module/components/sidebar-edit-mode/template-card/index.js.map +0 -1
  653. package/build-module/components/sidebar-edit-mode/template-card/template-actions.js.map +0 -1
  654. package/build-module/components/sidebar-edit-mode/template-card/template-areas.js.map +0 -1
  655. package/build-module/components/sidebar-edit-mode/template-revisions/index.js.map +0 -1
  656. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js +0 -11
  657. package/build-module/components/sidebar-navigation-screen-navigation-menus/loader.js.map +0 -1
  658. package/build-module/components/template-details/edit-template-title.js +0 -33
  659. package/build-module/components/template-details/edit-template-title.js.map +0 -1
  660. package/build-module/components/template-details/index.js +0 -83
  661. package/build-module/components/template-details/index.js.map +0 -1
  662. package/build-module/components/template-details/template-areas.js +0 -145
  663. package/build-module/components/template-details/template-areas.js.map +0 -1
  664. package/build-module/components/template-details/template-part-area-selector.js +0 -36
  665. package/build-module/components/template-details/template-part-area-selector.js.map +0 -1
  666. package/src/components/add-new-template/add-custom-generic-template-modal.js +0 -101
  667. package/src/components/global-styles/border-panel.js +0 -114
  668. package/src/components/navigate-to-link/index.js +0 -46
  669. package/src/components/sidebar-navigation-screen-navigation-menus/loader.js +0 -9
  670. package/src/components/sidebar-navigation-screen-pages/style.scss +0 -4
  671. package/src/components/template-details/edit-template-title.js +0 -41
  672. package/src/components/template-details/index.js +0 -113
  673. package/src/components/template-details/style.scss +0 -72
  674. package/src/components/template-details/template-areas.js +0 -167
  675. package/src/components/template-details/template-part-area-selector.js +0 -39
  676. /package/src/components/sidebar-edit-mode/{template-card → template-panel}/template-actions.js +0 -0
  677. /package/src/components/sidebar-edit-mode/{template-card → template-panel}/template-areas.js +0 -0
  678. /package/src/components/{list/actions → template-actions}/rename-menu-item.js +0 -0
@@ -82,13 +82,10 @@ const usePublicPostTypes = () => {
82
82
  }), []);
83
83
  return (0, _element.useMemo)(() => {
84
84
  const excludedPostTypes = ['attachment'];
85
- return postTypes === null || postTypes === void 0 ? void 0 : postTypes.filter(_ref => {
86
- let {
87
- viewable,
88
- slug
89
- } = _ref;
90
- return viewable && !excludedPostTypes.includes(slug);
91
- });
85
+ return postTypes?.filter(({
86
+ viewable,
87
+ slug
88
+ }) => viewable && !excludedPostTypes.includes(slug));
92
89
  }, [postTypes]);
93
90
  };
94
91
 
@@ -97,29 +94,24 @@ const usePublicTaxonomies = () => {
97
94
  per_page: -1
98
95
  }), []);
99
96
  return (0, _element.useMemo)(() => {
100
- return taxonomies === null || taxonomies === void 0 ? void 0 : taxonomies.filter(_ref2 => {
101
- let {
102
- visibility
103
- } = _ref2;
104
- return visibility === null || visibility === void 0 ? void 0 : visibility.publicly_queryable;
105
- });
97
+ return taxonomies?.filter(({
98
+ visibility
99
+ }) => visibility?.publicly_queryable);
106
100
  }, [taxonomies]);
107
101
  };
108
102
 
109
103
  function usePostTypeNeedsUniqueIdentifier(publicPostTypes) {
110
- const postTypeLabels = (0, _element.useMemo)(() => publicPostTypes === null || publicPostTypes === void 0 ? void 0 : publicPostTypes.reduce((accumulator, _ref3) => {
111
- let {
112
- labels
113
- } = _ref3;
104
+ const postTypeLabels = (0, _element.useMemo)(() => publicPostTypes?.reduce((accumulator, {
105
+ labels
106
+ }) => {
114
107
  const singularName = labels.singular_name.toLowerCase();
115
108
  accumulator[singularName] = (accumulator[singularName] || 0) + 1;
116
109
  return accumulator;
117
110
  }, {}));
118
- return (0, _element.useCallback)(_ref4 => {
119
- let {
120
- labels,
121
- slug
122
- } = _ref4;
111
+ return (0, _element.useCallback)(({
112
+ labels,
113
+ slug
114
+ }) => {
123
115
  const singularName = labels.singular_name.toLowerCase();
124
116
  return postTypeLabels[singularName] > 1 && singularName !== slug;
125
117
  }, [postTypeLabels]);
@@ -127,12 +119,10 @@ function usePostTypeNeedsUniqueIdentifier(publicPostTypes) {
127
119
 
128
120
  function usePostTypeArchiveMenuItems() {
129
121
  const publicPostTypes = usePublicPostTypes();
130
- const postTypesWithArchives = (0, _element.useMemo)(() => publicPostTypes === null || publicPostTypes === void 0 ? void 0 : publicPostTypes.filter(postType => postType.has_archive), [publicPostTypes]);
122
+ const postTypesWithArchives = (0, _element.useMemo)(() => publicPostTypes?.filter(postType => postType.has_archive), [publicPostTypes]);
131
123
  const existingTemplates = useExistingTemplates();
132
124
  const needsUniqueIdentifier = usePostTypeNeedsUniqueIdentifier(postTypesWithArchives);
133
- return (0, _element.useMemo)(() => (postTypesWithArchives === null || postTypesWithArchives === void 0 ? void 0 : postTypesWithArchives.filter(postType => !(existingTemplates || []).some(existingTemplate => existingTemplate.slug === 'archive-' + postType.slug)).map(postType => {
134
- var _postType$icon;
135
-
125
+ return (0, _element.useMemo)(() => postTypesWithArchives?.filter(postType => !(existingTemplates || []).some(existingTemplate => existingTemplate.slug === 'archive-' + postType.slug)).map(postType => {
136
126
  let title;
137
127
 
138
128
  if (needsUniqueIdentifier(postType)) {
@@ -151,10 +141,10 @@ function usePostTypeArchiveMenuItems() {
151
141
  // `icon` is the `menu_icon` property of a post type. We
152
142
  // only handle `dashicons` for now, even if the `menu_icon`
153
143
  // also supports urls and svg as values.
154
- icon: (_postType$icon = postType.icon) !== null && _postType$icon !== void 0 && _postType$icon.startsWith('dashicons-') ? postType.icon.slice(10) : _icons.archive,
144
+ icon: postType.icon?.startsWith('dashicons-') ? postType.icon.slice(10) : _icons.archive,
155
145
  templatePrefix: 'archive'
156
146
  };
157
- })) || [], [postTypesWithArchives, existingTemplates, needsUniqueIdentifier]);
147
+ }) || [], [postTypesWithArchives, existingTemplates, needsUniqueIdentifier]);
158
148
  }
159
149
 
160
150
  const usePostTypeMenuItems = onClickMenuItem => {
@@ -163,10 +153,9 @@ const usePostTypeMenuItems = onClickMenuItem => {
163
153
  const defaultTemplateTypes = useDefaultTemplateTypes();
164
154
  const needsUniqueIdentifier = usePostTypeNeedsUniqueIdentifier(publicPostTypes); // `page`is a special case in template hierarchy.
165
155
 
166
- const templatePrefixes = (0, _element.useMemo)(() => publicPostTypes === null || publicPostTypes === void 0 ? void 0 : publicPostTypes.reduce((accumulator, _ref5) => {
167
- let {
168
- slug
169
- } = _ref5;
156
+ const templatePrefixes = (0, _element.useMemo)(() => publicPostTypes?.reduce((accumulator, {
157
+ slug
158
+ }) => {
170
159
  let suffix = slug;
171
160
 
172
161
  if (slug !== 'page') {
@@ -177,15 +166,10 @@ const usePostTypeMenuItems = onClickMenuItem => {
177
166
  return accumulator;
178
167
  }, {}), [publicPostTypes]);
179
168
  const postTypesInfo = useEntitiesInfo('postType', templatePrefixes);
180
- const existingTemplateSlugs = (existingTemplates || []).map(_ref6 => {
181
- let {
182
- slug
183
- } = _ref6;
184
- return slug;
185
- });
169
+ const existingTemplateSlugs = (existingTemplates || []).map(({
170
+ slug
171
+ }) => slug);
186
172
  const menuItems = (publicPostTypes || []).reduce((accumulator, postType) => {
187
- var _postTypesInfo$slug;
188
-
189
173
  const {
190
174
  slug,
191
175
  labels,
@@ -195,13 +179,10 @@ const usePostTypeMenuItems = onClickMenuItem => {
195
179
  // augment it with the specific template functionality.
196
180
 
197
181
  const generalTemplateSlug = templatePrefixes[slug];
198
- const defaultTemplateType = defaultTemplateTypes === null || defaultTemplateTypes === void 0 ? void 0 : defaultTemplateTypes.find(_ref7 => {
199
- let {
200
- slug: _slug
201
- } = _ref7;
202
- return _slug === generalTemplateSlug;
203
- });
204
- const hasGeneralTemplate = existingTemplateSlugs === null || existingTemplateSlugs === void 0 ? void 0 : existingTemplateSlugs.includes(generalTemplateSlug);
182
+ const defaultTemplateType = defaultTemplateTypes?.find(({
183
+ slug: _slug
184
+ }) => _slug === generalTemplateSlug);
185
+ const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
205
186
 
206
187
  const _needsUniqueIdentifier = needsUniqueIdentifier(postType);
207
188
 
@@ -223,10 +204,10 @@ const usePostTypeMenuItems = onClickMenuItem => {
223
204
  // `icon` is the `menu_icon` property of a post type. We
224
205
  // only handle `dashicons` for now, even if the `menu_icon`
225
206
  // also supports urls and svg as values.
226
- icon: icon !== null && icon !== void 0 && icon.startsWith('dashicons-') ? icon.slice(10) : _icons.post,
207
+ icon: icon?.startsWith('dashicons-') ? icon.slice(10) : _icons.post,
227
208
  templatePrefix: templatePrefixes[slug]
228
209
  };
229
- const hasEntities = postTypesInfo === null || postTypesInfo === void 0 ? void 0 : (_postTypesInfo$slug = postTypesInfo[slug]) === null || _postTypesInfo$slug === void 0 ? void 0 : _postTypesInfo$slug.hasEntities; // We have a different template creation flow only if they have entities.
210
+ const hasEntities = postTypesInfo?.[slug]?.hasEntities; // We have a different template creation flow only if they have entities.
230
211
 
231
212
  if (hasEntities) {
232
213
  menuItem.onClick = template => {
@@ -235,10 +216,9 @@ const usePostTypeMenuItems = onClickMenuItem => {
235
216
  slug,
236
217
  config: {
237
218
  recordNamePath: 'title.rendered',
238
- queryArgs: _ref8 => {
239
- let {
240
- search
241
- } = _ref8;
219
+ queryArgs: ({
220
+ search
221
+ }) => {
242
222
  return {
243
223
  _fields: 'id,title,slug,link',
244
224
  orderBy: search ? 'relevance' : 'modified',
@@ -297,10 +277,9 @@ const useTaxonomiesMenuItems = onClickMenuItem => {
297
277
  const existingTemplates = useExistingTemplates();
298
278
  const defaultTemplateTypes = useDefaultTemplateTypes(); // `category` and `post_tag` are special cases in template hierarchy.
299
279
 
300
- const templatePrefixes = (0, _element.useMemo)(() => publicTaxonomies === null || publicTaxonomies === void 0 ? void 0 : publicTaxonomies.reduce((accumulator, _ref9) => {
301
- let {
302
- slug
303
- } = _ref9;
280
+ const templatePrefixes = (0, _element.useMemo)(() => publicTaxonomies?.reduce((accumulator, {
281
+ slug
282
+ }) => {
304
283
  let suffix = slug;
305
284
 
306
285
  if (!['category', 'post_tag'].includes(slug)) {
@@ -316,10 +295,9 @@ const useTaxonomiesMenuItems = onClickMenuItem => {
316
295
  }, {}), [publicTaxonomies]); // We need to keep track of naming conflicts. If a conflict
317
296
  // occurs, we need to add slug.
318
297
 
319
- const taxonomyLabels = publicTaxonomies === null || publicTaxonomies === void 0 ? void 0 : publicTaxonomies.reduce((accumulator, _ref10) => {
320
- let {
321
- labels
322
- } = _ref10;
298
+ const taxonomyLabels = publicTaxonomies?.reduce((accumulator, {
299
+ labels
300
+ }) => {
323
301
  const singularName = labels.singular_name.toLowerCase();
324
302
  accumulator[singularName] = (accumulator[singularName] || 0) + 1;
325
303
  return accumulator;
@@ -335,15 +313,10 @@ const useTaxonomiesMenuItems = onClickMenuItem => {
335
313
  };
336
314
 
337
315
  const taxonomiesInfo = useEntitiesInfo('taxonomy', templatePrefixes);
338
- const existingTemplateSlugs = (existingTemplates || []).map(_ref11 => {
339
- let {
340
- slug
341
- } = _ref11;
342
- return slug;
343
- });
316
+ const existingTemplateSlugs = (existingTemplates || []).map(({
317
+ slug
318
+ }) => slug);
344
319
  const menuItems = (publicTaxonomies || []).reduce((accumulator, taxonomy) => {
345
- var _taxonomiesInfo$slug;
346
-
347
320
  const {
348
321
  slug,
349
322
  labels
@@ -352,13 +325,10 @@ const useTaxonomiesMenuItems = onClickMenuItem => {
352
325
  // augment it with the specific template functionality.
353
326
 
354
327
  const generalTemplateSlug = templatePrefixes[slug];
355
- const defaultTemplateType = defaultTemplateTypes === null || defaultTemplateTypes === void 0 ? void 0 : defaultTemplateTypes.find(_ref12 => {
356
- let {
357
- slug: _slug
358
- } = _ref12;
359
- return _slug === generalTemplateSlug;
360
- });
361
- const hasGeneralTemplate = existingTemplateSlugs === null || existingTemplateSlugs === void 0 ? void 0 : existingTemplateSlugs.includes(generalTemplateSlug);
328
+ const defaultTemplateType = defaultTemplateTypes?.find(({
329
+ slug: _slug
330
+ }) => _slug === generalTemplateSlug);
331
+ const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug);
362
332
 
363
333
  const _needsUniqueIdentifier = needsUniqueIdentifier(labels, slug);
364
334
 
@@ -379,7 +349,7 @@ const useTaxonomiesMenuItems = onClickMenuItem => {
379
349
  icon: _icons.blockMeta,
380
350
  templatePrefix: templatePrefixes[slug]
381
351
  };
382
- const hasEntities = taxonomiesInfo === null || taxonomiesInfo === void 0 ? void 0 : (_taxonomiesInfo$slug = taxonomiesInfo[slug]) === null || _taxonomiesInfo$slug === void 0 ? void 0 : _taxonomiesInfo$slug.hasEntities; // We have a different template creation flow only if they have entities.
352
+ const hasEntities = taxonomiesInfo?.[slug]?.hasEntities; // We have a different template creation flow only if they have entities.
383
353
 
384
354
  if (hasEntities) {
385
355
  menuItem.onClick = template => {
@@ -387,10 +357,9 @@ const useTaxonomiesMenuItems = onClickMenuItem => {
387
357
  type: 'taxonomy',
388
358
  slug,
389
359
  config: {
390
- queryArgs: _ref13 => {
391
- let {
392
- search
393
- } = _ref13;
360
+ queryArgs: ({
361
+ search
362
+ }) => {
394
363
  return {
395
364
  _fields: 'id,name,slug,link',
396
365
  orderBy: search ? 'name' : 'count',
@@ -453,17 +422,12 @@ const USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = {
453
422
  };
454
423
 
455
424
  function useAuthorMenuItem(onClickMenuItem) {
456
- var _authorInfo$user, _authorInfo$user2;
457
-
458
425
  const existingTemplates = useExistingTemplates();
459
426
  const defaultTemplateTypes = useDefaultTemplateTypes();
460
427
  const authorInfo = useEntitiesInfo('root', USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX, USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS);
461
- let authorMenuItem = defaultTemplateTypes === null || defaultTemplateTypes === void 0 ? void 0 : defaultTemplateTypes.find(_ref14 => {
462
- let {
463
- slug
464
- } = _ref14;
465
- return slug === 'author';
466
- });
428
+ let authorMenuItem = defaultTemplateTypes?.find(({
429
+ slug
430
+ }) => slug === 'author');
467
431
 
468
432
  if (!authorMenuItem) {
469
433
  authorMenuItem = {
@@ -473,14 +437,11 @@ function useAuthorMenuItem(onClickMenuItem) {
473
437
  };
474
438
  }
475
439
 
476
- const hasGeneralTemplate = !!(existingTemplates !== null && existingTemplates !== void 0 && existingTemplates.find(_ref15 => {
477
- let {
478
- slug
479
- } = _ref15;
480
- return slug === 'author';
481
- }));
440
+ const hasGeneralTemplate = !!existingTemplates?.find(({
441
+ slug
442
+ }) => slug === 'author');
482
443
 
483
- if ((_authorInfo$user = authorInfo.user) !== null && _authorInfo$user !== void 0 && _authorInfo$user.hasEntities) {
444
+ if (authorInfo.user?.hasEntities) {
484
445
  authorMenuItem = { ...authorMenuItem,
485
446
  templatePrefix: 'author'
486
447
  };
@@ -490,10 +451,9 @@ function useAuthorMenuItem(onClickMenuItem) {
490
451
  type: 'root',
491
452
  slug: 'user',
492
453
  config: {
493
- queryArgs: _ref16 => {
494
- let {
495
- search
496
- } = _ref16;
454
+ queryArgs: ({
455
+ search
456
+ }) => {
497
457
  return {
498
458
  _fields: 'id,name,slug,link',
499
459
  orderBy: search ? 'name' : 'registered_date',
@@ -522,7 +482,7 @@ function useAuthorMenuItem(onClickMenuItem) {
522
482
  };
523
483
  }
524
484
 
525
- if (!hasGeneralTemplate || (_authorInfo$user2 = authorInfo.user) !== null && _authorInfo$user2 !== void 0 && _authorInfo$user2.hasEntities) {
485
+ if (!hasGeneralTemplate || authorInfo.user?.hasEntities) {
526
486
  return authorMenuItem;
527
487
  }
528
488
  }
@@ -545,8 +505,7 @@ function useAuthorMenuItem(onClickMenuItem) {
545
505
  const useExistingTemplateSlugs = templatePrefixes => {
546
506
  const existingTemplates = useExistingTemplates();
547
507
  const existingSlugs = (0, _element.useMemo)(() => {
548
- return Object.entries(templatePrefixes || {}).reduce((accumulator, _ref17) => {
549
- let [slug, prefix] = _ref17;
508
+ return Object.entries(templatePrefixes || {}).reduce((accumulator, [slug, prefix]) => {
550
509
  const slugsWithTemplates = (existingTemplates || []).reduce((_accumulator, existingTemplate) => {
551
510
  const _prefix = `${prefix}-`;
552
511
 
@@ -577,12 +536,10 @@ const useExistingTemplateSlugs = templatePrefixes => {
577
536
  */
578
537
 
579
538
 
580
- const useTemplatesToExclude = function (entityName, templatePrefixes) {
581
- let additionalQueryParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
539
+ const useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryParameters = {}) => {
582
540
  const slugsToExcludePerEntity = useExistingTemplateSlugs(templatePrefixes);
583
541
  const recordsToExcludePerEntity = (0, _data.useSelect)(select => {
584
- return Object.entries(slugsToExcludePerEntity || {}).reduce((accumulator, _ref18) => {
585
- let [slug, slugsWithTemplates] = _ref18;
542
+ return Object.entries(slugsToExcludePerEntity || {}).reduce((accumulator, [slug, slugsWithTemplates]) => {
586
543
  const entitiesWithTemplates = select(_coreData.store).getEntityRecords(entityName, slug, {
587
544
  _fields: 'id',
588
545
  context: 'view',
@@ -590,7 +547,7 @@ const useTemplatesToExclude = function (entityName, templatePrefixes) {
590
547
  ...additionalQueryParameters[slug]
591
548
  });
592
549
 
593
- if (entitiesWithTemplates !== null && entitiesWithTemplates !== void 0 && entitiesWithTemplates.length) {
550
+ if (entitiesWithTemplates?.length) {
594
551
  accumulator[slug] = entitiesWithTemplates;
595
552
  }
596
553
 
@@ -616,27 +573,21 @@ const useTemplatesToExclude = function (entityName, templatePrefixes) {
616
573
  */
617
574
 
618
575
 
619
- const useEntitiesInfo = function (entityName, templatePrefixes) {
620
- let additionalQueryParameters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
576
+ const useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = {}) => {
621
577
  const recordsToExcludePerEntity = useTemplatesToExclude(entityName, templatePrefixes, additionalQueryParameters);
622
578
  const entitiesInfo = (0, _data.useSelect)(select => {
623
579
  return Object.keys(templatePrefixes || {}).reduce((accumulator, slug) => {
624
- var _recordsToExcludePerE, _select$getEntityReco;
625
-
626
- const existingEntitiesIds = (recordsToExcludePerEntity === null || recordsToExcludePerEntity === void 0 ? void 0 : (_recordsToExcludePerE = recordsToExcludePerEntity[slug]) === null || _recordsToExcludePerE === void 0 ? void 0 : _recordsToExcludePerE.map(_ref19 => {
627
- let {
628
- id
629
- } = _ref19;
630
- return id;
631
- })) || [];
580
+ const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map(({
581
+ id
582
+ }) => id) || [];
632
583
  accumulator[slug] = {
633
- hasEntities: !!((_select$getEntityReco = select(_coreData.store).getEntityRecords(entityName, slug, {
584
+ hasEntities: !!select(_coreData.store).getEntityRecords(entityName, slug, {
634
585
  per_page: 1,
635
586
  _fields: 'id',
636
587
  context: 'view',
637
588
  exclude: existingEntitiesIds,
638
589
  ...additionalQueryParameters[slug]
639
- })) !== null && _select$getEntityReco !== void 0 && _select$getEntityReco.length),
590
+ })?.length,
640
591
  existingEntitiesIds
641
592
  };
642
593
  return accumulator;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/add-new-template/utils.js"],"names":["mapToIHasNameAndId","entities","path","map","entity","name","useExistingTemplates","select","coreStore","getEntityRecords","per_page","useDefaultTemplateTypes","editorStore","__experimentalGetDefaultTemplateTypes","usePublicPostTypes","postTypes","getPostTypes","excludedPostTypes","filter","viewable","slug","includes","usePublicTaxonomies","taxonomies","getTaxonomies","visibility","publicly_queryable","usePostTypeNeedsUniqueIdentifier","publicPostTypes","postTypeLabels","reduce","accumulator","labels","singularName","singular_name","toLowerCase","usePostTypeArchiveMenuItems","postTypesWithArchives","postType","has_archive","existingTemplates","needsUniqueIdentifier","some","existingTemplate","title","description","icon","startsWith","slice","archive","templatePrefix","usePostTypeMenuItems","onClickMenuItem","defaultTemplateTypes","templatePrefixes","suffix","postTypesInfo","useEntitiesInfo","existingTemplateSlugs","menuItems","generalTemplateSlug","defaultTemplateType","find","_slug","hasGeneralTemplate","_needsUniqueIdentifier","menuItemTitle","menuItem","post","hasEntities","onClick","template","type","config","recordNamePath","queryArgs","search","_fields","orderBy","exclude","existingEntitiesIds","getSpecificTemplate","suggestion","templateSlug","push","postTypesMenuItems","key","defaultPostTypesMenuItems","useTaxonomiesMenuItems","publicTaxonomies","taxonomyLabels","taxonomiesInfo","taxonomy","blockMeta","taxonomiesMenuItems","defaultTaxonomiesMenuItems","USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX","user","USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS","who","useAuthorMenuItem","authorInfo","authorMenuItem","search_items","not_found","all_items","useExistingTemplateSlugs","existingSlugs","Object","entries","prefix","slugsWithTemplates","_accumulator","_prefix","substring","length","useTemplatesToExclude","entityName","additionalQueryParameters","slugsToExcludePerEntity","recordsToExcludePerEntity","entitiesWithTemplates","context","entitiesInfo","keys","id"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post, archive } from '@wordpress/icons';\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\n */\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string} path The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( get( entity, path ) ),\n\t} ) );\n};\n\n/**\n * @typedef {Object} EntitiesInfo\n * @property {boolean} hasEntities If an entity has available records(posts, terms, etc..).\n * @property {number[]} existingEntitiesIds An array of the existing entities ids.\n */\n\nexport const useExistingTemplates = () => {\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} ),\n\t\t[]\n\t);\n};\n\nexport const useDefaultTemplateTypes = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).__experimentalGetDefaultTemplateTypes(),\n\t\t[]\n\t);\n};\n\nconst usePublicPostTypes = () => {\n\tconst postTypes = useSelect(\n\t\t( select ) => select( coreStore ).getPostTypes( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\treturn postTypes?.filter(\n\t\t\t( { viewable, slug } ) =>\n\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t);\n\t}, [ postTypes ] );\n};\n\nconst usePublicTaxonomies = () => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\treturn taxonomies?.filter(\n\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t);\n\t}, [ taxonomies ] );\n};\n\nfunction usePostTypeNeedsUniqueIdentifier( publicPostTypes ) {\n\tconst postTypeLabels = useMemo( () =>\n\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\taccumulator[ singularName ] =\n\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t}, {} )\n\t);\n\treturn useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\treturn postTypeLabels[ singularName ] > 1 && singularName !== slug;\n\t\t},\n\t\t[ postTypeLabels ]\n\t);\n}\n\nexport function usePostTypeArchiveMenuItems() {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst postTypesWithArchives = useMemo(\n\t\t() => publicPostTypes?.filter( ( postType ) => postType.has_archive ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst existingTemplates = useExistingTemplates();\n\tconst needsUniqueIdentifier = usePostTypeNeedsUniqueIdentifier(\n\t\tpostTypesWithArchives\n\t);\n\treturn useMemo(\n\t\t() =>\n\t\t\tpostTypesWithArchives\n\t\t\t\t?.filter(\n\t\t\t\t\t( postType ) =>\n\t\t\t\t\t\t! ( existingTemplates || [] ).some(\n\t\t\t\t\t\t\t( existingTemplate ) =>\n\t\t\t\t\t\t\t\texistingTemplate.slug ===\n\t\t\t\t\t\t\t\t'archive-' + postType.slug\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( postType ) => {\n\t\t\t\t\tlet title;\n\t\t\t\t\tif ( needsUniqueIdentifier( postType ) ) {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t__( 'Archive: %1$s (%2$s)' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name,\n\t\t\t\t\t\t\tpostType.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Archive: %s' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tslug: 'archive-' + postType.slug,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Displays an archive with the latest posts of type: %s.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon: postType.icon?.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t? postType.icon.slice( 10 )\n\t\t\t\t\t\t\t: archive,\n\t\t\t\t\t\ttemplatePrefix: 'archive',\n\t\t\t\t\t};\n\t\t\t\t} ) || [],\n\t\t[ postTypesWithArchives, existingTemplates, needsUniqueIdentifier ]\n\t);\n}\n\nexport const usePostTypeMenuItems = ( onClickMenuItem ) => {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst needsUniqueIdentifier =\n\t\tusePostTypeNeedsUniqueIdentifier( publicPostTypes );\n\t// `page`is a special case in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( slug !== 'page' ) {\n\t\t\t\t\tsuffix = `single-${ suffix }`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst postTypesInfo = useEntitiesInfo( 'postType', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicPostTypes || [] ).reduce(\n\t\t( accumulator, postType ) => {\n\t\t\tconst { slug, labels, icon } = postType;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier( postType );\n\t\t\tlet menuItemTitle = sprintf(\n\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t__( 'Single item: %s' ),\n\t\t\t\tlabels.singular_name\n\t\t\t);\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = sprintf(\n\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t__( 'Single item: %1$s (%2$s)' ),\n\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Displays a single item: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon: icon?.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t? icon.slice( 10 )\n\t\t\t\t\t\t\t: post,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = postTypesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'postType',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\trecordNamePath: 'title.rendered',\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,title,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'relevance' : 'modified',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\tpostTypesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default post types\n\t// and one for the rest.\n\tconst postTypesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, postType ) => {\n\t\t\t\t\tconst { slug } = postType;\n\t\t\t\t\tlet key = 'postTypesMenuItems';\n\t\t\t\t\tif ( slug === 'page' ) {\n\t\t\t\t\t\tkey = 'defaultPostTypesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( postType );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultPostTypesMenuItems: [], postTypesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn postTypesMenuItems;\n};\n\nexport const useTaxonomiesMenuItems = ( onClickMenuItem ) => {\n\tconst publicTaxonomies = usePublicTaxonomies();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// `category` and `post_tag` are special cases in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicTaxonomies?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( ! [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\t\t\tsuffix = `taxonomy-${ suffix }`;\n\t\t\t\t}\n\t\t\t\tif ( slug === 'post_tag' ) {\n\t\t\t\t\tsuffix = `tag`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicTaxonomies ]\n\t);\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst taxonomyLabels = publicTaxonomies?.reduce(\n\t\t( accumulator, { labels } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\taccumulator[ singularName ] =\n\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n\tconst needsUniqueIdentifier = ( labels, slug ) => {\n\t\tif ( [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\treturn taxonomyLabels[ singularName ] > 1 && singularName !== slug;\n\t};\n\tconst taxonomiesInfo = useEntitiesInfo( 'taxonomy', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicTaxonomies || [] ).reduce(\n\t\t( accumulator, taxonomy ) => {\n\t\t\tconst { slug, labels } = taxonomy;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier(\n\t\t\t\tlabels,\n\t\t\t\tslug\n\t\t\t);\n\t\t\tlet menuItemTitle = labels.singular_name;\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = sprintf(\n\t\t\t\t\t// translators: %1s: Name of the taxonomy e.g: \"Category\"; %2s: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t__( '%1$s (%2$s)' ),\n\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the taxonomy e.g: \"Product Categories\".\n\t\t\t\t\t\t\t__( 'Displays taxonomy: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ticon: blockMeta,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = taxonomiesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'taxonomy',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'name' : 'count',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\ttaxonomiesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default taxonomies\n\t// and one for the rest.\n\tconst taxonomiesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, taxonomy ) => {\n\t\t\t\t\tconst { slug } = taxonomy;\n\t\t\t\t\tlet key = 'taxonomiesMenuItems';\n\t\t\t\t\tif ( [ 'category', 'tag' ].includes( slug ) ) {\n\t\t\t\t\t\tkey = 'defaultTaxonomiesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( taxonomy );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn taxonomiesMenuItems;\n};\n\nconst USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: 'author' };\nconst USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: 'authors' } };\nexport function useAuthorMenuItem( onClickMenuItem ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst authorInfo = useEntitiesInfo(\n\t\t'root',\n\t\tUSE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX,\n\t\tUSE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS\n\t);\n\tlet authorMenuItem = defaultTemplateTypes?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( ! authorMenuItem ) {\n\t\tauthorMenuItem = {\n\t\t\tdescription: __(\n\t\t\t\t'Displays latest posts written by a single author.'\n\t\t\t),\n\t\t\tslug: 'author',\n\t\t\ttitle: 'Author',\n\t\t};\n\t}\n\tconst hasGeneralTemplate = !! existingTemplates?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( authorInfo.user?.hasEntities ) {\n\t\tauthorMenuItem = { ...authorMenuItem, templatePrefix: 'author' };\n\t\tauthorMenuItem.onClick = ( template ) => {\n\t\t\tonClickMenuItem( {\n\t\t\t\ttype: 'root',\n\t\t\t\tslug: 'user',\n\t\t\t\tconfig: {\n\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\torderBy: search ? 'name' : 'registered_date',\n\t\t\t\t\t\t\texclude: authorInfo.user.existingEntitiesIds,\n\t\t\t\t\t\t\twho: 'authors',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\tconst templateSlug = `author-${ suggestion.slug }`;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\ttemplatePrefix: 'author',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tsingular_name: __( 'Author' ),\n\t\t\t\t\tsearch_items: __( 'Search Authors' ),\n\t\t\t\t\tnot_found: __( 'No authors found.' ),\n\t\t\t\t\tall_items: __( 'All Authors' ),\n\t\t\t\t},\n\t\t\t\thasGeneralTemplate,\n\t\t\t\ttemplate,\n\t\t\t} );\n\t\t};\n\t}\n\tif ( ! hasGeneralTemplate || authorInfo.user?.hasEntities ) {\n\t\treturn authorMenuItem;\n\t}\n}\n\n/**\n * Helper hook that filters all the existing templates by the given\n * object with the entity's slug as key and the template prefix as value.\n *\n * Example:\n * `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]\n * `templatePrefixes` is: { post_tag: 'tag' }\n * It will return: { post_tag: ['apple'] }\n *\n * Note: We append the `-` to the given template prefix in this function for our checks.\n *\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.\n */\nconst useExistingTemplateSlugs = ( templatePrefixes ) => {\n\tconst existingTemplates = useExistingTemplates();\n\tconst existingSlugs = useMemo( () => {\n\t\treturn Object.entries( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, [ slug, prefix ] ) => {\n\t\t\t\tconst slugsWithTemplates = ( existingTemplates || [] ).reduce(\n\t\t\t\t\t( _accumulator, existingTemplate ) => {\n\t\t\t\t\t\tconst _prefix = `${ prefix }-`;\n\t\t\t\t\t\tif ( existingTemplate.slug.startsWith( _prefix ) ) {\n\t\t\t\t\t\t\t_accumulator.push(\n\t\t\t\t\t\t\t\texistingTemplate.slug.substring(\n\t\t\t\t\t\t\t\t\t_prefix.length\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _accumulator;\n\t\t\t\t\t},\n\t\t\t\t\t[]\n\t\t\t\t);\n\t\t\t\tif ( slugsWithTemplates.length ) {\n\t\t\t\t\taccumulator[ slug ] = slugsWithTemplates;\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, existingTemplates ] );\n\treturn existingSlugs;\n};\n\n/**\n * Helper hook that finds the existing records with an associated template,\n * as they need to be excluded from the template suggestions.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.\n */\nconst useTemplatesToExclude = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = {}\n) => {\n\tconst slugsToExcludePerEntity =\n\t\tuseExistingTemplateSlugs( templatePrefixes );\n\tconst recordsToExcludePerEntity = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.entries( slugsToExcludePerEntity || {} ).reduce(\n\t\t\t\t( accumulator, [ slug, slugsWithTemplates ] ) => {\n\t\t\t\t\tconst entitiesWithTemplates = select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\tslug: slugsWithTemplates,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} );\n\t\t\t\t\tif ( entitiesWithTemplates?.length ) {\n\t\t\t\t\t\taccumulator[ slug ] = entitiesWithTemplates;\n\t\t\t\t\t}\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ slugsToExcludePerEntity ]\n\t);\n\treturn recordsToExcludePerEntity;\n};\n\n/**\n * Helper hook that returns information about an entity having\n * records that we can create a specific template for.\n *\n * For example we can search for `terms` in `taxonomy` entity or\n * `posts` in `postType` entity.\n *\n * First we need to find the existing records with an associated template,\n * to query afterwards for any remaining record, by excluding them.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.\n */\nconst useEntitiesInfo = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = {}\n) => {\n\tconst recordsToExcludePerEntity = useTemplatesToExclude(\n\t\tentityName,\n\t\ttemplatePrefixes,\n\t\tadditionalQueryParameters\n\t);\n\tconst entitiesInfo = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t\t( accumulator, slug ) => {\n\t\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t\t) || [];\n\t\t\t\t\taccumulator[ slug ] = {\n\t\t\t\t\t\thasEntities: !! select( coreStore ).getEntityRecords(\n\t\t\t\t\t\t\tentityName,\n\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\texclude: existingEntitiesIds,\n\t\t\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)?.length,\n\t\t\t\t\t\texistingEntitiesIds,\n\t\t\t\t\t};\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ templatePrefixes, recordsToExcludePerEntity ]\n\t);\n\treturn entitiesInfo;\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/add-new-template/utils.js"],"names":["mapToIHasNameAndId","entities","path","map","entity","name","useExistingTemplates","select","coreStore","getEntityRecords","per_page","useDefaultTemplateTypes","editorStore","__experimentalGetDefaultTemplateTypes","usePublicPostTypes","postTypes","getPostTypes","excludedPostTypes","filter","viewable","slug","includes","usePublicTaxonomies","taxonomies","getTaxonomies","visibility","publicly_queryable","usePostTypeNeedsUniqueIdentifier","publicPostTypes","postTypeLabels","reduce","accumulator","labels","singularName","singular_name","toLowerCase","usePostTypeArchiveMenuItems","postTypesWithArchives","postType","has_archive","existingTemplates","needsUniqueIdentifier","some","existingTemplate","title","description","icon","startsWith","slice","archive","templatePrefix","usePostTypeMenuItems","onClickMenuItem","defaultTemplateTypes","templatePrefixes","suffix","postTypesInfo","useEntitiesInfo","existingTemplateSlugs","menuItems","generalTemplateSlug","defaultTemplateType","find","_slug","hasGeneralTemplate","_needsUniqueIdentifier","menuItemTitle","menuItem","post","hasEntities","onClick","template","type","config","recordNamePath","queryArgs","search","_fields","orderBy","exclude","existingEntitiesIds","getSpecificTemplate","suggestion","templateSlug","push","postTypesMenuItems","key","defaultPostTypesMenuItems","useTaxonomiesMenuItems","publicTaxonomies","taxonomyLabels","taxonomiesInfo","taxonomy","blockMeta","taxonomiesMenuItems","defaultTaxonomiesMenuItems","USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX","user","USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS","who","useAuthorMenuItem","authorInfo","authorMenuItem","search_items","not_found","all_items","useExistingTemplateSlugs","existingSlugs","Object","entries","prefix","slugsWithTemplates","_accumulator","_prefix","substring","length","useTemplatesToExclude","entityName","additionalQueryParameters","slugsToExcludePerEntity","recordsToExcludePerEntity","entitiesWithTemplates","context","entitiesInfo","keys","id"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post, archive } from '@wordpress/icons';\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\n */\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string} path The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( get( entity, path ) ),\n\t} ) );\n};\n\n/**\n * @typedef {Object} EntitiesInfo\n * @property {boolean} hasEntities If an entity has available records(posts, terms, etc..).\n * @property {number[]} existingEntitiesIds An array of the existing entities ids.\n */\n\nexport const useExistingTemplates = () => {\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} ),\n\t\t[]\n\t);\n};\n\nexport const useDefaultTemplateTypes = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).__experimentalGetDefaultTemplateTypes(),\n\t\t[]\n\t);\n};\n\nconst usePublicPostTypes = () => {\n\tconst postTypes = useSelect(\n\t\t( select ) => select( coreStore ).getPostTypes( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\treturn postTypes?.filter(\n\t\t\t( { viewable, slug } ) =>\n\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t);\n\t}, [ postTypes ] );\n};\n\nconst usePublicTaxonomies = () => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\treturn taxonomies?.filter(\n\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t);\n\t}, [ taxonomies ] );\n};\n\nfunction usePostTypeNeedsUniqueIdentifier( publicPostTypes ) {\n\tconst postTypeLabels = useMemo( () =>\n\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\taccumulator[ singularName ] =\n\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t}, {} )\n\t);\n\treturn useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\treturn postTypeLabels[ singularName ] > 1 && singularName !== slug;\n\t\t},\n\t\t[ postTypeLabels ]\n\t);\n}\n\nexport function usePostTypeArchiveMenuItems() {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst postTypesWithArchives = useMemo(\n\t\t() => publicPostTypes?.filter( ( postType ) => postType.has_archive ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst existingTemplates = useExistingTemplates();\n\tconst needsUniqueIdentifier = usePostTypeNeedsUniqueIdentifier(\n\t\tpostTypesWithArchives\n\t);\n\treturn useMemo(\n\t\t() =>\n\t\t\tpostTypesWithArchives\n\t\t\t\t?.filter(\n\t\t\t\t\t( postType ) =>\n\t\t\t\t\t\t! ( existingTemplates || [] ).some(\n\t\t\t\t\t\t\t( existingTemplate ) =>\n\t\t\t\t\t\t\t\texistingTemplate.slug ===\n\t\t\t\t\t\t\t\t'archive-' + postType.slug\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( postType ) => {\n\t\t\t\t\tlet title;\n\t\t\t\t\tif ( needsUniqueIdentifier( postType ) ) {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t__( 'Archive: %1$s (%2$s)' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name,\n\t\t\t\t\t\t\tpostType.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Archive: %s' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tslug: 'archive-' + postType.slug,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Displays an archive with the latest posts of type: %s.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon: postType.icon?.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t? postType.icon.slice( 10 )\n\t\t\t\t\t\t\t: archive,\n\t\t\t\t\t\ttemplatePrefix: 'archive',\n\t\t\t\t\t};\n\t\t\t\t} ) || [],\n\t\t[ postTypesWithArchives, existingTemplates, needsUniqueIdentifier ]\n\t);\n}\n\nexport const usePostTypeMenuItems = ( onClickMenuItem ) => {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst needsUniqueIdentifier =\n\t\tusePostTypeNeedsUniqueIdentifier( publicPostTypes );\n\t// `page`is a special case in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( slug !== 'page' ) {\n\t\t\t\t\tsuffix = `single-${ suffix }`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst postTypesInfo = useEntitiesInfo( 'postType', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicPostTypes || [] ).reduce(\n\t\t( accumulator, postType ) => {\n\t\t\tconst { slug, labels, icon } = postType;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier( postType );\n\t\t\tlet menuItemTitle = sprintf(\n\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t__( 'Single item: %s' ),\n\t\t\t\tlabels.singular_name\n\t\t\t);\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = sprintf(\n\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t__( 'Single item: %1$s (%2$s)' ),\n\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Displays a single item: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon: icon?.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t? icon.slice( 10 )\n\t\t\t\t\t\t\t: post,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = postTypesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'postType',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\trecordNamePath: 'title.rendered',\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,title,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'relevance' : 'modified',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\tpostTypesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default post types\n\t// and one for the rest.\n\tconst postTypesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, postType ) => {\n\t\t\t\t\tconst { slug } = postType;\n\t\t\t\t\tlet key = 'postTypesMenuItems';\n\t\t\t\t\tif ( slug === 'page' ) {\n\t\t\t\t\t\tkey = 'defaultPostTypesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( postType );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultPostTypesMenuItems: [], postTypesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn postTypesMenuItems;\n};\n\nexport const useTaxonomiesMenuItems = ( onClickMenuItem ) => {\n\tconst publicTaxonomies = usePublicTaxonomies();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// `category` and `post_tag` are special cases in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicTaxonomies?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( ! [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\t\t\tsuffix = `taxonomy-${ suffix }`;\n\t\t\t\t}\n\t\t\t\tif ( slug === 'post_tag' ) {\n\t\t\t\t\tsuffix = `tag`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicTaxonomies ]\n\t);\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst taxonomyLabels = publicTaxonomies?.reduce(\n\t\t( accumulator, { labels } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\taccumulator[ singularName ] =\n\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n\tconst needsUniqueIdentifier = ( labels, slug ) => {\n\t\tif ( [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\treturn taxonomyLabels[ singularName ] > 1 && singularName !== slug;\n\t};\n\tconst taxonomiesInfo = useEntitiesInfo( 'taxonomy', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicTaxonomies || [] ).reduce(\n\t\t( accumulator, taxonomy ) => {\n\t\t\tconst { slug, labels } = taxonomy;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier(\n\t\t\t\tlabels,\n\t\t\t\tslug\n\t\t\t);\n\t\t\tlet menuItemTitle = labels.singular_name;\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = sprintf(\n\t\t\t\t\t// translators: %1s: Name of the taxonomy e.g: \"Category\"; %2s: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t__( '%1$s (%2$s)' ),\n\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the taxonomy e.g: \"Product Categories\".\n\t\t\t\t\t\t\t__( 'Displays taxonomy: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ticon: blockMeta,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t };\n\t\t\tconst hasEntities = taxonomiesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'taxonomy',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'name' : 'count',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\ttaxonomiesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = `${ templatePrefixes[ slug ] }-${ suggestion.slug }`;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default taxonomies\n\t// and one for the rest.\n\tconst taxonomiesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, taxonomy ) => {\n\t\t\t\t\tconst { slug } = taxonomy;\n\t\t\t\t\tlet key = 'taxonomiesMenuItems';\n\t\t\t\t\tif ( [ 'category', 'tag' ].includes( slug ) ) {\n\t\t\t\t\t\tkey = 'defaultTaxonomiesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( taxonomy );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn taxonomiesMenuItems;\n};\n\nconst USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: 'author' };\nconst USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: 'authors' } };\nexport function useAuthorMenuItem( onClickMenuItem ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst authorInfo = useEntitiesInfo(\n\t\t'root',\n\t\tUSE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX,\n\t\tUSE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS\n\t);\n\tlet authorMenuItem = defaultTemplateTypes?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( ! authorMenuItem ) {\n\t\tauthorMenuItem = {\n\t\t\tdescription: __(\n\t\t\t\t'Displays latest posts written by a single author.'\n\t\t\t),\n\t\t\tslug: 'author',\n\t\t\ttitle: 'Author',\n\t\t};\n\t}\n\tconst hasGeneralTemplate = !! existingTemplates?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( authorInfo.user?.hasEntities ) {\n\t\tauthorMenuItem = { ...authorMenuItem, templatePrefix: 'author' };\n\t\tauthorMenuItem.onClick = ( template ) => {\n\t\t\tonClickMenuItem( {\n\t\t\t\ttype: 'root',\n\t\t\t\tslug: 'user',\n\t\t\t\tconfig: {\n\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\torderBy: search ? 'name' : 'registered_date',\n\t\t\t\t\t\t\texclude: authorInfo.user.existingEntitiesIds,\n\t\t\t\t\t\t\twho: 'authors',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\tconst templateSlug = `author-${ suggestion.slug }`;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\ttemplatePrefix: 'author',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tsingular_name: __( 'Author' ),\n\t\t\t\t\tsearch_items: __( 'Search Authors' ),\n\t\t\t\t\tnot_found: __( 'No authors found.' ),\n\t\t\t\t\tall_items: __( 'All Authors' ),\n\t\t\t\t},\n\t\t\t\thasGeneralTemplate,\n\t\t\t\ttemplate,\n\t\t\t} );\n\t\t};\n\t}\n\tif ( ! hasGeneralTemplate || authorInfo.user?.hasEntities ) {\n\t\treturn authorMenuItem;\n\t}\n}\n\n/**\n * Helper hook that filters all the existing templates by the given\n * object with the entity's slug as key and the template prefix as value.\n *\n * Example:\n * `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]\n * `templatePrefixes` is: { post_tag: 'tag' }\n * It will return: { post_tag: ['apple'] }\n *\n * Note: We append the `-` to the given template prefix in this function for our checks.\n *\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.\n */\nconst useExistingTemplateSlugs = ( templatePrefixes ) => {\n\tconst existingTemplates = useExistingTemplates();\n\tconst existingSlugs = useMemo( () => {\n\t\treturn Object.entries( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, [ slug, prefix ] ) => {\n\t\t\t\tconst slugsWithTemplates = ( existingTemplates || [] ).reduce(\n\t\t\t\t\t( _accumulator, existingTemplate ) => {\n\t\t\t\t\t\tconst _prefix = `${ prefix }-`;\n\t\t\t\t\t\tif ( existingTemplate.slug.startsWith( _prefix ) ) {\n\t\t\t\t\t\t\t_accumulator.push(\n\t\t\t\t\t\t\t\texistingTemplate.slug.substring(\n\t\t\t\t\t\t\t\t\t_prefix.length\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _accumulator;\n\t\t\t\t\t},\n\t\t\t\t\t[]\n\t\t\t\t);\n\t\t\t\tif ( slugsWithTemplates.length ) {\n\t\t\t\t\taccumulator[ slug ] = slugsWithTemplates;\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, existingTemplates ] );\n\treturn existingSlugs;\n};\n\n/**\n * Helper hook that finds the existing records with an associated template,\n * as they need to be excluded from the template suggestions.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.\n */\nconst useTemplatesToExclude = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = {}\n) => {\n\tconst slugsToExcludePerEntity =\n\t\tuseExistingTemplateSlugs( templatePrefixes );\n\tconst recordsToExcludePerEntity = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.entries( slugsToExcludePerEntity || {} ).reduce(\n\t\t\t\t( accumulator, [ slug, slugsWithTemplates ] ) => {\n\t\t\t\t\tconst entitiesWithTemplates = select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\tslug: slugsWithTemplates,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} );\n\t\t\t\t\tif ( entitiesWithTemplates?.length ) {\n\t\t\t\t\t\taccumulator[ slug ] = entitiesWithTemplates;\n\t\t\t\t\t}\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ slugsToExcludePerEntity ]\n\t);\n\treturn recordsToExcludePerEntity;\n};\n\n/**\n * Helper hook that returns information about an entity having\n * records that we can create a specific template for.\n *\n * For example we can search for `terms` in `taxonomy` entity or\n * `posts` in `postType` entity.\n *\n * First we need to find the existing records with an associated template,\n * to query afterwards for any remaining record, by excluding them.\n *\n * @param {string} entityName The entity's name.\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.\n */\nconst useEntitiesInfo = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = {}\n) => {\n\tconst recordsToExcludePerEntity = useTemplatesToExclude(\n\t\tentityName,\n\t\ttemplatePrefixes,\n\t\tadditionalQueryParameters\n\t);\n\tconst entitiesInfo = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t\t( accumulator, slug ) => {\n\t\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t\t) || [];\n\t\t\t\t\taccumulator[ slug ] = {\n\t\t\t\t\t\thasEntities: !! select( coreStore ).getEntityRecords(\n\t\t\t\t\t\t\tentityName,\n\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t\t\texclude: existingEntitiesIds,\n\t\t\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)?.length,\n\t\t\t\t\t\texistingEntitiesIds,\n\t\t\t\t\t};\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ templatePrefixes, recordsToExcludePerEntity ]\n\t);\n\treturn entitiesInfo;\n};\n"]}
@@ -30,12 +30,10 @@ const {
30
30
  } = (0, _privateApis.unlock)(_router.privateApis);
31
31
 
32
32
  function BackButton() {
33
- var _location$state;
34
-
35
33
  const location = useLocation();
36
34
  const history = useHistory();
37
35
  const isTemplatePart = location.params.postType === 'wp_template_part';
38
- const previousTemplateId = (_location$state = location.state) === null || _location$state === void 0 ? void 0 : _location$state.fromTemplateId;
36
+ const previousTemplateId = location.state?.fromTemplateId;
39
37
 
40
38
  if (!isTemplatePart || !previousTemplateId) {
41
39
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/back-button.js"],"names":["useLocation","useHistory","routerPrivateApis","BackButton","location","history","isTemplatePart","params","postType","previousTemplateId","state","fromTemplateId","arrowLeft","back"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGA,MAAM;AAAEA,EAAAA,WAAF;AAAeC,EAAAA;AAAf,IAA8B,yBAAQC,mBAAR,CAApC;;AAEA,SAASC,UAAT,GAAsB;AAAA;;AACrB,QAAMC,QAAQ,GAAGJ,WAAW,EAA5B;AACA,QAAMK,OAAO,GAAGJ,UAAU,EAA1B;AACA,QAAMK,cAAc,GAAGF,QAAQ,CAACG,MAAT,CAAgBC,QAAhB,KAA6B,kBAApD;AACA,QAAMC,kBAAkB,sBAAGL,QAAQ,CAACM,KAAZ,oDAAG,gBAAgBC,cAA3C;;AAEA,MAAK,CAAEL,cAAF,IAAoB,CAAEG,kBAA3B,EAAgD;AAC/C,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,kBAAD;AACC,IAAA,SAAS,EAAC,sCADX;AAEC,IAAA,IAAI,EAAGG,gBAFR;AAGC,IAAA,OAAO,EAAG,MAAM;AACfP,MAAAA,OAAO,CAACQ,IAAR;AACA;AALF,KAOG,cAAI,MAAJ,CAPH,CADD;AAWA;;eAEcV,U","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../private-apis';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nfunction BackButton() {\n\tconst location = useLocation();\n\tconst history = useHistory();\n\tconst isTemplatePart = location.params.postType === 'wp_template_part';\n\tconst previousTemplateId = location.state?.fromTemplateId;\n\n\tif ( ! isTemplatePart || ! previousTemplateId ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-site-visual-editor__back-button\"\n\t\t\ticon={ arrowLeft }\n\t\t\tonClick={ () => {\n\t\t\t\thistory.back();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Back' ) }\n\t\t</Button>\n\t);\n}\n\nexport default BackButton;\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/block-editor/back-button.js"],"names":["useLocation","useHistory","routerPrivateApis","BackButton","location","history","isTemplatePart","params","postType","previousTemplateId","state","fromTemplateId","arrowLeft","back"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGA,MAAM;AAAEA,EAAAA,WAAF;AAAeC,EAAAA;AAAf,IAA8B,yBAAQC,mBAAR,CAApC;;AAEA,SAASC,UAAT,GAAsB;AACrB,QAAMC,QAAQ,GAAGJ,WAAW,EAA5B;AACA,QAAMK,OAAO,GAAGJ,UAAU,EAA1B;AACA,QAAMK,cAAc,GAAGF,QAAQ,CAACG,MAAT,CAAgBC,QAAhB,KAA6B,kBAApD;AACA,QAAMC,kBAAkB,GAAGL,QAAQ,CAACM,KAAT,EAAgBC,cAA3C;;AAEA,MAAK,CAAEL,cAAF,IAAoB,CAAEG,kBAA3B,EAAgD;AAC/C,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,kBAAD;AACC,IAAA,SAAS,EAAC,sCADX;AAEC,IAAA,IAAI,EAAGG,gBAFR;AAGC,IAAA,OAAO,EAAG,MAAM;AACfP,MAAAA,OAAO,CAACQ,IAAR;AACA;AALF,KAOG,cAAI,MAAJ,CAPH,CADD;AAWA;;eAEcV,U","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../private-apis';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nfunction BackButton() {\n\tconst location = useLocation();\n\tconst history = useHistory();\n\tconst isTemplatePart = location.params.postType === 'wp_template_part';\n\tconst previousTemplateId = location.state?.fromTemplateId;\n\n\tif ( ! isTemplatePart || ! previousTemplateId ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"edit-site-visual-editor__back-button\"\n\t\t\ticon={ arrowLeft }\n\t\t\tonClick={ () => {\n\t\t\t\thistory.back();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Back' ) }\n\t\t</Button>\n\t);\n}\n\nexport default BackButton;\n"]}
@@ -32,10 +32,9 @@ var _constants2 = require("../sidebar-edit-mode/constants");
32
32
  /**
33
33
  * Internal dependencies
34
34
  */
35
- function BlockInspectorButton(_ref) {
36
- let {
37
- onClick = () => {}
38
- } = _ref;
35
+ function BlockInspectorButton({
36
+ onClick = () => {}
37
+ }) {
39
38
  const {
40
39
  shortcut,
41
40
  isBlockInspectorOpen