@wordpress/edit-site 5.18.0 → 5.19.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 (427) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +62 -1
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-template/index.js +3 -2
  5. package/build/components/add-new-template/index.js.map +1 -1
  6. package/build/components/add-new-template/new-template.js +6 -1
  7. package/build/components/add-new-template/new-template.js.map +1 -1
  8. package/build/components/add-new-template/utils.js +6 -1
  9. package/build/components/add-new-template/utils.js.map +1 -1
  10. package/build/components/app/index.js +2 -7
  11. package/build/components/app/index.js.map +1 -1
  12. package/build/components/block-editor/back-button.js +3 -2
  13. package/build/components/block-editor/back-button.js.map +1 -1
  14. package/build/components/block-editor/editor-canvas.js +20 -16
  15. package/build/components/block-editor/editor-canvas.js.map +1 -1
  16. package/build/components/block-editor/site-editor-canvas.js +1 -3
  17. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  18. package/build/components/block-editor/use-site-editor-settings.js +8 -4
  19. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  20. package/build/components/canvas-loader/index.js +18 -1
  21. package/build/components/canvas-loader/index.js.map +1 -1
  22. package/build/components/editor/index.js +3 -8
  23. package/build/components/editor/index.js.map +1 -1
  24. package/build/components/global-styles/dimensions-panel.js +5 -4
  25. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  26. package/build/components/global-styles/font-families.js +68 -0
  27. package/build/components/global-styles/font-families.js.map +1 -0
  28. package/build/components/global-styles/font-family-item.js +47 -0
  29. package/build/components/global-styles/font-family-item.js.map +1 -0
  30. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js +31 -0
  31. package/build/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
  32. package/build/components/global-styles/font-library-modal/context.js +285 -0
  33. package/build/components/global-styles/font-library-modal/context.js.map +1 -0
  34. package/build/components/global-styles/font-library-modal/font-card.js +58 -0
  35. package/build/components/global-styles/font-library-modal/font-card.js.map +1 -0
  36. package/build/components/global-styles/font-library-modal/font-demo.js +69 -0
  37. package/build/components/global-styles/font-library-modal/font-demo.js.map +1 -0
  38. package/build/components/global-styles/font-library-modal/font-variant.js +51 -0
  39. package/build/components/global-styles/font-library-modal/font-variant.js.map +1 -0
  40. package/build/components/global-styles/font-library-modal/fonts-grid.js +54 -0
  41. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
  42. package/build/components/global-styles/font-library-modal/index.js +47 -0
  43. package/build/components/global-styles/font-library-modal/index.js.map +1 -0
  44. package/build/components/global-styles/font-library-modal/installed-fonts.js +128 -0
  45. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
  46. package/build/components/global-styles/font-library-modal/library-font-card.js +44 -0
  47. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
  48. package/build/components/global-styles/font-library-modal/library-font-details.js +43 -0
  49. package/build/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
  50. package/build/components/global-styles/font-library-modal/library-font-variant.js +59 -0
  51. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
  52. package/build/components/global-styles/font-library-modal/local-fonts.js +143 -0
  53. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
  54. package/build/components/global-styles/font-library-modal/resolvers.js +37 -0
  55. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -0
  56. package/build/components/global-styles/font-library-modal/tab-layout.js +45 -0
  57. package/build/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
  58. package/build/components/global-styles/font-library-modal/utils/constants.js +37 -0
  59. package/build/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
  60. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
  61. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
  62. package/build/components/global-styles/font-library-modal/utils/index.js +205 -0
  63. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -0
  64. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js +22 -0
  65. package/build/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
  66. package/build/components/global-styles/font-library-modal/utils/toggleFont.js +92 -0
  67. package/build/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
  68. package/build/components/global-styles/global-styles-provider.js +7 -12
  69. package/build/components/global-styles/global-styles-provider.js.map +1 -1
  70. package/build/components/global-styles/screen-block.js +34 -21
  71. package/build/components/global-styles/screen-block.js.map +1 -1
  72. package/build/components/global-styles/screen-revisions/index.js +1 -3
  73. package/build/components/global-styles/screen-revisions/index.js.map +1 -1
  74. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  75. package/build/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  76. package/build/components/global-styles/screen-typography.js +4 -72
  77. package/build/components/global-styles/screen-typography.js.map +1 -1
  78. package/build/components/global-styles/style-variations-container.js +3 -5
  79. package/build/components/global-styles/style-variations-container.js.map +1 -1
  80. package/build/components/global-styles/typogrphy-elements.js +96 -0
  81. package/build/components/global-styles/typogrphy-elements.js.map +1 -0
  82. package/build/components/page-patterns/duplicate-menu-item.js +52 -16
  83. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -1
  84. package/build/components/page-patterns/grid-item.js +46 -20
  85. package/build/components/page-patterns/grid-item.js.map +1 -1
  86. package/build/components/page-patterns/header.js +3 -7
  87. package/build/components/page-patterns/header.js.map +1 -1
  88. package/build/components/page-patterns/index.js +3 -3
  89. package/build/components/page-patterns/index.js.map +1 -1
  90. package/build/components/page-patterns/patterns-list.js +7 -7
  91. package/build/components/page-patterns/patterns-list.js.map +1 -1
  92. package/build/components/page-patterns/rename-menu-item.js +6 -5
  93. package/build/components/page-patterns/rename-menu-item.js.map +1 -1
  94. package/build/components/page-patterns/search-items.js +8 -2
  95. package/build/components/page-patterns/search-items.js.map +1 -1
  96. package/build/components/page-patterns/use-patterns.js +53 -27
  97. package/build/components/page-patterns/use-patterns.js.map +1 -1
  98. package/build/components/page-patterns/utils.js +1 -20
  99. package/build/components/page-patterns/utils.js.map +1 -1
  100. package/build/components/sidebar-edit-mode/page-panels/edit-template.js +33 -24
  101. package/build/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  102. package/build/components/sidebar-edit-mode/page-panels/hooks.js +64 -0
  103. package/build/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
  104. package/build/components/sidebar-edit-mode/page-panels/index.js +1 -4
  105. package/build/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  106. package/build/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
  107. package/build/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  108. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js +56 -0
  109. package/build/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
  110. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js +91 -0
  111. package/build/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
  112. package/build/components/sidebar-edit-mode/template-panel/index.js +11 -9
  113. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  114. package/build/components/sidebar-edit-mode/template-panel/last-revision.js +6 -4
  115. package/build/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  116. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js +211 -0
  117. package/build/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
  118. package/build/components/sidebar-navigation-screen/index.js +6 -4
  119. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  120. package/build/components/sidebar-navigation-screen-details-footer/index.js +32 -4
  121. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  122. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
  123. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
  124. package/build/components/sidebar-navigation-screen-global-styles/index.js +4 -31
  125. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  126. package/build/components/sidebar-navigation-screen-page/index.js +3 -3
  127. package/build/components/sidebar-navigation-screen-page/index.js.map +1 -1
  128. package/build/components/sidebar-navigation-screen-pattern/index.js +18 -8
  129. package/build/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  130. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
  131. package/build/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  132. package/build/components/sidebar-navigation-screen-patterns/index.js +7 -35
  133. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  134. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
  135. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  136. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +2 -1
  137. package/build/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  138. package/build/components/sidebar-navigation-screen-template/index.js +2 -2
  139. package/build/components/sidebar-navigation-screen-template/index.js.map +1 -1
  140. package/build/components/sidebar-navigation-screen-templates/index.js +1 -1
  141. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  142. package/build/components/template-actions/index.js +7 -4
  143. package/build/components/template-actions/index.js.map +1 -1
  144. package/build/components/template-actions/rename-menu-item.js +3 -2
  145. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  146. package/build/components/welcome-guide/styles.js +2 -2
  147. package/build/components/welcome-guide/styles.js.map +1 -1
  148. package/build/hooks/push-changes-to-global-styles/index.js +5 -37
  149. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  150. package/build/store/actions.js +29 -6
  151. package/build/store/actions.js.map +1 -1
  152. package/build/utils/constants.js +45 -2
  153. package/build/utils/constants.js.map +1 -1
  154. package/build/utils/is-template-removable.js +6 -1
  155. package/build/utils/is-template-removable.js.map +1 -1
  156. package/build/utils/is-template-revertable.js +6 -1
  157. package/build/utils/is-template-revertable.js.map +1 -1
  158. package/build-module/components/add-new-pattern/index.js +66 -5
  159. package/build-module/components/add-new-pattern/index.js.map +1 -1
  160. package/build-module/components/add-new-template/index.js +3 -2
  161. package/build-module/components/add-new-template/index.js.map +1 -1
  162. package/build-module/components/add-new-template/new-template.js +6 -1
  163. package/build-module/components/add-new-template/new-template.js.map +1 -1
  164. package/build-module/components/add-new-template/utils.js +6 -1
  165. package/build-module/components/add-new-template/utils.js.map +1 -1
  166. package/build-module/components/app/index.js +2 -7
  167. package/build-module/components/app/index.js.map +1 -1
  168. package/build-module/components/block-editor/back-button.js +3 -2
  169. package/build-module/components/block-editor/back-button.js.map +1 -1
  170. package/build-module/components/block-editor/editor-canvas.js +21 -17
  171. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  172. package/build-module/components/block-editor/site-editor-canvas.js +3 -5
  173. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  174. package/build-module/components/block-editor/use-site-editor-settings.js +8 -4
  175. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  176. package/build-module/components/canvas-loader/index.js +18 -1
  177. package/build-module/components/canvas-loader/index.js.map +1 -1
  178. package/build-module/components/editor/index.js +3 -8
  179. package/build-module/components/editor/index.js.map +1 -1
  180. package/build-module/components/global-styles/dimensions-panel.js +5 -4
  181. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  182. package/build-module/components/global-styles/font-families.js +58 -0
  183. package/build-module/components/global-styles/font-families.js.map +1 -0
  184. package/build-module/components/global-styles/font-family-item.js +40 -0
  185. package/build-module/components/global-styles/font-family-item.js.map +1 -0
  186. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js +23 -0
  187. package/build-module/components/global-styles/font-library-modal/confirm-delete-dialog.js.map +1 -0
  188. package/build-module/components/global-styles/font-library-modal/context.js +276 -0
  189. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -0
  190. package/build-module/components/global-styles/font-library-modal/font-card.js +49 -0
  191. package/build-module/components/global-styles/font-library-modal/font-card.js.map +1 -0
  192. package/build-module/components/global-styles/font-library-modal/font-demo.js +62 -0
  193. package/build-module/components/global-styles/font-library-modal/font-demo.js.map +1 -0
  194. package/build-module/components/global-styles/font-library-modal/font-variant.js +42 -0
  195. package/build-module/components/global-styles/font-library-modal/font-variant.js.map +1 -0
  196. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +47 -0
  197. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -0
  198. package/build-module/components/global-styles/font-library-modal/index.js +38 -0
  199. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -0
  200. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +120 -0
  201. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -0
  202. package/build-module/components/global-styles/font-library-modal/library-font-card.js +36 -0
  203. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -0
  204. package/build-module/components/global-styles/font-library-modal/library-font-details.js +34 -0
  205. package/build-module/components/global-styles/font-library-modal/library-font-details.js.map +1 -0
  206. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +50 -0
  207. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -0
  208. package/build-module/components/global-styles/font-library-modal/local-fonts.js +135 -0
  209. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -0
  210. package/build-module/components/global-styles/font-library-modal/resolvers.js +28 -0
  211. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -0
  212. package/build-module/components/global-styles/font-library-modal/tab-layout.js +37 -0
  213. package/build-module/components/global-styles/font-library-modal/tab-layout.js.map +1 -0
  214. package/build-module/components/global-styles/font-library-modal/utils/constants.js +26 -0
  215. package/build-module/components/global-styles/font-library-modal/utils/constants.js.map +1 -0
  216. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +52 -0
  217. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +1 -0
  218. package/build-module/components/global-styles/font-library-modal/utils/index.js +190 -0
  219. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -0
  220. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js +16 -0
  221. package/build-module/components/global-styles/font-library-modal/utils/make-families-from-faces.js.map +1 -0
  222. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js +86 -0
  223. package/build-module/components/global-styles/font-library-modal/utils/toggleFont.js.map +1 -0
  224. package/build-module/components/global-styles/global-styles-provider.js +7 -12
  225. package/build-module/components/global-styles/global-styles-provider.js.map +1 -1
  226. package/build-module/components/global-styles/screen-block.js +34 -21
  227. package/build-module/components/global-styles/screen-block.js.map +1 -1
  228. package/build-module/components/global-styles/screen-revisions/index.js +1 -3
  229. package/build-module/components/global-styles/screen-revisions/index.js.map +1 -1
  230. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  231. package/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js.map +1 -1
  232. package/build-module/components/global-styles/screen-typography.js +6 -74
  233. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  234. package/build-module/components/global-styles/style-variations-container.js +3 -5
  235. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  236. package/build-module/components/global-styles/typogrphy-elements.js +87 -0
  237. package/build-module/components/global-styles/typogrphy-elements.js.map +1 -0
  238. package/build-module/components/page-patterns/duplicate-menu-item.js +51 -16
  239. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -1
  240. package/build-module/components/page-patterns/grid-item.js +47 -21
  241. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  242. package/build-module/components/page-patterns/header.js +3 -7
  243. package/build-module/components/page-patterns/header.js.map +1 -1
  244. package/build-module/components/page-patterns/index.js +3 -3
  245. package/build-module/components/page-patterns/index.js.map +1 -1
  246. package/build-module/components/page-patterns/patterns-list.js +7 -7
  247. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  248. package/build-module/components/page-patterns/rename-menu-item.js +6 -5
  249. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -1
  250. package/build-module/components/page-patterns/search-items.js +8 -2
  251. package/build-module/components/page-patterns/search-items.js.map +1 -1
  252. package/build-module/components/page-patterns/use-patterns.js +54 -28
  253. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  254. package/build-module/components/page-patterns/utils.js +0 -11
  255. package/build-module/components/page-patterns/utils.js.map +1 -1
  256. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js +34 -27
  257. package/build-module/components/sidebar-edit-mode/page-panels/edit-template.js.map +1 -1
  258. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js +54 -0
  259. package/build-module/components/sidebar-edit-mode/page-panels/hooks.js.map +1 -0
  260. package/build-module/components/sidebar-edit-mode/page-panels/index.js +1 -4
  261. package/build-module/components/sidebar-edit-mode/page-panels/index.js.map +1 -1
  262. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js +2 -1
  263. package/build-module/components/sidebar-edit-mode/page-panels/page-summary.js.map +1 -1
  264. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js +49 -0
  265. package/build-module/components/sidebar-edit-mode/page-panels/reset-default-template.js.map +1 -0
  266. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js +85 -0
  267. package/build-module/components/sidebar-edit-mode/page-panels/swap-template-button.js.map +1 -0
  268. package/build-module/components/sidebar-edit-mode/template-panel/index.js +12 -10
  269. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  270. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js +8 -6
  271. package/build-module/components/sidebar-edit-mode/template-panel/last-revision.js.map +1 -1
  272. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js +202 -0
  273. package/build-module/components/sidebar-edit-mode/template-panel/pattern-categories.js.map +1 -0
  274. package/build-module/components/sidebar-navigation-screen/index.js +6 -4
  275. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  276. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +32 -5
  277. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  278. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +4 -2
  279. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +1 -1
  280. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -33
  281. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  282. package/build-module/components/sidebar-navigation-screen-page/index.js +3 -3
  283. package/build-module/components/sidebar-navigation-screen-page/index.js.map +1 -1
  284. package/build-module/components/sidebar-navigation-screen-pattern/index.js +19 -9
  285. package/build-module/components/sidebar-navigation-screen-pattern/index.js.map +1 -1
  286. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js +34 -5
  287. package/build-module/components/sidebar-navigation-screen-pattern/use-pattern-details.js.map +1 -1
  288. package/build-module/components/sidebar-navigation-screen-patterns/index.js +10 -38
  289. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  290. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +38 -4
  291. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  292. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -2
  293. package/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.js.map +1 -1
  294. package/build-module/components/sidebar-navigation-screen-template/index.js +2 -2
  295. package/build-module/components/sidebar-navigation-screen-template/index.js.map +1 -1
  296. package/build-module/components/sidebar-navigation-screen-templates/index.js +1 -1
  297. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  298. package/build-module/components/template-actions/index.js +7 -4
  299. package/build-module/components/template-actions/index.js.map +1 -1
  300. package/build-module/components/template-actions/rename-menu-item.js +3 -2
  301. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  302. package/build-module/components/welcome-guide/styles.js +2 -2
  303. package/build-module/components/welcome-guide/styles.js.map +1 -1
  304. package/build-module/hooks/push-changes-to-global-styles/index.js +5 -37
  305. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  306. package/build-module/store/actions.js +30 -7
  307. package/build-module/store/actions.js.map +1 -1
  308. package/build-module/utils/constants.js +35 -1
  309. package/build-module/utils/constants.js.map +1 -1
  310. package/build-module/utils/is-template-removable.js +6 -1
  311. package/build-module/utils/is-template-removable.js.map +1 -1
  312. package/build-module/utils/is-template-revertable.js +6 -1
  313. package/build-module/utils/is-template-revertable.js.map +1 -1
  314. package/build-style/style-rtl.css +244 -37
  315. package/build-style/style.css +244 -37
  316. package/lib/inflate.js +4082 -0
  317. package/lib/lib-font.browser.js +3831 -0
  318. package/lib/unbrotli.js +2679 -0
  319. package/package.json +40 -40
  320. package/src/components/add-new-pattern/index.js +83 -5
  321. package/src/components/add-new-template/index.js +3 -2
  322. package/src/components/add-new-template/new-template.js +6 -1
  323. package/src/components/add-new-template/utils.js +12 -3
  324. package/src/components/app/index.js +9 -12
  325. package/src/components/block-editor/back-button.js +6 -2
  326. package/src/components/block-editor/editor-canvas.js +31 -19
  327. package/src/components/block-editor/site-editor-canvas.js +2 -10
  328. package/src/components/block-editor/style.scss +88 -1
  329. package/src/components/block-editor/use-site-editor-settings.js +26 -19
  330. package/src/components/canvas-loader/index.js +12 -1
  331. package/src/components/canvas-loader/style.scss +1 -1
  332. package/src/components/editor/index.js +3 -8
  333. package/src/components/global-styles/dimensions-panel.js +8 -4
  334. package/src/components/global-styles/font-families.js +71 -0
  335. package/src/components/global-styles/font-family-item.js +44 -0
  336. package/src/components/global-styles/font-library-modal/confirm-delete-dialog.js +33 -0
  337. package/src/components/global-styles/font-library-modal/context.js +347 -0
  338. package/src/components/global-styles/font-library-modal/font-card.js +70 -0
  339. package/src/components/global-styles/font-library-modal/font-demo.js +57 -0
  340. package/src/components/global-styles/font-library-modal/font-variant.js +53 -0
  341. package/src/components/global-styles/font-library-modal/fonts-grid.js +55 -0
  342. package/src/components/global-styles/font-library-modal/index.js +42 -0
  343. package/src/components/global-styles/font-library-modal/installed-fonts.js +174 -0
  344. package/src/components/global-styles/font-library-modal/library-font-card.js +40 -0
  345. package/src/components/global-styles/font-library-modal/library-font-details.js +46 -0
  346. package/src/components/global-styles/font-library-modal/library-font-variant.js +54 -0
  347. package/src/components/global-styles/font-library-modal/local-fonts.js +160 -0
  348. package/src/components/global-styles/font-library-modal/resolvers.js +29 -0
  349. package/src/components/global-styles/font-library-modal/style.scss +113 -0
  350. package/src/components/global-styles/font-library-modal/tab-layout.js +50 -0
  351. package/src/components/global-styles/font-library-modal/utils/constants.js +31 -0
  352. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +58 -0
  353. package/src/components/global-styles/font-library-modal/utils/index.js +213 -0
  354. package/src/components/global-styles/font-library-modal/utils/make-families-from-faces.js +15 -0
  355. package/src/components/global-styles/font-library-modal/utils/test/getDisplaySrcFromFontFace.spec.js +53 -0
  356. package/src/components/global-styles/font-library-modal/utils/test/getFontFaceVariantName.spec.js +30 -0
  357. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +240 -0
  358. package/src/components/global-styles/font-library-modal/utils/test/getPreviewStyle.spec.js +121 -0
  359. package/src/components/global-styles/font-library-modal/utils/test/isUrlEncoded.spec.js +31 -0
  360. package/src/components/global-styles/font-library-modal/utils/test/makeFamiliesFromFaces.spec.js +57 -0
  361. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamilies.spec.js +62 -0
  362. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFaces.spec.js +56 -0
  363. package/src/components/global-styles/font-library-modal/utils/test/mergeFontFamilies.spec.js +108 -0
  364. package/src/components/global-styles/font-library-modal/utils/test/setUIValuesNeeded.spec.js +41 -0
  365. package/src/components/global-styles/font-library-modal/utils/test/toggleFont.spec.js +141 -0
  366. package/src/components/global-styles/font-library-modal/utils/toggleFont.js +90 -0
  367. package/src/components/global-styles/global-styles-provider.js +2 -7
  368. package/src/components/global-styles/screen-block.js +42 -20
  369. package/src/components/global-styles/screen-revisions/index.js +0 -2
  370. package/src/components/global-styles/screen-revisions/use-global-styles-revisions.js +0 -1
  371. package/src/components/global-styles/screen-typography.js +7 -95
  372. package/src/components/global-styles/style-variations-container.js +0 -2
  373. package/src/components/global-styles/typogrphy-elements.js +110 -0
  374. package/src/components/list/style.scss +2 -0
  375. package/src/components/page-patterns/duplicate-menu-item.js +63 -20
  376. package/src/components/page-patterns/grid-item.js +77 -30
  377. package/src/components/page-patterns/header.js +3 -12
  378. package/src/components/page-patterns/index.js +3 -3
  379. package/src/components/page-patterns/patterns-list.js +7 -7
  380. package/src/components/page-patterns/rename-menu-item.js +18 -7
  381. package/src/components/page-patterns/search-items.js +14 -2
  382. package/src/components/page-patterns/style.scss +1 -5
  383. package/src/components/page-patterns/use-patterns.js +67 -33
  384. package/src/components/page-patterns/utils.js +0 -19
  385. package/src/components/sidebar-edit-mode/page-panels/edit-template.js +47 -33
  386. package/src/components/sidebar-edit-mode/page-panels/hooks.js +83 -0
  387. package/src/components/sidebar-edit-mode/page-panels/index.js +0 -4
  388. package/src/components/sidebar-edit-mode/page-panels/page-summary.js +2 -0
  389. package/src/components/sidebar-edit-mode/page-panels/reset-default-template.js +44 -0
  390. package/src/components/sidebar-edit-mode/page-panels/style.scss +41 -10
  391. package/src/components/sidebar-edit-mode/page-panels/swap-template-button.js +82 -0
  392. package/src/components/sidebar-edit-mode/template-panel/index.js +28 -24
  393. package/src/components/sidebar-edit-mode/template-panel/last-revision.js +19 -15
  394. package/src/components/sidebar-edit-mode/template-panel/pattern-categories.js +270 -0
  395. package/src/components/sidebar-navigation-screen/index.js +4 -9
  396. package/src/components/sidebar-navigation-screen/style.scss +7 -1
  397. package/src/components/sidebar-navigation-screen-details-footer/index.js +38 -10
  398. package/src/components/sidebar-navigation-screen-details-footer/style.scss +10 -3
  399. package/src/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +2 -0
  400. package/src/components/sidebar-navigation-screen-global-styles/index.js +6 -44
  401. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +0 -4
  402. package/src/components/sidebar-navigation-screen-page/index.js +3 -3
  403. package/src/components/sidebar-navigation-screen-pattern/index.js +20 -7
  404. package/src/components/sidebar-navigation-screen-pattern/style.scss +0 -3
  405. package/src/components/sidebar-navigation-screen-pattern/use-pattern-details.js +46 -13
  406. package/src/components/sidebar-navigation-screen-patterns/index.js +14 -49
  407. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +48 -6
  408. package/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js +3 -5
  409. package/src/components/sidebar-navigation-screen-template/index.js +2 -4
  410. package/src/components/sidebar-navigation-screen-templates/index.js +1 -1
  411. package/src/components/template-actions/index.js +14 -8
  412. package/src/components/template-actions/rename-menu-item.js +15 -4
  413. package/src/components/welcome-guide/styles.js +2 -2
  414. package/src/hooks/push-changes-to-global-styles/index.js +6 -49
  415. package/src/store/actions.js +39 -13
  416. package/src/store/test/actions.js +0 -1
  417. package/src/store/test/reducer.js +0 -1
  418. package/src/style.scss +1 -1
  419. package/src/utils/constants.js +38 -3
  420. package/src/utils/is-template-removable.js +8 -1
  421. package/src/utils/is-template-revertable.js +8 -1
  422. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -30
  423. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
  424. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -23
  425. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +0 -1
  426. package/src/components/sidebar-navigation-screen-global-styles/style.scss +0 -12
  427. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +0 -24
@@ -0,0 +1,87 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __, sprintf } from '@wordpress/i18n';
6
+ import { __experimentalItemGroup as ItemGroup, __experimentalVStack as VStack, __experimentalHStack as HStack, FlexItem } from '@wordpress/components';
7
+ import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { NavigationButtonAsItem } from './navigation-button';
13
+ import Subtitle from './subtitle';
14
+ import { unlock } from '../../lock-unlock';
15
+ const {
16
+ useGlobalStyle
17
+ } = unlock(blockEditorPrivateApis);
18
+ function ElementItem({
19
+ parentMenu,
20
+ element,
21
+ label
22
+ }) {
23
+ const prefix = element === 'text' || !element ? '' : `elements.${element}.`;
24
+ const extraStyles = element === 'link' ? {
25
+ textDecoration: 'underline'
26
+ } : {};
27
+ const [fontFamily] = useGlobalStyle(prefix + 'typography.fontFamily');
28
+ const [fontStyle] = useGlobalStyle(prefix + 'typography.fontStyle');
29
+ const [fontWeight] = useGlobalStyle(prefix + 'typography.fontWeight');
30
+ const [letterSpacing] = useGlobalStyle(prefix + 'typography.letterSpacing');
31
+ const [backgroundColor] = useGlobalStyle(prefix + 'color.background');
32
+ const [gradientValue] = useGlobalStyle(prefix + 'color.gradient');
33
+ const [color] = useGlobalStyle(prefix + 'color.text');
34
+ const navigationButtonLabel = sprintf(
35
+ // translators: %s: is a subset of Typography, e.g., 'text' or 'links'.
36
+ __('Typography %s styles'), label);
37
+ return createElement(NavigationButtonAsItem, {
38
+ path: parentMenu + '/typography/' + element,
39
+ "aria-label": navigationButtonLabel
40
+ }, createElement(HStack, {
41
+ justify: "flex-start"
42
+ }, createElement(FlexItem, {
43
+ className: "edit-site-global-styles-screen-typography__indicator",
44
+ style: {
45
+ fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif',
46
+ background: gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor,
47
+ color,
48
+ fontStyle,
49
+ fontWeight,
50
+ letterSpacing,
51
+ ...extraStyles
52
+ }
53
+ }, __('Aa')), createElement(FlexItem, null, label)));
54
+ }
55
+ function TypographyElements() {
56
+ const parentMenu = '';
57
+ return createElement(VStack, {
58
+ spacing: 3
59
+ }, createElement(Subtitle, {
60
+ level: 3
61
+ }, __('Elements')), createElement(ItemGroup, {
62
+ isBordered: true,
63
+ isSeparated: true
64
+ }, createElement(ElementItem, {
65
+ parentMenu: parentMenu,
66
+ element: "text",
67
+ label: __('Text')
68
+ }), createElement(ElementItem, {
69
+ parentMenu: parentMenu,
70
+ element: "link",
71
+ label: __('Links')
72
+ }), createElement(ElementItem, {
73
+ parentMenu: parentMenu,
74
+ element: "heading",
75
+ label: __('Headings')
76
+ }), createElement(ElementItem, {
77
+ parentMenu: parentMenu,
78
+ element: "caption",
79
+ label: __('Captions')
80
+ }), createElement(ElementItem, {
81
+ parentMenu: parentMenu,
82
+ element: "button",
83
+ label: __('Buttons')
84
+ })));
85
+ }
86
+ export default TypographyElements;
87
+ //# sourceMappingURL=typogrphy-elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","sprintf","__experimentalItemGroup","ItemGroup","__experimentalVStack","VStack","__experimentalHStack","HStack","FlexItem","privateApis","blockEditorPrivateApis","NavigationButtonAsItem","Subtitle","unlock","useGlobalStyle","ElementItem","parentMenu","element","label","prefix","extraStyles","textDecoration","fontFamily","fontStyle","fontWeight","letterSpacing","backgroundColor","gradientValue","color","navigationButtonLabel","createElement","path","justify","className","style","background","TypographyElements","spacing","level","isBordered","isSeparated"],"sources":["@wordpress/edit-site/src/components/global-styles/typogrphy-elements.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tFlexItem,\n} from '@wordpress/components';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { NavigationButtonAsItem } from './navigation-button';\nimport Subtitle from './subtitle';\n\nimport { unlock } from '../../lock-unlock';\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nfunction ElementItem( { parentMenu, element, label } ) {\n\tconst prefix =\n\t\telement === 'text' || ! element ? '' : `elements.${ element }.`;\n\tconst extraStyles =\n\t\telement === 'link'\n\t\t\t? {\n\t\t\t\t\ttextDecoration: 'underline',\n\t\t\t }\n\t\t\t: {};\n\tconst [ fontFamily ] = useGlobalStyle( prefix + 'typography.fontFamily' );\n\tconst [ fontStyle ] = useGlobalStyle( prefix + 'typography.fontStyle' );\n\tconst [ fontWeight ] = useGlobalStyle( prefix + 'typography.fontWeight' );\n\tconst [ letterSpacing ] = useGlobalStyle(\n\t\tprefix + 'typography.letterSpacing'\n\t);\n\tconst [ backgroundColor ] = useGlobalStyle( prefix + 'color.background' );\n\tconst [ gradientValue ] = useGlobalStyle( prefix + 'color.gradient' );\n\tconst [ color ] = useGlobalStyle( prefix + 'color.text' );\n\n\tconst navigationButtonLabel = sprintf(\n\t\t// translators: %s: is a subset of Typography, e.g., 'text' or 'links'.\n\t\t__( 'Typography %s styles' ),\n\t\tlabel\n\t);\n\n\treturn (\n\t\t<NavigationButtonAsItem\n\t\t\tpath={ parentMenu + '/typography/' + element }\n\t\t\taria-label={ navigationButtonLabel }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<FlexItem\n\t\t\t\t\tclassName=\"edit-site-global-styles-screen-typography__indicator\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tfontFamily: fontFamily ?? 'serif',\n\t\t\t\t\t\tbackground: gradientValue ?? backgroundColor,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tfontStyle,\n\t\t\t\t\t\tfontWeight,\n\t\t\t\t\t\tletterSpacing,\n\t\t\t\t\t\t...extraStyles,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Aa' ) }\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>{ label }</FlexItem>\n\t\t\t</HStack>\n\t\t</NavigationButtonAsItem>\n\t);\n}\n\nfunction TypographyElements() {\n\tconst parentMenu = '';\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t<Subtitle level={ 3 }>{ __( 'Elements' ) }</Subtitle>\n\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"text\"\n\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"link\"\n\t\t\t\t\tlabel={ __( 'Links' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"heading\"\n\t\t\t\t\tlabel={ __( 'Headings' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"caption\"\n\t\t\t\t\tlabel={ __( 'Captions' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"button\"\n\t\t\t\t\tlabel={ __( 'Buttons' ) }\n\t\t\t\t/>\n\t\t\t</ItemGroup>\n\t\t</VStack>\n\t);\n}\n\nexport default TypographyElements;\n"],"mappings":"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"}
@@ -12,22 +12,23 @@ import { privateApis as routerPrivateApis } from '@wordpress/router';
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
- import { TEMPLATE_PARTS, PATTERNS, SYNC_TYPES, USER_PATTERNS, USER_PATTERN_CATEGORY } from './utils';
15
+ import { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES, PATTERN_SYNC_TYPES } from '../../utils/constants';
16
16
  import { useExistingTemplateParts, getUniqueTemplatePartTitle, getCleanTemplatePartSlug } from '../../utils/template-part-create';
17
17
  import { unlock } from '../../lock-unlock';
18
+ import usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';
18
19
  const {
19
20
  useHistory
20
21
  } = unlock(routerPrivateApis);
21
22
  function getPatternMeta(item) {
22
- if (item.type === PATTERNS) {
23
+ if (item.type === PATTERN_TYPES.theme) {
23
24
  return {
24
- wp_pattern_sync_status: SYNC_TYPES.unsynced
25
+ wp_pattern_sync_status: PATTERN_SYNC_TYPES.unsynced
25
26
  };
26
27
  }
27
- const syncStatus = item.reusableBlock.wp_pattern_sync_status;
28
- const isUnsynced = syncStatus === SYNC_TYPES.unsynced;
28
+ const syncStatus = item.patternBlock.wp_pattern_sync_status;
29
+ const isUnsynced = syncStatus === PATTERN_SYNC_TYPES.unsynced;
29
30
  return {
30
- ...item.reusableBlock.meta,
31
+ ...item.patternBlock.meta,
31
32
  wp_pattern_sync_status: isUnsynced ? syncStatus : undefined
32
33
  };
33
34
  }
@@ -38,7 +39,8 @@ export default function DuplicateMenuItem({
38
39
  onClose
39
40
  }) {
40
41
  const {
41
- saveEntityRecord
42
+ saveEntityRecord,
43
+ invalidateResolution
42
44
  } = useDispatch(coreStore);
43
45
  const {
44
46
  createErrorNotice,
@@ -46,6 +48,9 @@ export default function DuplicateMenuItem({
46
48
  } = useDispatch(noticesStore);
47
49
  const history = useHistory();
48
50
  const existingTemplateParts = useExistingTemplateParts();
51
+ const {
52
+ patternCategories
53
+ } = usePatternCategories();
49
54
  async function createTemplatePart() {
50
55
  try {
51
56
  const copiedTitle = sprintf( /* translators: %s: Existing template part title */
@@ -71,9 +76,9 @@ export default function DuplicateMenuItem({
71
76
  id: 'edit-site-patterns-success'
72
77
  });
73
78
  history.push({
74
- postType: TEMPLATE_PARTS,
79
+ postType: TEMPLATE_PART_POST_TYPE,
75
80
  postId: result?.id,
76
- categoryType: TEMPLATE_PARTS,
81
+ categoryType: TEMPLATE_PART_POST_TYPE,
77
82
  categoryId
78
83
  });
79
84
  onClose();
@@ -86,16 +91,46 @@ export default function DuplicateMenuItem({
86
91
  onClose();
87
92
  }
88
93
  }
94
+ async function findOrCreateTerm(term) {
95
+ try {
96
+ const newTerm = await saveEntityRecord('taxonomy', 'wp_pattern_category', {
97
+ name: term.label,
98
+ slug: term.name,
99
+ description: term.description
100
+ }, {
101
+ throwOnError: true
102
+ });
103
+ invalidateResolution('getUserPatternCategories');
104
+ return newTerm.id;
105
+ } catch (error) {
106
+ if (error.code !== 'term_exists') {
107
+ throw error;
108
+ }
109
+ return error.data.term_id;
110
+ }
111
+ }
112
+ async function getCategories(categories) {
113
+ const terms = categories.map(category => {
114
+ const fullCategory = patternCategories.find(cat => cat.name === category);
115
+ if (fullCategory.id) {
116
+ return fullCategory.id;
117
+ }
118
+ return findOrCreateTerm(fullCategory);
119
+ });
120
+ return Promise.all(terms);
121
+ }
89
122
  async function createPattern() {
90
123
  try {
91
- const isThemePattern = item.type === PATTERNS;
124
+ const isThemePattern = item.type === PATTERN_TYPES.theme;
92
125
  const title = sprintf( /* translators: %s: Existing pattern title */
93
126
  __('%s (Copy)'), item.title);
127
+ const categories = await getCategories(item.categories);
94
128
  const result = await saveEntityRecord('postType', 'wp_block', {
95
- content: isThemePattern ? item.content : item.reusableBlock.content,
129
+ content: isThemePattern ? item.content : item.patternBlock.content,
96
130
  meta: getPatternMeta(item),
97
131
  status: 'publish',
98
- title
132
+ title,
133
+ wp_pattern_category: categories
99
134
  }, {
100
135
  throwOnError: true
101
136
  });
@@ -106,9 +141,9 @@ export default function DuplicateMenuItem({
106
141
  id: 'edit-site-patterns-success'
107
142
  });
108
143
  history.push({
109
- categoryType: USER_PATTERNS,
110
- categoryId: USER_PATTERN_CATEGORY,
111
- postType: USER_PATTERNS,
144
+ categoryType: PATTERN_TYPES.theme,
145
+ categoryId,
146
+ postType: PATTERN_TYPES.user,
112
147
  postId: result?.id
113
148
  });
114
149
  onClose();
@@ -121,7 +156,7 @@ export default function DuplicateMenuItem({
121
156
  onClose();
122
157
  }
123
158
  }
124
- const createItem = item.type === TEMPLATE_PARTS ? createTemplatePart : createPattern;
159
+ const createItem = item.type === TEMPLATE_PART_POST_TYPE ? createTemplatePart : createPattern;
125
160
  return createElement(MenuItem, {
126
161
  onClick: createItem
127
162
  }, label);
@@ -1 +1 @@
1
- {"version":3,"names":["MenuItem","store","coreStore","useDispatch","__","sprintf","noticesStore","privateApis","routerPrivateApis","TEMPLATE_PARTS","PATTERNS","SYNC_TYPES","USER_PATTERNS","USER_PATTERN_CATEGORY","useExistingTemplateParts","getUniqueTemplatePartTitle","getCleanTemplatePartSlug","unlock","useHistory","getPatternMeta","item","type","wp_pattern_sync_status","unsynced","syncStatus","reusableBlock","isUnsynced","meta","undefined","DuplicateMenuItem","categoryId","label","onClose","saveEntityRecord","createErrorNotice","createSuccessNotice","history","existingTemplateParts","createTemplatePart","copiedTitle","title","slug","area","content","templatePart","result","throwOnError","id","push","postType","postId","categoryType","error","errorMessage","message","code","createPattern","isThemePattern","status","createItem","createElement","onClick"],"sources":["@wordpress/edit-site/src/components/page-patterns/duplicate-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PARTS,\n\tPATTERNS,\n\tSYNC_TYPES,\n\tUSER_PATTERNS,\n\tUSER_PATTERN_CATEGORY,\n} from './utils';\nimport {\n\tuseExistingTemplateParts,\n\tgetUniqueTemplatePartTitle,\n\tgetCleanTemplatePartSlug,\n} from '../../utils/template-part-create';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nfunction getPatternMeta( item ) {\n\tif ( item.type === PATTERNS ) {\n\t\treturn { wp_pattern_sync_status: SYNC_TYPES.unsynced };\n\t}\n\n\tconst syncStatus = item.reusableBlock.wp_pattern_sync_status;\n\tconst isUnsynced = syncStatus === SYNC_TYPES.unsynced;\n\n\treturn {\n\t\t...item.reusableBlock.meta,\n\t\twp_pattern_sync_status: isUnsynced ? syncStatus : undefined,\n\t};\n}\n\nexport default function DuplicateMenuItem( {\n\tcategoryId,\n\titem,\n\tlabel = __( 'Duplicate' ),\n\tonClose,\n} ) {\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst history = useHistory();\n\tconst existingTemplateParts = useExistingTemplateParts();\n\n\tasync function createTemplatePart() {\n\t\ttry {\n\t\t\tconst copiedTitle = sprintf(\n\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\titem.title\n\t\t\t);\n\t\t\tconst title = getUniqueTemplatePartTitle(\n\t\t\t\tcopiedTitle,\n\t\t\t\texistingTemplateParts\n\t\t\t);\n\t\t\tconst slug = getCleanTemplatePartSlug( title );\n\t\t\tconst { area, content } = item.templatePart;\n\n\t\t\tconst result = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\t{ slug, title, content, area },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\thistory.push( {\n\t\t\t\tpostType: TEMPLATE_PARTS,\n\t\t\t\tpostId: result?.id,\n\t\t\t\tcategoryType: TEMPLATE_PARTS,\n\t\t\t\tcategoryId,\n\t\t\t} );\n\n\t\t\tonClose();\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while creating the template part.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tasync function createPattern() {\n\t\ttry {\n\t\t\tconst isThemePattern = item.type === PATTERNS;\n\t\t\tconst title = sprintf(\n\t\t\t\t/* translators: %s: Existing pattern title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\titem.title\n\t\t\t);\n\n\t\t\tconst result = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\t{\n\t\t\t\t\tcontent: isThemePattern\n\t\t\t\t\t\t? item.content\n\t\t\t\t\t\t: item.reusableBlock.content,\n\t\t\t\t\tmeta: getPatternMeta( item ),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new pattern's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\thistory.push( {\n\t\t\t\tcategoryType: USER_PATTERNS,\n\t\t\t\tcategoryId: USER_PATTERN_CATEGORY,\n\t\t\t\tpostType: USER_PATTERNS,\n\t\t\t\tpostId: result?.id,\n\t\t\t} );\n\n\t\t\tonClose();\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the pattern.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tconst createItem =\n\t\titem.type === TEMPLATE_PARTS ? createTemplatePart : createPattern;\n\n\treturn <MenuItem onClick={ createItem }>{ label }</MenuItem>;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASJ,KAAK,IAAIK,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,WAAW,IAAIC,iBAAiB,QAAQ,mBAAmB;;AAEpE;AACA;AACA;AACA,SACCC,cAAc,EACdC,QAAQ,EACRC,UAAU,EACVC,aAAa,EACbC,qBAAqB,QACf,SAAS;AAChB,SACCC,wBAAwB,EACxBC,0BAA0B,EAC1BC,wBAAwB,QAClB,kCAAkC;AACzC,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,MAAM;EAAEC;AAAW,CAAC,GAAGD,MAAM,CAAET,iBAAkB,CAAC;AAElD,SAASW,cAAcA,CAAEC,IAAI,EAAG;EAC/B,IAAKA,IAAI,CAACC,IAAI,KAAKX,QAAQ,EAAG;IAC7B,OAAO;MAAEY,sBAAsB,EAAEX,UAAU,CAACY;IAAS,CAAC;EACvD;EAEA,MAAMC,UAAU,GAAGJ,IAAI,CAACK,aAAa,CAACH,sBAAsB;EAC5D,MAAMI,UAAU,GAAGF,UAAU,KAAKb,UAAU,CAACY,QAAQ;EAErD,OAAO;IACN,GAAGH,IAAI,CAACK,aAAa,CAACE,IAAI;IAC1BL,sBAAsB,EAAEI,UAAU,GAAGF,UAAU,GAAGI;EACnD,CAAC;AACF;AAEA,eAAe,SAASC,iBAAiBA,CAAE;EAC1CC,UAAU;EACVV,IAAI;EACJW,KAAK,GAAG3B,EAAE,CAAE,WAAY,CAAC;EACzB4B;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAiB,CAAC,GAAG9B,WAAW,CAAED,SAAU,CAAC;EACrD,MAAM;IAAEgC,iBAAiB;IAAEC;EAAoB,CAAC,GAC/ChC,WAAW,CAAEG,YAAa,CAAC;EAE5B,MAAM8B,OAAO,GAAGlB,UAAU,CAAC,CAAC;EAC5B,MAAMmB,qBAAqB,GAAGvB,wBAAwB,CAAC,CAAC;EAExD,eAAewB,kBAAkBA,CAAA,EAAG;IACnC,IAAI;MACH,MAAMC,WAAW,GAAGlC,OAAO,EAC1B;MACAD,EAAE,CAAE,WAAY,CAAC,EACjBgB,IAAI,CAACoB,KACN,CAAC;MACD,MAAMA,KAAK,GAAGzB,0BAA0B,CACvCwB,WAAW,EACXF,qBACD,CAAC;MACD,MAAMI,IAAI,GAAGzB,wBAAwB,CAAEwB,KAAM,CAAC;MAC9C,MAAM;QAAEE,IAAI;QAAEC;MAAQ,CAAC,GAAGvB,IAAI,CAACwB,YAAY;MAE3C,MAAMC,MAAM,GAAG,MAAMZ,gBAAgB,CACpC,UAAU,EACV,kBAAkB,EAClB;QAAEQ,IAAI;QAAED,KAAK;QAAEG,OAAO;QAAED;MAAK,CAAC,EAC9B;QAAEI,YAAY,EAAE;MAAK,CACtB,CAAC;MAEDX,mBAAmB,CAClB9B,OAAO;MACN;MACAD,EAAE,CAAE,kBAAmB,CAAC,EACxBgB,IAAI,CAACoB,KACN,CAAC,EACD;QACCnB,IAAI,EAAE,UAAU;QAChB0B,EAAE,EAAE;MACL,CACD,CAAC;MAEDX,OAAO,CAACY,IAAI,CAAE;QACbC,QAAQ,EAAExC,cAAc;QACxByC,MAAM,EAAEL,MAAM,EAAEE,EAAE;QAClBI,YAAY,EAAE1C,cAAc;QAC5BqB;MACD,CAAE,CAAC;MAEHE,OAAO,CAAC,CAAC;IACV,CAAC,CAAC,OAAQoB,KAAK,EAAG;MACjB,MAAMC,YAAY,GACjBD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACG,IAAI,KAAK,eAAe,GAC5CH,KAAK,CAACE,OAAO,GACblD,EAAE,CACF,qDACA,CAAC;MAEL8B,iBAAiB,CAAEmB,YAAY,EAAE;QAChChC,IAAI,EAAE,UAAU;QAChB0B,EAAE,EAAE;MACL,CAAE,CAAC;MACHf,OAAO,CAAC,CAAC;IACV;EACD;EAEA,eAAewB,aAAaA,CAAA,EAAG;IAC9B,IAAI;MACH,MAAMC,cAAc,GAAGrC,IAAI,CAACC,IAAI,KAAKX,QAAQ;MAC7C,MAAM8B,KAAK,GAAGnC,OAAO,EACpB;MACAD,EAAE,CAAE,WAAY,CAAC,EACjBgB,IAAI,CAACoB,KACN,CAAC;MAED,MAAMK,MAAM,GAAG,MAAMZ,gBAAgB,CACpC,UAAU,EACV,UAAU,EACV;QACCU,OAAO,EAAEc,cAAc,GACpBrC,IAAI,CAACuB,OAAO,GACZvB,IAAI,CAACK,aAAa,CAACkB,OAAO;QAC7BhB,IAAI,EAAER,cAAc,CAAEC,IAAK,CAAC;QAC5BsC,MAAM,EAAE,SAAS;QACjBlB;MACD,CAAC,EACD;QAAEM,YAAY,EAAE;MAAK,CACtB,CAAC;MAEDX,mBAAmB,CAClB9B,OAAO;MACN;MACAD,EAAE,CAAE,kBAAmB,CAAC,EACxBgB,IAAI,CAACoB,KACN,CAAC,EACD;QACCnB,IAAI,EAAE,UAAU;QAChB0B,EAAE,EAAE;MACL,CACD,CAAC;MAEDX,OAAO,CAACY,IAAI,CAAE;QACbG,YAAY,EAAEvC,aAAa;QAC3BkB,UAAU,EAAEjB,qBAAqB;QACjCoC,QAAQ,EAAErC,aAAa;QACvBsC,MAAM,EAAEL,MAAM,EAAEE;MACjB,CAAE,CAAC;MAEHf,OAAO,CAAC,CAAC;IACV,CAAC,CAAC,OAAQoB,KAAK,EAAG;MACjB,MAAMC,YAAY,GACjBD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACG,IAAI,KAAK,eAAe,GAC5CH,KAAK,CAACE,OAAO,GACblD,EAAE,CAAE,+CAAgD,CAAC;MAEzD8B,iBAAiB,CAAEmB,YAAY,EAAE;QAChChC,IAAI,EAAE,UAAU;QAChB0B,EAAE,EAAE;MACL,CAAE,CAAC;MACHf,OAAO,CAAC,CAAC;IACV;EACD;EAEA,MAAM2B,UAAU,GACfvC,IAAI,CAACC,IAAI,KAAKZ,cAAc,GAAG6B,kBAAkB,GAAGkB,aAAa;EAElE,OAAOI,aAAA,CAAC5D,QAAQ;IAAC6D,OAAO,EAAGF;EAAY,GAAG5B,KAAiB,CAAC;AAC7D"}
1
+ {"version":3,"names":["MenuItem","store","coreStore","useDispatch","__","sprintf","noticesStore","privateApis","routerPrivateApis","TEMPLATE_PART_POST_TYPE","PATTERN_TYPES","PATTERN_SYNC_TYPES","useExistingTemplateParts","getUniqueTemplatePartTitle","getCleanTemplatePartSlug","unlock","usePatternCategories","useHistory","getPatternMeta","item","type","theme","wp_pattern_sync_status","unsynced","syncStatus","patternBlock","isUnsynced","meta","undefined","DuplicateMenuItem","categoryId","label","onClose","saveEntityRecord","invalidateResolution","createErrorNotice","createSuccessNotice","history","existingTemplateParts","patternCategories","createTemplatePart","copiedTitle","title","slug","area","content","templatePart","result","throwOnError","id","push","postType","postId","categoryType","error","errorMessage","message","code","findOrCreateTerm","term","newTerm","name","description","data","term_id","getCategories","categories","terms","map","category","fullCategory","find","cat","Promise","all","createPattern","isThemePattern","status","wp_pattern_category","user","createItem","createElement","onClick"],"sources":["@wordpress/edit-site/src/components/page-patterns/duplicate-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_TYPES,\n\tPATTERN_SYNC_TYPES,\n} from '../../utils/constants';\nimport {\n\tuseExistingTemplateParts,\n\tgetUniqueTemplatePartTitle,\n\tgetCleanTemplatePartSlug,\n} from '../../utils/template-part-create';\nimport { unlock } from '../../lock-unlock';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nfunction getPatternMeta( item ) {\n\tif ( item.type === PATTERN_TYPES.theme ) {\n\t\treturn { wp_pattern_sync_status: PATTERN_SYNC_TYPES.unsynced };\n\t}\n\n\tconst syncStatus = item.patternBlock.wp_pattern_sync_status;\n\tconst isUnsynced = syncStatus === PATTERN_SYNC_TYPES.unsynced;\n\n\treturn {\n\t\t...item.patternBlock.meta,\n\t\twp_pattern_sync_status: isUnsynced ? syncStatus : undefined,\n\t};\n}\n\nexport default function DuplicateMenuItem( {\n\tcategoryId,\n\titem,\n\tlabel = __( 'Duplicate' ),\n\tonClose,\n} ) {\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst history = useHistory();\n\tconst existingTemplateParts = useExistingTemplateParts();\n\tconst { patternCategories } = usePatternCategories();\n\n\tasync function createTemplatePart() {\n\t\ttry {\n\t\t\tconst copiedTitle = sprintf(\n\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\titem.title\n\t\t\t);\n\t\t\tconst title = getUniqueTemplatePartTitle(\n\t\t\t\tcopiedTitle,\n\t\t\t\texistingTemplateParts\n\t\t\t);\n\t\t\tconst slug = getCleanTemplatePartSlug( title );\n\t\t\tconst { area, content } = item.templatePart;\n\n\t\t\tconst result = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\t{ slug, title, content, area },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\thistory.push( {\n\t\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tpostId: result?.id,\n\t\t\t\tcategoryType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tcategoryId,\n\t\t\t} );\n\n\t\t\tonClose();\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while creating the template part.'\n\t\t\t\t\t );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\t'wp_pattern_category',\n\t\t\t\t{\n\t\t\t\t\tname: term.label,\n\t\t\t\t\tslug: term.name,\n\t\t\t\t\tdescription: term.description,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\treturn newTerm.id;\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn error.data.term_id;\n\t\t}\n\t}\n\n\tasync function getCategories( categories ) {\n\t\tconst terms = categories.map( ( category ) => {\n\t\t\tconst fullCategory = patternCategories.find(\n\t\t\t\t( cat ) => cat.name === category\n\t\t\t);\n\t\t\tif ( fullCategory.id ) {\n\t\t\t\treturn fullCategory.id;\n\t\t\t}\n\t\t\treturn findOrCreateTerm( fullCategory );\n\t\t} );\n\n\t\treturn Promise.all( terms );\n\t}\n\n\tasync function createPattern() {\n\t\ttry {\n\t\t\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\t\t\tconst title = sprintf(\n\t\t\t\t/* translators: %s: Existing pattern title */\n\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\titem.title\n\t\t\t);\n\t\t\tconst categories = await getCategories( item.categories );\n\n\t\t\tconst result = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\t{\n\t\t\t\t\tcontent: isThemePattern\n\t\t\t\t\t\t? item.content\n\t\t\t\t\t\t: item.patternBlock.content,\n\t\t\t\t\tmeta: getPatternMeta( item ),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\twp_pattern_category: categories,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new pattern's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\thistory.push( {\n\t\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\t\tcategoryId,\n\t\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\t\tpostId: result?.id,\n\t\t\t} );\n\n\t\t\tonClose();\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the pattern.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tconst createItem =\n\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t? createTemplatePart\n\t\t\t: createPattern;\n\n\treturn <MenuItem onClick={ createItem }>{ label }</MenuItem>;\n}\n"],"mappings":"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"}
@@ -3,11 +3,13 @@ import { createElement } from "@wordpress/element";
3
3
  * External dependencies
4
4
  */
5
5
  import classnames from 'classnames';
6
+ import downloadjs from 'downloadjs';
7
+ import { paramCase as kebabCase } from 'change-case';
6
8
 
7
9
  /**
8
10
  * WordPress dependencies
9
11
  */
10
- import { BlockPreview } from '@wordpress/block-editor';
12
+ import { BlockPreview, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
11
13
  import { Button, __experimentalConfirmDialog as ConfirmDialog, DropdownMenu, MenuGroup, MenuItem, __experimentalHeading as Heading, __experimentalHStack as HStack, Tooltip, Flex } from '@wordpress/components';
12
14
  import { useDispatch } from '@wordpress/data';
13
15
  import { useState, useId, memo } from '@wordpress/element';
@@ -21,9 +23,13 @@ import { store as reusableBlocksStore } from '@wordpress/reusable-blocks';
21
23
  */
22
24
  import RenameMenuItem from './rename-menu-item';
23
25
  import DuplicateMenuItem from './duplicate-menu-item';
24
- import { PATTERNS, TEMPLATE_PARTS, USER_PATTERNS, SYNC_TYPES } from './utils';
26
+ import { PATTERN_TYPES, TEMPLATE_PART_POST_TYPE, PATTERN_SYNC_TYPES } from '../../utils/constants';
25
27
  import { store as editSiteStore } from '../../store';
26
28
  import { useLink } from '../routes/link';
29
+ import { unlock } from '../../lock-unlock';
30
+ const {
31
+ useGlobalStyle
32
+ } = unlock(blockEditorPrivateApis);
27
33
  const templatePartIcons = {
28
34
  header,
29
35
  footer,
@@ -36,6 +42,7 @@ function GridItem({
36
42
  }) {
37
43
  const descriptionId = useId();
38
44
  const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
45
+ const [backgroundColor] = useGlobalStyle('color.background');
39
46
  const {
40
47
  removeTemplate
41
48
  } = useDispatch(editSiteStore);
@@ -46,9 +53,9 @@ function GridItem({
46
53
  createErrorNotice,
47
54
  createSuccessNotice
48
55
  } = useDispatch(noticesStore);
49
- const isUserPattern = item.type === USER_PATTERNS;
50
- const isNonUserPattern = item.type === PATTERNS;
51
- const isTemplatePart = item.type === TEMPLATE_PARTS;
56
+ const isUserPattern = item.type === PATTERN_TYPES.user;
57
+ const isNonUserPattern = item.type === PATTERN_TYPES.theme;
58
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
52
59
  const {
53
60
  onClick
54
61
  } = useLink({
@@ -82,6 +89,15 @@ function GridItem({
82
89
  }
83
90
  };
84
91
  const deleteItem = () => isTemplatePart ? removeTemplate(item) : deletePattern();
92
+ const exportAsJSON = () => {
93
+ const json = {
94
+ __file: item.type,
95
+ title: item.title,
96
+ content: item.patternBlock.content.raw,
97
+ syncStatus: item.patternBlock.wp_pattern_sync_status
98
+ };
99
+ return downloadjs(JSON.stringify(json, null, 2), `${kebabCase(item.title)}.json`, 'application/json');
100
+ };
85
101
 
86
102
  // Only custom patterns or custom template parts can be renamed or deleted.
87
103
  const isCustomPattern = isUserPattern || isTemplatePart && item.isCustom;
@@ -96,11 +112,19 @@ function GridItem({
96
112
  if (isNonUserPattern) {
97
113
  ariaDescriptions.push(__('Theme & plugin patterns cannot be edited.'));
98
114
  }
99
- const itemIcon = templatePartIcons[categoryId] || (item.syncStatus === SYNC_TYPES.full ? symbol : undefined);
115
+ let itemIcon;
116
+ if (!isUserPattern && templatePartIcons[categoryId]) {
117
+ itemIcon = templatePartIcons[categoryId];
118
+ } else {
119
+ itemIcon = item.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;
120
+ }
100
121
  const confirmButtonText = hasThemeFile ? __('Clear') : __('Delete');
101
122
  const confirmPrompt = hasThemeFile ? __('Are you sure you want to clear these customizations?') : sprintf(
102
123
  // translators: %s: The pattern or template part's title e.g. 'Call to action'.
103
124
  __('Are you sure you want to delete "%s"?'), item.title);
125
+ const additionalStyles = !backgroundColor ? [{
126
+ css: 'body { background: #fff; }'
127
+ }] : undefined;
104
128
  return createElement("li", {
105
129
  className: patternClassNames
106
130
  }, createElement("button", {
@@ -110,12 +134,13 @@ function GridItem({
110
134
  ,
111
135
  id: `edit-site-patterns-${item.name}`,
112
136
  ...props,
113
- onClick: item.type !== PATTERNS ? onClick : undefined,
114
- "aria-disabled": item.type !== PATTERNS ? 'false' : 'true',
137
+ onClick: item.type !== PATTERN_TYPES.theme ? onClick : undefined,
138
+ "aria-disabled": item.type !== PATTERN_TYPES.theme ? 'false' : 'true',
115
139
  "aria-label": item.title,
116
140
  "aria-describedby": ariaDescriptions.length ? ariaDescriptions.map((_, index) => `${descriptionId}-${index}`).join(' ') : undefined
117
- }, isEmpty && __('Empty pattern'), !isEmpty && createElement(BlockPreview, {
118
- blocks: item.blocks
141
+ }, isEmpty && isTemplatePart && __('Empty template part'), isEmpty && !isTemplatePart && __('Empty pattern'), !isEmpty && createElement(BlockPreview, {
142
+ blocks: item.blocks,
143
+ additionalStyles: additionalStyles
119
144
  })), ariaDescriptions.map((ariaDescription, index) => createElement("div", {
120
145
  key: index,
121
146
  hidden: true,
@@ -129,16 +154,16 @@ function GridItem({
129
154
  spacing: 3,
130
155
  className: "edit-site-patterns__pattern-title"
131
156
  }, itemIcon && !isNonUserPattern && createElement(Tooltip, {
132
- position: "top center",
157
+ placement: "top",
133
158
  text: __('Editing this pattern will also update anywhere it is used')
134
- }, createElement("span", null, createElement(Icon, {
159
+ }, createElement(Icon, {
135
160
  className: "edit-site-patterns__pattern-icon",
136
161
  icon: itemIcon
137
- }))), createElement(Flex, {
162
+ })), createElement(Flex, {
138
163
  as: "span",
139
164
  gap: 0,
140
165
  justify: "left"
141
- }, item.type === PATTERNS ? item.title : createElement(Heading, {
166
+ }, item.type === PATTERN_TYPES.theme ? item.title : createElement(Heading, {
142
167
  level: 5
143
168
  }, createElement(Button, {
144
169
  variant: "link",
@@ -147,15 +172,14 @@ function GridItem({
147
172
  // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
148
173
  ,
149
174
  tabIndex: "-1"
150
- }, item.title)), item.type === PATTERNS && createElement(Tooltip, {
151
- position: "top center",
175
+ }, item.title)), item.type === PATTERN_TYPES.theme && createElement(Tooltip, {
176
+ placement: "top",
152
177
  text: __('This pattern cannot be edited.')
153
- }, createElement("span", {
154
- className: "edit-site-patterns__pattern-lock-icon"
155
178
  }, createElement(Icon, {
179
+ className: "edit-site-patterns__pattern-lock-icon",
156
180
  icon: lockSmall,
157
181
  size: 24
158
- }))))), createElement(DropdownMenu, {
182
+ })))), createElement(DropdownMenu, {
159
183
  icon: moreVertical,
160
184
  label: __('Actions'),
161
185
  className: "edit-site-patterns__dropdown",
@@ -176,8 +200,10 @@ function GridItem({
176
200
  categoryId: categoryId,
177
201
  item: item,
178
202
  onClose: onClose,
179
- label: isNonUserPattern ? __('Copy to My patterns') : __('Duplicate')
180
- }), isCustomPattern && createElement(MenuItem, {
203
+ label: __('Duplicate')
204
+ }), item.type === PATTERN_TYPES.user && createElement(MenuItem, {
205
+ onClick: () => exportAsJSON()
206
+ }, __('Export as JSON')), isCustomPattern && createElement(MenuItem, {
181
207
  isDestructive: !hasThemeFile,
182
208
  onClick: () => setIsDeleteDialogOpen(true)
183
209
  }, hasThemeFile ? __('Clear customizations') : __('Delete'))))), isDeleteDialogOpen && createElement(ConfirmDialog, {
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","BlockPreview","Button","__experimentalConfirmDialog","ConfirmDialog","DropdownMenu","MenuGroup","MenuItem","__experimentalHeading","Heading","__experimentalHStack","HStack","Tooltip","Flex","useDispatch","useState","useId","memo","__","sprintf","Icon","header","footer","symbolFilled","uncategorized","symbol","moreVertical","lockSmall","store","noticesStore","reusableBlocksStore","RenameMenuItem","DuplicateMenuItem","PATTERNS","TEMPLATE_PARTS","USER_PATTERNS","SYNC_TYPES","editSiteStore","useLink","templatePartIcons","GridItem","categoryId","item","props","descriptionId","isDeleteDialogOpen","setIsDeleteDialogOpen","removeTemplate","__experimentalDeleteReusableBlock","createErrorNotice","createSuccessNotice","isUserPattern","type","isNonUserPattern","isTemplatePart","onClick","postType","postId","id","name","categoryType","isEmpty","blocks","length","patternClassNames","previewClassNames","deletePattern","title","error","errorMessage","message","code","deleteItem","isCustomPattern","isCustom","hasThemeFile","templatePart","has_theme_file","ariaDescriptions","push","description","itemIcon","syncStatus","full","undefined","confirmButtonText","confirmPrompt","createElement","className","map","_","index","join","ariaDescription","key","hidden","justify","alignment","spacing","position","text","icon","as","gap","level","variant","tabIndex","size","label","popoverProps","placement","toggleProps","describedBy","onClose","isDestructive","onConfirm","onCancel"],"sources":["@wordpress/edit-site/src/components/page-patterns/grid-item.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { BlockPreview } from '@wordpress/block-editor';\nimport {\n\tButton,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalHeading as Heading,\n\t__experimentalHStack as HStack,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { useState, useId, memo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tIcon,\n\theader,\n\tfooter,\n\tsymbolFilled as uncategorized,\n\tsymbol,\n\tmoreVertical,\n\tlockSmall,\n} from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n\n/**\n * Internal dependencies\n */\nimport RenameMenuItem from './rename-menu-item';\nimport DuplicateMenuItem from './duplicate-menu-item';\nimport { PATTERNS, TEMPLATE_PARTS, USER_PATTERNS, SYNC_TYPES } from './utils';\nimport { store as editSiteStore } from '../../store';\nimport { useLink } from '../routes/link';\n\nconst templatePartIcons = { header, footer, uncategorized };\n\nfunction GridItem( { categoryId, item, ...props } ) {\n\tconst descriptionId = useId();\n\tconst [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );\n\n\tconst { removeTemplate } = useDispatch( editSiteStore );\n\tconst { __experimentalDeleteReusableBlock } =\n\t\tuseDispatch( reusableBlocksStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst isUserPattern = item.type === USER_PATTERNS;\n\tconst isNonUserPattern = item.type === PATTERNS;\n\tconst isTemplatePart = item.type === TEMPLATE_PARTS;\n\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: item.type,\n\t} );\n\n\tconst isEmpty = ! item.blocks?.length;\n\tconst patternClassNames = classnames( 'edit-site-patterns__pattern', {\n\t\t'is-placeholder': isEmpty,\n\t} );\n\tconst previewClassNames = classnames( 'edit-site-patterns__preview', {\n\t\t'is-inactive': isNonUserPattern,\n\t} );\n\n\tconst deletePattern = async () => {\n\t\ttry {\n\t\t\tawait __experimentalDeleteReusableBlock( item.id );\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The pattern's title e.g. 'Call to action'.\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while deleting the pattern.' );\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t}\n\t};\n\tconst deleteItem = () =>\n\t\tisTemplatePart ? removeTemplate( item ) : deletePattern();\n\n\t// Only custom patterns or custom template parts can be renamed or deleted.\n\tconst isCustomPattern =\n\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\tconst ariaDescriptions = [];\n\n\tif ( isCustomPattern ) {\n\t\t// User patterns don't have descriptions, but can be edited and deleted, so include some help text.\n\t\tariaDescriptions.push(\n\t\t\t__( 'Press Enter to edit, or Delete to delete the pattern.' )\n\t\t);\n\t} else if ( item.description ) {\n\t\tariaDescriptions.push( item.description );\n\t}\n\n\tif ( isNonUserPattern ) {\n\t\tariaDescriptions.push(\n\t\t\t__( 'Theme & plugin patterns cannot be edited.' )\n\t\t);\n\t}\n\n\tconst itemIcon =\n\t\ttemplatePartIcons[ categoryId ] ||\n\t\t( item.syncStatus === SYNC_TYPES.full ? symbol : undefined );\n\n\tconst confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );\n\tconst confirmPrompt = hasThemeFile\n\t\t? __( 'Are you sure you want to clear these customizations?' )\n\t\t: sprintf(\n\t\t\t\t// translators: %s: The pattern or template part's title e.g. 'Call to action'.\n\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\titem.title\n\t\t );\n\n\treturn (\n\t\t<li className={ patternClassNames }>\n\t\t\t<button\n\t\t\t\tclassName={ previewClassNames }\n\t\t\t\t// Even though still incomplete, passing ids helps performance.\n\t\t\t\t// @see https://reakit.io/docs/composite/#performance.\n\t\t\t\tid={ `edit-site-patterns-${ item.name }` }\n\t\t\t\t{ ...props }\n\t\t\t\tonClick={ item.type !== PATTERNS ? onClick : undefined }\n\t\t\t\taria-disabled={ item.type !== PATTERNS ? 'false' : 'true' }\n\t\t\t\taria-label={ item.title }\n\t\t\t\taria-describedby={\n\t\t\t\t\tariaDescriptions.length\n\t\t\t\t\t\t? ariaDescriptions\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( _, index ) =>\n\t\t\t\t\t\t\t\t\t\t`${ descriptionId }-${ index }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isEmpty && __( 'Empty pattern' ) }\n\t\t\t\t{ ! isEmpty && <BlockPreview blocks={ item.blocks } /> }\n\t\t\t</button>\n\t\t\t{ ariaDescriptions.map( ( ariaDescription, index ) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={ index }\n\t\t\t\t\thidden\n\t\t\t\t\tid={ `${ descriptionId }-${ index }` }\n\t\t\t\t>\n\t\t\t\t\t{ ariaDescription }\n\t\t\t\t</div>\n\t\t\t) ) }\n\t\t\t<HStack\n\t\t\t\tclassName=\"edit-site-patterns__footer\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tjustify=\"left\"\n\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\tclassName=\"edit-site-patterns__pattern-title\"\n\t\t\t\t>\n\t\t\t\t\t{ itemIcon && ! isNonUserPattern && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t\t\t'Editing this pattern will also update anywhere it is used'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-icon\"\n\t\t\t\t\t\t\t\t\ticon={ itemIcon }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t<Flex as=\"span\" gap={ 0 } justify=\"left\">\n\t\t\t\t\t\t{ item.type === PATTERNS ? (\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Heading level={ 5 }>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\t\t\t// Required for the grid's roving tab index system.\n\t\t\t\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ item.type === PATTERNS && (\n\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\t\ttext={ __( 'This pattern cannot be edited.' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"edit-site-patterns__pattern-lock-icon\">\n\t\t\t\t\t\t\t\t\t<Icon icon={ lockSmall } size={ 24 } />\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t</HStack>\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\tclassName=\"edit-site-patterns__dropdown\"\n\t\t\t\t\tpopoverProps={ { placement: 'bottom-end' } }\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tclassName: 'edit-site-patterns__button',\n\t\t\t\t\t\tdescribedBy: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: pattern name */\n\t\t\t\t\t\t\t__( 'Action menu for %s pattern' ),\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t{ isCustomPattern && ! hasThemeFile && (\n\t\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<DuplicateMenuItem\n\t\t\t\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\tisNonUserPattern\n\t\t\t\t\t\t\t\t\t\t? __( 'Copy to My patterns' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Duplicate' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ isCustomPattern && (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tisDestructive={ ! hasThemeFile }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsDeleteDialogOpen( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ hasThemeFile\n\t\t\t\t\t\t\t\t\t\t? __( 'Clear customizations' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Delete' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t</HStack>\n\n\t\t\t{ isDeleteDialogOpen && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tconfirmButtonText={ confirmButtonText }\n\t\t\t\t\tonConfirm={ deleteItem }\n\t\t\t\t\tonCancel={ () => setIsDeleteDialogOpen( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ confirmPrompt }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nexport default memo( GridItem );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","downloadjs","paramCase","kebabCase","BlockPreview","privateApis","blockEditorPrivateApis","Button","__experimentalConfirmDialog","ConfirmDialog","DropdownMenu","MenuGroup","MenuItem","__experimentalHeading","Heading","__experimentalHStack","HStack","Tooltip","Flex","useDispatch","useState","useId","memo","__","sprintf","Icon","header","footer","symbolFilled","uncategorized","symbol","moreVertical","lockSmall","store","noticesStore","reusableBlocksStore","RenameMenuItem","DuplicateMenuItem","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_SYNC_TYPES","editSiteStore","useLink","unlock","useGlobalStyle","templatePartIcons","GridItem","categoryId","item","props","descriptionId","isDeleteDialogOpen","setIsDeleteDialogOpen","backgroundColor","removeTemplate","__experimentalDeleteReusableBlock","createErrorNotice","createSuccessNotice","isUserPattern","type","user","isNonUserPattern","theme","isTemplatePart","onClick","postType","postId","id","name","categoryType","isEmpty","blocks","length","patternClassNames","previewClassNames","deletePattern","title","error","errorMessage","message","code","deleteItem","exportAsJSON","json","__file","content","patternBlock","raw","syncStatus","wp_pattern_sync_status","JSON","stringify","isCustomPattern","isCustom","hasThemeFile","templatePart","has_theme_file","ariaDescriptions","push","description","itemIcon","full","undefined","confirmButtonText","confirmPrompt","additionalStyles","css","createElement","className","map","_","index","join","ariaDescription","key","hidden","justify","alignment","spacing","placement","text","icon","as","gap","level","variant","tabIndex","size","label","popoverProps","toggleProps","describedBy","onClose","isDestructive","onConfirm","onCancel"],"sources":["@wordpress/edit-site/src/components/page-patterns/grid-item.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport downloadjs from 'downloadjs';\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalHeading as Heading,\n\t__experimentalHStack as HStack,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { useState, useId, memo } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tIcon,\n\theader,\n\tfooter,\n\tsymbolFilled as uncategorized,\n\tsymbol,\n\tmoreVertical,\n\tlockSmall,\n} from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\n\n/**\n * Internal dependencies\n */\nimport RenameMenuItem from './rename-menu-item';\nimport DuplicateMenuItem from './duplicate-menu-item';\nimport {\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n} from '../../utils/constants';\nimport { store as editSiteStore } from '../../store';\nimport { useLink } from '../routes/link';\nimport { unlock } from '../../lock-unlock';\n\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nconst templatePartIcons = { header, footer, uncategorized };\n\nfunction GridItem( { categoryId, item, ...props } ) {\n\tconst descriptionId = useId();\n\tconst [ isDeleteDialogOpen, setIsDeleteDialogOpen ] = useState( false );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\n\tconst { removeTemplate } = useDispatch( editSiteStore );\n\tconst { __experimentalDeleteReusableBlock } =\n\t\tuseDispatch( reusableBlocksStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isNonUserPattern = item.type === PATTERN_TYPES.theme;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: item.type,\n\t} );\n\n\tconst isEmpty = ! item.blocks?.length;\n\tconst patternClassNames = classnames( 'edit-site-patterns__pattern', {\n\t\t'is-placeholder': isEmpty,\n\t} );\n\tconst previewClassNames = classnames( 'edit-site-patterns__preview', {\n\t\t'is-inactive': isNonUserPattern,\n\t} );\n\n\tconst deletePattern = async () => {\n\t\ttry {\n\t\t\tawait __experimentalDeleteReusableBlock( item.id );\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The pattern's title e.g. 'Call to action'.\n\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\titem.title\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while deleting the pattern.' );\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t} );\n\t\t}\n\t};\n\tconst deleteItem = () =>\n\t\tisTemplatePart ? removeTemplate( item ) : deletePattern();\n\tconst exportAsJSON = () => {\n\t\tconst json = {\n\t\t\t__file: item.type,\n\t\t\ttitle: item.title,\n\t\t\tcontent: item.patternBlock.content.raw,\n\t\t\tsyncStatus: item.patternBlock.wp_pattern_sync_status,\n\t\t};\n\n\t\treturn downloadjs(\n\t\t\tJSON.stringify( json, null, 2 ),\n\t\t\t`${ kebabCase( item.title ) }.json`,\n\t\t\t'application/json'\n\t\t);\n\t};\n\n\t// Only custom patterns or custom template parts can be renamed or deleted.\n\tconst isCustomPattern =\n\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\tconst ariaDescriptions = [];\n\n\tif ( isCustomPattern ) {\n\t\t// User patterns don't have descriptions, but can be edited and deleted, so include some help text.\n\t\tariaDescriptions.push(\n\t\t\t__( 'Press Enter to edit, or Delete to delete the pattern.' )\n\t\t);\n\t} else if ( item.description ) {\n\t\tariaDescriptions.push( item.description );\n\t}\n\n\tif ( isNonUserPattern ) {\n\t\tariaDescriptions.push(\n\t\t\t__( 'Theme & plugin patterns cannot be edited.' )\n\t\t);\n\t}\n\n\tlet itemIcon;\n\tif ( ! isUserPattern && templatePartIcons[ categoryId ] ) {\n\t\titemIcon = templatePartIcons[ categoryId ];\n\t} else {\n\t\titemIcon =\n\t\t\titem.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;\n\t}\n\n\tconst confirmButtonText = hasThemeFile ? __( 'Clear' ) : __( 'Delete' );\n\tconst confirmPrompt = hasThemeFile\n\t\t? __( 'Are you sure you want to clear these customizations?' )\n\t\t: sprintf(\n\t\t\t\t// translators: %s: The pattern or template part's title e.g. 'Call to action'.\n\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\titem.title\n\t\t );\n\n\tconst additionalStyles = ! backgroundColor\n\t\t? [ { css: 'body { background: #fff; }' } ]\n\t\t: undefined;\n\n\treturn (\n\t\t<li className={ patternClassNames }>\n\t\t\t<button\n\t\t\t\tclassName={ previewClassNames }\n\t\t\t\t// Even though still incomplete, passing ids helps performance.\n\t\t\t\t// @see https://reakit.io/docs/composite/#performance.\n\t\t\t\tid={ `edit-site-patterns-${ item.name }` }\n\t\t\t\t{ ...props }\n\t\t\t\tonClick={\n\t\t\t\t\titem.type !== PATTERN_TYPES.theme ? onClick : undefined\n\t\t\t\t}\n\t\t\t\taria-disabled={\n\t\t\t\t\titem.type !== PATTERN_TYPES.theme ? 'false' : 'true'\n\t\t\t\t}\n\t\t\t\taria-label={ item.title }\n\t\t\t\taria-describedby={\n\t\t\t\t\tariaDescriptions.length\n\t\t\t\t\t\t? ariaDescriptions\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( _, index ) =>\n\t\t\t\t\t\t\t\t\t\t`${ descriptionId }-${ index }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isEmpty && isTemplatePart && __( 'Empty template part' ) }\n\t\t\t\t{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }\n\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\tblocks={ item.blocks }\n\t\t\t\t\t\tadditionalStyles={ additionalStyles }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</button>\n\t\t\t{ ariaDescriptions.map( ( ariaDescription, index ) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={ index }\n\t\t\t\t\thidden\n\t\t\t\t\tid={ `${ descriptionId }-${ index }` }\n\t\t\t\t>\n\t\t\t\t\t{ ariaDescription }\n\t\t\t\t</div>\n\t\t\t) ) }\n\t\t\t<HStack\n\t\t\t\tclassName=\"edit-site-patterns__footer\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tjustify=\"left\"\n\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\tclassName=\"edit-site-patterns__pattern-title\"\n\t\t\t\t>\n\t\t\t\t\t{ itemIcon && ! isNonUserPattern && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t\t\t'Editing this pattern will also update anywhere it is used'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-icon\"\n\t\t\t\t\t\t\t\ticon={ itemIcon }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t\t<Flex as=\"span\" gap={ 0 } justify=\"left\">\n\t\t\t\t\t\t{ item.type === PATTERN_TYPES.theme ? (\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Heading level={ 5 }>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\t\t\t// Required for the grid's roving tab index system.\n\t\t\t\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.\n\t\t\t\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ item.type === PATTERN_TYPES.theme && (\n\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\ttext={ __( 'This pattern cannot be edited.' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-lock-icon\"\n\t\t\t\t\t\t\t\t\ticon={ lockSmall }\n\t\t\t\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t</HStack>\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\tclassName=\"edit-site-patterns__dropdown\"\n\t\t\t\t\tpopoverProps={ { placement: 'bottom-end' } }\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tclassName: 'edit-site-patterns__button',\n\t\t\t\t\t\tdescribedBy: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: pattern name */\n\t\t\t\t\t\t\t__( 'Action menu for %s pattern' ),\n\t\t\t\t\t\t\titem.title\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t{ isCustomPattern && ! hasThemeFile && (\n\t\t\t\t\t\t\t\t<RenameMenuItem\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<DuplicateMenuItem\n\t\t\t\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\tlabel={ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ item.type === PATTERN_TYPES.user && (\n\t\t\t\t\t\t\t\t<MenuItem onClick={ () => exportAsJSON() }>\n\t\t\t\t\t\t\t\t\t{ __( 'Export as JSON' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t{ isCustomPattern && (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tisDestructive={ ! hasThemeFile }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsDeleteDialogOpen( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ hasThemeFile\n\t\t\t\t\t\t\t\t\t\t? __( 'Clear customizations' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Delete' ) }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t</HStack>\n\n\t\t\t{ isDeleteDialogOpen && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tconfirmButtonText={ confirmButtonText }\n\t\t\t\t\tonConfirm={ deleteItem }\n\t\t\t\t\tonCancel={ () => setIsDeleteDialogOpen( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ confirmPrompt }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</li>\n\t);\n}\n\nexport default memo( GridItem );\n"],"mappings":"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"}
@@ -3,7 +3,6 @@ import { createElement } from "@wordpress/element";
3
3
  * WordPress dependencies
4
4
  */
5
5
  import { __experimentalVStack as VStack, __experimentalHeading as Heading, __experimentalText as Text } from '@wordpress/components';
6
- import { __ } from '@wordpress/i18n';
7
6
  import { store as editorStore } from '@wordpress/editor';
8
7
  import { useSelect } from '@wordpress/data';
9
8
 
@@ -11,7 +10,7 @@ import { useSelect } from '@wordpress/data';
11
10
  * Internal dependencies
12
11
  */
13
12
  import usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';
14
- import { USER_PATTERN_CATEGORY, USER_PATTERNS, TEMPLATE_PARTS, PATTERNS } from './utils';
13
+ import { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES } from '../../utils/constants';
15
14
  export default function PatternsHeader({
16
15
  categoryId,
17
16
  type,
@@ -23,14 +22,11 @@ export default function PatternsHeader({
23
22
  } = usePatternCategories();
24
23
  const templatePartAreas = useSelect(select => select(editorStore).__experimentalGetDefaultTemplatePartAreas(), []);
25
24
  let title, description;
26
- if (categoryId === USER_PATTERN_CATEGORY && type === USER_PATTERNS) {
27
- title = __('My Patterns');
28
- description = '';
29
- } else if (type === TEMPLATE_PARTS) {
25
+ if (type === TEMPLATE_PART_POST_TYPE) {
30
26
  const templatePartArea = templatePartAreas.find(area => area.area === categoryId);
31
27
  title = templatePartArea?.label;
32
28
  description = templatePartArea?.description;
33
- } else if (type === PATTERNS) {
29
+ } else if (type === PATTERN_TYPES.theme) {
34
30
  const patternCategory = patternCategories.find(category => category.name === categoryId);
35
31
  title = patternCategory?.label;
36
32
  description = patternCategory?.description;
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalText","Text","__","store","editorStore","useSelect","usePatternCategories","USER_PATTERN_CATEGORY","USER_PATTERNS","TEMPLATE_PARTS","PATTERNS","PatternsHeader","categoryId","type","titleId","descriptionId","patternCategories","templatePartAreas","select","__experimentalGetDefaultTemplatePartAreas","title","description","templatePartArea","find","area","label","patternCategory","category","name","createElement","className","as","level","id","variant"],"sources":["@wordpress/edit-site/src/components/page-patterns/header.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as editorStore } from '@wordpress/editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\nimport {\n\tUSER_PATTERN_CATEGORY,\n\tUSER_PATTERNS,\n\tTEMPLATE_PARTS,\n\tPATTERNS,\n} from './utils';\n\nexport default function PatternsHeader( {\n\tcategoryId,\n\ttype,\n\ttitleId,\n\tdescriptionId,\n} ) {\n\tconst { patternCategories } = usePatternCategories();\n\tconst templatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).__experimentalGetDefaultTemplatePartAreas(),\n\t\t[]\n\t);\n\n\tlet title, description;\n\tif ( categoryId === USER_PATTERN_CATEGORY && type === USER_PATTERNS ) {\n\t\ttitle = __( 'My Patterns' );\n\t\tdescription = '';\n\t} else if ( type === TEMPLATE_PARTS ) {\n\t\tconst templatePartArea = templatePartAreas.find(\n\t\t\t( area ) => area.area === categoryId\n\t\t);\n\t\ttitle = templatePartArea?.label;\n\t\tdescription = templatePartArea?.description;\n\t} else if ( type === PATTERNS ) {\n\t\tconst patternCategory = patternCategories.find(\n\t\t\t( category ) => category.name === categoryId\n\t\t);\n\t\ttitle = patternCategory?.label;\n\t\tdescription = patternCategory?.description;\n\t}\n\n\tif ( ! title ) return null;\n\n\treturn (\n\t\t<VStack className=\"edit-site-patterns__section-header\">\n\t\t\t<Heading as=\"h2\" level={ 4 } id={ titleId }>\n\t\t\t\t{ title }\n\t\t\t</Heading>\n\t\t\t{ description ? (\n\t\t\t\t<Text variant=\"muted\" as=\"p\" id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</Text>\n\t\t\t) : null }\n\t\t</VStack>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,oBAAoB,IAAIC,MAAM,EAC9BC,qBAAqB,IAAIC,OAAO,EAChCC,kBAAkB,IAAIC,IAAI,QACpB,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,8DAA8D;AAC/F,SACCC,qBAAqB,EACrBC,aAAa,EACbC,cAAc,EACdC,QAAQ,QACF,SAAS;AAEhB,eAAe,SAASC,cAAcA,CAAE;EACvCC,UAAU;EACVC,IAAI;EACJC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAkB,CAAC,GAAGV,oBAAoB,CAAC,CAAC;EACpD,MAAMW,iBAAiB,GAAGZ,SAAS,CAChCa,MAAM,IACPA,MAAM,CAAEd,WAAY,CAAC,CAACe,yCAAyC,CAAC,CAAC,EAClE,EACD,CAAC;EAED,IAAIC,KAAK,EAAEC,WAAW;EACtB,IAAKT,UAAU,KAAKL,qBAAqB,IAAIM,IAAI,KAAKL,aAAa,EAAG;IACrEY,KAAK,GAAGlB,EAAE,CAAE,aAAc,CAAC;IAC3BmB,WAAW,GAAG,EAAE;EACjB,CAAC,MAAM,IAAKR,IAAI,KAAKJ,cAAc,EAAG;IACrC,MAAMa,gBAAgB,GAAGL,iBAAiB,CAACM,IAAI,CAC5CC,IAAI,IAAMA,IAAI,CAACA,IAAI,KAAKZ,UAC3B,CAAC;IACDQ,KAAK,GAAGE,gBAAgB,EAAEG,KAAK;IAC/BJ,WAAW,GAAGC,gBAAgB,EAAED,WAAW;EAC5C,CAAC,MAAM,IAAKR,IAAI,KAAKH,QAAQ,EAAG;IAC/B,MAAMgB,eAAe,GAAGV,iBAAiB,CAACO,IAAI,CAC3CI,QAAQ,IAAMA,QAAQ,CAACC,IAAI,KAAKhB,UACnC,CAAC;IACDQ,KAAK,GAAGM,eAAe,EAAED,KAAK;IAC9BJ,WAAW,GAAGK,eAAe,EAAEL,WAAW;EAC3C;EAEA,IAAK,CAAED,KAAK,EAAG,OAAO,IAAI;EAE1B,OACCS,aAAA,CAAChC,MAAM;IAACiC,SAAS,EAAC;EAAoC,GACrDD,aAAA,CAAC9B,OAAO;IAACgC,EAAE,EAAC,IAAI;IAACC,KAAK,EAAG,CAAG;IAACC,EAAE,EAAGnB;EAAS,GACxCM,KACM,CAAC,EACRC,WAAW,GACZQ,aAAA,CAAC5B,IAAI;IAACiC,OAAO,EAAC,OAAO;IAACH,EAAE,EAAC,GAAG;IAACE,EAAE,EAAGlB;EAAe,GAC9CM,WACG,CAAC,GACJ,IACG,CAAC;AAEX"}
1
+ {"version":3,"names":["__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalText","Text","store","editorStore","useSelect","usePatternCategories","TEMPLATE_PART_POST_TYPE","PATTERN_TYPES","PatternsHeader","categoryId","type","titleId","descriptionId","patternCategories","templatePartAreas","select","__experimentalGetDefaultTemplatePartAreas","title","description","templatePartArea","find","area","label","theme","patternCategory","category","name","createElement","className","as","level","id","variant"],"sources":["@wordpress/edit-site/src/components/page-patterns/header.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as editorStore } from '@wordpress/editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\nimport { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES } from '../../utils/constants';\n\nexport default function PatternsHeader( {\n\tcategoryId,\n\ttype,\n\ttitleId,\n\tdescriptionId,\n} ) {\n\tconst { patternCategories } = usePatternCategories();\n\tconst templatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).__experimentalGetDefaultTemplatePartAreas(),\n\t\t[]\n\t);\n\n\tlet title, description;\n\tif ( type === TEMPLATE_PART_POST_TYPE ) {\n\t\tconst templatePartArea = templatePartAreas.find(\n\t\t\t( area ) => area.area === categoryId\n\t\t);\n\t\ttitle = templatePartArea?.label;\n\t\tdescription = templatePartArea?.description;\n\t} else if ( type === PATTERN_TYPES.theme ) {\n\t\tconst patternCategory = patternCategories.find(\n\t\t\t( category ) => category.name === categoryId\n\t\t);\n\t\ttitle = patternCategory?.label;\n\t\tdescription = patternCategory?.description;\n\t}\n\n\tif ( ! title ) return null;\n\n\treturn (\n\t\t<VStack className=\"edit-site-patterns__section-header\">\n\t\t\t<Heading as=\"h2\" level={ 4 } id={ titleId }>\n\t\t\t\t{ title }\n\t\t\t</Heading>\n\t\t\t{ description ? (\n\t\t\t\t<Text variant=\"muted\" as=\"p\" id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</Text>\n\t\t\t) : null }\n\t\t</VStack>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,oBAAoB,IAAIC,MAAM,EAC9BC,qBAAqB,IAAIC,OAAO,EAChCC,kBAAkB,IAAIC,IAAI,QACpB,uBAAuB;AAC9B,SAASC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,8DAA8D;AAC/F,SAASC,uBAAuB,EAAEC,aAAa,QAAQ,uBAAuB;AAE9E,eAAe,SAASC,cAAcA,CAAE;EACvCC,UAAU;EACVC,IAAI;EACJC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAkB,CAAC,GAAGR,oBAAoB,CAAC,CAAC;EACpD,MAAMS,iBAAiB,GAAGV,SAAS,CAChCW,MAAM,IACPA,MAAM,CAAEZ,WAAY,CAAC,CAACa,yCAAyC,CAAC,CAAC,EAClE,EACD,CAAC;EAED,IAAIC,KAAK,EAAEC,WAAW;EACtB,IAAKR,IAAI,KAAKJ,uBAAuB,EAAG;IACvC,MAAMa,gBAAgB,GAAGL,iBAAiB,CAACM,IAAI,CAC5CC,IAAI,IAAMA,IAAI,CAACA,IAAI,KAAKZ,UAC3B,CAAC;IACDQ,KAAK,GAAGE,gBAAgB,EAAEG,KAAK;IAC/BJ,WAAW,GAAGC,gBAAgB,EAAED,WAAW;EAC5C,CAAC,MAAM,IAAKR,IAAI,KAAKH,aAAa,CAACgB,KAAK,EAAG;IAC1C,MAAMC,eAAe,GAAGX,iBAAiB,CAACO,IAAI,CAC3CK,QAAQ,IAAMA,QAAQ,CAACC,IAAI,KAAKjB,UACnC,CAAC;IACDQ,KAAK,GAAGO,eAAe,EAAEF,KAAK;IAC9BJ,WAAW,GAAGM,eAAe,EAAEN,WAAW;EAC3C;EAEA,IAAK,CAAED,KAAK,EAAG,OAAO,IAAI;EAE1B,OACCU,aAAA,CAAC9B,MAAM;IAAC+B,SAAS,EAAC;EAAoC,GACrDD,aAAA,CAAC5B,OAAO;IAAC8B,EAAE,EAAC,IAAI;IAACC,KAAK,EAAG,CAAG;IAACC,EAAE,EAAGpB;EAAS,GACxCM,KACM,CAAC,EACRC,WAAW,GACZS,aAAA,CAAC1B,IAAI;IAAC+B,OAAO,EAAC,OAAO;IAACH,EAAE,EAAC,GAAG;IAACE,EAAE,EAAGnB;EAAe,GAC9CM,WACG,CAAC,GACJ,IACG,CAAC;AAEX"}
@@ -9,7 +9,7 @@ import { getQueryArgs } from '@wordpress/url';
9
9
  /**
10
10
  * Internal dependencies
11
11
  */
12
- import { DEFAULT_CATEGORY, DEFAULT_TYPE } from './utils';
12
+ import { PATTERN_DEFAULT_CATEGORY, PATTERN_TYPES } from '../../utils/constants';
13
13
  import Page from '../page';
14
14
  import PatternsList from './patterns-list';
15
15
  import usePatternSettings from './use-pattern-settings';
@@ -22,8 +22,8 @@ export default function PagePatterns() {
22
22
  categoryType,
23
23
  categoryId
24
24
  } = getQueryArgs(window.location.href);
25
- const type = categoryType || DEFAULT_TYPE;
26
- const category = categoryId || DEFAULT_CATEGORY;
25
+ const type = categoryType || PATTERN_TYPES.user;
26
+ const category = categoryId || PATTERN_DEFAULT_CATEGORY;
27
27
  const settings = usePatternSettings();
28
28
 
29
29
  // Wrap everything in a block editor provider.