UNPKG

@atlaskit/editor-plugin-panel

Version:

Panel plugin for @atlaskit/editor-core.

58 lines • 2.09 kB
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) }); };