UNPKG

@wordpress/editor

Version:
340 lines (337 loc) 9.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useCommands; var _data = require("@wordpress/data"); var _i18n = require("@wordpress/i18n"); var _icons = require("@wordpress/icons"); var _commands = require("@wordpress/commands"); var _preferences = require("@wordpress/preferences"); var _notices = require("@wordpress/notices"); var _blockEditor = require("@wordpress/block-editor"); var _coreData = require("@wordpress/core-data"); var _interface = require("@wordpress/interface"); var _store = require("../../store"); var _constants = require("../../store/constants"); var _patternRenameModal = require("../pattern-rename-modal"); var _patternDuplicateModal = require("../pattern-duplicate-modal"); /** * WordPress dependencies */ /** * Internal dependencies */ function useEditorCommandLoader() { const { editorMode, isListViewOpen, showBlockBreadcrumbs, isDistractionFree, isTopToolbar, isFocusMode, isPreviewMode, isViewable, isCodeEditingEnabled, isRichEditingEnabled, isPublishSidebarEnabled } = (0, _data.useSelect)(select => { var _get, _getPostType$viewable; const { get } = select(_preferences.store); const { isListViewOpened, getCurrentPostType, getEditorSettings } = select(_store.store); const { getSettings } = select(_blockEditor.store); const { getPostType } = select(_coreData.store); return { editorMode: (_get = get('core', 'editorMode')) !== null && _get !== void 0 ? _get : 'visual', isListViewOpen: isListViewOpened(), showBlockBreadcrumbs: get('core', 'showBlockBreadcrumbs'), isDistractionFree: get('core', 'distractionFree'), isFocusMode: get('core', 'focusMode'), isTopToolbar: get('core', 'fixedToolbar'), isPreviewMode: getSettings().__unstableIsPreviewMode, isViewable: (_getPostType$viewable = getPostType(getCurrentPostType())?.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false, isCodeEditingEnabled: getEditorSettings().codeEditingEnabled, isRichEditingEnabled: getEditorSettings().richEditingEnabled, isPublishSidebarEnabled: select(_store.store).isPublishSidebarEnabled() }; }, []); const { getActiveComplementaryArea } = (0, _data.useSelect)(_interface.store); const { toggle } = (0, _data.useDispatch)(_preferences.store); const { createInfoNotice } = (0, _data.useDispatch)(_notices.store); const { __unstableSaveForPreview, setIsListViewOpened, switchEditorMode, toggleDistractionFree } = (0, _data.useDispatch)(_store.store); const { openModal, enableComplementaryArea, disableComplementaryArea } = (0, _data.useDispatch)(_interface.store); const { getCurrentPostId } = (0, _data.useSelect)(_store.store); const allowSwitchEditorMode = isCodeEditingEnabled && isRichEditingEnabled; if (isPreviewMode) { return { commands: [], isLoading: false }; } const commands = []; commands.push({ name: 'core/open-shortcut-help', label: (0, _i18n.__)('Keyboard shortcuts'), icon: _icons.keyboard, callback: ({ close }) => { close(); openModal('editor/keyboard-shortcut-help'); } }); commands.push({ name: 'core/toggle-distraction-free', label: isDistractionFree ? (0, _i18n.__)('Exit Distraction Free') : (0, _i18n.__)('Enter Distraction Free'), callback: ({ close }) => { toggleDistractionFree(); close(); } }); commands.push({ name: 'core/open-preferences', label: (0, _i18n.__)('Editor preferences'), callback: ({ close }) => { close(); openModal('editor/preferences'); } }); commands.push({ name: 'core/toggle-spotlight-mode', label: (0, _i18n.__)('Toggle spotlight'), callback: ({ close }) => { toggle('core', 'focusMode'); close(); createInfoNotice(isFocusMode ? (0, _i18n.__)('Spotlight off.') : (0, _i18n.__)('Spotlight on.'), { id: 'core/editor/toggle-spotlight-mode/notice', type: 'snackbar', actions: [{ label: (0, _i18n.__)('Undo'), onClick: () => { toggle('core', 'focusMode'); } }] }); } }); commands.push({ name: 'core/toggle-list-view', label: isListViewOpen ? (0, _i18n.__)('Close List View') : (0, _i18n.__)('Open List View'), icon: _icons.listView, callback: ({ close }) => { setIsListViewOpened(!isListViewOpen); close(); createInfoNotice(isListViewOpen ? (0, _i18n.__)('List View off.') : (0, _i18n.__)('List View on.'), { id: 'core/editor/toggle-list-view/notice', type: 'snackbar' }); } }); commands.push({ name: 'core/toggle-top-toolbar', label: (0, _i18n.__)('Toggle top toolbar'), callback: ({ close }) => { toggle('core', 'fixedToolbar'); if (isDistractionFree) { toggleDistractionFree(); } close(); createInfoNotice(isTopToolbar ? (0, _i18n.__)('Top toolbar off.') : (0, _i18n.__)('Top toolbar on.'), { id: 'core/editor/toggle-top-toolbar/notice', type: 'snackbar', actions: [{ label: (0, _i18n.__)('Undo'), onClick: () => { toggle('core', 'fixedToolbar'); } }] }); } }); if (allowSwitchEditorMode) { commands.push({ name: 'core/toggle-code-editor', label: editorMode === 'visual' ? (0, _i18n.__)('Open code editor') : (0, _i18n.__)('Exit code editor'), icon: _icons.code, callback: ({ close }) => { switchEditorMode(editorMode === 'visual' ? 'text' : 'visual'); close(); } }); } commands.push({ name: 'core/toggle-breadcrumbs', label: showBlockBreadcrumbs ? (0, _i18n.__)('Hide block breadcrumbs') : (0, _i18n.__)('Show block breadcrumbs'), callback: ({ close }) => { toggle('core', 'showBlockBreadcrumbs'); close(); createInfoNotice(showBlockBreadcrumbs ? (0, _i18n.__)('Breadcrumbs hidden.') : (0, _i18n.__)('Breadcrumbs visible.'), { id: 'core/editor/toggle-breadcrumbs/notice', type: 'snackbar' }); } }); commands.push({ name: 'core/open-settings-sidebar', label: (0, _i18n.__)('Toggle settings sidebar'), icon: (0, _i18n.isRTL)() ? _icons.drawerLeft : _icons.drawerRight, callback: ({ close }) => { const activeSidebar = getActiveComplementaryArea('core'); close(); if (activeSidebar === 'edit-post/document') { disableComplementaryArea('core'); } else { enableComplementaryArea('core', 'edit-post/document'); } } }); commands.push({ name: 'core/open-block-inspector', label: (0, _i18n.__)('Toggle block inspector'), icon: _icons.blockDefault, callback: ({ close }) => { const activeSidebar = getActiveComplementaryArea('core'); close(); if (activeSidebar === 'edit-post/block') { disableComplementaryArea('core'); } else { enableComplementaryArea('core', 'edit-post/block'); } } }); commands.push({ name: 'core/toggle-publish-sidebar', label: isPublishSidebarEnabled ? (0, _i18n.__)('Disable pre-publish checks') : (0, _i18n.__)('Enable pre-publish checks'), icon: _icons.formatListBullets, callback: ({ close }) => { close(); toggle('core', 'isPublishSidebarEnabled'); createInfoNotice(isPublishSidebarEnabled ? (0, _i18n.__)('Pre-publish checks disabled.') : (0, _i18n.__)('Pre-publish checks enabled.'), { id: 'core/editor/publish-sidebar/notice', type: 'snackbar' }); } }); if (isViewable) { commands.push({ name: 'core/preview-link', label: (0, _i18n.__)('Preview in a new tab'), icon: _icons.external, callback: async ({ close }) => { close(); const postId = getCurrentPostId(); const link = await __unstableSaveForPreview(); window.open(link, `wp-preview-${postId}`); } }); } return { commands, isLoading: false }; } function useEditedEntityContextualCommands() { const { postType } = (0, _data.useSelect)(select => { const { getCurrentPostType } = select(_store.store); return { postType: getCurrentPostType() }; }, []); const { openModal } = (0, _data.useDispatch)(_interface.store); const commands = []; if (postType === _constants.PATTERN_POST_TYPE) { commands.push({ name: 'core/rename-pattern', label: (0, _i18n.__)('Rename pattern'), icon: _icons.edit, callback: ({ close }) => { openModal(_patternRenameModal.modalName); close(); } }); commands.push({ name: 'core/duplicate-pattern', label: (0, _i18n.__)('Duplicate pattern'), icon: _icons.symbol, callback: ({ close }) => { openModal(_patternDuplicateModal.modalName); close(); } }); } return { isLoading: false, commands }; } function useCommands() { (0, _commands.useCommandLoader)({ name: 'core/editor/edit-ui', hook: useEditorCommandLoader }); (0, _commands.useCommandLoader)({ name: 'core/editor/contextual-commands', hook: useEditedEntityContextualCommands, context: 'entity-edit' }); } //# sourceMappingURL=index.js.map