@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
58 lines • 1.81 kB
JavaScript
import React from 'react';
import { useIntl } from 'react-intl';
import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
import { blockMenuMessages as messages } from '@atlaskit/editor-common/messages';
import AkFlag, { FlagGroup, AutoDismissFlag } from '@atlaskit/flag';
import SuccessIcon from '@atlaskit/icon/core/check-circle';
import { FLAG_ID } from '../blockMenuPluginType';
import { blockMenuPluginKey } from '../pm-plugins/main';
const flagMap = {
[FLAG_ID.LINK_COPIED_TO_CLIPBOARD]: {
title: messages.linkCopiedToClipboard,
autoDismiss: true
}
};
export const Flag = ({
api
}) => {
const {
showFlag
} = useSharedPluginStateWithSelector(api, ['blockMenu'], states => {
var _states$blockMenuStat;
return {
showFlag: (_states$blockMenuStat = states.blockMenuState) === null || _states$blockMenuStat === void 0 ? void 0 : _states$blockMenuStat.showFlag
};
});
const {
formatMessage
} = useIntl();
if (!showFlag) {
return;
}
const {
title
} = flagMap[showFlag];
const onDismissed = () => {
api === null || api === void 0 ? void 0 : api.core.actions.execute(({
tr
}) => {
tr.setMeta(blockMenuPluginKey, {
showFlag: false
});
return tr;
});
api === null || api === void 0 ? void 0 : api.core.actions.focus();
};
const FlagComponent = flagMap[showFlag].autoDismiss ? AutoDismissFlag : AkFlag;
return /*#__PURE__*/React.createElement(FlagGroup, null, /*#__PURE__*/React.createElement(FlagComponent, {
onDismissed: onDismissed,
title: formatMessage(title),
id: showFlag,
testId: showFlag,
icon: /*#__PURE__*/React.createElement(SuccessIcon, {
label: "",
color: "var(--ds-icon-success, #6A9A23)",
size: "small"
})
}));
};