@atlaskit/editor-plugin-loom
Version:
Loom plugin for @atlaskit/editor-core
77 lines (76 loc) • 3.82 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.loomPluginKey = exports.createPlugin = exports.LoomPluginAction = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
var _state = require("@atlaskit/editor-prosemirror/state");
var _commands = require("./commands");
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) { (0, _defineProperty2.default)(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; }
var LoomPluginAction = exports.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;
}({});
var loomPluginKey = exports.loomPluginKey = new _state.PluginKey('loom');
var createPlugin = exports.createPlugin = function createPlugin(_ref) {
var config = _ref.config,
api = _ref.api;
return new _safePlugin.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) {
(0, _commands.setupLoom)(config.loomProvider, api, editorView);
}
return {};
}
});
};