UNPKG

@atlaskit/editor-plugin-collab-edit

Version:

Collab Edit plugin for @atlaskit/editor-core

61 lines (59 loc) 2.23 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.initialize = void 0; var _memoizeOne = _interopRequireDefault(require("memoize-one")); var _transform = require("@atlaskit/editor-prosemirror/transform"); var _pluginKey = require("../main/plugin-key"); var _handlers = require("./handlers"); var initCollab = function initCollab(collabEditProvider, view) { if (collabEditProvider.initialize) { collabEditProvider.initialize(function () { return view.state; }, function (json) { return _transform.Step.fromJSON(view.state.schema, json); }); } }; var initNewCollab = function initNewCollab(collabEditProvider, view, editorApi, onSyncUpError) { collabEditProvider.setup({ getState: function getState() { return view.state; }, editorApi: editorApi, onSyncUpError: onSyncUpError }); }; var initCollabMemo = (0, _memoizeOne.default)(initCollab); var initialize = exports.initialize = function initialize(_ref) { var options = _ref.options, providerFactory = _ref.providerFactory, view = _ref.view, featureFlags = _ref.featureFlags, editorAnalyticsApi = _ref.editorAnalyticsApi, pluginInjectionApi = _ref.pluginInjectionApi; return function (provider) { // eslint-disable-next-line prefer-const var cleanup; var pluginState = _pluginKey.pluginKey.getState(view.state); if (pluginState !== null && pluginState !== void 0 && pluginState.isReady && cleanup) { cleanup(); } cleanup = (0, _handlers.subscribe)(view, provider, options, featureFlags, providerFactory, editorAnalyticsApi); // Initialize provider if (options.useNativePlugin) { // ED-13912 For NCS we don't want to use memoizeOne because it causes // infinite text while changing page-width initNewCollab(provider, view, pluginInjectionApi, options.onSyncUpError); } else { /** * We only want to initialise once, if we reload/reconfigure this plugin * We dont want to re-init collab, it would break existing sessions */ initCollabMemo(provider, view); } return cleanup; }; };