Designer/js/plugins/swup.min.js
2024-09-11 14:56:02 +08:00

1067 lines
37 KiB
JavaScript

(function e(t, n) {
if (typeof exports === "object" && typeof module === "object") module.exports = n();
else if (typeof define === "function" && define.amd) define([], n);
else if (typeof exports === "object") exports["Swup"] = n();
else t["Swup"] = n()
})(window, function() {
return function(e) {
var t = {};
function n(r) {
if (t[r]) {
return t[r].exports
}
var i = t[r] = {
i: r,
l: false,
exports: {}
};
e[r].call(i.exports, i, i.exports, n);
i.l = true;
return i.exports
}
n.m = e;
n.c = t;
n.d = function(e, t, r) {
if (!n.o(e, t)) {
Object.defineProperty(e, t, {
enumerable: true,
get: r
})
}
};
n.r = function(e) {
if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
})
}
Object.defineProperty(e, "__esModule", {
value: true
})
};
n.t = function(e, t) {
if (t & 1) e = n(e);
if (t & 8) return e;
if (t & 4 && typeof e === "object" && e && e.__esModule) return e;
var r = Object.create(null);
n.r(r);
Object.defineProperty(r, "default", {
enumerable: true,
value: e
});
if (t & 2 && typeof e != "string")
for (var i in e) n.d(r, i, function(t) {
return e[t]
}.bind(null, i));
return r
};
n.n = function(e) {
var t = e && e.__esModule ? function t() {
return e["default"]
} : function t() {
return e
};
n.d(t, "a", t);
return t
};
n.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
};
n.p = "";
return n(n.s = 2)
}([function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
t.Link = t.markSwupElements = t.getCurrentUrl = t.transitionEnd = t.fetch = t.getDataFromHtml =
t.createHistoryRecord = t.classify = undefined;
var r = n(8);
var i = w(r);
var a = n(9);
var o = w(a);
var s = n(10);
var u = w(s);
var l = n(11);
var c = w(l);
var f = n(12);
var d = w(f);
var h = n(13);
var p = w(h);
var v = n(14);
var g = w(v);
var m = n(15);
var y = w(m);
function w(e) {
return e && e.__esModule ? e : {
default: e
}
}
var b = t.classify = i.default;
var E = t.createHistoryRecord = o.default;
var P = t.getDataFromHtml = u.default;
var _ = t.fetch = c.default;
var k = t.transitionEnd = d.default;
var S = t.getCurrentUrl = p.default;
var O = t.markSwupElements = g.default;
var j = t.Link = y.default
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = t.query = function e(t) {
var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
if (typeof t !== "string") {
return t
}
return n.querySelector(t)
};
var i = t.queryAll = function e(t) {
var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
if (typeof t !== "string") {
return t
}
return Array.prototype.slice.call(n.querySelectorAll(t))
}
}, function(e, t, n) {
"use strict";
var r = n(3);
var i = a(r);
function a(e) {
return e && e.__esModule ? e : {
default: e
}
}
e.exports = i.default
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = Object.assign || function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) {
if (Object.prototype.hasOwnProperty.call(n, r)) {
e[r] = n[r]
}
}
}
return e
};
var i = function() {
function e(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n];
r.enumerable = r.enumerable || false;
r.configurable = true;
if ("value" in r) r.writable = true;
Object.defineProperty(e, r.key, r)
}
}
return function(t, n, r) {
if (n) e(t.prototype, n);
if (r) e(t, r);
return t
}
}();
var a = n(4);
var o = M(a);
var s = n(6);
var u = M(s);
var l = n(7);
var c = M(l);
var f = n(16);
var d = M(f);
var h = n(17);
var p = M(h);
var v = n(18);
var g = M(v);
var m = n(19);
var y = M(m);
var w = n(20);
var b = M(w);
var E = n(21);
var P = M(E);
var _ = n(22);
var k = M(_);
var S = n(23);
var O = n(1);
var j = n(0);
function M(e) {
return e && e.__esModule ? e : {
default: e
}
}
function H(e, t) {
if (!(e instanceof t)) {
throw new TypeError("Cannot call a class as a function")
}
}
var L = function() {
function e(t) {
H(this, e);
var n = {
animateHistoryBrowsing: false,
animationSelector: '[class*="transition-"]',
linkSelector: 'a[href^="' + window.location.origin +
'"]:not([data-no-swup]), a[href^="/"]:not([data-no-swup]), a[href^="#"]:not([data-no-swup])',
cache: true,
containers: ["#swup"],
requestHeaders: {
"X-Requested-With": "swup",
Accept: "text/html, application/xhtml+xml"
},
plugins: [],
skipPopStateHandling: function e(t) {
return !(t.state && t.state.source === "swup")
}
};
var i = r({}, n, t);
this._handlers = {
animationInDone: [],
animationInStart: [],
animationOutDone: [],
animationOutStart: [],
animationSkipped: [],
clickLink: [],
contentReplaced: [],
disabled: [],
enabled: [],
openPageInNewTab: [],
pageLoaded: [],
pageRetrievedFromCache: [],
pageView: [],
popState: [],
samePage: [],
samePageWithHash: [],
serverError: [],
transitionStart: [],
transitionEnd: [],
willReplaceContent: []
};
this.scrollToElement = null;
this.preloadPromise = null;
this.options = i;
this.plugins = [];
this.transition = {};
this.delegatedListeners = {};
this.boundPopStateHandler = this.popStateHandler.bind(this);
this.cache = new u.default;
this.cache.swup = this;
this.loadPage = c.default;
this.renderPage = d.default;
this.triggerEvent = p.default;
this.on = g.default;
this.off = y.default;
this.updateTransition = b.default;
this.getAnimationPromises = P.default;
this.getPageData = k.default;
this.log = function() {};
this.use = S.use;
this.unuse = S.unuse;
this.findPlugin = S.findPlugin;
this.enable()
}
i(e, [{
key: "enable",
value: function e() {
var t = this;
if (typeof Promise === "undefined") {
console.warn("Promise is not supported");
return
}
this.delegatedListeners.click = (0, o.default)(document, this
.options.linkSelector, "click", this.linkClickHandler
.bind(this));
window.addEventListener("popstate", this.boundPopStateHandler);
var n = (0, j.getDataFromHtml)(document.documentElement
.outerHTML, this.options.containers);
n.url = n.responseURL = (0, j.getCurrentUrl)();
if (this.options.cache) {
this.cache.cacheUrl(n)
}(0, j.markSwupElements)(document.documentElement, this.options
.containers);
this.options.plugins.forEach(function(e) {
t.use(e)
});
window.history.replaceState(Object.assign({}, window.history
.state, {
url: window.location.href,
random: Math.random(),
source: "swup"
}), document.title, window.location.href);
this.triggerEvent("enabled");
document.documentElement.classList.add("swup-enabled");
this.triggerEvent("pageView")
}
}, {
key: "destroy",
value: function e() {
var t = this;
this.delegatedListeners.click.destroy();
window.removeEventListener("popstate", this
.boundPopStateHandler);
this.cache.empty();
this.options.plugins.forEach(function(e) {
t.unuse(e)
});
(0, O.queryAll)("[data-swup]").forEach(function(e) {
e.removeAttribute("data-swup")
});
this.off();
this.triggerEvent("disabled");
document.documentElement.classList.remove("swup-enabled")
}
}, {
key: "linkClickHandler",
value: function e(t) {
if (!t.metaKey && !t.ctrlKey && !t.shiftKey && !t.altKey) {
if (t.button === 0) {
this.triggerEvent("clickLink", t);
t.preventDefault();
var n = new j.Link(t.delegateTarget);
if (n.getAddress() == (0, j.getCurrentUrl)() || n
.getAddress() == "") {
if (n.getHash() != "") {
this.triggerEvent("samePageWithHash", t);
var r = document.querySelector(n.getHash());
if (r != null) {
history.replaceState({
url: n.getAddress() + n
.getHash(),
random: Math.random(),
source: "swup"
}, document.title, n.getAddress() +
n.getHash())
} else {
console.warn(
"Element for offset not found (" + n
.getHash() + ")")
}
} else {
this.triggerEvent("samePage", t)
}
} else {
if (n.getHash() != "") {
this.scrollToElement = n.getHash()
}
var i = t.delegateTarget.getAttribute(
"data-swup-transition");
this.loadPage({
url: n.getAddress(),
customTransition: i
}, false)
}
}
} else {
this.triggerEvent("openPageInNewTab", t)
}
}
}, {
key: "popStateHandler",
value: function e(t) {
if (this.options.skipPopStateHandling(t)) return;
var n = new j.Link(t.state ? t.state.url : window.location
.pathname);
if (n.getHash() !== "") {
this.scrollToElement = n.getHash()
} else {
t.preventDefault()
}
this.triggerEvent("popState", t);
this.loadPage({
url: n.getAddress()
}, t)
}
}]);
return e
}();
t.default = L
}, function(e, t, n) {
var r = n(5);
function i(e, t, n, r, i) {
var o = a.apply(this, arguments);
e.addEventListener(n, o, i);
return {
destroy: function() {
e.removeEventListener(n, o, i)
}
}
}
function a(e, t, n, i) {
return function(n) {
n.delegateTarget = r(n.target, t);
if (n.delegateTarget) {
i.call(e, n)
}
}
}
e.exports = i
}, function(e, t) {
var n = 9;
if (typeof Element !== "undefined" && !Element.prototype.matches) {
var r = Element.prototype;
r.matches = r.matchesSelector || r.mozMatchesSelector || r.msMatchesSelector || r
.oMatchesSelector || r.webkitMatchesSelector
}
function i(e, t) {
while (e && e.nodeType !== n) {
if (typeof e.matches === "function" && e.matches(t)) {
return e
}
e = e.parentNode
}
}
e.exports = i
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function() {
function e(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n];
r.enumerable = r.enumerable || false;
r.configurable = true;
if ("value" in r) r.writable = true;
Object.defineProperty(e, r.key, r)
}
}
return function(t, n, r) {
if (n) e(t.prototype, n);
if (r) e(t, r);
return t
}
}();
function i(e, t) {
if (!(e instanceof t)) {
throw new TypeError("Cannot call a class as a function")
}
}
var a = t.Cache = function() {
function e() {
i(this, e);
this.pages = {};
this.last = null
}
r(e, [{
key: "cacheUrl",
value: function e(t) {
if (t.url in this.pages === false) {
this.pages[t.url] = t
}
this.last = this.pages[t.url];
this.swup.log("Cache (" + Object.keys(this.pages).length + ")",
this.pages)
}
}, {
key: "getPage",
value: function e(t) {
return this.pages[t]
}
}, {
key: "getCurrentPage",
value: function e() {
return this.getPage(window.location.pathname + window.location
.search)
}
}, {
key: "exists",
value: function e(t) {
return t in this.pages
}
}, {
key: "empty",
value: function e() {
this.pages = {};
this.last = null;
this.swup.log("Cache cleared")
}
}, {
key: "remove",
value: function e(t) {
delete this.pages[t]
}
}]);
return e
}();
t.default = a
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = Object.assign || function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) {
if (Object.prototype.hasOwnProperty.call(n, r)) {
e[r] = n[r]
}
}
}
return e
};
var i = n(0);
var a = function e(t, n) {
var a = this;
var o = [],
s = void 0;
var u = function e() {
a.triggerEvent("animationOutStart");
document.documentElement.classList.add("is-changing");
document.documentElement.classList.add("is-leaving");
document.documentElement.classList.add("is-animating");
if (n) {
document.documentElement.classList.add("is-popstate")
}
document.documentElement.classList.add("to-" + (0, i.classify)(t.url));
o = a.getAnimationPromises("out");
Promise.all(o).then(function() {
a.triggerEvent("animationOutDone")
});
if (!n) {
var r = void 0;
if (a.scrollToElement != null) {
r = t.url + a.scrollToElement
} else {
r = t.url
}(0, i.createHistoryRecord)(r)
}
};
this.triggerEvent("transitionStart", n);
if (t.customTransition != null) {
this.updateTransition(window.location.pathname, t.url, t.customTransition);
document.documentElement.classList.add("to-" + (0, i.classify)(t.customTransition))
} else {
this.updateTransition(window.location.pathname, t.url)
}
if (!n || this.options.animateHistoryBrowsing) {
u()
} else {
this.triggerEvent("animationSkipped")
}
if (this.cache.exists(t.url)) {
s = new Promise(function(e) {
e()
});
this.triggerEvent("pageRetrievedFromCache")
} else {
if (!this.preloadPromise || this.preloadPromise.route != t.url) {
s = new Promise(function(e, n) {
(0, i.fetch)(r({}, t, {
headers: a.options.requestHeaders
}), function(r) {
if (r.status === 500) {
a.triggerEvent("serverError");
n(t.url);
return
} else {
var i = a.getPageData(r);
if (i != null) {
i.url = t.url
} else {
n(t.url);
return
}
a.cache.cacheUrl(i);
a.triggerEvent("pageLoaded")
}
e()
})
})
} else {
s = this.preloadPromise
}
}
Promise.all(o.concat([s])).then(function() {
a.renderPage(a.cache.getPage(t.url), n);
a.preloadPromise = null
}).catch(function(e) {
a.options.skipPopStateHandling = function() {
window.location = e;
return true
};
window.history.go(-1)
})
};
t.default = a
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e(t) {
var n = t.toString().toLowerCase().replace(/\s+/g, "-").replace(/\//g, "-").replace(
/[^\w\-]+/g, "").replace(/\-\-+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
if (n[0] === "/") n = n.splice(1);
if (n === "") n = "homepage";
return n
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e(t) {
window.history.pushState({
url: t || window.location.href.split(window.location.hostname)[1],
random: Math.random(),
source: "swup"
}, document.getElementsByTagName("title")[0].innerText, t || window.location
.href.split(window.location.hostname)[1])
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(e) {
return typeof e
} : function(e) {
return e && typeof Symbol === "function" && e.constructor === Symbol && e !== Symbol
.prototype ? "symbol" : typeof e
};
var i = n(1);
var a = function e(t, n) {
var a = document.createElement("html");
a.innerHTML = t;
var o = [];
var s = function e(t) {
if (a.querySelector(n[t]) == null) {
return {
v: null
}
} else {
(0, i.queryAll)(n[t]).forEach(function(e, r) {
(0, i.queryAll)(n[t], a)[r].setAttribute("data-swup", o.length);
o.push((0, i.queryAll)(n[t], a)[r].outerHTML)
})
}
};
for (var u = 0; u < n.length; u++) {
var l = s(u);
if ((typeof l === "undefined" ? "undefined" : r(l)) === "object") return l.v
}
var c = {
title: a.querySelector("title").innerText,
pageClass: a.querySelector("body").className,
originalContent: t,
blocks: o
};
a.innerHTML = "";
a = null;
return c
};
t.default = a
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = Object.assign || function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) {
if (Object.prototype.hasOwnProperty.call(n, r)) {
e[r] = n[r]
}
}
}
return e
};
var i = function e(t) {
var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var i = {
url: window.location.pathname + window.location.search,
method: "GET",
data: null,
headers: {}
};
var a = r({}, i, t);
var o = new XMLHttpRequest;
o.onreadystatechange = function() {
if (o.readyState === 4) {
if (o.status !== 500) {
n(o)
} else {
n(o)
}
}
};
o.open(a.method, a.url, true);
Object.keys(a.headers).forEach(function(e) {
o.setRequestHeader(e, a.headers[e])
});
o.send(a.data);
return o
};
t.default = i
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e() {
var t = document.createElement("div");
var n = {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd otransitionend",
transition: "transitionend"
};
for (var r in n) {
if (t.style[r] !== undefined) {
return n[r]
}
}
return false
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e() {
return window.location.pathname + window.location.search
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = n(1);
var i = function e(t, n) {
var i = 0;
var a = function e(a) {
if (t.querySelector(n[a]) == null) {
console.warn("Element " + n[a] + " is not in current page.")
} else {
(0, r.queryAll)(n[a]).forEach(function(e, o) {
(0, r.queryAll)(n[a], t)[o].setAttribute("data-swup", i);
i++
})
}
};
for (var o = 0; o < n.length; o++) {
a(o)
}
};
t.default = i
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function() {
function e(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n];
r.enumerable = r.enumerable || false;
r.configurable = true;
if ("value" in r) r.writable = true;
Object.defineProperty(e, r.key, r)
}
}
return function(t, n, r) {
if (n) e(t.prototype, n);
if (r) e(t, r);
return t
}
}();
function i(e, t) {
if (!(e instanceof t)) {
throw new TypeError("Cannot call a class as a function")
}
}
var a = function() {
function e(t) {
i(this, e);
if (t instanceof Element || t instanceof SVGElement) {
this.link = t
} else {
this.link = document.createElement("a");
this.link.href = t
}
}
r(e, [{
key: "getPath",
value: function e() {
var t = this.link.pathname;
if (t[0] !== "/") {
t = "/" + t
}
return t
}
}, {
key: "getAddress",
value: function e() {
var t = this.link.pathname + this.link.search;
if (this.link.getAttribute("xlink:href")) {
t = this.link.getAttribute("xlink:href")
}
if (t[0] !== "/") {
t = "/" + t
}
return t
}
}, {
key: "getHash",
value: function e() {
return this.link.hash
}
}]);
return e
}();
t.default = a
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = Object.assign || function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) {
if (Object.prototype.hasOwnProperty.call(n, r)) {
e[r] = n[r]
}
}
}
return e
};
var i = n(1);
var a = n(0);
var o = function e(t, n) {
var i = this;
document.documentElement.classList.remove("is-leaving");
var o = new a.Link(t.responseURL);
if (window.location.pathname !== o.getPath()) {
window.history.replaceState({
url: o.getPath(),
random: Math.random(),
source: "swup"
}, document.title, o.getPath());
this.cache.cacheUrl(r({}, t, {
url: o.getPath()
}))
}
if (!n || this.options.animateHistoryBrowsing) {
document.documentElement.classList.add("is-rendering")
}
this.triggerEvent("willReplaceContent", n);
for (var s = 0; s < t.blocks.length; s++) {
document.body.querySelector('[data-swup="' + s + '"]').outerHTML = t.blocks[s]
}
document.title = t.title;
this.triggerEvent("contentReplaced", n);
this.triggerEvent("pageView", n);
if (!this.options.cache) {
this.cache.empty()
}
setTimeout(function() {
if (!n || i.options.animateHistoryBrowsing) {
i.triggerEvent("animationInStart");
document.documentElement.classList.remove("is-animating")
}
}, 10);
var u = this.getAnimationPromises("in");
if (!n || this.options.animateHistoryBrowsing) {
Promise.all(u).then(function() {
i.triggerEvent("animationInDone");
i.triggerEvent("transitionEnd", n);
document.documentElement.className.split(" ").forEach(function(e) {
if (new RegExp("^to-").test(e) || e === "is-changing" ||
e === "is-rendering" || e === "is-popstate") {
document.documentElement.classList.remove(e)
}
})
})
} else {
this.triggerEvent("transitionEnd", n)
}
this.scrollToElement = null
};
t.default = o
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e(t, n) {
this._handlers[t].forEach(function(e) {
try {
e(n)
} catch (e) {
console.error(e)
}
});
var r = new CustomEvent("swup:" + t, {
detail: t
});
document.dispatchEvent(r)
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e(t, n) {
if (this._handlers[t]) {
this._handlers[t].push(n)
} else {
console.warn("Unsupported event " + t + ".")
}
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e(t, n) {
var r = this;
if (t != null) {
if (n != null) {
if (this._handlers[t] && this._handlers[t].filter(function(e) {
return e === n
}).length) {
var i = this._handlers[t].filter(function(e) {
return e === n
})[0];
var a = this._handlers[t].indexOf(i);
if (a > -1) {
this._handlers[t].splice(a, 1)
}
} else {
console.warn("Handler for event '" + t + "' no found.")
}
} else {
this._handlers[t] = []
}
} else {
Object.keys(this._handlers).forEach(function(e) {
r._handlers[e] = []
})
}
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = function e(t, n, r) {
this.transition = {
from: t,
to: n,
custom: r
}
};
t.default = r
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = n(1);
var i = n(0);
var a = function e() {
var t = [];
var n = (0, r.queryAll)(this.options.animationSelector);
n.forEach(function(e) {
var n = new Promise(function(t) {
e.addEventListener((0, i.transitionEnd)(), function(n) {
if (e == n.target) {
t()
}
})
});
t.push(n)
});
return t
};
t.default = a
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = n(0);
var i = function e(t) {
var n = t.responseText;
var i = (0, r.getDataFromHtml)(n, this.options.containers);
if (i) {
i.responseURL = t.responseURL ? t.responseURL : window.location.href
} else {
console.warn("Received page is invalid.");
return null
}
return i
};
t.default = i
}, function(e, t, n) {
"use strict";
Object.defineProperty(t, "__esModule", {
value: true
});
var r = t.use = function e(t) {
if (!t.isSwupPlugin) {
console.warn("Not swup plugin instance " + t + ".");
return
}
this.plugins.push(t);
t.swup = this;
if (typeof t._beforeMount === "function") {
t._beforeMount()
}
t.mount();
return this.plugins
};
var i = t.unuse = function e(t) {
var n = void 0;
if (typeof t === "string") {
n = this.plugins.find(function(e) {
return t === e.name
})
} else {
n = t
}
if (!n) {
console.warn("No such plugin.");
return
}
n.unmount();
if (typeof n._afterUnmount === "function") {
n._afterUnmount()
}
var r = this.plugins.indexOf(n);
this.plugins.splice(r, 1);
return this.plugins
};
var a = t.findPlugin = function e(t) {
return this.plugins.find(function(e) {
return t === e.name
})
}
}])
});