@sumaris-net/ngx-components 2.0.0-rc11 → 2.0.0-rc13
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/esm2020/src/app/core/services/account.service.mjs +18 -19
- package/esm2020/src/app/core/services/base-graphql-service.class.mjs +5 -5
- package/esm2020/src/app/core/services/base58.mjs +2 -2
- package/esm2020/src/app/core/services/crypto.service.mjs +79 -94
- package/esm2020/src/app/core/services/local-settings.service.mjs +2 -3
- package/esm2020/src/app/core/services/model/peer.model.mjs +3 -3
- package/esm2020/src/app/core/services/platform.service.mjs +2 -3
- package/esm2020/src/app/core/table/table.class.mjs +4 -12
- package/esm2020/src/app/shared/dates.mjs +2 -3
- package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +2 -3
- package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +2 -3
- package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +2 -3
- package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +2 -3
- package/esm2020/src/app/shared/validator/validators.mjs +2 -3
- package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +2 -3
- package/esm2020/src/app/social/user-event/user-event.service.mjs +2 -3
- package/esm2020/src/app/vendor.mjs +3 -5
- package/fesm2015/sumaris-net.ngx-components.mjs +132 -161
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +127 -164
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +2 -1
- package/src/app/core/services/account.service.d.ts +5 -6
- package/src/app/core/services/base-graphql-service.class.d.ts +9 -8
- package/src/app/core/services/crypto.service.d.ts +23 -18
- package/src/app/core/table/table.class.d.ts +2 -6
- package/src/app/shared/dates.d.ts +2 -3
- package/src/app/shared/material/swipe/testing/swipe.test.d.ts +1 -2
- package/src/app/vendor.d.ts +0 -2
|
@@ -70,14 +70,12 @@ import * as momentImported from 'moment';
|
|
|
70
70
|
import { isMoment } from 'moment';
|
|
71
71
|
import * as i1 from '@angular/material-moment-adapter';
|
|
72
72
|
import { MatMomentDateModule } from '@angular/material-moment-adapter';
|
|
73
|
-
import
|
|
74
|
-
import { TextMaskModule } from 'angular2-text-mask';
|
|
75
|
-
import { sign, box, hash, verify } from 'tweetnacl';
|
|
76
|
-
import 'tweetnacl-util';
|
|
77
|
-
import 'scrypt-async';
|
|
73
|
+
import { decodeUTF8, encodeBase64, decodeBase64 } from 'tweetnacl-util';
|
|
78
74
|
import 'hammerjs';
|
|
79
75
|
import * as momentTZImported from 'moment-timezone';
|
|
80
76
|
import * as uuidv4Imported from 'uuid/v4';
|
|
77
|
+
import * as i11$1 from 'angular2-text-mask';
|
|
78
|
+
import { TextMaskModule } from 'angular2-text-mask';
|
|
81
79
|
import * as i10 from '@angular/material/datepicker';
|
|
82
80
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
83
81
|
import * as i12 from 'ngx-material-timepicker';
|
|
@@ -114,6 +112,12 @@ import * as i3 from '@ionic/storage-angular';
|
|
|
114
112
|
import { IonicStorageModule } from '@ionic/storage-angular';
|
|
115
113
|
import * as i7$2 from '@awesome-cordova-plugins/network/ngx';
|
|
116
114
|
import { Connection } from '@awesome-cordova-plugins/network/ngx';
|
|
115
|
+
import { scryptEncode } from '@polkadot/util-crypto/scrypt/encode';
|
|
116
|
+
import { cryptoWaitReady, ed25519PairFromSeed, ed25519Sign, ed25519Verify } from '@polkadot/util-crypto';
|
|
117
|
+
import { sha512 } from '@noble/hashes/sha512';
|
|
118
|
+
import { sha256 } from '@noble/hashes/sha256';
|
|
119
|
+
import { utils } from '@noble/ed25519';
|
|
120
|
+
import { bytesToHex } from '@noble/hashes/utils';
|
|
117
121
|
import * as i5$1 from 'ionic-cache';
|
|
118
122
|
import { CacheModule } from 'ionic-cache';
|
|
119
123
|
import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
|
|
@@ -2540,7 +2544,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
2540
2544
|
type: Input
|
|
2541
2545
|
}] } });
|
|
2542
2546
|
|
|
2543
|
-
const moment
|
|
2547
|
+
const moment = momentImported;
|
|
2548
|
+
const tz = momentTZImported;
|
|
2549
|
+
const uuidv4 = uuidv4Imported;
|
|
2550
|
+
|
|
2544
2551
|
class DateDiffDurationPipe {
|
|
2545
2552
|
constructor(dateAdapter, translate) {
|
|
2546
2553
|
this.dateAdapter = dateAdapter;
|
|
@@ -2556,11 +2563,11 @@ class DateDiffDurationPipe {
|
|
|
2556
2563
|
return this.format(startDate, endDate, args);
|
|
2557
2564
|
}
|
|
2558
2565
|
format(startDate, endDate, args) {
|
|
2559
|
-
const duration = moment
|
|
2566
|
+
const duration = moment.duration(endDate.diff(startDate));
|
|
2560
2567
|
if (duration.asMinutes() < 0)
|
|
2561
2568
|
return '';
|
|
2562
2569
|
const withSeconds = args === null || args === void 0 ? void 0 : args.seconds;
|
|
2563
|
-
const timeDuration = moment
|
|
2570
|
+
const timeDuration = moment(0)
|
|
2564
2571
|
.hour(duration.hours())
|
|
2565
2572
|
.minute(duration.minutes());
|
|
2566
2573
|
if (withSeconds) {
|
|
@@ -2995,7 +3002,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
2995
3002
|
args: [{ name: 'fileSize' }]
|
|
2996
3003
|
}] });
|
|
2997
3004
|
|
|
2998
|
-
const moment$9 = momentImported;
|
|
2999
3005
|
const DATE_UNIX_TIMESTAMP = 'X';
|
|
3000
3006
|
const DATE_UNIX_MS_TIMESTAMP = 'x';
|
|
3001
3007
|
const MOMENT_NO_TIME_PROPERTY = '_hasNoTime';
|
|
@@ -3084,37 +3090,37 @@ function fromDateISOString(value) {
|
|
|
3084
3090
|
return value;
|
|
3085
3091
|
if (typeof value === 'string' && value.length === 10) {
|
|
3086
3092
|
// Parse the input value, as a date only
|
|
3087
|
-
const dateOnly = moment
|
|
3093
|
+
const dateOnly = moment(value, DATE_PATTERN);
|
|
3088
3094
|
if (dateOnly.isValid())
|
|
3089
3095
|
return DateUtils.markNoTime(dateOnly);
|
|
3090
3096
|
}
|
|
3091
3097
|
// Parse the input value, as a ISO date time
|
|
3092
|
-
const date = moment
|
|
3098
|
+
const date = moment(value, DATE_ISO_PATTERN);
|
|
3093
3099
|
if (date.isValid())
|
|
3094
3100
|
return date;
|
|
3095
3101
|
// Not valid: trying to convert from unix timestamp
|
|
3096
3102
|
if (typeof value === 'string') {
|
|
3097
3103
|
console.warn('Wrong date format - Trying to convert from local time: ' + value);
|
|
3098
3104
|
if (value.length === 10) {
|
|
3099
|
-
return moment
|
|
3105
|
+
return moment(value, DATE_UNIX_TIMESTAMP);
|
|
3100
3106
|
}
|
|
3101
3107
|
else if (value.length === 13) {
|
|
3102
|
-
return moment
|
|
3108
|
+
return moment(value, DATE_UNIX_MS_TIMESTAMP);
|
|
3103
3109
|
}
|
|
3104
3110
|
}
|
|
3105
3111
|
console.warn('Unable to parse date: ' + value);
|
|
3106
3112
|
return undefined;
|
|
3107
3113
|
}
|
|
3108
3114
|
function fromUnixTimestamp(timeInSec) {
|
|
3109
|
-
return moment
|
|
3115
|
+
return moment(timeInSec, DATE_UNIX_TIMESTAMP);
|
|
3110
3116
|
}
|
|
3111
3117
|
function fromUnixMsTimestamp(timeInMs) {
|
|
3112
|
-
return moment
|
|
3118
|
+
return moment(timeInMs, DATE_UNIX_MS_TIMESTAMP);
|
|
3113
3119
|
}
|
|
3114
3120
|
function toDuration(value, unit) {
|
|
3115
3121
|
if (!value)
|
|
3116
3122
|
return undefined;
|
|
3117
|
-
const duration = moment
|
|
3123
|
+
const duration = moment.duration(value, unit);
|
|
3118
3124
|
// fix 990+ ms
|
|
3119
3125
|
if (duration.milliseconds() >= 990) {
|
|
3120
3126
|
duration.add(1000 - duration.milliseconds(), 'ms');
|
|
@@ -3390,7 +3396,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
3390
3396
|
type: Injectable
|
|
3391
3397
|
}] });
|
|
3392
3398
|
|
|
3393
|
-
const moment$8 = momentImported;
|
|
3394
3399
|
// @dynamic
|
|
3395
3400
|
class SharedValidators {
|
|
3396
3401
|
static getDoubleRegexp(maxDecimals) {
|
|
@@ -3471,7 +3476,7 @@ class SharedValidators {
|
|
|
3471
3476
|
}
|
|
3472
3477
|
static validDate(control) {
|
|
3473
3478
|
const value = control.value;
|
|
3474
|
-
const date = !value || moment
|
|
3479
|
+
const date = !value || moment.isMoment(value) ? value : moment(value, DATE_ISO_PATTERN);
|
|
3475
3480
|
if (date && (!date.isValid() || date.year() < 1970)) {
|
|
3476
3481
|
return { validDate: true };
|
|
3477
3482
|
}
|
|
@@ -5708,10 +5713,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
5708
5713
|
}]
|
|
5709
5714
|
}] });
|
|
5710
5715
|
|
|
5711
|
-
const moment$7 = momentImported;
|
|
5712
|
-
const tz = momentTZImported;
|
|
5713
|
-
const uuidv4 = uuidv4Imported;
|
|
5714
|
-
|
|
5715
5716
|
const DEFAULT_VALUE_ACCESSOR$5 = {
|
|
5716
5717
|
provide: NG_VALUE_ACCESSOR,
|
|
5717
5718
|
useExisting: forwardRef(() => MatDate),
|
|
@@ -5893,7 +5894,7 @@ class MatDate {
|
|
|
5893
5894
|
// No value, but mobile mode: use the current date
|
|
5894
5895
|
if (!value && this.mobile) {
|
|
5895
5896
|
this._writing = true;
|
|
5896
|
-
value = DateUtils.resetTime(moment
|
|
5897
|
+
value = DateUtils.resetTime(moment().locale(this.locale), this.timezone);
|
|
5897
5898
|
this.formControl.setValue(value, { emitEvent: false });
|
|
5898
5899
|
this.markForCheck();
|
|
5899
5900
|
this._writing = false;
|
|
@@ -6266,7 +6267,7 @@ class MatDateTime {
|
|
|
6266
6267
|
// No value, but mobile mode: use the current date
|
|
6267
6268
|
if (!value && this.mobile) {
|
|
6268
6269
|
this._writing = true;
|
|
6269
|
-
value = DateUtils.resetTime(moment
|
|
6270
|
+
value = DateUtils.resetTime(moment().locale(this.locale));
|
|
6270
6271
|
this.formControl.setValue(value, { emitEvent: false });
|
|
6271
6272
|
this.markForCheck();
|
|
6272
6273
|
this._writing = false;
|
|
@@ -13070,7 +13071,7 @@ let Peer = Peer_1 = class Peer extends Entity {
|
|
|
13070
13071
|
}
|
|
13071
13072
|
static parseUrl(peerUrl) {
|
|
13072
13073
|
const url = new URL(peerUrl);
|
|
13073
|
-
return
|
|
13074
|
+
return this.fromObject({
|
|
13074
13075
|
dns: url.hostname,
|
|
13075
13076
|
port: isNilOrBlank(url.port) ? undefined : url.port,
|
|
13076
13077
|
useSsl: url.protocol && (url.protocol.startsWith('https') || url.protocol.startsWith('wss')),
|
|
@@ -13088,7 +13089,7 @@ let Peer = Peer_1 = class Peer extends Entity {
|
|
|
13088
13089
|
return path.substring(1);
|
|
13089
13090
|
return path;
|
|
13090
13091
|
}).filter(isNotNilOrBlank);
|
|
13091
|
-
return [noTrailingSlash(
|
|
13092
|
+
return [noTrailingSlash(this.fromObject(peer).url)].concat(...paths).join('/');
|
|
13092
13093
|
}
|
|
13093
13094
|
asObject(options) {
|
|
13094
13095
|
return super.asObject(options);
|
|
@@ -13124,7 +13125,6 @@ Peer = Peer_1 = __decorate([
|
|
|
13124
13125
|
EntityClass({ typename: 'PeerVO' })
|
|
13125
13126
|
], Peer);
|
|
13126
13127
|
|
|
13127
|
-
const moment$6 = momentImported;
|
|
13128
13128
|
const SETTINGS_STORAGE_KEY = 'settings';
|
|
13129
13129
|
const SETTINGS_TRANSIENT_PROPERTIES = ['mobile', 'touchUi' /*deprecated*/];
|
|
13130
13130
|
// fixme: this constant points to static environment
|
|
@@ -13362,11 +13362,11 @@ class LocalSettingsService extends StartableService {
|
|
|
13362
13362
|
if (!feature) {
|
|
13363
13363
|
feature = {
|
|
13364
13364
|
name: featureName.toLowerCase(),
|
|
13365
|
-
lastSyncDate: moment
|
|
13365
|
+
lastSyncDate: moment().toISOString()
|
|
13366
13366
|
};
|
|
13367
13367
|
}
|
|
13368
13368
|
else {
|
|
13369
|
-
feature.lastSyncDate = moment
|
|
13369
|
+
feature.lastSyncDate = moment().toISOString();
|
|
13370
13370
|
}
|
|
13371
13371
|
this.saveOfflineFeature(feature);
|
|
13372
13372
|
}
|
|
@@ -13527,7 +13527,7 @@ class LocalSettingsService extends StartableService {
|
|
|
13527
13527
|
if (!page || !page.title || !page.path)
|
|
13528
13528
|
throw Error('Missing required argument \'page\', \'page.path\' or \'page.title\'');
|
|
13529
13529
|
// Set time
|
|
13530
|
-
page.time = page.time || moment
|
|
13530
|
+
page.time = page.time || moment();
|
|
13531
13531
|
// Clean the title (remove <small> tags)
|
|
13532
13532
|
if (!opts || opts.removeTitleSmallTag !== false) {
|
|
13533
13533
|
const tagIndex = page.title.indexOf('</small>');
|
|
@@ -13928,7 +13928,7 @@ class Base58 {
|
|
|
13928
13928
|
}
|
|
13929
13929
|
static decode(string) {
|
|
13930
13930
|
if (string.length === 0)
|
|
13931
|
-
return (new Uint8Array());
|
|
13931
|
+
return (new Uint8Array(0));
|
|
13932
13932
|
const input = string.split('').map(function (c) {
|
|
13933
13933
|
return Base58.getAlphabetMap()[c];
|
|
13934
13934
|
});
|
|
@@ -13959,124 +13959,111 @@ class Base58 {
|
|
|
13959
13959
|
}
|
|
13960
13960
|
Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
13961
13961
|
|
|
13962
|
-
const
|
|
13963
|
-
const
|
|
13964
|
-
|
|
13965
|
-
|
|
13966
|
-
|
|
13967
|
-
|
|
13968
|
-
|
|
13969
|
-
|
|
13970
|
-
|
|
13971
|
-
|
|
13972
|
-
|
|
13973
|
-
|
|
13974
|
-
|
|
13975
|
-
|
|
13976
|
-
|
|
13977
|
-
|
|
13978
|
-
|
|
13979
|
-
|
|
13980
|
-
|
|
13981
|
-
|
|
13982
|
-
|
|
13983
|
-
|
|
13984
|
-
|
|
13985
|
-
|
|
13986
|
-
|
|
13987
|
-
|
|
13988
|
-
N: 16384,
|
|
13989
|
-
r: 32,
|
|
13990
|
-
p: 2,
|
|
13991
|
-
memory: -1 // default
|
|
13992
|
-
},
|
|
13993
|
-
HARDEST: {
|
|
13994
|
-
N: 65536,
|
|
13995
|
-
r: 32,
|
|
13996
|
-
p: 4,
|
|
13997
|
-
memory: -1 // default
|
|
13998
|
-
},
|
|
13999
|
-
EXTREME: {
|
|
14000
|
-
N: 262144,
|
|
14001
|
-
r: 64,
|
|
14002
|
-
p: 8,
|
|
14003
|
-
memory: -1 // default
|
|
14004
|
-
}
|
|
14005
|
-
}
|
|
13962
|
+
const ED25519_SEED_LENGTH = 32; // Length of a ED25519 seed
|
|
13963
|
+
const SCRYPT_PARAMS = {
|
|
13964
|
+
SIMPLE: {
|
|
13965
|
+
N: 2048,
|
|
13966
|
+
r: 8,
|
|
13967
|
+
p: 1
|
|
13968
|
+
},
|
|
13969
|
+
DEFAULT: {
|
|
13970
|
+
N: 4096,
|
|
13971
|
+
r: 16,
|
|
13972
|
+
p: 1
|
|
13973
|
+
},
|
|
13974
|
+
SECURE: {
|
|
13975
|
+
N: 16384,
|
|
13976
|
+
r: 32,
|
|
13977
|
+
p: 2
|
|
13978
|
+
},
|
|
13979
|
+
HARDEST: {
|
|
13980
|
+
N: 65536,
|
|
13981
|
+
r: 32,
|
|
13982
|
+
p: 4
|
|
13983
|
+
},
|
|
13984
|
+
EXTREME: {
|
|
13985
|
+
N: 262144,
|
|
13986
|
+
r: 64,
|
|
13987
|
+
p: 8
|
|
14006
13988
|
}
|
|
14007
13989
|
};
|
|
14008
13990
|
class CryptoService {
|
|
13991
|
+
static get started() {
|
|
13992
|
+
return this._ready;
|
|
13993
|
+
}
|
|
13994
|
+
static ready() {
|
|
13995
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13996
|
+
if (this._ready)
|
|
13997
|
+
return; // OK
|
|
13998
|
+
yield cryptoWaitReady();
|
|
13999
|
+
this._ready = true;
|
|
14000
|
+
});
|
|
14001
|
+
}
|
|
14009
14002
|
/**
|
|
14010
|
-
* Generate sign keypair,
|
|
14003
|
+
* Generate a sign keypair, using scrypt, from a salt and a password
|
|
14011
14004
|
*
|
|
14012
14005
|
* @param salt
|
|
14013
14006
|
* @param password
|
|
14014
14007
|
* @param scryptParams
|
|
14015
14008
|
*/
|
|
14016
|
-
scryptKeypair(salt, password, scryptParams) {
|
|
14017
|
-
return
|
|
14018
|
-
|
|
14019
|
-
|
|
14020
|
-
|
|
14021
|
-
|
|
14022
|
-
|
|
14023
|
-
|
|
14024
|
-
|
|
14025
|
-
resolve(derivedKey);
|
|
14026
|
-
});
|
|
14027
|
-
})
|
|
14028
|
-
.then((seed) => {
|
|
14029
|
-
const byteseed = nacl.util.decodeBase64(seed);
|
|
14030
|
-
const signKeypair = nacl.sign.keyPair.fromSeed(byteseed);
|
|
14031
|
-
return {
|
|
14032
|
-
publicKey: signKeypair.publicKey,
|
|
14033
|
-
secretKey: signKeypair.secretKey
|
|
14034
|
-
};
|
|
14009
|
+
static scryptKeypair(salt, password, scryptParams) {
|
|
14010
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14011
|
+
if (!this.started)
|
|
14012
|
+
yield this.ready();
|
|
14013
|
+
const passwordU8a = decodeUTF8(password);
|
|
14014
|
+
const saltU8a = decodeUTF8(salt);
|
|
14015
|
+
const result = scryptEncode(passwordU8a, saltU8a, scryptParams || SCRYPT_PARAMS.DEFAULT);
|
|
14016
|
+
const seed = result.password.slice(0, ED25519_SEED_LENGTH);
|
|
14017
|
+
return ed25519PairFromSeed(seed);
|
|
14035
14018
|
});
|
|
14036
14019
|
}
|
|
14037
14020
|
/**
|
|
14038
14021
|
* Sign a message, from a key pair
|
|
14039
14022
|
*/
|
|
14040
|
-
sign(message, keypair) {
|
|
14041
|
-
return
|
|
14042
|
-
|
|
14043
|
-
|
|
14044
|
-
const
|
|
14045
|
-
|
|
14046
|
-
|
|
14047
|
-
const signature = nacl.util.encodeBase64(sig);
|
|
14048
|
-
resolve(signature);
|
|
14023
|
+
static sign(message, keypair) {
|
|
14024
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14025
|
+
if (!this.started)
|
|
14026
|
+
yield this.ready();
|
|
14027
|
+
const m = decodeUTF8(message);
|
|
14028
|
+
const sig = ed25519Sign(m, keypair);
|
|
14029
|
+
return encodeBase64(sig);
|
|
14049
14030
|
});
|
|
14050
14031
|
}
|
|
14051
14032
|
/**
|
|
14052
14033
|
* Sign a message, from a key pair
|
|
14053
14034
|
*/
|
|
14054
|
-
verify(message, signature,
|
|
14055
|
-
return
|
|
14056
|
-
|
|
14057
|
-
|
|
14058
|
-
const
|
|
14059
|
-
const
|
|
14060
|
-
|
|
14035
|
+
static verify(message, signature, publicKey) {
|
|
14036
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14037
|
+
if (!this.started)
|
|
14038
|
+
yield this.ready();
|
|
14039
|
+
const m = decodeUTF8(message);
|
|
14040
|
+
const sig = decodeBase64(signature);
|
|
14041
|
+
const pub = Base58.decode(publicKey);
|
|
14042
|
+
return ed25519Verify(m, sig, pub);
|
|
14061
14043
|
});
|
|
14062
14044
|
}
|
|
14063
14045
|
/**
|
|
14064
|
-
* Hash (using SHA256) a message
|
|
14046
|
+
* Hash (using SHA256) a message, as Hex
|
|
14065
14047
|
*/
|
|
14066
|
-
sha256(message) {
|
|
14067
|
-
|
|
14048
|
+
static sha256(message) {
|
|
14049
|
+
const m = decodeUTF8(message);
|
|
14050
|
+
const bytes = sha256(utils.concatBytes(m));
|
|
14051
|
+
return bytesToHex(bytes);
|
|
14068
14052
|
}
|
|
14069
14053
|
/**
|
|
14070
|
-
* Hash (using SHA512) a message
|
|
14054
|
+
* Hash (using SHA512) a message, as Hex
|
|
14071
14055
|
*/
|
|
14072
|
-
sha512(message) {
|
|
14073
|
-
|
|
14056
|
+
static sha512(message) {
|
|
14057
|
+
const m = decodeUTF8(message);
|
|
14058
|
+
const bytes = sha512(utils.concatBytes(m));
|
|
14059
|
+
return bytesToHex(bytes);
|
|
14074
14060
|
}
|
|
14075
|
-
encodeBase64(message) {
|
|
14076
|
-
const m =
|
|
14077
|
-
return
|
|
14061
|
+
static encodeBase64(message) {
|
|
14062
|
+
const m = decodeUTF8(message);
|
|
14063
|
+
return encodeBase64(m);
|
|
14078
14064
|
}
|
|
14079
14065
|
}
|
|
14066
|
+
CryptoService._ready = false;
|
|
14080
14067
|
CryptoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: CryptoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14081
14068
|
CryptoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: CryptoService, providedIn: 'root' });
|
|
14082
14069
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: CryptoService, decorators: [{
|
|
@@ -15803,7 +15790,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
15803
15790
|
}] }];
|
|
15804
15791
|
} });
|
|
15805
15792
|
|
|
15806
|
-
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
15807
15793
|
class BaseGraphqlServiceOptions {
|
|
15808
15794
|
}
|
|
15809
15795
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
@@ -15876,7 +15862,7 @@ class BaseGraphqlService extends StartableService {
|
|
|
15876
15862
|
queries.forEach(query => {
|
|
15877
15863
|
if (Array.isArray(opts.data)) {
|
|
15878
15864
|
// Filter values, if a filter function exists
|
|
15879
|
-
const data = query.insertFilterFn ? opts.data.filter(
|
|
15865
|
+
const data = query.insertFilterFn ? opts.data.filter(d => query.insertFilterFn(d)) : opts.data;
|
|
15880
15866
|
if (isNotEmptyArray(data)) {
|
|
15881
15867
|
if (this._debug)
|
|
15882
15868
|
console.debug(`[base-data-service] Inserting data into watching query: `, query.id);
|
|
@@ -15954,8 +15940,8 @@ class BaseGraphqlService extends StartableService {
|
|
|
15954
15940
|
}
|
|
15955
15941
|
/* -- protected methods -- */
|
|
15956
15942
|
computeMutableWatchQueryId(opts) {
|
|
15957
|
-
const queryName = opts.queryName || sha256(
|
|
15958
|
-
const variablesKey = opts.variables && sha256(
|
|
15943
|
+
const queryName = opts.queryName || CryptoService.sha256(JSON.stringify(opts.query)).substring(0, 8);
|
|
15944
|
+
const variablesKey = opts.variables && CryptoService.sha256(JSON.stringify(opts.variables)).substring(0, 8) || '';
|
|
15959
15945
|
return [queryName, opts.arrayFieldName, variablesKey].join('|');
|
|
15960
15946
|
}
|
|
15961
15947
|
findMutableWatchQueries(opts) {
|
|
@@ -16137,9 +16123,8 @@ const AccountSubscriptions = {
|
|
|
16137
16123
|
}`
|
|
16138
16124
|
};
|
|
16139
16125
|
class AccountService extends BaseGraphqlService {
|
|
16140
|
-
constructor(
|
|
16126
|
+
constructor(network, graphql, settings, storage, file, translate, toastController, environment) {
|
|
16141
16127
|
super(graphql, environment);
|
|
16142
|
-
this.cryptoService = cryptoService;
|
|
16143
16128
|
this.network = network;
|
|
16144
16129
|
this.graphql = graphql;
|
|
16145
16130
|
this.settings = settings;
|
|
@@ -16330,7 +16315,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
16330
16315
|
this._cache.loaded = false;
|
|
16331
16316
|
const now = Date.now();
|
|
16332
16317
|
try {
|
|
16333
|
-
const keypair = yield
|
|
16318
|
+
const keypair = yield CryptoService.scryptKeypair(data.username, data.password);
|
|
16334
16319
|
data.account.pubkey = Base58.encode(keypair.publicKey);
|
|
16335
16320
|
// Default values
|
|
16336
16321
|
data.account.settings = data.account.settings || new UserSettings();
|
|
@@ -16377,7 +16362,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
16377
16362
|
if (!(this._cache.authToken && tokenType === 'basic-and-token')) {
|
|
16378
16363
|
if (!data || !data.username || !data.password)
|
|
16379
16364
|
throw new Error('Missing username and password');
|
|
16380
|
-
this._cache.authBasic =
|
|
16365
|
+
this._cache.authBasic = CryptoService.encodeBase64(`${data.username}:${data.password}`);
|
|
16381
16366
|
}
|
|
16382
16367
|
}
|
|
16383
16368
|
this.onAuthBasicChange.next(this._cache.authBasic);
|
|
@@ -16408,7 +16393,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
16408
16393
|
console.debug('[account] Login...');
|
|
16409
16394
|
let keypair;
|
|
16410
16395
|
try {
|
|
16411
|
-
keypair = yield
|
|
16396
|
+
keypair = yield CryptoService.scryptKeypair(data.username, data.password);
|
|
16412
16397
|
}
|
|
16413
16398
|
catch (error) {
|
|
16414
16399
|
console.error(error);
|
|
@@ -17038,13 +17023,13 @@ class AccountService extends BaseGraphqlService {
|
|
|
17038
17023
|
if (!data || !data.authChallenge)
|
|
17039
17024
|
throw challengeError; // Should never occur
|
|
17040
17025
|
// Check server signature
|
|
17041
|
-
const signatureOK = yield
|
|
17026
|
+
const signatureOK = yield CryptoService.verify(data.authChallenge.challenge, data.authChallenge.signature, data.authChallenge.pubkey);
|
|
17042
17027
|
if (!signatureOK) {
|
|
17043
17028
|
console.warn('FIXME: Bad peer signature on auth challenge !', data.authChallenge);
|
|
17044
17029
|
}
|
|
17045
17030
|
// TODO: check server pubkey as a valid certificate
|
|
17046
17031
|
// Do the challenge
|
|
17047
|
-
const signature = yield
|
|
17032
|
+
const signature = yield CryptoService.sign(data.authChallenge.challenge, this._cache.keypair);
|
|
17048
17033
|
const newToken = `${this._cache.pubkey}:${data.authChallenge.challenge}|${signature}`;
|
|
17049
17034
|
// iterate with the new token
|
|
17050
17035
|
return yield this.authenticateAndGetToken(newToken, (counter || 1) + 1 /* increment */);
|
|
@@ -17132,13 +17117,13 @@ class AccountService extends BaseGraphqlService {
|
|
|
17132
17117
|
return Toasts.show(this.toastController, this.translate, opts);
|
|
17133
17118
|
}
|
|
17134
17119
|
}
|
|
17135
|
-
AccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AccountService, deps: [{ token:
|
|
17120
|
+
AccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AccountService, deps: [{ token: NetworkService }, { token: GraphqlService }, { token: LocalSettingsService }, { token: i3.Storage }, { token: FileService }, { token: i1$1.TranslateService, optional: true }, { token: i2.ToastController, optional: true }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17136
17121
|
AccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AccountService, providedIn: 'root' });
|
|
17137
17122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AccountService, decorators: [{
|
|
17138
17123
|
type: Injectable,
|
|
17139
17124
|
args: [{ providedIn: 'root', deps: [ENVIRONMENT] }]
|
|
17140
17125
|
}], ctorParameters: function () {
|
|
17141
|
-
return [{ type:
|
|
17126
|
+
return [{ type: NetworkService }, { type: GraphqlService }, { type: LocalSettingsService }, { type: i3.Storage }, { type: FileService }, { type: i1$1.TranslateService, decorators: [{
|
|
17142
17127
|
type: Optional
|
|
17143
17128
|
}] }, { type: i2.ToastController, decorators: [{
|
|
17144
17129
|
type: Optional
|
|
@@ -17585,7 +17570,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
17585
17570
|
}] }];
|
|
17586
17571
|
} });
|
|
17587
17572
|
|
|
17588
|
-
const moment$5 = momentImported;
|
|
17589
17573
|
const AndroidOsEnvironment = Object.freeze({
|
|
17590
17574
|
DIRECTORY_DOWNLOADS: 'Download',
|
|
17591
17575
|
DIRECTORY_DOWNLOADS_OLD: 'Downloads', // Old name, for older Android version
|
|
@@ -17865,16 +17849,16 @@ class PlatformService extends StartableService {
|
|
|
17865
17849
|
}
|
|
17866
17850
|
// config moment lib
|
|
17867
17851
|
try {
|
|
17868
|
-
moment
|
|
17852
|
+
moment.locale(event.lang);
|
|
17869
17853
|
console.debug('[platform] Use locale {' + event.lang + '}');
|
|
17870
17854
|
}
|
|
17871
17855
|
// If error, fallback to en
|
|
17872
17856
|
catch (err) {
|
|
17873
|
-
moment
|
|
17857
|
+
moment.locale('en');
|
|
17874
17858
|
console.warn('[platform] Unknown local for moment lib. Using default [en]');
|
|
17875
17859
|
}
|
|
17876
17860
|
// Config date adapter
|
|
17877
|
-
this.dateAdapter.setLocale(moment
|
|
17861
|
+
this.dateAdapter.setLocale(moment.locale());
|
|
17878
17862
|
}
|
|
17879
17863
|
});
|
|
17880
17864
|
this.settings.onChange.subscribe(data => {
|
|
@@ -25109,7 +25093,6 @@ class AppTable {
|
|
|
25109
25093
|
this.defaultPageSize = DEFAULT_PAGE_SIZE;
|
|
25110
25094
|
this.defaultPageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS;
|
|
25111
25095
|
this.onRefresh = new EventEmitter();
|
|
25112
|
-
this.onOpenIdAndRow = new EventEmitter();
|
|
25113
25096
|
this.onOpenRow = new EventEmitter();
|
|
25114
25097
|
this.onNewRow = new EventEmitter();
|
|
25115
25098
|
this.onStartEditingRow = new EventEmitter();
|
|
@@ -25535,8 +25518,8 @@ class AppTable {
|
|
|
25535
25518
|
}
|
|
25536
25519
|
}
|
|
25537
25520
|
confirmAndAdd(event, row) {
|
|
25538
|
-
if (
|
|
25539
|
-
return false;
|
|
25521
|
+
if (!this.confirmEditCreate(event, row)) {
|
|
25522
|
+
return Promise.resolve(false);
|
|
25540
25523
|
}
|
|
25541
25524
|
// Add row
|
|
25542
25525
|
return this.addRow(event);
|
|
@@ -26218,11 +26201,6 @@ class AppTable {
|
|
|
26218
26201
|
if (this.debug && this.dirty) {
|
|
26219
26202
|
console.warn('[table] Opening row details, but table has unsaved changes!');
|
|
26220
26203
|
}
|
|
26221
|
-
if (this.onOpenIdAndRow.observers.length) {
|
|
26222
|
-
console.warn('[table] Detected deprecated use of (onOpenIdAndRow). Please use (onOpenRow) instead');
|
|
26223
|
-
this.onOpenIdAndRow.emit({ id, row });
|
|
26224
|
-
return true;
|
|
26225
|
-
}
|
|
26226
26204
|
if (this.onOpenRow.observers.length) {
|
|
26227
26205
|
this.onOpenRow.emit(row);
|
|
26228
26206
|
return true;
|
|
@@ -26679,7 +26657,7 @@ class AppTable {
|
|
|
26679
26657
|
}
|
|
26680
26658
|
}
|
|
26681
26659
|
AppTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AppTable, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
26682
|
-
AppTable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: AppTable, inputs: { settingsId: "settingsId", debug: "debug", i18nColumnPrefix: "i18nColumnPrefix", i18nColumnSuffix: "i18nColumnSuffix", autoLoad: "autoLoad", readOnly: "readOnly", inlineEdition: "inlineEdition", focusFirstColumn: "focusFirstColumn", confirmBeforeDelete: "confirmBeforeDelete", confirmBeforeCancel: "confirmBeforeCancel", undoableDeletion: "undoableDeletion", saveBeforeDelete: "saveBeforeDelete", keepEditedRowOnSave: "keepEditedRowOnSave", saveBeforeSort: "saveBeforeSort", saveBeforeFilter: "saveBeforeFilter", propagateRowError: "propagateRowError", defaultSortBy: "defaultSortBy", defaultSortDirection: "defaultSortDirection", defaultPageSize: "defaultPageSize", defaultPageSizeOptions: "defaultPageSizeOptions", focusColumn: "focusColumn", dataSource: "dataSource", filter: "filter", disabled: "disabled", paginator: "paginator" }, outputs: { onRefresh: "onRefresh",
|
|
26660
|
+
AppTable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: AppTable, inputs: { settingsId: "settingsId", debug: "debug", i18nColumnPrefix: "i18nColumnPrefix", i18nColumnSuffix: "i18nColumnSuffix", autoLoad: "autoLoad", readOnly: "readOnly", inlineEdition: "inlineEdition", focusFirstColumn: "focusFirstColumn", confirmBeforeDelete: "confirmBeforeDelete", confirmBeforeCancel: "confirmBeforeCancel", undoableDeletion: "undoableDeletion", saveBeforeDelete: "saveBeforeDelete", keepEditedRowOnSave: "keepEditedRowOnSave", saveBeforeSort: "saveBeforeSort", saveBeforeFilter: "saveBeforeFilter", propagateRowError: "propagateRowError", defaultSortBy: "defaultSortBy", defaultSortDirection: "defaultSortDirection", defaultPageSize: "defaultPageSize", defaultPageSizeOptions: "defaultPageSizeOptions", focusColumn: "focusColumn", dataSource: "dataSource", filter: "filter", disabled: "disabled", paginator: "paginator" }, outputs: { onRefresh: "onRefresh", onOpenRow: "onOpenRow", onNewRow: "onNewRow", onStartEditingRow: "onStartEditingRow", onConfirmEditCreateRow: "onConfirmEditCreateRow", onCancelOrDeleteRow: "onCancelOrDeleteRow", onBeforeDeleteRows: "onBeforeDeleteRows", onBeforeCancelRows: "onBeforeCancelRows", onBeforeSave: "onBeforeSave", onAfterDeletedRows: "onAfterDeletedRows", onSort: "onSort", onDirty: "onDirty", onError: "onError" }, viewQueries: [{ propertyName: "table", first: true, predicate: MatTable, descendants: true }, { propertyName: "childPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }], ngImport: i0 });
|
|
26683
26661
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AppTable, decorators: [{
|
|
26684
26662
|
type: Directive
|
|
26685
26663
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined }, { type: EntitiesTableDataSource }, { type: undefined }]; }, propDecorators: { settingsId: [{
|
|
@@ -26730,8 +26708,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
26730
26708
|
type: Input
|
|
26731
26709
|
}], onRefresh: [{
|
|
26732
26710
|
type: Output
|
|
26733
|
-
}], onOpenIdAndRow: [{
|
|
26734
|
-
type: Output
|
|
26735
26711
|
}], onOpenRow: [{
|
|
26736
26712
|
type: Output
|
|
26737
26713
|
}], onNewRow: [{
|
|
@@ -28601,7 +28577,6 @@ const SocialErrorCodes = {
|
|
|
28601
28577
|
SUBSCRIBE_JOB_PROGRESSION_ERROR: 50010
|
|
28602
28578
|
};
|
|
28603
28579
|
|
|
28604
|
-
const moment$4 = momentImported;
|
|
28605
28580
|
const APP_USER_EVENT_SERVICE = new InjectionToken('UserEventService');
|
|
28606
28581
|
class AbstractUserEventService extends BaseGraphqlService {
|
|
28607
28582
|
constructor(graphql, accountService, network, translate, options) {
|
|
@@ -28977,7 +28952,7 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
28977
28952
|
}
|
|
28978
28953
|
resetCount() {
|
|
28979
28954
|
this._countSubject.next(undefined);
|
|
28980
|
-
this.resetCountDate = moment
|
|
28955
|
+
this.resetCountDate = moment();
|
|
28981
28956
|
// restart listening count changes
|
|
28982
28957
|
this.startListenCountChanges();
|
|
28983
28958
|
}
|
|
@@ -29036,7 +29011,7 @@ class AbstractUserEventService extends BaseGraphqlService {
|
|
|
29036
29011
|
if (!userEvents.length)
|
|
29037
29012
|
return;
|
|
29038
29013
|
// set read date
|
|
29039
|
-
userEvents.forEach(userEvent => userEvent.readDate = moment
|
|
29014
|
+
userEvents.forEach(userEvent => userEvent.readDate = moment());
|
|
29040
29015
|
// split local/remote entities
|
|
29041
29016
|
const localEntities = userEvents.filter(EntityUtils.isLocal);
|
|
29042
29017
|
const remoteEntities = userEvents.filter(EntityUtils.isRemote);
|
|
@@ -30891,13 +30866,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
30891
30866
|
args: [{ selector: 'app-latlong-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Lat/Long field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!-- Empty value -->\n <form *ngIf=\"form|formGetGroup:'empty' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Empty, with defaults</h4></ion-text></ion-col></ion-row>\n\n <ion-row >\n\n <!-- DD Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD, defaultSign '-'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Latitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button matSuffix mat-icon-button (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n defaultSign=\"-\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMM Default sign -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM, defaultSign '+'\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Latitude\">\n\n <mat-icon matPrefix >room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n defaultSign=\"+\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n </ion-grid>\n </form>\n\n <form *ngIf=\"form|formGetGroup:'enable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <!-- With value -->\n <ion-row><ion-col><ion-text><h4>With value</h4></ion-text></ion-col></ion-row>\n\n <ion-row>\n\n <!-- DD -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DD\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DD\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DD\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMM\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n\n <!-- DDMMSS -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Format DDMMSS\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Latitude\">\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMMSS\"\n placeholder=\"Longitude\">\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <!-- Disable -->\n <form *ngIf=\"form|formGetGroup:'disable' as formGroup\" [formGroup]=\"formGroup\">\n <ion-grid>\n <ion-row><ion-col><ion-text><h4>Disabled control</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>{{stringify(formGroup.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field formControlName=\"latitude\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\">\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n <ion-col>\n <mat-latlong-field formControlName=\"longitude\"\n type=\"longitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Longitude\">\n <mat-icon matPrefix>room</mat-icon>\n <button type=\"button\" mat-icon-button matSuffix\n (click)=\"geoPosition($event)\">\n <mat-icon>gps_fixed</mat-icon>\n </button>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly (control is enable)\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <mat-latlong-field #readonlyField [formControl]=\"form|formGetControl: 'enable.latitude'\"\n type=\"latitude\"\n latLongPattern=\"DDMM\"\n placeholder=\"Latitude\"\n [readonly]=\"true\">\n <mat-icon matPrefix>room</mat-icon>\n <mat-icon matSuffix>gps_fixed</mat-icon>\n </mat-latlong-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n </form>\n\n</ion-content>\n" }]
|
|
30892
30867
|
}], ctorParameters: function () { return [{ type: i1$2.UntypedFormBuilder }]; } });
|
|
30893
30868
|
|
|
30894
|
-
const moment$3 = momentImported;
|
|
30895
30869
|
class SwipeTestPage {
|
|
30896
30870
|
constructor(formBuilder, dateFormatPipe) {
|
|
30897
30871
|
this.formBuilder = formBuilder;
|
|
30898
30872
|
this.dateFormatPipe = dateFormatPipe;
|
|
30899
30873
|
this.$dates = new BehaviorSubject(undefined);
|
|
30900
|
-
this._today = moment
|
|
30874
|
+
this._today = moment().startOf('day');
|
|
30901
30875
|
this.form = formBuilder.group({
|
|
30902
30876
|
empty: [null, Validators.required],
|
|
30903
30877
|
date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
|
|
@@ -30910,7 +30884,7 @@ class SwipeTestPage {
|
|
|
30910
30884
|
ngOnInit() {
|
|
30911
30885
|
const dates = [];
|
|
30912
30886
|
for (let d = 0; d < 7; d++) {
|
|
30913
|
-
dates[d] = moment
|
|
30887
|
+
dates[d] = moment(this._today).add(d - 3, 'day');
|
|
30914
30888
|
}
|
|
30915
30889
|
this.$dates.next(dates);
|
|
30916
30890
|
this.loadData();
|
|
@@ -30947,7 +30921,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
30947
30921
|
args: [{ selector: 'app-swipe-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Swipe test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <h1>Swipe page:</h1>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <ion-row>\n <!-- empty -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Empty\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"empty\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [equals]=\"compareDate()\"\n [tabindex]=\"1\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- date -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Date\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"date\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [equals]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"2\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <!-- disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled empty\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"disabledEmpty\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [equals]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"3\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n<!-- read-only-->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled with date\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-swipe-field formControlName=\"disabledDate\"\n placeholder=\"placeholder\"\n [items]=\"$dates\"\n [displayWith]=\"displayDate()\"\n [equals]=\"compareDate()\"\n [clearable]=\"true\"\n [tabindex]=\"4\"\n [debug]=\"true\"\n >\n </mat-swipe-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n" }]
|
|
30948
30922
|
}], ctorParameters: function () { return [{ type: i1$2.UntypedFormBuilder }, { type: DateFormatPipe }]; } });
|
|
30949
30923
|
|
|
30950
|
-
const moment$2 = momentImported;
|
|
30951
30924
|
class DateTimeTestPage {
|
|
30952
30925
|
constructor(platform, formBuilder, cd) {
|
|
30953
30926
|
this.platform = platform;
|
|
@@ -30981,7 +30954,7 @@ class DateTimeTestPage {
|
|
|
30981
30954
|
// Load the form with data
|
|
30982
30955
|
loadData() {
|
|
30983
30956
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30984
|
-
const now = moment
|
|
30957
|
+
const now = moment();
|
|
30985
30958
|
const data = {
|
|
30986
30959
|
empty: null,
|
|
30987
30960
|
emptyRequired: null,
|
|
@@ -31221,7 +31194,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
31221
31194
|
args: [{ selector: 'app-numpad-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Numeric pad test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n\n <h1>Numpad test page:</h1>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <ion-grid>\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Decimal field, readonly\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"text\" formControlName=\"empty\" placeholder=\"Empty decimal field\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadDecimal\"\n readonly>\n <mat-numpad [decimal]=\"true\" #numpadDecimal></mat-numpad>\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- filled -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Integer field\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"number\" formControlName=\"integer\" placeholder=\"Filled integer field\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadInteger\">\n <mat-numpad #numpadInteger [decimal]=\"false\"></mat-numpad>\n\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- append to input -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Attach to input, readonly\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"text\" formControlName=\"integer\" placeholder=\"A number\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadAppendToInput\"\n readonly>\n <mat-numpad #numpadAppendToInput [appendToInput]=\"true\"></mat-numpad>\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!-- disable -->\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-form-field >\n <input matInput type=\"number\" formControlName=\"disable\" placeholder=\"Disabled field\"\n autocomplete=\"off\"\n [matNumpad]=\"numpadDisabled\">\n <mat-numpad #numpadDisabled></mat-numpad>\n </mat-form-field>\n\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n <!-- Other field (for comparision) -->\n <ion-row><ion-col><ion-text><h4>Other field type (for style comparision)</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Mat date time\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-date-time-field formControlName=\"datetime\" placeholder=\"Date/Time field (desktop)\">\n </mat-date-time-field>\n\n <mat-date-time-field formControlName=\"datetime\"\n placeholder=\"Date/Time field (mobile)\"\n [mobile]=\"true\">\n </mat-date-time-field>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </form>\n\n</ion-content>\n" }]
|
|
31222
31195
|
}], ctorParameters: function () { return [{ type: i1$2.UntypedFormBuilder }]; } });
|
|
31223
31196
|
|
|
31224
|
-
const moment$1 = momentImported;
|
|
31225
31197
|
class DateTestPage {
|
|
31226
31198
|
constructor(formBuilder, cd) {
|
|
31227
31199
|
this.formBuilder = formBuilder;
|
|
@@ -31254,7 +31226,7 @@ class DateTestPage {
|
|
|
31254
31226
|
// Load the form with data
|
|
31255
31227
|
loadData() {
|
|
31256
31228
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31257
|
-
const now = moment
|
|
31229
|
+
const now = moment();
|
|
31258
31230
|
const nowAtMahe = now.clone().tz(this.timezone).startOf('day');
|
|
31259
31231
|
const data = {
|
|
31260
31232
|
empty: null,
|
|
@@ -31384,7 +31356,7 @@ class ObservableTestPage {
|
|
|
31384
31356
|
this._stopSubject.next();
|
|
31385
31357
|
}
|
|
31386
31358
|
log(message, ...args) {
|
|
31387
|
-
let fullMessage = `${toDateISOString(moment
|
|
31359
|
+
let fullMessage = `${toDateISOString(moment())} - ${message}`;
|
|
31388
31360
|
if (args === null || args === void 0 ? void 0 : args.length) {
|
|
31389
31361
|
fullMessage += ' - <small>' + args.map(JSON.stringify).join(', ') + '</small>';
|
|
31390
31362
|
}
|
|
@@ -32819,7 +32791,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
32819
32791
|
}] }];
|
|
32820
32792
|
} });
|
|
32821
32793
|
|
|
32822
|
-
const moment = momentImported;
|
|
32823
32794
|
class UserEventTestingPage {
|
|
32824
32795
|
constructor(userEventService, router, alertController, translateService) {
|
|
32825
32796
|
this.userEventService = userEventService;
|
|
@@ -33161,5 +33132,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
|
|
|
33161
33132
|
* Generated bundle index. Do not edit.
|
|
33162
33133
|
*/
|
|
33163
33134
|
|
|
33164
|
-
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_STORAGE, APP_TESTING_PAGES, APP_USER_EVENT_SERVICE, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, AdminUsersModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppImageGalleryComponent, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppRegisterModule, AppTabEditor, AppTabEditorOptions, AppTable, AppTableUtils, AppUpdateOfflineModeCard, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayJoinPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AudioTestingModule, AudioTestingPage, AuthForm, AuthGuardService, AuthModal, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, BadgeDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTestPage, DateTimeTestPage, DateUtils, DebugComponent, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, Fragments, GalleryTestPage, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, IMAGE_DEFAULTS, ImageAttachment, ImageAttachmentFilter, ImageAttachmentService, ImageGalleryModule, ImageGalleryTestingModule, ImageModule, ImageService, ImagesUtils, InMemoryEntitiesService, InstallUpgradeCardModule, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, Job, JobModule, JobProgression, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatAutocompleteFieldUtils, MatBooleanField, MatChipsField, MatColorPipe, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuOptions, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, NumpadTestPage, ObservableTestPage, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertiesFormTestPage, PropertiesFormTestingModule, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, RegisterForm, RegisterModal, ResizableComponent, ResizableDirective, ResizableModule, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SelectPeerModule, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedBadgeModule, SharedDebugModule, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedToolbarModule, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, StartableService, StatusById, StatusIds, StatusList, StorageDrivers, StorageService, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, ToastTestingModule, ToastTestingPage, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEventModule, UserEventNotificationIcon, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UsersPage, ZERO_PLACEHOLDER_CHAR, accountToString, adaptValueToControl, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isCapacitor, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moment
|
|
33135
|
+
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_JOB_PROGRESSION_SERVICE, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_MENU_OPTIONS, APP_STORAGE, APP_TESTING_PAGES, APP_USER_EVENT_SERVICE, AboutModal, AbstractUserEventService, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, AdminUsersModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppEntityEditorModal, AppEntityEditorModalOptions, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppIconComponent, AppIconModule, AppImageGalleryComponent, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppRegisterModule, AppTabEditor, AppTabEditorOptions, AppTable, AppTableUtils, AppUpdateOfflineModeCard, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayJoinPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AudioTestingModule, AudioTestingPage, AuthForm, AuthGuardService, AuthModal, AutoTitleDirective, AutocompleteTestPage, AutofocusDirective, BadgeDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, CsvUtils, DATE_ISO_PATTERN, DATE_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_MENU_SHOW_WHEN, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTestPage, DateTimeTestPage, DateUtils, DebugComponent, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ED25519_SEED_LENGTH, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, FormGetValuePipe, Fragments, GalleryTestPage, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, IMAGE_DEFAULTS, ImageAttachment, ImageAttachmentFilter, ImageAttachmentService, ImageGalleryModule, ImageGalleryTestingModule, ImageModule, ImageService, ImagesUtils, InMemoryEntitiesService, InstallUpgradeCardModule, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, Job, JobModule, JobProgression, JobProgressionIcon, JobProgressionList, JobProgressionService, JobProgressionTestService, JobProgressionTestingPage, JobTestingModule, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MOMENT_NO_TIME_PROPERTY, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatAutocompleteFieldUtils, MatBooleanField, MatChipsField, MatColorPipe, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuOptions, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageModule, MessageService, MessageTypeList, MessageTypes, MimeTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, NumpadTestPage, ObservableTestPage, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertiesFormTestPage, PropertiesFormTestingModule, PropertyFormatPipe, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, RegisterForm, RegisterModal, ResizableComponent, ResizableDirective, ResizableModule, SCRYPT_PARAMS, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SOCIAL_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SelectPeerModule, ServerErrorCodes, SettingsPage, SharedAsyncValidators, SharedBadgeModule, SharedDebugModule, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedToolbarModule, SharedValidators, SocialErrorCodes, SocialModule, SocialModuleOptionsToken, SocialTestingModule, Software, StartableService, StatusById, StatusIds, StatusList, StorageDrivers, StorageService, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, ToastTestingModule, ToastTestingPage, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UriUtils, UserEventModule, UserEventNotificationIcon, UserEventTestService, UserEventTestingModule, UserEventTestingPage, UserSettings, UsersPage, ZERO_PLACEHOLDER_CHAR, accountToString, adaptValueToControl, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, escapeRegExp, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isCapacitor, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moment, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, patchValueInArray, propertiesPathComparator, propertyComparator, propertyPathComparator, pushValueInArray, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, tz, uncapitalizeFirstLetter, updateValueAndValidity, uuidv4, waitFor, waitForFalse, waitForTrue, waitIdle, waitWhilePending };
|
|
33165
33136
|
//# sourceMappingURL=sumaris-net.ngx-components.mjs.map
|