@wordpress/edit-site 5.26.0 → 5.27.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 (330) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/actions/index.js +139 -36
  3. package/build/components/actions/index.js.map +1 -1
  4. package/build/components/editor-canvas-container/index.js +1 -1
  5. package/build/components/editor-canvas-container/index.js.map +1 -1
  6. package/build/components/global-styles/font-families.js +3 -2
  7. package/build/components/global-styles/font-families.js.map +1 -1
  8. package/build/components/global-styles/font-family-item.js +3 -4
  9. package/build/components/global-styles/font-family-item.js.map +1 -1
  10. package/build/components/global-styles/font-library-modal/context.js +80 -41
  11. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/font-collection.js +49 -22
  13. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  15. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/index.js +4 -4
  17. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  19. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/library-font-card.js +1 -1
  21. package/build/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  22. package/build/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  23. package/build/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  24. package/build/components/global-styles/font-library-modal/local-fonts.js +13 -4
  25. package/build/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  26. package/build/components/global-styles/font-library-modal/resolvers.js +49 -20
  27. package/build/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  28. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  29. package/build/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  30. package/build/components/global-styles/font-library-modal/utils/index.js +103 -17
  31. package/build/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  32. package/build/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  33. package/build/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  34. package/build/components/global-styles/screen-typography.js +4 -1
  35. package/build/components/global-styles/screen-typography.js.map +1 -1
  36. package/build/components/layout/hooks.js +6 -5
  37. package/build/components/layout/hooks.js.map +1 -1
  38. package/build/components/layout/index.js +19 -28
  39. package/build/components/layout/index.js.map +1 -1
  40. package/build/components/layout/router.js +135 -0
  41. package/build/components/layout/router.js.map +1 -0
  42. package/build/components/page-pages/index.js +92 -69
  43. package/build/components/page-pages/index.js.map +1 -1
  44. package/build/components/page-patterns/dataviews-pattern-actions.js +11 -6
  45. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  46. package/build/components/page-patterns/index.js +295 -15
  47. package/build/components/page-patterns/index.js.map +1 -1
  48. package/build/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +51 -23
  49. package/build/components/page-templates-template-parts/actions.js.map +1 -0
  50. package/build/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  51. package/build/components/page-templates-template-parts/index.js +395 -0
  52. package/build/components/page-templates-template-parts/index.js.map +1 -0
  53. package/build/components/preferences-modal/index.js +9 -134
  54. package/build/components/preferences-modal/index.js.map +1 -1
  55. package/build/components/revisions/index.js +1 -1
  56. package/build/components/revisions/index.js.map +1 -1
  57. package/build/components/save-button/index.js +4 -2
  58. package/build/components/save-button/index.js.map +1 -1
  59. package/build/components/save-panel/index.js +6 -5
  60. package/build/components/save-panel/index.js.map +1 -1
  61. package/build/components/sidebar/index.js +3 -1
  62. package/build/components/sidebar/index.js.map +1 -1
  63. package/build/components/sidebar-dataviews/dataview-item.js +3 -1
  64. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  65. package/build/components/sidebar-dataviews/default-views.js +4 -2
  66. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  67. package/build/components/sidebar-dataviews/index.js +2 -2
  68. package/build/components/sidebar-dataviews/index.js.map +1 -1
  69. package/build/components/sidebar-navigation-screen/index.js +8 -7
  70. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  71. package/build/components/sidebar-navigation-screen-pages/index.js +2 -10
  72. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  73. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js +26 -3
  74. package/build/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  75. package/build/components/sidebar-navigation-screen-templates/index.js +63 -8
  76. package/build/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  77. package/build/components/sidebar-navigation-screen-templates-browse/content.js +76 -0
  78. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  79. package/build/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  80. package/build/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  81. package/build/components/site-hub/index.js +3 -1
  82. package/build/components/site-hub/index.js.map +1 -1
  83. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -12
  84. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  85. package/build/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  86. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  87. package/build/hooks/commands/use-edit-mode-commands.js +33 -5
  88. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  89. package/build/hooks/push-changes-to-global-styles/index.js +13 -6
  90. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  91. package/build/hooks/template-part-edit.js +7 -6
  92. package/build/hooks/template-part-edit.js.map +1 -1
  93. package/build/index.js +1 -1
  94. package/build/index.js.map +1 -1
  95. package/build/store/actions.js +11 -29
  96. package/build/store/actions.js.map +1 -1
  97. package/build/store/private-actions.js +85 -1
  98. package/build/store/private-actions.js.map +1 -1
  99. package/build/store/selectors.js +2 -2
  100. package/build/store/selectors.js.map +1 -1
  101. package/build/utils/get-is-list-page.js +1 -1
  102. package/build/utils/get-is-list-page.js.map +1 -1
  103. package/build/utils/use-actual-current-theme.js +32 -0
  104. package/build/utils/use-actual-current-theme.js.map +1 -0
  105. package/build-module/components/actions/index.js +139 -36
  106. package/build-module/components/actions/index.js.map +1 -1
  107. package/build-module/components/editor-canvas-container/index.js +1 -1
  108. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  109. package/build-module/components/global-styles/font-families.js +3 -2
  110. package/build-module/components/global-styles/font-families.js.map +1 -1
  111. package/build-module/components/global-styles/font-family-item.js +4 -5
  112. package/build-module/components/global-styles/font-family-item.js.map +1 -1
  113. package/build-module/components/global-styles/font-library-modal/context.js +82 -42
  114. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  115. package/build-module/components/global-styles/font-library-modal/font-collection.js +49 -22
  116. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  117. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +4 -1
  118. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +1 -1
  119. package/build-module/components/global-styles/font-library-modal/index.js +4 -4
  120. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  121. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +16 -8
  122. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  123. package/build-module/components/global-styles/font-library-modal/library-font-card.js +1 -1
  124. package/build-module/components/global-styles/font-library-modal/library-font-card.js.map +1 -1
  125. package/build-module/components/global-styles/font-library-modal/library-font-variant.js +2 -2
  126. package/build-module/components/global-styles/font-library-modal/library-font-variant.js.map +1 -1
  127. package/build-module/components/global-styles/font-library-modal/local-fonts.js +13 -4
  128. package/build-module/components/global-styles/font-library-modal/local-fonts.js.map +1 -1
  129. package/build-module/components/global-styles/font-library-modal/resolvers.js +45 -18
  130. package/build-module/components/global-styles/font-library-modal/resolvers.js.map +1 -1
  131. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js +17 -2
  132. package/build-module/components/global-styles/font-library-modal/utils/filter-fonts.js.map +1 -1
  133. package/build-module/components/global-styles/font-library-modal/utils/index.js +99 -16
  134. package/build-module/components/global-styles/font-library-modal/utils/index.js.map +1 -1
  135. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js +4 -3
  136. package/build-module/components/global-styles/font-library-modal/utils/preview-styles.js.map +1 -1
  137. package/build-module/components/global-styles/screen-typography.js +4 -1
  138. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  139. package/build-module/components/layout/hooks.js +6 -5
  140. package/build-module/components/layout/hooks.js.map +1 -1
  141. package/build-module/components/layout/index.js +19 -28
  142. package/build-module/components/layout/index.js.map +1 -1
  143. package/build-module/components/layout/router.js +127 -0
  144. package/build-module/components/layout/router.js.map +1 -0
  145. package/build-module/components/page-pages/index.js +91 -70
  146. package/build-module/components/page-pages/index.js.map +1 -1
  147. package/build-module/components/page-patterns/dataviews-pattern-actions.js +11 -6
  148. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  149. package/build-module/components/page-patterns/index.js +296 -16
  150. package/build-module/components/page-patterns/index.js.map +1 -1
  151. package/build-module/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +52 -24
  152. package/build-module/components/page-templates-template-parts/actions.js.map +1 -0
  153. package/build-module/components/page-templates-template-parts/add-new-template-part.js.map +1 -0
  154. package/build-module/components/page-templates-template-parts/index.js +385 -0
  155. package/build-module/components/page-templates-template-parts/index.js.map +1 -0
  156. package/build-module/components/preferences-modal/index.js +12 -136
  157. package/build-module/components/preferences-modal/index.js.map +1 -1
  158. package/build-module/components/revisions/index.js +1 -1
  159. package/build-module/components/revisions/index.js.map +1 -1
  160. package/build-module/components/save-button/index.js +4 -2
  161. package/build-module/components/save-button/index.js.map +1 -1
  162. package/build-module/components/save-panel/index.js +7 -6
  163. package/build-module/components/save-panel/index.js.map +1 -1
  164. package/build-module/components/sidebar/index.js +3 -1
  165. package/build-module/components/sidebar/index.js.map +1 -1
  166. package/build-module/components/sidebar-dataviews/dataview-item.js +3 -1
  167. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  168. package/build-module/components/sidebar-dataviews/default-views.js +4 -2
  169. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  170. package/build-module/components/sidebar-dataviews/index.js +2 -2
  171. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  172. package/build-module/components/sidebar-navigation-screen/index.js +8 -7
  173. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  174. package/build-module/components/sidebar-navigation-screen-pages/index.js +2 -10
  175. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  176. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js +27 -4
  177. package/build-module/components/sidebar-navigation-screen-pages-dataviews/index.js.map +1 -1
  178. package/build-module/components/sidebar-navigation-screen-templates/index.js +64 -9
  179. package/build-module/components/sidebar-navigation-screen-templates/index.js.map +1 -1
  180. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +68 -0
  181. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +1 -0
  182. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js +9 -2
  183. package/build-module/components/sidebar-navigation-screen-templates-browse/index.js.map +1 -1
  184. package/build-module/components/site-hub/index.js +3 -1
  185. package/build-module/components/site-hub/index.js.map +1 -1
  186. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +47 -11
  187. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  188. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +25 -2
  189. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  190. package/build-module/hooks/commands/use-edit-mode-commands.js +33 -5
  191. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  192. package/build-module/hooks/push-changes-to-global-styles/index.js +13 -6
  193. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  194. package/build-module/hooks/template-part-edit.js +7 -6
  195. package/build-module/hooks/template-part-edit.js.map +1 -1
  196. package/build-module/index.js +1 -1
  197. package/build-module/index.js.map +1 -1
  198. package/build-module/store/actions.js +13 -30
  199. package/build-module/store/actions.js.map +1 -1
  200. package/build-module/store/private-actions.js +83 -0
  201. package/build-module/store/private-actions.js.map +1 -1
  202. package/build-module/store/selectors.js +2 -2
  203. package/build-module/store/selectors.js.map +1 -1
  204. package/build-module/utils/get-is-list-page.js +1 -1
  205. package/build-module/utils/get-is-list-page.js.map +1 -1
  206. package/build-module/utils/use-actual-current-theme.js +24 -0
  207. package/build-module/utils/use-actual-current-theme.js.map +1 -0
  208. package/build-style/style-rtl.css +302 -188
  209. package/build-style/style.css +302 -188
  210. package/package.json +42 -42
  211. package/src/components/actions/index.js +236 -84
  212. package/src/components/editor-canvas-container/index.js +1 -1
  213. package/src/components/global-styles/font-families.js +14 -8
  214. package/src/components/global-styles/font-family-item.js +7 -4
  215. package/src/components/global-styles/font-library-modal/context.js +156 -50
  216. package/src/components/global-styles/font-library-modal/font-collection.js +56 -21
  217. package/src/components/global-styles/font-library-modal/fonts-grid.js +6 -2
  218. package/src/components/global-styles/font-library-modal/index.js +4 -4
  219. package/src/components/global-styles/font-library-modal/installed-fonts.js +18 -8
  220. package/src/components/global-styles/font-library-modal/library-font-card.js +2 -1
  221. package/src/components/global-styles/font-library-modal/library-font-variant.js +10 -9
  222. package/src/components/global-styles/font-library-modal/local-fonts.js +14 -4
  223. package/src/components/global-styles/font-library-modal/resolvers.js +50 -17
  224. package/src/components/global-styles/font-library-modal/style.scss +1 -0
  225. package/src/components/global-styles/font-library-modal/utils/filter-fonts.js +19 -2
  226. package/src/components/global-styles/font-library-modal/utils/index.js +136 -29
  227. package/src/components/global-styles/font-library-modal/utils/preview-styles.js +7 -3
  228. package/src/components/global-styles/font-library-modal/utils/test/filter-fonts.spec.js +40 -10
  229. package/src/components/global-styles/font-library-modal/utils/test/preview-styles.spec.js +5 -5
  230. package/src/components/global-styles/screen-typography.js +9 -3
  231. package/src/components/global-styles/style.scss +4 -0
  232. package/src/components/header-edit-mode/style.scss +15 -5
  233. package/src/components/layout/hooks.js +6 -5
  234. package/src/components/layout/index.js +80 -96
  235. package/src/components/layout/router.js +121 -0
  236. package/src/components/layout/style.scss +13 -16
  237. package/src/components/page/style.scss +1 -8
  238. package/src/components/page-pages/index.js +142 -148
  239. package/src/components/page-pages/style.scss +41 -2
  240. package/src/components/page-patterns/dataviews-pattern-actions.js +11 -6
  241. package/src/components/page-patterns/index.js +392 -14
  242. package/src/components/page-patterns/style.scss +36 -2
  243. package/src/components/{page-templates/template-actions.js → page-templates-template-parts/actions.js} +90 -37
  244. package/src/components/{page-templates → page-templates-template-parts}/index.js +198 -169
  245. package/src/components/page-templates-template-parts/style.scss +44 -0
  246. package/src/components/preferences-modal/index.js +8 -211
  247. package/src/components/revisions/index.js +1 -1
  248. package/src/components/save-button/index.js +7 -4
  249. package/src/components/save-panel/index.js +13 -12
  250. package/src/components/sidebar/index.js +4 -5
  251. package/src/components/sidebar-dataviews/dataview-item.js +2 -1
  252. package/src/components/sidebar-dataviews/default-views.js +4 -2
  253. package/src/components/sidebar-dataviews/index.js +8 -6
  254. package/src/components/sidebar-navigation-item/style.scss +1 -1
  255. package/src/components/sidebar-navigation-screen/index.js +19 -10
  256. package/src/components/sidebar-navigation-screen-pages/index.js +2 -10
  257. package/src/components/sidebar-navigation-screen-pages-dataviews/index.js +32 -6
  258. package/src/components/sidebar-navigation-screen-templates/index.js +85 -28
  259. package/src/components/sidebar-navigation-screen-templates/style.scss +9 -0
  260. package/src/components/sidebar-navigation-screen-templates-browse/content.js +73 -0
  261. package/src/components/sidebar-navigation-screen-templates-browse/index.js +10 -1
  262. package/src/components/site-hub/index.js +4 -1
  263. package/src/components/site-hub/style.scss +1 -12
  264. package/src/components/site-icon/style.scss +1 -1
  265. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +40 -10
  266. package/src/components/sync-state-with-url/use-sync-path-with-url.js +32 -0
  267. package/src/hooks/commands/use-edit-mode-commands.js +50 -3
  268. package/src/hooks/push-changes-to-global-styles/index.js +29 -23
  269. package/src/hooks/template-part-edit.js +12 -12
  270. package/src/index.js +1 -1
  271. package/src/store/actions.js +17 -51
  272. package/src/store/private-actions.js +133 -0
  273. package/src/store/selectors.js +2 -4
  274. package/src/style.scss +2 -1
  275. package/src/utils/get-is-list-page.js +3 -2
  276. package/src/utils/use-actual-current-theme.js +27 -0
  277. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  278. package/build/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  279. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -71
  280. package/build/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  281. package/build/components/page-main/index.js +0 -44
  282. package/build/components/page-main/index.js.map +0 -1
  283. package/build/components/page-patterns/dataviews-patterns.js +0 -307
  284. package/build/components/page-patterns/dataviews-patterns.js.map +0 -1
  285. package/build/components/page-template-parts/add-new-template-part.js.map +0 -1
  286. package/build/components/page-template-parts/index.js +0 -81
  287. package/build/components/page-template-parts/index.js.map +0 -1
  288. package/build/components/page-templates/index.js +0 -352
  289. package/build/components/page-templates/index.js.map +0 -1
  290. package/build/components/page-templates/template-actions.js.map +0 -1
  291. package/build/components/post-preview/index.js +0 -29
  292. package/build/components/post-preview/index.js.map +0 -1
  293. package/build/components/preferences-modal/enable-feature.js +0 -36
  294. package/build/components/preferences-modal/enable-feature.js.map +0 -1
  295. package/build/components/preferences-modal/enable-panel-option.js +0 -33
  296. package/build/components/preferences-modal/enable-panel-option.js.map +0 -1
  297. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -52
  298. package/build-module/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js.map +0 -1
  299. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -63
  300. package/build-module/components/global-styles/font-library-modal/utils/get-notice-from-response.js.map +0 -1
  301. package/build-module/components/page-main/index.js +0 -36
  302. package/build-module/components/page-main/index.js.map +0 -1
  303. package/build-module/components/page-patterns/dataviews-patterns.js +0 -299
  304. package/build-module/components/page-patterns/dataviews-patterns.js.map +0 -1
  305. package/build-module/components/page-template-parts/add-new-template-part.js.map +0 -1
  306. package/build-module/components/page-template-parts/index.js +0 -73
  307. package/build-module/components/page-template-parts/index.js.map +0 -1
  308. package/build-module/components/page-templates/index.js +0 -344
  309. package/build-module/components/page-templates/index.js.map +0 -1
  310. package/build-module/components/page-templates/template-actions.js.map +0 -1
  311. package/build-module/components/post-preview/index.js +0 -21
  312. package/build-module/components/post-preview/index.js.map +0 -1
  313. package/build-module/components/preferences-modal/enable-feature.js +0 -29
  314. package/build-module/components/preferences-modal/enable-feature.js.map +0 -1
  315. package/build-module/components/preferences-modal/enable-panel-option.js +0 -26
  316. package/build-module/components/preferences-modal/enable-panel-option.js.map +0 -1
  317. package/src/components/global-styles/font-library-modal/utils/get-intersecting-font-faces.js +0 -58
  318. package/src/components/global-styles/font-library-modal/utils/get-notice-from-response.js +0 -62
  319. package/src/components/global-styles/font-library-modal/utils/test/getIntersectingFontFaces.spec.js +0 -271
  320. package/src/components/global-styles/font-library-modal/utils/test/makeFormDataFromFontFamily.spec.js +0 -58
  321. package/src/components/page-main/index.js +0 -38
  322. package/src/components/page-patterns/dataviews-patterns.js +0 -380
  323. package/src/components/page-template-parts/index.js +0 -99
  324. package/src/components/page-templates/style.scss +0 -13
  325. package/src/components/post-preview/index.js +0 -16
  326. package/src/components/preferences-modal/enable-feature.js +0 -31
  327. package/src/components/preferences-modal/enable-panel-option.js +0 -23
  328. /package/build/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  329. /package/build-module/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
  330. /package/src/components/{page-template-parts → page-templates-template-parts}/add-new-template-part.js +0 -0
@@ -38,7 +38,7 @@ export const exportJSONaction = {
38
38
  id: 'export-pattern',
39
39
  label: __('Export as JSON'),
40
40
  isEligible: item => item.type === PATTERN_TYPES.user,
41
- callback: item => {
41
+ callback: ([item]) => {
42
42
  const json = {
43
43
  __file: item.type,
44
44
  title: item.title || item.name,
@@ -59,9 +59,10 @@ export const renameAction = {
59
59
  return isCustomPattern && !hasThemeFile;
60
60
  },
61
61
  RenderModal: ({
62
- item,
62
+ items,
63
63
  closeModal
64
64
  }) => {
65
+ const [item] = items;
65
66
  const [title, setTitle] = useState(() => item.title);
66
67
  const {
67
68
  editEntityRecord,
@@ -136,9 +137,10 @@ export const deleteAction = {
136
137
  },
137
138
  hideModalHeader: true,
138
139
  RenderModal: ({
139
- item,
140
+ items,
140
141
  closeModal
141
142
  }) => {
143
+ const [item] = items;
142
144
  const {
143
145
  __experimentalDeleteReusableBlock
144
146
  } = useDispatch(reusableBlocksStore);
@@ -192,9 +194,10 @@ export const resetAction = {
192
194
  },
193
195
  hideModalHeader: true,
194
196
  RenderModal: ({
195
- item,
197
+ items,
196
198
  closeModal
197
199
  }) => {
200
+ const [item] = items;
198
201
  const {
199
202
  removeTemplate
200
203
  } = useDispatch(editSiteStore);
@@ -217,9 +220,10 @@ export const duplicatePatternAction = {
217
220
  isEligible: item => item.type !== TEMPLATE_PART_POST_TYPE,
218
221
  modalHeader: _x('Duplicate pattern', 'action label'),
219
222
  RenderModal: ({
220
- item,
223
+ items,
221
224
  closeModal
222
225
  }) => {
226
+ const [item] = items;
223
227
  const {
224
228
  categoryId = PATTERN_DEFAULT_CATEGORY
225
229
  } = getQueryArgs(window.location.href);
@@ -253,9 +257,10 @@ export const duplicateTemplatePartAction = {
253
257
  isEligible: item => item.type === TEMPLATE_PART_POST_TYPE,
254
258
  modalHeader: _x('Duplicate template part', 'action label'),
255
259
  RenderModal: ({
256
- item,
260
+ items,
257
261
  closeModal
258
262
  }) => {
263
+ const [item] = items;
259
264
  const {
260
265
  createSuccessNotice
261
266
  } = useDispatch(noticesStore);
@@ -1 +1 @@
1
- {"version":3,"names":["paramCase","kebabCase","getQueryArgs","downloadBlob","__","_x","sprintf","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalText","Text","store","coreStore","useDispatch","useState","noticesStore","decodeEntities","reusableBlocksStore","privateApis","routerPrivateApis","patternsPrivateApis","unlock","editSiteStore","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_DEFAULT_CATEGORY","CreateTemplatePartModalContents","useHistory","CreatePatternModalContents","useDuplicatePatternProps","exportJSONaction","id","label","isEligible","item","type","user","callback","json","__file","title","name","content","patternPost","raw","syncStatus","wp_pattern_sync_status","JSON","stringify","renameAction","isTemplatePart","isUserPattern","isCustomPattern","isCustom","hasThemeFile","templatePart","has_theme_file","RenderModal","closeModal","setTitle","editEntityRecord","saveEditedEntityRecord","createSuccessNotice","createErrorNotice","onRename","event","preventDefault","throwOnError","error","fallbackErrorMessage","errorMessage","message","code","createElement","onSubmit","spacing","__nextHasNoMarginBottom","__next40pxDefaultSize","value","onChange","required","justify","variant","onClick","canDeleteOrReset","deleteAction","hideModalHeader","__experimentalDeleteReusableBlock","removeTemplate","deletePattern","deleteItem","resetAction","duplicatePatternAction","modalHeader","categoryId","window","location","href","isThemePattern","theme","history","onPatternSuccess","pattern","push","categoryType","postType","postId","duplicatedProps","onSuccess","onClose","confirmLabel","duplicateTemplatePartAction","onTemplatePartSuccess","blocks","defaultArea","area","defaultTitle","onCreate","onError"],"sources":["@wordpress/edit-site/src/components/page-patterns/dataviews-pattern-actions.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { getQueryArgs } from '@wordpress/url';\nimport { downloadBlob } from '@wordpress/blob';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport {\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_DEFAULT_CATEGORY,\n} from '../../utils/constants';\nimport { CreateTemplatePartModalContents } from '../create-template-part-modal';\n\nconst { useHistory } = unlock( routerPrivateApis );\nconst { CreatePatternModalContents, useDuplicatePatternProps } =\n\tunlock( patternsPrivateApis );\n\nexport const exportJSONaction = {\n\tid: 'export-pattern',\n\tlabel: __( 'Export as JSON' ),\n\tisEligible: ( item ) => item.type === PATTERN_TYPES.user,\n\tcallback: ( item ) => {\n\t\tconst json = {\n\t\t\t__file: item.type,\n\t\t\ttitle: item.title || item.name,\n\t\t\tcontent: item.patternPost.content.raw,\n\t\t\tsyncStatus: item.patternPost.wp_pattern_sync_status,\n\t\t};\n\t\treturn downloadBlob(\n\t\t\t`${ kebabCase( item.title || item.name ) }.json`,\n\t\t\tJSON.stringify( json, null, 2 ),\n\t\t\t'application/json'\n\t\t);\n\t},\n};\n\nexport const renameAction = {\n\tid: 'rename-pattern',\n\tlabel: __( 'Rename' ),\n\tisEligible: ( item ) => {\n\t\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\t\tconst isCustomPattern =\n\t\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\t\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\t\treturn isCustomPattern && ! hasThemeFile;\n\t},\n\tRenderModal: ( { item, closeModal } ) => {\n\t\tconst [ title, setTitle ] = useState( () => item.title );\n\t\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\t\tuseDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tasync function onRename( event ) {\n\t\t\tevent.preventDefault();\n\t\t\ttry {\n\t\t\t\tawait editEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\ttitle,\n\t\t\t\t} );\n\t\t\t\t// Update state before saving rerenders the list.\n\t\t\t\tsetTitle( '' );\n\t\t\t\tcloseModal();\n\t\t\t\t// Persist edited entity.\n\t\t\t\tawait saveEditedEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t} );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t\t? __( 'Template part renamed.' )\n\t\t\t\t\t\t: __( 'Pattern renamed.' ),\n\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tconst fallbackErrorMessage =\n\t\t\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'An error occurred while renaming the template part.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'An error occurred while renaming the pattern.' );\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: fallbackErrorMessage;\n\t\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t\t}\n\t\t}\n\t\treturn (\n\t\t\t<form onSubmit={ onRename }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t);\n\t},\n};\n\nconst canDeleteOrReset = ( item ) => {\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\treturn isUserPattern || ( isTemplatePart && item.isCustom );\n};\n\nexport const deleteAction = {\n\tid: 'delete-pattern',\n\tlabel: __( 'Delete' ),\n\tisEligible: ( item ) => {\n\t\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\t\treturn canDeleteOrReset( item ) && ! hasThemeFile;\n\t},\n\thideModalHeader: true,\n\tRenderModal: ( { item, closeModal } ) => {\n\t\tconst { __experimentalDeleteReusableBlock } =\n\t\t\tuseDispatch( reusableBlocksStore );\n\t\tconst { createErrorNotice, createSuccessNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tconst { removeTemplate } = useDispatch( editSiteStore );\n\n\t\tconst deletePattern = async () => {\n\t\t\ttry {\n\t\t\t\tawait __experimentalDeleteReusableBlock( item.id );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: The pattern's title e.g. 'Call to action'.\n\t\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\t\titem.title\n\t\t\t\t\t),\n\t\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: __( 'An error occurred while deleting the pattern.' );\n\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\t\tconst deleteItem = () =>\n\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t? removeTemplate( item )\n\t\t\t\t: deletePattern();\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t// translators: %s: The pattern or template part's title e.g. 'Call to action'.\n\t\t\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\t\t\tdecodeEntities( item.title || item.name )\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ closeModal }>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button variant=\"primary\" onClick={ deleteItem }>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nexport const resetAction = {\n\tid: 'reset-action',\n\tlabel: __( 'Clear customizations' ),\n\tisEligible: ( item ) => {\n\t\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\t\treturn canDeleteOrReset( item ) && hasThemeFile;\n\t},\n\thideModalHeader: true,\n\tRenderModal: ( { item, closeModal } ) => {\n\t\tconst { removeTemplate } = useDispatch( editSiteStore );\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Are you sure you want to clear these customizations?'\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ closeModal }>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ () => removeTemplate( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Clear' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nexport const duplicatePatternAction = {\n\tid: 'duplicate-pattern',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type !== TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate pattern', 'action label' ),\n\tRenderModal: ( { item, closeModal } ) => {\n\t\tconst { categoryId = PATTERN_DEFAULT_CATEGORY } = getQueryArgs(\n\t\t\twindow.location.href\n\t\t);\n\t\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\t\tconst history = useHistory();\n\t\tfunction onPatternSuccess( { pattern } ) {\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: pattern.id,\n\t\t\t} );\n\t\t\tcloseModal();\n\t\t}\n\t\tconst duplicatedProps = useDuplicatePatternProps( {\n\t\t\tpattern: isThemePattern ? item : item.patternPost,\n\t\t\tonSuccess: onPatternSuccess,\n\t\t} );\n\t\treturn (\n\t\t\t<CreatePatternModalContents\n\t\t\t\tonClose={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t\t{ ...duplicatedProps }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nexport const duplicateTemplatePartAction = {\n\tid: 'duplicate-template-part',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type === TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate template part', 'action label' ),\n\tRenderModal: ( { item, closeModal } ) => {\n\t\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\t\tconst { categoryId = PATTERN_DEFAULT_CATEGORY } = getQueryArgs(\n\t\t\twindow.location.href\n\t\t);\n\t\tconst history = useHistory();\n\t\tasync function onTemplatePartSuccess( templatePart ) {\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{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t\thistory.push( {\n\t\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tpostId: templatePart?.id,\n\t\t\t\tcategoryType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tcategoryId,\n\t\t\t} );\n\t\t\tcloseModal();\n\t\t}\n\t\treturn (\n\t\t\t<CreateTemplatePartModalContents\n\t\t\t\tblocks={ item.blocks }\n\t\t\t\tdefaultArea={ item.templatePart.area }\n\t\t\t\tdefaultTitle={ sprintf(\n\t\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\titem.title\n\t\t\t\t) }\n\t\t\t\tonCreate={ onTemplatePartSuccess }\n\t\t\t\tonError={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t/>\n\t\t);\n\t},\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["paramCase","kebabCase","getQueryArgs","downloadBlob","__","_x","sprintf","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalText","Text","store","coreStore","useDispatch","useState","noticesStore","decodeEntities","reusableBlocksStore","privateApis","routerPrivateApis","patternsPrivateApis","unlock","editSiteStore","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_DEFAULT_CATEGORY","CreateTemplatePartModalContents","useHistory","CreatePatternModalContents","useDuplicatePatternProps","exportJSONaction","id","label","isEligible","item","type","user","callback","json","__file","title","name","content","patternPost","raw","syncStatus","wp_pattern_sync_status","JSON","stringify","renameAction","isTemplatePart","isUserPattern","isCustomPattern","isCustom","hasThemeFile","templatePart","has_theme_file","RenderModal","items","closeModal","setTitle","editEntityRecord","saveEditedEntityRecord","createSuccessNotice","createErrorNotice","onRename","event","preventDefault","throwOnError","error","fallbackErrorMessage","errorMessage","message","code","createElement","onSubmit","spacing","__nextHasNoMarginBottom","__next40pxDefaultSize","value","onChange","required","justify","variant","onClick","canDeleteOrReset","deleteAction","hideModalHeader","__experimentalDeleteReusableBlock","removeTemplate","deletePattern","deleteItem","resetAction","duplicatePatternAction","modalHeader","categoryId","window","location","href","isThemePattern","theme","history","onPatternSuccess","pattern","push","categoryType","postType","postId","duplicatedProps","onSuccess","onClose","confirmLabel","duplicateTemplatePartAction","onTemplatePartSuccess","blocks","defaultArea","area","defaultTitle","onCreate","onError"],"sources":["@wordpress/edit-site/src/components/page-patterns/dataviews-pattern-actions.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { getQueryArgs } from '@wordpress/url';\nimport { downloadBlob } from '@wordpress/blob';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport {\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_DEFAULT_CATEGORY,\n} from '../../utils/constants';\nimport { CreateTemplatePartModalContents } from '../create-template-part-modal';\n\nconst { useHistory } = unlock( routerPrivateApis );\nconst { CreatePatternModalContents, useDuplicatePatternProps } =\n\tunlock( patternsPrivateApis );\n\nexport const exportJSONaction = {\n\tid: 'export-pattern',\n\tlabel: __( 'Export as JSON' ),\n\tisEligible: ( item ) => item.type === PATTERN_TYPES.user,\n\tcallback: ( [ item ] ) => {\n\t\tconst json = {\n\t\t\t__file: item.type,\n\t\t\ttitle: item.title || item.name,\n\t\t\tcontent: item.patternPost.content.raw,\n\t\t\tsyncStatus: item.patternPost.wp_pattern_sync_status,\n\t\t};\n\t\treturn downloadBlob(\n\t\t\t`${ kebabCase( item.title || item.name ) }.json`,\n\t\t\tJSON.stringify( json, null, 2 ),\n\t\t\t'application/json'\n\t\t);\n\t},\n};\n\nexport const renameAction = {\n\tid: 'rename-pattern',\n\tlabel: __( 'Rename' ),\n\tisEligible: ( item ) => {\n\t\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\t\tconst isCustomPattern =\n\t\t\tisUserPattern || ( isTemplatePart && item.isCustom );\n\t\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\t\treturn isCustomPattern && ! hasThemeFile;\n\t},\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst [ title, setTitle ] = useState( () => item.title );\n\t\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\t\tuseDispatch( coreStore );\n\t\tconst { createSuccessNotice, createErrorNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tasync function onRename( event ) {\n\t\t\tevent.preventDefault();\n\t\t\ttry {\n\t\t\t\tawait editEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\ttitle,\n\t\t\t\t} );\n\t\t\t\t// Update state before saving rerenders the list.\n\t\t\t\tsetTitle( '' );\n\t\t\t\tcloseModal();\n\t\t\t\t// Persist edited entity.\n\t\t\t\tawait saveEditedEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t} );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t\t? __( 'Template part renamed.' )\n\t\t\t\t\t\t: __( 'Pattern renamed.' ),\n\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tconst fallbackErrorMessage =\n\t\t\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'An error occurred while renaming the template part.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'An error occurred while renaming the pattern.' );\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: fallbackErrorMessage;\n\t\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t\t}\n\t\t}\n\t\treturn (\n\t\t\t<form onSubmit={ onRename }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseModal();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t);\n\t},\n};\n\nconst canDeleteOrReset = ( item ) => {\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\treturn isUserPattern || ( isTemplatePart && item.isCustom );\n};\n\nexport const deleteAction = {\n\tid: 'delete-pattern',\n\tlabel: __( 'Delete' ),\n\tisEligible: ( item ) => {\n\t\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\t\treturn canDeleteOrReset( item ) && ! hasThemeFile;\n\t},\n\thideModalHeader: true,\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst { __experimentalDeleteReusableBlock } =\n\t\t\tuseDispatch( reusableBlocksStore );\n\t\tconst { createErrorNotice, createSuccessNotice } =\n\t\t\tuseDispatch( noticesStore );\n\t\tconst { removeTemplate } = useDispatch( editSiteStore );\n\n\t\tconst deletePattern = async () => {\n\t\t\ttry {\n\t\t\t\tawait __experimentalDeleteReusableBlock( item.id );\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: The pattern's title e.g. 'Call to action'.\n\t\t\t\t\t\t__( '\"%s\" deleted.' ),\n\t\t\t\t\t\titem.title\n\t\t\t\t\t),\n\t\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tconst errorMessage =\n\t\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t: __( 'An error occurred while deleting the pattern.' );\n\t\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'edit-site-patterns-error',\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\t\tconst deleteItem = () =>\n\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t? removeTemplate( item )\n\t\t\t\t: deletePattern();\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t// translators: %s: The pattern or template part's title e.g. 'Call to action'.\n\t\t\t\t\t\t__( 'Are you sure you want to delete \"%s\"?' ),\n\t\t\t\t\t\tdecodeEntities( item.title || item.name )\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ closeModal }>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button variant=\"primary\" onClick={ deleteItem }>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nexport const resetAction = {\n\tid: 'reset-action',\n\tlabel: __( 'Clear customizations' ),\n\tisEligible: ( item ) => {\n\t\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\t\tconst hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;\n\t\treturn canDeleteOrReset( item ) && hasThemeFile;\n\t},\n\thideModalHeader: true,\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst { removeTemplate } = useDispatch( editSiteStore );\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Are you sure you want to clear these customizations?'\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button variant=\"tertiary\" onClick={ closeModal }>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ () => removeTemplate( item ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Clear' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nexport const duplicatePatternAction = {\n\tid: 'duplicate-pattern',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type !== TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate pattern', 'action label' ),\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst { categoryId = PATTERN_DEFAULT_CATEGORY } = getQueryArgs(\n\t\t\twindow.location.href\n\t\t);\n\t\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\t\tconst history = useHistory();\n\t\tfunction onPatternSuccess( { pattern } ) {\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: pattern.id,\n\t\t\t} );\n\t\t\tcloseModal();\n\t\t}\n\t\tconst duplicatedProps = useDuplicatePatternProps( {\n\t\t\tpattern: isThemePattern ? item : item.patternPost,\n\t\t\tonSuccess: onPatternSuccess,\n\t\t} );\n\t\treturn (\n\t\t\t<CreatePatternModalContents\n\t\t\t\tonClose={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t\t{ ...duplicatedProps }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nexport const duplicateTemplatePartAction = {\n\tid: 'duplicate-template-part',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type === TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate template part', 'action label' ),\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\t\tconst { categoryId = PATTERN_DEFAULT_CATEGORY } = getQueryArgs(\n\t\t\twindow.location.href\n\t\t);\n\t\tconst history = useHistory();\n\t\tasync function onTemplatePartSuccess( templatePart ) {\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{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t\thistory.push( {\n\t\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tpostId: templatePart?.id,\n\t\t\t\tcategoryType: TEMPLATE_PART_POST_TYPE,\n\t\t\t\tcategoryId,\n\t\t\t} );\n\t\t\tcloseModal();\n\t\t}\n\t\treturn (\n\t\t\t<CreateTemplatePartModalContents\n\t\t\t\tblocks={ item.blocks }\n\t\t\t\tdefaultArea={ item.templatePart.area }\n\t\t\t\tdefaultTitle={ sprintf(\n\t\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\titem.title\n\t\t\t\t) }\n\t\t\t\tonCreate={ onTemplatePartSuccess }\n\t\t\t\tonError={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t/>\n\t\t);\n\t},\n};\n"],"mappings":"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"}
@@ -1,46 +1,326 @@
1
- import { createElement } from "react";
1
+ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { __ } from '@wordpress/i18n';
6
- import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
5
+ import { __experimentalHStack as HStack, Button, Tooltip, Flex } from '@wordpress/components';
7
6
  import { getQueryArgs } from '@wordpress/url';
7
+ import { __, _x } from '@wordpress/i18n';
8
+ import { useState, useMemo, useCallback, useId, useEffect } from '@wordpress/element';
9
+ import { BlockPreview, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
10
+ import { DataViews, sortByTextFields, getPaginationResults } from '@wordpress/dataviews';
11
+ import { Icon, header, footer, symbolFilled as uncategorized, symbol, lockSmall } from '@wordpress/icons';
12
+ import { usePrevious } from '@wordpress/compose';
8
13
 
9
14
  /**
10
15
  * Internal dependencies
11
16
  */
12
- import { PATTERN_DEFAULT_CATEGORY, PATTERN_TYPES } from '../../utils/constants';
13
17
  import Page from '../page';
14
- import PatternsList from './patterns-list';
18
+ import { LAYOUT_GRID, PATTERN_TYPES, TEMPLATE_PART_POST_TYPE, PATTERN_SYNC_TYPES, PATTERN_DEFAULT_CATEGORY, ENUMERATION_TYPE, OPERATOR_IN } from '../../utils/constants';
19
+ import { exportJSONaction, renameAction, resetAction, deleteAction, duplicatePatternAction, duplicateTemplatePartAction } from './dataviews-pattern-actions';
15
20
  import usePatternSettings from './use-pattern-settings';
16
21
  import { unlock } from '../../lock-unlock';
22
+ import usePatterns from './use-patterns';
23
+ import PatternsHeader from './header';
24
+ import { useLink } from '../routes/link';
17
25
  const {
18
- ExperimentalBlockEditorProvider
26
+ ExperimentalBlockEditorProvider,
27
+ useGlobalStyle
19
28
  } = unlock(blockEditorPrivateApis);
20
- export default function PagePatterns() {
29
+ const templatePartIcons = {
30
+ header,
31
+ footer,
32
+ uncategorized
33
+ };
34
+ const EMPTY_ARRAY = [];
35
+ const defaultConfigPerViewType = {
36
+ [LAYOUT_GRID]: {
37
+ mediaField: 'preview',
38
+ primaryField: 'title'
39
+ }
40
+ };
41
+ const DEFAULT_VIEW = {
42
+ type: LAYOUT_GRID,
43
+ search: '',
44
+ page: 1,
45
+ perPage: 20,
46
+ hiddenFields: ['sync-status'],
47
+ layout: {
48
+ ...defaultConfigPerViewType[LAYOUT_GRID]
49
+ },
50
+ filters: []
51
+ };
52
+ const SYNC_FILTERS = [{
53
+ value: PATTERN_SYNC_TYPES.full,
54
+ label: _x('Synced', 'Option that shows all synchronized patterns'),
55
+ description: __('Patterns that are kept in sync across the site.')
56
+ }, {
57
+ value: PATTERN_SYNC_TYPES.unsynced,
58
+ label: _x('Not synced', 'Option that shows all patterns that are not synchronized'),
59
+ description: __('Patterns that can be changed freely without affecting the site.')
60
+ }];
61
+ function PreviewWrapper({
62
+ item,
63
+ onClick,
64
+ ariaDescribedBy,
65
+ children
66
+ }) {
67
+ if (item.type === PATTERN_TYPES.theme) {
68
+ return children;
69
+ }
70
+ return createElement("button", {
71
+ className: "page-patterns-preview-field__button",
72
+ type: "button",
73
+ onClick: onClick,
74
+ "aria-label": item.title,
75
+ "aria-describedby": ariaDescribedBy
76
+ }, children);
77
+ }
78
+ function Preview({
79
+ item,
80
+ categoryId,
81
+ viewType
82
+ }) {
83
+ const descriptionId = useId();
84
+ const isUserPattern = item.type === PATTERN_TYPES.user;
85
+ const isNonUserPattern = item.type === PATTERN_TYPES.theme;
86
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
87
+ const isEmpty = !item.blocks?.length;
88
+ // Only custom patterns or custom template parts can be renamed or deleted.
89
+ const isCustomPattern = isUserPattern || isTemplatePart && item.isCustom;
90
+ const ariaDescriptions = [];
91
+ if (isCustomPattern) {
92
+ // User patterns don't have descriptions, but can be edited and deleted, so include some help text.
93
+ ariaDescriptions.push(__('Press Enter to edit, or Delete to delete the pattern.'));
94
+ } else if (item.description) {
95
+ ariaDescriptions.push(item.description);
96
+ }
97
+ if (isNonUserPattern) {
98
+ ariaDescriptions.push(__('Theme & plugin patterns cannot be edited.'));
99
+ }
100
+ const [backgroundColor] = useGlobalStyle('color.background');
101
+ const {
102
+ onClick
103
+ } = useLink({
104
+ postType: item.type,
105
+ postId: isUserPattern ? item.id : item.name,
106
+ categoryId,
107
+ categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme
108
+ });
109
+ return createElement(Fragment, null, createElement("div", {
110
+ className: `page-patterns-preview-field is-viewtype-${viewType}`,
111
+ style: {
112
+ backgroundColor
113
+ }
114
+ }, createElement(PreviewWrapper, {
115
+ item: item,
116
+ onClick: onClick,
117
+ ariaDescribedBy: ariaDescriptions.length ? ariaDescriptions.map((_, index) => `${descriptionId}-${index}`).join(' ') : undefined
118
+ }, isEmpty && isTemplatePart && __('Empty template part'), isEmpty && !isTemplatePart && __('Empty pattern'), !isEmpty && createElement(BlockPreview, {
119
+ blocks: item.blocks
120
+ }))), ariaDescriptions.map((ariaDescription, index) => createElement("div", {
121
+ key: index,
122
+ hidden: true,
123
+ id: `${descriptionId}-${index}`
124
+ }, ariaDescription)));
125
+ }
126
+ function Title({
127
+ item,
128
+ categoryId
129
+ }) {
130
+ const isUserPattern = item.type === PATTERN_TYPES.user;
131
+ const isNonUserPattern = item.type === PATTERN_TYPES.theme;
132
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
133
+ let itemIcon;
134
+ const {
135
+ onClick
136
+ } = useLink({
137
+ postType: item.type,
138
+ postId: isUserPattern ? item.id : item.name,
139
+ categoryId,
140
+ categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme
141
+ });
142
+ if (!isUserPattern && templatePartIcons[categoryId]) {
143
+ itemIcon = templatePartIcons[categoryId];
144
+ } else {
145
+ itemIcon = item.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;
146
+ }
147
+ return createElement(HStack, {
148
+ alignment: "center",
149
+ justify: "flex-start",
150
+ spacing: 2
151
+ }, itemIcon && !isNonUserPattern && createElement(Tooltip, {
152
+ placement: "top",
153
+ text: __('Editing this pattern will also update anywhere it is used')
154
+ }, createElement(Icon, {
155
+ className: "edit-site-patterns__pattern-icon",
156
+ icon: itemIcon
157
+ })), item.type === PATTERN_TYPES.theme && createElement(Tooltip, {
158
+ placement: "top",
159
+ text: __('This pattern cannot be edited.')
160
+ }, createElement(Icon, {
161
+ className: "edit-site-patterns__pattern-lock-icon",
162
+ icon: lockSmall,
163
+ size: 24
164
+ })), createElement(Flex, {
165
+ as: "div",
166
+ gap: 0,
167
+ justify: "left",
168
+ className: "edit-site-patterns__pattern-title"
169
+ }, item.type === PATTERN_TYPES.theme ? item.title : createElement(Button, {
170
+ variant: "link",
171
+ onClick: onClick
172
+ // Required for the grid's roving tab index system.
173
+ // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
174
+ ,
175
+ tabIndex: "-1"
176
+ }, item.title || item.name)));
177
+ }
178
+ export default function DataviewsPatterns() {
21
179
  const {
22
180
  categoryType,
23
- categoryId
181
+ categoryId = PATTERN_DEFAULT_CATEGORY
24
182
  } = getQueryArgs(window.location.href);
25
183
  const type = categoryType || PATTERN_TYPES.theme;
26
- const category = categoryId || PATTERN_DEFAULT_CATEGORY;
184
+ const [view, setView] = useState(DEFAULT_VIEW);
185
+ const isUncategorizedThemePatterns = type === PATTERN_TYPES.theme && categoryId === 'uncategorized';
186
+ const previousCategoryId = usePrevious(categoryId);
187
+ const viewSyncStatus = view.filters?.find(({
188
+ field
189
+ }) => field === 'sync-status')?.value;
190
+ const {
191
+ patterns,
192
+ isResolving
193
+ } = usePatterns(type, isUncategorizedThemePatterns ? '' : categoryId, {
194
+ search: view.search,
195
+ syncStatus: viewSyncStatus
196
+ });
197
+ const fields = useMemo(() => {
198
+ const _fields = [{
199
+ header: __('Preview'),
200
+ id: 'preview',
201
+ render: ({
202
+ item
203
+ }) => createElement(Preview, {
204
+ item: item,
205
+ categoryId: categoryId,
206
+ viewType: view.type
207
+ }),
208
+ enableSorting: false,
209
+ enableHiding: false
210
+ }, {
211
+ header: __('Title'),
212
+ id: 'title',
213
+ getValue: ({
214
+ item
215
+ }) => item.title,
216
+ render: ({
217
+ item
218
+ }) => createElement(Title, {
219
+ item: item,
220
+ categoryId: categoryId
221
+ }),
222
+ enableHiding: false
223
+ }];
224
+ if (type === PATTERN_TYPES.theme) {
225
+ _fields.push({
226
+ header: __('Sync Status'),
227
+ id: 'sync-status',
228
+ render: ({
229
+ item
230
+ }) => {
231
+ // User patterns can have their sync statuses checked directly.
232
+ // Non-user patterns are all unsynced for the time being.
233
+ return SYNC_FILTERS.find(({
234
+ value
235
+ }) => value === item.syncStatus)?.label || SYNC_FILTERS.find(({
236
+ value
237
+ }) => value === PATTERN_SYNC_TYPES.unsynced).label;
238
+ },
239
+ type: ENUMERATION_TYPE,
240
+ elements: SYNC_FILTERS,
241
+ filterBy: {
242
+ operators: [OPERATOR_IN]
243
+ },
244
+ enableSorting: false
245
+ });
246
+ }
247
+ return _fields;
248
+ }, [view.type, categoryId, type]);
249
+ // Reset the page number when the category changes.
250
+ useEffect(() => {
251
+ if (previousCategoryId !== categoryId) {
252
+ setView(DEFAULT_VIEW);
253
+ }
254
+ }, [categoryId, previousCategoryId]);
255
+ const {
256
+ data,
257
+ paginationInfo
258
+ } = useMemo(() => {
259
+ if (!patterns) {
260
+ return {
261
+ data: EMPTY_ARRAY,
262
+ paginationInfo: {
263
+ totalItems: 0,
264
+ totalPages: 0
265
+ }
266
+ };
267
+ }
268
+ let filteredData = [...patterns];
269
+ // Handle sorting.
270
+ if (view.sort) {
271
+ filteredData = sortByTextFields({
272
+ data: filteredData,
273
+ view,
274
+ fields,
275
+ textFields: ['title', 'author']
276
+ });
277
+ }
278
+ // Handle pagination.
279
+ return getPaginationResults({
280
+ data: filteredData,
281
+ view
282
+ });
283
+ }, [patterns, view, fields]);
284
+ const actions = useMemo(() => [renameAction, duplicatePatternAction, duplicateTemplatePartAction, exportJSONaction, resetAction, deleteAction], []);
285
+ const onChangeView = useCallback(newView => {
286
+ if (newView.type !== view.type) {
287
+ newView = {
288
+ ...newView,
289
+ layout: {
290
+ ...defaultConfigPerViewType[newView.type]
291
+ }
292
+ };
293
+ }
294
+ setView(newView);
295
+ }, [view.type, setView]);
296
+ const id = useId();
27
297
  const settings = usePatternSettings();
28
-
29
298
  // Wrap everything in a block editor provider.
30
299
  // This ensures 'styles' that are needed for the previews are synced
31
300
  // from the site editor store to the block editor store.
301
+ // TODO: check if I add the provider in every preview like in templates...
32
302
  return createElement(ExperimentalBlockEditorProvider, {
33
303
  settings: settings
34
304
  }, createElement(Page, {
35
- className: "edit-site-patterns",
36
305
  title: __('Patterns content'),
306
+ className: "edit-site-page-patterns-dataviews",
37
307
  hideTitleFromUI: true
38
- }, createElement(PatternsList
39
- // Reset the states when switching between categories and types.
40
- , {
41
- key: `${type}-${category}`,
308
+ }, createElement(PatternsHeader, {
309
+ categoryId: categoryId,
42
310
  type: type,
43
- categoryId: category
311
+ titleId: `${id}-title`,
312
+ descriptionId: `${id}-description`
313
+ }), createElement(DataViews, {
314
+ paginationInfo: paginationInfo,
315
+ fields: fields,
316
+ actions: actions,
317
+ data: data || EMPTY_ARRAY,
318
+ getItemId: item => item.name,
319
+ isLoading: isResolving,
320
+ view: view,
321
+ onChangeView: onChangeView,
322
+ deferredRendering: true,
323
+ supportedLayouts: [LAYOUT_GRID]
44
324
  })));
45
325
  }
46
326
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__","privateApis","blockEditorPrivateApis","getQueryArgs","PATTERN_DEFAULT_CATEGORY","PATTERN_TYPES","Page","PatternsList","usePatternSettings","unlock","ExperimentalBlockEditorProvider","PagePatterns","categoryType","categoryId","window","location","href","type","theme","category","settings","createElement","className","title","hideTitleFromUI","key"],"sources":["@wordpress/edit-site/src/components/page-patterns/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { getQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_DEFAULT_CATEGORY, PATTERN_TYPES } from '../../utils/constants';\nimport Page from '../page';\nimport PatternsList from './patterns-list';\nimport usePatternSettings from './use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\n\nconst { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis );\n\nexport default function PagePatterns() {\n\tconst { categoryType, categoryId } = getQueryArgs( window.location.href );\n\tconst type = categoryType || PATTERN_TYPES.theme;\n\tconst category = categoryId || PATTERN_DEFAULT_CATEGORY;\n\tconst settings = usePatternSettings();\n\n\t// Wrap everything in a block editor provider.\n\t// This ensures 'styles' that are needed for the previews are synced\n\t// from the site editor store to the block editor store.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<Page\n\t\t\t\tclassName=\"edit-site-patterns\"\n\t\t\t\ttitle={ __( 'Patterns content' ) }\n\t\t\t\thideTitleFromUI\n\t\t\t>\n\t\t\t\t<PatternsList\n\t\t\t\t\t// Reset the states when switching between categories and types.\n\t\t\t\t\tkey={ `${ type }-${ category }` }\n\t\t\t\t\ttype={ type }\n\t\t\t\t\tcategoryId={ category }\n\t\t\t\t/>\n\t\t\t</Page>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,WAAW,IAAIC,sBAAsB,QAAQ,yBAAyB;AAC/E,SAASC,YAAY,QAAQ,gBAAgB;;AAE7C;AACA;AACA;AACA,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,uBAAuB;AAC/E,OAAOC,IAAI,MAAM,SAAS;AAC1B,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,MAAM;EAAEC;AAAgC,CAAC,GAAGD,MAAM,CAAEP,sBAAuB,CAAC;AAE5E,eAAe,SAASS,YAAYA,CAAA,EAAG;EACtC,MAAM;IAAEC,YAAY;IAAEC;EAAW,CAAC,GAAGV,YAAY,CAAEW,MAAM,CAACC,QAAQ,CAACC,IAAK,CAAC;EACzE,MAAMC,IAAI,GAAGL,YAAY,IAAIP,aAAa,CAACa,KAAK;EAChD,MAAMC,QAAQ,GAAGN,UAAU,IAAIT,wBAAwB;EACvD,MAAMgB,QAAQ,GAAGZ,kBAAkB,CAAC,CAAC;;EAErC;EACA;EACA;EACA,OACCa,aAAA,CAACX,+BAA+B;IAACU,QAAQ,EAAGA;EAAU,GACrDC,aAAA,CAACf,IAAI;IACJgB,SAAS,EAAC,oBAAoB;IAC9BC,KAAK,EAAGvB,EAAE,CAAE,kBAAmB,CAAG;IAClCwB,eAAe;EAAA,GAEfH,aAAA,CAACd;EACA;EAAA;IACAkB,GAAG,EAAI,GAAGR,IAAM,IAAIE,QAAU,EAAG;IACjCF,IAAI,EAAGA,IAAM;IACbJ,UAAU,EAAGM;EAAU,CACvB,CACI,CAC0B,CAAC;AAEpC"}
1
+ {"version":3,"names":["__experimentalHStack","HStack","Button","Tooltip","Flex","getQueryArgs","__","_x","useState","useMemo","useCallback","useId","useEffect","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","sortByTextFields","getPaginationResults","Icon","header","footer","symbolFilled","uncategorized","symbol","lockSmall","usePrevious","Page","LAYOUT_GRID","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_SYNC_TYPES","PATTERN_DEFAULT_CATEGORY","ENUMERATION_TYPE","OPERATOR_IN","exportJSONaction","renameAction","resetAction","deleteAction","duplicatePatternAction","duplicateTemplatePartAction","usePatternSettings","unlock","usePatterns","PatternsHeader","useLink","ExperimentalBlockEditorProvider","useGlobalStyle","templatePartIcons","EMPTY_ARRAY","defaultConfigPerViewType","mediaField","primaryField","DEFAULT_VIEW","type","search","page","perPage","hiddenFields","layout","filters","SYNC_FILTERS","value","full","label","description","unsynced","PreviewWrapper","item","onClick","ariaDescribedBy","children","theme","createElement","className","title","Preview","categoryId","viewType","descriptionId","isUserPattern","user","isNonUserPattern","isTemplatePart","isEmpty","blocks","length","isCustomPattern","isCustom","ariaDescriptions","push","backgroundColor","postType","postId","id","name","categoryType","Fragment","style","map","_","index","join","undefined","ariaDescription","key","hidden","Title","itemIcon","syncStatus","alignment","justify","spacing","placement","text","icon","size","as","gap","variant","tabIndex","DataviewsPatterns","window","location","href","view","setView","isUncategorizedThemePatterns","previousCategoryId","viewSyncStatus","find","field","patterns","isResolving","fields","_fields","render","enableSorting","enableHiding","getValue","elements","filterBy","operators","data","paginationInfo","totalItems","totalPages","filteredData","sort","textFields","actions","onChangeView","newView","settings","hideTitleFromUI","titleId","getItemId","isLoading","deferredRendering","supportedLayouts"],"sources":["@wordpress/edit-site/src/components/page-patterns/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\tButton,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { getQueryArgs } from '@wordpress/url';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n\tuseId,\n\tuseEffect,\n} from '@wordpress/element';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport {\n\tDataViews,\n\tsortByTextFields,\n\tgetPaginationResults,\n} from '@wordpress/dataviews';\nimport {\n\tIcon,\n\theader,\n\tfooter,\n\tsymbolFilled as uncategorized,\n\tsymbol,\n\tlockSmall,\n} from '@wordpress/icons';\nimport { usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport {\n\tLAYOUT_GRID,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tENUMERATION_TYPE,\n\tOPERATOR_IN,\n} from '../../utils/constants';\nimport {\n\texportJSONaction,\n\trenameAction,\n\tresetAction,\n\tdeleteAction,\n\tduplicatePatternAction,\n\tduplicateTemplatePartAction,\n} from './dataviews-pattern-actions';\nimport usePatternSettings from './use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport usePatterns from './use-patterns';\nimport PatternsHeader from './header';\nimport { useLink } from '../routes/link';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\n\nconst templatePartIcons = { header, footer, uncategorized };\nconst EMPTY_ARRAY = [];\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t},\n};\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\thiddenFields: [ 'sync-status' ],\n\tlayout: {\n\t\t...defaultConfigPerViewType[ LAYOUT_GRID ],\n\t},\n\tfilters: [],\n};\n\nconst SYNC_FILTERS = [\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.full,\n\t\tlabel: _x( 'Synced', 'Option that shows all synchronized patterns' ),\n\t\tdescription: __( 'Patterns that are kept in sync across the site.' ),\n\t},\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.unsynced,\n\t\tlabel: _x(\n\t\t\t'Not synced',\n\t\t\t'Option that shows all patterns that are not synchronized'\n\t\t),\n\t\tdescription: __(\n\t\t\t'Patterns that can be changed freely without affecting the site.'\n\t\t),\n\t},\n];\n\nfunction PreviewWrapper( { item, onClick, ariaDescribedBy, children } ) {\n\tif ( item.type === PATTERN_TYPES.theme ) {\n\t\treturn children;\n\t}\n\treturn (\n\t\t<button\n\t\t\tclassName=\"page-patterns-preview-field__button\"\n\t\t\ttype=\"button\"\n\t\t\tonClick={ onClick }\n\t\t\taria-label={ item.title }\n\t\t\taria-describedby={ ariaDescribedBy }\n\t\t>\n\t\t\t{ children }\n\t\t</button>\n\t);\n}\n\nfunction Preview( { item, categoryId, viewType } ) {\n\tconst descriptionId = useId();\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\tconst isEmpty = ! item.blocks?.length;\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 ariaDescriptions = [];\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\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ `page-patterns-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t<PreviewWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\tariaDescribedBy={\n\t\t\t\t\t\tariaDescriptions.length\n\t\t\t\t\t\t\t? ariaDescriptions\n\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t( _, index ) =>\n\t\t\t\t\t\t\t\t\t\t\t`${ descriptionId }-${ index }`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isEmpty && isTemplatePart && __( 'Empty template part' ) }\n\t\t\t\t\t{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }\n\t\t\t\t\t{ ! isEmpty && <BlockPreview blocks={ item.blocks } /> }\n\t\t\t\t</PreviewWrapper>\n\t\t\t</div>\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</>\n\t);\n}\n\nfunction Title( { item, categoryId } ) {\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\tlet itemIcon;\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcategoryId,\n\t\tcategoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme,\n\t} );\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\treturn (\n\t\t<HStack alignment=\"center\" justify=\"flex-start\" spacing={ 2 }>\n\t\t\t{ itemIcon && ! isNonUserPattern && (\n\t\t\t\t<Tooltip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t'Editing this pattern will also update anywhere it is used'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-icon\"\n\t\t\t\t\t\ticon={ itemIcon }\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t) }\n\t\t\t{ item.type === PATTERN_TYPES.theme && (\n\t\t\t\t<Tooltip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\ttext={ __( 'This pattern cannot be edited.' ) }\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName=\"edit-site-patterns__pattern-lock-icon\"\n\t\t\t\t\t\ticon={ lockSmall }\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t) }\n\t\t\t<Flex\n\t\t\t\tas=\"div\"\n\t\t\t\tgap={ 0 }\n\t\t\t\tjustify=\"left\"\n\t\t\t\tclassName=\"edit-site-patterns__pattern-title\"\n\t\t\t>\n\t\t\t\t{ item.type === PATTERN_TYPES.theme ? (\n\t\t\t\t\titem.title\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t// Required for the grid's roving tab index system.\n\t\t\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.\n\t\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ item.title || item.name }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</Flex>\n\t\t</HStack>\n\t);\n}\n\nexport default function DataviewsPatterns() {\n\tconst { categoryType, categoryId = PATTERN_DEFAULT_CATEGORY } =\n\t\tgetQueryArgs( window.location.href );\n\tconst type = categoryType || PATTERN_TYPES.theme;\n\tconst [ view, setView ] = useState( DEFAULT_VIEW );\n\tconst isUncategorizedThemePatterns =\n\t\ttype === PATTERN_TYPES.theme && categoryId === 'uncategorized';\n\tconst previousCategoryId = usePrevious( categoryId );\n\tconst viewSyncStatus = view.filters?.find(\n\t\t( { field } ) => field === 'sync-status'\n\t)?.value;\n\tconst { patterns, isResolving } = usePatterns(\n\t\ttype,\n\t\tisUncategorizedThemePatterns ? '' : categoryId,\n\t\t{\n\t\t\tsearch: view.search,\n\t\t\tsyncStatus: viewSyncStatus,\n\t\t}\n\t);\n\tconst fields = useMemo( () => {\n\t\tconst _fields = [\n\t\t\t{\n\t\t\t\theader: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Preview\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\t\tviewType={ view.type }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } categoryId={ categoryId } />\n\t\t\t\t),\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t];\n\t\tif ( type === PATTERN_TYPES.theme ) {\n\t\t\t_fields.push( {\n\t\t\t\theader: __( 'Sync Status' ),\n\t\t\t\tid: 'sync-status',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\t// User patterns can have their sync statuses checked directly.\n\t\t\t\t\t// Non-user patterns are all unsynced for the time being.\n\t\t\t\t\treturn (\n\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t( { value } ) => value === item.syncStatus\n\t\t\t\t\t\t)?.label ||\n\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t( { value } ) =>\n\t\t\t\t\t\t\t\tvalue === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t).label\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\ttype: ENUMERATION_TYPE,\n\t\t\t\telements: SYNC_FILTERS,\n\t\t\t\tfilterBy: {\n\t\t\t\t\toperators: [ OPERATOR_IN ],\n\t\t\t\t},\n\t\t\t\tenableSorting: false,\n\t\t\t} );\n\t\t}\n\t\treturn _fields;\n\t}, [ view.type, categoryId, type ] );\n\t// Reset the page number when the category changes.\n\tuseEffect( () => {\n\t\tif ( previousCategoryId !== categoryId ) {\n\t\t\tsetView( DEFAULT_VIEW );\n\t\t}\n\t}, [ categoryId, previousCategoryId ] );\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\tif ( ! patterns ) {\n\t\t\treturn {\n\t\t\t\tdata: EMPTY_ARRAY,\n\t\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t\t};\n\t\t}\n\t\tlet filteredData = [ ...patterns ];\n\t\t// Handle sorting.\n\t\tif ( view.sort ) {\n\t\t\tfilteredData = sortByTextFields( {\n\t\t\t\tdata: filteredData,\n\t\t\t\tview,\n\t\t\t\tfields,\n\t\t\t\ttextFields: [ 'title', 'author' ],\n\t\t\t} );\n\t\t}\n\t\t// Handle pagination.\n\t\treturn getPaginationResults( {\n\t\t\tdata: filteredData,\n\t\t\tview,\n\t\t} );\n\t}, [ patterns, view, fields ] );\n\n\tconst actions = useMemo(\n\t\t() => [\n\t\t\trenameAction,\n\t\t\tduplicatePatternAction,\n\t\t\tduplicateTemplatePartAction,\n\t\t\texportJSONaction,\n\t\t\tresetAction,\n\t\t\tdeleteAction,\n\t\t],\n\t\t[]\n\t);\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\tnewView = {\n\t\t\t\t\t...newView,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...defaultConfigPerViewType[ newView.type ],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView ]\n\t);\n\tconst id = useId();\n\tconst settings = usePatternSettings();\n\t// Wrap everything in a block editor provider.\n\t// This ensures 'styles' that are needed for the previews are synced\n\t// from the site editor store to the block editor store.\n\t// TODO: check if I add the provider in every preview like in templates...\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<Page\n\t\t\t\ttitle={ __( 'Patterns content' ) }\n\t\t\t\tclassName=\"edit-site-page-patterns-dataviews\"\n\t\t\t\thideTitleFromUI\n\t\t\t>\n\t\t\t\t<PatternsHeader\n\t\t\t\t\tcategoryId={ categoryId }\n\t\t\t\t\ttype={ type }\n\t\t\t\t\ttitleId={ `${ id }-title` }\n\t\t\t\t\tdescriptionId={ `${ id }-description` }\n\t\t\t\t/>\n\t\t\t\t<DataViews\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tdata={ data || EMPTY_ARRAY }\n\t\t\t\t\tgetItemId={ ( item ) => item.name }\n\t\t\t\t\tisLoading={ isResolving }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tdeferredRendering={ true }\n\t\t\t\t\tsupportedLayouts={ [ LAYOUT_GRID ] }\n\t\t\t\t/>\n\t\t\t</Page>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n"],"mappings":"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"}