@wordpress/editor 14.49.0 → 14.50.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/CHANGELOG.md +2 -0
- package/build/components/header/index.cjs +1 -8
- package/build/components/header/index.cjs.map +2 -2
- package/build/components/preview-dropdown/index.cjs +38 -9
- package/build/components/preview-dropdown/index.cjs.map +3 -3
- package/build/components/provider/use-block-editor-settings.cjs +0 -6
- package/build/components/provider/use-block-editor-settings.cjs.map +2 -2
- package/build/components/resizable-editor/index.cjs +54 -9
- package/build/components/resizable-editor/index.cjs.map +3 -3
- package/build/components/visual-editor/index.cjs +15 -11
- package/build/components/visual-editor/index.cjs.map +3 -3
- package/build/store/actions.cjs +5 -3
- package/build/store/actions.cjs.map +2 -2
- package/build/store/constants.cjs +26 -0
- package/build/store/constants.cjs.map +2 -2
- package/build/store/private-actions.cjs +20 -16
- package/build/store/private-actions.cjs.map +3 -3
- package/build/store/private-selectors.cjs +5 -0
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs +6 -6
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/selectors.cjs +3 -1
- package/build/store/selectors.cjs.map +2 -2
- package/build/utils/device-type.cjs +52 -0
- package/build/utils/device-type.cjs.map +7 -0
- package/build-module/components/header/index.mjs +1 -13
- package/build-module/components/header/index.mjs.map +2 -2
- package/build-module/components/preview-dropdown/index.mjs +38 -9
- package/build-module/components/preview-dropdown/index.mjs.map +2 -2
- package/build-module/components/provider/use-block-editor-settings.mjs +0 -6
- package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
- package/build-module/components/resizable-editor/index.mjs +55 -10
- package/build-module/components/resizable-editor/index.mjs.map +2 -2
- package/build-module/components/visual-editor/index.mjs +16 -13
- package/build-module/components/visual-editor/index.mjs.map +2 -2
- package/build-module/store/actions.mjs +5 -3
- package/build-module/store/actions.mjs.map +2 -2
- package/build-module/store/constants.mjs +25 -0
- package/build-module/store/constants.mjs.map +2 -2
- package/build-module/store/private-actions.mjs +22 -15
- package/build-module/store/private-actions.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +4 -0
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +5 -5
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/selectors.mjs +3 -1
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-module/utils/device-type.mjs +25 -0
- package/build-module/utils/device-type.mjs.map +7 -0
- package/build-style/style-rtl.css +19 -6
- package/build-style/style.css +19 -6
- package/build-types/components/header/index.d.ts.map +1 -1
- package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
- package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
- package/build-types/components/resizable-editor/index.d.ts.map +1 -1
- package/build-types/components/visual-editor/index.d.ts.map +1 -1
- package/build-types/store/actions.d.ts.map +1 -1
- package/build-types/store/constants.d.ts +6 -0
- package/build-types/store/constants.d.ts.map +1 -1
- package/build-types/store/index.d.ts +2 -2
- package/build-types/store/private-actions.d.ts +9 -15
- package/build-types/store/private-actions.d.ts.map +1 -1
- package/build-types/store/private-selectors.d.ts +7 -0
- package/build-types/store/private-selectors.d.ts.map +1 -1
- package/build-types/store/reducer.d.ts +6 -7
- package/build-types/store/reducer.d.ts.map +1 -1
- package/build-types/store/selectors.d.ts +1 -1
- package/build-types/store/selectors.d.ts.map +1 -1
- package/build-types/utils/device-type.d.ts +23 -0
- package/build-types/utils/device-type.d.ts.map +1 -0
- package/package.json +46 -46
- package/src/components/header/index.js +1 -15
- package/src/components/preview-dropdown/index.js +42 -3
- package/src/components/provider/use-block-editor-settings.js +0 -6
- package/src/components/resizable-editor/index.js +71 -9
- package/src/components/resizable-editor/style.scss +7 -0
- package/src/components/styles-canvas/style.scss +1 -2
- package/src/components/visual-editor/index.js +19 -15
- package/src/components/visual-editor/style.scss +11 -4
- package/src/store/actions.js +6 -3
- package/src/store/constants.ts +45 -0
- package/src/store/private-actions.js +32 -26
- package/src/store/private-selectors.js +10 -0
- package/src/store/reducer.js +7 -9
- package/src/store/selectors.js +3 -1
- package/src/store/test/actions.js +31 -22
- package/src/utils/device-type.js +46 -0
package/CHANGELOG.md
CHANGED
|
@@ -51,7 +51,6 @@ var import_post_view_link = __toESM(require("../post-view-link/index.cjs"));
|
|
|
51
51
|
var import_preview_dropdown = __toESM(require("../preview-dropdown/index.cjs"));
|
|
52
52
|
var import_zoom_out_toggle = __toESM(require("../zoom-out-toggle/index.cjs"));
|
|
53
53
|
var import_store = require("../../store/index.cjs");
|
|
54
|
-
var import_constants = require("../../store/constants.cjs");
|
|
55
54
|
var import_collaborators_presence = require("../collaborators-presence/index.cjs");
|
|
56
55
|
var import_lock_unlock = require("../../lock-unlock.cjs");
|
|
57
56
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -100,12 +99,6 @@ function Header({
|
|
|
100
99
|
};
|
|
101
100
|
}, []);
|
|
102
101
|
const canBeZoomedOut = ["post", "page", "wp_template"].includes(postType) && hasSectionRootClientId;
|
|
103
|
-
const disablePreviewOption = [
|
|
104
|
-
import_constants.ATTACHMENT_POST_TYPE,
|
|
105
|
-
import_constants.NAVIGATION_POST_TYPE,
|
|
106
|
-
import_constants.TEMPLATE_PART_POST_TYPE,
|
|
107
|
-
import_constants.PATTERN_POST_TYPE
|
|
108
|
-
].includes(postType) || isStylesCanvasActive;
|
|
109
102
|
const [isBlockToolsCollapsed, setIsBlockToolsCollapsed] = (0, import_element.useState)(true);
|
|
110
103
|
const hasCenter = !isTooNarrowForDocumentBar && (!hasFixedToolbar || hasFixedToolbar && (!hasBlockSelection || isBlockToolsCollapsed));
|
|
111
104
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -157,7 +150,7 @@ function Header({
|
|
|
157
150
|
import_preview_dropdown.default,
|
|
158
151
|
{
|
|
159
152
|
forceIsAutosaveable: forceIsDirty,
|
|
160
|
-
disabled:
|
|
153
|
+
disabled: isStylesCanvasActive
|
|
161
154
|
}
|
|
162
155
|
),
|
|
163
156
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/header/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMediaQuery, useViewportMatch } from '@wordpress/compose';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useState } from '@wordpress/element';\nimport { PinnedItems } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport CollapsibleBlockToolbar from '../collapsible-block-toolbar';\nimport DocumentBar from '../document-bar';\nimport DocumentTools from '../document-tools';\nimport HeaderSkeleton from './header-skeleton';\nimport MoreMenu from '../more-menu';\nimport PostPreviewButton from '../post-preview-button';\nimport PostPublishButtonOrToggle from '../post-publish-button/post-publish-button-or-toggle';\nimport PostSavedState from '../post-saved-state';\nimport PostViewLink from '../post-view-link';\nimport PreviewDropdown from '../preview-dropdown';\nimport ZoomOutToggle from '../zoom-out-toggle';\nimport { store as editorStore } from '../../store';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAA0C;AAC1C,kBAA0B;AAC1B,qBAAgD;AAChD,yBAA0C;AAC1C,qBAAyB;AACzB,uBAA4B;AAK5B,uCAAoC;AACpC,0BAAwB;AACxB,4BAA0B;AAC1B,6BAA2B;AAC3B,uBAAqB;AACrB,iCAA8B;AAC9B,2CAAsC;AACtC,8BAA2B;AAC3B,4BAAyB;AACzB,8BAA4B;AAC5B,6BAA0B;AAC1B,mBAAqC;AACrC,
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMediaQuery, useViewportMatch } from '@wordpress/compose';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useState } from '@wordpress/element';\nimport { PinnedItems } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport CollapsibleBlockToolbar from '../collapsible-block-toolbar';\nimport DocumentBar from '../document-bar';\nimport DocumentTools from '../document-tools';\nimport HeaderSkeleton from './header-skeleton';\nimport MoreMenu from '../more-menu';\nimport PostPreviewButton from '../post-preview-button';\nimport PostPublishButtonOrToggle from '../post-publish-button/post-publish-button-or-toggle';\nimport PostSavedState from '../post-saved-state';\nimport PostViewLink from '../post-view-link';\nimport PreviewDropdown from '../preview-dropdown';\nimport ZoomOutToggle from '../zoom-out-toggle';\nimport { store as editorStore } from '../../store';\nimport { CollaboratorsPresence } from '../collaborators-presence/index';\nimport { unlock } from '../../lock-unlock';\n\nfunction Header( {\n\tcustomSaveButton,\n\tforceIsDirty,\n\tsetEntitiesSavedStatesCallback,\n} ) {\n\tconst isWideViewport = useViewportMatch( 'large' );\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isTooNarrowForDocumentBar = useMediaQuery( '(max-width: 403px)' );\n\tconst {\n\t\tpostId,\n\t\tpostType,\n\t\tisTextEditor,\n\t\tisPublishSidebarOpened,\n\t\tshowIconLabels,\n\t\thasFixedToolbar,\n\t\thasBlockSelection,\n\t\thasSectionRootClientId,\n\t\tisStylesCanvasActive,\n\t} = useSelect( ( select ) => {\n\t\tconst { get: getPreference } = select( preferencesStore );\n\t\tconst {\n\t\t\tgetEditorMode,\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentPostId,\n\t\t\tisPublishSidebarOpened: _isPublishSidebarOpened,\n\t\t} = select( editorStore );\n\t\tconst { getStylesPath, getShowStylebook } = unlock(\n\t\t\tselect( editorStore )\n\t\t);\n\t\tconst { getBlockSelectionStart, getSectionRootClientId } = unlock(\n\t\t\tselect( blockEditorStore )\n\t\t);\n\n\t\treturn {\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tisTextEditor: getEditorMode() === 'text',\n\t\t\tisPublishSidebarOpened: _isPublishSidebarOpened(),\n\t\t\tshowIconLabels: getPreference( 'core', 'showIconLabels' ),\n\t\t\thasFixedToolbar: getPreference( 'core', 'fixedToolbar' ),\n\t\t\thasBlockSelection: !! getBlockSelectionStart(),\n\t\t\thasSectionRootClientId: !! getSectionRootClientId(),\n\t\t\tisStylesCanvasActive:\n\t\t\t\t!! getStylesPath()?.startsWith( '/revisions' ) ||\n\t\t\t\tgetShowStylebook(),\n\t\t};\n\t}, [] );\n\n\tconst canBeZoomedOut =\n\t\t[ 'post', 'page', 'wp_template' ].includes( postType ) &&\n\t\thasSectionRootClientId;\n\n\tconst [ isBlockToolsCollapsed, setIsBlockToolsCollapsed ] =\n\t\tuseState( true );\n\n\tconst hasCenter =\n\t\t! isTooNarrowForDocumentBar &&\n\t\t( ! hasFixedToolbar ||\n\t\t\t( hasFixedToolbar &&\n\t\t\t\t( ! hasBlockSelection || isBlockToolsCollapsed ) ) );\n\n\treturn (\n\t\t<HeaderSkeleton\n\t\t\ttoolbar={\n\t\t\t\t<>\n\t\t\t\t\t<DocumentTools\n\t\t\t\t\t\tdisableBlockTools={\n\t\t\t\t\t\t\tisStylesCanvasActive || isTextEditor\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t{ hasFixedToolbar && isLargeViewport && (\n\t\t\t\t\t\t<CollapsibleBlockToolbar\n\t\t\t\t\t\t\tisCollapsed={ isBlockToolsCollapsed }\n\t\t\t\t\t\t\tonToggle={ setIsBlockToolsCollapsed }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t}\n\t\t\tcenter={\n\t\t\t\thasCenter ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<CollaboratorsPresence\n\t\t\t\t\t\t\tpostType={ postType }\n\t\t\t\t\t\t\tpostId={ postId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DocumentBar />\n\t\t\t\t\t</>\n\t\t\t\t) : undefined\n\t\t\t}\n\t\t\tsettings={\n\t\t\t\t<>\n\t\t\t\t\t{ ! hasCenter && ! isTooNarrowForDocumentBar && (\n\t\t\t\t\t\t<CollaboratorsPresence\n\t\t\t\t\t\t\tpostType={ postType }\n\t\t\t\t\t\t\tpostId={ postId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! customSaveButton && ! isPublishSidebarOpened && (\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * This button isn't completely hidden by the publish sidebar.\n\t\t\t\t\t\t * We can't hide the whole toolbar when the publish sidebar is open because\n\t\t\t\t\t\t * we want to prevent mounting/unmounting the PostPublishButtonOrToggle DOM node.\n\t\t\t\t\t\t * We track that DOM node to return focus to the PostPublishButtonOrToggle\n\t\t\t\t\t\t * when the publish sidebar has been closed.\n\t\t\t\t\t\t */\n\t\t\t\t\t\t<PostSavedState forceIsDirty={ forceIsDirty } />\n\t\t\t\t\t) }\n\n\t\t\t\t\t<PostViewLink />\n\n\t\t\t\t\t<PreviewDropdown\n\t\t\t\t\t\tforceIsAutosaveable={ forceIsDirty }\n\t\t\t\t\t\tdisabled={ isStylesCanvasActive }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\tclassName=\"editor-header__post-preview-button\"\n\t\t\t\t\t\tforceIsAutosaveable={ forceIsDirty }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ isWideViewport && canBeZoomedOut && (\n\t\t\t\t\t\t<ZoomOutToggle disabled={ isStylesCanvasActive } />\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ( isWideViewport || ! showIconLabels ) && (\n\t\t\t\t\t\t<PinnedItems.Slot scope=\"core\" />\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! customSaveButton && (\n\t\t\t\t\t\t<PostPublishButtonOrToggle\n\t\t\t\t\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\t\t\t\t\tsetEntitiesSavedStatesCallback={\n\t\t\t\t\t\t\t\tsetEntitiesSavedStatesCallback\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ customSaveButton }\n\t\t\t\t\t<MoreMenu />\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n}\n\nexport default Header;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["preferencesStore", "editorStore", "blockEditorStore", "HeaderSkeleton", "DocumentTools", "CollapsibleBlockToolbar", "DocumentBar", "PostSavedState", "PostViewLink", "PreviewDropdown", "PostPreviewButton", "ZoomOutToggle", "PostPublishButtonOrToggle", "MoreMenu"]
|
|
7
7
|
}
|
|
@@ -46,6 +46,7 @@ var import_block_editor = require("@wordpress/block-editor");
|
|
|
46
46
|
var import_ui = require("@wordpress/ui");
|
|
47
47
|
var import_store = require("../../store/index.cjs");
|
|
48
48
|
var import_post_preview_button = __toESM(require("../post-preview-button/index.cjs"));
|
|
49
|
+
var import_device_type = require("../../utils/device-type.cjs");
|
|
49
50
|
var import_lock_unlock = require("../../lock-unlock.cjs");
|
|
50
51
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
51
52
|
function PreviewDropdown({ forceIsAutosaveable, disabled }) {
|
|
@@ -56,14 +57,18 @@ function PreviewDropdown({ forceIsAutosaveable, disabled }) {
|
|
|
56
57
|
isViewable,
|
|
57
58
|
showIconLabels,
|
|
58
59
|
isTemplateHidden,
|
|
59
|
-
templateId
|
|
60
|
+
templateId,
|
|
61
|
+
isResponsiveEditing
|
|
60
62
|
} = (0, import_data.useSelect)((select) => {
|
|
61
63
|
const {
|
|
62
|
-
getDeviceType,
|
|
63
64
|
getCurrentPostType,
|
|
64
65
|
getCurrentTemplateId,
|
|
65
|
-
getRenderingMode
|
|
66
|
-
|
|
66
|
+
getRenderingMode,
|
|
67
|
+
getDeviceType
|
|
68
|
+
} = (0, import_lock_unlock.unlock)(select(import_store.store));
|
|
69
|
+
const { isResponsiveEditing: _isResponsiveEditing } = (0, import_lock_unlock.unlock)(
|
|
70
|
+
select(import_block_editor.store)
|
|
71
|
+
);
|
|
67
72
|
const { getEntityRecord, getPostType } = select(import_core_data.store);
|
|
68
73
|
const { get } = select(import_preferences.store);
|
|
69
74
|
const _currentPostType = getCurrentPostType();
|
|
@@ -74,17 +79,25 @@ function PreviewDropdown({ forceIsAutosaveable, disabled }) {
|
|
|
74
79
|
isViewable: getPostType(_currentPostType)?.viewable ?? false,
|
|
75
80
|
showIconLabels: get("core", "showIconLabels"),
|
|
76
81
|
isTemplateHidden: getRenderingMode() === "post-only",
|
|
77
|
-
templateId: getCurrentTemplateId()
|
|
82
|
+
templateId: getCurrentTemplateId(),
|
|
83
|
+
isResponsiveEditing: _isResponsiveEditing()
|
|
78
84
|
};
|
|
79
85
|
}, []);
|
|
80
86
|
const { setDeviceType, setRenderingMode, setDefaultRenderingMode } = (0, import_lock_unlock.unlock)(
|
|
81
87
|
(0, import_data.useDispatch)(import_store.store)
|
|
82
88
|
);
|
|
83
|
-
const { resetZoomLevel } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_block_editor.store));
|
|
89
|
+
const { resetZoomLevel, setStyleStateViewport, setResponsiveEditing } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_block_editor.store));
|
|
84
90
|
const handleDevicePreviewChange = (newDeviceType) => {
|
|
85
91
|
setDeviceType(newDeviceType);
|
|
86
92
|
resetZoomLevel();
|
|
87
93
|
};
|
|
94
|
+
const handleResponsiveEditingChange = () => {
|
|
95
|
+
const newIsResponsiveEditing = !isResponsiveEditing;
|
|
96
|
+
setResponsiveEditing(newIsResponsiveEditing);
|
|
97
|
+
setStyleStateViewport(
|
|
98
|
+
newIsResponsiveEditing ? import_device_type.VIEWPORT_STATE_BY_DEVICE_TYPE[deviceType] ?? "default" : "default"
|
|
99
|
+
);
|
|
100
|
+
};
|
|
88
101
|
const isMobile = (0, import_compose.useViewportMatch)("medium", "<");
|
|
89
102
|
if (isMobile) {
|
|
90
103
|
return null;
|
|
@@ -112,17 +125,20 @@ function PreviewDropdown({ forceIsAutosaveable, disabled }) {
|
|
|
112
125
|
{
|
|
113
126
|
value: "Desktop",
|
|
114
127
|
label: (0, import_i18n.__)("Desktop"),
|
|
115
|
-
icon: import_icons.desktop
|
|
128
|
+
icon: import_icons.desktop,
|
|
129
|
+
info: isResponsiveEditing ? (0, import_i18n.__)("Edit across all breakpoints.") : (0, import_i18n.__)("Preview desktop viewport.")
|
|
116
130
|
},
|
|
117
131
|
{
|
|
118
132
|
value: "Tablet",
|
|
119
133
|
label: (0, import_i18n.__)("Tablet"),
|
|
120
|
-
icon: import_icons.tablet
|
|
134
|
+
icon: import_icons.tablet,
|
|
135
|
+
info: isResponsiveEditing ? (0, import_i18n.__)("Make tablet exclusive changes.") : (0, import_i18n.__)("Preview tablet viewport.")
|
|
121
136
|
},
|
|
122
137
|
{
|
|
123
138
|
value: "Mobile",
|
|
124
139
|
label: (0, import_i18n.__)("Mobile"),
|
|
125
|
-
icon: import_icons.mobile
|
|
140
|
+
icon: import_icons.mobile,
|
|
141
|
+
info: isResponsiveEditing ? (0, import_i18n.__)("Make mobile exclusive changes.") : (0, import_i18n.__)("Preview mobile viewport.")
|
|
126
142
|
}
|
|
127
143
|
];
|
|
128
144
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -147,6 +163,19 @@ function PreviewDropdown({ forceIsAutosaveable, disabled }) {
|
|
|
147
163
|
onSelect: handleDevicePreviewChange
|
|
148
164
|
}
|
|
149
165
|
) }),
|
|
166
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.MenuGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
167
|
+
import_components.MenuItem,
|
|
168
|
+
{
|
|
169
|
+
icon: isResponsiveEditing ? import_icons.check : void 0,
|
|
170
|
+
isSelected: isResponsiveEditing,
|
|
171
|
+
role: "menuitemcheckbox",
|
|
172
|
+
onClick: handleResponsiveEditingChange,
|
|
173
|
+
info: (0, import_i18n.__)(
|
|
174
|
+
"Edits apply only to the current state."
|
|
175
|
+
),
|
|
176
|
+
children: (0, import_i18n.__)("Responsive editing")
|
|
177
|
+
}
|
|
178
|
+
) }),
|
|
150
179
|
isTemplate && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.MenuGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
151
180
|
import_components.MenuItem,
|
|
152
181
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/preview-dropdown/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n\tIcon as WCIcon,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { desktop, mobile, tablet, external, check } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { ActionItem } from '@wordpress/interface';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { VisuallyHidden } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport PostPreviewButton from '../post-preview-button';\nimport { unlock } from '../../lock-unlock';\n\nexport default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {\n\tconst {\n\t\tdeviceType,\n\t\thomeUrl,\n\t\tisTemplate,\n\t\tisViewable,\n\t\tshowIconLabels,\n\t\tisTemplateHidden,\n\t\ttemplateId,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,qBAAiC;AACjC,wBAMO;AACP,kBAAmB;AACnB,mBAAyD;AACzD,kBAAuC;AACvC,uBAAmC;AACnC,yBAA0C;AAC1C,uBAA2B;AAC3B,0BAA0C;AAC1C,gBAA+B;AAK/B,mBAAqC;AACrC,iCAA8B;AAC9B,yBAAuB;
|
|
6
|
-
"names": ["editorStore", "
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n\tIcon as WCIcon,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { desktop, mobile, tablet, external, check } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { ActionItem } from '@wordpress/interface';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { VisuallyHidden } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport PostPreviewButton from '../post-preview-button';\nimport { VIEWPORT_STATE_BY_DEVICE_TYPE } from '../../utils/device-type';\nimport { unlock } from '../../lock-unlock';\n\nexport default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {\n\tconst {\n\t\tdeviceType,\n\t\thomeUrl,\n\t\tisTemplate,\n\t\tisViewable,\n\t\tshowIconLabels,\n\t\tisTemplateHidden,\n\t\ttemplateId,\n\t\tisResponsiveEditing,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentTemplateId,\n\t\t\tgetRenderingMode,\n\t\t\tgetDeviceType,\n\t\t} = unlock( select( editorStore ) );\n\t\tconst { isResponsiveEditing: _isResponsiveEditing } = unlock(\n\t\t\tselect( blockEditorStore )\n\t\t);\n\t\tconst { getEntityRecord, getPostType } = select( coreStore );\n\t\tconst { get } = select( preferencesStore );\n\t\tconst _currentPostType = getCurrentPostType();\n\t\treturn {\n\t\t\tdeviceType: getDeviceType(),\n\t\t\thomeUrl: getEntityRecord( 'root', '__unstableBase' )?.home,\n\t\t\tisTemplate: _currentPostType === 'wp_template',\n\t\t\tisViewable: getPostType( _currentPostType )?.viewable ?? false,\n\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\tisTemplateHidden: getRenderingMode() === 'post-only',\n\t\t\ttemplateId: getCurrentTemplateId(),\n\t\t\tisResponsiveEditing: _isResponsiveEditing(),\n\t\t};\n\t}, [] );\n\tconst { setDeviceType, setRenderingMode, setDefaultRenderingMode } = unlock(\n\t\tuseDispatch( editorStore )\n\t);\n\tconst { resetZoomLevel, setStyleStateViewport, setResponsiveEditing } =\n\t\tunlock( useDispatch( blockEditorStore ) );\n\n\tconst handleDevicePreviewChange = ( newDeviceType ) => {\n\t\tsetDeviceType( newDeviceType );\n\t\tresetZoomLevel();\n\t};\n\n\tconst handleResponsiveEditingChange = () => {\n\t\tconst newIsResponsiveEditing = ! isResponsiveEditing;\n\t\tsetResponsiveEditing( newIsResponsiveEditing );\n\t\tsetStyleStateViewport(\n\t\t\tnewIsResponsiveEditing\n\t\t\t\t? VIEWPORT_STATE_BY_DEVICE_TYPE[ deviceType ] ?? 'default'\n\t\t\t\t: 'default'\n\t\t);\n\t};\n\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tif ( isMobile ) {\n\t\treturn null;\n\t}\n\n\tconst popoverProps = {\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'editor-preview-dropdown__toggle',\n\t\ticonPosition: 'right',\n\t\tsize: 'compact',\n\t\tshowTooltip: ! showIconLabels,\n\t\tdisabled,\n\t\taccessibleWhenDisabled: disabled,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tdesktop,\n\t\tmobile,\n\t\ttablet,\n\t};\n\n\t/**\n\t * The choices for the device type.\n\t * Duplicated in block-editor block-visibility constants and edit-site\n\t * use-viewport-sync. Update all three when adding new viewport types.\n\t *\n\t * @type {Array}\n\t */\n\tconst choices = [\n\t\t{\n\t\t\tvalue: 'Desktop',\n\t\t\tlabel: __( 'Desktop' ),\n\t\t\ticon: desktop,\n\t\t\tinfo: isResponsiveEditing\n\t\t\t\t? __( 'Edit across all breakpoints.' )\n\t\t\t\t: __( 'Preview desktop viewport.' ),\n\t\t},\n\t\t{\n\t\t\tvalue: 'Tablet',\n\t\t\tlabel: __( 'Tablet' ),\n\t\t\ticon: tablet,\n\t\t\tinfo: isResponsiveEditing\n\t\t\t\t? __( 'Make tablet exclusive changes.' )\n\t\t\t\t: __( 'Preview tablet viewport.' ),\n\t\t},\n\t\t{\n\t\t\tvalue: 'Mobile',\n\t\t\tlabel: __( 'Mobile' ),\n\t\t\ticon: mobile,\n\t\t\tinfo: isResponsiveEditing\n\t\t\t\t? __( 'Make mobile exclusive changes.' )\n\t\t\t\t: __( 'Preview mobile viewport.' ),\n\t\t},\n\t];\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ clsx(\n\t\t\t\t'editor-preview-dropdown',\n\t\t\t\t`editor-preview-dropdown--${ deviceType.toLowerCase() }`\n\t\t\t) }\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ __( 'View' ) }\n\t\t\tdisableOpenOnArrowDown={ disabled }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tchoices={ choices }\n\t\t\t\t\t\t\tvalue={ deviceType }\n\t\t\t\t\t\t\tonSelect={ handleDevicePreviewChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\ticon={ isResponsiveEditing ? check : undefined }\n\t\t\t\t\t\t\tisSelected={ isResponsiveEditing }\n\t\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t\t\tonClick={ handleResponsiveEditingChange }\n\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t'Edits apply only to the current state.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Responsive editing' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ isTemplate && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'View site' ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden render={ <span /> }>\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isTemplate && !! templateId && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ ! isTemplateHidden ? check : undefined }\n\t\t\t\t\t\t\t\tisSelected={ ! isTemplateHidden }\n\t\t\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tconst newRenderingMode = isTemplateHidden\n\t\t\t\t\t\t\t\t\t\t? 'template-locked'\n\t\t\t\t\t\t\t\t\t\t: 'post-only';\n\t\t\t\t\t\t\t\t\tsetRenderingMode( newRenderingMode );\n\t\t\t\t\t\t\t\t\tsetDefaultRenderingMode( newRenderingMode );\n\t\t\t\t\t\t\t\t\tresetZoomLevel();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Show template' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isViewable && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\t\t\tclassName=\"editor-preview-dropdown__button-external\"\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\tforceIsAutosaveable={ forceIsAutosaveable }\n\t\t\t\t\t\t\t\taria-label={ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\ttextContent={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\t\t\t<WCIcon icon={ external } />\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\tonPreview={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t<ActionItem.Slot\n\t\t\t\t\t\tname=\"core/plugin-preview-menu\"\n\t\t\t\t\t\tfillProps={ { onClick: onClose } }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["editorStore", "blockEditorStore", "coreStore", "preferencesStore", "clsx", "PostPreviewButton", "WCIcon"]
|
|
7
7
|
}
|
|
@@ -128,7 +128,6 @@ var {
|
|
|
128
128
|
getMediaSelectKey,
|
|
129
129
|
isIsolatedEditorKey,
|
|
130
130
|
deviceTypeKey,
|
|
131
|
-
onViewportStateChangeKey,
|
|
132
131
|
isNavigationOverlayContextKey,
|
|
133
132
|
isNavigationPostEditorKey,
|
|
134
133
|
mediaUploadOnSuccessKey,
|
|
@@ -249,9 +248,6 @@ function useBlockEditorSettings(settings, postType, postId, renderingMode) {
|
|
|
249
248
|
[settingsBlockPatternCategories, restBlockPatternCategories]
|
|
250
249
|
);
|
|
251
250
|
const { undo, setIsInserterOpened } = (0, import_data.useDispatch)(import_store.store);
|
|
252
|
-
const { updateDeviceTypeForViewportState } = (0, import_lock_unlock.unlock)(
|
|
253
|
-
(0, import_data.useDispatch)(import_store.store)
|
|
254
|
-
);
|
|
255
251
|
const { editMediaEntity } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_core_data.store));
|
|
256
252
|
const { saveEntityRecord } = (0, import_data.useDispatch)(import_core_data.store);
|
|
257
253
|
const { openMediaEditorModal } = (0, import_data.useDispatch)(mediaEditorStore);
|
|
@@ -352,7 +348,6 @@ function useBlockEditorSettings(settings, postType, postId, renderingMode) {
|
|
|
352
348
|
// don't treat template parts as contentOnly sections.
|
|
353
349
|
disableContentOnlyForTemplateParts: renderingMode === "template-locked" || settings.disableContentOnlyForTemplateParts,
|
|
354
350
|
...deviceType ? { [deviceTypeKey]: deviceType } : {},
|
|
355
|
-
[onViewportStateChangeKey]: updateDeviceTypeForViewportState,
|
|
356
351
|
[isNavigationOverlayContextKey]: isNavigationOverlayContext
|
|
357
352
|
};
|
|
358
353
|
if (isRevisionsMode) {
|
|
@@ -386,7 +381,6 @@ function useBlockEditorSettings(settings, postType, postId, renderingMode) {
|
|
|
386
381
|
renderingMode,
|
|
387
382
|
editMediaEntity,
|
|
388
383
|
openMediaEditorModal,
|
|
389
|
-
updateDeviceTypeForViewportState,
|
|
390
384
|
deviceType,
|
|
391
385
|
allImageSizes,
|
|
392
386
|
bigImageSizeThreshold,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/provider/use-block-editor-settings.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tstore as coreStore,\n\t__experimentalFetchLinkSuggestions as fetchLinkSuggestions,\n\t__experimentalFetchUrlData as fetchUrlData,\n\tprivateApis as coreDataPrivateApis,\n} from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport {\n\tprivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { privateApis as mediaEditorPrivateApis } from '@wordpress/media-editor';\n\n/**\n * Internal dependencies\n */\nimport inserterMediaCategories from '../media-categories';\nimport { mediaUpload } from '../../utils';\nimport mediaUploadOnSuccess from '../../utils/media-upload/on-success';\nimport { default as mediaSideload } from '../../utils/media-sideload';\nimport { default as mediaFinalize } from '../../utils/media-finalize';\nimport { default as mediaDelete } from '../../utils/media-delete';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { useGlobalStyles } from '../global-styles';\n\nconst { store: mediaEditorStore } = unlock( mediaEditorPrivateApis );\n\nconst EMPTY_OBJECT = {};\n\nfunction __experimentalReusableBlocksSelect( select ) {\n\tconst { RECEIVE_INTERMEDIATE_RESULTS } = unlock( coreDataPrivateApis );\n\tconst { getEntityRecords } = select( coreStore );\n\treturn getEntityRecords( 'postType', 'wp_block', {\n\t\tper_page: -1,\n\t\t[ RECEIVE_INTERMEDIATE_RESULTS ]: true,\n\t} );\n}\n\nfunction __experimentalUserPatternCategoriesSelect( select ) {\n\treturn select( coreStore ).getUserPatternCategories();\n}\n\nconst BLOCK_EDITOR_SETTINGS = [\n\t'__experimentalBlockBindingsSupportedAttributes',\n\t'__experimentalBlockDirectory',\n\t'__experimentalDiscussionSettings',\n\t'__experimentalFeatures',\n\t'__experimentalGlobalStylesBaseStyles',\n\t'allImageSizes',\n\t'alignWide',\n\t'blockInspectorTabs',\n\t'maxUploadFileSize',\n\t'allowedMimeTypes',\n\t'bodyPlaceholder',\n\t'canEditCSS',\n\t'canLockBlocks',\n\t'canUpdateBlockBindings',\n\t'capabilities',\n\t'clearBlockSelection',\n\t'codeEditingEnabled',\n\t'colors',\n\t'disableContentOnlyForTemplateParts',\n\t'disableContentOnlyForUnsyncedPatterns',\n\t'disableCustomColors',\n\t'disableCustomFontSizes',\n\t'disableCustomSpacingSizes',\n\t'disableCustomGradients',\n\t'disableLayoutStyles',\n\t'enableCustomLineHeight',\n\t'enableCustomSpacing',\n\t'enableCustomUnits',\n\t'enableOpenverseMediaCategory',\n\t'fontSizes',\n\t'gradients',\n\t'generateAnchors',\n\t'onNavigateToEntityRecord',\n\t'imageDefaultSize',\n\t'imageDimensions',\n\t'imageEditing',\n\t'imageSizes',\n\t'isPreviewMode',\n\t'isRTL',\n\t'locale',\n\t'maxWidth',\n\t'postContentAttributes',\n\t'postsPerPage',\n\t'readOnly',\n\t'styles',\n\t'titlePlaceholder',\n\t'supportsLayout',\n\t'widgetTypesToHideFromLegacyWidgetBlock',\n\t'__unstableHasCustomAppender',\n\t'__unstableResolvedAssets',\n\t'__unstableIsBlockBasedTheme',\n];\n\nconst {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n\tselectBlockPatternsKey,\n\treusableBlocksSelectKey,\n\tuserPatternCategoriesSelectKey,\n\tsectionRootClientIdKey,\n\tmediaEditKey,\n\tgetMediaSelectKey,\n\tisIsolatedEditorKey,\n\tdeviceTypeKey,\n\tonViewportStateChangeKey,\n\tisNavigationOverlayContextKey,\n\tisNavigationPostEditorKey,\n\tmediaUploadOnSuccessKey,\n\topenMediaEditorModalKey,\n} = unlock( privateApis );\n\n/**\n * React hook used to compute the block editor settings to use for the post editor.\n *\n * @param {Object} settings EditorProvider settings prop.\n * @param {string} postType Editor root level post type.\n * @param {string} postId Editor root level post ID.\n * @param {string} renderingMode Editor rendering mode.\n *\n * @return {Object} Block Editor Settings.\n */\nfunction useBlockEditorSettings( settings, postType, postId, renderingMode ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst {\n\t\tallImageSizes,\n\t\tbigImageSizeThreshold,\n\t\tallowRightClickOverrides,\n\t\tblockTypes,\n\t\tfocusMode,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tkeepCaretInsideBlock,\n\t\thasUploadPermissions,\n\t\thiddenBlockTypes,\n\t\tcanUseUnfilteredHTML,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpageForPosts,\n\t\trestBlockPatternCategories,\n\t\tsectionRootClientId,\n\t\tdeviceType,\n\t\tisNavigationOverlayContext,\n\t\tisRevisionsMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanUser,\n\t\t\t\tgetRawEntityRecord,\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetBlockPatternCategories,\n\t\t\t} = select( coreStore );\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\tconst { getDeviceType, isRevisionsMode: _isRevisionsMode } = unlock(\n\t\t\t\tselect( editorStore )\n\t\t\t);\n\t\t\tconst { getBlocksByName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst siteSettings = canUser( 'read', {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t} )\n\t\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t\t: undefined;\n\n\t\t\t// Fetch image sizes from REST API index for client-side media processing.\n\t\t\tconst baseData = getEntityRecord( 'root', '__unstableBase' );\n\n\t\t\tfunction getSectionRootBlock() {\n\t\t\t\tif ( renderingMode === 'template-locked' ) {\n\t\t\t\t\treturn getBlocksByName( 'core/post-content' )?.[ 0 ] ?? '';\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\tgetBlocksByName( 'core/group' ).find(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\tgetBlockAttributes( clientId )?.tagName === 'main'\n\t\t\t\t\t) ?? ''\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tallImageSizes: baseData?.image_sizes,\n\t\t\t\tbigImageSizeThreshold: baseData?.image_size_threshold,\n\t\t\t\tallowRightClickOverrides: get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'allowRightClickOverrides'\n\t\t\t\t),\n\t\t\t\tblockTypes: getBlockTypes(),\n\t\t\t\tcanUseUnfilteredHTML: getRawEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tpostId\n\t\t\t\t)?._links?.hasOwnProperty( 'wp:action-unfiltered-html' ),\n\t\t\t\tfocusMode: get( 'core', 'focusMode' ),\n\t\t\t\thasFixedToolbar:\n\t\t\t\t\tget( 'core', 'fixedToolbar' ) || ! isLargeViewport,\n\t\t\t\thiddenBlockTypes: get( 'core', 'hiddenBlockTypes' ),\n\t\t\t\tisDistractionFree: get( 'core', 'distractionFree' ),\n\t\t\t\tkeepCaretInsideBlock: get( 'core', 'keepCaretInsideBlock' ),\n\t\t\t\thasUploadPermissions:\n\t\t\t\t\tcanUser( 'create', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'attachment',\n\t\t\t\t\t} ) ?? true,\n\t\t\t\tuserCanCreatePages: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'page',\n\t\t\t\t} ),\n\t\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\t\tpageForPosts: siteSettings?.page_for_posts,\n\t\t\t\trestBlockPatternCategories: getBlockPatternCategories(),\n\t\t\t\tsectionRootClientId: getSectionRootBlock(),\n\t\t\t\tdeviceType: getDeviceType(),\n\t\t\t\tisNavigationOverlayContext:\n\t\t\t\t\tpostType === 'wp_template_part' && postId\n\t\t\t\t\t\t? getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'wp_template_part',\n\t\t\t\t\t\t\t\tpostId\n\t\t\t\t\t\t )?.area === 'navigation-overlay'\n\t\t\t\t\t\t: false,\n\t\t\t\tisRevisionsMode: _isRevisionsMode(),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId, isLargeViewport, renderingMode ]\n\t);\n\n\tconst { merged: mergedGlobalStyles } = useGlobalStyles();\n\tconst globalStylesData = mergedGlobalStyles.styles ?? EMPTY_OBJECT;\n\tconst globalStylesLinksData = mergedGlobalStyles._links ?? EMPTY_OBJECT;\n\n\tconst settingsBlockPatterns =\n\t\tsettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tsettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst blockPatterns = useMemo(\n\t\t() =>\n\t\t\t[ ...( settingsBlockPatterns || [] ) ].filter(\n\t\t\t\t( { postTypes } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t),\n\t\t[ settingsBlockPatterns, postType ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatternCategories || [] ),\n\t\t\t\t...( restBlockPatternCategories || [] ),\n\t\t\t].filter(\n\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst { undo, setIsInserterOpened } = useDispatch( editorStore );\n\tconst { updateDeviceTypeForViewportState } = unlock(\n\t\tuseDispatch( editorStore )\n\t);\n\tconst { editMediaEntity } = unlock( useDispatch( coreStore ) );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { openMediaEditorModal } = useDispatch( mediaEditorStore );\n\n\t/**\n\t * Creates a Post entity.\n\t * This is utilised by the Link UI to allow for on-the-fly creation of Posts/Pages.\n\t *\n\t * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.\n\t * @return {Object} the post type object that was created.\n\t */\n\tconst createPageEntity = useCallback(\n\t\t( options ) => {\n\t\t\tif ( ! userCanCreatePages ) {\n\t\t\t\treturn Promise.reject( {\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'You do not have permission to create Pages.'\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn saveEntityRecord( 'postType', 'page', options );\n\t\t},\n\t\t[ saveEntityRecord, userCanCreatePages ]\n\t);\n\n\tconst allowedBlockTypes = useMemo( () => {\n\t\t// Omit hidden block types if exists and non-empty.\n\t\tif ( hiddenBlockTypes && hiddenBlockTypes.length > 0 ) {\n\t\t\t// Defer to passed setting for `allowedBlockTypes` if provided as\n\t\t\t// anything other than `true` (where `true` is equivalent to allow\n\t\t\t// all block types).\n\t\t\tconst defaultAllowedBlockTypes =\n\t\t\t\ttrue === settings.allowedBlockTypes\n\t\t\t\t\t? blockTypes.map( ( { name } ) => name )\n\t\t\t\t\t: settings.allowedBlockTypes || [];\n\n\t\t\treturn defaultAllowedBlockTypes.filter(\n\t\t\t\t( type ) => ! hiddenBlockTypes.includes( type )\n\t\t\t);\n\t\t}\n\n\t\treturn settings.allowedBlockTypes;\n\t}, [ settings.allowedBlockTypes, hiddenBlockTypes, blockTypes ] );\n\n\tconst forceDisableFocusMode = settings.focusMode === false;\n\n\treturn useMemo( () => {\n\t\tconst blockEditorSettings = {\n\t\t\t...Object.fromEntries(\n\t\t\t\tObject.entries( settings ).filter( ( [ key ] ) =>\n\t\t\t\t\tBLOCK_EDITOR_SETTINGS.includes( key )\n\t\t\t\t)\n\t\t\t),\n\t\t\t[ globalStylesDataKey ]: globalStylesData,\n\t\t\t[ globalStylesLinksDataKey ]: globalStylesLinksData,\n\t\t\tallImageSizes,\n\t\t\tbigImageSizeThreshold,\n\t\t\tallowedBlockTypes,\n\t\t\tallowRightClickOverrides,\n\t\t\tfocusMode: focusMode && ! forceDisableFocusMode,\n\t\t\thasFixedToolbar,\n\t\t\tisDistractionFree,\n\t\t\tkeepCaretInsideBlock,\n\t\t\t[ getMediaSelectKey ]: ( select, attachmentId ) => {\n\t\t\t\treturn select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'attachment',\n\t\t\t\t\tattachmentId\n\t\t\t\t);\n\t\t\t},\n\t\t\t[ mediaEditKey ]: hasUploadPermissions\n\t\t\t\t? editMediaEntity\n\t\t\t\t: undefined,\n\t\t\t[ openMediaEditorModalKey ]: ( { id, onUpdate, onClose } ) =>\n\t\t\t\topenMediaEditorModal( { id, onUpdate, onClose } ),\n\t\t\tmediaUpload: hasUploadPermissions ? mediaUpload : undefined,\n\t\t\t[ mediaUploadOnSuccessKey ]: hasUploadPermissions\n\t\t\t\t? mediaUploadOnSuccess\n\t\t\t\t: undefined,\n\t\t\tmediaSideload: hasUploadPermissions ? mediaSideload : undefined,\n\t\t\tmediaFinalize: hasUploadPermissions ? mediaFinalize : undefined,\n\t\t\tmediaDelete: hasUploadPermissions ? mediaDelete : undefined,\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t[ selectBlockPatternsKey ]: ( select ) => {\n\t\t\t\tconst { hasFinishedResolution, getBlockPatternsForPostType } =\n\t\t\t\t\tunlock( select( coreStore ) );\n\t\t\t\tconst patterns = getBlockPatternsForPostType( postType );\n\t\t\t\treturn hasFinishedResolution( 'getBlockPatterns' )\n\t\t\t\t\t? patterns\n\t\t\t\t\t: undefined;\n\t\t\t},\n\t\t\t[ reusableBlocksSelectKey ]: __experimentalReusableBlocksSelect,\n\t\t\t[ userPatternCategoriesSelectKey ]:\n\t\t\t\t__experimentalUserPatternCategoriesSelect,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t\t__experimentalFetchLinkSuggestions: ( search, searchOptions ) =>\n\t\t\t\tfetchLinkSuggestions( search, searchOptions, settings ),\n\t\t\tinserterMediaCategories,\n\t\t\t__experimentalFetchRichUrlData: fetchUrlData,\n\t\t\t// Todo: This only checks the top level post, not the post within a template or any other entity that can be edited.\n\t\t\t// This might be better as a generic \"canUser\" selector.\n\t\t\t__experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,\n\t\t\t//Todo: this is only needed for native and should probably be removed.\n\t\t\t__experimentalUndo: undo,\n\t\t\t// Check whether we want all site editor frames to have outlines\n\t\t\t// including the navigation / pattern / parts editors.\n\t\t\toutlineMode: ! isDistractionFree && postType === 'wp_template',\n\t\t\t// Check these two properties: they were not present in the site editor.\n\t\t\t__experimentalCreatePageEntity: createPageEntity,\n\t\t\t__experimentalUserCanCreatePages: userCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\tpageForPosts,\n\t\t\t__experimentalPreferPatternsOnRoot: postType === 'wp_template',\n\t\t\ttemplateLock:\n\t\t\t\tpostType === 'wp_navigation' ? 'insert' : settings.templateLock,\n\t\t\ttemplate:\n\t\t\t\tpostType === 'wp_navigation'\n\t\t\t\t\t? [ [ 'core/navigation', {}, [] ] ]\n\t\t\t\t\t: settings.template,\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpened,\n\t\t\t[ sectionRootClientIdKey ]: sectionRootClientId,\n\t\t\teditorTool:\n\t\t\t\trenderingMode === 'post-only' && postType !== 'wp_template'\n\t\t\t\t\t? 'edit'\n\t\t\t\t\t: undefined,\n\t\t\t// When editing template parts, patterns, or navigation directly,\n\t\t\t// we're in an isolated editing context (focused on that entity alone).\n\t\t\t[ isIsolatedEditorKey ]: [\n\t\t\t\t'wp_template_part',\n\t\t\t\t'wp_block',\n\t\t\t\t'wp_navigation',\n\t\t\t].includes( postType ),\n\t\t\t[ isNavigationPostEditorKey ]: postType === 'wp_navigation',\n\t\t\t// When in template-locked mode (e.g., \"Show Template\" in the post editor),\n\t\t\t// don't treat template parts as contentOnly sections.\n\t\t\tdisableContentOnlyForTemplateParts:\n\t\t\t\trenderingMode === 'template-locked' ||\n\t\t\t\tsettings.disableContentOnlyForTemplateParts,\n\t\t\t...( deviceType ? { [ deviceTypeKey ]: deviceType } : {} ),\n\t\t\t[ onViewportStateChangeKey ]: updateDeviceTypeForViewportState,\n\t\t\t[ isNavigationOverlayContextKey ]: isNavigationOverlayContext,\n\t\t};\n\n\t\tif ( isRevisionsMode ) {\n\t\t\tblockEditorSettings.isPreviewMode = true;\n\t\t}\n\n\t\treturn blockEditorSettings;\n\t}, [\n\t\tisRevisionsMode,\n\t\tallowedBlockTypes,\n\t\tallowRightClickOverrides,\n\t\tfocusMode,\n\t\tforceDisableFocusMode,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tkeepCaretInsideBlock,\n\t\tsettings,\n\t\thasUploadPermissions,\n\t\tblockPatterns,\n\t\tblockPatternCategories,\n\t\tcanUseUnfilteredHTML,\n\t\tundo,\n\t\tcreatePageEntity,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpageForPosts,\n\t\tpostType,\n\t\tsetIsInserterOpened,\n\t\tsectionRootClientId,\n\t\tglobalStylesData,\n\t\tglobalStylesLinksData,\n\t\trenderingMode,\n\t\teditMediaEntity,\n\t\topenMediaEditorModal,\n\t\tupdateDeviceTypeForViewportState,\n\t\tdeviceType,\n\t\tallImageSizes,\n\t\tbigImageSizeThreshold,\n\t\tisNavigationOverlayContext,\n\t] );\n}\n\nexport default useBlockEditorSettings;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAqC;AACrC,kBAAuC;AACvC,uBAKO;AACP,kBAAmB;AACnB,yBAA0C;AAC1C,qBAAiC;AACjC,oBAAqC;AACrC,0BAGO;AACP,0BAAsD;AAKtD,8BAAoC;AACpC,mBAA4B;AAC5B,wBAAiC;AACjC,4BAAyC;AACzC,4BAAyC;AACzC,0BAAuC;AACvC,mBAAqC;AACrC,yBAAuB;AACvB,2BAAgC;AAEhC,IAAM,EAAE,OAAO,iBAAiB,QAAI,2BAAQ,oBAAAA,WAAuB;AAEnE,IAAM,eAAe,CAAC;AAEtB,SAAS,mCAAoC,QAAS;AACrD,QAAM,EAAE,6BAA6B,QAAI,2BAAQ,iBAAAC,WAAoB;AACrE,QAAM,EAAE,iBAAiB,IAAI,OAAQ,iBAAAC,KAAU;AAC/C,SAAO,iBAAkB,YAAY,YAAY;AAAA,IAChD,UAAU;AAAA,IACV,CAAE,4BAA6B,GAAG;AAAA,EACnC,CAAE;AACH;AAEA,SAAS,0CAA2C,QAAS;AAC5D,SAAO,OAAQ,iBAAAA,KAAU,EAAE,yBAAyB;AACrD;AAEA,IAAM,wBAAwB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAM;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tstore as coreStore,\n\t__experimentalFetchLinkSuggestions as fetchLinkSuggestions,\n\t__experimentalFetchUrlData as fetchUrlData,\n\tprivateApis as coreDataPrivateApis,\n} from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport {\n\tprivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { privateApis as mediaEditorPrivateApis } from '@wordpress/media-editor';\n\n/**\n * Internal dependencies\n */\nimport inserterMediaCategories from '../media-categories';\nimport { mediaUpload } from '../../utils';\nimport mediaUploadOnSuccess from '../../utils/media-upload/on-success';\nimport { default as mediaSideload } from '../../utils/media-sideload';\nimport { default as mediaFinalize } from '../../utils/media-finalize';\nimport { default as mediaDelete } from '../../utils/media-delete';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { useGlobalStyles } from '../global-styles';\n\nconst { store: mediaEditorStore } = unlock( mediaEditorPrivateApis );\n\nconst EMPTY_OBJECT = {};\n\nfunction __experimentalReusableBlocksSelect( select ) {\n\tconst { RECEIVE_INTERMEDIATE_RESULTS } = unlock( coreDataPrivateApis );\n\tconst { getEntityRecords } = select( coreStore );\n\treturn getEntityRecords( 'postType', 'wp_block', {\n\t\tper_page: -1,\n\t\t[ RECEIVE_INTERMEDIATE_RESULTS ]: true,\n\t} );\n}\n\nfunction __experimentalUserPatternCategoriesSelect( select ) {\n\treturn select( coreStore ).getUserPatternCategories();\n}\n\nconst BLOCK_EDITOR_SETTINGS = [\n\t'__experimentalBlockBindingsSupportedAttributes',\n\t'__experimentalBlockDirectory',\n\t'__experimentalDiscussionSettings',\n\t'__experimentalFeatures',\n\t'__experimentalGlobalStylesBaseStyles',\n\t'allImageSizes',\n\t'alignWide',\n\t'blockInspectorTabs',\n\t'maxUploadFileSize',\n\t'allowedMimeTypes',\n\t'bodyPlaceholder',\n\t'canEditCSS',\n\t'canLockBlocks',\n\t'canUpdateBlockBindings',\n\t'capabilities',\n\t'clearBlockSelection',\n\t'codeEditingEnabled',\n\t'colors',\n\t'disableContentOnlyForTemplateParts',\n\t'disableContentOnlyForUnsyncedPatterns',\n\t'disableCustomColors',\n\t'disableCustomFontSizes',\n\t'disableCustomSpacingSizes',\n\t'disableCustomGradients',\n\t'disableLayoutStyles',\n\t'enableCustomLineHeight',\n\t'enableCustomSpacing',\n\t'enableCustomUnits',\n\t'enableOpenverseMediaCategory',\n\t'fontSizes',\n\t'gradients',\n\t'generateAnchors',\n\t'onNavigateToEntityRecord',\n\t'imageDefaultSize',\n\t'imageDimensions',\n\t'imageEditing',\n\t'imageSizes',\n\t'isPreviewMode',\n\t'isRTL',\n\t'locale',\n\t'maxWidth',\n\t'postContentAttributes',\n\t'postsPerPage',\n\t'readOnly',\n\t'styles',\n\t'titlePlaceholder',\n\t'supportsLayout',\n\t'widgetTypesToHideFromLegacyWidgetBlock',\n\t'__unstableHasCustomAppender',\n\t'__unstableResolvedAssets',\n\t'__unstableIsBlockBasedTheme',\n];\n\nconst {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n\tselectBlockPatternsKey,\n\treusableBlocksSelectKey,\n\tuserPatternCategoriesSelectKey,\n\tsectionRootClientIdKey,\n\tmediaEditKey,\n\tgetMediaSelectKey,\n\tisIsolatedEditorKey,\n\tdeviceTypeKey,\n\tisNavigationOverlayContextKey,\n\tisNavigationPostEditorKey,\n\tmediaUploadOnSuccessKey,\n\topenMediaEditorModalKey,\n} = unlock( privateApis );\n\n/**\n * React hook used to compute the block editor settings to use for the post editor.\n *\n * @param {Object} settings EditorProvider settings prop.\n * @param {string} postType Editor root level post type.\n * @param {string} postId Editor root level post ID.\n * @param {string} renderingMode Editor rendering mode.\n *\n * @return {Object} Block Editor Settings.\n */\nfunction useBlockEditorSettings( settings, postType, postId, renderingMode ) {\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst {\n\t\tallImageSizes,\n\t\tbigImageSizeThreshold,\n\t\tallowRightClickOverrides,\n\t\tblockTypes,\n\t\tfocusMode,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tkeepCaretInsideBlock,\n\t\thasUploadPermissions,\n\t\thiddenBlockTypes,\n\t\tcanUseUnfilteredHTML,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpageForPosts,\n\t\trestBlockPatternCategories,\n\t\tsectionRootClientId,\n\t\tdeviceType,\n\t\tisNavigationOverlayContext,\n\t\tisRevisionsMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanUser,\n\t\t\t\tgetRawEntityRecord,\n\t\t\t\tgetEntityRecord,\n\t\t\t\tgetBlockPatternCategories,\n\t\t\t} = select( coreStore );\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\tconst { getDeviceType, isRevisionsMode: _isRevisionsMode } = unlock(\n\t\t\t\tselect( editorStore )\n\t\t\t);\n\t\t\tconst { getBlocksByName, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst siteSettings = canUser( 'read', {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t} )\n\t\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t\t: undefined;\n\n\t\t\t// Fetch image sizes from REST API index for client-side media processing.\n\t\t\tconst baseData = getEntityRecord( 'root', '__unstableBase' );\n\n\t\t\tfunction getSectionRootBlock() {\n\t\t\t\tif ( renderingMode === 'template-locked' ) {\n\t\t\t\t\treturn getBlocksByName( 'core/post-content' )?.[ 0 ] ?? '';\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\tgetBlocksByName( 'core/group' ).find(\n\t\t\t\t\t\t( clientId ) =>\n\t\t\t\t\t\t\tgetBlockAttributes( clientId )?.tagName === 'main'\n\t\t\t\t\t) ?? ''\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tallImageSizes: baseData?.image_sizes,\n\t\t\t\tbigImageSizeThreshold: baseData?.image_size_threshold,\n\t\t\t\tallowRightClickOverrides: get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'allowRightClickOverrides'\n\t\t\t\t),\n\t\t\t\tblockTypes: getBlockTypes(),\n\t\t\t\tcanUseUnfilteredHTML: getRawEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tpostId\n\t\t\t\t)?._links?.hasOwnProperty( 'wp:action-unfiltered-html' ),\n\t\t\t\tfocusMode: get( 'core', 'focusMode' ),\n\t\t\t\thasFixedToolbar:\n\t\t\t\t\tget( 'core', 'fixedToolbar' ) || ! isLargeViewport,\n\t\t\t\thiddenBlockTypes: get( 'core', 'hiddenBlockTypes' ),\n\t\t\t\tisDistractionFree: get( 'core', 'distractionFree' ),\n\t\t\t\tkeepCaretInsideBlock: get( 'core', 'keepCaretInsideBlock' ),\n\t\t\t\thasUploadPermissions:\n\t\t\t\t\tcanUser( 'create', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'attachment',\n\t\t\t\t\t} ) ?? true,\n\t\t\t\tuserCanCreatePages: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'page',\n\t\t\t\t} ),\n\t\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\t\tpageForPosts: siteSettings?.page_for_posts,\n\t\t\t\trestBlockPatternCategories: getBlockPatternCategories(),\n\t\t\t\tsectionRootClientId: getSectionRootBlock(),\n\t\t\t\tdeviceType: getDeviceType(),\n\t\t\t\tisNavigationOverlayContext:\n\t\t\t\t\tpostType === 'wp_template_part' && postId\n\t\t\t\t\t\t? getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t'wp_template_part',\n\t\t\t\t\t\t\t\tpostId\n\t\t\t\t\t\t )?.area === 'navigation-overlay'\n\t\t\t\t\t\t: false,\n\t\t\t\tisRevisionsMode: _isRevisionsMode(),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId, isLargeViewport, renderingMode ]\n\t);\n\n\tconst { merged: mergedGlobalStyles } = useGlobalStyles();\n\tconst globalStylesData = mergedGlobalStyles.styles ?? EMPTY_OBJECT;\n\tconst globalStylesLinksData = mergedGlobalStyles._links ?? EMPTY_OBJECT;\n\n\tconst settingsBlockPatterns =\n\t\tsettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tsettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst blockPatterns = useMemo(\n\t\t() =>\n\t\t\t[ ...( settingsBlockPatterns || [] ) ].filter(\n\t\t\t\t( { postTypes } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t),\n\t\t[ settingsBlockPatterns, postType ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatternCategories || [] ),\n\t\t\t\t...( restBlockPatternCategories || [] ),\n\t\t\t].filter(\n\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst { undo, setIsInserterOpened } = useDispatch( editorStore );\n\tconst { editMediaEntity } = unlock( useDispatch( coreStore ) );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { openMediaEditorModal } = useDispatch( mediaEditorStore );\n\n\t/**\n\t * Creates a Post entity.\n\t * This is utilised by the Link UI to allow for on-the-fly creation of Posts/Pages.\n\t *\n\t * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.\n\t * @return {Object} the post type object that was created.\n\t */\n\tconst createPageEntity = useCallback(\n\t\t( options ) => {\n\t\t\tif ( ! userCanCreatePages ) {\n\t\t\t\treturn Promise.reject( {\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'You do not have permission to create Pages.'\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn saveEntityRecord( 'postType', 'page', options );\n\t\t},\n\t\t[ saveEntityRecord, userCanCreatePages ]\n\t);\n\n\tconst allowedBlockTypes = useMemo( () => {\n\t\t// Omit hidden block types if exists and non-empty.\n\t\tif ( hiddenBlockTypes && hiddenBlockTypes.length > 0 ) {\n\t\t\t// Defer to passed setting for `allowedBlockTypes` if provided as\n\t\t\t// anything other than `true` (where `true` is equivalent to allow\n\t\t\t// all block types).\n\t\t\tconst defaultAllowedBlockTypes =\n\t\t\t\ttrue === settings.allowedBlockTypes\n\t\t\t\t\t? blockTypes.map( ( { name } ) => name )\n\t\t\t\t\t: settings.allowedBlockTypes || [];\n\n\t\t\treturn defaultAllowedBlockTypes.filter(\n\t\t\t\t( type ) => ! hiddenBlockTypes.includes( type )\n\t\t\t);\n\t\t}\n\n\t\treturn settings.allowedBlockTypes;\n\t}, [ settings.allowedBlockTypes, hiddenBlockTypes, blockTypes ] );\n\n\tconst forceDisableFocusMode = settings.focusMode === false;\n\n\treturn useMemo( () => {\n\t\tconst blockEditorSettings = {\n\t\t\t...Object.fromEntries(\n\t\t\t\tObject.entries( settings ).filter( ( [ key ] ) =>\n\t\t\t\t\tBLOCK_EDITOR_SETTINGS.includes( key )\n\t\t\t\t)\n\t\t\t),\n\t\t\t[ globalStylesDataKey ]: globalStylesData,\n\t\t\t[ globalStylesLinksDataKey ]: globalStylesLinksData,\n\t\t\tallImageSizes,\n\t\t\tbigImageSizeThreshold,\n\t\t\tallowedBlockTypes,\n\t\t\tallowRightClickOverrides,\n\t\t\tfocusMode: focusMode && ! forceDisableFocusMode,\n\t\t\thasFixedToolbar,\n\t\t\tisDistractionFree,\n\t\t\tkeepCaretInsideBlock,\n\t\t\t[ getMediaSelectKey ]: ( select, attachmentId ) => {\n\t\t\t\treturn select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'attachment',\n\t\t\t\t\tattachmentId\n\t\t\t\t);\n\t\t\t},\n\t\t\t[ mediaEditKey ]: hasUploadPermissions\n\t\t\t\t? editMediaEntity\n\t\t\t\t: undefined,\n\t\t\t[ openMediaEditorModalKey ]: ( { id, onUpdate, onClose } ) =>\n\t\t\t\topenMediaEditorModal( { id, onUpdate, onClose } ),\n\t\t\tmediaUpload: hasUploadPermissions ? mediaUpload : undefined,\n\t\t\t[ mediaUploadOnSuccessKey ]: hasUploadPermissions\n\t\t\t\t? mediaUploadOnSuccess\n\t\t\t\t: undefined,\n\t\t\tmediaSideload: hasUploadPermissions ? mediaSideload : undefined,\n\t\t\tmediaFinalize: hasUploadPermissions ? mediaFinalize : undefined,\n\t\t\tmediaDelete: hasUploadPermissions ? mediaDelete : undefined,\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t[ selectBlockPatternsKey ]: ( select ) => {\n\t\t\t\tconst { hasFinishedResolution, getBlockPatternsForPostType } =\n\t\t\t\t\tunlock( select( coreStore ) );\n\t\t\t\tconst patterns = getBlockPatternsForPostType( postType );\n\t\t\t\treturn hasFinishedResolution( 'getBlockPatterns' )\n\t\t\t\t\t? patterns\n\t\t\t\t\t: undefined;\n\t\t\t},\n\t\t\t[ reusableBlocksSelectKey ]: __experimentalReusableBlocksSelect,\n\t\t\t[ userPatternCategoriesSelectKey ]:\n\t\t\t\t__experimentalUserPatternCategoriesSelect,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t\t__experimentalFetchLinkSuggestions: ( search, searchOptions ) =>\n\t\t\t\tfetchLinkSuggestions( search, searchOptions, settings ),\n\t\t\tinserterMediaCategories,\n\t\t\t__experimentalFetchRichUrlData: fetchUrlData,\n\t\t\t// Todo: This only checks the top level post, not the post within a template or any other entity that can be edited.\n\t\t\t// This might be better as a generic \"canUser\" selector.\n\t\t\t__experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,\n\t\t\t//Todo: this is only needed for native and should probably be removed.\n\t\t\t__experimentalUndo: undo,\n\t\t\t// Check whether we want all site editor frames to have outlines\n\t\t\t// including the navigation / pattern / parts editors.\n\t\t\toutlineMode: ! isDistractionFree && postType === 'wp_template',\n\t\t\t// Check these two properties: they were not present in the site editor.\n\t\t\t__experimentalCreatePageEntity: createPageEntity,\n\t\t\t__experimentalUserCanCreatePages: userCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\tpageForPosts,\n\t\t\t__experimentalPreferPatternsOnRoot: postType === 'wp_template',\n\t\t\ttemplateLock:\n\t\t\t\tpostType === 'wp_navigation' ? 'insert' : settings.templateLock,\n\t\t\ttemplate:\n\t\t\t\tpostType === 'wp_navigation'\n\t\t\t\t\t? [ [ 'core/navigation', {}, [] ] ]\n\t\t\t\t\t: settings.template,\n\t\t\t__experimentalSetIsInserterOpened: setIsInserterOpened,\n\t\t\t[ sectionRootClientIdKey ]: sectionRootClientId,\n\t\t\teditorTool:\n\t\t\t\trenderingMode === 'post-only' && postType !== 'wp_template'\n\t\t\t\t\t? 'edit'\n\t\t\t\t\t: undefined,\n\t\t\t// When editing template parts, patterns, or navigation directly,\n\t\t\t// we're in an isolated editing context (focused on that entity alone).\n\t\t\t[ isIsolatedEditorKey ]: [\n\t\t\t\t'wp_template_part',\n\t\t\t\t'wp_block',\n\t\t\t\t'wp_navigation',\n\t\t\t].includes( postType ),\n\t\t\t[ isNavigationPostEditorKey ]: postType === 'wp_navigation',\n\t\t\t// When in template-locked mode (e.g., \"Show Template\" in the post editor),\n\t\t\t// don't treat template parts as contentOnly sections.\n\t\t\tdisableContentOnlyForTemplateParts:\n\t\t\t\trenderingMode === 'template-locked' ||\n\t\t\t\tsettings.disableContentOnlyForTemplateParts,\n\t\t\t...( deviceType ? { [ deviceTypeKey ]: deviceType } : {} ),\n\t\t\t[ isNavigationOverlayContextKey ]: isNavigationOverlayContext,\n\t\t};\n\n\t\tif ( isRevisionsMode ) {\n\t\t\tblockEditorSettings.isPreviewMode = true;\n\t\t}\n\n\t\treturn blockEditorSettings;\n\t}, [\n\t\tisRevisionsMode,\n\t\tallowedBlockTypes,\n\t\tallowRightClickOverrides,\n\t\tfocusMode,\n\t\tforceDisableFocusMode,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tkeepCaretInsideBlock,\n\t\tsettings,\n\t\thasUploadPermissions,\n\t\tblockPatterns,\n\t\tblockPatternCategories,\n\t\tcanUseUnfilteredHTML,\n\t\tundo,\n\t\tcreatePageEntity,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpageForPosts,\n\t\tpostType,\n\t\tsetIsInserterOpened,\n\t\tsectionRootClientId,\n\t\tglobalStylesData,\n\t\tglobalStylesLinksData,\n\t\trenderingMode,\n\t\teditMediaEntity,\n\t\topenMediaEditorModal,\n\t\tdeviceType,\n\t\tallImageSizes,\n\t\tbigImageSizeThreshold,\n\t\tisNavigationOverlayContext,\n\t] );\n}\n\nexport default useBlockEditorSettings;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["mediaEditorPrivateApis", "coreDataPrivateApis", "coreStore", "preferencesStore", "blocksStore", "editorStore", "blockEditorStore", "mediaUploadOnSuccess", "mediaSideload", "mediaFinalize", "mediaDelete", "fetchLinkSuggestions", "inserterMediaCategories", "fetchUrlData"]
|
|
7
7
|
}
|
|
@@ -34,9 +34,12 @@ __export(resizable_editor_exports, {
|
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(resizable_editor_exports);
|
|
36
36
|
var import_clsx = __toESM(require("clsx"));
|
|
37
|
+
var import_data = require("@wordpress/data");
|
|
37
38
|
var import_element = require("@wordpress/element");
|
|
38
39
|
var import_components = require("@wordpress/components");
|
|
39
40
|
var import_resize_handle = __toESM(require("./resize-handle.cjs"));
|
|
41
|
+
var import_store = require("../../store/index.cjs");
|
|
42
|
+
var import_lock_unlock = require("../../lock-unlock.cjs");
|
|
40
43
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
44
|
var HANDLE_STYLES_OVERRIDE = {
|
|
42
45
|
position: void 0,
|
|
@@ -49,29 +52,71 @@ var HANDLE_STYLES_OVERRIDE = {
|
|
|
49
52
|
bottom: void 0,
|
|
50
53
|
left: void 0
|
|
51
54
|
};
|
|
55
|
+
function isAtMaxWidth(currentWidth, containerWidth, tolerance = 0) {
|
|
56
|
+
return containerWidth > 0 && currentWidth >= containerWidth - tolerance;
|
|
57
|
+
}
|
|
52
58
|
function ResizableEditor({ className, enableResizing, height, children }) {
|
|
53
|
-
const [
|
|
59
|
+
const [isResizing, setIsResizing] = (0, import_element.useState)(false);
|
|
60
|
+
const { setCanvasWidth } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_store.store));
|
|
61
|
+
const canvasWidth = (0, import_data.useSelect)(
|
|
62
|
+
(select) => {
|
|
63
|
+
if (!enableResizing) {
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
const { getCanvasWidth } = (0, import_lock_unlock.unlock)(select(import_store.store));
|
|
67
|
+
return getCanvasWidth();
|
|
68
|
+
},
|
|
69
|
+
[enableResizing]
|
|
70
|
+
);
|
|
54
71
|
const resizableRef = (0, import_element.useRef)();
|
|
55
|
-
const resizeWidthBy = (0, import_element.useCallback)(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
72
|
+
const resizeWidthBy = (0, import_element.useCallback)(
|
|
73
|
+
(deltaPixels) => {
|
|
74
|
+
if (resizableRef.current) {
|
|
75
|
+
const _isAtMaxWidth = isAtMaxWidth(
|
|
76
|
+
resizableRef.current.offsetWidth + deltaPixels,
|
|
77
|
+
resizableRef.current.parentElement?.offsetWidth ?? 0,
|
|
78
|
+
80
|
|
79
|
+
);
|
|
80
|
+
setCanvasWidth(
|
|
81
|
+
_isAtMaxWidth ? void 0 : resizableRef.current.offsetWidth + deltaPixels
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
[setCanvasWidth]
|
|
86
|
+
);
|
|
87
|
+
const updateCanvasWidth = (0, import_element.useCallback)(
|
|
88
|
+
(element) => {
|
|
89
|
+
const currentWidth = element.offsetWidth;
|
|
90
|
+
const containerWidth = element.parentElement?.offsetWidth ?? 0;
|
|
91
|
+
setCanvasWidth(
|
|
92
|
+
isAtMaxWidth(currentWidth, containerWidth, 80) ? void 0 : currentWidth
|
|
93
|
+
);
|
|
94
|
+
},
|
|
95
|
+
[setCanvasWidth]
|
|
96
|
+
);
|
|
60
97
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
61
98
|
import_components.ResizableBox,
|
|
62
99
|
{
|
|
63
100
|
className: (0, import_clsx.default)("editor-resizable-editor", className, {
|
|
64
|
-
"is-resizable": enableResizing
|
|
101
|
+
"is-resizable": enableResizing,
|
|
102
|
+
"is-resizing": isResizing
|
|
65
103
|
}),
|
|
66
104
|
ref: (api) => {
|
|
67
105
|
resizableRef.current = api?.resizable;
|
|
68
106
|
},
|
|
69
107
|
size: {
|
|
70
|
-
width: enableResizing ?
|
|
108
|
+
width: enableResizing && canvasWidth ? canvasWidth + "px" : "100%",
|
|
71
109
|
height: enableResizing && height ? height : "100%"
|
|
72
110
|
},
|
|
111
|
+
onResizeStart: () => {
|
|
112
|
+
setIsResizing(true);
|
|
113
|
+
},
|
|
114
|
+
onResize: (event, direction, element) => {
|
|
115
|
+
updateCanvasWidth(element);
|
|
116
|
+
},
|
|
73
117
|
onResizeStop: (event, direction, element) => {
|
|
74
|
-
|
|
118
|
+
setIsResizing(false);
|
|
119
|
+
updateCanvasWidth(element);
|
|
75
120
|
},
|
|
76
121
|
minWidth: 300,
|
|
77
122
|
maxWidth: "100%",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/resizable-editor/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,qBAA8C;AAC9C,wBAA6B;AAK7B,2BAAyB;
|
|
6
|
-
"names": ["clsx", "ResizeHandle"]
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useRef, useCallback, useState } from '@wordpress/element';\nimport { ResizableBox } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport ResizeHandle from './resize-handle';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDE = {\n\tposition: undefined,\n\tuserSelect: undefined,\n\tcursor: undefined,\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\n/**\n * Checks if the current width is at the max width.\n *\n * @param {number} currentWidth - The current width of the editor.\n * @param {number} containerWidth - The width of the container.\n * @param {number} tolerance - The tolerance for the max width in pixels.\n * @return {boolean} - True if the current width is at the max width, false otherwise.\n */\nfunction isAtMaxWidth( currentWidth, containerWidth, tolerance = 0 ) {\n\treturn containerWidth > 0 && currentWidth >= containerWidth - tolerance;\n}\n\nfunction ResizableEditor( { className, enableResizing, height, children } ) {\n\tconst [ isResizing, setIsResizing ] = useState( false );\n\tconst { setCanvasWidth } = unlock( useDispatch( editorStore ) );\n\tconst canvasWidth = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! enableResizing ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst { getCanvasWidth } = unlock( select( editorStore ) );\n\t\t\treturn getCanvasWidth();\n\t\t},\n\t\t[ enableResizing ]\n\t);\n\n\tconst resizableRef = useRef();\n\tconst resizeWidthBy = useCallback(\n\t\t( deltaPixels ) => {\n\t\t\tif ( resizableRef.current ) {\n\t\t\t\tconst _isAtMaxWidth = isAtMaxWidth(\n\t\t\t\t\tresizableRef.current.offsetWidth + deltaPixels,\n\t\t\t\t\tresizableRef.current.parentElement?.offsetWidth ?? 0,\n\t\t\t\t\t80\n\t\t\t\t);\n\t\t\t\tsetCanvasWidth(\n\t\t\t\t\t_isAtMaxWidth\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: resizableRef.current.offsetWidth + deltaPixels\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ setCanvasWidth ]\n\t);\n\n\tconst updateCanvasWidth = useCallback(\n\t\t( element ) => {\n\t\t\tconst currentWidth = element.offsetWidth;\n\t\t\tconst containerWidth = element.parentElement?.offsetWidth ?? 0;\n\t\t\tsetCanvasWidth(\n\t\t\t\tisAtMaxWidth( currentWidth, containerWidth, 80 )\n\t\t\t\t\t? undefined\n\t\t\t\t\t: currentWidth\n\t\t\t);\n\t\t},\n\t\t[ setCanvasWidth ]\n\t);\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tclassName={ clsx( 'editor-resizable-editor', className, {\n\t\t\t\t'is-resizable': enableResizing,\n\t\t\t\t'is-resizing': isResizing,\n\t\t\t} ) }\n\t\t\tref={ ( api ) => {\n\t\t\t\tresizableRef.current = api?.resizable;\n\t\t\t} }\n\t\t\tsize={ {\n\t\t\t\twidth:\n\t\t\t\t\tenableResizing && canvasWidth ? canvasWidth + 'px' : '100%',\n\t\t\t\theight: enableResizing && height ? height : '100%',\n\t\t\t} }\n\t\t\tonResizeStart={ () => {\n\t\t\t\tsetIsResizing( true );\n\t\t\t} }\n\t\t\tonResize={ ( event, direction, element ) => {\n\t\t\t\tupdateCanvasWidth( element );\n\t\t\t} }\n\t\t\tonResizeStop={ ( event, direction, element ) => {\n\t\t\t\tsetIsResizing( false );\n\t\t\t\tupdateCanvasWidth( element );\n\t\t\t} }\n\t\t\tminWidth={ 300 }\n\t\t\tmaxWidth=\"100%\"\n\t\t\tmaxHeight=\"100%\"\n\t\t\tenable={ {\n\t\t\t\tleft: enableResizing,\n\t\t\t\tright: enableResizing,\n\t\t\t} }\n\t\t\tshowHandle={ enableResizing }\n\t\t\t// The editor is centered horizontally, resizing it only\n\t\t\t// moves half the distance. Hence double the ratio to correctly\n\t\t\t// align the cursor to the resizer handle.\n\t\t\tresizeRatio={ 2 }\n\t\t\thandleComponent={ {\n\t\t\t\tleft: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"left\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tright: (\n\t\t\t\t\t<ResizeHandle\n\t\t\t\t\t\tdirection=\"right\"\n\t\t\t\t\t\tresizeWidthBy={ resizeWidthBy }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t} }\n\t\t\thandleClasses={ undefined }\n\t\t\thandleStyles={ {\n\t\t\t\tleft: HANDLE_STYLES_OVERRIDE,\n\t\t\t\tright: HANDLE_STYLES_OVERRIDE,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</ResizableBox>\n\t);\n}\n\nexport default ResizableEditor;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["editorStore", "clsx", "ResizeHandle"]
|
|
7
7
|
}
|
|
@@ -102,7 +102,8 @@ function VisualEditor({
|
|
|
102
102
|
isDesignPostType,
|
|
103
103
|
postType,
|
|
104
104
|
isPreview,
|
|
105
|
-
styles
|
|
105
|
+
styles,
|
|
106
|
+
hasCanvasWidth
|
|
106
107
|
} = (0, import_data.useSelect)((select) => {
|
|
107
108
|
const {
|
|
108
109
|
getCurrentPostId,
|
|
@@ -110,7 +111,8 @@ function VisualEditor({
|
|
|
110
111
|
getCurrentTemplateId,
|
|
111
112
|
getEditorSettings,
|
|
112
113
|
getRenderingMode,
|
|
113
|
-
getDeviceType
|
|
114
|
+
getDeviceType,
|
|
115
|
+
getCanvasWidth
|
|
114
116
|
} = (0, import_lock_unlock.unlock)(select(import_store.store));
|
|
115
117
|
const { getPostType, getEditedEntityRecord } = select(import_core_data.store);
|
|
116
118
|
const postTypeSlug = getCurrentPostType();
|
|
@@ -143,7 +145,8 @@ function VisualEditor({
|
|
|
143
145
|
isFocusedEntity: !!editorSettings.onNavigateToPreviousEntityRecord,
|
|
144
146
|
postType: postTypeSlug,
|
|
145
147
|
isPreview: editorSettings.isPreviewMode,
|
|
146
|
-
styles: editorSettings.styles
|
|
148
|
+
styles: editorSettings.styles,
|
|
149
|
+
hasCanvasWidth: getCanvasWidth() !== void 0
|
|
147
150
|
};
|
|
148
151
|
}, []);
|
|
149
152
|
const { isCleanNewPost } = (0, import_data.useSelect)(import_store.store);
|
|
@@ -165,7 +168,6 @@ function VisualEditor({
|
|
|
165
168
|
};
|
|
166
169
|
}, []);
|
|
167
170
|
const localRef = (0, import_element.useRef)();
|
|
168
|
-
const deviceStyles = (0, import_block_editor.__experimentalUseResizeCanvas)(deviceType);
|
|
169
171
|
const [globalLayoutSettings] = (0, import_block_editor.useSettings)("layout");
|
|
170
172
|
const fallbackLayout = (0, import_element.useMemo)(() => {
|
|
171
173
|
if (renderingMode !== "post-only" || isDesignPostType) {
|
|
@@ -252,7 +254,8 @@ function VisualEditor({
|
|
|
252
254
|
].includes(postType) && // Disable in previews / view mode.
|
|
253
255
|
!isPreview && // Disable resizing in mobile viewport.
|
|
254
256
|
!isMobileViewport && // Disable resizing in zoomed-out mode.
|
|
255
|
-
!isZoomedOut
|
|
257
|
+
!isZoomedOut || // When the canvas has an explicit width, always allow resizing.
|
|
258
|
+
hasCanvasWidth;
|
|
256
259
|
const isNavigationPreview = postType === import_constants.NAVIGATION_POST_TYPE && isPreview;
|
|
257
260
|
const [paddingAppenderRef, paddingStyle] = (0, import_use_padding_appender.usePaddingAppender)(
|
|
258
261
|
!isPreview && renderingMode === "post-only" && !isDesignPostType
|
|
@@ -300,8 +303,12 @@ function VisualEditor({
|
|
|
300
303
|
"edit-post-visual-editor",
|
|
301
304
|
className,
|
|
302
305
|
{
|
|
303
|
-
|
|
304
|
-
|
|
306
|
+
// Vertical padding frames a width-constrained canvas
|
|
307
|
+
// (device preview or after a resize) as a centered preview.
|
|
308
|
+
"has-vertical-padding": isFocusedEntity || hasCanvasWidth,
|
|
309
|
+
// Horizontal padding leaves room for the resize handles
|
|
310
|
+
// that appear on the left/right of a resizable canvas.
|
|
311
|
+
"has-horizontal-padding": isFocusedEntity || enableResizing,
|
|
305
312
|
"is-iframed": !disableIframe
|
|
306
313
|
}
|
|
307
314
|
),
|
|
@@ -316,10 +323,7 @@ function VisualEditor({
|
|
|
316
323
|
height: "100%",
|
|
317
324
|
iframeProps: {
|
|
318
325
|
...iframeProps,
|
|
319
|
-
style:
|
|
320
|
-
...iframeProps?.style,
|
|
321
|
-
...deviceStyles
|
|
322
|
-
}
|
|
326
|
+
style: iframeProps?.style
|
|
323
327
|
},
|
|
324
328
|
children: [
|
|
325
329
|
themeSupportsLayout && !themeHasDisabledLayoutStyles && renderingMode === "post-only" && !isDesignPostType && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|