@wordpress/edit-post 6.15.0 → 6.15.1-next.4d3b314fd5.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.
- package/build/components/visual-editor/index.js +81 -20
- package/build/components/visual-editor/index.js.map +1 -1
- package/build-module/components/visual-editor/index.js +81 -21
- package/build-module/components/visual-editor/index.js.map +1 -1
- package/package.json +27 -27
- package/src/components/visual-editor/index.js +110 -21
|
@@ -25,6 +25,8 @@ var _icons = require("@wordpress/icons");
|
|
|
25
25
|
|
|
26
26
|
var _i18n = require("@wordpress/i18n");
|
|
27
27
|
|
|
28
|
+
var _blocks = require("@wordpress/blocks");
|
|
29
|
+
|
|
28
30
|
var _blockInspectorButton = _interopRequireDefault(require("./block-inspector-button"));
|
|
29
31
|
|
|
30
32
|
var _store = require("../../store");
|
|
@@ -80,8 +82,35 @@ function MaybeIframe(_ref) {
|
|
|
80
82
|
name: "editor-canvas"
|
|
81
83
|
}, children);
|
|
82
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Given an array of nested blocks, find the first Post Content
|
|
87
|
+
* block inside it, recursing through any nesting levels.
|
|
88
|
+
*
|
|
89
|
+
* @param {Array} blocks A list of blocks.
|
|
90
|
+
*
|
|
91
|
+
* @return {Object} The Post Content block.
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
function findPostContent(blocks) {
|
|
96
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
97
|
+
if (blocks[i].name === 'core/post-content') {
|
|
98
|
+
return blocks[i];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (blocks[i].innerBlocks.length) {
|
|
102
|
+
const nestedPostContent = findPostContent(blocks[i].innerBlocks);
|
|
103
|
+
|
|
104
|
+
if (nestedPostContent) {
|
|
105
|
+
return nestedPostContent;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
83
110
|
|
|
84
111
|
function VisualEditor(_ref2) {
|
|
112
|
+
var _postContentBlock$att;
|
|
113
|
+
|
|
85
114
|
let {
|
|
86
115
|
styles
|
|
87
116
|
} = _ref2;
|
|
@@ -89,17 +118,20 @@ function VisualEditor(_ref2) {
|
|
|
89
118
|
deviceType,
|
|
90
119
|
isWelcomeGuideVisible,
|
|
91
120
|
isTemplateMode,
|
|
121
|
+
editedPostTemplate = {},
|
|
92
122
|
wrapperBlockName,
|
|
93
123
|
wrapperUniqueId
|
|
94
124
|
} = (0, _data.useSelect)(select => {
|
|
95
125
|
const {
|
|
96
126
|
isFeatureActive,
|
|
97
127
|
isEditingTemplate,
|
|
98
|
-
__experimentalGetPreviewDeviceType
|
|
128
|
+
__experimentalGetPreviewDeviceType,
|
|
129
|
+
getEditedPostTemplate
|
|
99
130
|
} = select(_store.store);
|
|
100
131
|
const {
|
|
101
132
|
getCurrentPostId,
|
|
102
|
-
getCurrentPostType
|
|
133
|
+
getCurrentPostType,
|
|
134
|
+
getEditorSettings
|
|
103
135
|
} = select(_editor.store);
|
|
104
136
|
|
|
105
137
|
const _isTemplateMode = isEditingTemplate();
|
|
@@ -112,10 +144,14 @@ function VisualEditor(_ref2) {
|
|
|
112
144
|
_wrapperBlockName = 'core/post-content';
|
|
113
145
|
}
|
|
114
146
|
|
|
147
|
+
const supportsTemplateMode = getEditorSettings().supportsTemplateMode;
|
|
115
148
|
return {
|
|
116
149
|
deviceType: __experimentalGetPreviewDeviceType(),
|
|
117
150
|
isWelcomeGuideVisible: isFeatureActive('welcomeGuide'),
|
|
118
151
|
isTemplateMode: _isTemplateMode,
|
|
152
|
+
// Post template fetch returns a 404 on classic themes, which
|
|
153
|
+
// messes with e2e tests, so we check it's a block theme first.
|
|
154
|
+
editedPostTemplate: supportsTemplateMode ? getEditedPostTemplate() : {},
|
|
119
155
|
wrapperBlockName: _wrapperBlockName,
|
|
120
156
|
wrapperUniqueId: getCurrentPostId()
|
|
121
157
|
};
|
|
@@ -128,18 +164,14 @@ function VisualEditor(_ref2) {
|
|
|
128
164
|
themeHasDisabledLayoutStyles,
|
|
129
165
|
themeSupportsLayout,
|
|
130
166
|
assets,
|
|
131
|
-
useRootPaddingAwareAlignments,
|
|
132
167
|
isFocusMode
|
|
133
168
|
} = (0, _data.useSelect)(select => {
|
|
134
|
-
var _settings$__experimen;
|
|
135
|
-
|
|
136
169
|
const _settings = select(_blockEditor.store).getSettings();
|
|
137
170
|
|
|
138
171
|
return {
|
|
139
172
|
themeHasDisabledLayoutStyles: _settings.disableLayoutStyles,
|
|
140
173
|
themeSupportsLayout: _settings.supportsLayout,
|
|
141
174
|
assets: _settings.__unstableResolvedAssets,
|
|
142
|
-
useRootPaddingAwareAlignments: (_settings$__experimen = _settings.__experimentalFeatures) === null || _settings$__experimen === void 0 ? void 0 : _settings$__experimen.useRootPaddingAwareAlignments,
|
|
143
175
|
isFocusMode: _settings.focusMode
|
|
144
176
|
};
|
|
145
177
|
}, []);
|
|
@@ -165,7 +197,7 @@ function VisualEditor(_ref2) {
|
|
|
165
197
|
borderBottom: 0
|
|
166
198
|
};
|
|
167
199
|
const resizedCanvasStyles = (0, _blockEditor.__experimentalUseResizeCanvas)(deviceType, isTemplateMode);
|
|
168
|
-
const
|
|
200
|
+
const globalLayoutSettings = (0, _blockEditor.useSetting)('layout');
|
|
169
201
|
const previewMode = 'is-' + deviceType.toLowerCase() + '-preview';
|
|
170
202
|
let animatedStyles = isTemplateMode ? templateModeStyles : desktopCanvasStyles;
|
|
171
203
|
|
|
@@ -182,8 +214,10 @@ function VisualEditor(_ref2) {
|
|
|
182
214
|
|
|
183
215
|
const ref = (0, _element.useRef)();
|
|
184
216
|
const contentRef = (0, _compose.useMergeRefs)([ref, (0, _blockEditor.__unstableUseClipboardHandler)(), (0, _blockEditor.__unstableUseTypewriter)(), (0, _blockEditor.__unstableUseTypingObserver)(), (0, _blockEditor.__unstableUseBlockSelectionClearer)()]);
|
|
185
|
-
const blockSelectionClearerRef = (0, _blockEditor.__unstableUseBlockSelectionClearer)();
|
|
186
|
-
|
|
217
|
+
const blockSelectionClearerRef = (0, _blockEditor.__unstableUseBlockSelectionClearer)(); // fallbackLayout is used if there is no Post Content,
|
|
218
|
+
// and for Post Title.
|
|
219
|
+
|
|
220
|
+
const fallbackLayout = (0, _element.useMemo)(() => {
|
|
187
221
|
if (isTemplateMode) {
|
|
188
222
|
return {
|
|
189
223
|
type: 'default'
|
|
@@ -193,7 +227,7 @@ function VisualEditor(_ref2) {
|
|
|
193
227
|
if (themeSupportsLayout) {
|
|
194
228
|
// We need to ensure support for wide and full alignments,
|
|
195
229
|
// so we add the constrained type.
|
|
196
|
-
return { ...
|
|
230
|
+
return { ...globalLayoutSettings,
|
|
197
231
|
type: 'constrained'
|
|
198
232
|
};
|
|
199
233
|
} // Set default layout for classic themes so all alignments are supported.
|
|
@@ -202,12 +236,35 @@ function VisualEditor(_ref2) {
|
|
|
202
236
|
return {
|
|
203
237
|
type: 'default'
|
|
204
238
|
};
|
|
205
|
-
}, [isTemplateMode, themeSupportsLayout,
|
|
239
|
+
}, [isTemplateMode, themeSupportsLayout, globalLayoutSettings]);
|
|
240
|
+
const postContentBlock = (0, _element.useMemo)(() => {
|
|
241
|
+
// When in template editing mode, we can access the blocks directly.
|
|
242
|
+
if (editedPostTemplate !== null && editedPostTemplate !== void 0 && editedPostTemplate.blocks) {
|
|
243
|
+
return findPostContent(editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.blocks);
|
|
244
|
+
} // If there are no blocks, we have to parse the content string.
|
|
245
|
+
// Best double-check it's a string otherwise the parse function gets unhappy.
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
const parseableContent = typeof (editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.content) === 'string' ? editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.content : '';
|
|
249
|
+
return findPostContent((0, _blocks.parse)(parseableContent)) || {};
|
|
250
|
+
}, [editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.content, editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.blocks]);
|
|
251
|
+
const postContentLayoutClasses = (0, _blockEditor.__experimentaluseLayoutClasses)(postContentBlock);
|
|
206
252
|
const blockListLayoutClass = (0, _classnames.default)({
|
|
207
|
-
'is-layout-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
253
|
+
'is-layout-flow': !themeSupportsLayout
|
|
254
|
+
}, themeSupportsLayout && postContentLayoutClasses);
|
|
255
|
+
const postContentLayoutStyles = (0, _blockEditor.__experimentaluseLayoutStyles)(postContentBlock, '.block-editor-block-list__layout.is-root-container');
|
|
256
|
+
const layout = (postContentBlock === null || postContentBlock === void 0 ? void 0 : (_postContentBlock$att = postContentBlock.attributes) === null || _postContentBlock$att === void 0 ? void 0 : _postContentBlock$att.layout) || {}; // Update type for blocks using legacy layouts.
|
|
257
|
+
|
|
258
|
+
const postContentLayout = layout && ((layout === null || layout === void 0 ? void 0 : layout.type) === 'constrained' || layout !== null && layout !== void 0 && layout.inherit || layout !== null && layout !== void 0 && layout.contentSize || layout !== null && layout !== void 0 && layout.wideSize) ? { ...globalLayoutSettings,
|
|
259
|
+
...layout,
|
|
260
|
+
type: 'constrained'
|
|
261
|
+
} : { ...globalLayoutSettings,
|
|
262
|
+
...layout,
|
|
263
|
+
type: 'default'
|
|
264
|
+
}; // If there is a Post Content block we use its layout for the block list;
|
|
265
|
+
// if not, this must be a classic theme, in which case we use the fallback layout.
|
|
266
|
+
|
|
267
|
+
const blockListLayout = postContentBlock ? postContentLayout : fallbackLayout;
|
|
211
268
|
const titleRef = (0, _element.useRef)();
|
|
212
269
|
(0, _element.useEffect)(() => {
|
|
213
270
|
var _titleRef$current;
|
|
@@ -248,11 +305,15 @@ function VisualEditor(_ref2) {
|
|
|
248
305
|
style: {
|
|
249
306
|
paddingBottom
|
|
250
307
|
}
|
|
251
|
-
}, themeSupportsLayout && !themeHasDisabledLayoutStyles && !isTemplateMode && (0, _element.createElement)(_blockEditor.__experimentalLayoutStyle, {
|
|
308
|
+
}, themeSupportsLayout && !themeHasDisabledLayoutStyles && !isTemplateMode && (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_blockEditor.__experimentalLayoutStyle, {
|
|
252
309
|
selector: ".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container",
|
|
253
|
-
layout:
|
|
254
|
-
layoutDefinitions:
|
|
255
|
-
}),
|
|
310
|
+
layout: fallbackLayout,
|
|
311
|
+
layoutDefinitions: globalLayoutSettings === null || globalLayoutSettings === void 0 ? void 0 : globalLayoutSettings.definitions
|
|
312
|
+
}), postContentLayoutStyles && (0, _element.createElement)(_blockEditor.__experimentalLayoutStyle, {
|
|
313
|
+
layout: postContentLayout,
|
|
314
|
+
css: postContentLayoutStyles,
|
|
315
|
+
layoutDefinitions: globalLayoutSettings === null || globalLayoutSettings === void 0 ? void 0 : globalLayoutSettings.definitions
|
|
316
|
+
})), !isTemplateMode && (0, _element.createElement)("div", {
|
|
256
317
|
className: (0, _classnames.default)('edit-post-visual-editor__post-title-wrapper', {
|
|
257
318
|
'is-focus-mode': isFocusMode
|
|
258
319
|
}),
|
|
@@ -265,7 +326,7 @@ function VisualEditor(_ref2) {
|
|
|
265
326
|
}, (0, _element.createElement)(_blockEditor.BlockList, {
|
|
266
327
|
className: isTemplateMode ? 'wp-site-blocks' : `${blockListLayoutClass} wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.
|
|
267
328
|
,
|
|
268
|
-
__experimentalLayout:
|
|
329
|
+
__experimentalLayout: blockListLayout
|
|
269
330
|
}))))), (0, _element.createElement)(_blockEditor.__unstableBlockSettingsMenuFirstItem, null, _ref3 => {
|
|
270
331
|
let {
|
|
271
332
|
onClose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/edit-post/src/components/visual-editor/index.js"],"names":["MaybeIframe","children","contentRef","shouldIframe","styles","assets","style","ref","flex","width","height","display","VisualEditor","deviceType","isWelcomeGuideVisible","isTemplateMode","wrapperBlockName","wrapperUniqueId","select","isFeatureActive","isEditingTemplate","__experimentalGetPreviewDeviceType","editPostStore","getCurrentPostId","getCurrentPostType","editorStore","_isTemplateMode","_wrapperBlockName","isCleanNewPost","hasMetaBoxes","themeHasDisabledLayoutStyles","themeSupportsLayout","useRootPaddingAwareAlignments","isFocusMode","_settings","blockEditorStore","getSettings","disableLayoutStyles","supportsLayout","__unstableResolvedAssets","__experimentalFeatures","focusMode","clearSelectedBlock","setIsEditingTemplate","desktopCanvasStyles","margin","flexFlow","background","templateModeStyles","borderRadius","border","borderBottom","resizedCanvasStyles","defaultLayout","previewMode","toLowerCase","animatedStyles","paddingBottom","blockSelectionClearerRef","layout","type","blockListLayoutClass","titleRef","current","focus","padding","arrowLeft","definitions","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tVisualEditorGlobalKeyboardShortcuts,\n\tPostTitle,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tWritingFlow,\n\tBlockList,\n\tBlockTools,\n\tstore as blockEditorStore,\n\t__unstableUseBlockSelectionClearer as useBlockSelectionClearer,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseClipboardHandler as useClipboardHandler,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\tuseSetting,\n\t__experimentalLayoutStyle as LayoutStyle,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableIframe as Iframe,\n\t__experimentalRecursionProvider as RecursionProvider,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { Button, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockInspectorButton from './block-inspector-button';\nimport { store as editPostStore } from '../../store';\n\nfunction MaybeIframe( {\n\tchildren,\n\tcontentRef,\n\tshouldIframe,\n\tstyles,\n\tassets,\n\tstyle,\n} ) {\n\tconst ref = useMouseMoveTypingReset();\n\n\tif ( ! shouldIframe ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EditorStyles styles={ styles } />\n\t\t\t\t<WritingFlow\n\t\t\t\t\tref={ contentRef }\n\t\t\t\t\tclassName=\"editor-styles-wrapper\"\n\t\t\t\t\tstyle={ { flex: '1', ...style } }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</WritingFlow>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Iframe\n\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\tassets={ assets }\n\t\t\tref={ ref }\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyle={ { width: '100%', height: '100%', display: 'block' } }\n\t\t\tname=\"editor-canvas\"\n\t\t>\n\t\t\t{ children }\n\t\t</Iframe>\n\t);\n}\n\nexport default function VisualEditor( { styles } ) {\n\tconst {\n\t\tdeviceType,\n\t\tisWelcomeGuideVisible,\n\t\tisTemplateMode,\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisFeatureActive,\n\t\t\tisEditingTemplate,\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t} = select( editPostStore );\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( getCurrentPostType() === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _isTemplateMode ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tisWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst hasMetaBoxes = useSelect(\n\t\t( select ) => select( editPostStore ).hasMetaBoxes(),\n\t\t[]\n\t);\n\tconst {\n\t\tthemeHasDisabledLayoutStyles,\n\t\tthemeSupportsLayout,\n\t\tassets,\n\t\tuseRootPaddingAwareAlignments,\n\t\tisFocusMode,\n\t} = useSelect( ( select ) => {\n\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\tassets: _settings.__unstableResolvedAssets,\n\t\t\tuseRootPaddingAwareAlignments:\n\t\t\t\t_settings.__experimentalFeatures?.useRootPaddingAwareAlignments,\n\t\t\tisFocusMode: _settings.focusMode,\n\t\t};\n\t}, [] );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst desktopCanvasStyles = {\n\t\theight: '100%',\n\t\twidth: '100%',\n\t\tmargin: 0,\n\t\tdisplay: 'flex',\n\t\tflexFlow: 'column',\n\t\t// Default background color so that grey\n\t\t// .edit-post-editor-regions__content color doesn't show through.\n\t\tbackground: 'white',\n\t};\n\tconst templateModeStyles = {\n\t\t...desktopCanvasStyles,\n\t\tborderRadius: '2px 2px 0 0',\n\t\tborder: '1px solid #ddd',\n\t\tborderBottom: 0,\n\t};\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, isTemplateMode );\n\tconst defaultLayout = useSetting( 'layout' );\n\tconst previewMode = 'is-' + deviceType.toLowerCase() + '-preview';\n\n\tlet animatedStyles = isTemplateMode\n\t\t? templateModeStyles\n\t\t: desktopCanvasStyles;\n\tif ( resizedCanvasStyles ) {\n\t\tanimatedStyles = resizedCanvasStyles;\n\t}\n\n\tlet paddingBottom;\n\n\t// Add a constant padding for the typewritter effect. When typing at the\n\t// bottom, there needs to be room to scroll up.\n\tif ( ! hasMetaBoxes && ! resizedCanvasStyles && ! isTemplateMode ) {\n\t\tpaddingBottom = '40vh';\n\t}\n\n\tconst ref = useRef();\n\tconst contentRef = useMergeRefs( [\n\t\tref,\n\t\tuseClipboardHandler(),\n\t\tuseTypewriter(),\n\t\tuseTypingObserver(),\n\t\tuseBlockSelectionClearer(),\n\t] );\n\n\tconst blockSelectionClearerRef = useBlockSelectionClearer();\n\n\tconst layout = useMemo( () => {\n\t\tif ( isTemplateMode ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...defaultLayout, type: 'constrained' };\n\t\t}\n\t\t// Set default layout for classic themes so all alignments are supported.\n\t\treturn { type: 'default' };\n\t}, [ isTemplateMode, themeSupportsLayout, defaultLayout ] );\n\n\tconst blockListLayoutClass = classnames( {\n\t\t'is-layout-constrained': themeSupportsLayout,\n\t\t'is-layout-flow': ! themeSupportsLayout,\n\t\t'has-global-padding': useRootPaddingAwareAlignments,\n\t} );\n\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( isWelcomeGuideVisible || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ isWelcomeGuideVisible, isCleanNewPost ] );\n\n\treturn (\n\t\t<BlockTools\n\t\t\t__unstableContentRef={ ref }\n\t\t\tclassName={ classnames( 'edit-post-visual-editor', {\n\t\t\t\t'is-template-mode': isTemplateMode,\n\t\t\t} ) }\n\t\t>\n\t\t\t<VisualEditorGlobalKeyboardShortcuts />\n\t\t\t<motion.div\n\t\t\t\tclassName=\"edit-post-visual-editor__content-area\"\n\t\t\t\tanimate={ {\n\t\t\t\t\tpadding: isTemplateMode ? '48px 48px 0' : '0',\n\t\t\t\t} }\n\t\t\t\tref={ blockSelectionClearerRef }\n\t\t\t>\n\t\t\t\t{ isTemplateMode && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"edit-post-visual-editor__exit-template-mode\"\n\t\t\t\t\t\ticon={ arrowLeft }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t<motion.div\n\t\t\t\t\tanimate={ animatedStyles }\n\t\t\t\t\tinitial={ desktopCanvasStyles }\n\t\t\t\t\tclassName={ previewMode }\n\t\t\t\t>\n\t\t\t\t\t<MaybeIframe\n\t\t\t\t\t\tshouldIframe={\n\t\t\t\t\t\t\tisTemplateMode ||\n\t\t\t\t\t\t\tdeviceType === 'Tablet' ||\n\t\t\t\t\t\t\tdeviceType === 'Mobile'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\t\tstyles={ styles }\n\t\t\t\t\t\tassets={ assets }\n\t\t\t\t\t\tstyle={ { paddingBottom } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ themeSupportsLayout &&\n\t\t\t\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\t\t\t\t! isTemplateMode && (\n\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\tselector=\".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\tdefaultLayout?.definitions\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'edit-post-visual-editor__post-title-wrapper',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<RecursionProvider\n\t\t\t\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockList\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\tisTemplateMode\n\t\t\t\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t\t\t\t: `${ blockListLayoutClass } wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__experimentalLayout={ layout }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecursionProvider>\n\t\t\t\t\t</MaybeIframe>\n\t\t\t\t</motion.div>\n\t\t\t</motion.div>\n\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t) }\n\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t</BlockTools>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/edit-post/src/components/visual-editor/index.js"],"names":["MaybeIframe","children","contentRef","shouldIframe","styles","assets","style","ref","flex","width","height","display","findPostContent","blocks","i","length","name","innerBlocks","nestedPostContent","VisualEditor","deviceType","isWelcomeGuideVisible","isTemplateMode","editedPostTemplate","wrapperBlockName","wrapperUniqueId","select","isFeatureActive","isEditingTemplate","__experimentalGetPreviewDeviceType","getEditedPostTemplate","editPostStore","getCurrentPostId","getCurrentPostType","getEditorSettings","editorStore","_isTemplateMode","_wrapperBlockName","supportsTemplateMode","isCleanNewPost","hasMetaBoxes","themeHasDisabledLayoutStyles","themeSupportsLayout","isFocusMode","_settings","blockEditorStore","getSettings","disableLayoutStyles","supportsLayout","__unstableResolvedAssets","focusMode","clearSelectedBlock","setIsEditingTemplate","desktopCanvasStyles","margin","flexFlow","background","templateModeStyles","borderRadius","border","borderBottom","resizedCanvasStyles","globalLayoutSettings","previewMode","toLowerCase","animatedStyles","paddingBottom","blockSelectionClearerRef","fallbackLayout","type","postContentBlock","parseableContent","content","postContentLayoutClasses","blockListLayoutClass","postContentLayoutStyles","layout","attributes","postContentLayout","inherit","contentSize","wideSize","blockListLayout","titleRef","current","focus","padding","arrowLeft","definitions","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tVisualEditorGlobalKeyboardShortcuts,\n\tPostTitle,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tWritingFlow,\n\tBlockList,\n\tBlockTools,\n\tstore as blockEditorStore,\n\t__unstableUseBlockSelectionClearer as useBlockSelectionClearer,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseClipboardHandler as useClipboardHandler,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\tuseSetting,\n\t__experimentalLayoutStyle as LayoutStyle,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableIframe as Iframe,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentaluseLayoutClasses as useLayoutClasses,\n\t__experimentaluseLayoutStyles as useLayoutStyles,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { Button, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockInspectorButton from './block-inspector-button';\nimport { store as editPostStore } from '../../store';\n\nfunction MaybeIframe( {\n\tchildren,\n\tcontentRef,\n\tshouldIframe,\n\tstyles,\n\tassets,\n\tstyle,\n} ) {\n\tconst ref = useMouseMoveTypingReset();\n\n\tif ( ! shouldIframe ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EditorStyles styles={ styles } />\n\t\t\t\t<WritingFlow\n\t\t\t\t\tref={ contentRef }\n\t\t\t\t\tclassName=\"editor-styles-wrapper\"\n\t\t\t\t\tstyle={ { flex: '1', ...style } }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</WritingFlow>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Iframe\n\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\tassets={ assets }\n\t\t\tref={ ref }\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyle={ { width: '100%', height: '100%', display: 'block' } }\n\t\t\tname=\"editor-canvas\"\n\t\t>\n\t\t\t{ children }\n\t\t</Iframe>\n\t);\n}\n\n/**\n * Given an array of nested blocks, find the first Post Content\n * block inside it, recursing through any nesting levels.\n *\n * @param {Array} blocks A list of blocks.\n *\n * @return {Object} The Post Content block.\n */\nfunction findPostContent( blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tif ( blocks[ i ].name === 'core/post-content' ) {\n\t\t\treturn blocks[ i ];\n\t\t}\n\t\tif ( blocks[ i ].innerBlocks.length ) {\n\t\t\tconst nestedPostContent = findPostContent(\n\t\t\t\tblocks[ i ].innerBlocks\n\t\t\t);\n\n\t\t\tif ( nestedPostContent ) {\n\t\t\t\treturn nestedPostContent;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport default function VisualEditor( { styles } ) {\n\tconst {\n\t\tdeviceType,\n\t\tisWelcomeGuideVisible,\n\t\tisTemplateMode,\n\t\teditedPostTemplate = {},\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisFeatureActive,\n\t\t\tisEditingTemplate,\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\tgetEditedPostTemplate,\n\t\t} = select( editPostStore );\n\t\tconst { getCurrentPostId, getCurrentPostType, getEditorSettings } =\n\t\t\tselect( editorStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( getCurrentPostType() === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _isTemplateMode ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\tconst supportsTemplateMode = getEditorSettings().supportsTemplateMode;\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tisWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t\t// Post template fetch returns a 404 on classic themes, which\n\t\t\t// messes with e2e tests, so we check it's a block theme first.\n\t\t\teditedPostTemplate: supportsTemplateMode\n\t\t\t\t? getEditedPostTemplate()\n\t\t\t\t: {},\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst hasMetaBoxes = useSelect(\n\t\t( select ) => select( editPostStore ).hasMetaBoxes(),\n\t\t[]\n\t);\n\tconst {\n\t\tthemeHasDisabledLayoutStyles,\n\t\tthemeSupportsLayout,\n\t\tassets,\n\t\tisFocusMode,\n\t} = useSelect( ( select ) => {\n\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\tassets: _settings.__unstableResolvedAssets,\n\t\t\tisFocusMode: _settings.focusMode,\n\t\t};\n\t}, [] );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst desktopCanvasStyles = {\n\t\theight: '100%',\n\t\twidth: '100%',\n\t\tmargin: 0,\n\t\tdisplay: 'flex',\n\t\tflexFlow: 'column',\n\t\t// Default background color so that grey\n\t\t// .edit-post-editor-regions__content color doesn't show through.\n\t\tbackground: 'white',\n\t};\n\tconst templateModeStyles = {\n\t\t...desktopCanvasStyles,\n\t\tborderRadius: '2px 2px 0 0',\n\t\tborder: '1px solid #ddd',\n\t\tborderBottom: 0,\n\t};\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, isTemplateMode );\n\tconst globalLayoutSettings = useSetting( 'layout' );\n\tconst previewMode = 'is-' + deviceType.toLowerCase() + '-preview';\n\n\tlet animatedStyles = isTemplateMode\n\t\t? templateModeStyles\n\t\t: desktopCanvasStyles;\n\tif ( resizedCanvasStyles ) {\n\t\tanimatedStyles = resizedCanvasStyles;\n\t}\n\n\tlet paddingBottom;\n\n\t// Add a constant padding for the typewritter effect. When typing at the\n\t// bottom, there needs to be room to scroll up.\n\tif ( ! hasMetaBoxes && ! resizedCanvasStyles && ! isTemplateMode ) {\n\t\tpaddingBottom = '40vh';\n\t}\n\n\tconst ref = useRef();\n\tconst contentRef = useMergeRefs( [\n\t\tref,\n\t\tuseClipboardHandler(),\n\t\tuseTypewriter(),\n\t\tuseTypingObserver(),\n\t\tuseBlockSelectionClearer(),\n\t] );\n\n\tconst blockSelectionClearerRef = useBlockSelectionClearer();\n\n\t// fallbackLayout is used if there is no Post Content,\n\t// and for Post Title.\n\tconst fallbackLayout = useMemo( () => {\n\t\tif ( isTemplateMode ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...globalLayoutSettings, type: 'constrained' };\n\t\t}\n\t\t// Set default layout for classic themes so all alignments are supported.\n\t\treturn { type: 'default' };\n\t}, [ isTemplateMode, themeSupportsLayout, globalLayoutSettings ] );\n\n\tconst postContentBlock = useMemo( () => {\n\t\t// When in template editing mode, we can access the blocks directly.\n\t\tif ( editedPostTemplate?.blocks ) {\n\t\t\treturn findPostContent( editedPostTemplate?.blocks );\n\t\t}\n\t\t// If there are no blocks, we have to parse the content string.\n\t\t// Best double-check it's a string otherwise the parse function gets unhappy.\n\t\tconst parseableContent =\n\t\t\ttypeof editedPostTemplate?.content === 'string'\n\t\t\t\t? editedPostTemplate?.content\n\t\t\t\t: '';\n\n\t\treturn findPostContent( parse( parseableContent ) ) || {};\n\t}, [ editedPostTemplate?.content, editedPostTemplate?.blocks ] );\n\n\tconst postContentLayoutClasses = useLayoutClasses( postContentBlock );\n\n\tconst blockListLayoutClass = classnames(\n\t\t{\n\t\t\t'is-layout-flow': ! themeSupportsLayout,\n\t\t},\n\t\tthemeSupportsLayout && postContentLayoutClasses\n\t);\n\n\tconst postContentLayoutStyles = useLayoutStyles(\n\t\tpostContentBlock,\n\t\t'.block-editor-block-list__layout.is-root-container'\n\t);\n\n\tconst layout = postContentBlock?.attributes?.layout || {};\n\n\t// Update type for blocks using legacy layouts.\n\tconst postContentLayout =\n\t\tlayout &&\n\t\t( layout?.type === 'constrained' ||\n\t\t\tlayout?.inherit ||\n\t\t\tlayout?.contentSize ||\n\t\t\tlayout?.wideSize )\n\t\t\t? { ...globalLayoutSettings, ...layout, type: 'constrained' }\n\t\t\t: { ...globalLayoutSettings, ...layout, type: 'default' };\n\n\t// If there is a Post Content block we use its layout for the block list;\n\t// if not, this must be a classic theme, in which case we use the fallback layout.\n\tconst blockListLayout = postContentBlock\n\t\t? postContentLayout\n\t\t: fallbackLayout;\n\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( isWelcomeGuideVisible || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ isWelcomeGuideVisible, isCleanNewPost ] );\n\n\treturn (\n\t\t<BlockTools\n\t\t\t__unstableContentRef={ ref }\n\t\t\tclassName={ classnames( 'edit-post-visual-editor', {\n\t\t\t\t'is-template-mode': isTemplateMode,\n\t\t\t} ) }\n\t\t>\n\t\t\t<VisualEditorGlobalKeyboardShortcuts />\n\t\t\t<motion.div\n\t\t\t\tclassName=\"edit-post-visual-editor__content-area\"\n\t\t\t\tanimate={ {\n\t\t\t\t\tpadding: isTemplateMode ? '48px 48px 0' : '0',\n\t\t\t\t} }\n\t\t\t\tref={ blockSelectionClearerRef }\n\t\t\t>\n\t\t\t\t{ isTemplateMode && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"edit-post-visual-editor__exit-template-mode\"\n\t\t\t\t\t\ticon={ arrowLeft }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t<motion.div\n\t\t\t\t\tanimate={ animatedStyles }\n\t\t\t\t\tinitial={ desktopCanvasStyles }\n\t\t\t\t\tclassName={ previewMode }\n\t\t\t\t>\n\t\t\t\t\t<MaybeIframe\n\t\t\t\t\t\tshouldIframe={\n\t\t\t\t\t\t\tisTemplateMode ||\n\t\t\t\t\t\t\tdeviceType === 'Tablet' ||\n\t\t\t\t\t\t\tdeviceType === 'Mobile'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\t\tstyles={ styles }\n\t\t\t\t\t\tassets={ assets }\n\t\t\t\t\t\tstyle={ { paddingBottom } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ themeSupportsLayout &&\n\t\t\t\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\t\t\t\t! isTemplateMode && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\t\tselector=\".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\t\t\t\tlayout={ fallbackLayout }\n\t\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\t\tglobalLayoutSettings?.definitions\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ postContentLayoutStyles && (\n\t\t\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\t\t\tlayout={ postContentLayout }\n\t\t\t\t\t\t\t\t\t\t\tcss={ postContentLayoutStyles }\n\t\t\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\t\t\tglobalLayoutSettings?.definitions\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'edit-post-visual-editor__post-title-wrapper',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<RecursionProvider\n\t\t\t\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockList\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\tisTemplateMode\n\t\t\t\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t\t\t\t: `${ blockListLayoutClass } wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__experimentalLayout={ blockListLayout }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecursionProvider>\n\t\t\t\t\t</MaybeIframe>\n\t\t\t\t</motion.div>\n\t\t\t</motion.div>\n\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t) }\n\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t</BlockTools>\n\t);\n}\n"]}
|
|
@@ -9,13 +9,14 @@ import classnames from 'classnames';
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { VisualEditorGlobalKeyboardShortcuts, PostTitle, store as editorStore } from '@wordpress/editor';
|
|
12
|
-
import { WritingFlow, BlockList, BlockTools, store as blockEditorStore, __unstableUseBlockSelectionClearer as useBlockSelectionClearer, __unstableUseTypewriter as useTypewriter, __unstableUseClipboardHandler as useClipboardHandler, __unstableUseTypingObserver as useTypingObserver, __unstableBlockSettingsMenuFirstItem, __experimentalUseResizeCanvas as useResizeCanvas, __unstableEditorStyles as EditorStyles, useSetting, __experimentalLayoutStyle as LayoutStyle, __unstableUseMouseMoveTypingReset as useMouseMoveTypingReset, __unstableIframe as Iframe, __experimentalRecursionProvider as RecursionProvider } from '@wordpress/block-editor';
|
|
12
|
+
import { WritingFlow, BlockList, BlockTools, store as blockEditorStore, __unstableUseBlockSelectionClearer as useBlockSelectionClearer, __unstableUseTypewriter as useTypewriter, __unstableUseClipboardHandler as useClipboardHandler, __unstableUseTypingObserver as useTypingObserver, __unstableBlockSettingsMenuFirstItem, __experimentalUseResizeCanvas as useResizeCanvas, __unstableEditorStyles as EditorStyles, useSetting, __experimentalLayoutStyle as LayoutStyle, __unstableUseMouseMoveTypingReset as useMouseMoveTypingReset, __unstableIframe as Iframe, __experimentalRecursionProvider as RecursionProvider, __experimentaluseLayoutClasses as useLayoutClasses, __experimentaluseLayoutStyles as useLayoutStyles } from '@wordpress/block-editor';
|
|
13
13
|
import { useEffect, useRef, useMemo } from '@wordpress/element';
|
|
14
14
|
import { Button, __unstableMotion as motion } from '@wordpress/components';
|
|
15
15
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
16
16
|
import { useMergeRefs } from '@wordpress/compose';
|
|
17
17
|
import { arrowLeft } from '@wordpress/icons';
|
|
18
18
|
import { __ } from '@wordpress/i18n';
|
|
19
|
+
import { parse } from '@wordpress/blocks';
|
|
19
20
|
/**
|
|
20
21
|
* Internal dependencies
|
|
21
22
|
*/
|
|
@@ -63,8 +64,35 @@ function MaybeIframe(_ref) {
|
|
|
63
64
|
name: "editor-canvas"
|
|
64
65
|
}, children);
|
|
65
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Given an array of nested blocks, find the first Post Content
|
|
69
|
+
* block inside it, recursing through any nesting levels.
|
|
70
|
+
*
|
|
71
|
+
* @param {Array} blocks A list of blocks.
|
|
72
|
+
*
|
|
73
|
+
* @return {Object} The Post Content block.
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
function findPostContent(blocks) {
|
|
78
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
79
|
+
if (blocks[i].name === 'core/post-content') {
|
|
80
|
+
return blocks[i];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (blocks[i].innerBlocks.length) {
|
|
84
|
+
const nestedPostContent = findPostContent(blocks[i].innerBlocks);
|
|
85
|
+
|
|
86
|
+
if (nestedPostContent) {
|
|
87
|
+
return nestedPostContent;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
66
92
|
|
|
67
93
|
export default function VisualEditor(_ref2) {
|
|
94
|
+
var _postContentBlock$att;
|
|
95
|
+
|
|
68
96
|
let {
|
|
69
97
|
styles
|
|
70
98
|
} = _ref2;
|
|
@@ -72,17 +100,20 @@ export default function VisualEditor(_ref2) {
|
|
|
72
100
|
deviceType,
|
|
73
101
|
isWelcomeGuideVisible,
|
|
74
102
|
isTemplateMode,
|
|
103
|
+
editedPostTemplate = {},
|
|
75
104
|
wrapperBlockName,
|
|
76
105
|
wrapperUniqueId
|
|
77
106
|
} = useSelect(select => {
|
|
78
107
|
const {
|
|
79
108
|
isFeatureActive,
|
|
80
109
|
isEditingTemplate,
|
|
81
|
-
__experimentalGetPreviewDeviceType
|
|
110
|
+
__experimentalGetPreviewDeviceType,
|
|
111
|
+
getEditedPostTemplate
|
|
82
112
|
} = select(editPostStore);
|
|
83
113
|
const {
|
|
84
114
|
getCurrentPostId,
|
|
85
|
-
getCurrentPostType
|
|
115
|
+
getCurrentPostType,
|
|
116
|
+
getEditorSettings
|
|
86
117
|
} = select(editorStore);
|
|
87
118
|
|
|
88
119
|
const _isTemplateMode = isEditingTemplate();
|
|
@@ -95,10 +126,14 @@ export default function VisualEditor(_ref2) {
|
|
|
95
126
|
_wrapperBlockName = 'core/post-content';
|
|
96
127
|
}
|
|
97
128
|
|
|
129
|
+
const supportsTemplateMode = getEditorSettings().supportsTemplateMode;
|
|
98
130
|
return {
|
|
99
131
|
deviceType: __experimentalGetPreviewDeviceType(),
|
|
100
132
|
isWelcomeGuideVisible: isFeatureActive('welcomeGuide'),
|
|
101
133
|
isTemplateMode: _isTemplateMode,
|
|
134
|
+
// Post template fetch returns a 404 on classic themes, which
|
|
135
|
+
// messes with e2e tests, so we check it's a block theme first.
|
|
136
|
+
editedPostTemplate: supportsTemplateMode ? getEditedPostTemplate() : {},
|
|
102
137
|
wrapperBlockName: _wrapperBlockName,
|
|
103
138
|
wrapperUniqueId: getCurrentPostId()
|
|
104
139
|
};
|
|
@@ -111,18 +146,14 @@ export default function VisualEditor(_ref2) {
|
|
|
111
146
|
themeHasDisabledLayoutStyles,
|
|
112
147
|
themeSupportsLayout,
|
|
113
148
|
assets,
|
|
114
|
-
useRootPaddingAwareAlignments,
|
|
115
149
|
isFocusMode
|
|
116
150
|
} = useSelect(select => {
|
|
117
|
-
var _settings$__experimen;
|
|
118
|
-
|
|
119
151
|
const _settings = select(blockEditorStore).getSettings();
|
|
120
152
|
|
|
121
153
|
return {
|
|
122
154
|
themeHasDisabledLayoutStyles: _settings.disableLayoutStyles,
|
|
123
155
|
themeSupportsLayout: _settings.supportsLayout,
|
|
124
156
|
assets: _settings.__unstableResolvedAssets,
|
|
125
|
-
useRootPaddingAwareAlignments: (_settings$__experimen = _settings.__experimentalFeatures) === null || _settings$__experimen === void 0 ? void 0 : _settings$__experimen.useRootPaddingAwareAlignments,
|
|
126
157
|
isFocusMode: _settings.focusMode
|
|
127
158
|
};
|
|
128
159
|
}, []);
|
|
@@ -148,7 +179,7 @@ export default function VisualEditor(_ref2) {
|
|
|
148
179
|
borderBottom: 0
|
|
149
180
|
};
|
|
150
181
|
const resizedCanvasStyles = useResizeCanvas(deviceType, isTemplateMode);
|
|
151
|
-
const
|
|
182
|
+
const globalLayoutSettings = useSetting('layout');
|
|
152
183
|
const previewMode = 'is-' + deviceType.toLowerCase() + '-preview';
|
|
153
184
|
let animatedStyles = isTemplateMode ? templateModeStyles : desktopCanvasStyles;
|
|
154
185
|
|
|
@@ -165,8 +196,10 @@ export default function VisualEditor(_ref2) {
|
|
|
165
196
|
|
|
166
197
|
const ref = useRef();
|
|
167
198
|
const contentRef = useMergeRefs([ref, useClipboardHandler(), useTypewriter(), useTypingObserver(), useBlockSelectionClearer()]);
|
|
168
|
-
const blockSelectionClearerRef = useBlockSelectionClearer();
|
|
169
|
-
|
|
199
|
+
const blockSelectionClearerRef = useBlockSelectionClearer(); // fallbackLayout is used if there is no Post Content,
|
|
200
|
+
// and for Post Title.
|
|
201
|
+
|
|
202
|
+
const fallbackLayout = useMemo(() => {
|
|
170
203
|
if (isTemplateMode) {
|
|
171
204
|
return {
|
|
172
205
|
type: 'default'
|
|
@@ -176,7 +209,7 @@ export default function VisualEditor(_ref2) {
|
|
|
176
209
|
if (themeSupportsLayout) {
|
|
177
210
|
// We need to ensure support for wide and full alignments,
|
|
178
211
|
// so we add the constrained type.
|
|
179
|
-
return { ...
|
|
212
|
+
return { ...globalLayoutSettings,
|
|
180
213
|
type: 'constrained'
|
|
181
214
|
};
|
|
182
215
|
} // Set default layout for classic themes so all alignments are supported.
|
|
@@ -185,12 +218,35 @@ export default function VisualEditor(_ref2) {
|
|
|
185
218
|
return {
|
|
186
219
|
type: 'default'
|
|
187
220
|
};
|
|
188
|
-
}, [isTemplateMode, themeSupportsLayout,
|
|
221
|
+
}, [isTemplateMode, themeSupportsLayout, globalLayoutSettings]);
|
|
222
|
+
const postContentBlock = useMemo(() => {
|
|
223
|
+
// When in template editing mode, we can access the blocks directly.
|
|
224
|
+
if (editedPostTemplate !== null && editedPostTemplate !== void 0 && editedPostTemplate.blocks) {
|
|
225
|
+
return findPostContent(editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.blocks);
|
|
226
|
+
} // If there are no blocks, we have to parse the content string.
|
|
227
|
+
// Best double-check it's a string otherwise the parse function gets unhappy.
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
const parseableContent = typeof (editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.content) === 'string' ? editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.content : '';
|
|
231
|
+
return findPostContent(parse(parseableContent)) || {};
|
|
232
|
+
}, [editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.content, editedPostTemplate === null || editedPostTemplate === void 0 ? void 0 : editedPostTemplate.blocks]);
|
|
233
|
+
const postContentLayoutClasses = useLayoutClasses(postContentBlock);
|
|
189
234
|
const blockListLayoutClass = classnames({
|
|
190
|
-
'is-layout-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
235
|
+
'is-layout-flow': !themeSupportsLayout
|
|
236
|
+
}, themeSupportsLayout && postContentLayoutClasses);
|
|
237
|
+
const postContentLayoutStyles = useLayoutStyles(postContentBlock, '.block-editor-block-list__layout.is-root-container');
|
|
238
|
+
const layout = (postContentBlock === null || postContentBlock === void 0 ? void 0 : (_postContentBlock$att = postContentBlock.attributes) === null || _postContentBlock$att === void 0 ? void 0 : _postContentBlock$att.layout) || {}; // Update type for blocks using legacy layouts.
|
|
239
|
+
|
|
240
|
+
const postContentLayout = layout && ((layout === null || layout === void 0 ? void 0 : layout.type) === 'constrained' || layout !== null && layout !== void 0 && layout.inherit || layout !== null && layout !== void 0 && layout.contentSize || layout !== null && layout !== void 0 && layout.wideSize) ? { ...globalLayoutSettings,
|
|
241
|
+
...layout,
|
|
242
|
+
type: 'constrained'
|
|
243
|
+
} : { ...globalLayoutSettings,
|
|
244
|
+
...layout,
|
|
245
|
+
type: 'default'
|
|
246
|
+
}; // If there is a Post Content block we use its layout for the block list;
|
|
247
|
+
// if not, this must be a classic theme, in which case we use the fallback layout.
|
|
248
|
+
|
|
249
|
+
const blockListLayout = postContentBlock ? postContentLayout : fallbackLayout;
|
|
194
250
|
const titleRef = useRef();
|
|
195
251
|
useEffect(() => {
|
|
196
252
|
var _titleRef$current;
|
|
@@ -231,11 +287,15 @@ export default function VisualEditor(_ref2) {
|
|
|
231
287
|
style: {
|
|
232
288
|
paddingBottom
|
|
233
289
|
}
|
|
234
|
-
}, themeSupportsLayout && !themeHasDisabledLayoutStyles && !isTemplateMode && createElement(LayoutStyle, {
|
|
290
|
+
}, themeSupportsLayout && !themeHasDisabledLayoutStyles && !isTemplateMode && createElement(Fragment, null, createElement(LayoutStyle, {
|
|
235
291
|
selector: ".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container",
|
|
236
|
-
layout:
|
|
237
|
-
layoutDefinitions:
|
|
238
|
-
}),
|
|
292
|
+
layout: fallbackLayout,
|
|
293
|
+
layoutDefinitions: globalLayoutSettings === null || globalLayoutSettings === void 0 ? void 0 : globalLayoutSettings.definitions
|
|
294
|
+
}), postContentLayoutStyles && createElement(LayoutStyle, {
|
|
295
|
+
layout: postContentLayout,
|
|
296
|
+
css: postContentLayoutStyles,
|
|
297
|
+
layoutDefinitions: globalLayoutSettings === null || globalLayoutSettings === void 0 ? void 0 : globalLayoutSettings.definitions
|
|
298
|
+
})), !isTemplateMode && createElement("div", {
|
|
239
299
|
className: classnames('edit-post-visual-editor__post-title-wrapper', {
|
|
240
300
|
'is-focus-mode': isFocusMode
|
|
241
301
|
}),
|
|
@@ -248,7 +308,7 @@ export default function VisualEditor(_ref2) {
|
|
|
248
308
|
}, createElement(BlockList, {
|
|
249
309
|
className: isTemplateMode ? 'wp-site-blocks' : `${blockListLayoutClass} wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.
|
|
250
310
|
,
|
|
251
|
-
__experimentalLayout:
|
|
311
|
+
__experimentalLayout: blockListLayout
|
|
252
312
|
}))))), createElement(__unstableBlockSettingsMenuFirstItem, null, _ref3 => {
|
|
253
313
|
let {
|
|
254
314
|
onClose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/edit-post/src/components/visual-editor/index.js"],"names":["classnames","VisualEditorGlobalKeyboardShortcuts","PostTitle","store","editorStore","WritingFlow","BlockList","BlockTools","blockEditorStore","__unstableUseBlockSelectionClearer","useBlockSelectionClearer","__unstableUseTypewriter","useTypewriter","__unstableUseClipboardHandler","useClipboardHandler","__unstableUseTypingObserver","useTypingObserver","__unstableBlockSettingsMenuFirstItem","__experimentalUseResizeCanvas","useResizeCanvas","__unstableEditorStyles","EditorStyles","useSetting","__experimentalLayoutStyle","LayoutStyle","__unstableUseMouseMoveTypingReset","useMouseMoveTypingReset","__unstableIframe","Iframe","__experimentalRecursionProvider","RecursionProvider","useEffect","useRef","useMemo","Button","__unstableMotion","motion","useSelect","useDispatch","useMergeRefs","arrowLeft","__","BlockInspectorButton","editPostStore","MaybeIframe","children","contentRef","shouldIframe","styles","assets","style","ref","flex","width","height","display","VisualEditor","deviceType","isWelcomeGuideVisible","isTemplateMode","wrapperBlockName","wrapperUniqueId","select","isFeatureActive","isEditingTemplate","__experimentalGetPreviewDeviceType","getCurrentPostId","getCurrentPostType","_isTemplateMode","_wrapperBlockName","isCleanNewPost","hasMetaBoxes","themeHasDisabledLayoutStyles","themeSupportsLayout","useRootPaddingAwareAlignments","isFocusMode","_settings","getSettings","disableLayoutStyles","supportsLayout","__unstableResolvedAssets","__experimentalFeatures","focusMode","clearSelectedBlock","setIsEditingTemplate","desktopCanvasStyles","margin","flexFlow","background","templateModeStyles","borderRadius","border","borderBottom","resizedCanvasStyles","defaultLayout","previewMode","toLowerCase","animatedStyles","paddingBottom","blockSelectionClearerRef","layout","type","blockListLayoutClass","titleRef","current","focus","padding","definitions","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tVisualEditorGlobalKeyboardShortcuts,\n\tPostTitle,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tWritingFlow,\n\tBlockList,\n\tBlockTools,\n\tstore as blockEditorStore,\n\t__unstableUseBlockSelectionClearer as useBlockSelectionClearer,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseClipboardHandler as useClipboardHandler,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\tuseSetting,\n\t__experimentalLayoutStyle as LayoutStyle,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableIframe as Iframe,\n\t__experimentalRecursionProvider as RecursionProvider,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { Button, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockInspectorButton from './block-inspector-button';\nimport { store as editPostStore } from '../../store';\n\nfunction MaybeIframe( {\n\tchildren,\n\tcontentRef,\n\tshouldIframe,\n\tstyles,\n\tassets,\n\tstyle,\n} ) {\n\tconst ref = useMouseMoveTypingReset();\n\n\tif ( ! shouldIframe ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EditorStyles styles={ styles } />\n\t\t\t\t<WritingFlow\n\t\t\t\t\tref={ contentRef }\n\t\t\t\t\tclassName=\"editor-styles-wrapper\"\n\t\t\t\t\tstyle={ { flex: '1', ...style } }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</WritingFlow>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Iframe\n\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\tassets={ assets }\n\t\t\tref={ ref }\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyle={ { width: '100%', height: '100%', display: 'block' } }\n\t\t\tname=\"editor-canvas\"\n\t\t>\n\t\t\t{ children }\n\t\t</Iframe>\n\t);\n}\n\nexport default function VisualEditor( { styles } ) {\n\tconst {\n\t\tdeviceType,\n\t\tisWelcomeGuideVisible,\n\t\tisTemplateMode,\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisFeatureActive,\n\t\t\tisEditingTemplate,\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t} = select( editPostStore );\n\t\tconst { getCurrentPostId, getCurrentPostType } = select( editorStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( getCurrentPostType() === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _isTemplateMode ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tisWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst hasMetaBoxes = useSelect(\n\t\t( select ) => select( editPostStore ).hasMetaBoxes(),\n\t\t[]\n\t);\n\tconst {\n\t\tthemeHasDisabledLayoutStyles,\n\t\tthemeSupportsLayout,\n\t\tassets,\n\t\tuseRootPaddingAwareAlignments,\n\t\tisFocusMode,\n\t} = useSelect( ( select ) => {\n\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\tassets: _settings.__unstableResolvedAssets,\n\t\t\tuseRootPaddingAwareAlignments:\n\t\t\t\t_settings.__experimentalFeatures?.useRootPaddingAwareAlignments,\n\t\t\tisFocusMode: _settings.focusMode,\n\t\t};\n\t}, [] );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst desktopCanvasStyles = {\n\t\theight: '100%',\n\t\twidth: '100%',\n\t\tmargin: 0,\n\t\tdisplay: 'flex',\n\t\tflexFlow: 'column',\n\t\t// Default background color so that grey\n\t\t// .edit-post-editor-regions__content color doesn't show through.\n\t\tbackground: 'white',\n\t};\n\tconst templateModeStyles = {\n\t\t...desktopCanvasStyles,\n\t\tborderRadius: '2px 2px 0 0',\n\t\tborder: '1px solid #ddd',\n\t\tborderBottom: 0,\n\t};\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, isTemplateMode );\n\tconst defaultLayout = useSetting( 'layout' );\n\tconst previewMode = 'is-' + deviceType.toLowerCase() + '-preview';\n\n\tlet animatedStyles = isTemplateMode\n\t\t? templateModeStyles\n\t\t: desktopCanvasStyles;\n\tif ( resizedCanvasStyles ) {\n\t\tanimatedStyles = resizedCanvasStyles;\n\t}\n\n\tlet paddingBottom;\n\n\t// Add a constant padding for the typewritter effect. When typing at the\n\t// bottom, there needs to be room to scroll up.\n\tif ( ! hasMetaBoxes && ! resizedCanvasStyles && ! isTemplateMode ) {\n\t\tpaddingBottom = '40vh';\n\t}\n\n\tconst ref = useRef();\n\tconst contentRef = useMergeRefs( [\n\t\tref,\n\t\tuseClipboardHandler(),\n\t\tuseTypewriter(),\n\t\tuseTypingObserver(),\n\t\tuseBlockSelectionClearer(),\n\t] );\n\n\tconst blockSelectionClearerRef = useBlockSelectionClearer();\n\n\tconst layout = useMemo( () => {\n\t\tif ( isTemplateMode ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...defaultLayout, type: 'constrained' };\n\t\t}\n\t\t// Set default layout for classic themes so all alignments are supported.\n\t\treturn { type: 'default' };\n\t}, [ isTemplateMode, themeSupportsLayout, defaultLayout ] );\n\n\tconst blockListLayoutClass = classnames( {\n\t\t'is-layout-constrained': themeSupportsLayout,\n\t\t'is-layout-flow': ! themeSupportsLayout,\n\t\t'has-global-padding': useRootPaddingAwareAlignments,\n\t} );\n\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( isWelcomeGuideVisible || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ isWelcomeGuideVisible, isCleanNewPost ] );\n\n\treturn (\n\t\t<BlockTools\n\t\t\t__unstableContentRef={ ref }\n\t\t\tclassName={ classnames( 'edit-post-visual-editor', {\n\t\t\t\t'is-template-mode': isTemplateMode,\n\t\t\t} ) }\n\t\t>\n\t\t\t<VisualEditorGlobalKeyboardShortcuts />\n\t\t\t<motion.div\n\t\t\t\tclassName=\"edit-post-visual-editor__content-area\"\n\t\t\t\tanimate={ {\n\t\t\t\t\tpadding: isTemplateMode ? '48px 48px 0' : '0',\n\t\t\t\t} }\n\t\t\t\tref={ blockSelectionClearerRef }\n\t\t\t>\n\t\t\t\t{ isTemplateMode && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"edit-post-visual-editor__exit-template-mode\"\n\t\t\t\t\t\ticon={ arrowLeft }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t<motion.div\n\t\t\t\t\tanimate={ animatedStyles }\n\t\t\t\t\tinitial={ desktopCanvasStyles }\n\t\t\t\t\tclassName={ previewMode }\n\t\t\t\t>\n\t\t\t\t\t<MaybeIframe\n\t\t\t\t\t\tshouldIframe={\n\t\t\t\t\t\t\tisTemplateMode ||\n\t\t\t\t\t\t\tdeviceType === 'Tablet' ||\n\t\t\t\t\t\t\tdeviceType === 'Mobile'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\t\tstyles={ styles }\n\t\t\t\t\t\tassets={ assets }\n\t\t\t\t\t\tstyle={ { paddingBottom } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ themeSupportsLayout &&\n\t\t\t\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\t\t\t\t! isTemplateMode && (\n\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\tselector=\".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\tdefaultLayout?.definitions\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'edit-post-visual-editor__post-title-wrapper',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<RecursionProvider\n\t\t\t\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockList\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\tisTemplateMode\n\t\t\t\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t\t\t\t: `${ blockListLayoutClass } wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__experimentalLayout={ layout }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecursionProvider>\n\t\t\t\t\t</MaybeIframe>\n\t\t\t\t</motion.div>\n\t\t\t</motion.div>\n\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t) }\n\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t</BlockTools>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/edit-post/src/components/visual-editor/index.js"],"names":["classnames","VisualEditorGlobalKeyboardShortcuts","PostTitle","store","editorStore","WritingFlow","BlockList","BlockTools","blockEditorStore","__unstableUseBlockSelectionClearer","useBlockSelectionClearer","__unstableUseTypewriter","useTypewriter","__unstableUseClipboardHandler","useClipboardHandler","__unstableUseTypingObserver","useTypingObserver","__unstableBlockSettingsMenuFirstItem","__experimentalUseResizeCanvas","useResizeCanvas","__unstableEditorStyles","EditorStyles","useSetting","__experimentalLayoutStyle","LayoutStyle","__unstableUseMouseMoveTypingReset","useMouseMoveTypingReset","__unstableIframe","Iframe","__experimentalRecursionProvider","RecursionProvider","__experimentaluseLayoutClasses","useLayoutClasses","__experimentaluseLayoutStyles","useLayoutStyles","useEffect","useRef","useMemo","Button","__unstableMotion","motion","useSelect","useDispatch","useMergeRefs","arrowLeft","__","parse","BlockInspectorButton","editPostStore","MaybeIframe","children","contentRef","shouldIframe","styles","assets","style","ref","flex","width","height","display","findPostContent","blocks","i","length","name","innerBlocks","nestedPostContent","VisualEditor","deviceType","isWelcomeGuideVisible","isTemplateMode","editedPostTemplate","wrapperBlockName","wrapperUniqueId","select","isFeatureActive","isEditingTemplate","__experimentalGetPreviewDeviceType","getEditedPostTemplate","getCurrentPostId","getCurrentPostType","getEditorSettings","_isTemplateMode","_wrapperBlockName","supportsTemplateMode","isCleanNewPost","hasMetaBoxes","themeHasDisabledLayoutStyles","themeSupportsLayout","isFocusMode","_settings","getSettings","disableLayoutStyles","supportsLayout","__unstableResolvedAssets","focusMode","clearSelectedBlock","setIsEditingTemplate","desktopCanvasStyles","margin","flexFlow","background","templateModeStyles","borderRadius","border","borderBottom","resizedCanvasStyles","globalLayoutSettings","previewMode","toLowerCase","animatedStyles","paddingBottom","blockSelectionClearerRef","fallbackLayout","type","postContentBlock","parseableContent","content","postContentLayoutClasses","blockListLayoutClass","postContentLayoutStyles","layout","attributes","postContentLayout","inherit","contentSize","wideSize","blockListLayout","titleRef","current","focus","padding","definitions","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tVisualEditorGlobalKeyboardShortcuts,\n\tPostTitle,\n\tstore as editorStore,\n} from '@wordpress/editor';\nimport {\n\tWritingFlow,\n\tBlockList,\n\tBlockTools,\n\tstore as blockEditorStore,\n\t__unstableUseBlockSelectionClearer as useBlockSelectionClearer,\n\t__unstableUseTypewriter as useTypewriter,\n\t__unstableUseClipboardHandler as useClipboardHandler,\n\t__unstableUseTypingObserver as useTypingObserver,\n\t__unstableBlockSettingsMenuFirstItem,\n\t__experimentalUseResizeCanvas as useResizeCanvas,\n\t__unstableEditorStyles as EditorStyles,\n\tuseSetting,\n\t__experimentalLayoutStyle as LayoutStyle,\n\t__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,\n\t__unstableIframe as Iframe,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentaluseLayoutClasses as useLayoutClasses,\n\t__experimentaluseLayoutStyles as useLayoutStyles,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useMemo } from '@wordpress/element';\nimport { Button, __unstableMotion as motion } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { arrowLeft } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockInspectorButton from './block-inspector-button';\nimport { store as editPostStore } from '../../store';\n\nfunction MaybeIframe( {\n\tchildren,\n\tcontentRef,\n\tshouldIframe,\n\tstyles,\n\tassets,\n\tstyle,\n} ) {\n\tconst ref = useMouseMoveTypingReset();\n\n\tif ( ! shouldIframe ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<EditorStyles styles={ styles } />\n\t\t\t\t<WritingFlow\n\t\t\t\t\tref={ contentRef }\n\t\t\t\t\tclassName=\"editor-styles-wrapper\"\n\t\t\t\t\tstyle={ { flex: '1', ...style } }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</WritingFlow>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Iframe\n\t\t\thead={ <EditorStyles styles={ styles } /> }\n\t\t\tassets={ assets }\n\t\t\tref={ ref }\n\t\t\tcontentRef={ contentRef }\n\t\t\tstyle={ { width: '100%', height: '100%', display: 'block' } }\n\t\t\tname=\"editor-canvas\"\n\t\t>\n\t\t\t{ children }\n\t\t</Iframe>\n\t);\n}\n\n/**\n * Given an array of nested blocks, find the first Post Content\n * block inside it, recursing through any nesting levels.\n *\n * @param {Array} blocks A list of blocks.\n *\n * @return {Object} The Post Content block.\n */\nfunction findPostContent( blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tif ( blocks[ i ].name === 'core/post-content' ) {\n\t\t\treturn blocks[ i ];\n\t\t}\n\t\tif ( blocks[ i ].innerBlocks.length ) {\n\t\t\tconst nestedPostContent = findPostContent(\n\t\t\t\tblocks[ i ].innerBlocks\n\t\t\t);\n\n\t\t\tif ( nestedPostContent ) {\n\t\t\t\treturn nestedPostContent;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport default function VisualEditor( { styles } ) {\n\tconst {\n\t\tdeviceType,\n\t\tisWelcomeGuideVisible,\n\t\tisTemplateMode,\n\t\teditedPostTemplate = {},\n\t\twrapperBlockName,\n\t\twrapperUniqueId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisFeatureActive,\n\t\t\tisEditingTemplate,\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\tgetEditedPostTemplate,\n\t\t} = select( editPostStore );\n\t\tconst { getCurrentPostId, getCurrentPostType, getEditorSettings } =\n\t\t\tselect( editorStore );\n\t\tconst _isTemplateMode = isEditingTemplate();\n\t\tlet _wrapperBlockName;\n\n\t\tif ( getCurrentPostType() === 'wp_block' ) {\n\t\t\t_wrapperBlockName = 'core/block';\n\t\t} else if ( ! _isTemplateMode ) {\n\t\t\t_wrapperBlockName = 'core/post-content';\n\t\t}\n\n\t\tconst supportsTemplateMode = getEditorSettings().supportsTemplateMode;\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\tisWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),\n\t\t\tisTemplateMode: _isTemplateMode,\n\t\t\t// Post template fetch returns a 404 on classic themes, which\n\t\t\t// messes with e2e tests, so we check it's a block theme first.\n\t\t\teditedPostTemplate: supportsTemplateMode\n\t\t\t\t? getEditedPostTemplate()\n\t\t\t\t: {},\n\t\t\twrapperBlockName: _wrapperBlockName,\n\t\t\twrapperUniqueId: getCurrentPostId(),\n\t\t};\n\t}, [] );\n\tconst { isCleanNewPost } = useSelect( editorStore );\n\tconst hasMetaBoxes = useSelect(\n\t\t( select ) => select( editPostStore ).hasMetaBoxes(),\n\t\t[]\n\t);\n\tconst {\n\t\tthemeHasDisabledLayoutStyles,\n\t\tthemeSupportsLayout,\n\t\tassets,\n\t\tisFocusMode,\n\t} = useSelect( ( select ) => {\n\t\tconst _settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tthemeHasDisabledLayoutStyles: _settings.disableLayoutStyles,\n\t\t\tthemeSupportsLayout: _settings.supportsLayout,\n\t\t\tassets: _settings.__unstableResolvedAssets,\n\t\t\tisFocusMode: _settings.focusMode,\n\t\t};\n\t}, [] );\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst { setIsEditingTemplate } = useDispatch( editPostStore );\n\tconst desktopCanvasStyles = {\n\t\theight: '100%',\n\t\twidth: '100%',\n\t\tmargin: 0,\n\t\tdisplay: 'flex',\n\t\tflexFlow: 'column',\n\t\t// Default background color so that grey\n\t\t// .edit-post-editor-regions__content color doesn't show through.\n\t\tbackground: 'white',\n\t};\n\tconst templateModeStyles = {\n\t\t...desktopCanvasStyles,\n\t\tborderRadius: '2px 2px 0 0',\n\t\tborder: '1px solid #ddd',\n\t\tborderBottom: 0,\n\t};\n\tconst resizedCanvasStyles = useResizeCanvas( deviceType, isTemplateMode );\n\tconst globalLayoutSettings = useSetting( 'layout' );\n\tconst previewMode = 'is-' + deviceType.toLowerCase() + '-preview';\n\n\tlet animatedStyles = isTemplateMode\n\t\t? templateModeStyles\n\t\t: desktopCanvasStyles;\n\tif ( resizedCanvasStyles ) {\n\t\tanimatedStyles = resizedCanvasStyles;\n\t}\n\n\tlet paddingBottom;\n\n\t// Add a constant padding for the typewritter effect. When typing at the\n\t// bottom, there needs to be room to scroll up.\n\tif ( ! hasMetaBoxes && ! resizedCanvasStyles && ! isTemplateMode ) {\n\t\tpaddingBottom = '40vh';\n\t}\n\n\tconst ref = useRef();\n\tconst contentRef = useMergeRefs( [\n\t\tref,\n\t\tuseClipboardHandler(),\n\t\tuseTypewriter(),\n\t\tuseTypingObserver(),\n\t\tuseBlockSelectionClearer(),\n\t] );\n\n\tconst blockSelectionClearerRef = useBlockSelectionClearer();\n\n\t// fallbackLayout is used if there is no Post Content,\n\t// and for Post Title.\n\tconst fallbackLayout = useMemo( () => {\n\t\tif ( isTemplateMode ) {\n\t\t\treturn { type: 'default' };\n\t\t}\n\n\t\tif ( themeSupportsLayout ) {\n\t\t\t// We need to ensure support for wide and full alignments,\n\t\t\t// so we add the constrained type.\n\t\t\treturn { ...globalLayoutSettings, type: 'constrained' };\n\t\t}\n\t\t// Set default layout for classic themes so all alignments are supported.\n\t\treturn { type: 'default' };\n\t}, [ isTemplateMode, themeSupportsLayout, globalLayoutSettings ] );\n\n\tconst postContentBlock = useMemo( () => {\n\t\t// When in template editing mode, we can access the blocks directly.\n\t\tif ( editedPostTemplate?.blocks ) {\n\t\t\treturn findPostContent( editedPostTemplate?.blocks );\n\t\t}\n\t\t// If there are no blocks, we have to parse the content string.\n\t\t// Best double-check it's a string otherwise the parse function gets unhappy.\n\t\tconst parseableContent =\n\t\t\ttypeof editedPostTemplate?.content === 'string'\n\t\t\t\t? editedPostTemplate?.content\n\t\t\t\t: '';\n\n\t\treturn findPostContent( parse( parseableContent ) ) || {};\n\t}, [ editedPostTemplate?.content, editedPostTemplate?.blocks ] );\n\n\tconst postContentLayoutClasses = useLayoutClasses( postContentBlock );\n\n\tconst blockListLayoutClass = classnames(\n\t\t{\n\t\t\t'is-layout-flow': ! themeSupportsLayout,\n\t\t},\n\t\tthemeSupportsLayout && postContentLayoutClasses\n\t);\n\n\tconst postContentLayoutStyles = useLayoutStyles(\n\t\tpostContentBlock,\n\t\t'.block-editor-block-list__layout.is-root-container'\n\t);\n\n\tconst layout = postContentBlock?.attributes?.layout || {};\n\n\t// Update type for blocks using legacy layouts.\n\tconst postContentLayout =\n\t\tlayout &&\n\t\t( layout?.type === 'constrained' ||\n\t\t\tlayout?.inherit ||\n\t\t\tlayout?.contentSize ||\n\t\t\tlayout?.wideSize )\n\t\t\t? { ...globalLayoutSettings, ...layout, type: 'constrained' }\n\t\t\t: { ...globalLayoutSettings, ...layout, type: 'default' };\n\n\t// If there is a Post Content block we use its layout for the block list;\n\t// if not, this must be a classic theme, in which case we use the fallback layout.\n\tconst blockListLayout = postContentBlock\n\t\t? postContentLayout\n\t\t: fallbackLayout;\n\n\tconst titleRef = useRef();\n\tuseEffect( () => {\n\t\tif ( isWelcomeGuideVisible || ! isCleanNewPost() ) {\n\t\t\treturn;\n\t\t}\n\t\ttitleRef?.current?.focus();\n\t}, [ isWelcomeGuideVisible, isCleanNewPost ] );\n\n\treturn (\n\t\t<BlockTools\n\t\t\t__unstableContentRef={ ref }\n\t\t\tclassName={ classnames( 'edit-post-visual-editor', {\n\t\t\t\t'is-template-mode': isTemplateMode,\n\t\t\t} ) }\n\t\t>\n\t\t\t<VisualEditorGlobalKeyboardShortcuts />\n\t\t\t<motion.div\n\t\t\t\tclassName=\"edit-post-visual-editor__content-area\"\n\t\t\t\tanimate={ {\n\t\t\t\t\tpadding: isTemplateMode ? '48px 48px 0' : '0',\n\t\t\t\t} }\n\t\t\t\tref={ blockSelectionClearerRef }\n\t\t\t>\n\t\t\t\t{ isTemplateMode && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName=\"edit-post-visual-editor__exit-template-mode\"\n\t\t\t\t\t\ticon={ arrowLeft }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tclearSelectedBlock();\n\t\t\t\t\t\t\tsetIsEditingTemplate( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t<motion.div\n\t\t\t\t\tanimate={ animatedStyles }\n\t\t\t\t\tinitial={ desktopCanvasStyles }\n\t\t\t\t\tclassName={ previewMode }\n\t\t\t\t>\n\t\t\t\t\t<MaybeIframe\n\t\t\t\t\t\tshouldIframe={\n\t\t\t\t\t\t\tisTemplateMode ||\n\t\t\t\t\t\t\tdeviceType === 'Tablet' ||\n\t\t\t\t\t\t\tdeviceType === 'Mobile'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\t\tstyles={ styles }\n\t\t\t\t\t\tassets={ assets }\n\t\t\t\t\t\tstyle={ { paddingBottom } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ themeSupportsLayout &&\n\t\t\t\t\t\t\t! themeHasDisabledLayoutStyles &&\n\t\t\t\t\t\t\t! isTemplateMode && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\t\tselector=\".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container\"\n\t\t\t\t\t\t\t\t\t\tlayout={ fallbackLayout }\n\t\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\t\tglobalLayoutSettings?.definitions\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ postContentLayoutStyles && (\n\t\t\t\t\t\t\t\t\t\t<LayoutStyle\n\t\t\t\t\t\t\t\t\t\t\tlayout={ postContentLayout }\n\t\t\t\t\t\t\t\t\t\t\tcss={ postContentLayoutStyles }\n\t\t\t\t\t\t\t\t\t\t\tlayoutDefinitions={\n\t\t\t\t\t\t\t\t\t\t\t\tglobalLayoutSettings?.definitions\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! isTemplateMode && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'edit-post-visual-editor__post-title-wrapper',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tcontentEditable={ false }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<PostTitle ref={ titleRef } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<RecursionProvider\n\t\t\t\t\t\t\tblockName={ wrapperBlockName }\n\t\t\t\t\t\t\tuniqueId={ wrapperUniqueId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockList\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\tisTemplateMode\n\t\t\t\t\t\t\t\t\t\t? 'wp-site-blocks'\n\t\t\t\t\t\t\t\t\t\t: `${ blockListLayoutClass } wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__experimentalLayout={ blockListLayout }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecursionProvider>\n\t\t\t\t\t</MaybeIframe>\n\t\t\t\t</motion.div>\n\t\t\t</motion.div>\n\t\t\t<__unstableBlockSettingsMenuFirstItem>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<BlockInspectorButton onClick={ onClose } />\n\t\t\t\t) }\n\t\t\t</__unstableBlockSettingsMenuFirstItem>\n\t\t</BlockTools>\n\t);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/edit-post",
|
|
3
|
-
"version": "6.15.0",
|
|
3
|
+
"version": "6.15.1-next.4d3b314fd5.0",
|
|
4
4
|
"description": "Edit Post module for WordPress.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -27,31 +27,31 @@
|
|
|
27
27
|
"react-native": "src/index",
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@babel/runtime": "^7.16.0",
|
|
30
|
-
"@wordpress/a11y": "^3.18.0",
|
|
31
|
-
"@wordpress/api-fetch": "^6.15.0",
|
|
32
|
-
"@wordpress/block-editor": "^10.1.0",
|
|
33
|
-
"@wordpress/block-library": "^7.15.0",
|
|
34
|
-
"@wordpress/blocks": "^11.
|
|
35
|
-
"@wordpress/components": "^21.1.0",
|
|
36
|
-
"@wordpress/compose": "^5.16.0",
|
|
37
|
-
"@wordpress/core-data": "^5.1.0",
|
|
38
|
-
"@wordpress/data": "^7.2.0",
|
|
39
|
-
"@wordpress/deprecated": "^3.18.0",
|
|
40
|
-
"@wordpress/editor": "^12.17.0",
|
|
41
|
-
"@wordpress/element": "^4.16.0",
|
|
42
|
-
"@wordpress/hooks": "^3.18.0",
|
|
43
|
-
"@wordpress/i18n": "^4.18.0",
|
|
44
|
-
"@wordpress/icons": "^9.9.0",
|
|
45
|
-
"@wordpress/interface": "^4.17.0",
|
|
46
|
-
"@wordpress/keyboard-shortcuts": "^3.16.0",
|
|
47
|
-
"@wordpress/keycodes": "^3.18.0",
|
|
48
|
-
"@wordpress/media-utils": "^4.9.0",
|
|
49
|
-
"@wordpress/notices": "^3.18.0",
|
|
50
|
-
"@wordpress/plugins": "^4.16.0",
|
|
51
|
-
"@wordpress/preferences": "^2.10.0",
|
|
52
|
-
"@wordpress/url": "^3.19.0",
|
|
53
|
-
"@wordpress/viewport": "^4.16.0",
|
|
54
|
-
"@wordpress/warning": "^2.18.0",
|
|
30
|
+
"@wordpress/a11y": "^3.18.1-next.4d3b314fd5.0",
|
|
31
|
+
"@wordpress/api-fetch": "^6.15.1-next.4d3b314fd5.0",
|
|
32
|
+
"@wordpress/block-editor": "^10.1.1-next.4d3b314fd5.0",
|
|
33
|
+
"@wordpress/block-library": "^7.15.1-next.4d3b314fd5.0",
|
|
34
|
+
"@wordpress/blocks": "^11.18.1-next.4d3b314fd5.0",
|
|
35
|
+
"@wordpress/components": "^21.1.2-next.4d3b314fd5.0",
|
|
36
|
+
"@wordpress/compose": "^5.16.1-next.4d3b314fd5.0",
|
|
37
|
+
"@wordpress/core-data": "^5.1.1-next.4d3b314fd5.0",
|
|
38
|
+
"@wordpress/data": "^7.2.1-next.4d3b314fd5.0",
|
|
39
|
+
"@wordpress/deprecated": "^3.18.1-next.4d3b314fd5.0",
|
|
40
|
+
"@wordpress/editor": "^12.17.1-next.4d3b314fd5.0",
|
|
41
|
+
"@wordpress/element": "^4.16.1-next.4d3b314fd5.0",
|
|
42
|
+
"@wordpress/hooks": "^3.18.1-next.4d3b314fd5.0",
|
|
43
|
+
"@wordpress/i18n": "^4.18.1-next.4d3b314fd5.0",
|
|
44
|
+
"@wordpress/icons": "^9.9.1-next.4d3b314fd5.0",
|
|
45
|
+
"@wordpress/interface": "^4.17.1-next.4d3b314fd5.0",
|
|
46
|
+
"@wordpress/keyboard-shortcuts": "^3.16.1-next.4d3b314fd5.0",
|
|
47
|
+
"@wordpress/keycodes": "^3.18.1-next.4d3b314fd5.0",
|
|
48
|
+
"@wordpress/media-utils": "^4.9.1-next.4d3b314fd5.0",
|
|
49
|
+
"@wordpress/notices": "^3.18.1-next.4d3b314fd5.0",
|
|
50
|
+
"@wordpress/plugins": "^4.16.1-next.4d3b314fd5.0",
|
|
51
|
+
"@wordpress/preferences": "^2.10.1-next.4d3b314fd5.0",
|
|
52
|
+
"@wordpress/url": "^3.19.1-next.4d3b314fd5.0",
|
|
53
|
+
"@wordpress/viewport": "^4.16.1-next.4d3b314fd5.0",
|
|
54
|
+
"@wordpress/warning": "^2.18.1-next.4d3b314fd5.0",
|
|
55
55
|
"classnames": "^2.3.1",
|
|
56
56
|
"lodash": "^4.17.21",
|
|
57
57
|
"memize": "^1.1.0",
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"publishConfig": {
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "25054766423cb49d959eb656c2533530073ff5c2"
|
|
68
68
|
}
|
|
@@ -28,6 +28,8 @@ import {
|
|
|
28
28
|
__unstableUseMouseMoveTypingReset as useMouseMoveTypingReset,
|
|
29
29
|
__unstableIframe as Iframe,
|
|
30
30
|
__experimentalRecursionProvider as RecursionProvider,
|
|
31
|
+
__experimentaluseLayoutClasses as useLayoutClasses,
|
|
32
|
+
__experimentaluseLayoutStyles as useLayoutStyles,
|
|
31
33
|
} from '@wordpress/block-editor';
|
|
32
34
|
import { useEffect, useRef, useMemo } from '@wordpress/element';
|
|
33
35
|
import { Button, __unstableMotion as motion } from '@wordpress/components';
|
|
@@ -35,6 +37,7 @@ import { useSelect, useDispatch } from '@wordpress/data';
|
|
|
35
37
|
import { useMergeRefs } from '@wordpress/compose';
|
|
36
38
|
import { arrowLeft } from '@wordpress/icons';
|
|
37
39
|
import { __ } from '@wordpress/i18n';
|
|
40
|
+
import { parse } from '@wordpress/blocks';
|
|
38
41
|
|
|
39
42
|
/**
|
|
40
43
|
* Internal dependencies
|
|
@@ -82,11 +85,37 @@ function MaybeIframe( {
|
|
|
82
85
|
);
|
|
83
86
|
}
|
|
84
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Given an array of nested blocks, find the first Post Content
|
|
90
|
+
* block inside it, recursing through any nesting levels.
|
|
91
|
+
*
|
|
92
|
+
* @param {Array} blocks A list of blocks.
|
|
93
|
+
*
|
|
94
|
+
* @return {Object} The Post Content block.
|
|
95
|
+
*/
|
|
96
|
+
function findPostContent( blocks ) {
|
|
97
|
+
for ( let i = 0; i < blocks.length; i++ ) {
|
|
98
|
+
if ( blocks[ i ].name === 'core/post-content' ) {
|
|
99
|
+
return blocks[ i ];
|
|
100
|
+
}
|
|
101
|
+
if ( blocks[ i ].innerBlocks.length ) {
|
|
102
|
+
const nestedPostContent = findPostContent(
|
|
103
|
+
blocks[ i ].innerBlocks
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
if ( nestedPostContent ) {
|
|
107
|
+
return nestedPostContent;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
85
113
|
export default function VisualEditor( { styles } ) {
|
|
86
114
|
const {
|
|
87
115
|
deviceType,
|
|
88
116
|
isWelcomeGuideVisible,
|
|
89
117
|
isTemplateMode,
|
|
118
|
+
editedPostTemplate = {},
|
|
90
119
|
wrapperBlockName,
|
|
91
120
|
wrapperUniqueId,
|
|
92
121
|
} = useSelect( ( select ) => {
|
|
@@ -94,8 +123,10 @@ export default function VisualEditor( { styles } ) {
|
|
|
94
123
|
isFeatureActive,
|
|
95
124
|
isEditingTemplate,
|
|
96
125
|
__experimentalGetPreviewDeviceType,
|
|
126
|
+
getEditedPostTemplate,
|
|
97
127
|
} = select( editPostStore );
|
|
98
|
-
const { getCurrentPostId, getCurrentPostType } =
|
|
128
|
+
const { getCurrentPostId, getCurrentPostType, getEditorSettings } =
|
|
129
|
+
select( editorStore );
|
|
99
130
|
const _isTemplateMode = isEditingTemplate();
|
|
100
131
|
let _wrapperBlockName;
|
|
101
132
|
|
|
@@ -105,10 +136,17 @@ export default function VisualEditor( { styles } ) {
|
|
|
105
136
|
_wrapperBlockName = 'core/post-content';
|
|
106
137
|
}
|
|
107
138
|
|
|
139
|
+
const supportsTemplateMode = getEditorSettings().supportsTemplateMode;
|
|
140
|
+
|
|
108
141
|
return {
|
|
109
142
|
deviceType: __experimentalGetPreviewDeviceType(),
|
|
110
143
|
isWelcomeGuideVisible: isFeatureActive( 'welcomeGuide' ),
|
|
111
144
|
isTemplateMode: _isTemplateMode,
|
|
145
|
+
// Post template fetch returns a 404 on classic themes, which
|
|
146
|
+
// messes with e2e tests, so we check it's a block theme first.
|
|
147
|
+
editedPostTemplate: supportsTemplateMode
|
|
148
|
+
? getEditedPostTemplate()
|
|
149
|
+
: {},
|
|
112
150
|
wrapperBlockName: _wrapperBlockName,
|
|
113
151
|
wrapperUniqueId: getCurrentPostId(),
|
|
114
152
|
};
|
|
@@ -122,7 +160,6 @@ export default function VisualEditor( { styles } ) {
|
|
|
122
160
|
themeHasDisabledLayoutStyles,
|
|
123
161
|
themeSupportsLayout,
|
|
124
162
|
assets,
|
|
125
|
-
useRootPaddingAwareAlignments,
|
|
126
163
|
isFocusMode,
|
|
127
164
|
} = useSelect( ( select ) => {
|
|
128
165
|
const _settings = select( blockEditorStore ).getSettings();
|
|
@@ -130,8 +167,6 @@ export default function VisualEditor( { styles } ) {
|
|
|
130
167
|
themeHasDisabledLayoutStyles: _settings.disableLayoutStyles,
|
|
131
168
|
themeSupportsLayout: _settings.supportsLayout,
|
|
132
169
|
assets: _settings.__unstableResolvedAssets,
|
|
133
|
-
useRootPaddingAwareAlignments:
|
|
134
|
-
_settings.__experimentalFeatures?.useRootPaddingAwareAlignments,
|
|
135
170
|
isFocusMode: _settings.focusMode,
|
|
136
171
|
};
|
|
137
172
|
}, [] );
|
|
@@ -154,7 +189,7 @@ export default function VisualEditor( { styles } ) {
|
|
|
154
189
|
borderBottom: 0,
|
|
155
190
|
};
|
|
156
191
|
const resizedCanvasStyles = useResizeCanvas( deviceType, isTemplateMode );
|
|
157
|
-
const
|
|
192
|
+
const globalLayoutSettings = useSetting( 'layout' );
|
|
158
193
|
const previewMode = 'is-' + deviceType.toLowerCase() + '-preview';
|
|
159
194
|
|
|
160
195
|
let animatedStyles = isTemplateMode
|
|
@@ -183,7 +218,9 @@ export default function VisualEditor( { styles } ) {
|
|
|
183
218
|
|
|
184
219
|
const blockSelectionClearerRef = useBlockSelectionClearer();
|
|
185
220
|
|
|
186
|
-
|
|
221
|
+
// fallbackLayout is used if there is no Post Content,
|
|
222
|
+
// and for Post Title.
|
|
223
|
+
const fallbackLayout = useMemo( () => {
|
|
187
224
|
if ( isTemplateMode ) {
|
|
188
225
|
return { type: 'default' };
|
|
189
226
|
}
|
|
@@ -191,17 +228,58 @@ export default function VisualEditor( { styles } ) {
|
|
|
191
228
|
if ( themeSupportsLayout ) {
|
|
192
229
|
// We need to ensure support for wide and full alignments,
|
|
193
230
|
// so we add the constrained type.
|
|
194
|
-
return { ...
|
|
231
|
+
return { ...globalLayoutSettings, type: 'constrained' };
|
|
195
232
|
}
|
|
196
233
|
// Set default layout for classic themes so all alignments are supported.
|
|
197
234
|
return { type: 'default' };
|
|
198
|
-
}, [ isTemplateMode, themeSupportsLayout,
|
|
235
|
+
}, [ isTemplateMode, themeSupportsLayout, globalLayoutSettings ] );
|
|
236
|
+
|
|
237
|
+
const postContentBlock = useMemo( () => {
|
|
238
|
+
// When in template editing mode, we can access the blocks directly.
|
|
239
|
+
if ( editedPostTemplate?.blocks ) {
|
|
240
|
+
return findPostContent( editedPostTemplate?.blocks );
|
|
241
|
+
}
|
|
242
|
+
// If there are no blocks, we have to parse the content string.
|
|
243
|
+
// Best double-check it's a string otherwise the parse function gets unhappy.
|
|
244
|
+
const parseableContent =
|
|
245
|
+
typeof editedPostTemplate?.content === 'string'
|
|
246
|
+
? editedPostTemplate?.content
|
|
247
|
+
: '';
|
|
248
|
+
|
|
249
|
+
return findPostContent( parse( parseableContent ) ) || {};
|
|
250
|
+
}, [ editedPostTemplate?.content, editedPostTemplate?.blocks ] );
|
|
251
|
+
|
|
252
|
+
const postContentLayoutClasses = useLayoutClasses( postContentBlock );
|
|
253
|
+
|
|
254
|
+
const blockListLayoutClass = classnames(
|
|
255
|
+
{
|
|
256
|
+
'is-layout-flow': ! themeSupportsLayout,
|
|
257
|
+
},
|
|
258
|
+
themeSupportsLayout && postContentLayoutClasses
|
|
259
|
+
);
|
|
199
260
|
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
'is-
|
|
203
|
-
|
|
204
|
-
|
|
261
|
+
const postContentLayoutStyles = useLayoutStyles(
|
|
262
|
+
postContentBlock,
|
|
263
|
+
'.block-editor-block-list__layout.is-root-container'
|
|
264
|
+
);
|
|
265
|
+
|
|
266
|
+
const layout = postContentBlock?.attributes?.layout || {};
|
|
267
|
+
|
|
268
|
+
// Update type for blocks using legacy layouts.
|
|
269
|
+
const postContentLayout =
|
|
270
|
+
layout &&
|
|
271
|
+
( layout?.type === 'constrained' ||
|
|
272
|
+
layout?.inherit ||
|
|
273
|
+
layout?.contentSize ||
|
|
274
|
+
layout?.wideSize )
|
|
275
|
+
? { ...globalLayoutSettings, ...layout, type: 'constrained' }
|
|
276
|
+
: { ...globalLayoutSettings, ...layout, type: 'default' };
|
|
277
|
+
|
|
278
|
+
// If there is a Post Content block we use its layout for the block list;
|
|
279
|
+
// if not, this must be a classic theme, in which case we use the fallback layout.
|
|
280
|
+
const blockListLayout = postContentBlock
|
|
281
|
+
? postContentLayout
|
|
282
|
+
: fallbackLayout;
|
|
205
283
|
|
|
206
284
|
const titleRef = useRef();
|
|
207
285
|
useEffect( () => {
|
|
@@ -257,13 +335,24 @@ export default function VisualEditor( { styles } ) {
|
|
|
257
335
|
{ themeSupportsLayout &&
|
|
258
336
|
! themeHasDisabledLayoutStyles &&
|
|
259
337
|
! isTemplateMode && (
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
338
|
+
<>
|
|
339
|
+
<LayoutStyle
|
|
340
|
+
selector=".edit-post-visual-editor__post-title-wrapper, .block-editor-block-list__layout.is-root-container"
|
|
341
|
+
layout={ fallbackLayout }
|
|
342
|
+
layoutDefinitions={
|
|
343
|
+
globalLayoutSettings?.definitions
|
|
344
|
+
}
|
|
345
|
+
/>
|
|
346
|
+
{ postContentLayoutStyles && (
|
|
347
|
+
<LayoutStyle
|
|
348
|
+
layout={ postContentLayout }
|
|
349
|
+
css={ postContentLayoutStyles }
|
|
350
|
+
layoutDefinitions={
|
|
351
|
+
globalLayoutSettings?.definitions
|
|
352
|
+
}
|
|
353
|
+
/>
|
|
354
|
+
) }
|
|
355
|
+
</>
|
|
267
356
|
) }
|
|
268
357
|
{ ! isTemplateMode && (
|
|
269
358
|
<div
|
|
@@ -288,7 +377,7 @@ export default function VisualEditor( { styles } ) {
|
|
|
288
377
|
? 'wp-site-blocks'
|
|
289
378
|
: `${ blockListLayoutClass } wp-block-post-content` // Ensure root level blocks receive default/flow blockGap styling rules.
|
|
290
379
|
}
|
|
291
|
-
__experimentalLayout={
|
|
380
|
+
__experimentalLayout={ blockListLayout }
|
|
292
381
|
/>
|
|
293
382
|
</RecursionProvider>
|
|
294
383
|
</MaybeIframe>
|