@atlaskit/editor-plugin-alignment
Version:
Alignment plugin for @atlaskit/editor-core
38 lines • 2.12 kB
JavaScript
import React from 'react';
import { useIntl } from 'react-intl';
import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
import { alignmentMessages as messages } from '@atlaskit/editor-common/messages';
import { ToolbarDropdownMenu, ToolbarTooltip } from '@atlaskit/editor-toolbar';
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
import { alignmentOptions } from './options';
export var AlignmentMenu = function AlignmentMenu(_ref) {
var children = _ref.children,
api = _ref.api;
var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['alignment', 'interaction'], function (states) {
var _states$interactionSt, _states$alignmentStat, _states$alignmentStat2;
return {
align: ((_states$interactionSt = states.interactionState) === null || _states$interactionSt === void 0 ? void 0 : _states$interactionSt.interactionState) === 'hasNotHadInteraction' && expValEquals('platform_editor_default_toolbar_state', 'isEnabled', true) ? 'start' : (_states$alignmentStat = states.alignmentState) === null || _states$alignmentStat === void 0 ? void 0 : _states$alignmentStat.align,
isEnabled: (_states$alignmentStat2 = states.alignmentState) === null || _states$alignmentStat2 === void 0 ? void 0 : _states$alignmentStat2.isEnabled
};
}),
_useSharedPluginState2 = _useSharedPluginState.align,
align = _useSharedPluginState2 === void 0 ? 'start' : _useSharedPluginState2,
isEnabled = _useSharedPluginState.isEnabled;
var Icon = alignmentOptions()[align].icon;
var _useIntl = useIntl(),
formatMessage = _useIntl.formatMessage;
var title = formatMessage(messages.alignment);
return /*#__PURE__*/React.createElement(ToolbarDropdownMenu, {
iconBefore: /*#__PURE__*/React.createElement(Icon, {
label: "",
size: "small",
testId: "text-alignment-menu-".concat(align, "-icon")
}),
isDisabled: !isEnabled,
testId: "text-alignment-menu",
label: title,
tooltipComponent: /*#__PURE__*/React.createElement(ToolbarTooltip, {
content: title
})
}, children);
};