swup 2.0.14 → 2.0.17
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/cypress.config.js +13 -0
- package/dist/swup.js +429 -330
- package/dist/swup.min.js +1 -1
- package/lib/helpers/getDataFromHtml.js +11 -18
- package/lib/helpers/index.js +11 -1
- package/lib/helpers/markSwupElements.js +6 -10
- package/lib/helpers/normalizeUrl.js +17 -0
- package/lib/helpers/transitionEnd.js +4 -15
- package/lib/helpers/transitionProperty.js +14 -0
- package/lib/index.js +12 -7
- package/lib/modules/Cache.js +7 -1
- package/lib/modules/getAnchorElement.js +25 -0
- package/lib/modules/getAnimationPromises.js +17 -1
- package/lib/modules/renderPage.js +5 -7
- package/lib/utils/index.js +8 -0
- package/package.json +10 -10
- package/readme.md +4 -0
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(8);var i=w(r);var a=n(9);var o=w(a);var s=n(10);var u=w(s);var l=n(11);var c=w(l);var f=n(12);var d=w(f);var h=n(13);var p=w(h);var v=n(14);var g=w(v);var m=n(15);var y=w(m);function w(e){return e&&e.__esModule?e:{default:e}}var b=t.classify=i.default;var E=t.createHistoryRecord=o.default;var P=t.getDataFromHtml=u.default;var _=t.fetch=c.default;var k=t.transitionEnd=d.default;var S=t.getCurrentUrl=p.default;var O=t.markSwupElements=g.default;var j=t.Link=y.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=t.query=function e(t){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:document;if(typeof t!=="string"){return t}return n.querySelector(t)};var i=t.queryAll=function e(t){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:document;if(typeof t!=="string"){return t}return Array.prototype.slice.call(n.querySelectorAll(t))}},function(e,t,n){"use strict";var r=n(3);var i=a(r);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=i.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n){if(Object.prototype.hasOwnProperty.call(n,r)){e[r]=n[r]}}}return e};var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||false;r.configurable=true;if("value"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,n,r){if(n)e(t.prototype,n);if(r)e(t,r);return t}}();var a=n(4);var o=M(a);var s=n(6);var u=M(s);var l=n(7);var c=M(l);var f=n(16);var d=M(f);var h=n(17);var p=M(h);var v=n(18);var g=M(v);var m=n(19);var y=M(m);var w=n(20);var b=M(w);var E=n(21);var P=M(E);var _=n(22);var k=M(_);var S=n(23);var O=n(1);var j=n(0);function M(e){return e&&e.__esModule?e:{default:e}}function H(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var L=function(){function e(t){H(this,e);var n={animateHistoryBrowsing:false,animationSelector:'[class*="transition-"]',linkSelector:'a[href^="'+window.location.origin+'"]:not([data-no-swup]), a[href^="/"]:not([data-no-swup]), a[href^="#"]:not([data-no-swup])',cache:true,containers:["#swup"],requestHeaders:{"X-Requested-With":"swup",Accept:"text/html, application/xhtml+xml"},plugins:[],skipPopStateHandling:function e(t){return!(t.state&&t.state.source==="swup")}};var i=r({},n,t);this._handlers={animationInDone:[],animationInStart:[],animationOutDone:[],animationOutStart:[],animationSkipped:[],clickLink:[],contentReplaced:[],disabled:[],enabled:[],openPageInNewTab:[],pageLoaded:[],pageRetrievedFromCache:[],pageView:[],popState:[],samePage:[],samePageWithHash:[],serverError:[],transitionStart:[],transitionEnd:[],willReplaceContent:[]};this.scrollToElement=null;this.preloadPromise=null;this.options=i;this.plugins=[];this.transition={};this.delegatedListeners={};this.boundPopStateHandler=this.popStateHandler.bind(this);this.cache=new u.default;this.cache.swup=this;this.loadPage=c.default;this.renderPage=d.default;this.triggerEvent=p.default;this.on=g.default;this.off=y.default;this.updateTransition=b.default;this.getAnimationPromises=P.default;this.getPageData=k.default;this.log=function(){};this.use=S.use;this.unuse=S.unuse;this.findPlugin=S.findPlugin;this.enable()}i(e,[{key:"enable",value:function e(){var t=this;if(typeof Promise==="undefined"){console.warn("Promise is not supported");return}this.delegatedListeners.click=(0,o.default)(document,this.options.linkSelector,"click",this.linkClickHandler.bind(this));window.addEventListener("popstate",this.boundPopStateHandler);var n=(0,j.getDataFromHtml)(document.documentElement.outerHTML,this.options.containers);n.url=n.responseURL=(0,j.getCurrentUrl)();if(this.options.cache){this.cache.cacheUrl(n)}(0,j.markSwupElements)(document.documentElement,this.options.containers);this.options.plugins.forEach(function(e){t.use(e)});window.history.replaceState(Object.assign({},window.history.state,{url:window.location.href,random:Math.random(),source:"swup"}),document.title,window.location.href);this.triggerEvent("enabled");document.documentElement.classList.add("swup-enabled");this.triggerEvent("pageView")}},{key:"destroy",value:function e(){var t=this;this.delegatedListeners.click.destroy();window.removeEventListener("popstate",this.boundPopStateHandler);this.cache.empty();this.options.plugins.forEach(function(e){t.unuse(e)});(0,O.queryAll)("[data-swup]").forEach(function(e){e.removeAttribute("data-swup")});this.off();this.triggerEvent("disabled");document.documentElement.classList.remove("swup-enabled")}},{key:"linkClickHandler",value:function e(t){if(!t.metaKey&&!t.ctrlKey&&!t.shiftKey&&!t.altKey){if(t.button===0){this.triggerEvent("clickLink",t);t.preventDefault();var n=new j.Link(t.delegateTarget);if(n.getAddress()==(0,j.getCurrentUrl)()||n.getAddress()==""){if(n.getHash()!=""){this.triggerEvent("samePageWithHash",t);var r=document.querySelector(n.getHash());if(r!=null){history.replaceState({url:n.getAddress()+n.getHash(),random:Math.random(),source:"swup"},document.title,n.getAddress()+n.getHash())}else{console.warn("Element for offset not found ("+n.getHash()+")")}}else{this.triggerEvent("samePage",t)}}else{if(n.getHash()!=""){this.scrollToElement=n.getHash()}var i=t.delegateTarget.getAttribute("data-swup-transition");this.loadPage({url:n.getAddress(),customTransition:i},false)}}}else{this.triggerEvent("openPageInNewTab",t)}}},{key:"popStateHandler",value:function e(t){if(this.options.skipPopStateHandling(t))return;var n=new j.Link(t.state?t.state.url:window.location.pathname);if(n.getHash()!==""){this.scrollToElement=n.getHash()}else{t.preventDefault()}this.triggerEvent("popState",t);this.loadPage({url:n.getAddress()},t)}}]);return e}();t.default=L},function(e,t,n){var r=n(5);function i(e,t,n,r,i){var o=a.apply(this,arguments);e.addEventListener(n,o,i);return{destroy:function(){e.removeEventListener(n,o,i)}}}function a(e,t,n,i){return function(n){n.delegateTarget=r(n.target,t);if(n.delegateTarget){i.call(e,n)}}}e.exports=i},function(e,t){var n=9;if(typeof Element!=="undefined"&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}function i(e,t){while(e&&e.nodeType!==n){if(typeof e.matches==="function"&&e.matches(t)){return e}e=e.parentNode}}e.exports=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||false;r.configurable=true;if("value"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,n,r){if(n)e(t.prototype,n);if(r)e(t,r);return t}}();function i(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var a=t.Cache=function(){function e(){i(this,e);this.pages={};this.last=null}r(e,[{key:"cacheUrl",value:function e(t){if(t.url in this.pages===false){this.pages[t.url]=t}this.last=this.pages[t.url];this.swup.log("Cache ("+Object.keys(this.pages).length+")",this.pages)}},{key:"getPage",value:function e(t){return this.pages[t]}},{key:"getCurrentPage",value:function e(){return this.getPage(window.location.pathname+window.location.search)}},{key:"exists",value:function e(t){return t in this.pages}},{key:"empty",value:function e(){this.pages={};this.last=null;this.swup.log("Cache cleared")}},{key:"remove",value:function e(t){delete this.pages[t]}}]);return e}();t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n){if(Object.prototype.hasOwnProperty.call(n,r)){e[r]=n[r]}}}return e};var i=n(0);var a=function e(t,n){var a=this;var o=[],s=void 0;var u=function e(){a.triggerEvent("animationOutStart");document.documentElement.classList.add("is-changing");document.documentElement.classList.add("is-leaving");document.documentElement.classList.add("is-animating");if(n){document.documentElement.classList.add("is-popstate")}document.documentElement.classList.add("to-"+(0,i.classify)(t.url));o=a.getAnimationPromises("out");Promise.all(o).then(function(){a.triggerEvent("animationOutDone")});if(!n){var r=void 0;if(a.scrollToElement!=null){r=t.url+a.scrollToElement}else{r=t.url}(0,i.createHistoryRecord)(r)}};this.triggerEvent("transitionStart",n);if(t.customTransition!=null){this.updateTransition(window.location.pathname,t.url,t.customTransition);document.documentElement.classList.add("to-"+(0,i.classify)(t.customTransition))}else{this.updateTransition(window.location.pathname,t.url)}if(!n||this.options.animateHistoryBrowsing){u()}else{this.triggerEvent("animationSkipped")}if(this.cache.exists(t.url)){s=new Promise(function(e){e()});this.triggerEvent("pageRetrievedFromCache")}else{if(!this.preloadPromise||this.preloadPromise.route!=t.url){s=new Promise(function(e,n){(0,i.fetch)(r({},t,{headers:a.options.requestHeaders}),function(r){if(r.status===500){a.triggerEvent("serverError");n(t.url);return}else{var i=a.getPageData(r);if(i!=null){i.url=t.url}else{n(t.url);return}a.cache.cacheUrl(i);a.triggerEvent("pageLoaded")}e()})})}else{s=this.preloadPromise}}Promise.all(o.concat([s])).then(function(){a.renderPage(a.cache.getPage(t.url),n);a.preloadPromise=null}).catch(function(e){a.options.skipPopStateHandling=function(){window.location=e;return true};window.history.go(-1)})};t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function e(t){var n=t.toString().toLowerCase().replace(/\s+/g,"-").replace(/\//g,"-").replace(/[^\w\-]+/g,"").replace(/\-\-+/g,"-").replace(/^-+/,"").replace(/-+$/,"");if(n[0]==="/")n=n.splice(1);if(n==="")n="homepage";return n};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function e(t){window.history.pushState({url:t||window.location.href.split(window.location.hostname)[1],random:Math.random(),source:"swup"},document.getElementsByTagName("title")[0].innerText,t||window.location.href.split(window.location.hostname)[1])};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol==="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var i=n(1);var a=function e(t,n){var a=document.createElement("html");a.innerHTML=t;var o=[];var s=function e(t){if(a.querySelector(n[t])==null){return{v:null}}else{(0,i.queryAll)(n[t]).forEach(function(e,r){(0,i.queryAll)(n[t],a)[r].setAttribute("data-swup",o.length);o.push((0,i.queryAll)(n[t],a)[r].outerHTML)})}};for(var u=0;u<n.length;u++){var l=s(u);if((typeof l==="undefined"?"undefined":r(l))==="object")return l.v}var c={title:a.querySelector("title").innerText,pageClass:a.querySelector("body").className,originalContent:t,blocks:o};a.innerHTML="";a=null;return c};t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n){if(Object.prototype.hasOwnProperty.call(n,r)){e[r]=n[r]}}}return e};var i=function e(t){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var i={url:window.location.pathname+window.location.search,method:"GET",data:null,headers:{}};var a=r({},i,t);var o=new XMLHttpRequest;o.onreadystatechange=function(){if(o.readyState===4){if(o.status!==500){n(o)}else{n(o)}}};o.open(a.method,a.url,true);Object.keys(a.headers).forEach(function(e){o.setRequestHeader(e,a.headers[e])});o.send(a.data);return o};t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function e(){var t=document.createElement("div");var n={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var r in n){if(t.style[r]!==undefined){return n[r]}}return false};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function e(){return window.location.pathname+window.location.search};t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=n(1);var i=function e(t,n){var i=0;var a=function e(a){if(t.querySelector(n[a])==null){console.warn("Element "+n[a]+" is not in current page.")}else{(0,r.queryAll)(n[a]).forEach(function(e,o){(0,r.queryAll)(n[a],t)[o].setAttribute("data-swup",i);i++})}};for(var o=0;o<n.length;o++){a(o)}};t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||false;r.configurable=true;if("value"in r)r.writable=true;Object.defineProperty(e,r.key,r)}}return function(t,n,r){if(n)e(t.prototype,n);if(r)e(t,r);return t}}();function i(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}var a=function(){function e(t){i(this,e);if(t instanceof Element||t instanceof SVGElement){this.link=t}else{this.link=document.createElement("a");this.link.href=t}}r(e,[{key:"getPath",value:function e(){var t=this.link.pathname;if(t[0]!=="/"){t="/"+t}return t}},{key:"getAddress",value:function e(){var t=this.link.pathname+this.link.search;if(this.link.getAttribute("xlink:href")){t=this.link.getAttribute("xlink:href")}if(t[0]!=="/"){t="/"+t}return t}},{key:"getHash",value:function e(){return this.link.hash}}]);return e}();t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:true});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n){if(Object.prototype.hasOwnProperty.call(n,r)){e[r]=n[r]}}}return e};var i=n(1);var a=n(0);var o=function e(t,n){var i=this;document.documentElement.classList.remove("is-leaving");var o=new a.Link(t.responseURL);if(window.location.pathname!==o.getPath()){window.history.replaceState({url:o.getPath(),random:Math.random(),source:"swup"},document.title,o.getPath());this.cache.cacheUrl(r({},t,{url:o.getPath()}))}if(!n||this.options.animateHistoryBrowsing){document.documentElement.classList.add("is-rendering")}this.triggerEvent("willReplaceContent",n);for(var s=0;s<t.blocks.length;s++){document.body.querySelector('[data-swup="'+s+'"]').outerHTML=t.blocks[s]}document.title=t.title;this.triggerEvent("contentReplaced",n);this.triggerEvent("pageView",n);if(!this.options.cache){this.cache.empty()}setTimeout(function(){if(!n||i.options.animateHistoryBrowsing){i.triggerEvent("animationInStart");document.documentElement.classList.remove("is-animating")}},10);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=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})}}])});
|
|
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
|
|
7
|
-
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; };
|
|
8
|
-
|
|
9
7
|
var _utils = require('../utils');
|
|
10
8
|
|
|
11
9
|
var getDataFromHtml = function getDataFromHtml(html, containers) {
|
|
@@ -13,25 +11,20 @@ var getDataFromHtml = function getDataFromHtml(html, containers) {
|
|
|
13
11
|
fakeDom.innerHTML = html;
|
|
14
12
|
var blocks = [];
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
-
v: null
|
|
21
|
-
};
|
|
14
|
+
containers.forEach(function (selector) {
|
|
15
|
+
if ((0, _utils.query)(selector, fakeDom) == null) {
|
|
16
|
+
console.error('Container ' + selector + ' not found on page.');
|
|
17
|
+
return null;
|
|
22
18
|
} else {
|
|
23
|
-
(0, _utils.queryAll)(
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
if ((0, _utils.queryAll)(selector).length !== (0, _utils.queryAll)(selector, fakeDom).length) {
|
|
20
|
+
console.warn('Mismatched number of containers found on new page.');
|
|
21
|
+
}
|
|
22
|
+
(0, _utils.queryAll)(selector).forEach(function (item, index) {
|
|
23
|
+
(0, _utils.queryAll)(selector, fakeDom)[index].setAttribute('data-swup', blocks.length);
|
|
24
|
+
blocks.push((0, _utils.queryAll)(selector, fakeDom)[index].outerHTML);
|
|
26
25
|
});
|
|
27
26
|
}
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
for (var i = 0; i < containers.length; i++) {
|
|
31
|
-
var _ret = _loop(i);
|
|
32
|
-
|
|
33
|
-
if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
|
|
34
|
-
}
|
|
27
|
+
});
|
|
35
28
|
|
|
36
29
|
var json = {
|
|
37
30
|
title: fakeDom.querySelector('title').innerText,
|
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.getCurrentUrl = exports.transitionEnd = exports.fetch = exports.getDataFromHtml = exports.createHistoryRecord = exports.classify = undefined;
|
|
6
|
+
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
|
|
|
@@ -25,10 +25,18 @@ var _transitionEnd = require('./transitionEnd');
|
|
|
25
25
|
|
|
26
26
|
var _transitionEnd2 = _interopRequireDefault(_transitionEnd);
|
|
27
27
|
|
|
28
|
+
var _transitionProperty = require('./transitionProperty');
|
|
29
|
+
|
|
30
|
+
var _transitionProperty2 = _interopRequireDefault(_transitionProperty);
|
|
31
|
+
|
|
28
32
|
var _getCurrentUrl = require('./getCurrentUrl');
|
|
29
33
|
|
|
30
34
|
var _getCurrentUrl2 = _interopRequireDefault(_getCurrentUrl);
|
|
31
35
|
|
|
36
|
+
var _normalizeUrl = require('./normalizeUrl');
|
|
37
|
+
|
|
38
|
+
var _normalizeUrl2 = _interopRequireDefault(_normalizeUrl);
|
|
39
|
+
|
|
32
40
|
var _markSwupElements = require('./markSwupElements');
|
|
33
41
|
|
|
34
42
|
var _markSwupElements2 = _interopRequireDefault(_markSwupElements);
|
|
@@ -44,6 +52,8 @@ var createHistoryRecord = exports.createHistoryRecord = _createHistoryRecord2.de
|
|
|
44
52
|
var getDataFromHtml = exports.getDataFromHtml = _getDataFromHtml2.default;
|
|
45
53
|
var fetch = exports.fetch = _fetch2.default;
|
|
46
54
|
var transitionEnd = exports.transitionEnd = _transitionEnd2.default;
|
|
55
|
+
var transitionProperty = exports.transitionProperty = _transitionProperty2.default;
|
|
47
56
|
var getCurrentUrl = exports.getCurrentUrl = _getCurrentUrl2.default;
|
|
57
|
+
var normalizeUrl = exports.normalizeUrl = _normalizeUrl2.default;
|
|
48
58
|
var markSwupElements = exports.markSwupElements = _markSwupElements2.default;
|
|
49
59
|
var Link = exports.Link = _Link2.default;
|
|
@@ -9,20 +9,16 @@ var _utils = require('../utils');
|
|
|
9
9
|
var markSwupElements = function markSwupElements(element, containers) {
|
|
10
10
|
var blocks = 0;
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
if (
|
|
14
|
-
console.
|
|
12
|
+
containers.forEach(function (selector) {
|
|
13
|
+
if ((0, _utils.query)(selector, element) == null) {
|
|
14
|
+
console.error('Container ' + selector + ' not found on page.');
|
|
15
15
|
} else {
|
|
16
|
-
(0, _utils.queryAll)(
|
|
17
|
-
(0, _utils.queryAll)(
|
|
16
|
+
(0, _utils.queryAll)(selector).forEach(function (item, index) {
|
|
17
|
+
(0, _utils.queryAll)(selector, element)[index].setAttribute('data-swup', blocks);
|
|
18
18
|
blocks++;
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
for (var i = 0; i < containers.length; i++) {
|
|
24
|
-
_loop(i);
|
|
25
|
-
}
|
|
21
|
+
});
|
|
26
22
|
};
|
|
27
23
|
|
|
28
24
|
exports.default = markSwupElements;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _Link = require('./Link');
|
|
8
|
+
|
|
9
|
+
var _Link2 = _interopRequireDefault(_Link);
|
|
10
|
+
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
|
|
13
|
+
var normalizeUrl = function normalizeUrl(url) {
|
|
14
|
+
return new _Link2.default(url).getAddress();
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.default = normalizeUrl;
|
|
@@ -4,22 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
var transitionEnd = function transitionEnd() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
MozTransition: 'transitionend',
|
|
12
|
-
OTransition: 'oTransitionEnd otransitionend',
|
|
13
|
-
transition: 'transitionend'
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
for (var name in transEndEventNames) {
|
|
17
|
-
if (el.style[name] !== undefined) {
|
|
18
|
-
return transEndEventNames[name];
|
|
19
|
-
}
|
|
7
|
+
if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {
|
|
8
|
+
return 'webkitTransitionEnd';
|
|
9
|
+
} else {
|
|
10
|
+
return 'transitionend';
|
|
20
11
|
}
|
|
21
|
-
|
|
22
|
-
return false;
|
|
23
12
|
};
|
|
24
13
|
|
|
25
14
|
exports.default = transitionEnd;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var transitionProperty = function transitionProperty() {
|
|
7
|
+
if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {
|
|
8
|
+
return 'WebkitTransition';
|
|
9
|
+
} else {
|
|
10
|
+
return 'transition';
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.default = transitionProperty;
|
package/lib/index.js
CHANGED
|
@@ -11,9 +11,9 @@ var _createClass = function () { function defineProperties(target, props) { for
|
|
|
11
11
|
// modules
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _delegateIt = require('delegate-it');
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _delegateIt2 = _interopRequireDefault(_delegateIt);
|
|
17
17
|
|
|
18
18
|
var _Cache = require('./modules/Cache');
|
|
19
19
|
|
|
@@ -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;
|
|
@@ -156,13 +161,13 @@ var Swup = function () {
|
|
|
156
161
|
}
|
|
157
162
|
|
|
158
163
|
// add event listeners
|
|
159
|
-
this.delegatedListeners.click = (0,
|
|
164
|
+
this.delegatedListeners.click = (0, _delegateIt2.default)(document, this.options.linkSelector, 'click', this.linkClickHandler.bind(this));
|
|
160
165
|
window.addEventListener('popstate', this.boundPopStateHandler);
|
|
161
166
|
|
|
162
167
|
// initial save to cache
|
|
163
|
-
var page = (0, _helpers.getDataFromHtml)(document.documentElement.outerHTML, this.options.containers);
|
|
164
|
-
page.url = page.responseURL = (0, _helpers.getCurrentUrl)();
|
|
165
168
|
if (this.options.cache) {
|
|
169
|
+
var page = (0, _helpers.getDataFromHtml)(document.documentElement.outerHTML, this.options.containers);
|
|
170
|
+
page.url = page.responseURL = (0, _helpers.getCurrentUrl)();
|
|
166
171
|
this.cache.cacheUrl(page);
|
|
167
172
|
}
|
|
168
173
|
|
|
@@ -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(),
|
package/lib/modules/Cache.js
CHANGED
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.Cache = undefined;
|
|
6
7
|
|
|
7
8
|
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
8
9
|
|
|
10
|
+
var _helpers = require('../helpers');
|
|
11
|
+
|
|
9
12
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
10
13
|
|
|
11
14
|
var Cache = exports.Cache = function () {
|
|
@@ -19,6 +22,7 @@ var Cache = exports.Cache = function () {
|
|
|
19
22
|
_createClass(Cache, [{
|
|
20
23
|
key: 'cacheUrl',
|
|
21
24
|
value: function cacheUrl(page) {
|
|
25
|
+
page.url = (0, _helpers.normalizeUrl)(page.url);
|
|
22
26
|
if (page.url in this.pages === false) {
|
|
23
27
|
this.pages[page.url] = page;
|
|
24
28
|
}
|
|
@@ -28,16 +32,18 @@ var Cache = exports.Cache = function () {
|
|
|
28
32
|
}, {
|
|
29
33
|
key: 'getPage',
|
|
30
34
|
value: function getPage(url) {
|
|
35
|
+
url = (0, _helpers.normalizeUrl)(url);
|
|
31
36
|
return this.pages[url];
|
|
32
37
|
}
|
|
33
38
|
}, {
|
|
34
39
|
key: 'getCurrentPage',
|
|
35
40
|
value: function getCurrentPage() {
|
|
36
|
-
return this.getPage(
|
|
41
|
+
return this.getPage((0, _helpers.getCurrentUrl)());
|
|
37
42
|
}
|
|
38
43
|
}, {
|
|
39
44
|
key: 'exists',
|
|
40
45
|
value: function exists(url) {
|
|
46
|
+
url = (0, _helpers.normalizeUrl)(url);
|
|
41
47
|
return url in this.pages;
|
|
42
48
|
}
|
|
43
49
|
}, {
|
|
@@ -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;
|
|
@@ -9,9 +9,24 @@ var _utils = require('../utils');
|
|
|
9
9
|
var _helpers = require('../helpers');
|
|
10
10
|
|
|
11
11
|
var getAnimationPromises = function getAnimationPromises() {
|
|
12
|
+
var _this = this;
|
|
13
|
+
|
|
12
14
|
var promises = [];
|
|
13
|
-
var animatedElements = (0, _utils.queryAll)(this.options.animationSelector);
|
|
15
|
+
var animatedElements = (0, _utils.queryAll)(this.options.animationSelector, document.body);
|
|
16
|
+
|
|
17
|
+
if (!animatedElements.length) {
|
|
18
|
+
console.error('No animated elements found by selector ' + this.options.animationSelector);
|
|
19
|
+
return [Promise.resolve()];
|
|
20
|
+
}
|
|
21
|
+
|
|
14
22
|
animatedElements.forEach(function (element) {
|
|
23
|
+
var transitionDuration = window.getComputedStyle(element)[(0, _helpers.transitionProperty)() + 'Duration'];
|
|
24
|
+
// Resolve immediately if no transition defined
|
|
25
|
+
if (!transitionDuration || transitionDuration == '0s') {
|
|
26
|
+
console.error('No CSS transition duration defined for element of selector ' + _this.options.animationSelector);
|
|
27
|
+
promises.push(Promise.resolve());
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
15
30
|
var promise = new Promise(function (resolve) {
|
|
16
31
|
element.addEventListener((0, _helpers.transitionEnd)(), function (event) {
|
|
17
32
|
if (element == event.target) {
|
|
@@ -21,6 +36,7 @@ var getAnimationPromises = function getAnimationPromises() {
|
|
|
21
36
|
});
|
|
22
37
|
promises.push(promise);
|
|
23
38
|
});
|
|
39
|
+
|
|
24
40
|
return promises;
|
|
25
41
|
};
|
|
26
42
|
|
|
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
|
|
7
7
|
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; };
|
|
8
8
|
|
|
9
|
-
var _utils = require('../utils');
|
|
10
|
-
|
|
11
9
|
var _helpers = require('../helpers');
|
|
12
10
|
|
|
13
11
|
var renderPage = function renderPage(page, popstate) {
|
|
@@ -16,16 +14,16 @@ var renderPage = function renderPage(page, popstate) {
|
|
|
16
14
|
document.documentElement.classList.remove('is-leaving');
|
|
17
15
|
|
|
18
16
|
// replace state in case the url was redirected
|
|
19
|
-
var
|
|
20
|
-
if (window.location.pathname !==
|
|
17
|
+
var url = new _helpers.Link(page.responseURL).getPath();
|
|
18
|
+
if (window.location.pathname !== url) {
|
|
21
19
|
window.history.replaceState({
|
|
22
|
-
url:
|
|
20
|
+
url: url,
|
|
23
21
|
random: Math.random(),
|
|
24
22
|
source: 'swup'
|
|
25
|
-
}, document.title,
|
|
23
|
+
}, document.title, url);
|
|
26
24
|
|
|
27
25
|
// save new record for redirected url
|
|
28
|
-
this.cache.cacheUrl(_extends({}, page, { url:
|
|
26
|
+
this.cache.cacheUrl(_extends({}, page, { url: url }));
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
// only add for non-popstate transitions
|
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
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swup",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.17",
|
|
4
4
|
"description": "Complete, flexible, extensible and easy to use page transition library for your web.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"build": "webpack-cli",
|
|
10
10
|
"prepublish": "npm run compile && npm run build",
|
|
11
11
|
"postinstall": "opencollective-postinstall || true",
|
|
12
|
-
"test": "npm run build && npm run test:instrument
|
|
13
|
-
"test:instrument
|
|
12
|
+
"test": "npm run build && npm run test:instrument && start-server-and-test test:server http://localhost:8080 test:run",
|
|
13
|
+
"test:instrument": "nyc instrument --compact=false dist test/site/swup",
|
|
14
14
|
"test:server": "http-server test/site",
|
|
15
15
|
"test:run": "cypress run --record"
|
|
16
16
|
},
|
|
@@ -27,23 +27,23 @@
|
|
|
27
27
|
"transition"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"delegate": "3.1
|
|
30
|
+
"delegate-it": "^3.0.1",
|
|
31
31
|
"opencollective-postinstall": "^2.0.2"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@cypress/code-coverage": "^
|
|
34
|
+
"@cypress/code-coverage": "^3.10.0",
|
|
35
35
|
"@swup/prettier-config": "^1.0.0",
|
|
36
36
|
"@swup/webpack-config": "^1.0.0",
|
|
37
37
|
"babel-cli": "^6.26.0",
|
|
38
38
|
"babel-loader": "^7.1.4",
|
|
39
39
|
"babel-preset-es2015": "^6.24.1",
|
|
40
40
|
"babel-preset-stage-0": "^6.24.1",
|
|
41
|
-
"cypress": "^
|
|
42
|
-
"http-server": "^
|
|
43
|
-
"istanbul-lib-coverage": "^2.0
|
|
44
|
-
"nyc": "^
|
|
41
|
+
"cypress": "^10.0.2",
|
|
42
|
+
"http-server": "^14.1.1",
|
|
43
|
+
"istanbul-lib-coverage": "^3.2.0",
|
|
44
|
+
"nyc": "^15.1.0",
|
|
45
45
|
"prettier": "1.17.0",
|
|
46
|
-
"start-server-and-test": "^1.
|
|
46
|
+
"start-server-and-test": "^1.14.0",
|
|
47
47
|
"uglifyjs-webpack-plugin": "^1.2.5",
|
|
48
48
|
"webpack": "^4.8.3",
|
|
49
49
|
"webpack-cli": "^3.3.2"
|
package/readme.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
<h3 align="center"><a href="https://github.com/swup/swup/discussions/424">We're looking for maintainers!</a></h3>
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
<p align="center"><img width="420" alt="swup" src="https://swup.js.org/assets/images/swup-logo.svg"></p>
|
|
2
6
|
<p align="center">
|
|
3
7
|
Complete, flexible, extensible and easy to use page transition library for your static web.
|