UNPKG

@uirouter/core

Version:

UI-Router Core: Framework agnostic, State-based routing for JavaScript Single Page Apps

132 lines 5.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UrlRouter = void 0; var common_1 = require("../common"); var urlRule_1 = require("./urlRule"); function appendBasePath(url, isHtml5, absolute, baseHref) { if (baseHref === '/') return url; if (isHtml5) return common_1.stripLastPathElement(baseHref) + url; if (absolute) return baseHref.slice(1) + url; return url; } /** * Updates URL and responds to URL changes * * ### Deprecation warning: * This class is now considered to be an internal API * Use the [[UrlService]] instead. * For configuring URL rules, use the [[UrlRules]] which can be found as [[UrlService.rules]]. */ var UrlRouter = /** @class */ (function () { /** @internal */ function UrlRouter(/** @internal */ router) { var _this = this; this.router = router; // Delegate these calls to [[UrlService]] /** @deprecated use [[UrlService.sync]]*/ this.sync = function (evt) { return _this.router.urlService.sync(evt); }; /** @deprecated use [[UrlService.listen]]*/ this.listen = function (enabled) { return _this.router.urlService.listen(enabled); }; /** @deprecated use [[UrlService.deferIntercept]]*/ this.deferIntercept = function (defer) { return _this.router.urlService.deferIntercept(defer); }; /** @deprecated use [[UrlService.match]]*/ this.match = function (urlParts) { return _this.router.urlService.match(urlParts); }; // Delegate these calls to [[UrlRules]] /** @deprecated use [[UrlRules.initial]]*/ this.initial = function (handler) { return _this.router.urlService.rules.initial(handler); }; /** @deprecated use [[UrlRules.otherwise]]*/ this.otherwise = function (handler) { return _this.router.urlService.rules.otherwise(handler); }; /** @deprecated use [[UrlRules.removeRule]]*/ this.removeRule = function (rule) { return _this.router.urlService.rules.removeRule(rule); }; /** @deprecated use [[UrlRules.rule]]*/ this.rule = function (rule) { return _this.router.urlService.rules.rule(rule); }; /** @deprecated use [[UrlRules.rules]]*/ this.rules = function () { return _this.router.urlService.rules.rules(); }; /** @deprecated use [[UrlRules.sort]]*/ this.sort = function (compareFn) { return _this.router.urlService.rules.sort(compareFn); }; /** @deprecated use [[UrlRules.when]]*/ this.when = function (matcher, handler, options) { return _this.router.urlService.rules.when(matcher, handler, options); }; this.urlRuleFactory = new urlRule_1.UrlRuleFactory(router); } /** Internal API. */ UrlRouter.prototype.update = function (read) { var $url = this.router.locationService; if (read) { this.location = $url.url(); return; } if ($url.url() === this.location) return; $url.url(this.location, true); }; /** * Internal API. * * Pushes a new location to the browser history. * * @internal * @param urlMatcher * @param params * @param options */ UrlRouter.prototype.push = function (urlMatcher, params, options) { var replace = options && !!options.replace; this.router.urlService.url(urlMatcher.format(params || {}), replace); }; /** * Builds and returns a URL with interpolated parameters * * #### Example: * ```js * matcher = $umf.compile("/about/:person"); * params = { person: "bob" }; * $bob = $urlRouter.href(matcher, params); * // $bob == "/about/bob"; * ``` * * @param urlMatcher The [[UrlMatcher]] object which is used as the template of the URL to generate. * @param params An object of parameter values to fill the matcher's required parameters. * @param options Options object. The options are: * * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. "http://www.example.com/fullurl". * * @returns Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher` */ UrlRouter.prototype.href = function (urlMatcher, params, options) { var url = urlMatcher.format(params); if (url == null) return null; options = options || { absolute: false }; var cfg = this.router.urlService.config; var isHtml5 = cfg.html5Mode(); if (!isHtml5 && url !== null) { url = '#' + cfg.hashPrefix() + url; } url = appendBasePath(url, isHtml5, options.absolute, cfg.baseHref()); if (!options.absolute || !url) { return url; } var slash = !isHtml5 && url ? '/' : ''; var cfgPort = cfg.port(); var port = (cfgPort === 80 || cfgPort === 443 ? '' : ':' + cfgPort); return [cfg.protocol(), '://', cfg.host(), port, slash, url].join(''); }; Object.defineProperty(UrlRouter.prototype, "interceptDeferred", { /** @deprecated use [[UrlService.interceptDeferred]]*/ get: function () { return this.router.urlService.interceptDeferred; }, enumerable: false, configurable: true }); return UrlRouter; }()); exports.UrlRouter = UrlRouter; //# sourceMappingURL=urlRouter.js.map