@wordpress/edit-site 5.14.0 → 5.15.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 (341) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-page/index.js +1 -6
  3. package/build/components/add-new-page/index.js.map +1 -1
  4. package/build/components/add-new-pattern/index.js +21 -7
  5. package/build/components/add-new-pattern/index.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +10 -8
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/block-editor/constants.js +1 -1
  9. package/build/components/block-editor/constants.js.map +1 -1
  10. package/build/components/block-editor/editor-canvas.js +1 -1
  11. package/build/components/block-editor/editor-canvas.js.map +1 -1
  12. package/build/components/block-editor/index.js +0 -4
  13. package/build/components/block-editor/index.js.map +1 -1
  14. package/build/components/block-editor/use-site-editor-settings.js +87 -13
  15. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  16. package/build/components/code-editor/index.js +60 -28
  17. package/build/components/code-editor/index.js.map +1 -1
  18. package/build/components/create-pattern-modal/index.js +7 -3
  19. package/build/components/create-pattern-modal/index.js.map +1 -1
  20. package/build/components/editor/index.js +1 -1
  21. package/build/components/editor/index.js.map +1 -1
  22. package/build/components/header-edit-mode/index.js +13 -9
  23. package/build/components/header-edit-mode/index.js.map +1 -1
  24. package/build/components/layout/index.js +8 -3
  25. package/build/components/layout/index.js.map +1 -1
  26. package/build/components/page-actions/index.js +2 -2
  27. package/build/components/page-actions/index.js.map +1 -1
  28. package/build/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +8 -16
  29. package/build/components/page-actions/trash-page-menu-item.js.map +1 -0
  30. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -5
  31. package/build/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  32. package/build/components/page-patterns/duplicate-menu-item.js +163 -0
  33. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -0
  34. package/build/components/page-patterns/grid-item.js +83 -58
  35. package/build/components/page-patterns/grid-item.js.map +1 -1
  36. package/build/components/page-patterns/grid.js +5 -18
  37. package/build/components/page-patterns/grid.js.map +1 -1
  38. package/build/components/page-patterns/header.js +69 -0
  39. package/build/components/page-patterns/header.js.map +1 -0
  40. package/build/components/page-patterns/index.js +3 -1
  41. package/build/components/page-patterns/index.js.map +1 -1
  42. package/build/components/page-patterns/pagination.js +63 -0
  43. package/build/components/page-patterns/pagination.js.map +1 -0
  44. package/build/components/page-patterns/patterns-list.js +95 -30
  45. package/build/components/page-patterns/patterns-list.js.map +1 -1
  46. package/build/components/page-patterns/rename-menu-item.js +109 -0
  47. package/build/components/page-patterns/rename-menu-item.js.map +1 -0
  48. package/build/components/page-patterns/use-patterns.js +102 -121
  49. package/build/components/page-patterns/use-patterns.js.map +1 -1
  50. package/build/components/page-template-parts/add-new-template-part.js +74 -0
  51. package/build/components/page-template-parts/add-new-template-part.js.map +1 -0
  52. package/build/components/page-template-parts/index.js +2 -23
  53. package/build/components/page-template-parts/index.js.map +1 -1
  54. package/build/components/resizable-frame/index.js +78 -36
  55. package/build/components/resizable-frame/index.js.map +1 -1
  56. package/build/components/save-panel/index.js +5 -5
  57. package/build/components/save-panel/index.js.map +1 -1
  58. package/build/components/sidebar-edit-mode/page-panels/page-content.js +4 -3
  59. package/build/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  60. package/build/components/sidebar-edit-mode/page-panels/page-status.js +3 -8
  61. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  62. package/build/components/sidebar-navigation-screen/index.js +14 -8
  63. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  64. package/build/components/sidebar-navigation-screen-main/index.js +4 -2
  65. package/build/components/sidebar-navigation-screen-main/index.js.map +1 -1
  66. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +45 -0
  67. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  68. package/build/components/sidebar-navigation-screen-navigation-menu/index.js +4 -4
  69. package/build/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  70. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  71. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  72. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  73. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  74. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +4 -3
  75. package/build/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  76. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  77. package/build/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -1
  78. package/build/components/sidebar-navigation-screen-page/index.js +2 -3
  79. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-screen-page/status-label.js +1 -34
  81. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-pages/index.js +33 -25
  83. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-pattern/index.js +9 -7
  85. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  86. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  87. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  88. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  89. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  90. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -3
  91. package/build/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  92. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +5 -2
  93. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  94. package/build/components/sidebar-navigation-screen-patterns/index.js +72 -51
  95. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  96. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  97. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  98. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +11 -1
  99. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  100. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +20 -9
  101. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  102. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  103. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  104. package/build/components/site-hub/index.js +24 -11
  105. package/build/components/site-hub/index.js.map +1 -1
  106. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +10 -5
  107. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  108. package/build/components/sync-state-with-url/use-sync-path-with-url.js +15 -12
  109. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  110. package/build/components/template-actions/index.js +3 -1
  111. package/build/components/template-actions/index.js.map +1 -1
  112. package/build/components/template-actions/rename-menu-item.js +12 -8
  113. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  114. package/build/components/use-edited-entity-record/index.js +6 -1
  115. package/build/components/use-edited-entity-record/index.js.map +1 -1
  116. package/build/hooks/commands/use-common-commands.js +78 -20
  117. package/build/hooks/commands/use-common-commands.js.map +1 -1
  118. package/build/hooks/push-changes-to-global-styles/index.js +56 -10
  119. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  120. package/build/store/private-actions.js +7 -1
  121. package/build/store/private-actions.js.map +1 -1
  122. package/build/utils/normalize-record-key.js +19 -0
  123. package/build/utils/normalize-record-key.js.map +1 -0
  124. package/build/utils/use-activate-theme.js +1 -1
  125. package/build/utils/use-activate-theme.js.map +1 -1
  126. package/build-module/components/add-new-page/index.js +1 -6
  127. package/build-module/components/add-new-page/index.js.map +1 -1
  128. package/build-module/components/add-new-pattern/index.js +19 -7
  129. package/build-module/components/add-new-pattern/index.js.map +1 -1
  130. package/build-module/components/add-new-template/utils.js +9 -6
  131. package/build-module/components/add-new-template/utils.js.map +1 -1
  132. package/build-module/components/block-editor/constants.js +1 -1
  133. package/build-module/components/block-editor/constants.js.map +1 -1
  134. package/build-module/components/block-editor/editor-canvas.js +1 -1
  135. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  136. package/build-module/components/block-editor/index.js +0 -4
  137. package/build-module/components/block-editor/index.js.map +1 -1
  138. package/build-module/components/block-editor/use-site-editor-settings.js +89 -14
  139. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  140. package/build-module/components/code-editor/index.js +62 -30
  141. package/build-module/components/code-editor/index.js.map +1 -1
  142. package/build-module/components/create-pattern-modal/index.js +6 -3
  143. package/build-module/components/create-pattern-modal/index.js.map +1 -1
  144. package/build-module/components/editor/index.js +1 -1
  145. package/build-module/components/editor/index.js.map +1 -1
  146. package/build-module/components/header-edit-mode/index.js +13 -9
  147. package/build-module/components/header-edit-mode/index.js.map +1 -1
  148. package/build-module/components/layout/index.js +8 -3
  149. package/build-module/components/layout/index.js.map +1 -1
  150. package/build-module/components/page-actions/index.js +2 -2
  151. package/build-module/components/page-actions/index.js.map +1 -1
  152. package/build-module/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +8 -17
  153. package/build-module/components/page-actions/trash-page-menu-item.js.map +1 -0
  154. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js +5 -3
  155. package/build-module/components/page-content-focus-manager/disable-non-page-content-blocks.js.map +1 -1
  156. package/build-module/components/page-patterns/duplicate-menu-item.js +147 -0
  157. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -0
  158. package/build-module/components/page-patterns/grid-item.js +84 -64
  159. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  160. package/build-module/components/page-patterns/grid.js +5 -17
  161. package/build-module/components/page-patterns/grid.js.map +1 -1
  162. package/build-module/components/page-patterns/header.js +54 -0
  163. package/build-module/components/page-patterns/header.js.map +1 -0
  164. package/build-module/components/page-patterns/index.js +3 -1
  165. package/build-module/components/page-patterns/index.js.map +1 -1
  166. package/build-module/components/page-patterns/pagination.js +54 -0
  167. package/build-module/components/page-patterns/pagination.js.map +1 -0
  168. package/build-module/components/page-patterns/patterns-list.js +96 -33
  169. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  170. package/build-module/components/page-patterns/rename-menu-item.js +97 -0
  171. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -0
  172. package/build-module/components/page-patterns/use-patterns.js +103 -122
  173. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  174. package/build-module/components/page-template-parts/add-new-template-part.js +58 -0
  175. package/build-module/components/page-template-parts/add-new-template-part.js.map +1 -0
  176. package/build-module/components/page-template-parts/index.js +3 -22
  177. package/build-module/components/page-template-parts/index.js.map +1 -1
  178. package/build-module/components/resizable-frame/index.js +79 -39
  179. package/build-module/components/resizable-frame/index.js.map +1 -1
  180. package/build-module/components/save-panel/index.js +5 -5
  181. package/build-module/components/save-panel/index.js.map +1 -1
  182. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js +5 -2
  183. package/build-module/components/sidebar-edit-mode/page-panels/page-content.js.map +1 -1
  184. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +3 -8
  185. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  186. package/build-module/components/sidebar-navigation-screen/index.js +15 -9
  187. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  188. package/build-module/components/sidebar-navigation-screen-main/index.js +4 -3
  189. package/build-module/components/sidebar-navigation-screen-main/index.js.map +1 -1
  190. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +33 -0
  191. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -0
  192. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js +4 -4
  193. package/build-module/components/sidebar-navigation-screen-navigation-menu/index.js.map +1 -1
  194. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  195. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  196. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  197. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  198. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +4 -3
  199. package/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js.map +1 -1
  200. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  201. package/build-module/components/sidebar-navigation-screen-navigation-menus/constants.js.map +1 -1
  202. package/build-module/components/sidebar-navigation-screen-page/index.js +2 -3
  203. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  204. package/build-module/components/sidebar-navigation-screen-page/status-label.js +1 -32
  205. package/build-module/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  206. package/build-module/components/sidebar-navigation-screen-pages/index.js +33 -25
  207. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  208. package/build-module/components/sidebar-navigation-screen-pattern/index.js +8 -7
  209. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  210. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  211. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  212. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  213. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  214. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +11 -3
  215. package/build-module/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js.map +1 -1
  216. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +4 -2
  217. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  218. package/build-module/components/sidebar-navigation-screen-patterns/index.js +76 -53
  219. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  220. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  221. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  222. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +10 -1
  223. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  224. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +18 -9
  225. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  226. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +1 -1
  227. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  228. package/build-module/components/site-hub/index.js +24 -11
  229. package/build-module/components/site-hub/index.js.map +1 -1
  230. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +7 -5
  231. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  232. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +16 -12
  233. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  234. package/build-module/components/template-actions/index.js +2 -1
  235. package/build-module/components/template-actions/index.js.map +1 -1
  236. package/build-module/components/template-actions/rename-menu-item.js +11 -8
  237. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  238. package/build-module/components/use-edited-entity-record/index.js +3 -1
  239. package/build-module/components/use-edited-entity-record/index.js.map +1 -1
  240. package/build-module/hooks/commands/use-common-commands.js +74 -20
  241. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  242. package/build-module/hooks/push-changes-to-global-styles/index.js +57 -10
  243. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  244. package/build-module/store/private-actions.js +7 -1
  245. package/build-module/store/private-actions.js.map +1 -1
  246. package/build-module/utils/normalize-record-key.js +12 -0
  247. package/build-module/utils/normalize-record-key.js.map +1 -0
  248. package/build-module/utils/use-activate-theme.js +1 -1
  249. package/build-module/utils/use-activate-theme.js.map +1 -1
  250. package/build-style/style-rtl.css +221 -63
  251. package/build-style/style.css +221 -63
  252. package/package.json +39 -40
  253. package/src/components/add-new-page/index.js +0 -3
  254. package/src/components/add-new-pattern/index.js +23 -12
  255. package/src/components/add-new-template/utils.js +9 -6
  256. package/src/components/block-editor/constants.js +5 -1
  257. package/src/components/block-editor/editor-canvas.js +1 -1
  258. package/src/components/block-editor/index.js +0 -4
  259. package/src/components/block-editor/use-site-editor-settings.js +99 -20
  260. package/src/components/canvas-spinner/style.scss +14 -0
  261. package/src/components/code-editor/index.js +51 -33
  262. package/src/components/create-pattern-modal/index.js +5 -2
  263. package/src/components/editor/index.js +2 -2
  264. package/src/components/header-edit-mode/document-actions/style.scss +4 -0
  265. package/src/components/header-edit-mode/index.js +29 -22
  266. package/src/components/layout/index.js +16 -2
  267. package/src/components/layout/style.scss +2 -1
  268. package/src/components/page-actions/index.js +2 -2
  269. package/src/components/page-actions/{delete-page-menu-item.js → trash-page-menu-item.js} +9 -22
  270. package/src/components/page-content-focus-manager/disable-non-page-content-blocks.js +12 -3
  271. package/src/components/page-patterns/duplicate-menu-item.js +196 -0
  272. package/src/components/page-patterns/grid-item.js +189 -133
  273. package/src/components/page-patterns/grid.js +3 -20
  274. package/src/components/page-patterns/header.js +69 -0
  275. package/src/components/page-patterns/index.js +6 -1
  276. package/src/components/page-patterns/pagination.js +80 -0
  277. package/src/components/page-patterns/patterns-list.js +160 -72
  278. package/src/components/page-patterns/rename-menu-item.js +115 -0
  279. package/src/components/page-patterns/style.scss +140 -30
  280. package/src/components/page-patterns/use-patterns.js +102 -172
  281. package/src/components/page-template-parts/add-new-template-part.js +57 -0
  282. package/src/components/page-template-parts/index.js +3 -22
  283. package/src/components/resizable-frame/index.js +102 -34
  284. package/src/components/resizable-frame/style.scss +9 -9
  285. package/src/components/save-panel/index.js +10 -4
  286. package/src/components/sidebar-edit-mode/page-panels/page-content.js +7 -5
  287. package/src/components/sidebar-edit-mode/page-panels/page-status.js +2 -5
  288. package/src/components/sidebar-navigation-item/style.scss +5 -12
  289. package/src/components/sidebar-navigation-screen/index.js +14 -7
  290. package/src/components/sidebar-navigation-screen/style.scss +14 -0
  291. package/src/components/sidebar-navigation-screen-main/index.js +44 -40
  292. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +34 -0
  293. package/src/components/sidebar-navigation-screen-navigation-menu/index.js +4 -3
  294. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  295. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +1 -1
  296. package/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js +15 -5
  297. package/src/components/sidebar-navigation-screen-navigation-menus/constants.js +2 -0
  298. package/src/components/sidebar-navigation-screen-page/index.js +3 -3
  299. package/src/components/sidebar-navigation-screen-page/status-label.js +1 -35
  300. package/src/components/sidebar-navigation-screen-pages/index.js +39 -29
  301. package/src/components/sidebar-navigation-screen-pattern/index.js +5 -2
  302. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
  303. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +2 -1
  304. package/src/components/sidebar-navigation-screen-pattern/use-navigation-menu-content.js +12 -2
  305. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +5 -2
  306. package/src/components/sidebar-navigation-screen-patterns/index.js +103 -98
  307. package/src/components/sidebar-navigation-screen-patterns/style.scss +20 -0
  308. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +7 -6
  309. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +9 -0
  310. package/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +31 -9
  311. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -1
  312. package/src/components/site-hub/index.js +45 -28
  313. package/src/components/site-hub/style.scss +13 -0
  314. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +8 -2
  315. package/src/components/sync-state-with-url/use-sync-path-with-url.js +73 -66
  316. package/src/components/template-actions/index.js +2 -1
  317. package/src/components/template-actions/rename-menu-item.js +17 -10
  318. package/src/components/use-edited-entity-record/index.js +6 -1
  319. package/src/hooks/commands/use-common-commands.js +56 -23
  320. package/src/hooks/push-changes-to-global-styles/index.js +63 -9
  321. package/src/store/private-actions.js +5 -1
  322. package/src/style.scss +10 -12
  323. package/src/utils/normalize-record-key.js +11 -0
  324. package/src/utils/use-activate-theme.js +1 -1
  325. package/build/components/code-editor/code-editor-text-area.js +0 -96
  326. package/build/components/code-editor/code-editor-text-area.js.map +0 -1
  327. package/build/components/keyboard-shortcuts/index.js +0 -148
  328. package/build/components/keyboard-shortcuts/index.js.map +0 -1
  329. package/build/components/page-actions/delete-page-menu-item.js.map +0 -1
  330. package/build/components/page-content-focus-manager/constants.js +0 -9
  331. package/build/components/page-content-focus-manager/constants.js.map +0 -1
  332. package/build-module/components/code-editor/code-editor-text-area.js +0 -84
  333. package/build-module/components/code-editor/code-editor-text-area.js.map +0 -1
  334. package/build-module/components/keyboard-shortcuts/index.js +0 -132
  335. package/build-module/components/keyboard-shortcuts/index.js.map +0 -1
  336. package/build-module/components/page-actions/delete-page-menu-item.js.map +0 -1
  337. package/build-module/components/page-content-focus-manager/constants.js +0 -2
  338. package/build-module/components/page-content-focus-manager/constants.js.map +0 -1
  339. package/src/components/code-editor/code-editor-text-area.js +0 -84
  340. package/src/components/keyboard-shortcuts/index.js +0 -137
  341. package/src/components/page-content-focus-manager/constants.js +0 -5
@@ -9,42 +9,10 @@ import classnames from 'classnames';
9
9
  import { __, sprintf } from '@wordpress/i18n';
10
10
  import { dateI18n, getDate, humanTimeDiff } from '@wordpress/date';
11
11
  import { createInterpolateElement } from '@wordpress/element';
12
- import { Path, SVG } from '@wordpress/primitives';
13
-
14
- const publishedIcon = (
15
- <SVG fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
16
- <Path
17
- fillRule="evenodd"
18
- clipRule="evenodd"
19
- d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Zm-1.067-5.6 4.2-5.667.8.6-4.8 6.467-3-2.267.6-.8 2.2 1.667Z"
20
- />
21
- </SVG>
22
- );
23
-
24
- const draftIcon = (
25
- <SVG fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
26
- <Path
27
- fillRule="evenodd"
28
- clipRule="evenodd"
29
- d="M14.5 8a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0ZM16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-8 4a4 4 0 0 0 0-8v8Z"
30
- />
31
- </SVG>
32
- );
33
-
34
- const pendingIcon = (
35
- <SVG fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
36
- <Path
37
- fillRule="evenodd"
38
- clipRule="evenodd"
39
- d="M14.5 8a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0ZM16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8 4a4 4 0 1 0 0 8 4 4 0 0 0 0-8Z"
40
- />
41
- </SVG>
42
- );
43
12
 
44
13
  export default function StatusLabel( { status, date, short } ) {
45
14
  const relateToNow = humanTimeDiff( date );
46
15
  let statusLabel = status;
47
- let statusIcon = pendingIcon;
48
16
  switch ( status ) {
49
17
  case 'publish':
50
18
  statusLabel = date
@@ -57,7 +25,6 @@ export default function StatusLabel( { status, date, short } ) {
57
25
  { time: <time dateTime={ date } /> }
58
26
  )
59
27
  : __( 'Published' );
60
- statusIcon = publishedIcon;
61
28
  break;
62
29
  case 'future':
63
30
  const formattedDate = dateI18n(
@@ -77,7 +44,6 @@ export default function StatusLabel( { status, date, short } ) {
77
44
  break;
78
45
  case 'draft':
79
46
  statusLabel = __( 'Draft' );
80
- statusIcon = draftIcon;
81
47
  break;
82
48
  case 'pending':
83
49
  statusLabel = __( 'Pending' );
@@ -99,7 +65,7 @@ export default function StatusLabel( { status, date, short } ) {
99
65
  }
100
66
  ) }
101
67
  >
102
- { statusIcon } { statusLabel }
68
+ { statusLabel }
103
69
  </div>
104
70
  );
105
71
  }
@@ -58,13 +58,16 @@ export default function SidebarNavigationScreenPages() {
58
58
  templates?.find( ( template ) => template.slug === 'home' ) ||
59
59
  templates?.find( ( template ) => template.slug === 'index' );
60
60
 
61
+ const getPostsPageTemplate = () =>
62
+ templates?.find( ( template ) => template.slug === 'home' ) ||
63
+ templates?.find( ( template ) => template.slug === 'index' );
64
+
61
65
  const pagesAndTemplates = pages?.concat( dynamicPageTemplates, [
62
66
  homeTemplate,
63
67
  ] );
64
68
 
65
69
  const { frontPage, postsPage } = useSelect( ( select ) => {
66
70
  const { getEntityRecord } = select( coreStore );
67
-
68
71
  const siteSettings = getEntityRecord( 'root', 'site' );
69
72
  return {
70
73
  frontPage: siteSettings?.page_on_front,
@@ -106,6 +109,27 @@ export default function SidebarNavigationScreenPages() {
106
109
  setShowAddPage( false );
107
110
  };
108
111
 
112
+ const getPageProps = ( id ) => {
113
+ let itemIcon = page;
114
+ const postsPageTemplateId =
115
+ postsPage && postsPage === id ? getPostsPageTemplate()?.id : null;
116
+
117
+ switch ( id ) {
118
+ case frontPage:
119
+ itemIcon = home;
120
+ break;
121
+ case postsPage:
122
+ itemIcon = verse;
123
+ break;
124
+ }
125
+
126
+ return {
127
+ icon: itemIcon,
128
+ postType: postsPageTemplateId ? 'wp_template' : 'page',
129
+ postId: postsPageTemplateId || id,
130
+ };
131
+ };
132
+
109
133
  return (
110
134
  <>
111
135
  { showAddPage && (
@@ -152,34 +176,20 @@ export default function SidebarNavigationScreenPages() {
152
176
  </Truncate>
153
177
  </PageItem>
154
178
  ) }
155
- { reorderedPages?.map( ( item ) => {
156
- let itemIcon;
157
- switch ( item.id ) {
158
- case frontPage:
159
- itemIcon = home;
160
- break;
161
- case postsPage:
162
- itemIcon = verse;
163
- break;
164
- default:
165
- itemIcon = page;
166
- }
167
- return (
168
- <PageItem
169
- postId={ item.id }
170
- key={ item.id }
171
- icon={ itemIcon }
172
- withChevron
173
- >
174
- <Truncate numberOfLines={ 1 }>
175
- { decodeEntities(
176
- item?.title?.rendered ||
177
- __( '(no title)' )
178
- ) }
179
- </Truncate>
180
- </PageItem>
181
- );
182
- } ) }
179
+ { reorderedPages?.map( ( { id, title } ) => (
180
+ <PageItem
181
+ { ...getPageProps( id ) }
182
+ key={ id }
183
+ withChevron
184
+ >
185
+ <Truncate numberOfLines={ 1 }>
186
+ { decodeEntities(
187
+ title?.rendered ||
188
+ __( '(no title)' )
189
+ ) }
190
+ </Truncate>
191
+ </PageItem>
192
+ ) ) }
183
193
  </ItemGroup>
184
194
  ) }
185
195
  </>
@@ -16,13 +16,16 @@ import useInitEditedEntityFromURL from '../sync-state-with-url/use-init-edited-e
16
16
  import usePatternDetails from './use-pattern-details';
17
17
  import { store as editSiteStore } from '../../store';
18
18
  import { unlock } from '../../lock-unlock';
19
+ import normalizeRecordKey from '../../utils/normalize-record-key';
19
20
 
20
21
  export default function SidebarNavigationScreenPattern() {
21
- const { params } = useNavigator();
22
22
  const { categoryType } = getQueryArgs( window.location.href );
23
- const { postType, postId } = params;
24
23
  const { setCanvasMode } = unlock( useDispatch( editSiteStore ) );
25
24
 
25
+ const { params } = useNavigator();
26
+ const { postType } = params;
27
+ const postId = normalizeRecordKey( params?.postId );
28
+
26
29
  useInitEditedEntityFromURL();
27
30
 
28
31
  const patternDetails = usePatternDetails( postType, postId );
@@ -19,8 +19,9 @@ export default function TemplatePartNavigationMenu( { id } ) {
19
19
  <>
20
20
  <Heading
21
21
  className="edit-site-sidebar-navigation-screen-template-part-navigation-menu__title"
22
- size="12"
22
+ size="11"
23
23
  upperCase={ true }
24
+ weight={ 500 }
24
25
  >
25
26
  { title?.rendered || title || __( 'Navigation' ) }
26
27
  </Heading>
@@ -22,8 +22,9 @@ export default function TemplatePartNavigationMenus( { menus } ) {
22
22
  <>
23
23
  <Heading
24
24
  className="edit-site-sidebar-navigation-screen-template-part-navigation-menu__title"
25
- size="12"
25
+ size="11"
26
26
  upperCase={ true }
27
+ weight={ 500 }
27
28
  >
28
29
  { __( 'Navigation' ) }
29
30
  </Heading>
@@ -59,13 +59,23 @@ export default function useNavigationMenuContent( postType, postId ) {
59
59
  record?.blocks
60
60
  );
61
61
 
62
+ if ( ! navigationBlocks.length ) {
63
+ return;
64
+ }
65
+
62
66
  const navigationMenuIds = navigationBlocks?.map(
63
67
  ( block ) => block.attributes.ref
64
68
  );
65
69
 
66
- if ( ! navigationMenuIds?.length ) {
70
+ // Dedupe the Navigation blocks, as you can have multiple navigation blocks in the template.
71
+ // Also, filter out undefined values, as blocks don't have an id when initially added.
72
+ const uniqueNavigationMenuIds = [ ...new Set( navigationMenuIds ) ].filter(
73
+ ( menuId ) => menuId
74
+ );
75
+
76
+ if ( ! uniqueNavigationMenuIds?.length ) {
67
77
  return;
68
78
  }
69
79
 
70
- return <TemplatePartNavigationMenus menus={ navigationMenuIds } />;
80
+ return <TemplatePartNavigationMenus menus={ uniqueNavigationMenuIds } />;
71
81
  }
@@ -19,8 +19,11 @@ import {
19
19
  SidebarNavigationScreenDetailsPanelLabel,
20
20
  SidebarNavigationScreenDetailsPanelValue,
21
21
  } from '../sidebar-navigation-screen-details-panel';
22
+ import normalizeRecordKey from '../../utils/normalize-record-key';
22
23
 
23
24
  export default function usePatternDetails( postType, postId ) {
25
+ postId = normalizeRecordKey( postId );
26
+
24
27
  const { getDescription, getTitle, record } = useEditedEntityRecord(
25
28
  postType,
26
29
  postId
@@ -38,7 +41,7 @@ export default function usePatternDetails( postType, postId ) {
38
41
  if ( ! descriptionText && addedBy.text ) {
39
42
  descriptionText = sprintf(
40
43
  // translators: %s: pattern title e.g: "Header".
41
- __( 'This is your %s pattern.' ),
44
+ __( 'This is the %s pattern.' ),
42
45
  getTitle()
43
46
  );
44
47
  }
@@ -46,7 +49,7 @@ export default function usePatternDetails( postType, postId ) {
46
49
  if ( ! descriptionText && postType === 'wp_block' && record?.title ) {
47
50
  descriptionText = sprintf(
48
51
  // translators: %s: user created pattern title e.g. "Footer".
49
- __( 'This is your %s pattern.' ),
52
+ __( 'This is the %s pattern.' ),
50
53
  record.title
51
54
  );
52
55
  }
@@ -7,11 +7,12 @@ import {
7
7
  Flex,
8
8
  Icon,
9
9
  Tooltip,
10
+ __experimentalHeading as Heading,
10
11
  } from '@wordpress/components';
11
12
  import { useViewportMatch } from '@wordpress/compose';
12
13
  import { useSelect } from '@wordpress/data';
13
14
  import { getTemplatePartIcon } from '@wordpress/editor';
14
- import { __ } from '@wordpress/i18n';
15
+ import { __, sprintf } from '@wordpress/i18n';
15
16
  import { getQueryArgs } from '@wordpress/url';
16
17
  import { file, starFilled, lockSmall } from '@wordpress/icons';
17
18
 
@@ -29,12 +30,72 @@ import usePatternCategories from './use-pattern-categories';
29
30
  import useMyPatterns from './use-my-patterns';
30
31
  import useTemplatePartAreas from './use-template-part-areas';
31
32
 
32
- const templatePartAreaLabels = {
33
- header: __( 'Headers' ),
34
- footer: __( 'Footers' ),
35
- sidebar: __( 'Sidebar' ),
36
- uncategorized: __( 'Uncategorized' ),
37
- };
33
+ function TemplatePartGroup( { areas, currentArea, currentType } ) {
34
+ return (
35
+ <>
36
+ <div className="edit-site-sidebar-navigation-screen-patterns__group-header">
37
+ <Heading level={ 2 }>{ __( 'Template parts' ) }</Heading>
38
+ </div>
39
+ <ItemGroup className="edit-site-sidebar-navigation-screen-patterns__group">
40
+ { Object.entries( areas ).map(
41
+ ( [ area, { label, templateParts } ] ) => (
42
+ <CategoryItem
43
+ key={ area }
44
+ count={ templateParts?.length }
45
+ icon={ getTemplatePartIcon( area ) }
46
+ label={ label }
47
+ id={ area }
48
+ type="wp_template_part"
49
+ isActive={
50
+ currentArea === area &&
51
+ currentType === 'wp_template_part'
52
+ }
53
+ />
54
+ )
55
+ ) }
56
+ </ItemGroup>
57
+ </>
58
+ );
59
+ }
60
+
61
+ function ThemePatternsGroup( { categories, currentCategory, currentType } ) {
62
+ return (
63
+ <>
64
+ <ItemGroup className="edit-site-sidebar-navigation-screen-patterns__group">
65
+ { categories.map( ( category ) => (
66
+ <CategoryItem
67
+ key={ category.name }
68
+ count={ category.count }
69
+ label={
70
+ <Flex justify="left" align="center" gap={ 0 }>
71
+ { category.label }
72
+ <Tooltip
73
+ position="top center"
74
+ text={ sprintf(
75
+ // translators: %s: The pattern category name.
76
+ '"%s" patterns cannot be edited.',
77
+ category.label
78
+ ) }
79
+ >
80
+ <span className="edit-site-sidebar-navigation-screen-pattern__lock-icon">
81
+ <Icon icon={ lockSmall } size={ 24 } />
82
+ </span>
83
+ </Tooltip>
84
+ </Flex>
85
+ }
86
+ icon={ file }
87
+ id={ category.name }
88
+ type="pattern"
89
+ isActive={
90
+ currentCategory === `${ category.name }` &&
91
+ currentType === 'pattern'
92
+ }
93
+ />
94
+ ) ) }
95
+ </ItemGroup>
96
+ </>
97
+ );
98
+ }
38
99
 
39
100
  export default function SidebarNavigationScreenPatterns() {
40
101
  const isMobileViewport = useViewportMatch( 'medium', '<' );
@@ -45,7 +106,7 @@ export default function SidebarNavigationScreenPatterns() {
45
106
  const { templatePartAreas, hasTemplateParts, isLoading } =
46
107
  useTemplatePartAreas();
47
108
  const { patternCategories, hasPatterns } = usePatternCategories();
48
- const { myPatterns, hasPatterns: hasMyPatterns } = useMyPatterns();
109
+ const { myPatterns } = useMyPatterns();
49
110
 
50
111
  const isTemplatePartsMode = useSelect( ( select ) => {
51
112
  const settings = select( editSiteStore ).getSettings();
@@ -55,9 +116,6 @@ export default function SidebarNavigationScreenPatterns() {
55
116
  const templatePartsLink = useLink( { path: '/wp_template_part/all' } );
56
117
  const footer = ! isMobileViewport ? (
57
118
  <ItemGroup>
58
- <SidebarNavigationItem withChevron { ...templatePartsLink }>
59
- { __( 'Manage all template parts' ) }
60
- </SidebarNavigationItem>
61
119
  <SidebarNavigationItem
62
120
  as="a"
63
121
  href="edit.php?post_type=wp_block"
@@ -65,6 +123,9 @@ export default function SidebarNavigationScreenPatterns() {
65
123
  >
66
124
  { __( 'Manage all of my patterns' ) }
67
125
  </SidebarNavigationItem>
126
+ <SidebarNavigationItem withChevron { ...templatePartsLink }>
127
+ { __( 'Manage all template parts' ) }
128
+ </SidebarNavigationItem>
68
129
  </ItemGroup>
69
130
  ) : undefined;
70
131
 
@@ -73,7 +134,7 @@ export default function SidebarNavigationScreenPatterns() {
73
134
  isRoot={ isTemplatePartsMode }
74
135
  title={ __( 'Patterns' ) }
75
136
  description={ __(
76
- 'Manage what patterns are available when editing your site.'
137
+ 'Manage what patterns are available when editing the site.'
77
138
  ) }
78
139
  actions={ <AddNewPattern /> }
79
140
  footer={ footer }
@@ -91,94 +152,38 @@ export default function SidebarNavigationScreenPatterns() {
91
152
  </Item>
92
153
  </ItemGroup>
93
154
  ) }
94
- { hasMyPatterns && (
95
- <ItemGroup className="edit-site-sidebar-navigation-screen-patterns__group">
96
- <CategoryItem
97
- key={ myPatterns.name }
98
- count={ myPatterns.count }
99
- label={ myPatterns.label }
100
- icon={ starFilled }
101
- id={ myPatterns.name }
102
- type="wp_block"
103
- isActive={
104
- currentCategory ===
105
- `${ myPatterns.name }` &&
106
- currentType === 'wp_block'
107
- }
108
- />
109
- </ItemGroup>
155
+ <ItemGroup className="edit-site-sidebar-navigation-screen-patterns__group">
156
+ <CategoryItem
157
+ key={ myPatterns.name }
158
+ count={
159
+ ! myPatterns.count
160
+ ? '0'
161
+ : myPatterns.count
162
+ }
163
+ label={ myPatterns.label }
164
+ icon={ starFilled }
165
+ id={ myPatterns.name }
166
+ type="wp_block"
167
+ isActive={
168
+ currentCategory ===
169
+ `${ myPatterns.name }` &&
170
+ currentType === 'wp_block'
171
+ }
172
+ />
173
+ </ItemGroup>
174
+ { hasPatterns && (
175
+ <ThemePatternsGroup
176
+ categories={ patternCategories }
177
+ currentCategory={ currentCategory }
178
+ currentType={ currentType }
179
+ />
110
180
  ) }
111
181
  { hasTemplateParts && (
112
- <ItemGroup className="edit-site-sidebar-navigation-screen-patterns__group">
113
- { Object.entries( templatePartAreas ).map(
114
- ( [ area, parts ] ) => (
115
- <CategoryItem
116
- key={ area }
117
- count={ parts.length }
118
- icon={ getTemplatePartIcon(
119
- area
120
- ) }
121
- label={
122
- templatePartAreaLabels[
123
- area
124
- ]
125
- }
126
- id={ area }
127
- type="wp_template_part"
128
- isActive={
129
- currentCategory === area &&
130
- currentType ===
131
- 'wp_template_part'
132
- }
133
- />
134
- )
135
- ) }
136
- </ItemGroup>
137
- ) }
138
- { hasPatterns && (
139
- <ItemGroup className="edit-site-sidebar-navigation-screen-patterns__group">
140
- { patternCategories.map( ( category ) => (
141
- <CategoryItem
142
- key={ category.name }
143
- count={ category.count }
144
- label={
145
- <Flex
146
- justify="left"
147
- align="center"
148
- gap={ 0 }
149
- >
150
- { category.label }
151
- <Tooltip
152
- position="top center"
153
- text={ __(
154
- 'Theme patterns cannot be edited.'
155
- ) }
156
- >
157
- <span className="edit-site-sidebar-navigation-screen-pattern__lock-icon">
158
- <Icon
159
- style={ {
160
- fill: 'currentcolor',
161
- } }
162
- icon={
163
- lockSmall
164
- }
165
- size={ 24 }
166
- />
167
- </span>
168
- </Tooltip>
169
- </Flex>
170
- }
171
- icon={ file }
172
- id={ category.name }
173
- type="pattern"
174
- isActive={
175
- currentCategory ===
176
- `${ category.name }` &&
177
- currentType === 'pattern'
178
- }
179
- />
180
- ) ) }
181
- </ItemGroup>
182
+ <TemplatePartGroup
183
+ areas={ templatePartAreas }
184
+ currentArea={ currentCategory }
185
+ currentType={ currentType }
186
+ />
182
187
  ) }
183
188
  </>
184
189
  ) }
@@ -1,3 +1,23 @@
1
1
  .edit-site-sidebar-navigation-screen-patterns__group {
2
2
  margin-bottom: $grid-unit-30;
3
+
4
+ &:last-of-type {
5
+ border-bottom: 0;
6
+ padding-bottom: 0;
7
+ margin-bottom: 0;
8
+ }
9
+ }
10
+
11
+ .edit-site-sidebar-navigation-screen-patterns__group-header {
12
+ margin-top: $grid-unit-20;
13
+
14
+ p {
15
+ color: $gray-600;
16
+ }
17
+
18
+ h2 {
19
+ font-size: 11px;
20
+ font-weight: 500;
21
+ text-transform: uppercase;
22
+ }
3
23
  }
@@ -6,18 +6,19 @@ import { useSelect } from '@wordpress/data';
6
6
  import { __ } from '@wordpress/i18n';
7
7
 
8
8
  export default function useMyPatterns() {
9
- const myPatterns = useSelect( ( select ) =>
10
- select( coreStore ).getEntityRecords( 'postType', 'wp_block', {
11
- per_page: -1,
12
- } )
9
+ const myPatternsCount = useSelect(
10
+ ( select ) =>
11
+ select( coreStore ).getEntityRecords( 'postType', 'wp_block', {
12
+ per_page: -1,
13
+ } )?.length ?? 0
13
14
  );
14
15
 
15
16
  return {
16
17
  myPatterns: {
17
- count: myPatterns?.length || 0,
18
+ count: myPatternsCount,
18
19
  name: 'my-patterns',
19
20
  label: __( 'My patterns' ),
20
21
  },
21
- hasPatterns: !! myPatterns?.length,
22
+ hasPatterns: myPatternsCount > 0,
22
23
  };
23
24
  }
@@ -2,6 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useMemo } from '@wordpress/element';
5
+ import { __ } from '@wordpress/i18n';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -11,6 +12,10 @@ import useThemePatterns from './use-theme-patterns';
11
12
 
12
13
  export default function usePatternCategories() {
13
14
  const defaultCategories = useDefaultPatternCategories();
15
+ defaultCategories.push( {
16
+ name: 'uncategorized',
17
+ label: __( 'Uncategorized' ),
18
+ } );
14
19
  const themePatterns = useThemePatterns();
15
20
 
16
21
  const patternCategories = useMemo( () => {
@@ -31,6 +36,10 @@ export default function usePatternCategories() {
31
36
  categoryMap[ category ].count += 1;
32
37
  }
33
38
  } );
39
+ // If the pattern has no categories, add it to uncategorized.
40
+ if ( ! pattern.categories?.length ) {
41
+ categoryMap.uncategorized.count += 1;
42
+ }
34
43
  } );
35
44
 
36
45
  // Filter categories so we only have those containing patterns.
@@ -2,19 +2,41 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useEntityRecords } from '@wordpress/core-data';
5
+ import { useSelect } from '@wordpress/data';
6
+ import { store as editorStore } from '@wordpress/editor';
5
7
 
6
- const getTemplatePartAreas = ( items ) => {
8
+ const useTemplatePartsGroupedByArea = ( items ) => {
7
9
  const allItems = items || [];
8
10
 
9
- const groupedByArea = allItems.reduce(
10
- ( accumulator, item ) => {
11
- const key = accumulator[ item.area ] ? item.area : 'uncategorized';
12
- accumulator[ key ].push( item );
13
- return accumulator;
14
- },
15
- { header: [], footer: [], sidebar: [], uncategorized: [] }
11
+ const templatePartAreas = useSelect(
12
+ ( select ) =>
13
+ select( editorStore ).__experimentalGetDefaultTemplatePartAreas(),
14
+ []
16
15
  );
17
16
 
17
+ // Create map of template areas ensuring that default areas are displayed before
18
+ // any custom registered template part areas.
19
+ const knownAreas = {
20
+ header: {},
21
+ footer: {},
22
+ sidebar: {},
23
+ uncategorized: {},
24
+ };
25
+
26
+ templatePartAreas.forEach(
27
+ ( templatePartArea ) =>
28
+ ( knownAreas[ templatePartArea.area ] = {
29
+ ...templatePartArea,
30
+ templateParts: [],
31
+ } )
32
+ );
33
+
34
+ const groupedByArea = allItems.reduce( ( accumulator, item ) => {
35
+ const key = accumulator[ item.area ] ? item.area : 'uncategorized';
36
+ accumulator[ key ].templateParts.push( item );
37
+ return accumulator;
38
+ }, knownAreas );
39
+
18
40
  return groupedByArea;
19
41
  };
20
42
 
@@ -28,6 +50,6 @@ export default function useTemplatePartAreas() {
28
50
  return {
29
51
  hasTemplateParts: templateParts ? !! templateParts.length : false,
30
52
  isLoading,
31
- templatePartAreas: getTemplatePartAreas( templateParts ),
53
+ templatePartAreas: useTemplatePartsGroupedByArea( templateParts ),
32
54
  };
33
55
  }
@@ -36,7 +36,8 @@ export default function useThemePatterns() {
36
36
  ( pattern ) =>
37
37
  ! CORE_PATTERN_SOURCES.includes( pattern.source )
38
38
  )
39
- .filter( filterOutDuplicatesByName ),
39
+ .filter( filterOutDuplicatesByName )
40
+ .filter( ( pattern ) => pattern.inserter !== false ),
40
41
  [ blockPatterns, restBlockPatterns ]
41
42
  );
42
43