@stemy/ngx-utils 11.2.9 → 11.2.10
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/bundles/stemy-ngx-utils.umd.js +64 -59
- package/bundles/stemy-ngx-utils.umd.js.map +1 -1
- package/bundles/stemy-ngx-utils.umd.min.js +1 -1
- package/bundles/stemy-ngx-utils.umd.min.js.map +1 -1
- package/esm2015/ngx-utils/utils/observable.utils.js +12 -6
- package/fesm2015/stemy-ngx-utils.js +61 -56
- package/fesm2015/stemy-ngx-utils.js.map +1 -1
- package/ngx-utils/utils/observable.utils.d.ts +1 -0
- package/package.json +1 -1
- package/stemy-ngx-utils.metadata.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { from, Observable, Subject, Subscription } from "rxjs";
|
|
2
2
|
import { mergeMap } from "rxjs/operators";
|
|
3
|
+
import { TimerUtils } from "./timer.utils";
|
|
3
4
|
export class ObservableUtils {
|
|
4
5
|
static toSearch(search) {
|
|
5
6
|
return mergeMap(
|
|
@@ -23,18 +24,23 @@ export class ObservableUtils {
|
|
|
23
24
|
const subscriptions = [];
|
|
24
25
|
subscribers.forEach(info => {
|
|
25
26
|
let alreadyCalled = false;
|
|
27
|
+
const timer = info.timeout > 0 ? TimerUtils.createTimeout() : 0;
|
|
28
|
+
const cb = timer ? function () {
|
|
29
|
+
const args = Array.from(arguments);
|
|
30
|
+
timer.set(() => {
|
|
31
|
+
info.cb.apply(null, args);
|
|
32
|
+
}, info.timeout);
|
|
33
|
+
} : info.cb;
|
|
26
34
|
info.subjects.forEach(subject => {
|
|
27
|
-
const ss = subject.subscribe(
|
|
28
|
-
const args = Array.from(arguments);
|
|
29
|
-
args.unshift(subject);
|
|
35
|
+
const ss = subject.subscribe((value) => {
|
|
30
36
|
alreadyCalled = true;
|
|
31
|
-
|
|
37
|
+
cb.call(null, subject, value);
|
|
32
38
|
});
|
|
33
39
|
subscriptions.push(ss);
|
|
34
40
|
});
|
|
35
41
|
if (alreadyCalled)
|
|
36
42
|
return;
|
|
37
|
-
|
|
43
|
+
cb();
|
|
38
44
|
});
|
|
39
45
|
return ObservableUtils.multiSubscription(...subscriptions);
|
|
40
46
|
}
|
|
@@ -54,4 +60,4 @@ export class ObservableUtils {
|
|
|
54
60
|
});
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvb2JzZXJ2YWJsZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUXpDLE1BQU0sT0FBTyxlQUFlO0lBRXhCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBeUI7UUFDckMsT0FBTyxRQUFRO1FBQ1gsV0FBVztRQUNYLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQ3BELENBQ0csVUFBVSxDQUFDLE1BQU07UUFDYixXQUFXO1FBQ1gsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsYUFBNkI7UUFDckQsV0FBVztRQUNYLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNoQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFDRixPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBOEI7UUFDOUMsTUFBTSxhQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUN6QyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDZixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDWCxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDbkMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDckIsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxhQUFhO2dCQUFFLE9BQU87WUFDMUIsRUFBRSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBdUI7UUFDdkMsSUFBSSxPQUFZLENBQUM7UUFDakIsT0FBTyxJQUFJLFVBQVUsQ0FBTSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1YsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3hCLElBQUk7b0JBQ0EsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO2lCQUNsQztnQkFBQyxPQUFPLEdBQUcsRUFBRTtvQkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN0QjthQUNKO1lBQ0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7bWVyZ2VNYXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuaW1wb3J0IHtJU2VhcmNoT2JzZXJ2YWJsZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1RpbWVyVXRpbHN9IGZyb20gXCIuL3RpbWVyLnV0aWxzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVySW5mbyB7XHJcbiAgICBzdWJqZWN0czogT2JzZXJ2YWJsZTxhbnk+W107XHJcbiAgICBjYjogKGV2PzogT2JzZXJ2YWJsZTxhbnk+LCAuLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xyXG4gICAgdGltZW91dD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE9ic2VydmFibGVVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIHRvU2VhcmNoKHNlYXJjaDogSVNlYXJjaE9ic2VydmFibGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBtZXJnZU1hcChcclxuICAgICAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICAgICAgKHRva2VuOiBzdHJpbmcpID0+IHNlYXJjaC5nZXRTZWFyY2hSZXN1bHRzKHRva2VuKVxyXG4gICAgICAgICkoXHJcbiAgICAgICAgICAgIE9ic2VydmFibGUuY3JlYXRlKFxyXG4gICAgICAgICAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICAgICAgICAgIChvYnNlcnZlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChzZWFyY2guc2VhcmNoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG11bHRpU3Vic2NyaXB0aW9uKC4uLnN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdKTogU3Vic2NyaXB0aW9uIHtcclxuICAgICAgICAvLyBAZHluYW1pY1xyXG4gICAgICAgIGNvbnN0IGxhbWJkYSA9ICgpID0+IHtcclxuICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgcy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKGxhbWJkYSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHN1YnNjcmliZSguLi5zdWJzY3JpYmVyczogSVN1YnNjcmliZXJJbmZvW10pOiBTdWJzY3JpcHRpb24ge1xyXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICAgICAgc3Vic2NyaWJlcnMuZm9yRWFjaChpbmZvID0+IHtcclxuICAgICAgICAgICAgbGV0IGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3QgdGltZXIgPSBpbmZvLnRpbWVvdXQgPiAwID8gVGltZXJVdGlscy5jcmVhdGVUaW1lb3V0KCkgOiAwO1xyXG4gICAgICAgICAgICBjb25zdCBjYiA9IHRpbWVyID8gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IEFycmF5LmZyb20oYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgIHRpbWVyLnNldCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5mby5jYi5hcHBseShudWxsLCBhcmdzKTtcclxuICAgICAgICAgICAgICAgIH0sIGluZm8udGltZW91dCk7XHJcbiAgICAgICAgICAgIH0gOiBpbmZvLmNiO1xyXG4gICAgICAgICAgICBpbmZvLnN1YmplY3RzLmZvckVhY2goc3ViamVjdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzcyA9IHN1YmplY3Quc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNiLmNhbGwobnVsbCwgc3ViamVjdCwgdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2goc3MpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcclxuICAgICAgICAgICAgY2IoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZVV0aWxzLm11bHRpU3Vic2NyaXB0aW9uKC4uLnN1YnNjcmlwdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tRnVuY3Rpb24oY2FsbGJhY2tGdW5jOiAoKSA9PiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4oKHN1YnNjcmliZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFzdWJqZWN0KSB7XHJcbiAgICAgICAgICAgICAgICBzdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdCA9IGZyb20oY2FsbGJhY2tGdW5jKCkpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzdWJqZWN0LnN1YnNjcmliZShzdWJzY3JpYmVyKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1485,6 +1485,57 @@ __decorate([
|
|
|
1485
1485
|
FactoryDependencies(AUTH_SERVICE, StateService)
|
|
1486
1486
|
], AuthGuard, "guardAuthStateField", null);
|
|
1487
1487
|
|
|
1488
|
+
class TimerUtils {
|
|
1489
|
+
static createTimeout(func, time) {
|
|
1490
|
+
// @dynamic
|
|
1491
|
+
const run = (timer) => {
|
|
1492
|
+
timer.clear();
|
|
1493
|
+
timer.id = setTimeout(() => {
|
|
1494
|
+
timer.id = null;
|
|
1495
|
+
timer.func();
|
|
1496
|
+
}, timer.time);
|
|
1497
|
+
};
|
|
1498
|
+
// @dynamic
|
|
1499
|
+
const clear = (timer) => {
|
|
1500
|
+
if (!timer.id)
|
|
1501
|
+
return;
|
|
1502
|
+
clearTimeout(timer.id);
|
|
1503
|
+
timer.id = null;
|
|
1504
|
+
};
|
|
1505
|
+
return TimerUtils.createTimer(run, clear, func, time);
|
|
1506
|
+
}
|
|
1507
|
+
static createInterval(func, time) {
|
|
1508
|
+
// @dynamic
|
|
1509
|
+
const run = (timer) => {
|
|
1510
|
+
timer.clear();
|
|
1511
|
+
timer.id = setInterval(timer.func, timer.time);
|
|
1512
|
+
};
|
|
1513
|
+
// @dynamic
|
|
1514
|
+
const clear = (timer) => {
|
|
1515
|
+
if (!timer.id)
|
|
1516
|
+
return;
|
|
1517
|
+
clearInterval(timer.id);
|
|
1518
|
+
timer.id = null;
|
|
1519
|
+
};
|
|
1520
|
+
return TimerUtils.createTimer(run, clear, func, time);
|
|
1521
|
+
}
|
|
1522
|
+
static createTimer(run, clear, func, time) {
|
|
1523
|
+
const timer = {};
|
|
1524
|
+
const setParams = (func, time) => {
|
|
1525
|
+
timer.func = !ObjectUtils.isFunction(func) ? (() => { }) : func;
|
|
1526
|
+
timer.time = !ObjectUtils.isNumber(time) ? 100 : time;
|
|
1527
|
+
};
|
|
1528
|
+
timer.run = () => run(timer);
|
|
1529
|
+
timer.clear = () => clear(timer);
|
|
1530
|
+
timer.set = (func, time) => {
|
|
1531
|
+
setParams(func, time);
|
|
1532
|
+
timer.run();
|
|
1533
|
+
};
|
|
1534
|
+
setParams(func, time);
|
|
1535
|
+
return timer;
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1488
1539
|
class ObservableUtils {
|
|
1489
1540
|
static toSearch(search) {
|
|
1490
1541
|
return mergeMap(
|
|
@@ -1508,18 +1559,23 @@ class ObservableUtils {
|
|
|
1508
1559
|
const subscriptions = [];
|
|
1509
1560
|
subscribers.forEach(info => {
|
|
1510
1561
|
let alreadyCalled = false;
|
|
1562
|
+
const timer = info.timeout > 0 ? TimerUtils.createTimeout() : 0;
|
|
1563
|
+
const cb = timer ? function () {
|
|
1564
|
+
const args = Array.from(arguments);
|
|
1565
|
+
timer.set(() => {
|
|
1566
|
+
info.cb.apply(null, args);
|
|
1567
|
+
}, info.timeout);
|
|
1568
|
+
} : info.cb;
|
|
1511
1569
|
info.subjects.forEach(subject => {
|
|
1512
|
-
const ss = subject.subscribe(
|
|
1513
|
-
const args = Array.from(arguments);
|
|
1514
|
-
args.unshift(subject);
|
|
1570
|
+
const ss = subject.subscribe((value) => {
|
|
1515
1571
|
alreadyCalled = true;
|
|
1516
|
-
|
|
1572
|
+
cb.call(null, subject, value);
|
|
1517
1573
|
});
|
|
1518
1574
|
subscriptions.push(ss);
|
|
1519
1575
|
});
|
|
1520
1576
|
if (alreadyCalled)
|
|
1521
1577
|
return;
|
|
1522
|
-
|
|
1578
|
+
cb();
|
|
1523
1579
|
});
|
|
1524
1580
|
return ObservableUtils.multiSubscription(...subscriptions);
|
|
1525
1581
|
}
|
|
@@ -1686,57 +1742,6 @@ class SetUtils {
|
|
|
1686
1742
|
}
|
|
1687
1743
|
}
|
|
1688
1744
|
|
|
1689
|
-
class TimerUtils {
|
|
1690
|
-
static createTimeout(func, time) {
|
|
1691
|
-
// @dynamic
|
|
1692
|
-
const run = (timer) => {
|
|
1693
|
-
timer.clear();
|
|
1694
|
-
timer.id = setTimeout(() => {
|
|
1695
|
-
timer.id = null;
|
|
1696
|
-
timer.func();
|
|
1697
|
-
}, timer.time);
|
|
1698
|
-
};
|
|
1699
|
-
// @dynamic
|
|
1700
|
-
const clear = (timer) => {
|
|
1701
|
-
if (!timer.id)
|
|
1702
|
-
return;
|
|
1703
|
-
clearTimeout(timer.id);
|
|
1704
|
-
timer.id = null;
|
|
1705
|
-
};
|
|
1706
|
-
return TimerUtils.createTimer(run, clear, func, time);
|
|
1707
|
-
}
|
|
1708
|
-
static createInterval(func, time) {
|
|
1709
|
-
// @dynamic
|
|
1710
|
-
const run = (timer) => {
|
|
1711
|
-
timer.clear();
|
|
1712
|
-
timer.id = setInterval(timer.func, timer.time);
|
|
1713
|
-
};
|
|
1714
|
-
// @dynamic
|
|
1715
|
-
const clear = (timer) => {
|
|
1716
|
-
if (!timer.id)
|
|
1717
|
-
return;
|
|
1718
|
-
clearInterval(timer.id);
|
|
1719
|
-
timer.id = null;
|
|
1720
|
-
};
|
|
1721
|
-
return TimerUtils.createTimer(run, clear, func, time);
|
|
1722
|
-
}
|
|
1723
|
-
static createTimer(run, clear, func, time) {
|
|
1724
|
-
const timer = {};
|
|
1725
|
-
const setParams = (func, time) => {
|
|
1726
|
-
timer.func = !ObjectUtils.isFunction(func) ? (() => { }) : func;
|
|
1727
|
-
timer.time = !ObjectUtils.isNumber(time) ? 100 : time;
|
|
1728
|
-
};
|
|
1729
|
-
timer.run = () => run(timer);
|
|
1730
|
-
timer.clear = () => clear(timer);
|
|
1731
|
-
timer.set = (func, time) => {
|
|
1732
|
-
setParams(func, time);
|
|
1733
|
-
timer.run();
|
|
1734
|
-
};
|
|
1735
|
-
setParams(func, time);
|
|
1736
|
-
return timer;
|
|
1737
|
-
}
|
|
1738
|
-
}
|
|
1739
|
-
|
|
1740
1745
|
class UniqueUtils {
|
|
1741
1746
|
static uuid() {
|
|
1742
1747
|
if (typeof window !== "undefined" && typeof window.crypto !== "undefined" && typeof window.crypto.getRandomValues !== "undefined") {
|