UNPKG

@atlaskit/editor-plugin-selection-toolbar

Version:

@atlaskit/editor-plugin-selection-toolbar for @atlaskit/editor-core

55 lines (54 loc) 2.41 kB
import React from 'react'; import { useIntl } from 'react-intl'; import { selectionToolbarMessages } from '@atlaskit/editor-common/messages'; import { useEditorToolbar } from '@atlaskit/editor-common/toolbar'; import { PinIcon, PinnedIcon, ToolbarDropdownItem } from '@atlaskit/editor-toolbar'; var shouldShowPinMenuItem = function shouldShowPinMenuItem(editMode) { return editMode !== 'view'; }; var usePluginState = function usePluginState(_api) { var _useEditorToolbar = useEditorToolbar(), editorViewMode = _useEditorToolbar.editorViewMode, editorToolbarDockingPreference = _useEditorToolbar.editorToolbarDockingPreference, isOffline = _useEditorToolbar.isOffline; return { editorViewMode: editorViewMode, editorToolbarDockingPreference: editorToolbarDockingPreference, isOffline: isOffline }; }; /** * The menu-item version of pin only appears in selection toolbar - the primary toolbar will have its own component */ export var PinMenuItem = function PinMenuItem(_ref) { var api = _ref.api, disablePin = _ref.disablePin; var intl = useIntl(); var _usePluginState = usePluginState(api), editorViewMode = _usePluginState.editorViewMode, editorToolbarDockingPreference = _usePluginState.editorToolbarDockingPreference, isDisabled = _usePluginState.isOffline; var isToolbarDocked = editorToolbarDockingPreference === 'top'; if (disablePin || !shouldShowPinMenuItem(editorViewMode)) { return null; } var onClick = function onClick() { var _api$userPreferences; if (!api || isDisabled) { return; } api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 || (_api$userPreferences = api.userPreferences) === null || _api$userPreferences === void 0 ? void 0 : _api$userPreferences.actions.updateUserPreference('toolbarDockingPosition', isToolbarDocked ? 'none' : 'top')); }; var message = intl.formatMessage(isToolbarDocked ? selectionToolbarMessages.toolbarPositionPinedAtTop : selectionToolbarMessages.toolbarPositionUnpinnedConcise); return /*#__PURE__*/React.createElement(ToolbarDropdownItem, { onClick: onClick, isDisabled: isDisabled, elemBefore: isToolbarDocked ? /*#__PURE__*/React.createElement(PinnedIcon, { size: "small", label: "" }) : /*#__PURE__*/React.createElement(PinIcon, { size: "small", label: "" }) }, message); };