dothtml 5.2.9 → 5.2.11
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/lib/arg-callback-obj.d.ts +29 -29
- package/lib/arg-callback-obj.js +63 -63
- package/lib/built-in-components/nav-link.d.ts +8 -8
- package/lib/built-in-components/nav-link.js +23 -23
- package/lib/built-in-components/router.d.ts +57 -57
- package/lib/built-in-components/router.js +281 -281
- package/lib/built-in-components/router.js.map +1 -1
- package/lib/component.d.ts +82 -82
- package/lib/component.js +328 -328
- package/lib/dot-util.d.ts +26 -26
- package/lib/dot-util.js +61 -61
- package/lib/dot.d.ts +5 -5
- package/lib/dot.js +1121 -1095
- package/lib/dot.js.map +1 -1
- package/lib/dothtml.d.ts +29 -28
- package/lib/dothtml.js +14 -37
- package/lib/dothtml.js.map +1 -1
- package/lib/err.d.ts +2 -2
- package/lib/err.js +25 -25
- package/lib/event-bus.d.ts +10 -10
- package/lib/event-bus.js +36 -36
- package/lib/i-dot.d.ts +689 -674
- package/lib/i-dot.js +2 -2
- package/lib/node-polyfill.d.ts +2 -2
- package/lib/node-polyfill.js +13 -13
- package/lib/observable-array.d.ts +49 -49
- package/lib/observable-array.js +273 -273
- package/lib/pages/home-page.d.ts +9 -0
- package/lib/pages/home-page.js +24 -0
- package/lib/pages/home-page.js.map +1 -0
- package/lib/styling/css-types.ts/css-angle.d.ts +7 -7
- package/lib/styling/css-types.ts/css-angle.js +21 -21
- package/lib/styling/css-types.ts/css-color.d.ts +9 -9
- package/lib/styling/css-types.ts/css-color.js +823 -823
- package/lib/styling/css-types.ts/css-complex.d.ts +7 -7
- package/lib/styling/css-types.ts/css-complex.js +22 -22
- package/lib/styling/css-types.ts/css-data-type.d.ts +5 -5
- package/lib/styling/css-types.ts/css-data-type.js +8 -8
- package/lib/styling/css-types.ts/css-filter.d.ts +22 -22
- package/lib/styling/css-types.ts/css-filter.js +120 -120
- package/lib/styling/css-types.ts/css-length.d.ts +7 -7
- package/lib/styling/css-types.ts/css-length.js +23 -23
- package/lib/styling/css-types.ts/css-number.d.ts +6 -6
- package/lib/styling/css-types.ts/css-number.js +16 -16
- package/lib/styling/css-types.ts/css-percentage.d.ts +5 -5
- package/lib/styling/css-types.ts/css-percentage.js +12 -12
- package/lib/styling/css-types.ts/css-transform.d.ts +38 -38
- package/lib/styling/css-types.ts/css-transform.js +182 -182
- package/lib/styling/css-types.ts/css-unknown.d.ts +6 -6
- package/lib/styling/css-types.ts/css-unknown.js +16 -16
- package/lib/styling/css-types.ts/css-url.d.ts +6 -6
- package/lib/styling/css-types.ts/css-url.js +44 -44
- package/lib/styling/i-dotcss.d.ts +1085 -1085
- package/lib/styling/i-dotcss.js +2 -2
- package/lib/styling/style-builder.d.ts +24 -24
- package/lib/styling/style-builder.js +814 -814
- package/lib/styling/unit-function-tables.d.ts +10 -10
- package/lib/styling/unit-function-tables.js +26 -26
- package/package.json +9 -8
|
@@ -1,282 +1,282 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// ROUTING:
|
|
3
|
-
// TODO: Put this in the register hook for router.
|
|
4
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
-
};
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
const component_1 = __importDefault(require("../component"));
|
|
9
|
-
const dot_1 = __importDefault(require("../dot"));
|
|
10
|
-
const err_1 = __importDefault(require("../err"));
|
|
11
|
-
class DotRouter extends component_1.default {
|
|
12
|
-
// TODO: Test to make sure allRouters get cleared when a nested router gets deleted.
|
|
13
|
-
static { this.allRouters = {}; }
|
|
14
|
-
static { this.routerId = 1; }
|
|
15
|
-
static { this.mayRedirect = false; }
|
|
16
|
-
static _get(url, success, fail) {
|
|
17
|
-
var xhttp = new XMLHttpRequest();
|
|
18
|
-
xhttp.onreadystatechange = function () {
|
|
19
|
-
if (this.readyState == 4) {
|
|
20
|
-
if (this.status == 200) {
|
|
21
|
-
success && success(this);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
fail && fail(this);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
xhttp.open("GET", url, true);
|
|
29
|
-
xhttp.send();
|
|
30
|
-
}
|
|
31
|
-
static { this.routerEventSet = false; }
|
|
32
|
-
static setupPopupFunction() {
|
|
33
|
-
!DotRouter.routerEventSet && (DotRouter.routerEventSet = true) ? window.onpopstate = function (e) {
|
|
34
|
-
if (e.state) {
|
|
35
|
-
dot_1.default.navigate(e.state.path, true);
|
|
36
|
-
document.title = e.state.pageTitle;
|
|
37
|
-
}
|
|
38
|
-
} : 0;
|
|
39
|
-
}
|
|
40
|
-
constructor(params) {
|
|
41
|
-
super();
|
|
42
|
-
this.id = 0;
|
|
43
|
-
this.outlet = null;
|
|
44
|
-
this.navId = 0;
|
|
45
|
-
this.currentRoute = null;
|
|
46
|
-
this.currentParams = null;
|
|
47
|
-
this.routesAndSegments = [];
|
|
48
|
-
this.params = params;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* TODO: convert to interface.
|
|
52
|
-
* @param {Object} params - Parameters.
|
|
53
|
-
* @param {Array.<{path: string, title: string, component: Object}>} params.routes - Array of routes.
|
|
54
|
-
* @param {boolean} params.autoNavigate - Router will automatically navigate when outlet is created.
|
|
55
|
-
* @param {Function} params.onNavigateInit - Occurs before any request is sent, and before the router outlet is emptied.
|
|
56
|
-
* @param {Function} params.onError - Occurs in the event of an HTTP error.
|
|
57
|
-
* @param {Function} params.onResponse - Occurs after a successful HTTP response, but before rendering.
|
|
58
|
-
* @param {Function} params.onComplete - Occurs after an uncancelled route completes without an error.
|
|
59
|
-
*/
|
|
60
|
-
builder() {
|
|
61
|
-
let t = this;
|
|
62
|
-
if (!t.params || !t.params.routes)
|
|
63
|
-
(0, err_1.default)("R");
|
|
64
|
-
;
|
|
65
|
-
t.routesAndSegments = t.params.routes.map(r => {
|
|
66
|
-
if (r.path === null || r.path === undefined)
|
|
67
|
-
(0, err_1.default)("R");
|
|
68
|
-
return { path: r.path, segments: r.path.split("/") };
|
|
69
|
-
});
|
|
70
|
-
//t.navigate = function(p, nh, f){return routerNavigate.call(t, p, nh, f)};
|
|
71
|
-
if (t.params.autoNavigate === undefined)
|
|
72
|
-
t.params.autoNavigate = true;
|
|
73
|
-
var o = dot_1.default.el("dothtml-router");
|
|
74
|
-
t.outlet = o.getLast();
|
|
75
|
-
t.id = DotRouter.routerId++;
|
|
76
|
-
DotRouter.allRouters[t.id] = t;
|
|
77
|
-
// This use to be here, but not sure what the point of it is anymore. It's not used anywhere.
|
|
78
|
-
// t.outlet.dothtmlRouterId = t.id;
|
|
79
|
-
return o;
|
|
80
|
-
}
|
|
81
|
-
registered() {
|
|
82
|
-
}
|
|
83
|
-
ready() {
|
|
84
|
-
// If there is a route left inside the route queue
|
|
85
|
-
DotRouter.setupPopupFunction();
|
|
86
|
-
// TODO: this method is messed up. Params might not be set when replaceState is called.
|
|
87
|
-
if (this.params.autoNavigate) {
|
|
88
|
-
DotRouter.mayRedirect = true;
|
|
89
|
-
var params = this.navigate(window.location.pathname + (window.location.hash || ""), true);
|
|
90
|
-
DotRouter.mayRedirect = false;
|
|
91
|
-
}
|
|
92
|
-
if (history.pushState)
|
|
93
|
-
history.replaceState({ "pageTitle": params.title || document.title, "path": params.path }, "", params.path);
|
|
94
|
-
else
|
|
95
|
-
window.location.hash = params.path;
|
|
96
|
-
}
|
|
97
|
-
deleting() {
|
|
98
|
-
delete DotRouter.allRouters[this.id];
|
|
99
|
-
}
|
|
100
|
-
navigate(path, noHistory = false, force = false) {
|
|
101
|
-
let t = this;
|
|
102
|
-
//console.log("NAVIGATING", path);
|
|
103
|
-
// Step 1: parse the path into a route queue:
|
|
104
|
-
path = path || "";
|
|
105
|
-
if (typeof path != "string")
|
|
106
|
-
path = path + "";
|
|
107
|
-
var hashPath = path;
|
|
108
|
-
if (path.indexOf("#") != -1)
|
|
109
|
-
hashPath = path.split("#")[1];
|
|
110
|
-
var hashParts = path.split("#");
|
|
111
|
-
var allQueues = [];
|
|
112
|
-
// Route navigating.
|
|
113
|
-
var routeQueue = hashParts[0].split("?")[0].split("/");
|
|
114
|
-
routeQueue[0] === "" ? routeQueue.shift() : 0;
|
|
115
|
-
allQueues.push(routeQueue);
|
|
116
|
-
// Hash navigating.
|
|
117
|
-
var tryHashQueue = hashParts.length > 1 ? hashParts[1].split("/") : null;
|
|
118
|
-
tryHashQueue ? ((tryHashQueue[0] === "" ? tryHashQueue.shift() : 0)) : 0;
|
|
119
|
-
tryHashQueue ? ((routeQueue.length > 1 ? allQueues.push(tryHashQueue) : allQueues.unshift(tryHashQueue))) : 0;
|
|
120
|
-
var cancel = false;
|
|
121
|
-
var navParams = {
|
|
122
|
-
cancel: function () {
|
|
123
|
-
cancel = true;
|
|
124
|
-
navParams.wasCancelled = true;
|
|
125
|
-
},
|
|
126
|
-
element: t.outlet,
|
|
127
|
-
httpResponse: null,
|
|
128
|
-
isNew: true,
|
|
129
|
-
params: null,
|
|
130
|
-
path: path,
|
|
131
|
-
title: null,
|
|
132
|
-
wasCancelled: false
|
|
133
|
-
};
|
|
134
|
-
// Step 2: determine the last router that is correctly loaded.
|
|
135
|
-
// var deepestRouter = null;
|
|
136
|
-
var bestRoute = null;
|
|
137
|
-
// Loop through the router stack from start to finish to find the deepest router and the best route to take.
|
|
138
|
-
// for(var i = 0; i < routerOutletStack.length; i++){
|
|
139
|
-
// var candidate = routerOutletStack[i];
|
|
140
|
-
// Find the an available route that matches.
|
|
141
|
-
// bestRoute = null;
|
|
142
|
-
for (var q in allQueues) {
|
|
143
|
-
var Q = allQueues[q];
|
|
144
|
-
var rFound = false;
|
|
145
|
-
for (var r in t.routesAndSegments) {
|
|
146
|
-
rFound = true;
|
|
147
|
-
var nextRoute = t.routesAndSegments[r];
|
|
148
|
-
var prms = {};
|
|
149
|
-
var rs = 0;
|
|
150
|
-
var ps = 0;
|
|
151
|
-
var lastRn = null;
|
|
152
|
-
while (1) {
|
|
153
|
-
var rSn = nextRoute.segments[rs] || null;
|
|
154
|
-
var pSn = Q[ps] || null;
|
|
155
|
-
if (rSn === null && pSn === null)
|
|
156
|
-
break;
|
|
157
|
-
if (rSn === null && pSn !== null || rSn !== null && pSn === null) {
|
|
158
|
-
rFound = false;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
if (rSn === null && lastRn == "*")
|
|
162
|
-
rSn = "*";
|
|
163
|
-
if (rSn == pSn || rSn == "+" || rSn == "*") { // It's the route, or it's a wildcard.
|
|
164
|
-
rs++;
|
|
165
|
-
}
|
|
166
|
-
else if (rSn.length > 2 && rSn.charAt(0) == "{" && rSn.charAt(rSn.length - 1) == "}") { // It's a parameterized route.
|
|
167
|
-
rs++;
|
|
168
|
-
prms[rSn.substring(1, rSn.length - 1)] = pSn;
|
|
169
|
-
}
|
|
170
|
-
else if (lastRn != "*") { // If the route doesn't match but the previous term was a super-wildcard, do nothing. Else, break.
|
|
171
|
-
rFound = false;
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
ps++;
|
|
175
|
-
lastRn = rSn;
|
|
176
|
-
}
|
|
177
|
-
if (rFound) {
|
|
178
|
-
bestRoute = nextRoute;
|
|
179
|
-
navParams.params = prms;
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
if (rFound) {
|
|
184
|
-
if (Q == routeQueue) {
|
|
185
|
-
if (!history.pushState && DotRouter.mayRedirect) {
|
|
186
|
-
window.location.hash = path;
|
|
187
|
-
window.location.pathname = "/";
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
;
|
|
193
|
-
if (Q == tryHashQueue) {
|
|
194
|
-
path = hashPath;
|
|
195
|
-
navParams.path = path;
|
|
196
|
-
if (history.pushState) {
|
|
197
|
-
window.location.hash = "";
|
|
198
|
-
history.replaceState({ "pageTitle": document.title, "path": path }, document.title, path);
|
|
199
|
-
}
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
navParams.isNew = !(!force && t.currentRoute == bestRoute && (!t.currentParams || t.currentParams == navParams.params || JSON.stringify(t.currentParams) === JSON.stringify(navParams.params)));
|
|
206
|
-
t.params.onNavigateInit && t.params.onNavigateInit(navParams);
|
|
207
|
-
if (!navParams.isNew || cancel)
|
|
208
|
-
return navParams;
|
|
209
|
-
t.currentRoute = bestRoute;
|
|
210
|
-
t.currentParams = navParams.params;
|
|
211
|
-
var ro = t.outlet;
|
|
212
|
-
(0, dot_1.default)(ro).empty();
|
|
213
|
-
var navId = ++t.navId;
|
|
214
|
-
//if(deepestRouter == null) return this;
|
|
215
|
-
if (routeQueue.length == 0)
|
|
216
|
-
return navParams;
|
|
217
|
-
if (bestRoute == null)
|
|
218
|
-
return navParams;
|
|
219
|
-
navParams.title = bestRoute.title;
|
|
220
|
-
if (typeof bestRoute.component == "string") {
|
|
221
|
-
DotRouter._get(bestRoute.component, function (result) {
|
|
222
|
-
var text = result.responseText;
|
|
223
|
-
navParams.httpResponse = result;
|
|
224
|
-
if (navId != t.navId)
|
|
225
|
-
return navParams;
|
|
226
|
-
t.params.onResponse && t.params.onResponse(navParams);
|
|
227
|
-
if (cancel)
|
|
228
|
-
return navParams;
|
|
229
|
-
if (bestRoute.component.split("?")[0].split("#")[0].toLowerCase().indexOf(".js") == bestRoute.component.length - 3) {
|
|
230
|
-
try {
|
|
231
|
-
text = Function("var exports=null,module={},route=arguments[0];" + text + "\r\nreturn module.exports || exports;")(navParams);
|
|
232
|
-
}
|
|
233
|
-
catch (e) {
|
|
234
|
-
//e.fileName = bestRoute.component;
|
|
235
|
-
console.error(e);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
(0, dot_1.default)(ro).h(text);
|
|
239
|
-
t.params.onComplete && t.params.onComplete(navParams);
|
|
240
|
-
}, function (result) {
|
|
241
|
-
navParams.httpResponse = result;
|
|
242
|
-
t.params.onError && t.params.onError(navParams);
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
(0, dot_1.default)(ro).h(bestRoute.component.call(dot_1.default, navParams));
|
|
247
|
-
t.params.onComplete && t.params.onComplete(navParams);
|
|
248
|
-
}
|
|
249
|
-
return navParams;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
exports.default = DotRouter;
|
|
253
|
-
// Extend dot.
|
|
254
|
-
dot_1.default.navigate = function (path, noHistory = false, force = false) {
|
|
255
|
-
DotRouter.setupPopupFunction();
|
|
256
|
-
var K = Object.keys(DotRouter.allRouters);
|
|
257
|
-
var lastNavParams = {};
|
|
258
|
-
var bestTitle = document.title;
|
|
259
|
-
for (var k = 0; k < K.length; k++) {
|
|
260
|
-
var kk = K[k];
|
|
261
|
-
var r = DotRouter.allRouters[kk];
|
|
262
|
-
if (r) {
|
|
263
|
-
var currentNavParams = r.navigate(path, noHistory, force);
|
|
264
|
-
if (currentNavParams.isNew && !currentNavParams.wasCancelled) {
|
|
265
|
-
lastNavParams = currentNavParams;
|
|
266
|
-
bestTitle = lastNavParams.title || bestTitle;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
try {
|
|
271
|
-
if (lastNavParams && !noHistory) {
|
|
272
|
-
//if(history.replaceState) history.replaceState({"pageTitle":title, "path": path}, title, path);
|
|
273
|
-
if (history.pushState)
|
|
274
|
-
history.pushState({ "pageTitle": bestTitle, "path": lastNavParams.path }, bestTitle, lastNavParams.path);
|
|
275
|
-
else
|
|
276
|
-
window.location.hash = lastNavParams.path;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
catch (e) { }
|
|
280
|
-
return this;
|
|
281
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
// ROUTING:
|
|
3
|
+
// TODO: Put this in the register hook for router.
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const component_1 = __importDefault(require("../component"));
|
|
9
|
+
const dot_1 = __importDefault(require("../dot"));
|
|
10
|
+
const err_1 = __importDefault(require("../err"));
|
|
11
|
+
class DotRouter extends component_1.default {
|
|
12
|
+
// TODO: Test to make sure allRouters get cleared when a nested router gets deleted.
|
|
13
|
+
static { this.allRouters = {}; }
|
|
14
|
+
static { this.routerId = 1; }
|
|
15
|
+
static { this.mayRedirect = false; }
|
|
16
|
+
static _get(url, success, fail) {
|
|
17
|
+
var xhttp = new XMLHttpRequest();
|
|
18
|
+
xhttp.onreadystatechange = function () {
|
|
19
|
+
if (this.readyState == 4) {
|
|
20
|
+
if (this.status == 200) {
|
|
21
|
+
success && success(this);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
fail && fail(this);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
xhttp.open("GET", url, true);
|
|
29
|
+
xhttp.send();
|
|
30
|
+
}
|
|
31
|
+
static { this.routerEventSet = false; }
|
|
32
|
+
static setupPopupFunction() {
|
|
33
|
+
!DotRouter.routerEventSet && (DotRouter.routerEventSet = true) ? window.onpopstate = function (e) {
|
|
34
|
+
if (e.state) {
|
|
35
|
+
dot_1.default.navigate(e.state.path, true);
|
|
36
|
+
document.title = e.state.pageTitle;
|
|
37
|
+
}
|
|
38
|
+
} : 0;
|
|
39
|
+
}
|
|
40
|
+
constructor(params) {
|
|
41
|
+
super();
|
|
42
|
+
this.id = 0;
|
|
43
|
+
this.outlet = null;
|
|
44
|
+
this.navId = 0;
|
|
45
|
+
this.currentRoute = null;
|
|
46
|
+
this.currentParams = null;
|
|
47
|
+
this.routesAndSegments = [];
|
|
48
|
+
this.params = params;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* TODO: convert to interface.
|
|
52
|
+
* @param {Object} params - Parameters.
|
|
53
|
+
* @param {Array.<{path: string, title: string, component: Object}>} params.routes - Array of routes.
|
|
54
|
+
* @param {boolean} params.autoNavigate - Router will automatically navigate when outlet is created.
|
|
55
|
+
* @param {Function} params.onNavigateInit - Occurs before any request is sent, and before the router outlet is emptied.
|
|
56
|
+
* @param {Function} params.onError - Occurs in the event of an HTTP error.
|
|
57
|
+
* @param {Function} params.onResponse - Occurs after a successful HTTP response, but before rendering.
|
|
58
|
+
* @param {Function} params.onComplete - Occurs after an uncancelled route completes without an error.
|
|
59
|
+
*/
|
|
60
|
+
builder() {
|
|
61
|
+
let t = this;
|
|
62
|
+
if (!t.params || !t.params.routes)
|
|
63
|
+
(0, err_1.default)("R");
|
|
64
|
+
;
|
|
65
|
+
t.routesAndSegments = t.params.routes.map(r => {
|
|
66
|
+
if (r.path === null || r.path === undefined)
|
|
67
|
+
(0, err_1.default)("R");
|
|
68
|
+
return { path: r.path, segments: r.path.split("/") };
|
|
69
|
+
});
|
|
70
|
+
//t.navigate = function(p, nh, f){return routerNavigate.call(t, p, nh, f)};
|
|
71
|
+
if (t.params.autoNavigate === undefined)
|
|
72
|
+
t.params.autoNavigate = true;
|
|
73
|
+
var o = dot_1.default.el("dothtml-router");
|
|
74
|
+
t.outlet = o.getLast();
|
|
75
|
+
t.id = DotRouter.routerId++;
|
|
76
|
+
DotRouter.allRouters[t.id] = t;
|
|
77
|
+
// This use to be here, but not sure what the point of it is anymore. It's not used anywhere.
|
|
78
|
+
// t.outlet.dothtmlRouterId = t.id;
|
|
79
|
+
return o;
|
|
80
|
+
}
|
|
81
|
+
registered() {
|
|
82
|
+
}
|
|
83
|
+
ready() {
|
|
84
|
+
// If there is a route left inside the route queue
|
|
85
|
+
DotRouter.setupPopupFunction();
|
|
86
|
+
// TODO: this method is messed up. Params might not be set when replaceState is called.
|
|
87
|
+
if (this.params.autoNavigate) {
|
|
88
|
+
DotRouter.mayRedirect = true;
|
|
89
|
+
var params = this.navigate(window.location.pathname + (window.location.hash || ""), true);
|
|
90
|
+
DotRouter.mayRedirect = false;
|
|
91
|
+
}
|
|
92
|
+
if (history.pushState)
|
|
93
|
+
history.replaceState({ "pageTitle": params.title || document.title, "path": params.path }, "", params.path);
|
|
94
|
+
else
|
|
95
|
+
window.location.hash = params.path;
|
|
96
|
+
}
|
|
97
|
+
deleting() {
|
|
98
|
+
delete DotRouter.allRouters[this.id];
|
|
99
|
+
}
|
|
100
|
+
navigate(path, noHistory = false, force = false) {
|
|
101
|
+
let t = this;
|
|
102
|
+
//console.log("NAVIGATING", path);
|
|
103
|
+
// Step 1: parse the path into a route queue:
|
|
104
|
+
path = path || "";
|
|
105
|
+
if (typeof path != "string")
|
|
106
|
+
path = path + "";
|
|
107
|
+
var hashPath = path;
|
|
108
|
+
if (path.indexOf("#") != -1)
|
|
109
|
+
hashPath = path.split("#")[1];
|
|
110
|
+
var hashParts = path.split("#");
|
|
111
|
+
var allQueues = [];
|
|
112
|
+
// Route navigating.
|
|
113
|
+
var routeQueue = hashParts[0].split("?")[0].split("/");
|
|
114
|
+
routeQueue[0] === "" ? routeQueue.shift() : 0;
|
|
115
|
+
allQueues.push(routeQueue);
|
|
116
|
+
// Hash navigating.
|
|
117
|
+
var tryHashQueue = hashParts.length > 1 ? hashParts[1].split("/") : null;
|
|
118
|
+
tryHashQueue ? ((tryHashQueue[0] === "" ? tryHashQueue.shift() : 0)) : 0;
|
|
119
|
+
tryHashQueue ? ((routeQueue.length > 1 ? allQueues.push(tryHashQueue) : allQueues.unshift(tryHashQueue))) : 0;
|
|
120
|
+
var cancel = false;
|
|
121
|
+
var navParams = {
|
|
122
|
+
cancel: function () {
|
|
123
|
+
cancel = true;
|
|
124
|
+
navParams.wasCancelled = true;
|
|
125
|
+
},
|
|
126
|
+
element: t.outlet,
|
|
127
|
+
httpResponse: null,
|
|
128
|
+
isNew: true,
|
|
129
|
+
params: null,
|
|
130
|
+
path: path,
|
|
131
|
+
title: null,
|
|
132
|
+
wasCancelled: false
|
|
133
|
+
};
|
|
134
|
+
// Step 2: determine the last router that is correctly loaded.
|
|
135
|
+
// var deepestRouter = null;
|
|
136
|
+
var bestRoute = null;
|
|
137
|
+
// Loop through the router stack from start to finish to find the deepest router and the best route to take.
|
|
138
|
+
// for(var i = 0; i < routerOutletStack.length; i++){
|
|
139
|
+
// var candidate = routerOutletStack[i];
|
|
140
|
+
// Find the an available route that matches.
|
|
141
|
+
// bestRoute = null;
|
|
142
|
+
for (var q in allQueues) {
|
|
143
|
+
var Q = allQueues[q];
|
|
144
|
+
var rFound = false;
|
|
145
|
+
for (var r in t.routesAndSegments) {
|
|
146
|
+
rFound = true;
|
|
147
|
+
var nextRoute = t.routesAndSegments[r];
|
|
148
|
+
var prms = {};
|
|
149
|
+
var rs = 0;
|
|
150
|
+
var ps = 0;
|
|
151
|
+
var lastRn = null;
|
|
152
|
+
while (1) {
|
|
153
|
+
var rSn = nextRoute.segments[rs] || null;
|
|
154
|
+
var pSn = Q[ps] || null;
|
|
155
|
+
if (rSn === null && pSn === null)
|
|
156
|
+
break;
|
|
157
|
+
if (rSn === null && pSn !== null || rSn !== null && pSn === null) {
|
|
158
|
+
rFound = false;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
if (rSn === null && lastRn == "*")
|
|
162
|
+
rSn = "*";
|
|
163
|
+
if (rSn == pSn || rSn == "+" || rSn == "*") { // It's the route, or it's a wildcard.
|
|
164
|
+
rs++;
|
|
165
|
+
}
|
|
166
|
+
else if (rSn.length > 2 && rSn.charAt(0) == "{" && rSn.charAt(rSn.length - 1) == "}") { // It's a parameterized route.
|
|
167
|
+
rs++;
|
|
168
|
+
prms[rSn.substring(1, rSn.length - 1)] = pSn;
|
|
169
|
+
}
|
|
170
|
+
else if (lastRn != "*") { // If the route doesn't match but the previous term was a super-wildcard, do nothing. Else, break.
|
|
171
|
+
rFound = false;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
ps++;
|
|
175
|
+
lastRn = rSn;
|
|
176
|
+
}
|
|
177
|
+
if (rFound) {
|
|
178
|
+
bestRoute = nextRoute;
|
|
179
|
+
navParams.params = prms;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (rFound) {
|
|
184
|
+
if (Q == routeQueue) {
|
|
185
|
+
if (!history.pushState && DotRouter.mayRedirect) {
|
|
186
|
+
window.location.hash = path;
|
|
187
|
+
window.location.pathname = "/";
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
;
|
|
193
|
+
if (Q == tryHashQueue) {
|
|
194
|
+
path = hashPath;
|
|
195
|
+
navParams.path = path;
|
|
196
|
+
if (history.pushState) {
|
|
197
|
+
window.location.hash = "";
|
|
198
|
+
history.replaceState({ "pageTitle": document.title, "path": path }, document.title, path);
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
navParams.isNew = !(!force && t.currentRoute == bestRoute && (!t.currentParams || t.currentParams == navParams.params || JSON.stringify(t.currentParams) === JSON.stringify(navParams.params)));
|
|
206
|
+
t.params.onNavigateInit && t.params.onNavigateInit(navParams);
|
|
207
|
+
if (!navParams.isNew || cancel)
|
|
208
|
+
return navParams;
|
|
209
|
+
t.currentRoute = bestRoute;
|
|
210
|
+
t.currentParams = navParams.params;
|
|
211
|
+
var ro = t.outlet;
|
|
212
|
+
(0, dot_1.default)(ro).empty();
|
|
213
|
+
var navId = ++t.navId;
|
|
214
|
+
//if(deepestRouter == null) return this;
|
|
215
|
+
if (routeQueue.length == 0)
|
|
216
|
+
return navParams;
|
|
217
|
+
if (bestRoute == null)
|
|
218
|
+
return navParams;
|
|
219
|
+
navParams.title = bestRoute.title;
|
|
220
|
+
if (typeof bestRoute.component == "string") {
|
|
221
|
+
DotRouter._get(bestRoute.component, function (result) {
|
|
222
|
+
var text = result.responseText;
|
|
223
|
+
navParams.httpResponse = result;
|
|
224
|
+
if (navId != t.navId)
|
|
225
|
+
return navParams;
|
|
226
|
+
t.params.onResponse && t.params.onResponse(navParams);
|
|
227
|
+
if (cancel)
|
|
228
|
+
return navParams;
|
|
229
|
+
if (bestRoute.component.split("?")[0].split("#")[0].toLowerCase().indexOf(".js") == bestRoute.component.length - 3) {
|
|
230
|
+
try {
|
|
231
|
+
text = Function("var exports=null,module={},route=arguments[0];" + text + "\r\nreturn module.exports || exports;")(navParams);
|
|
232
|
+
}
|
|
233
|
+
catch (e) {
|
|
234
|
+
//e.fileName = bestRoute.component;
|
|
235
|
+
console.error(e);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
(0, dot_1.default)(ro).h(text);
|
|
239
|
+
t.params.onComplete && t.params.onComplete(navParams);
|
|
240
|
+
}, function (result) {
|
|
241
|
+
navParams.httpResponse = result;
|
|
242
|
+
t.params.onError && t.params.onError(navParams);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
(0, dot_1.default)(ro).h(bestRoute.component.call(dot_1.default, navParams));
|
|
247
|
+
t.params.onComplete && t.params.onComplete(navParams);
|
|
248
|
+
}
|
|
249
|
+
return navParams;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
exports.default = DotRouter;
|
|
253
|
+
// Extend dot.
|
|
254
|
+
dot_1.default.navigate = function (path, noHistory = false, force = false) {
|
|
255
|
+
DotRouter.setupPopupFunction();
|
|
256
|
+
var K = Object.keys(DotRouter.allRouters);
|
|
257
|
+
var lastNavParams = {};
|
|
258
|
+
var bestTitle = document.title;
|
|
259
|
+
for (var k = 0; k < K.length; k++) {
|
|
260
|
+
var kk = K[k];
|
|
261
|
+
var r = DotRouter.allRouters[kk];
|
|
262
|
+
if (r) {
|
|
263
|
+
var currentNavParams = r.navigate(path, noHistory, force);
|
|
264
|
+
if (currentNavParams.isNew && !currentNavParams.wasCancelled) {
|
|
265
|
+
lastNavParams = currentNavParams;
|
|
266
|
+
bestTitle = lastNavParams.title || bestTitle;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
if (lastNavParams && !noHistory) {
|
|
272
|
+
//if(history.replaceState) history.replaceState({"pageTitle":title, "path": path}, title, path);
|
|
273
|
+
if (history.pushState)
|
|
274
|
+
history.pushState({ "pageTitle": bestTitle, "path": lastNavParams.path }, bestTitle, lastNavParams.path);
|
|
275
|
+
else
|
|
276
|
+
window.location.hash = lastNavParams.path;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (e) { }
|
|
280
|
+
return this;
|
|
281
|
+
};
|
|
282
282
|
//# sourceMappingURL=router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/built-in-components/router.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,kDAAkD;;;;;AAElD,6DAAqC;AACrC,iDAAyB;AACzB,iDAAyB;AAgBzB,MAAqB,SAAU,SAAQ,mBAAS;IAE/C,oFAAoF;aAC7E,eAAU,GAA+B,EAAE,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/built-in-components/router.ts"],"names":[],"mappings":"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"}
|