UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

3 lines (2 loc) 6.06 kB
!function(t){"function"==typeof define&&define.amd?define(["kendo.core.min"],t):t()}((function(){!function(t,n){var e=window.kendo,i="change",r="same",a=e.support,o=window.location,s=window.history,h=e.support.browser.msie,c=/^#*/,u=window.document;function l(t,n){return n?(t+"/"===n&&(t=n),new RegExp("^"+n,"i").test(t)||(t=n+"/"+t),o.protocol+"//"+(o.host+"/"+t).replace(/\/\/+/g,"/")):t}function f(t){return t?"#!":"#"}function d(t){var n=o.href;return"#!"===t&&n.indexOf("#")>-1&&n.indexOf("#!")<0?null:n.split(t)[1]||""}function p(t,n){return 0===n.indexOf(t)?n.substr(t.length).replace(/\/\//g,"/"):n}var g=e.Class.extend({back:function(){h?setTimeout((function(){s.back()})):s.back()},forward:function(){h?setTimeout((function(){s.forward()})):s.forward()},length:function(){return s.length},replaceLocation:function(t){o.replace(t)}}),b=g.extend({init:function(t){this.root=t},navigate:function(t){s.pushState({},u.title,l(t,this.root))},replace:function(t){s.replaceState({},u.title,l(t,this.root))},normalize:function(t){return p(this.root,t)},current:function(){var t=o.pathname;return o.search&&(t+=o.search),p(this.root,t)},change:function(n){t(window).bind("popstate.kendo",n)},stop:function(){t(window).unbind("popstate.kendo")},normalizeCurrent:function(t){var n,e=t.root,i=o.pathname,r=d(f(t.hashBang));e===i+"/"&&(n=e),e===i&&r&&(n=l(r.replace(c,""),e)),n&&s.pushState({},u.title,n)}});function v(t){return t.replace(/^(#)?/,"#")}function k(t){return t.replace(/^(#(!)?)?/,"#!")}var w=g.extend({init:function(t){this._id=e.guid(),this.prefix=f(t),this.fix=t?k:v},navigate:function(t){o.hash=this.fix(t)},replace:function(t){this.replaceLocation(this.fix(t))},normalize:function(t){return t.indexOf(this.prefix)<0?t:t.split(this.prefix)[1]},change:function(n){a.hashChange?t(window).on("hashchange."+this._id,n):this._interval=setInterval(n,50)},stop:function(){t(window).off("hashchange."+this._id),clearInterval(this._interval)},current:function(){return d(this.prefix)},normalizeCurrent:function(t){var n=o.pathname,e=t.root;return!(!t.pushState||e===n)&&(this.replaceLocation(e+this.prefix+p(e,n)),!0)}}),m=e.Observable.extend({start:function(n){if(n=n||{},this.bind([i,"back",r],n),!this._started){this._started=!0,n.root=n.root||"/";var e,a=this.createAdapter(n);a.normalizeCurrent(n)||(e=a.current(),t.extend(this,{adapter:a,root:n.root,historyLength:a.length(),current:e,locations:[e]}),a.change(this._checkUrl.bind(this)))}},createAdapter:function(t){return a.pushState&&t.pushState?new b(t.root):new w(t.hashBang)},stop:function(){this._started&&(this.adapter.stop(),this.unbind(i),this._started=!1)},change:function(t){this.bind(i,t)},replace:function(t,n){this._navigate(t,n,(function(n){n.replace(t),this.locations[this.locations.length-1]=this.current}))},navigate:function(t,n){if("#:back"===t)return this.backCalled=!0,void this.adapter.back();this._navigate(t,n,(function(n){n.navigate(t),this.locations.push(this.current)}))},_navigate:function(t,n,e){var a=this.adapter;t=a.normalize(t),this.current!==t&&this.current!==decodeURIComponent(t)?!n&&this.trigger(i,{url:t,decode:!1})||(this.current=t,e.call(this,a),this.historyLength=a.length()):this.trigger(r)},_checkUrl:function(){var t=this.adapter,n=t.current(),e=t.length(),r=this.historyLength===e,a=n===this.locations[this.locations.length-2]&&r,o=this.backCalled,s=this.current;return null===n||this.current===n||this.current===decodeURIComponent(n)||(this.historyLength=e,this.backCalled=!1,this.current=n,a&&this.trigger("back",{url:s,to:n})?(t.forward(),void(this.current=s)):this.trigger(i,{url:n,backButtonPressed:!o})?(a?t.forward():(t.back(),this.historyLength--),void(this.current=s)):void(a?this.locations.pop():this.locations.push(n)))}});e.History=m,e.History.HistoryAdapter=g,e.History.HashAdapter=w,e.History.PushStateAdapter=b,e.absoluteURL=l,e.history=new m}(window.kendo.jQuery),function(){var t=window.kendo,n=t.history,e=t.Observable,i="init",r="routeMissing",a="change",o="back",s="same",h=/\((.*?)\)/g,c=/(\(\?)?:\w+/g,u=/\*\w+/g,l=/[\-{}\[\]+?.,\\\^$|#\s]/g;function f(t,n){return n?t:"([^/]+)"}function d(t){return t.replace(/(\?.*)|(#.*)/g,"")}var p=t.Class.extend({init:function(t,n,e){t instanceof RegExp||(t=function(t,n){return new RegExp("^"+t.replace(l,"\\$&").replace(h,"(?:$1)?").replace(c,f).replace(u,"(.*?)")+"$",n?"i":"")}(t,e)),this.route=t,this._callback=n},callback:function(n,e,i){var r,a,o=0,s=t.parseQueryStringParams(n);if(s._back=e,n=d(n),a=(r=this.route.exec(n).slice(1)).length,i)for(;o<a;o++)void 0!==r[o]&&(r[o]=decodeURIComponent(r[o]));r.push(s),this._callback.apply(null,r)},worksWith:function(t,n,e){return!!this.route.test(d(t))&&(this.callback(t,n,e),!0)}}),g=e.extend({init:function(t){t||(t={}),e.fn.init.call(this),this.routes=[],this.pushState=t.pushState,this.hashBang=t.hashBang,this.root=t.root,this.ignoreCase=!1!==t.ignoreCase,this.bind([i,r,a,s,o],t)},destroy:function(){n.unbind(a,this._urlChangedProxy),n.unbind(s,this._sameProxy),n.unbind(o,this._backProxy),this.unbind()},start:function(){var t=this,e=function(n){t._back(n)},r=function(n){t._urlChanged(n)};n.start({same:function(){t._same()},change:r,back:e,pushState:t.pushState,hashBang:t.hashBang,root:t.root});var a={url:n.current||"/",preventDefault:$.noop};t.trigger(i,a)||t._urlChanged(a),this._urlChangedProxy=r,this._backProxy=e},route:function(t,n){this.routes.push(new p(t,n,this.ignoreCase))},navigate:function(n,e){t.history.navigate(n,e)},replace:function(n,e){t.history.replace(n,e)},_back:function(t){this.trigger(o,{url:t.url,to:t.to})&&t.preventDefault()},_same:function(){this.trigger(s)},_urlChanged:function(n){var e=n.url,i=!!n.decode,o=n.backButtonPressed;if(e||(e="/"),this.trigger(a,{url:n.url,params:t.parseQueryStringParams(n.url),backButtonPressed:o}))n.preventDefault();else{for(var s=0,h=this.routes,c=h.length;s<c;s++)if(h[s].worksWith(e,o,i))return;this.trigger(r,{url:e,params:t.parseQueryStringParams(e),backButtonPressed:o})&&n.preventDefault()}}});t.Router=g}()})); //# sourceMappingURL=kendo.router.min.js.map