UNPKG

@atlaskit/editor-plugin-paste-options-toolbar

Version:

Paste options toolbar for @atlaskit/editor-core

134 lines (133 loc) 9.32 kB
"use strict"; var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.pasteOptionsToolbarPlugin = void 0; var _react = _interopRequireWildcard(require("react")); var _hooks = require("@atlaskit/editor-common/hooks"); var _platformFeatureFlags = require("@atlaskit/platform-feature-flags"); var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure"); var _commands = require("./editor-commands/commands"); var _main = require("./pm-plugins/main"); var _types = require("./types/types"); var _exposure = require("./ui/on-paste-actions-menu/exposure"); var _PasteActionsMenu = require("./ui/on-paste-actions-menu/PasteActionsMenu"); var _PasteMenuComponents = require("./ui/on-paste-actions-menu/PasteMenuComponents"); var _toolbar = require("./ui/toolbar"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var pasteOptionsToolbarPlugin = exports.pasteOptionsToolbarPlugin = function pasteOptionsToolbarPlugin(_ref) { var _api$analytics; var config = _ref.config, api = _ref.api; var editorAnalyticsAPI = api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions; if (config !== null && config !== void 0 && config.usePopupBasedPasteActionsMenu && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_paste_actions_menu', 'isEnabled', true)) { var _api$uiControlRegistr; api === null || api === void 0 || (_api$uiControlRegistr = api.uiControlRegistry) === null || _api$uiControlRegistr === void 0 || _api$uiControlRegistr.actions.register((0, _PasteMenuComponents.getPasteMenuComponents)({ api: api })); } return { name: 'pasteOptionsToolbarPlugin', pmPlugins: function pmPlugins() { return [{ name: 'pasteOptionsToolbarPlugin', plugin: function plugin(_ref2) { var dispatch = _ref2.dispatch; return (0, _main.createPlugin)(dispatch, { useNewPasteMenu: (config === null || config === void 0 ? void 0 : config.usePopupBasedPasteActionsMenu) && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_paste_actions_menu', 'isEnabled', true) }); } }]; }, getSharedState: function getSharedState(editorState) { var _pluginState$isPlainT, _pluginState$pasteAnc, _pluginState$pasteEnd, _pluginState$pasteSta, _pluginState$plaintex, _pluginState$selected, _pluginState$showLega, _pluginState$showTool; if (!editorState) { return { isPlainText: false, pasteAncestorNodeNames: [], pasteEndPos: 0, pasteStartPos: 0, plaintextLength: 0, selectedOption: _types.ToolbarDropdownOption.None, showLegacyOptions: false, showToolbar: false }; } var pluginState = _types.pasteOptionsPluginKey.getState(editorState); return { isPlainText: (_pluginState$isPlainT = pluginState === null || pluginState === void 0 ? void 0 : pluginState.isPlainText) !== null && _pluginState$isPlainT !== void 0 ? _pluginState$isPlainT : false, pasteAncestorNodeNames: (_pluginState$pasteAnc = pluginState === null || pluginState === void 0 ? void 0 : pluginState.pasteAncestorNodeNames) !== null && _pluginState$pasteAnc !== void 0 ? _pluginState$pasteAnc : [], pasteEndPos: (_pluginState$pasteEnd = pluginState === null || pluginState === void 0 ? void 0 : pluginState.pasteEndPos) !== null && _pluginState$pasteEnd !== void 0 ? _pluginState$pasteEnd : 0, pasteStartPos: (_pluginState$pasteSta = pluginState === null || pluginState === void 0 ? void 0 : pluginState.pasteStartPos) !== null && _pluginState$pasteSta !== void 0 ? _pluginState$pasteSta : 0, plaintextLength: (_pluginState$plaintex = pluginState === null || pluginState === void 0 ? void 0 : pluginState.plaintext.length) !== null && _pluginState$plaintex !== void 0 ? _pluginState$plaintex : 0, selectedOption: (_pluginState$selected = pluginState === null || pluginState === void 0 ? void 0 : pluginState.selectedOption) !== null && _pluginState$selected !== void 0 ? _pluginState$selected : _types.ToolbarDropdownOption.None, showLegacyOptions: (_pluginState$showLega = pluginState === null || pluginState === void 0 ? void 0 : pluginState.showLegacyOptions) !== null && _pluginState$showLega !== void 0 ? _pluginState$showLega : false, showToolbar: (_pluginState$showTool = pluginState === null || pluginState === void 0 ? void 0 : pluginState.showToolbar) !== null && _pluginState$showTool !== void 0 ? _pluginState$showTool : false }; }, pluginsOptions: { floatingToolbar: function floatingToolbar(state, intl) { if (config !== null && config !== void 0 && config.usePopupBasedPasteActionsMenu && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_paste_actions_menu', 'isEnabled', true)) { return; } var pastePluginState = _types.pasteOptionsPluginKey.getState(state); if (pastePluginState.showToolbar) { return (0, _toolbar.buildToolbar)(state, intl, editorAnalyticsAPI); } return; } }, contentComponent: function contentComponent(_ref3) { var editorView = _ref3.editorView, popupsMountPoint = _ref3.popupsMountPoint, popupsBoundariesElement = _ref3.popupsBoundariesElement, popupsScrollableElement = _ref3.popupsScrollableElement; if (!(config !== null && config !== void 0 && config.usePopupBasedPasteActionsMenu && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_paste_actions_menu', 'isEnabled', true)) || !editorView) { return null; } return /*#__PURE__*/_react.default.createElement(_PasteActionsMenu.PasteActionsMenu, { api: api, editorView: editorView, mountTo: popupsMountPoint, boundariesElement: popupsBoundariesElement, scrollableElement: popupsScrollableElement }); }, usePluginHook: function usePluginHook(_ref4) { var editorView = _ref4.editorView; var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['paste'], function (states) { var _states$pasteState; return { lastContentPasted: (_states$pasteState = states.pasteState) === null || _states$pasteState === void 0 ? void 0 : _states$pasteState.lastContentPasted }; }), lastContentPasted = _useSharedPluginState.lastContentPasted; (0, _react.useEffect)(function () { if (config !== null && config !== void 0 && config.usePopupBasedPasteActionsMenu && (0, _platformFeatureFlags.fg)('platform_editor_paste_actions_menu_exposure')) { var _lastContentPasted$te, _lastContentPasted$te2; (0, _exposure.firePasteActionsMenuExperimentExposure)((_lastContentPasted$te = lastContentPasted === null || lastContentPasted === void 0 || (_lastContentPasted$te2 = lastContentPasted.text) === null || _lastContentPasted$te2 === void 0 ? void 0 : _lastContentPasted$te2.length) !== null && _lastContentPasted$te !== void 0 ? _lastContentPasted$te : 0, editorView.state, lastContentPasted === null || lastContentPasted === void 0 ? void 0 : lastContentPasted.pasteStartPos, lastContentPasted === null || lastContentPasted === void 0 ? void 0 : lastContentPasted.pasteEndPos, lastContentPasted === null || lastContentPasted === void 0 ? void 0 : lastContentPasted.text, lastContentPasted === null || lastContentPasted === void 0 ? void 0 : lastContentPasted.pastedSlice); } if (config !== null && config !== void 0 && config.usePopupBasedPasteActionsMenu && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_paste_actions_menu', 'isEnabled', true)) { return; } if (!lastContentPasted) { (0, _commands.hideToolbar)()(editorView.state, editorView.dispatch); return; } var selectedOption = _types.ToolbarDropdownOption.None; if (!lastContentPasted.isPlainText) { selectedOption = _types.ToolbarDropdownOption.RichText; } else if (lastContentPasted.isShiftPressed) { selectedOption = _types.ToolbarDropdownOption.PlainText; } else { selectedOption = _types.ToolbarDropdownOption.Markdown; } if (!(0, _toolbar.isToolbarVisible)(editorView.state, lastContentPasted)) { return; } (0, _commands.showToolbar)(lastContentPasted, selectedOption)(editorView.state, editorView.dispatch); }, [lastContentPasted, editorView]); } }; };