@sumaris-net/ngx-components 18.26.15 → 18.27.0
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/doc/changelog.md +4 -1
- package/esm2022/src/app/core/about/about.modal.mjs +16 -3
- package/esm2022/src/app/core/services/config/core.config.mjs +6 -1
- package/esm2022/src/app/shared/markdown/markdown.component.mjs +3 -3
- package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +2 -2
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +25 -14
- package/esm2022/src/environments/environment.class.mjs +2 -1
- package/esm2022/src/environments/environment.mjs +2 -1
- package/fesm2022/sumaris-net.ngx-components.mjs +47 -18
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +19 -2
- package/src/app/core/about/about.modal.d.ts +2 -0
- package/src/app/core/services/config/core.config.d.ts +1 -0
- package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +5 -1
- package/src/assets/i18n/en-US.json +2 -1
- package/src/assets/i18n/en.json +2 -1
- package/src/assets/i18n/fr.json +2 -1
- package/src/assets/manifest.json +1 -1
- package/src/environments/environment.class.d.ts +1 -0
|
@@ -15,7 +15,7 @@ export class MarkdownTestPage {
|
|
|
15
15
|
debug;
|
|
16
16
|
// URL from a starting markdown
|
|
17
17
|
//protected markdownUrl = 'http://localhost:3000/user-manual/index.md';
|
|
18
|
-
markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/projects/pifil/man/
|
|
18
|
+
markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/projects/pifil/man/manuel_utilisateur-pifil.md';
|
|
19
19
|
//protected markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/README.md';
|
|
20
20
|
//protected markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/model/index.md';
|
|
21
21
|
//protected markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/model/administration/index.md';
|
|
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
52
52
|
type: Inject,
|
|
53
53
|
args: [ENVIRONMENT]
|
|
54
54
|
}] }] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hcmtkb3duL3Rlc3RpbmcvbWFya2Rvd24udGVzdC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hcmtkb3duL3Rlc3RpbmcvbWFya2Rvd24udGVzdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7QUFPdEYsTUFBTSxPQUFPLGdCQUFnQjtJQWNqQjtJQUNBO0lBQ3VCO0lBZnZCLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLEtBQUssQ0FBVTtJQUV6QiwrQkFBK0I7SUFDL0IsdUVBQXVFO0lBQzdELFdBQVcsR0FBRyxzSEFBc0gsQ0FBQztJQUMvSSw0R0FBNEc7SUFDNUcsaUhBQWlIO0lBQ2pILGdJQUFnSTtJQUNoSSx1SkFBdUo7SUFDdkosd0hBQXdIO0lBRXhILFlBQ1UsU0FBMEIsRUFDMUIsRUFBcUIsRUFDRSxXQUF3QjtRQUYvQyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXZELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBWSxFQUFFLE1BQXVCO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBVztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBWTtRQUN4QixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzlCLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUNyQixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBckNVLGdCQUFnQixrRkFnQmpCLFdBQVc7NEZBaEJWLGdCQUFnQix5RENWN0IsdzdDQWtEQTs7NEZEeENhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxtQkFBbUIsbUJBRVosdUJBQXVCLENBQUMsTUFBTTs7MEJBa0I1QyxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBNYXJrZG93bk1vZGFsIH0gZnJvbSAnLi4vbWFya2Rvd24ubW9kYWwnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1hcmtkb3duLXRlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24udGVzdC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hcmtkb3duVGVzdFBhZ2Uge1xuICBwcm90ZWN0ZWQgbWFya2Rvd25Nb2RhbFRpdGxlID0gJ01hcmtkb3duIG1vZGFsJztcbiAgcHJvdGVjdGVkIGRlYnVnOiBib29sZWFuO1xuXG4gIC8vIFVSTCBmcm9tIGEgc3RhcnRpbmcgbWFya2Rvd25cbiAgLy9wcm90ZWN0ZWQgbWFya2Rvd25VcmwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAwL3VzZXItbWFudWFsL2luZGV4Lm1kJztcbiAgcHJvdGVjdGVkIG1hcmtkb3duVXJsID0gJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtZG9jLy0vcmF3L21hc3Rlci9wcm9qZWN0cy9waWZpbC9tYW4vbWFudWVsX3V0aWxpc2F0ZXVyLXBpZmlsLm1kJztcbiAgLy9wcm90ZWN0ZWQgbWFya2Rvd25VcmwgPSAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1kb2MvLS9yYXcvbWFzdGVyL1JFQURNRS5tZCc7XG4gIC8vcHJvdGVjdGVkIG1hcmtkb3duVXJsID0gJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtZG9jLy0vcmF3L21hc3Rlci9tb2RlbC9pbmRleC5tZCc7XG4gIC8vcHJvdGVjdGVkIG1hcmtkb3duVXJsID0gJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtZG9jLy0vcmF3L21hc3Rlci9tb2RlbC9hZG1pbmlzdHJhdGlvbi9pbmRleC5tZCc7XG4gIC8vcHJvdGVjdGVkIG1hcmtkb3duVXJsID0naHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1kb2MvLS9yYXcvbWFzdGVyL3Byb2plY3RzL2FjdGl2aXR5LWNhbGVuZGFyL3NwZS9jb2xsZWN0ZV9kZV9kb25uZWVzLm1kJztcbiAgLy9wcm90ZWN0ZWQgbWFya2Rvd25VcmwgPSdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9zdW1hcmlzLWFwcC8tL3Jhdy9kZXZlbG9wL2RvYy9wcml2YWN5X3BvbGljeS5tZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG4gICkge1xuICAgIHRoaXMuZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIG9uU3VibWl0KGV2ZW50OiBFdmVudCwgbmV3VXJsOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLm1hcmtkb3duVXJsID0gJycgKyBuZXdVcmw7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHVwZGF0ZUlucHV0VXJsKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXJrZG93blVybCA9IHVybDtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb3BlbkhlbHBNb2RhbChldmVudDogRXZlbnQpIHtcbiAgICByZXR1cm4gQXBwTWFya2Rvd25Nb2RhbC5zaG93KHRoaXMubW9kYWxDdHJsLCB7XG4gICAgICB0aXRsZTogdGhpcy5tYXJrZG93bk1vZGFsVGl0bGUsXG4gICAgICBzcmM6IHRoaXMubWFya2Rvd25VcmwsXG4gICAgICBjYW5QcmludDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICBAaWYgKGNvbnRlbnQuY2FuR29CYWNrKSB7XG4gICAgICAgIDxpb24tYnV0dG9uIGNsYXNzPVwiYmFjay1idXR0b25cIiAoY2xpY2spPVwiY29udGVudC5nb0JhY2soJGV2ZW50KVwiIHJvdXRlckRpcmVjdGlvbj1cImJhY2tcIj5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhcnJvdy1iYWNrXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxpb24tYmFjay1idXR0b24+PC9pb24tYmFjay1idXR0b24+XG4gICAgICB9XG4gICAgPC9pb24tYnV0dG9ucz5cblxuICAgIDxpb24tdGl0bGU+TWFya2Rvd24gdGVzdCBwYWdlPC9pb24tdGl0bGU+XG5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIChjbGljayk9XCJjb250ZW50LnByaW50KClcIj5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwicHJpbnRcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib3BlbkhlbHBNb2RhbCgkZXZlbnQpXCI+T3BlbiBpbiBtb2RhbDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICA8aW9uLWlucHV0XG4gICAgI2lucHV0XG4gICAgZmlsbD1cIm91dGxpbmVcIlxuICAgIFtuZ01vZGVsXT1cIm1hcmtkb3duVXJsXCJcbiAgICBwbGFjZWhvbGRlcj1cIk1hcmtkb3duIFVSTFwiXG4gICAgbGFiZWw9XCJVUkw6IFwiXG4gICAgKGtleXVwLmVudGVyKT1cIm9uU3VibWl0KCRldmVudCwgaW5wdXQudmFsdWUpXCJcbiAgPlxuICAgIDxpb24tYnV0dG9uXG4gICAgICBzbG90PVwiZW5kXCJcbiAgICAgIFtmaWxsXT1cIm1hcmtkb3duVXJsICE9PSBpbnB1dC52YWx1ZSA/ICdzb2xpZCcgOiAnY2xlYXInXCJcbiAgICAgIChjbGljayk9XCJvblN1Ym1pdCgkZXZlbnQsIGlucHV0LnZhbHVlKVwiXG4gICAgPlxuICAgICAge3sgJ0NPTU1PTi5CVE5fT0snIHwgdHJhbnNsYXRlIH19XG4gICAgPC9pb24tYnV0dG9uPlxuICA8L2lvbi1pbnB1dD5cblxuICA8YXBwLW1hcmtkb3duLWNvbnRlbnRcbiAgICAjY29udGVudFxuICAgIFtzcmNdPVwibWFya2Rvd25VcmxcIlxuICAgIGVuYWJsZU5hdmlnYXRpb25IaXN0b3J5PVwidHJ1ZVwiXG4gICAgW2RlYnVnXT1cImRlYnVnXCJcbiAgICAobWFya2Rvd25VcmxDaGFuZ2UpPVwidXBkYXRlSW5wdXRVcmwoJGV2ZW50KVwiXG4gID48L2FwcC1tYXJrZG93bi1jb250ZW50PlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { MatPaginatorIntl } from '@angular/material/paginator';
|
|
3
|
+
import { Subscription } from 'rxjs';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@ngx-translate/core";
|
|
5
6
|
export class MatPaginatorI18n extends MatPaginatorIntl {
|
|
6
7
|
translate;
|
|
7
8
|
ofLabel;
|
|
9
|
+
_subscription = new Subscription();
|
|
8
10
|
constructor(translate) {
|
|
9
11
|
super();
|
|
10
12
|
this.translate = translate;
|
|
13
|
+
// Initial load
|
|
14
|
+
this._updateTranslations();
|
|
15
|
+
// Re-translate on language change
|
|
16
|
+
this._subscription.add(this.translate.onLangChange.subscribe(() => this._updateTranslations()));
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
this._subscription.unsubscribe();
|
|
20
|
+
}
|
|
21
|
+
getRangeLabel = (page, pageSize, length) => {
|
|
22
|
+
if (length === 0 || pageSize === 0) {
|
|
23
|
+
return '0 ' + this.ofLabel + ' ' + length;
|
|
24
|
+
}
|
|
25
|
+
length = Math.max(length, 0);
|
|
26
|
+
const startIndex = page * pageSize;
|
|
27
|
+
// If the start index exceeds the list length, do not try and fix the end index to the end.
|
|
28
|
+
const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;
|
|
29
|
+
return startIndex + 1 + ' - ' + endIndex + ' ' + this.ofLabel + ' ' + length;
|
|
30
|
+
};
|
|
31
|
+
_getTranslationValue(translations, key, defaultValue) {
|
|
32
|
+
return translations[key] !== key ? translations[key] : defaultValue;
|
|
33
|
+
}
|
|
34
|
+
_updateTranslations() {
|
|
11
35
|
this.translate
|
|
12
36
|
.get([
|
|
13
37
|
'COMMON.PAGINATOR.ITEMS_PER_PAGE',
|
|
@@ -28,19 +52,6 @@ export class MatPaginatorI18n extends MatPaginatorIntl {
|
|
|
28
52
|
this.changes.next();
|
|
29
53
|
});
|
|
30
54
|
}
|
|
31
|
-
getRangeLabel = (page, pageSize, length) => {
|
|
32
|
-
if (length === 0 || pageSize === 0) {
|
|
33
|
-
return '0 ' + this.ofLabel + ' ' + length;
|
|
34
|
-
}
|
|
35
|
-
length = Math.max(length, 0);
|
|
36
|
-
const startIndex = page * pageSize;
|
|
37
|
-
// If the start index exceeds the list length, do not try and fix the end index to the end.
|
|
38
|
-
const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;
|
|
39
|
-
return startIndex + 1 + ' - ' + endIndex + ' ' + this.ofLabel + ' ' + length;
|
|
40
|
-
};
|
|
41
|
-
_getTranslationValue(translations, key, defaultValue) {
|
|
42
|
-
return translations[key] !== key ? translations[key] : defaultValue;
|
|
43
|
-
}
|
|
44
55
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MatPaginatorI18n, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
56
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MatPaginatorI18n, providedIn: 'root' });
|
|
46
57
|
}
|
|
@@ -48,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
48
59
|
type: Injectable,
|
|
49
60
|
args: [{ providedIn: 'root' }]
|
|
50
61
|
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwucGFnaW5hdG9yLWkxOG4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9wYWdpbmF0b3IvbWF0ZXJpYWwucGFnaW5hdG9yLWkxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHcEMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUs5QjtJQUp0QixPQUFPLENBQVM7SUFFUixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUzQyxZQUFzQixTQUEyQjtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQURZLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBRy9DLGVBQWU7UUFDZixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsRUFBRTtRQUNqRSxJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUM1QyxDQUFDO1FBQ0QsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxRQUFRLENBQUM7UUFDbkMsMkZBQTJGO1FBQzNGLE1BQU0sUUFBUSxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUN2RyxPQUFPLFVBQVUsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQy9FLENBQUMsQ0FBQztJQUVRLG9CQUFvQixDQUFDLFlBQWlCLEVBQUUsR0FBVyxFQUFFLFlBQW9CO1FBQ2pGLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDdEUsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsU0FBUzthQUNYLEdBQUcsQ0FBQztZQUNILGlDQUFpQztZQUNqQyw0QkFBNEI7WUFDNUIsZ0NBQWdDO1lBQ2hDLHFCQUFxQjtZQUNyQiw2QkFBNkI7WUFDN0IsNEJBQTRCO1NBQzdCLENBQUM7YUFDRCxTQUFTLENBQUMsQ0FBQyxZQUF1QyxFQUFFLEVBQUU7WUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLGlDQUFpQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSw0QkFBNEIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxnQ0FBZ0MsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLDZCQUE2QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0F4RFUsZ0JBQWdCOzRHQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9ySW50bCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNYXRQYWdpbmF0b3JJMThuIGV4dGVuZHMgTWF0UGFnaW5hdG9ySW50bCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIG9mTGFiZWw6IHN0cmluZztcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBJbml0aWFsIGxvYWRcbiAgICB0aGlzLl91cGRhdGVUcmFuc2xhdGlvbnMoKTtcblxuICAgIC8vIFJlLXRyYW5zbGF0ZSBvbiBsYW5ndWFnZSBjaGFuZ2VcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91cGRhdGVUcmFuc2xhdGlvbnMoKSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRSYW5nZUxhYmVsID0gKHBhZ2U6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpID0+IHtcbiAgICBpZiAobGVuZ3RoID09PSAwIHx8IHBhZ2VTaXplID09PSAwKSB7XG4gICAgICByZXR1cm4gJzAgJyArIHRoaXMub2ZMYWJlbCArICcgJyArIGxlbmd0aDtcbiAgICB9XG4gICAgbGVuZ3RoID0gTWF0aC5tYXgobGVuZ3RoLCAwKTtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gcGFnZSAqIHBhZ2VTaXplO1xuICAgIC8vIElmIHRoZSBzdGFydCBpbmRleCBleGNlZWRzIHRoZSBsaXN0IGxlbmd0aCwgZG8gbm90IHRyeSBhbmQgZml4IHRoZSBlbmQgaW5kZXggdG8gdGhlIGVuZC5cbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggPCBsZW5ndGggPyBNYXRoLm1pbihzdGFydEluZGV4ICsgcGFnZVNpemUsIGxlbmd0aCkgOiBzdGFydEluZGV4ICsgcGFnZVNpemU7XG4gICAgcmV0dXJuIHN0YXJ0SW5kZXggKyAxICsgJyAtICcgKyBlbmRJbmRleCArICcgJyArIHRoaXMub2ZMYWJlbCArICcgJyArIGxlbmd0aDtcbiAgfTtcblxuICBwcm90ZWN0ZWQgX2dldFRyYW5zbGF0aW9uVmFsdWUodHJhbnNsYXRpb25zOiBhbnksIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uc1trZXldICE9PSBrZXkgPyB0cmFuc2xhdGlvbnNba2V5XSA6IGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVRyYW5zbGF0aW9ucygpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVxuICAgICAgLmdldChbXG4gICAgICAgICdDT01NT04uUEFHSU5BVE9SLklURU1TX1BFUl9QQUdFJyxcbiAgICAgICAgJ0NPTU1PTi5QQUdJTkFUT1IuTkVYVF9QQUdFJyxcbiAgICAgICAgJ0NPTU1PTi5QQUdJTkFUT1IuUFJFVklPVVNfUEFHRScsXG4gICAgICAgICdDT01NT04uUEFHSU5BVE9SLk9GJyxcbiAgICAgICAgJ0NPTU1PTi5QQUdJTkFUT1IuRklSU1RfUEFHRScsXG4gICAgICAgICdDT01NT04uUEFHSU5BVE9SLkxBU1RfUEFHRScsXG4gICAgICBdKVxuICAgICAgLnN1YnNjcmliZSgodHJhbnNsYXRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnW01hdFBhZ2luYXRvckkxOG5dIFVwZGF0ZSBwYWdpbmF0aW9uIHRyYW5zbGF0aW9ucycpO1xuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZUxhYmVsID0gdGhpcy5fZ2V0VHJhbnNsYXRpb25WYWx1ZSh0cmFuc2xhdGlvbnMsICdDT01NT04uUEFHSU5BVE9SLklURU1TX1BFUl9QQUdFJywgJycpO1xuICAgICAgICB0aGlzLm5leHRQYWdlTGFiZWwgPSB0aGlzLl9nZXRUcmFuc2xhdGlvblZhbHVlKHRyYW5zbGF0aW9ucywgJ0NPTU1PTi5QQUdJTkFUT1IuTkVYVF9QQUdFJywgJz4nKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2VMYWJlbCA9IHRoaXMuX2dldFRyYW5zbGF0aW9uVmFsdWUodHJhbnNsYXRpb25zLCAnQ09NTU9OLlBBR0lOQVRPUi5QUkVWSU9VU19QQUdFJywgJzwnKTtcbiAgICAgICAgdGhpcy5vZkxhYmVsID0gdGhpcy5fZ2V0VHJhbnNsYXRpb25WYWx1ZSh0cmFuc2xhdGlvbnMsICdDT01NT04uUEFHSU5BVE9SLk9GJywgJy8nKTtcbiAgICAgICAgdGhpcy5maXJzdFBhZ2VMYWJlbCA9IHRoaXMuX2dldFRyYW5zbGF0aW9uVmFsdWUodHJhbnNsYXRpb25zLCAnQ09NTU9OLlBBR0lOQVRPUi5GSVJTVF9QQUdFJywgJ3w8Jyk7XG4gICAgICAgIHRoaXMubGFzdFBhZ2VMYWJlbCA9IHRoaXMuX2dldFRyYW5zbGF0aW9uVmFsdWUodHJhbnNsYXRpb25zLCAnQ09NTU9OLlBBR0lOQVRPUi5MQVNUX1BBR0UnLCAnPnwnKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VzLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -54,6 +54,7 @@ export class Environment {
|
|
|
54
54
|
// About
|
|
55
55
|
sourceUrl;
|
|
56
56
|
reportIssueUrl;
|
|
57
|
+
changelogUrl;
|
|
57
58
|
forumUrl; // TODO allow a map by locale ? ex: { [lang: string]: string };
|
|
58
59
|
helpUrl; // TODO allow a map by locale ?
|
|
59
60
|
privacyPolicyUrl; // TODO allow a map by locale ?
|
|
@@ -69,4 +70,4 @@ export class Environment {
|
|
|
69
70
|
entityEditor;
|
|
70
71
|
feed;
|
|
71
72
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFjLEtBQUssQ0FBQyxDQUFDO0FBRWxFLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLElBQUksQ0FBUztJQUNiLE9BQU8sQ0FBUztJQUNoQixTQUFTLENBQVU7SUFDbkIsVUFBVSxDQUFVO0lBRXBCLHdGQUF3RjtJQUN4RixzQkFBc0IsQ0FBVTtJQUNoQyxPQUFPLENBQVM7SUFDaEIsaUJBQWlCLENBQVU7SUFFM0IsV0FBVyxDQUFXO0lBRXRCLCtCQUErQjtJQUMvQixJQUFJLENBQXNGO0lBRTFGLDZEQUE2RDtJQUM3RCxXQUFXLENBQXNGO0lBRWpHLGtEQUFrRDtJQUNsRCxZQUFZLENBQXFFO0lBRWpGLHNDQUFzQztJQUN0QyxjQUFjLENBQVU7SUFFeEIsd0VBQXdFO0lBQ3hFLGlCQUFpQixDQUFVO0lBRTNCLG9DQUFvQztJQUNwQyx5QkFBeUIsQ0FBVztJQUVwQyx3RUFBd0U7SUFDeEUscUJBQXFCLENBQVc7SUFFaEMsMERBQTBEO0lBQzFELGdDQUFnQyxDQUFVO0lBRTFDLDZCQUE2QjtJQUM3QixZQUFZLENBQVc7SUFFdkIsd0NBQXdDO0lBQ3hDLE9BQU8sQ0FBVztJQUVsQiwwQkFBMEI7SUFDMUIsaUJBQWlCLENBQWU7SUFFaEMsaUJBQWlCO0lBQ2pCLGFBQWEsQ0FBUztJQUN0QixvQkFBb0IsQ0FBNEI7SUFDaEQsbUJBQW1CLENBQVU7SUFDN0IsY0FBYyxDQUFVO0lBQ3hCLHdCQUF3QixDQUFVO0lBQ2xDLG9CQUFvQixDQUFVO0lBQzlCLHdCQUF3QixDQUFVO0lBRWxDLGtCQUFrQjtJQUNsQixPQUFPLENBQVcsQ0FBQyx3RUFBd0U7SUFDM0YsYUFBYSxDQUFXO0lBQ3hCLFlBQVksQ0FBVSxDQUFDLCtDQUErQztJQUN0RSxVQUFVLENBQVcsQ0FBQyxvQkFBb0I7SUFFMUMsVUFBVTtJQUNWLE9BQU8sQ0FBaUM7SUFFeEMsVUFBVTtJQUNWLEtBQUssQ0FBd0I7SUFDN0IsT0FBTyxDQUEwQjtJQUNqQyxtQkFBbUIsQ0FBVTtJQUU3QixRQUFRO0lBQ1IsU0FBUyxDQUFVO0lBQ25CLGNBQWMsQ0FBVTtJQUN4QixZQUFZLENBQVU7SUFFdEIsUUFBUSxDQUFVLENBQUMsK0RBQStEO0lBQ2xGLE9BQU8sQ0FBVSxDQUFDLCtCQUErQjtJQUNqRCxnQkFBZ0IsQ0FBVSxDQUFDLCtCQUErQjtJQUMxRCxhQUFhLENBQVUsQ0FBQywrQkFBK0I7SUFFdkQsMENBQTBDO0lBQzFDLGdFQUFnRTtJQUNoRSxpQkFBaUIsQ0FJZjtJQUVGLDhCQUE4QjtJQUM5Qiw0Q0FBNEM7SUFDNUMsWUFBWSxDQUFtQjtJQUUvQixVQUFVO0lBQ1YsT0FBTyxDQVFMO0lBRUYsWUFBWSxDQUtWO0lBRUYsSUFBSSxDQUtGO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZXRjaFBvbGljeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgU3RvcmFnZUNvbmZpZyB9IGZyb20gJ0Bpb25pYy9zdG9yYWdlJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWNoZUNvbmZpZyB9IGZyb20gJ2lvbmljLWNhY2hlL2xpYi9pbnRlcmZhY2VzL2NhY2hlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTG9nZ2luZ1NlcnZpY2VDb25maWcgfSBmcm9tICcuLi9hcHAvc2hhcmVkL2xvZ2dpbmcvbG9nZ2luZy1zZXJ2aWNlLmNvbmZpZyc7XG5pbXBvcnQgeyBTdGFydHVwTWV0aG9kIH0gZnJvbSAnLi4vYXBwL2NvcmUvc2VydmljZXMvc3RhcnR1cC5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBFTlZJUk9OTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnZpcm9ubWVudD4oJ0VOVicpO1xuXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgYnVpbGREYXRlPzogc3RyaW5nO1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuXG4gIC8vIEFuIFVSTCB0byBsb2FkIGV4dGVybmFsIGVudmlyb25tZW50IGZpbGUgKGUuZy4gJ2Fzc2V0cy9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuanNvbidcbiAgZXh0ZXJuYWxFbnZpcm9ubWVudFVybD86IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xuICBjb25uZWN0aW9uVGltZW91dD86IG51bWJlcjtcblxuICBzYW1lVXJsUGVlcj86IGJvb2xlYW47XG5cbiAgLy8gVGhlIHBlZXIgdG8gdXNlIChpZiBkZWZpbmVkKVxuICBwZWVyPzogeyBob3N0OiBzdHJpbmc7IHBvcnQ6IG51bWJlcjsgdXNlU3NsPzogYm9vbGVhbjsgcGF0aD86IHN0cmluZyB9IHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAvLyBBIHBlZXIgdG8gdXNlIGF0IHN0YXJ0dXAgKHVzZWZ1bCBvbiBhIHdlYiBzaXRlIGRlcGxveW1lbnQpXG4gIGRlZmF1bHRQZWVyPzogeyBob3N0OiBzdHJpbmc7IHBvcnQ6IG51bWJlcjsgdXNlU3NsPzogYm9vbGVhbjsgcGF0aD86IHN0cmluZyB9IHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAvLyBBIGxpc3Qgb2YgcGVlcnMsIHRvIHNlbGVjdCBhcyBwZWVyLCBpbiBzZXR0aW5nc1xuICBkZWZhdWx0UGVlcnM/OiB7IGhvc3Q6IHN0cmluZzsgcG9ydDogbnVtYmVyOyB1c2VTc2w/OiBib29sZWFuOyBwYXRoPzogc3RyaW5nIH1bXTtcblxuICAvLyBNaW4gY29tcGF0aWJsZSB2ZXJzaW9uIGZvciB0aGUgcGVlclxuICBwZWVyTWluVmVyc2lvbj86IHN0cmluZztcblxuICAvLyBEZWZhdWx0IHBlZXIgcHJlZml4LCB3aGVuIGZpeCBwZWVyIHVybCBtYW51YWxseSAoZGVmYXVsdDogJ2h0dHBzOi8vJylcbiAgcGVlckRlZmF1bHRQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLy8gQWxsb3cgdG8gc2VsZWN0IGEgcGVlciBieSBmZWF0dXJlXG4gIGVuYWJsZVNlbGVjdFBlZXJCeUZlYXR1cmU/OiBib29sZWFuO1xuXG4gIC8vIFNlbmQgYXBwIHZlcnNpb24gaGVhZGVycyAoWC1BcHAtVmVyc2lvbiwgWC1BcHAtTmFtZSkgaW4gSFRUUCByZXF1ZXN0c1xuICBzZW5kQXBwVmVyc2lvbkhlYWRlcnM/OiBib29sZWFuO1xuXG4gIC8vIEludGVydmFsIHRvIGNoZWNrIGlmIHdlYiBwYWdlIG11c3QgYmUgcmVsb2FkLCBpbiBtaWxsaXNcbiAgY2hlY2tBcHBWZXJzaW9uSW50ZXJ2YWxJblNlY29uZHM/OiBudW1iZXI7XG5cbiAgLy8gRW5hYmxlIGNhY2hlIHBlcnNpc3RlbmNlID9cbiAgcGVyc2lzdENhY2hlPzogYm9vbGVhbjtcblxuICAvLyBGb3JjZSBvZmZsaW5lIG1vZGUgPyAvIVxcIEZvciBERVYgb25seVxuICBvZmZsaW5lPzogYm9vbGVhbjtcblxuICAvLyBBcG9sbG8gKGdyYXBoUUwpIGNvbmZpZ1xuICBhcG9sbG9GZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuXG4gIC8vIERlZmF1bHQgdmFsdWVzXG4gIGRlZmF1bHRMb2NhbGU6IHN0cmluZztcbiAgZGVmYXVsdExhdExvbmdGb3JtYXQ/OiAnREQnIHwgJ0RETU0nIHwgJ0RETU1TUyc7XG4gIGRlZmF1bHREZXBhcnRtZW50SWQ/OiBudW1iZXI7XG4gIGRlZmF1bHRBcHBOYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw/OiBzdHJpbmc7XG4gIGRlZmF1bHRJT1NJbnN0YWxsVXJsPzogc3RyaW5nO1xuICBkZWZhdWx0RGVza3RvcEluc3RhbGxVcmw/OiBzdHJpbmc7XG5cbiAgLy8gUm91dGUgYW5kIHN0eWxlXG4gIHVzZUhhc2g/OiBib29sZWFuOyAvLyBDb25maWd1cmUgQW5ndWxhciByb3V0ZXIgdG8gdXNlICcjJyBpbiBVUkwgKG5lZWQgYnkgd2ViLWV4dCBhcnRpZmFjdClcbiAgYWxsb3dEYXJrTW9kZT86IGJvb2xlYW47XG4gIGRlZmF1bHRSb3V0ZT86IHN0cmluZzsgLy8gQ29uZmlndXJlIHRoZSBkZWZhdWx0IHJvdXRlICgnLycgYnkgZGVmYXVsdClcbiAgZW5hYmxlTWVudT86IGJvb2xlYW47IC8vIEVuYWJsZSBieSBkZWZhdWx0XG5cbiAgLy8gTG9nZ2luZ1xuICBsb2dnaW5nPzogUGFydGlhbDxMb2dnaW5nU2VydmljZUNvbmZpZz47XG5cbiAgLy8gU3RvcmFnZVxuICBjYWNoZT86IFBhcnRpYWw8Q2FjaGVDb25maWc+O1xuICBzdG9yYWdlPzogUGFydGlhbDxTdG9yYWdlQ29uZmlnPjtcbiAgc3RvcmFnZVNhdmVQZXJpb2RNcz86IG51bWJlcjtcblxuICAvLyBBYm91dFxuICBzb3VyY2VVcmw/OiBzdHJpbmc7XG4gIHJlcG9ydElzc3VlVXJsPzogc3RyaW5nO1xuICBjaGFuZ2Vsb2dVcmw/OiBzdHJpbmc7XG5cbiAgZm9ydW1Vcmw/OiBzdHJpbmc7IC8vIFRPRE8gYWxsb3cgYSBtYXAgYnkgbG9jYWxlID8gZXg6IHsgW2xhbmc6IHN0cmluZ106IHN0cmluZyB9O1xuICBoZWxwVXJsPzogc3RyaW5nOyAvLyBUT0RPIGFsbG93IGEgbWFwIGJ5IGxvY2FsZSA/XG4gIHByaXZhY3lQb2xpY3lVcmw/OiBzdHJpbmc7IC8vIFRPRE8gYWxsb3cgYSBtYXAgYnkgbG9jYWxlID9cbiAgdGVybXNPZlVzZVVybD86IHN0cmluZzsgLy8gVE9ETyBhbGxvdyBhIG1hcCBieSBsb2NhbGUgP1xuXG4gIC8vIERlZmF1bHQgYXV0aGVudGljYXRpb24gLyFcXCBGb3IgREVWIG9ubHlcbiAgLy8gKHNlZSB2YWx1ZXMgaW4gdGhlIHRlc3QgZGF0YWJhc2UgLSBYTUwgZmlsZXMgaW4gUG9kJ3MgbW9kdWxlKVxuICBkZWZhdWx0QXV0aFZhbHVlcz86IHtcbiAgICB1c2VybmFtZT86IHN0cmluZztcbiAgICBwYXNzd29yZD86IHN0cmluZztcbiAgICB0b2tlbj86IHN0cmluZztcbiAgfTtcblxuICAvLyBBdXRvIGxvZ2luIC8hXFwgRm9yIERFViBvbmx5XG4gIC8vICh0aGUgb3JkZXIgZGVmaW5lcyB0aGUgbWV0aG9kIHByZWNlZGVuY2UpXG4gIHN0YXJ0dXBPcmRlcj86IFN0YXJ0dXBNZXRob2RbXTtcblxuICAvLyBBY2NvdW50XG4gIGFjY291bnQ/OiB7XG4gICAgc2hvd0FjY291bnRCdXR0b24/OiBib29sZWFuOyAvLyBTaG93IGFjY291bnQgYnV0dG9uIGluIGhvbWUgcGFnZSAoaWYgdW5kZWZpbmVkID0gdHJ1ZSlcbiAgICBlbmFibGVMaXN0ZW5DaGFuZ2VzPzogYm9vbGVhbjtcbiAgICAvLyBJZiB1bmRlZmluZWQgb3IgMCwgdGhlbiBsaXN0ZW4gb25seSBjaGFuZ2VzIG1hZGUgYnkgdGhlIHBvZFxuICAgIC8vIElmIGdyZWF0ZXIgdGhhbiAwIDogd2lsbCBjaGVjayBjb25jdXJyZW50IGNoYW5nZXMgaW4gdGhlIERCIChlLmcuIGNoYW5nZXMgbWRlIGJ5IGFub3RoZXIgc29mdHdhcmUpIEFORCBjaGFuZ2VzIG1hZGUgdGhlIHBvZFxuICAgIGxpc3RlbkludGVydmFsSW5TZWNvbmRzPzogbnVtYmVyO1xuICAgIC8vIEVuYWJsZSBhdmF0YXIgdmlldy9lZGl0IG9uIGFjY291bnQgcGFnZSAoZGlzYWJsZWQgYnkgZGVmYXVsdClcbiAgICBlbmFibGVBdmF0YXJFZGl0PzogYm9vbGVhbjtcbiAgfTtcblxuICBlbnRpdHlFZGl0b3I/OiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlcz86IGJvb2xlYW47XG4gICAgLy8gSWYgdW5kZWZpbmVkIG9yIDAsIHRoZW4gbGlzdGVuIG9ubHkgY2hhbmdlcyBtYWRlIGJ5IHRoZSBwb2RcbiAgICAvLyBJZiBncmVhdGVyIHRoYW4gMCA6IHdpbGwgY2hlY2sgY29uY3VycmVudCBjaGFuZ2VzIGluIHRoZSBEQiAoZS5nLiBjaGFuZ2VzIG1hZGUgYnkgYW5vdGhlciBzb2Z0d2FyZSkgQU5EIGNoYW5nZXMgbWFkZSB0aGUgcG9kXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM/OiBudW1iZXI7XG4gIH07XG5cbiAgZmVlZD86IHtcbiAgICBqc29uRmVlZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICAgIG1heENvbnRlbnRMZW5ndGg6IG51bWJlcjtcbiAgICBtYXhBZ2VJbk1vbnRoczogbnVtYmVyO1xuICAgIG1heENvdW50OiBudW1iZXI7XG4gIH07XG59XG4iXX0=
|
|
@@ -90,6 +90,7 @@ export const environment = Object.freeze({
|
|
|
90
90
|
// About
|
|
91
91
|
sourceUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components',
|
|
92
92
|
reportIssueUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/issues',
|
|
93
|
+
changelogUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/blob/develop/doc/changelog.md',
|
|
93
94
|
forumUrl: null, //'https://forum.sumaris.net',
|
|
94
95
|
helpUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/blob/master/user-manual/index_fr.md',
|
|
95
96
|
privacyPolicyUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-app/-/raw/master/doc/privacy_policy_fr.md',
|
|
@@ -131,4 +132,4 @@ export const environment = Object.freeze({
|
|
|
131
132
|
},
|
|
132
133
|
buildDate: new Date().toISOString(),
|
|
133
134
|
});
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdGQUFnRjtBQUNoRiwyRUFBMkU7QUFDM0UsZ0VBQWdFO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUdyRTs7Ozs7R0FLRztBQUNILHNDQUFzQztBQUV0QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWdCLE1BQU0sQ0FBQyxNQUFNLENBQWM7SUFDakUsSUFBSSxFQUFFLDZCQUE2QixFQUFFLGtDQUFrQztJQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLGtDQUFrQztJQUVsRCxvRUFBb0U7SUFDcEUsb0JBQW9CO0lBQ3BCLFVBQVUsRUFBRSxJQUFJO0lBRWhCLDJEQUEyRDtJQUMzRCwrQkFBK0I7SUFFL0IsT0FBTyxFQUFFLEdBQUc7SUFDWixhQUFhLEVBQUUsSUFBSTtJQUNuQixvQkFBb0IsRUFBRSxNQUFNO0lBQzVCLGlCQUFpQixFQUFFLGFBQWE7SUFDaEMsT0FBTyxFQUFFLEtBQUs7SUFDZCxhQUFhLEVBQUUsSUFBSTtJQUVuQix3QkFBd0I7SUFDeEIsbUJBQW1CO0lBRW5CLHNCQUFzQjtJQUN0QixZQUFZLEVBQUUsS0FBSztJQUVuQix3QkFBd0I7SUFDeEIsZ0JBQWdCO0lBRWhCLGNBQWMsRUFBRSxPQUFPO0lBQ3ZCLGlCQUFpQixFQUFFLFNBQVM7SUFDNUIseUJBQXlCLEVBQUUsSUFBSTtJQUUvQixxQkFBcUIsRUFBRSxJQUFJO0lBRTNCLFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxXQUFXO1FBQ2pCLElBQUksRUFBRSxJQUFJO0tBQ1g7SUFFRCxZQUFZLEVBQUU7UUFDWjtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxlQUFlO1lBQ3JCLElBQUksRUFBRSxJQUFJO1NBQ1g7UUFDRDtZQUNFLElBQUksRUFBRSxZQUFZO1lBQ2xCLElBQUksRUFBRSxHQUFHO1NBQ1Y7UUFDRDtZQUNFLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFLEdBQUc7U0FDVjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsR0FBRztTQUNWO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLElBQUksRUFBRSxHQUFHO1NBQ1Y7S0FDRjtJQUNELGNBQWMsRUFBRSxTQUFTO0lBQ3pCLHdCQUF3QixFQUFFLCtEQUErRDtJQUN6RixvQkFBb0IsRUFBRSxvREFBb0Q7SUFDMUUsd0JBQXdCLEVBQUUscUVBQXFFO0lBRS9GLFVBQVU7SUFDVixPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsWUFBWSxDQUFDO0tBQ3BIO0lBRUQsUUFBUTtJQUNSLFNBQVMsRUFBRSxxRUFBcUU7SUFDaEYsY0FBYyxFQUFFLDhFQUE4RTtJQUM5RixZQUFZLEVBQUUscUdBQXFHO0lBQ25ILFFBQVEsRUFBRSxJQUFJLEVBQUUsOEJBQThCO0lBQzlDLE9BQU8sRUFBRSxnR0FBZ0c7SUFDekcsZ0JBQWdCLEVBQUUsZ0dBQWdHO0lBQ2xILGFBQWEsRUFBRSw2R0FBNkc7SUFFNUgsY0FBYztJQUNkLGlCQUFpQixFQUFFO1FBQ2pCLG1DQUFtQztRQUNuQyxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLFFBQVEsRUFBRSxPQUFPO0tBQ2xCO0lBRUQsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUM7SUFFOUMsT0FBTyxFQUFFO1FBQ1AsbUJBQW1CLEVBQUUsSUFBSTtRQUN6Qix1QkFBdUIsRUFBRSxFQUFFO1FBQzNCLGdCQUFnQixFQUFFLElBQUk7S0FDdkI7SUFFRCxZQUFZLEVBQUU7UUFDWixtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLHVCQUF1QixFQUFFLEVBQUU7S0FDNUI7SUFFRCxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUU7WUFDUixFQUFFLEVBQUU7Z0JBQ0YsZ0JBQWdCO2dCQUNoQix3R0FBd0c7Z0JBQ3hHLGdEQUFnRDtnQkFDaEQsa0ZBQWtGO2dCQUNsRiwrQkFBK0I7Z0JBQy9CLHlGQUF5RjthQUMxRjtZQUVELEVBQUUsRUFBRTtnQkFDRixnQkFBZ0I7Z0JBQ2hCLHdHQUF3RzthQUN6RztTQUNGO1FBQ0QsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLFFBQVEsRUFBRSxDQUFDO0tBQ1o7SUFFRCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7Q0FDcEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGNhbiBiZSByZXBsYWNlZCBkdXJpbmcgYnVpbGQgYnkgdXNpbmcgdGhlIGBmaWxlUmVwbGFjZW1lbnRzYCBhcnJheS5cbi8vIGBuZyBidWlsZCAtLS1wcm9kYCByZXBsYWNlcyBgZW52aXJvbm1lbnQudHNgIHdpdGggYGVudmlyb25tZW50LnByb2QudHNgLlxuLy8gVGhlIGxpc3Qgb2YgZmlsZSByZXBsYWNlbWVudHMgY2FuIGJlIGZvdW5kIGluIGBhbmd1bGFyLmpzb25gLlxuaW1wb3J0IHsgU3RvcmFnZURyaXZlcnMgfSBmcm9tICcuLi9hcHAvc2hhcmVkL3N0b3JhZ2Uvc3RvcmFnZS51dGlscyc7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnZpcm9ubWVudC5jbGFzcyc7XG4vKlxuICogSW4gZGV2ZWxvcG1lbnQgbW9kZSwgdG8gaWdub3JlIHpvbmUgcmVsYXRlZCBlcnJvciBzdGFjayBmcmFtZXMgc3VjaCBhc1xuICogYHpvbmUucnVuYCwgYHpvbmVEZWxlZ2F0ZS5pbnZva2VUYXNrYCBmb3IgZWFzaWVyIGRlYnVnZ2luZywgeW91IGNhblxuICogaW1wb3J0IHRoZSBmb2xsb3dpbmcgZmlsZSwgYnV0IHBsZWFzZSBjb21tZW50IGl0IG91dCBpbiBwcm9kdWN0aW9uIG1vZGVcbiAqIGJlY2F1c2UgaXQgd2lsbCBoYXZlIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHRocm93IGVycm9yXG4gKi9cbi8vaW1wb3J0ICd6b25lLmpzL3BsdWdpbnMvem9uZS1lcnJvcic7XG5cbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQgPSBPYmplY3QuZnJlZXplKDxFbnZpcm9ubWVudD57XG4gIG5hbWU6ICdAc3VtYXJpcy1uZXQvbmd4LWNvbXBvbmVudHMnLCAvLyBvdmVycmlkZGVuIGJ5IEVOVklST05NRU5UIHRva2VuXG4gIHZlcnNpb246ICcxLjAnLCAvLyBvdmVycmlkZGVuIGJ5IEVOVklST05NRU5UIHRva2VuXG5cbiAgLy8gRG8gTk9UIHNldCB0byBmYWxzZSAtIGJlY2F1c2UgdGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgYnkgcmVsZWFzZXNcbiAgLy9wcm9kdWN0aW9uOiBmYWxzZSxcbiAgcHJvZHVjdGlvbjogdHJ1ZSxcblxuICAvLyBEbyBOT1Qgc2V0IC0gYmVjYXVzZSB0aGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBieSByZWxlYXNlc1xuICAvL2V4dGVybmFsRW52aXJvbm1lbnRVcmw6IG51bGwsXG5cbiAgYmFzZVVybDogJy8nLFxuICBkZWZhdWx0TG9jYWxlOiAnZnInLFxuICBkZWZhdWx0TGF0TG9uZ0Zvcm1hdDogJ0RETU0nLFxuICBhcG9sbG9GZXRjaFBvbGljeTogJ2NhY2hlLWZpcnN0JyxcbiAgdXNlSGFzaDogZmFsc2UsXG4gIGFsbG93RGFya01vZGU6IHRydWUsXG5cbiAgLy9kZWZhdWx0Um91dGU6ICcvaG9tZScsXG4gIC8vZW5hYmxlTWVudTogdHJ1ZSxcblxuICAvLyBGSVhNRTogZW5hYmxlIGNhY2hlXG4gIHBlcnNpc3RDYWNoZTogZmFsc2UsXG5cbiAgLy8gVE9ETzogbWFrZSB0aGlzIHdvcmtzXG4gIC8vb2ZmbGluZTogdHJ1ZSxcblxuICBwZWVyTWluVmVyc2lvbjogJzEuOC4wJyxcbiAgcGVlckRlZmF1bHRQcmVmaXg6ICdodHRwOi8vJyxcbiAgZW5hYmxlU2VsZWN0UGVlckJ5RmVhdHVyZTogdHJ1ZSxcblxuICBzZW5kQXBwVmVyc2lvbkhlYWRlcnM6IHRydWUsXG5cbiAgZGVmYXVsdFBlZXI6IHtcbiAgICBob3N0OiAnbG9jYWxob3N0JyxcbiAgICBwb3J0OiA4MDgxLFxuICB9LFxuXG4gIGRlZmF1bHRQZWVyczogW1xuICAgIHtcbiAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogODA4MCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogODA4MSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuNDUnLFxuICAgICAgcG9ydDogODA4MCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuMjQnLFxuICAgICAgcG9ydDogODA4MCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuMjknLFxuICAgICAgcG9ydDogODA4MCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhvc3Q6ICcxOTIuMTY4LjAuMTA3JyxcbiAgICAgIHBvcnQ6IDgwODAsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2loLnNmYS5zYycsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAndGVzdC5zdW1hcmlzLm5ldCcsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnb3Blbi5zdW1hcmlzLm5ldCcsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgfSxcbiAgICB7XG4gICAgICBob3N0OiAnc2VydmVyLmUtaXMucHJvJyxcbiAgICAgIHBvcnQ6IDQ0MyxcbiAgICB9LFxuICBdLFxuICBkZWZhdWx0QXBwTmFtZTogJ1NVTUFSaVMnLFxuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw6ICdodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9bmV0LnN1bWFyaXMuYXBwJyxcbiAgZGVmYXVsdElPU0luc3RhbGxVcmw6ICdodHRwczovL2FwcHMuYXBwbGUuY29tL3VzL2FwcC9zdW1hcmlzL2lkNjczNjc0NzUyMycsXG4gIGRlZmF1bHREZXNrdG9wSW5zdGFsbFVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtYXBwLy0vcmVsZWFzZXMnLFxuXG4gIC8vIFN0b3JhZ2VcbiAgc3RvcmFnZToge1xuICAgIGRyaXZlck9yZGVyOiBbU3RvcmFnZURyaXZlcnMuU1FMTGl0ZSwgU3RvcmFnZURyaXZlcnMuSW5kZXhlZERCLCBTdG9yYWdlRHJpdmVycy5XZWJTUUwsIFN0b3JhZ2VEcml2ZXJzLkxvY2FsU3RvcmFnZV0sXG4gIH0sXG5cbiAgLy8gQWJvdXRcbiAgc291cmNlVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvbmd4LXN1bWFyaXMtY29tcG9uZW50cycsXG4gIHJlcG9ydElzc3VlVXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvbmd4LXN1bWFyaXMtY29tcG9uZW50cy8tL2lzc3VlcycsXG4gIGNoYW5nZWxvZ1VybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9ibG9iL2RldmVsb3AvZG9jL2NoYW5nZWxvZy5tZCcsXG4gIGZvcnVtVXJsOiBudWxsLCAvLydodHRwczovL2ZvcnVtLnN1bWFyaXMubmV0JyxcbiAgaGVscFVybDogJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL3N1bWFyaXMtZG9jLy0vYmxvYi9tYXN0ZXIvdXNlci1tYW51YWwvaW5kZXhfZnIubWQnLFxuICBwcml2YWN5UG9saWN5VXJsOiAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvc3VtYXJpcy1hcHAvLS9yYXcvbWFzdGVyL2RvYy9wcml2YWN5X3BvbGljeV9mci5tZCcsXG4gIHRlcm1zT2ZVc2VVcmw6ICdodHRwczovL2dpdGxhYi5pZnJlbWVyLmZyL3NpaC1wdWJsaWMvc3VtYXJpcy9zdW1hcmlzLWFwcC8tL3Jhdy9tYXN0ZXIvZG9jL3Rlcm1zX29mX3VzZV9mci5tZD9yZWZfdHlwZT1oZWFkcycsXG5cbiAgLy8gRGV2ZWxvcG1lbnRcbiAgZGVmYXVsdEF1dGhWYWx1ZXM6IHtcbiAgICAvLyBUb2tlbiBhdXRoICh1c2luZyBQZXJzb24ucHVia2V5KVxuICAgIHVzZXJuYW1lOiAnYWRtaW5Ac3VtYXJpcy5uZXQnLFxuICAgIHBhc3N3b3JkOiAnYWRtaW4nLFxuICB9LFxuXG4gIHN0YXJ0dXBPcmRlcjogWyd1cmwnLCAnd2luZG93JywgJ2Vudmlyb25tZW50J10sXG5cbiAgYWNjb3VudDoge1xuICAgIGVuYWJsZUxpc3RlbkNoYW5nZXM6IHRydWUsXG4gICAgbGlzdGVuSW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICAgIGVuYWJsZUF2YXRhckVkaXQ6IHRydWUsXG4gIH0sXG5cbiAgZW50aXR5RWRpdG9yOiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlczogdHJ1ZSxcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kczogNjAsXG4gIH0sXG5cbiAgZmVlZDoge1xuICAgIGpzb25GZWVkOiB7XG4gICAgICBmcjogW1xuICAgICAgICAnL2FwaS9mZWVkLmpzb24nLFxuICAgICAgICAnaHR0cHM6Ly9naXRsYWIuaWZyZW1lci5mci9zaWgtcHVibGljL3N1bWFyaXMvbmd4LXN1bWFyaXMtY29tcG9uZW50cy8tL3Jhdy9tYXN0ZXIvZG9jL2ZlZWQvZmVlZC1mci5qc29uJyxcbiAgICAgICAgLy8gRXhhbXBsZSB3aXRoIEpzb25GZWVkIHZlcnNpb24gMSAoYW5kIG5vdCAxLjEpXG4gICAgICAgIC8vJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kdW5pdGVyL2Nlc2l1bS9tYXN0ZXIvZG9jL2ZlZWQvZmVlZC1mci5qc29uJyxcbiAgICAgICAgLy8gRXhhbXBsZSB3aXRoIGRpc2NvdXJzZSBBUEkgOlxuICAgICAgICAvLydodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZHVuaXRlci9jZXNpdW0vbWFzdGVyL2RvYy9mZWVkLzEuMS9mZWVkLWZyLUZSLmpzb24nLFxuICAgICAgXSxcblxuICAgICAgZW46IFtcbiAgICAgICAgJy9hcGkvZmVlZC5qc29uJyxcbiAgICAgICAgJ2h0dHBzOi8vZ2l0bGFiLmlmcmVtZXIuZnIvc2loLXB1YmxpYy9zdW1hcmlzL25neC1zdW1hcmlzLWNvbXBvbmVudHMvLS9yYXcvbWFzdGVyL2RvYy9mZWVkL2ZlZWQtZW4uanNvbidcbiAgICAgIF0sXG4gICAgfSxcbiAgICBtYXhDb250ZW50TGVuZ3RoOiAxMDAwLFxuICAgIG1heEFnZUluTW9udGhzOiAtMSxcbiAgICBtYXhDb3VudDogMyxcbiAgfSxcblxuICBidWlsZERhdGU6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbn0pO1xuIl19
|
|
@@ -216,6 +216,7 @@ class Environment {
|
|
|
216
216
|
// About
|
|
217
217
|
sourceUrl;
|
|
218
218
|
reportIssueUrl;
|
|
219
|
+
changelogUrl;
|
|
219
220
|
forumUrl; // TODO allow a map by locale ? ex: { [lang: string]: string };
|
|
220
221
|
helpUrl; // TODO allow a map by locale ?
|
|
221
222
|
privacyPolicyUrl; // TODO allow a map by locale ?
|
|
@@ -14648,9 +14649,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
14648
14649
|
class MatPaginatorI18n extends MatPaginatorIntl {
|
|
14649
14650
|
translate;
|
|
14650
14651
|
ofLabel;
|
|
14652
|
+
_subscription = new Subscription();
|
|
14651
14653
|
constructor(translate) {
|
|
14652
14654
|
super();
|
|
14653
14655
|
this.translate = translate;
|
|
14656
|
+
// Initial load
|
|
14657
|
+
this._updateTranslations();
|
|
14658
|
+
// Re-translate on language change
|
|
14659
|
+
this._subscription.add(this.translate.onLangChange.subscribe(() => this._updateTranslations()));
|
|
14660
|
+
}
|
|
14661
|
+
ngOnDestroy() {
|
|
14662
|
+
this._subscription.unsubscribe();
|
|
14663
|
+
}
|
|
14664
|
+
getRangeLabel = (page, pageSize, length) => {
|
|
14665
|
+
if (length === 0 || pageSize === 0) {
|
|
14666
|
+
return '0 ' + this.ofLabel + ' ' + length;
|
|
14667
|
+
}
|
|
14668
|
+
length = Math.max(length, 0);
|
|
14669
|
+
const startIndex = page * pageSize;
|
|
14670
|
+
// If the start index exceeds the list length, do not try and fix the end index to the end.
|
|
14671
|
+
const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;
|
|
14672
|
+
return startIndex + 1 + ' - ' + endIndex + ' ' + this.ofLabel + ' ' + length;
|
|
14673
|
+
};
|
|
14674
|
+
_getTranslationValue(translations, key, defaultValue) {
|
|
14675
|
+
return translations[key] !== key ? translations[key] : defaultValue;
|
|
14676
|
+
}
|
|
14677
|
+
_updateTranslations() {
|
|
14654
14678
|
this.translate
|
|
14655
14679
|
.get([
|
|
14656
14680
|
'COMMON.PAGINATOR.ITEMS_PER_PAGE',
|
|
@@ -14671,19 +14695,6 @@ class MatPaginatorI18n extends MatPaginatorIntl {
|
|
|
14671
14695
|
this.changes.next();
|
|
14672
14696
|
});
|
|
14673
14697
|
}
|
|
14674
|
-
getRangeLabel = (page, pageSize, length) => {
|
|
14675
|
-
if (length === 0 || pageSize === 0) {
|
|
14676
|
-
return '0 ' + this.ofLabel + ' ' + length;
|
|
14677
|
-
}
|
|
14678
|
-
length = Math.max(length, 0);
|
|
14679
|
-
const startIndex = page * pageSize;
|
|
14680
|
-
// If the start index exceeds the list length, do not try and fix the end index to the end.
|
|
14681
|
-
const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;
|
|
14682
|
-
return startIndex + 1 + ' - ' + endIndex + ' ' + this.ofLabel + ' ' + length;
|
|
14683
|
-
};
|
|
14684
|
-
_getTranslationValue(translations, key, defaultValue) {
|
|
14685
|
-
return translations[key] !== key ? translations[key] : defaultValue;
|
|
14686
|
-
}
|
|
14687
14698
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MatPaginatorI18n, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14688
14699
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MatPaginatorI18n, providedIn: 'root' });
|
|
14689
14700
|
}
|
|
@@ -17131,6 +17142,7 @@ const environment = Object.freeze({
|
|
|
17131
17142
|
// About
|
|
17132
17143
|
sourceUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components',
|
|
17133
17144
|
reportIssueUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/issues',
|
|
17145
|
+
changelogUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/blob/develop/doc/changelog.md',
|
|
17134
17146
|
forumUrl: null, //'https://forum.sumaris.net',
|
|
17135
17147
|
helpUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/blob/master/user-manual/index_fr.md',
|
|
17136
17148
|
privacyPolicyUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-app/-/raw/master/doc/privacy_policy_fr.md',
|
|
@@ -22469,6 +22481,11 @@ const CORE_CONFIG_OPTIONS = Object.freeze({
|
|
|
22469
22481
|
label: 'CONFIGURATION.OPTIONS.REPORT_ISSUE_URL',
|
|
22470
22482
|
type: 'string',
|
|
22471
22483
|
},
|
|
22484
|
+
CHANGELOG_URL: {
|
|
22485
|
+
key: 'sumaris.changelog.url',
|
|
22486
|
+
label: 'CONFIGURATION.OPTIONS.CHANGELOG_URL',
|
|
22487
|
+
type: 'string',
|
|
22488
|
+
},
|
|
22472
22489
|
PRIVACY_POLICY_URL: {
|
|
22473
22490
|
key: 'sumaris.policy.url',
|
|
22474
22491
|
label: 'CONFIGURATION.OPTIONS.PRIVACY_POLICY_URL',
|
|
@@ -32974,11 +32991,11 @@ class AppMarkdownContent {
|
|
|
32974
32991
|
}));
|
|
32975
32992
|
}
|
|
32976
32993
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppMarkdownContent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: i1$7.ActivatedRoute, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
32977
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AppMarkdownContent, selector: "app-markdown-content", inputs: { data: "data", src: "src", anchor: "anchor", debug: ["debug", "debug", booleanAttribute], showError: ["showError", "showError", booleanAttribute], animated: ["animated", "animated", booleanAttribute], enableNavigationHistory: ["enableNavigationHistory", "enableNavigationHistory", booleanAttribute], updateRouteLocation: ["updateRouteLocation", "updateRouteLocation", booleanAttribute] }, outputs: { markdownUrlChange: "markdownUrlChange" }, ngImport: i0, template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: -4px 0px 0px rgba(var(--ion-text-color-rgb), .4);--ion-padding: 4px;display:block;position:relative;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:var(--ion-color-light);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{
|
|
32994
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AppMarkdownContent, selector: "app-markdown-content", inputs: { data: "data", src: "src", anchor: "anchor", debug: ["debug", "debug", booleanAttribute], showError: ["showError", "showError", booleanAttribute], animated: ["animated", "animated", booleanAttribute], enableNavigationHistory: ["enableNavigationHistory", "enableNavigationHistory", booleanAttribute], updateRouteLocation: ["updateRouteLocation", "updateRouteLocation", booleanAttribute] }, outputs: { markdownUrlChange: "markdownUrlChange" }, ngImport: i0, template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: -4px 0px 0px rgba(var(--ion-text-color-rgb), .4);--ion-padding: 4px;display:block;position:relative;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:rgba(var(--ion-color-light-rgb),.87);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{background:rgba(var(--ion-text-color-rgb),.03);font-size:.9rem;letter-spacing:-.5px}:host ::ng-deep markdown div[style*=\"float: right\"]{position:relative;z-index:999;margin-left:var(--ion-padding, 16px)}.loading-spinner ion-skeleton-text{width:100%;height:1.5em}.loading-spinner p{margin-top:var(ion-padding, 16px)}@media print{@page{size:portrait;margin:1.1cm}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin:0;padding:0;overflow:hidden}markdown hr{page-break-before:always;border:none;margin:0;padding:0}markdown img{max-width:100%;height:auto;page-break-inside:avoid}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2$1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2$1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2$1.IonRow, selector: "ion-row" }, { kind: "component", type: i2$1.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: i4$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: DebugComponent, selector: "app-debug", inputs: ["titlePrefix", "title", "enable", "expanded"] }, { kind: "directive", type: MarkdownDirective, selector: "markdown,[markdown]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], animations: [slideDownAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
32978
32995
|
}
|
|
32979
32996
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppMarkdownContent, decorators: [{
|
|
32980
32997
|
type: Component,
|
|
32981
|
-
args: [{ selector: 'app-markdown-content', changeDetection: ChangeDetectionStrategy.OnPush, animations: [slideDownAnimation], template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: -4px 0px 0px rgba(var(--ion-text-color-rgb), .4);--ion-padding: 4px;display:block;position:relative;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:var(--ion-color-light);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{
|
|
32998
|
+
args: [{ selector: 'app-markdown-content', changeDetection: ChangeDetectionStrategy.OnPush, animations: [slideDownAnimation], template: "<app-debug *ngIf=\"debug\">\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n loading: {{ loading }}\n <br />\n error: {{ error }}\n <br />\n <br />\n baseUrl: {{ baseUrl }}\n <br />\n markdownUrl: {{ src }}\n <br />\n markdownFragment: {{ _anchor }}\n <br />\n markdownContent: {{ data }}\n <br />\n </ion-col>\n </ion-row>\n </ion-grid>\n</app-debug>\n\n<!-- error -->\n@if (showError && error; as error) {\n <ion-item lines=\"none\" @slideDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error | translate\"></ion-label>\n </ion-item>\n} @else {\n @if (data) {\n <markdown [data]=\"data\" (ready)=\"onReady()\" emoji></markdown>\n } @else if (src) {\n <markdown [src]=\"src\" (error)=\"onLoadError($event)\" (ready)=\"onReady()\" emoji></markdown>\n }\n}\n\n<!-- loading spinner -->\n@if (loading) {\n <div class=\"loading-spinner\">\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n <ng-container *ngTemplateOutlet=\"loadingParagraph\"></ng-container>\n </div>\n}\n\n<ng-template #loadingParagraph>\n <p>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 75%; margin-inline-start: 5%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n <ion-skeleton-text [animated]=\"animated\" style=\"width: 80%\"></ion-skeleton-text>\n </p>\n</ng-template>\n", styles: [":host ::ng-deep markdown div.logo{display:none;visibility:hidden}:host ::ng-deep markdown hr{border-top:1px solid var(--ion-color-medium-tint, #dcdcde);margin:10px 0}:host ::ng-deep markdown blockquote{--block-margin: 16px 0;--block-padding: 4px 16px;--box-shadow: -4px 0px 0px rgba(var(--ion-text-color-rgb), .4);--ion-padding: 4px;display:block;position:relative;margin:var(--block-margin);padding:var(--block-padding);font-style:italic;background:rgba(var(--ion-color-light-rgb),.87);box-shadow:var(--box-shadow)}:host ::ng-deep markdown code{background:rgba(var(--ion-text-color-rgb),.03);font-size:.9rem;letter-spacing:-.5px}:host ::ng-deep markdown div[style*=\"float: right\"]{position:relative;z-index:999;margin-left:var(--ion-padding, 16px)}.loading-spinner ion-skeleton-text{width:100%;height:1.5em}.loading-spinner p{margin-top:var(ion-padding, 16px)}@media print{@page{size:portrait;margin:1.1cm}body{font-family:Roboto,Helvetica,Arial,sans-serif;margin:0;padding:0;overflow:hidden}markdown hr{page-break-before:always;border:none;margin:0;padding:0}markdown img{max-width:100%;height:auto;page-break-inside:avoid}}\n"] }]
|
|
32982
32999
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: Document, decorators: [{
|
|
32983
33000
|
type: Inject,
|
|
32984
33001
|
args: [DOCUMENT]
|
|
@@ -33202,6 +33219,7 @@ class AboutModal {
|
|
|
33202
33219
|
reportIssueUrl;
|
|
33203
33220
|
forumUrl;
|
|
33204
33221
|
helpUrl;
|
|
33222
|
+
changelogUrl;
|
|
33205
33223
|
showVersionDetails = false;
|
|
33206
33224
|
nodeInfo;
|
|
33207
33225
|
buildDate;
|
|
@@ -33227,6 +33245,7 @@ class AboutModal {
|
|
|
33227
33245
|
this.reportIssueUrl = environment?.reportIssueUrl;
|
|
33228
33246
|
this.forumUrl = environment?.forumUrl;
|
|
33229
33247
|
this.helpUrl = environment?.helpUrl;
|
|
33248
|
+
this.changelogUrl = environment?.changelogUrl;
|
|
33230
33249
|
this.config$ = configService.config;
|
|
33231
33250
|
this._subscription.add(this.config$.subscribe((config) => this.setConfig(config)));
|
|
33232
33251
|
}
|
|
@@ -33245,8 +33264,18 @@ class AboutModal {
|
|
|
33245
33264
|
this.forumUrl = config?.getProperty(CORE_CONFIG_OPTIONS.FORUM_URL) || this.environment?.forumUrl;
|
|
33246
33265
|
this.helpUrl = config?.getProperty(CORE_CONFIG_OPTIONS.HELP_URL) || this.environment?.helpUrl;
|
|
33247
33266
|
this.reportIssueUrl = config?.getProperty(CORE_CONFIG_OPTIONS.REPORT_ISSUE_URL) || this.environment?.reportIssueUrl;
|
|
33267
|
+
this.changelogUrl = config?.getProperty(CORE_CONFIG_OPTIONS.CHANGELOG_URL) || this.environment?.changelogUrl;
|
|
33248
33268
|
this.buildDate = this.environment?.buildDate;
|
|
33249
33269
|
}
|
|
33270
|
+
async openChangelog(event) {
|
|
33271
|
+
event.preventDefault();
|
|
33272
|
+
if (!this.changelogUrl)
|
|
33273
|
+
return;
|
|
33274
|
+
await AppMarkdownModal.show(this.modalController, {
|
|
33275
|
+
title: this.translate.instant('ABOUT.BTN_CHANGELOG'),
|
|
33276
|
+
src: this.changelogUrl,
|
|
33277
|
+
});
|
|
33278
|
+
}
|
|
33250
33279
|
async loadNodeInfo() {
|
|
33251
33280
|
this.nodeInfo = await this.getNodeInfo();
|
|
33252
33281
|
this.cd.markForCheck();
|
|
@@ -33263,11 +33292,11 @@ class AboutModal {
|
|
|
33263
33292
|
}
|
|
33264
33293
|
}
|
|
33265
33294
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutModal, deps: [{ token: i1$1.TranslateService }, { token: i2$1.ModalController }, { token: ConfigService }, { token: NetworkService }, { token: i0.ChangeDetectorRef }, { token: ENVIRONMENT, optional: true }, { token: APP_ABOUT_DEVELOPERS, optional: true }, { token: APP_ABOUT_PARTNERS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
33266
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AboutModal, selector: "app-about-modal", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-title>\n {{ 'ABOUT.TITLE' | translate }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <!-- Peer info -->\n @if (config$ | async; as config) {\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <b>{{ config.label | capitalize }}</b>\n @if (config.name) {\n -\n <span [innerHTML]=\"config.name\"></span>\n }\n </h2>\n\n @if (config.description) {\n <p>\n <markdown [data]=\"config.description\" emoji></markdown>\n </p>\n }\n </ion-label>\n </ion-item>\n }\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n @if (name) {\n <small>{{ 'ABOUT.POWERED_BY' | translate }}</small>\n {{ name }}\n }\n @if (version) {\n <span [innerHTML]=\"'ABOUT.VERSION' | translate: { version: version }\"></span>\n }\n @if(allowVersionDetails) {\n \n <small>\n <a (click)=\"showVersionDetails=!showVersionDetails\" tappable>\n {{'COMMON.BTN_SHOW_MORE' | translate}}\n <ion-icon [name]=\"!showVersionDetails ? 'chevron-down' : 'chevron-up'\"></ion-icon>\n </a>\n </small>\n }\n </h2>\n\n <!-- version details -->\n @if (showVersionDetails) {\n <p class=\"version-details\">\n <!-- App version -->\n @if (buildDate) {\n <small>\n <ion-icon name=\"logo-angular\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.APP_VERSION' | translate: { version: version }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n <br/>\n }\n <!-- Pod version -->\n @if (nodeInfo?.softwareVersion && nodeInfo.buildDate) {\n <small>\n <ion-icon name=\"server\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.POD_VERSION' | translate: { version: nodeInfo.softwareVersion }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ nodeInfo.buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n }\n </p>\n }\n\n <!-- license-->\n <p [innerHTML]=\"'ABOUT.LICENSE' | translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.HELP' | translate }}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{ helpUrl }}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{ forumUrl }}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.REPORT_ISSUE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ reportIssueUrl }}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.SOURCE_CODE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ sourceUrl }}\" target=\"_system\">{{ sourceUrl }}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.DEVELOPED_BY' | translate }}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\" class=\"ion-no-padding\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{ item.siteUrl }}\" target=\"_system\">{{ item.name || item.label }}</a>\n </p>\n </ion-label>\n <ion-img slot=\"end\" [src]=\"item.logo\" />\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{ 'ABOUT.PARTNERS' | translate }}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{ item.siteUrl }}\" class=\"partners\" target=\"_system\">\n <img *ngIf=\"item.logo; else partnerName\" [src]=\"item.logo\" [alt]=\"item.label\" />\n <ng-template #partnerName>\n <ion-text>{{ item.label }}</ion-text>\n </ng-template>\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", styles: [".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px!important}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2$1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2$1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2$1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2$1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2$1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2$1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2$1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2$1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2$1.IonRow, selector: "ion-row" }, { kind: "component", type: i2$1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2$1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2$1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: NotEmptyArrayPipe, name: "isNotEmptyArray" }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33295
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AboutModal, selector: "app-about-modal", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-title>\n {{ 'ABOUT.TITLE' | translate }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <!-- Peer info -->\n @if (config$ | async; as config) {\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <b>{{ config.label | capitalize }}</b>\n @if (config.name) {\n -\n <span [innerHTML]=\"config.name\"></span>\n }\n </h2>\n\n @if (config.description) {\n <p>\n <markdown [data]=\"config.description\" emoji></markdown>\n </p>\n }\n </ion-label>\n </ion-item>\n }\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n @if (name) {\n <small>{{ 'ABOUT.POWERED_BY' | translate }}</small>\n {{ name }}\n }\n @if (version) {\n <span [innerHTML]=\"'ABOUT.VERSION' | translate: { version: version }\"></span>\n }\n @if(allowVersionDetails) {\n \n <small>\n <a (click)=\"showVersionDetails=!showVersionDetails\" tappable>\n {{'COMMON.BTN_SHOW_MORE' | translate}}\n <ion-icon [name]=\"!showVersionDetails ? 'chevron-down' : 'chevron-up'\"></ion-icon>\n </a>\n @if (changelogUrl) {\n \n <a (click)=\"openChangelog($event)\"\n [href]=\"changelogUrl\"\n tappable translate>ABOUT.BTN_CHANGELOG</a>\n }\n </small>\n }\n </h2>\n\n <!-- version details -->\n @if (showVersionDetails) {\n <p class=\"version-details\">\n <!-- App version -->\n @if (buildDate) {\n <small>\n <ion-icon name=\"logo-angular\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.APP_VERSION' | translate: { version: version }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n <br/>\n }\n <!-- Pod version -->\n @if (nodeInfo?.softwareVersion && nodeInfo.buildDate) {\n <small>\n <ion-icon name=\"server\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.POD_VERSION' | translate: { version: nodeInfo.softwareVersion }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ nodeInfo.buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n }\n </p>\n }\n\n <!-- license-->\n <p [innerHTML]=\"'ABOUT.LICENSE' | translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.HELP' | translate }}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{ helpUrl }}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{ forumUrl }}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.REPORT_ISSUE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ reportIssueUrl }}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.SOURCE_CODE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ sourceUrl }}\" target=\"_system\">{{ sourceUrl }}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.DEVELOPED_BY' | translate }}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\" class=\"ion-no-padding\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{ item.siteUrl }}\" target=\"_system\">{{ item.name || item.label }}</a>\n </p>\n </ion-label>\n <ion-img slot=\"end\" [src]=\"item.logo\" />\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{ 'ABOUT.PARTNERS' | translate }}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{ item.siteUrl }}\" class=\"partners\" target=\"_system\">\n <img *ngIf=\"item.logo; else partnerName\" [src]=\"item.logo\" [alt]=\"item.label\" />\n <ng-template #partnerName>\n <ion-text>{{ item.label }}</ion-text>\n </ng-template>\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", styles: [".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px!important}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2$1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2$1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2$1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2$1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2$1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2$1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2$1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2$1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2$1.IonRow, selector: "ion-row" }, { kind: "component", type: i2$1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2$1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2$1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i6$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: NotEmptyArrayPipe, name: "isNotEmptyArray" }, { kind: "pipe", type: CapitalizePipe, name: "capitalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33267
33296
|
}
|
|
33268
33297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutModal, decorators: [{
|
|
33269
33298
|
type: Component,
|
|
33270
|
-
args: [{ selector: 'app-about-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-title>\n {{ 'ABOUT.TITLE' | translate }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <!-- Peer info -->\n @if (config$ | async; as config) {\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <b>{{ config.label | capitalize }}</b>\n @if (config.name) {\n -\n <span [innerHTML]=\"config.name\"></span>\n }\n </h2>\n\n @if (config.description) {\n <p>\n <markdown [data]=\"config.description\" emoji></markdown>\n </p>\n }\n </ion-label>\n </ion-item>\n }\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n @if (name) {\n <small>{{ 'ABOUT.POWERED_BY' | translate }}</small>\n {{ name }}\n }\n @if (version) {\n <span [innerHTML]=\"'ABOUT.VERSION' | translate: { version: version }\"></span>\n }\n @if(allowVersionDetails) {\n \n <small>\n <a (click)=\"showVersionDetails=!showVersionDetails\" tappable>\n {{'COMMON.BTN_SHOW_MORE' | translate}}\n <ion-icon [name]=\"!showVersionDetails ? 'chevron-down' : 'chevron-up'\"></ion-icon>\n </a>\n </small>\n }\n </h2>\n\n <!-- version details -->\n @if (showVersionDetails) {\n <p class=\"version-details\">\n <!-- App version -->\n @if (buildDate) {\n <small>\n <ion-icon name=\"logo-angular\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.APP_VERSION' | translate: { version: version }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n <br/>\n }\n <!-- Pod version -->\n @if (nodeInfo?.softwareVersion && nodeInfo.buildDate) {\n <small>\n <ion-icon name=\"server\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.POD_VERSION' | translate: { version: nodeInfo.softwareVersion }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ nodeInfo.buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n }\n </p>\n }\n\n <!-- license-->\n <p [innerHTML]=\"'ABOUT.LICENSE' | translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.HELP' | translate }}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{ helpUrl }}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{ forumUrl }}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.REPORT_ISSUE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ reportIssueUrl }}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.SOURCE_CODE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ sourceUrl }}\" target=\"_system\">{{ sourceUrl }}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.DEVELOPED_BY' | translate }}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\" class=\"ion-no-padding\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{ item.siteUrl }}\" target=\"_system\">{{ item.name || item.label }}</a>\n </p>\n </ion-label>\n <ion-img slot=\"end\" [src]=\"item.logo\" />\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{ 'ABOUT.PARTNERS' | translate }}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{ item.siteUrl }}\" class=\"partners\" target=\"_system\">\n <img *ngIf=\"item.logo; else partnerName\" [src]=\"item.logo\" [alt]=\"item.label\" />\n <ng-template #partnerName>\n <ion-text>{{ item.label }}</ion-text>\n </ng-template>\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", styles: [".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px!important}\n"] }]
|
|
33299
|
+
args: [{ selector: 'app-about-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-title>\n {{ 'ABOUT.TITLE' | translate }}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\" visible-xs visible-sm visible-mobile>\n {{ 'COMMON.BTN_CLOSE' | translate }}\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <ion-list lines=\"none\">\n <!-- Peer info -->\n @if (config$ | async; as config) {\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n <b>{{ config.label | capitalize }}</b>\n @if (config.name) {\n -\n <span [innerHTML]=\"config.name\"></span>\n }\n </h2>\n\n @if (config.description) {\n <p>\n <markdown [data]=\"config.description\" emoji></markdown>\n </p>\n }\n </ion-label>\n </ion-item>\n }\n\n <!-- Version info -->\n <ion-item>\n <span slot=\"start\"> </span>\n <ion-label class=\"ion-text-wrap\">\n <h2>\n @if (name) {\n <small>{{ 'ABOUT.POWERED_BY' | translate }}</small>\n {{ name }}\n }\n @if (version) {\n <span [innerHTML]=\"'ABOUT.VERSION' | translate: { version: version }\"></span>\n }\n @if(allowVersionDetails) {\n \n <small>\n <a (click)=\"showVersionDetails=!showVersionDetails\" tappable>\n {{'COMMON.BTN_SHOW_MORE' | translate}}\n <ion-icon [name]=\"!showVersionDetails ? 'chevron-down' : 'chevron-up'\"></ion-icon>\n </a>\n @if (changelogUrl) {\n \n <a (click)=\"openChangelog($event)\"\n [href]=\"changelogUrl\"\n tappable translate>ABOUT.BTN_CHANGELOG</a>\n }\n </small>\n }\n </h2>\n\n <!-- version details -->\n @if (showVersionDetails) {\n <p class=\"version-details\">\n <!-- App version -->\n @if (buildDate) {\n <small>\n <ion-icon name=\"logo-angular\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.APP_VERSION' | translate: { version: version }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n <br/>\n }\n <!-- Pod version -->\n @if (nodeInfo?.softwareVersion && nodeInfo.buildDate) {\n <small>\n <ion-icon name=\"server\"></ion-icon>\n <span [innerHTML]=\"'ABOUT.POD_VERSION' | translate: { version: nodeInfo.softwareVersion }\"></span>\n \n <ion-icon name=\"time-outline\"></ion-icon>\n {{ nodeInfo.buildDate | dateFormat: { time: true, seconds: false } }}\n </small>\n }\n </p>\n }\n\n <!-- license-->\n <p [innerHTML]=\"'ABOUT.LICENSE' | translate\"></p>\n </ion-label>\n </ion-item>\n\n <!-- Help -->\n <ion-item *ngIf=\"forumUrl || helpUrl\">\n <mat-icon slot=\"start\">help_outline</mat-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.HELP' | translate }}\n </p>\n <p>\n <ion-button fill=\"solid\" color=\"accent\" href=\"{{ helpUrl }}\" target=\"help\" size=\"default\">\n <mat-icon slot=\"start\">description</mat-icon>\n <ion-text translate>ABOUT.USER_MANUAL</ion-text>\n </ion-button>\n <ion-button fill=\"solid\" color=\"secondary\" href=\"{{ forumUrl }}\" target=\"forum\" size=\"default\">\n <ion-icon slot=\"start\" name=\"chatbubbles\"></ion-icon>\n <ion-text translate>ABOUT.FORUM</ion-text>\n </ion-button>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Report issue -->\n <ion-item *ngIf=\"reportIssueUrl\">\n <ion-icon slot=\"start\" name=\"bug\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.REPORT_ISSUE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ reportIssueUrl }}\" target=\"_system\" translate>ABOUT.BTN_REPORT_ISSUE</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Source code -->\n <ion-item *ngIf=\"sourceUrl\">\n <ion-icon slot=\"start\" name=\"code\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.SOURCE_CODE' | translate }}\n </p>\n <p>\n <a color=\"primary\" href=\"{{ sourceUrl }}\" target=\"_system\">{{ sourceUrl }}</a>\n </p>\n </ion-label>\n </ion-item>\n\n <!-- Developers -->\n <ion-item *ngIf=\"developers | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"people\" color=\"dark\"></ion-icon>\n <ion-label>\n <p>\n {{ 'ABOUT.DEVELOPED_BY' | translate }}\n </p>\n <ion-list lines=\"none\">\n <ion-item *ngFor=\"let item of developers\" class=\"ion-no-padding\">\n <ion-label>\n <p>\n <a color=\"primary\" href=\"{{ item.siteUrl }}\" target=\"_system\">{{ item.name || item.label }}</a>\n </p>\n </ion-label>\n <ion-img slot=\"end\" [src]=\"item.logo\" />\n </ion-item>\n </ion-list>\n </ion-label>\n </ion-item>\n\n <!-- Partners -->\n <ion-item class=\"item-partners\" *ngIf=\"partners | isNotEmptyArray\">\n <ion-icon slot=\"start\" name=\"megaphone\" color=\"dark\"></ion-icon>\n <ion-text>\n <p>{{ 'ABOUT.PARTNERS' | translate }}</p>\n <p>\n <a *ngFor=\"let item of partners\" href=\"{{ item.siteUrl }}\" class=\"partners\" target=\"_system\">\n <img *ngIf=\"item.logo; else partnerName\" [src]=\"item.logo\" [alt]=\"item.label\" />\n <ng-template #partnerName>\n <ion-text>{{ item.label }}</ion-text>\n </ng-template>\n </a>\n </p>\n </ion-text>\n </ion-item>\n </ion-list>\n</ion-content>\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"solid\" color=\"tertiary\" (click)=\"close()\">{{ 'COMMON.BTN_CLOSE' | translate }}</ion-button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n</ion-footer>\n", styles: [".item-partners ion-text{height:auto}.item-partners ion-text p:last-child{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:space-between}.item-partners ion-text p:last-child a{padding:2px}.item-partners ion-text p:last-child a img{text-align:center;display:inline-block;max-height:40px!important}\n"] }]
|
|
33271
33300
|
}], ctorParameters: () => [{ type: i1$1.TranslateService }, { type: i2$1.ModalController }, { type: ConfigService }, { type: NetworkService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
33272
33301
|
type: Optional
|
|
33273
33302
|
}, {
|
|
@@ -52845,7 +52874,7 @@ class MarkdownTestPage {
|
|
|
52845
52874
|
debug;
|
|
52846
52875
|
// URL from a starting markdown
|
|
52847
52876
|
//protected markdownUrl = 'http://localhost:3000/user-manual/index.md';
|
|
52848
|
-
markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/projects/pifil/man/
|
|
52877
|
+
markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/projects/pifil/man/manuel_utilisateur-pifil.md';
|
|
52849
52878
|
//protected markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/README.md';
|
|
52850
52879
|
//protected markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/model/index.md';
|
|
52851
52880
|
//protected markdownUrl = 'https://gitlab.ifremer.fr/sih-public/sumaris/sumaris-doc/-/raw/master/model/administration/index.md';
|