swup 2.0.15 → 2.0.16
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 +91 -47
- package/dist/swup.min.js +1 -1
- package/lib/index.js +7 -2
- package/lib/modules/getAnchorElement.js +25 -0
- package/lib/utils/index.js +8 -0
- package/package.json +1 -1
package/dist/swup.js
CHANGED
|
@@ -101,6 +101,44 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
|
101
101
|
"use strict";
|
|
102
102
|
|
|
103
103
|
|
|
104
|
+
Object.defineProperty(exports, "__esModule", {
|
|
105
|
+
value: true
|
|
106
|
+
});
|
|
107
|
+
var query = exports.query = function query(selector) {
|
|
108
|
+
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
|
|
109
|
+
|
|
110
|
+
if (typeof selector !== 'string') {
|
|
111
|
+
return selector;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return context.querySelector(selector);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
var queryAll = exports.queryAll = function queryAll(selector) {
|
|
118
|
+
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
|
|
119
|
+
|
|
120
|
+
if (typeof selector !== 'string') {
|
|
121
|
+
return selector;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return Array.prototype.slice.call(context.querySelectorAll(selector));
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
var escapeCssIdentifier = exports.escapeCssIdentifier = function escapeCssIdentifier(ident) {
|
|
128
|
+
if (window.CSS && window.CSS.escape) {
|
|
129
|
+
return CSS.escape(ident);
|
|
130
|
+
} else {
|
|
131
|
+
return ident;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
/***/ }),
|
|
136
|
+
/* 1 */
|
|
137
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
138
|
+
|
|
139
|
+
"use strict";
|
|
140
|
+
|
|
141
|
+
|
|
104
142
|
Object.defineProperty(exports, "__esModule", {
|
|
105
143
|
value: true
|
|
106
144
|
});
|
|
@@ -149,36 +187,6 @@ var getCurrentUrl = exports.getCurrentUrl = _getCurrentUrl2.default;
|
|
|
149
187
|
var markSwupElements = exports.markSwupElements = _markSwupElements2.default;
|
|
150
188
|
var Link = exports.Link = _Link2.default;
|
|
151
189
|
|
|
152
|
-
/***/ }),
|
|
153
|
-
/* 1 */
|
|
154
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
155
|
-
|
|
156
|
-
"use strict";
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Object.defineProperty(exports, "__esModule", {
|
|
160
|
-
value: true
|
|
161
|
-
});
|
|
162
|
-
var query = exports.query = function query(selector) {
|
|
163
|
-
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
|
|
164
|
-
|
|
165
|
-
if (typeof selector !== 'string') {
|
|
166
|
-
return selector;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return context.querySelector(selector);
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
var queryAll = exports.queryAll = function queryAll(selector) {
|
|
173
|
-
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
|
|
174
|
-
|
|
175
|
-
if (typeof selector !== 'string') {
|
|
176
|
-
return selector;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
return Array.prototype.slice.call(context.querySelectorAll(selector));
|
|
180
|
-
};
|
|
181
|
-
|
|
182
190
|
/***/ }),
|
|
183
191
|
/* 2 */
|
|
184
192
|
/***/ (function(module, exports, __webpack_require__) {
|
|
@@ -244,19 +252,23 @@ var _updateTransition = __webpack_require__(19);
|
|
|
244
252
|
|
|
245
253
|
var _updateTransition2 = _interopRequireDefault(_updateTransition);
|
|
246
254
|
|
|
247
|
-
var
|
|
255
|
+
var _getAnchorElement = __webpack_require__(20);
|
|
256
|
+
|
|
257
|
+
var _getAnchorElement2 = _interopRequireDefault(_getAnchorElement);
|
|
258
|
+
|
|
259
|
+
var _getAnimationPromises = __webpack_require__(21);
|
|
248
260
|
|
|
249
261
|
var _getAnimationPromises2 = _interopRequireDefault(_getAnimationPromises);
|
|
250
262
|
|
|
251
|
-
var _getPageData = __webpack_require__(
|
|
263
|
+
var _getPageData = __webpack_require__(22);
|
|
252
264
|
|
|
253
265
|
var _getPageData2 = _interopRequireDefault(_getPageData);
|
|
254
266
|
|
|
255
|
-
var _plugins = __webpack_require__(
|
|
267
|
+
var _plugins = __webpack_require__(23);
|
|
256
268
|
|
|
257
|
-
var _utils = __webpack_require__(
|
|
269
|
+
var _utils = __webpack_require__(0);
|
|
258
270
|
|
|
259
|
-
var _helpers = __webpack_require__(
|
|
271
|
+
var _helpers = __webpack_require__(1);
|
|
260
272
|
|
|
261
273
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
262
274
|
|
|
@@ -310,7 +322,7 @@ var Swup = function () {
|
|
|
310
322
|
willReplaceContent: []
|
|
311
323
|
};
|
|
312
324
|
|
|
313
|
-
// variable for
|
|
325
|
+
// variable for anchor to scroll to after render
|
|
314
326
|
this.scrollToElement = null;
|
|
315
327
|
// variable for promise used for preload, so no new loading of the same page starts while page is loading
|
|
316
328
|
this.preloadPromise = null;
|
|
@@ -336,6 +348,7 @@ var Swup = function () {
|
|
|
336
348
|
this.updateTransition = _updateTransition2.default;
|
|
337
349
|
this.getAnimationPromises = _getAnimationPromises2.default;
|
|
338
350
|
this.getPageData = _getPageData2.default;
|
|
351
|
+
this.getAnchorElement = _getAnchorElement2.default;
|
|
339
352
|
this.log = function () {}; // here so it can be used by plugins
|
|
340
353
|
this.use = _plugins.use;
|
|
341
354
|
this.unuse = _plugins.unuse;
|
|
@@ -439,7 +452,7 @@ var Swup = function () {
|
|
|
439
452
|
if (link.getHash() != '') {
|
|
440
453
|
// link to the same URL with hash
|
|
441
454
|
this.triggerEvent('samePageWithHash', event);
|
|
442
|
-
var element =
|
|
455
|
+
var element = (0, _getAnchorElement2.default)(link.getHash());
|
|
443
456
|
if (element != null) {
|
|
444
457
|
history.replaceState({
|
|
445
458
|
url: link.getAddress() + link.getHash(),
|
|
@@ -664,7 +677,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
664
677
|
|
|
665
678
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
666
679
|
|
|
667
|
-
var _helpers = __webpack_require__(
|
|
680
|
+
var _helpers = __webpack_require__(1);
|
|
668
681
|
|
|
669
682
|
var loadPage = function loadPage(data, popstate) {
|
|
670
683
|
var _this = this;
|
|
@@ -832,7 +845,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
832
845
|
|
|
833
846
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
834
847
|
|
|
835
|
-
var _utils = __webpack_require__(
|
|
848
|
+
var _utils = __webpack_require__(0);
|
|
836
849
|
|
|
837
850
|
var getDataFromHtml = function getDataFromHtml(html, containers) {
|
|
838
851
|
var fakeDom = document.createElement('html');
|
|
@@ -980,7 +993,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
980
993
|
value: true
|
|
981
994
|
});
|
|
982
995
|
|
|
983
|
-
var _utils = __webpack_require__(
|
|
996
|
+
var _utils = __webpack_require__(0);
|
|
984
997
|
|
|
985
998
|
var markSwupElements = function markSwupElements(element, containers) {
|
|
986
999
|
var blocks = 0;
|
|
@@ -1078,9 +1091,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
1078
1091
|
|
|
1079
1092
|
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
1080
1093
|
|
|
1081
|
-
var _utils = __webpack_require__(
|
|
1094
|
+
var _utils = __webpack_require__(0);
|
|
1082
1095
|
|
|
1083
|
-
var _helpers = __webpack_require__(
|
|
1096
|
+
var _helpers = __webpack_require__(1);
|
|
1084
1097
|
|
|
1085
1098
|
var renderPage = function renderPage(page, popstate) {
|
|
1086
1099
|
var _this = this;
|
|
@@ -1273,9 +1286,40 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
1273
1286
|
value: true
|
|
1274
1287
|
});
|
|
1275
1288
|
|
|
1276
|
-
var _utils = __webpack_require__(
|
|
1289
|
+
var _utils = __webpack_require__(0);
|
|
1277
1290
|
|
|
1278
|
-
var
|
|
1291
|
+
var getAnchorElement = function getAnchorElement(hash) {
|
|
1292
|
+
if (!hash) {
|
|
1293
|
+
return null;
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
if (hash.charAt(0) === '#') {
|
|
1297
|
+
hash = hash.substring(1);
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
hash = decodeURIComponent(hash);
|
|
1301
|
+
hash = (0, _utils.escapeCssIdentifier)(hash);
|
|
1302
|
+
|
|
1303
|
+
// https://html.spec.whatwg.org/#find-a-potential-indicated-element
|
|
1304
|
+
return (0, _utils.query)('#' + hash) || (0, _utils.query)('a[name=\'' + hash + '\']');
|
|
1305
|
+
};
|
|
1306
|
+
|
|
1307
|
+
exports.default = getAnchorElement;
|
|
1308
|
+
|
|
1309
|
+
/***/ }),
|
|
1310
|
+
/* 21 */
|
|
1311
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1312
|
+
|
|
1313
|
+
"use strict";
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
Object.defineProperty(exports, "__esModule", {
|
|
1317
|
+
value: true
|
|
1318
|
+
});
|
|
1319
|
+
|
|
1320
|
+
var _utils = __webpack_require__(0);
|
|
1321
|
+
|
|
1322
|
+
var _helpers = __webpack_require__(1);
|
|
1279
1323
|
|
|
1280
1324
|
var getAnimationPromises = function getAnimationPromises() {
|
|
1281
1325
|
var promises = [];
|
|
@@ -1296,7 +1340,7 @@ var getAnimationPromises = function getAnimationPromises() {
|
|
|
1296
1340
|
exports.default = getAnimationPromises;
|
|
1297
1341
|
|
|
1298
1342
|
/***/ }),
|
|
1299
|
-
/*
|
|
1343
|
+
/* 22 */
|
|
1300
1344
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1301
1345
|
|
|
1302
1346
|
"use strict";
|
|
@@ -1306,7 +1350,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
1306
1350
|
value: true
|
|
1307
1351
|
});
|
|
1308
1352
|
|
|
1309
|
-
var _helpers = __webpack_require__(
|
|
1353
|
+
var _helpers = __webpack_require__(1);
|
|
1310
1354
|
|
|
1311
1355
|
var getPageData = function getPageData(request) {
|
|
1312
1356
|
// this method can be replaced in case other content than html is expected to be received from server
|
|
@@ -1328,7 +1372,7 @@ var getPageData = function getPageData(request) {
|
|
|
1328
1372
|
exports.default = getPageData;
|
|
1329
1373
|
|
|
1330
1374
|
/***/ }),
|
|
1331
|
-
/*
|
|
1375
|
+
/* 23 */
|
|
1332
1376
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1333
1377
|
|
|
1334
1378
|
"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=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(7);var i=w(r);var a=n(8);var o=w(a);var s=n(9);var u=w(s);var l=n(10);var c=w(l);var f=n(11);var d=w(f);var h=n(12);var p=w(h);var v=n(13);var g=w(v);var m=n(14);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=H(a);var s=n(5);var u=H(s);var l=n(6);var c=H(l);var f=n(15);var d=H(f);var h=n(16);var p=H(h);var v=n(17);var g=H(v);var m=n(18);var y=H(m);var w=n(19);var b=H(w);var E=n(20);var P=H(E);var _=n(21);var k=H(_);var S=n(22);var O=n(1);var j=n(0);function H(e){return e&&e.__esModule?e:{default:e}}function M(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var L=function(){function e(t){M(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){"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});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);if(!n||this.options.animateHistoryBrowsing){var u=this.getAnimationPromises("in");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})}}])});
|
|
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=2)}([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});t.Link=t.markSwupElements=t.getCurrentUrl=t.transitionEnd=t.fetch=t.getDataFromHtml=t.createHistoryRecord=t.classify=undefined;var r=n(7);var i=w(r);var a=n(8);var o=w(a);var s=n(9);var u=w(s);var l=n(10);var c=w(l);var f=n(11);var d=w(f);var h=n(12);var p=w(h);var v=n(13);var g=w(v);var m=n(14);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";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=L(a);var s=n(5);var u=L(s);var l=n(6);var c=L(l);var f=n(15);var d=L(f);var h=n(16);var p=L(h);var v=n(17);var g=L(v);var m=n(18);var y=L(m);var w=n(19);var b=L(w);var E=n(20);var P=L(E);var _=n(21);var k=L(_);var S=n(22);var O=L(S);var j=n(23);var H=n(0);var M=n(1);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);var n=(0,M.getDataFromHtml)(document.documentElement.outerHTML,this.options.containers);n.url=n.responseURL=(0,M.getCurrentUrl)();if(this.options.cache){this.cache.cacheUrl(n)}(0,M.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,H.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 M.Link(t.delegateTarget);if(n.getAddress()==(0,M.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 M.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});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(1);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(0);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(0);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(0);var a=n(1);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);if(!n||this.options.animateHistoryBrowsing){var u=this.getAnimationPromises("in");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(0);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(0);var i=n(1);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(1);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})}}])});
|
package/lib/index.js
CHANGED
|
@@ -43,6 +43,10 @@ var _updateTransition = require('./modules/updateTransition');
|
|
|
43
43
|
|
|
44
44
|
var _updateTransition2 = _interopRequireDefault(_updateTransition);
|
|
45
45
|
|
|
46
|
+
var _getAnchorElement = require('./modules/getAnchorElement');
|
|
47
|
+
|
|
48
|
+
var _getAnchorElement2 = _interopRequireDefault(_getAnchorElement);
|
|
49
|
+
|
|
46
50
|
var _getAnimationPromises = require('./modules/getAnimationPromises');
|
|
47
51
|
|
|
48
52
|
var _getAnimationPromises2 = _interopRequireDefault(_getAnimationPromises);
|
|
@@ -109,7 +113,7 @@ var Swup = function () {
|
|
|
109
113
|
willReplaceContent: []
|
|
110
114
|
};
|
|
111
115
|
|
|
112
|
-
// variable for
|
|
116
|
+
// variable for anchor to scroll to after render
|
|
113
117
|
this.scrollToElement = null;
|
|
114
118
|
// variable for promise used for preload, so no new loading of the same page starts while page is loading
|
|
115
119
|
this.preloadPromise = null;
|
|
@@ -135,6 +139,7 @@ var Swup = function () {
|
|
|
135
139
|
this.updateTransition = _updateTransition2.default;
|
|
136
140
|
this.getAnimationPromises = _getAnimationPromises2.default;
|
|
137
141
|
this.getPageData = _getPageData2.default;
|
|
142
|
+
this.getAnchorElement = _getAnchorElement2.default;
|
|
138
143
|
this.log = function () {}; // here so it can be used by plugins
|
|
139
144
|
this.use = _plugins.use;
|
|
140
145
|
this.unuse = _plugins.unuse;
|
|
@@ -238,7 +243,7 @@ var Swup = function () {
|
|
|
238
243
|
if (link.getHash() != '') {
|
|
239
244
|
// link to the same URL with hash
|
|
240
245
|
this.triggerEvent('samePageWithHash', event);
|
|
241
|
-
var element =
|
|
246
|
+
var element = (0, _getAnchorElement2.default)(link.getHash());
|
|
242
247
|
if (element != null) {
|
|
243
248
|
history.replaceState({
|
|
244
249
|
url: link.getAddress() + link.getHash(),
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _utils = require('../utils');
|
|
8
|
+
|
|
9
|
+
var getAnchorElement = function getAnchorElement(hash) {
|
|
10
|
+
if (!hash) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (hash.charAt(0) === '#') {
|
|
15
|
+
hash = hash.substring(1);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
hash = decodeURIComponent(hash);
|
|
19
|
+
hash = (0, _utils.escapeCssIdentifier)(hash);
|
|
20
|
+
|
|
21
|
+
// https://html.spec.whatwg.org/#find-a-potential-indicated-element
|
|
22
|
+
return (0, _utils.query)('#' + hash) || (0, _utils.query)('a[name=\'' + hash + '\']');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.default = getAnchorElement;
|
package/lib/utils/index.js
CHANGED
|
@@ -21,4 +21,12 @@ var queryAll = exports.queryAll = function queryAll(selector) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
return Array.prototype.slice.call(context.querySelectorAll(selector));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
var escapeCssIdentifier = exports.escapeCssIdentifier = function escapeCssIdentifier(ident) {
|
|
27
|
+
if (window.CSS && window.CSS.escape) {
|
|
28
|
+
return CSS.escape(ident);
|
|
29
|
+
} else {
|
|
30
|
+
return ident;
|
|
31
|
+
}
|
|
24
32
|
};
|