@shopify/cli
Version:
A CLI tool to build for the Shopify platform
1,535 lines (1,530 loc) • 68.5 kB
HTML
<!doctype html>
<!-- Open this file in your browser for an interactive view of your bundle -->
<!-- saved from url=(0034)https://esbuild.github.io/analyze/ -->
<!-- Snapshot: 2023/07/16 -->
<html lang="en" data-theme="null">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>esbuild - Bundle Size Analyzer</title>
<link
rel="icon"
type="image/svg+xml"
href="https://esbuild.github.io/favicon.svg"
/>
<meta property="og:title" content="esbuild - Bundle Size Analyzer" />
<meta property="og:type" content="website" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
html:not([data-theme='dark']) {
--bg: #fff;
--fg-on: #000;
--fg: #222;
--pre-dim: #777;
--pre-val: #870;
--pre: #222;
--bar-min-width: 1px;
}
html[data-theme='dark'] {
color-scheme: dark;
--bg: #191919;
--fg-on: #ddd;
--fg: #aaa;
--pre-dim: #999;
--pre-val: #cb8;
--pre: #ccc;
--bar-min-width: 3px;
}
@media (prefers-color-scheme: dark) {
html:not([data-theme='light']) {
color-scheme: dark;
--bg: #191919;
--fg-on: #ddd;
--fg: #aaa;
--pre-dim: #999;
--pre-val: #cb8;
--pre: #ccc;
--bar-min-width: 3px;
}
}
body {
margin: 50px;
font: 16px/20px sans-serif;
background: var(--bg);
color: var(--fg);
}
#startPanel {
margin: 10% auto 0;
}
#resultsPanel {
display: none;
}
section {
margin: auto;
max-width: 600px;
}
#logo {
background-image: url(https://esbuild.github.io/favicon.svg);
background-size: 80px;
background-repeat: no-repeat;
padding-left: 100px;
display: inline-block;
text-align: left;
margin-bottom: 10px;
}
h1 {
font-size: 80px;
line-height: 1em;
color: var(--fg-on);
margin: 0;
}
blockquote {
font-size: 29px;
line-height: 1em;
margin: 5px 0;
font-style: italic;
}
p {
margin: 30px 0;
}
a,
b {
color: var(--fg-on);
}
code {
font:
14px/20px Noto Sans Mono,
monospace;
background: rgba(127, 127, 127, 0.2);
padding: 2px 4px;
margin-bottom: -2px;
border-radius: 3px;
}
pre {
color: var(--pre);
font:
14px/20px Noto Sans Mono,
monospace;
padding: 0;
margin: 0;
white-space: pre-wrap;
}
.center {
text-align: center;
}
.noscript {
color: #e24834;
}
button {
padding: 5px 30px;
line-height: 1.5em;
background: none;
color: var(--fg);
border: 1px solid var(--fg);
border-radius: 100px;
cursor: pointer;
}
button:active,
button:hover {
color: var(--fg-on);
border: 1px solid var(--fg-on);
background: rgba(127, 127, 127, 0.2);
}
button:active {
padding: 6px 30px 4px;
background: rgba(0, 0, 0, 0.2);
}
#settingsPanel {
text-align: center;
}
#settingsPanel .chartSwitcher {
position: relative;
margin: 50px 0;
display: flex;
justify-content: center;
}
#settingsPanel .chartSwitcher:after {
position: absolute;
left: 0;
right: 0;
top: 0.5em;
content: '';
display: block;
border: 1px solid #ffcf00;
z-index: -1;
}
#settingsPanel .chartSwitcher span {
background: var(--bg);
padding: 0 1em;
border-left: 2px solid #ffcf00;
}
#settingsPanel .chartSwitcher span:first-child {
border: none;
}
#settingsPanel a {
text-decoration: none;
color: var(--fg);
}
#settingsPanel a:hover {
text-decoration: underline;
}
#settingsPanel a.active {
font-weight: 700;
color: var(--fg-on);
}
.summary {
max-width: 600px;
margin: auto;
}
.tooltip {
position: absolute;
background: black;
color: #999;
border-radius: 30px;
padding: 0 10px;
font-size: 14px;
line-height: 30px;
display: none;
user-select: none;
touch-action: none;
pointer-events: none;
z-index: 1;
white-space: pre;
}
.tooltip b {
color: #fff;
}
#dragTarget {
display: none;
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
user-select: none;
touch-action: none;
box-shadow: inset 0 0 0 10px #ffcf00;
z-index: 10;
}
#summaryPanel {
text-align: center;
}
#summaryPanel table {
border-collapse: collapse;
margin: auto;
}
#summaryPanel td:first-child {
text-align: right;
}
#summaryPanel h2 {
font-size: 30px;
line-height: 1em;
color: var(--fg-on);
margin: 0;
}
#summaryPanel .symbol {
font-size: 30px;
padding: 0 30px;
}
#summaryPanel .formatBreakdown {
display: inline-block;
margin: 20px auto 0;
white-space: nowrap;
text-decoration: none;
}
#summaryPanel .formatBreakdown:hover .side {
text-decoration: underline;
}
#summaryPanel .bar {
display: inline-table;
vertical-align: middle;
margin: 0 0.8em;
border: 1px solid #222;
}
#summaryPanel .bar > div {
height: 20px;
display: table-cell;
}
#colorLegend {
padding-left: 1.6em;
line-height: 1.1em;
}
#colorLegend .chit {
display: inline-block;
vertical-align: middle;
width: 1.1em;
height: 1.1em;
margin-left: -1.6em;
margin-right: 0.5em;
border: 1px solid #222;
box-sizing: border-box;
}
#colorLegend small {
display: block;
opacity: 0.5;
margin-bottom: 1em;
}
#sunburstPanel main {
display: flex;
justify-content: center;
margin-top: 50px;
margin-bottom: 500px;
}
#sunburstPanel .left {
margin-right: 20px;
display: flex;
flex-direction: column;
align-items: center;
}
#sunburstPanel canvas {
display: block;
margin-bottom: 30px;
}
#sunburstPanel .details {
flex: 1;
max-width: 800px;
position: relative;
}
#sunburstPanel .dir {
font-size: 20px;
line-height: 1.2em;
display: flex;
white-space: pre;
margin: 0 10px 20px;
}
#sunburstPanel .dir .segments {
flex: 1;
height: 20px;
}
#sunburstPanel .dir a {
opacity: 0.5;
text-decoration: none;
}
#sunburstPanel .dir a[href]:hover {
text-decoration: underline;
}
#sunburstPanel .dir a:last-child {
opacity: 1;
color: var(--fg-on);
font-weight: 700;
}
#sunburstPanel .bars {
width: 100%;
}
#sunburstPanel .bars .row {
display: table-row;
text-decoration: none;
line-height: 26px;
color: var(--fg);
}
#sunburstPanel .bars .row.hover {
background: rgba(127, 127, 127, 0.2);
color: var(--fg-on);
}
#sunburstPanel .bars .row.hover .bar:after {
content: '';
position: absolute;
left: 1px;
top: 1px;
right: 1px;
bottom: 1px;
background: rgba(255, 255, 255, 0.3);
}
#sunburstPanel .bars .row > div {
display: table-cell;
}
#sunburstPanel .bars .name {
padding: 0 10px;
vertical-align: top;
white-space: pre;
}
#sunburstPanel .bars .name span {
opacity: 0.5;
}
#sunburstPanel .bars .size {
width: 100%;
padding-right: 100px;
}
#sunburstPanel .bars .bar {
position: relative;
height: 27px;
box-shadow: inset 0 0 0 1px #222;
margin-bottom: -1px;
min-width: var(--bar-min-width);
}
#sunburstPanel .bars .bar.empty {
min-width: 0;
}
#sunburstPanel .bars .last {
position: absolute;
right: -10px;
width: 0;
white-space: nowrap;
}
#whyFile {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
padding: 50px;
background: rgba(0, 0, 0, 0.6);
overflow-y: auto;
}
#whyFile .dialog {
position: relative;
margin: 0 auto;
padding: 50px;
max-width: 1000px;
background: var(--bg);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.6);
box-sizing: border-box;
border-radius: 20px;
}
#whyFile .dialog:focus {
outline: none;
}
#whyFile .closeButton {
position: absolute;
right: 0;
top: 0;
width: 50px;
text-decoration: none;
font-size: 30px;
line-height: 50px;
text-align: center;
color: var(--fg);
}
#whyFile .closeButton:hover {
font-size: 35px;
color: var(--fg-on);
}
#whyFile .closeButton:active {
font-size: 30px;
}
#whyFile h2 {
border-bottom: 2px solid #ffcf00;
padding-bottom: 4px;
margin: 0;
font-size: 20px;
line-height: 1.2em;
color: var(--fg-on);
}
#whyFile .outputFile {
position: relative;
border: 1px solid rgba(127, 127, 127, 0.5);
padding: 30px 10px 10px;
border-radius: 10px;
white-space: pre-wrap;
margin-top: 10px;
line-height: 22px;
}
#whyFile .outputPath {
position: absolute;
left: 0;
top: 0;
background: rgba(127, 127, 127, 0.1);
border-right: 1px solid rgba(127, 127, 127, 0.5);
border-bottom: 1px solid rgba(127, 127, 127, 0.5);
border-top-left-radius: 10px;
border-bottom-right-radius: 10px;
padding: 5px 10px;
}
#whyFile pre {
padding: 0 0 0 30px;
}
#whyFile .comment {
color: var(--pre-dim);
}
#whyFile .keyword {
color: var(--fg-on);
}
#whyFile .string {
color: var(--pre-val);
}
#whyFile .arrow,
#whyFile .longArrow {
position: relative;
}
#whyFile .arrow:after,
#whyFile .longArrow:after {
content: '';
position: absolute;
top: 0;
width: 30px;
background: var(--fg);
opacity: 0.5;
}
#whyFile .arrow:after {
height: 40px;
--icon: url('data:image/svg+xml,<svg width="30" height="40" xmlns="http://www.w3.org/2000/svg"><path d="M16.5 26L20.5 35L23 25.5L16.5 26Z"/><path d="M5 7C15 7 19 15 20 30" fill="none" stroke="black"/></svg>');
mask-image: var(--icon);
-webkit-mask-image: var(--icon);
}
#whyFile .longArrow:after {
height: 90px;
--icon: url('data:image/svg+xml,<svg width="30" height="90" xmlns="http://www.w3.org/2000/svg"><path d="M17 76L20 85L23 76H17Z"/><path d="M5 7C15 7 20 25 20 80" fill="none" stroke="black"/></svg>');
mask-image: var(--icon);
-webkit-mask-image: var(--icon);
}
#flamePanel main {
position: relative;
margin-top: 60px;
}
#flamePanel canvas {
position: absolute;
left: -50px;
top: 0;
}
#flamePanel section {
margin-top: 30px;
min-height: 500px;
}
#warningsPanel {
max-width: 1000px;
margin: auto;
}
#warningsPanel .expand {
margin-top: 20px;
text-align: center;
}
#warningsPanel .content {
display: none;
}
#warningsPanel .warning {
margin: 30px 0;
white-space: pre-wrap;
color: var(--fg-on);
}
#warningsPanel ul {
color: var(--fg);
margin: 5px 0 0;
}
#warningsPanel .dim {
opacity: 0.5;
}
#warningsPanel pre a {
text-decoration: none;
}
#warningsPanel pre a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div id="dragTarget"></div>
<div id="startPanel">
<section>
<div class="center">
<div id="logo">
<h1>esbuild</h1>
<blockquote>Bundle Size Analyzer</blockquote>
</div>
</div>
<p>
This page provides a way to visualize the contents of your esbuild
bundle. Add the
<a href="https://esbuild.github.io/api/#metafile">metafile</a> option
to your esbuild command, then import it using the button below:
</p>
<p class="center">
<button id="importButton">Import your metafile...</button>
</p>
<p>
Or you can
<a href="javascript:void 0" id="loadExample">load an example</a> to
play around with the visualization.
</p>
<noscript>
<p class="noscript">
❌ This page requires JavaScript. Please enable JavaScript and
reload the page.
</p>
</noscript>
</section>
</div>
<div id="resultsPanel">
<div id="summaryPanel"></div>
<div id="warningsPanel"></div>
<div id="settingsPanel">
<div class="chartSwitcher">
<span
><a id="useSunburst" href="javascript:void 0"
>Sunburst Chart</a
></span
>
<span><a id="useFlame" href="javascript:void 0">Flame Chart</a></span>
</div>
</div>
<div id="chartPanel"></div>
</div>
<input type="file" style="display: none" />
<script>
'use strict';
globalThis.METAFILE = '';
(() => {
var d = document,
c = Math,
Y = requestAnimationFrame,
Z = localStorage,
B = window;
var be = Object.prototype.hasOwnProperty,
Et = Array.prototype.indexOf,
$e,
Yt = /\.\w+\.map$/,
Vt = /^\(disabled\):/,
vt = navigator.platform.indexOf('Mac') >= 0,
et = () => (B.performance || Date).now(),
tt = (e) => {
try {
return Z.getItem(e);
} catch (t) {
return null;
}
},
lt = (e, t) => {
try {
Z.setItem(e, t);
} catch (r) {}
},
ye = (e) => Yt.test(e);
var Ce = (e) => e.replace(Vt, ''),
xe = (e) => ($e ? $e.format(e) : e + ''),
Ke = (e) => {
let t = e.toFixed(1).split('.', 2);
return xe(+t[0]) + '.' + t[1];
},
le = (e) =>
e === 1
? '1 byte'
: e < 1024
? xe(e) + ' bytes'
: e < 1024 * 1024
? Ke(e / 1024) + ' kb'
: e < 1024 * 1024 * 1024
? Ke(e / (1024 * 1024)) + ' mb'
: Ke(e / (1024 * 1024 * 1024)) + ' gb',
H = (e) =>
e
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>'),
Be = (e) => {
let t = 0.6 + 0.4 * c.max(0, c.cos(e)),
r = 0.5 + 0.2 * c.max(0, c.cos(e + (c.PI * 2) / 3));
return (
'hsl(' +
(e * 180) / c.PI +
'deg, ' +
c.round(100 * t) +
'%, ' +
c.round(100 * r) +
'%)'
);
},
K = (e) => d.createTextNode(e),
rt = (e) => {
let t = d.createElement('code');
return (t.textContent = e), t;
},
Me = (e, t) => {
let r = d.createElement('span');
return (r.className = e), (r.textContent = t), r;
},
Ue = (e, t) => {
let r = e.split('/');
if (!t) return r;
for (let s = 0; s <= r.length; s++)
if (t[s] !== r[s]) {
t.length = s;
break;
}
return t;
},
Ct = (e, t) => {
let r = e.split('/');
if (!t) return r.reverse();
for (let s = 0; s <= r.length; s++)
if (t[s] !== r[r.length - s - 1]) {
t.length = s;
break;
}
return t;
},
xt = (e) => {
let t = e.lastIndexOf('/');
return t < 0 ? '.' : e.slice(0, t);
},
Mt = (e, t) => {
let r = e.split('/'),
s = t === '.' ? [] : t.split('/'),
n = 0;
for (; n < s.length && r[0] === s[n]; ) r.shift(), n++;
if (n === s.length) r.unshift('.');
else for (; n < s.length; ) r.unshift('..'), n++;
return r.join('/');
},
Nt = (e) => {
let t = e.split('/');
for (let r = t.length - 1; r >= 0; r--)
if (t[r] === 'node_modules')
return (
(t = t.slice(r + 1)),
t.length > 1 &&
/^index\.(?:[jt]sx?)$/.test(t[t.length - 1]) &&
t.pop(),
t.join('/')
);
return null;
},
Ee = !1,
bt = matchMedia('(prefers-color-scheme: dark)'),
yt = () => Re && Re(),
Ze = null,
Qe = null,
Re = null,
je = (e) => (Ze = e),
ze = (e) => (Qe = e),
Ge = (e) => (Re = e);
d.addEventListener('keydown', () => (Ee = !0), {capture: !0});
d.addEventListener('mousedown', () => (Ee = !1), {capture: !0});
B.addEventListener('wheel', (e) => Ze && Ze(e), {passive: !1});
B.addEventListener('resize', () => Qe && Qe());
try {
bt.addEventListener('change', yt);
} catch (e) {
bt.addListener(yt);
}
try {
$e = new Intl.NumberFormat();
} catch (e) {}
var it = d.getElementById('dragTarget'),
qt = d.getElementById('importButton'),
ot = 0,
nt,
It = (e, t = e.dataTransfer) =>
t && t.types && Et.call(t.types, 'Files') !== -1,
Ot = (e) => {
if (e.length === 1) {
let t = new FileReader();
(t.onload = () => De(t.result)), t.readAsText(e[0]);
}
};
d.ondragover = (e) => {
e.preventDefault();
};
d.ondragenter = (e) => {
e.preventDefault(), It(e) && ((it.style.display = 'block'), ot++);
};
d.ondragleave = (e) => {
e.preventDefault(),
It(e) && --ot === 0 && (it.style.display = 'none');
};
d.ondrop = (e) => {
e.preventDefault(),
(it.style.display = 'none'),
(ot = 0),
e.dataTransfer && e.dataTransfer.files && Ot(e.dataTransfer.files);
};
qt.onclick = function () {
nt && d.body.removeChild(nt);
let e = d.createElement('input');
(e.type = 'file'),
(e.style.display = 'none'),
d.body.appendChild(e),
(nt = e),
e.click(),
(e.onchange = () => e.files && Ot(e.files));
};
d.body.addEventListener('paste', (e) => {
e.clipboardData &&
(e.preventDefault(), De(e.clipboardData.getData('text/plain')));
});
var St = (e) => {
let t = e.inputs;
for (let r in t) if (t[r].format) return !0;
return !1;
};
var Ne = (e, t) => t.t - e.t || +(e.e > t.e) - +(e.e < t.e),
Ie = (e, t, r) => {
let s = t.split('/'),
n = s.length,
i = e,
u = '';
e.t += r;
for (let a = 0; a < n; a++) {
let l = s[a],
o = i.o,
m = o[l],
p = l + (a + 1 < n ? '/' : '');
(u += p),
be.call(o, l) || ((m = {n: p, e: u, t: 0, o: {}}), (o[l] = m)),
(m.t += r),
(i = m);
}
return n;
};
var Lt,
Pt,
Rt,
Xe = d.createElement('canvas'),
j = Xe.getContext('2d'),
Q = 1,
at,
dt,
st = 0,
Je,
Ae = {},
ut = null,
Ye = (e) => (ut = e),
Ve = (e, t, r, s, n) => {
let i = Ae[t] || Se;
if (i instanceof Array) {
let u = B.devicePixelRatio || 1;
if (Lt !== e || Pt !== u || Rt !== n) {
let a = c.round(64 * u) / 64,
l,
o,
m;
(Q = n),
(Q = c.log2(Q)),
(Q -= c.floor(Q)),
(l = Q),
(o = c.min(1, 8 * l)),
(Q = c.pow(2, Q)),
(m = (8 * c.SQRT2) / Q),
(Lt = e),
(Pt = u),
(Rt = n),
(Xe.width = Xe.height = c.round(64 * a)),
j.scale(a, a),
(j.fillStyle = i[0]),
j.fillRect(0, 0, 64, 64),
(j.globalAlpha = 0.25),
(j.fillStyle = i[1]),
j.fillRect(0, 0, 64, 64),
(j.globalAlpha = 0.67),
(j.strokeStyle = i[1]),
j.beginPath();
for (let p = 0; p <= 64; p += 16)
j.moveTo(p - 32, p + 32), j.lineTo(p + 32, p - 32);
if (
((j.lineWidth = m * (1 - (o - l) / 2)), j.stroke(), o + l > 0)
) {
j.beginPath();
for (let p = 8; p < 64; p += 16)
j.moveTo(p - 32, p + 32), j.lineTo(p + 32, p - 32);
(j.lineWidth = (m * (o + l)) / 2), j.stroke();
}
(at = e.createPattern(Xe, 'repeat')), (Q /= a);
}
return (
(r /= 64 * Q * u),
(r -= c.floor(r)),
(r *= 64 * Q * u),
at.setTransform(new DOMMatrix([Q, 0, 0, Q, r, s])),
at
);
}
return i;
},
_e = (e) => {
let t = Ae[e] || Se;
return t instanceof Array
? `url('data:image/svg+xml,<svg width="26" height="26" xmlns="http://www.w3.org/2000/svg"><rect width="26" height="26" fill="${t[0]}"/><rect width="26" height="26" fill="${t[1]}" fill-opacity="25%"/><path d="M22.5 -3.5L-3.5 22.5M35.5 9.5L9.5 35.5" stroke="${t[1]}" stroke-opacity="67%" stroke-width="9.19239"/></svg>')`
: t;
},
Ht = (e, t) => {
if (dt !== e) {
let r = e.outputs;
(dt = e), (st = 0), (Je = {n: '', e: '', t: 0, o: {}});
for (let s in r) {
if (ye(s)) continue;
let i = r[s].inputs;
for (let u in i) Ie(Je, Ce(u), i[u].bytesInOutput);
}
}
st !== t &&
((st = t),
(Ae = {}),
(Oe.innerHTML = ''),
t === 1
? wt(Ae, Je, 0, c.PI * 2)
: t === 2 && (Ft(Ae, Je), (Oe.innerHTML = Zt)),
ut && ut());
},
wt = (e, t, r, s) => {
let n = t.t,
i = t.o,
u = [];
e[t.e] = Be(r + s / 2);
for (let a in i) u.push(i[a]);
for (let a of u.sort(Ne)) {
let l = (a.t / n) * s;
wt(e, a, r, l), (r += l);
}
},
He = Be(3.5),
we = Be(1),
Se = '#CCC',
Kt = [He, we],
$t = (e) => (e ? (e === 1 ? He : e === 2 ? we : Kt) : Se),
Fe = (e, t) =>
e === Se
? ''
: e === we
? t + 'ESM'
: e === He
? t + 'CJS'
: t + 'ESM & CJS',
Ft = (e, t) => {
let r = t.o,
s = 0,
n = !1;
for (let i in r) (s |= Ft(e, r[i])), (n = !0);
if (!n) {
let i = dt.inputs[t.e],
u = i && i.format;
s = u === 'esm' ? 2 : u === 'cjs' ? 1 : 0;
}
return (e[t.e] = $t(s)), s;
},
Oe = d.createElement('div'),
Zt =
'<span class="chit" style="background:' +
we +
'"></span>ESM <small>modern, faster, smaller</small><span class="chit" style="background:' +
He +
'"></span>CommonJS <small>legacy, slower, larger</small><span class="chit" style="background:' +
Se +
'"></span>Other';
Oe.id = 'colorLegend';
var kt = d.getElementById('summaryPanel'),
Dt = (e) => (e === 1 ? 'file' : 'files'),
At = (e, t) => {
let r = e.inputs,
s = e.outputs,
n = 0,
i = 0,
u = 0,
a = 0,
l = 0,
o = 0,
m = 0,
p,
I,
P;
for (let g in r) {
let O = r[g],
x = O.format;
x === 'esm'
? (l += O.bytes)
: x === 'cjs'
? (o += O.bytes)
: (m += O.bytes),
n++,
(u += O.bytes);
}
for (let g in s) ye(g) || (i++, (a += s[g].bytes));
(p = c.round((200 * l) / u)),
(I = c.round((200 * o) / u)),
(kt.innerHTML =
'<table><tr><td><h2>' +
H(le(u)) +
'</h2>' +
H(xe(n)) +
' input ' +
Dt(n) +
'</td><td class="symbol">→</td><td><h2>' +
H(le(a)) +
'</h2>' +
H(xe(i)) +
' output ' +
Dt(i) +
'</td></tr></table>' +
(l || o
? '<a href="javascript:void 0" class="formatBreakdown"><span class="side">' +
xe(c.round((100 * o) / u)) +
'% CJS</span><div class="bar"><div style="background:' +
He +
';width:' +
I +
'px"></div><div style="background:#CCC;width:' +
(200 - p - I) +
'px"></div><div style="background:' +
we +
';width:' +
p +
'px"></div></div><span class="side">' +
xe(c.round((100 * l) / u)) +
'% ESM</span></a>'
: '')),
(P = kt.querySelector('.formatBreakdown')),
P && (P.onclick = t);
};
var ve = d.createElement('div'),
_t,
pt,
qe = null,
Wt = () => ve.parentElement !== null,
We = () => {
ve.remove(), qe && (qe.focus(), (qe = null));
},
Qt = (e) => {
let t = e.inputs,
r = e.outputs,
s = {},
n = {},
i = [],
u = {};
for (let l in r) {
let o = r[l],
m = o.entryPoint;
if (m) {
(s[m] = l), i.push(l);
for (let p of o.imports)
!p.external && !be.call(u, p.path) && (u[p.path] = !0);
}
}
let a = [];
for (let l of i) {
let o = r[l].entryPoint;
be.call(u, l) ||
((n[o] = {e: o, d: void 0, i: 'entry-point'}), a.push(o));
}
if (!a.length)
for (let l of i) {
let o = r[l].entryPoint;
(n[o] = {e: o, d: void 0, i: 'entry-point'}), a.push(o);
}
for (; a.length > 0; ) {
let l = [];
for (let o of a) {
let m = t[o];
for (let p of m.imports)
!p.external &&
!be.call(n, p.path) &&
((n[p.path] = {e: o, d: p.original, i: p.kind}),
l.push(p.path));
}
a = l;
}
return {h: s, g: n};
},
Le = (e, t, r) => {
let s = e.inputs[t],
n = d.activeElement;
if (!s) return;
(!pt || _t !== e) && ((_t = e), (pt = Qt(e))),
Ee && n && n.focus && n.tagName === 'A' && (qe = n);
let i = d.createElement('div');
(i.className = 'dialog'),
(i.innerHTML =
'<h2>' +
H(t) +
'</h2><p>Original size: <b>' +
H(le(s.bytes)) +
'</b>' +
(r === null
? ''
: '<br>Bundled size: <b>' + H(le(r)) + '</b>') +
(s.format === 'esm'
? '<br>Module format: <b>ESM</b>'
: s.format === 'cjs'
? '<br>Module format: <b>CommonJS</b>'
: '') +
'</p>'),
el(i, pt, t);
let u = d.createElement('a');
(u.className = 'closeButton'),
(u.href = 'javascript:void 0'),
(u.onclick = We),
(u.innerHTML = '×'),
i.appendChild(u),
(i.tabIndex = 0),
(ve.id = 'whyFile'),
(ve.innerHTML = ''),
ve.appendChild(i),
(ve.onmousedown = (a) => {
a.target === ve && We();
}),
d.body.appendChild(ve),
i.focus(),
(i.onkeydown = (a) => {
a.key === 'Escape' &&
!a.shiftKey &&
!a.metaKey &&
!a.ctrlKey &&
!a.altKey &&
(a.preventDefault(), We());
});
},
el = (e, t, r) => {
let s = t.g,
n = r,
i = [{e: r, c: null}];
for (;;) {
let o = s[n];
if (!o) return;
if (n === o.e) break;
i.push({e: o.e, c: {e: n, d: o.d, i: o.i}}), (n = o.e);
}
i.reverse();
let u = t.h,
a,
l = 'Entry point';
e.appendChild(K('This file is included in the bundle because:'));
for (let o of i) {
if (be.call(u, o.e)) {
let P = d.createElement('div');
(a = d.createElement('div')),
(a.className = 'outputFile'),
(P.className = 'outputPath'),
(P.textContent = 'Output file '),
P.appendChild(rt(u[o.e])),
a.appendChild(P),
e.appendChild(a);
} else if (!a) return;
let m = K(l + ' '),
p = K(` is included in the bundle.
`);
a.firstChild &&
a.appendChild(
K(`
`),
),
a.appendChild(m),
a.appendChild(rt(o.e)),
a.appendChild(p);
let I = o.c;
if (I) {
let P = I.d || Nt(I.e) || Mt(I.e, xt(o.e)),
g = d.createElement('pre'),
O = d.createElement('span');
if (
((O.className = be.call(u, I.e) ? 'longArrow' : 'arrow'),
I.i === 'import-statement')
)
g.appendChild(Me('keyword', 'import ')),
g.appendChild(Me('string', JSON.stringify(P))),
g.appendChild(K(';')),
(l = 'Imported file');
else if (I.i === 'require-call')
g.appendChild(K('require(')),
g.appendChild(Me('string', JSON.stringify(P))),
g.appendChild(K(');')),
(l = 'Required file');
else if (I.i === 'dynamic-import')
g.appendChild(K('import(')),
g.appendChild(Me('string', JSON.stringify(P))),
g.appendChild(K(');')),
(l = 'Dynamically-imported file');
else if (I.i === 'import-rule')
g.appendChild(K('@import ')),
g.appendChild(Me('string', JSON.stringify(P))),
g.appendChild(K(';')),
(l = 'Imported stylesheet');
else if (I.i === 'url-token')
g.appendChild(K('url(')),
g.appendChild(Me('string', JSON.stringify(P))),
g.appendChild(K(')')),
(l = 'URL reference');
else return;
(p.textContent = ` contains:
`),
g.appendChild(O),
g.appendChild(
K(`
`),
),
a.appendChild(g);
} else m.textContent = 'So ' + m.textContent.toLowerCase();
}
};
var Bt = (e, t) => {
for (; t; ) {
if (t === e) return !0;
t = t.r;
}
return !1;
},
tl = (e) => {
let t = e.inputs,
r = e.outputs,
s = {n: '', e: '', t: 0, o: {}},
n = (a) => {
let l = a.o,
o = [];
for (let m in l) o.push(n(l[m]));
return {e: a.e, t: a.t, l: o.sort(Ne), r: null};
},
i = (a, l) => {
let o = 0;
for (let m of a.l) {
let p = i(m, l + 1);
(m.r = a), p > o && (o = p);
}
return o + 1;
};
for (let a in t) Ie(s, Ce(a), 0);
for (let a in r) {
if (ye(a)) continue;
let o = r[a].inputs;
for (let m in o) Ie(s, Ce(m), o[m].bytesInOutput);
}
let u = n(s);
for (; u.l.length === 1; ) u = u.l[0];
return {a: u, f: i(u, 0)};
},
ft = (e, t, r) => {
if (e === t) return;
let s = t.r,
n = s.t || 1,
i = 0;
ft(e, s, r);
for (let u of s.l) {
if (u === t) {
(r.u += (r.s * i) / n), (r.s = (u.t / n) * r.s);
break;
}
i += u.t;
}
r.p += 1;
},
ke = (e) => 50 * 8 * c.log(1 + c.log(1 + e / 8)),
jt = (e) => {
let t = d.createElement('div'),
r = d.createElement('main'),
s = tl(e),
n = s.a,
i = null,
u = (g) => {
n !== g && ((n = g), p(), P());
},
a = (g) => {
i !== g && ((i = g), p(), P());
},
l = () => {
let g = d.createElement('div'),
O = d.createElement('canvas'),
x = O.getContext('2d'),
U = () => {
let f = 2 * c.ceil(ke(s.f)),
C = B.devicePixelRatio || 1;
(w = c.min(c.round(innerWidth * 0.4), f)),
(z = w),
(W = w >> 1),
(A = z >> 1),
(O.style.width = w + 'px'),
(O.style.height = z + 'px'),
(O.width = c.round(w * C)),
(O.height = c.round(z * C)),
x.scale(C, C),
pe();
},
he = (f, C, N, L, se, $, D) => {
let q = ke(C + 1);
if (q > A) return D;
f === i && ($ |= 8);
let de = (N + q) / 2,
te = L + se;
if (te - D < 1.5 / de) return D;
let X = 2 / de;
if ((se > X && (X = se), $ & 2))
(x.fillStyle = Ve(x, f.e, W, A, 1)),
x.beginPath(),
x.arc(W, A, N, L, L + X, !1),
x.arc(W, A, q, L + X, L, !0),
x.fill(),
i &&
($ & 8 || f.r === i) &&
((x.fillStyle = 'rgba(255, 255, 255, 0.3)'),
x.fill());
else {
let ce = X === c.PI * 2,
Tt = $ & 4 || ce ? q : N;
$ & 1 && N > 0 && x.arc(W, A, N, L + X, L, !0),
x.moveTo(W + Tt * c.cos(L), A + Tt * c.sin(L)),
x.arc(W, A, q, L, L + X, !1),
ce ||
x.lineTo(W + N * c.cos(L + X), A + N * c.sin(L + X));
}
let me = f.t,
ge = $ & 10,
Te = 0,
ne = -1 / 0;
for (let ce of f.l)
(ne = he(
ce,
C + 1,
q,
L + (se * Te) / me,
(ce.t / me) * se,
ge,
ne,
)),
(Te += ce.t),
(ge |= 4);
return te;
},
pe = () => {
x.clearRect(0, 0, w, z),
he(F, G, ke(G), J, re, 3, -1 / 0),
(x.strokeStyle = '#222'),
x.beginPath(),
he(F, G, ke(G), J, re, 1, -1 / 0),
x.stroke(),
G === 0 &&
((x.fillStyle = '#222'),
(x.font = 'bold 16px sans-serif'),
(x.textAlign = 'center'),
(x.textBaseline = 'middle'),
x.fillText(le(S.t), W, A));
},
ee = -c.PI / 2,
w = 0,
z = 0,
W = 0,
A = 0,
V = null,
ie = 0,
T = 0,
R = ee,
_ = c.PI * 2,
S = n,
fe = T,
oe = R,
ae = _,
F = n,
G = T,
J = R,
re = _,
h = (f) => {
let C = (D, q, de, te, X) => {
let me = ke(q + 1);
if (me > A) return null;
if (se >= de && se < me) {
let ne = $ - te;
if (
((ne /= c.PI * 2),
(ne -= c.floor(ne)),
(ne *= c.PI * 2),
ne < X)
)
return D === F ? D.r : D;
}
let ge = D.t,
Te = 0;
for (let ne of D.l) {
let ce = C(
ne,
q + 1,
me,
te + (X * Te) / ge,
(ne.t / ge) * X,
);
if (ce) return ce;
Te += ne.t;
}
return null;
},
N = f.pageX,
L = f.pageY;
for (let D = O; D; D = D.offsetParent)
(N -= D.offsetLeft), (L -= D.offsetTop);
(N -= W), (L -= A);
let se = c.sqrt(N * N + L * L),
$ = c.atan2(L, N);
return C(F, G, ke(G), J, re);
},
b = () => {
let f = (et() - ie) / 350;
f < 0 || f > 1
? ((f = 1),
(V = null),
(F = S),
(fe = 0),
(oe = ee),
(ae = c.PI * 2))
: (f < 0.5
? (f *= 4 * f * f)
: ((f = 1 - f), (f *= 4 * f * f), (f = 1 - f)),
(V = Y(b))),
(G = T + (fe - T) * f),
(J = R + (oe - R) * f),
(re = _ + (ae - _) * f),
pe();
},
y = d.createElement('div'),
E = (f, C, N) => {
(y.style.display = 'block'),
(y.style.left = f + 'px'),
(y.style.top = C + 'px'),
(y.innerHTML = N);
},
v = () => {
y.style.display = 'none';
},
k = null,
M = [];
return (
U(),
Ge(pe),
ze(U),
je(null),
(O.onmousemove = (f) => {
let C = h(f);
if ((a(C), C && C !== F.r)) {
let N = C.e;
if (C.r) {
let L = C.r.e.length;
N = H(N.slice(0, L)) + '<b>' + H(N.slice(L)) + '</b>';
} else N = '<b>' + H(N) + '</b>';
ue === 2
? (N += H(Fe(_e(C.e), ' \u2013 ')))
: (N += ' \u2013 ' + H(le(C.t))),
E(f.pageX, f.pageY + 20, N),
(O.style.cursor = 'pointer');
} else v();
}),
(O.onmouseout = () => {
a(null), v();
}),
(O.onclick = (f) => {
let C = h(f);
if (!C) return;
v();
let N = [];
C !== F.r
? (N = M.concat(n))
: M.length > 0 && ((C = M.pop()), (N = M.slice())),
C.l.length > 0
? (u(C), (M = N))
: (f.preventDefault(), Le(e, C.e, C.t));
}),
(g.className = 'left'),
g.appendChild(O),
g.appendChild(Oe),
(y.className = 'tooltip'),
r.appendChild(y),
r.appendChild(g),
[
pe,
() => {
if (
(k !== i &&
((k = i),
i || ((O.style.cursor = 'auto'), v()),
V === null && (V = Y(b))),
S !== n)
) {
if (
((M.length = 0),
V === null && (V = Y(b)),
(ie = et()),
Bt(F, n))
) {
let f = {p: G, u: J, s: re};
ft(F, n, f),
(G = f.p),
(J = f.u),
(re = f.s),
(fe = 0),
(oe = ee),
(ae = c.PI * 2),
(F = n);
} else if (Bt(n, F)) {
let f = {p: 0, u: ee, s: c.PI * 2};
ft(n, F, f), (fe = f.p), (oe = f.u), (ae = f.s);
} else (ie = -1 / 0), (F = n);
(T = G), (R = J), (_ = re), (S = n);
}
},
]
);
},
o = () => {
let g = d.createElement('div'),
O = () => {
let w = n.r,
z = n.l,
W = d.createElement('div'),
A = 1;
W.className = 'bars';
for (let T of z) {
let R = T.t;
R > A && (A = R);
}
if (((x.length = 0), (U.length = 0), w)) {
let T = d.createElement('a');
(T.className = 'row'), (T.tabIndex = 0), W.appendChild(T);
let R = d.createElement('div');
(R.className = 'name'), T.appendChild(R);
let _ = d.createElement('div');
(_.className = 'size'),
T.appendChild(_),
(T.href = 'javascript:void 0'),
(R.textContent = '../'),
(T.onclick = () => {
u(w), Ee && U.length > 0 && U[0].focus();
}),
(T.onfocus = T.onmouseover = () => a(w)),
(T.onblur = T.onmouseout = () => a(null)),
x.push(w),
U.push(T);
}
for (let T of z) {
let R = T.e.slice(n.e.length),
_ = le(T.t),
S = d.createElement('a');
(S.className = 'row'), (S.tabIndex = 0), W.appendChild(S);
let fe = /^[^/]*\/?/.exec(R)[0],
oe = d.createElement('div');
(oe.className = 'name'),
(oe.innerHTML =
H(fe) + '<span>' + R.slice(fe.length) + '</span>'),
S.appendChild(oe);
let ae = d.createElement('div');
(ae.className = 'size'), S.appendChild(ae);
let F = d.createElement('div'),
G = _e(T.e);
(F.className = T.t ? 'bar' : 'bar empty'),
(F.style.background = G),
(F.style.width = (100 * T.t) / A + '%'),
ae.appendChild(F);
let J = d.createElement('div');
(J.className = 'last'),
(J.textContent = ue === 2 ? Fe(G, '') : _),
F.appendChild(J),
(S.href = 'javascript:void 0'),
(S.onclick = (re) => {
re.preventDefault(),
T.l.length > 0
? (u(T), Ee && U.length > 0 && U[0].focus())
: Le(e, T.e, T.t);
}),
(S.onfocus = S.onmouseover = () => a(T)),
(S.onblur = S.onmouseout = () => a(null)),
x.push(T),
U.push(S);
}
let V = d.createElement('div');
(V.className = 'dir'), (V.textContent = 'Directory: ');
let ie = d.createElement('div');
(ie.className = 'segments'), V.appendChild(ie);
for (let T = n; T; T = T.r) {
let R = T.e || '/',
_ = d.createElement('a');
T.r && (R = R.slice(T.r.e.length)),
(_.textContent = R),
T !== n &&
((_.href = 'javascript:void 0'),
(_.onclick = (S) => {
S.preventDefault(),
u(T),
Ee &&
U.length > 0 &&
U[!x[0] && U.length > 1 ? 1 : 0].focus();
})),
ie.insertBefore(_, ie.firstChild),
n == s.a &&
((_.tabIndex = -1), x.unshift(n), U.unshift(_)