1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.locationPluginFactory = exports.buildUrl = exports.parseUrl = exports.getParams = exports.keyValsToObjectR = void 0;
|
4 | var common_1 = require("../common");
|
5 | exports.keyValsToObjectR = function (accum, _a) {
|
6 | var key = _a[0], val = _a[1];
|
7 | if (!accum.hasOwnProperty(key)) {
|
8 | accum[key] = val;
|
9 | }
|
10 | else if (common_1.isArray(accum[key])) {
|
11 | accum[key].push(val);
|
12 | }
|
13 | else {
|
14 | accum[key] = [accum[key], val];
|
15 | }
|
16 | return accum;
|
17 | };
|
18 | exports.getParams = function (queryString) {
|
19 | return queryString.split('&').filter(common_1.identity).map(common_1.splitEqual).reduce(exports.keyValsToObjectR, {});
|
20 | };
|
21 | function parseUrl(url) {
|
22 | var orEmptyString = function (x) { return x || ''; };
|
23 | var _a = common_1.splitHash(url).map(orEmptyString), beforehash = _a[0], hash = _a[1];
|
24 | var _b = common_1.splitQuery(beforehash).map(orEmptyString), path = _b[0], search = _b[1];
|
25 | return { path: path, search: search, hash: hash, url: url };
|
26 | }
|
27 | exports.parseUrl = parseUrl;
|
28 | exports.buildUrl = function (loc) {
|
29 | var path = loc.path();
|
30 | var searchObject = loc.search();
|
31 | var hash = loc.hash();
|
32 | var search = Object.keys(searchObject)
|
33 | .map(function (key) {
|
34 | var param = searchObject[key];
|
35 | var vals = common_1.isArray(param) ? param : [param];
|
36 | return vals.map(function (val) { return key + '=' + val; });
|
37 | })
|
38 | .reduce(common_1.unnestR, [])
|
39 | .join('&');
|
40 | return path + (search ? '?' + search : '') + (hash ? '#' + hash : '');
|
41 | };
|
42 | function locationPluginFactory(name, isHtml5, serviceClass, configurationClass) {
|
43 | return function (uiRouter) {
|
44 | var service = (uiRouter.locationService = new serviceClass(uiRouter));
|
45 | var configuration = (uiRouter.locationConfig = new configurationClass(uiRouter, isHtml5));
|
46 | function dispose(router) {
|
47 | router.dispose(service);
|
48 | router.dispose(configuration);
|
49 | }
|
50 | return { name: name, service: service, configuration: configuration, dispose: dispose };
|
51 | };
|
52 | }
|
53 | exports.locationPluginFactory = locationPluginFactory;
|
54 |
|
\ | No newline at end of file |