@wordpress/edit-site 6.1.0 → 6.3.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 (290) hide show
  1. package/CHANGELOG.md +10 -6
  2. package/build/components/add-new-pattern/index.js +31 -16
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/{add-new-page → add-new-post}/index.js +28 -16
  5. package/build/components/add-new-post/index.js.map +1 -0
  6. package/build/components/block-editor/use-site-editor-settings.js +5 -3
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +32 -7
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor-canvas-container/index.js +18 -7
  11. package/build/components/editor-canvas-container/index.js.map +1 -1
  12. package/build/components/global-styles/background-panel.js +0 -5
  13. package/build/components/global-styles/background-panel.js.map +1 -1
  14. package/build/components/global-styles/font-families.js +17 -17
  15. package/build/components/global-styles/font-families.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/context.js +2 -2
  17. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/font-collection.js +13 -30
  19. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  21. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  22. package/build/components/global-styles/hooks.js +0 -40
  23. package/build/components/global-styles/hooks.js.map +1 -1
  24. package/build/components/global-styles/preview-typography.js +47 -0
  25. package/build/components/global-styles/preview-typography.js.map +1 -0
  26. package/build/components/global-styles/screen-block.js +14 -0
  27. package/build/components/global-styles/screen-block.js.map +1 -1
  28. package/build/components/global-styles/screen-layout.js +5 -1
  29. package/build/components/global-styles/screen-layout.js.map +1 -1
  30. package/build/components/global-styles/screen-revisions/revisions-buttons.js +1 -1
  31. package/build/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  32. package/build/components/global-styles/shadows-edit-panel.js +1 -2
  33. package/build/components/global-styles/shadows-edit-panel.js.map +1 -1
  34. package/build/components/global-styles/style-variations-container.js +5 -5
  35. package/build/components/global-styles/style-variations-container.js.map +1 -1
  36. package/build/components/global-styles/typography-elements.js +0 -2
  37. package/build/components/global-styles/typography-elements.js.map +1 -1
  38. package/build/components/global-styles/variations/variation.js +28 -22
  39. package/build/components/global-styles/variations/variation.js.map +1 -1
  40. package/build/components/global-styles/variations/variations-color.js +5 -3
  41. package/build/components/global-styles/variations/variations-color.js.map +1 -1
  42. package/build/components/global-styles/variations/variations-typography.js +14 -27
  43. package/build/components/global-styles/variations/variations-typography.js.map +1 -1
  44. package/build/components/global-styles-sidebar/index.js +2 -2
  45. package/build/components/global-styles-sidebar/index.js.map +1 -1
  46. package/build/components/layout/index.js +16 -8
  47. package/build/components/layout/index.js.map +1 -1
  48. package/build/components/layout/router.js +20 -41
  49. package/build/components/layout/router.js.map +1 -1
  50. package/build/components/page-patterns/index.js +51 -41
  51. package/build/components/page-patterns/index.js.map +1 -1
  52. package/build/components/page-patterns/rename-category-menu-item.js +3 -1
  53. package/build/components/page-patterns/rename-category-menu-item.js.map +1 -1
  54. package/build/components/page-patterns/search-items.js +29 -4
  55. package/build/components/page-patterns/search-items.js.map +1 -1
  56. package/build/components/page-patterns/use-patterns.js +22 -55
  57. package/build/components/page-patterns/use-patterns.js.map +1 -1
  58. package/build/components/page-templates/index.js +27 -21
  59. package/build/components/page-templates/index.js.map +1 -1
  60. package/build/components/pagination/index.js +4 -4
  61. package/build/components/pagination/index.js.map +1 -1
  62. package/build/components/posts-app/index.js +11 -17
  63. package/build/components/posts-app/index.js.map +1 -1
  64. package/build/components/{page-pages/index.js → posts-app/posts-list.js} +165 -38
  65. package/build/components/posts-app/posts-list.js.map +1 -0
  66. package/build/components/posts-app/router.js +85 -0
  67. package/build/components/posts-app/router.js.map +1 -0
  68. package/build/components/revisions/index.js +10 -7
  69. package/build/components/revisions/index.js.map +1 -1
  70. package/build/components/save-panel/index.js +1 -1
  71. package/build/components/save-panel/index.js.map +1 -1
  72. package/build/components/sidebar-dataviews/add-new-view.js +4 -1
  73. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  74. package/build/components/sidebar-dataviews/custom-dataviews-list.js +6 -2
  75. package/build/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  76. package/build/components/sidebar-dataviews/default-views.js +98 -84
  77. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  78. package/build/components/sidebar-dataviews/index.js +4 -1
  79. package/build/components/sidebar-dataviews/index.js.map +1 -1
  80. package/build/components/sidebar-navigation-screen-global-styles/index.js +3 -3
  81. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  82. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +5 -2
  83. package/build/components/sidebar-navigation-screen-navigation-menu/rename-modal.js.map +1 -1
  84. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +3 -2
  85. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  86. package/build/components/site-hub/index.js +81 -1
  87. package/build/components/site-hub/index.js.map +1 -1
  88. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -1
  89. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  90. package/build/deprecated.js +11 -0
  91. package/build/deprecated.js.map +1 -1
  92. package/build/hooks/commands/use-set-command-context.js +11 -0
  93. package/build/hooks/commands/use-set-command-context.js.map +1 -1
  94. package/build/hooks/push-changes-to-global-styles/index.js +1 -1
  95. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  96. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +65 -42
  97. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  98. package/build/index.js +6 -0
  99. package/build/index.js.map +1 -1
  100. package/build/lock-unlock.js +1 -1
  101. package/build/lock-unlock.js.map +1 -1
  102. package/build/posts.js +57 -2
  103. package/build/posts.js.map +1 -1
  104. package/build/store/private-actions.js +7 -2
  105. package/build/store/private-actions.js.map +1 -1
  106. package/build-module/components/add-new-pattern/index.js +31 -16
  107. package/build-module/components/add-new-pattern/index.js.map +1 -1
  108. package/build-module/components/{add-new-page → add-new-post}/index.js +28 -16
  109. package/build-module/components/add-new-post/index.js.map +1 -0
  110. package/build-module/components/block-editor/use-site-editor-settings.js +5 -3
  111. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  112. package/build-module/components/editor/index.js +33 -8
  113. package/build-module/components/editor/index.js.map +1 -1
  114. package/build-module/components/editor-canvas-container/index.js +19 -8
  115. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  116. package/build-module/components/global-styles/background-panel.js +0 -5
  117. package/build-module/components/global-styles/background-panel.js.map +1 -1
  118. package/build-module/components/global-styles/font-families.js +18 -18
  119. package/build-module/components/global-styles/font-families.js.map +1 -1
  120. package/build-module/components/global-styles/font-library-modal/context.js +2 -2
  121. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  122. package/build-module/components/global-styles/font-library-modal/font-collection.js +14 -31
  123. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  124. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  125. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  126. package/build-module/components/global-styles/hooks.js +0 -38
  127. package/build-module/components/global-styles/hooks.js.map +1 -1
  128. package/build-module/components/global-styles/preview-typography.js +39 -0
  129. package/build-module/components/global-styles/preview-typography.js.map +1 -0
  130. package/build-module/components/global-styles/screen-block.js +15 -0
  131. package/build-module/components/global-styles/screen-block.js.map +1 -1
  132. package/build-module/components/global-styles/screen-layout.js +5 -1
  133. package/build-module/components/global-styles/screen-layout.js.map +1 -1
  134. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js +1 -1
  135. package/build-module/components/global-styles/screen-revisions/revisions-buttons.js.map +1 -1
  136. package/build-module/components/global-styles/shadows-edit-panel.js +1 -2
  137. package/build-module/components/global-styles/shadows-edit-panel.js.map +1 -1
  138. package/build-module/components/global-styles/style-variations-container.js +6 -6
  139. package/build-module/components/global-styles/style-variations-container.js.map +1 -1
  140. package/build-module/components/global-styles/typography-elements.js +0 -2
  141. package/build-module/components/global-styles/typography-elements.js.map +1 -1
  142. package/build-module/components/global-styles/variations/variation.js +29 -23
  143. package/build-module/components/global-styles/variations/variation.js.map +1 -1
  144. package/build-module/components/global-styles/variations/variations-color.js +5 -3
  145. package/build-module/components/global-styles/variations/variations-color.js.map +1 -1
  146. package/build-module/components/global-styles/variations/variations-typography.js +16 -28
  147. package/build-module/components/global-styles/variations/variations-typography.js.map +1 -1
  148. package/build-module/components/global-styles-sidebar/index.js +2 -2
  149. package/build-module/components/global-styles-sidebar/index.js.map +1 -1
  150. package/build-module/components/layout/index.js +14 -8
  151. package/build-module/components/layout/index.js.map +1 -1
  152. package/build-module/components/layout/router.js +20 -41
  153. package/build-module/components/layout/router.js.map +1 -1
  154. package/build-module/components/page-patterns/index.js +52 -42
  155. package/build-module/components/page-patterns/index.js.map +1 -1
  156. package/build-module/components/page-patterns/rename-category-menu-item.js +3 -1
  157. package/build-module/components/page-patterns/rename-category-menu-item.js.map +1 -1
  158. package/build-module/components/page-patterns/search-items.js +28 -4
  159. package/build-module/components/page-patterns/search-items.js.map +1 -1
  160. package/build-module/components/page-patterns/use-patterns.js +23 -56
  161. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  162. package/build-module/components/page-templates/index.js +27 -21
  163. package/build-module/components/page-templates/index.js.map +1 -1
  164. package/build-module/components/pagination/index.js +4 -4
  165. package/build-module/components/pagination/index.js.map +1 -1
  166. package/build-module/components/posts-app/index.js +11 -17
  167. package/build-module/components/posts-app/index.js.map +1 -1
  168. package/build-module/components/{page-pages/index.js → posts-app/posts-list.js} +164 -37
  169. package/build-module/components/posts-app/posts-list.js.map +1 -0
  170. package/build-module/components/posts-app/router.js +77 -0
  171. package/build-module/components/posts-app/router.js.map +1 -0
  172. package/build-module/components/revisions/index.js +10 -7
  173. package/build-module/components/revisions/index.js.map +1 -1
  174. package/build-module/components/save-panel/index.js +1 -1
  175. package/build-module/components/save-panel/index.js.map +1 -1
  176. package/build-module/components/sidebar-dataviews/add-new-view.js +4 -1
  177. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  178. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js +6 -2
  179. package/build-module/components/sidebar-dataviews/custom-dataviews-list.js.map +1 -1
  180. package/build-module/components/sidebar-dataviews/default-views.js +97 -84
  181. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  182. package/build-module/components/sidebar-dataviews/index.js +5 -2
  183. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  184. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +3 -3
  185. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  186. package/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +5 -2
  187. package/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.js.map +1 -1
  188. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +3 -2
  189. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  190. package/build-module/components/site-hub/index.js +81 -1
  191. package/build-module/components/site-hub/index.js.map +1 -1
  192. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -1
  193. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  194. package/build-module/deprecated.js +11 -0
  195. package/build-module/deprecated.js.map +1 -1
  196. package/build-module/hooks/commands/use-set-command-context.js +11 -0
  197. package/build-module/hooks/commands/use-set-command-context.js.map +1 -1
  198. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -1
  199. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  200. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +61 -38
  201. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  202. package/build-module/index.js +7 -2
  203. package/build-module/index.js.map +1 -1
  204. package/build-module/lock-unlock.js +1 -1
  205. package/build-module/lock-unlock.js.map +1 -1
  206. package/build-module/posts.js +57 -2
  207. package/build-module/posts.js.map +1 -1
  208. package/build-module/store/private-actions.js +7 -2
  209. package/build-module/store/private-actions.js.map +1 -1
  210. package/build-style/posts-rtl.css +108 -28
  211. package/build-style/posts.css +108 -28
  212. package/build-style/style-rtl.css +127 -157
  213. package/build-style/style.css +127 -157
  214. package/lib/inflate.js +3188 -3937
  215. package/lib/lib-font.browser.js +32 -2
  216. package/lib/unbrotli.js +1818 -2458
  217. package/package.json +41 -41
  218. package/src/components/add-new-pattern/index.js +38 -23
  219. package/src/components/{add-new-page → add-new-post}/index.js +42 -18
  220. package/src/components/block-editor/style.scss +0 -11
  221. package/src/components/block-editor/use-site-editor-settings.js +33 -28
  222. package/src/components/editor/index.js +34 -20
  223. package/src/components/editor-canvas-container/index.js +20 -8
  224. package/src/components/global-styles/background-panel.js +0 -8
  225. package/src/components/global-styles/font-families.js +28 -19
  226. package/src/components/global-styles/font-library-modal/context.js +2 -2
  227. package/src/components/global-styles/font-library-modal/font-collection.js +17 -32
  228. package/src/components/global-styles/font-library-modal/installed-fonts.js +2 -2
  229. package/src/components/global-styles/font-library-modal/style.scss +17 -10
  230. package/src/components/global-styles/hooks.js +0 -41
  231. package/src/components/global-styles/preview-typography.js +39 -0
  232. package/src/components/global-styles/screen-block.js +22 -0
  233. package/src/components/global-styles/screen-layout.js +5 -1
  234. package/src/components/global-styles/screen-revisions/revisions-buttons.js +1 -1
  235. package/src/components/global-styles/shadows-edit-panel.js +1 -2
  236. package/src/components/global-styles/style-variations-container.js +10 -7
  237. package/src/components/global-styles/style.scss +2 -1
  238. package/src/components/global-styles/typography-elements.js +0 -4
  239. package/src/components/global-styles/variations/variation.js +41 -26
  240. package/src/components/global-styles/variations/variations-color.js +6 -3
  241. package/src/components/global-styles/variations/variations-typography.js +16 -32
  242. package/src/components/global-styles-sidebar/index.js +2 -2
  243. package/src/components/layout/index.js +13 -4
  244. package/src/components/layout/router.js +20 -36
  245. package/src/components/layout/style.scss +12 -0
  246. package/src/components/page-patterns/index.js +55 -58
  247. package/src/components/page-patterns/rename-category-menu-item.js +2 -0
  248. package/src/components/page-patterns/search-items.js +37 -3
  249. package/src/components/page-patterns/style.scss +1 -8
  250. package/src/components/page-patterns/use-patterns.js +43 -82
  251. package/src/components/page-templates/index.js +26 -21
  252. package/src/components/page-templates/style.scss +1 -6
  253. package/src/components/pagination/index.js +4 -4
  254. package/src/components/posts-app/index.js +9 -11
  255. package/src/components/{page-pages/index.js → posts-app/posts-list.js} +163 -42
  256. package/src/components/posts-app/router.js +69 -0
  257. package/src/components/{page-pages → posts-app}/style.scss +22 -8
  258. package/src/components/revisions/index.js +9 -1
  259. package/src/components/save-panel/index.js +1 -1
  260. package/src/components/sidebar/style.scss +6 -0
  261. package/src/components/sidebar-dataviews/add-new-view.js +2 -1
  262. package/src/components/sidebar-dataviews/custom-dataviews-list.js +6 -2
  263. package/src/components/sidebar-dataviews/default-views.js +119 -98
  264. package/src/components/sidebar-dataviews/index.js +3 -3
  265. package/src/components/sidebar-navigation-screen-global-styles/index.js +7 -6
  266. package/src/components/sidebar-navigation-screen-navigation-menu/rename-modal.js +8 -2
  267. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +10 -2
  268. package/src/components/site-hub/index.js +84 -1
  269. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +3 -2
  270. package/src/deprecated.js +14 -0
  271. package/src/hooks/commands/use-set-command-context.js +12 -0
  272. package/src/hooks/push-changes-to-global-styles/index.js +1 -1
  273. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +28 -24
  274. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +72 -47
  275. package/src/index.js +8 -1
  276. package/src/lock-unlock.js +1 -1
  277. package/src/posts.js +63 -2
  278. package/src/posts.scss +9 -0
  279. package/src/store/private-actions.js +7 -3
  280. package/src/style.scss +14 -2
  281. package/build/components/add-new-page/index.js.map +0 -1
  282. package/build/components/page-pages/index.js.map +0 -1
  283. package/build/components/table/index.js +0 -35
  284. package/build/components/table/index.js.map +0 -1
  285. package/build-module/components/add-new-page/index.js.map +0 -1
  286. package/build-module/components/page-pages/index.js.map +0 -1
  287. package/build-module/components/table/index.js +0 -30
  288. package/build-module/components/table/index.js.map +0 -1
  289. package/src/components/table/index.js +0 -33
  290. package/src/components/table/style.scss +0 -38
@@ -8,7 +8,7 @@ import clsx from 'clsx';
8
8
  */
9
9
  import { __experimentalHStack as HStack, Button, Tooltip, Flex } from '@wordpress/components';
10
10
  import { __, _x } from '@wordpress/i18n';
11
- import { useState, useMemo, useCallback, useId, useEffect } from '@wordpress/element';
11
+ import { useState, useMemo, useId, useEffect } from '@wordpress/element';
12
12
  import { BlockPreview, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
13
13
  import { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';
14
14
  import { Icon, lockSmall } from '@wordpress/icons';
@@ -16,6 +16,8 @@ import { usePrevious } from '@wordpress/compose';
16
16
  import { useEntityRecords } from '@wordpress/core-data';
17
17
  import { privateApis as editorPrivateApis } from '@wordpress/editor';
18
18
  import { privateApis as routerPrivateApis } from '@wordpress/router';
19
+ import { parse } from '@wordpress/blocks';
20
+ import { decodeEntities } from '@wordpress/html-entities';
19
21
 
20
22
  /**
21
23
  * Internal dependencies
@@ -30,6 +32,7 @@ import PatternsHeader from './header';
30
32
  import { useLink } from '../routes/link';
31
33
  import { useAddedBy } from '../page-templates/hooks';
32
34
  import { useEditPostAction } from '../dataviews-actions';
35
+ import { defaultGetTitle } from './search-items';
33
36
  import { jsx as _jsx } from "react/jsx-runtime";
34
37
  import { jsxs as _jsxs } from "react/jsx-runtime";
35
38
  const {
@@ -43,14 +46,18 @@ const {
43
46
  useLocation
44
47
  } = unlock(routerPrivateApis);
45
48
  const EMPTY_ARRAY = [];
46
- const defaultConfigPerViewType = {
49
+ const defaultLayouts = {
47
50
  [LAYOUT_TABLE]: {
48
- primaryField: 'title'
51
+ layout: {
52
+ primaryField: 'title'
53
+ }
49
54
  },
50
55
  [LAYOUT_GRID]: {
51
- mediaField: 'preview',
52
- primaryField: 'title',
53
- badgeFields: ['sync-status']
56
+ layout: {
57
+ mediaField: 'preview',
58
+ primaryField: 'title',
59
+ badgeFields: ['sync-status']
60
+ }
54
61
  }
55
62
  };
56
63
  const DEFAULT_VIEW = {
@@ -58,10 +65,8 @@ const DEFAULT_VIEW = {
58
65
  search: '',
59
66
  page: 1,
60
67
  perPage: 20,
61
- hiddenFields: [],
62
- layout: {
63
- ...defaultConfigPerViewType[LAYOUT_GRID]
64
- },
68
+ layout: defaultLayouts[LAYOUT_GRID].layout,
69
+ fields: ['title', 'sync-status'],
65
70
  filters: []
66
71
  };
67
72
  const SYNC_FILTERS = [{
@@ -94,17 +99,24 @@ function Preview({
94
99
  viewType
95
100
  }) {
96
101
  const descriptionId = useId();
102
+ const description = item.description || item?.excerpt?.raw;
97
103
  const isUserPattern = item.type === PATTERN_TYPES.user;
98
104
  const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
99
- const isEmpty = !item.blocks?.length;
100
105
  const [backgroundColor] = useGlobalStyle('color.background');
101
106
  const {
102
107
  onClick
103
108
  } = useLink({
104
109
  postType: item.type,
105
- postId: isUserPattern ? item.id : item.name,
110
+ postId: isUserPattern || isTemplatePart ? item.id : item.name,
106
111
  canvas: 'edit'
107
112
  });
113
+ const blocks = useMemo(() => {
114
+ var _item$blocks;
115
+ return (_item$blocks = item.blocks) !== null && _item$blocks !== void 0 ? _item$blocks : parse(item.content.raw, {
116
+ __unstableSkipMigrationLogs: true
117
+ });
118
+ }, [item?.content?.raw, item.blocks]);
119
+ const isEmpty = !blocks?.length;
108
120
  return /*#__PURE__*/_jsxs("div", {
109
121
  className: `page-patterns-preview-field is-viewtype-${viewType}`,
110
122
  style: {
@@ -113,17 +125,17 @@ function Preview({
113
125
  children: [/*#__PURE__*/_jsxs(PreviewWrapper, {
114
126
  item: item,
115
127
  onClick: onClick,
116
- ariaDescribedBy: item.description ? descriptionId : undefined,
128
+ ariaDescribedBy: !!description ? descriptionId : undefined,
117
129
  children: [isEmpty && isTemplatePart && __('Empty template part'), isEmpty && !isTemplatePart && __('Empty pattern'), !isEmpty && /*#__PURE__*/_jsx(Async, {
118
130
  children: /*#__PURE__*/_jsx(BlockPreview, {
119
- blocks: item.blocks,
131
+ blocks: blocks,
120
132
  viewportWidth: item.viewportWidth
121
133
  })
122
134
  })]
123
- }), item.description && /*#__PURE__*/_jsx("div", {
135
+ }), !!description && /*#__PURE__*/_jsx("div", {
124
136
  hidden: true,
125
137
  id: descriptionId,
126
- children: item.description
138
+ children: description
127
139
  })]
128
140
  });
129
141
  }
@@ -165,13 +177,15 @@ function Title({
165
177
  item
166
178
  }) {
167
179
  const isUserPattern = item.type === PATTERN_TYPES.user;
180
+ const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
168
181
  const {
169
182
  onClick
170
183
  } = useLink({
171
184
  postType: item.type,
172
- postId: isUserPattern ? item.id : item.name,
185
+ postId: isUserPattern || isTemplatePart ? item.id : item.name,
173
186
  canvas: 'edit'
174
187
  });
188
+ const title = decodeEntities(defaultGetTitle(item));
175
189
  return /*#__PURE__*/_jsxs(HStack, {
176
190
  alignment: "center",
177
191
  justify: "flex-start",
@@ -181,14 +195,14 @@ function Title({
181
195
  gap: 0,
182
196
  justify: "left",
183
197
  className: "edit-site-patterns__pattern-title",
184
- children: item.type === PATTERN_TYPES.theme ? item.title : /*#__PURE__*/_jsx(Button, {
198
+ children: item.type === PATTERN_TYPES.theme ? title : /*#__PURE__*/_jsx(Button, {
185
199
  variant: "link",
186
200
  onClick: onClick
187
201
  // Required for the grid's roving tab index system.
188
202
  // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
189
203
  ,
190
204
  tabIndex: "-1",
191
- children: item.title || item.name
205
+ children: title
192
206
  })
193
207
  }), item.type === PATTERN_TYPES.theme && /*#__PURE__*/_jsx(Tooltip, {
194
208
  placement: "top",
@@ -251,7 +265,6 @@ export default function DataviewsPatterns() {
251
265
  viewType: view.type
252
266
  }),
253
267
  enableSorting: false,
254
- enableHiding: false,
255
268
  width: '1%'
256
269
  }, {
257
270
  header: __('Title'),
@@ -270,15 +283,14 @@ export default function DataviewsPatterns() {
270
283
  render: ({
271
284
  item
272
285
  }) => {
286
+ const syncStatus = 'wp_pattern_sync_status' in item ? item.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full : PATTERN_SYNC_TYPES.unsynced;
273
287
  // User patterns can have their sync statuses checked directly.
274
288
  // Non-user patterns are all unsynced for the time being.
275
289
  return /*#__PURE__*/_jsx("span", {
276
- className: `edit-site-patterns__field-sync-status-${item.syncStatus}`,
277
- children: (SYNC_FILTERS.find(({
290
+ className: `edit-site-patterns__field-sync-status-${syncStatus}`,
291
+ children: SYNC_FILTERS.find(({
278
292
  value
279
- }) => value === item.syncStatus) || SYNC_FILTERS.find(({
280
- value
281
- }) => value === PATTERN_SYNC_TYPES.unsynced)).label
293
+ }) => value === syncStatus).label
282
294
  });
283
295
  },
284
296
  elements: SYNC_FILTERS,
@@ -294,7 +306,7 @@ export default function DataviewsPatterns() {
294
306
  id: 'author',
295
307
  getValue: ({
296
308
  item
297
- }) => item.templatePart.author_text,
309
+ }) => item.author_text,
298
310
  render: ({
299
311
  item
300
312
  }) => {
@@ -334,8 +346,14 @@ export default function DataviewsPatterns() {
334
346
  }
335
347
  return filterSortAndPaginate(patterns, viewWithoutFilters, fields);
336
348
  }, [patterns, view, fields, type]);
337
- const templatePartActions = usePostActions(TEMPLATE_PART_POST_TYPE);
338
- const patternActions = usePostActions(PATTERN_TYPES.user);
349
+ const templatePartActions = usePostActions({
350
+ postType: TEMPLATE_PART_POST_TYPE,
351
+ context: 'list'
352
+ });
353
+ const patternActions = usePostActions({
354
+ postType: PATTERN_TYPES.user,
355
+ context: 'list'
356
+ });
339
357
  const editAction = useEditPostAction();
340
358
  const actions = useMemo(() => {
341
359
  if (type === TEMPLATE_PART_POST_TYPE) {
@@ -343,17 +361,6 @@ export default function DataviewsPatterns() {
343
361
  }
344
362
  return [editAction, ...patternActions].filter(Boolean);
345
363
  }, [editAction, type, templatePartActions, patternActions]);
346
- const onChangeView = useCallback(newView => {
347
- if (newView.type !== view.type) {
348
- newView = {
349
- ...newView,
350
- layout: {
351
- ...defaultConfigPerViewType[newView.type]
352
- }
353
- };
354
- }
355
- setView(newView);
356
- }, [view.type, setView]);
357
364
  const id = useId();
358
365
  const settings = usePatternSettings();
359
366
  // Wrap everything in a block editor provider.
@@ -375,11 +382,14 @@ export default function DataviewsPatterns() {
375
382
  fields: fields,
376
383
  actions: actions,
377
384
  data: data || EMPTY_ARRAY,
378
- getItemId: item => item.name,
385
+ getItemId: item => {
386
+ var _item$name;
387
+ return (_item$name = item.name) !== null && _item$name !== void 0 ? _item$name : item.id;
388
+ },
379
389
  isLoading: isResolving,
380
390
  view: view,
381
- onChangeView: onChangeView,
382
- supportedLayouts: [LAYOUT_GRID, LAYOUT_TABLE]
391
+ onChangeView: setView,
392
+ defaultLayouts: defaultLayouts
383
393
  })]
384
394
  })
385
395
  });
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__experimentalHStack","HStack","Button","Tooltip","Flex","__","_x","useState","useMemo","useCallback","useId","useEffect","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","filterSortAndPaginate","Icon","lockSmall","usePrevious","useEntityRecords","editorPrivateApis","routerPrivateApis","Async","Page","LAYOUT_GRID","LAYOUT_TABLE","LAYOUT_LIST","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_SYNC_TYPES","PATTERN_DEFAULT_CATEGORY","OPERATOR_IS","usePatternSettings","unlock","usePatterns","PatternsHeader","useLink","useAddedBy","useEditPostAction","jsx","_jsx","jsxs","_jsxs","ExperimentalBlockEditorProvider","useGlobalStyle","usePostActions","useLocation","EMPTY_ARRAY","defaultConfigPerViewType","primaryField","mediaField","badgeFields","DEFAULT_VIEW","type","search","page","perPage","hiddenFields","layout","filters","SYNC_FILTERS","value","full","label","description","unsynced","PreviewWrapper","item","onClick","ariaDescribedBy","children","className","theme","undefined","title","Preview","viewType","descriptionId","isUserPattern","user","isTemplatePart","isEmpty","blocks","length","backgroundColor","postType","postId","id","name","canvas","style","viewportWidth","hidden","Author","isImageLoaded","setIsImageLoaded","text","icon","imageUrl","withIcon","alignment","spacing","onLoad","alt","src","Title","justify","as","gap","variant","tabIndex","placement","size","DataviewsPatterns","params","categoryId","categoryIdFromURL","view","setView","previousCategoryId","viewSyncStatus","find","field","patterns","isResolving","syncStatus","records","per_page","authors","authorsSet","Set","forEach","template","add","author_text","Array","from","map","author","fields","_fields","header","render","enableSorting","enableHiding","width","push","elements","filterBy","operators","isPrimary","getValue","templatePart","data","paginationInfo","viewWithoutFilters","templatePartActions","patternActions","editAction","actions","filter","Boolean","onChangeView","newView","settings","hideTitleFromUI","titleId","getItemId","isLoading","supportedLayouts"],"sources":["@wordpress/edit-site/src/components/page-patterns/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\tButton,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\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 { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { Icon, lockSmall } from '@wordpress/icons';\nimport { usePrevious } from '@wordpress/compose';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { Async } from '../async';\nimport Page from '../page';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tOPERATOR_IS,\n} from '../../utils/constants';\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';\nimport { useAddedBy } from '../page-templates/hooks';\nimport { useEditPostAction } from '../dataviews-actions';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\nconst { usePostActions } = unlock( editorPrivateApis );\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\nconst defaultConfigPerViewType = {\n\t[ LAYOUT_TABLE ]: {\n\t\tprimaryField: 'title',\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tmediaField: 'preview',\n\t\tprimaryField: 'title',\n\t\tbadgeFields: [ 'sync-status' ],\n\t},\n};\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\thiddenFields: [],\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', 'pattern (singular)' ),\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( 'Not synced', 'pattern (singular)' ),\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\treturn (\n\t\t<button\n\t\t\tclassName=\"page-patterns-preview-field__button\"\n\t\t\ttype=\"button\"\n\t\t\tonClick={ item.type !== PATTERN_TYPES.theme ? onClick : undefined }\n\t\t\taria-label={ item.title }\n\t\t\taria-describedby={ ariaDescribedBy }\n\t\t\taria-disabled={ item.type === PATTERN_TYPES.theme }\n\t\t>\n\t\t\t{ children }\n\t\t</button>\n\t);\n}\n\nfunction Preview( { item, viewType } ) {\n\tconst descriptionId = useId();\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isEmpty = ! item.blocks?.length;\n\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\tcanvas: 'edit',\n\t} );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ `page-patterns-preview-field is-viewtype-${ viewType }` }\n\t\t\tstyle={ { backgroundColor } }\n\t\t>\n\t\t\t<PreviewWrapper\n\t\t\t\titem={ item }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tariaDescribedBy={ item.description ? descriptionId : undefined }\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<Async>\n\t\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\t\tblocks={ item.blocks }\n\t\t\t\t\t\t\tviewportWidth={ item.viewportWidth }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Async>\n\t\t\t\t) }\n\t\t\t</PreviewWrapper>\n\t\t\t{ item.description && (\n\t\t\t\t<div hidden id={ descriptionId }>\n\t\t\t\t\t{ item.description }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction Author( { item, viewType } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\tconst withIcon = viewType !== LAYOUT_LIST;\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 1 }>\n\t\t\t{ withIcon && imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ withIcon && ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction Title( { item } ) {\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern ? item.id : item.name,\n\t\tcanvas: 'edit',\n\t} );\n\treturn (\n\t\t<HStack alignment=\"center\" justify=\"flex-start\" spacing={ 2 }>\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\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</HStack>\n\t);\n}\n\nexport default function DataviewsPatterns() {\n\tconst {\n\t\tparams: { postType, categoryId: categoryIdFromURL },\n\t} = useLocation();\n\tconst type = postType || PATTERN_TYPES.user;\n\tconst categoryId = categoryIdFromURL || PATTERN_DEFAULT_CATEGORY;\n\tconst [ view, setView ] = useState( DEFAULT_VIEW );\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( type, categoryId, {\n\t\tsearch: view.search,\n\t\tsyncStatus: viewSyncStatus,\n\t} );\n\n\tconst { records } = useEntityRecords( 'postType', TEMPLATE_PART_POST_TYPE, {\n\t\tper_page: -1,\n\t} );\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\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 item={ item } viewType={ view.type } />\n\t\t\t\t),\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableHiding: false,\n\t\t\t\twidth: '1%',\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\trender: ( { item } ) => <Title item={ item } />,\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t];\n\n\t\tif ( type === PATTERN_TYPES.user ) {\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\t<span\n\t\t\t\t\t\t\tclassName={ `edit-site-patterns__field-sync-status-${ item.syncStatus }` }\n\t\t\t\t\t\t>\n\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\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t\t\t\t( { value } ) =>\n\t\t\t\t\t\t\t\t\t\t\tvalue === item.syncStatus\n\t\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t\t\t\t( { value } ) =>\n\t\t\t\t\t\t\t\t\t\t\tvalue ===\n\t\t\t\t\t\t\t\t\t\t\tPATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t).label\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\telements: SYNC_FILTERS,\n\t\t\t\tfilterBy: {\n\t\t\t\t\toperators: [ OPERATOR_IS ],\n\t\t\t\t\tisPrimary: true,\n\t\t\t\t},\n\t\t\t\tenableSorting: false,\n\t\t\t} );\n\t\t} else if ( type === TEMPLATE_PART_POST_TYPE ) {\n\t\t\t_fields.push( {\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item.templatePart.author_text,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <Author viewType={ view.type } item={ item } />;\n\t\t\t\t},\n\t\t\t\telements: authors,\n\t\t\t\tfilterBy: {\n\t\t\t\t\tisPrimary: true,\n\t\t\t\t},\n\t\t\t\twidth: '1%',\n\t\t\t} );\n\t\t}\n\n\t\treturn _fields;\n\t}, [ view.type, type, authors ] );\n\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\t// Search is managed server-side as well as filters for patterns.\n\t\t// However, the author filter in template parts is done client-side.\n\t\tconst viewWithoutFilters = { ...view };\n\t\tdelete viewWithoutFilters.search;\n\t\tif ( type !== TEMPLATE_PART_POST_TYPE ) {\n\t\t\tviewWithoutFilters.filters = [];\n\t\t}\n\t\treturn filterSortAndPaginate( patterns, viewWithoutFilters, fields );\n\t}, [ patterns, view, fields, type ] );\n\n\tconst templatePartActions = usePostActions( TEMPLATE_PART_POST_TYPE );\n\tconst patternActions = usePostActions( PATTERN_TYPES.user );\n\tconst editAction = useEditPostAction();\n\n\tconst actions = useMemo( () => {\n\t\tif ( type === TEMPLATE_PART_POST_TYPE ) {\n\t\t\treturn [ editAction, ...templatePartActions ].filter( Boolean );\n\t\t}\n\t\treturn [ editAction, ...patternActions ].filter( Boolean );\n\t}, [ editAction, type, templatePartActions, patternActions ] );\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\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\tsupportedLayouts={ [ LAYOUT_GRID, LAYOUT_TABLE ] }\n\t\t\t\t/>\n\t\t\t</Page>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__experimentalHStack","HStack","Button","Tooltip","Flex","__","_x","useState","useMemo","useId","useEffect","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","filterSortAndPaginate","Icon","lockSmall","usePrevious","useEntityRecords","editorPrivateApis","routerPrivateApis","parse","decodeEntities","Async","Page","LAYOUT_GRID","LAYOUT_TABLE","LAYOUT_LIST","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","PATTERN_SYNC_TYPES","PATTERN_DEFAULT_CATEGORY","OPERATOR_IS","usePatternSettings","unlock","usePatterns","PatternsHeader","useLink","useAddedBy","useEditPostAction","defaultGetTitle","jsx","_jsx","jsxs","_jsxs","ExperimentalBlockEditorProvider","useGlobalStyle","usePostActions","useLocation","EMPTY_ARRAY","defaultLayouts","layout","primaryField","mediaField","badgeFields","DEFAULT_VIEW","type","search","page","perPage","fields","filters","SYNC_FILTERS","value","full","label","description","unsynced","PreviewWrapper","item","onClick","ariaDescribedBy","children","className","theme","undefined","title","Preview","viewType","descriptionId","excerpt","raw","isUserPattern","user","isTemplatePart","backgroundColor","postType","postId","id","name","canvas","blocks","_item$blocks","content","__unstableSkipMigrationLogs","isEmpty","length","style","viewportWidth","hidden","Author","isImageLoaded","setIsImageLoaded","text","icon","imageUrl","withIcon","alignment","spacing","onLoad","alt","src","Title","justify","as","gap","variant","tabIndex","placement","size","DataviewsPatterns","params","categoryId","categoryIdFromURL","view","setView","previousCategoryId","viewSyncStatus","find","field","patterns","isResolving","syncStatus","records","per_page","authors","authorsSet","Set","forEach","template","add","author_text","Array","from","map","author","_fields","header","render","enableSorting","width","enableHiding","push","wp_pattern_sync_status","elements","filterBy","operators","isPrimary","getValue","data","paginationInfo","viewWithoutFilters","templatePartActions","context","patternActions","editAction","actions","filter","Boolean","settings","hideTitleFromUI","titleId","getItemId","_item$name","isLoading","onChangeView"],"sources":["@wordpress/edit-site/src/components/page-patterns/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\tButton,\n\tTooltip,\n\tFlex,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState, useMemo, useId, useEffect } from '@wordpress/element';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { Icon, lockSmall } from '@wordpress/icons';\nimport { usePrevious } from '@wordpress/compose';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { parse } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { Async } from '../async';\nimport Page from '../page';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tOPERATOR_IS,\n} from '../../utils/constants';\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';\nimport { useAddedBy } from '../page-templates/hooks';\nimport { useEditPostAction } from '../dataviews-actions';\nimport { defaultGetTitle } from './search-items';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle } = unlock(\n\tblockEditorPrivateApis\n);\nconst { usePostActions } = unlock( editorPrivateApis );\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\nconst defaultLayouts = {\n\t[ LAYOUT_TABLE ]: {\n\t\tlayout: {\n\t\t\tprimaryField: 'title',\n\t\t},\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tlayout: {\n\t\t\tmediaField: 'preview',\n\t\t\tprimaryField: 'title',\n\t\t\tbadgeFields: [ 'sync-status' ],\n\t\t},\n\t},\n};\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\tlayout: defaultLayouts[ LAYOUT_GRID ].layout,\n\tfields: [ 'title', 'sync-status' ],\n\tfilters: [],\n};\n\nconst SYNC_FILTERS = [\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.full,\n\t\tlabel: _x( 'Synced', 'pattern (singular)' ),\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( 'Not synced', 'pattern (singular)' ),\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\treturn (\n\t\t<button\n\t\t\tclassName=\"page-patterns-preview-field__button\"\n\t\t\ttype=\"button\"\n\t\t\tonClick={ item.type !== PATTERN_TYPES.theme ? onClick : undefined }\n\t\t\taria-label={ item.title }\n\t\t\taria-describedby={ ariaDescribedBy }\n\t\t\taria-disabled={ item.type === PATTERN_TYPES.theme }\n\t\t>\n\t\t\t{ children }\n\t\t</button>\n\t);\n}\n\nfunction Preview( { item, viewType } ) {\n\tconst descriptionId = useId();\n\tconst description = item.description || item?.excerpt?.raw;\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern || isTemplatePart ? item.id : item.name,\n\t\tcanvas: 'edit',\n\t} );\n\tconst blocks = useMemo( () => {\n\t\treturn (\n\t\t\titem.blocks ??\n\t\t\tparse( item.content.raw, {\n\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t} )\n\t\t);\n\t}, [ item?.content?.raw, item.blocks ] );\n\tconst isEmpty = ! blocks?.length;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ `page-patterns-preview-field is-viewtype-${ viewType }` }\n\t\t\tstyle={ { backgroundColor } }\n\t\t>\n\t\t\t<PreviewWrapper\n\t\t\t\titem={ item }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tariaDescribedBy={ !! description ? descriptionId : undefined }\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<Async>\n\t\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\tviewportWidth={ item.viewportWidth }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Async>\n\t\t\t\t) }\n\t\t\t</PreviewWrapper>\n\t\t\t{ !! description && (\n\t\t\t\t<div hidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction Author( { item, viewType } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\tconst withIcon = viewType !== LAYOUT_LIST;\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 1 }>\n\t\t\t{ withIcon && imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ withIcon && ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction Title( { item } ) {\n\tconst isUserPattern = item.type === PATTERN_TYPES.user;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst { onClick } = useLink( {\n\t\tpostType: item.type,\n\t\tpostId: isUserPattern || isTemplatePart ? item.id : item.name,\n\t\tcanvas: 'edit',\n\t} );\n\tconst title = decodeEntities( defaultGetTitle( item ) );\n\treturn (\n\t\t<HStack alignment=\"center\" justify=\"flex-start\" spacing={ 2 }>\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\ttitle\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{ title }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</Flex>\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</HStack>\n\t);\n}\n\nexport default function DataviewsPatterns() {\n\tconst {\n\t\tparams: { postType, categoryId: categoryIdFromURL },\n\t} = useLocation();\n\tconst type = postType || PATTERN_TYPES.user;\n\tconst categoryId = categoryIdFromURL || PATTERN_DEFAULT_CATEGORY;\n\tconst [ view, setView ] = useState( DEFAULT_VIEW );\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( type, categoryId, {\n\t\tsearch: view.search,\n\t\tsyncStatus: viewSyncStatus,\n\t} );\n\n\tconst { records } = useEntityRecords( 'postType', TEMPLATE_PART_POST_TYPE, {\n\t\tper_page: -1,\n\t} );\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\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 item={ item } viewType={ view.type } />\n\t\t\t\t),\n\t\t\t\tenableSorting: false,\n\t\t\t\twidth: '1%',\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: __( 'Title' ),\n\t\t\t\tid: 'title',\n\t\t\t\trender: ( { item } ) => <Title item={ item } />,\n\t\t\t\tenableHiding: false,\n\t\t\t},\n\t\t];\n\n\t\tif ( type === PATTERN_TYPES.user ) {\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\tconst syncStatus =\n\t\t\t\t\t\t'wp_pattern_sync_status' in item\n\t\t\t\t\t\t\t? item.wp_pattern_sync_status ||\n\t\t\t\t\t\t\t PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.unsynced;\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\t<span\n\t\t\t\t\t\t\tclassName={ `edit-site-patterns__field-sync-status-${ syncStatus }` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tSYNC_FILTERS.find(\n\t\t\t\t\t\t\t\t\t( { value } ) => value === syncStatus\n\t\t\t\t\t\t\t\t).label\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\telements: SYNC_FILTERS,\n\t\t\t\tfilterBy: {\n\t\t\t\t\toperators: [ OPERATOR_IS ],\n\t\t\t\t\tisPrimary: true,\n\t\t\t\t},\n\t\t\t\tenableSorting: false,\n\t\t\t} );\n\t\t} else if ( type === TEMPLATE_PART_POST_TYPE ) {\n\t\t\t_fields.push( {\n\t\t\t\theader: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item.author_text,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <Author viewType={ view.type } item={ item } />;\n\t\t\t\t},\n\t\t\t\telements: authors,\n\t\t\t\tfilterBy: {\n\t\t\t\t\tisPrimary: true,\n\t\t\t\t},\n\t\t\t\twidth: '1%',\n\t\t\t} );\n\t\t}\n\n\t\treturn _fields;\n\t}, [ view.type, type, authors ] );\n\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\t// Search is managed server-side as well as filters for patterns.\n\t\t// However, the author filter in template parts is done client-side.\n\t\tconst viewWithoutFilters = { ...view };\n\t\tdelete viewWithoutFilters.search;\n\t\tif ( type !== TEMPLATE_PART_POST_TYPE ) {\n\t\t\tviewWithoutFilters.filters = [];\n\t\t}\n\t\treturn filterSortAndPaginate( patterns, viewWithoutFilters, fields );\n\t}, [ patterns, view, fields, type ] );\n\n\tconst templatePartActions = usePostActions( {\n\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\tcontext: 'list',\n\t} );\n\tconst patternActions = usePostActions( {\n\t\tpostType: PATTERN_TYPES.user,\n\t\tcontext: 'list',\n\t} );\n\tconst editAction = useEditPostAction();\n\n\tconst actions = useMemo( () => {\n\t\tif ( type === TEMPLATE_PART_POST_TYPE ) {\n\t\t\treturn [ editAction, ...templatePartActions ].filter( Boolean );\n\t\t}\n\t\treturn [ editAction, ...patternActions ].filter( Boolean );\n\t}, [ editAction, type, templatePartActions, patternActions ] );\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\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 ?? item.id }\n\t\t\t\t\tisLoading={ isResolving }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ setView }\n\t\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\t/>\n\t\t\t</Page>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -57,7 +57,9 @@ function RenameModal({
57
57
  category: normalizedCategory,
58
58
  existingCategories: existingCategories,
59
59
  onClose: onClose,
60
- overlayClassName: "edit-site-list__rename-modal"
60
+ overlayClassName: "edit-site-list__rename-modal",
61
+ focusOnMount: "firstContentElement",
62
+ size: "small"
61
63
  });
62
64
  }
63
65
  //# sourceMappingURL=rename-category-menu-item.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MenuItem","useState","__","privateApis","patternsPrivateApis","usePatternCategories","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","RenamePatternCategoryModal","RenameCategoryMenuItem","category","onClose","isModalOpen","setIsModalOpen","children","onClick","RenameModal","normalizedCategory","id","slug","name","label","existingCategories","overlayClassName"],"sources":["@wordpress/edit-site/src/components/page-patterns/rename-category-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n/**\n * Internal dependencies\n */\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { RenamePatternCategoryModal } = unlock( patternsPrivateApis );\n\nexport default function RenameCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Rename' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<RenameModal\n\t\t\t\t\tcategory={ category }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction RenameModal( { category, onClose } ) {\n\t// User created pattern categories have their properties updated when\n\t// retrieved via `getUserPatternCategories`. The rename modal expects an\n\t// object that will match the pattern category entity.\n\tconst normalizedCategory = {\n\t\tid: category.id,\n\t\tslug: category.slug,\n\t\tname: category.label,\n\t};\n\n\t// Optimization - only use pattern categories when the modal is open.\n\tconst existingCategories = usePatternCategories();\n\n\treturn (\n\t\t<RenamePatternCategoryModal\n\t\t\tcategory={ normalizedCategory }\n\t\t\texistingCategories={ existingCategories }\n\t\t\tonClose={ onClose }\n\t\t\toverlayClassName=\"edit-site-list__rename-modal\"\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,WAAW,IAAIC,mBAAmB,QAAQ,qBAAqB;AACxE;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,8DAA8D;;AAE/F;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAE3C,MAAM;EAAEC;AAA2B,CAAC,GAAGP,MAAM,CAAEF,mBAAoB,CAAC;AAEpE,eAAe,SAASU,sBAAsBA,CAAE;EAAEC,QAAQ;EAAEC;AAAQ,CAAC,EAAG;EACvE,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAGjB,QAAQ,CAAE,KAAM,CAAC;EAEzD,oBACCW,KAAA,CAAAF,SAAA;IAAAS,QAAA,gBACCX,IAAA,CAACR,QAAQ;MAACoB,OAAO,EAAGA,CAAA,KAAMF,cAAc,CAAE,IAAK,CAAG;MAAAC,QAAA,EAC/CjB,EAAE,CAAE,QAAS;IAAC,CACP,CAAC,EACTe,WAAW,iBACZT,IAAA,CAACa,WAAW;MACXN,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,CAAA,KAAM;QACfE,cAAc,CAAE,KAAM,CAAC;QACvBF,OAAO,CAAC,CAAC;MACV;IAAG,CACH,CACD;EAAA,CACA,CAAC;AAEL;AAEA,SAASK,WAAWA,CAAE;EAAEN,QAAQ;EAAEC;AAAQ,CAAC,EAAG;EAC7C;EACA;EACA;EACA,MAAMM,kBAAkB,GAAG;IAC1BC,EAAE,EAAER,QAAQ,CAACQ,EAAE;IACfC,IAAI,EAAET,QAAQ,CAACS,IAAI;IACnBC,IAAI,EAAEV,QAAQ,CAACW;EAChB,CAAC;;EAED;EACA,MAAMC,kBAAkB,GAAGtB,oBAAoB,CAAC,CAAC;EAEjD,oBACCG,IAAA,CAACK,0BAA0B;IAC1BE,QAAQ,EAAGO,kBAAoB;IAC/BK,kBAAkB,EAAGA,kBAAoB;IACzCX,OAAO,EAAGA,OAAS;IACnBY,gBAAgB,EAAC;EAA8B,CAC/C,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["MenuItem","useState","__","privateApis","patternsPrivateApis","usePatternCategories","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","RenamePatternCategoryModal","RenameCategoryMenuItem","category","onClose","isModalOpen","setIsModalOpen","children","onClick","RenameModal","normalizedCategory","id","slug","name","label","existingCategories","overlayClassName","focusOnMount","size"],"sources":["@wordpress/edit-site/src/components/page-patterns/rename-category-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n/**\n * Internal dependencies\n */\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { RenamePatternCategoryModal } = unlock( patternsPrivateApis );\n\nexport default function RenameCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Rename' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<RenameModal\n\t\t\t\t\tcategory={ category }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction RenameModal( { category, onClose } ) {\n\t// User created pattern categories have their properties updated when\n\t// retrieved via `getUserPatternCategories`. The rename modal expects an\n\t// object that will match the pattern category entity.\n\tconst normalizedCategory = {\n\t\tid: category.id,\n\t\tslug: category.slug,\n\t\tname: category.label,\n\t};\n\n\t// Optimization - only use pattern categories when the modal is open.\n\tconst existingCategories = usePatternCategories();\n\n\treturn (\n\t\t<RenamePatternCategoryModal\n\t\t\tcategory={ normalizedCategory }\n\t\t\texistingCategories={ existingCategories }\n\t\t\tonClose={ onClose }\n\t\t\toverlayClassName=\"edit-site-list__rename-modal\"\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t/>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,WAAW,IAAIC,mBAAmB,QAAQ,qBAAqB;AACxE;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,8DAA8D;;AAE/F;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAE3C,MAAM;EAAEC;AAA2B,CAAC,GAAGP,MAAM,CAAEF,mBAAoB,CAAC;AAEpE,eAAe,SAASU,sBAAsBA,CAAE;EAAEC,QAAQ;EAAEC;AAAQ,CAAC,EAAG;EACvE,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAGjB,QAAQ,CAAE,KAAM,CAAC;EAEzD,oBACCW,KAAA,CAAAF,SAAA;IAAAS,QAAA,gBACCX,IAAA,CAACR,QAAQ;MAACoB,OAAO,EAAGA,CAAA,KAAMF,cAAc,CAAE,IAAK,CAAG;MAAAC,QAAA,EAC/CjB,EAAE,CAAE,QAAS;IAAC,CACP,CAAC,EACTe,WAAW,iBACZT,IAAA,CAACa,WAAW;MACXN,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,CAAA,KAAM;QACfE,cAAc,CAAE,KAAM,CAAC;QACvBF,OAAO,CAAC,CAAC;MACV;IAAG,CACH,CACD;EAAA,CACA,CAAC;AAEL;AAEA,SAASK,WAAWA,CAAE;EAAEN,QAAQ;EAAEC;AAAQ,CAAC,EAAG;EAC7C;EACA;EACA;EACA,MAAMM,kBAAkB,GAAG;IAC1BC,EAAE,EAAER,QAAQ,CAACQ,EAAE;IACfC,IAAI,EAAET,QAAQ,CAACS,IAAI;IACnBC,IAAI,EAAEV,QAAQ,CAACW;EAChB,CAAC;;EAED;EACA,MAAMC,kBAAkB,GAAGtB,oBAAoB,CAAC,CAAC;EAEjD,oBACCG,IAAA,CAACK,0BAA0B;IAC1BE,QAAQ,EAAGO,kBAAoB;IAC/BK,kBAAkB,EAAGA,kBAAoB;IACzCX,OAAO,EAAGA,OAAS;IACnBY,gBAAgB,EAAC,8BAA8B;IAC/CC,YAAY,EAAC,qBAAqB;IAClCC,IAAI,EAAC;EAAO,CACZ,CAAC;AAEJ","ignoreList":[]}
@@ -16,12 +16,36 @@ const {
16
16
  /**
17
17
  * Internal dependencies
18
18
  */
19
- import { TEMPLATE_PART_ALL_AREAS_CATEGORY, PATTERN_DEFAULT_CATEGORY, PATTERN_USER_CATEGORY, PATTERN_TYPES } from '../../utils/constants';
19
+ import { TEMPLATE_PART_ALL_AREAS_CATEGORY, PATTERN_DEFAULT_CATEGORY, PATTERN_USER_CATEGORY, PATTERN_TYPES, TEMPLATE_PART_POST_TYPE } from '../../utils/constants';
20
20
 
21
21
  // Default search helpers.
22
- const defaultGetName = item => item.name || '';
23
- const defaultGetTitle = item => item.title;
24
- const defaultGetDescription = item => item.description || '';
22
+ const defaultGetName = item => {
23
+ if (item.type === PATTERN_TYPES.user) {
24
+ return item.slug;
25
+ }
26
+ if (item.type === TEMPLATE_PART_POST_TYPE) {
27
+ return '';
28
+ }
29
+ return item.name || '';
30
+ };
31
+ export const defaultGetTitle = item => {
32
+ if (typeof item.title === 'string') {
33
+ return item.title;
34
+ }
35
+ if (item.title && item.title.rendered) {
36
+ return item.title.rendered;
37
+ }
38
+ if (item.title && item.title.raw) {
39
+ return item.title.raw;
40
+ }
41
+ return '';
42
+ };
43
+ const defaultGetDescription = item => {
44
+ if (item.type === PATTERN_TYPES.user) {
45
+ return item.excerpt.raw;
46
+ }
47
+ return item.description || '';
48
+ };
25
49
  const defaultGetKeywords = item => item.keywords || [];
26
50
  const defaultHasCategory = () => false;
27
51
  const removeMatchingTerms = (unmatchedTerms, unprocessedTerms) => {
@@ -1 +1 @@
1
- {"version":3,"names":["privateApis","blockEditorPrivateApis","unlock","extractWords","getNormalizedSearchTerms","normalizeString","TEMPLATE_PART_ALL_AREAS_CATEGORY","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","PATTERN_TYPES","defaultGetName","item","name","defaultGetTitle","title","defaultGetDescription","description","defaultGetKeywords","keywords","defaultHasCategory","removeMatchingTerms","unmatchedTerms","unprocessedTerms","filter","term","some","unprocessedTerm","includes","searchItems","items","searchInput","config","normalizedSearchTerms","onlyFilterByCategory","categoryId","length","searchRankConfig","threshold","rankedItems","map","getItemSearchRank","rank","sort","rank1","rank2","searchTerm","getName","getTitle","getDescription","getKeywords","hasCategory","type","user","normalizedSearchInput","normalizedTitle","startsWith","terms","join"],"sources":["@wordpress/edit-site/src/components/page-patterns/search-items.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { extractWords, getNormalizedSearchTerms, normalizeString } = unlock(\n\tblockEditorPrivateApis\n);\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PART_ALL_AREAS_CATEGORY,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\n// Default search helpers.\nconst defaultGetName = ( item ) => item.name || '';\nconst defaultGetTitle = ( item ) => item.title;\nconst defaultGetDescription = ( item ) => item.description || '';\nconst defaultGetKeywords = ( item ) => item.keywords || [];\nconst defaultHasCategory = () => false;\n\nconst removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {\n\treturn unmatchedTerms.filter(\n\t\t( term ) =>\n\t\t\t! getNormalizedSearchTerms( unprocessedTerms ).some(\n\t\t\t\t( unprocessedTerm ) => unprocessedTerm.includes( term )\n\t\t\t)\n\t);\n};\n\n/**\n * Filters an item list given a search term.\n *\n * @param {Array} items Item list\n * @param {string} searchInput Search input.\n * @param {Object} config Search Config.\n *\n * @return {Array} Filtered item list.\n */\nexport const searchItems = ( items = [], searchInput = '', config = {} ) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\n\t// Filter patterns by category: the default category indicates that all patterns will be shown.\n\tconst onlyFilterByCategory =\n\t\tconfig.categoryId !== PATTERN_DEFAULT_CATEGORY &&\n\t\t! normalizedSearchTerms.length;\n\tconst searchRankConfig = { ...config, onlyFilterByCategory };\n\n\t// If we aren't filtering on search terms, matching on category is satisfactory.\n\t// If we are, then we need more than a category match.\n\tconst threshold = onlyFilterByCategory ? 0 : 1;\n\n\tconst rankedItems = items\n\t\t.map( ( item ) => {\n\t\t\treturn [\n\t\t\t\titem,\n\t\t\t\tgetItemSearchRank( item, searchInput, searchRankConfig ),\n\t\t\t];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > threshold );\n\n\t// If we didn't have terms to search on, there's no point sorting.\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn rankedItems.map( ( [ item ] ) => item );\n\t}\n\n\trankedItems.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedItems.map( ( [ item ] ) => item );\n};\n\n/**\n * Get the search rank for a given item and a specific search term.\n * The better the match, the higher the rank.\n * If the rank equals 0, it should be excluded from the results.\n *\n * @param {Object} item Item to filter.\n * @param {string} searchTerm Search term.\n * @param {Object} config Search Config.\n *\n * @return {number} Search Rank.\n */\nfunction getItemSearchRank( item, searchTerm, config ) {\n\tconst {\n\t\tcategoryId,\n\t\tgetName = defaultGetName,\n\t\tgetTitle = defaultGetTitle,\n\t\tgetDescription = defaultGetDescription,\n\t\tgetKeywords = defaultGetKeywords,\n\t\thasCategory = defaultHasCategory,\n\t\tonlyFilterByCategory,\n\t} = config;\n\n\tlet rank =\n\t\tcategoryId === PATTERN_DEFAULT_CATEGORY ||\n\t\tcategoryId === TEMPLATE_PART_ALL_AREAS_CATEGORY ||\n\t\t( categoryId === PATTERN_USER_CATEGORY &&\n\t\t\titem.type === PATTERN_TYPES.user ) ||\n\t\thasCategory( item, categoryId )\n\t\t\t? 1\n\t\t\t: 0;\n\n\t// If an item doesn't belong to the current category or we don't have\n\t// search terms to filter by, return the initial rank value.\n\tif ( ! rank || onlyFilterByCategory ) {\n\t\treturn rank;\n\t}\n\n\tconst name = getName( item );\n\tconst title = getTitle( item );\n\tconst description = getDescription( item );\n\tconst keywords = getKeywords( item );\n\n\tconst normalizedSearchInput = normalizeString( searchTerm );\n\tconst normalizedTitle = normalizeString( title );\n\n\t// Prefers exact matches\n\t// Then prefers if the beginning of the title matches the search term\n\t// name, keywords, description matches come later.\n\tif ( normalizedSearchInput === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchInput ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst terms = [ name, title, description, ...keywords ].join( ' ' );\n\t\tconst normalizedSearchTerms = extractWords( normalizedSearchInput );\n\t\tconst unmatchedTerms = removeMatchingTerms(\n\t\t\tnormalizedSearchTerms,\n\t\t\tterms\n\t\t);\n\n\t\tif ( unmatchedTerms.length === 0 ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\treturn rank;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["privateApis","blockEditorPrivateApis","unlock","extractWords","getNormalizedSearchTerms","normalizeString","TEMPLATE_PART_ALL_AREAS_CATEGORY","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","PATTERN_TYPES","TEMPLATE_PART_POST_TYPE","defaultGetName","item","type","user","slug","name","defaultGetTitle","title","rendered","raw","defaultGetDescription","excerpt","description","defaultGetKeywords","keywords","defaultHasCategory","removeMatchingTerms","unmatchedTerms","unprocessedTerms","filter","term","some","unprocessedTerm","includes","searchItems","items","searchInput","config","normalizedSearchTerms","onlyFilterByCategory","categoryId","length","searchRankConfig","threshold","rankedItems","map","getItemSearchRank","rank","sort","rank1","rank2","searchTerm","getName","getTitle","getDescription","getKeywords","hasCategory","normalizedSearchInput","normalizedTitle","startsWith","terms","join"],"sources":["@wordpress/edit-site/src/components/page-patterns/search-items.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { extractWords, getNormalizedSearchTerms, normalizeString } = unlock(\n\tblockEditorPrivateApis\n);\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PART_ALL_AREAS_CATEGORY,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\n\n// Default search helpers.\nconst defaultGetName = ( item ) => {\n\tif ( item.type === PATTERN_TYPES.user ) {\n\t\treturn item.slug;\n\t}\n\n\tif ( item.type === TEMPLATE_PART_POST_TYPE ) {\n\t\treturn '';\n\t}\n\n\treturn item.name || '';\n};\n\nexport const defaultGetTitle = ( item ) => {\n\tif ( typeof item.title === 'string' ) {\n\t\treturn item.title;\n\t}\n\n\tif ( item.title && item.title.rendered ) {\n\t\treturn item.title.rendered;\n\t}\n\n\tif ( item.title && item.title.raw ) {\n\t\treturn item.title.raw;\n\t}\n\n\treturn '';\n};\n\nconst defaultGetDescription = ( item ) => {\n\tif ( item.type === PATTERN_TYPES.user ) {\n\t\treturn item.excerpt.raw;\n\t}\n\n\treturn item.description || '';\n};\n\nconst defaultGetKeywords = ( item ) => item.keywords || [];\nconst defaultHasCategory = () => false;\n\nconst removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {\n\treturn unmatchedTerms.filter(\n\t\t( term ) =>\n\t\t\t! getNormalizedSearchTerms( unprocessedTerms ).some(\n\t\t\t\t( unprocessedTerm ) => unprocessedTerm.includes( term )\n\t\t\t)\n\t);\n};\n\n/**\n * Filters an item list given a search term.\n *\n * @param {Array} items Item list\n * @param {string} searchInput Search input.\n * @param {Object} config Search Config.\n *\n * @return {Array} Filtered item list.\n */\nexport const searchItems = ( items = [], searchInput = '', config = {} ) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\n\t// Filter patterns by category: the default category indicates that all patterns will be shown.\n\tconst onlyFilterByCategory =\n\t\tconfig.categoryId !== PATTERN_DEFAULT_CATEGORY &&\n\t\t! normalizedSearchTerms.length;\n\tconst searchRankConfig = { ...config, onlyFilterByCategory };\n\n\t// If we aren't filtering on search terms, matching on category is satisfactory.\n\t// If we are, then we need more than a category match.\n\tconst threshold = onlyFilterByCategory ? 0 : 1;\n\n\tconst rankedItems = items\n\t\t.map( ( item ) => {\n\t\t\treturn [\n\t\t\t\titem,\n\t\t\t\tgetItemSearchRank( item, searchInput, searchRankConfig ),\n\t\t\t];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > threshold );\n\n\t// If we didn't have terms to search on, there's no point sorting.\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn rankedItems.map( ( [ item ] ) => item );\n\t}\n\n\trankedItems.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedItems.map( ( [ item ] ) => item );\n};\n\n/**\n * Get the search rank for a given item and a specific search term.\n * The better the match, the higher the rank.\n * If the rank equals 0, it should be excluded from the results.\n *\n * @param {Object} item Item to filter.\n * @param {string} searchTerm Search term.\n * @param {Object} config Search Config.\n *\n * @return {number} Search Rank.\n */\nfunction getItemSearchRank( item, searchTerm, config ) {\n\tconst {\n\t\tcategoryId,\n\t\tgetName = defaultGetName,\n\t\tgetTitle = defaultGetTitle,\n\t\tgetDescription = defaultGetDescription,\n\t\tgetKeywords = defaultGetKeywords,\n\t\thasCategory = defaultHasCategory,\n\t\tonlyFilterByCategory,\n\t} = config;\n\n\tlet rank =\n\t\tcategoryId === PATTERN_DEFAULT_CATEGORY ||\n\t\tcategoryId === TEMPLATE_PART_ALL_AREAS_CATEGORY ||\n\t\t( categoryId === PATTERN_USER_CATEGORY &&\n\t\t\titem.type === PATTERN_TYPES.user ) ||\n\t\thasCategory( item, categoryId )\n\t\t\t? 1\n\t\t\t: 0;\n\n\t// If an item doesn't belong to the current category or we don't have\n\t// search terms to filter by, return the initial rank value.\n\tif ( ! rank || onlyFilterByCategory ) {\n\t\treturn rank;\n\t}\n\n\tconst name = getName( item );\n\tconst title = getTitle( item );\n\tconst description = getDescription( item );\n\tconst keywords = getKeywords( item );\n\n\tconst normalizedSearchInput = normalizeString( searchTerm );\n\tconst normalizedTitle = normalizeString( title );\n\n\t// Prefers exact matches\n\t// Then prefers if the beginning of the title matches the search term\n\t// name, keywords, description matches come later.\n\tif ( normalizedSearchInput === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchInput ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst terms = [ name, title, description, ...keywords ].join( ' ' );\n\t\tconst normalizedSearchTerms = extractWords( normalizedSearchInput );\n\t\tconst unmatchedTerms = removeMatchingTerms(\n\t\t\tnormalizedSearchTerms,\n\t\t\tterms\n\t\t);\n\n\t\tif ( unmatchedTerms.length === 0 ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\treturn rank;\n}\n"],"mappings":"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","ignoreList":[]}