@microsoft/sp-webpart-base
Version:
SharePoint Framework support for building web parts
64 lines • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CanvasWebPartRenderTimeStampMap = void 0;
var tslib_1 = require("tslib");
var sp_diagnostics_1 = require("@microsoft/sp-diagnostics");
var sp_telemetry_1 = require("@ms/sp-telemetry");
var WAIT_TIME = 5 * 1000;
var CanvasWebPartRenderTimeStampMap = /** @class */ (function () {
function CanvasWebPartRenderTimeStampMap() {
}
Object.defineProperty(CanvasWebPartRenderTimeStampMap, "isInTreatmentForWebPartFlickerPerfExp", {
get: function () {
return (sp_telemetry_1._SPPerfExperiment.getVariantAndTrackExperiment(sp_telemetry_1._PerformanceExperiment.WEXWebPartFlickerPerfExp) !== 0);
},
enumerable: false,
configurable: true
});
CanvasWebPartRenderTimeStampMap.endAndStartNewMonitor = function (uniqueId, metaData, domElement) {
CanvasWebPartRenderTimeStampMap._endMonitor(uniqueId, 'InterruptedByNextChange');
var monitor = new sp_diagnostics_1._QosMonitor('WebPartExternalUpdatePerf_MutationObserver');
monitor.extraData = tslib_1.__assign({ isInTreatment: CanvasWebPartRenderTimeStampMap.isInTreatmentForWebPartFlickerPerfExp }, metaData);
var getSetTimeOut = function () {
var endTime = Date.now();
return window.setTimeout(function () {
CanvasWebPartRenderTimeStampMap._endMonitor(uniqueId, 'DOMIdled', { endTime: endTime });
}, WAIT_TIME);
};
var targetNode = domElement;
var timeoutId = getSetTimeOut();
var callback = function () {
// refresh timeout
clearTimeout(timeoutId);
timeoutId = getSetTimeOut();
};
// Create an observer instance linked to the callback function
var observer = new MutationObserver(callback);
// Start observing the target node for configured mutations
observer.observe(targetNode, { attributes: true, subtree: true, childList: true });
CanvasWebPartRenderTimeStampMap._webPartMap.set(uniqueId, {
timeoutId: timeoutId,
observer: observer,
monitor: monitor
});
};
CanvasWebPartRenderTimeStampMap.endWithRenderCompleteTime = function (uniqueId, renderCompleteTimeStamp) {
CanvasWebPartRenderTimeStampMap._endMonitor(uniqueId, 'RenderCompleteCalled', {
renderCompleteTimeStamp: renderCompleteTimeStamp
});
};
CanvasWebPartRenderTimeStampMap._endMonitor = function (uniqueId, endType, extraData) {
var webPartRerenderTime = CanvasWebPartRenderTimeStampMap._webPartMap.get(uniqueId);
if (webPartRerenderTime) {
var prevTimeoutId = webPartRerenderTime.timeoutId, prevObserver = webPartRerenderTime.observer, prevMonitor = webPartRerenderTime.monitor;
clearTimeout(prevTimeoutId);
prevObserver.disconnect();
prevMonitor.writeSuccess(tslib_1.__assign({ endType: endType }, extraData));
CanvasWebPartRenderTimeStampMap._webPartMap.delete(uniqueId);
}
};
CanvasWebPartRenderTimeStampMap._webPartMap = new Map();
return CanvasWebPartRenderTimeStampMap;
}());
exports.CanvasWebPartRenderTimeStampMap = CanvasWebPartRenderTimeStampMap;
//# sourceMappingURL=CanvasWebPartRenderTimeStampMap.js.map