geonetwork-ui 2.8.0-dev.1f70ea679 → 2.8.0-dev.27e1de86f
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/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +24 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +1 -2
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/index.mjs +1 -2
- package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +26 -8
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
- package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +2 -2
- package/esm2022/libs/feature/record/src/index.mjs +2 -1
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
- package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +4 -4
- package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +2 -2
- package/esm2022/libs/feature/record/src/lib/stac-view/stac-view.component.mjs +230 -0
- package/esm2022/libs/feature/record/src/lib/stac-view/utils.mjs +26 -0
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +2 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -1
- package/esm2022/libs/feature/search/src/lib/constants.mjs +1 -2
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +5 -9
- package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +5 -5
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +21 -7
- package/esm2022/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.mjs +35 -0
- package/esm2022/libs/ui/layout/src/lib/paginable.interface.mjs +1 -1
- package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +13 -5
- package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +86 -32
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +1 -1
- package/esm2022/libs/ui/widgets/src/lib/loading-mask/loading-mask.component.mjs +3 -3
- package/esm2022/libs/util/i18n/src/lib/date-locales.mjs +33 -0
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/humanize-date.directive.mjs +33 -0
- package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +19 -2
- package/esm2022/translations/de.json +14 -4
- package/esm2022/translations/en.json +14 -4
- package/esm2022/translations/es.json +10 -0
- package/esm2022/translations/fr.json +14 -4
- package/esm2022/translations/it.json +15 -5
- package/esm2022/translations/nl.json +10 -0
- package/esm2022/translations/pt.json +10 -0
- package/esm2022/translations/sk.json +11 -1
- package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs +35 -0
- package/fesm2022/geonetwork-ui-date-locales-DhlIiWpT.mjs.map +1 -0
- package/fesm2022/geonetwork-ui.mjs +753 -232
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/dataviz/src/index.d.ts +0 -1
- package/libs/feature/dataviz/src/index.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +1 -0
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +5 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts +12 -5
- package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts +3 -1
- package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +5 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts +53 -0
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
- package/libs/feature/record/src/lib/stac-view/utils.d.ts +7 -0
- package/libs/feature/record/src/lib/stac-view/utils.d.ts.map +1 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +4 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +0 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +5 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts +12 -0
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/paginable.interface.d.ts +3 -3
- package/libs/ui/layout/src/lib/paginable.interface.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +2 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +24 -14
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/date-locales.d.ts +5 -0
- package/libs/util/i18n/src/lib/date-locales.d.ts.map +1 -0
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts +15 -0
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts.map +1 -0
- package/libs/util/shared/src/lib/services/date.service.d.ts +4 -0
- package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +26 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +0 -1
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +8 -1
- package/src/libs/feature/dataviz/src/index.ts +0 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +30 -5
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
- package/src/libs/feature/record/src/index.ts +1 -0
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +5 -1
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
- package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +10 -8
- package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +1 -1
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -2
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.css +8 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.html +87 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.ts +339 -0
- package/src/libs/feature/record/src/lib/stac-view/utils.ts +57 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +1 -1
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +19 -0
- package/src/libs/feature/search/src/lib/constants.ts +0 -1
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +67 -21
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +2 -9
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css +0 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.html +13 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.ts +15 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.html +3 -3
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +17 -1
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.css +0 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.html +15 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.ts +41 -0
- package/src/libs/ui/layout/src/lib/paginable.interface.ts +3 -3
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +12 -6
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +4 -1
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.html +16 -14
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +144 -65
- package/src/libs/util/i18n/src/lib/date-locales.ts +63 -0
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/humanize-date.directive.ts +35 -0
- package/src/libs/util/shared/src/lib/services/date.service.ts +27 -1
- package/translations/de.json +14 -4
- package/translations/en.json +14 -4
- package/translations/es.json +10 -0
- package/translations/fr.json +14 -4
- package/translations/it.json +15 -5
- package/translations/nl.json +10 -0
- package/translations/pt.json +10 -0
- package/translations/sk.json +11 -1
- package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +0 -22
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +0 -59
- package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +0 -11
- package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +0 -1
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +0 -11
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +0 -1
- package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +0 -5
- package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +0 -27
- package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +0 -54
- /package/src/libs/{feature/dataviz/src/lib/stac-view/stac-view.component.css → ui/elements/src/lib/metadata-doi/metadata-doi.component.css} +0 -0
|
@@ -1,22 +1,32 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
-
import { MatNativeDateModule } from '@angular/material/core';
|
|
2
|
+
import { DateAdapter, MAT_DATE_LOCALE, MatNativeDateModule, } from '@angular/material/core';
|
|
3
3
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
4
4
|
import { ButtonComponent } from '../button/button.component';
|
|
5
5
|
import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/core';
|
|
6
6
|
import { iconoirCalendar } from '@ng-icons/iconoir';
|
|
7
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/material/
|
|
9
|
+
import * as i1 from "@angular/material/core";
|
|
10
|
+
import * as i2 from "@ngx-translate/core";
|
|
11
|
+
import * as i3 from "@angular/material/datepicker";
|
|
9
12
|
export class DatePickerComponent {
|
|
10
|
-
constructor() {
|
|
13
|
+
constructor(dateAdapter, translate) {
|
|
14
|
+
this.dateAdapter = dateAdapter;
|
|
15
|
+
this.translate = translate;
|
|
11
16
|
this.dateChange = new EventEmitter();
|
|
17
|
+
this.dateAdapter.setLocale(this.translate.currentLang);
|
|
12
18
|
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.DateAdapter }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
20
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, providers: [
|
|
15
21
|
provideIcons({ iconoirCalendar }),
|
|
16
22
|
provideNgIconsConfig({
|
|
17
23
|
size: '1.5rem',
|
|
18
24
|
}),
|
|
19
|
-
|
|
25
|
+
{
|
|
26
|
+
provide: MAT_DATE_LOCALE,
|
|
27
|
+
useFactory: (locale) => locale,
|
|
28
|
+
},
|
|
29
|
+
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <input\n class=\"gn-ui-text-input pr-[var(--text-padding)]\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n data-cy=\"date-picker-button\"\n extraClass=\"h-full\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-datepicker #picker></mat-datepicker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
30
|
}
|
|
21
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
22
32
|
type: Component,
|
|
@@ -30,10 +40,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30
40
|
provideNgIconsConfig({
|
|
31
41
|
size: '1.5rem',
|
|
32
42
|
}),
|
|
43
|
+
{
|
|
44
|
+
provide: MAT_DATE_LOCALE,
|
|
45
|
+
useFactory: (locale) => locale,
|
|
46
|
+
},
|
|
33
47
|
], template: "<span class=\"w-full inline-block relative\">\n <input\n class=\"gn-ui-text-input pr-[var(--text-padding)]\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n data-cy=\"date-picker-button\"\n extraClass=\"h-full\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-datepicker #picker></mat-datepicker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"] }]
|
|
34
|
-
}], propDecorators: { date: [{
|
|
48
|
+
}], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.TranslateService }], propDecorators: { date: [{
|
|
35
49
|
type: Input
|
|
36
50
|
}], dateChange: [{
|
|
37
51
|
type: Output
|
|
38
52
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsZUFBZSxFQUNmLG1CQUFtQixHQUNwQixNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUM1RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksRUFDWixvQkFBb0IsR0FDckIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7Ozs7O0FBeUJ0RCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ1UsV0FBOEIsRUFDOUIsU0FBMkI7UUFEM0IsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBSjNCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBTTdDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDeEQsQ0FBQzsrR0FUVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixpSUFYbkI7WUFDVCxZQUFZLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUNqQyxvQkFBb0IsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLFFBQVE7YUFDZixDQUFDO1lBQ0Y7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFVBQVUsRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTTthQUN2QztTQUNGLDBCQzNDSCx5bEJBa0JBLHFRRFdJLG1CQUFtQiw4QkFDbkIsbUJBQW1CLCtUQUNuQixlQUFlLCtIQUNmLGVBQWU7OzRGQWFOLG1CQUFtQjtrQkF2Qi9CLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7cUJBQ2hCLGFBQ1U7d0JBQ1QsWUFBWSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7d0JBQ2pDLG9CQUFvQixDQUFDOzRCQUNuQixJQUFJLEVBQUUsUUFBUTt5QkFDZixDQUFDO3dCQUNGOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixVQUFVLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU07eUJBQ3ZDO3FCQUNGOytHQUdRLElBQUk7c0JBQVosS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgRGF0ZUFkYXB0ZXIsXG4gIE1BVF9EQVRFX0xPQ0FMRSxcbiAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSdcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5pbXBvcnQge1xuICBOZ0ljb25Db21wb25lbnQsXG4gIHByb3ZpZGVJY29ucyxcbiAgcHJvdmlkZU5nSWNvbnNDb25maWcsXG59IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgaWNvbm9pckNhbGVuZGFyIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBOZ0ljb25Db21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVJY29ucyh7IGljb25vaXJDYWxlbmRhciB9KSxcbiAgICBwcm92aWRlTmdJY29uc0NvbmZpZyh7XG4gICAgICBzaXplOiAnMS41cmVtJyxcbiAgICB9KSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsXG4gICAgICB1c2VGYWN0b3J5OiAobG9jYWxlOiBzdHJpbmcpID0+IGxvY2FsZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGF0ZTogRGF0ZVxuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZGF0ZUFkYXB0ZXIuc2V0TG9jYWxlKHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nKVxuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInctZnVsbCBpbmxpbmUtYmxvY2sgcmVsYXRpdmVcIj5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJnbi11aS10ZXh0LWlucHV0IHByLVt2YXIoLS10ZXh0LXBhZGRpbmcpXVwiXG4gICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcbiAgICBbdmFsdWVdPVwiZGF0ZVwiXG4gICAgKGRhdGVDaGFuZ2UpPVwiZGF0ZUNoYW5nZS5lbWl0KCRldmVudC52YWx1ZSlcIlxuICAvPlxuICA8Z24tdWktYnV0dG9uXG4gICAgdHlwZT1cImxpZ2h0XCJcbiAgICBjbGFzcz1cImFic29sdXRlIGluc2V0LXktW3ZhcigtLXNpZGUtcGFkZGluZyldIHJpZ2h0LVt2YXIoLS1zaWRlLXBhZGRpbmcpXSB6LTEwXCJcbiAgICAoYnV0dG9uQ2xpY2spPVwicGlja2VyLm9wZW4oKVwiXG4gICAgZGF0YS1jeT1cImRhdGUtcGlja2VyLWJ1dHRvblwiXG4gICAgZXh0cmFDbGFzcz1cImgtZnVsbFwiXG4gID5cbiAgICA8bmctaWNvbiBuYW1lPVwiaWNvbm9pckNhbGVuZGFyXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj48L25nLWljb24+XG4gIDwvZ24tdWktYnV0dG9uPlxuPC9zcGFuPlxuPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiJdfQ==
|
package/esm2022/libs/ui/inputs/src/lib/date-range-dropdown/date-range-dropdown.component.mjs
CHANGED
|
@@ -32,7 +32,7 @@ export class DateRangeDropdownComponent {
|
|
|
32
32
|
matExpandMore,
|
|
33
33
|
matExpandLess,
|
|
34
34
|
}),
|
|
35
|
-
], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host
|
|
35
|
+
], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host{.mat-date-range-input-container{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }] }); }
|
|
36
36
|
}
|
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDropdownComponent, decorators: [{
|
|
38
38
|
type: Component,
|
|
@@ -47,7 +47,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
47
47
|
matExpandMore,
|
|
48
48
|
matExpandLess,
|
|
49
49
|
}),
|
|
50
|
-
], template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host
|
|
50
|
+
], template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host{.mat-date-range-input-container{display:none}}\n"] }]
|
|
51
51
|
}], ctorParameters: () => [{ type: i1.OverlayContainer }, { type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
52
52
|
type: Input
|
|
53
53
|
}], startDate: [{
|
|
@@ -62,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
62
62
|
type: ViewChild,
|
|
63
63
|
args: ['picker']
|
|
64
64
|
}] } });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2RhdGUtcmFuZ2UtZHJvcGRvd24vZGF0ZS1yYW5nZS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2RhdGUtcmFuZ2UtZHJvcGRvd24vZGF0ZS1yYW5nZS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7O0FBcUJoRixNQUFNLE9BQU8sMEJBQTBCO0lBVXJDLFlBQ1UsZ0JBQWtDLEVBQ2xDLEdBQXNCO1FBRHRCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFSdEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQzFDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUdsRCxzQkFBaUIsR0FBRyxLQUFLLENBQUE7SUFLdEIsQ0FBQztJQUVKLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUE7UUFDM0UsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQix1QkFBdUIsQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsS0FBSyxJQUFJLENBQUE7UUFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUMxQixDQUFDOytHQXhCVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixpT0FUMUI7WUFDVCxZQUFZLENBQUM7Z0JBQ1gsYUFBYTtnQkFDYixhQUFhO2FBQ2QsQ0FBQztTQUNILDRIQ2pDSCxnNEJBOEJBLCtHRFJJLFlBQVksK0JBQ1osZUFBZSw0R0FDZixtQkFBbUIsOEJBQ25CLG1CQUFtQixrbkJBQ25CLGVBQWU7OzRGQVdOLDBCQUEwQjtrQkFuQnRDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGVBQWU7cUJBQ2hCLGFBQ1U7d0JBQ1QsWUFBWSxDQUFDOzRCQUNYLGFBQWE7NEJBQ2IsYUFBYTt5QkFDZCxDQUFDO3FCQUNIO3FIQUtRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRWMsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBNYXROYXRpdmVEYXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSdcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknXG5pbXBvcnQgeyBOZ0ljb25Db21wb25lbnQsIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgbWF0RXhwYW5kTGVzcywgbWF0RXhwYW5kTW9yZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9iYXNlbGluZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZGF0ZS1yYW5nZS1kcm9wZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVJY29ucyh7XG4gICAgICBtYXRFeHBhbmRNb3JlLFxuICAgICAgbWF0RXhwYW5kTGVzcyxcbiAgICB9KSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkIHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZ1xuICBASW5wdXQoKSBzdGFydERhdGU6IERhdGVcbiAgQElucHV0KCkgZW5kRGF0ZTogRGF0ZVxuICBAT3V0cHV0KCkgc3RhcnREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG4gIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG5cbiAgQFZpZXdDaGlsZCgncGlja2VyJykgcGlja2VyOiBFbGVtZW50UmVmXG4gIGlzUGlja2VyRGlzcGxheWVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXlDb250YWluZXI6IE92ZXJsYXlDb250YWluZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5jaGVja1BpY2tlck92ZXJsYXkoKVxuICB9XG5cbiAgY2hlY2tQaWNrZXJPdmVybGF5KCkge1xuICAgIGNvbnN0IG92ZXJsYXlDb250YWluZXJFbGVtZW50ID0gdGhpcy5vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKVxuICAgIHRoaXMuaXNQaWNrZXJEaXNwbGF5ZWQgPVxuICAgICAgb3ZlcmxheUNvbnRhaW5lckVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQnKSAhPT0gbnVsbFxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG59XG4iLCI8Z24tdWktYnV0dG9uXG4gIHR5cGU9XCJvdXRsaW5lXCJcbiAgZXh0cmFDbGFzcz1cImJnLWJhY2tncm91bmQgdy1mdWxsICFwLVs4cHhdICFwbC1bMTZweF1cIlxuICAoYnV0dG9uQ2xpY2spPVwicGlja2VyLm9wZW4oKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJncm93IGZsZXggaXRlbXMtY2VudGVyIG1yLTIgZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtbGVmdCBmb250LW1lZGl1bSB0cnVuY2F0ZSBweS0xXCI+XG4gICAgICB7eyB0aXRsZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWljb25cbiAgICBbbmFtZV09XCJpc1BpY2tlckRpc3BsYXllZCA/ICdtYXRFeHBhbmRMZXNzJyA6ICdtYXRFeHBhbmRNb3JlJ1wiXG4gICAgY2xhc3M9XCJzaHJpbmstMCBvcGFjaXR5LTQwXCJcbiAgPlxuICA8L25nLWljb24+XG48L2duLXVpLWJ1dHRvbj5cbjwhLS1kYXRlIHJhbmdlIGlucHV0IGlzIGp1c3QgcHJlc2VudCBmb3Igb3V0cHV0IGV2ZW50cyBhbmQgaGlkZGVuIGZyb20gdGhlIERPTS0tPlxuPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIj5cbiAgPGlucHV0XG4gICAgbWF0U3RhcnREYXRlXG4gICAgW3ZhbHVlXT1cInN0YXJ0RGF0ZVwiXG4gICAgKGRhdGVJbnB1dCk9XCJzdGFydERhdGVDaGFuZ2UuZW1pdCgkZXZlbnQudmFsdWUpXCJcbiAgLz5cbiAgPGlucHV0XG4gICAgbWF0RW5kRGF0ZVxuICAgIFt2YWx1ZV09XCJlbmREYXRlXCJcbiAgICAoZGF0ZUlucHV0KT1cImVuZERhdGVDaGFuZ2UuZW1pdCgkZXZlbnQudmFsdWUpXCJcbiAgLz5cbjwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG48bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZS1yYW5nZS1waWNrZXI+XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { DatePickerComponent } from '../date-picker/date-picker.component';
|
|
3
|
+
import { TranslateDirective } from '@ngx-translate/core';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class DateRangeInputsComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.temporalExtentChange = new EventEmitter();
|
|
9
|
+
}
|
|
10
|
+
onStartDateChange(date) {
|
|
11
|
+
this.temporalExtent = {
|
|
12
|
+
...this.temporalExtent,
|
|
13
|
+
start: date,
|
|
14
|
+
};
|
|
15
|
+
this.temporalExtentChange.emit(this.temporalExtent);
|
|
16
|
+
}
|
|
17
|
+
onEndDateChange(date) {
|
|
18
|
+
this.temporalExtent = {
|
|
19
|
+
...this.temporalExtent,
|
|
20
|
+
end: date,
|
|
21
|
+
};
|
|
22
|
+
this.temporalExtentChange.emit(this.temporalExtent);
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeInputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeInputsComponent, isStandalone: true, selector: "gn-ui-date-range-inputs", inputs: { temporalExtent: "temporalExtent" }, outputs: { temporalExtentChange: "temporalExtentChange" }, ngImport: i0, template: "<div class=\"m-8\">\n <p class=\"mb-4\" translate>daterange.filter.period</p>\n <p translate>daterange.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"temporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n ></gn-ui-date-picker>\n <p class=\"mt-4\" translate>daterange.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"temporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n ></gn-ui-date-picker>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeInputsComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'gn-ui-date-range-inputs', standalone: true, imports: [CommonModule, TranslateDirective, DatePickerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-8\">\n <p class=\"mb-4\" translate>daterange.filter.period</p>\n <p translate>daterange.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"temporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n ></gn-ui-date-picker>\n <p class=\"mt-4\" translate>daterange.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"temporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n ></gn-ui-date-picker>\n</div>\n" }]
|
|
30
|
+
}], propDecorators: { temporalExtent: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], temporalExtentChange: [{
|
|
33
|
+
type: Output
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1pbnB1dHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjL2xpYi9kYXRlLXJhbmdlLWlucHV0cy9kYXRlLXJhbmdlLWlucHV0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2RhdGUtcmFuZ2UtaW5wdXRzL2RhdGUtcmFuZ2UtaW5wdXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRTFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7QUFVOUMsTUFBTSxPQUFPLHdCQUF3QjtJQVJyQztRQVVZLHlCQUFvQixHQUM1QixJQUFJLFlBQVksRUFBZ0MsQ0FBQTtLQWlCbkQ7SUFmQyxpQkFBaUIsQ0FBQyxJQUFVO1FBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsR0FBRyxJQUFJLENBQUMsY0FBYztZQUN0QixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUE7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVU7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixHQUFHLElBQUksQ0FBQyxjQUFjO1lBQ3RCLEdBQUcsRUFBRSxJQUFJO1NBQ1YsQ0FBQTtRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3JELENBQUM7K0dBbkJVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDRMQ3BCckMsMmZBZUEseUREQVksWUFBWSwrQkFBRSxrQkFBa0Isa0hBQUUsbUJBQW1COzs0RkFLcEQsd0JBQXdCO2tCQVJwQyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsbUJBRy9DLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGFzZXRUZW1wb3JhbEV4dGVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZC9tZXRhZGF0YS5tb2RlbCdcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWRhdGUtcmFuZ2UtaW5wdXRzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlRGlyZWN0aXZlLCBEYXRlUGlja2VyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtaW5wdXRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UtaW5wdXRzLmNvbXBvbmVudC5jc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlSW5wdXRzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGVtcG9yYWxFeHRlbnQ6IERhdGFzZXRUZW1wb3JhbEV4dGVudCB8IG51bGxcbiAgQE91dHB1dCgpIHRlbXBvcmFsRXh0ZW50Q2hhbmdlID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPERhdGFzZXRUZW1wb3JhbEV4dGVudCB8IG51bGw+KClcblxuICBvblN0YXJ0RGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy50ZW1wb3JhbEV4dGVudCA9IHtcbiAgICAgIC4uLnRoaXMudGVtcG9yYWxFeHRlbnQsXG4gICAgICBzdGFydDogZGF0ZSxcbiAgICB9XG4gICAgdGhpcy50ZW1wb3JhbEV4dGVudENoYW5nZS5lbWl0KHRoaXMudGVtcG9yYWxFeHRlbnQpXG4gIH1cblxuICBvbkVuZERhdGVDaGFuZ2UoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMudGVtcG9yYWxFeHRlbnQgPSB7XG4gICAgICAuLi50aGlzLnRlbXBvcmFsRXh0ZW50LFxuICAgICAgZW5kOiBkYXRlLFxuICAgIH1cbiAgICB0aGlzLnRlbXBvcmFsRXh0ZW50Q2hhbmdlLmVtaXQodGhpcy50ZW1wb3JhbEV4dGVudClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm0tOFwiPlxuICA8cCBjbGFzcz1cIm1iLTRcIiB0cmFuc2xhdGU+ZGF0ZXJhbmdlLmZpbHRlci5wZXJpb2Q8L3A+XG4gIDxwIHRyYW5zbGF0ZT5kYXRlcmFuZ2UuZmlsdGVyLmZyb208L3A+XG4gIDxnbi11aS1kYXRlLXBpY2tlclxuICAgIGlkPVwic3RhcnQtZGF0ZS1waWNrZXJcIlxuICAgIFtkYXRlXT1cInRlbXBvcmFsRXh0ZW50Py5zdGFydFwiXG4gICAgKGRhdGVDaGFuZ2UpPVwib25TdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2duLXVpLWRhdGUtcGlja2VyPlxuICA8cCBjbGFzcz1cIm10LTRcIiB0cmFuc2xhdGU+ZGF0ZXJhbmdlLmZpbHRlci50bzwvcD5cbiAgPGduLXVpLWRhdGUtcGlja2VyXG4gICAgaWQ9XCJlbmQtZGF0ZS1waWNrZXJcIlxuICAgIFtkYXRlXT1cInRlbXBvcmFsRXh0ZW50Py5lbmRcIlxuICAgIChkYXRlQ2hhbmdlKT1cIm9uRW5kRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgPjwvZ24tdWktZGF0ZS1waWNrZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hYmxlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYy9saWIvcGFnaW5hYmxlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIGZvciBjb21wb25lbnRzIHRoYXQgd2FudCB0byBvZmZlciBwYWdpbmF0aW9uXG4gKiBOb3RlOiBwYWdlcyBpbmRleGVzIGFyZSAxLWJhc2VkISEgc28gYGlzTGFzdFBhZ2VgIG1lYW5zIGBjdXJyZW50UGFnZSA9PT0gcGFnZXNDb3VudGBcbiAqIGFuZCBgaXNGaXJzdFBhZ2VgIG1lYW5zIGBjdXJyZW50UGFnZSA9PT0gMWBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmFibGUge1xuICBpc0ZpcnN0UGFnZTogYm9vbGVhblxuICBpc0xhc3RQYWdlOiBib29sZWFuXG4gIHBhZ2VzQ291bnQ/OiBudW1iZXJcbiAgY3VycmVudFBhZ2U/OiBudW1iZXJcbiAgZ29Ub1BhZ2U/KGluZGV4OiBudW1iZXIpOiB2b2lkXG4gIGdvVG9OZXh0UGFnZSgpOiB2b2lkXG4gIGdvVG9QcmV2UGFnZSgpOiB2b2lkXG59XG4iXX0=
|
package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs
CHANGED
|
@@ -2,25 +2,33 @@ import { Component, Input } from '@angular/core';
|
|
|
2
2
|
import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/core';
|
|
3
3
|
import { matArrowBackIos, matArrowForwardIos, } from '@ng-icons/material-icons/baseline';
|
|
4
4
|
import { ButtonComponent } from '../../../../../../libs/ui/inputs/src';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import { TranslateDirective } from '@ngx-translate/core';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
6
9
|
export class PreviousNextButtonsComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.displayLabels = false;
|
|
12
|
+
}
|
|
7
13
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { listComponent: "listComponent" }, providers: [
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { listComponent: "listComponent", displayLabels: "displayLabels" }, providers: [
|
|
9
15
|
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
10
16
|
provideNgIconsConfig({
|
|
11
17
|
size: '0.875em',
|
|
12
18
|
}),
|
|
13
|
-
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
19
|
+
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n <span *ngIf=\"displayLabels\" class=\"ml-2\" translate\n >pagination.previousPage</span\n >\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <span *ngIf=\"displayLabels\" class=\"mr-2\" translate\n >pagination.nextPage</span\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
14
20
|
}
|
|
15
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
16
22
|
type: Component,
|
|
17
|
-
args: [{ selector: 'gn-ui-previous-next-buttons', standalone: true, imports: [ButtonComponent, NgIconComponent], providers: [
|
|
23
|
+
args: [{ selector: 'gn-ui-previous-next-buttons', standalone: true, imports: [CommonModule, ButtonComponent, NgIconComponent, TranslateDirective], providers: [
|
|
18
24
|
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
19
25
|
provideNgIconsConfig({
|
|
20
26
|
size: '0.875em',
|
|
21
27
|
}),
|
|
22
|
-
], template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
28
|
+
], template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n <span *ngIf=\"displayLabels\" class=\"ml-2\" translate\n >pagination.previousPage</span\n >\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <span *ngIf=\"displayLabels\" class=\"mr-2\" translate\n >pagination.nextPage</span\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
23
29
|
}], propDecorators: { listComponent: [{
|
|
24
30
|
type: Input
|
|
31
|
+
}], displayLabels: [{
|
|
32
|
+
type: Input
|
|
25
33
|
}] } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlvdXMtbmV4dC1idXR0b25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYy9saWIvcHJldmlvdXMtbmV4dC1idXR0b25zL3ByZXZpb3VzLW5leHQtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMvbGliL3ByZXZpb3VzLW5leHQtYnV0dG9ucy9wcmV2aW91cy1uZXh0LWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBQ1osb0JBQW9CLEdBQ3JCLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUNMLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxtQ0FBbUMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7QUFleEQsTUFBTSxPQUFPLDRCQUE0QjtJQWJ6QztRQWVXLGtCQUFhLEdBQUcsS0FBSyxDQUFBO0tBQy9COytHQUhZLDRCQUE0QjttR0FBNUIsNEJBQTRCLHNKQVA1QjtZQUNULFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JELG9CQUFvQixDQUFDO2dCQUNuQixJQUFJLEVBQUUsU0FBUzthQUNoQixDQUFDO1NBQ0gsMEJDMUJILDJwQ0FvQ0EsZ0xEaEJZLFlBQVksbUlBQUUsZUFBZSwrSEFBRSxlQUFlLDZHQUFFLGtCQUFrQjs7NEZBUWpFLDRCQUE0QjtrQkFieEMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUMsYUFDbEU7d0JBQ1QsWUFBWSxDQUFDLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLENBQUM7d0JBQ3JELG9CQUFvQixDQUFDOzRCQUNuQixJQUFJLEVBQUUsU0FBUzt5QkFDaEIsQ0FBQztxQkFDSDs4QkFHUSxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIE5nSWNvbkNvbXBvbmVudCxcbiAgcHJvdmlkZUljb25zLFxuICBwcm92aWRlTmdJY29uc0NvbmZpZyxcbn0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQge1xuICBtYXRBcnJvd0JhY2tJb3MsXG4gIG1hdEFycm93Rm9yd2FyZElvcyxcbn0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuaW1wb3J0IHsgUGFnaW5hYmxlIH0gZnJvbSAnLi4vcGFnaW5hYmxlLmludGVyZmFjZSdcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXByZXZpb3VzLW5leHQtYnV0dG9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmV2aW91cy1uZXh0LWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aW91cy1uZXh0LWJ1dHRvbnMuY29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIE5nSWNvbkNvbXBvbmVudCwgVHJhbnNsYXRlRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHsgbWF0QXJyb3dCYWNrSW9zLCBtYXRBcnJvd0ZvcndhcmRJb3MgfSksXG4gICAgcHJvdmlkZU5nSWNvbnNDb25maWcoe1xuICAgICAgc2l6ZTogJzAuODc1ZW0nLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aW91c05leHRCdXR0b25zQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbGlzdENvbXBvbmVudDogUGFnaW5hYmxlXG4gIEBJbnB1dCgpIGRpc3BsYXlMYWJlbHMgPSBmYWxzZVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLXgtMSBpdGVtcy1jZW50ZXJcIj5cbiAgPGduLXVpLWJ1dHRvblxuICAgIGRhdGEtdGVzdD1cInByZXZpb3VzQnV0dG9uXCJcbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIFtleHRyYUNsYXNzXT1cIlxuICAgICAgJ3ctYXV0byBtaW4tdy0xMCBoLTggcHgtMiBweS0xIHJvdW5kZWQtbGcgJyArXG4gICAgICAoIWxpc3RDb21wb25lbnQuaXNGaXJzdFBhZ2VcbiAgICAgICAgPyAnYm9yZGVyIGJvcmRlci1ncmF5LTMwMCB0ZXh0LW1haW4nXG4gICAgICAgIDogJ2JvcmRlciBib3JkZXItZ3JheS0xMDAgdGV4dC1ncmF5LTMwMCcpXG4gICAgXCJcbiAgICBbZGlzYWJsZWRdPVwibGlzdENvbXBvbmVudC5pc0ZpcnN0UGFnZVwiXG4gICAgKGJ1dHRvbkNsaWNrKT1cImxpc3RDb21wb25lbnQuZ29Ub1ByZXZQYWdlKClcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cIm1hdEFycm93QmFja0lvc1wiPjwvbmctaWNvbj5cbiAgICA8c3BhbiAqbmdJZj1cImRpc3BsYXlMYWJlbHNcIiBjbGFzcz1cIm1sLTJcIiB0cmFuc2xhdGVcbiAgICAgID5wYWdpbmF0aW9uLnByZXZpb3VzUGFnZTwvc3BhblxuICAgID5cbiAgPC9nbi11aS1idXR0b24+XG4gIDxnbi11aS1idXR0b25cbiAgICBkYXRhLXRlc3Q9XCJuZXh0QnV0dG9uXCJcbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIFtleHRyYUNsYXNzXT1cIlxuICAgICAgJ3ctYXV0byBtaW4tdy0xMCBoLTggcHgtMiBweS0xIHJvdW5kZWQtbGcgJyArXG4gICAgICAoIWxpc3RDb21wb25lbnQuaXNMYXN0UGFnZVxuICAgICAgICA/ICdib3JkZXIgYm9yZGVyLWdyYXktMzAwIHRleHQtbWFpbidcbiAgICAgICAgOiAnYm9yZGVyIGJvcmRlci1ncmF5LTEwMCB0ZXh0LWdyYXktMzAwJylcbiAgICBcIlxuICAgIFtkaXNhYmxlZF09XCJsaXN0Q29tcG9uZW50LmlzTGFzdFBhZ2VcIlxuICAgIChidXR0b25DbGljayk9XCJsaXN0Q29tcG9uZW50LmdvVG9OZXh0UGFnZSgpXCJcbiAgPlxuICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheUxhYmVsc1wiIGNsYXNzPVwibXItMlwiIHRyYW5zbGF0ZVxuICAgICAgPnBhZ2luYXRpb24ubmV4dFBhZ2U8L3NwYW5cbiAgICA+XG4gICAgPG5nLWljb24gbmFtZT1cIm1hdEFycm93Rm9yd2FyZElvc1wiPjwvbmctaWNvbj5cbiAgPC9nbi11aS1idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, Input, Output, ViewChild, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EventEmitter, Inject, inject, Input, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
import { fromEvent, merge, of, timer } from 'rxjs';
|
|
3
3
|
import { delay, map, startWith, switchMap } from 'rxjs/operators';
|
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
5
|
import { CommonModule } from '@angular/common';
|
|
5
6
|
import { TranslateDirective } from '@ngx-translate/core';
|
|
6
|
-
import { computeMapContextDiff, FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, } from '@geospatial-sdk/core';
|
|
7
|
+
import { computeMapContextDiff, FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, MapExtentChangeEventType, SourceLoadErrorType, } from '@geospatial-sdk/core';
|
|
7
8
|
import { applyContextDiffToMap, createMapFromContext, listen, } from '@geospatial-sdk/openlayers';
|
|
8
9
|
import { BASEMAP_LAYERS, DO_NOT_USE_DEFAULT_BASEMAP, MAP_VIEW_CONSTRAINTS, } from './map-settings.token';
|
|
9
10
|
import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/core';
|
|
10
11
|
import { matSwipeOutline } from '@ng-icons/material-icons/outline';
|
|
12
|
+
import { transformExtent } from 'ol/proj';
|
|
11
13
|
import * as i0 from "@angular/core";
|
|
12
14
|
import * as i1 from "@angular/common";
|
|
13
15
|
const DEFAULT_BASEMAP_LAYER = {
|
|
@@ -22,8 +24,8 @@ const DEFAULT_VIEW = {
|
|
|
22
24
|
export class MapContainerComponent {
|
|
23
25
|
get featuresClick() {
|
|
24
26
|
if (!this._featuresClick) {
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
+
this.setupEventListener(FeaturesClickEventType, (event) => {
|
|
28
|
+
this._featuresClick.emit(event.features);
|
|
27
29
|
});
|
|
28
30
|
this._featuresClick = new EventEmitter();
|
|
29
31
|
}
|
|
@@ -31,8 +33,8 @@ export class MapContainerComponent {
|
|
|
31
33
|
}
|
|
32
34
|
get featuresHover() {
|
|
33
35
|
if (!this._featuresHover) {
|
|
34
|
-
this.
|
|
35
|
-
|
|
36
|
+
this.setupEventListener(FeaturesHoverEventType, (event) => {
|
|
37
|
+
this._featuresHover.emit(event.features);
|
|
36
38
|
});
|
|
37
39
|
this._featuresHover = new EventEmitter();
|
|
38
40
|
}
|
|
@@ -40,22 +42,37 @@ export class MapContainerComponent {
|
|
|
40
42
|
}
|
|
41
43
|
get mapClick() {
|
|
42
44
|
if (!this._mapClick) {
|
|
43
|
-
this.
|
|
44
|
-
|
|
45
|
+
this.setupEventListener(MapClickEventType, (event) => {
|
|
46
|
+
this._mapClick.emit(event.coordinate);
|
|
45
47
|
});
|
|
46
48
|
this._mapClick = new EventEmitter();
|
|
47
49
|
}
|
|
48
50
|
return this._mapClick;
|
|
49
51
|
}
|
|
52
|
+
get extentChange() {
|
|
53
|
+
if (!this._extentChange) {
|
|
54
|
+
this.setupEventListener(MapExtentChangeEventType, (event) => {
|
|
55
|
+
this._extentChange.emit(event.extent);
|
|
56
|
+
});
|
|
57
|
+
this._extentChange = new EventEmitter();
|
|
58
|
+
}
|
|
59
|
+
return this._extentChange;
|
|
60
|
+
}
|
|
50
61
|
get sourceLoadError() {
|
|
51
62
|
if (!this._sourceLoadError) {
|
|
52
|
-
this.
|
|
53
|
-
|
|
63
|
+
this.setupEventListener(SourceLoadErrorType, (event) => {
|
|
64
|
+
this._sourceLoadError.emit(event);
|
|
54
65
|
});
|
|
55
66
|
this._sourceLoadError = new EventEmitter();
|
|
56
67
|
}
|
|
57
68
|
return this._sourceLoadError;
|
|
58
69
|
}
|
|
70
|
+
get resolvedExtentChange() {
|
|
71
|
+
if (!this._resolvedExtentChange) {
|
|
72
|
+
this._resolvedExtentChange = new EventEmitter();
|
|
73
|
+
}
|
|
74
|
+
return this._resolvedExtentChange;
|
|
75
|
+
}
|
|
59
76
|
constructor(doNotUseDefaultBasemap, basemapLayers, mapViewConstraints) {
|
|
60
77
|
this.doNotUseDefaultBasemap = doNotUseDefaultBasemap;
|
|
61
78
|
this.basemapLayers = basemapLayers;
|
|
@@ -63,31 +80,59 @@ export class MapContainerComponent {
|
|
|
63
80
|
this.openlayersMap = new Promise((resolve) => {
|
|
64
81
|
this.olMapResolver = resolve;
|
|
65
82
|
});
|
|
83
|
+
// These events only get registered on the map if they are used
|
|
84
|
+
this._featuresClick = null;
|
|
85
|
+
this._featuresHover = null;
|
|
86
|
+
this._mapClick = null;
|
|
87
|
+
this._extentChange = null;
|
|
88
|
+
this._sourceLoadError = null;
|
|
89
|
+
this._resolvedExtentChange = null;
|
|
90
|
+
this.destroyRef = inject(DestroyRef);
|
|
91
|
+
}
|
|
92
|
+
calculateCurrentMapExtent() {
|
|
93
|
+
const extent = this.olMap.getView().calculateExtent(this.olMap.getSize());
|
|
94
|
+
const reprojectedExtent = transformExtent(extent, this.olMap.getView().getProjection(), 'EPSG:4326');
|
|
95
|
+
return reprojectedExtent;
|
|
66
96
|
}
|
|
67
97
|
async ngAfterViewInit() {
|
|
68
98
|
this.olMap = await createMapFromContext(this.processContext(this.context), this.container.nativeElement);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
99
|
+
if (this._resolvedExtentChange) {
|
|
100
|
+
this._resolvedExtentChange.emit(this.calculateCurrentMapExtent());
|
|
101
|
+
}
|
|
102
|
+
this.setupDisplayMessageObservable();
|
|
72
103
|
this.olMapResolver(this.olMap);
|
|
73
104
|
}
|
|
74
105
|
async ngOnChanges(changes) {
|
|
75
106
|
if ('context' in changes && !changes['context'].isFirstChange()) {
|
|
76
107
|
const diff = computeMapContextDiff(this.processContext(changes['context'].currentValue), this.processContext(changes['context'].previousValue));
|
|
77
108
|
await applyContextDiffToMap(this.olMap, diff);
|
|
109
|
+
if (this._resolvedExtentChange && diff.viewChanges) {
|
|
110
|
+
this._resolvedExtentChange.emit(this.calculateCurrentMapExtent());
|
|
111
|
+
}
|
|
78
112
|
}
|
|
79
113
|
}
|
|
80
|
-
|
|
114
|
+
setupEventListener(eventType, handler) {
|
|
115
|
+
this.openlayersMap.then((olMap) => {
|
|
116
|
+
listen(olMap, eventType, handler);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
setupDisplayMessageObservable() {
|
|
120
|
+
this.displayMessage$ = merge(fromEvent(this.olMap, 'mapmuted').pipe(map(() => true)), fromEvent(this.olMap, 'movestart').pipe(map(() => false)), fromEvent(this.olMap, 'singleclick').pipe(map(() => false))).pipe(switchMap((muted) => muted
|
|
121
|
+
? timer(2000).pipe(map(() => false), startWith(true), delay(400))
|
|
122
|
+
: of(false)), takeUntilDestroyed(this.destroyRef));
|
|
123
|
+
}
|
|
81
124
|
processContext(context) {
|
|
82
125
|
const processed = context
|
|
83
126
|
? { ...context, view: context.view ?? DEFAULT_VIEW }
|
|
84
127
|
: { layers: [], view: DEFAULT_VIEW };
|
|
128
|
+
// Prepend with default basemap and basemap layers
|
|
85
129
|
if (this.basemapLayers.length) {
|
|
86
130
|
processed.layers = [...this.basemapLayers, ...processed.layers];
|
|
87
131
|
}
|
|
88
132
|
if (!this.doNotUseDefaultBasemap) {
|
|
89
133
|
processed.layers = [DEFAULT_BASEMAP_LAYER, ...processed.layers];
|
|
90
134
|
}
|
|
135
|
+
// Apply view constraints
|
|
91
136
|
if (this.mapViewConstraints.maxZoom) {
|
|
92
137
|
processed.view = {
|
|
93
138
|
maxZoom: this.mapViewConstraints.maxZoom,
|
|
@@ -101,27 +146,32 @@ export class MapContainerComponent {
|
|
|
101
146
|
};
|
|
102
147
|
}
|
|
103
148
|
if (processed.view &&
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
149
|
+
'zoom' in processed.view &&
|
|
150
|
+
'center' in processed.view) {
|
|
151
|
+
return processed;
|
|
152
|
+
}
|
|
153
|
+
if (processed.view && 'extent' in processed.view) {
|
|
154
|
+
return processed;
|
|
155
|
+
}
|
|
156
|
+
// Ensure valid view
|
|
157
|
+
if (this.mapViewConstraints.maxExtent) {
|
|
158
|
+
processed.view = {
|
|
159
|
+
extent: this.mapViewConstraints.maxExtent,
|
|
160
|
+
...processed.view,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
processed.view = { ...DEFAULT_VIEW, ...processed.view };
|
|
115
165
|
}
|
|
116
166
|
return processed;
|
|
117
167
|
}
|
|
118
168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, deps: [{ token: DO_NOT_USE_DEFAULT_BASEMAP }, { token: BASEMAP_LAYERS }, { token: MAP_VIEW_CONSTRAINTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", sourceLoadError: "sourceLoadError" }, providers: [
|
|
169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapContainerComponent, isStandalone: true, selector: "gn-ui-map-container", inputs: { context: "context" }, outputs: { featuresClick: "featuresClick", featuresHover: "featuresHover", mapClick: "mapClick", extentChange: "extentChange", sourceLoadError: "sourceLoadError", resolvedExtentChange: "resolvedExtentChange" }, providers: [
|
|
120
170
|
provideIcons({ matSwipeOutline }),
|
|
121
171
|
provideNgIconsConfig({
|
|
122
172
|
size: '1.5em',
|
|
123
173
|
}),
|
|
124
|
-
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></
|
|
174
|
+
], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative h-full w-full\" #map>\n <ng-content></ng-content>\n <div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n >\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
125
175
|
}
|
|
126
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
|
|
127
177
|
type: Component,
|
|
@@ -130,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
130
180
|
provideNgIconsConfig({
|
|
131
181
|
size: '1.5em',
|
|
132
182
|
}),
|
|
133
|
-
], template: "<div class=\"h-full w-full\" #map></
|
|
183
|
+
], template: "<div class=\"relative h-full w-full\" #map>\n <ng-content></ng-content>\n <div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n >\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n </div>\n</div>\n" }]
|
|
134
184
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
135
185
|
type: Inject,
|
|
136
186
|
args: [DO_NOT_USE_DEFAULT_BASEMAP]
|
|
@@ -142,16 +192,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
142
192
|
args: [MAP_VIEW_CONSTRAINTS]
|
|
143
193
|
}] }], propDecorators: { context: [{
|
|
144
194
|
type: Input
|
|
195
|
+
}], container: [{
|
|
196
|
+
type: ViewChild,
|
|
197
|
+
args: ['map']
|
|
145
198
|
}], featuresClick: [{
|
|
146
199
|
type: Output
|
|
147
200
|
}], featuresHover: [{
|
|
148
201
|
type: Output
|
|
149
202
|
}], mapClick: [{
|
|
150
203
|
type: Output
|
|
204
|
+
}], extentChange: [{
|
|
205
|
+
type: Output
|
|
151
206
|
}], sourceLoadError: [{
|
|
152
207
|
type: Output
|
|
153
|
-
}],
|
|
154
|
-
type:
|
|
155
|
-
args: ['map']
|
|
208
|
+
}], resolvedExtentChange: [{
|
|
209
|
+
type: Output
|
|
156
210
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL21hcC9zcmMvbGliL2NvbXBvbmVudHMvbWFwLWNvbnRhaW5lci9tYXAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYy9saWIvY29tcG9uZW50cy9tYXAtY29udGFpbmVyL21hcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3hELE9BQU8sRUFDTCxxQkFBcUIsRUFHckIsc0JBQXNCLEVBRXRCLHNCQUFzQixFQUV0QixpQkFBaUIsRUFNakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsTUFBTSxHQUNQLE1BQU0sNEJBQTRCLENBQUE7QUFHbkMsT0FBTyxFQUNMLGNBQWMsRUFDZCwwQkFBMEIsRUFDMUIsb0JBQW9CLEdBQ3JCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUNM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QUFJLEVBQUUsT0FBTzthQUNkLENBQUM7U0FDSCxpSkMzRUgsMGpCQWdCQSx5RERxRFksWUFBWSxrTEFBRSxrQkFBa0Isa0hBQUUsZUFBZTs7NEZBUWhELHFCQUFxQjtrQkFkakMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGFBQ2pEO3dCQUNULFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDO3dCQUNqQyxvQkFBb0IsQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLE9BQU87eUJBQ2QsQ0FBQztxQkFDSDs7MEJBa0VFLE1BQU07MkJBQUMsMEJBQTBCOzswQkFDakMsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxvQkFBb0I7eUNBakVyQixPQUFPO3NCQUFmLEtBQUs7Z0JBSVEsYUFBYTtzQkFBMUIsTUFBTTtnQkFlTyxhQUFhO3NCQUExQixNQUFNO2dCQWVPLFFBQVE7c0JBQXJCLE1BQU07Z0JBWU8sZUFBZTtzQkFBNUIsTUFBTTtnQkFZVyxTQUFTO3NCQUExQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgdGltZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVsYXksIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBjb21wdXRlTWFwQ29udGV4dERpZmYsXG4gIEV4dGVudCxcbiAgRmVhdHVyZXNDbGlja0V2ZW50LFxuICBGZWF0dXJlc0NsaWNrRXZlbnRUeXBlLFxuICBGZWF0dXJlc0hvdmVyRXZlbnQsXG4gIEZlYXR1cmVzSG92ZXJFdmVudFR5cGUsXG4gIE1hcENsaWNrRXZlbnQsXG4gIE1hcENsaWNrRXZlbnRUeXBlLFxuICBNYXBDb250ZXh0LFxuICBNYXBDb250ZXh0TGF5ZXIsXG4gIE1hcENvbnRleHRMYXllclh5eixcbiAgTWFwQ29udGV4dFZpZXcsXG4gIFNvdXJjZUxvYWRFcnJvckV2ZW50LFxuICBTb3VyY2VMb2FkRXJyb3JUeXBlLFxufSBmcm9tICdAZ2Vvc3BhdGlhbC1zZGsvY29yZSdcbmltcG9ydCB7XG4gIGFwcGx5Q29udGV4dERpZmZUb01hcCxcbiAgY3JlYXRlTWFwRnJvbUNvbnRleHQsXG4gIGxpc3Rlbixcbn0gZnJvbSAnQGdlb3NwYXRpYWwtc2RrL29wZW5sYXllcnMnXG5pbXBvcnQgdHlwZSBPbE1hcCBmcm9tICdvbC9NYXAnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHtcbiAgQkFTRU1BUF9MQVlFUlMsXG4gIERPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQLFxuICBNQVBfVklFV19DT05TVFJBSU5UUyxcbn0gZnJvbSAnLi9tYXAtc2V0dGluZ3MudG9rZW4nXG5pbXBvcnQge1xuICBOZ0ljb25Db21wb25lbnQsXG4gIHByb3ZpZGVJY29ucyxcbiAgcHJvdmlkZU5nSWNvbnNDb25maWcsXG59IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgbWF0U3dpcGVPdXRsaW5lIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL291dGxpbmUnXG5cbmNvbnN0IERFRkFVTFRfQkFTRU1BUF9MQVlFUjogTWFwQ29udGV4dExheWVyWHl6ID0ge1xuICB0eXBlOiAneHl6JyxcbiAgdXJsOiBgaHR0cHM6Ly97YS1jfS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICBhdHRyaWJ1dGlvbnM6IGA8c3Bhbj7CqSA8YSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIj5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMsIMKpIDxhIGhyZWY9XCJodHRwczovL2NhcnRvLmNvbS9cIj5DYXJ0bzwvYT48L3NwYW4+YCxcbn1cblxuY29uc3QgREVGQVVMVF9WSUVXOiBNYXBDb250ZXh0VmlldyA9IHtcbiAgY2VudGVyOiBbMCwgMTVdLFxuICB6b29tOiAyLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1tYXAtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAtY29udGFpbmVyLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZURpcmVjdGl2ZSwgTmdJY29uQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHsgbWF0U3dpcGVPdXRsaW5lIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjVlbScsXG4gICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbnRleHQ6IE1hcENvbnRleHQgfCBudWxsXG5cbiAgLy8gdGhlc2UgZXZlbnRzIG9ubHkgZ2V0IHJlZ2lzdGVyZWQgb24gdGhlIG1hcCBpZiB0aGV5IGFyZSB1c2VkXG4gIF9mZWF0dXJlc0NsaWNrOiBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPlxuICBAT3V0cHV0KCkgZ2V0IGZlYXR1cmVzQ2xpY2soKSB7XG4gICAgaWYgKCF0aGlzLl9mZWF0dXJlc0NsaWNrKSB7XG4gICAgICB0aGlzLm9wZW5sYXllcnNNYXAudGhlbigob2xNYXApID0+IHtcbiAgICAgICAgbGlzdGVuKFxuICAgICAgICAgIG9sTWFwLFxuICAgICAgICAgIEZlYXR1cmVzQ2xpY2tFdmVudFR5cGUsXG4gICAgICAgICAgKHsgZmVhdHVyZXMgfTogRmVhdHVyZXNDbGlja0V2ZW50KSA9PlxuICAgICAgICAgICAgdGhpcy5fZmVhdHVyZXNDbGljay5lbWl0KGZlYXR1cmVzKVxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgdGhpcy5fZmVhdHVyZXNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPigpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mZWF0dXJlc0NsaWNrXG4gIH1cbiAgX2ZlYXR1cmVzSG92ZXI6IEV2ZW50RW1pdHRlcjxGZWF0dXJlW10+XG4gIEBPdXRwdXQoKSBnZXQgZmVhdHVyZXNIb3ZlcigpIHtcbiAgICBpZiAoIXRoaXMuX2ZlYXR1cmVzSG92ZXIpIHtcbiAgICAgIHRoaXMub3BlbmxheWVyc01hcC50aGVuKChvbE1hcCkgPT4ge1xuICAgICAgICBsaXN0ZW4oXG4gICAgICAgICAgb2xNYXAsXG4gICAgICAgICAgRmVhdHVyZXNIb3ZlckV2ZW50VHlwZSxcbiAgICAgICAgICAoeyBmZWF0dXJlcyB9OiBGZWF0dXJlc0hvdmVyRXZlbnQpID0+XG4gICAgICAgICAgICB0aGlzLl9mZWF0dXJlc0hvdmVyLmVtaXQoZmVhdHVyZXMpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgICB0aGlzLl9mZWF0dXJlc0hvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxGZWF0dXJlW10+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ZlYXR1cmVzSG92ZXJcbiAgfVxuICBfbWFwQ2xpY2s6IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXJdPlxuICBAT3V0cHV0KCkgZ2V0IG1hcENsaWNrKCkge1xuICAgIGlmICghdGhpcy5fbWFwQ2xpY2spIHtcbiAgICAgIHRoaXMub3BlbmxheWVyc01hcC50aGVuKChvbE1hcCkgPT4ge1xuICAgICAgICBsaXN0ZW4ob2xNYXAsIE1hcENsaWNrRXZlbnRUeXBlLCAoeyBjb29yZGluYXRlIH06IE1hcENsaWNrRXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5fbWFwQ2xpY2suZW1pdChjb29yZGluYXRlKVxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgdGhpcy5fbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFtudW1iZXIsIG51bWJlcl0+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX21hcENsaWNrXG4gIH1cbiAgX3NvdXJjZUxvYWRFcnJvcjogRXZlbnRFbWl0dGVyPFNvdXJjZUxvYWRFcnJvckV2ZW50PlxuICBAT3V0cHV0KCkgZ2V0IHNvdXJjZUxvYWRFcnJvcigpIHtcbiAgICBpZiAoIXRoaXMuX3NvdXJjZUxvYWRFcnJvcikge1xuICAgICAgdGhpcy5vcGVubGF5ZXJzTWFwLnRoZW4oKG9sTWFwKSA9PiB7XG4gICAgICAgIGxpc3RlbihvbE1hcCwgU291cmNlTG9hZEVycm9yVHlwZSwgKGVycm9yOiBTb3VyY2VMb2FkRXJyb3JFdmVudCkgPT5cbiAgICAgICAgICB0aGlzLl9zb3VyY2VMb2FkRXJyb3IuZW1pdChlcnJvcilcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIHRoaXMuX3NvdXJjZUxvYWRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8U291cmNlTG9hZEVycm9yRXZlbnQ+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZUxvYWRFcnJvclxuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWFwJykgY29udGFpbmVyOiBFbGVtZW50UmVmXG4gIGRpc3BsYXlNZXNzYWdlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICBvbE1hcDogT2xNYXBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQKSBwcml2YXRlIGRvTm90VXNlRGVmYXVsdEJhc2VtYXA6IGJvb2xlYW4sXG4gICAgQEluamVjdChCQVNFTUFQX0xBWUVSUykgcHJpdmF0ZSBiYXNlbWFwTGF5ZXJzOiBNYXBDb250ZXh0TGF5ZXJbXSxcbiAgICBASW5qZWN0KE1BUF9WSUVXX0NPTlNUUkFJTlRTKVxuICAgIHByaXZhdGUgbWFwVmlld0NvbnN0cmFpbnRzOiB7XG4gICAgICBtYXhab29tPzogbnVtYmVyXG4gICAgICBtYXhFeHRlbnQ/OiBFeHRlbnRcbiAgICB9XG4gICkge31cblxuICBwcml2YXRlIG9sTWFwUmVzb2x2ZXJcbiAgb3BlbmxheWVyc01hcCA9IG5ldyBQcm9taXNlPE9sTWFwPigocmVzb2x2ZSkgPT4ge1xuICAgIHRoaXMub2xNYXBSZXNvbHZlciA9IHJlc29sdmVcbiAgfSlcblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5vbE1hcCA9IGF3YWl0IGNyZWF0ZU1hcEZyb21Db250ZXh0KFxuICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dCh0aGlzLmNvbnRleHQpLFxuICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudFxuICAgIClcbiAgICB0aGlzLmRpc3BsYXlNZXNzYWdlJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMub2xNYXAsICdtYXBtdXRlZCcpLnBpcGUobWFwKCgpID0+IHRydWUpKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLm9sTWFwLCAnbW92ZXN0YXJ0JykucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLm9sTWFwLCAnc2luZ2xlY2xpY2snKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChtdXRlZCkgPT5cbiAgICAgICAgbXV0ZWRcbiAgICAgICAgICA/IHRpbWVyKDIwMDApLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiBmYWxzZSksXG4gICAgICAgICAgICAgIHN0YXJ0V2l0aCh0cnVlKSxcbiAgICAgICAgICAgICAgZGVsYXkoNDAwKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogb2YoZmFsc2UpXG4gICAgICApXG4gICAgKVxuICAgIHRoaXMub2xNYXBSZXNvbHZlcih0aGlzLm9sTWFwKVxuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnY29udGV4dCcgaW4gY2hhbmdlcyAmJiAhY2hhbmdlc1snY29udGV4dCddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgY29uc3QgZGlmZiA9IGNvbXB1dGVNYXBDb250ZXh0RGlmZihcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dChjaGFuZ2VzWydjb250ZXh0J10uY3VycmVudFZhbHVlKSxcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dChjaGFuZ2VzWydjb250ZXh0J10ucHJldmlvdXNWYWx1ZSlcbiAgICAgIClcbiAgICAgIGF3YWl0IGFwcGx5Q29udGV4dERpZmZUb01hcCh0aGlzLm9sTWFwLCBkaWZmKVxuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgd2lsbCBhcHBseSBiYXNlbWFwIGxheWVycyAmIHZpZXcgY29uc3RyYWludHNcbiAgcHJvY2Vzc0NvbnRleHQoY29udGV4dDogTWFwQ29udGV4dCk6IE1hcENvbnRleHQge1xuICAgIGNvbnN0IHByb2Nlc3NlZCA9IGNvbnRleHRcbiAgICAgID8geyAuLi5jb250ZXh0LCB2aWV3OiBjb250ZXh0LnZpZXcgPz8gREVGQVVMVF9WSUVXIH1cbiAgICAgIDogeyBsYXllcnM6IFtdLCB2aWV3OiBERUZBVUxUX1ZJRVcgfVxuICAgIGlmICh0aGlzLmJhc2VtYXBMYXllcnMubGVuZ3RoKSB7XG4gICAgICBwcm9jZXNzZWQubGF5ZXJzID0gWy4uLnRoaXMuYmFzZW1hcExheWVycywgLi4ucHJvY2Vzc2VkLmxheWVyc11cbiAgICB9XG4gICAgaWYgKCF0aGlzLmRvTm90VXNlRGVmYXVsdEJhc2VtYXApIHtcbiAgICAgIHByb2Nlc3NlZC5sYXllcnMgPSBbREVGQVVMVF9CQVNFTUFQX0xBWUVSLCAuLi5wcm9jZXNzZWQubGF5ZXJzXVxuICAgIH1cbiAgICBpZiAodGhpcy5tYXBWaWV3Q29uc3RyYWludHMubWF4Wm9vbSkge1xuICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7XG4gICAgICAgIG1heFpvb206IHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heFpvb20sXG4gICAgICAgIC4uLnByb2Nlc3NlZC52aWV3LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5tYXBWaWV3Q29uc3RyYWludHMubWF4RXh0ZW50KSB7XG4gICAgICBwcm9jZXNzZWQudmlldyA9IHtcbiAgICAgICAgbWF4RXh0ZW50OiB0aGlzLm1hcFZpZXdDb25zdHJhaW50cy5tYXhFeHRlbnQsXG4gICAgICAgIC4uLnByb2Nlc3NlZC52aWV3LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcm9jZXNzZWQudmlldyAmJlxuICAgICAgISgnem9vbScgaW4gcHJvY2Vzc2VkLnZpZXcpICYmXG4gICAgICAhKCdjZW50ZXInIGluIHByb2Nlc3NlZC52aWV3KVxuICAgICkge1xuICAgICAgaWYgKHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heEV4dGVudCkge1xuICAgICAgICBwcm9jZXNzZWQudmlldyA9IHtcbiAgICAgICAgICBleHRlbnQ6IHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heEV4dGVudCxcbiAgICAgICAgICAuLi5wcm9jZXNzZWQudmlldyxcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7IC4uLkRFRkFVTFRfVklFVywgLi4ucHJvY2Vzc2VkLnZpZXcgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc2VkXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsXCIgI21hcD48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIHAtMiByb3VuZGVkIHotNDAgdHJhbnNpdGlvbi1hbGwgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdGV4dC1wcmltYXJ5IGZvbnQtc2FucyBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgKGRpc3BsYXlNZXNzYWdlJCB8IGFzeW5jKSA/ICd2aXNpYmxlIG9wYWNpdHktMTAwJyA6ICdpbnZpc2libGUgb3BhY2l0eS0wJ1xuICBcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhYnNvbHV0ZSB6LVstMV0gaW5zZXQtMCBiZy1ncmFkaWVudC10by1iIGZyb20td2hpdGUgdG8tcHJpbWFyeS1saWdodGVzdCBvcGFjaXR5LTYwXCJcbiAgPjwvZGl2PlxuICA8bmctaWNvblxuICAgIGNsYXNzPVwiIXctMTYgIWgtMTYgdGV4dC1bNjRweF0gbWItNFwiXG4gICAgbmFtZT1cIm1hdFN3aXBlT3V0bGluZVwiXG4gID48L25nLWljb24+XG4gIDxwIHRyYW5zbGF0ZT5tYXAubmF2aWdhdGlvbi5tZXNzYWdlPC9wPlxuPC9kaXY+XG4iXX0=
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL21hcC9zcmMvbGliL2NvbXBvbmVudHMvbWFwLWNvbnRhaW5lci9tYXAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYy9saWIvY29tcG9uZW50cy9tYXAtY29udGFpbmVyL21hcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDeEQsT0FBTyxFQUNMLHFCQUFxQixFQUdyQixzQkFBc0IsRUFFdEIsc0JBQXNCLEVBRXRCLGlCQUFpQixFQUVqQix3QkFBd0IsRUFPeEIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsTUFBTSxHQUNQLE1BQU0sNEJBQTRCLENBQUE7QUFHbkMs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QTBCOzswQkFDakMsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxvQkFBb0I7eUNBN0ZyQixPQUFPO3NCQUFmLEtBQUs7Z0JBRVksU0FBUztzQkFBMUIsU0FBUzt1QkFBQyxLQUFLO2dCQW1CRixhQUFhO3NCQUExQixNQUFNO2dCQWFPLGFBQWE7c0JBQTFCLE1BQU07Z0JBYU8sUUFBUTtzQkFBckIsTUFBTTtnQkFVTyxZQUFZO3NCQUF6QixNQUFNO2dCQWFPLGVBQWU7c0JBQTVCLE1BQU07Z0JBYU8sb0JBQW9CO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgdGltZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVsYXksIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7XG4gIGNvbXB1dGVNYXBDb250ZXh0RGlmZixcbiAgRXh0ZW50LFxuICBGZWF0dXJlc0NsaWNrRXZlbnQsXG4gIEZlYXR1cmVzQ2xpY2tFdmVudFR5cGUsXG4gIEZlYXR1cmVzSG92ZXJFdmVudCxcbiAgRmVhdHVyZXNIb3ZlckV2ZW50VHlwZSxcbiAgTWFwQ2xpY2tFdmVudCxcbiAgTWFwQ2xpY2tFdmVudFR5cGUsXG4gIE1hcEV4dGVudENoYW5nZUV2ZW50LFxuICBNYXBFeHRlbnRDaGFuZ2VFdmVudFR5cGUsXG4gIE1hcENvbnRleHQsXG4gIE1hcENvbnRleHRMYXllcixcbiAgTWFwQ29udGV4dExheWVyWHl6LFxuICBNYXBDb250ZXh0VmlldyxcbiAgTWFwRXZlbnRzQnlUeXBlLFxuICBTb3VyY2VMb2FkRXJyb3JFdmVudCxcbiAgU291cmNlTG9hZEVycm9yVHlwZSxcbn0gZnJvbSAnQGdlb3NwYXRpYWwtc2RrL2NvcmUnXG5pbXBvcnQge1xuICBhcHBseUNvbnRleHREaWZmVG9NYXAsXG4gIGNyZWF0ZU1hcEZyb21Db250ZXh0LFxuICBsaXN0ZW4sXG59IGZyb20gJ0BnZW9zcGF0aWFsLXNkay9vcGVubGF5ZXJzJ1xuaW1wb3J0IHR5cGUgT2xNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7XG4gIEJBU0VNQVBfTEFZRVJTLFxuICBET19OT1RfVVNFX0RFRkFVTFRfQkFTRU1BUCxcbiAgTUFQX1ZJRVdfQ09OU1RSQUlOVFMsXG59IGZyb20gJy4vbWFwLXNldHRpbmdzLnRva2VuJ1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IG1hdFN3aXBlT3V0bGluZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9vdXRsaW5lJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRXh0ZW50IH0gZnJvbSAnb2wvcHJvaidcblxuY29uc3QgREVGQVVMVF9CQVNFTUFQX0xBWUVSOiBNYXBDb250ZXh0TGF5ZXJYeXogPSB7XG4gIHR5cGU6ICd4eXonLFxuICB1cmw6IGBodHRwczovL3thLWN9LmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gIGF0dHJpYnV0aW9uczogYDxzcGFuPsKpIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycywgwqkgPGEgaHJlZj1cImh0dHBzOi8vY2FydG8uY29tL1wiPkNhcnRvPC9hPjwvc3Bhbj5gLFxufVxuXG5jb25zdCBERUZBVUxUX1ZJRVc6IE1hcENvbnRleHRWaWV3ID0ge1xuICBjZW50ZXI6IFswLCAxNV0sXG4gIHpvb206IDIsXG59XG5cbmludGVyZmFjZSBNYXBWaWV3Q29uc3RyYWludHMge1xuICBtYXhab29tPzogbnVtYmVyXG4gIG1heEV4dGVudD86IEV4dGVudFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1tYXAtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAtY29udGFpbmVyLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZURpcmVjdGl2ZSwgTmdJY29uQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHsgbWF0U3dpcGVPdXRsaW5lIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjVlbScsXG4gICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbnRleHQ6IE1hcENvbnRleHQgfCBudWxsXG5cbiAgQFZpZXdDaGlsZCgnbWFwJykgY29udGFpbmVyOiBFbGVtZW50UmVmXG5cbiAgcHJpdmF0ZSBvbE1hcDogT2xNYXBcbiAgcHJpdmF0ZSBvbE1hcFJlc29sdmVyOiAodmFsdWU6IE9sTWFwKSA9PiB2b2lkXG4gIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuXG4gIGRpc3BsYXlNZXNzYWdlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICBvcGVubGF5ZXJzTWFwID0gbmV3IFByb21pc2U8T2xNYXA+KChyZXNvbHZlKSA9PiB7XG4gICAgdGhpcy5vbE1hcFJlc29sdmVyID0gcmVzb2x2ZVxuICB9KVxuXG4gIC8vIFRoZXNlIGV2ZW50cyBvbmx5IGdldCByZWdpc3RlcmVkIG9uIHRoZSBtYXAgaWYgdGhleSBhcmUgdXNlZFxuICBfZmVhdHVyZXNDbGljazogRXZlbnRFbWl0dGVyPEZlYXR1cmVbXT4gPSBudWxsXG4gIF9mZWF0dXJlc0hvdmVyOiBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPiA9IG51bGxcbiAgX21hcENsaWNrOiBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyXT4gPSBudWxsXG4gIF9leHRlbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxFeHRlbnQ+ID0gbnVsbFxuICBfc291cmNlTG9hZEVycm9yOiBFdmVudEVtaXR0ZXI8U291cmNlTG9hZEVycm9yRXZlbnQ+ID0gbnVsbFxuICBfcmVzb2x2ZWRFeHRlbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxFeHRlbnQ+ID0gbnVsbFxuXG4gIEBPdXRwdXQoKSBnZXQgZmVhdHVyZXNDbGljaygpIHtcbiAgICBpZiAoIXRoaXMuX2ZlYXR1cmVzQ2xpY2spIHtcbiAgICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVyKFxuICAgICAgICBGZWF0dXJlc0NsaWNrRXZlbnRUeXBlLFxuICAgICAgICAoZXZlbnQ6IEZlYXR1cmVzQ2xpY2tFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2ZlYXR1cmVzQ2xpY2suZW1pdChldmVudC5mZWF0dXJlcylcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgdGhpcy5fZmVhdHVyZXNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPigpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mZWF0dXJlc0NsaWNrXG4gIH1cblxuICBAT3V0cHV0KCkgZ2V0IGZlYXR1cmVzSG92ZXIoKSB7XG4gICAgaWYgKCF0aGlzLl9mZWF0dXJlc0hvdmVyKSB7XG4gICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgRmVhdHVyZXNIb3ZlckV2ZW50VHlwZSxcbiAgICAgICAgKGV2ZW50OiBGZWF0dXJlc0hvdmVyRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9mZWF0dXJlc0hvdmVyLmVtaXQoZXZlbnQuZmVhdHVyZXMpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIHRoaXMuX2ZlYXR1cmVzSG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZlYXR1cmVbXT4oKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZmVhdHVyZXNIb3ZlclxuICB9XG5cbiAgQE91dHB1dCgpIGdldCBtYXBDbGljaygpIHtcbiAgICBpZiAoIXRoaXMuX21hcENsaWNrKSB7XG4gICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcihNYXBDbGlja0V2ZW50VHlwZSwgKGV2ZW50OiBNYXBDbGlja0V2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuX21hcENsaWNrLmVtaXQoZXZlbnQuY29vcmRpbmF0ZSlcbiAgICAgIH0pXG4gICAgICB0aGlzLl9tYXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyXT4oKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbWFwQ2xpY2tcbiAgfVxuXG4gIEBPdXRwdXQoKSBnZXQgZXh0ZW50Q2hhbmdlKCkge1xuICAgIGlmICghdGhpcy5fZXh0ZW50Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgTWFwRXh0ZW50Q2hhbmdlRXZlbnRUeXBlLFxuICAgICAgICAoZXZlbnQ6IE1hcEV4dGVudENoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5fZXh0ZW50Q2hhbmdlLmVtaXQoZXZlbnQuZXh0ZW50IGFzIEV4dGVudClcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgdGhpcy5fZXh0ZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFeHRlbnQ+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2V4dGVudENoYW5nZVxuICB9XG5cbiAgQE91dHB1dCgpIGdldCBzb3VyY2VMb2FkRXJyb3IoKSB7XG4gICAgaWYgKCF0aGlzLl9zb3VyY2VMb2FkRXJyb3IpIHtcbiAgICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVyKFxuICAgICAgICBTb3VyY2VMb2FkRXJyb3JUeXBlLFxuICAgICAgICAoZXZlbnQ6IFNvdXJjZUxvYWRFcnJvckV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5fc291cmNlTG9hZEVycm9yLmVtaXQoZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIHRoaXMuX3NvdXJjZUxvYWRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8U291cmNlTG9hZEVycm9yRXZlbnQ+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZUxvYWRFcnJvclxuICB9XG5cbiAgQE91dHB1dCgpIGdldCByZXNvbHZlZEV4dGVudENoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMuX3Jlc29sdmVkRXh0ZW50Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlZEV4dGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXh0ZW50PigpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZXNvbHZlZEV4dGVudENoYW5nZVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET19OT1RfVVNFX0RFRkFVTFRfQkFTRU1BUCkgcHJpdmF0ZSBkb05vdFVzZURlZmF1bHRCYXNlbWFwOiBib29sZWFuLFxuICAgIEBJbmplY3QoQkFTRU1BUF9MQVlFUlMpIHByaXZhdGUgYmFzZW1hcExheWVyczogTWFwQ29udGV4dExheWVyW10sXG4gICAgQEluamVjdChNQVBfVklFV19DT05TVFJBSU5UUylcbiAgICBwcml2YXRlIG1hcFZpZXdDb25zdHJhaW50czogTWFwVmlld0NvbnN0cmFpbnRzXG4gICkge1xuICAgIHRoaXMuZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKVxuICB9XG5cbiAgY2FsY3VsYXRlQ3VycmVudE1hcEV4dGVudCgpOiBFeHRlbnQge1xuICAgIGNvbnN0IGV4dGVudCA9IHRoaXMub2xNYXAuZ2V0VmlldygpLmNhbGN1bGF0ZUV4dGVudCh0aGlzLm9sTWFwLmdldFNpemUoKSlcbiAgICBjb25zdCByZXByb2plY3RlZEV4dGVudCA9IHRyYW5zZm9ybUV4dGVudChcbiAgICAgIGV4dGVudCxcbiAgICAgIHRoaXMub2xNYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKSxcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKVxuXG4gICAgcmV0dXJuIHJlcHJvamVjdGVkRXh0ZW50IGFzIEV4dGVudFxuICB9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMub2xNYXAgPSBhd2FpdCBjcmVhdGVNYXBGcm9tQ29udGV4dChcbiAgICAgIHRoaXMucHJvY2Vzc0NvbnRleHQodGhpcy5jb250ZXh0KSxcbiAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICApXG4gICAgaWYgKHRoaXMuX3Jlc29sdmVkRXh0ZW50Q2hhbmdlKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlZEV4dGVudENoYW5nZS5lbWl0KHRoaXMuY2FsY3VsYXRlQ3VycmVudE1hcEV4dGVudCgpKVxuICAgIH1cblxuICAgIHRoaXMuc2V0dXBEaXNwbGF5TWVzc2FnZU9ic2VydmFibGUoKVxuICAgIHRoaXMub2xNYXBSZXNvbHZlcih0aGlzLm9sTWFwKVxuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnY29udGV4dCcgaW4gY2hhbmdlcyAmJiAhY2hhbmdlc1snY29udGV4dCddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgY29uc3QgZGlmZiA9IGNvbXB1dGVNYXBDb250ZXh0RGlmZihcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dChjaGFuZ2VzWydjb250ZXh0J10uY3VycmVudFZhbHVlKSxcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dChjaGFuZ2VzWydjb250ZXh0J10ucHJldmlvdXNWYWx1ZSlcbiAgICAgIClcbiAgICAgIGF3YWl0IGFwcGx5Q29udGV4dERpZmZUb01hcCh0aGlzLm9sTWFwLCBkaWZmKVxuXG4gICAgICBpZiAodGhpcy5fcmVzb2x2ZWRFeHRlbnRDaGFuZ2UgJiYgZGlmZi52aWV3Q2hhbmdlcykge1xuICAgICAgICB0aGlzLl9yZXNvbHZlZEV4dGVudENoYW5nZS5lbWl0KHRoaXMuY2FsY3VsYXRlQ3VycmVudE1hcEV4dGVudCgpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBFdmVudExpc3RlbmVyKFxuICAgIGV2ZW50VHlwZToga2V5b2YgTWFwRXZlbnRzQnlUeXBlLFxuICAgIGhhbmRsZXI6IChldmVudDogTWFwRXZlbnRzQnlUeXBlW3R5cGVvZiBldmVudFR5cGVdKSA9PiB2b2lkXG4gICkge1xuICAgIHRoaXMub3BlbmxheWVyc01hcC50aGVuKChvbE1hcDogT2xNYXApID0+IHtcbiAgICAgIGxpc3RlbihvbE1hcCwgZXZlbnRUeXBlLCBoYW5kbGVyKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldHVwRGlzcGxheU1lc3NhZ2VPYnNlcnZhYmxlKCkge1xuICAgIHRoaXMuZGlzcGxheU1lc3NhZ2UkID0gbWVyZ2UoXG4gICAgICBmcm9tRXZlbnQodGhpcy5vbE1hcCwgJ21hcG11dGVkJykucGlwZShtYXAoKCkgPT4gdHJ1ZSkpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMub2xNYXAsICdtb3Zlc3RhcnQnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMub2xNYXAsICdzaW5nbGVjbGljaycpLnBpcGUobWFwKCgpID0+IGZhbHNlKSlcbiAgICApLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKG11dGVkKSA9PlxuICAgICAgICBtdXRlZFxuICAgICAgICAgID8gdGltZXIoMjAwMCkucGlwZShcbiAgICAgICAgICAgICAgbWFwKCgpID0+IGZhbHNlKSxcbiAgICAgICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgICAgICBkZWxheSg0MDApXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBvZihmYWxzZSlcbiAgICAgICksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0NvbnRleHQoY29udGV4dDogTWFwQ29udGV4dCk6IE1hcENvbnRleHQge1xuICAgIGNvbnN0IHByb2Nlc3NlZCA9IGNvbnRleHRcbiAgICAgID8geyAuLi5jb250ZXh0LCB2aWV3OiBjb250ZXh0LnZpZXcgPz8gREVGQVVMVF9WSUVXIH1cbiAgICAgIDogeyBsYXllcnM6IFtdLCB2aWV3OiBERUZBVUxUX1ZJRVcgfVxuXG4gICAgLy8gUHJlcGVuZCB3aXRoIGRlZmF1bHQgYmFzZW1hcCBhbmQgYmFzZW1hcCBsYXllcnNcbiAgICBpZiAodGhpcy5iYXNlbWFwTGF5ZXJzLmxlbmd0aCkge1xuICAgICAgcHJvY2Vzc2VkLmxheWVycyA9IFsuLi50aGlzLmJhc2VtYXBMYXllcnMsIC4uLnByb2Nlc3NlZC5sYXllcnNdXG4gICAgfVxuICAgIGlmICghdGhpcy5kb05vdFVzZURlZmF1bHRCYXNlbWFwKSB7XG4gICAgICBwcm9jZXNzZWQubGF5ZXJzID0gW0RFRkFVTFRfQkFTRU1BUF9MQVlFUiwgLi4ucHJvY2Vzc2VkLmxheWVyc11cbiAgICB9XG5cbiAgICAvLyBBcHBseSB2aWV3IGNvbnN0cmFpbnRzXG4gICAgaWYgKHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heFpvb20pIHtcbiAgICAgIHByb2Nlc3NlZC52aWV3ID0ge1xuICAgICAgICBtYXhab29tOiB0aGlzLm1hcFZpZXdDb25zdHJhaW50cy5tYXhab29tLFxuICAgICAgICAuLi5wcm9jZXNzZWQudmlldyxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heEV4dGVudCkge1xuICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7XG4gICAgICAgIG1heEV4dGVudDogdGhpcy5tYXBWaWV3Q29uc3RyYWludHMubWF4RXh0ZW50LFxuICAgICAgICAuLi5wcm9jZXNzZWQudmlldyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9jZXNzZWQudmlldyAmJlxuICAgICAgJ3pvb20nIGluIHByb2Nlc3NlZC52aWV3ICYmXG4gICAgICAnY2VudGVyJyBpbiBwcm9jZXNzZWQudmlld1xuICAgICkge1xuICAgICAgcmV0dXJuIHByb2Nlc3NlZFxuICAgIH1cblxuICAgIGlmIChwcm9jZXNzZWQudmlldyAmJiAnZXh0ZW50JyBpbiBwcm9jZXNzZWQudmlldykge1xuICAgICAgcmV0dXJuIHByb2Nlc3NlZFxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB2YWxpZCB2aWV3XG4gICAgaWYgKHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heEV4dGVudCkge1xuICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7XG4gICAgICAgIGV4dGVudDogdGhpcy5tYXBWaWV3Q29uc3RyYWludHMubWF4RXh0ZW50LFxuICAgICAgICAuLi5wcm9jZXNzZWQudmlldyxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7IC4uLkRFRkFVTFRfVklFVywgLi4ucHJvY2Vzc2VkLnZpZXcgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm9jZXNzZWRcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtZnVsbCB3LWZ1bGxcIiAjbWFwPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFic29sdXRlIGluc2V0LTAgcC0yIHJvdW5kZWQgei00MCB0cmFuc2l0aW9uLWFsbCBmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciB0ZXh0LXByaW1hcnkgZm9udC1zYW5zIHBvaW50ZXItZXZlbnRzLW5vbmVcIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgKGRpc3BsYXlNZXNzYWdlJCB8IGFzeW5jKSA/ICd2aXNpYmxlIG9wYWNpdHktMTAwJyA6ICdpbnZpc2libGUgb3BhY2l0eS0wJ1xuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFic29sdXRlIHotWy0xXSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLWIgZnJvbS13aGl0ZSB0by1wcmltYXJ5LWxpZ2h0ZXN0IG9wYWNpdHktNjBcIlxuICAgID48L2Rpdj5cbiAgICA8bmctaWNvblxuICAgICAgY2xhc3M9XCIhdy0xNiAhaC0xNiB0ZXh0LVs2NHB4XSBtYi00XCJcbiAgICAgIG5hbWU9XCJtYXRTd2lwZU91dGxpbmVcIlxuICAgID48L25nLWljb24+XG4gICAgPHAgdHJhbnNsYXRlPm1hcC5uYXZpZ2F0aW9uLm1lc3NhZ2U8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|