UNPKG

@atlaskit/editor-plugin-selection-toolbar

Version:

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

41 lines 1.93 kB
import React from 'react'; import { useIntl } from 'react-intl'; import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks'; import { selectionToolbarMessages } from '@atlaskit/editor-common/messages'; import { useEditorToolbar } from '@atlaskit/editor-common/toolbar'; import { PinnedIcon, ToolbarButton, ToolbarTooltip } from '@atlaskit/editor-toolbar'; export var PinButton = function PinButton(_ref) { var api = _ref.api; var intl = useIntl(); var message = intl.formatMessage(selectionToolbarMessages.toolbarPositionPinedAtTop); var _useEditorToolbar = useEditorToolbar(), isDisabled = _useEditorToolbar.isOffline; // Pin/unpin is meaningless when a runtime override forces `'always-pinned'` // (e.g. Markdown Mode source / preview view). Subscribe so we re-render and // hide ourselves on flip. var runtimeOverride = useSharedPluginStateWithSelector(api, ['toolbar'], function (states) { var _states$toolbarState; return (_states$toolbarState = states.toolbarState) === null || _states$toolbarState === void 0 ? void 0 : _states$toolbarState.contextualFormattingModeOverride; }); if (runtimeOverride === 'always-pinned') { 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', 'none')); }; return /*#__PURE__*/React.createElement(ToolbarTooltip, { content: message }, /*#__PURE__*/React.createElement(ToolbarButton, { iconBefore: /*#__PURE__*/React.createElement(PinnedIcon, { size: "small", label: "" }), label: message, onClick: onClick, isDisabled: isDisabled })); };