UNPKG

@atlaskit/editor-plugin-submit-editor

Version:

Submit editor plugin for @atlaskit/editor-core

37 lines 1.58 kB
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics'; import { submit } from '@atlaskit/editor-common/keymaps'; import { analyticsEventKey } from '@atlaskit/editor-common/utils'; import { keymap } from '@atlaskit/editor-prosemirror/keymap'; export function createPlugin(eventDispatch, api, onSave) { if (!onSave) { return; } return keymap({ [`${submit.common}`]: (state, _dispatch, editorView) => { var _api$media, _api$media$sharedStat; const mediaState = api === null || api === void 0 ? void 0 : (_api$media = api.media) === null || _api$media === void 0 ? void 0 : (_api$media$sharedStat = _api$media.sharedState) === null || _api$media$sharedStat === void 0 ? void 0 : _api$media$sharedStat.currentState(); if (mediaState && mediaState.waitForMediaUpload && !mediaState.allUploadsFinished) { return true; } if (!editorView) { return false; } eventDispatch(analyticsEventKey, analyticsPayload(state)); onSave(editorView); return true; } }); } const analyticsPayload = state => ({ payload: { action: ACTION.STOPPED, actionSubject: ACTION_SUBJECT.EDITOR, actionSubjectId: ACTION_SUBJECT_ID.SAVE, attributes: { inputMethod: 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: EVENT_TYPE.UI } });