@atlaskit/editor-plugin-panel
Version:
Panel plugin for @atlaskit/editor-core.
58 lines • 2.09 kB
JavaScript
import React, { useCallback, useMemo } from 'react';
import { useIntl } from 'react-intl';
import { PanelType } from '@atlaskit/adf-schema/panel';
import { QuickInsertMenuItem } from '@atlaskit/editor-common/quick-insert/menu-item';
import { messages as quickInsertMessages } from '@atlaskit/editor-common/quick-insert/messages';
import { createPanelAction } from '../../pm-plugins/commands/create-panel-action';
var getPanelAttributes = function getPanelAttributes(panelType) {
return panelType === PanelType.CUSTOM ? {
panelType: panelType,
panelIcon: ':rainbow:',
panelIconId: '1f308',
panelIconText: '🌈',
// Custom panel color is stored in ADF, not applied as UI styling.
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
panelColor: '#E6FCFF'
} : {
panelType: panelType
};
};
export var PanelQuickInsertMenuItem = function PanelQuickInsertMenuItem(_ref) {
var api = _ref.api,
description = _ref.description,
Icon = _ref.icon,
panelType = _ref.panelType,
previewImageUrls = _ref.previewImageUrls,
title = _ref.title;
var _useIntl = useIntl(),
formatMessage = _useIntl.formatMessage;
var preview = useMemo(function () {
return previewImageUrls ? {
image: previewImageUrls,
attribution: {
name: formatMessage(quickInsertMessages.previewAttributionAtlassian)
}
} : undefined;
}, [formatMessage, previewImageUrls]);
var onSelect = useCallback(function (_ref2) {
var editorView = _ref2.editorView,
insert = _ref2.insert,
source = _ref2.source;
return createPanelAction({
api: api,
attributes: getPanelAttributes(panelType),
inputMethod: source,
state: editorView.state,
typeAheadInsert: insert
});
}, [api, panelType]);
return /*#__PURE__*/React.createElement(QuickInsertMenuItem, {
description: formatMessage(description),
iconBefore: /*#__PURE__*/React.createElement(Icon, {
label: ""
}),
onSelect: onSelect,
preview: preview,
title: formatMessage(title)
});
};