(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 }) } }]) });