@wordpress/core-data 7.50.1-next.v.202607070741.0 → 7.52.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 (139) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/actions.cjs +54 -1
  3. package/build/actions.cjs.map +3 -3
  4. package/build/components/entities-saved-states/entity-record-item.cjs +67 -0
  5. package/build/components/entities-saved-states/entity-record-item.cjs.map +7 -0
  6. package/build/components/entities-saved-states/entity-type-list.cjs +135 -0
  7. package/build/components/entities-saved-states/entity-type-list.cjs.map +7 -0
  8. package/build/components/entities-saved-states/hooks/use-is-dirty.cjs +97 -0
  9. package/build/components/entities-saved-states/hooks/use-is-dirty.cjs.map +7 -0
  10. package/build/components/entities-saved-states/index.cjs +215 -0
  11. package/build/components/entities-saved-states/index.cjs.map +7 -0
  12. package/build/entities.cjs +3 -1
  13. package/build/entities.cjs.map +2 -2
  14. package/build/private-actions.cjs +85 -0
  15. package/build/private-actions.cjs.map +3 -3
  16. package/build/private-apis.cjs +19 -0
  17. package/build/private-apis.cjs.map +3 -3
  18. package/build/utils/crdt.cjs +4 -2
  19. package/build/utils/crdt.cjs.map +2 -2
  20. package/build/utils/get-template-info.cjs +53 -0
  21. package/build/utils/get-template-info.cjs.map +7 -0
  22. package/build/utils/get-template-part-icon.cjs +43 -0
  23. package/build/utils/get-template-part-icon.cjs.map +7 -0
  24. package/build-module/actions.mjs +57 -1
  25. package/build-module/actions.mjs.map +2 -2
  26. package/build-module/components/entities-saved-states/entity-record-item.mjs +46 -0
  27. package/build-module/components/entities-saved-states/entity-record-item.mjs.map +7 -0
  28. package/build-module/components/entities-saved-states/entity-type-list.mjs +104 -0
  29. package/build-module/components/entities-saved-states/entity-type-list.mjs.map +7 -0
  30. package/build-module/components/entities-saved-states/hooks/use-is-dirty.mjs +72 -0
  31. package/build-module/components/entities-saved-states/hooks/use-is-dirty.mjs.map +7 -0
  32. package/build-module/components/entities-saved-states/index.mjs +187 -0
  33. package/build-module/components/entities-saved-states/index.mjs.map +7 -0
  34. package/build-module/entities.mjs +3 -1
  35. package/build-module/entities.mjs.map +2 -2
  36. package/build-module/private-actions.mjs +84 -0
  37. package/build-module/private-actions.mjs.map +2 -2
  38. package/build-module/private-apis.mjs +12 -0
  39. package/build-module/private-apis.mjs.map +2 -2
  40. package/build-module/utils/crdt.mjs +2 -1
  41. package/build-module/utils/crdt.mjs.map +2 -2
  42. package/build-module/utils/get-template-info.mjs +28 -0
  43. package/build-module/utils/get-template-info.mjs.map +7 -0
  44. package/build-module/utils/get-template-part-icon.mjs +24 -0
  45. package/build-module/utils/get-template-part-icon.mjs.map +7 -0
  46. package/build-types/actions.d.ts +3 -3
  47. package/build-types/actions.d.ts.map +1 -1
  48. package/build-types/awareness/base-awareness.d.ts +3 -0
  49. package/build-types/awareness/base-awareness.d.ts.map +1 -1
  50. package/build-types/awareness/post-editor-awareness.d.ts +7 -0
  51. package/build-types/awareness/post-editor-awareness.d.ts.map +1 -1
  52. package/build-types/batch/create-batch.d.ts +1 -1
  53. package/build-types/batch/create-batch.d.ts.map +1 -1
  54. package/build-types/components/entities-saved-states/entity-record-item.d.ts +6 -0
  55. package/build-types/components/entities-saved-states/entity-record-item.d.ts.map +1 -0
  56. package/build-types/components/entities-saved-states/entity-type-list.d.ts +6 -0
  57. package/build-types/components/entities-saved-states/entity-type-list.d.ts.map +1 -0
  58. package/build-types/components/entities-saved-states/hooks/use-is-dirty.d.ts +11 -0
  59. package/build-types/components/entities-saved-states/hooks/use-is-dirty.d.ts.map +1 -0
  60. package/build-types/components/entities-saved-states/index.d.ts +49 -0
  61. package/build-types/components/entities-saved-states/index.d.ts.map +1 -0
  62. package/build-types/entities.d.ts +2 -2
  63. package/build-types/entities.d.ts.map +1 -1
  64. package/build-types/entity-provider.d.ts +1 -1
  65. package/build-types/entity-provider.d.ts.map +1 -1
  66. package/build-types/entity-types/attachment.d.ts.map +1 -1
  67. package/build-types/entity-types/base-entity-records.d.ts.map +1 -1
  68. package/build-types/entity-types/base.d.ts.map +1 -1
  69. package/build-types/entity-types/comment.d.ts.map +1 -1
  70. package/build-types/entity-types/font-collection.d.ts.map +1 -1
  71. package/build-types/entity-types/font-family.d.ts.map +1 -1
  72. package/build-types/entity-types/global-styles-revision.d.ts.map +1 -1
  73. package/build-types/entity-types/icon.d.ts.map +1 -1
  74. package/build-types/entity-types/menu-location.d.ts.map +1 -1
  75. package/build-types/entity-types/nav-menu-item.d.ts.map +1 -1
  76. package/build-types/entity-types/nav-menu.d.ts.map +1 -1
  77. package/build-types/entity-types/page.d.ts.map +1 -1
  78. package/build-types/entity-types/plugin.d.ts.map +1 -1
  79. package/build-types/entity-types/post-revision.d.ts.map +1 -1
  80. package/build-types/entity-types/post-status.d.ts.map +1 -1
  81. package/build-types/entity-types/post.d.ts.map +1 -1
  82. package/build-types/entity-types/settings.d.ts.map +1 -1
  83. package/build-types/entity-types/sidebar.d.ts.map +1 -1
  84. package/build-types/entity-types/taxonomy.d.ts.map +1 -1
  85. package/build-types/entity-types/term.d.ts.map +1 -1
  86. package/build-types/entity-types/theme.d.ts.map +1 -1
  87. package/build-types/entity-types/type.d.ts.map +1 -1
  88. package/build-types/entity-types/user.d.ts.map +1 -1
  89. package/build-types/entity-types/widget-type.d.ts.map +1 -1
  90. package/build-types/entity-types/widget.d.ts.map +1 -1
  91. package/build-types/entity-types/wp-template-part.d.ts.map +1 -1
  92. package/build-types/entity-types/wp-template.d.ts.map +1 -1
  93. package/build-types/fetch/__experimental-fetch-url-data.d.ts +3 -0
  94. package/build-types/fetch/__experimental-fetch-url-data.d.ts.map +1 -1
  95. package/build-types/index.d.ts +17 -47
  96. package/build-types/index.d.ts.map +1 -1
  97. package/build-types/locks/actions.d.ts +1 -1
  98. package/build-types/locks/engine.d.ts +1 -1
  99. package/build-types/locks/utils.d.ts +1 -1
  100. package/build-types/locks/utils.d.ts.map +1 -1
  101. package/build-types/private-actions.d.ts +32 -1
  102. package/build-types/private-actions.d.ts.map +1 -1
  103. package/build-types/private-apis.d.ts +9 -0
  104. package/build-types/private-apis.d.ts.map +1 -1
  105. package/build-types/queried-data/actions.d.ts +1 -1
  106. package/build-types/queried-data/actions.d.ts.map +1 -1
  107. package/build-types/queried-data/get-query-parts.d.ts +21 -0
  108. package/build-types/queried-data/get-query-parts.d.ts.map +1 -1
  109. package/build-types/reducer.d.ts +3 -3
  110. package/build-types/reducer.d.ts.map +1 -1
  111. package/build-types/resolvers.d.ts +1 -1
  112. package/build-types/resolvers.d.ts.map +1 -1
  113. package/build-types/utils/crdt.d.ts +8 -0
  114. package/build-types/utils/crdt.d.ts.map +1 -1
  115. package/build-types/utils/get-template-info.d.ts +13 -0
  116. package/build-types/utils/get-template-info.d.ts.map +1 -0
  117. package/build-types/utils/get-template-part-icon.d.ts +9 -0
  118. package/build-types/utils/get-template-part-icon.d.ts.map +1 -0
  119. package/build-types/utils/log-entity-deprecation.d.ts +1 -1
  120. package/build-types/utils/log-entity-deprecation.d.ts.map +1 -1
  121. package/build-types/utils/on-sub-key.d.ts +4 -0
  122. package/build-types/utils/on-sub-key.d.ts.map +1 -0
  123. package/package.json +30 -25
  124. package/src/actions.js +92 -1
  125. package/src/components/entities-saved-states/entity-record-item.js +60 -0
  126. package/src/components/entities-saved-states/entity-type-list.js +130 -0
  127. package/src/components/entities-saved-states/hooks/use-is-dirty.js +101 -0
  128. package/src/components/entities-saved-states/index.js +242 -0
  129. package/src/components/entities-saved-states/style.scss +70 -0
  130. package/src/components/entities-saved-states/test/use-is-dirty.js +88 -0
  131. package/src/entities.js +3 -1
  132. package/src/private-actions.js +127 -0
  133. package/src/private-apis.ts +12 -0
  134. package/src/style.scss +1 -0
  135. package/src/test/actions.js +587 -0
  136. package/src/utils/crdt.ts +1 -1
  137. package/src/utils/get-template-info.js +52 -0
  138. package/src/utils/get-template-part-icon.js +30 -0
  139. package/src/utils/test/get-template-info.js +224 -0
@@ -0,0 +1,224 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { footer, header, layout } from '@wordpress/icons';
5
+ /**
6
+ * Internal dependencies
7
+ */
8
+ import { getTemplateInfo } from '../get-template-info';
9
+
10
+ describe( '__experimentalGetTemplateInfo', () => {
11
+ const defaultTemplateTypes = [
12
+ {
13
+ title: 'Default (Index)',
14
+ description: 'Main template',
15
+ slug: 'index',
16
+ },
17
+ {
18
+ title: '404 (Not Found)',
19
+ description: 'Applied when content cannot be found',
20
+ slug: '404',
21
+ },
22
+ ];
23
+
24
+ const defaultTemplatePartAreas = [
25
+ {
26
+ area: 'header',
27
+ label: 'Header',
28
+ description: 'Some description of a header',
29
+ icon: 'header',
30
+ },
31
+ {
32
+ area: 'footer',
33
+ label: 'Footer',
34
+ description: 'Some description of a footer',
35
+ icon: 'footer',
36
+ },
37
+ ];
38
+
39
+ it( 'should return an empty object if no template is passed', () => {
40
+ expect( getTemplateInfo( undefined ) ).toEqual( {} );
41
+ expect( getTemplateInfo( null ) ).toEqual( {} );
42
+ expect( getTemplateInfo( false ) ).toEqual( {} );
43
+ } );
44
+
45
+ it( 'should return the default title if none is defined on the template', () => {
46
+ expect(
47
+ getTemplateInfo( {
48
+ templateAreas: defaultTemplatePartAreas,
49
+ templateTypes: defaultTemplateTypes,
50
+ template: {
51
+ slug: 'index',
52
+ },
53
+ } ).title
54
+ ).toEqual( 'Default (Index)' );
55
+ } );
56
+
57
+ it( 'should return the rendered title if defined on the template', () => {
58
+ expect(
59
+ getTemplateInfo( {
60
+ templateAreas: defaultTemplatePartAreas,
61
+ templateTypes: defaultTemplateTypes,
62
+ template: {
63
+ slug: 'index',
64
+ title: { rendered: 'test title' },
65
+ },
66
+ } ).title
67
+ ).toEqual( 'test title' );
68
+ } );
69
+
70
+ it( 'should return the slug if no title is found', () => {
71
+ expect(
72
+ getTemplateInfo( {
73
+ templateAreas: defaultTemplatePartAreas,
74
+ templateTypes: defaultTemplateTypes,
75
+ template: {
76
+ slug: 'not a real template',
77
+ },
78
+ } ).title
79
+ ).toEqual( 'not a real template' );
80
+ } );
81
+
82
+ it( 'should return the default description if none is defined on the template', () => {
83
+ expect(
84
+ getTemplateInfo( {
85
+ templateAreas: defaultTemplatePartAreas,
86
+ templateTypes: defaultTemplateTypes,
87
+ template: {
88
+ slug: 'index',
89
+ },
90
+ } ).description
91
+ ).toEqual( 'Main template' );
92
+ } );
93
+
94
+ it( 'should return the raw excerpt as description if defined on the template', () => {
95
+ expect(
96
+ getTemplateInfo( {
97
+ templateAreas: defaultTemplatePartAreas,
98
+ templateTypes: defaultTemplateTypes,
99
+ template: {
100
+ slug: 'index',
101
+ description: { raw: 'test description' },
102
+ },
103
+ } ).description
104
+ ).toEqual( 'test description' );
105
+ } );
106
+
107
+ it( 'should return a title, description, and icon', () => {
108
+ expect(
109
+ getTemplateInfo( {
110
+ templateAreas: defaultTemplatePartAreas,
111
+ templateTypes: defaultTemplateTypes,
112
+ template: { slug: 'index' },
113
+ } )
114
+ ).toEqual( {
115
+ title: 'Default (Index)',
116
+ description: 'Main template',
117
+ icon: layout,
118
+ } );
119
+
120
+ expect(
121
+ getTemplateInfo( {
122
+ templateAreas: defaultTemplatePartAreas,
123
+ templateTypes: defaultTemplateTypes,
124
+ template: {
125
+ slug: 'index',
126
+ title: { rendered: 'test title' },
127
+ },
128
+ } )
129
+ ).toEqual( {
130
+ title: 'test title',
131
+ description: 'Main template',
132
+ icon: layout,
133
+ } );
134
+
135
+ expect(
136
+ getTemplateInfo( {
137
+ templateAreas: defaultTemplatePartAreas,
138
+ templateTypes: defaultTemplateTypes,
139
+ template: {
140
+ slug: 'index',
141
+ description: { raw: 'test description' },
142
+ },
143
+ } )
144
+ ).toEqual( {
145
+ title: 'Default (Index)',
146
+ description: 'test description',
147
+ icon: layout,
148
+ } );
149
+
150
+ expect(
151
+ getTemplateInfo( {
152
+ templateAreas: defaultTemplatePartAreas,
153
+ templateTypes: defaultTemplateTypes,
154
+ template: {
155
+ slug: 'index',
156
+ title: { rendered: 'test title' },
157
+ description: { raw: 'test description' },
158
+ },
159
+ } )
160
+ ).toEqual( {
161
+ title: 'test title',
162
+ description: 'test description',
163
+ icon: layout,
164
+ } );
165
+ } );
166
+
167
+ it( 'should return correct icon based on area', () => {
168
+ expect(
169
+ getTemplateInfo( {
170
+ templateAreas: defaultTemplatePartAreas,
171
+ templateTypes: defaultTemplateTypes,
172
+ template: {
173
+ slug: 'template part, area = uncategorized',
174
+ area: 'uncategorized',
175
+ },
176
+ } )
177
+ ).toEqual( {
178
+ title: 'template part, area = uncategorized',
179
+ icon: layout,
180
+ } );
181
+
182
+ expect(
183
+ getTemplateInfo( {
184
+ templateAreas: defaultTemplatePartAreas,
185
+ templateTypes: defaultTemplateTypes,
186
+ template: {
187
+ slug: 'template part, area = invalid',
188
+ area: 'invalid',
189
+ },
190
+ } )
191
+ ).toEqual( {
192
+ title: 'template part, area = invalid',
193
+ icon: layout,
194
+ } );
195
+
196
+ expect(
197
+ getTemplateInfo( {
198
+ templateAreas: defaultTemplatePartAreas,
199
+ templateTypes: defaultTemplateTypes,
200
+ template: {
201
+ slug: 'template part, area = header',
202
+ area: 'header',
203
+ },
204
+ } )
205
+ ).toEqual( {
206
+ title: 'template part, area = header',
207
+ icon: header,
208
+ } );
209
+
210
+ expect(
211
+ getTemplateInfo( {
212
+ templateAreas: defaultTemplatePartAreas,
213
+ templateTypes: defaultTemplateTypes,
214
+ template: {
215
+ slug: 'template part, area = footer',
216
+ area: 'footer',
217
+ },
218
+ } )
219
+ ).toEqual( {
220
+ title: 'template part, area = footer',
221
+ icon: footer,
222
+ } );
223
+ } );
224
+ } );