react-imported-component
Version:
I will import your component, and help to handle it
41 lines (40 loc) • 1.53 kB
JavaScript
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;
;