@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
340 lines (337 loc) • 9.63 kB
JavaScript
;
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