UNPKG

@progress/kendo-ui

Version:

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

3 lines 6.66 kB
/* @license */ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.core.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.core.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Router={}),e.kendo._globals.Core))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let n={id:`router`,name:`Router`,category:`framework`,description:`The Router class is responsible for tracking the application state and navigating between the application states.`,depends:[`core`],hidden:!1};(function(e,t){var n=window.kendo,r=`change`,i=`back`,a=`same`,o=n.support,s=window.location,c=window.history,l=50,u=n.support.browser.msie,d=/^#*/,f=window.document;function p(e,t){return t?(e+`/`===t&&(e=t),RegExp(`^`+t,`i`).test(e)||(e=t+`/`+e),s.protocol+`//`+(s.host+`/`+e).replace(/\/\/+/g,`/`)):e}function m(e){return e?`#!`:`#`}function h(e){var t=s.href;return e===`#!`&&t.indexOf(`#`)>-1&&t.indexOf(`#!`)<0?null:t.split(e)[1]||``}function g(e,t){return t.indexOf(e)===0?t.substr(e.length).replace(/\/\//g,`/`):t}var _=n.Class.extend({back:function(){u?setTimeout(function(){c.back()}):c.back()},forward:function(){u?setTimeout(function(){c.forward()}):c.forward()},length:function(){return c.length},replaceLocation:function(e){s.replace(e)}}),v=_.extend({init:function(e){this.root=e},navigate:function(e){c.pushState({},f.title,p(e,this.root))},replace:function(e){c.replaceState({},f.title,p(e,this.root))},normalize:function(e){return g(this.root,e)},current:function(){var e=s.pathname;return s.search&&(e+=s.search),g(this.root,e)},change:function(t){e(window).bind(`popstate.kendo`,t)},stop:function(){e(window).unbind(`popstate.kendo`)},normalizeCurrent:function(e){var t,n=e.root,r=s.pathname,i=h(m(e.hashBang));n===r+`/`&&(t=n),n===r&&i&&(t=p(i.replace(d,``),n)),t&&c.pushState({},f.title,t)}});function y(e){return e.replace(/^(#)?/,`#`)}function b(e){return e.replace(/^(#(!)?)?/,`#!`)}var x=_.extend({init:function(e){this._id=n.guid(),this.prefix=m(e),this.fix=e?b:y},navigate:function(e){s.hash=this.fix(e)},replace:function(e){this.replaceLocation(this.fix(e))},normalize:function(e){return e.indexOf(this.prefix)<0?e:e.split(this.prefix)[1]},change:function(t){o.hashChange?e(window).on(`hashchange.`+this._id,t):this._interval=setInterval(t,l)},stop:function(){e(window).off(`hashchange.`+this._id),clearInterval(this._interval)},current:function(){return h(this.prefix)},normalizeCurrent:function(e){var t=s.pathname,n=e.root;return e.pushState&&n!==t?(this.replaceLocation(n+this.prefix+g(n,t)),!0):!1}}),S=n.Observable.extend({start:function(t){if(t||={},this.bind([r,i,a],t),!this._started){this._started=!0,t.root=t.root||`/`;var n=this.createAdapter(t),o;n.normalizeCurrent(t)||(o=n.current(),e.extend(this,{adapter:n,root:t.root,historyLength:n.length(),current:o,locations:[o]}),n.change(this._checkUrl.bind(this)))}},createAdapter:function(e){return o.pushState&&e.pushState?new v(e.root):new x(e.hashBang)},stop:function(){this._started&&=(this.adapter.stop(),this.unbind(r),!1)},change:function(e){this.bind(r,e)},replace:function(e,t){this._navigate(e,t,function(t){t.replace(e),this.locations[this.locations.length-1]=this.current})},navigate:function(e,t){if(e===`#:back`){this.backCalled=!0,this.adapter.back();return}this._navigate(e,t,function(t){t.navigate(e),this.locations.push(this.current)})},_navigate:function(e,t,n){var i=this.adapter;if(e=i.normalize(e),this.current===e||this.current===decodeURIComponent(e)){this.trigger(a);return}!t&&this.trigger(r,{url:e,decode:!1})||(this.current=e,n.call(this,i),this.historyLength=i.length())},_checkUrl:function(){var e=this.adapter,t=e.current(),n=e.length(),i=this.historyLength===n,a=t===this.locations[this.locations.length-2]&&i,o=this.backCalled,s=this.current;if(t===null||this.current===t||this.current===decodeURIComponent(t))return!0;if(this.historyLength=n,this.backCalled=!1,this.current=t,a&&this.trigger(`back`,{url:s,to:t})){e.forward(),this.current=s;return}if(this.trigger(r,{url:t,backButtonPressed:!o})){a?e.forward():(e.back(),this.historyLength--),this.current=s;return}a?this.locations.pop():this.locations.push(t)}});n.History=S,n.History.HistoryAdapter=_,n.History.HashAdapter=x,n.History.PushStateAdapter=v,n.absoluteURL=p,n.history=new S})(window.kendo.jQuery);var r=kendo;(function(){var e=window.kendo,t=e.history,n=e.Observable,r=`init`,i=`routeMissing`,a=`change`,o=`back`,s=`same`,c=/\((.*?)\)/g,l=/(\(\?)?:\w+/g,u=/\*\w+/g,d=/[\-{}\[\]+?.,\\\^$|#\s]/g;function f(e,t){return t?e:`([^/]+)`}function p(e,t){return RegExp(`^`+e.replace(d,`\\$&`).replace(c,`(?:$1)?`).replace(l,f).replace(u,`(.*?)`)+`$`,t?`i`:``)}function m(e){return e.replace(/(\?.*)|(#.*)/g,``)}var h=e.Class.extend({init:function(e,t,n){e instanceof RegExp||(e=p(e,n)),this.route=e,this._callback=t},callback:function(t,n,r){var i,a=0,o,s=e.parseQueryStringParams(t);if(s._back=n,t=m(t),i=this.route.exec(t).slice(1),o=i.length,r)for(;a<o;a++)i[a]!==void 0&&(i[a]=decodeURIComponent(i[a]));i.push(s),this._callback.apply(null,i)},worksWith:function(e,t,n){return this.route.test(m(e))?(this.callback(e,t,n),!0):!1}});e.Router=n.extend({init:function(e){e||={},n.fn.init.call(this),this.routes=[],this.pushState=e.pushState,this.hashBang=e.hashBang,this.root=e.root,this.ignoreCase=e.ignoreCase!==!1,this.bind([r,i,a,s,o],e)},destroy:function(){t.unbind(a,this._urlChangedProxy),t.unbind(s,this._sameProxy),t.unbind(o,this._backProxy),this.unbind()},start:function(){var e=this,n=function(){e._same()},i=function(t){e._back(t)},a=function(t){e._urlChanged(t)};t.start({same:n,change:a,back:i,pushState:e.pushState,hashBang:e.hashBang,root:e.root});var o={url:t.current||`/`,preventDefault:$.noop};e.trigger(r,o)||e._urlChanged(o),this._urlChangedProxy=a,this._backProxy=i},route:function(e,t){this.routes.push(new h(e,t,this.ignoreCase))},navigate:function(t,n){e.history.navigate(t,n)},replace:function(t,n){e.history.replace(t,n)},_back:function(e){this.trigger(o,{url:e.url,to:e.to})&&e.preventDefault()},_same:function(){this.trigger(s)},_urlChanged:function(t){var n=t.url,r=!!t.decode,o=t.backButtonPressed;if(n||=`/`,this.trigger(a,{url:t.url,params:e.parseQueryStringParams(t.url),backButtonPressed:o})){t.preventDefault();return}for(var s=0,c=this.routes,l,u=c.length;s<u;s++)if(l=c[s],l.worksWith(n,o,r))return;this.trigger(i,{url:n,params:e.parseQueryStringParams(n),backButtonPressed:o})&&t.preventDefault()}})})(),e.__meta__=n,e.default=r}); //# sourceMappingURL=kendo.router.min.js.map