@wordpress/edit-site 4.0.2 → 4.1.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 (129) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/app/index.js +20 -0
  3. package/build/components/app/index.js.map +1 -1
  4. package/build/components/editor/global-styles-renderer.js +7 -3
  5. package/build/components/editor/global-styles-renderer.js.map +1 -1
  6. package/build/components/editor/index.js +3 -18
  7. package/build/components/editor/index.js.map +1 -1
  8. package/build/components/global-styles/screen-block-list.js +31 -1
  9. package/build/components/global-styles/screen-block-list.js.map +1 -1
  10. package/build/components/global-styles/screen-typography.js.map +1 -1
  11. package/build/components/global-styles/utils.js +2 -2
  12. package/build/components/global-styles/utils.js.map +1 -1
  13. package/build/components/header/index.js +1 -1
  14. package/build/components/header/index.js.map +1 -1
  15. package/build/components/header/more-menu/index.js +9 -21
  16. package/build/components/header/more-menu/index.js.map +1 -1
  17. package/build/components/header/more-menu/site-export.js +1 -1
  18. package/build/components/header/more-menu/site-export.js.map +1 -1
  19. package/build/components/header/more-menu/welcome-guide-menu-item.js +4 -8
  20. package/build/components/header/more-menu/welcome-guide-menu-item.js.map +1 -1
  21. package/build/components/keyboard-shortcuts/index.js +1 -1
  22. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  23. package/build/components/list/table.js +6 -19
  24. package/build/components/list/table.js.map +1 -1
  25. package/build/components/navigation-sidebar/navigation-panel/index.js +9 -3
  26. package/build/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  27. package/build/components/sidebar/global-styles-sidebar.js +5 -5
  28. package/build/components/sidebar/global-styles-sidebar.js.map +1 -1
  29. package/build/components/welcome-guide/editor.js +6 -6
  30. package/build/components/welcome-guide/editor.js.map +1 -1
  31. package/build/components/welcome-guide/styles.js +6 -4
  32. package/build/components/welcome-guide/styles.js.map +1 -1
  33. package/build/index.js +12 -11
  34. package/build/index.js.map +1 -1
  35. package/build/store/actions.js +38 -34
  36. package/build/store/actions.js.map +1 -1
  37. package/build/store/index.js +3 -6
  38. package/build/store/index.js.map +1 -1
  39. package/build/store/reducer.js +0 -44
  40. package/build/store/reducer.js.map +1 -1
  41. package/build/store/selectors.js +31 -9
  42. package/build/store/selectors.js.map +1 -1
  43. package/build-module/components/app/index.js +16 -0
  44. package/build-module/components/app/index.js.map +1 -1
  45. package/build-module/components/editor/global-styles-renderer.js +6 -3
  46. package/build-module/components/editor/global-styles-renderer.js.map +1 -1
  47. package/build-module/components/editor/index.js +4 -17
  48. package/build-module/components/editor/index.js.map +1 -1
  49. package/build-module/components/global-styles/screen-block-list.js +31 -2
  50. package/build-module/components/global-styles/screen-block-list.js.map +1 -1
  51. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  52. package/build-module/components/global-styles/utils.js +2 -2
  53. package/build-module/components/global-styles/utils.js.map +1 -1
  54. package/build-module/components/header/index.js +1 -1
  55. package/build-module/components/header/index.js.map +1 -1
  56. package/build-module/components/header/more-menu/index.js +11 -22
  57. package/build-module/components/header/more-menu/index.js.map +1 -1
  58. package/build-module/components/header/more-menu/site-export.js +1 -1
  59. package/build-module/components/header/more-menu/site-export.js.map +1 -1
  60. package/build-module/components/header/more-menu/welcome-guide-menu-item.js +4 -8
  61. package/build-module/components/header/more-menu/welcome-guide-menu-item.js.map +1 -1
  62. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  63. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  64. package/build-module/components/list/table.js +7 -20
  65. package/build-module/components/list/table.js.map +1 -1
  66. package/build-module/components/navigation-sidebar/navigation-panel/index.js +9 -3
  67. package/build-module/components/navigation-sidebar/navigation-panel/index.js.map +1 -1
  68. package/build-module/components/sidebar/global-styles-sidebar.js +4 -4
  69. package/build-module/components/sidebar/global-styles-sidebar.js.map +1 -1
  70. package/build-module/components/welcome-guide/editor.js +5 -5
  71. package/build-module/components/welcome-guide/editor.js.map +1 -1
  72. package/build-module/components/welcome-guide/styles.js +5 -4
  73. package/build-module/components/welcome-guide/styles.js.map +1 -1
  74. package/build-module/index.js +11 -10
  75. package/build-module/index.js.map +1 -1
  76. package/build-module/store/actions.js +36 -34
  77. package/build-module/store/actions.js.map +1 -1
  78. package/build-module/store/index.js +4 -7
  79. package/build-module/store/index.js.map +1 -1
  80. package/build-module/store/reducer.js +0 -40
  81. package/build-module/store/reducer.js.map +1 -1
  82. package/build-module/store/selectors.js +26 -9
  83. package/build-module/store/selectors.js.map +1 -1
  84. package/build-style/style-rtl.css +91 -29
  85. package/build-style/style.css +91 -29
  86. package/package.json +33 -27
  87. package/src/components/app/index.js +19 -0
  88. package/src/components/editor/global-styles-renderer.js +7 -1
  89. package/src/components/editor/index.js +2 -20
  90. package/src/components/global-styles/screen-block-list.js +27 -2
  91. package/src/components/global-styles/screen-typography.js +1 -2
  92. package/src/components/global-styles/utils.js +2 -2
  93. package/src/components/header/index.js +1 -1
  94. package/src/components/header/more-menu/index.js +12 -29
  95. package/src/components/header/more-menu/site-export.js +1 -1
  96. package/src/components/header/more-menu/welcome-guide-menu-item.js +3 -7
  97. package/src/components/keyboard-shortcuts/index.js +1 -1
  98. package/src/components/list/table.js +13 -21
  99. package/src/components/navigation-sidebar/navigation-panel/index.js +16 -11
  100. package/src/components/navigation-sidebar/navigation-toggle/test/index.js +1 -1
  101. package/src/components/sidebar/global-styles-sidebar.js +6 -3
  102. package/src/components/sidebar/style.scss +1 -1
  103. package/src/components/welcome-guide/editor.js +8 -4
  104. package/src/components/welcome-guide/styles.js +5 -3
  105. package/src/index.js +12 -10
  106. package/src/store/actions.js +22 -13
  107. package/src/store/index.js +2 -6
  108. package/src/store/reducer.js +0 -30
  109. package/src/store/selectors.js +34 -10
  110. package/src/store/test/actions.js +17 -0
  111. package/src/store/test/reducer.js +0 -22
  112. package/src/store/test/selectors.js +14 -52
  113. package/src/style.scss +0 -1
  114. package/build/components/header/feature-toggle/index.js +0 -66
  115. package/build/components/header/feature-toggle/index.js.map +0 -1
  116. package/build/components/routes/redirect-to-homepage.js +0 -106
  117. package/build/components/routes/redirect-to-homepage.js.map +0 -1
  118. package/build/store/defaults.js +0 -15
  119. package/build/store/defaults.js.map +0 -1
  120. package/build-module/components/header/feature-toggle/index.js +0 -52
  121. package/build-module/components/header/feature-toggle/index.js.map +0 -1
  122. package/build-module/components/routes/redirect-to-homepage.js +0 -94
  123. package/build-module/components/routes/redirect-to-homepage.js.map +0 -1
  124. package/build-module/store/defaults.js +0 -8
  125. package/build-module/store/defaults.js.map +0 -1
  126. package/src/components/header/feature-toggle/index.js +0 -55
  127. package/src/components/header/more-menu/style.scss +0 -29
  128. package/src/components/routes/redirect-to-homepage.js +0 -94
  129. package/src/store/defaults.js +0 -7
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get, map, keyBy } from 'lodash';
4
+ import { map, keyBy } from 'lodash';
5
5
  import createSelector from 'rememo';
6
6
 
7
7
  /**
@@ -9,9 +9,11 @@ import createSelector from 'rememo';
9
9
  */
10
10
  import { store as coreDataStore } from '@wordpress/core-data';
11
11
  import { createRegistrySelector } from '@wordpress/data';
12
+ import deprecated from '@wordpress/deprecated';
12
13
  import { uploadMedia } from '@wordpress/media-utils';
13
14
  import { isTemplatePart } from '@wordpress/blocks';
14
15
  import { Platform } from '@wordpress/element';
16
+ import { store as preferencesStore } from '@wordpress/preferences';
15
17
 
16
18
  /**
17
19
  * Internal dependencies
@@ -31,16 +33,35 @@ import {
31
33
  * @typedef {'template'|'template_type'} TemplateType Template type.
32
34
  */
33
35
 
36
+ /**
37
+ * Helper for getting a preference from the preferences store.
38
+ *
39
+ * This is only present so that `getSettings` doesn't need to be made a
40
+ * registry selector.
41
+ *
42
+ * It's unstable because the selector needs to be exported and so part of the
43
+ * public API to work.
44
+ */
45
+ export const __unstableGetPreference = createRegistrySelector(
46
+ ( select ) => ( state, name ) =>
47
+ select( preferencesStore ).get( 'core/edit-site', name )
48
+ );
49
+
34
50
  /**
35
51
  * Returns whether the given feature is enabled or not.
36
52
  *
37
- * @param {Object} state Global application state.
38
- * @param {string} feature Feature slug.
53
+ * @param {Object} state Global application state.
54
+ * @param {string} featureName Feature slug.
39
55
  *
40
56
  * @return {boolean} Is active.
41
57
  */
42
- export function isFeatureActive( state, feature ) {
43
- return get( state.preferences.features, [ feature ], false );
58
+ export function isFeatureActive( state, featureName ) {
59
+ deprecated( `select( 'core/interface' ).isFeatureActive`, {
60
+ since: '6.0',
61
+ alternative: `select( 'core/preferences' ).get`,
62
+ } );
63
+
64
+ return !! __unstableGetPreference( state, featureName );
44
65
  }
45
66
 
46
67
  /**
@@ -94,8 +115,11 @@ export const getSettings = createSelector(
94
115
  const settings = {
95
116
  ...state.settings,
96
117
  outlineMode: true,
97
- focusMode: isFeatureActive( state, 'focusMode' ),
98
- hasFixedToolbar: isFeatureActive( state, 'fixedToolbar' ),
118
+ focusMode: !! __unstableGetPreference( state, 'focusMode' ),
119
+ hasFixedToolbar: !! __unstableGetPreference(
120
+ state,
121
+ 'fixedToolbar'
122
+ ),
99
123
  __experimentalSetIsInserterOpened: setIsInserterOpen,
100
124
  __experimentalReusableBlocks: getReusableBlocks( state ),
101
125
  __experimentalPreferPatternsOnRoot:
@@ -119,8 +143,8 @@ export const getSettings = createSelector(
119
143
  ( state ) => [
120
144
  getCanUserCreateMedia( state ),
121
145
  state.settings,
122
- isFeatureActive( state, 'focusMode' ),
123
- isFeatureActive( state, 'fixedToolbar' ),
146
+ __unstableGetPreference( state, 'focusMode' ),
147
+ __unstableGetPreference( state, 'fixedToolbar' ),
124
148
  getReusableBlocks( state ),
125
149
  getEditedPostType( state ),
126
150
  ]
@@ -339,5 +363,5 @@ export const getCurrentTemplateTemplateParts = createRegistrySelector(
339
363
  * @return {string} Editing mode.
340
364
  */
341
365
  export function getEditorMode( state ) {
342
- return state.preferences.editorMode || 'visual';
366
+ return __unstableGetPreference( state, 'editorMode' );
343
367
  }
@@ -7,6 +7,7 @@ import { store as coreStore } from '@wordpress/core-data';
7
7
  import { createRegistry } from '@wordpress/data';
8
8
  import { store as interfaceStore } from '@wordpress/interface';
9
9
  import { store as noticesStore } from '@wordpress/notices';
10
+ import { store as preferencesStore } from '@wordpress/preferences';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -37,6 +38,7 @@ function createRegistryWithStores() {
37
38
  registry.register( editSiteStore );
38
39
  registry.register( interfaceStore );
39
40
  registry.register( noticesStore );
41
+ registry.register( preferencesStore );
40
42
 
41
43
  return registry;
42
44
  }
@@ -46,10 +48,25 @@ describe( 'actions', () => {
46
48
  it( 'should toggle a feature flag', () => {
47
49
  const registry = createRegistryWithStores();
48
50
 
51
+ // Should default to false.
52
+ expect(
53
+ registry.select( editSiteStore ).isFeatureActive( 'name' )
54
+ ).toBe( false );
55
+
56
+ // Toggle on.
49
57
  registry.dispatch( editSiteStore ).toggleFeature( 'name' );
50
58
  expect(
51
59
  registry.select( editSiteStore ).isFeatureActive( 'name' )
52
60
  ).toBe( true );
61
+
62
+ // Toggle off again.
63
+ registry.dispatch( editSiteStore ).toggleFeature( 'name' );
64
+ expect(
65
+ registry.select( editSiteStore ).isFeatureActive( 'name' )
66
+ ).toBe( false );
67
+
68
+ // Expect a deprecation warning.
69
+ expect( console ).toHaveWarned();
53
70
  } );
54
71
  } );
55
72
 
@@ -7,7 +7,6 @@ import deepFreeze from 'deep-freeze';
7
7
  * Internal dependencies
8
8
  */
9
9
  import {
10
- preferences,
11
10
  settings,
12
11
  homeTemplateId,
13
12
  editedPost,
@@ -15,7 +14,6 @@ import {
15
14
  blockInserterPanel,
16
15
  listViewPanel,
17
16
  } from '../reducer';
18
- import { PREFERENCES_DEFAULTS } from '../defaults';
19
17
 
20
18
  import {
21
19
  setNavigationPanelActiveMenu,
@@ -26,26 +24,6 @@ import {
26
24
  } from '../actions';
27
25
 
28
26
  describe( 'state', () => {
29
- describe( 'preferences()', () => {
30
- it( 'should apply all defaults', () => {
31
- const state = preferences( undefined, {} );
32
-
33
- expect( state ).toEqual( PREFERENCES_DEFAULTS );
34
- } );
35
-
36
- it( 'should toggle a feature flag', () => {
37
- const state = preferences(
38
- deepFreeze( { features: { chicken: true } } ),
39
- {
40
- type: 'TOGGLE_FEATURE',
41
- feature: 'chicken',
42
- }
43
- );
44
-
45
- expect( state.features ).toEqual( { chicken: false } );
46
- } );
47
- } );
48
-
49
27
  describe( 'settings()', () => {
50
28
  it( 'should apply default state', () => {
51
29
  expect( settings( undefined, {} ) ).toEqual( {} );
@@ -7,7 +7,6 @@ import { store as coreDataStore } from '@wordpress/core-data';
7
7
  * Internal dependencies
8
8
  */
9
9
  import {
10
- isFeatureActive,
11
10
  getCanUserCreateMedia,
12
11
  getSettings,
13
12
  getHomeTemplateId,
@@ -19,62 +18,22 @@ import {
19
18
  isNavigationOpened,
20
19
  isInserterOpened,
21
20
  isListViewOpened,
21
+ __unstableGetPreference,
22
22
  } from '../selectors';
23
23
 
24
24
  describe( 'selectors', () => {
25
25
  const canUser = jest.fn( () => true );
26
26
  const getEntityRecords = jest.fn( () => [] );
27
+ const get = jest.fn();
27
28
  getCanUserCreateMedia.registry = {
28
29
  select: jest.fn( () => ( { canUser } ) ),
29
30
  };
30
31
  getReusableBlocks.registry = {
31
32
  select: jest.fn( () => ( { getEntityRecords } ) ),
32
33
  };
33
-
34
- describe( 'isFeatureActive', () => {
35
- it( 'is tolerant to an undefined features preference', () => {
36
- // See: https://github.com/WordPress/gutenberg/issues/14580
37
- const state = {
38
- preferences: {},
39
- };
40
-
41
- expect( isFeatureActive( state, 'chicken' ) ).toBe( false );
42
- } );
43
-
44
- it( 'should return true if feature is active', () => {
45
- const state = {
46
- preferences: {
47
- features: {
48
- chicken: true,
49
- },
50
- },
51
- };
52
-
53
- expect( isFeatureActive( state, 'chicken' ) ).toBe( true );
54
- } );
55
-
56
- it( 'should return false if feature is not active', () => {
57
- const state = {
58
- preferences: {
59
- features: {
60
- chicken: false,
61
- },
62
- },
63
- };
64
-
65
- expect( isFeatureActive( state, 'chicken' ) ).toBe( false );
66
- } );
67
-
68
- it( 'should return false if feature is not referred', () => {
69
- const state = {
70
- preferences: {
71
- features: {},
72
- },
73
- };
74
-
75
- expect( isFeatureActive( state, 'chicken' ) ).toBe( false );
76
- } );
77
- } );
34
+ __unstableGetPreference.registry = {
35
+ select: jest.fn( () => ( { get } ) ),
36
+ };
78
37
 
79
38
  describe( 'getCanUserCreateMedia', () => {
80
39
  it( "selects `canUser( 'create', 'media' )` from the core store", () => {
@@ -106,6 +65,10 @@ describe( 'selectors', () => {
106
65
  it( "returns the settings when the user can't create media", () => {
107
66
  canUser.mockReturnValueOnce( false );
108
67
  canUser.mockReturnValueOnce( false );
68
+ get.mockImplementation( ( scope, name ) => {
69
+ if ( name === 'focusMode' ) return false;
70
+ if ( name === 'fixedToolbar' ) return false;
71
+ } );
109
72
  const state = {
110
73
  settings: {},
111
74
  preferences: {},
@@ -123,14 +86,13 @@ describe( 'selectors', () => {
123
86
  } );
124
87
 
125
88
  it( 'returns the extended settings when the user can create media', () => {
89
+ get.mockImplementation( ( scope, name ) => {
90
+ if ( name === 'focusMode' ) return true;
91
+ if ( name === 'fixedToolbar' ) return true;
92
+ } );
93
+
126
94
  const state = {
127
95
  settings: { key: 'value' },
128
- preferences: {
129
- features: {
130
- focusMode: true,
131
- fixedToolbar: true,
132
- },
133
- },
134
96
  editedPost: { type: 'wp_template_part' },
135
97
  };
136
98
  const setInserterOpened = () => {};
package/src/style.scss CHANGED
@@ -5,7 +5,6 @@
5
5
  @import "./components/global-styles/style.scss";
6
6
  @import "./components/header/style.scss";
7
7
  @import "./components/header/document-actions/style.scss";
8
- @import "./components/header/more-menu/style.scss";
9
8
  @import "./components/navigation-sidebar/navigation-toggle/style.scss";
10
9
  @import "./components/navigation-sidebar/navigation-panel/style.scss";
11
10
  @import "./components/list/style.scss";
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = FeatureToggle;
7
-
8
- var _element = require("@wordpress/element");
9
-
10
- var _lodash = require("lodash");
11
-
12
- var _data = require("@wordpress/data");
13
-
14
- var _components = require("@wordpress/components");
15
-
16
- var _i18n = require("@wordpress/i18n");
17
-
18
- var _icons = require("@wordpress/icons");
19
-
20
- var _a11y = require("@wordpress/a11y");
21
-
22
- var _store = require("../../../store");
23
-
24
- /**
25
- * External dependencies
26
- */
27
-
28
- /**
29
- * WordPress dependencies
30
- */
31
-
32
- /**
33
- * Internal dependencies
34
- */
35
- function FeatureToggle(_ref) {
36
- let {
37
- feature,
38
- label,
39
- info,
40
- messageActivated,
41
- messageDeactivated
42
- } = _ref;
43
-
44
- const speakMessage = () => {
45
- if (isActive) {
46
- (0, _a11y.speak)(messageDeactivated || (0, _i18n.__)('Feature deactivated'));
47
- } else {
48
- (0, _a11y.speak)(messageActivated || (0, _i18n.__)('Feature activated'));
49
- }
50
- };
51
-
52
- const isActive = (0, _data.useSelect)(select => {
53
- return select(_store.store).isFeatureActive(feature);
54
- }, []);
55
- const {
56
- toggleFeature
57
- } = (0, _data.useDispatch)(_store.store);
58
- return (0, _element.createElement)(_components.MenuItem, {
59
- icon: isActive && _icons.check,
60
- isSelected: isActive,
61
- onClick: (0, _lodash.flow)(toggleFeature.bind(null, feature), speakMessage),
62
- role: "menuitemcheckbox",
63
- info: info
64
- }, label);
65
- }
66
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/header/feature-toggle/index.js"],"names":["FeatureToggle","feature","label","info","messageActivated","messageDeactivated","speakMessage","isActive","select","editSiteStore","isFeatureActive","toggleFeature","check","bind"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AAjBA;AACA;AACA;;AAGA;AACA;AACA;;AAOA;AACA;AACA;AAGe,SAASA,aAAT,OAMX;AAAA,MANmC;AACtCC,IAAAA,OADsC;AAEtCC,IAAAA,KAFsC;AAGtCC,IAAAA,IAHsC;AAItCC,IAAAA,gBAJsC;AAKtCC,IAAAA;AALsC,GAMnC;;AACH,QAAMC,YAAY,GAAG,MAAM;AAC1B,QAAKC,QAAL,EAAgB;AACf,uBAAOF,kBAAkB,IAAI,cAAI,qBAAJ,CAA7B;AACA,KAFD,MAEO;AACN,uBAAOD,gBAAgB,IAAI,cAAI,mBAAJ,CAA3B;AACA;AACD,GAND;;AAQA,QAAMG,QAAQ,GAAG,qBAAaC,MAAF,IAAc;AACzC,WAAOA,MAAM,CAAEC,YAAF,CAAN,CAAwBC,eAAxB,CAAyCT,OAAzC,CAAP;AACA,GAFgB,EAEd,EAFc,CAAjB;AAIA,QAAM;AAAEU,IAAAA;AAAF,MAAoB,uBAAaF,YAAb,CAA1B;AAEA,SACC,4BAAC,oBAAD;AACC,IAAA,IAAI,EAAGF,QAAQ,IAAIK,YADpB;AAEC,IAAA,UAAU,EAAGL,QAFd;AAGC,IAAA,OAAO,EAAG,kBACTI,aAAa,CAACE,IAAd,CAAoB,IAApB,EAA0BZ,OAA1B,CADS,EAETK,YAFS,CAHX;AAOC,IAAA,IAAI,EAAC,kBAPN;AAQC,IAAA,IAAI,EAAGH;AARR,KAUGD,KAVH,CADD;AAcA","sourcesContent":["/**\n * External dependencies\n */\nimport { flow } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\n\nexport default function FeatureToggle( {\n\tfeature,\n\tlabel,\n\tinfo,\n\tmessageActivated,\n\tmessageDeactivated,\n} ) {\n\tconst speakMessage = () => {\n\t\tif ( isActive ) {\n\t\t\tspeak( messageDeactivated || __( 'Feature deactivated' ) );\n\t\t} else {\n\t\t\tspeak( messageActivated || __( 'Feature activated' ) );\n\t\t}\n\t};\n\n\tconst isActive = useSelect( ( select ) => {\n\t\treturn select( editSiteStore ).isFeatureActive( feature );\n\t}, [] );\n\n\tconst { toggleFeature } = useDispatch( editSiteStore );\n\n\treturn (\n\t\t<MenuItem\n\t\t\ticon={ isActive && check }\n\t\t\tisSelected={ isActive }\n\t\t\tonClick={ flow(\n\t\t\t\ttoggleFeature.bind( null, feature ),\n\t\t\t\tspeakMessage\n\t\t\t) }\n\t\t\trole=\"menuitemcheckbox\"\n\t\t\tinfo={ info }\n\t\t>\n\t\t\t{ label }\n\t\t</MenuItem>\n\t);\n}\n"]}
@@ -1,106 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = redirectToHomepage;
9
-
10
- var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
11
-
12
- var _url = require("@wordpress/url");
13
-
14
- var _history = _interopRequireDefault(require("../../utils/history"));
15
-
16
- var _getIsListPage = _interopRequireDefault(require("../../utils/get-is-list-page"));
17
-
18
- /**
19
- * WordPress dependencies
20
- */
21
-
22
- /**
23
- * Internal dependencies
24
- */
25
- function getNeedsHomepageRedirect(params) {
26
- const {
27
- postType
28
- } = params;
29
- return !(0, _getIsListPage.default)(params) && !['post', 'page', 'wp_template', 'wp_template_part'].includes(postType);
30
- }
31
- /**
32
- * Returns the postType and postId of the default homepage.
33
- *
34
- * @param {string} siteUrl The URL of the site.
35
- * @return {Object} An object containing the postType and postId properties
36
- * or `undefined` if a homepage could not be found.
37
- */
38
-
39
-
40
- async function getHomepageParams(siteUrl) {
41
- const siteSettings = await (0, _apiFetch.default)({
42
- path: '/wp/v2/settings'
43
- });
44
-
45
- if (!siteSettings) {
46
- throw new Error('`getHomepageParams`: unable to load site settings.');
47
- }
48
-
49
- const {
50
- show_on_front: showOnFront,
51
- page_on_front: frontpageId
52
- } = siteSettings; // If the user has set a page as the homepage, use those details.
53
-
54
- if (showOnFront === 'page') {
55
- return {
56
- postType: 'page',
57
- postId: frontpageId
58
- };
59
- } // Else get the home template.
60
- // This matches the logic in `__experimentalGetTemplateForLink`.
61
- // (packages/core-data/src/resolvers.js)
62
-
63
-
64
- const template = await window.fetch((0, _url.addQueryArgs)(siteUrl, {
65
- '_wp-find-template': true
66
- })).then(response => {
67
- if (!response.ok) {
68
- throw new Error(`\`getHomepageParams\`: HTTP status error, ${response.status} ${response.statusText}`);
69
- }
70
-
71
- return response.json();
72
- }).then(_ref => {
73
- let {
74
- data
75
- } = _ref;
76
-
77
- if (data.message) {
78
- throw new Error(`\`getHomepageParams\`: REST API error, ${data.message}`);
79
- }
80
-
81
- return data;
82
- });
83
-
84
- if (!(template !== null && template !== void 0 && template.id)) {
85
- throw new Error('`getHomepageParams`: unable to find home template.');
86
- }
87
-
88
- return {
89
- postType: 'wp_template',
90
- postId: template.id
91
- };
92
- }
93
-
94
- async function redirectToHomepage(siteUrl) {
95
- const searchParams = new URLSearchParams(_history.default.location.search);
96
- const params = Object.fromEntries(searchParams.entries());
97
-
98
- if (getNeedsHomepageRedirect(params)) {
99
- const homepageParams = await getHomepageParams(siteUrl);
100
-
101
- if (homepageParams) {
102
- _history.default.replace(homepageParams);
103
- }
104
- }
105
- }
106
- //# sourceMappingURL=redirect-to-homepage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/routes/redirect-to-homepage.js"],"names":["getNeedsHomepageRedirect","params","postType","includes","getHomepageParams","siteUrl","siteSettings","path","Error","show_on_front","showOnFront","page_on_front","frontpageId","postId","template","window","fetch","then","response","ok","status","statusText","json","data","message","id","redirectToHomepage","searchParams","URLSearchParams","history","location","search","Object","fromEntries","entries","homepageParams","replace"],"mappings":";;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AAVA;AACA;AACA;;AAIA;AACA;AACA;AAIA,SAASA,wBAAT,CAAmCC,MAAnC,EAA4C;AAC3C,QAAM;AAAEC,IAAAA;AAAF,MAAeD,MAArB;AACA,SACC,CAAE,4BAAeA,MAAf,CAAF,IACA,CAAE,CAAE,MAAF,EAAU,MAAV,EAAkB,aAAlB,EAAiC,kBAAjC,EAAsDE,QAAtD,CACDD,QADC,CAFH;AAMA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAeE,iBAAf,CAAkCC,OAAlC,EAA4C;AAC3C,QAAMC,YAAY,GAAG,MAAM,uBAAU;AAAEC,IAAAA,IAAI,EAAE;AAAR,GAAV,CAA3B;;AACA,MAAK,CAAED,YAAP,EAAsB;AACrB,UAAM,IAAIE,KAAJ,CAAW,oDAAX,CAAN;AACA;;AAED,QAAM;AACLC,IAAAA,aAAa,EAAEC,WADV;AAELC,IAAAA,aAAa,EAAEC;AAFV,MAGFN,YAHJ,CAN2C,CAW3C;;AACA,MAAKI,WAAW,KAAK,MAArB,EAA8B;AAC7B,WAAO;AACNR,MAAAA,QAAQ,EAAE,MADJ;AAENW,MAAAA,MAAM,EAAED;AAFF,KAAP;AAIA,GAjB0C,CAmB3C;AACA;AACA;;;AACA,QAAME,QAAQ,GAAG,MAAMC,MAAM,CAC3BC,KADqB,CACd,uBAAcX,OAAd,EAAuB;AAAE,yBAAqB;AAAvB,GAAvB,CADc,EAErBY,IAFqB,CAEbC,QAAF,IAAgB;AACtB,QAAK,CAAEA,QAAQ,CAACC,EAAhB,EAAqB;AACpB,YAAM,IAAIX,KAAJ,CACJ,6CAA6CU,QAAQ,CAACE,MAAQ,IAAIF,QAAQ,CAACG,UAAY,EADnF,CAAN;AAGA;;AAED,WAAOH,QAAQ,CAACI,IAAT,EAAP;AACA,GAVqB,EAWrBL,IAXqB,CAWf,QAAgB;AAAA,QAAd;AAAEM,MAAAA;AAAF,KAAc;;AACtB,QAAKA,IAAI,CAACC,OAAV,EAAoB;AACnB,YAAM,IAAIhB,KAAJ,CACJ,0CAA0Ce,IAAI,CAACC,OAAS,EADpD,CAAN;AAGA;;AAED,WAAOD,IAAP;AACA,GAnBqB,CAAvB;;AAqBA,MAAK,EAAET,QAAF,aAAEA,QAAF,eAAEA,QAAQ,CAAEW,EAAZ,CAAL,EAAsB;AACrB,UAAM,IAAIjB,KAAJ,CAAW,oDAAX,CAAN;AACA;;AAED,SAAO;AACNN,IAAAA,QAAQ,EAAE,aADJ;AAENW,IAAAA,MAAM,EAAEC,QAAQ,CAACW;AAFX,GAAP;AAIA;;AAEc,eAAeC,kBAAf,CAAmCrB,OAAnC,EAA6C;AAC3D,QAAMsB,YAAY,GAAG,IAAIC,eAAJ,CAAqBC,iBAAQC,QAAR,CAAiBC,MAAtC,CAArB;AACA,QAAM9B,MAAM,GAAG+B,MAAM,CAACC,WAAP,CAAoBN,YAAY,CAACO,OAAb,EAApB,CAAf;;AAEA,MAAKlC,wBAAwB,CAAEC,MAAF,CAA7B,EAA0C;AACzC,UAAMkC,cAAc,GAAG,MAAM/B,iBAAiB,CAAEC,OAAF,CAA9C;;AAEA,QAAK8B,cAAL,EAAsB;AACrBN,uBAAQO,OAAR,CAAiBD,cAAjB;AACA;AACD;AACD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport history from '../../utils/history';\nimport getIsListPage from '../../utils/get-is-list-page';\n\nfunction getNeedsHomepageRedirect( params ) {\n\tconst { postType } = params;\n\treturn (\n\t\t! getIsListPage( params ) &&\n\t\t! [ 'post', 'page', 'wp_template', 'wp_template_part' ].includes(\n\t\t\tpostType\n\t\t)\n\t);\n}\n\n/**\n * Returns the postType and postId of the default homepage.\n *\n * @param {string} siteUrl The URL of the site.\n * @return {Object} An object containing the postType and postId properties\n * or `undefined` if a homepage could not be found.\n */\nasync function getHomepageParams( siteUrl ) {\n\tconst siteSettings = await apiFetch( { path: '/wp/v2/settings' } );\n\tif ( ! siteSettings ) {\n\t\tthrow new Error( '`getHomepageParams`: unable to load site settings.' );\n\t}\n\n\tconst {\n\t\tshow_on_front: showOnFront,\n\t\tpage_on_front: frontpageId,\n\t} = siteSettings;\n\n\t// If the user has set a page as the homepage, use those details.\n\tif ( showOnFront === 'page' ) {\n\t\treturn {\n\t\t\tpostType: 'page',\n\t\t\tpostId: frontpageId,\n\t\t};\n\t}\n\n\t// Else get the home template.\n\t// This matches the logic in `__experimentalGetTemplateForLink`.\n\t// (packages/core-data/src/resolvers.js)\n\tconst template = await window\n\t\t.fetch( addQueryArgs( siteUrl, { '_wp-find-template': true } ) )\n\t\t.then( ( response ) => {\n\t\t\tif ( ! response.ok ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`\\`getHomepageParams\\`: HTTP status error, ${ response.status } ${ response.statusText }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t} )\n\t\t.then( ( { data } ) => {\n\t\t\tif ( data.message ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`\\`getHomepageParams\\`: REST API error, ${ data.message }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t} );\n\n\tif ( ! template?.id ) {\n\t\tthrow new Error( '`getHomepageParams`: unable to find home template.' );\n\t}\n\n\treturn {\n\t\tpostType: 'wp_template',\n\t\tpostId: template.id,\n\t};\n}\n\nexport default async function redirectToHomepage( siteUrl ) {\n\tconst searchParams = new URLSearchParams( history.location.search );\n\tconst params = Object.fromEntries( searchParams.entries() );\n\n\tif ( getNeedsHomepageRedirect( params ) ) {\n\t\tconst homepageParams = await getHomepageParams( siteUrl );\n\n\t\tif ( homepageParams ) {\n\t\t\thistory.replace( homepageParams );\n\t\t}\n\t}\n}\n"]}
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.PREFERENCES_DEFAULTS = void 0;
7
- const PREFERENCES_DEFAULTS = {
8
- features: {
9
- welcomeGuide: true,
10
- welcomeGuideStyles: true
11
- },
12
- editorMode: 'visual'
13
- };
14
- exports.PREFERENCES_DEFAULTS = PREFERENCES_DEFAULTS;
15
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/store/defaults.js"],"names":["PREFERENCES_DEFAULTS","features","welcomeGuide","welcomeGuideStyles","editorMode"],"mappings":";;;;;;AAAO,MAAMA,oBAAoB,GAAG;AACnCC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,YAAY,EAAE,IADL;AAETC,IAAAA,kBAAkB,EAAE;AAFX,GADyB;AAKnCC,EAAAA,UAAU,EAAE;AALuB,CAA7B","sourcesContent":["export const PREFERENCES_DEFAULTS = {\n\tfeatures: {\n\t\twelcomeGuide: true,\n\t\twelcomeGuideStyles: true,\n\t},\n\teditorMode: 'visual',\n};\n"]}
@@ -1,52 +0,0 @@
1
- import { createElement } from "@wordpress/element";
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import { flow } from 'lodash';
7
- /**
8
- * WordPress dependencies
9
- */
10
-
11
- import { useSelect, useDispatch } from '@wordpress/data';
12
- import { MenuItem } from '@wordpress/components';
13
- import { __ } from '@wordpress/i18n';
14
- import { check } from '@wordpress/icons';
15
- import { speak } from '@wordpress/a11y';
16
- /**
17
- * Internal dependencies
18
- */
19
-
20
- import { store as editSiteStore } from '../../../store';
21
- export default function FeatureToggle(_ref) {
22
- let {
23
- feature,
24
- label,
25
- info,
26
- messageActivated,
27
- messageDeactivated
28
- } = _ref;
29
-
30
- const speakMessage = () => {
31
- if (isActive) {
32
- speak(messageDeactivated || __('Feature deactivated'));
33
- } else {
34
- speak(messageActivated || __('Feature activated'));
35
- }
36
- };
37
-
38
- const isActive = useSelect(select => {
39
- return select(editSiteStore).isFeatureActive(feature);
40
- }, []);
41
- const {
42
- toggleFeature
43
- } = useDispatch(editSiteStore);
44
- return createElement(MenuItem, {
45
- icon: isActive && check,
46
- isSelected: isActive,
47
- onClick: flow(toggleFeature.bind(null, feature), speakMessage),
48
- role: "menuitemcheckbox",
49
- info: info
50
- }, label);
51
- }
52
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/header/feature-toggle/index.js"],"names":["flow","useSelect","useDispatch","MenuItem","__","check","speak","store","editSiteStore","FeatureToggle","feature","label","info","messageActivated","messageDeactivated","speakMessage","isActive","select","isFeatureActive","toggleFeature","bind"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,IAAT,QAAqB,QAArB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,QAAT,QAAyB,uBAAzB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,KAAT,QAAsB,kBAAtB;AACA,SAASC,KAAT,QAAsB,iBAAtB;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,gBAAvC;AAEA,eAAe,SAASC,aAAT,OAMX;AAAA,MANmC;AACtCC,IAAAA,OADsC;AAEtCC,IAAAA,KAFsC;AAGtCC,IAAAA,IAHsC;AAItCC,IAAAA,gBAJsC;AAKtCC,IAAAA;AALsC,GAMnC;;AACH,QAAMC,YAAY,GAAG,MAAM;AAC1B,QAAKC,QAAL,EAAgB;AACfV,MAAAA,KAAK,CAAEQ,kBAAkB,IAAIV,EAAE,CAAE,qBAAF,CAA1B,CAAL;AACA,KAFD,MAEO;AACNE,MAAAA,KAAK,CAAEO,gBAAgB,IAAIT,EAAE,CAAE,mBAAF,CAAxB,CAAL;AACA;AACD,GAND;;AAQA,QAAMY,QAAQ,GAAGf,SAAS,CAAIgB,MAAF,IAAc;AACzC,WAAOA,MAAM,CAAET,aAAF,CAAN,CAAwBU,eAAxB,CAAyCR,OAAzC,CAAP;AACA,GAFyB,EAEvB,EAFuB,CAA1B;AAIA,QAAM;AAAES,IAAAA;AAAF,MAAoBjB,WAAW,CAAEM,aAAF,CAArC;AAEA,SACC,cAAC,QAAD;AACC,IAAA,IAAI,EAAGQ,QAAQ,IAAIX,KADpB;AAEC,IAAA,UAAU,EAAGW,QAFd;AAGC,IAAA,OAAO,EAAGhB,IAAI,CACbmB,aAAa,CAACC,IAAd,CAAoB,IAApB,EAA0BV,OAA1B,CADa,EAEbK,YAFa,CAHf;AAOC,IAAA,IAAI,EAAC,kBAPN;AAQC,IAAA,IAAI,EAAGH;AARR,KAUGD,KAVH,CADD;AAcA","sourcesContent":["/**\n * External dependencies\n */\nimport { flow } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\n\nexport default function FeatureToggle( {\n\tfeature,\n\tlabel,\n\tinfo,\n\tmessageActivated,\n\tmessageDeactivated,\n} ) {\n\tconst speakMessage = () => {\n\t\tif ( isActive ) {\n\t\t\tspeak( messageDeactivated || __( 'Feature deactivated' ) );\n\t\t} else {\n\t\t\tspeak( messageActivated || __( 'Feature activated' ) );\n\t\t}\n\t};\n\n\tconst isActive = useSelect( ( select ) => {\n\t\treturn select( editSiteStore ).isFeatureActive( feature );\n\t}, [] );\n\n\tconst { toggleFeature } = useDispatch( editSiteStore );\n\n\treturn (\n\t\t<MenuItem\n\t\t\ticon={ isActive && check }\n\t\t\tisSelected={ isActive }\n\t\t\tonClick={ flow(\n\t\t\t\ttoggleFeature.bind( null, feature ),\n\t\t\t\tspeakMessage\n\t\t\t) }\n\t\t\trole=\"menuitemcheckbox\"\n\t\t\tinfo={ info }\n\t\t>\n\t\t\t{ label }\n\t\t</MenuItem>\n\t);\n}\n"]}
@@ -1,94 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import apiFetch from '@wordpress/api-fetch';
5
- import { addQueryArgs } from '@wordpress/url';
6
- /**
7
- * Internal dependencies
8
- */
9
-
10
- import history from '../../utils/history';
11
- import getIsListPage from '../../utils/get-is-list-page';
12
-
13
- function getNeedsHomepageRedirect(params) {
14
- const {
15
- postType
16
- } = params;
17
- return !getIsListPage(params) && !['post', 'page', 'wp_template', 'wp_template_part'].includes(postType);
18
- }
19
- /**
20
- * Returns the postType and postId of the default homepage.
21
- *
22
- * @param {string} siteUrl The URL of the site.
23
- * @return {Object} An object containing the postType and postId properties
24
- * or `undefined` if a homepage could not be found.
25
- */
26
-
27
-
28
- async function getHomepageParams(siteUrl) {
29
- const siteSettings = await apiFetch({
30
- path: '/wp/v2/settings'
31
- });
32
-
33
- if (!siteSettings) {
34
- throw new Error('`getHomepageParams`: unable to load site settings.');
35
- }
36
-
37
- const {
38
- show_on_front: showOnFront,
39
- page_on_front: frontpageId
40
- } = siteSettings; // If the user has set a page as the homepage, use those details.
41
-
42
- if (showOnFront === 'page') {
43
- return {
44
- postType: 'page',
45
- postId: frontpageId
46
- };
47
- } // Else get the home template.
48
- // This matches the logic in `__experimentalGetTemplateForLink`.
49
- // (packages/core-data/src/resolvers.js)
50
-
51
-
52
- const template = await window.fetch(addQueryArgs(siteUrl, {
53
- '_wp-find-template': true
54
- })).then(response => {
55
- if (!response.ok) {
56
- throw new Error(`\`getHomepageParams\`: HTTP status error, ${response.status} ${response.statusText}`);
57
- }
58
-
59
- return response.json();
60
- }).then(_ref => {
61
- let {
62
- data
63
- } = _ref;
64
-
65
- if (data.message) {
66
- throw new Error(`\`getHomepageParams\`: REST API error, ${data.message}`);
67
- }
68
-
69
- return data;
70
- });
71
-
72
- if (!(template !== null && template !== void 0 && template.id)) {
73
- throw new Error('`getHomepageParams`: unable to find home template.');
74
- }
75
-
76
- return {
77
- postType: 'wp_template',
78
- postId: template.id
79
- };
80
- }
81
-
82
- export default async function redirectToHomepage(siteUrl) {
83
- const searchParams = new URLSearchParams(history.location.search);
84
- const params = Object.fromEntries(searchParams.entries());
85
-
86
- if (getNeedsHomepageRedirect(params)) {
87
- const homepageParams = await getHomepageParams(siteUrl);
88
-
89
- if (homepageParams) {
90
- history.replace(homepageParams);
91
- }
92
- }
93
- }
94
- //# sourceMappingURL=redirect-to-homepage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/routes/redirect-to-homepage.js"],"names":["apiFetch","addQueryArgs","history","getIsListPage","getNeedsHomepageRedirect","params","postType","includes","getHomepageParams","siteUrl","siteSettings","path","Error","show_on_front","showOnFront","page_on_front","frontpageId","postId","template","window","fetch","then","response","ok","status","statusText","json","data","message","id","redirectToHomepage","searchParams","URLSearchParams","location","search","Object","fromEntries","entries","homepageParams","replace"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,sBAArB;AACA,SAASC,YAAT,QAA6B,gBAA7B;AAEA;AACA;AACA;;AACA,OAAOC,OAAP,MAAoB,qBAApB;AACA,OAAOC,aAAP,MAA0B,8BAA1B;;AAEA,SAASC,wBAAT,CAAmCC,MAAnC,EAA4C;AAC3C,QAAM;AAAEC,IAAAA;AAAF,MAAeD,MAArB;AACA,SACC,CAAEF,aAAa,CAAEE,MAAF,CAAf,IACA,CAAE,CAAE,MAAF,EAAU,MAAV,EAAkB,aAAlB,EAAiC,kBAAjC,EAAsDE,QAAtD,CACDD,QADC,CAFH;AAMA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,eAAeE,iBAAf,CAAkCC,OAAlC,EAA4C;AAC3C,QAAMC,YAAY,GAAG,MAAMV,QAAQ,CAAE;AAAEW,IAAAA,IAAI,EAAE;AAAR,GAAF,CAAnC;;AACA,MAAK,CAAED,YAAP,EAAsB;AACrB,UAAM,IAAIE,KAAJ,CAAW,oDAAX,CAAN;AACA;;AAED,QAAM;AACLC,IAAAA,aAAa,EAAEC,WADV;AAELC,IAAAA,aAAa,EAAEC;AAFV,MAGFN,YAHJ,CAN2C,CAW3C;;AACA,MAAKI,WAAW,KAAK,MAArB,EAA8B;AAC7B,WAAO;AACNR,MAAAA,QAAQ,EAAE,MADJ;AAENW,MAAAA,MAAM,EAAED;AAFF,KAAP;AAIA,GAjB0C,CAmB3C;AACA;AACA;;;AACA,QAAME,QAAQ,GAAG,MAAMC,MAAM,CAC3BC,KADqB,CACdnB,YAAY,CAAEQ,OAAF,EAAW;AAAE,yBAAqB;AAAvB,GAAX,CADE,EAErBY,IAFqB,CAEbC,QAAF,IAAgB;AACtB,QAAK,CAAEA,QAAQ,CAACC,EAAhB,EAAqB;AACpB,YAAM,IAAIX,KAAJ,CACJ,6CAA6CU,QAAQ,CAACE,MAAQ,IAAIF,QAAQ,CAACG,UAAY,EADnF,CAAN;AAGA;;AAED,WAAOH,QAAQ,CAACI,IAAT,EAAP;AACA,GAVqB,EAWrBL,IAXqB,CAWf,QAAgB;AAAA,QAAd;AAAEM,MAAAA;AAAF,KAAc;;AACtB,QAAKA,IAAI,CAACC,OAAV,EAAoB;AACnB,YAAM,IAAIhB,KAAJ,CACJ,0CAA0Ce,IAAI,CAACC,OAAS,EADpD,CAAN;AAGA;;AAED,WAAOD,IAAP;AACA,GAnBqB,CAAvB;;AAqBA,MAAK,EAAET,QAAF,aAAEA,QAAF,eAAEA,QAAQ,CAAEW,EAAZ,CAAL,EAAsB;AACrB,UAAM,IAAIjB,KAAJ,CAAW,oDAAX,CAAN;AACA;;AAED,SAAO;AACNN,IAAAA,QAAQ,EAAE,aADJ;AAENW,IAAAA,MAAM,EAAEC,QAAQ,CAACW;AAFX,GAAP;AAIA;;AAED,eAAe,eAAeC,kBAAf,CAAmCrB,OAAnC,EAA6C;AAC3D,QAAMsB,YAAY,GAAG,IAAIC,eAAJ,CAAqB9B,OAAO,CAAC+B,QAAR,CAAiBC,MAAtC,CAArB;AACA,QAAM7B,MAAM,GAAG8B,MAAM,CAACC,WAAP,CAAoBL,YAAY,CAACM,OAAb,EAApB,CAAf;;AAEA,MAAKjC,wBAAwB,CAAEC,MAAF,CAA7B,EAA0C;AACzC,UAAMiC,cAAc,GAAG,MAAM9B,iBAAiB,CAAEC,OAAF,CAA9C;;AAEA,QAAK6B,cAAL,EAAsB;AACrBpC,MAAAA,OAAO,CAACqC,OAAR,CAAiBD,cAAjB;AACA;AACD;AACD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport history from '../../utils/history';\nimport getIsListPage from '../../utils/get-is-list-page';\n\nfunction getNeedsHomepageRedirect( params ) {\n\tconst { postType } = params;\n\treturn (\n\t\t! getIsListPage( params ) &&\n\t\t! [ 'post', 'page', 'wp_template', 'wp_template_part' ].includes(\n\t\t\tpostType\n\t\t)\n\t);\n}\n\n/**\n * Returns the postType and postId of the default homepage.\n *\n * @param {string} siteUrl The URL of the site.\n * @return {Object} An object containing the postType and postId properties\n * or `undefined` if a homepage could not be found.\n */\nasync function getHomepageParams( siteUrl ) {\n\tconst siteSettings = await apiFetch( { path: '/wp/v2/settings' } );\n\tif ( ! siteSettings ) {\n\t\tthrow new Error( '`getHomepageParams`: unable to load site settings.' );\n\t}\n\n\tconst {\n\t\tshow_on_front: showOnFront,\n\t\tpage_on_front: frontpageId,\n\t} = siteSettings;\n\n\t// If the user has set a page as the homepage, use those details.\n\tif ( showOnFront === 'page' ) {\n\t\treturn {\n\t\t\tpostType: 'page',\n\t\t\tpostId: frontpageId,\n\t\t};\n\t}\n\n\t// Else get the home template.\n\t// This matches the logic in `__experimentalGetTemplateForLink`.\n\t// (packages/core-data/src/resolvers.js)\n\tconst template = await window\n\t\t.fetch( addQueryArgs( siteUrl, { '_wp-find-template': true } ) )\n\t\t.then( ( response ) => {\n\t\t\tif ( ! response.ok ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`\\`getHomepageParams\\`: HTTP status error, ${ response.status } ${ response.statusText }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn response.json();\n\t\t} )\n\t\t.then( ( { data } ) => {\n\t\t\tif ( data.message ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`\\`getHomepageParams\\`: REST API error, ${ data.message }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t} );\n\n\tif ( ! template?.id ) {\n\t\tthrow new Error( '`getHomepageParams`: unable to find home template.' );\n\t}\n\n\treturn {\n\t\tpostType: 'wp_template',\n\t\tpostId: template.id,\n\t};\n}\n\nexport default async function redirectToHomepage( siteUrl ) {\n\tconst searchParams = new URLSearchParams( history.location.search );\n\tconst params = Object.fromEntries( searchParams.entries() );\n\n\tif ( getNeedsHomepageRedirect( params ) ) {\n\t\tconst homepageParams = await getHomepageParams( siteUrl );\n\n\t\tif ( homepageParams ) {\n\t\t\thistory.replace( homepageParams );\n\t\t}\n\t}\n}\n"]}