UNPKG

@atlaskit/editor-plugin-paste

Version:

Paste plugin for @atlaskit/editor-core

63 lines 2.2 kB
import React from 'react'; import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments'; import { createPlugin } from './pm-plugins/main'; import { createPlugin as createMoveAnalyticsPlugin } from './pm-plugins/move-analytics/plugin'; import { pluginKey } from './pm-plugins/plugin-factory'; import { Flag } from './ui/Flag'; export const pastePlugin = ({ config, api }) => { var _api$featureFlags, _api$analytics; const { cardOptions, sanitizePrivateContent, isFullPage, pasteWarningOptions } = config !== null && config !== void 0 ? config : {}; const featureFlags = (api === null || api === void 0 ? void 0 : (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {}; const editorAnalyticsAPI = api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions; return { name: 'paste', pmPlugins() { return [{ name: 'paste', plugin: ({ schema, providerFactory, dispatchAnalyticsEvent, dispatch, getIntl }) => createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFlags, api, getIntl, cardOptions, sanitizePrivateContent, providerFactory, pasteWarningOptions) }, { name: 'moveAnalyticsPlugin', plugin: ({ dispatch }) => { return isFullPage ? createMoveAnalyticsPlugin(dispatch, editorAnalyticsAPI) : undefined; } }]; }, contentComponent: !editorExperiment('platform_synced_block', true) ? undefined : () => { if (!pasteWarningOptions) { return null; } return /*#__PURE__*/React.createElement(Flag, { api: api }); }, getSharedState: editorState => { if (!editorState) { return { activeFlag: null, lastContentPasted: null }; } const pluginState = pluginKey.getState(editorState); return { activeFlag: pluginState.activeFlag, lastContentPasted: pluginState.lastContentPasted }; } }; };