UNPKG

@atlaskit/editor-plugin-loom

Version:

Loom plugin for @atlaskit/editor-core

72 lines 2.44 kB
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin'; import { PluginKey } from '@atlaskit/editor-prosemirror/state'; import { setupLoom } from './commands'; export let 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 const loomPluginKey = new PluginKey('loom'); export const createPlugin = ({ config, api }) => { return new SafePlugin({ key: loomPluginKey, state: { init: () => ({ isEnabled: false, loomButton: null, isRecordingVideo: false, error: undefined }), apply: (tr, pluginState) => { var _tr$getMeta, _pluginState$loomButt; const action = (_tr$getMeta = tr.getMeta(loomPluginKey)) === null || _tr$getMeta === void 0 ? void 0 : _tr$getMeta.type; switch (action) { case LoomPluginAction.ENABLE: const { loomButton } = tr.getMeta(loomPluginKey); return { ...pluginState, isEnabled: true, loomButton }; case LoomPluginAction.DISABLE: const { error } = tr.getMeta(loomPluginKey); return { ...pluginState, isEnabled: false, loomButton: null, error }; case LoomPluginAction.RECORD_VIDEO: // Click the unmounted button in state that has the Loom SDK attached pluginState === null || pluginState === void 0 ? void 0 : (_pluginState$loomButt = pluginState.loomButton) === null || _pluginState$loomButt === void 0 ? void 0 : _pluginState$loomButt.click(); return { ...pluginState, isRecordingVideo: true }; case LoomPluginAction.INSERT_VIDEO: return { ...pluginState, isRecordingVideo: false }; default: return pluginState; } } }, view(editorView) { if (config.loomProvider) { setupLoom(config.loomProvider, api, editorView); } return {}; } }); };