@wordpress/edit-post 7.35.0 → 8.0.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 (202) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/build/commands/use-commands.js +56 -0
  3. package/build/commands/use-commands.js.map +1 -0
  4. package/build/components/{header/fullscreen-mode-close/index.js → back-button/fullscreen-mode-close.js} +16 -14
  5. package/build/components/back-button/fullscreen-mode-close.js.map +1 -0
  6. package/build/components/back-button/index.js +57 -0
  7. package/build/components/back-button/index.js.map +1 -0
  8. package/build/components/header/header-toolbar/index.native.js +63 -62
  9. package/build/components/header/header-toolbar/index.native.js.map +1 -1
  10. package/build/components/header/index.native.js +2 -2
  11. package/build/components/header/index.native.js.map +1 -1
  12. package/build/components/init-pattern-modal/index.js +50 -43
  13. package/build/components/init-pattern-modal/index.js.map +1 -1
  14. package/build/components/layout/index.js +92 -146
  15. package/build/components/layout/index.js.map +1 -1
  16. package/build/components/layout/index.native.js +28 -21
  17. package/build/components/layout/index.native.js.map +1 -1
  18. package/build/components/layout/use-padding-appender.js.map +1 -0
  19. package/build/components/layout/use-should-iframe.js +46 -0
  20. package/build/components/layout/use-should-iframe.js.map +1 -0
  21. package/build/components/meta-boxes/index.js +10 -9
  22. package/build/components/meta-boxes/index.js.map +1 -1
  23. package/build/components/meta-boxes/meta-boxes-area/index.js +11 -11
  24. package/build/components/meta-boxes/meta-boxes-area/index.js.map +1 -1
  25. package/build/components/more-menu/index.js +49 -0
  26. package/build/components/more-menu/index.js.map +1 -0
  27. package/build/components/{header/more-menu → more-menu}/manage-patterns-menu-item.js +5 -4
  28. package/build/components/more-menu/manage-patterns-menu-item.js.map +1 -0
  29. package/build/components/{header/more-menu → more-menu}/welcome-guide-menu-item.js +2 -2
  30. package/build/components/more-menu/welcome-guide-menu-item.js.map +1 -0
  31. package/build/components/preferences-modal/enable-custom-fields.js +23 -18
  32. package/build/components/preferences-modal/enable-custom-fields.js.map +1 -1
  33. package/build/components/preferences-modal/index.js +4 -4
  34. package/build/components/preferences-modal/index.js.map +1 -1
  35. package/build/components/preferences-modal/meta-boxes-section.js +13 -13
  36. package/build/components/preferences-modal/meta-boxes-section.js.map +1 -1
  37. package/build/components/visual-editor/header.native.js +11 -10
  38. package/build/components/visual-editor/header.native.js.map +1 -1
  39. package/build/components/visual-editor/index.native.js +3 -3
  40. package/build/components/visual-editor/index.native.js.map +1 -1
  41. package/build/components/welcome-guide/default.js +50 -33
  42. package/build/components/welcome-guide/default.js.map +1 -1
  43. package/build/components/welcome-guide/image.js +13 -12
  44. package/build/components/welcome-guide/image.js.map +1 -1
  45. package/build/components/welcome-guide/index.js +2 -2
  46. package/build/components/welcome-guide/index.js.map +1 -1
  47. package/build/components/welcome-guide/template.js +12 -8
  48. package/build/components/welcome-guide/template.js.map +1 -1
  49. package/build/deprecated.js +9 -9
  50. package/build/deprecated.js.map +1 -1
  51. package/build/editor.js +16 -11
  52. package/build/editor.js.map +1 -1
  53. package/build/editor.native.js +18 -12
  54. package/build/editor.native.js.map +1 -1
  55. package/build/index.js +12 -13
  56. package/build/index.js.map +1 -1
  57. package/build/index.native.js +2 -2
  58. package/build/index.native.js.map +1 -1
  59. package/build/store/selectors.js +1 -1
  60. package/build/store/selectors.js.map +1 -1
  61. package/build-module/commands/use-commands.js +49 -0
  62. package/build-module/commands/use-commands.js.map +1 -0
  63. package/build-module/components/{header/fullscreen-mode-close/index.js → back-button/fullscreen-mode-close.js} +16 -14
  64. package/build-module/components/back-button/fullscreen-mode-close.js.map +1 -0
  65. package/build-module/components/back-button/index.js +49 -0
  66. package/build-module/components/back-button/index.js.map +1 -0
  67. package/build-module/components/header/header-toolbar/index.native.js +64 -62
  68. package/build-module/components/header/header-toolbar/index.native.js.map +1 -1
  69. package/build-module/components/header/index.native.js +2 -2
  70. package/build-module/components/header/index.native.js.map +1 -1
  71. package/build-module/components/init-pattern-modal/index.js +52 -43
  72. package/build-module/components/init-pattern-modal/index.js.map +1 -1
  73. package/build-module/components/layout/index.js +97 -149
  74. package/build-module/components/layout/index.js.map +1 -1
  75. package/build-module/components/layout/index.native.js +30 -21
  76. package/build-module/components/layout/index.native.js.map +1 -1
  77. package/build-module/components/layout/use-padding-appender.js.map +1 -0
  78. package/build-module/components/layout/use-should-iframe.js +39 -0
  79. package/build-module/components/layout/use-should-iframe.js.map +1 -0
  80. package/build-module/components/meta-boxes/index.js +12 -9
  81. package/build-module/components/meta-boxes/index.js.map +1 -1
  82. package/build-module/components/meta-boxes/meta-boxes-area/index.js +11 -9
  83. package/build-module/components/meta-boxes/meta-boxes-area/index.js.map +1 -1
  84. package/build-module/components/more-menu/index.js +43 -0
  85. package/build-module/components/more-menu/index.js.map +1 -0
  86. package/build-module/components/{header/more-menu → more-menu}/manage-patterns-menu-item.js +5 -4
  87. package/build-module/components/more-menu/manage-patterns-menu-item.js.map +1 -0
  88. package/build-module/components/{header/more-menu → more-menu}/welcome-guide-menu-item.js +2 -2
  89. package/build-module/components/more-menu/welcome-guide-menu-item.js.map +1 -0
  90. package/build-module/components/preferences-modal/enable-custom-fields.js +25 -18
  91. package/build-module/components/preferences-modal/enable-custom-fields.js.map +1 -1
  92. package/build-module/components/preferences-modal/index.js +4 -4
  93. package/build-module/components/preferences-modal/index.js.map +1 -1
  94. package/build-module/components/preferences-modal/meta-boxes-section.js +14 -13
  95. package/build-module/components/preferences-modal/meta-boxes-section.js.map +1 -1
  96. package/build-module/components/visual-editor/header.native.js +11 -10
  97. package/build-module/components/visual-editor/header.native.js.map +1 -1
  98. package/build-module/components/visual-editor/index.native.js +3 -3
  99. package/build-module/components/visual-editor/index.native.js.map +1 -1
  100. package/build-module/components/welcome-guide/default.js +52 -33
  101. package/build-module/components/welcome-guide/default.js.map +1 -1
  102. package/build-module/components/welcome-guide/image.js +14 -12
  103. package/build-module/components/welcome-guide/image.js.map +1 -1
  104. package/build-module/components/welcome-guide/index.js +2 -2
  105. package/build-module/components/welcome-guide/index.js.map +1 -1
  106. package/build-module/components/welcome-guide/template.js +14 -8
  107. package/build-module/components/welcome-guide/template.js.map +1 -1
  108. package/build-module/deprecated.js +9 -9
  109. package/build-module/deprecated.js.map +1 -1
  110. package/build-module/editor.js +17 -11
  111. package/build-module/editor.js.map +1 -1
  112. package/build-module/editor.native.js +18 -12
  113. package/build-module/editor.native.js.map +1 -1
  114. package/build-module/index.js +10 -7
  115. package/build-module/index.js.map +1 -1
  116. package/build-module/index.native.js +2 -2
  117. package/build-module/index.native.js.map +1 -1
  118. package/build-module/store/selectors.js +1 -1
  119. package/build-module/store/selectors.js.map +1 -1
  120. package/build-style/style-rtl.css +27 -128
  121. package/build-style/style.css +27 -128
  122. package/package.json +32 -32
  123. package/src/commands/use-commands.js +48 -0
  124. package/src/components/{header/fullscreen-mode-close/index.js → back-button/fullscreen-mode-close.js} +1 -1
  125. package/src/components/back-button/index.js +34 -0
  126. package/src/components/{header/fullscreen-mode-close → back-button}/style.scss +16 -2
  127. package/src/components/{header/fullscreen-mode-close/test/index.js → back-button/test/fullscreen-mode-close.js} +1 -1
  128. package/src/components/layout/index.js +85 -194
  129. package/src/components/layout/style.scss +9 -17
  130. package/src/components/layout/use-should-iframe.js +40 -0
  131. package/src/components/{header/more-menu → more-menu}/index.js +2 -2
  132. package/src/index.js +11 -6
  133. package/src/store/selectors.js +8 -5
  134. package/src/style.scss +2 -5
  135. package/src/test/__snapshots__/editor.native.js.snap +72 -0
  136. package/src/test/editor.native.js +77 -0
  137. package/build/components/header/fullscreen-mode-close/index.js.map +0 -1
  138. package/build/components/header/index.js +0 -69
  139. package/build/components/header/index.js.map +0 -1
  140. package/build/components/header/main-dashboard-button/index.js +0 -33
  141. package/build/components/header/main-dashboard-button/index.js.map +0 -1
  142. package/build/components/header/more-menu/index.js +0 -43
  143. package/build/components/header/more-menu/index.js.map +0 -1
  144. package/build/components/header/more-menu/manage-patterns-menu-item.js.map +0 -1
  145. package/build/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  146. package/build/components/text-editor/index.js +0 -61
  147. package/build/components/text-editor/index.js.map +0 -1
  148. package/build/components/visual-editor/block-inspector-button.js +0 -55
  149. package/build/components/visual-editor/block-inspector-button.js.map +0 -1
  150. package/build/components/visual-editor/index.js +0 -98
  151. package/build/components/visual-editor/index.js.map +0 -1
  152. package/build/components/visual-editor/use-padding-appender.js.map +0 -1
  153. package/build/hooks/commands/use-common-commands.js +0 -119
  154. package/build/hooks/commands/use-common-commands.js.map +0 -1
  155. package/build/hooks/components/index.js +0 -11
  156. package/build/hooks/components/index.js.map +0 -1
  157. package/build/hooks/index.js +0 -5
  158. package/build/hooks/index.js.map +0 -1
  159. package/build/hooks/validate-multiple-use/index.js +0 -134
  160. package/build/hooks/validate-multiple-use/index.js.map +0 -1
  161. package/build-module/components/header/fullscreen-mode-close/index.js.map +0 -1
  162. package/build-module/components/header/index.js +0 -61
  163. package/build-module/components/header/index.js.map +0 -1
  164. package/build-module/components/header/main-dashboard-button/index.js +0 -26
  165. package/build-module/components/header/main-dashboard-button/index.js.map +0 -1
  166. package/build-module/components/header/more-menu/index.js +0 -35
  167. package/build-module/components/header/more-menu/index.js.map +0 -1
  168. package/build-module/components/header/more-menu/manage-patterns-menu-item.js.map +0 -1
  169. package/build-module/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  170. package/build-module/components/text-editor/index.js +0 -54
  171. package/build-module/components/text-editor/index.js.map +0 -1
  172. package/build-module/components/visual-editor/block-inspector-button.js +0 -47
  173. package/build-module/components/visual-editor/block-inspector-button.js.map +0 -1
  174. package/build-module/components/visual-editor/index.js +0 -90
  175. package/build-module/components/visual-editor/index.js.map +0 -1
  176. package/build-module/components/visual-editor/use-padding-appender.js.map +0 -1
  177. package/build-module/hooks/commands/use-common-commands.js +0 -112
  178. package/build-module/hooks/commands/use-common-commands.js.map +0 -1
  179. package/build-module/hooks/components/index.js +0 -8
  180. package/build-module/hooks/components/index.js.map +0 -1
  181. package/build-module/hooks/index.js +0 -6
  182. package/build-module/hooks/index.js.map +0 -1
  183. package/build-module/hooks/validate-multiple-use/index.js +0 -132
  184. package/build-module/hooks/validate-multiple-use/index.js.map +0 -1
  185. package/src/components/header/index.js +0 -53
  186. package/src/components/header/main-dashboard-button/index.js +0 -28
  187. package/src/components/header/style.scss +0 -14
  188. package/src/components/text-editor/index.js +0 -63
  189. package/src/components/text-editor/style.scss +0 -71
  190. package/src/components/visual-editor/block-inspector-button.js +0 -59
  191. package/src/components/visual-editor/index.js +0 -108
  192. package/src/components/visual-editor/style.scss +0 -53
  193. package/src/hooks/commands/use-common-commands.js +0 -126
  194. package/src/hooks/components/index.js +0 -13
  195. package/src/hooks/index.js +0 -5
  196. package/src/hooks/validate-multiple-use/index.js +0 -163
  197. /package/build/components/{visual-editor → layout}/use-padding-appender.js +0 -0
  198. /package/build-module/components/{visual-editor → layout}/use-padding-appender.js +0 -0
  199. /package/src/components/{header/fullscreen-mode-close/test/__snapshots__/index.js.snap → back-button/test/__snapshots__/fullscreen-mode-close.js.snap} +0 -0
  200. /package/src/components/{visual-editor → layout}/use-padding-appender.js +0 -0
  201. /package/src/components/{header/more-menu → more-menu}/manage-patterns-menu-item.js +0 -0
  202. /package/src/components/{header/more-menu → more-menu}/welcome-guide-menu-item.js +0 -0
@@ -10,26 +10,20 @@ import {
10
10
  AutosaveMonitor,
11
11
  LocalAutosaveMonitor,
12
12
  UnsavedChangesWarning,
13
- EditorNotices,
14
13
  EditorKeyboardShortcutsRegister,
15
- EditorKeyboardShortcuts,
16
14
  EditorSnackbars,
17
15
  store as editorStore,
18
16
  privateApis as editorPrivateApis,
19
17
  } from '@wordpress/editor';
20
18
  import { useSelect, useDispatch } from '@wordpress/data';
21
19
  import {
22
- BlockBreadcrumb,
23
- BlockToolbar,
24
20
  privateApis as blockEditorPrivateApis,
25
21
  store as blockEditorStore,
26
22
  } from '@wordpress/block-editor';
27
- import { ScrollLock } from '@wordpress/components';
28
23
  import { useViewportMatch } from '@wordpress/compose';
29
24
  import { PluginArea } from '@wordpress/plugins';
30
- import { __, _x, sprintf } from '@wordpress/i18n';
31
- import { useState, useCallback, useMemo } from '@wordpress/element';
32
- import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
25
+ import { __, sprintf } from '@wordpress/i18n';
26
+ import { useCallback, useMemo } from '@wordpress/element';
33
27
  import { store as noticesStore } from '@wordpress/notices';
34
28
  import { store as preferencesStore } from '@wordpress/preferences';
35
29
  import { privateApis as commandsPrivateApis } from '@wordpress/commands';
@@ -40,55 +34,54 @@ import { addQueryArgs } from '@wordpress/url';
40
34
  /**
41
35
  * Internal dependencies
42
36
  */
43
- import TextEditor from '../text-editor';
44
- import VisualEditor from '../visual-editor';
37
+ import BackButton from '../back-button';
45
38
  import EditPostKeyboardShortcuts from '../keyboard-shortcuts';
46
39
  import InitPatternModal from '../init-pattern-modal';
47
40
  import BrowserURL from '../browser-url';
48
- import Header from '../header';
49
41
  import MetaBoxes from '../meta-boxes';
42
+ import PostEditorMoreMenu from '../more-menu';
50
43
  import WelcomeGuide from '../welcome-guide';
51
44
  import { store as editPostStore } from '../../store';
52
45
  import { unlock } from '../../lock-unlock';
53
- import useCommonCommands from '../../hooks/commands/use-common-commands';
46
+ import useEditPostCommands from '../../commands/use-commands';
47
+ import { usePaddingAppender } from './use-padding-appender';
48
+ import { useShouldIframe } from './use-should-iframe';
54
49
 
55
50
  const { getLayoutStyles } = unlock( blockEditorPrivateApis );
56
51
  const { useCommands } = unlock( coreCommandsPrivateApis );
57
52
  const { useCommandContext } = unlock( commandsPrivateApis );
58
- const {
59
- InserterSidebar,
60
- ListViewSidebar,
61
- ComplementaryArea,
62
- FullscreenMode,
63
- SavePublishPanels,
64
- InterfaceSkeleton,
65
- interfaceStore,
66
- Sidebar,
67
- } = unlock( editorPrivateApis );
53
+ const { EditorInterface, FullscreenMode, Sidebar } =
54
+ unlock( editorPrivateApis );
68
55
  const { BlockKeyboardShortcuts } = unlock( blockLibraryPrivateApis );
69
-
70
- const interfaceLabels = {
71
- /* translators: accessibility text for the editor top bar landmark region. */
72
- header: __( 'Editor top bar' ),
73
- /* translators: accessibility text for the editor content landmark region. */
74
- body: __( 'Editor content' ),
75
- /* translators: accessibility text for the editor settings landmark region. */
76
- sidebar: __( 'Editor settings' ),
77
- /* translators: accessibility text for the editor publish landmark region. */
78
- actions: __( 'Editor publish' ),
79
- /* translators: accessibility text for the editor footer landmark region. */
80
- footer: __( 'Editor footer' ),
81
- };
56
+ const DESIGN_POST_TYPES = [
57
+ 'wp_template',
58
+ 'wp_template_part',
59
+ 'wp_block',
60
+ 'wp_navigation',
61
+ ];
82
62
 
83
63
  function useEditorStyles() {
84
- const { hasThemeStyleSupport, editorSettings } = useSelect(
85
- ( select ) => ( {
64
+ const {
65
+ hasThemeStyleSupport,
66
+ editorSettings,
67
+ isZoomedOutView,
68
+ hasMetaBoxes,
69
+ renderingMode,
70
+ postType,
71
+ } = useSelect( ( select ) => {
72
+ const { __unstableGetEditorMode } = select( blockEditorStore );
73
+ const { getCurrentPostType, getRenderingMode } = select( editorStore );
74
+ const _postType = getCurrentPostType();
75
+ return {
86
76
  hasThemeStyleSupport:
87
77
  select( editPostStore ).isFeatureActive( 'themeStyles' ),
88
78
  editorSettings: select( editorStore ).getEditorSettings(),
89
- } ),
90
- []
91
- );
79
+ isZoomedOutView: __unstableGetEditorMode() === 'zoom-out',
80
+ hasMetaBoxes: select( editPostStore ).hasMetaBoxes(),
81
+ renderingMode: getRenderingMode(),
82
+ postType: _postType,
83
+ };
84
+ }, [] );
92
85
 
93
86
  // Compute the default styles.
94
87
  return useMemo( () => {
@@ -122,7 +115,24 @@ function useEditorStyles() {
122
115
  } );
123
116
  }
124
117
 
125
- return hasThemeStyles ? editorSettings.styles : defaultEditorStyles;
118
+ const baseStyles = hasThemeStyles
119
+ ? editorSettings.styles ?? []
120
+ : defaultEditorStyles;
121
+
122
+ // Add a constant padding for the typewritter effect. When typing at the
123
+ // bottom, there needs to be room to scroll up.
124
+ if (
125
+ ! isZoomedOutView &&
126
+ ! hasMetaBoxes &&
127
+ renderingMode === 'post-only' &&
128
+ ! DESIGN_POST_TYPES.includes( postType )
129
+ ) {
130
+ baseStyles.push( {
131
+ css: 'body{padding-bottom: 40vh}',
132
+ } );
133
+ }
134
+
135
+ return baseStyles;
126
136
  }, [
127
137
  editorSettings.defaultEditorStyles,
128
138
  editorSettings.disableLayoutStyles,
@@ -133,99 +143,56 @@ function useEditorStyles() {
133
143
 
134
144
  function Layout( { initialPost } ) {
135
145
  useCommands();
136
- useCommonCommands();
137
-
138
- const isMobileViewport = useViewportMatch( 'medium', '<' );
146
+ useEditPostCommands();
139
147
  const isWideViewport = useViewportMatch( 'large' );
140
- const isLargeViewport = useViewportMatch( 'medium' );
141
-
142
- const { closeGeneralSidebar } = useDispatch( editPostStore );
148
+ const paddingAppenderRef = usePaddingAppender();
149
+ const shouldIframe = useShouldIframe();
143
150
  const { createErrorNotice } = useDispatch( noticesStore );
144
151
  const {
145
152
  mode,
146
153
  isFullscreenActive,
147
- isRichEditingEnabled,
148
154
  sidebarIsOpened,
149
155
  hasActiveMetaboxes,
150
- previousShortcut,
151
- nextShortcut,
152
156
  hasBlockSelected,
153
- isInserterOpened,
154
- isListViewOpened,
155
157
  showIconLabels,
156
158
  isDistractionFree,
157
159
  showBlockBreadcrumbs,
158
160
  showMetaBoxes,
159
- documentLabel,
160
161
  hasHistory,
161
- hasBlockBreadcrumbs,
162
- blockEditorMode,
163
162
  isEditingTemplate,
163
+ isWelcomeGuideVisible,
164
164
  } = useSelect( ( select ) => {
165
165
  const { get } = select( preferencesStore );
166
- const { getEditorSettings, getPostTypeLabel } = select( editorStore );
167
- const editorSettings = getEditorSettings();
168
- const postTypeLabel = getPostTypeLabel();
166
+ const { getEditorSettings } = select( editorStore );
167
+ const { isFeatureActive } = select( editPostStore );
169
168
 
170
169
  return {
171
- showMetaBoxes:
172
- select( editorStore ).getRenderingMode() === 'post-only',
173
- sidebarIsOpened: !! (
174
- select( interfaceStore ).getActiveComplementaryArea( 'core' ) ||
175
- select( editorStore ).isPublishSidebarOpened()
176
- ),
170
+ mode: select( editorStore ).getEditorMode(),
177
171
  isFullscreenActive:
178
172
  select( editPostStore ).isFeatureActive( 'fullscreenMode' ),
179
- isInserterOpened: select( editorStore ).isInserterOpened(),
180
- isListViewOpened: select( editorStore ).isListViewOpened(),
181
- mode: select( editorStore ).getEditorMode(),
182
- isRichEditingEnabled: editorSettings.richEditingEnabled,
183
173
  hasActiveMetaboxes: select( editPostStore ).hasMetaBoxes(),
184
- previousShortcut: select(
185
- keyboardShortcutsStore
186
- ).getAllShortcutKeyCombinations( 'core/editor/previous-region' ),
187
- nextShortcut: select(
188
- keyboardShortcutsStore
189
- ).getAllShortcutKeyCombinations( 'core/editor/next-region' ),
174
+ hasBlockSelected:
175
+ !! select( blockEditorStore ).getBlockSelectionStart(),
190
176
  showIconLabels: get( 'core', 'showIconLabels' ),
191
177
  isDistractionFree: get( 'core', 'distractionFree' ),
192
178
  showBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),
193
- // translators: Default label for the Document in the Block Breadcrumb.
194
- documentLabel: postTypeLabel || _x( 'Document', 'noun' ),
195
- hasBlockSelected:
196
- !! select( blockEditorStore ).getBlockSelectionStart(),
179
+ showMetaBoxes:
180
+ select( editorStore ).getRenderingMode() === 'post-only',
197
181
  hasHistory: !! getEditorSettings().onNavigateToPreviousEntityRecord,
198
- hasBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),
199
- blockEditorMode:
200
- select( blockEditorStore ).__unstableGetEditorMode(),
201
182
  isEditingTemplate:
202
183
  select( editorStore ).getCurrentPostType() === 'wp_template',
184
+ isWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),
203
185
  };
204
186
  }, [] );
205
187
 
206
188
  // Set the right context for the command palette
207
189
  const commandContext = hasBlockSelected
208
190
  ? 'block-selection-edit'
209
- : 'post-editor-edit';
191
+ : 'entity-edit';
210
192
  useCommandContext( commandContext );
211
193
 
212
194
  const styles = useEditorStyles();
213
195
 
214
- // Local state for save panel.
215
- // Note 'truthy' callback implies an open panel.
216
- const [ entitiesSavedStatesCallback, setEntitiesSavedStatesCallback ] =
217
- useState( false );
218
-
219
- const closeEntitiesSavedStates = useCallback(
220
- ( arg ) => {
221
- if ( typeof entitiesSavedStatesCallback === 'function' ) {
222
- entitiesSavedStatesCallback( arg );
223
- }
224
- setEntitiesSavedStatesCallback( false );
225
- },
226
- [ entitiesSavedStatesCallback ]
227
- );
228
-
229
196
  // We need to add the show-icon-labels class to the body element so it is applied to modals.
230
197
  if ( showIconLabels ) {
231
198
  document.body.classList.add( 'show-icon-labels' );
@@ -237,31 +204,10 @@ function Layout( { initialPost } ) {
237
204
  'is-sidebar-opened': sidebarIsOpened,
238
205
  'has-metaboxes': hasActiveMetaboxes,
239
206
  'is-distraction-free': isDistractionFree && isWideViewport,
240
- 'is-entity-save-view-open': !! entitiesSavedStatesCallback,
241
207
  'has-block-breadcrumbs':
242
- hasBlockBreadcrumbs && ! isDistractionFree && isWideViewport,
208
+ showBlockBreadcrumbs && ! isDistractionFree && isWideViewport,
243
209
  } );
244
210
 
245
- const secondarySidebarLabel = isListViewOpened
246
- ? __( 'Document Overview' )
247
- : __( 'Block Library' );
248
-
249
- const secondarySidebar = () => {
250
- if ( mode === 'visual' && isInserterOpened ) {
251
- return (
252
- <InserterSidebar
253
- closeGeneralSidebar={ closeGeneralSidebar }
254
- isRightSidebarOpen={ sidebarIsOpened }
255
- />
256
- );
257
- }
258
- if ( mode === 'visual' && isListViewOpened ) {
259
- return <ListViewSidebar />;
260
- }
261
-
262
- return null;
263
- };
264
-
265
211
  function onPluginAreaError( name ) {
266
212
  createErrorNotice(
267
213
  sprintf(
@@ -335,82 +281,7 @@ function Layout( { initialPost } ) {
335
281
  <LocalAutosaveMonitor />
336
282
  <EditPostKeyboardShortcuts />
337
283
  <EditorKeyboardShortcutsRegister />
338
- <EditorKeyboardShortcuts />
339
284
  <BlockKeyboardShortcuts />
340
-
341
- <InterfaceSkeleton
342
- isDistractionFree={ isDistractionFree && isWideViewport }
343
- className={ className }
344
- labels={ {
345
- ...interfaceLabels,
346
- secondarySidebar: secondarySidebarLabel,
347
- } }
348
- header={
349
- <Header
350
- setEntitiesSavedStatesCallback={
351
- setEntitiesSavedStatesCallback
352
- }
353
- initialPost={ initialPost }
354
- />
355
- }
356
- editorNotices={ <EditorNotices /> }
357
- secondarySidebar={ secondarySidebar() }
358
- sidebar={
359
- ! isDistractionFree && (
360
- <ComplementaryArea.Slot scope="core" />
361
- )
362
- }
363
- notices={ <EditorSnackbars /> }
364
- content={
365
- <>
366
- { ! isDistractionFree && <EditorNotices /> }
367
- { ( mode === 'text' || ! isRichEditingEnabled ) && (
368
- <TextEditor />
369
- ) }
370
- { ! isLargeViewport && <BlockToolbar hideDragHandle /> }
371
- { isRichEditingEnabled && mode === 'visual' && (
372
- <VisualEditor styles={ styles } />
373
- ) }
374
- { ! isDistractionFree && showMetaBoxes && (
375
- <div className="edit-post-layout__metaboxes">
376
- <MetaBoxes location="normal" />
377
- <MetaBoxes location="advanced" />
378
- </div>
379
- ) }
380
- { isMobileViewport && sidebarIsOpened && (
381
- <ScrollLock />
382
- ) }
383
- </>
384
- }
385
- footer={
386
- ! isDistractionFree &&
387
- ! isMobileViewport &&
388
- showBlockBreadcrumbs &&
389
- isRichEditingEnabled &&
390
- blockEditorMode !== 'zoom-out' &&
391
- mode === 'visual' && (
392
- <div className="edit-post-layout__footer">
393
- <BlockBreadcrumb rootLabelText={ documentLabel } />
394
- </div>
395
- )
396
- }
397
- actions={
398
- <SavePublishPanels
399
- closeEntitiesSavedStates={ closeEntitiesSavedStates }
400
- isEntitiesSavedStatesOpen={
401
- entitiesSavedStatesCallback
402
- }
403
- setEntitiesSavedStatesCallback={
404
- setEntitiesSavedStatesCallback
405
- }
406
- forceIsDirtyPublishPanel={ hasActiveMetaboxes }
407
- />
408
- }
409
- shortcuts={ {
410
- previous: previousShortcut,
411
- next: nextShortcut,
412
- } }
413
- />
414
285
  <WelcomeGuide />
415
286
  <InitPatternModal />
416
287
  <PluginArea onError={ onPluginAreaError } />
@@ -422,6 +293,26 @@ function Layout( { initialPost } ) {
422
293
  }
423
294
  />
424
295
  ) }
296
+ <PostEditorMoreMenu />
297
+ <BackButton initialPost={ initialPost } />
298
+ <EditorSnackbars />
299
+ <EditorInterface
300
+ className={ className }
301
+ styles={ styles }
302
+ forceIsDirty={ hasActiveMetaboxes }
303
+ contentRef={ paddingAppenderRef }
304
+ disableIframe={ ! shouldIframe }
305
+ // We should auto-focus the canvas (title) on load.
306
+ // eslint-disable-next-line jsx-a11y/no-autofocus
307
+ autoFocus={ ! isWelcomeGuideVisible }
308
+ >
309
+ { ! isDistractionFree && showMetaBoxes && (
310
+ <div className="edit-post-layout__metaboxes">
311
+ <MetaBoxes location="normal" />
312
+ <MetaBoxes location="advanced" />
313
+ </div>
314
+ ) }
315
+ </EditorInterface>
425
316
  </>
426
317
  );
427
318
  }
@@ -1,28 +1,20 @@
1
+ .editor-visual-editor {
2
+ flex: 1 0 auto;
3
+ height: auto;
4
+ }
5
+
1
6
  .edit-post-layout__metaboxes {
2
7
  flex-shrink: 0;
3
8
  clear: both;
4
9
  }
5
10
 
6
11
  // Adjust the position of the notices
7
- .edit-post-layout .components-editor-notices__snackbar {
12
+ .components-editor-notices__snackbar {
8
13
  position: fixed;
9
14
  right: 0;
10
- bottom: 16px;
11
- padding-left: 16px;
12
- padding-right: 16px;
13
- }
14
-
15
- .is-distraction-free {
16
- .components-editor-notices__snackbar {
17
- bottom: 16px;
18
- }
19
- }
20
-
21
- // Adjust the position of the notices when breadcrumbs are present
22
- .has-block-breadcrumbs {
23
- .components-editor-notices__snackbar {
24
- bottom: 40px;
25
- }
15
+ bottom: 24px;
16
+ padding-left: 24px;
17
+ padding-right: 24px;
26
18
  }
27
19
 
28
20
  @include editor-left(".edit-post-layout .components-editor-notices__snackbar");
@@ -0,0 +1,40 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { store as editorStore } from '@wordpress/editor';
5
+ import { useSelect } from '@wordpress/data';
6
+ import { store as blocksStore } from '@wordpress/blocks';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import { store as editPostStore } from '../../store';
12
+
13
+ const isGutenbergPlugin = globalThis.IS_GUTENBERG_PLUGIN ? true : false;
14
+
15
+ export function useShouldIframe() {
16
+ const {
17
+ isBlockBasedTheme,
18
+ hasV3BlocksOnly,
19
+ isEditingTemplate,
20
+ hasMetaBoxes,
21
+ } = useSelect( ( select ) => {
22
+ const { getEditorSettings, getCurrentPostType } = select( editorStore );
23
+ const { getBlockTypes } = select( blocksStore );
24
+ const editorSettings = getEditorSettings();
25
+ return {
26
+ isBlockBasedTheme: editorSettings.__unstableIsBlockBasedTheme,
27
+ hasV3BlocksOnly: getBlockTypes().every( ( type ) => {
28
+ return type.apiVersion >= 3;
29
+ } ),
30
+ isEditingTemplate: getCurrentPostType() === 'wp_template',
31
+ hasMetaBoxes: select( editPostStore ).hasMetaBoxes(),
32
+ };
33
+ }, [] );
34
+
35
+ return (
36
+ ( ( hasV3BlocksOnly || ( isGutenbergPlugin && isBlockBasedTheme ) ) &&
37
+ ! hasMetaBoxes ) ||
38
+ isEditingTemplate
39
+ );
40
+ }
@@ -10,10 +10,10 @@ import { displayShortcut } from '@wordpress/keycodes';
10
10
  /**
11
11
  * Internal dependencies
12
12
  */
13
- import { unlock } from '../../../lock-unlock';
13
+ import { unlock } from '../../lock-unlock';
14
14
  import ManagePatternsMenuItem from './manage-patterns-menu-item';
15
15
  import WelcomeGuideMenuItem from './welcome-guide-menu-item';
16
- import EditPostPreferencesModal from '../../preferences-modal';
16
+ import EditPostPreferencesModal from '../preferences-modal';
17
17
 
18
18
  const { ToolsMoreMenuGroup, ViewMoreMenuGroup } = unlock( editorPrivateApis );
19
19
 
package/src/index.js CHANGED
@@ -14,13 +14,19 @@ import {
14
14
  registerLegacyWidgetBlock,
15
15
  registerWidgetGroupBlock,
16
16
  } from '@wordpress/widgets';
17
- import { store as editorStore } from '@wordpress/editor';
17
+ import {
18
+ store as editorStore,
19
+ privateApis as editorPrivateApis,
20
+ } from '@wordpress/editor';
18
21
 
19
22
  /**
20
23
  * Internal dependencies
21
24
  */
22
- import './hooks';
23
25
  import Editor from './editor';
26
+ import { unlock } from './lock-unlock';
27
+
28
+ const { BackButton: __experimentalMainDashboardButton } =
29
+ unlock( editorPrivateApis );
24
30
 
25
31
  /**
26
32
  * Initializes and returns an instance of Editor.
@@ -80,7 +86,7 @@ export function initializeEditor(
80
86
  registerCoreBlocks();
81
87
  registerLegacyWidgetBlock( { inserter: false } );
82
88
  registerWidgetGroupBlock( { inserter: false } );
83
- if ( process.env.IS_GUTENBERG_PLUGIN ) {
89
+ if ( globalThis.IS_GUTENBERG_PLUGIN ) {
84
90
  __experimentalRegisterExperimentalCoreBlocks( {
85
91
  enableFSEBlocks: settings.__unstableEnableFullSiteEditingBlocks,
86
92
  } );
@@ -152,8 +158,7 @@ export function reinitializeEditor() {
152
158
  } );
153
159
  }
154
160
 
155
- export { default as __experimentalFullscreenModeClose } from './components/header/fullscreen-mode-close';
156
- export { default as __experimentalMainDashboardButton } from './components/header/main-dashboard-button';
157
-
161
+ export { default as __experimentalFullscreenModeClose } from './components/back-button/fullscreen-mode-close';
162
+ export { __experimentalMainDashboardButton };
158
163
  export { store } from './store';
159
164
  export * from './deprecated';
@@ -609,10 +609,13 @@ export const getEditedPostTemplate = createRegistrySelector(
609
609
  const defaultTemplateId = select( coreStore ).getDefaultTemplateId( {
610
610
  slug: slugToCheck,
611
611
  } );
612
- return select( coreStore ).getEditedEntityRecord(
613
- 'postType',
614
- 'wp_template',
615
- defaultTemplateId
616
- );
612
+
613
+ return defaultTemplateId
614
+ ? select( coreStore ).getEditedEntityRecord(
615
+ 'postType',
616
+ 'wp_template',
617
+ defaultTemplateId
618
+ )
619
+ : null;
617
620
  }
618
621
  );
package/src/style.scss CHANGED
@@ -1,9 +1,6 @@
1
- @import "./components/header/style.scss";
2
- @import "./components/header/fullscreen-mode-close/style.scss";
1
+ @import "./components/back-button/style.scss";
3
2
  @import "./components/layout/style.scss";
4
3
  @import "./components/meta-boxes/meta-boxes-area/style.scss";
5
- @import "./components/text-editor/style.scss";
6
- @import "./components/visual-editor/style.scss";
7
4
  @import "./components/welcome-guide/style.scss";
8
5
 
9
6
  /**
@@ -36,7 +33,7 @@ body.js.block-editor-page {
36
33
 
37
34
  // Target the editor UI excluding the visual editor contents, metaboxes and custom fields areas.
38
35
  .editor-header,
39
- .edit-post-text-editor,
36
+ .editor-text-editor,
40
37
  .editor-sidebar,
41
38
  .editor-post-publish-panel {
42
39
  @include reset;
@@ -19,3 +19,75 @@ exports[`Editor appends media correctly for allowed types and skips unsupported
19
19
  <figure class="wp-block-video"><video controls src="file:///local-video-4.mp4"></video></figure>
20
20
  <!-- /wp:video -->"
21
21
  `;
22
+
23
+ exports[`Editor on content update parses markdown into blocks 1`] = `
24
+ "<!-- wp:paragraph -->
25
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing<br />elit.</p>
26
+ <!-- /wp:paragraph -->
27
+
28
+ <!-- wp:heading -->
29
+ <h2 class="wp-block-heading">Overview</h2>
30
+ <!-- /wp:heading -->
31
+
32
+ <!-- wp:list -->
33
+ <ul class="wp-block-list"><!-- wp:list-item -->
34
+ <li>Lorem ipsum dolor sit amet</li>
35
+ <!-- /wp:list-item -->
36
+
37
+ <!-- wp:list-item -->
38
+ <li>Consectetur adipiscing<br>elit</li>
39
+ <!-- /wp:list-item -->
40
+
41
+ <!-- wp:list-item -->
42
+ <li>Integer nec odio</li>
43
+ <!-- /wp:list-item --></ul>
44
+ <!-- /wp:list -->
45
+
46
+ <!-- wp:heading -->
47
+ <h2 class="wp-block-heading">Details</h2>
48
+ <!-- /wp:heading -->
49
+
50
+ <!-- wp:list {"ordered":true} -->
51
+ <ol class="wp-block-list"><!-- wp:list-item -->
52
+ <li>Sed cursus ante dapibus diam</li>
53
+ <!-- /wp:list-item -->
54
+
55
+ <!-- wp:list-item -->
56
+ <li>Nulla quis sem at nibh elementum imperdiet</li>
57
+ <!-- /wp:list-item -->
58
+
59
+ <!-- wp:list-item -->
60
+ <li>Duis sagittis ipsum <code>## Mixed Lists</code></li>
61
+ <!-- /wp:list-item --></ol>
62
+ <!-- /wp:list -->
63
+
64
+ <!-- wp:list -->
65
+ <ul class="wp-block-list"><!-- wp:list-item -->
66
+ <li>Key Points:</li>
67
+ <!-- /wp:list-item --></ul>
68
+ <!-- /wp:list -->
69
+
70
+ <!-- wp:list {"ordered":true} -->
71
+ <ol class="wp-block-list"><!-- wp:list-item -->
72
+ <li>Lorem ipsum dolor sit amet</li>
73
+ <!-- /wp:list-item -->
74
+
75
+ <!-- wp:list-item -->
76
+ <li><br>Consectetur adipiscing elit</li>
77
+ <!-- /wp:list-item -->
78
+
79
+ <!-- wp:list-item -->
80
+ <li>Integer nec odio</li>
81
+ <!-- /wp:list-item --></ol>
82
+ <!-- /wp:list -->
83
+
84
+ <!-- wp:list -->
85
+ <ul class="wp-block-list"><!-- wp:list-item -->
86
+ <li>Additional Info:<br>-<br>Sed cursus ante dapibus diam</li>
87
+ <!-- /wp:list-item -->
88
+
89
+ <!-- wp:list-item -->
90
+ <li>Nulla quis sem at nibh elementum imperdiet</li>
91
+ <!-- /wp:list-item --></ul>
92
+ <!-- /wp:list -->"
93
+ `;