@wordpress/edit-post 7.26.0 → 7.27.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/header/index.js +2 -2
  3. package/build/components/header/index.js.map +1 -1
  4. package/build/components/layout/index.native.js +1 -3
  5. package/build/components/layout/index.native.js.map +1 -1
  6. package/build/components/meta-boxes/index.js +3 -2
  7. package/build/components/meta-boxes/index.js.map +1 -1
  8. package/build/components/preferences-modal/{options/enable-custom-fields.js → enable-custom-fields.js} +10 -2
  9. package/build/components/preferences-modal/enable-custom-fields.js.map +1 -0
  10. package/build/components/preferences-modal/{options/enable-panel.js → enable-panel.js} +11 -2
  11. package/build/components/preferences-modal/enable-panel.js.map +1 -0
  12. package/build/components/preferences-modal/{options/enable-publish-sidebar.js → enable-publish-sidebar.js} +11 -2
  13. package/build/components/preferences-modal/enable-publish-sidebar.js.map +1 -0
  14. package/build/components/preferences-modal/index.js +31 -149
  15. package/build/components/preferences-modal/index.js.map +1 -1
  16. package/build/components/preferences-modal/meta-boxes-section.js +11 -5
  17. package/build/components/preferences-modal/meta-boxes-section.js.map +1 -1
  18. package/build/components/sidebar/plugin-document-setting-panel/index.js +5 -2
  19. package/build/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  20. package/build/editor.js +3 -26
  21. package/build/editor.js.map +1 -1
  22. package/build/editor.native.js +4 -28
  23. package/build/editor.native.js.map +1 -1
  24. package/build/hooks/commands/use-common-commands.js +48 -8
  25. package/build/hooks/commands/use-common-commands.js.map +1 -1
  26. package/build/index.js +2 -2
  27. package/build/index.js.map +1 -1
  28. package/build/index.native.js +1 -1
  29. package/build/index.native.js.map +1 -1
  30. package/build/store/actions.js +11 -10
  31. package/build/store/actions.js.map +1 -1
  32. package/build/store/selectors.js +24 -6
  33. package/build/store/selectors.js.map +1 -1
  34. package/build-module/components/header/index.js +2 -2
  35. package/build-module/components/header/index.js.map +1 -1
  36. package/build-module/components/layout/index.native.js +1 -3
  37. package/build-module/components/layout/index.native.js.map +1 -1
  38. package/build-module/components/meta-boxes/index.js +3 -2
  39. package/build-module/components/meta-boxes/index.js.map +1 -1
  40. package/build-module/components/preferences-modal/{options/enable-custom-fields.js → enable-custom-fields.js} +10 -2
  41. package/build-module/components/preferences-modal/enable-custom-fields.js.map +1 -0
  42. package/build-module/components/preferences-modal/{options/enable-panel.js → enable-panel.js} +10 -2
  43. package/build-module/components/preferences-modal/enable-panel.js.map +1 -0
  44. package/build-module/components/preferences-modal/{options/enable-publish-sidebar.js → enable-publish-sidebar.js} +10 -2
  45. package/build-module/components/preferences-modal/enable-publish-sidebar.js.map +1 -0
  46. package/build-module/components/preferences-modal/index.js +31 -150
  47. package/build-module/components/preferences-modal/index.js.map +1 -1
  48. package/build-module/components/preferences-modal/meta-boxes-section.js +7 -2
  49. package/build-module/components/preferences-modal/meta-boxes-section.js.map +1 -1
  50. package/build-module/components/sidebar/plugin-document-setting-panel/index.js +5 -2
  51. package/build-module/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  52. package/build-module/editor.js +3 -26
  53. package/build-module/editor.js.map +1 -1
  54. package/build-module/editor.native.js +5 -29
  55. package/build-module/editor.native.js.map +1 -1
  56. package/build-module/hooks/commands/use-common-commands.js +49 -9
  57. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  58. package/build-module/index.js +2 -2
  59. package/build-module/index.js.map +1 -1
  60. package/build-module/index.native.js +1 -1
  61. package/build-module/index.native.js.map +1 -1
  62. package/build-module/store/actions.js +11 -10
  63. package/build-module/store/actions.js.map +1 -1
  64. package/build-module/store/selectors.js +24 -6
  65. package/build-module/store/selectors.js.map +1 -1
  66. package/build-style/classic-rtl.css +1 -1
  67. package/build-style/classic.css +1 -1
  68. package/build-style/style-rtl.css +16 -182
  69. package/build-style/style.css +16 -182
  70. package/package.json +32 -32
  71. package/src/components/header/index.js +2 -4
  72. package/src/components/header/style.scss +13 -4
  73. package/src/components/layout/index.native.js +1 -4
  74. package/src/components/meta-boxes/index.js +4 -2
  75. package/src/components/preferences-modal/{options/enable-custom-fields.js → enable-custom-fields.js} +10 -3
  76. package/src/components/preferences-modal/{options/enable-panel.js → enable-panel.js} +9 -2
  77. package/src/components/preferences-modal/{options/enable-publish-sidebar.js → enable-publish-sidebar.js} +9 -2
  78. package/src/components/preferences-modal/index.js +44 -267
  79. package/src/components/preferences-modal/meta-boxes-section.js +6 -2
  80. package/src/components/preferences-modal/{options/test → test}/__snapshots__/enable-custom-fields.js.snap +4 -4
  81. package/src/components/preferences-modal/test/__snapshots__/meta-boxes-section.js.snap +18 -18
  82. package/src/components/sidebar/plugin-document-setting-panel/index.js +6 -2
  83. package/src/editor.js +55 -85
  84. package/src/editor.native.js +4 -33
  85. package/src/hooks/commands/use-common-commands.js +77 -7
  86. package/src/index.js +2 -2
  87. package/src/index.native.js +1 -1
  88. package/src/store/actions.js +14 -33
  89. package/src/store/selectors.js +52 -26
  90. package/src/store/test/actions.js +9 -9
  91. package/src/style.scss +0 -1
  92. package/build/components/block-manager/category.js +0 -105
  93. package/build/components/block-manager/category.js.map +0 -1
  94. package/build/components/block-manager/checklist.js +0 -35
  95. package/build/components/block-manager/checklist.js.map +0 -1
  96. package/build/components/block-manager/index.js +0 -127
  97. package/build/components/block-manager/index.js.map +0 -1
  98. package/build/components/preferences-modal/options/enable-custom-fields.js.map +0 -1
  99. package/build/components/preferences-modal/options/enable-feature.js +0 -36
  100. package/build/components/preferences-modal/options/enable-feature.js.map +0 -1
  101. package/build/components/preferences-modal/options/enable-panel.js.map +0 -1
  102. package/build/components/preferences-modal/options/enable-plugin-document-setting-panel.js +0 -32
  103. package/build/components/preferences-modal/options/enable-plugin-document-setting-panel.js.map +0 -1
  104. package/build/components/preferences-modal/options/enable-publish-sidebar.js.map +0 -1
  105. package/build/components/preferences-modal/options/index.js +0 -42
  106. package/build/components/preferences-modal/options/index.js.map +0 -1
  107. package/build-module/components/block-manager/category.js +0 -96
  108. package/build-module/components/block-manager/category.js.map +0 -1
  109. package/build-module/components/block-manager/checklist.js +0 -27
  110. package/build-module/components/block-manager/checklist.js.map +0 -1
  111. package/build-module/components/block-manager/index.js +0 -118
  112. package/build-module/components/block-manager/index.js.map +0 -1
  113. package/build-module/components/preferences-modal/options/enable-custom-fields.js.map +0 -1
  114. package/build-module/components/preferences-modal/options/enable-feature.js +0 -29
  115. package/build-module/components/preferences-modal/options/enable-feature.js.map +0 -1
  116. package/build-module/components/preferences-modal/options/enable-panel.js.map +0 -1
  117. package/build-module/components/preferences-modal/options/enable-plugin-document-setting-panel.js +0 -24
  118. package/build-module/components/preferences-modal/options/enable-plugin-document-setting-panel.js.map +0 -1
  119. package/build-module/components/preferences-modal/options/enable-publish-sidebar.js.map +0 -1
  120. package/build-module/components/preferences-modal/options/index.js +0 -6
  121. package/build-module/components/preferences-modal/options/index.js.map +0 -1
  122. package/src/components/block-manager/category.js +0 -94
  123. package/src/components/block-manager/checklist.js +0 -30
  124. package/src/components/block-manager/index.js +0 -158
  125. package/src/components/block-manager/style.scss +0 -82
  126. package/src/components/preferences-modal/options/enable-feature.js +0 -31
  127. package/src/components/preferences-modal/options/enable-plugin-document-setting-panel.js +0 -23
  128. package/src/components/preferences-modal/options/index.js +0 -5
  129. /package/src/components/preferences-modal/{options/test → test}/enable-custom-fields.js +0 -0
package/src/editor.js CHANGED
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { store as blocksStore } from '@wordpress/blocks';
5
4
  import { useSelect, useDispatch } from '@wordpress/data';
6
5
  import {
7
6
  ErrorBoundary,
@@ -38,68 +37,61 @@ function Editor( {
38
37
  initialPostType
39
38
  );
40
39
 
41
- const {
42
- hasInlineToolbar,
43
- post,
44
- preferredStyleVariations,
45
- hiddenBlockTypes,
46
- blockTypes,
47
- template,
48
- } = useSelect(
49
- ( select ) => {
50
- const {
51
- isFeatureActive,
52
- getEditedPostTemplate,
53
- getHiddenBlockTypes,
54
- } = select( editPostStore );
55
- const { getEntityRecord, getPostType, getEntityRecords, canUser } =
56
- select( coreStore );
57
- const { getEditorSettings } = select( editorStore );
58
- const { getBlockTypes } = select( blocksStore );
59
- const isTemplate = [ 'wp_template', 'wp_template_part' ].includes(
60
- currentPost.postType
61
- );
62
- // Ideally the initializeEditor function should be called using the ID of the REST endpoint.
63
- // to avoid the special case.
64
- let postObject;
65
- if ( isTemplate ) {
66
- const posts = getEntityRecords(
67
- 'postType',
68
- currentPost.postType,
69
- {
70
- wp_id: currentPost.postId,
71
- }
72
- );
73
- postObject = posts?.[ 0 ];
74
- } else {
75
- postObject = getEntityRecord(
76
- 'postType',
77
- currentPost.postType,
78
- currentPost.postId
79
- );
80
- }
81
- const supportsTemplateMode =
82
- getEditorSettings().supportsTemplateMode;
83
- const isViewable =
84
- getPostType( currentPost.postType )?.viewable ?? false;
85
- const canEditTemplate = canUser( 'create', 'templates' );
86
- return {
87
- hasInlineToolbar: isFeatureActive( 'inlineToolbar' ),
88
- preferredStyleVariations: select( preferencesStore ).get(
89
- 'core/edit-post',
90
- 'preferredStyleVariations'
91
- ),
92
- hiddenBlockTypes: getHiddenBlockTypes(),
93
- blockTypes: getBlockTypes(),
94
- template:
95
- supportsTemplateMode && isViewable && canEditTemplate
96
- ? getEditedPostTemplate()
97
- : null,
98
- post: postObject,
99
- };
100
- },
101
- [ currentPost.postType, currentPost.postId ]
102
- );
40
+ const { hasInlineToolbar, post, preferredStyleVariations, template } =
41
+ useSelect(
42
+ ( select ) => {
43
+ const { isFeatureActive, getEditedPostTemplate } =
44
+ select( editPostStore );
45
+ const {
46
+ getEntityRecord,
47
+ getPostType,
48
+ getEntityRecords,
49
+ canUser,
50
+ } = select( coreStore );
51
+ const { getEditorSettings } = select( editorStore );
52
+ const isTemplate = [
53
+ 'wp_template',
54
+ 'wp_template_part',
55
+ ].includes( currentPost.postType );
56
+ // Ideally the initializeEditor function should be called using the ID of the REST endpoint.
57
+ // to avoid the special case.
58
+ let postObject;
59
+ if ( isTemplate ) {
60
+ const posts = getEntityRecords(
61
+ 'postType',
62
+ currentPost.postType,
63
+ {
64
+ wp_id: currentPost.postId,
65
+ }
66
+ );
67
+ postObject = posts?.[ 0 ];
68
+ } else {
69
+ postObject = getEntityRecord(
70
+ 'postType',
71
+ currentPost.postType,
72
+ currentPost.postId
73
+ );
74
+ }
75
+ const supportsTemplateMode =
76
+ getEditorSettings().supportsTemplateMode;
77
+ const isViewable =
78
+ getPostType( currentPost.postType )?.viewable ?? false;
79
+ const canEditTemplate = canUser( 'create', 'templates' );
80
+ return {
81
+ hasInlineToolbar: isFeatureActive( 'inlineToolbar' ),
82
+ preferredStyleVariations: select( preferencesStore ).get(
83
+ 'core/edit-post',
84
+ 'preferredStyleVariations'
85
+ ),
86
+ template:
87
+ supportsTemplateMode && isViewable && canEditTemplate
88
+ ? getEditedPostTemplate()
89
+ : null,
90
+ post: postObject,
91
+ };
92
+ },
93
+ [ currentPost.postType, currentPost.postId ]
94
+ );
103
95
 
104
96
  const { updatePreferredStyleVariations } = useDispatch( editPostStore );
105
97
 
@@ -113,33 +105,11 @@ function Editor( {
113
105
  onChange: updatePreferredStyleVariations,
114
106
  },
115
107
  hasInlineToolbar,
116
-
117
- // Keep a reference of the `allowedBlockTypes` from the server to handle use cases
118
- // where we need to differentiate if a block is disabled by the user or some plugin.
119
- defaultAllowedBlockTypes: settings.allowedBlockTypes,
120
108
  };
121
-
122
- // Omit hidden block types if exists and non-empty.
123
- if ( hiddenBlockTypes.length > 0 ) {
124
- // Defer to passed setting for `allowedBlockTypes` if provided as
125
- // anything other than `true` (where `true` is equivalent to allow
126
- // all block types).
127
- const defaultAllowedBlockTypes =
128
- true === settings.allowedBlockTypes
129
- ? blockTypes.map( ( { name } ) => name )
130
- : settings.allowedBlockTypes || [];
131
-
132
- result.allowedBlockTypes = defaultAllowedBlockTypes.filter(
133
- ( type ) => ! hiddenBlockTypes.includes( type )
134
- );
135
- }
136
-
137
109
  return result;
138
110
  }, [
139
111
  settings,
140
112
  hasInlineToolbar,
141
- hiddenBlockTypes,
142
- blockTypes,
143
113
  preferredStyleVariations,
144
114
  updatePreferredStyleVariations,
145
115
  getPostLinkProps,
@@ -10,7 +10,7 @@ import { GestureHandlerRootView } from 'react-native-gesture-handler';
10
10
  */
11
11
  import { Component } from '@wordpress/element';
12
12
  import { EditorProvider } from '@wordpress/editor';
13
- import { parse, serialize, store as blocksStore } from '@wordpress/blocks';
13
+ import { parse, serialize } from '@wordpress/blocks';
14
14
  import { withDispatch, withSelect } from '@wordpress/data';
15
15
  import { compose } from '@wordpress/compose';
16
16
  import {
@@ -47,32 +47,12 @@ class Editor extends Component {
47
47
  this.setTitleRef = this.setTitleRef.bind( this );
48
48
  }
49
49
 
50
- getEditorSettings( settings, hiddenBlockTypes, blockTypes ) {
50
+ getEditorSettings( settings ) {
51
51
  settings = {
52
52
  ...settings,
53
53
  isRTL: I18nManager.isRTL,
54
54
  };
55
55
 
56
- // Omit hidden block types if exists and non-empty.
57
- if ( hiddenBlockTypes.length > 0 ) {
58
- if ( settings.allowedBlockTypes === undefined ) {
59
- // If no specific flags for allowedBlockTypes are set, assume `true`
60
- // meaning allow all block types.
61
- settings.allowedBlockTypes = true;
62
- }
63
- // Defer to passed setting for `allowedBlockTypes` if provided as
64
- // anything other than `true` (where `true` is equivalent to allow
65
- // all block types).
66
- const defaultAllowedBlockTypes =
67
- true === settings.allowedBlockTypes
68
- ? blockTypes.map( ( { name } ) => name )
69
- : settings.allowedBlockTypes || [];
70
-
71
- settings.allowedBlockTypes = defaultAllowedBlockTypes.filter(
72
- ( type ) => ! hiddenBlockTypes.includes( type )
73
- );
74
- }
75
-
76
56
  return settings;
77
57
  }
78
58
 
@@ -127,8 +107,6 @@ class Editor extends Component {
127
107
  const {
128
108
  settings,
129
109
  initialEdits,
130
- hiddenBlockTypes,
131
- blockTypes,
132
110
  post,
133
111
  postId,
134
112
  postType,
@@ -137,11 +115,7 @@ class Editor extends Component {
137
115
  ...props
138
116
  } = this.props;
139
117
 
140
- const editorSettings = this.getEditorSettings(
141
- settings,
142
- hiddenBlockTypes,
143
- blockTypes
144
- );
118
+ const editorSettings = this.getEditorSettings( settings );
145
119
 
146
120
  const normalizedPost = post || {
147
121
  id: postId,
@@ -180,13 +154,10 @@ class Editor extends Component {
180
154
 
181
155
  export default compose( [
182
156
  withSelect( ( select ) => {
183
- const { getEditorMode, getHiddenBlockTypes } = select( editPostStore );
184
- const { getBlockTypes } = select( blocksStore );
157
+ const { getEditorMode } = select( editPostStore );
185
158
 
186
159
  return {
187
160
  mode: getEditorMode(),
188
- hiddenBlockTypes: getHiddenBlockTypes(),
189
- blockTypes: getBlockTypes(),
190
161
  };
191
162
  } ),
192
163
  withDispatch( ( dispatch ) => {
@@ -9,7 +9,7 @@ import {
9
9
  drawerRight,
10
10
  blockDefault,
11
11
  keyboard,
12
- desktop,
12
+ fullscreen,
13
13
  listView,
14
14
  external,
15
15
  formatListBullets,
@@ -39,13 +39,17 @@ export default function useCommonCommands() {
39
39
  editorMode,
40
40
  activeSidebar,
41
41
  isListViewOpen,
42
+ isFullscreen,
42
43
  isPublishSidebarEnabled,
43
44
  showBlockBreadcrumbs,
44
45
  isDistractionFree,
46
+ isTopToolbar,
47
+ isFocusMode,
45
48
  } = useSelect( ( select ) => {
46
49
  const { get } = select( preferencesStore );
47
50
  const { getEditorMode } = select( editPostStore );
48
51
  const { isListViewOpened } = select( editorStore );
52
+
49
53
  return {
50
54
  activeSidebar: select( interfaceStore ).getActiveComplementaryArea(
51
55
  editPostStore.name
@@ -56,6 +60,9 @@ export default function useCommonCommands() {
56
60
  select( editorStore ).isPublishSidebarEnabled(),
57
61
  showBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),
58
62
  isDistractionFree: get( 'core', 'distractionFree' ),
63
+ isFocusMode: get( 'core', 'focusMode' ),
64
+ isTopToolbar: get( 'core', 'fixedToolbar' ),
65
+ isFullscreen: get( 'core/edit-post', 'fullscreenMode' ),
59
66
  };
60
67
  }, [] );
61
68
  const { toggle } = useDispatch( preferencesStore );
@@ -94,7 +101,9 @@ export default function useCommonCommands() {
94
101
 
95
102
  useCommand( {
96
103
  name: 'core/toggle-distraction-free',
97
- label: __( 'Toggle distraction free' ),
104
+ label: isDistractionFree
105
+ ? __( 'Exit Distraction Free' )
106
+ : __( 'Enter Distraction Free ' ),
98
107
  callback: ( { close } ) => {
99
108
  toggleDistractionFree();
100
109
  close();
@@ -103,30 +112,71 @@ export default function useCommonCommands() {
103
112
 
104
113
  useCommand( {
105
114
  name: 'core/toggle-spotlight-mode',
106
- label: __( 'Toggle spotlight mode' ),
115
+ label: __( 'Toggle spotlight' ),
107
116
  callback: ( { close } ) => {
108
117
  toggle( 'core', 'focusMode' );
109
118
  close();
119
+ createInfoNotice(
120
+ isFocusMode ? __( 'Spotlight off.' ) : __( 'Spotlight on.' ),
121
+ {
122
+ id: 'core/edit-post/toggle-spotlight-mode/notice',
123
+ type: 'snackbar',
124
+ actions: [
125
+ {
126
+ label: __( 'Undo' ),
127
+ onClick: () => {
128
+ toggle( 'core', 'focusMode' );
129
+ },
130
+ },
131
+ ],
132
+ }
133
+ );
110
134
  },
111
135
  } );
112
136
 
113
137
  useCommand( {
114
138
  name: 'core/toggle-fullscreen-mode',
115
- label: __( 'Toggle fullscreen mode' ),
116
- icon: desktop,
139
+ label: isFullscreen
140
+ ? __( 'Exit fullscreen' )
141
+ : __( 'Enter fullscreen' ),
142
+ icon: fullscreen,
117
143
  callback: ( { close } ) => {
118
144
  toggle( 'core/edit-post', 'fullscreenMode' );
119
145
  close();
146
+ createInfoNotice(
147
+ isFullscreen ? __( 'Fullscreen off.' ) : __( 'Fullscreen on.' ),
148
+ {
149
+ id: 'core/edit-post/toggle-fullscreen-mode/notice',
150
+ type: 'snackbar',
151
+ actions: [
152
+ {
153
+ label: __( 'Undo' ),
154
+ onClick: () => {
155
+ toggle( 'core/edit-post', 'fullscreenMode' );
156
+ },
157
+ },
158
+ ],
159
+ }
160
+ );
120
161
  },
121
162
  } );
122
163
 
123
164
  useCommand( {
124
165
  name: 'core/toggle-list-view',
125
- label: __( 'Toggle list view' ),
166
+ label: isListViewOpen
167
+ ? __( 'Close List View' )
168
+ : __( 'Open List View' ),
126
169
  icon: listView,
127
170
  callback: ( { close } ) => {
128
171
  setIsListViewOpened( ! isListViewOpen );
129
172
  close();
173
+ createInfoNotice(
174
+ isListViewOpen ? __( 'List View off.' ) : __( 'List View on.' ),
175
+ {
176
+ id: 'core/edit-post/toggle-list-view/notice',
177
+ type: 'snackbar',
178
+ }
179
+ );
130
180
  },
131
181
  } );
132
182
 
@@ -139,12 +189,32 @@ export default function useCommonCommands() {
139
189
  toggleDistractionFree();
140
190
  }
141
191
  close();
192
+ createInfoNotice(
193
+ isTopToolbar
194
+ ? __( 'Top toolbar off.' )
195
+ : __( 'Top toolbar on.' ),
196
+ {
197
+ id: 'core/edit-post/toggle-top-toolbar/notice',
198
+ type: 'snackbar',
199
+ actions: [
200
+ {
201
+ label: __( 'Undo' ),
202
+ onClick: () => {
203
+ toggle( 'core', 'fixedToolbar' );
204
+ },
205
+ },
206
+ ],
207
+ }
208
+ );
142
209
  },
143
210
  } );
144
211
 
145
212
  useCommand( {
146
213
  name: 'core/toggle-code-editor',
147
- label: __( 'Toggle code editor' ),
214
+ label:
215
+ editorMode === 'visual'
216
+ ? __( 'Open code editor' )
217
+ : __( 'Exit code editor' ),
148
218
  icon: code,
149
219
  callback: ( { close } ) => {
150
220
  switchEditorMode( editorMode === 'visual' ? 'text' : 'visual' );
package/src/index.js CHANGED
@@ -53,9 +53,7 @@ export function initializeEditor(
53
53
  const root = createRoot( target );
54
54
 
55
55
  dispatch( preferencesStore ).setDefaults( 'core/edit-post', {
56
- editorMode: 'visual',
57
56
  fullscreenMode: true,
58
- hiddenBlockTypes: [],
59
57
  isPublishSidebarEnabled: true,
60
58
  preferredStyleVariations: {},
61
59
  themeStyles: true,
@@ -65,7 +63,9 @@ export function initializeEditor(
65
63
 
66
64
  dispatch( preferencesStore ).setDefaults( 'core', {
67
65
  allowRightClickOverrides: true,
66
+ editorMode: 'visual',
68
67
  fixedToolbar: false,
68
+ hiddenBlockTypes: [],
69
69
  inactivePanels: [],
70
70
  openPanels: [ 'post-status' ],
71
71
  showBlockBreadcrumbs: true,
@@ -24,7 +24,6 @@ export function initializeEditor( id, postType, postId ) {
24
24
  dispatch( preferencesStore ).setDefaults( 'core/edit-post', {
25
25
  editorMode: 'visual',
26
26
  fullscreenMode: true,
27
- hiddenBlockTypes: [],
28
27
  inactivePanels: [],
29
28
  isPublishSidebarEnabled: true,
30
29
  openPanels: [ 'post-status' ],
@@ -32,6 +31,7 @@ export function initializeEditor( id, postType, postId ) {
32
31
  welcomeGuide: true,
33
32
  } );
34
33
  dispatch( preferencesStore ).setDefaults( 'core', {
34
+ hiddenBlockTypes: [],
35
35
  inactivePanels: [],
36
36
  openPanels: [ 'post-status' ],
37
37
  } );
@@ -17,6 +17,7 @@ import { addFilter } from '@wordpress/hooks';
17
17
  */
18
18
  import { getMetaBoxContainer } from '../utils/meta-boxes';
19
19
  import { store as editPostStore } from '.';
20
+ import { unlock } from '../lock-unlock';
20
21
 
21
22
  /**
22
23
  * Returns an action object used in signalling that the user opened an editor sidebar.
@@ -194,9 +195,7 @@ export const toggleFeature =
194
195
  export const switchEditorMode =
195
196
  ( mode ) =>
196
197
  ( { dispatch, registry } ) => {
197
- registry
198
- .dispatch( preferencesStore )
199
- .set( 'core/edit-post', 'editorMode', mode );
198
+ registry.dispatch( preferencesStore ).set( 'core', 'editorMode', mode );
200
199
 
201
200
  // Unselect blocks when we switch to the code editor.
202
201
  if ( mode !== 'visual' ) {
@@ -289,21 +288,7 @@ export const updatePreferredStyleVariations =
289
288
  export const showBlockTypes =
290
289
  ( blockNames ) =>
291
290
  ( { registry } ) => {
292
- const existingBlockNames =
293
- registry
294
- .select( preferencesStore )
295
- .get( 'core/edit-post', 'hiddenBlockTypes' ) ?? [];
296
-
297
- const newBlockNames = existingBlockNames.filter(
298
- ( type ) =>
299
- ! (
300
- Array.isArray( blockNames ) ? blockNames : [ blockNames ]
301
- ).includes( type )
302
- );
303
-
304
- registry
305
- .dispatch( preferencesStore )
306
- .set( 'core/edit-post', 'hiddenBlockTypes', newBlockNames );
291
+ unlock( registry.dispatch( editorStore ) ).showBlockTypes( blockNames );
307
292
  };
308
293
 
309
294
  /**
@@ -314,21 +299,7 @@ export const showBlockTypes =
314
299
  export const hideBlockTypes =
315
300
  ( blockNames ) =>
316
301
  ( { registry } ) => {
317
- const existingBlockNames =
318
- registry
319
- .select( preferencesStore )
320
- .get( 'core/edit-post', 'hiddenBlockTypes' ) ?? [];
321
-
322
- const mergedBlockNames = new Set( [
323
- ...existingBlockNames,
324
- ...( Array.isArray( blockNames ) ? blockNames : [ blockNames ] ),
325
- ] );
326
-
327
- registry
328
- .dispatch( preferencesStore )
329
- .set( 'core/edit-post', 'hiddenBlockTypes', [
330
- ...mergedBlockNames,
331
- ] );
302
+ unlock( registry.dispatch( editorStore ) ).hideBlockTypes( blockNames );
332
303
  };
333
304
 
334
305
  /**
@@ -602,6 +573,16 @@ export const toggleDistractionFree =
602
573
  {
603
574
  id: 'core/edit-post/distraction-free-mode/notice',
604
575
  type: 'snackbar',
576
+ actions: [
577
+ {
578
+ label: __( 'Undo' ),
579
+ onClick: () => {
580
+ registry
581
+ .dispatch( preferencesStore )
582
+ .toggle( 'core', 'distractionFree' );
583
+ },
584
+ },
585
+ ],
605
586
  }
606
587
  );
607
588
  } );
@@ -30,8 +30,7 @@ const EMPTY_OBJECT = {};
30
30
  */
31
31
  export const getEditorMode = createRegistrySelector(
32
32
  ( select ) => () =>
33
- select( preferencesStore ).get( 'core/edit-post', 'editorMode' ) ??
34
- 'visual'
33
+ select( preferencesStore ).get( 'core', 'editorMode' ) ?? 'visual'
35
34
  );
36
35
 
37
36
  /**
@@ -165,21 +164,34 @@ export const getPreferences = createRegistrySelector( ( select ) => () => {
165
164
  // These preferences now exist in the preferences store.
166
165
  // Fetch them so that they can be merged into the post
167
166
  // editor preferences.
168
- const preferences = [
169
- 'hiddenBlockTypes',
170
- 'editorMode',
171
- 'preferredStyleVariations',
172
- ].reduce( ( accumulatedPrefs, preferenceKey ) => {
173
- const value = select( preferencesStore ).get(
174
- 'core/edit-post',
175
- preferenceKey
176
- );
167
+ const preferences = [ 'preferredStyleVariations' ].reduce(
168
+ ( accumulatedPrefs, preferenceKey ) => {
169
+ const value = select( preferencesStore ).get(
170
+ 'core/edit-post',
171
+ preferenceKey
172
+ );
177
173
 
178
- return {
179
- ...accumulatedPrefs,
180
- [ preferenceKey ]: value,
181
- };
182
- }, {} );
174
+ return {
175
+ ...accumulatedPrefs,
176
+ [ preferenceKey ]: value,
177
+ };
178
+ },
179
+ {}
180
+ );
181
+ const corePreferences = [ 'editorMode', 'hiddenBlockTypes' ].reduce(
182
+ ( accumulatedPrefs, preferenceKey ) => {
183
+ const value = select( preferencesStore ).get(
184
+ 'core',
185
+ preferenceKey
186
+ );
187
+
188
+ return {
189
+ ...accumulatedPrefs,
190
+ [ preferenceKey ]: value,
191
+ };
192
+ },
193
+ {}
194
+ );
183
195
 
184
196
  // Panels were a preference, but the data structure changed when the state
185
197
  // was migrated to the preferences store. They need to be converted from
@@ -194,6 +206,7 @@ export const getPreferences = createRegistrySelector( ( select ) => () => {
194
206
 
195
207
  return {
196
208
  ...preferences,
209
+ ...corePreferences,
197
210
  panels,
198
211
  };
199
212
  } );
@@ -225,10 +238,8 @@ export function getPreference( state, preferenceKey, defaultValue ) {
225
238
  */
226
239
  export const getHiddenBlockTypes = createRegistrySelector( ( select ) => () => {
227
240
  return (
228
- select( preferencesStore ).get(
229
- 'core/edit-post',
230
- 'hiddenBlockTypes'
231
- ) ?? EMPTY_ARRAY
241
+ select( preferencesStore ).get( 'core', 'hiddenBlockTypes' ) ??
242
+ EMPTY_ARRAY
232
243
  );
233
244
  } );
234
245
 
@@ -583,12 +594,27 @@ export const getEditedPostTemplate = createRegistrySelector(
583
594
  }
584
595
 
585
596
  const post = select( editorStore ).getCurrentPost();
586
- if ( post.link ) {
587
- return select( coreStore ).__experimentalGetTemplateForLink(
588
- post.link
589
- );
597
+ let slugToCheck;
598
+ // In `draft` status we might not have a slug available, so we use the `single`
599
+ // post type templates slug(ex page, single-post, single-product etc..).
600
+ // Pages do not need the `single` prefix in the slug to be prioritized
601
+ // through template hierarchy.
602
+ if ( post.slug ) {
603
+ slugToCheck =
604
+ post.type === 'page'
605
+ ? `${ post.type }-${ post.slug }`
606
+ : `single-${ post.type }-${ post.slug }`;
607
+ } else {
608
+ slugToCheck =
609
+ post.type === 'page' ? 'page' : `single-${ post.type }`;
590
610
  }
591
-
592
- return null;
611
+ const defaultTemplateId = select( coreStore ).getDefaultTemplateId( {
612
+ slug: slugToCheck,
613
+ } );
614
+ return select( coreStore ).getEditedEntityRecord(
615
+ 'postType',
616
+ 'wp_template',
617
+ defaultTemplateId
618
+ );
593
619
  }
594
620
  );
@@ -154,16 +154,13 @@ describe( 'actions', () => {
154
154
 
155
155
  expect(
156
156
  registry
157
- .select( editPostStore )
158
- .getPreference( 'hiddenBlockTypes' )
157
+ .select( preferencesStore )
158
+ .get( 'core', 'hiddenBlockTypes' )
159
159
  ).toEqual( expected );
160
160
 
161
161
  expect(
162
162
  registry.select( editPostStore ).getHiddenBlockTypes()
163
163
  ).toEqual( expected );
164
-
165
- // Expect a deprecation message for `getPreference`.
166
- expect( console ).toHaveWarned();
167
164
  } );
168
165
  } );
169
166
 
@@ -177,8 +174,8 @@ describe( 'actions', () => {
177
174
 
178
175
  expect(
179
176
  registry
180
- .select( editPostStore )
181
- .getPreference( 'hiddenBlockTypes' )
177
+ .select( preferencesStore )
178
+ .get( 'core', 'hiddenBlockTypes' )
182
179
  ).toEqual( expectedA );
183
180
 
184
181
  expect(
@@ -193,8 +190,8 @@ describe( 'actions', () => {
193
190
 
194
191
  expect(
195
192
  registry
196
- .select( editPostStore )
197
- .getPreference( 'hiddenBlockTypes' )
193
+ .select( preferencesStore )
194
+ .get( 'core', 'hiddenBlockTypes' )
198
195
  ).toEqual( expectedB );
199
196
 
200
197
  expect(
@@ -220,6 +217,9 @@ describe( 'actions', () => {
220
217
  'core/paragraph': 'fancy',
221
218
  'core/quote': 'posh',
222
219
  } );
220
+
221
+ // Expect a deprecation message for `getPreference`.
222
+ expect( console ).toHaveWarned();
223
223
  } );
224
224
 
225
225
  it( 'removes a preferred style variation for a block when a style name is omitted', () => {
package/src/style.scss CHANGED
@@ -3,7 +3,6 @@
3
3
  @import "./components/header/fullscreen-mode-close/style.scss";
4
4
  @import "./components/keyboard-shortcut-help-modal/style.scss";
5
5
  @import "./components/layout/style.scss";
6
- @import "./components/block-manager/style.scss";
7
6
  @import "./components/meta-boxes/meta-boxes-area/style.scss";
8
7
  @import "./components/sidebar/style.scss";
9
8
  @import "./components/sidebar/post-format/style.scss";