## Description
This PR upgrades Prettier to v2 + enforces TypeScript’s [`import
type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export)
syntax where applicable. It’s submitted as a separate PR so we can merge
it easily.
As a part of this PR, we reformat the codebase heavily:
- add `import type` everywhere where it’s required, and
- re-format the code to account for Prettier 2’s breaking changes:
https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes
This PR is submitted against `release` to make sure all new code by team
members will adhere to new formatting standards, and we’ll have fewer
conflicts when merging `bundle-optimizations` into `release`. (I’ll
merge `release` back into `bundle-optimizations` once this PR is
merged.)
### Why is this needed?
This PR is needed because, for the Lodash optimization from
7cbb12af88,
we need to use `import type`. Otherwise, `babel-plugin-lodash` complains
that `LoDashStatic` is not a lodash function.
However, just using `import type` in the current codebase will give you
this:
<img width="962" alt="Screenshot 2023-03-08 at 17 45 59"
src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png">
That’s because Prettier 1 can’t parse `import type` at all. To parse it,
we need to upgrade to Prettier 2.
### Why enforce `import type`?
Apart from just enabling `import type` support, this PR enforces
specifying `import type` everywhere it’s needed. (Developers will get
immediate TypeScript and ESLint errors when they forget to do so.)
I’m doing this because I believe `import type` improves DX and makes
refactorings easier.
Let’s say you had a few imports like below. Can you tell which of these
imports will increase the bundle size? (Tip: it’s not all of them!)
```ts
// app/client/src/workers/Linting/utils.ts
import { Position } from "codemirror";
import { LintError as JSHintError, LintOptions } from "jshint";
import { get, isEmpty, isNumber, keys, last, set } from "lodash";
```
It’s pretty hard, right?
What about now?
```ts
// app/client/src/workers/Linting/utils.ts
import type { Position } from "codemirror";
import type { LintError as JSHintError, LintOptions } from "jshint";
import { get, isEmpty, isNumber, keys, last, set } from "lodash";
```
Now, it’s clear that only `lodash` will be bundled.
This helps developers to see which imports are problematic, but it
_also_ helps with refactorings. Now, if you want to see where
`codemirror` is bundled, you can just grep for `import \{.*\} from
"codemirror"` – and you won’t get any type-only imports.
This also helps (some) bundlers. Upon transpiling, TypeScript erases
type-only imports completely. In some environment (not ours), this makes
the bundle smaller, as the bundler doesn’t need to bundle type-only
imports anymore.
## Type of change
- Chore (housekeeping or task changes that don't impact user perception)
## How Has This Been Tested?
This was tested to not break the build.
### Test Plan
> Add Testsmith test cases links that relate to this PR
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
---------
Co-authored-by: Satish Gandham <hello@satishgandham.com>
Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
845 lines
23 KiB
JavaScript
845 lines
23 KiB
JavaScript
/*! pace 1.0.0 */
|
|
(function () {
|
|
var a,
|
|
b,
|
|
c,
|
|
d,
|
|
e,
|
|
f,
|
|
g,
|
|
h,
|
|
i,
|
|
j,
|
|
k,
|
|
l,
|
|
m,
|
|
n,
|
|
o,
|
|
p,
|
|
q,
|
|
r,
|
|
s,
|
|
t,
|
|
u,
|
|
v,
|
|
w,
|
|
x,
|
|
y,
|
|
z,
|
|
A,
|
|
B,
|
|
C,
|
|
D,
|
|
E,
|
|
F,
|
|
G,
|
|
H,
|
|
I,
|
|
J,
|
|
K,
|
|
L,
|
|
M,
|
|
N,
|
|
O,
|
|
P,
|
|
Q,
|
|
R,
|
|
S,
|
|
T,
|
|
U,
|
|
V,
|
|
W,
|
|
X = [].slice,
|
|
Y = {}.hasOwnProperty,
|
|
Z = function (a, b) {
|
|
function c() {
|
|
this.constructor = a;
|
|
}
|
|
for (var d in b) Y.call(b, d) && (a[d] = b[d]);
|
|
return (
|
|
(c.prototype = b.prototype),
|
|
(a.prototype = new c()),
|
|
(a.__super__ = b.prototype),
|
|
a
|
|
);
|
|
},
|
|
$ =
|
|
[].indexOf ||
|
|
function (a) {
|
|
for (var b = 0, c = this.length; c > b; b++)
|
|
if (b in this && this[b] === a) return b;
|
|
return -1;
|
|
};
|
|
for (
|
|
u = {
|
|
catchupTime: 100,
|
|
initialRate: 0.03,
|
|
minTime: 250,
|
|
ghostTime: 100,
|
|
maxProgressPerFrame: 20,
|
|
easeFactor: 1.25,
|
|
startOnPageLoad: !0,
|
|
restartOnPushState: !0,
|
|
restartOnRequestAfter: 500,
|
|
target: "body",
|
|
elements: { checkInterval: 100, selectors: ["body"] },
|
|
eventLag: { minSamples: 10, sampleCount: 3, lagThreshold: 3 },
|
|
ajax: { trackMethods: ["GET"], trackWebSockets: !0, ignoreURLs: [] },
|
|
},
|
|
C = function () {
|
|
var a;
|
|
return null !=
|
|
(a =
|
|
"undefined" != typeof performance &&
|
|
null !== performance &&
|
|
"function" == typeof performance.now
|
|
? performance.now()
|
|
: void 0)
|
|
? a
|
|
: +new Date();
|
|
},
|
|
E =
|
|
window.requestAnimationFrame ||
|
|
window.mozRequestAnimationFrame ||
|
|
window.webkitRequestAnimationFrame ||
|
|
window.msRequestAnimationFrame,
|
|
t = window.cancelAnimationFrame || window.mozCancelAnimationFrame,
|
|
null == E &&
|
|
((E = function (a) {
|
|
return setTimeout(a, 50);
|
|
}),
|
|
(t = function (a) {
|
|
return clearTimeout(a);
|
|
})),
|
|
G = function (a) {
|
|
var b, c;
|
|
return (
|
|
(b = C()),
|
|
(c = function () {
|
|
var d;
|
|
return (
|
|
(d = C() - b),
|
|
d >= 33
|
|
? ((b = C()),
|
|
a(d, function () {
|
|
return E(c);
|
|
}))
|
|
: setTimeout(c, 33 - d)
|
|
);
|
|
})()
|
|
);
|
|
},
|
|
F = function () {
|
|
var a, b, c;
|
|
return (
|
|
(c = arguments[0]),
|
|
(b = arguments[1]),
|
|
(a = 3 <= arguments.length ? X.call(arguments, 2) : []),
|
|
"function" == typeof c[b] ? c[b].apply(c, a) : c[b]
|
|
);
|
|
},
|
|
v = function () {
|
|
var a, b, c, d, e, f, g;
|
|
for (
|
|
b = arguments[0],
|
|
d = 2 <= arguments.length ? X.call(arguments, 1) : [],
|
|
f = 0,
|
|
g = d.length;
|
|
g > f;
|
|
f++
|
|
)
|
|
if ((c = d[f]))
|
|
for (a in c)
|
|
Y.call(c, a) &&
|
|
((e = c[a]),
|
|
null != b[a] &&
|
|
"object" == typeof b[a] &&
|
|
null != e &&
|
|
"object" == typeof e
|
|
? v(b[a], e)
|
|
: (b[a] = e));
|
|
return b;
|
|
},
|
|
q = function (a) {
|
|
var b, c, d, e, f;
|
|
for (c = b = 0, e = 0, f = a.length; f > e; e++)
|
|
(d = a[e]), (c += Math.abs(d)), b++;
|
|
return c / b;
|
|
},
|
|
x = function (a, b) {
|
|
var c, d, e;
|
|
if (
|
|
(null == a && (a = "options"),
|
|
null == b && (b = !0),
|
|
(e = document.querySelector("[data-pace-" + a + "]")))
|
|
) {
|
|
if (((c = e.getAttribute("data-pace-" + a)), !b)) return c;
|
|
try {
|
|
return JSON.parse(c);
|
|
} catch (f) {
|
|
return (
|
|
(d = f),
|
|
"undefined" != typeof console && null !== console
|
|
? console.error("Error parsing inline pace options", d)
|
|
: void 0
|
|
);
|
|
}
|
|
}
|
|
},
|
|
g = (function () {
|
|
function a() {}
|
|
return (
|
|
(a.prototype.on = function (a, b, c, d) {
|
|
var e;
|
|
return (
|
|
null == d && (d = !1),
|
|
null == this.bindings && (this.bindings = {}),
|
|
null == (e = this.bindings)[a] && (e[a] = []),
|
|
this.bindings[a].push({ handler: b, ctx: c, once: d })
|
|
);
|
|
}),
|
|
(a.prototype.once = function (a, b, c) {
|
|
return this.on(a, b, c, !0);
|
|
}),
|
|
(a.prototype.off = function (a, b) {
|
|
var c, d, e;
|
|
if (null != (null != (d = this.bindings) ? d[a] : void 0)) {
|
|
if (null == b) return delete this.bindings[a];
|
|
for (c = 0, e = []; c < this.bindings[a].length; )
|
|
e.push(
|
|
this.bindings[a][c].handler === b
|
|
? this.bindings[a].splice(c, 1)
|
|
: c++,
|
|
);
|
|
return e;
|
|
}
|
|
}),
|
|
(a.prototype.trigger = function () {
|
|
var a, b, c, d, e, f, g, h, i;
|
|
if (
|
|
((c = arguments[0]),
|
|
(a = 2 <= arguments.length ? X.call(arguments, 1) : []),
|
|
null != (g = this.bindings) ? g[c] : void 0)
|
|
) {
|
|
for (e = 0, i = []; e < this.bindings[c].length; )
|
|
(h = this.bindings[c][e]),
|
|
(d = h.handler),
|
|
(b = h.ctx),
|
|
(f = h.once),
|
|
d.apply(null != b ? b : this, a),
|
|
i.push(f ? this.bindings[c].splice(e, 1) : e++);
|
|
return i;
|
|
}
|
|
}),
|
|
a
|
|
);
|
|
})(),
|
|
j = window.Pace || {},
|
|
window.Pace = j,
|
|
v(j, g.prototype),
|
|
D = j.options = v({}, u, window.paceOptions, x()),
|
|
U = ["ajax", "document", "eventLag", "elements"],
|
|
Q = 0,
|
|
S = U.length;
|
|
S > Q;
|
|
Q++
|
|
)
|
|
(K = U[Q]), D[K] === !0 && (D[K] = u[K]);
|
|
(i = (function (a) {
|
|
function b() {
|
|
return (V = b.__super__.constructor.apply(this, arguments));
|
|
}
|
|
return Z(b, a), b;
|
|
})(Error)),
|
|
(b = (function () {
|
|
function a() {
|
|
this.progress = 0;
|
|
}
|
|
return (
|
|
(a.prototype.getElement = function () {
|
|
var a;
|
|
if (null == this.el) {
|
|
if (((a = document.querySelector(D.target)), !a)) throw new i();
|
|
(this.el = document.createElement("div")),
|
|
(this.el.className = "pace pace-active"),
|
|
(document.body.className = document.body.className.replace(
|
|
/pace-done/g,
|
|
"",
|
|
)),
|
|
(document.body.className += " pace-running"),
|
|
(this.el.innerHTML =
|
|
'<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>'),
|
|
null != a.firstChild
|
|
? a.insertBefore(this.el, a.firstChild)
|
|
: a.appendChild(this.el);
|
|
}
|
|
return this.el;
|
|
}),
|
|
(a.prototype.finish = function () {
|
|
var a;
|
|
return (
|
|
(a = this.getElement()),
|
|
(a.className = a.className.replace("pace-active", "")),
|
|
(a.className += " pace-inactive"),
|
|
(document.body.className = document.body.className.replace(
|
|
"pace-running",
|
|
"",
|
|
)),
|
|
(document.body.className += " pace-done")
|
|
);
|
|
}),
|
|
(a.prototype.update = function (a) {
|
|
return (this.progress = a), this.render();
|
|
}),
|
|
(a.prototype.destroy = function () {
|
|
try {
|
|
this.getElement().parentNode.removeChild(this.getElement());
|
|
} catch (a) {
|
|
i = a;
|
|
}
|
|
return (this.el = void 0);
|
|
}),
|
|
(a.prototype.render = function () {
|
|
var a, b, c, d, e, f, g;
|
|
if (null == document.querySelector(D.target)) return !1;
|
|
for (
|
|
a = this.getElement(),
|
|
d = "translate3d(" + this.progress + "%, 0, 0)",
|
|
g = ["webkitTransform", "msTransform", "transform"],
|
|
e = 0,
|
|
f = g.length;
|
|
f > e;
|
|
e++
|
|
)
|
|
(b = g[e]), (a.children[0].style[b] = d);
|
|
return (
|
|
(!this.lastRenderedProgress ||
|
|
this.lastRenderedProgress | (0 !== this.progress) | 0) &&
|
|
(a.children[0].setAttribute(
|
|
"data-progress-text",
|
|
"" + (0 | this.progress) + "%",
|
|
),
|
|
this.progress >= 100
|
|
? (c = "99")
|
|
: ((c = this.progress < 10 ? "0" : ""),
|
|
(c += 0 | this.progress)),
|
|
a.children[0].setAttribute("data-progress", "" + c)),
|
|
(this.lastRenderedProgress = this.progress)
|
|
);
|
|
}),
|
|
(a.prototype.done = function () {
|
|
return this.progress >= 100;
|
|
}),
|
|
a
|
|
);
|
|
})()),
|
|
(h = (function () {
|
|
function a() {
|
|
this.bindings = {};
|
|
}
|
|
return (
|
|
(a.prototype.trigger = function (a, b) {
|
|
var c, d, e, f, g;
|
|
if (null != this.bindings[a]) {
|
|
for (f = this.bindings[a], g = [], d = 0, e = f.length; e > d; d++)
|
|
(c = f[d]), g.push(c.call(this, b));
|
|
return g;
|
|
}
|
|
}),
|
|
(a.prototype.on = function (a, b) {
|
|
var c;
|
|
return (
|
|
null == (c = this.bindings)[a] && (c[a] = []),
|
|
this.bindings[a].push(b)
|
|
);
|
|
}),
|
|
a
|
|
);
|
|
})()),
|
|
(P = window.XMLHttpRequest),
|
|
(O = window.XDomainRequest),
|
|
(N = window.WebSocket),
|
|
(w = function (a, b) {
|
|
var c, d, e, f;
|
|
f = [];
|
|
for (d in b.prototype)
|
|
try {
|
|
(e = b.prototype[d]),
|
|
f.push(
|
|
null == a[d] && "function" != typeof e ? (a[d] = e) : void 0,
|
|
);
|
|
} catch (g) {
|
|
c = g;
|
|
}
|
|
return f;
|
|
}),
|
|
(A = []),
|
|
(j.ignore = function () {
|
|
var a, b, c;
|
|
return (
|
|
(b = arguments[0]),
|
|
(a = 2 <= arguments.length ? X.call(arguments, 1) : []),
|
|
A.unshift("ignore"),
|
|
(c = b.apply(null, a)),
|
|
A.shift(),
|
|
c
|
|
);
|
|
}),
|
|
(j.track = function () {
|
|
var a, b, c;
|
|
return (
|
|
(b = arguments[0]),
|
|
(a = 2 <= arguments.length ? X.call(arguments, 1) : []),
|
|
A.unshift("track"),
|
|
(c = b.apply(null, a)),
|
|
A.shift(),
|
|
c
|
|
);
|
|
}),
|
|
(J = function (a) {
|
|
var b;
|
|
if ((null == a && (a = "GET"), "track" === A[0])) return "force";
|
|
if (!A.length && D.ajax) {
|
|
if ("socket" === a && D.ajax.trackWebSockets) return !0;
|
|
if (((b = a.toUpperCase()), $.call(D.ajax.trackMethods, b) >= 0))
|
|
return !0;
|
|
}
|
|
return !1;
|
|
}),
|
|
(k = (function (a) {
|
|
function b() {
|
|
var a,
|
|
c = this;
|
|
b.__super__.constructor.apply(this, arguments),
|
|
(a = function (a) {
|
|
var b;
|
|
return (
|
|
(b = a.open),
|
|
(a.open = function (d, e) {
|
|
return (
|
|
J(d) && c.trigger("request", { type: d, url: e, request: a }),
|
|
b.apply(a, arguments)
|
|
);
|
|
})
|
|
);
|
|
}),
|
|
(window.XMLHttpRequest = function (b) {
|
|
var c;
|
|
return (c = new P(b)), a(c), c;
|
|
});
|
|
try {
|
|
w(window.XMLHttpRequest, P);
|
|
} catch (d) {}
|
|
if (null != O) {
|
|
window.XDomainRequest = function () {
|
|
var b;
|
|
return (b = new O()), a(b), b;
|
|
};
|
|
try {
|
|
w(window.XDomainRequest, O);
|
|
} catch (d) {}
|
|
}
|
|
if (null != N && D.ajax.trackWebSockets) {
|
|
window.WebSocket = function (a, b) {
|
|
var d;
|
|
return (
|
|
(d = null != b ? new N(a, b) : new N(a)),
|
|
J("socket") &&
|
|
c.trigger("request", {
|
|
type: "socket",
|
|
url: a,
|
|
protocols: b,
|
|
request: d,
|
|
}),
|
|
d
|
|
);
|
|
};
|
|
try {
|
|
w(window.WebSocket, N);
|
|
} catch (d) {}
|
|
}
|
|
}
|
|
return Z(b, a), b;
|
|
})(h)),
|
|
(R = null),
|
|
(y = function () {
|
|
return null == R && (R = new k()), R;
|
|
}),
|
|
(I = function (a) {
|
|
var b, c, d, e;
|
|
for (e = D.ajax.ignoreURLs, c = 0, d = e.length; d > c; c++)
|
|
if (((b = e[c]), "string" == typeof b)) {
|
|
if (-1 !== a.indexOf(b)) return !0;
|
|
} else if (b.test(a)) return !0;
|
|
return !1;
|
|
}),
|
|
y().on("request", function (b) {
|
|
var c, d, e, f, g;
|
|
return (
|
|
(f = b.type),
|
|
(e = b.request),
|
|
(g = b.url),
|
|
I(g)
|
|
? void 0
|
|
: j.running || (D.restartOnRequestAfter === !1 && "force" !== J(f))
|
|
? void 0
|
|
: ((d = arguments),
|
|
(c = D.restartOnRequestAfter || 0),
|
|
"boolean" == typeof c && (c = 0),
|
|
setTimeout(function () {
|
|
var b, c, g, h, i, k;
|
|
if (
|
|
(b =
|
|
"socket" === f
|
|
? e.readyState < 2
|
|
: 0 < (h = e.readyState) && 4 > h)
|
|
) {
|
|
for (
|
|
j.restart(), i = j.sources, k = [], c = 0, g = i.length;
|
|
g > c;
|
|
c++
|
|
) {
|
|
if (((K = i[c]), K instanceof a)) {
|
|
K.watch.apply(K, d);
|
|
break;
|
|
}
|
|
k.push(void 0);
|
|
}
|
|
return k;
|
|
}
|
|
}, c))
|
|
);
|
|
}),
|
|
(a = (function () {
|
|
function a() {
|
|
var a = this;
|
|
(this.elements = []),
|
|
y().on("request", function () {
|
|
return a.watch.apply(a, arguments);
|
|
});
|
|
}
|
|
return (
|
|
(a.prototype.watch = function (a) {
|
|
var b, c, d, e;
|
|
return (
|
|
(d = a.type),
|
|
(b = a.request),
|
|
(e = a.url),
|
|
I(e)
|
|
? void 0
|
|
: ((c = "socket" === d ? new n(b) : new o(b)),
|
|
this.elements.push(c))
|
|
);
|
|
}),
|
|
a
|
|
);
|
|
})()),
|
|
(o = (function () {
|
|
function a(a) {
|
|
var b,
|
|
c,
|
|
d,
|
|
e,
|
|
f,
|
|
g,
|
|
h = this;
|
|
if (((this.progress = 0), null != window.ProgressEvent))
|
|
for (
|
|
c = null,
|
|
a.addEventListener(
|
|
"progress",
|
|
function (a) {
|
|
return (h.progress = a.lengthComputable
|
|
? (100 * a.loaded) / a.total
|
|
: h.progress + (100 - h.progress) / 2);
|
|
},
|
|
!1,
|
|
),
|
|
g = ["load", "abort", "timeout", "error"],
|
|
d = 0,
|
|
e = g.length;
|
|
e > d;
|
|
d++
|
|
)
|
|
(b = g[d]),
|
|
a.addEventListener(
|
|
b,
|
|
function () {
|
|
return (h.progress = 100);
|
|
},
|
|
!1,
|
|
);
|
|
else
|
|
(f = a.onreadystatechange),
|
|
(a.onreadystatechange = function () {
|
|
var b;
|
|
return (
|
|
0 === (b = a.readyState) || 4 === b
|
|
? (h.progress = 100)
|
|
: 3 === a.readyState && (h.progress = 50),
|
|
"function" == typeof f ? f.apply(null, arguments) : void 0
|
|
);
|
|
});
|
|
}
|
|
return a;
|
|
})()),
|
|
(n = (function () {
|
|
function a(a) {
|
|
var b,
|
|
c,
|
|
d,
|
|
e,
|
|
f = this;
|
|
for (
|
|
this.progress = 0, e = ["error", "open"], c = 0, d = e.length;
|
|
d > c;
|
|
c++
|
|
)
|
|
(b = e[c]),
|
|
a.addEventListener(
|
|
b,
|
|
function () {
|
|
return (f.progress = 100);
|
|
},
|
|
!1,
|
|
);
|
|
}
|
|
return a;
|
|
})()),
|
|
(d = (function () {
|
|
function a(a) {
|
|
var b, c, d, f;
|
|
for (
|
|
null == a && (a = {}),
|
|
this.elements = [],
|
|
null == a.selectors && (a.selectors = []),
|
|
f = a.selectors,
|
|
c = 0,
|
|
d = f.length;
|
|
d > c;
|
|
c++
|
|
)
|
|
(b = f[c]), this.elements.push(new e(b));
|
|
}
|
|
return a;
|
|
})()),
|
|
(e = (function () {
|
|
function a(a) {
|
|
(this.selector = a), (this.progress = 0), this.check();
|
|
}
|
|
return (
|
|
(a.prototype.check = function () {
|
|
var a = this;
|
|
return document.querySelector(this.selector)
|
|
? this.done()
|
|
: setTimeout(function () {
|
|
return a.check();
|
|
}, D.elements.checkInterval);
|
|
}),
|
|
(a.prototype.done = function () {
|
|
return (this.progress = 100);
|
|
}),
|
|
a
|
|
);
|
|
})()),
|
|
(c = (function () {
|
|
function a() {
|
|
var a,
|
|
b,
|
|
c = this;
|
|
(this.progress =
|
|
null != (b = this.states[document.readyState]) ? b : 100),
|
|
(a = document.onreadystatechange),
|
|
(document.onreadystatechange = function () {
|
|
return (
|
|
null != c.states[document.readyState] &&
|
|
(c.progress = c.states[document.readyState]),
|
|
"function" == typeof a ? a.apply(null, arguments) : void 0
|
|
);
|
|
});
|
|
}
|
|
return (
|
|
(a.prototype.states = { loading: 0, interactive: 50, complete: 100 }), a
|
|
);
|
|
})()),
|
|
(f = (function () {
|
|
function a() {
|
|
var a,
|
|
b,
|
|
c,
|
|
d,
|
|
e,
|
|
f = this;
|
|
(this.progress = 0),
|
|
(a = 0),
|
|
(e = []),
|
|
(d = 0),
|
|
(c = C()),
|
|
(b = setInterval(function () {
|
|
var g;
|
|
return (
|
|
(g = C() - c - 50),
|
|
(c = C()),
|
|
e.push(g),
|
|
e.length > D.eventLag.sampleCount && e.shift(),
|
|
(a = q(e)),
|
|
++d >= D.eventLag.minSamples && a < D.eventLag.lagThreshold
|
|
? ((f.progress = 100), clearInterval(b))
|
|
: (f.progress = 100 * (3 / (a + 3)))
|
|
);
|
|
}, 50));
|
|
}
|
|
return a;
|
|
})()),
|
|
(m = (function () {
|
|
function a(a) {
|
|
(this.source = a),
|
|
(this.last = this.sinceLastUpdate = 0),
|
|
(this.rate = D.initialRate),
|
|
(this.catchup = 0),
|
|
(this.progress = this.lastProgress = 0),
|
|
null != this.source && (this.progress = F(this.source, "progress"));
|
|
}
|
|
return (
|
|
(a.prototype.tick = function (a, b) {
|
|
var c;
|
|
return (
|
|
null == b && (b = F(this.source, "progress")),
|
|
b >= 100 && (this.done = !0),
|
|
b === this.last
|
|
? (this.sinceLastUpdate += a)
|
|
: (this.sinceLastUpdate &&
|
|
(this.rate = (b - this.last) / this.sinceLastUpdate),
|
|
(this.catchup = (b - this.progress) / D.catchupTime),
|
|
(this.sinceLastUpdate = 0),
|
|
(this.last = b)),
|
|
b > this.progress && (this.progress += this.catchup * a),
|
|
(c = 1 - Math.pow(this.progress / 100, D.easeFactor)),
|
|
(this.progress += c * this.rate * a),
|
|
(this.progress = Math.min(
|
|
this.lastProgress + D.maxProgressPerFrame,
|
|
this.progress,
|
|
)),
|
|
(this.progress = Math.max(0, this.progress)),
|
|
(this.progress = Math.min(100, this.progress)),
|
|
(this.lastProgress = this.progress),
|
|
this.progress
|
|
);
|
|
}),
|
|
a
|
|
);
|
|
})()),
|
|
(L = null),
|
|
(H = null),
|
|
(r = null),
|
|
(M = null),
|
|
(p = null),
|
|
(s = null),
|
|
(j.running = !1),
|
|
(z = function () {
|
|
return D.restartOnPushState ? j.restart() : void 0;
|
|
}),
|
|
null != window.history.pushState &&
|
|
((T = window.history.pushState),
|
|
(window.history.pushState = function () {
|
|
return z(), T.apply(window.history, arguments);
|
|
})),
|
|
null != window.history.replaceState &&
|
|
((W = window.history.replaceState),
|
|
(window.history.replaceState = function () {
|
|
return z(), W.apply(window.history, arguments);
|
|
})),
|
|
(l = { ajax: a, elements: d, document: c, eventLag: f }),
|
|
(B = function () {
|
|
var a, c, d, e, f, g, h, i;
|
|
for (
|
|
j.sources = L = [],
|
|
g = ["ajax", "elements", "document", "eventLag"],
|
|
c = 0,
|
|
e = g.length;
|
|
e > c;
|
|
c++
|
|
)
|
|
(a = g[c]), D[a] !== !1 && L.push(new l[a](D[a]));
|
|
for (
|
|
i = null != (h = D.extraSources) ? h : [], d = 0, f = i.length;
|
|
f > d;
|
|
d++
|
|
)
|
|
(K = i[d]), L.push(new K(D));
|
|
return (j.bar = r = new b()), (H = []), (M = new m());
|
|
})(),
|
|
(j.stop = function () {
|
|
return (
|
|
j.trigger("stop"),
|
|
(j.running = !1),
|
|
r.destroy(),
|
|
(s = !0),
|
|
null != p && ("function" == typeof t && t(p), (p = null)),
|
|
B()
|
|
);
|
|
}),
|
|
(j.restart = function () {
|
|
return j.trigger("restart"), j.stop(), j.start();
|
|
}),
|
|
(j.go = function () {
|
|
var a;
|
|
return (
|
|
(j.running = !0),
|
|
r.render(),
|
|
(a = C()),
|
|
(s = !1),
|
|
(p = G(function (b, c) {
|
|
var d, e, f, g, h, i, k, l, n, o, p, q, t, u, v, w;
|
|
for (
|
|
l = 100 - r.progress, e = p = 0, f = !0, i = q = 0, u = L.length;
|
|
u > q;
|
|
i = ++q
|
|
)
|
|
for (
|
|
K = L[i],
|
|
o = null != H[i] ? H[i] : (H[i] = []),
|
|
h = null != (w = K.elements) ? w : [K],
|
|
k = t = 0,
|
|
v = h.length;
|
|
v > t;
|
|
k = ++t
|
|
)
|
|
(g = h[k]),
|
|
(n = null != o[k] ? o[k] : (o[k] = new m(g))),
|
|
(f &= n.done),
|
|
n.done || (e++, (p += n.tick(b)));
|
|
return (
|
|
(d = p / e),
|
|
r.update(M.tick(b, d)),
|
|
r.done() || f || s
|
|
? (r.update(100),
|
|
j.trigger("done"),
|
|
setTimeout(function () {
|
|
return r.finish(), (j.running = !1), j.trigger("hide");
|
|
}, Math.max(D.ghostTime, Math.max(D.minTime - (C() - a), 0))))
|
|
: c()
|
|
);
|
|
}))
|
|
);
|
|
}),
|
|
(j.start = function (a) {
|
|
v(D, a), (j.running = !0);
|
|
try {
|
|
r.render();
|
|
} catch (b) {
|
|
i = b;
|
|
}
|
|
return document.querySelector(".pace")
|
|
? (j.trigger("start"), j.go())
|
|
: setTimeout(j.start, 50);
|
|
}),
|
|
"function" == typeof define && define.amd
|
|
? define(function () {
|
|
return j;
|
|
})
|
|
: "object" == typeof exports
|
|
? (module.exports = j)
|
|
: D.startOnPageLoad && j.start();
|
|
}).call(this);
|