swup 2.0.17 → 2.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/swup.js +61 -29
- package/dist/swup.min.js +1 -1
- package/lib/helpers/cleanupAnimationClasses.js +18 -0
- package/lib/helpers/index.js +7 -2
- package/lib/index.js +8 -0
- package/lib/modules/renderPage.js +4 -9
- package/package.json +1 -1
package/dist/swup.js
CHANGED
|
@@ -104,7 +104,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
104
104
|
Object.defineProperty(exports, "__esModule", {
|
|
105
105
|
value: true
|
|
106
106
|
});
|
|
107
|
-
exports.Link = exports.markSwupElements = exports.normalizeUrl = exports.getCurrentUrl = exports.transitionProperty = exports.transitionEnd = exports.fetch = exports.getDataFromHtml = exports.createHistoryRecord = exports.classify = undefined;
|
|
107
|
+
exports.cleanupAnimationClasses = exports.Link = exports.markSwupElements = exports.normalizeUrl = exports.getCurrentUrl = exports.transitionProperty = exports.transitionEnd = exports.fetch = exports.getDataFromHtml = exports.createHistoryRecord = exports.classify = undefined;
|
|
108
108
|
|
|
109
109
|
var _classify = __webpack_require__(7);
|
|
110
110
|
|
|
@@ -146,6 +146,10 @@ var _Link = __webpack_require__(2);
|
|
|
146
146
|
|
|
147
147
|
var _Link2 = _interopRequireDefault(_Link);
|
|
148
148
|
|
|
149
|
+
var _cleanupAnimationClasses = __webpack_require__(16);
|
|
150
|
+
|
|
151
|
+
var _cleanupAnimationClasses2 = _interopRequireDefault(_cleanupAnimationClasses);
|
|
152
|
+
|
|
149
153
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
150
154
|
|
|
151
155
|
var classify = exports.classify = _classify2.default;
|
|
@@ -158,6 +162,7 @@ var getCurrentUrl = exports.getCurrentUrl = _getCurrentUrl2.default;
|
|
|
158
162
|
var normalizeUrl = exports.normalizeUrl = _normalizeUrl2.default;
|
|
159
163
|
var markSwupElements = exports.markSwupElements = _markSwupElements2.default;
|
|
160
164
|
var Link = exports.Link = _Link2.default;
|
|
165
|
+
var cleanupAnimationClasses = exports.cleanupAnimationClasses = _cleanupAnimationClasses2.default;
|
|
161
166
|
|
|
162
167
|
/***/ }),
|
|
163
168
|
/* 1 */
|
|
@@ -300,43 +305,43 @@ var _Cache = __webpack_require__(6);
|
|
|
300
305
|
|
|
301
306
|
var _Cache2 = _interopRequireDefault(_Cache);
|
|
302
307
|
|
|
303
|
-
var _loadPage = __webpack_require__(
|
|
308
|
+
var _loadPage = __webpack_require__(17);
|
|
304
309
|
|
|
305
310
|
var _loadPage2 = _interopRequireDefault(_loadPage);
|
|
306
311
|
|
|
307
|
-
var _renderPage = __webpack_require__(
|
|
312
|
+
var _renderPage = __webpack_require__(18);
|
|
308
313
|
|
|
309
314
|
var _renderPage2 = _interopRequireDefault(_renderPage);
|
|
310
315
|
|
|
311
|
-
var _triggerEvent = __webpack_require__(
|
|
316
|
+
var _triggerEvent = __webpack_require__(19);
|
|
312
317
|
|
|
313
318
|
var _triggerEvent2 = _interopRequireDefault(_triggerEvent);
|
|
314
319
|
|
|
315
|
-
var _on = __webpack_require__(
|
|
320
|
+
var _on = __webpack_require__(20);
|
|
316
321
|
|
|
317
322
|
var _on2 = _interopRequireDefault(_on);
|
|
318
323
|
|
|
319
|
-
var _off = __webpack_require__(
|
|
324
|
+
var _off = __webpack_require__(21);
|
|
320
325
|
|
|
321
326
|
var _off2 = _interopRequireDefault(_off);
|
|
322
327
|
|
|
323
|
-
var _updateTransition = __webpack_require__(
|
|
328
|
+
var _updateTransition = __webpack_require__(22);
|
|
324
329
|
|
|
325
330
|
var _updateTransition2 = _interopRequireDefault(_updateTransition);
|
|
326
331
|
|
|
327
|
-
var _getAnchorElement = __webpack_require__(
|
|
332
|
+
var _getAnchorElement = __webpack_require__(23);
|
|
328
333
|
|
|
329
334
|
var _getAnchorElement2 = _interopRequireDefault(_getAnchorElement);
|
|
330
335
|
|
|
331
|
-
var _getAnimationPromises = __webpack_require__(
|
|
336
|
+
var _getAnimationPromises = __webpack_require__(24);
|
|
332
337
|
|
|
333
338
|
var _getAnimationPromises2 = _interopRequireDefault(_getAnimationPromises);
|
|
334
339
|
|
|
335
|
-
var _getPageData = __webpack_require__(
|
|
340
|
+
var _getPageData = __webpack_require__(25);
|
|
336
341
|
|
|
337
342
|
var _getPageData2 = _interopRequireDefault(_getPageData);
|
|
338
343
|
|
|
339
|
-
var _plugins = __webpack_require__(
|
|
344
|
+
var _plugins = __webpack_require__(26);
|
|
340
345
|
|
|
341
346
|
var _utils = __webpack_require__(1);
|
|
342
347
|
|
|
@@ -425,6 +430,8 @@ var Swup = function () {
|
|
|
425
430
|
this.use = _plugins.use;
|
|
426
431
|
this.unuse = _plugins.unuse;
|
|
427
432
|
this.findPlugin = _plugins.findPlugin;
|
|
433
|
+
this.getCurrentUrl = _helpers.getCurrentUrl;
|
|
434
|
+
this.cleanupAnimationClasses = _helpers.cleanupAnimationClasses;
|
|
428
435
|
|
|
429
436
|
// enable swup
|
|
430
437
|
this.enable();
|
|
@@ -568,6 +575,12 @@ var Swup = function () {
|
|
|
568
575
|
event.preventDefault();
|
|
569
576
|
}
|
|
570
577
|
this.triggerEvent('popState', event);
|
|
578
|
+
|
|
579
|
+
if (!this.options.animateHistoryBrowsing) {
|
|
580
|
+
document.documentElement.classList.remove('is-animating');
|
|
581
|
+
(0, _helpers.cleanupAnimationClasses)();
|
|
582
|
+
}
|
|
583
|
+
|
|
571
584
|
this.loadPage({ url: link.getAddress() }, event);
|
|
572
585
|
}
|
|
573
586
|
}]);
|
|
@@ -998,6 +1011,30 @@ exports.default = markSwupElements;
|
|
|
998
1011
|
"use strict";
|
|
999
1012
|
|
|
1000
1013
|
|
|
1014
|
+
Object.defineProperty(exports, "__esModule", {
|
|
1015
|
+
value: true
|
|
1016
|
+
});
|
|
1017
|
+
var cleanupAnimationClasses = function cleanupAnimationClasses() {
|
|
1018
|
+
document.documentElement.className.split(' ').forEach(function (classItem) {
|
|
1019
|
+
if (
|
|
1020
|
+
// remove "to-{page}" classes
|
|
1021
|
+
new RegExp('^to-').test(classItem) ||
|
|
1022
|
+
// remove all other classes
|
|
1023
|
+
classItem === 'is-changing' || classItem === 'is-rendering' || classItem === 'is-popstate') {
|
|
1024
|
+
document.documentElement.classList.remove(classItem);
|
|
1025
|
+
}
|
|
1026
|
+
});
|
|
1027
|
+
};
|
|
1028
|
+
|
|
1029
|
+
exports.default = cleanupAnimationClasses;
|
|
1030
|
+
|
|
1031
|
+
/***/ }),
|
|
1032
|
+
/* 17 */
|
|
1033
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1034
|
+
|
|
1035
|
+
"use strict";
|
|
1036
|
+
|
|
1037
|
+
|
|
1001
1038
|
Object.defineProperty(exports, "__esModule", {
|
|
1002
1039
|
value: true
|
|
1003
1040
|
});
|
|
@@ -1116,7 +1153,7 @@ var loadPage = function loadPage(data, popstate) {
|
|
|
1116
1153
|
exports.default = loadPage;
|
|
1117
1154
|
|
|
1118
1155
|
/***/ }),
|
|
1119
|
-
/*
|
|
1156
|
+
/* 18 */
|
|
1120
1157
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1121
1158
|
|
|
1122
1159
|
"use strict";
|
|
@@ -1135,6 +1172,9 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
1135
1172
|
|
|
1136
1173
|
document.documentElement.classList.remove('is-leaving');
|
|
1137
1174
|
|
|
1175
|
+
var isCurrentPage = this.getCurrentUrl() === page.url;
|
|
1176
|
+
if (!isCurrentPage) return;
|
|
1177
|
+
|
|
1138
1178
|
// replace state in case the url was redirected
|
|
1139
1179
|
var url = new _helpers.Link(page.responseURL).getPath();
|
|
1140
1180
|
if (window.location.pathname !== url) {
|
|
@@ -1154,15 +1194,12 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
1154
1194
|
}
|
|
1155
1195
|
|
|
1156
1196
|
this.triggerEvent('willReplaceContent', popstate);
|
|
1157
|
-
|
|
1158
1197
|
// replace blocks
|
|
1159
1198
|
for (var i = 0; i < page.blocks.length; i++) {
|
|
1160
1199
|
document.body.querySelector('[data-swup="' + i + '"]').outerHTML = page.blocks[i];
|
|
1161
1200
|
}
|
|
1162
|
-
|
|
1163
1201
|
// set title
|
|
1164
1202
|
document.title = page.title;
|
|
1165
|
-
|
|
1166
1203
|
this.triggerEvent('contentReplaced', popstate);
|
|
1167
1204
|
this.triggerEvent('pageView', popstate);
|
|
1168
1205
|
|
|
@@ -1185,12 +1222,7 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
1185
1222
|
Promise.all(animationPromises).then(function () {
|
|
1186
1223
|
_this.triggerEvent('animationInDone');
|
|
1187
1224
|
_this.triggerEvent('transitionEnd', popstate);
|
|
1188
|
-
|
|
1189
|
-
document.documentElement.className.split(' ').forEach(function (classItem) {
|
|
1190
|
-
if (new RegExp('^to-').test(classItem) || classItem === 'is-changing' || classItem === 'is-rendering' || classItem === 'is-popstate') {
|
|
1191
|
-
document.documentElement.classList.remove(classItem);
|
|
1192
|
-
}
|
|
1193
|
-
});
|
|
1225
|
+
_this.cleanupAnimationClasses();
|
|
1194
1226
|
});
|
|
1195
1227
|
} else {
|
|
1196
1228
|
this.triggerEvent('transitionEnd', popstate);
|
|
@@ -1203,7 +1235,7 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
1203
1235
|
exports.default = renderPage;
|
|
1204
1236
|
|
|
1205
1237
|
/***/ }),
|
|
1206
|
-
/*
|
|
1238
|
+
/* 19 */
|
|
1207
1239
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1208
1240
|
|
|
1209
1241
|
"use strict";
|
|
@@ -1230,7 +1262,7 @@ var triggerEvent = function triggerEvent(eventName, originalEvent) {
|
|
|
1230
1262
|
exports.default = triggerEvent;
|
|
1231
1263
|
|
|
1232
1264
|
/***/ }),
|
|
1233
|
-
/*
|
|
1265
|
+
/* 20 */
|
|
1234
1266
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1235
1267
|
|
|
1236
1268
|
"use strict";
|
|
@@ -1250,7 +1282,7 @@ var on = function on(event, handler) {
|
|
|
1250
1282
|
exports.default = on;
|
|
1251
1283
|
|
|
1252
1284
|
/***/ }),
|
|
1253
|
-
/*
|
|
1285
|
+
/* 21 */
|
|
1254
1286
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1255
1287
|
|
|
1256
1288
|
"use strict";
|
|
@@ -1290,7 +1322,7 @@ var off = function off(event, handler) {
|
|
|
1290
1322
|
exports.default = off;
|
|
1291
1323
|
|
|
1292
1324
|
/***/ }),
|
|
1293
|
-
/*
|
|
1325
|
+
/* 22 */
|
|
1294
1326
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1295
1327
|
|
|
1296
1328
|
"use strict";
|
|
@@ -1311,7 +1343,7 @@ var updateTransition = function updateTransition(from, to, custom) {
|
|
|
1311
1343
|
exports.default = updateTransition;
|
|
1312
1344
|
|
|
1313
1345
|
/***/ }),
|
|
1314
|
-
/*
|
|
1346
|
+
/* 23 */
|
|
1315
1347
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1316
1348
|
|
|
1317
1349
|
"use strict";
|
|
@@ -1342,7 +1374,7 @@ var getAnchorElement = function getAnchorElement(hash) {
|
|
|
1342
1374
|
exports.default = getAnchorElement;
|
|
1343
1375
|
|
|
1344
1376
|
/***/ }),
|
|
1345
|
-
/*
|
|
1377
|
+
/* 24 */
|
|
1346
1378
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1347
1379
|
|
|
1348
1380
|
"use strict";
|
|
@@ -1391,7 +1423,7 @@ var getAnimationPromises = function getAnimationPromises() {
|
|
|
1391
1423
|
exports.default = getAnimationPromises;
|
|
1392
1424
|
|
|
1393
1425
|
/***/ }),
|
|
1394
|
-
/*
|
|
1426
|
+
/* 25 */
|
|
1395
1427
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1396
1428
|
|
|
1397
1429
|
"use strict";
|
|
@@ -1423,7 +1455,7 @@ var getPageData = function getPageData(request) {
|
|
|
1423
1455
|
exports.default = getPageData;
|
|
1424
1456
|
|
|
1425
1457
|
/***/ }),
|
|
1426
|
-
/*
|
|
1458
|
+
/* 26 */
|
|
1427
1459
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1428
1460
|
|
|
1429
1461
|
"use strict";
|
package/dist/swup.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(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=3)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});t.Link=t.markSwupElements=t.normalizeUrl=t.getCurrentUrl=t.transitionProperty=t.transitionEnd=t.fetch=t.getDataFromHtml=t.createHistoryRecord=t.classify=undefined;var r=n(7);var i=_(r);var a=n(8);var o=_(a);var s=n(9);var u=_(s);var l=n(10);var c=_(l);var f=n(11);var d=_(f);var h=n(12);var p=_(h);var v=n(13);var g=_(v);var m=n(14);var y=_(m);var w=n(15);var b=_(w);var E=n(2);var P=_(E);function _(e){return e&&e.__esModule?e:{default:e}}var k=t.classify=i.default;var S=t.createHistoryRecord=o.default;var O=t.getDataFromHtml=u.default;var j=t.fetch=c.default;var M=t.transitionEnd=d.default;var H=t.transitionProperty=p.default;var L=t.getCurrentUrl=g.default;var T=t.normalizeUrl=y.default;var A=t.markSwupElements=b.default;var C=t.Link=P.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))};var a=t.escapeCssIdentifier=function e(t){if(window.CSS&&window.CSS.escape){return CSS.escape(t)}else{return t}}},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";var r=n(4);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(5);var o=L(a);var s=n(6);var u=L(s);var l=n(16);var c=L(l);var f=n(17);var d=L(f);var h=n(18);var p=L(h);var v=n(19);var g=L(v);var m=n(20);var y=L(m);var w=n(21);var b=L(w);var E=n(22);var P=L(E);var _=n(23);var k=L(_);var S=n(24);var O=L(S);var j=n(25);var M=n(1);var H=n(0);function L(e){return e&&e.__esModule?e:{default:e}}function T(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var A=function(){function e(t){T(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=k.default;this.getPageData=O.default;this.getAnchorElement=P.default;this.log=function(){};this.use=j.use;this.unuse=j.unuse;this.findPlugin=j.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);if(this.options.cache){var n=(0,H.getDataFromHtml)(document.documentElement.outerHTML,this.options.containers);n.url=n.responseURL=(0,H.getCurrentUrl)();this.cache.cacheUrl(n)}(0,H.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,M.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 H.Link(t.delegateTarget);if(n.getAddress()==(0,H.getCurrentUrl)()||n.getAddress()==""){if(n.getHash()!=""){this.triggerEvent("samePageWithHash",t);var r=(0,P.default)(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 H.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=A},function(e,t,n){"use strict";n.r(t);const r=new WeakMap;function i(e,t,n,i){var a,o;if(!e&&!r.has(t)){return false}const s=(a=r.get(t))!==null&&a!==void 0?a:new WeakMap;r.set(t,s);if(!e&&!r.has(t)){return false}const u=(o=s.get(n))!==null&&o!==void 0?o:new Set;s.set(n,u);const l=u.has(i);if(e){u.add(i)}else{u.delete(i)}return l&&e}function a(e){return typeof e.addEventListener==="function"}function o(e,t){let n=e.target;if(n instanceof Text){n=n.parentElement}if(n instanceof Element&&e.currentTarget instanceof Element){const r=n.closest(t);if(r&&e.currentTarget.contains(r)){return r}}}function s(e,t,n,r,u){if(typeof e==="string"){e=document.querySelectorAll(e)}if(!a(e)){const i=Array.prototype.map.call(e,e=>s(e,t,n,r,u));return{destroy(){for(const e of i){e.destroy()}}}}const l=e instanceof Document?e.documentElement:e;const c=Boolean(typeof u==="object"?u.capture:u);const f=e=>{const n=o(e,t);if(n){e.delegateTarget=n;r.call(l,e)}};if(typeof u==="object"){delete u.once}const d=JSON.stringify({selector:t,type:n,capture:c});const h=i(true,l,r,d);const p={destroy(){l.removeEventListener(n,f,u);i(false,l,r,d)}};if(!h){l.addEventListener(n,f,u)}return p}t["default"]=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});t.Cache=undefined;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}}();var i=n(0);function a(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var o=t.Cache=function(){function e(){a(this,e);this.pages={};this.last=null}r(e,[{key:"cacheUrl",value:function e(t){t.url=(0,i.normalizeUrl)(t.url);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){t=(0,i.normalizeUrl)(t);return this.pages[t]}},{key:"getCurrentPage",value:function e(){return this.getPage((0,i.getCurrentUrl)())}},{key:"exists",value:function e(t){t=(0,i.normalizeUrl)(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=o},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=n(1);var i=function e(t,n){var i=document.createElement("html");i.innerHTML=t;var a=[];n.forEach(function(e){if((0,r.query)(e,i)==null){console.error("Container "+e+" not found on page.");return null}else{if((0,r.queryAll)(e).length!==(0,r.queryAll)(e,i).length){console.warn("Mismatched number of containers found on new page.")}(0,r.queryAll)(e).forEach(function(t,n){(0,r.queryAll)(e,i)[n].setAttribute("data-swup",a.length);a.push((0,r.queryAll)(e,i)[n].outerHTML)})}});var o={title:i.querySelector("title").innerText,pageClass:i.querySelector("body").className,originalContent:t,blocks:a};i.innerHTML="";i=null;return o};t.default=i},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(){if(window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined){return"webkitTransitionEnd"}else{return"transitionend"}};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function e(){if(window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined){return"WebkitTransition"}else{return"transition"}};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(2);var i=a(r);function a(e){return e&&e.__esModule?e:{default:e}}var o=function e(t){return new i.default(t).getAddress()};t.default=o},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;n.forEach(function(e){if((0,r.query)(e,t)==null){console.error("Container "+e+" not found on page.")}else{(0,r.queryAll)(e).forEach(function(n,a){(0,r.queryAll)(e,t)[a].setAttribute("data-swup",i);i++})}})};t.default=i},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=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;document.documentElement.classList.remove("is-leaving");var o=new i.Link(t.responseURL).getPath();if(window.location.pathname!==o){window.history.replaceState({url:o,random:Math.random(),source:"swup"},document.title,o);this.cache.cacheUrl(r({},t,{url:o}))}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||a.options.animateHistoryBrowsing){a.triggerEvent("animationInStart");document.documentElement.classList.remove("is-animating")}},10);if(!n||this.options.animateHistoryBrowsing){var u=this.getAnimationPromises("in");Promise.all(u).then(function(){a.triggerEvent("animationInDone");a.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=a},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=function e(t){if(!t){return null}if(t.charAt(0)==="#"){t=t.substring(1)}t=decodeURIComponent(t);t=(0,r.escapeCssIdentifier)(t);return(0,r.query)("#"+t)||(0,r.query)("a[name='"+t+"']")};t.default=i},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=this;var n=[];var a=(0,r.queryAll)(this.options.animationSelector,document.body);if(!a.length){console.error("No animated elements found by selector "+this.options.animationSelector);return[Promise.resolve()]}a.forEach(function(e){var r=window.getComputedStyle(e)[(0,i.transitionProperty)()+"Duration"];if(!r||r=="0s"){console.error("No CSS transition duration defined for element of selector "+t.options.animationSelector);n.push(Promise.resolve());return}var a=new Promise(function(t){e.addEventListener((0,i.transitionEnd)(),function(n){if(e==n.target){t()}})});n.push(a)});return n};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})}}])});
|
|
1
|
+
(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=3)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});t.cleanupAnimationClasses=t.Link=t.markSwupElements=t.normalizeUrl=t.getCurrentUrl=t.transitionProperty=t.transitionEnd=t.fetch=t.getDataFromHtml=t.createHistoryRecord=t.classify=undefined;var r=n(7);var i=S(r);var a=n(8);var o=S(a);var s=n(9);var u=S(s);var l=n(10);var c=S(l);var f=n(11);var d=S(f);var h=n(12);var p=S(h);var v=n(13);var g=S(v);var m=n(14);var y=S(m);var w=n(15);var b=S(w);var E=n(2);var P=S(E);var _=n(16);var k=S(_);function S(e){return e&&e.__esModule?e:{default:e}}var O=t.classify=i.default;var j=t.createHistoryRecord=o.default;var M=t.getDataFromHtml=u.default;var H=t.fetch=c.default;var L=t.transitionEnd=d.default;var C=t.transitionProperty=p.default;var A=t.getCurrentUrl=g.default;var T=t.normalizeUrl=y.default;var q=t.markSwupElements=b.default;var U=t.Link=P.default;var x=t.cleanupAnimationClasses=k.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))};var a=t.escapeCssIdentifier=function e(t){if(window.CSS&&window.CSS.escape){return CSS.escape(t)}else{return t}}},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";var r=n(4);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(5);var o=L(a);var s=n(6);var u=L(s);var l=n(17);var c=L(l);var f=n(18);var d=L(f);var h=n(19);var p=L(h);var v=n(20);var g=L(v);var m=n(21);var y=L(m);var w=n(22);var b=L(w);var E=n(23);var P=L(E);var _=n(24);var k=L(_);var S=n(25);var O=L(S);var j=n(26);var M=n(1);var H=n(0);function L(e){return e&&e.__esModule?e:{default:e}}function C(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var A=function(){function e(t){C(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=k.default;this.getPageData=O.default;this.getAnchorElement=P.default;this.log=function(){};this.use=j.use;this.unuse=j.unuse;this.findPlugin=j.findPlugin;this.getCurrentUrl=H.getCurrentUrl;this.cleanupAnimationClasses=H.cleanupAnimationClasses;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);if(this.options.cache){var n=(0,H.getDataFromHtml)(document.documentElement.outerHTML,this.options.containers);n.url=n.responseURL=(0,H.getCurrentUrl)();this.cache.cacheUrl(n)}(0,H.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,M.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 H.Link(t.delegateTarget);if(n.getAddress()==(0,H.getCurrentUrl)()||n.getAddress()==""){if(n.getHash()!=""){this.triggerEvent("samePageWithHash",t);var r=(0,P.default)(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 H.Link(t.state?t.state.url:window.location.pathname);if(n.getHash()!==""){this.scrollToElement=n.getHash()}else{t.preventDefault()}this.triggerEvent("popState",t);if(!this.options.animateHistoryBrowsing){document.documentElement.classList.remove("is-animating");(0,H.cleanupAnimationClasses)()}this.loadPage({url:n.getAddress()},t)}}]);return e}();t.default=A},function(e,t,n){"use strict";n.r(t);const r=new WeakMap;function i(e,t,n,i){var a,o;if(!e&&!r.has(t)){return false}const s=(a=r.get(t))!==null&&a!==void 0?a:new WeakMap;r.set(t,s);if(!e&&!r.has(t)){return false}const u=(o=s.get(n))!==null&&o!==void 0?o:new Set;s.set(n,u);const l=u.has(i);if(e){u.add(i)}else{u.delete(i)}return l&&e}function a(e){return typeof e.addEventListener==="function"}function o(e,t){let n=e.target;if(n instanceof Text){n=n.parentElement}if(n instanceof Element&&e.currentTarget instanceof Element){const r=n.closest(t);if(r&&e.currentTarget.contains(r)){return r}}}function s(e,t,n,r,u){if(typeof e==="string"){e=document.querySelectorAll(e)}if(!a(e)){const i=Array.prototype.map.call(e,e=>s(e,t,n,r,u));return{destroy(){for(const e of i){e.destroy()}}}}const l=e instanceof Document?e.documentElement:e;const c=Boolean(typeof u==="object"?u.capture:u);const f=e=>{const n=o(e,t);if(n){e.delegateTarget=n;r.call(l,e)}};if(typeof u==="object"){delete u.once}const d=JSON.stringify({selector:t,type:n,capture:c});const h=i(true,l,r,d);const p={destroy(){l.removeEventListener(n,f,u);i(false,l,r,d)}};if(!h){l.addEventListener(n,f,u)}return p}t["default"]=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});t.Cache=undefined;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}}();var i=n(0);function a(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var o=t.Cache=function(){function e(){a(this,e);this.pages={};this.last=null}r(e,[{key:"cacheUrl",value:function e(t){t.url=(0,i.normalizeUrl)(t.url);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){t=(0,i.normalizeUrl)(t);return this.pages[t]}},{key:"getCurrentPage",value:function e(){return this.getPage((0,i.getCurrentUrl)())}},{key:"exists",value:function e(t){t=(0,i.normalizeUrl)(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=o},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=n(1);var i=function e(t,n){var i=document.createElement("html");i.innerHTML=t;var a=[];n.forEach(function(e){if((0,r.query)(e,i)==null){console.error("Container "+e+" not found on page.");return null}else{if((0,r.queryAll)(e).length!==(0,r.queryAll)(e,i).length){console.warn("Mismatched number of containers found on new page.")}(0,r.queryAll)(e).forEach(function(t,n){(0,r.queryAll)(e,i)[n].setAttribute("data-swup",a.length);a.push((0,r.queryAll)(e,i)[n].outerHTML)})}});var o={title:i.querySelector("title").innerText,pageClass:i.querySelector("body").className,originalContent:t,blocks:a};i.innerHTML="";i=null;return o};t.default=i},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(){if(window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined){return"webkitTransitionEnd"}else{return"transitionend"}};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function e(){if(window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined){return"WebkitTransition"}else{return"transition"}};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(2);var i=a(r);function a(e){return e&&e.__esModule?e:{default:e}}var o=function e(t){return new i.default(t).getAddress()};t.default=o},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;n.forEach(function(e){if((0,r.query)(e,t)==null){console.error("Container "+e+" not found on page.")}else{(0,r.queryAll)(e).forEach(function(n,a){(0,r.queryAll)(e,t)[a].setAttribute("data-swup",i);i++})}})};t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function e(){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)}})};t.default=r},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=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;document.documentElement.classList.remove("is-leaving");var o=this.getCurrentUrl()===t.url;if(!o)return;var s=new i.Link(t.responseURL).getPath();if(window.location.pathname!==s){window.history.replaceState({url:s,random:Math.random(),source:"swup"},document.title,s);this.cache.cacheUrl(r({},t,{url:s}))}if(!n||this.options.animateHistoryBrowsing){document.documentElement.classList.add("is-rendering")}this.triggerEvent("willReplaceContent",n);for(var u=0;u<t.blocks.length;u++){document.body.querySelector('[data-swup="'+u+'"]').outerHTML=t.blocks[u]}document.title=t.title;this.triggerEvent("contentReplaced",n);this.triggerEvent("pageView",n);if(!this.options.cache){this.cache.empty()}setTimeout(function(){if(!n||a.options.animateHistoryBrowsing){a.triggerEvent("animationInStart");document.documentElement.classList.remove("is-animating")}},10);if(!n||this.options.animateHistoryBrowsing){var l=this.getAnimationPromises("in");Promise.all(l).then(function(){a.triggerEvent("animationInDone");a.triggerEvent("transitionEnd",n);a.cleanupAnimationClasses()})}else{this.triggerEvent("transitionEnd",n)}this.scrollToElement=null};t.default=a},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=function e(t){if(!t){return null}if(t.charAt(0)==="#"){t=t.substring(1)}t=decodeURIComponent(t);t=(0,r.escapeCssIdentifier)(t);return(0,r.query)("#"+t)||(0,r.query)("a[name='"+t+"']")};t.default=i},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=this;var n=[];var a=(0,r.queryAll)(this.options.animationSelector,document.body);if(!a.length){console.error("No animated elements found by selector "+this.options.animationSelector);return[Promise.resolve()]}a.forEach(function(e){var r=window.getComputedStyle(e)[(0,i.transitionProperty)()+"Duration"];if(!r||r=="0s"){console.error("No CSS transition duration defined for element of selector "+t.options.animationSelector);n.push(Promise.resolve());return}var a=new Promise(function(t){e.addEventListener((0,i.transitionEnd)(),function(n){if(e==n.target){t()}})});n.push(a)});return n};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})}}])});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var cleanupAnimationClasses = function cleanupAnimationClasses() {
|
|
7
|
+
document.documentElement.className.split(' ').forEach(function (classItem) {
|
|
8
|
+
if (
|
|
9
|
+
// remove "to-{page}" classes
|
|
10
|
+
new RegExp('^to-').test(classItem) ||
|
|
11
|
+
// remove all other classes
|
|
12
|
+
classItem === 'is-changing' || classItem === 'is-rendering' || classItem === 'is-popstate') {
|
|
13
|
+
document.documentElement.classList.remove(classItem);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.default = cleanupAnimationClasses;
|
package/lib/helpers/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.Link = exports.markSwupElements = exports.normalizeUrl = exports.getCurrentUrl = exports.transitionProperty = exports.transitionEnd = exports.fetch = exports.getDataFromHtml = exports.createHistoryRecord = exports.classify = undefined;
|
|
6
|
+
exports.cleanupAnimationClasses = exports.Link = exports.markSwupElements = exports.normalizeUrl = exports.getCurrentUrl = exports.transitionProperty = exports.transitionEnd = exports.fetch = exports.getDataFromHtml = exports.createHistoryRecord = exports.classify = undefined;
|
|
7
7
|
|
|
8
8
|
var _classify = require('./classify');
|
|
9
9
|
|
|
@@ -45,6 +45,10 @@ var _Link = require('./Link');
|
|
|
45
45
|
|
|
46
46
|
var _Link2 = _interopRequireDefault(_Link);
|
|
47
47
|
|
|
48
|
+
var _cleanupAnimationClasses = require('./cleanupAnimationClasses');
|
|
49
|
+
|
|
50
|
+
var _cleanupAnimationClasses2 = _interopRequireDefault(_cleanupAnimationClasses);
|
|
51
|
+
|
|
48
52
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
49
53
|
|
|
50
54
|
var classify = exports.classify = _classify2.default;
|
|
@@ -56,4 +60,5 @@ var transitionProperty = exports.transitionProperty = _transitionProperty2.defau
|
|
|
56
60
|
var getCurrentUrl = exports.getCurrentUrl = _getCurrentUrl2.default;
|
|
57
61
|
var normalizeUrl = exports.normalizeUrl = _normalizeUrl2.default;
|
|
58
62
|
var markSwupElements = exports.markSwupElements = _markSwupElements2.default;
|
|
59
|
-
var Link = exports.Link = _Link2.default;
|
|
63
|
+
var Link = exports.Link = _Link2.default;
|
|
64
|
+
var cleanupAnimationClasses = exports.cleanupAnimationClasses = _cleanupAnimationClasses2.default;
|
package/lib/index.js
CHANGED
|
@@ -144,6 +144,8 @@ var Swup = function () {
|
|
|
144
144
|
this.use = _plugins.use;
|
|
145
145
|
this.unuse = _plugins.unuse;
|
|
146
146
|
this.findPlugin = _plugins.findPlugin;
|
|
147
|
+
this.getCurrentUrl = _helpers.getCurrentUrl;
|
|
148
|
+
this.cleanupAnimationClasses = _helpers.cleanupAnimationClasses;
|
|
147
149
|
|
|
148
150
|
// enable swup
|
|
149
151
|
this.enable();
|
|
@@ -287,6 +289,12 @@ var Swup = function () {
|
|
|
287
289
|
event.preventDefault();
|
|
288
290
|
}
|
|
289
291
|
this.triggerEvent('popState', event);
|
|
292
|
+
|
|
293
|
+
if (!this.options.animateHistoryBrowsing) {
|
|
294
|
+
document.documentElement.classList.remove('is-animating');
|
|
295
|
+
(0, _helpers.cleanupAnimationClasses)();
|
|
296
|
+
}
|
|
297
|
+
|
|
290
298
|
this.loadPage({ url: link.getAddress() }, event);
|
|
291
299
|
}
|
|
292
300
|
}]);
|
|
@@ -13,6 +13,9 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
13
13
|
|
|
14
14
|
document.documentElement.classList.remove('is-leaving');
|
|
15
15
|
|
|
16
|
+
var isCurrentPage = this.getCurrentUrl() === page.url;
|
|
17
|
+
if (!isCurrentPage) return;
|
|
18
|
+
|
|
16
19
|
// replace state in case the url was redirected
|
|
17
20
|
var url = new _helpers.Link(page.responseURL).getPath();
|
|
18
21
|
if (window.location.pathname !== url) {
|
|
@@ -32,15 +35,12 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
this.triggerEvent('willReplaceContent', popstate);
|
|
35
|
-
|
|
36
38
|
// replace blocks
|
|
37
39
|
for (var i = 0; i < page.blocks.length; i++) {
|
|
38
40
|
document.body.querySelector('[data-swup="' + i + '"]').outerHTML = page.blocks[i];
|
|
39
41
|
}
|
|
40
|
-
|
|
41
42
|
// set title
|
|
42
43
|
document.title = page.title;
|
|
43
|
-
|
|
44
44
|
this.triggerEvent('contentReplaced', popstate);
|
|
45
45
|
this.triggerEvent('pageView', popstate);
|
|
46
46
|
|
|
@@ -63,12 +63,7 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
63
63
|
Promise.all(animationPromises).then(function () {
|
|
64
64
|
_this.triggerEvent('animationInDone');
|
|
65
65
|
_this.triggerEvent('transitionEnd', popstate);
|
|
66
|
-
|
|
67
|
-
document.documentElement.className.split(' ').forEach(function (classItem) {
|
|
68
|
-
if (new RegExp('^to-').test(classItem) || classItem === 'is-changing' || classItem === 'is-rendering' || classItem === 'is-popstate') {
|
|
69
|
-
document.documentElement.classList.remove(classItem);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
66
|
+
_this.cleanupAnimationClasses();
|
|
72
67
|
});
|
|
73
68
|
} else {
|
|
74
69
|
this.triggerEvent('transitionEnd', popstate);
|