UNPKG

@wordpress/editor

Version:
242 lines (239 loc) 11.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = EditorPreferencesModal; var _i18n = require("@wordpress/i18n"); var _compose = require("@wordpress/compose"); var _data = require("@wordpress/data"); var _element = require("@wordpress/element"); var _preferences = require("@wordpress/preferences"); var _interface = require("@wordpress/interface"); var _enablePanel = _interopRequireDefault(require("./enable-panel")); var _enablePluginDocumentSettingPanel = _interopRequireDefault(require("./enable-plugin-document-setting-panel")); var _enablePublishSidebar = _interopRequireDefault(require("./enable-publish-sidebar")); var _blockManager = _interopRequireDefault(require("../block-manager")); var _postTaxonomies = _interopRequireDefault(require("../post-taxonomies")); var _check = _interopRequireDefault(require("../post-featured-image/check")); var _check2 = _interopRequireDefault(require("../post-excerpt/check")); var _check3 = _interopRequireDefault(require("../page-attributes/check")); var _postTypeSupportCheck = _interopRequireDefault(require("../post-type-support-check")); var _store = require("../../store"); var _lockUnlock = require("../../lock-unlock"); var _startPageOptions = require("../start-page-options"); var _jsxRuntime = require("react/jsx-runtime"); /** * WordPress dependencies */ /** * Internal dependencies */ const { PreferencesModal, PreferencesModalTabs, PreferencesModalSection, PreferenceToggleControl } = (0, _lockUnlock.unlock)(_preferences.privateApis); function EditorPreferencesModal({ extraSections = {} }) { const isLargeViewport = (0, _compose.useViewportMatch)('medium'); const { isActive, showBlockBreadcrumbsOption } = (0, _data.useSelect)(select => { const { getEditorSettings } = select(_store.store); const { get } = select(_preferences.store); const { isModalActive } = select(_interface.store); const isRichEditingEnabled = getEditorSettings().richEditingEnabled; const isDistractionFreeEnabled = get('core', 'distractionFree'); return { showBlockBreadcrumbsOption: !isDistractionFreeEnabled && isLargeViewport && isRichEditingEnabled, isActive: isModalActive('editor/preferences') }; }, [isLargeViewport]); const { closeModal } = (0, _data.useDispatch)(_interface.store); const { setIsListViewOpened, setIsInserterOpened } = (0, _data.useDispatch)(_store.store); const { set: setPreference } = (0, _data.useDispatch)(_preferences.store); const hasStarterPatterns = !!(0, _startPageOptions.useStartPatterns)().length; const sections = (0, _element.useMemo)(() => [{ name: 'general', tabLabel: (0, _i18n.__)('General'), content: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(PreferencesModalSection, { title: (0, _i18n.__)('Interface'), children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "showListViewByDefault", help: (0, _i18n.__)('Opens the List View sidebar by default.'), label: (0, _i18n.__)('Always open List View') }), showBlockBreadcrumbsOption && /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "showBlockBreadcrumbs", help: (0, _i18n.__)('Display the block hierarchy trail at the bottom of the editor.'), label: (0, _i18n.__)('Show block breadcrumbs') }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "allowRightClickOverrides", help: (0, _i18n.__)('Allows contextual List View menus via right-click, overriding browser defaults.'), label: (0, _i18n.__)('Allow right-click contextual menus') }), hasStarterPatterns && /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "enableChoosePatternModal", help: (0, _i18n.__)('Shows starter patterns when creating a new page.'), label: (0, _i18n.__)('Show starter patterns') })] }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(PreferencesModalSection, { title: (0, _i18n.__)('Document settings'), description: (0, _i18n.__)('Select what settings are shown in the document panel.'), children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_enablePluginDocumentSettingPanel.default.Slot, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_postTaxonomies.default, { taxonomyWrapper: (content, taxonomy) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_enablePanel.default, { label: taxonomy.labels.menu_name, panelName: `taxonomy-panel-${taxonomy.slug}` }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_check.default, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_enablePanel.default, { label: (0, _i18n.__)('Featured image'), panelName: "featured-image" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_check2.default, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_enablePanel.default, { label: (0, _i18n.__)('Excerpt'), panelName: "post-excerpt" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_postTypeSupportCheck.default, { supportKeys: ['comments', 'trackbacks'], children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_enablePanel.default, { label: (0, _i18n.__)('Discussion'), panelName: "discussion-panel" }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_check3.default, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_enablePanel.default, { label: (0, _i18n.__)('Page attributes'), panelName: "page-attributes" }) })] }), isLargeViewport && /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferencesModalSection, { title: (0, _i18n.__)('Publishing'), children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_enablePublishSidebar.default, { help: (0, _i18n.__)('Review settings, such as visibility and tags.'), label: (0, _i18n.__)('Enable pre-publish checks') }) }), extraSections?.general] }) }, { name: 'appearance', tabLabel: (0, _i18n.__)('Appearance'), content: /*#__PURE__*/(0, _jsxRuntime.jsxs)(PreferencesModalSection, { title: (0, _i18n.__)('Appearance'), description: (0, _i18n.__)('Customize the editor interface to suit your needs.'), children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "fixedToolbar", onToggle: () => setPreference('core', 'distractionFree', false), help: (0, _i18n.__)('Access all block and document tools in a single place.'), label: (0, _i18n.__)('Top toolbar') }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "distractionFree", onToggle: () => { setPreference('core', 'fixedToolbar', true); setIsInserterOpened(false); setIsListViewOpened(false); }, help: (0, _i18n.__)('Reduce visual distractions by hiding the toolbar and other elements to focus on writing.'), label: (0, _i18n.__)('Distraction free') }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "focusMode", help: (0, _i18n.__)('Highlights the current block and fades other content.'), label: (0, _i18n.__)('Spotlight mode') }), extraSections?.appearance] }) }, { name: 'accessibility', tabLabel: (0, _i18n.__)('Accessibility'), content: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PreferencesModalSection, { title: (0, _i18n.__)('Navigation'), description: (0, _i18n.__)('Optimize the editing experience for enhanced control.'), children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "keepCaretInsideBlock", help: (0, _i18n.__)('Keeps the text cursor within the block boundaries, aiding users with screen readers by preventing unintentional cursor movement outside the block.'), label: (0, _i18n.__)('Contain text cursor inside block') }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferencesModalSection, { title: (0, _i18n.__)('Interface'), children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "showIconLabels", label: (0, _i18n.__)('Show button text labels'), help: (0, _i18n.__)('Show text instead of icons on buttons across the interface.') }) })] }) }, { name: 'blocks', tabLabel: (0, _i18n.__)('Blocks'), content: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PreferencesModalSection, { title: (0, _i18n.__)('Inserter'), children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core", featureName: "mostUsedBlocks", help: (0, _i18n.__)('Adds a category with the most frequently used blocks in the inserter.'), label: (0, _i18n.__)('Show most used blocks') }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferencesModalSection, { title: (0, _i18n.__)('Manage block visibility'), description: (0, _i18n.__)("Disable blocks that you don't want to appear in the inserter. They can always be toggled back on later."), children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockManager.default, {}) })] }) }, window.__experimentalMediaProcessing && { name: 'media', tabLabel: (0, _i18n.__)('Media'), content: /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, { children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(PreferencesModalSection, { title: (0, _i18n.__)('General'), description: (0, _i18n.__)('Customize options related to the media upload flow.'), children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core/media", featureName: "optimizeOnUpload", help: (0, _i18n.__)('Compress media items before uploading to the server.'), label: (0, _i18n.__)('Pre-upload compression') }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferenceToggleControl, { scope: "core/media", featureName: "requireApproval", help: (0, _i18n.__)('Require approval step when optimizing existing media.'), label: (0, _i18n.__)('Approval step') })] }) }) }].filter(Boolean), [showBlockBreadcrumbsOption, extraSections, setIsInserterOpened, setIsListViewOpened, setPreference, isLargeViewport, hasStarterPatterns]); if (!isActive) { return null; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferencesModal, { closeModal: closeModal, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PreferencesModalTabs, { sections: sections }) }); } //# sourceMappingURL=index.js.map