UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

61 lines • 2.48 kB
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics/types/enums'; import { logException } from '@atlaskit/editor-common/monitoring/error'; const sourceTypeName = sourceNodes => sourceNodes.length === 1 ? sourceNodes[0].type.name : 'multiple'; const sourceNodesCountByType = sourceNodes => { const counts = {}; for (const node of sourceNodes) { counts[node.type.name] = (counts[node.type.name] || 0) + 1; } return counts; }; export const createTransformAnalytics = (api, tr, selection) => ({ transformed: (duration, startTime, { isEmptyLine = false, isNested, isSuggested = false, outputNodesCount, sourceNodes, targetNodeType }) => { var _api$analytics, _api$analytics$action; api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : (_api$analytics$action = _api$analytics.actions) === null || _api$analytics$action === void 0 ? void 0 : _api$analytics$action.attachAnalyticsEvent({ action: ACTION.TRANSFORMED, actionSubject: ACTION_SUBJECT.ELEMENT, attributes: { duration, isEmptyLine, isNested, isSuggested, outputNodesCount, sourceNodeType: sourceTypeName(sourceNodes), sourceNodesCount: sourceNodes.length, sourceNodesCountByType: sourceNodesCountByType(sourceNodes), startTime, targetNodeType, inputMethod: INPUT_METHOD.BLOCK_MENU }, eventType: EVENT_TYPE.TRACK })(tr); }, errored: (error, sourceNodes, to) => { var _api$analytics2, _api$analytics2$actio; logException(error, { location: 'editor-plugin-block-menu' }); api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : (_api$analytics2$actio = _api$analytics2.actions) === null || _api$analytics2$actio === void 0 ? void 0 : _api$analytics2$actio.attachAnalyticsEvent({ action: ACTION.ERRORED, actionSubject: ACTION_SUBJECT.ELEMENT, actionSubjectId: ACTION_SUBJECT_ID.TRANSFORM, eventType: EVENT_TYPE.OPERATIONAL, attributes: { docSize: tr.doc.nodeSize, error: error.message, errorStack: error.stack, from: sourceTypeName(sourceNodes), inputMethod: INPUT_METHOD.BLOCK_MENU, selection: selection.toJSON(), to } })(tr); } });