@wordpress/edit-site 5.12.7 → 5.12.9

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 (166) hide show
  1. package/build/components/block-editor/editor-canvas.js +1 -1
  2. package/build/components/block-editor/editor-canvas.js.map +1 -1
  3. package/build/components/block-editor/index.js +0 -4
  4. package/build/components/block-editor/index.js.map +1 -1
  5. package/build/components/block-editor/use-site-editor-settings.js +12 -6
  6. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  7. package/build/components/create-pattern-modal/index.js +7 -3
  8. package/build/components/create-pattern-modal/index.js.map +1 -1
  9. package/build/components/page-patterns/duplicate-menu-item.js +163 -0
  10. package/build/components/page-patterns/duplicate-menu-item.js.map +1 -0
  11. package/build/components/page-patterns/grid-item.js +83 -59
  12. package/build/components/page-patterns/grid-item.js.map +1 -1
  13. package/build/components/page-patterns/grid.js +81 -13
  14. package/build/components/page-patterns/grid.js.map +1 -1
  15. package/build/components/page-patterns/header.js +69 -0
  16. package/build/components/page-patterns/header.js.map +1 -0
  17. package/build/components/page-patterns/index.js +3 -1
  18. package/build/components/page-patterns/index.js.map +1 -1
  19. package/build/components/page-patterns/patterns-list.js +66 -27
  20. package/build/components/page-patterns/patterns-list.js.map +1 -1
  21. package/build/components/page-patterns/rename-menu-item.js +109 -0
  22. package/build/components/page-patterns/rename-menu-item.js.map +1 -0
  23. package/build/components/page-patterns/use-patterns.js +99 -118
  24. package/build/components/page-patterns/use-patterns.js.map +1 -1
  25. package/build/components/page-template-parts/add-new-template-part.js +74 -0
  26. package/build/components/page-template-parts/add-new-template-part.js.map +1 -0
  27. package/build/components/page-template-parts/index.js +2 -23
  28. package/build/components/page-template-parts/index.js.map +1 -1
  29. package/build/components/resizable-frame/index.js +75 -32
  30. package/build/components/resizable-frame/index.js.map +1 -1
  31. package/build/components/sidebar-navigation-screen/index.js +14 -8
  32. package/build/components/sidebar-navigation-screen/index.js.map +1 -1
  33. package/build/components/sidebar-navigation-screen-main/template-part-hint.js +1 -1
  34. package/build/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -1
  35. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  36. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  37. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  38. package/build/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  39. package/build/components/sidebar-navigation-screen-page/status-label.js +1 -34
  40. package/build/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  41. package/build/components/sidebar-navigation-screen-pages/index.js +33 -25
  42. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  43. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  44. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  45. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  46. package/build/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  47. package/build/components/sidebar-navigation-screen-patterns/index.js +5 -6
  48. package/build/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  49. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  50. package/build/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  51. package/build/components/site-hub/index.js +4 -2
  52. package/build/components/site-hub/index.js.map +1 -1
  53. package/build/components/sync-state-with-url/use-sync-path-with-url.js +15 -12
  54. package/build/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  55. package/build/components/template-actions/index.js +3 -1
  56. package/build/components/template-actions/index.js.map +1 -1
  57. package/build/components/template-actions/rename-menu-item.js +9 -6
  58. package/build/components/template-actions/rename-menu-item.js.map +1 -1
  59. package/build/hooks/push-changes-to-global-styles/index.js +3 -1
  60. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  61. package/build/utils/use-activate-theme.js +1 -1
  62. package/build/utils/use-activate-theme.js.map +1 -1
  63. package/build-module/components/block-editor/editor-canvas.js +1 -1
  64. package/build-module/components/block-editor/editor-canvas.js.map +1 -1
  65. package/build-module/components/block-editor/index.js +0 -4
  66. package/build-module/components/block-editor/index.js.map +1 -1
  67. package/build-module/components/block-editor/use-site-editor-settings.js +13 -7
  68. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  69. package/build-module/components/create-pattern-modal/index.js +6 -3
  70. package/build-module/components/create-pattern-modal/index.js.map +1 -1
  71. package/build-module/components/page-patterns/duplicate-menu-item.js +147 -0
  72. package/build-module/components/page-patterns/duplicate-menu-item.js.map +1 -0
  73. package/build-module/components/page-patterns/grid-item.js +84 -65
  74. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  75. package/build-module/components/page-patterns/grid.js +82 -15
  76. package/build-module/components/page-patterns/grid.js.map +1 -1
  77. package/build-module/components/page-patterns/header.js +54 -0
  78. package/build-module/components/page-patterns/header.js.map +1 -0
  79. package/build-module/components/page-patterns/index.js +3 -1
  80. package/build-module/components/page-patterns/index.js.map +1 -1
  81. package/build-module/components/page-patterns/patterns-list.js +68 -30
  82. package/build-module/components/page-patterns/patterns-list.js.map +1 -1
  83. package/build-module/components/page-patterns/rename-menu-item.js +97 -0
  84. package/build-module/components/page-patterns/rename-menu-item.js.map +1 -0
  85. package/build-module/components/page-patterns/use-patterns.js +100 -119
  86. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  87. package/build-module/components/page-template-parts/add-new-template-part.js +58 -0
  88. package/build-module/components/page-template-parts/add-new-template-part.js.map +1 -0
  89. package/build-module/components/page-template-parts/index.js +3 -22
  90. package/build-module/components/page-template-parts/index.js.map +1 -1
  91. package/build-module/components/resizable-frame/index.js +76 -35
  92. package/build-module/components/resizable-frame/index.js.map +1 -1
  93. package/build-module/components/sidebar-navigation-screen/index.js +15 -9
  94. package/build-module/components/sidebar-navigation-screen/index.js.map +1 -1
  95. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js +1 -1
  96. package/build-module/components/sidebar-navigation-screen-main/template-part-hint.js.map +1 -1
  97. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  98. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  99. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +3 -3
  100. package/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js.map +1 -1
  101. package/build-module/components/sidebar-navigation-screen-page/status-label.js +1 -32
  102. package/build-module/components/sidebar-navigation-screen-page/status-label.js.map +1 -1
  103. package/build-module/components/sidebar-navigation-screen-pages/index.js +33 -25
  104. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  105. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +3 -2
  106. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js.map +1 -1
  107. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +3 -2
  108. package/build-module/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js.map +1 -1
  109. package/build-module/components/sidebar-navigation-screen-patterns/index.js +5 -6
  110. package/build-module/components/sidebar-navigation-screen-patterns/index.js.map +1 -1
  111. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js +9 -5
  112. package/build-module/components/sidebar-navigation-screen-patterns/use-my-patterns.js.map +1 -1
  113. package/build-module/components/site-hub/index.js +4 -2
  114. package/build-module/components/site-hub/index.js.map +1 -1
  115. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js +16 -12
  116. package/build-module/components/sync-state-with-url/use-sync-path-with-url.js.map +1 -1
  117. package/build-module/components/template-actions/index.js +2 -1
  118. package/build-module/components/template-actions/index.js.map +1 -1
  119. package/build-module/components/template-actions/rename-menu-item.js +8 -6
  120. package/build-module/components/template-actions/rename-menu-item.js.map +1 -1
  121. package/build-module/hooks/push-changes-to-global-styles/index.js +4 -2
  122. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  123. package/build-module/utils/use-activate-theme.js +1 -1
  124. package/build-module/utils/use-activate-theme.js.map +1 -1
  125. package/build-style/style-rtl.css +150 -54
  126. package/build-style/style.css +150 -54
  127. package/package.json +14 -14
  128. package/src/components/block-editor/editor-canvas.js +1 -1
  129. package/src/components/block-editor/index.js +0 -4
  130. package/src/components/block-editor/use-site-editor-settings.js +16 -11
  131. package/src/components/create-pattern-modal/index.js +5 -2
  132. package/src/components/header-edit-mode/document-actions/style.scss +4 -0
  133. package/src/components/layout/style.scss +1 -0
  134. package/src/components/page-patterns/duplicate-menu-item.js +196 -0
  135. package/src/components/page-patterns/grid-item.js +187 -137
  136. package/src/components/page-patterns/grid.js +118 -20
  137. package/src/components/page-patterns/header.js +69 -0
  138. package/src/components/page-patterns/index.js +6 -1
  139. package/src/components/page-patterns/patterns-list.js +87 -46
  140. package/src/components/page-patterns/rename-menu-item.js +115 -0
  141. package/src/components/page-patterns/style.scss +106 -26
  142. package/src/components/page-patterns/use-patterns.js +96 -167
  143. package/src/components/page-template-parts/add-new-template-part.js +57 -0
  144. package/src/components/page-template-parts/index.js +3 -22
  145. package/src/components/resizable-frame/index.js +100 -31
  146. package/src/components/resizable-frame/style.scss +26 -9
  147. package/src/components/sidebar-navigation-item/style.scss +10 -1
  148. package/src/components/sidebar-navigation-screen/index.js +14 -7
  149. package/src/components/sidebar-navigation-screen-main/template-part-hint.js +1 -3
  150. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -0
  151. package/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js +1 -1
  152. package/src/components/sidebar-navigation-screen-page/status-label.js +1 -35
  153. package/src/components/sidebar-navigation-screen-pages/index.js +39 -29
  154. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menu.js +2 -1
  155. package/src/components/sidebar-navigation-screen-pattern/template-part-navigation-menus.js +2 -1
  156. package/src/components/sidebar-navigation-screen-patterns/index.js +20 -24
  157. package/src/components/sidebar-navigation-screen-patterns/style.scss +0 -3
  158. package/src/components/sidebar-navigation-screen-patterns/use-my-patterns.js +7 -6
  159. package/src/components/site-hub/index.js +6 -2
  160. package/src/components/site-hub/style.scss +5 -0
  161. package/src/components/sync-state-with-url/use-sync-path-with-url.js +73 -66
  162. package/src/components/template-actions/index.js +2 -1
  163. package/src/components/template-actions/rename-menu-item.js +8 -6
  164. package/src/hooks/push-changes-to-global-styles/index.js +8 -1
  165. package/src/style.scss +10 -12
  166. package/src/utils/use-activate-theme.js +1 -1
@@ -4,12 +4,12 @@
4
4
  import { parse } from '@wordpress/blocks';
5
5
  import { useSelect } from '@wordpress/data';
6
6
  import { store as coreStore } from '@wordpress/core-data';
7
- import { useMemo } from '@wordpress/element';
7
+ import { decodeEntities } from '@wordpress/html-entities';
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
11
 
12
- import { CORE_PATTERN_SOURCES, PATTERNS, SYNC_TYPES, TEMPLATE_PARTS, USER_PATTERNS, USER_PATTERN_CATEGORY, filterOutDuplicatesByName } from './utils';
12
+ import { CORE_PATTERN_SOURCES, PATTERNS, SYNC_TYPES, TEMPLATE_PARTS, USER_PATTERNS, filterOutDuplicatesByName } from './utils';
13
13
  import { unlock } from '../../lock-unlock';
14
14
  import { searchItems } from './search-items';
15
15
  import { store as editSiteStore } from '../../store';
@@ -21,84 +21,68 @@ const templatePartToPattern = templatePart => ({
21
21
  blocks: parse(templatePart.content.raw),
22
22
  categories: [templatePart.area],
23
23
  description: templatePart.description || '',
24
+ isCustom: templatePart.source === 'custom',
24
25
  keywords: templatePart.keywords || [],
26
+ id: createTemplatePartId(templatePart.theme, templatePart.slug),
25
27
  name: createTemplatePartId(templatePart.theme, templatePart.slug),
26
- title: templatePart.title.rendered,
28
+ title: decodeEntities(templatePart.title.rendered),
27
29
  type: templatePart.type,
28
30
  templatePart
29
31
  });
30
32
 
31
33
  const templatePartHasCategory = (item, category) => item.templatePart.area === category;
32
34
 
33
- const useTemplatePartsAsPatterns = (categoryId, postType = TEMPLATE_PARTS, filterValue = '') => {
34
- const {
35
- templateParts,
36
- isResolving
37
- } = useSelect(select => {
38
- if (postType !== TEMPLATE_PARTS) {
39
- return {
40
- templateParts: EMPTY_PATTERN_LIST,
41
- isResolving: false
42
- };
43
- }
44
-
45
- const {
46
- getEntityRecords,
47
- isResolving: _isResolving
48
- } = select(coreStore);
49
- const query = {
50
- per_page: -1
51
- };
52
- const rawTemplateParts = getEntityRecords('postType', postType, query);
53
- const partsAsPatterns = rawTemplateParts?.map(templatePart => templatePartToPattern(templatePart));
54
- return {
55
- templateParts: partsAsPatterns,
56
- isResolving: _isResolving('getEntityRecords', ['postType', 'wp_template_part', query])
57
- };
58
- }, [postType]);
59
- const filteredTemplateParts = useMemo(() => {
60
- if (!templateParts) {
61
- return EMPTY_PATTERN_LIST;
62
- }
35
+ const selectTemplatePartsAsPatterns = (select, {
36
+ categoryId,
37
+ search = ''
38
+ } = {}) => {
39
+ var _getEntityRecords;
63
40
 
64
- return searchItems(templateParts, filterValue, {
65
- categoryId,
66
- hasCategory: templatePartHasCategory
67
- });
68
- }, [templateParts, filterValue, categoryId]);
41
+ const {
42
+ getEntityRecords,
43
+ getIsResolving
44
+ } = select(coreStore);
45
+ const query = {
46
+ per_page: -1
47
+ };
48
+ const rawTemplateParts = (_getEntityRecords = getEntityRecords('postType', TEMPLATE_PARTS, query)) !== null && _getEntityRecords !== void 0 ? _getEntityRecords : EMPTY_PATTERN_LIST;
49
+ const templateParts = rawTemplateParts.map(templatePart => templatePartToPattern(templatePart));
50
+ const isResolving = getIsResolving('getEntityRecords', ['postType', 'wp_template_part', query]);
51
+ const patterns = searchItems(templateParts, search, {
52
+ categoryId,
53
+ hasCategory: templatePartHasCategory
54
+ });
69
55
  return {
70
- templateParts: filteredTemplateParts,
56
+ patterns,
71
57
  isResolving
72
58
  };
73
59
  };
74
60
 
75
- const useThemePatterns = (categoryId, postType = PATTERNS, filterValue = '') => {
76
- const blockPatterns = useSelect(select => {
77
- var _settings$__experimen;
61
+ const selectThemePatterns = (select, {
62
+ categoryId,
63
+ search = ''
64
+ } = {}) => {
65
+ var _settings$__experimen;
78
66
 
79
- const {
80
- getSettings
81
- } = unlock(select(editSiteStore));
82
- const settings = getSettings();
83
- return (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatterns;
84
- });
85
- const restBlockPatterns = useSelect(select => select(coreStore).getBlockPatterns());
86
- const patterns = useMemo(() => [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !CORE_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).map(pattern => ({ ...pattern,
67
+ const {
68
+ getSettings
69
+ } = unlock(select(editSiteStore));
70
+ const settings = getSettings();
71
+ const blockPatterns = (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : settings.__experimentalBlockPatterns;
72
+ const restBlockPatterns = select(coreStore).getBlockPatterns();
73
+ let patterns = [...(blockPatterns || []), ...(restBlockPatterns || [])].filter(pattern => !CORE_PATTERN_SOURCES.includes(pattern.source)).filter(filterOutDuplicatesByName).map(pattern => ({ ...pattern,
87
74
  keywords: pattern.keywords || [],
88
75
  type: 'pattern',
89
76
  blocks: parse(pattern.content)
90
- })), [blockPatterns, restBlockPatterns]);
91
- const filteredPatterns = useMemo(() => {
92
- if (postType !== PATTERNS) {
93
- return EMPTY_PATTERN_LIST;
94
- }
95
-
96
- return searchItems(patterns, filterValue, {
97
- categoryId,
98
- hasCategory: (item, currentCategory) => item.categories?.includes(currentCategory)
99
- });
100
- }, [patterns, filterValue, categoryId, postType]);
101
- return filteredPatterns;
77
+ }));
78
+ patterns = searchItems(patterns, search, {
79
+ categoryId,
80
+ hasCategory: (item, currentCategory) => item.categories?.includes(currentCategory)
81
+ });
82
+ return {
83
+ patterns,
84
+ isResolving: false
85
+ };
102
86
  };
103
87
 
104
88
  const reusableBlockToPattern = reusableBlock => ({
@@ -112,67 +96,64 @@ const reusableBlockToPattern = reusableBlock => ({
112
96
  reusableBlock
113
97
  });
114
98
 
115
- const useUserPatterns = (categoryId, categoryType = PATTERNS, filterValue = '') => {
116
- const postType = categoryType === PATTERNS ? USER_PATTERNS : categoryType;
117
- const unfilteredPatterns = useSelect(select => {
118
- if (postType !== USER_PATTERNS || categoryId !== USER_PATTERN_CATEGORY) {
119
- return EMPTY_PATTERN_LIST;
120
- }
121
-
122
- const {
123
- getEntityRecords
124
- } = select(coreStore);
125
- const records = getEntityRecords('postType', postType, {
126
- per_page: -1
127
- });
128
-
129
- if (!records) {
130
- return EMPTY_PATTERN_LIST;
131
- }
132
-
133
- return records.map(record => reusableBlockToPattern(record));
134
- }, [postType, categoryId]);
135
- const filteredPatterns = useMemo(() => {
136
- if (!unfilteredPatterns.length) {
137
- return EMPTY_PATTERN_LIST;
138
- }
139
-
140
- return searchItems(unfilteredPatterns, filterValue, {
141
- // We exit user pattern retrieval early if we aren't in the
142
- // catch-all category for user created patterns, so it has
143
- // to be in the category.
144
- hasCategory: () => true
145
- });
146
- }, [unfilteredPatterns, filterValue]);
147
- const patterns = {
148
- syncedPatterns: [],
149
- unsyncedPatterns: []
99
+ const selectUserPatterns = (select, {
100
+ search = '',
101
+ syncStatus
102
+ } = {}) => {
103
+ const {
104
+ getEntityRecords,
105
+ getIsResolving
106
+ } = select(coreStore);
107
+ const query = {
108
+ per_page: -1
150
109
  };
151
- filteredPatterns.forEach(pattern => {
152
- if (pattern.syncStatus === SYNC_TYPES.full) {
153
- patterns.syncedPatterns.push(pattern);
154
- } else {
155
- patterns.unsyncedPatterns.push(pattern);
156
- }
110
+ const records = getEntityRecords('postType', USER_PATTERNS, query);
111
+ let patterns = records ? records.map(record => reusableBlockToPattern(record)) : EMPTY_PATTERN_LIST;
112
+ const isResolving = getIsResolving('getEntityRecords', ['postType', USER_PATTERNS, query]);
113
+
114
+ if (syncStatus) {
115
+ patterns = patterns.filter(pattern => pattern.syncStatus === syncStatus);
116
+ }
117
+
118
+ patterns = searchItems(patterns, search, {
119
+ // We exit user pattern retrieval early if we aren't in the
120
+ // catch-all category for user created patterns, so it has
121
+ // to be in the category.
122
+ hasCategory: () => true
157
123
  });
158
- return patterns;
159
- };
160
-
161
- export const usePatterns = (categoryType, categoryId, filterValue) => {
162
- const blockPatterns = useThemePatterns(categoryId, categoryType, filterValue);
163
- const {
164
- syncedPatterns = [],
165
- unsyncedPatterns = []
166
- } = useUserPatterns(categoryId, categoryType, filterValue);
167
- const {
168
- templateParts,
124
+ return {
125
+ patterns,
169
126
  isResolving
170
- } = useTemplatePartsAsPatterns(categoryId, categoryType, filterValue);
171
- const patterns = {
172
- syncedPatterns: [...templateParts, ...syncedPatterns],
173
- unsyncedPatterns: [...blockPatterns, ...unsyncedPatterns]
174
127
  };
175
- return [patterns, isResolving];
128
+ };
129
+
130
+ export const usePatterns = (categoryType, categoryId, {
131
+ search = '',
132
+ syncStatus
133
+ }) => {
134
+ return useSelect(select => {
135
+ if (categoryType === TEMPLATE_PARTS) {
136
+ return selectTemplatePartsAsPatterns(select, {
137
+ categoryId,
138
+ search
139
+ });
140
+ } else if (categoryType === PATTERNS) {
141
+ return selectThemePatterns(select, {
142
+ categoryId,
143
+ search
144
+ });
145
+ } else if (categoryType === USER_PATTERNS) {
146
+ return selectUserPatterns(select, {
147
+ search,
148
+ syncStatus
149
+ });
150
+ }
151
+
152
+ return {
153
+ patterns: EMPTY_PATTERN_LIST,
154
+ isResolving: false
155
+ };
156
+ }, [categoryId, categoryType, search, syncStatus]);
176
157
  };
177
158
  export default usePatterns;
178
159
  //# sourceMappingURL=use-patterns.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/page-patterns/use-patterns.js"],"names":["parse","useSelect","store","coreStore","useMemo","CORE_PATTERN_SOURCES","PATTERNS","SYNC_TYPES","TEMPLATE_PARTS","USER_PATTERNS","USER_PATTERN_CATEGORY","filterOutDuplicatesByName","unlock","searchItems","editSiteStore","EMPTY_PATTERN_LIST","createTemplatePartId","theme","slug","templatePartToPattern","templatePart","blocks","content","raw","categories","area","description","keywords","name","title","rendered","type","templatePartHasCategory","item","category","useTemplatePartsAsPatterns","categoryId","postType","filterValue","templateParts","isResolving","select","getEntityRecords","_isResolving","query","per_page","rawTemplateParts","partsAsPatterns","map","filteredTemplateParts","hasCategory","useThemePatterns","blockPatterns","getSettings","settings","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","restBlockPatterns","getBlockPatterns","patterns","filter","pattern","includes","source","filteredPatterns","currentCategory","reusableBlockToPattern","reusableBlock","wp_pattern","id","syncStatus","wp_pattern_sync_status","full","useUserPatterns","categoryType","unfilteredPatterns","records","record","length","syncedPatterns","unsyncedPatterns","forEach","push","usePatterns"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,mBAAtB;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,SACCC,oBADD,EAECC,QAFD,EAGCC,UAHD,EAICC,cAJD,EAKCC,aALD,EAMCC,qBAND,EAOCC,yBAPD,QAQO,SARP;AASA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAASC,WAAT,QAA4B,gBAA5B;AACA,SAASX,KAAK,IAAIY,aAAlB,QAAuC,aAAvC;AAEA,MAAMC,kBAAkB,GAAG,EAA3B;;AAEA,MAAMC,oBAAoB,GAAG,CAAEC,KAAF,EAASC,IAAT,KAC5BD,KAAK,IAAIC,IAAT,GAAgBD,KAAK,GAAG,IAAR,GAAeC,IAA/B,GAAsC,IADvC;;AAGA,MAAMC,qBAAqB,GAAKC,YAAF,KAAsB;AACnDC,EAAAA,MAAM,EAAErB,KAAK,CAAEoB,YAAY,CAACE,OAAb,CAAqBC,GAAvB,CADsC;AAEnDC,EAAAA,UAAU,EAAE,CAAEJ,YAAY,CAACK,IAAf,CAFuC;AAGnDC,EAAAA,WAAW,EAAEN,YAAY,CAACM,WAAb,IAA4B,EAHU;AAInDC,EAAAA,QAAQ,EAAEP,YAAY,CAACO,QAAb,IAAyB,EAJgB;AAKnDC,EAAAA,IAAI,EAAEZ,oBAAoB,CAAEI,YAAY,CAACH,KAAf,EAAsBG,YAAY,CAACF,IAAnC,CALyB;AAMnDW,EAAAA,KAAK,EAAET,YAAY,CAACS,KAAb,CAAmBC,QANyB;AAOnDC,EAAAA,IAAI,EAAEX,YAAY,CAACW,IAPgC;AAQnDX,EAAAA;AARmD,CAAtB,CAA9B;;AAWA,MAAMY,uBAAuB,GAAG,CAAEC,IAAF,EAAQC,QAAR,KAC/BD,IAAI,CAACb,YAAL,CAAkBK,IAAlB,KAA2BS,QAD5B;;AAGA,MAAMC,0BAA0B,GAAG,CAClCC,UADkC,EAElCC,QAAQ,GAAG7B,cAFuB,EAGlC8B,WAAW,GAAG,EAHoB,KAI9B;AACJ,QAAM;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA;AAAjB,MAAiCvC,SAAS,CAC7CwC,MAAF,IAAc;AACb,QAAKJ,QAAQ,KAAK7B,cAAlB,EAAmC;AAClC,aAAO;AACN+B,QAAAA,aAAa,EAAExB,kBADT;AAENyB,QAAAA,WAAW,EAAE;AAFP,OAAP;AAIA;;AAED,UAAM;AAAEE,MAAAA,gBAAF;AAAoBF,MAAAA,WAAW,EAAEG;AAAjC,QACLF,MAAM,CAAEtC,SAAF,CADP;AAEA,UAAMyC,KAAK,GAAG;AAAEC,MAAAA,QAAQ,EAAE,CAAC;AAAb,KAAd;AACA,UAAMC,gBAAgB,GAAGJ,gBAAgB,CACxC,UADwC,EAExCL,QAFwC,EAGxCO,KAHwC,CAAzC;AAKA,UAAMG,eAAe,GAAGD,gBAAgB,EAAEE,GAAlB,CAAyB5B,YAAF,IAC9CD,qBAAqB,CAAEC,YAAF,CADE,CAAxB;AAIA,WAAO;AACNmB,MAAAA,aAAa,EAAEQ,eADT;AAENP,MAAAA,WAAW,EAAEG,YAAY,CAAE,kBAAF,EAAsB,CAC9C,UAD8C,EAE9C,kBAF8C,EAG9CC,KAH8C,CAAtB;AAFnB,KAAP;AAQA,GA7B8C,EA8B/C,CAAEP,QAAF,CA9B+C,CAAhD;AAiCA,QAAMY,qBAAqB,GAAG7C,OAAO,CAAE,MAAM;AAC5C,QAAK,CAAEmC,aAAP,EAAuB;AACtB,aAAOxB,kBAAP;AACA;;AAED,WAAOF,WAAW,CAAE0B,aAAF,EAAiBD,WAAjB,EAA8B;AAC/CF,MAAAA,UAD+C;AAE/Cc,MAAAA,WAAW,EAAElB;AAFkC,KAA9B,CAAlB;AAIA,GAToC,EASlC,CAAEO,aAAF,EAAiBD,WAAjB,EAA8BF,UAA9B,CATkC,CAArC;AAWA,SAAO;AAAEG,IAAAA,aAAa,EAAEU,qBAAjB;AAAwCT,IAAAA;AAAxC,GAAP;AACA,CAlDD;;AAoDA,MAAMW,gBAAgB,GAAG,CACxBf,UADwB,EAExBC,QAAQ,GAAG/B,QAFa,EAGxBgC,WAAW,GAAG,EAHU,KAIpB;AACJ,QAAMc,aAAa,GAAGnD,SAAS,CAAIwC,MAAF,IAAc;AAAA;;AAC9C,UAAM;AAAEY,MAAAA;AAAF,QAAkBzC,MAAM,CAAE6B,MAAM,CAAE3B,aAAF,CAAR,CAA9B;AACA,UAAMwC,QAAQ,GAAGD,WAAW,EAA5B;AACA,oCACCC,QAAQ,CAACC,qCADV,yEAECD,QAAQ,CAACE,2BAFV;AAIA,GAP8B,CAA/B;AASA,QAAMC,iBAAiB,GAAGxD,SAAS,CAAIwC,MAAF,IACpCA,MAAM,CAAEtC,SAAF,CAAN,CAAoBuD,gBAApB,EADkC,CAAnC;AAIA,QAAMC,QAAQ,GAAGvD,OAAO,CACvB,MACC,CAAE,IAAKgD,aAAa,IAAI,EAAtB,CAAF,EAA8B,IAAKK,iBAAiB,IAAI,EAA1B,CAA9B,EACEG,MADF,CAEIC,OAAF,IACC,CAAExD,oBAAoB,CAACyD,QAArB,CAA+BD,OAAO,CAACE,MAAvC,CAHL,EAKEH,MALF,CAKUjD,yBALV,EAMEqC,GANF,CAMSa,OAAF,KAAiB,EACtB,GAAGA,OADmB;AAEtBlC,IAAAA,QAAQ,EAAEkC,OAAO,CAAClC,QAAR,IAAoB,EAFR;AAGtBI,IAAAA,IAAI,EAAE,SAHgB;AAItBV,IAAAA,MAAM,EAAErB,KAAK,CAAE6D,OAAO,CAACvC,OAAV;AAJS,GAAjB,CANP,CAFsB,EAcvB,CAAE8B,aAAF,EAAiBK,iBAAjB,CAduB,CAAxB;AAiBA,QAAMO,gBAAgB,GAAG5D,OAAO,CAAE,MAAM;AACvC,QAAKiC,QAAQ,KAAK/B,QAAlB,EAA6B;AAC5B,aAAOS,kBAAP;AACA;;AAED,WAAOF,WAAW,CAAE8C,QAAF,EAAYrB,WAAZ,EAAyB;AAC1CF,MAAAA,UAD0C;AAE1Cc,MAAAA,WAAW,EAAE,CAAEjB,IAAF,EAAQgC,eAAR,KACZhC,IAAI,CAACT,UAAL,EAAiBsC,QAAjB,CAA2BG,eAA3B;AAHyC,KAAzB,CAAlB;AAKA,GAV+B,EAU7B,CAAEN,QAAF,EAAYrB,WAAZ,EAAyBF,UAAzB,EAAqCC,QAArC,CAV6B,CAAhC;AAYA,SAAO2B,gBAAP;AACA,CAhDD;;AAkDA,MAAME,sBAAsB,GAAKC,aAAF,KAAuB;AACrD9C,EAAAA,MAAM,EAAErB,KAAK,CAAEmE,aAAa,CAAC7C,OAAd,CAAsBC,GAAxB,CADwC;AAErDC,EAAAA,UAAU,EAAE2C,aAAa,CAACC,UAF2B;AAGrDC,EAAAA,EAAE,EAAEF,aAAa,CAACE,EAHmC;AAIrDzC,EAAAA,IAAI,EAAEuC,aAAa,CAACjD,IAJiC;AAKrDoD,EAAAA,UAAU,EAAEH,aAAa,CAACI,sBAAd,IAAwChE,UAAU,CAACiE,IALV;AAMrD3C,EAAAA,KAAK,EAAEsC,aAAa,CAACtC,KAAd,CAAoBN,GAN0B;AAOrDQ,EAAAA,IAAI,EAAEoC,aAAa,CAACpC,IAPiC;AAQrDoC,EAAAA;AARqD,CAAvB,CAA/B;;AAWA,MAAMM,eAAe,GAAG,CACvBrC,UADuB,EAEvBsC,YAAY,GAAGpE,QAFQ,EAGvBgC,WAAW,GAAG,EAHS,KAInB;AACJ,QAAMD,QAAQ,GAAGqC,YAAY,KAAKpE,QAAjB,GAA4BG,aAA5B,GAA4CiE,YAA7D;AACA,QAAMC,kBAAkB,GAAG1E,SAAS,CACjCwC,MAAF,IAAc;AACb,QACCJ,QAAQ,KAAK5B,aAAb,IACA2B,UAAU,KAAK1B,qBAFhB,EAGE;AACD,aAAOK,kBAAP;AACA;;AAED,UAAM;AAAE2B,MAAAA;AAAF,QAAuBD,MAAM,CAAEtC,SAAF,CAAnC;AACA,UAAMyE,OAAO,GAAGlC,gBAAgB,CAAE,UAAF,EAAcL,QAAd,EAAwB;AACvDQ,MAAAA,QAAQ,EAAE,CAAC;AAD4C,KAAxB,CAAhC;;AAIA,QAAK,CAAE+B,OAAP,EAAiB;AAChB,aAAO7D,kBAAP;AACA;;AAED,WAAO6D,OAAO,CAAC5B,GAAR,CAAe6B,MAAF,IACnBX,sBAAsB,CAAEW,MAAF,CADhB,CAAP;AAGA,GArBkC,EAsBnC,CAAExC,QAAF,EAAYD,UAAZ,CAtBmC,CAApC;AAyBA,QAAM4B,gBAAgB,GAAG5D,OAAO,CAAE,MAAM;AACvC,QAAK,CAAEuE,kBAAkB,CAACG,MAA1B,EAAmC;AAClC,aAAO/D,kBAAP;AACA;;AAED,WAAOF,WAAW,CAAE8D,kBAAF,EAAsBrC,WAAtB,EAAmC;AACpD;AACA;AACA;AACAY,MAAAA,WAAW,EAAE,MAAM;AAJiC,KAAnC,CAAlB;AAMA,GAX+B,EAW7B,CAAEyB,kBAAF,EAAsBrC,WAAtB,CAX6B,CAAhC;AAaA,QAAMqB,QAAQ,GAAG;AAAEoB,IAAAA,cAAc,EAAE,EAAlB;AAAsBC,IAAAA,gBAAgB,EAAE;AAAxC,GAAjB;AAEAhB,EAAAA,gBAAgB,CAACiB,OAAjB,CAA4BpB,OAAF,IAAe;AACxC,QAAKA,OAAO,CAACS,UAAR,KAAuB/D,UAAU,CAACiE,IAAvC,EAA8C;AAC7Cb,MAAAA,QAAQ,CAACoB,cAAT,CAAwBG,IAAxB,CAA8BrB,OAA9B;AACA,KAFD,MAEO;AACNF,MAAAA,QAAQ,CAACqB,gBAAT,CAA0BE,IAA1B,CAAgCrB,OAAhC;AACA;AACD,GAND;AAQA,SAAOF,QAAP;AACA,CAvDD;;AAyDA,OAAO,MAAMwB,WAAW,GAAG,CAAET,YAAF,EAAgBtC,UAAhB,EAA4BE,WAA5B,KAA6C;AACvE,QAAMc,aAAa,GAAGD,gBAAgB,CACrCf,UADqC,EAErCsC,YAFqC,EAGrCpC,WAHqC,CAAtC;AAMA,QAAM;AAAEyC,IAAAA,cAAc,GAAG,EAAnB;AAAuBC,IAAAA,gBAAgB,GAAG;AAA1C,MAAiDP,eAAe,CACrErC,UADqE,EAErEsC,YAFqE,EAGrEpC,WAHqE,CAAtE;AAMA,QAAM;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA;AAAjB,MAAiCL,0BAA0B,CAChEC,UADgE,EAEhEsC,YAFgE,EAGhEpC,WAHgE,CAAjE;AAMA,QAAMqB,QAAQ,GAAG;AAChBoB,IAAAA,cAAc,EAAE,CAAE,GAAGxC,aAAL,EAAoB,GAAGwC,cAAvB,CADA;AAEhBC,IAAAA,gBAAgB,EAAE,CAAE,GAAG5B,aAAL,EAAoB,GAAG4B,gBAAvB;AAFF,GAAjB;AAKA,SAAO,CAAErB,QAAF,EAAYnB,WAAZ,CAAP;AACA,CAzBM;AA2BP,eAAe2C,WAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tCORE_PATTERN_SOURCES,\n\tPATTERNS,\n\tSYNC_TYPES,\n\tTEMPLATE_PARTS,\n\tUSER_PATTERNS,\n\tUSER_PATTERN_CATEGORY,\n\tfilterOutDuplicatesByName,\n} from './utils';\nimport { unlock } from '../../lock-unlock';\nimport { searchItems } from './search-items';\nimport { store as editSiteStore } from '../../store';\n\nconst EMPTY_PATTERN_LIST = [];\n\nconst createTemplatePartId = ( theme, slug ) =>\n\ttheme && slug ? theme + '//' + slug : null;\n\nconst templatePartToPattern = ( templatePart ) => ( {\n\tblocks: parse( templatePart.content.raw ),\n\tcategories: [ templatePart.area ],\n\tdescription: templatePart.description || '',\n\tkeywords: templatePart.keywords || [],\n\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\ttitle: templatePart.title.rendered,\n\ttype: templatePart.type,\n\ttemplatePart,\n} );\n\nconst templatePartHasCategory = ( item, category ) =>\n\titem.templatePart.area === category;\n\nconst useTemplatePartsAsPatterns = (\n\tcategoryId,\n\tpostType = TEMPLATE_PARTS,\n\tfilterValue = ''\n) => {\n\tconst { templateParts, isResolving } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( postType !== TEMPLATE_PARTS ) {\n\t\t\t\treturn {\n\t\t\t\t\ttemplateParts: EMPTY_PATTERN_LIST,\n\t\t\t\t\tisResolving: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst { getEntityRecords, isResolving: _isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst query = { per_page: -1 };\n\t\t\tconst rawTemplateParts = getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tquery\n\t\t\t);\n\t\t\tconst partsAsPatterns = rawTemplateParts?.map( ( templatePart ) =>\n\t\t\t\ttemplatePartToPattern( templatePart )\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\ttemplateParts: partsAsPatterns,\n\t\t\t\tisResolving: _isResolving( 'getEntityRecords', [\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_template_part',\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ postType ]\n\t);\n\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tif ( ! templateParts ) {\n\t\t\treturn EMPTY_PATTERN_LIST;\n\t\t}\n\n\t\treturn searchItems( templateParts, filterValue, {\n\t\t\tcategoryId,\n\t\t\thasCategory: templatePartHasCategory,\n\t\t} );\n\t}, [ templateParts, filterValue, categoryId ] );\n\n\treturn { templateParts: filteredTemplateParts, isResolving };\n};\n\nconst useThemePatterns = (\n\tcategoryId,\n\tpostType = PATTERNS,\n\tfilterValue = ''\n) => {\n\tconst blockPatterns = useSelect( ( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\tconst settings = getSettings();\n\t\treturn (\n\t\t\tsettings.__experimentalAdditionalBlockPatterns ??\n\t\t\tsettings.__experimentalBlockPatterns\n\t\t);\n\t} );\n\n\tconst restBlockPatterns = useSelect( ( select ) =>\n\t\tselect( coreStore ).getBlockPatterns()\n\t);\n\n\tconst patterns = useMemo(\n\t\t() =>\n\t\t\t[ ...( blockPatterns || [] ), ...( restBlockPatterns || [] ) ]\n\t\t\t\t.filter(\n\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t! CORE_PATTERN_SOURCES.includes( pattern.source )\n\t\t\t\t)\n\t\t\t\t.filter( filterOutDuplicatesByName )\n\t\t\t\t.map( ( pattern ) => ( {\n\t\t\t\t\t...pattern,\n\t\t\t\t\tkeywords: pattern.keywords || [],\n\t\t\t\t\ttype: 'pattern',\n\t\t\t\t\tblocks: parse( pattern.content ),\n\t\t\t\t} ) ),\n\t\t[ blockPatterns, restBlockPatterns ]\n\t);\n\n\tconst filteredPatterns = useMemo( () => {\n\t\tif ( postType !== PATTERNS ) {\n\t\t\treturn EMPTY_PATTERN_LIST;\n\t\t}\n\n\t\treturn searchItems( patterns, filterValue, {\n\t\t\tcategoryId,\n\t\t\thasCategory: ( item, currentCategory ) =>\n\t\t\t\titem.categories?.includes( currentCategory ),\n\t\t} );\n\t}, [ patterns, filterValue, categoryId, postType ] );\n\n\treturn filteredPatterns;\n};\n\nconst reusableBlockToPattern = ( reusableBlock ) => ( {\n\tblocks: parse( reusableBlock.content.raw ),\n\tcategories: reusableBlock.wp_pattern,\n\tid: reusableBlock.id,\n\tname: reusableBlock.slug,\n\tsyncStatus: reusableBlock.wp_pattern_sync_status || SYNC_TYPES.full,\n\ttitle: reusableBlock.title.raw,\n\ttype: reusableBlock.type,\n\treusableBlock,\n} );\n\nconst useUserPatterns = (\n\tcategoryId,\n\tcategoryType = PATTERNS,\n\tfilterValue = ''\n) => {\n\tconst postType = categoryType === PATTERNS ? USER_PATTERNS : categoryType;\n\tconst unfilteredPatterns = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\tpostType !== USER_PATTERNS ||\n\t\t\t\tcategoryId !== USER_PATTERN_CATEGORY\n\t\t\t) {\n\t\t\t\treturn EMPTY_PATTERN_LIST;\n\t\t\t}\n\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\tconst records = getEntityRecords( 'postType', postType, {\n\t\t\t\tper_page: -1,\n\t\t\t} );\n\n\t\t\tif ( ! records ) {\n\t\t\t\treturn EMPTY_PATTERN_LIST;\n\t\t\t}\n\n\t\t\treturn records.map( ( record ) =>\n\t\t\t\treusableBlockToPattern( record )\n\t\t\t);\n\t\t},\n\t\t[ postType, categoryId ]\n\t);\n\n\tconst filteredPatterns = useMemo( () => {\n\t\tif ( ! unfilteredPatterns.length ) {\n\t\t\treturn EMPTY_PATTERN_LIST;\n\t\t}\n\n\t\treturn searchItems( unfilteredPatterns, filterValue, {\n\t\t\t// We exit user pattern retrieval early if we aren't in the\n\t\t\t// catch-all category for user created patterns, so it has\n\t\t\t// to be in the category.\n\t\t\thasCategory: () => true,\n\t\t} );\n\t}, [ unfilteredPatterns, filterValue ] );\n\n\tconst patterns = { syncedPatterns: [], unsyncedPatterns: [] };\n\n\tfilteredPatterns.forEach( ( pattern ) => {\n\t\tif ( pattern.syncStatus === SYNC_TYPES.full ) {\n\t\t\tpatterns.syncedPatterns.push( pattern );\n\t\t} else {\n\t\t\tpatterns.unsyncedPatterns.push( pattern );\n\t\t}\n\t} );\n\n\treturn patterns;\n};\n\nexport const usePatterns = ( categoryType, categoryId, filterValue ) => {\n\tconst blockPatterns = useThemePatterns(\n\t\tcategoryId,\n\t\tcategoryType,\n\t\tfilterValue\n\t);\n\n\tconst { syncedPatterns = [], unsyncedPatterns = [] } = useUserPatterns(\n\t\tcategoryId,\n\t\tcategoryType,\n\t\tfilterValue\n\t);\n\n\tconst { templateParts, isResolving } = useTemplatePartsAsPatterns(\n\t\tcategoryId,\n\t\tcategoryType,\n\t\tfilterValue\n\t);\n\n\tconst patterns = {\n\t\tsyncedPatterns: [ ...templateParts, ...syncedPatterns ],\n\t\tunsyncedPatterns: [ ...blockPatterns, ...unsyncedPatterns ],\n\t};\n\n\treturn [ patterns, isResolving ];\n};\n\nexport default usePatterns;\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/page-patterns/use-patterns.js"],"names":["parse","useSelect","store","coreStore","decodeEntities","CORE_PATTERN_SOURCES","PATTERNS","SYNC_TYPES","TEMPLATE_PARTS","USER_PATTERNS","filterOutDuplicatesByName","unlock","searchItems","editSiteStore","EMPTY_PATTERN_LIST","createTemplatePartId","theme","slug","templatePartToPattern","templatePart","blocks","content","raw","categories","area","description","isCustom","source","keywords","id","name","title","rendered","type","templatePartHasCategory","item","category","selectTemplatePartsAsPatterns","select","categoryId","search","getEntityRecords","getIsResolving","query","per_page","rawTemplateParts","templateParts","map","isResolving","patterns","hasCategory","selectThemePatterns","getSettings","settings","blockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","restBlockPatterns","getBlockPatterns","filter","pattern","includes","currentCategory","reusableBlockToPattern","reusableBlock","wp_pattern","syncStatus","wp_pattern_sync_status","full","selectUserPatterns","records","record","usePatterns","categoryType"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport {\n\tCORE_PATTERN_SOURCES,\n\tPATTERNS,\n\tSYNC_TYPES,\n\tTEMPLATE_PARTS,\n\tUSER_PATTERNS,\n\tfilterOutDuplicatesByName,\n} from './utils';\nimport { unlock } from '../../lock-unlock';\nimport { searchItems } from './search-items';\nimport { store as editSiteStore } from '../../store';\n\nconst EMPTY_PATTERN_LIST = [];\n\nconst createTemplatePartId = ( theme, slug ) =>\n\ttheme && slug ? theme + '//' + slug : null;\n\nconst templatePartToPattern = ( templatePart ) => ( {\n\tblocks: parse( templatePart.content.raw ),\n\tcategories: [ templatePart.area ],\n\tdescription: templatePart.description || '',\n\tisCustom: templatePart.source === 'custom',\n\tkeywords: templatePart.keywords || [],\n\tid: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\ttitle: decodeEntities( templatePart.title.rendered ),\n\ttype: templatePart.type,\n\ttemplatePart,\n} );\n\nconst templatePartHasCategory = ( item, category ) =>\n\titem.templatePart.area === category;\n\nconst selectTemplatePartsAsPatterns = (\n\tselect,\n\t{ categoryId, search = '' } = {}\n) => {\n\tconst { getEntityRecords, getIsResolving } = select( coreStore );\n\tconst query = { per_page: -1 };\n\tconst rawTemplateParts =\n\t\tgetEntityRecords( 'postType', TEMPLATE_PARTS, query ) ??\n\t\tEMPTY_PATTERN_LIST;\n\tconst templateParts = rawTemplateParts.map( ( templatePart ) =>\n\t\ttemplatePartToPattern( templatePart )\n\t);\n\n\tconst isResolving = getIsResolving( 'getEntityRecords', [\n\t\t'postType',\n\t\t'wp_template_part',\n\t\tquery,\n\t] );\n\n\tconst patterns = searchItems( templateParts, search, {\n\t\tcategoryId,\n\t\thasCategory: templatePartHasCategory,\n\t} );\n\n\treturn { patterns, isResolving };\n};\n\nconst selectThemePatterns = ( select, { categoryId, search = '' } = {} ) => {\n\tconst { getSettings } = unlock( select( editSiteStore ) );\n\tconst settings = getSettings();\n\tconst blockPatterns =\n\t\tsettings.__experimentalAdditionalBlockPatterns ??\n\t\tsettings.__experimentalBlockPatterns;\n\n\tconst restBlockPatterns = select( coreStore ).getBlockPatterns();\n\n\tlet patterns = [\n\t\t...( blockPatterns || [] ),\n\t\t...( restBlockPatterns || [] ),\n\t]\n\t\t.filter(\n\t\t\t( pattern ) => ! CORE_PATTERN_SOURCES.includes( pattern.source )\n\t\t)\n\t\t.filter( filterOutDuplicatesByName )\n\t\t.map( ( pattern ) => ( {\n\t\t\t...pattern,\n\t\t\tkeywords: pattern.keywords || [],\n\t\t\ttype: 'pattern',\n\t\t\tblocks: parse( pattern.content ),\n\t\t} ) );\n\n\tpatterns = searchItems( patterns, search, {\n\t\tcategoryId,\n\t\thasCategory: ( item, currentCategory ) =>\n\t\t\titem.categories?.includes( currentCategory ),\n\t} );\n\n\treturn { patterns, isResolving: false };\n};\n\nconst reusableBlockToPattern = ( reusableBlock ) => ( {\n\tblocks: parse( reusableBlock.content.raw ),\n\tcategories: reusableBlock.wp_pattern,\n\tid: reusableBlock.id,\n\tname: reusableBlock.slug,\n\tsyncStatus: reusableBlock.wp_pattern_sync_status || SYNC_TYPES.full,\n\ttitle: reusableBlock.title.raw,\n\ttype: reusableBlock.type,\n\treusableBlock,\n} );\n\nconst selectUserPatterns = ( select, { search = '', syncStatus } = {} ) => {\n\tconst { getEntityRecords, getIsResolving } = select( coreStore );\n\n\tconst query = { per_page: -1 };\n\tconst records = getEntityRecords( 'postType', USER_PATTERNS, query );\n\n\tlet patterns = records\n\t\t? records.map( ( record ) => reusableBlockToPattern( record ) )\n\t\t: EMPTY_PATTERN_LIST;\n\tconst isResolving = getIsResolving( 'getEntityRecords', [\n\t\t'postType',\n\t\tUSER_PATTERNS,\n\t\tquery,\n\t] );\n\n\tif ( syncStatus ) {\n\t\tpatterns = patterns.filter(\n\t\t\t( pattern ) => pattern.syncStatus === syncStatus\n\t\t);\n\t}\n\n\tpatterns = searchItems( patterns, search, {\n\t\t// We exit user pattern retrieval early if we aren't in the\n\t\t// catch-all category for user created patterns, so it has\n\t\t// to be in the category.\n\t\thasCategory: () => true,\n\t} );\n\n\treturn { patterns, isResolving };\n};\n\nexport const usePatterns = (\n\tcategoryType,\n\tcategoryId,\n\t{ search = '', syncStatus }\n) => {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( categoryType === TEMPLATE_PARTS ) {\n\t\t\t\treturn selectTemplatePartsAsPatterns( select, {\n\t\t\t\t\tcategoryId,\n\t\t\t\t\tsearch,\n\t\t\t\t} );\n\t\t\t} else if ( categoryType === PATTERNS ) {\n\t\t\t\treturn selectThemePatterns( select, { categoryId, search } );\n\t\t\t} else if ( categoryType === USER_PATTERNS ) {\n\t\t\t\treturn selectUserPatterns( select, { search, syncStatus } );\n\t\t\t}\n\t\t\treturn { patterns: EMPTY_PATTERN_LIST, isResolving: false };\n\t\t},\n\t\t[ categoryId, categoryType, search, syncStatus ]\n\t);\n};\n\nexport default usePatterns;\n"]}
@@ -0,0 +1,58 @@
1
+ import { createElement, Fragment } from "@wordpress/element";
2
+
3
+ /**
4
+ * WordPress dependencies
5
+ */
6
+ import { privateApis as routerPrivateApis } from '@wordpress/router';
7
+ import { useSelect } from '@wordpress/data';
8
+ import { store as coreStore } from '@wordpress/core-data';
9
+ import { useState } from '@wordpress/element';
10
+ import { Button } from '@wordpress/components';
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+
15
+ import { unlock } from '../../lock-unlock';
16
+ import { store as editSiteStore } from '../../store';
17
+ import CreateTemplatePartModal from '../create-template-part-modal';
18
+ const {
19
+ useHistory
20
+ } = unlock(routerPrivateApis);
21
+ export default function AddNewTemplatePart() {
22
+ const {
23
+ canCreate,
24
+ postType
25
+ } = useSelect(select => {
26
+ const {
27
+ supportsTemplatePartsMode
28
+ } = select(editSiteStore).getSettings();
29
+ return {
30
+ canCreate: !supportsTemplatePartsMode,
31
+ postType: select(coreStore).getPostType('wp_template_part')
32
+ };
33
+ }, []);
34
+ const [isModalOpen, setIsModalOpen] = useState(false);
35
+ const history = useHistory();
36
+
37
+ if (!canCreate || !postType) {
38
+ return null;
39
+ }
40
+
41
+ return createElement(Fragment, null, createElement(Button, {
42
+ variant: "primary",
43
+ onClick: () => setIsModalOpen(true)
44
+ }, postType.labels.add_new_item), isModalOpen && createElement(CreateTemplatePartModal, {
45
+ closeModal: () => setIsModalOpen(false),
46
+ blocks: [],
47
+ onCreate: templatePart => {
48
+ setIsModalOpen(false);
49
+ history.push({
50
+ postId: templatePart.id,
51
+ postType: 'wp_template_part',
52
+ canvas: 'edit'
53
+ });
54
+ },
55
+ onError: () => setIsModalOpen(false)
56
+ }));
57
+ }
58
+ //# sourceMappingURL=add-new-template-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/page-template-parts/add-new-template-part.js"],"names":["privateApis","routerPrivateApis","useSelect","store","coreStore","useState","Button","unlock","editSiteStore","CreateTemplatePartModal","useHistory","AddNewTemplatePart","canCreate","postType","select","supportsTemplatePartsMode","getSettings","getPostType","isModalOpen","setIsModalOpen","history","labels","add_new_item","templatePart","push","postId","id","canvas"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,WAAW,IAAIC,iBAAxB,QAAiD,mBAAjD;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,MAAT,QAAuB,uBAAvB;AAEA;AACA;AACA;;AACA,SAASC,MAAT,QAAuB,mBAAvB;AACA,SAASJ,KAAK,IAAIK,aAAlB,QAAuC,aAAvC;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAiBH,MAAM,CAAEN,iBAAF,CAA7B;AAEA,eAAe,SAASU,kBAAT,GAA8B;AAC5C,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,MAA0BX,SAAS,CAAIY,MAAF,IAAc;AACxD,UAAM;AAAEC,MAAAA;AAAF,QACLD,MAAM,CAAEN,aAAF,CAAN,CAAwBQ,WAAxB,EADD;AAEA,WAAO;AACNJ,MAAAA,SAAS,EAAE,CAAEG,yBADP;AAENF,MAAAA,QAAQ,EAAEC,MAAM,CAAEV,SAAF,CAAN,CAAoBa,WAApB,CAAiC,kBAAjC;AAFJ,KAAP;AAIA,GAPwC,EAOtC,EAPsC,CAAzC;AAQA,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkCd,QAAQ,CAAE,KAAF,CAAhD;AACA,QAAMe,OAAO,GAAGV,UAAU,EAA1B;;AAEA,MAAK,CAAEE,SAAF,IAAe,CAAEC,QAAtB,EAAiC;AAChC,WAAO,IAAP;AACA;;AAED,SACC,8BACC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,OAAO,EAAG,MAAMM,cAAc,CAAE,IAAF;AAAxD,KACGN,QAAQ,CAACQ,MAAT,CAAgBC,YADnB,CADD,EAIGJ,WAAW,IACZ,cAAC,uBAAD;AACC,IAAA,UAAU,EAAG,MAAMC,cAAc,CAAE,KAAF,CADlC;AAEC,IAAA,MAAM,EAAG,EAFV;AAGC,IAAA,QAAQ,EAAKI,YAAF,IAAoB;AAC9BJ,MAAAA,cAAc,CAAE,KAAF,CAAd;AACAC,MAAAA,OAAO,CAACI,IAAR,CAAc;AACbC,QAAAA,MAAM,EAAEF,YAAY,CAACG,EADR;AAEbb,QAAAA,QAAQ,EAAE,kBAFG;AAGbc,QAAAA,MAAM,EAAE;AAHK,OAAd;AAKA,KAVF;AAWC,IAAA,OAAO,EAAG,MAAMR,cAAc,CAAE,KAAF;AAX/B,IALF,CADD;AAsBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { Button } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport CreateTemplatePartModal from '../create-template-part-modal';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function AddNewTemplatePart() {\n\tconst { canCreate, postType } = useSelect( ( select ) => {\n\t\tconst { supportsTemplatePartsMode } =\n\t\t\tselect( editSiteStore ).getSettings();\n\t\treturn {\n\t\t\tcanCreate: ! supportsTemplatePartsMode,\n\t\t\tpostType: select( coreStore ).getPostType( 'wp_template_part' ),\n\t\t};\n\t}, [] );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tif ( ! canCreate || ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button variant=\"primary\" onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\tblocks={ [] }\n\t\t\t\t\tonCreate={ ( templatePart ) => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\thistory.push( {\n\t\t\t\t\t\t\tpostId: templatePart.id,\n\t\t\t\t\t\t\tpostType: 'wp_template_part',\n\t\t\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tonError={ () => setIsModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -5,8 +5,7 @@ import { createElement } from "@wordpress/element";
5
5
  */
6
6
  import { VisuallyHidden, __experimentalHeading as Heading, __experimentalVStack as VStack } from '@wordpress/components';
7
7
  import { __ } from '@wordpress/i18n';
8
- import { useSelect } from '@wordpress/data';
9
- import { store as coreStore, useEntityRecords } from '@wordpress/core-data';
8
+ import { useEntityRecords } from '@wordpress/core-data';
10
9
  import { decodeEntities } from '@wordpress/html-entities';
11
10
  /**
12
11
  * Internal dependencies
@@ -17,25 +16,13 @@ import Table from '../table';
17
16
  import Link from '../routes/link';
18
17
  import AddedBy from '../list/added-by';
19
18
  import TemplateActions from '../template-actions';
20
- import AddNewTemplate from '../add-new-template';
21
- import { store as editSiteStore } from '../../store';
19
+ import AddNewTemplatePart from './add-new-template-part';
22
20
  export default function PageTemplateParts() {
23
21
  const {
24
22
  records: templateParts
25
23
  } = useEntityRecords('postType', 'wp_template_part', {
26
24
  per_page: -1
27
25
  });
28
- const {
29
- canCreate
30
- } = useSelect(select => {
31
- const {
32
- supportsTemplatePartsMode
33
- } = select(editSiteStore).getSettings();
34
- return {
35
- postType: select(coreStore).getPostType('wp_template_part'),
36
- canCreate: !supportsTemplatePartsMode
37
- };
38
- });
39
26
  const columns = [{
40
27
  header: __('Template Part'),
41
28
  cell: templatePart => createElement(VStack, null, createElement(Heading, {
@@ -67,13 +54,7 @@ export default function PageTemplateParts() {
67
54
  }];
68
55
  return createElement(Page, {
69
56
  title: __('Template Parts'),
70
- actions: canCreate && createElement(AddNewTemplate, {
71
- templateType: 'wp_template_part',
72
- showIcon: false,
73
- toggleProps: {
74
- variant: 'primary'
75
- }
76
- })
57
+ actions: createElement(AddNewTemplatePart, null)
77
58
  }, templateParts && createElement(Table, {
78
59
  data: templateParts,
79
60
  columns: columns
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/page-template-parts/index.js"],"names":["VisuallyHidden","__experimentalHeading","Heading","__experimentalVStack","VStack","__","useSelect","store","coreStore","useEntityRecords","decodeEntities","Page","Table","Link","AddedBy","TemplateActions","AddNewTemplate","editSiteStore","PageTemplateParts","records","templateParts","per_page","canCreate","select","supportsTemplatePartsMode","getSettings","postType","getPostType","columns","header","cell","templatePart","postId","id","type","canvas","backPath","title","rendered","slug","maxWidth","variant"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tVisuallyHidden,\n\t__experimentalHeading as Heading,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore, useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport Table from '../table';\nimport Link from '../routes/link';\nimport AddedBy from '../list/added-by';\nimport TemplateActions from '../template-actions';\nimport AddNewTemplate from '../add-new-template';\nimport { store as editSiteStore } from '../../store';\n\nexport default function PageTemplateParts() {\n\tconst { records: templateParts } = useEntityRecords(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{\n\t\t\tper_page: -1,\n\t\t}\n\t);\n\n\tconst { canCreate } = useSelect( ( select ) => {\n\t\tconst { supportsTemplatePartsMode } =\n\t\t\tselect( editSiteStore ).getSettings();\n\t\treturn {\n\t\t\tpostType: select( coreStore ).getPostType( 'wp_template_part' ),\n\t\t\tcanCreate: ! supportsTemplatePartsMode,\n\t\t};\n\t} );\n\n\tconst columns = [\n\t\t{\n\t\t\theader: __( 'Template Part' ),\n\t\t\tcell: ( templatePart ) => (\n\t\t\t\t<VStack>\n\t\t\t\t\t<Heading as=\"h3\" level={ 5 }>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tparams={ {\n\t\t\t\t\t\t\t\tpostId: templatePart.id,\n\t\t\t\t\t\t\t\tpostType: templatePart.type,\n\t\t\t\t\t\t\t\tcanvas: 'view',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tstate={ { backPath: '/wp_template_part/all' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\ttemplatePart.title?.rendered ||\n\t\t\t\t\t\t\t\t\ttemplatePart.slug\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Heading>\n\t\t\t\t</VStack>\n\t\t\t),\n\t\t\tmaxWidth: 400,\n\t\t},\n\t\t{\n\t\t\theader: __( 'Added by' ),\n\t\t\tcell: ( templatePart ) => (\n\t\t\t\t<AddedBy\n\t\t\t\t\tpostType={ templatePart.type }\n\t\t\t\t\tpostId={ templatePart.id }\n\t\t\t\t/>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\theader: <VisuallyHidden>{ __( 'Actions' ) }</VisuallyHidden>,\n\t\t\tcell: ( templatePart ) => (\n\t\t\t\t<TemplateActions\n\t\t\t\t\tpostType={ templatePart.type }\n\t\t\t\t\tpostId={ templatePart.id }\n\t\t\t\t/>\n\t\t\t),\n\t\t},\n\t];\n\n\treturn (\n\t\t<Page\n\t\t\ttitle={ __( 'Template Parts' ) }\n\t\t\tactions={\n\t\t\t\tcanCreate && (\n\t\t\t\t\t<AddNewTemplate\n\t\t\t\t\t\ttemplateType={ 'wp_template_part' }\n\t\t\t\t\t\tshowIcon={ false }\n\t\t\t\t\t\ttoggleProps={ { variant: 'primary' } }\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t{ templateParts && (\n\t\t\t\t<Table data={ templateParts } columns={ columns } />\n\t\t\t) }\n\t\t</Page>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/page-template-parts/index.js"],"names":["VisuallyHidden","__experimentalHeading","Heading","__experimentalVStack","VStack","__","useEntityRecords","decodeEntities","Page","Table","Link","AddedBy","TemplateActions","AddNewTemplatePart","PageTemplateParts","records","templateParts","per_page","columns","header","cell","templatePart","postId","id","postType","type","canvas","backPath","title","rendered","slug","maxWidth"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,cADD,EAECC,qBAAqB,IAAIC,OAF1B,EAGCC,oBAAoB,IAAIC,MAHzB,QAIO,uBAJP;AAKA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,gBAAT,QAAiC,sBAAjC;AACA,SAASC,cAAT,QAA+B,0BAA/B;AAEA;AACA;AACA;;AACA,OAAOC,IAAP,MAAiB,SAAjB;AACA,OAAOC,KAAP,MAAkB,UAAlB;AACA,OAAOC,IAAP,MAAiB,gBAAjB;AACA,OAAOC,OAAP,MAAoB,kBAApB;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AACA,OAAOC,kBAAP,MAA+B,yBAA/B;AAEA,eAAe,SAASC,iBAAT,GAA6B;AAC3C,QAAM;AAAEC,IAAAA,OAAO,EAAEC;AAAX,MAA6BV,gBAAgB,CAClD,UADkD,EAElD,kBAFkD,EAGlD;AACCW,IAAAA,QAAQ,EAAE,CAAC;AADZ,GAHkD,CAAnD;AAQA,QAAMC,OAAO,GAAG,CACf;AACCC,IAAAA,MAAM,EAAEd,EAAE,CAAE,eAAF,CADX;AAECe,IAAAA,IAAI,EAAIC,YAAF,IACL,cAAC,MAAD,QACC,cAAC,OAAD;AAAS,MAAA,EAAE,EAAC,IAAZ;AAAiB,MAAA,KAAK,EAAG;AAAzB,OACC,cAAC,IAAD;AACC,MAAA,MAAM,EAAG;AACRC,QAAAA,MAAM,EAAED,YAAY,CAACE,EADb;AAERC,QAAAA,QAAQ,EAAEH,YAAY,CAACI,IAFf;AAGRC,QAAAA,MAAM,EAAE;AAHA,OADV;AAMC,MAAA,KAAK,EAAG;AAAEC,QAAAA,QAAQ,EAAE;AAAZ;AANT,OAQGpB,cAAc,CACfc,YAAY,CAACO,KAAb,EAAoBC,QAApB,IACCR,YAAY,CAACS,IAFC,CARjB,CADD,CADD,CAHF;AAqBCC,IAAAA,QAAQ,EAAE;AArBX,GADe,EAwBf;AACCZ,IAAAA,MAAM,EAAEd,EAAE,CAAE,UAAF,CADX;AAECe,IAAAA,IAAI,EAAIC,YAAF,IACL,cAAC,OAAD;AACC,MAAA,QAAQ,EAAGA,YAAY,CAACI,IADzB;AAEC,MAAA,MAAM,EAAGJ,YAAY,CAACE;AAFvB;AAHF,GAxBe,EAiCf;AACCJ,IAAAA,MAAM,EAAE,cAAC,cAAD,QAAkBd,EAAE,CAAE,SAAF,CAApB,CADT;AAECe,IAAAA,IAAI,EAAIC,YAAF,IACL,cAAC,eAAD;AACC,MAAA,QAAQ,EAAGA,YAAY,CAACI,IADzB;AAEC,MAAA,MAAM,EAAGJ,YAAY,CAACE;AAFvB;AAHF,GAjCe,CAAhB;AA4CA,SACC,cAAC,IAAD;AACC,IAAA,KAAK,EAAGlB,EAAE,CAAE,gBAAF,CADX;AAEC,IAAA,OAAO,EAAG,cAAC,kBAAD;AAFX,KAIGW,aAAa,IACd,cAAC,KAAD;AAAO,IAAA,IAAI,EAAGA,aAAd;AAA8B,IAAA,OAAO,EAAGE;AAAxC,IALF,CADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tVisuallyHidden,\n\t__experimentalHeading as Heading,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport Table from '../table';\nimport Link from '../routes/link';\nimport AddedBy from '../list/added-by';\nimport TemplateActions from '../template-actions';\nimport AddNewTemplatePart from './add-new-template-part';\n\nexport default function PageTemplateParts() {\n\tconst { records: templateParts } = useEntityRecords(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{\n\t\t\tper_page: -1,\n\t\t}\n\t);\n\n\tconst columns = [\n\t\t{\n\t\t\theader: __( 'Template Part' ),\n\t\t\tcell: ( templatePart ) => (\n\t\t\t\t<VStack>\n\t\t\t\t\t<Heading as=\"h3\" level={ 5 }>\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tparams={ {\n\t\t\t\t\t\t\t\tpostId: templatePart.id,\n\t\t\t\t\t\t\t\tpostType: templatePart.type,\n\t\t\t\t\t\t\t\tcanvas: 'view',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tstate={ { backPath: '/wp_template_part/all' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ decodeEntities(\n\t\t\t\t\t\t\t\ttemplatePart.title?.rendered ||\n\t\t\t\t\t\t\t\t\ttemplatePart.slug\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Heading>\n\t\t\t\t</VStack>\n\t\t\t),\n\t\t\tmaxWidth: 400,\n\t\t},\n\t\t{\n\t\t\theader: __( 'Added by' ),\n\t\t\tcell: ( templatePart ) => (\n\t\t\t\t<AddedBy\n\t\t\t\t\tpostType={ templatePart.type }\n\t\t\t\t\tpostId={ templatePart.id }\n\t\t\t\t/>\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\theader: <VisuallyHidden>{ __( 'Actions' ) }</VisuallyHidden>,\n\t\t\tcell: ( templatePart ) => (\n\t\t\t\t<TemplateActions\n\t\t\t\t\tpostType={ templatePart.type }\n\t\t\t\t\tpostId={ templatePart.id }\n\t\t\t\t/>\n\t\t\t),\n\t\t},\n\t];\n\n\treturn (\n\t\t<Page\n\t\t\ttitle={ __( 'Template Parts' ) }\n\t\t\tactions={ <AddNewTemplatePart /> }\n\t\t>\n\t\t\t{ templateParts && (\n\t\t\t\t<Table data={ templateParts } columns={ columns } />\n\t\t\t) }\n\t\t</Page>\n\t);\n}\n"]}