efront 3.20.4 → 3.20.8
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/coms/basic/Matrix.js +424 -0
- package/coms/zimoli/confirm.less +1 -1
- package/coms/zimoli/data.js +4 -3
- package/coms/zimoli/matrix.js +1 -0
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/coms/basic/matrix.js +0 -306
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
var notMatchLength = new Error("矩阵长度不一致");
|
|
2
|
+
class Matrix extends Array {
|
|
3
|
+
static create2d(theta = 0) {
|
|
4
|
+
return MatrixTransposed.matrix2d(theta);
|
|
5
|
+
}
|
|
6
|
+
static create3d(factor = [0, 0, 0]) {
|
|
7
|
+
return MathMatrix.matrix3d(factor);
|
|
8
|
+
}
|
|
9
|
+
size() {
|
|
10
|
+
return size(this);
|
|
11
|
+
}
|
|
12
|
+
dirty() {
|
|
13
|
+
this._invert = null;
|
|
14
|
+
}
|
|
15
|
+
_invert = null;
|
|
16
|
+
get invert() {
|
|
17
|
+
if (this._invert) return this._invert;
|
|
18
|
+
return this._invert = this.slice().inverse();
|
|
19
|
+
}
|
|
20
|
+
transpose() {
|
|
21
|
+
if (this.constructor === MathMatrix) {
|
|
22
|
+
var m = new MatrixTransposed;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
var m = new MathMatrix;
|
|
26
|
+
}
|
|
27
|
+
m.push.apply(m, this);
|
|
28
|
+
m.transpose_();
|
|
29
|
+
return m;
|
|
30
|
+
}
|
|
31
|
+
transpose_() {
|
|
32
|
+
var [size] = this.size();
|
|
33
|
+
for (var cx = 0, dx = size; cx < dx; cx++) {
|
|
34
|
+
for (var cy = cx + 1, dy = dx; cy < dy; cy++) {
|
|
35
|
+
var i = cx * size + cy;
|
|
36
|
+
var j = cy * size + cx;
|
|
37
|
+
var tmp = this[i];
|
|
38
|
+
this[i] = this[j];
|
|
39
|
+
this[j] = tmp;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
inverse() {
|
|
45
|
+
this.dirty();
|
|
46
|
+
return this.constructor.逆(this);
|
|
47
|
+
}
|
|
48
|
+
rotate(factor, center) {
|
|
49
|
+
this.dirty();
|
|
50
|
+
if (center) this.translate(center.map(负));
|
|
51
|
+
if (factor.length) {
|
|
52
|
+
this.multiply(this.constructor.matrix3d(factor));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.multiply(this.constructor.matrix2d(factor));
|
|
56
|
+
}
|
|
57
|
+
if (center) this.translate(center);
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
translate(vector) {
|
|
61
|
+
this.dirty();
|
|
62
|
+
return this.constructor.translate(this, vector);
|
|
63
|
+
}
|
|
64
|
+
scale(ratio, center) {
|
|
65
|
+
this.dirty();
|
|
66
|
+
if (center) this.translate(center.map(负));
|
|
67
|
+
times(this, ratio);
|
|
68
|
+
if (center) this.translate(center);
|
|
69
|
+
this[this.length - 1] = 1;
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
multiply(a) {
|
|
73
|
+
this.dirty();
|
|
74
|
+
return this.constructor.multiply(this, a);
|
|
75
|
+
}
|
|
76
|
+
transform(dots) {
|
|
77
|
+
if (dots instanceof Array) return this.constructor.transform(this, dots);
|
|
78
|
+
if (arguments.length > 1) {
|
|
79
|
+
var a = Array.prototype.slice.apply(arguments, 0);
|
|
80
|
+
return this.constructor.transform(this, a);
|
|
81
|
+
}
|
|
82
|
+
return dots;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
class MathMatrix extends Matrix {
|
|
86
|
+
|
|
87
|
+
static transform(B, dots) {
|
|
88
|
+
var dimention = Math.sqrt(B.length - 1) | 0;
|
|
89
|
+
if (dots.length % dimention !== 0) throw notMatchLength;
|
|
90
|
+
if (dots === B) B = B.slice(0);
|
|
91
|
+
var ds = dots.slice(0);
|
|
92
|
+
var dim2 = B.length % dimention !== 0 ? dimention + 1 : dimention;
|
|
93
|
+
for (var cx = 0, dx = dots.length; cx < dx; cx += dimention) {
|
|
94
|
+
for (var cy = 0, dy = dimention; cy < dy; cy++) {
|
|
95
|
+
var sum = 0;
|
|
96
|
+
for (var ct = 0, dt = dimention; ct < dt; ct++) {
|
|
97
|
+
sum += ds[cx + ct] * B[ct * dim2 + cy];
|
|
98
|
+
}
|
|
99
|
+
sum += B[dimention * dim2 + cy];
|
|
100
|
+
dots[cx + cy] = sum;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return dots;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
static translate(A, delta) {
|
|
108
|
+
var [dim2, dim] = size(A);
|
|
109
|
+
var inc = 0;
|
|
110
|
+
for (var cx = dim * dim2, dx = cx + dim; cx < dx; cx++) {
|
|
111
|
+
A[cx] = (A[cx] || 0) + delta[inc++];
|
|
112
|
+
}
|
|
113
|
+
return A;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static multiply(A, B) {
|
|
117
|
+
if (A.length !== B.length) throw notMatchLength;
|
|
118
|
+
var dim = Math.sqrt(A.length) | 0;
|
|
119
|
+
if (dim * dim !== A.length) throw notMatchLength;
|
|
120
|
+
var X = A.slice(0);
|
|
121
|
+
for (var cx = 0, dx = A.length; cx < dx; cx += dim) {
|
|
122
|
+
for (var cy = 0, dy = dim; cy < dy; cy++) {
|
|
123
|
+
var sum = 0;
|
|
124
|
+
for (var ct = 0, dt = dim; ct < dt; ct++) {
|
|
125
|
+
sum += X[cx + ct] * B[ct * dim + cy];
|
|
126
|
+
}
|
|
127
|
+
A[cx + cy] = sum;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return A;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
static matrix2d(theta) {
|
|
135
|
+
var cosa = Math.cos(theta);
|
|
136
|
+
var sina = Math.sin(theta);
|
|
137
|
+
return new MathMatrix(
|
|
138
|
+
cosa, sina, 0,
|
|
139
|
+
-sina, cosa, 0,
|
|
140
|
+
0, 0, 1
|
|
141
|
+
);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
static matrix3d(factor) {
|
|
145
|
+
var n = norm(factor.slice(0, 3));
|
|
146
|
+
var theta = factor.length === 4 ? factor[3] : n;
|
|
147
|
+
var vec = times(factor, 1 / n);
|
|
148
|
+
var cosa = Math.cos(theta);
|
|
149
|
+
var sina = Math.sin(theta);
|
|
150
|
+
var vera = 1 - cosa;
|
|
151
|
+
var [x_u, y_u, z_u] = !n ? [0, 0, 1] : vec;
|
|
152
|
+
return new MathMatrix(
|
|
153
|
+
cosa + x_u * x_u * vera, x_u * y_u * vera - z_u * sina, x_u * z_u * vera + y_u * sina, 0,
|
|
154
|
+
x_u * y_u * vera + z_u * sina, cosa + y_u * y_u * vera, y_u * z_u * vera - x_u * sina, 0,
|
|
155
|
+
x_u * z_u * vera - y_u * sina, y_u * z_u * vera + x_u * sina, cosa + z_u * z_u * vera, 0,
|
|
156
|
+
0, 0, 0, 1
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
static 逆 = function (A) {
|
|
161
|
+
var dim = Math.sqrt(A.length) | 0;
|
|
162
|
+
if (dim * dim !== A.length) throw notMatchLength;
|
|
163
|
+
var E = new Array(A.length).fill(0);
|
|
164
|
+
for (var cx = 0, dx = dim; cx < dx; cx++)E[cx * dim + cx] = 1;
|
|
165
|
+
var X = A.splice(0, A.length);
|
|
166
|
+
A.push.apply(A, E);
|
|
167
|
+
for (var cx = 0, dx = dim; cx < dx; cx++) {
|
|
168
|
+
var start = cx * dim + cx;
|
|
169
|
+
var max_ct, v = 0;
|
|
170
|
+
for (var ct = start, dt = X.length; ct < dt; ct += dim) {
|
|
171
|
+
var v0 = Math.abs(X[ct]);
|
|
172
|
+
if (v0 > v) {
|
|
173
|
+
max_ct = ct;
|
|
174
|
+
v = v0;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
ct = max_ct;
|
|
178
|
+
if (ct !== start) {
|
|
179
|
+
var delta = ct - start;
|
|
180
|
+
var ratio = (1 - X[start]) / X[ct];
|
|
181
|
+
for (var cy = cx * dim, dy = cy + dim; cy < dy; cy++) {
|
|
182
|
+
X[cy] += X[cy + delta] * ratio;
|
|
183
|
+
A[cy] += A[cy + delta] * ratio;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (X[start] !== 1) {
|
|
187
|
+
var ratio = 1 / X[start];
|
|
188
|
+
for (var cy = cx * dim, dy = cy + dim; cy < dy; cy++) {
|
|
189
|
+
X[cy] *= ratio;
|
|
190
|
+
A[cy] *= ratio;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
for (var ct = start + dim, dt = X.length; ct < dt; ct += dim) {
|
|
194
|
+
if (X[ct] === 0) continue;
|
|
195
|
+
var ratio = -X[ct];
|
|
196
|
+
var delta = start - ct;
|
|
197
|
+
for (var cy = ct - cx, dy = cy + dim; cy < dy; cy++) {
|
|
198
|
+
X[cy] += X[cy + delta] * ratio;
|
|
199
|
+
A[cy] += A[cy + delta] * ratio;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
for (var cx = dim - 1; cx > 0; cx--) {
|
|
204
|
+
var start = cx * dim + cx;
|
|
205
|
+
for (var ct = start - dim; ct >= 0; ct -= dim) {
|
|
206
|
+
if (X[ct] === 0) continue;
|
|
207
|
+
var ratio = -X[ct];
|
|
208
|
+
var delta = start - ct;
|
|
209
|
+
for (var cy = ct - cx, dy = cy + dim; cy < dy; cy++) {
|
|
210
|
+
X[cy] += X[cy + delta] * ratio;
|
|
211
|
+
A[cy] += A[cy + delta] * ratio;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return A;
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
}
|
|
219
|
+
class MatrixTransposed extends Matrix {
|
|
220
|
+
static transform(B, dots) {
|
|
221
|
+
var dimention = Math.sqrt(B.length - 1) | 0;
|
|
222
|
+
if (dots.length % dimention !== 0) throw notMatchLength;
|
|
223
|
+
if (dots === B) B = B.slice(0);
|
|
224
|
+
var ds = dots.slice(0);
|
|
225
|
+
var dim2 = B.length % dimention !== 0 ? dimention + 1 : dimention;
|
|
226
|
+
for (var cx = 0, dx = dots.length; cx < dx; cx += dimention) {
|
|
227
|
+
for (var cy = 0, dy = dimention; cy < dy; cy++) {
|
|
228
|
+
var sum = 0;
|
|
229
|
+
var start = dim2 * cy;
|
|
230
|
+
for (var ct = 0, dt = dimention; ct < dt; ct++) {
|
|
231
|
+
sum += ds[cx + ct] * B[start + ct];
|
|
232
|
+
}
|
|
233
|
+
sum += B[start + dimention];
|
|
234
|
+
dots[cx + cy] = sum;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return dots;
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
static translate(A, delta) {
|
|
241
|
+
var [dim2, dim] = size(A);
|
|
242
|
+
var inc = 0;
|
|
243
|
+
for (var cx = dim, dx = dim * dim2; cx < dx; cx += dim2) {
|
|
244
|
+
A[cx] = (A[cx] || 0) + delta[inc++];
|
|
245
|
+
}
|
|
246
|
+
return A;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
static multiply(A, B) {
|
|
250
|
+
if (A.length !== B.length) throw notMatchLength;
|
|
251
|
+
var dim = Math.sqrt(A.length) | 0;
|
|
252
|
+
if (dim * dim !== A.length) throw notMatchLength;
|
|
253
|
+
var X = A.slice(0);
|
|
254
|
+
for (var cx = 0, dx = A.length; cx < dx; cx += dim) {
|
|
255
|
+
for (var cy = 0, dy = dim; cy < dy; cy++) {
|
|
256
|
+
var sum = 0;
|
|
257
|
+
for (var ct = 0, dt = dim; ct < dt; ct++) {
|
|
258
|
+
sum += B[cx + ct] * X[ct * dim + cy];
|
|
259
|
+
}
|
|
260
|
+
A[cx + cy] = sum;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return A;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
static matrix2d(theta) {
|
|
267
|
+
var cosa = Math.cos(theta);
|
|
268
|
+
var sina = Math.sin(theta);
|
|
269
|
+
return new MatrixTransposed(
|
|
270
|
+
cosa, -sina, 0,
|
|
271
|
+
sina, cosa, 0,
|
|
272
|
+
0, 0, 1
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
static matrix3d(factor) {
|
|
277
|
+
var n = norm(factor.slice(0, 3));
|
|
278
|
+
var theta = factor.length === 4 ? factor[3] : n;
|
|
279
|
+
var vec = times(factor, 1 / n);
|
|
280
|
+
var cosa = Math.cos(theta);
|
|
281
|
+
var sina = Math.sin(theta);
|
|
282
|
+
var vera = 1 - cosa;
|
|
283
|
+
var [x_u, y_u, z_u] = !n ? [0, 0, 1] : vec;
|
|
284
|
+
return new MatrixTransposed(
|
|
285
|
+
cosa + x_u * x_u * vera, x_u * y_u * vera + z_u * sina, x_u * z_u * vera - y_u * sina, 0,
|
|
286
|
+
x_u * y_u * vera - z_u * sina, cosa + y_u * y_u * vera, y_u * z_u * vera + x_u * sina, 0,
|
|
287
|
+
x_u * z_u * vera + y_u * sina, y_u * z_u * vera - x_u * sina, cosa + z_u * z_u * vera, 0,
|
|
288
|
+
0, 0, 0, 1
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
static 逆 = function (A) {
|
|
292
|
+
var dim = Math.sqrt(A.length) | 0;
|
|
293
|
+
if (dim * dim !== A.length) throw notMatchLength;
|
|
294
|
+
var E = new Array(A.length).fill(0);
|
|
295
|
+
for (var cx = 0, dx = dim; cx < dx; cx++)E[cx * dim + cx] = 1;
|
|
296
|
+
var X = A.splice(0, A.length);
|
|
297
|
+
A.push.apply(A, E);
|
|
298
|
+
for (var cx = 0, dx = dim; cx < dx; cx++) {
|
|
299
|
+
var start = cx * dim + cx;
|
|
300
|
+
var max_ct, v = 0;
|
|
301
|
+
for (var ct = start, dt = cx * dim + dim; ct < dt; ct++) {
|
|
302
|
+
var v0 = Math.abs(X[ct]);
|
|
303
|
+
if (v0 > v) {
|
|
304
|
+
max_ct = ct;
|
|
305
|
+
v = v0;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
ct = max_ct;
|
|
309
|
+
if (ct !== start) {
|
|
310
|
+
var delta = ct - start;
|
|
311
|
+
var ratio = (1 - X[start]) / X[ct];
|
|
312
|
+
for (var cy = cx, dy = X.length; cy < dy; cy += dim) {
|
|
313
|
+
X[cy] += X[cy + delta] * ratio;
|
|
314
|
+
A[cy] += A[cy + delta] * ratio;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (X[start] !== 1) {
|
|
318
|
+
var ratio = 1 / X[start];
|
|
319
|
+
for (var cy = cx, dy = X.length; cy < dy; cy += dim) {
|
|
320
|
+
X[cy] *= ratio;
|
|
321
|
+
A[cy] *= ratio;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
for (var ct = start + 1, dt = start + dim - cx; ct < dt; ct++) {
|
|
325
|
+
if (X[ct] === 0) continue;
|
|
326
|
+
var ratio = -X[ct];
|
|
327
|
+
var delta = start - ct;
|
|
328
|
+
for (var cy = cx + ct - start, dy = X.length; cy < dy; cy += dim) {
|
|
329
|
+
X[cy] += X[cy + delta] * ratio;
|
|
330
|
+
A[cy] += A[cy + delta] * ratio;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
for (var cx = dim - 1; cx >= 0; cx--) {
|
|
335
|
+
var start = cx * dim + cx;
|
|
336
|
+
for (var ct = start - 1, dt = start - cx; ct >= dt; ct--) {
|
|
337
|
+
if (X[ct] === 0) continue;
|
|
338
|
+
var ratio = -X[ct];
|
|
339
|
+
var delta = start - ct;
|
|
340
|
+
for (var cy = cx + ct - start, dy = X.length; cy < dy; cy += dim) {
|
|
341
|
+
X[cy] += X[cy + delta] * ratio;
|
|
342
|
+
A[cy] += A[cy + delta] * ratio;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return A;
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
}
|
|
350
|
+
Matrix.MathMatrix = MathMatrix;
|
|
351
|
+
Matrix.MatrixTransposed = MatrixTransposed;
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
function inner(vec1, vec2) {
|
|
355
|
+
if (vec1.length !== vec2.length) throw notMatchLength;
|
|
356
|
+
var sum = 0;
|
|
357
|
+
for (var cx = 0, dx = vec1.length; cx < dx; cx++) {
|
|
358
|
+
sum += vec1[cx] * vec2[cx];
|
|
359
|
+
}
|
|
360
|
+
return sum;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
function cross2(vec1, vec2) {
|
|
364
|
+
var [x1, y1] = vec1;
|
|
365
|
+
var [x2, y2] = vec2;
|
|
366
|
+
return x1 * y2 - x2 * y1;
|
|
367
|
+
}
|
|
368
|
+
function cross3(vec1, vec2) {
|
|
369
|
+
var [x1, y1, z1] = vec1;
|
|
370
|
+
var [x2, y2, z2] = vec2;
|
|
371
|
+
return [y1 * z2 - y2 * z1, z1 * x2 - z2 * x1, x1 * y2 - x2 * y1];
|
|
372
|
+
}
|
|
373
|
+
function cross(vec1, vec2) {
|
|
374
|
+
if (vec1.length !== vec2.length) throw notMatchLength;
|
|
375
|
+
if (vec1.length === 2) return cross2(vec1, vec2);
|
|
376
|
+
if (vec1.length === 3) return cross3(vec1, vec2);
|
|
377
|
+
throw new Error("向量维度不支持!");
|
|
378
|
+
}
|
|
379
|
+
function 负(a) {
|
|
380
|
+
return -a;
|
|
381
|
+
}
|
|
382
|
+
function times(vector, factor) {
|
|
383
|
+
for (var cx = 0, dx = vector.length; cx < dx; cx++) {
|
|
384
|
+
vector[cx] *= factor;
|
|
385
|
+
}
|
|
386
|
+
return vector;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
var norm = function (vector) {
|
|
390
|
+
var sum = 0;
|
|
391
|
+
for (var cx = 0, dx = vector.length; cx < dx; cx++) {
|
|
392
|
+
sum += vector[cx] * vector[cx];
|
|
393
|
+
}
|
|
394
|
+
return Math.sqrt(sum);
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
function size(A) {
|
|
399
|
+
var dim = Math.sqrt(A.length - 1) | 0;
|
|
400
|
+
var dim2 = dim;
|
|
401
|
+
if (A.length % dim !== 0) {
|
|
402
|
+
dim2++;
|
|
403
|
+
}
|
|
404
|
+
if ((dim + 1) * dim2 !== A.length) throw notMatchLength;
|
|
405
|
+
return [dim2, dim];
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
function olinde(v, vector) {
|
|
410
|
+
// 罗德里格旋转公式
|
|
411
|
+
// https://baike.baidu.com/item/%E7%BD%97%E5%BE%B7%E9%87%8C%E6%A0%BC%E6%97%8B%E8%BD%AC%E5%85%AC%E5%BC%8F/18878562
|
|
412
|
+
// https://www.cnblogs.com/flyinggod/p/8144100.html 旋转矩阵、欧拉角、四元数理论及其转换关系
|
|
413
|
+
var theta = norm(vector);
|
|
414
|
+
var k = times(vector.slice(0), 1 / theta);
|
|
415
|
+
var cosa = Math.cos(theta);
|
|
416
|
+
var sina = Math.sin(theta);
|
|
417
|
+
var inna = inner(k, v);
|
|
418
|
+
var aa = inna * (1 - cosa);
|
|
419
|
+
var kv = cross(k, v);
|
|
420
|
+
for (var cx = 0, dx = k.length; cx < dx; cx++) {
|
|
421
|
+
v[cx] = v[cx] * cosa + aa * k[cx] + sina * kv[cx];
|
|
422
|
+
}
|
|
423
|
+
return v;
|
|
424
|
+
}
|
package/coms/zimoli/confirm.less
CHANGED
package/coms/zimoli/data.js
CHANGED
|
@@ -353,7 +353,7 @@ function fixApi(api, href) {
|
|
|
353
353
|
href = protocol + "//" + host + href;
|
|
354
354
|
}
|
|
355
355
|
else if (/^\.\//.test(href)) {
|
|
356
|
-
var { protocol, host, pathname } = parseURL(location.href);
|
|
356
|
+
var { protocol, host, pathname } = parseURL(document.baseURI || location.href);
|
|
357
357
|
href = href.slice(1);
|
|
358
358
|
if (pathname) href = pathname.replace(/\/[^\/\\]*$/, '') + href;
|
|
359
359
|
href = protocol + "//" + host + href;
|
|
@@ -615,8 +615,9 @@ var privates = {
|
|
|
615
615
|
if (!_configfileurl) {
|
|
616
616
|
throw new Error("没有指定配置文件的路径,请使用data.loadConfig加载配置");
|
|
617
617
|
}
|
|
618
|
-
|
|
619
|
-
|
|
618
|
+
var p = this.loadIgnoreConfig('get', _configfileurl);
|
|
619
|
+
p.loading.abort = function () { };
|
|
620
|
+
configPormise = p.then(createApiMap);
|
|
620
621
|
}
|
|
621
622
|
return configPormise;
|
|
622
623
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Matrix
|