@atlaskit/editor-plugin-analytics
Version:
Analytics plugin for @atlaskit/editor-core
43 lines (41 loc) • 1.67 kB
JavaScript
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);
}
};