efront 4.23.0 → 4.23.3
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/ArrayFill.js +5 -1
- package/coms/basic/BigNumber.js +2 -2
- package/coms/basic/data.js +11 -10
- package/coms/basic/extend.js +18 -1
- package/coms/basic/isFinit.js +1 -0
- package/coms/basic_/&ArrayFill.js +1 -5
- package/coms/basic_/&extend.js +1 -18
- package/coms/basic_/WeakMap.js +19 -6
- package/coms/reptile/alert.js +5 -1
- package/coms/reptile/data.js +3 -0
- package/coms/zimoli/$cared.js +1 -0
- package/coms/zimoli/$casted.js +1 -0
- package/coms/zimoli/$upwith.js +1 -0
- package/coms/zimoli/$watches.js +1 -0
- package/coms/zimoli/alert.js +4 -2
- package/coms/zimoli/care.js +27 -9
- package/coms/zimoli/cast.js +13 -14
- package/coms/zimoli/data.js +16 -0
- package/coms/zimoli/getChanged.js +8 -0
- package/coms/zimoli/menuList.js +0 -1
- package/coms/zimoli/model.js +7 -4
- package/coms/zimoli/on.js +12 -4
- package/coms/zimoli/popup.js +5 -5
- package/coms/zimoli/render.js +253 -173
- package/coms/zimoli/scrollbar.js +1 -1
- package/coms/zimoli/view.js +1 -1
- package/coms/zimoli/watch.js +7 -5
- package/coms/zimoli/zimoli.js +72 -55
- package/docs//347/273/204/344/273/266.xht +14 -1
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/public/pivot/api.yml +46 -0
- package/public/pivot/menu.yml +16 -0
- package/public/pivot/page/auth/login.txt +1 -0
- package/public/pivot/page/cert/main.txt +1 -0
- package/public/pivot/page/cert/orders.txt +1 -0
- package/public/pivot/page/cert/update.txt +1 -0
- package/public/pivot/page/db/act.txt +1 -0
- package/public/pivot/page/db/config.txt +1 -0
- package/public/pivot/page/db/edit.txt +1 -0
- package/public/pivot/page/db/list.txt +1 -0
- package/public/pivot//344/270/273/351/241/265.html +46 -0
- package/coms/reptile/on.js +0 -4
- package/coms/reptile/onmounted.js +0 -1
- /package/coms/{zimoli → basic}/encode62.js +0 -0
package/coms/basic/ArrayFill.js
CHANGED
package/coms/basic/BigNumber.js
CHANGED
|
@@ -243,8 +243,8 @@ class BigNumber {
|
|
|
243
243
|
else if (!dist.length) dist.push(0);
|
|
244
244
|
if (s) dist.unshift('-');
|
|
245
245
|
BigNumber.DECIMAL_DIGIT = BACK_DIGIT;
|
|
246
|
-
if (system_scale <= 36) dist = dist.map(d =>
|
|
247
|
-
else dist = dist.map(d =>
|
|
246
|
+
if (system_scale <= 36) dist = dist.map(d => isFinit(d) ? vsrc[d] : d);
|
|
247
|
+
else dist = dist.map(d => isFinit(d) ? '[' + d + ']' : d);
|
|
248
248
|
return dist.join('');
|
|
249
249
|
};
|
|
250
250
|
add(bignumber) {
|
package/coms/basic/data.js
CHANGED
|
@@ -690,11 +690,7 @@ var getInstanceId = function () {
|
|
|
690
690
|
}
|
|
691
691
|
return instanceId;
|
|
692
692
|
};
|
|
693
|
-
var error_report =
|
|
694
|
-
error_report = alert;
|
|
695
|
-
error_report(error, type);
|
|
696
|
-
console.info(i18n`已使用默认的报错工具,您可以使用 ${"data.setReporter(error_reporter,error_finder)"} 替换! 本信息在仅在开发环境显示。`);
|
|
697
|
-
};
|
|
693
|
+
var error_report = () => { throw new Error('请使用data.setReporter(alert)进行初始化,然后再使用data') };
|
|
698
694
|
|
|
699
695
|
var error_check = function (data) { };
|
|
700
696
|
|
|
@@ -722,10 +718,6 @@ function responseCrash(e, data) {
|
|
|
722
718
|
error_report(e, e.status < 500 ? 'warn' : 'error');
|
|
723
719
|
}
|
|
724
720
|
var toDataString = function () { return isEmpty(this.data) ? '' : this.data };
|
|
725
|
-
var updateLoadingCount = function () {
|
|
726
|
-
data.loading_count = cross.requests.length;
|
|
727
|
-
};
|
|
728
|
-
on('render')(window, updateLoadingCount, true);
|
|
729
721
|
var bubApply = function (f, args) {
|
|
730
722
|
if (args.length === 1) {
|
|
731
723
|
var [instanceMap] = args;
|
|
@@ -766,12 +758,14 @@ var oncatch = function (e) {
|
|
|
766
758
|
if (e === OUTDATE || e === ABORTED) return;
|
|
767
759
|
throw e;
|
|
768
760
|
};
|
|
761
|
+
var cross = () => { throw new Error('请使用data.setEnvs(cross,on,onmounted)进行初始化,然后再使用data') };
|
|
762
|
+
var on = () => { throw new Error("请使用data.setEnvs(cross,on,onmounted)") };
|
|
763
|
+
var onmounted = () => { throw new Error("请使用data.setEnvs(cross,on,onmounted)") };
|
|
769
764
|
var data = {
|
|
770
765
|
prepareURL,
|
|
771
766
|
decodeStructure,
|
|
772
767
|
getUrlParamsForApi,
|
|
773
768
|
encodeStructure,
|
|
774
|
-
abortAll: cross.abortAll,
|
|
775
769
|
responseLoaded(response) {
|
|
776
770
|
if (isObject(response)) {
|
|
777
771
|
response.is_loaded = true;
|
|
@@ -789,6 +783,13 @@ var data = {
|
|
|
789
783
|
response.abort = LoadingArray_abort;
|
|
790
784
|
}
|
|
791
785
|
},
|
|
786
|
+
setEnvs(cross1, on1, onmounted1) {
|
|
787
|
+
delete data.setEnvs;
|
|
788
|
+
cross = cross1;
|
|
789
|
+
on = on1;
|
|
790
|
+
onmounted = onmounted1;
|
|
791
|
+
data.abortAll = cross.abortAll;
|
|
792
|
+
},
|
|
792
793
|
setReporter(report, checker) {
|
|
793
794
|
if (report instanceof Function) {
|
|
794
795
|
error_report = report;
|
package/coms/basic/extend.js
CHANGED
|
@@ -1 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* 不枝雀
|
|
3
|
+
* 2017-3-18 11:18:18
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
var hasOwnProperty = {}.hasOwnProperty, Object = {}.constructor;
|
|
7
|
+
|
|
8
|
+
var extend = Object.assign || function (o1) {
|
|
9
|
+
o1 = Object(o1);
|
|
10
|
+
for (var cx = 1, dx = arguments.length; cx < dx; cx++) {
|
|
11
|
+
var o2 = arguments[cx];
|
|
12
|
+
for (var k in o2) {
|
|
13
|
+
if (hasOwnProperty.call(o2, k)) o1[k] = o2[k];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return o1;
|
|
17
|
+
};
|
|
18
|
+
return extend;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a => typeof a === 'number' && a < Infinity && a > -Infinity;
|
package/coms/basic_/&extend.js
CHANGED
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* 不枝雀
|
|
3
|
-
* 2017-3-18 11:18:18
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
var hasOwnProperty = {}.hasOwnProperty, Object = {}.constructor;
|
|
7
|
-
|
|
8
|
-
var extend = Object.assign || function (o1) {
|
|
9
|
-
o1 = Object(o1);
|
|
10
|
-
for (var cx = 1, dx = arguments.length; cx < dx; cx++) {
|
|
11
|
-
var o2 = arguments[cx];
|
|
12
|
-
for (var k in o2) {
|
|
13
|
-
if (hasOwnProperty.call(o2, k)) o1[k] = o2[k];
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return o1;
|
|
17
|
-
};
|
|
18
|
-
return extend;
|
|
1
|
+
basic$extend
|
package/coms/basic_/WeakMap.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var WeakMap = this.WeakMap;
|
|
2
|
-
if (WeakMap) return WeakMap;
|
|
2
|
+
if (WeakMap && WeakMap.prototype.get) return WeakMap;
|
|
3
3
|
var id = 0;
|
|
4
4
|
WeakMap = class WeakMap {
|
|
5
5
|
id = "#" + ++id;
|
|
@@ -7,11 +7,8 @@ WeakMap = class WeakMap {
|
|
|
7
7
|
return o[this.id];
|
|
8
8
|
}
|
|
9
9
|
set(o, v) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
enumerable: false,
|
|
13
|
-
configurable: true
|
|
14
|
-
});
|
|
10
|
+
defineObj.value = v;
|
|
11
|
+
Object.defineProperty(o, this.id, defineObj);
|
|
15
12
|
}
|
|
16
13
|
has(o) {
|
|
17
14
|
return this.id in o;
|
|
@@ -20,4 +17,20 @@ WeakMap = class WeakMap {
|
|
|
20
17
|
delete o[this.id];
|
|
21
18
|
}
|
|
22
19
|
}
|
|
20
|
+
var defineObj = {
|
|
21
|
+
value: null,
|
|
22
|
+
enumerable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
configurable: false
|
|
25
|
+
}
|
|
26
|
+
var defineProperty = Object.defineProperty;
|
|
27
|
+
try {
|
|
28
|
+
defineProperty(document, '#weakmap', defineObj);
|
|
29
|
+
delete document["#weakmap"];
|
|
30
|
+
} catch {
|
|
31
|
+
defineProperty = function (o, k, d) {
|
|
32
|
+
o[k] = d.value;
|
|
33
|
+
}
|
|
34
|
+
delete defineObj.enumerable;
|
|
35
|
+
}
|
|
23
36
|
return WeakMap;
|
package/coms/reptile/alert.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
new WeakMap;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
new WeakMap;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
new WeakMap;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
new WeakMap;
|
package/coms/zimoli/alert.js
CHANGED
|
@@ -72,7 +72,7 @@ function alert() {
|
|
|
72
72
|
}
|
|
73
73
|
close_timer = setTimeout(function () {
|
|
74
74
|
remove(elem);
|
|
75
|
-
}, autoclose);
|
|
75
|
+
}, +autoclose);
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
var setContent = function (elem) {
|
|
@@ -83,7 +83,9 @@ function alert() {
|
|
|
83
83
|
} else {
|
|
84
84
|
elem = _text(elem, styles.log, t);
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
Promise.resolve().then(function () {
|
|
87
|
+
if (!isMounted(container)) popup(container);
|
|
88
|
+
});
|
|
87
89
|
if (!isMounted(elem)) appendChild(container, elem);
|
|
88
90
|
waitclose(autoclose, 400);
|
|
89
91
|
return elem;
|
package/coms/zimoli/care.js
CHANGED
|
@@ -6,16 +6,18 @@
|
|
|
6
6
|
* @param {Function} listener
|
|
7
7
|
*/
|
|
8
8
|
function care() {
|
|
9
|
-
var [target, type,
|
|
10
|
-
if (!target[type]) {
|
|
11
|
-
target[type] = [];
|
|
12
|
-
}
|
|
13
|
-
var listeners = target[type];
|
|
9
|
+
var [listeners, listener, target, type, allowMultiHandle] = parse.apply(this, arguments);
|
|
14
10
|
if (listeners.length && !allowMultiHandle) return;
|
|
15
11
|
if (listener instanceof Function && !~listeners.indexOf(listener)) {
|
|
16
12
|
if (listeners.length > 600) throw new Error(i18n`请不要在同一个对象上使用过多的同类型的care!`);
|
|
17
13
|
listeners.push(listener);
|
|
18
14
|
}
|
|
15
|
+
var casted = $casted.get(target);
|
|
16
|
+
if (!casted) return;
|
|
17
|
+
var datas = casted[type];
|
|
18
|
+
if (!datas) return;
|
|
19
|
+
delete casted[type];
|
|
20
|
+
datas.forEach(listeners.cast, listeners);
|
|
19
21
|
}
|
|
20
22
|
function parse() {
|
|
21
23
|
var [target, type, listener] = arguments;
|
|
@@ -46,12 +48,28 @@ function parse() {
|
|
|
46
48
|
throw new Error(i18n`参数数量不正确`);
|
|
47
49
|
}
|
|
48
50
|
if (!isObject(target)) throw new Error(i18n`care只能使用在对象上!`);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
var cared = $cared.get(target);
|
|
52
|
+
if (!cared) {
|
|
53
|
+
cared = {};
|
|
54
|
+
$cared.set(target, cared);
|
|
55
|
+
}
|
|
56
|
+
var listeners = cared[type];
|
|
57
|
+
if (!listeners) listeners = cared[type] = [], listeners.cast = cast(target);
|
|
58
|
+
return [listeners, listener, target, type, allowMultiHandle];
|
|
51
59
|
}
|
|
60
|
+
function cast(target) {
|
|
61
|
+
var newdata, olddata;
|
|
62
|
+
var call = function (listener) {
|
|
63
|
+
listener.call(target, newdata, olddata);
|
|
64
|
+
}
|
|
65
|
+
return function (data) {
|
|
66
|
+
newdata = data;
|
|
67
|
+
this.forEach(call);
|
|
68
|
+
olddata = data;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
52
71
|
function clean() {
|
|
53
|
-
var [
|
|
54
|
-
var listeners = target[type];
|
|
72
|
+
var [listeners, listener] = parse.apply(this, arguments);
|
|
55
73
|
if (listener instanceof Function) {
|
|
56
74
|
for (var cx = listeners.length - 1; cx >= 0; cx--) {
|
|
57
75
|
if (listeners[cx] === listener) listeners.splice(cx, 1);
|
package/coms/zimoli/cast.js
CHANGED
|
@@ -20,20 +20,19 @@ function cast(target, type, data) {
|
|
|
20
20
|
throw new Error(i18n`参数数量不正确`);
|
|
21
21
|
}
|
|
22
22
|
if (!isObject(target)) return;
|
|
23
|
-
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var
|
|
28
|
-
if (!
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
}), target[datakey] = datas.shift();
|
|
23
|
+
var cared = $cared.get(target);
|
|
24
|
+
if (cared) var listeners = cared[type];
|
|
25
|
+
if (listeners) listeners.cast(data);
|
|
26
|
+
else {
|
|
27
|
+
var casted = $casted.get(target);
|
|
28
|
+
if (!casted) {
|
|
29
|
+
casted = {};
|
|
30
|
+
$casted.set(target, casted);
|
|
31
|
+
}
|
|
32
|
+
var datas = casted[type];
|
|
33
|
+
if (!datas) {
|
|
34
|
+
datas = casted[type] = [];
|
|
37
35
|
}
|
|
36
|
+
datas.push(data);
|
|
38
37
|
}
|
|
39
38
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
basic$data.setReporter(
|
|
2
|
+
alert
|
|
3
|
+
// <!--
|
|
4
|
+
&& function (error, type) {
|
|
5
|
+
basic$data.setReporter(alert);
|
|
6
|
+
alert(error, type);
|
|
7
|
+
console.info(i18n`已使用默认的报错工具,您可以使用 ${"data.setReporter(error_reporter,error_finder)"} 替换! 本信息在仅在开发环境显示。`);
|
|
8
|
+
}
|
|
9
|
+
// -->
|
|
10
|
+
);
|
|
11
|
+
basic$data.setEnvs(cross, on, onmounted);
|
|
12
|
+
var updateLoadingCount = function () {
|
|
13
|
+
basic$data.loading_count = cross.requests.length;
|
|
14
|
+
};
|
|
15
|
+
on('render')(window, updateLoadingCount, true);
|
|
16
|
+
return basic$data;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
function getChanged(current_props, previous_props) {
|
|
2
|
+
var changed = [];
|
|
3
|
+
keys(previous_props, current_props).forEach(function (key) {
|
|
4
|
+
if (key.charAt(0) === "$") return;
|
|
5
|
+
if (!isSame(current_props[key], previous_props[key])) changed.push(key);
|
|
6
|
+
});
|
|
7
|
+
return changed;
|
|
8
|
+
}
|
package/coms/zimoli/menuList.js
CHANGED
package/coms/zimoli/model.js
CHANGED
|
@@ -305,12 +305,15 @@ var getOptionsFrom = function () {
|
|
|
305
305
|
var { data, field } = this;
|
|
306
306
|
return data[field.options_from];
|
|
307
307
|
};
|
|
308
|
-
function setModel(ipt) {
|
|
308
|
+
function setModel(renders, ipt) {
|
|
309
309
|
var elem = this;
|
|
310
310
|
if (isHandled(ipt)) {
|
|
311
311
|
if (isNode(ipt)) {
|
|
312
312
|
var model = new Model(getScopeValue, setScopeValue, ipt);
|
|
313
|
-
model.hook(elem, elem.field.option_to ? copyOptionData : true);
|
|
313
|
+
var binder = model.hook(elem, elem.field.option_to ? copyOptionData : true);
|
|
314
|
+
removeFromList(renders, elem.$binder);
|
|
315
|
+
renders.push(binder);
|
|
316
|
+
elem.$binder = binder;
|
|
314
317
|
if (elem !== ipt) appendChild(elem, ipt);
|
|
315
318
|
}
|
|
316
319
|
else {
|
|
@@ -330,9 +333,9 @@ function setBinder(elem, binder) {
|
|
|
330
333
|
else {
|
|
331
334
|
var ipt = binder(elem);
|
|
332
335
|
if (ipt && isFunction(ipt.then)) {
|
|
333
|
-
ipt.then(setModel.bind(elem));
|
|
336
|
+
ipt.then(setModel.bind(elem, renders));
|
|
334
337
|
}
|
|
335
|
-
else setModel.call(elem, ipt);
|
|
338
|
+
else setModel.call(elem, renders, ipt);
|
|
336
339
|
binder = null;
|
|
337
340
|
}
|
|
338
341
|
elem.$binder = binder;
|
package/coms/zimoli/on.js
CHANGED
|
@@ -270,6 +270,7 @@ function pending(h, event) {
|
|
|
270
270
|
}
|
|
271
271
|
return h;
|
|
272
272
|
}
|
|
273
|
+
var changes = new WeakMap;
|
|
273
274
|
var remove = function (k, hk, [eventtypes, handler, context]) {
|
|
274
275
|
var element = this;
|
|
275
276
|
var hs = hk.get(element);
|
|
@@ -278,7 +279,11 @@ var remove = function (k, hk, [eventtypes, handler, context]) {
|
|
|
278
279
|
var [e, h, c] = hs[cx];
|
|
279
280
|
if (h === handler && shallowEqual(e, eventtypes, 2) && c === context) {
|
|
280
281
|
hs.splice(cx, 1);
|
|
281
|
-
if (k === changes_key)
|
|
282
|
+
if (k === changes_key) {
|
|
283
|
+
var i = changes.get(element) - 1;
|
|
284
|
+
if (i > 0) changes.set(element, i);
|
|
285
|
+
else changes.delete(element), $watches.delete(element);
|
|
286
|
+
};
|
|
282
287
|
}
|
|
283
288
|
}
|
|
284
289
|
if (!hs.length && hs.h) {
|
|
@@ -346,8 +351,11 @@ var append = function (k, hk, listener2, firstmost) {
|
|
|
346
351
|
if (h === handler && c === context && shallowEqual(eventtypes, e, 2)) return d.dulp = true, d;
|
|
347
352
|
}
|
|
348
353
|
if (k === changes_key) {
|
|
349
|
-
|
|
350
|
-
element
|
|
354
|
+
var i = changes.get(element) || 0;
|
|
355
|
+
changes.set(element, i + 1);
|
|
356
|
+
if (i === 0) {
|
|
357
|
+
if (!$watches.has(element)) $watches.set(element, {});
|
|
358
|
+
}
|
|
351
359
|
}
|
|
352
360
|
if (firstmost) handlers.unshift(listener2);
|
|
353
361
|
else handlers.push(listener2);
|
|
@@ -417,7 +425,7 @@ var on = document.efronton = function (k) {
|
|
|
417
425
|
if (e.keyCode) {
|
|
418
426
|
if (e.which === undefined) e.which = e.keyCode;
|
|
419
427
|
}
|
|
420
|
-
broadcast.call(target, k,
|
|
428
|
+
broadcast.call(target, k, hk, e);
|
|
421
429
|
return e.returnValue;
|
|
422
430
|
};
|
|
423
431
|
var emiters = [];
|
package/coms/zimoli/popup.js
CHANGED
|
@@ -27,20 +27,20 @@ var popup = function (path) {
|
|
|
27
27
|
throw new Error(i18n`参数异常:${path}`);
|
|
28
28
|
};
|
|
29
29
|
var onAppendUp = function () {
|
|
30
|
-
var upwith = this
|
|
30
|
+
var upwith = $upwith.get(this);
|
|
31
31
|
if (isArray(upwith) && upwith.indexOf(this) < 0) {
|
|
32
32
|
upwith.push(this);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
35
|
var onRemoveUp = function () {
|
|
36
|
-
var upwith = this
|
|
36
|
+
var upwith = $upwith.get(this);
|
|
37
37
|
if (isArray(upwith)) {
|
|
38
38
|
removeFromList(upwith, this);
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
var setUpwith = function (page, upwith) {
|
|
42
42
|
if (!isArray(upwith)) return;
|
|
43
|
-
page
|
|
43
|
+
$upwith.set(page, upwith);
|
|
44
44
|
on('append')(page, onAppendUp);
|
|
45
45
|
on('remove')(page, onRemoveUp);
|
|
46
46
|
};
|
|
@@ -365,7 +365,7 @@ var _as_yextra = function (global, innerWidth, innerHeight, element, target, poi
|
|
|
365
365
|
};
|
|
366
366
|
var _as_xextra = arriswise(_as_yextra, arguments);
|
|
367
367
|
var popup_as_single = function (element, z) {
|
|
368
|
-
if (!isMounted(element)) css(element, `z-index:${
|
|
368
|
+
if (!isMounted(element)) css(element, `z-index:${isFinit(z) ? z : zIndex()};`);
|
|
369
369
|
global(element, false);
|
|
370
370
|
};
|
|
371
371
|
var popup_to_point = function (element, [x, y]) {
|
|
@@ -427,7 +427,7 @@ popup.upwith = function (collects) {
|
|
|
427
427
|
};
|
|
428
428
|
var global = function (element, issingle) {
|
|
429
429
|
once("remove")(element, cleanup);
|
|
430
|
-
var upwith = element
|
|
430
|
+
var upwith = $upwith.get(element) || rootElements;
|
|
431
431
|
if (upwith.indexOf(element) < 0) upwith.push(element);
|
|
432
432
|
if (isMounted(element)) return;
|
|
433
433
|
popup.global &&
|