UNPKG

@atlaskit/editor-plugin-loom

Version:

Loom plugin for @atlaskit/editor-core

70 lines 3.45 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } import { SafePlugin } from '@atlaskit/editor-common/safe-plugin'; import { PluginKey } from '@atlaskit/editor-prosemirror/state'; import { setupLoom } from './commands'; export var LoomPluginAction = /*#__PURE__*/function (LoomPluginAction) { LoomPluginAction[LoomPluginAction["ENABLE"] = 0] = "ENABLE"; LoomPluginAction[LoomPluginAction["DISABLE"] = 1] = "DISABLE"; LoomPluginAction[LoomPluginAction["RECORD_VIDEO"] = 2] = "RECORD_VIDEO"; LoomPluginAction[LoomPluginAction["INSERT_VIDEO"] = 3] = "INSERT_VIDEO"; return LoomPluginAction; }({}); export var loomPluginKey = new PluginKey('loom'); export var createPlugin = function createPlugin(_ref) { var config = _ref.config, api = _ref.api; return new SafePlugin({ key: loomPluginKey, state: { init: function init() { return { isEnabled: false, loomButton: null, isRecordingVideo: false, error: undefined }; }, apply: function apply(tr, pluginState) { var _tr$getMeta, _pluginState$loomButt; var action = (_tr$getMeta = tr.getMeta(loomPluginKey)) === null || _tr$getMeta === void 0 ? void 0 : _tr$getMeta.type; switch (action) { case LoomPluginAction.ENABLE: var _tr$getMeta2 = tr.getMeta(loomPluginKey), loomButton = _tr$getMeta2.loomButton; return _objectSpread(_objectSpread({}, pluginState), {}, { isEnabled: true, loomButton: loomButton }); case LoomPluginAction.DISABLE: var _tr$getMeta3 = tr.getMeta(loomPluginKey), error = _tr$getMeta3.error; return _objectSpread(_objectSpread({}, pluginState), {}, { isEnabled: false, loomButton: null, error: error }); case LoomPluginAction.RECORD_VIDEO: // Click the unmounted button in state that has the Loom SDK attached pluginState === null || pluginState === void 0 || (_pluginState$loomButt = pluginState.loomButton) === null || _pluginState$loomButt === void 0 || _pluginState$loomButt.click(); return _objectSpread(_objectSpread({}, pluginState), {}, { isRecordingVideo: true }); case LoomPluginAction.INSERT_VIDEO: return _objectSpread(_objectSpread({}, pluginState), {}, { isRecordingVideo: false }); default: return pluginState; } } }, view: function view(editorView) { if (config.loomProvider) { setupLoom(config.loomProvider, api, editorView); } return {}; } }); };