@atlaskit/editor-plugin-paste
Version:
Paste plugin for @atlaskit/editor-core
61 lines • 2.55 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 var pastePlugin = function pastePlugin(_ref) {
var _api$featureFlags, _api$analytics;
var config = _ref.config,
api = _ref.api;
var _ref2 = config !== null && config !== void 0 ? config : {},
cardOptions = _ref2.cardOptions,
sanitizePrivateContent = _ref2.sanitizePrivateContent,
isFullPage = _ref2.isFullPage,
pasteWarningOptions = _ref2.pasteWarningOptions;
var featureFlags = (api === null || api === void 0 || (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
var editorAnalyticsAPI = api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions;
return {
name: 'paste',
pmPlugins: function pmPlugins() {
return [{
name: 'paste',
plugin: function plugin(_ref3) {
var schema = _ref3.schema,
providerFactory = _ref3.providerFactory,
dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent,
dispatch = _ref3.dispatch,
getIntl = _ref3.getIntl;
return createPlugin(schema, dispatchAnalyticsEvent, dispatch, featureFlags, api, getIntl, cardOptions, sanitizePrivateContent, providerFactory, pasteWarningOptions);
}
}, {
name: 'moveAnalyticsPlugin',
plugin: function plugin(_ref4) {
var dispatch = _ref4.dispatch;
return isFullPage ? createMoveAnalyticsPlugin(dispatch, editorAnalyticsAPI) : undefined;
}
}];
},
contentComponent: !editorExperiment('platform_synced_block', true) ? undefined : function () {
if (!pasteWarningOptions) {
return null;
}
return /*#__PURE__*/React.createElement(Flag, {
api: api
});
},
getSharedState: function getSharedState(editorState) {
if (!editorState) {
return {
activeFlag: null,
lastContentPasted: null
};
}
var pluginState = pluginKey.getState(editorState);
return {
activeFlag: pluginState.activeFlag,
lastContentPasted: pluginState.lastContentPasted
};
}
};
};