Files
meteor/packages/non-core/bundle-visualizer/client.js
2018-06-28 18:33:44 -04:00

52 lines
1.4 KiB
JavaScript

import { Meteor } from "meteor/meteor";
import {
classPrefix,
methodNameStats,
packageName,
} from "./common.js";
import * as classes from "./classNames.js";
import("./style.css");
Meteor.startup(() => {
import("./sunburst.js").then(s => main(s.Sunburst));
});
async function main(builder) {
const { container, mask } = frameStage();
document.body.appendChild(mask);
document.body.appendChild(container);
// Always match the protocol (http or https) and the domain:port of the
// current page.
const url = [
"//" +
location.host +
methodNameStats +
"?cacheBuster=" +
Math.random().toString(36).slice(2)
].join();
try {
const data = await fetch(url, { method: "GET" });
new builder({ container }).loadJson(await data.json())
} catch (err) {
console.error([
packageName + ": Couldn't load stats for visualization.",
"Are you using standard-minifier-js >= 2.1.0 as the minifier?",
].join(" "))
}
}
function frameStage() {
// Create the mask which will block out the main application.
const mask = document.createElement("div");
mask.setAttribute("class", `${classPrefix} ${classes.mask}`);
// Create the container which the SVG elements will be drawn into.
const container = document.createElement("div");
container.setAttribute("class", `${classPrefix} ${classes.rootContainer}`);
return { container, mask };
}