UNPKG

@atlaskit/editor-plugin-analytics

Version:

Analytics plugin for @atlaskit/editor-core

43 lines (41 loc) 1.67 kB
import { AnalyticsStep } from '@atlaskit/adf-schema/steps'; import { ACTION } from '@atlaskit/editor-common/analytics'; import { getStateContext } from './editor-state-context'; import { mapActionSubjectIdToAttributes } from './map-attributes'; var actionsToIgnore = [ACTION.INVOKED, ACTION.OPENED]; export var createAttachPayloadIntoTransaction = function createAttachPayloadIntoTransaction(selection) { return function (_ref) { var payload = _ref.payload, tr = _ref.tr, channel = _ref.channel; return attachPayloadIntoTransaction({ payload: payload, selection: selection, tr: tr, channel: channel }); }; }; // This utils was taken as reference in packages/editor/editor-plugin-ai/src/analytics/utils.ts // to create new util attachPayloadIntoTransaction in above file. // If you make a change here, please review attachPayloadIntoTransaction in above // file and update it as well if needed. var attachPayloadIntoTransaction = function attachPayloadIntoTransaction(_ref2) { var payload = _ref2.payload, selection = _ref2.selection, tr = _ref2.tr, channel = _ref2.channel; payload = getStateContext(selection, payload, tr); payload = mapActionSubjectIdToAttributes(payload); var storedMarks = tr.storedMarks; var pos = tr.mapping.map(selection.$from.pos, -1); tr.step(new AnalyticsStep([{ payload: payload, channel: channel }], actionsToIgnore, pos) // We need to create the step based on a position, this prevent split history for relative changes. ); // When you add a new step all the storedMarks are removed it if (storedMarks) { tr.setStoredMarks(storedMarks); } };