@atlaskit/editor-plugin-card
Version:
Card plugin for @atlaskit/editor-core
57 lines • 2.89 kB
JavaScript
import React, { useCallback, useMemo } from 'react';
import { useIntl } from 'react-intl';
import { messages } from '@atlaskit/editor-common/messages/card';
import { ConfluenceAttributionIcon } from '@atlaskit/editor-common/quick-insert/confluence-attribution-icon';
import { JiraAttributionIcon } from '@atlaskit/editor-common/quick-insert/jira-attribution-icon';
import { QuickInsertMenuItem } from '@atlaskit/editor-common/quick-insert/menu-item';
import { messages as quickInsertMessages } from '@atlaskit/editor-common/quick-insert/messages';
import { useQuickInsertContext } from '@atlaskit/editor-common/quick-insert/use-quick-insert-context';
import AssetsIcon from '@atlaskit/icon/core/assets';
import PagesIcon from '@atlaskit/icon/core/pages';
import WorkItemsIcon from '@atlaskit/icon/core/work-items';
import { fg } from '@atlaskit/platform-feature-flags/fg';
import { showDatasourceModal } from '../../pm-plugins/actions';
export const DatasourceQuickInsertMenuItem = ({
previewImageUrls,
type
}) => {
const {
formatMessage
} = useIntl();
const {
isOffline
} = useQuickInsertContext();
const isJira = type === 'jira';
const isConfluenceSearch = type === 'confluence-search';
const description = formatMessage(isJira ? fg('confluence-issue-terminology-refresh') ? messages.datasourceJiraIssueDescriptionIssueTermRefresh : messages.datasourceJiraIssueDescription : isConfluenceSearch ? messages.datasourceConfluenceSearchDescription : messages.datasourceAssetsObjectsDescription);
const preview = useMemo(() => previewImageUrls ? {
image: previewImageUrls,
attribution: {
name: formatMessage(isJira ? quickInsertMessages.previewAttributionJira : isConfluenceSearch ? quickInsertMessages.previewAttributionConfluence : quickInsertMessages.previewAttributionAssets),
...((isJira || isConfluenceSearch) && {
icon: isJira ? JiraAttributionIcon : ConfluenceAttributionIcon
})
}
} : undefined, [formatMessage, isConfluenceSearch, isJira, previewImageUrls]);
const onSelect = useCallback(({
insert
}) => {
const tr = insert(undefined);
showDatasourceModal(type)(tr);
return tr;
}, [type]);
return /*#__PURE__*/React.createElement(QuickInsertMenuItem, {
description: description,
iconBefore: isJira ? /*#__PURE__*/React.createElement(WorkItemsIcon, {
label: ""
}) : isConfluenceSearch ? /*#__PURE__*/React.createElement(PagesIcon, {
label: ""
}) : /*#__PURE__*/React.createElement(AssetsIcon, {
label: ""
}),
isDisabled: isOffline,
onSelect: onSelect,
preview: preview,
title: formatMessage(isJira ? fg('confluence-issue-terminology-refresh') ? messages.datasourceJiraIssueIssueTermRefresh : messages.datasourceJiraIssue : isConfluenceSearch ? messages.datasourceConfluenceList : messages.datasourceAssetsObjectsGeneralAvailability)
});
};