@atlaskit/editor-plugin-submit-editor
Version:
Submit editor plugin for @atlaskit/editor-core
45 lines (44 loc) • 1.89 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createPlugin = createPlugin;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _analytics = require("@atlaskit/editor-common/analytics");
var _keymaps = require("@atlaskit/editor-common/keymaps");
var _utils = require("@atlaskit/editor-common/utils");
var _keymap2 = require("@atlaskit/editor-prosemirror/keymap");
function createPlugin(eventDispatch, api, onSave) {
if (!onSave) {
return;
}
return (0, _keymap2.keymap)((0, _defineProperty2.default)({}, "".concat(_keymaps.submit.common), function _(state, _dispatch, editorView) {
var _api$media;
var mediaState = api === null || api === void 0 || (_api$media = api.media) === null || _api$media === void 0 || (_api$media = _api$media.sharedState) === null || _api$media === void 0 ? void 0 : _api$media.currentState();
if (mediaState && mediaState.waitForMediaUpload && !mediaState.allUploadsFinished) {
return true;
}
if (!editorView) {
return false;
}
eventDispatch(_utils.analyticsEventKey, analyticsPayload(state));
onSave(editorView);
return true;
}));
}
var analyticsPayload = function analyticsPayload(state) {
return {
payload: {
action: _analytics.ACTION.STOPPED,
actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SAVE,
attributes: {
inputMethod: _analytics.INPUT_METHOD.SHORTCUT,
documentSize: state.doc.nodeSize
// TODO: ED-26961 - add individual node counts - tables, headings, lists, mediaSingles, mediaGroups, mediaCards, panels, extensions, decisions, action, codeBlocks
},
eventType: _analytics.EVENT_TYPE.UI
}
};
};