@wordpress/edit-post 7.35.0 → 8.0.1

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 (204) 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 +59 -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 +93 -155
  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 +24 -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 +51 -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 +98 -158
  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 +26 -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 +41 -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/init-pattern-modal/index.js +1 -4
  129. package/src/components/layout/index.js +88 -202
  130. package/src/components/layout/style.scss +9 -17
  131. package/src/components/layout/use-should-iframe.js +40 -0
  132. package/src/components/{header/more-menu → more-menu}/index.js +2 -2
  133. package/src/components/preferences-modal/enable-custom-fields.js +1 -0
  134. package/src/index.js +11 -6
  135. package/src/store/selectors.js +8 -5
  136. package/src/style.scss +2 -5
  137. package/src/test/__snapshots__/editor.native.js.snap +72 -0
  138. package/src/test/editor.native.js +77 -0
  139. package/build/components/header/fullscreen-mode-close/index.js.map +0 -1
  140. package/build/components/header/index.js +0 -69
  141. package/build/components/header/index.js.map +0 -1
  142. package/build/components/header/main-dashboard-button/index.js +0 -33
  143. package/build/components/header/main-dashboard-button/index.js.map +0 -1
  144. package/build/components/header/more-menu/index.js +0 -43
  145. package/build/components/header/more-menu/index.js.map +0 -1
  146. package/build/components/header/more-menu/manage-patterns-menu-item.js.map +0 -1
  147. package/build/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  148. package/build/components/text-editor/index.js +0 -61
  149. package/build/components/text-editor/index.js.map +0 -1
  150. package/build/components/visual-editor/block-inspector-button.js +0 -55
  151. package/build/components/visual-editor/block-inspector-button.js.map +0 -1
  152. package/build/components/visual-editor/index.js +0 -98
  153. package/build/components/visual-editor/index.js.map +0 -1
  154. package/build/components/visual-editor/use-padding-appender.js.map +0 -1
  155. package/build/hooks/commands/use-common-commands.js +0 -119
  156. package/build/hooks/commands/use-common-commands.js.map +0 -1
  157. package/build/hooks/components/index.js +0 -11
  158. package/build/hooks/components/index.js.map +0 -1
  159. package/build/hooks/index.js +0 -5
  160. package/build/hooks/index.js.map +0 -1
  161. package/build/hooks/validate-multiple-use/index.js +0 -134
  162. package/build/hooks/validate-multiple-use/index.js.map +0 -1
  163. package/build-module/components/header/fullscreen-mode-close/index.js.map +0 -1
  164. package/build-module/components/header/index.js +0 -61
  165. package/build-module/components/header/index.js.map +0 -1
  166. package/build-module/components/header/main-dashboard-button/index.js +0 -26
  167. package/build-module/components/header/main-dashboard-button/index.js.map +0 -1
  168. package/build-module/components/header/more-menu/index.js +0 -35
  169. package/build-module/components/header/more-menu/index.js.map +0 -1
  170. package/build-module/components/header/more-menu/manage-patterns-menu-item.js.map +0 -1
  171. package/build-module/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  172. package/build-module/components/text-editor/index.js +0 -54
  173. package/build-module/components/text-editor/index.js.map +0 -1
  174. package/build-module/components/visual-editor/block-inspector-button.js +0 -47
  175. package/build-module/components/visual-editor/block-inspector-button.js.map +0 -1
  176. package/build-module/components/visual-editor/index.js +0 -90
  177. package/build-module/components/visual-editor/index.js.map +0 -1
  178. package/build-module/components/visual-editor/use-padding-appender.js.map +0 -1
  179. package/build-module/hooks/commands/use-common-commands.js +0 -112
  180. package/build-module/hooks/commands/use-common-commands.js.map +0 -1
  181. package/build-module/hooks/components/index.js +0 -8
  182. package/build-module/hooks/components/index.js.map +0 -1
  183. package/build-module/hooks/index.js +0 -6
  184. package/build-module/hooks/index.js.map +0 -1
  185. package/build-module/hooks/validate-multiple-use/index.js +0 -132
  186. package/build-module/hooks/validate-multiple-use/index.js.map +0 -1
  187. package/src/components/header/index.js +0 -53
  188. package/src/components/header/main-dashboard-button/index.js +0 -28
  189. package/src/components/header/style.scss +0 -14
  190. package/src/components/text-editor/index.js +0 -63
  191. package/src/components/text-editor/style.scss +0 -71
  192. package/src/components/visual-editor/block-inspector-button.js +0 -59
  193. package/src/components/visual-editor/index.js +0 -108
  194. package/src/components/visual-editor/style.scss +0 -53
  195. package/src/hooks/commands/use-common-commands.js +0 -126
  196. package/src/hooks/components/index.js +0 -13
  197. package/src/hooks/index.js +0 -5
  198. package/src/hooks/validate-multiple-use/index.js +0 -163
  199. /package/build/components/{visual-editor → layout}/use-padding-appender.js +0 -0
  200. /package/build-module/components/{visual-editor → layout}/use-padding-appender.js +0 -0
  201. /package/src/components/{header/fullscreen-mode-close/test/__snapshots__/index.js.snap → back-button/test/__snapshots__/fullscreen-mode-close.js.snap} +0 -0
  202. /package/src/components/{visual-editor → layout}/use-padding-appender.js +0 -0
  203. /package/src/components/{header/more-menu → more-menu}/manage-patterns-menu-item.js +0 -0
  204. /package/src/components/{header/more-menu → more-menu}/welcome-guide-menu-item.js +0 -0
@@ -10,26 +10,19 @@ 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
- import { useViewportMatch } from '@wordpress/compose';
29
23
  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';
24
+ import { __, sprintf } from '@wordpress/i18n';
25
+ import { useCallback, useMemo } from '@wordpress/element';
33
26
  import { store as noticesStore } from '@wordpress/notices';
34
27
  import { store as preferencesStore } from '@wordpress/preferences';
35
28
  import { privateApis as commandsPrivateApis } from '@wordpress/commands';
@@ -40,55 +33,54 @@ import { addQueryArgs } from '@wordpress/url';
40
33
  /**
41
34
  * Internal dependencies
42
35
  */
43
- import TextEditor from '../text-editor';
44
- import VisualEditor from '../visual-editor';
36
+ import BackButton from '../back-button';
45
37
  import EditPostKeyboardShortcuts from '../keyboard-shortcuts';
46
38
  import InitPatternModal from '../init-pattern-modal';
47
39
  import BrowserURL from '../browser-url';
48
- import Header from '../header';
49
40
  import MetaBoxes from '../meta-boxes';
41
+ import PostEditorMoreMenu from '../more-menu';
50
42
  import WelcomeGuide from '../welcome-guide';
51
43
  import { store as editPostStore } from '../../store';
52
44
  import { unlock } from '../../lock-unlock';
53
- import useCommonCommands from '../../hooks/commands/use-common-commands';
45
+ import useEditPostCommands from '../../commands/use-commands';
46
+ import { usePaddingAppender } from './use-padding-appender';
47
+ import { useShouldIframe } from './use-should-iframe';
54
48
 
55
49
  const { getLayoutStyles } = unlock( blockEditorPrivateApis );
56
50
  const { useCommands } = unlock( coreCommandsPrivateApis );
57
51
  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 );
52
+ const { EditorInterface, FullscreenMode, Sidebar } =
53
+ unlock( editorPrivateApis );
68
54
  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
- };
55
+ const DESIGN_POST_TYPES = [
56
+ 'wp_template',
57
+ 'wp_template_part',
58
+ 'wp_block',
59
+ 'wp_navigation',
60
+ ];
82
61
 
83
62
  function useEditorStyles() {
84
- const { hasThemeStyleSupport, editorSettings } = useSelect(
85
- ( select ) => ( {
63
+ const {
64
+ hasThemeStyleSupport,
65
+ editorSettings,
66
+ isZoomedOutView,
67
+ hasMetaBoxes,
68
+ renderingMode,
69
+ postType,
70
+ } = useSelect( ( select ) => {
71
+ const { __unstableGetEditorMode } = select( blockEditorStore );
72
+ const { getCurrentPostType, getRenderingMode } = select( editorStore );
73
+ const _postType = getCurrentPostType();
74
+ return {
86
75
  hasThemeStyleSupport:
87
76
  select( editPostStore ).isFeatureActive( 'themeStyles' ),
88
77
  editorSettings: select( editorStore ).getEditorSettings(),
89
- } ),
90
- []
91
- );
78
+ isZoomedOutView: __unstableGetEditorMode() === 'zoom-out',
79
+ hasMetaBoxes: select( editPostStore ).hasMetaBoxes(),
80
+ renderingMode: getRenderingMode(),
81
+ postType: _postType,
82
+ };
83
+ }, [] );
92
84
 
93
85
  // Compute the default styles.
94
86
  return useMemo( () => {
@@ -122,110 +114,84 @@ function useEditorStyles() {
122
114
  } );
123
115
  }
124
116
 
125
- return hasThemeStyles ? editorSettings.styles : defaultEditorStyles;
117
+ const baseStyles = hasThemeStyles
118
+ ? editorSettings.styles ?? []
119
+ : defaultEditorStyles;
120
+
121
+ // Add a constant padding for the typewriter effect. When typing at the
122
+ // bottom, there needs to be room to scroll up.
123
+ if (
124
+ ! isZoomedOutView &&
125
+ ! hasMetaBoxes &&
126
+ renderingMode === 'post-only' &&
127
+ ! DESIGN_POST_TYPES.includes( postType )
128
+ ) {
129
+ return [
130
+ ...baseStyles,
131
+ {
132
+ css: 'body{padding-bottom: 40vh}',
133
+ },
134
+ ];
135
+ }
136
+
137
+ return baseStyles;
126
138
  }, [
127
139
  editorSettings.defaultEditorStyles,
128
140
  editorSettings.disableLayoutStyles,
129
141
  editorSettings.styles,
130
142
  hasThemeStyleSupport,
143
+ postType,
131
144
  ] );
132
145
  }
133
146
 
134
147
  function Layout( { initialPost } ) {
135
148
  useCommands();
136
- useCommonCommands();
137
-
138
- const isMobileViewport = useViewportMatch( 'medium', '<' );
139
- const isWideViewport = useViewportMatch( 'large' );
140
- const isLargeViewport = useViewportMatch( 'medium' );
141
-
142
- const { closeGeneralSidebar } = useDispatch( editPostStore );
149
+ useEditPostCommands();
150
+ const paddingAppenderRef = usePaddingAppender();
151
+ const shouldIframe = useShouldIframe();
143
152
  const { createErrorNotice } = useDispatch( noticesStore );
144
153
  const {
145
154
  mode,
146
155
  isFullscreenActive,
147
- isRichEditingEnabled,
148
- sidebarIsOpened,
149
156
  hasActiveMetaboxes,
150
- previousShortcut,
151
- nextShortcut,
152
157
  hasBlockSelected,
153
- isInserterOpened,
154
- isListViewOpened,
155
158
  showIconLabels,
156
159
  isDistractionFree,
157
- 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' ),
190
- showIconLabels: get( 'core', 'showIconLabels' ),
191
- isDistractionFree: get( 'core', 'distractionFree' ),
192
- showBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),
193
- // translators: Default label for the Document in the Block Breadcrumb.
194
- documentLabel: postTypeLabel || _x( 'Document', 'noun' ),
195
174
  hasBlockSelected:
196
175
  !! select( blockEditorStore ).getBlockSelectionStart(),
176
+ showIconLabels: get( 'core', 'showIconLabels' ),
177
+ isDistractionFree: get( 'core', 'distractionFree' ),
178
+ showMetaBoxes:
179
+ select( editorStore ).getRenderingMode() === 'post-only',
197
180
  hasHistory: !! getEditorSettings().onNavigateToPreviousEntityRecord,
198
- hasBlockBreadcrumbs: get( 'core', 'showBlockBreadcrumbs' ),
199
- blockEditorMode:
200
- select( blockEditorStore ).__unstableGetEditorMode(),
201
181
  isEditingTemplate:
202
182
  select( editorStore ).getCurrentPostType() === 'wp_template',
183
+ isWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),
203
184
  };
204
185
  }, [] );
205
186
 
206
187
  // Set the right context for the command palette
207
188
  const commandContext = hasBlockSelected
208
189
  ? 'block-selection-edit'
209
- : 'post-editor-edit';
190
+ : 'entity-edit';
210
191
  useCommandContext( commandContext );
211
192
 
212
193
  const styles = useEditorStyles();
213
194
 
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
195
  // We need to add the show-icon-labels class to the body element so it is applied to modals.
230
196
  if ( showIconLabels ) {
231
197
  document.body.classList.add( 'show-icon-labels' );
@@ -234,34 +200,9 @@ function Layout( { initialPost } ) {
234
200
  }
235
201
 
236
202
  const className = clsx( 'edit-post-layout', 'is-mode-' + mode, {
237
- 'is-sidebar-opened': sidebarIsOpened,
238
203
  'has-metaboxes': hasActiveMetaboxes,
239
- 'is-distraction-free': isDistractionFree && isWideViewport,
240
- 'is-entity-save-view-open': !! entitiesSavedStatesCallback,
241
- 'has-block-breadcrumbs':
242
- hasBlockBreadcrumbs && ! isDistractionFree && isWideViewport,
243
204
  } );
244
205
 
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
206
  function onPluginAreaError( name ) {
266
207
  createErrorNotice(
267
208
  sprintf(
@@ -335,82 +276,7 @@ function Layout( { initialPost } ) {
335
276
  <LocalAutosaveMonitor />
336
277
  <EditPostKeyboardShortcuts />
337
278
  <EditorKeyboardShortcutsRegister />
338
- <EditorKeyboardShortcuts />
339
279
  <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
280
  <WelcomeGuide />
415
281
  <InitPatternModal />
416
282
  <PluginArea onError={ onPluginAreaError } />
@@ -422,6 +288,26 @@ function Layout( { initialPost } ) {
422
288
  }
423
289
  />
424
290
  ) }
291
+ <PostEditorMoreMenu />
292
+ <BackButton initialPost={ initialPost } />
293
+ <EditorSnackbars />
294
+ <EditorInterface
295
+ className={ className }
296
+ styles={ styles }
297
+ forceIsDirty={ hasActiveMetaboxes }
298
+ contentRef={ paddingAppenderRef }
299
+ disableIframe={ ! shouldIframe }
300
+ // We should auto-focus the canvas (title) on load.
301
+ // eslint-disable-next-line jsx-a11y/no-autofocus
302
+ autoFocus={ ! isWelcomeGuideVisible }
303
+ >
304
+ { ! isDistractionFree && showMetaBoxes && (
305
+ <div className="edit-post-layout__metaboxes">
306
+ <MetaBoxes location="normal" />
307
+ <MetaBoxes location="advanced" />
308
+ </div>
309
+ ) }
310
+ </EditorInterface>
425
311
  </>
426
312
  );
427
313
  }
@@ -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
 
@@ -42,6 +42,7 @@ export function CustomFieldsConfirmation( { willEnable } ) {
42
42
  className="edit-post-preferences-modal__custom-fields-confirmation-button"
43
43
  variant="secondary"
44
44
  isBusy={ isReloading }
45
+ __experimentalIsFocusable
45
46
  disabled={ isReloading }
46
47
  onClick={ () => {
47
48
  setIsReloading( true );
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
+ `;