react-imported-component
Version:
I will import your component, and help to handle it
36 lines (35 loc) • 1.26 kB
JavaScript
import { rehydrateMarks } from '../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();
*/
export 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 rehydrateMarks(mark); });
}
global[name] = {
push: rehydrateMarks,
};
};
export 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>";
};
};