@wordpress/edit-site 6.12.0 → 6.13.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 (222) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-template/utils.js +1 -2
  3. package/build/components/add-new-template/utils.js.map +1 -1
  4. package/build/components/app/index.js +0 -3
  5. package/build/components/app/index.js.map +1 -1
  6. package/build/components/block-editor/use-site-editor-settings.js +4 -12
  7. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  8. package/build/components/editor/index.js +18 -27
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor/use-editor-title.js +13 -5
  11. package/build/components/editor/use-editor-title.js.map +1 -1
  12. package/build/components/editor/use-resolve-edited-entity.js +133 -0
  13. package/build/components/editor/use-resolve-edited-entity.js.map +1 -0
  14. package/build/components/editor-canvas-container/index.js +1 -1
  15. package/build/components/editor-canvas-container/index.js.map +1 -1
  16. package/build/components/global-styles/block-preview-panel.js +8 -10
  17. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  18. package/build/components/global-styles/screen-block.js +18 -5
  19. package/build/components/global-styles/screen-block.js.map +1 -1
  20. package/build/components/global-styles/screen-style-variations.js +11 -5
  21. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  22. package/build/components/global-styles/ui.js.map +1 -1
  23. package/build/components/global-styles-sidebar/index.js +17 -1
  24. package/build/components/global-styles-sidebar/index.js.map +1 -1
  25. package/build/components/page-patterns/header.js +2 -2
  26. package/build/components/page-patterns/header.js.map +1 -1
  27. package/build/components/page-patterns/use-patterns.js +4 -8
  28. package/build/components/page-patterns/use-patterns.js.map +1 -1
  29. package/build/components/post-edit/index.js +10 -12
  30. package/build/components/post-edit/index.js.map +1 -1
  31. package/build/components/post-list/index.js +3 -3
  32. package/build/components/post-list/index.js.map +1 -1
  33. package/build/components/posts-app/index.js +3 -4
  34. package/build/components/posts-app/index.js.map +1 -1
  35. package/build/components/posts-app-routes/home.js +48 -0
  36. package/build/components/posts-app-routes/home.js.map +1 -0
  37. package/build/components/posts-app-routes/index.js +37 -0
  38. package/build/components/posts-app-routes/index.js.map +1 -0
  39. package/build/components/posts-app-routes/posts-edit.js +44 -0
  40. package/build/components/posts-app-routes/posts-edit.js.map +1 -0
  41. package/build/components/posts-app-routes/posts-list-view-quick-edit.js +63 -0
  42. package/build/components/posts-app-routes/posts-list-view-quick-edit.js.map +1 -0
  43. package/build/components/posts-app-routes/posts-list-view.js +48 -0
  44. package/build/components/posts-app-routes/posts-list-view.js.map +1 -0
  45. package/build/components/posts-app-routes/posts-view-quick-edit.js +60 -0
  46. package/build/components/posts-app-routes/posts-view-quick-edit.js.map +1 -0
  47. package/build/components/posts-app-routes/posts-view.js +41 -0
  48. package/build/components/posts-app-routes/posts-view.js.map +1 -0
  49. package/build/components/sidebar-navigation-screen-details-footer/index.js +17 -23
  50. package/build/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  51. package/build/components/sidebar-navigation-screen-global-styles/index.js +4 -18
  52. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  53. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +1 -1
  54. package/build/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  55. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +2 -3
  56. package/build/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  57. package/build/components/site-editor-routes/index.js +1 -2
  58. package/build/components/site-editor-routes/index.js.map +1 -1
  59. package/build/components/style-book/examples.js +24 -2
  60. package/build/components/style-book/examples.js.map +1 -1
  61. package/build/index.js +0 -9
  62. package/build/index.js.map +1 -1
  63. package/build/store/actions.js +13 -0
  64. package/build/store/actions.js.map +1 -1
  65. package/build/store/selectors.js +21 -1
  66. package/build/store/selectors.js.map +1 -1
  67. package/build-module/components/add-new-template/utils.js +1 -2
  68. package/build-module/components/add-new-template/utils.js.map +1 -1
  69. package/build-module/components/app/index.js +0 -3
  70. package/build-module/components/app/index.js.map +1 -1
  71. package/build-module/components/block-editor/use-site-editor-settings.js +4 -12
  72. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  73. package/build-module/components/editor/index.js +18 -27
  74. package/build-module/components/editor/index.js.map +1 -1
  75. package/build-module/components/editor/use-editor-title.js +13 -5
  76. package/build-module/components/editor/use-editor-title.js.map +1 -1
  77. package/build-module/components/editor/use-resolve-edited-entity.js +125 -0
  78. package/build-module/components/editor/use-resolve-edited-entity.js.map +1 -0
  79. package/build-module/components/editor-canvas-container/index.js +1 -1
  80. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  81. package/build-module/components/global-styles/block-preview-panel.js +8 -10
  82. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  83. package/build-module/components/global-styles/screen-block.js +18 -5
  84. package/build-module/components/global-styles/screen-block.js.map +1 -1
  85. package/build-module/components/global-styles/screen-style-variations.js +11 -5
  86. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  87. package/build-module/components/global-styles/ui.js +1 -1
  88. package/build-module/components/global-styles/ui.js.map +1 -1
  89. package/build-module/components/global-styles-sidebar/index.js +18 -2
  90. package/build-module/components/global-styles-sidebar/index.js.map +1 -1
  91. package/build-module/components/page-patterns/header.js +2 -2
  92. package/build-module/components/page-patterns/header.js.map +1 -1
  93. package/build-module/components/page-patterns/use-patterns.js +4 -8
  94. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  95. package/build-module/components/post-edit/index.js +9 -11
  96. package/build-module/components/post-edit/index.js.map +1 -1
  97. package/build-module/components/post-list/index.js +2 -2
  98. package/build-module/components/post-list/index.js.map +1 -1
  99. package/build-module/components/posts-app/index.js +3 -4
  100. package/build-module/components/posts-app/index.js.map +1 -1
  101. package/build-module/components/posts-app-routes/home.js +40 -0
  102. package/build-module/components/posts-app-routes/home.js.map +1 -0
  103. package/build-module/components/posts-app-routes/index.js +30 -0
  104. package/build-module/components/posts-app-routes/index.js.map +1 -0
  105. package/build-module/components/posts-app-routes/posts-edit.js +36 -0
  106. package/build-module/components/posts-app-routes/posts-edit.js.map +1 -0
  107. package/build-module/components/posts-app-routes/posts-list-view-quick-edit.js +55 -0
  108. package/build-module/components/posts-app-routes/posts-list-view-quick-edit.js.map +1 -0
  109. package/build-module/components/posts-app-routes/posts-list-view.js +40 -0
  110. package/build-module/components/posts-app-routes/posts-list-view.js.map +1 -0
  111. package/build-module/components/posts-app-routes/posts-view-quick-edit.js +52 -0
  112. package/build-module/components/posts-app-routes/posts-view-quick-edit.js.map +1 -0
  113. package/build-module/components/posts-app-routes/posts-view.js +33 -0
  114. package/build-module/components/posts-app-routes/posts-view.js.map +1 -0
  115. package/build-module/components/sidebar-navigation-screen-details-footer/index.js +20 -26
  116. package/build-module/components/sidebar-navigation-screen-details-footer/index.js.map +1 -1
  117. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +4 -18
  118. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  119. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +1 -1
  120. package/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.js.map +1 -1
  121. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +3 -4
  122. package/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.js.map +1 -1
  123. package/build-module/components/site-editor-routes/index.js +1 -2
  124. package/build-module/components/site-editor-routes/index.js.map +1 -1
  125. package/build-module/components/style-book/examples.js +24 -2
  126. package/build-module/components/style-book/examples.js.map +1 -1
  127. package/build-module/index.js +1 -10
  128. package/build-module/index.js.map +1 -1
  129. package/build-module/store/actions.js +13 -0
  130. package/build-module/store/actions.js.map +1 -1
  131. package/build-module/store/selectors.js +21 -1
  132. package/build-module/store/selectors.js.map +1 -1
  133. package/build-style/posts-rtl.css +59 -18
  134. package/build-style/posts.css +59 -18
  135. package/build-style/style-rtl.css +74 -57
  136. package/build-style/style.css +74 -57
  137. package/package.json +2 -2
  138. package/src/components/add-new-template/utils.js +2 -2
  139. package/src/components/app/index.js +0 -3
  140. package/src/components/block-editor/use-site-editor-settings.js +7 -21
  141. package/src/components/editor/index.js +22 -33
  142. package/src/components/editor/use-editor-title.js +17 -4
  143. package/src/components/editor/use-resolve-edited-entity.js +132 -0
  144. package/src/components/editor-canvas-container/index.js +1 -1
  145. package/src/components/global-styles/block-preview-panel.js +10 -10
  146. package/src/components/global-styles/screen-block.js +26 -8
  147. package/src/components/global-styles/screen-style-variations.js +14 -5
  148. package/src/components/global-styles/ui.js +1 -1
  149. package/src/components/global-styles-sidebar/index.js +16 -2
  150. package/src/components/page-patterns/header.js +3 -2
  151. package/src/components/page-patterns/use-patterns.js +9 -7
  152. package/src/components/page-templates/style.scss +1 -0
  153. package/src/components/post-edit/index.js +10 -13
  154. package/src/components/post-list/index.js +1 -2
  155. package/src/components/posts-app/index.js +3 -4
  156. package/src/components/posts-app-routes/home.js +36 -0
  157. package/src/components/posts-app-routes/index.js +36 -0
  158. package/src/components/posts-app-routes/posts-edit.js +31 -0
  159. package/src/components/posts-app-routes/posts-list-view-quick-edit.js +52 -0
  160. package/src/components/posts-app-routes/posts-list-view.js +40 -0
  161. package/src/components/posts-app-routes/posts-view-quick-edit.js +49 -0
  162. package/src/components/posts-app-routes/posts-view.js +35 -0
  163. package/src/components/sidebar-navigation-screen/style.scss +7 -2
  164. package/src/components/sidebar-navigation-screen-details-footer/index.js +27 -38
  165. package/src/components/sidebar-navigation-screen-details-footer/style.scss +0 -4
  166. package/src/components/sidebar-navigation-screen-global-styles/index.js +8 -17
  167. package/src/components/sidebar-navigation-screen-navigation-menus/style.scss +8 -0
  168. package/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js +1 -1
  169. package/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js +4 -4
  170. package/src/components/site-editor-routes/README.md +2 -2
  171. package/src/components/site-editor-routes/index.js +0 -2
  172. package/src/components/site-hub/style.scss +1 -1
  173. package/src/components/style-book/examples.tsx +24 -2
  174. package/src/index.js +1 -13
  175. package/src/store/actions.js +15 -0
  176. package/src/store/selectors.js +24 -1
  177. package/src/style.scss +0 -2
  178. package/build/components/post-fields/index.js +0 -96
  179. package/build/components/post-fields/index.js.map +0 -1
  180. package/build/components/posts-app/router.js +0 -85
  181. package/build/components/posts-app/router.js.map +0 -1
  182. package/build/components/sidebar-navigation-screen-details-panel/index.js +0 -54
  183. package/build/components/sidebar-navigation-screen-details-panel/index.js.map +0 -1
  184. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js +0 -21
  185. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js.map +0 -1
  186. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +0 -33
  187. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +0 -1
  188. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js +0 -21
  189. package/build/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js.map +0 -1
  190. package/build/components/site-editor-routes/styles-edit.js +0 -33
  191. package/build/components/site-editor-routes/styles-edit.js.map +0 -1
  192. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +0 -219
  193. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +0 -1
  194. package/build-module/components/post-fields/index.js +0 -88
  195. package/build-module/components/post-fields/index.js.map +0 -1
  196. package/build-module/components/posts-app/router.js +0 -77
  197. package/build-module/components/posts-app/router.js.map +0 -1
  198. package/build-module/components/sidebar-navigation-screen-details-panel/index.js +0 -29
  199. package/build-module/components/sidebar-navigation-screen-details-panel/index.js.map +0 -1
  200. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js +0 -14
  201. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js.map +0 -1
  202. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +0 -25
  203. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js.map +0 -1
  204. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js +0 -14
  205. package/build-module/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js.map +0 -1
  206. package/build-module/components/site-editor-routes/styles-edit.js +0 -25
  207. package/build-module/components/site-editor-routes/styles-edit.js.map +0 -1
  208. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +0 -212
  209. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +0 -1
  210. package/src/components/post-fields/index.js +0 -107
  211. package/src/components/post-fields/style.scss +0 -3
  212. package/src/components/posts-app/router.js +0 -69
  213. package/src/components/sidebar-navigation-screen-details-panel/index.js +0 -40
  214. package/src/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-label.js +0 -14
  215. package/src/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-row.js +0 -31
  216. package/src/components/sidebar-navigation-screen-details-panel/sidebar-navigation-screen-details-panel-value.js +0 -14
  217. package/src/components/sidebar-navigation-screen-details-panel/style.scss +0 -26
  218. package/src/components/site-editor-routes/styles-edit.js +0 -26
  219. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +0 -257
  220. package/src/store/test/actions.js +0 -83
  221. package/src/store/test/reducer.js +0 -69
  222. package/src/store/test/selectors.js +0 -41
@@ -1,257 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useEffect, useMemo } from '@wordpress/element';
5
- import { useSelect, useDispatch } from '@wordpress/data';
6
- import { store as coreDataStore } from '@wordpress/core-data';
7
- import { privateApis as routerPrivateApis } from '@wordpress/router';
8
- import { store as blockEditorStore } from '@wordpress/block-editor';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import { store as editSiteStore } from '../../store';
14
- import { unlock } from '../../lock-unlock';
15
- import {
16
- TEMPLATE_POST_TYPE,
17
- TEMPLATE_PART_POST_TYPE,
18
- NAVIGATION_POST_TYPE,
19
- PATTERN_TYPES,
20
- } from '../../utils/constants';
21
-
22
- const { useLocation } = unlock( routerPrivateApis );
23
-
24
- const postTypesWithoutParentTemplate = [
25
- TEMPLATE_POST_TYPE,
26
- TEMPLATE_PART_POST_TYPE,
27
- NAVIGATION_POST_TYPE,
28
- PATTERN_TYPES.user,
29
- ];
30
-
31
- const authorizedPostTypes = [ 'page', 'post' ];
32
-
33
- function useResolveEditedEntityAndContext( { postId, postType } ) {
34
- const { hasLoadedAllDependencies, homepageId, postsPageId } = useSelect(
35
- ( select ) => {
36
- const { getEntityRecord } = select( coreDataStore );
37
- const siteData = getEntityRecord( 'root', 'site' );
38
- const _homepageId =
39
- siteData?.show_on_front === 'page' &&
40
- [ 'number', 'string' ].includes(
41
- typeof siteData.page_on_front
42
- ) &&
43
- !! +siteData.page_on_front // We also need to check if it's not zero(`0`).
44
- ? siteData.page_on_front.toString()
45
- : null;
46
- const _postsPageId =
47
- siteData?.show_on_front === 'page' &&
48
- [ 'number', 'string' ].includes(
49
- typeof siteData.page_for_posts
50
- )
51
- ? siteData.page_for_posts.toString()
52
- : null;
53
- return {
54
- hasLoadedAllDependencies: !! siteData,
55
- homepageId: _homepageId,
56
- postsPageId: _postsPageId,
57
- };
58
- },
59
- []
60
- );
61
-
62
- /**
63
- * This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId
64
- * in order to match the frontend as closely as possible in the site editor.
65
- *
66
- * It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.
67
- */
68
- const resolvedTemplateId = useSelect(
69
- ( select ) => {
70
- // If we're rendering a post type that doesn't have a template
71
- // no need to resolve its template.
72
- if (
73
- postTypesWithoutParentTemplate.includes( postType ) &&
74
- postId
75
- ) {
76
- return undefined;
77
- }
78
-
79
- // Don't trigger resolution for multi-selected posts.
80
- if ( postId && postId.includes( ',' ) ) {
81
- return undefined;
82
- }
83
-
84
- const {
85
- getEditedEntityRecord,
86
- getEntityRecords,
87
- getDefaultTemplateId,
88
- } = select( coreDataStore );
89
-
90
- function resolveTemplateForPostTypeAndId(
91
- postTypeToResolve,
92
- postIdToResolve
93
- ) {
94
- // For the front page, we always use the front page template if existing.
95
- if (
96
- postTypeToResolve === 'page' &&
97
- homepageId === postIdToResolve
98
- ) {
99
- // The /lookup endpoint cannot currently handle a lookup
100
- // when a page is set as the front page, so specifically in
101
- // that case, we want to check if there is a front page
102
- // template, and instead of falling back to the home
103
- // template, we want to fall back to the page template.
104
- const templates = getEntityRecords(
105
- 'postType',
106
- TEMPLATE_POST_TYPE,
107
- {
108
- per_page: -1,
109
- }
110
- );
111
- if ( templates ) {
112
- const id = templates?.find(
113
- ( { slug } ) => slug === 'front-page'
114
- )?.id;
115
- if ( id ) {
116
- return id;
117
- }
118
-
119
- // If no front page template is found, continue with the
120
- // logic below (fetching the page template).
121
- } else {
122
- // Still resolving `templates`.
123
- return undefined;
124
- }
125
- }
126
-
127
- const editedEntity = getEditedEntityRecord(
128
- 'postType',
129
- postTypeToResolve,
130
- postIdToResolve
131
- );
132
- if ( ! editedEntity ) {
133
- return undefined;
134
- }
135
- // Check if the current page is the posts page.
136
- if (
137
- postTypeToResolve === 'page' &&
138
- postsPageId === postIdToResolve
139
- ) {
140
- return getDefaultTemplateId( { slug: 'home' } );
141
- }
142
- // First see if the post/page has an assigned template and fetch it.
143
- const currentTemplateSlug = editedEntity.template;
144
- if ( currentTemplateSlug ) {
145
- const currentTemplate = getEntityRecords(
146
- 'postType',
147
- TEMPLATE_POST_TYPE,
148
- {
149
- per_page: -1,
150
- }
151
- )?.find( ( { slug } ) => slug === currentTemplateSlug );
152
- if ( currentTemplate ) {
153
- return currentTemplate.id;
154
- }
155
- }
156
- // If no template is assigned, use the default template.
157
- let slugToCheck;
158
- // In `draft` status we might not have a slug available, so we use the `single`
159
- // post type templates slug(ex page, single-post, single-product etc..).
160
- // Pages do not need the `single` prefix in the slug to be prioritized
161
- // through template hierarchy.
162
- if ( editedEntity.slug ) {
163
- slugToCheck =
164
- postTypeToResolve === 'page'
165
- ? `${ postTypeToResolve }-${ editedEntity.slug }`
166
- : `single-${ postTypeToResolve }-${ editedEntity.slug }`;
167
- } else {
168
- slugToCheck =
169
- postTypeToResolve === 'page'
170
- ? 'page'
171
- : `single-${ postTypeToResolve }`;
172
- }
173
- return getDefaultTemplateId( {
174
- slug: slugToCheck,
175
- } );
176
- }
177
-
178
- if ( ! hasLoadedAllDependencies ) {
179
- return undefined;
180
- }
181
-
182
- // If we're rendering a specific page, we need to resolve its template.
183
- // The site editor only supports pages for now, not other CPTs.
184
- if (
185
- postType &&
186
- postId &&
187
- authorizedPostTypes.includes( postType )
188
- ) {
189
- return resolveTemplateForPostTypeAndId( postType, postId );
190
- }
191
-
192
- // If we're rendering the home page, and we have a static home page, resolve its template.
193
- if ( homepageId ) {
194
- return resolveTemplateForPostTypeAndId( 'page', homepageId );
195
- }
196
-
197
- // If we're not rendering a specific page, use the front page template.
198
- return getDefaultTemplateId( { slug: 'front-page' } );
199
- },
200
- [ homepageId, postsPageId, hasLoadedAllDependencies, postId, postType ]
201
- );
202
-
203
- const context = useMemo( () => {
204
- if ( postTypesWithoutParentTemplate.includes( postType ) && postId ) {
205
- return {};
206
- }
207
-
208
- if ( postType && postId && authorizedPostTypes.includes( postType ) ) {
209
- return { postType, postId };
210
- }
211
- // TODO: for post types lists we should probably not render the front page, but maybe a placeholder
212
- // with a message like "Select a page" or something similar.
213
- if ( homepageId ) {
214
- return { postType: 'page', postId: homepageId };
215
- }
216
-
217
- return {};
218
- }, [ homepageId, postType, postId ] );
219
-
220
- if ( postTypesWithoutParentTemplate.includes( postType ) && postId ) {
221
- return { isReady: true, postType, postId, context };
222
- }
223
-
224
- if ( hasLoadedAllDependencies ) {
225
- return {
226
- isReady: resolvedTemplateId !== undefined,
227
- postType: TEMPLATE_POST_TYPE,
228
- postId: resolvedTemplateId,
229
- context,
230
- };
231
- }
232
-
233
- return { isReady: false };
234
- }
235
-
236
- export default function useInitEditedEntityFromURL() {
237
- const { params = {} } = useLocation();
238
- const { postType, postId, context, isReady } =
239
- useResolveEditedEntityAndContext( params );
240
-
241
- const { setEditedEntity } = useDispatch( editSiteStore );
242
- const { resetZoomLevel } = unlock( useDispatch( blockEditorStore ) );
243
-
244
- useEffect( () => {
245
- if ( isReady ) {
246
- resetZoomLevel();
247
- setEditedEntity( postType, postId, context );
248
- }
249
- }, [
250
- isReady,
251
- postType,
252
- postId,
253
- context,
254
- setEditedEntity,
255
- resetZoomLevel,
256
- ] );
257
- }
@@ -1,83 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { store as blockEditorStore } from '@wordpress/block-editor';
5
- import { store as coreStore } from '@wordpress/core-data';
6
- import { createRegistry } from '@wordpress/data';
7
- import { store as noticesStore } from '@wordpress/notices';
8
- import { store as preferencesStore } from '@wordpress/preferences';
9
- import {
10
- store as editorStore,
11
- privateApis as editorPrivateApis,
12
- } from '@wordpress/editor';
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
- import { store as editSiteStore } from '..';
18
- import { unlock } from '../../lock-unlock';
19
-
20
- const { interfaceStore } = unlock( editorPrivateApis );
21
-
22
- function createRegistryWithStores() {
23
- // create a registry
24
- const registry = createRegistry();
25
-
26
- // register stores
27
- registry.register( editorStore );
28
- registry.register( blockEditorStore );
29
- registry.register( coreStore );
30
- registry.register( editSiteStore );
31
- registry.register( interfaceStore );
32
- registry.register( noticesStore );
33
- registry.register( preferencesStore );
34
-
35
- return registry;
36
- }
37
-
38
- describe( 'actions', () => {
39
- describe( 'toggleFeature', () => {
40
- it( 'should toggle a feature flag', () => {
41
- const registry = createRegistryWithStores();
42
-
43
- // Should start as undefined.
44
- expect(
45
- registry
46
- .select( preferencesStore )
47
- .get( 'core/edit-site', 'name' )
48
- ).toBe( undefined );
49
-
50
- // Toggle on.
51
- registry.dispatch( editSiteStore ).toggleFeature( 'name' );
52
- expect(
53
- registry
54
- .select( preferencesStore )
55
- .get( 'core/edit-site', 'name' )
56
- ).toBe( true );
57
-
58
- // Toggle off again.
59
- registry.dispatch( editSiteStore ).toggleFeature( 'name' );
60
- expect(
61
- registry
62
- .select( preferencesStore )
63
- .get( 'core/edit-site', 'name' )
64
- ).toBe( false );
65
-
66
- // Expect a deprecation warning.
67
- expect( console ).toHaveWarned();
68
- } );
69
- } );
70
-
71
- describe( 'setTemplatePart', () => {
72
- it( 'should set template part', () => {
73
- const registry = createRegistryWithStores();
74
-
75
- const ID = 1;
76
- registry.dispatch( editSiteStore ).setTemplatePart( ID );
77
-
78
- const select = registry.select( editSiteStore );
79
- expect( select.getEditedPostId() ).toBe( ID );
80
- expect( select.getEditedPostType() ).toBe( 'wp_template_part' );
81
- } );
82
- } );
83
- } );
@@ -1,69 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import deepFreeze from 'deep-freeze';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
- import { settings, editedPost } from '../reducer';
10
-
11
- describe( 'state', () => {
12
- describe( 'settings()', () => {
13
- it( 'should apply default state', () => {
14
- expect( settings( undefined, {} ) ).toEqual( {} );
15
- } );
16
-
17
- it( 'should default to returning the same state', () => {
18
- const state = {};
19
- expect( settings( state, {} ) ).toBe( state );
20
- } );
21
-
22
- it( 'should update settings with a shallow merge', () => {
23
- expect(
24
- settings(
25
- deepFreeze( {
26
- setting: { key: 'value' },
27
- otherSetting: 'value',
28
- } ),
29
- {
30
- type: 'UPDATE_SETTINGS',
31
- settings: { setting: { newKey: 'newValue' } },
32
- }
33
- )
34
- ).toEqual( {
35
- setting: { newKey: 'newValue' },
36
- otherSetting: 'value',
37
- } );
38
- } );
39
- } );
40
-
41
- describe( 'editedPost()', () => {
42
- it( 'should apply default state', () => {
43
- expect( editedPost( undefined, {} ) ).toEqual( {} );
44
- } );
45
-
46
- it( 'should default to returning the same state', () => {
47
- const state = [];
48
- expect( editedPost( state, {} ) ).toBe( state );
49
- } );
50
-
51
- it( 'should update when a template is set', () => {
52
- expect(
53
- editedPost(
54
- { id: 1, type: 'wp_template' },
55
- {
56
- type: 'SET_EDITED_POST',
57
- postType: 'wp_template',
58
- id: 2,
59
- context: { templateSlug: 'slug' },
60
- }
61
- )
62
- ).toEqual( {
63
- postType: 'wp_template',
64
- id: 2,
65
- context: { templateSlug: 'slug' },
66
- } );
67
- } );
68
- } );
69
- } );
@@ -1,41 +0,0 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import { getEditedPostType, getEditedPostId, isPage } from '../selectors';
5
-
6
- describe( 'selectors', () => {
7
- describe( 'getEditedPostId', () => {
8
- it( 'returns the template ID', () => {
9
- const state = { editedPost: { id: 10 } };
10
- expect( getEditedPostId( state ) ).toBe( 10 );
11
- } );
12
- } );
13
-
14
- describe( 'getEditedPostType', () => {
15
- it( 'returns the template type', () => {
16
- const state = { editedPost: { postType: 'wp_template' } };
17
- expect( getEditedPostType( state ) ).toBe( 'wp_template' );
18
- } );
19
- } );
20
-
21
- describe( 'isPage', () => {
22
- it( 'returns true if the edited post type is a page', () => {
23
- const state = {
24
- editedPost: {
25
- postType: 'wp_template',
26
- context: { postType: 'page', postId: 123 },
27
- },
28
- };
29
- expect( isPage( state ) ).toBe( true );
30
- } );
31
-
32
- it( 'returns false if the edited post type is a template', () => {
33
- const state = {
34
- editedPost: {
35
- postType: 'wp_template',
36
- },
37
- };
38
- expect( isPage( state ) ).toBe( false );
39
- } );
40
- } );
41
- } );