@atlaskit/editor-plugin-paste
Version:
Paste plugin for @atlaskit/editor-core
63 lines • 2.2 kB
JavaScript
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
};
}
};
};