UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

54 lines (53 loc) 2.35 kB
import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../analytics'; import { startMeasure, stopMeasure } from '../performance-measures'; // This was existing logic when converting from ReactNodeView // our current sampling for this event is not bound by node.type var nodeViewRenderedEventsCounter = 0; var DEFAULT_SAMPLING_RATE = 100; var DEFAULT_SLOW_THRESHOLD = 7; export function getPerformanceOptions(view) { var _nodeViewTracking$sam, _nodeViewTracking$slo; // TODO: ED-15663 // Please, do not copy or use this kind of code below // @ts-ignore var fakePluginKey = { key: 'analyticsPlugin$', getState: function getState(state) { // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-explicit-any return state['analyticsPlugin$']; } }; var pluginState = fakePluginKey.getState(view.state); var nodeViewTracking = pluginState && pluginState.performanceTracking ? pluginState.performanceTracking.nodeViewTracking || {} : {}; var samplingRate = (_nodeViewTracking$sam = nodeViewTracking.samplingRate) !== null && _nodeViewTracking$sam !== void 0 ? _nodeViewTracking$sam : DEFAULT_SAMPLING_RATE; var slowThreshold = (_nodeViewTracking$slo = nodeViewTracking.slowThreshold) !== null && _nodeViewTracking$slo !== void 0 ? _nodeViewTracking$slo : DEFAULT_SLOW_THRESHOLD; return { trackingEnabled: !!nodeViewTracking.enabled, samplingRate: samplingRate, slowThreshold: slowThreshold }; } export function startMeasureReactNodeViewRendered(_ref) { var nodeTypeName = _ref.nodeTypeName; startMeasure("\uD83E\uDD89".concat(nodeTypeName, "::ReactNodeView")); } export function stopMeasureReactNodeViewRendered(_ref2) { var nodeTypeName = _ref2.nodeTypeName, dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent, samplingRate = _ref2.samplingRate, slowThreshold = _ref2.slowThreshold; stopMeasure("\uD83E\uDD89".concat(nodeTypeName, "::ReactNodeView"), function (duration) { if (++nodeViewRenderedEventsCounter % samplingRate === 0 && duration > slowThreshold) { dispatchAnalyticsEvent({ action: ACTION.REACT_NODEVIEW_RENDERED, actionSubject: ACTION_SUBJECT.EDITOR, eventType: EVENT_TYPE.OPERATIONAL, attributes: { node: nodeTypeName, duration: duration } }); } }); }