@atlaskit/renderer
Version:
Renderer component
90 lines (85 loc) • 3.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.trackUnsupportedContentLevels = void 0;
var _utils = require("@atlaskit/editor-common/utils");
var _analytics = require("@atlaskit/editor-common/analytics");
var _events = require("./events");
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var rendersMap = {};
var processLevelsAndTrack = function processLevelsAndTrack(item, thresholds, dispatchAnalyticsEvent) {
try {
var _getUnsupportedConten = (0, _utils.getUnsupportedContentLevelData)(item.doc, thresholds),
severity = _getUnsupportedConten.severity,
percentage = _getUnsupportedConten.percentage,
_getUnsupportedConten2 = _getUnsupportedConten.counts,
supportedNodes = _getUnsupportedConten2.supportedNodes,
unsupportedNodes = _getUnsupportedConten2.unsupportedNodes,
unsupportedNodeTypeCount = _getUnsupportedConten2.unsupportedNodeTypeCount;
dispatchAnalyticsEvent({
action: _analytics.ACTION.UNSUPPORTED_CONTENT_LEVELS_TRACKING_SUCCEEDED,
actionSubject: _analytics.ACTION_SUBJECT.RENDERER,
attributes: {
appearance: (0, _utils.getAnalyticsAppearance)(item.appearance),
platform: _events.PLATFORM.WEB,
unsupportedContentLevelSeverity: severity,
unsupportedContentLevelPercentage: percentage,
unsupportedNodesCount: unsupportedNodes,
supportedNodesCount: supportedNodes,
unsupportedNodeTypeCount: unsupportedNodeTypeCount
},
eventType: _analytics.EVENT_TYPE.OPERATIONAL
});
} catch (err) {
dispatchAnalyticsEvent({
action: _analytics.ACTION.UNSUPPORTED_CONTENT_LEVELS_TRACKING_ERRORED,
actionSubject: _analytics.ACTION_SUBJECT.RENDERER,
attributes: {
platform: _events.PLATFORM.WEB,
error: err instanceof Error ? err.message : String(err)
},
eventType: _analytics.EVENT_TYPE.OPERATIONAL
});
}
};
var schedule = function schedule(fn) {
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-explicit-any
if (typeof window.requestIdleCallback === 'function') {
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-explicit-any
window.requestIdleCallback(fn);
} else {
setTimeout(fn, 0);
}
};
var DEFAULT_SAMPLING_RATE = 100;
var trackUnsupportedContentLevels = exports.trackUnsupportedContentLevels = function trackUnsupportedContentLevels(item, trackingOptions, dispatchAnalyticsEvent) {
var _item$appearance;
var thresholds = trackingOptions.thresholds,
samplingRates = trackingOptions.samplingRates;
var appearance = (_item$appearance = item.appearance) !== null && _item$appearance !== void 0 ? _item$appearance : 'unknown';
if (!rendersMap[appearance]) {
rendersMap[appearance] = new Set();
}
// bail out if already processed a render from a given renderer instance
var didProcessRenderer = rendersMap[appearance].has(item.rendererId);
if (didProcessRenderer) {
return;
}
// otherwise track the render
rendersMap[appearance].add(item.rendererId);
var sampleRate = samplingRates && samplingRates[appearance] || DEFAULT_SAMPLING_RATE;
// sample from the first available tracked render
if (rendersMap[appearance].size === 1) {
schedule(function () {
return processLevelsAndTrack(item, thresholds, dispatchAnalyticsEvent);
});
}
// cleanup/refresh tracked renders at the sampling rate
if (rendersMap[appearance].size % sampleRate === 0) {
rendersMap[appearance] = new Set();
}
};