UNPKG

react-imported-component

Version:
41 lines (40 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLoadableTrackerCallback = exports.injectLoadableTracker = void 0; var marks_1 = require("../loadable/marks"); /** * injects a loadable tracker on a given global variable name. * * WARNING: mutates the origin variable! * * @param name = 'importedComponents` * @example * ```js * window.importedMarks = window.importedMarks || []; * importedMarks.push(hydratedMarks[0]); * /// * injectLoadableTracker(); */ var injectLoadableTracker = function (name) { if (name === void 0) { name = 'importedComponents'; } var value = global[name]; if (value) { if (!value.push || (Boolean(value.push) && !Boolean(value.forEach))) { // tslint:disable-next-line:no-console console.error('given: ', value); throw new Error("injectLoadableTracker(" + name + ") expected to be expected on Array-like variable, and only once."); } value.forEach(function (mark) { return (0, marks_1.rehydrateMarks)(mark); }); } global[name] = { push: marks_1.rehydrateMarks, }; }; exports.injectLoadableTracker = injectLoadableTracker; var getLoadableTrackerCallback = function (name) { if (name === void 0) { name = 'importedComponents'; } return function (marks) { return "<script>window." + name + "=window." + name + " || [];" + name + ".push(" + JSON.stringify(marks) + ");</script>"; }; }; exports.getLoadableTrackerCallback = getLoadableTrackerCallback;