@one-paragon/angular-utilities 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +8 -8
- package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +5 -5
- package/esm2022/action-state/index.mjs +1 -1
- package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +6 -6
- package/esm2022/action-state/ngrx.mjs +6 -1
- package/esm2022/http-request-state/HttpRequestStateFactory.mjs +6 -7
- package/esm2022/http-request-state/HttpRequestStateStore.mjs +41 -37
- package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +17 -21
- package/esm2022/http-request-state/directives/http-error-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +12 -18
- package/esm2022/http-request-state/directives/http-success-state-directive.mjs +13 -18
- package/esm2022/http-request-state/directives/index.mjs +1 -1
- package/esm2022/http-request-state/directives/request-state-directive.mjs +20 -19
- package/esm2022/http-request-state/http-state-module.mjs +6 -6
- package/esm2022/http-request-state/index.mjs +1 -1
- package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +1 -1
- package/esm2022/http-request-state/rxjs/getRequestorState.mjs +1 -1
- package/esm2022/http-request-state/rxjs/index.mjs +1 -1
- package/esm2022/ngrx/actionable-selector.mjs +12 -14
- package/esm2022/public-api.mjs +1 -2
- package/esm2022/rxjs/defaultShareReplay.mjs +1 -1
- package/esm2022/rxjs/index.mjs +1 -1
- package/esm2022/rxjs/mapError.mjs +1 -1
- package/esm2022/rxjs/rxjs-operators.mjs +1 -1
- package/esm2022/rxjs/subjectifier.mjs +6 -6
- package/esm2022/rxjs/subscriber.directive.mjs +11 -13
- package/esm2022/table-builder/classes/DefaultSettings.mjs +1 -1
- package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +3 -1
- package/esm2022/table-builder/classes/TableBuilderConfig.mjs +1 -1
- package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +16 -18
- package/esm2022/table-builder/classes/TableState.mjs +15 -15
- package/esm2022/table-builder/classes/display-col.mjs +1 -1
- package/esm2022/table-builder/classes/filter-info.mjs +13 -25
- package/esm2022/table-builder/classes/table-builder-general-settings.mjs +46 -54
- package/esm2022/table-builder/classes/table-builder.mjs +4 -1
- package/esm2022/table-builder/classes/table-store.mjs +287 -282
- package/esm2022/table-builder/components/array-column.component.mjs +15 -19
- package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +44 -35
- package/esm2022/table-builder/components/column-builder/column-helpers.mjs +31 -10
- package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +9 -9
- package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +9 -9
- package/esm2022/table-builder/components/filter/filter.component.mjs +31 -34
- package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +37 -36
- package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +16 -16
- package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +126 -96
- package/esm2022/table-builder/components/generic-table/paginator.component.mjs +44 -42
- package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +6 -8
- package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +32 -29
- package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +15 -14
- package/esm2022/table-builder/components/index.mjs +1 -1
- package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +12 -5
- package/esm2022/table-builder/components/link-column.component.mjs +47 -51
- package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +10 -10
- package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +27 -29
- package/esm2022/table-builder/components/scroll-strategy.mjs +21 -29
- package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +31 -31
- package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +24 -23
- package/esm2022/table-builder/components/table-container/table-container-imports.mjs +1 -1
- package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +1 -1
- package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +1 -1
- package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +1 -1
- package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +1 -1
- package/esm2022/table-builder/components/table-container/table-container.mjs +108 -97
- package/esm2022/table-builder/components/table-container/tableProps.mjs +1 -1
- package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +57 -59
- package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +9 -11
- package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +18 -16
- package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +14 -14
- package/esm2022/table-builder/directives/custom-cell-directive.mjs +24 -20
- package/esm2022/table-builder/directives/index.mjs +1 -1
- package/esm2022/table-builder/directives/multi-sort.directive.mjs +10 -10
- package/esm2022/table-builder/directives/resize-column.directive.mjs +13 -14
- package/esm2022/table-builder/directives/table-wrapper.directive.mjs +5 -7
- package/esm2022/table-builder/directives/tb-filter.directive.mjs +108 -113
- package/esm2022/table-builder/enums/filterTypes.mjs +28 -71
- package/esm2022/table-builder/functions/boolean-filter-function.mjs +4 -4
- package/esm2022/table-builder/functions/date-filter-function.mjs +15 -15
- package/esm2022/table-builder/functions/download-data.mjs +1 -1
- package/esm2022/table-builder/functions/null-filter-function.mjs +1 -1
- package/esm2022/table-builder/functions/number-filter-function.mjs +9 -9
- package/esm2022/table-builder/functions/sort-data-function.mjs +1 -1
- package/esm2022/table-builder/functions/string-filter-function.mjs +11 -11
- package/esm2022/table-builder/interfaces/ColumnInfo.mjs +1 -1
- package/esm2022/table-builder/interfaces/report-def.mjs +1 -1
- package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +124 -124
- package/esm2022/table-builder/pipes/column-total.pipe.mjs +4 -4
- package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +6 -6
- package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +14 -16
- package/esm2022/table-builder/pipes/key-display.mjs +8 -10
- package/esm2022/table-builder/services/export-to-csv.service.mjs +57 -63
- package/esm2022/table-builder/services/link-creator.service.mjs +1 -1
- package/esm2022/table-builder/services/table-template-service.mjs +11 -8
- package/esm2022/table-builder/services/transform-creator.mjs +35 -40
- package/esm2022/table-builder/table-builder.module.mjs +7 -7
- package/esm2022/utilities/array-helpers.mjs +1 -1
- package/esm2022/utilities/directives/auto-focus.directive.mjs +8 -10
- package/esm2022/utilities/directives/clickEmitterDirective.mjs +4 -4
- package/esm2022/utilities/directives/clickSubject.mjs +5 -4
- package/esm2022/utilities/directives/conditional-classes.directive.mjs +11 -11
- package/esm2022/utilities/directives/dialog-service.mjs +5 -7
- package/esm2022/utilities/directives/dialog.mjs +38 -39
- package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +7 -8
- package/esm2022/utilities/directives/prevent-enter.directive.mjs +4 -4
- package/esm2022/utilities/directives/stop-propagation.directive.mjs +4 -4
- package/esm2022/utilities/directives/styler.mjs +10 -11
- package/esm2022/utilities/directives/trim-whitespace.directive.mjs +7 -9
- package/esm2022/utilities/index.mjs +1 -1
- package/esm2022/utilities/module.mjs +7 -7
- package/esm2022/utilities/pipes/function.pipe.mjs +4 -4
- package/esm2022/utilities/pipes/phone.pipe.mjs +4 -4
- package/esm2022/utilities/pipes/space-case.pipes.mjs +4 -4
- package/fesm2022/one-paragon-angular-utilities.mjs +1911 -1951
- package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
- package/http-request-state/HttpRequestStateStore.d.ts +2 -2
- package/http-request-state/directives/HttpStateDirectiveBase.d.ts +5 -7
- package/http-request-state/directives/http-error-state-directive.d.ts +1 -4
- package/http-request-state/directives/http-inProgress-state-directive.d.ts +3 -6
- package/http-request-state/directives/http-notStarted-state-directive.d.ts +1 -4
- package/http-request-state/directives/http-success-state-directive.d.ts +1 -6
- package/http-request-state/directives/request-state-directive.d.ts +0 -1
- package/package.json +8 -8
- package/public-api.d.ts +1 -1
- package/rxjs/subjectifier.d.ts +0 -1
- package/table-builder/classes/TableBuilderDataSource.d.ts +0 -1
- package/table-builder/classes/TableState.d.ts +1 -0
- package/table-builder/classes/filter-info.d.ts +6 -98
- package/table-builder/classes/table-store.d.ts +4 -2
- package/table-builder/components/column-builder/column-builder.component.d.ts +2 -6
- package/table-builder/components/column-builder/column-helpers.d.ts +14 -6
- package/table-builder/components/date-filter/date-filter.component.d.ts +28 -1
- package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +28 -1
- package/table-builder/components/filter/filter.component.d.ts +37 -103
- package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +0 -3
- package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +1 -2
- package/table-builder/components/generic-table/generic-table.component.d.ts +8 -5
- package/table-builder/components/generic-table/paginator.component.d.ts +0 -2
- package/table-builder/components/header-menu/header-menu.component.d.ts +29 -3
- package/table-builder/components/in-filter/in-filter.component.d.ts +1 -2
- package/table-builder/components/number-filter/number-filter.component.d.ts +28 -1
- package/table-builder/components/scroll-strategy.d.ts +2 -5
- package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +1 -2
- package/table-builder/components/sort-menu/sort-menu.component.d.ts +2 -3
- package/table-builder/components/table-container/table-container.d.ts +20 -20
- package/table-builder/components/table-container/virtual-scroll-container.d.ts +0 -2
- package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +1 -1
- package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +3 -3
- package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +2 -2
- package/table-builder/directives/custom-cell-directive.d.ts +3 -3
- package/table-builder/directives/multi-sort.directive.d.ts +1 -2
- package/table-builder/directives/resize-column.directive.d.ts +1 -2
- package/table-builder/directives/tb-filter.directive.d.ts +19 -23
- package/table-builder/enums/filterTypes.d.ts +35 -76
- package/table-builder/functions/boolean-filter-function.d.ts +3 -3
- package/table-builder/functions/date-filter-function.d.ts +4 -4
- package/table-builder/functions/number-filter-function.d.ts +3 -3
- package/table-builder/functions/string-filter-function.d.ts +4 -6
- package/table-builder/pipes/format-filter-type.pipe.d.ts +1 -1
- package/table-builder/pipes/format-filter-value.pipe.d.ts +0 -2
- package/table-builder/pipes/key-display.d.ts +0 -1
- package/table-builder/services/export-to-csv.service.d.ts +0 -3
- package/table-builder/services/table-template-service.d.ts +1 -2
- package/table-builder/services/transform-creator.d.ts +0 -5
- package/utilities/directives/auto-focus.directive.d.ts +1 -2
- package/utilities/directives/conditional-classes.directive.d.ts +1 -2
- package/utilities/directives/dialog.d.ts +2 -5
- package/utilities/directives/styler.d.ts +0 -2
- package/utilities/directives/trim-whitespace.directive.d.ts +0 -2
|
@@ -15,30 +15,16 @@ import * as i0 from "@angular/core";
|
|
|
15
15
|
import * as i1 from "@angular/material/menu";
|
|
16
16
|
import * as i2 from "@angular/forms";
|
|
17
17
|
export class ProfilesMenuComponent {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.$keys = computed(() => this.stateService.$selectLocalProfileKeys(this.$tableId())());
|
|
29
|
-
this.defaultName = 'My Profile';
|
|
30
|
-
this.position$ = new Subject();
|
|
31
|
-
this.setPosition = (e) => {
|
|
32
|
-
const rect = e.getBoundingClientRect();
|
|
33
|
-
if (rect.top === 0)
|
|
34
|
-
return;
|
|
35
|
-
const a = {
|
|
36
|
-
right: `${(window.innerWidth - rect.right)}px`,
|
|
37
|
-
top: `${rect.top}px`,
|
|
38
|
-
};
|
|
39
|
-
return a;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
18
|
+
stateService = inject(TableBuilderStateStore);
|
|
19
|
+
tableStore = inject(TableStore);
|
|
20
|
+
$tableId = input.required();
|
|
21
|
+
onSaveState = output();
|
|
22
|
+
trigger = viewChild('trigger');
|
|
23
|
+
allProfilesPanelOpened = signal(false);
|
|
24
|
+
newProfilePanelOpened = signal(false);
|
|
25
|
+
$currentProfile = computed(() => this.stateService.$selectLocalProfileCurrentKey(this.$tableId())());
|
|
26
|
+
$defaultProfile = computed(() => this.stateService.$selectLocalProfileDefaultKey(this.$tableId())());
|
|
27
|
+
$keys = computed(() => this.stateService.$selectLocalProfileKeys(this.$tableId())());
|
|
42
28
|
saveState(key) {
|
|
43
29
|
const tableState = this.tableStore.getSavableStateSignal();
|
|
44
30
|
this.onSaveState.emit(null);
|
|
@@ -54,13 +40,25 @@ export class ProfilesMenuComponent {
|
|
|
54
40
|
unsetDefault() {
|
|
55
41
|
this.stateService.unsetDefaultFromLocalAndStorage(this.$tableId());
|
|
56
42
|
}
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
defaultName = 'My Profile';
|
|
44
|
+
position$ = new Subject();
|
|
45
|
+
setPosition = (e) => {
|
|
46
|
+
const rect = e.getBoundingClientRect();
|
|
47
|
+
if (rect.top === 0)
|
|
48
|
+
return;
|
|
49
|
+
const a = {
|
|
50
|
+
right: `${(window.innerWidth - rect.right)}px`,
|
|
51
|
+
top: `${rect.top}px`,
|
|
52
|
+
};
|
|
53
|
+
return a;
|
|
54
|
+
};
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ProfilesMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: ProfilesMenuComponent, isStandalone: true, selector: "tb-profiles-menu", inputs: { $tableId: { classPropertyName: "$tableId", publicName: "$tableId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onSaveState: "onSaveState" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], ngImport: i0, template: "<button mat-icon-button [matMenuTriggerFor]=\"menu\" #trigger=\"matMenuTrigger\" [matTooltip]=\"'Profiles'\">\n <mat-icon color=\"primary\">people</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" (closed)=\"addedKey.value = null; allProfilesPanelOpened.set(false); newProfilePanelOpened.set(false)\">\n @if(!!$currentProfile())\n {\n <div mat-menu-item [matTooltip]=\"'Save Profile'\" mat-stroked-button (click)=\"saveState($currentProfile()!)\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>{{$currentProfile()}}</span>\n </div>\n }\n @else\n {\n <div class=\"profile-line\">\n <button class=\"first-in-line first-button\" mat-stroked-button (click)=\"addState(defaultName, m.checked);\">\n <mat-icon class=\"save-for-default-icon button-save-icon\" color=\"primary\">save</mat-icon>\n <span>Save as <span class=\"current-name\">{{defaultName}}</span> </span>\n </button>\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m.toggle()\" >\n <mat-icon style=\"color: green;\">{{m.checked ? 'star' : 'star_border'}}</mat-icon>\n </button>\n <mat-checkbox class=\"display-none\" [checked]=\"true\" #m />\n </div>\n }\n @if (allProfilesPanelOpened()) {<hr class=\"divider\"/>}\n <div [class]=\"{ hide: !$keys().length }\" mat-menu-item stop-propagation (click)=\"allProfilesPanelOpened.set(!allProfilesPanelOpened())\">All Profiles</div>\n <div [class]=\"{ hide: !allProfilesPanelOpened(), panel: true }\">\n @for (key of $keys() ; track key) {\n <div class=\"profile-line\" [class.current-in-list]=\"key === $currentProfile()\">\n <button [matTooltip]=\"'Select Profile'\" class=\"menu-item first-in-line\" mat-stroked-button (click)='stateService.setLocalCurrentState({ tableId: $tableId(), currentStateKey: key})'>\n <span>{{key}}</span>\n </button>\n @if(key !== $defaultProfile())\n {\n <button [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"setDefault(key)\">\n <mat-icon style=\"color: green;\">star_border</mat-icon>\n </button>\n }\n @else\n {\n <button [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"unsetDefault()\">\n <mat-icon style=\"color: green;\">star</mat-icon>\n </button>\n }\n <button [matTooltip]=\"'Delete Profile'\" class=\"last-in-line\" stop-propagation mat-icon-button (click)='stateService.deleteProfileFromLocalAndStorage($tableId(), key)'>\n <mat-icon color='warn'>delete_forever</mat-icon>\n </button>\n </div>\n }\n <hr class=\"divider\"/>\n </div>\n @if (newProfilePanelOpened() && !allProfilesPanelOpened()){<hr class=\"divider\"/>}\n <div mat-menu-item stop-propagation (click)=\"newProfilePanelOpened.set(!newProfilePanelOpened()); addedKey.focus()\">Add New Profile</div>\n <div [class]=\"{ hide: !newProfilePanelOpened(), panel: true }\" >\n <div class=\"profile-line\" stop-propagation>\n <div class=\"new-name-input\">\n <i class=\"input-hint\">Enter New Name</i>\n <input matInput #addedKey=\"matInput\" [name]=\"'key'\" />\n </div>\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m2.toggle()\" >\n <mat-icon style=\"color: green;\">{{m2.checked ? 'star' : 'star_border'}}</mat-icon>\n </button>\n <mat-checkbox class=\"display-none\" [ngModel]=\"!$defaultProfile()\" #m2 />\n </div>\n <button class=\"add-button\" color=\"primary\" [matTooltip]=\"'Create New Profile'\" mat-raised-button (click)=\"addState(addedKey.value, m2.checked); addedKey.value = null\" [disabled]=\"!addedKey.value\">\n Add\n </button>\n </div>\n</mat-menu>\n\n<ng-template #line let-key>\n\n\n</ng-template>\n", styles: [":host ::ng-deep .mat-expansion-panel-header{padding:0}.current-name{color:#00f}.menu-item{display:inline-flex;width:initial;flex-grow:1}.profile-line{display:flex;justify-content:space-between;align-items:center}.first-in-line{--f-b: 2rem;margin-left:var(--mat-menu-item-with-icon-leading-spacing)}.first-in-line.first-button{height:var(--f-b);margin:.2rem}.first-in-line .button-save-icon{height:var(--f-b);width:var(--f-b);font-size:var(--f-b)}.main-save-button{height:4rem;width:4rem;padding:.5rem}.main-save-button mat-icon{height:3rem;width:3rem;font-size:3rem}.save-for-default-icon{margin:0}.display-none{display:none}.last-in-line{padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}.default-cursor{cursor:default}.as-def{padding-left:var(--mat-menu-item-with-icon-leading-spacing)}.divider{margin:.2px 0}.add-key{max-width:8.5rem;margin-left:2px}.add-key ::ng-deep .mdc-text-field{padding:0}.panel{transition:height .1s}.hide{height:0;min-height:0;overflow:hidden}.open-panel-button{width:100%;height:2.5rem}.current-in-list{border-left:3px solid blue;background-color:#0000ff0d}.new-name-input{margin-left:3px;display:flex;flex-direction:column}.new-name-input .input-hint{font-size:smaller;font-weight:200;color:gray}.add-button{height:20px;line-height:20px;margin:3px 0 0 3px}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
59
57
|
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ProfilesMenuComponent, decorators: [{
|
|
61
59
|
type: Component,
|
|
62
60
|
args: [{ selector: 'tb-profiles-menu', standalone: true, imports: [MatIcon, MatTooltip, MatIconButton, MatMenuModule, MatButton, MatInput, DialogDirective, ClickEmitterDirective, NgTemplateOutlet,
|
|
63
61
|
MatCheckbox, StopPropagationDirective, FunctionPipe, MatInputModule, AsyncPipe, FormsModule
|
|
64
|
-
], template: "<button mat-icon-button [matMenuTriggerFor]=\"menu\" #trigger=\"matMenuTrigger\" [matTooltip]=\"'Profiles'\">\
|
|
62
|
+
], template: "<button mat-icon-button [matMenuTriggerFor]=\"menu\" #trigger=\"matMenuTrigger\" [matTooltip]=\"'Profiles'\">\n <mat-icon color=\"primary\">people</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" (closed)=\"addedKey.value = null; allProfilesPanelOpened.set(false); newProfilePanelOpened.set(false)\">\n @if(!!$currentProfile())\n {\n <div mat-menu-item [matTooltip]=\"'Save Profile'\" mat-stroked-button (click)=\"saveState($currentProfile()!)\">\n <mat-icon color=\"primary\">save</mat-icon>\n <span>{{$currentProfile()}}</span>\n </div>\n }\n @else\n {\n <div class=\"profile-line\">\n <button class=\"first-in-line first-button\" mat-stroked-button (click)=\"addState(defaultName, m.checked);\">\n <mat-icon class=\"save-for-default-icon button-save-icon\" color=\"primary\">save</mat-icon>\n <span>Save as <span class=\"current-name\">{{defaultName}}</span> </span>\n </button>\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m.toggle()\" >\n <mat-icon style=\"color: green;\">{{m.checked ? 'star' : 'star_border'}}</mat-icon>\n </button>\n <mat-checkbox class=\"display-none\" [checked]=\"true\" #m />\n </div>\n }\n @if (allProfilesPanelOpened()) {<hr class=\"divider\"/>}\n <div [class]=\"{ hide: !$keys().length }\" mat-menu-item stop-propagation (click)=\"allProfilesPanelOpened.set(!allProfilesPanelOpened())\">All Profiles</div>\n <div [class]=\"{ hide: !allProfilesPanelOpened(), panel: true }\">\n @for (key of $keys() ; track key) {\n <div class=\"profile-line\" [class.current-in-list]=\"key === $currentProfile()\">\n <button [matTooltip]=\"'Select Profile'\" class=\"menu-item first-in-line\" mat-stroked-button (click)='stateService.setLocalCurrentState({ tableId: $tableId(), currentStateKey: key})'>\n <span>{{key}}</span>\n </button>\n @if(key !== $defaultProfile())\n {\n <button [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"setDefault(key)\">\n <mat-icon style=\"color: green;\">star_border</mat-icon>\n </button>\n }\n @else\n {\n <button [matTooltip]=\"'Toggle Profile Being Default'\" stop-propagation mat-icon-button (click)=\"unsetDefault()\">\n <mat-icon style=\"color: green;\">star</mat-icon>\n </button>\n }\n <button [matTooltip]=\"'Delete Profile'\" class=\"last-in-line\" stop-propagation mat-icon-button (click)='stateService.deleteProfileFromLocalAndStorage($tableId(), key)'>\n <mat-icon color='warn'>delete_forever</mat-icon>\n </button>\n </div>\n }\n <hr class=\"divider\"/>\n </div>\n @if (newProfilePanelOpened() && !allProfilesPanelOpened()){<hr class=\"divider\"/>}\n <div mat-menu-item stop-propagation (click)=\"newProfilePanelOpened.set(!newProfilePanelOpened()); addedKey.focus()\">Add New Profile</div>\n <div [class]=\"{ hide: !newProfilePanelOpened(), panel: true }\" >\n <div class=\"profile-line\" stop-propagation>\n <div class=\"new-name-input\">\n <i class=\"input-hint\">Enter New Name</i>\n <input matInput #addedKey=\"matInput\" [name]=\"'key'\" />\n </div>\n <button [matTooltip]=\"'Toggle Profile Being Created As Default'\" stop-propagation mat-icon-button (click)=\"m2.toggle()\" >\n <mat-icon style=\"color: green;\">{{m2.checked ? 'star' : 'star_border'}}</mat-icon>\n </button>\n <mat-checkbox class=\"display-none\" [ngModel]=\"!$defaultProfile()\" #m2 />\n </div>\n <button class=\"add-button\" color=\"primary\" [matTooltip]=\"'Create New Profile'\" mat-raised-button (click)=\"addState(addedKey.value, m2.checked); addedKey.value = null\" [disabled]=\"!addedKey.value\">\n Add\n </button>\n </div>\n</mat-menu>\n\n<ng-template #line let-key>\n\n\n</ng-template>\n", styles: [":host ::ng-deep .mat-expansion-panel-header{padding:0}.current-name{color:#00f}.menu-item{display:inline-flex;width:initial;flex-grow:1}.profile-line{display:flex;justify-content:space-between;align-items:center}.first-in-line{--f-b: 2rem;margin-left:var(--mat-menu-item-with-icon-leading-spacing)}.first-in-line.first-button{height:var(--f-b);margin:.2rem}.first-in-line .button-save-icon{height:var(--f-b);width:var(--f-b);font-size:var(--f-b)}.main-save-button{height:4rem;width:4rem;padding:.5rem}.main-save-button mat-icon{height:3rem;width:3rem;font-size:3rem}.save-for-default-icon{margin:0}.display-none{display:none}.last-in-line{padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}.default-cursor{cursor:default}.as-def{padding-left:var(--mat-menu-item-with-icon-leading-spacing)}.divider{margin:.2px 0}.add-key{max-width:8.5rem;margin-left:2px}.add-key ::ng-deep .mdc-text-field{padding:0}.panel{transition:height .1s}.hide{height:0;min-height:0;overflow:hidden}.open-panel-button{width:100%;height:2.5rem}.current-in-list{border-left:3px solid blue;background-color:#0000ff0d}.new-name-input{margin-left:3px;display:flex;flex-direction:column}.new-name-input .input-hint{font-size:smaller;font-weight:200;color:gray}.add-button{height:20px;line-height:20px;margin:3px 0 0 3px}\n"] }]
|
|
65
63
|
}] });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXMtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3Byb2ZpbGVzLW1lbnUvcHJvZmlsZXMtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3Byb2ZpbGVzLW1lbnUvcHJvZmlsZXMtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9B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QXJCLHFCQUFxQixxWEN2QmxDLDJnSUEwRUEsODBDRHpEWSxPQUFPLDJJQUFFLFVBQVUsaVJBQUUsYUFBYSw0RkFBRSxhQUFhLDh2QkFBRSxTQUFTLGlMQUFFLFFBQVEsaVVBQzlFLFdBQVcsd1ZBQUUsd0JBQXdCLDhEQUFnQixjQUFjLDhCQUFhLFdBQVc7OzJGQUtsRixxQkFBcUI7a0JBVGpDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0I7d0JBQ3hJLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXO3FCQUM1RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyU3RhdGVTdG9yZSB9IGZyb20gJy4uLy4uL25ncngvdGFibGVCdWlsZGVyU3RhdGVTdG9yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUsIE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IENsaWNrRW1pdHRlckRpcmVjdGl2ZSwgRGlhbG9nRGlyZWN0aXZlLCBGdW5jdGlvblBpcGUsIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IE1hdElucHV0LCBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3ggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLXByb2ZpbGVzLW1lbnUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW01hdEljb24sIE1hdFRvb2x0aXAsIE1hdEljb25CdXR0b24sIE1hdE1lbnVNb2R1bGUsIE1hdEJ1dHRvbiwgTWF0SW5wdXQsIERpYWxvZ0RpcmVjdGl2ZSwgQ2xpY2tFbWl0dGVyRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgTWF0Q2hlY2tib3gsIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgRnVuY3Rpb25QaXBlLCBNYXRJbnB1dE1vZHVsZSwgQXN5bmNQaXBlLCBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2ZpbGVzLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcm9maWxlcy1tZW51LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZmlsZXNNZW51Q29tcG9uZW50IHtcclxuICBzdGF0ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVCdWlsZGVyU3RhdGVTdG9yZSk7XHJcbiAgdGFibGVTdG9yZSA9IGluamVjdChUYWJsZVN0b3JlKTtcclxuICAkdGFibGVJZCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuICBvblNhdmVTdGF0ZSA9IG91dHB1dDxudWxsPigpO1xyXG4gIHRyaWdnZXIgPSB2aWV3Q2hpbGQ8TWF0TWVudVRyaWdnZXI+KCd0cmlnZ2VyJyk7XHJcbiAgYWxsUHJvZmlsZXNQYW5lbE9wZW5lZCA9IHNpZ25hbChmYWxzZSk7XHJcbiAgbmV3UHJvZmlsZVBhbmVsT3BlbmVkID0gc2lnbmFsKGZhbHNlKTtcclxuICAkY3VycmVudFByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlU2VydmljZS4kc2VsZWN0TG9jYWxQcm9maWxlQ3VycmVudEtleSh0aGlzLiR0YWJsZUlkKCkpKCkpO1xyXG4gICRkZWZhdWx0UHJvZmlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGVTZXJ2aWNlLiRzZWxlY3RMb2NhbFByb2ZpbGVEZWZhdWx0S2V5KHRoaXMuJHRhYmxlSWQoKSkoKSk7XHJcbiAgJGtleXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlU2VydmljZS4kc2VsZWN0TG9jYWxQcm9maWxlS2V5cyh0aGlzLiR0YWJsZUlkKCkpKCkpO1xyXG4gIHNhdmVTdGF0ZShrZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgdGFibGVTdGF0ZSA9IHRoaXMudGFibGVTdG9yZS5nZXRTYXZhYmxlU3RhdGVTaWduYWwoKTtcclxuICAgIHRoaXMub25TYXZlU3RhdGUuZW1pdChudWxsKTtcclxuICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnNhdmVUYWJsZVNldHRpbmdzVG9Mb2NhbEFuZFN0b3JhZ2UodGhpcy4kdGFibGVJZCgpLCBrZXksIHRhYmxlU3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgYWRkU3RhdGUoa2V5OiBzdHJpbmcsIGFzRGVmYXVsdDogYm9vbGVhbil7XHJcbiAgICBjb25zdCB0YWJsZVN0YXRlID0gdGhpcy50YWJsZVN0b3JlLmdldFNhdmFibGVTdGF0ZVNpZ25hbCgpO1xyXG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UuYWRkTmV3U3RhdGVUb0xvY2FsQW5kU3RvcmFnZSh0aGlzLiR0YWJsZUlkKCksIGtleSwgdGFibGVTdGF0ZSwgYXNEZWZhdWx0KTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHQoa2V5OiBzdHJpbmcpe1xyXG4gICAgdGhpcy5zdGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdEluTG9jYWxBbmRTdG9yYWdlKHRoaXMuJHRhYmxlSWQoKSwga2V5KTtcclxuICB9XHJcblxyXG4gIHVuc2V0RGVmYXVsdCgpe1xyXG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UudW5zZXREZWZhdWx0RnJvbUxvY2FsQW5kU3RvcmFnZSh0aGlzLiR0YWJsZUlkKCkpO1xyXG4gIH1cclxuXHJcbiAgZGVmYXVsdE5hbWUgPSAnTXkgUHJvZmlsZSc7XHJcbiAgcG9zaXRpb24kID0gbmV3IFN1YmplY3Q8eyB0b3A6IHN0cmluZywgcmlnaHQ6IHN0cmluZ30gfCB1bmRlZmluZWQ+KCk7XHJcbiAgc2V0UG9zaXRpb24gPSAoZTogSFRNTEVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IHJlY3QgPSBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgaWYocmVjdC50b3AgPT09IDApIHJldHVybjtcclxuICAgIGNvbnN0IGEgPSB7XHJcbiAgICAgIHJpZ2h0OiBgJHsod2luZG93LmlubmVyV2lkdGggLSByZWN0LnJpZ2h0KX1weGAsXHJcbiAgICAgIHRvcDogYCR7cmVjdC50b3B9cHhgLFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGE7XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgI3RyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiIFttYXRUb29sdGlwXT1cIidQcm9maWxlcydcIj5cclxuICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+cGVvcGxlPC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiAoY2xvc2VkKT1cImFkZGVkS2V5LnZhbHVlID0gbnVsbDsgYWxsUHJvZmlsZXNQYW5lbE9wZW5lZC5zZXQoZmFsc2UpOyBuZXdQcm9maWxlUGFuZWxPcGVuZWQuc2V0KGZhbHNlKVwiPlxyXG4gIEBpZighISRjdXJyZW50UHJvZmlsZSgpKVxyXG4gIHtcclxuICAgIDxkaXYgbWF0LW1lbnUtaXRlbSBbbWF0VG9vbHRpcF09XCInU2F2ZSBQcm9maWxlJ1wiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwic2F2ZVN0YXRlKCRjdXJyZW50UHJvZmlsZSgpISlcIj5cclxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPnNhdmU8L21hdC1pY29uPlxyXG4gICAgICA8c3Bhbj57eyRjdXJyZW50UHJvZmlsZSgpfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGVsc2VcclxuICB7XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1saW5lXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaXJzdC1pbi1saW5lIGZpcnN0LWJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwiYWRkU3RhdGUoZGVmYXVsdE5hbWUsIG0uY2hlY2tlZCk7XCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2F2ZS1mb3ItZGVmYXVsdC1pY29uIGJ1dHRvbi1zYXZlLWljb25cIiBjb2xvcj1cInByaW1hcnlcIj5zYXZlPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3Bhbj5TYXZlIGFzIDxzcGFuIGNsYXNzPVwiY3VycmVudC1uYW1lXCI+e3tkZWZhdWx0TmFtZX19PC9zcGFuPiA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIFttYXRUb29sdGlwXT1cIidUb2dnbGUgUHJvZmlsZSBCZWluZyBDcmVhdGVkIEFzIERlZmF1bHQnXCIgc3RvcC1wcm9wYWdhdGlvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm0udG9nZ2xlKClcIiA+XHJcbiAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiY29sb3I6IGdyZWVuO1wiPnt7bS5jaGVja2VkID8gJ3N0YXInIDogJ3N0YXJfYm9yZGVyJ319PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJkaXNwbGF5LW5vbmVcIiBbY2hlY2tlZF09XCJ0cnVlXCIgI20gLz5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuICBAaWYgKGFsbFByb2ZpbGVzUGFuZWxPcGVuZWQoKSkgezxociBjbGFzcz1cImRpdmlkZXJcIi8+fVxyXG4gIDxkaXYgW2NsYXNzXT1cInsgaGlkZTogISRrZXlzKCkubGVuZ3RoIH1cIiBtYXQtbWVudS1pdGVtIHN0b3AtcHJvcGFnYXRpb24gKGNsaWNrKT1cImFsbFByb2ZpbGVzUGFuZWxPcGVuZWQuc2V0KCFhbGxQcm9maWxlc1BhbmVsT3BlbmVkKCkpXCI+QWxsIFByb2ZpbGVzPC9kaXY+XHJcbiAgPGRpdiBbY2xhc3NdPVwieyBoaWRlOiAhYWxsUHJvZmlsZXNQYW5lbE9wZW5lZCgpLCBwYW5lbDogdHJ1ZSB9XCI+XHJcbiAgICBAZm9yIChrZXkgb2YgJGtleXMoKSA7IHRyYWNrIGtleSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1saW5lXCIgW2NsYXNzLmN1cnJlbnQtaW4tbGlzdF09XCJrZXkgPT09ICRjdXJyZW50UHJvZmlsZSgpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBbbWF0VG9vbHRpcF09XCInU2VsZWN0IFByb2ZpbGUnXCIgY2xhc3M9XCJtZW51LWl0ZW0gZmlyc3QtaW4tbGluZVwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPSdzdGF0ZVNlcnZpY2Uuc2V0TG9jYWxDdXJyZW50U3RhdGUoeyB0YWJsZUlkOiAkdGFibGVJZCgpLCBjdXJyZW50U3RhdGVLZXk6IGtleX0pJz5cclxuICAgICAgICAgIDxzcGFuPnt7a2V5fX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgQGlmKGtleSAhPT0gJGRlZmF1bHRQcm9maWxlKCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgPGJ1dHRvbiBbbWF0VG9vbHRpcF09XCInVG9nZ2xlIFByb2ZpbGUgQmVpbmcgRGVmYXVsdCdcIiBzdG9wLXByb3BhZ2F0aW9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2V0RGVmYXVsdChrZXkpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImNvbG9yOiBncmVlbjtcIj5zdGFyX2JvcmRlcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICA8YnV0dG9uIFttYXRUb29sdGlwXT1cIidUb2dnbGUgUHJvZmlsZSBCZWluZyBEZWZhdWx0J1wiIHN0b3AtcHJvcGFnYXRpb24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ1bnNldERlZmF1bHQoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogZ3JlZW47XCI+c3RhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGJ1dHRvbiBbbWF0VG9vbHRpcF09XCInRGVsZXRlIFByb2ZpbGUnXCIgY2xhc3M9XCJsYXN0LWluLWxpbmVcIiBzdG9wLXByb3BhZ2F0aW9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPSdzdGF0ZVNlcnZpY2UuZGVsZXRlUHJvZmlsZUZyb21Mb2NhbEFuZFN0b3JhZ2UoJHRhYmxlSWQoKSwga2V5KSc+XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9J3dhcm4nPmRlbGV0ZV9mb3JldmVyPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8aHIgY2xhc3M9XCJkaXZpZGVyXCIvPlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAobmV3UHJvZmlsZVBhbmVsT3BlbmVkKCkgJiYgIWFsbFByb2ZpbGVzUGFuZWxPcGVuZWQoKSl7PGhyIGNsYXNzPVwiZGl2aWRlclwiLz59XHJcbiAgPGRpdiBtYXQtbWVudS1pdGVtIHN0b3AtcHJvcGFnYXRpb24gKGNsaWNrKT1cIm5ld1Byb2ZpbGVQYW5lbE9wZW5lZC5zZXQoIW5ld1Byb2ZpbGVQYW5lbE9wZW5lZCgpKTsgYWRkZWRLZXkuZm9jdXMoKVwiPkFkZCBOZXcgUHJvZmlsZTwvZGl2PlxyXG4gIDxkaXYgW2NsYXNzXT1cInsgaGlkZTogIW5ld1Byb2ZpbGVQYW5lbE9wZW5lZCgpLCBwYW5lbDogdHJ1ZSB9XCIgPlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtbGluZVwiIHN0b3AtcHJvcGFnYXRpb24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuZXctbmFtZS1pbnB1dFwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiaW5wdXQtaGludFwiPkVudGVyIE5ldyBOYW1lPC9pPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjYWRkZWRLZXk9XCJtYXRJbnB1dFwiIFtuYW1lXT1cIidrZXknXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gW21hdFRvb2x0aXBdPVwiJ1RvZ2dsZSBQcm9maWxlIEJlaW5nIENyZWF0ZWQgQXMgRGVmYXVsdCdcIiBzdG9wLXByb3BhZ2F0aW9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibTIudG9nZ2xlKClcIiA+XHJcbiAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiY29sb3I6IGdyZWVuO1wiPnt7bTIuY2hlY2tlZCA/ICdzdGFyJyA6ICdzdGFyX2JvcmRlcid9fTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiZGlzcGxheS1ub25lXCIgW25nTW9kZWxdPVwiISRkZWZhdWx0UHJvZmlsZSgpXCIgI20yIC8+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJhZGQtYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgW21hdFRvb2x0aXBdPVwiJ0NyZWF0ZSBOZXcgUHJvZmlsZSdcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiYWRkU3RhdGUoYWRkZWRLZXkudmFsdWUsIG0yLmNoZWNrZWQpOyBhZGRlZEtleS52YWx1ZSA9IG51bGxcIiBbZGlzYWJsZWRdPVwiIWFkZGVkS2V5LnZhbHVlXCI+XHJcbiAgICAgIEFkZFxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xpbmUgbGV0LWtleT5cclxuXHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZXMtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3Byb2ZpbGVzLW1lbnUvcHJvZmlsZXMtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3Byb2ZpbGVzLW1lbnUvcHJvZmlsZXMtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9B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SEEwRUEsODBDRHpEWSxPQUFPLDJJQUFFLFVBQVUsaVJBQUUsYUFBYSw0RkFBRSxhQUFhLDh2QkFBRSxTQUFTLGlMQUFFLFFBQVEsaVVBQzlFLFdBQVcsd1ZBQUUsd0JBQXdCLDhEQUFnQixjQUFjLDhCQUFhLFdBQVc7OzJGQUtsRixxQkFBcUI7a0JBVGpDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0I7d0JBQ3hJLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXO3FCQUM1RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlQnVpbGRlclN0YXRlU3RvcmUgfSBmcm9tICcuLi8uLi9uZ3J4L3RhYmxlQnVpbGRlclN0YXRlU3RvcmUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdEJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBDbGlja0VtaXR0ZXJEaXJlY3RpdmUsIERpYWxvZ0RpcmVjdGl2ZSwgRnVuY3Rpb25QaXBlLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgTWF0SW5wdXQsIE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RiLXByb2ZpbGVzLW1lbnUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0SWNvbiwgTWF0VG9vbHRpcCwgTWF0SWNvbkJ1dHRvbiwgTWF0TWVudU1vZHVsZSwgTWF0QnV0dG9uLCBNYXRJbnB1dCwgRGlhbG9nRGlyZWN0aXZlLCBDbGlja0VtaXR0ZXJEaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0Q2hlY2tib3gsIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgRnVuY3Rpb25QaXBlLCBNYXRJbnB1dE1vZHVsZSwgQXN5bmNQaXBlLCBGb3Jtc01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZmlsZXMtbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9maWxlcy1tZW51LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlc01lbnVDb21wb25lbnQge1xuICBzdGF0ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVCdWlsZGVyU3RhdGVTdG9yZSk7XG4gIHRhYmxlU3RvcmUgPSBpbmplY3QoVGFibGVTdG9yZSk7XG4gICR0YWJsZUlkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBvblNhdmVTdGF0ZSA9IG91dHB1dDxudWxsPigpO1xuICB0cmlnZ2VyID0gdmlld0NoaWxkPE1hdE1lbnVUcmlnZ2VyPigndHJpZ2dlcicpO1xuICBhbGxQcm9maWxlc1BhbmVsT3BlbmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgbmV3UHJvZmlsZVBhbmVsT3BlbmVkID0gc2lnbmFsKGZhbHNlKTtcbiAgJGN1cnJlbnRQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZVNlcnZpY2UuJHNlbGVjdExvY2FsUHJvZmlsZUN1cnJlbnRLZXkodGhpcy4kdGFibGVJZCgpKSgpKTtcbiAgJGRlZmF1bHRQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZVNlcnZpY2UuJHNlbGVjdExvY2FsUHJvZmlsZURlZmF1bHRLZXkodGhpcy4kdGFibGVJZCgpKSgpKTtcbiAgJGtleXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlU2VydmljZS4kc2VsZWN0TG9jYWxQcm9maWxlS2V5cyh0aGlzLiR0YWJsZUlkKCkpKCkpO1xuICBzYXZlU3RhdGUoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZVN0YXRlID0gdGhpcy50YWJsZVN0b3JlLmdldFNhdmFibGVTdGF0ZVNpZ25hbCgpO1xuICAgIHRoaXMub25TYXZlU3RhdGUuZW1pdChudWxsKTtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5zYXZlVGFibGVTZXR0aW5nc1RvTG9jYWxBbmRTdG9yYWdlKHRoaXMuJHRhYmxlSWQoKSwga2V5LCB0YWJsZVN0YXRlKTtcbiAgfVxuXG4gIGFkZFN0YXRlKGtleTogc3RyaW5nLCBhc0RlZmF1bHQ6IGJvb2xlYW4pe1xuICAgIGNvbnN0IHRhYmxlU3RhdGUgPSB0aGlzLnRhYmxlU3RvcmUuZ2V0U2F2YWJsZVN0YXRlU2lnbmFsKCk7XG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UuYWRkTmV3U3RhdGVUb0xvY2FsQW5kU3RvcmFnZSh0aGlzLiR0YWJsZUlkKCksIGtleSwgdGFibGVTdGF0ZSwgYXNEZWZhdWx0KTtcbiAgfVxuXG4gIHNldERlZmF1bHQoa2V5OiBzdHJpbmcpe1xuICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnNldERlZmF1bHRJbkxvY2FsQW5kU3RvcmFnZSh0aGlzLiR0YWJsZUlkKCksIGtleSk7XG4gIH1cblxuICB1bnNldERlZmF1bHQoKXtcbiAgICB0aGlzLnN0YXRlU2VydmljZS51bnNldERlZmF1bHRGcm9tTG9jYWxBbmRTdG9yYWdlKHRoaXMuJHRhYmxlSWQoKSk7XG4gIH1cblxuICBkZWZhdWx0TmFtZSA9ICdNeSBQcm9maWxlJztcbiAgcG9zaXRpb24kID0gbmV3IFN1YmplY3Q8eyB0b3A6IHN0cmluZywgcmlnaHQ6IHN0cmluZ30gfCB1bmRlZmluZWQ+KCk7XG4gIHNldFBvc2l0aW9uID0gKGU6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYocmVjdC50b3AgPT09IDApIHJldHVybjtcbiAgICBjb25zdCBhID0ge1xuICAgICAgcmlnaHQ6IGAkeyh3aW5kb3cuaW5uZXJXaWR0aCAtIHJlY3QucmlnaHQpfXB4YCxcbiAgICAgIHRvcDogYCR7cmVjdC50b3B9cHhgLFxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiAjdHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgW21hdFRvb2x0aXBdPVwiJ1Byb2ZpbGVzJ1wiPlxuICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+cGVvcGxlPC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIChjbG9zZWQpPVwiYWRkZWRLZXkudmFsdWUgPSBudWxsOyBhbGxQcm9maWxlc1BhbmVsT3BlbmVkLnNldChmYWxzZSk7IG5ld1Byb2ZpbGVQYW5lbE9wZW5lZC5zZXQoZmFsc2UpXCI+XG4gIEBpZighISRjdXJyZW50UHJvZmlsZSgpKVxuICB7XG4gICAgPGRpdiBtYXQtbWVudS1pdGVtIFttYXRUb29sdGlwXT1cIidTYXZlIFByb2ZpbGUnXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJzYXZlU3RhdGUoJGN1cnJlbnRQcm9maWxlKCkhKVwiPlxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPnNhdmU8L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3skY3VycmVudFByb2ZpbGUoKX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICB9XG4gIEBlbHNlXG4gIHtcbiAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1saW5lXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZmlyc3QtaW4tbGluZSBmaXJzdC1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImFkZFN0YXRlKGRlZmF1bHROYW1lLCBtLmNoZWNrZWQpO1wiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzYXZlLWZvci1kZWZhdWx0LWljb24gYnV0dG9uLXNhdmUtaWNvblwiIGNvbG9yPVwicHJpbWFyeVwiPnNhdmU8L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj5TYXZlIGFzIDxzcGFuIGNsYXNzPVwiY3VycmVudC1uYW1lXCI+e3tkZWZhdWx0TmFtZX19PC9zcGFuPiA8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gW21hdFRvb2x0aXBdPVwiJ1RvZ2dsZSBQcm9maWxlIEJlaW5nIENyZWF0ZWQgQXMgRGVmYXVsdCdcIiBzdG9wLXByb3BhZ2F0aW9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibS50b2dnbGUoKVwiID5cbiAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiY29sb3I6IGdyZWVuO1wiPnt7bS5jaGVja2VkID8gJ3N0YXInIDogJ3N0YXJfYm9yZGVyJ319PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImRpc3BsYXktbm9uZVwiIFtjaGVja2VkXT1cInRydWVcIiAjbSAvPlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoYWxsUHJvZmlsZXNQYW5lbE9wZW5lZCgpKSB7PGhyIGNsYXNzPVwiZGl2aWRlclwiLz59XG4gIDxkaXYgW2NsYXNzXT1cInsgaGlkZTogISRrZXlzKCkubGVuZ3RoIH1cIiBtYXQtbWVudS1pdGVtIHN0b3AtcHJvcGFnYXRpb24gKGNsaWNrKT1cImFsbFByb2ZpbGVzUGFuZWxPcGVuZWQuc2V0KCFhbGxQcm9maWxlc1BhbmVsT3BlbmVkKCkpXCI+QWxsIFByb2ZpbGVzPC9kaXY+XG4gIDxkaXYgW2NsYXNzXT1cInsgaGlkZTogIWFsbFByb2ZpbGVzUGFuZWxPcGVuZWQoKSwgcGFuZWw6IHRydWUgfVwiPlxuICAgIEBmb3IgKGtleSBvZiAka2V5cygpIDsgdHJhY2sga2V5KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1saW5lXCIgW2NsYXNzLmN1cnJlbnQtaW4tbGlzdF09XCJrZXkgPT09ICRjdXJyZW50UHJvZmlsZSgpXCI+XG4gICAgICAgIDxidXR0b24gW21hdFRvb2x0aXBdPVwiJ1NlbGVjdCBQcm9maWxlJ1wiIGNsYXNzPVwibWVudS1pdGVtIGZpcnN0LWluLWxpbmVcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT0nc3RhdGVTZXJ2aWNlLnNldExvY2FsQ3VycmVudFN0YXRlKHsgdGFibGVJZDogJHRhYmxlSWQoKSwgY3VycmVudFN0YXRlS2V5OiBrZXl9KSc+XG4gICAgICAgICAgPHNwYW4+e3trZXl9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIEBpZihrZXkgIT09ICRkZWZhdWx0UHJvZmlsZSgpKVxuICAgICAgICB7XG4gICAgICAgICAgPGJ1dHRvbiBbbWF0VG9vbHRpcF09XCInVG9nZ2xlIFByb2ZpbGUgQmVpbmcgRGVmYXVsdCdcIiBzdG9wLXByb3BhZ2F0aW9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2V0RGVmYXVsdChrZXkpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogZ3JlZW47XCI+c3Rhcl9ib3JkZXI8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICA8YnV0dG9uIFttYXRUb29sdGlwXT1cIidUb2dnbGUgUHJvZmlsZSBCZWluZyBEZWZhdWx0J1wiIHN0b3AtcHJvcGFnYXRpb24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ1bnNldERlZmF1bHQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiY29sb3I6IGdyZWVuO1wiPnN0YXI8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIDxidXR0b24gW21hdFRvb2x0aXBdPVwiJ0RlbGV0ZSBQcm9maWxlJ1wiIGNsYXNzPVwibGFzdC1pbi1saW5lXCIgc3RvcC1wcm9wYWdhdGlvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT0nc3RhdGVTZXJ2aWNlLmRlbGV0ZVByb2ZpbGVGcm9tTG9jYWxBbmRTdG9yYWdlKCR0YWJsZUlkKCksIGtleSknPlxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj0nd2Fybic+ZGVsZXRlX2ZvcmV2ZXI8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8aHIgY2xhc3M9XCJkaXZpZGVyXCIvPlxuICA8L2Rpdj5cbiAgQGlmIChuZXdQcm9maWxlUGFuZWxPcGVuZWQoKSAmJiAhYWxsUHJvZmlsZXNQYW5lbE9wZW5lZCgpKXs8aHIgY2xhc3M9XCJkaXZpZGVyXCIvPn1cbiAgPGRpdiBtYXQtbWVudS1pdGVtIHN0b3AtcHJvcGFnYXRpb24gKGNsaWNrKT1cIm5ld1Byb2ZpbGVQYW5lbE9wZW5lZC5zZXQoIW5ld1Byb2ZpbGVQYW5lbE9wZW5lZCgpKTsgYWRkZWRLZXkuZm9jdXMoKVwiPkFkZCBOZXcgUHJvZmlsZTwvZGl2PlxuICA8ZGl2IFtjbGFzc109XCJ7IGhpZGU6ICFuZXdQcm9maWxlUGFuZWxPcGVuZWQoKSwgcGFuZWw6IHRydWUgfVwiID5cbiAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1saW5lXCIgc3RvcC1wcm9wYWdhdGlvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuZXctbmFtZS1pbnB1dFwiPlxuICAgICAgICA8aSBjbGFzcz1cImlucHV0LWhpbnRcIj5FbnRlciBOZXcgTmFtZTwvaT5cbiAgICAgICAgPGlucHV0IG1hdElucHV0ICNhZGRlZEtleT1cIm1hdElucHV0XCIgW25hbWVdPVwiJ2tleSdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIFttYXRUb29sdGlwXT1cIidUb2dnbGUgUHJvZmlsZSBCZWluZyBDcmVhdGVkIEFzIERlZmF1bHQnXCIgc3RvcC1wcm9wYWdhdGlvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm0yLnRvZ2dsZSgpXCIgPlxuICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogZ3JlZW47XCI+e3ttMi5jaGVja2VkID8gJ3N0YXInIDogJ3N0YXJfYm9yZGVyJ319PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImRpc3BsYXktbm9uZVwiIFtuZ01vZGVsXT1cIiEkZGVmYXVsdFByb2ZpbGUoKVwiICNtMiAvPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gY2xhc3M9XCJhZGQtYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgW21hdFRvb2x0aXBdPVwiJ0NyZWF0ZSBOZXcgUHJvZmlsZSdcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiYWRkU3RhdGUoYWRkZWRLZXkudmFsdWUsIG0yLmNoZWNrZWQpOyBhZGRlZEtleS52YWx1ZSA9IG51bGxcIiBbZGlzYWJsZWRdPVwiIWFkZGVkS2V5LnZhbHVlXCI+XG4gICAgICBBZGRcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L21hdC1tZW51PlxuXG48bmctdGVtcGxhdGUgI2xpbmUgbGV0LWtleT5cblxuXG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
import {
|
|
1
|
+
import { animationFrameScheduler, Subject } from 'rxjs';
|
|
2
|
+
import { distinctUntilChanged, observeOn } from 'rxjs/operators';
|
|
3
3
|
import { subscriber } from '../../rxjs';
|
|
4
4
|
export class TableVirtualScrollStrategy {
|
|
5
|
-
|
|
5
|
+
itemHeight;
|
|
6
|
+
headerHeight;
|
|
7
|
+
scrolledIndexChange;
|
|
8
|
+
dataLength = 0;
|
|
9
|
+
indexChange = new Subject();
|
|
10
|
+
viewport;
|
|
11
|
+
constructor(itemHeight, headerHeight) {
|
|
6
12
|
this.itemHeight = itemHeight;
|
|
7
|
-
this.
|
|
8
|
-
this.dataLength = 0;
|
|
9
|
-
this.indexChange = new Subject();
|
|
10
|
-
this.contentScrolled$ = new Subject();
|
|
11
|
-
this.sub = subscriber(this.contentScrolled$.pipe(debounceTime(100)), () => {
|
|
12
|
-
this.updateContent();
|
|
13
|
-
});
|
|
13
|
+
this.headerHeight = headerHeight;
|
|
14
14
|
this.scrolledIndexChange = this.indexChange.pipe(distinctUntilChanged());
|
|
15
15
|
}
|
|
16
16
|
attach(viewport) {
|
|
17
17
|
this.viewport = viewport;
|
|
18
18
|
this.onDataLengthChanged();
|
|
19
19
|
}
|
|
20
|
+
contentScrolled$ = new Subject();
|
|
21
|
+
sub = subscriber(this.contentScrolled$.pipe(observeOn(animationFrameScheduler)), () => {
|
|
22
|
+
this.updateContent();
|
|
23
|
+
});
|
|
20
24
|
onContentScrolled() {
|
|
21
25
|
this.contentScrolled$.next();
|
|
22
26
|
}
|
|
@@ -30,19 +34,6 @@ export class TableVirtualScrollStrategy {
|
|
|
30
34
|
this.dataLength = length;
|
|
31
35
|
this.onDataLengthChanged();
|
|
32
36
|
}
|
|
33
|
-
setScrollHeight(rowHeight, headerOffset) {
|
|
34
|
-
this.itemHeight = rowHeight;
|
|
35
|
-
this.headerOffset = headerOffset;
|
|
36
|
-
this.updateContent();
|
|
37
|
-
}
|
|
38
|
-
setItemHeight(rowHeight) {
|
|
39
|
-
this.itemHeight = rowHeight;
|
|
40
|
-
this.updateContent();
|
|
41
|
-
}
|
|
42
|
-
setHeaderOffset(headerOffset) {
|
|
43
|
-
this.headerOffset = headerOffset;
|
|
44
|
-
this.updateContent();
|
|
45
|
-
}
|
|
46
37
|
detach() { }
|
|
47
38
|
onContentRendered() { }
|
|
48
39
|
onRenderedOffsetChanged() {
|
|
@@ -53,16 +44,17 @@ export class TableVirtualScrollStrategy {
|
|
|
53
44
|
if (!this.viewport) {
|
|
54
45
|
return;
|
|
55
46
|
}
|
|
56
|
-
const
|
|
57
|
-
const offset = this.viewport.measureScrollOffset()
|
|
58
|
-
const buffer =
|
|
47
|
+
const amountOfRows = Math.ceil((this.viewport.getViewportSize() - this.headerHeight) / this.itemHeight);
|
|
48
|
+
const offset = this.viewport.measureScrollOffset();
|
|
49
|
+
const buffer = 35;
|
|
59
50
|
const skip = Math.round(offset / this.itemHeight);
|
|
60
|
-
|
|
51
|
+
// always start at an even index so we don't change the color patterns for odd and even rows.
|
|
52
|
+
const index = skip % 2 === 0 ? skip : skip - 1;
|
|
61
53
|
const start = Math.max(0, index - buffer);
|
|
62
|
-
const end = Math.min(this.dataLength, index +
|
|
54
|
+
const end = Math.min(this.dataLength, index + amountOfRows + buffer);
|
|
63
55
|
this.viewport.setRenderedContentOffset(this.itemHeight * start);
|
|
64
56
|
this.viewport.setRenderedRange({ start, end });
|
|
65
57
|
this.indexChange.next(index);
|
|
66
58
|
}
|
|
67
59
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9zY3JvbGwtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHVCQUF1QixFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxNQUFNLE9BQU8sMEJBQTBCO0lBT2pCO0lBQTRCO0lBTmhELG1CQUFtQixDQUFxQjtJQUVoQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ04sV0FBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFDN0MsUUFBUSxDQUE0QjtJQUU1QyxZQUFvQixVQUFrQixFQUFVLFlBQW9CO1FBQWhELGVBQVUsR0FBVixVQUFVLENBQVE7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNsRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBa0M7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdkMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN2QyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FDckMsRUFBRSxHQUFHLEVBQUU7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQyxDQUFDLENBQUE7SUFFRixpQkFBaUI7UUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLEtBQVUsQ0FBQztJQUNqQixpQkFBaUIsS0FBVSxDQUFDO0lBQzVCLHVCQUF1QjtJQUN2QixDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQWEsRUFBRSxRQUF3QjtJQUNyRCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCw2RkFBNkY7UUFDN0YsTUFBTSxLQUFLLEdBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssR0FBRyxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gIFZpcnR1YWxTY3JvbGxTdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG9ic2VydmVPbiB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHN1YnNjcmliZXIgfSBmcm9tICcuLi8uLi9yeGpzJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlVmlydHVhbFNjcm9sbFN0cmF0ZWd5IGltcGxlbWVudHMgVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHtcbiAgc2Nyb2xsZWRJbmRleENoYW5nZTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIHByaXZhdGUgZGF0YUxlbmd0aCA9IDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5kZXhDaGFuZ2UgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgdmlld3BvcnQ/OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpdGVtSGVpZ2h0OiBudW1iZXIsIHByaXZhdGUgaGVhZGVySGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNjcm9sbGVkSW5kZXhDaGFuZ2UgPSB0aGlzLmluZGV4Q2hhbmdlLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICBhdHRhY2godmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnQgPSB2aWV3cG9ydDtcbiAgICB0aGlzLm9uRGF0YUxlbmd0aENoYW5nZWQoKTtcbiAgfVxuXG4gIGNvbnRlbnRTY3JvbGxlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHN1YiA9IHN1YnNjcmliZXIodGhpcy5jb250ZW50U2Nyb2xsZWQkLnBpcGUoXG4gICAgICBvYnNlcnZlT24oYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpXG4gICksICgpID0+IHtcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcbiAgfSlcblxuICBvbkNvbnRlbnRTY3JvbGxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRTY3JvbGxlZCQubmV4dCgpO1xuICB9XG5cbiAgb25EYXRhTGVuZ3RoQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52aWV3cG9ydCkge1xuICAgICAgdGhpcy52aWV3cG9ydC5zZXRUb3RhbENvbnRlbnRTaXplKHRoaXMuZGF0YUxlbmd0aCAqIHRoaXMuaXRlbUhlaWdodCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRhTGVuZ3RoKGxlbmd0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhTGVuZ3RoID0gbGVuZ3RoO1xuICAgIHRoaXMub25EYXRhTGVuZ3RoQ2hhbmdlZCgpO1xuICB9XG5cbiAgZGV0YWNoKCk6IHZvaWQge31cbiAgb25Db250ZW50UmVuZGVyZWQoKTogdm9pZCB7fVxuICBvblJlbmRlcmVkT2Zmc2V0Q2hhbmdlZCgpOiB2b2lkIHtcbiAgfVxuICBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIsIGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvcik6IHZvaWQge1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52aWV3cG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFtb3VudE9mUm93cyA9IE1hdGguY2VpbCgodGhpcy52aWV3cG9ydC5nZXRWaWV3cG9ydFNpemUoKSAtIHRoaXMuaGVhZGVySGVpZ2h0KSAvIHRoaXMuaXRlbUhlaWdodCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy52aWV3cG9ydC5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCk7XG4gICAgY29uc3QgYnVmZmVyID0gMzU7XG5cbiAgICBjb25zdCBza2lwID0gTWF0aC5yb3VuZChvZmZzZXQgLyB0aGlzLml0ZW1IZWlnaHQpO1xuICAgIC8vIGFsd2F5cyBzdGFydCBhdCBhbiBldmVuIGluZGV4IHNvIHdlIGRvbid0IGNoYW5nZSB0aGUgY29sb3IgcGF0dGVybnMgZm9yIG9kZCBhbmQgZXZlbiByb3dzLlxuICAgIGNvbnN0IGluZGV4ID0gIHNraXAgJSAyID09PSAwID8gc2tpcCA6IHNraXAgLSAxO1xuICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgaW5kZXggLSBidWZmZXIpO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHRoaXMuZGF0YUxlbmd0aCwgaW5kZXggKyBhbW91bnRPZlJvd3MgKyBidWZmZXIpO1xuXG4gICAgdGhpcy52aWV3cG9ydC5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQodGhpcy5pdGVtSGVpZ2h0ICogc3RhcnQpO1xuICAgIHRoaXMudmlld3BvcnQuc2V0UmVuZGVyZWRSYW5nZSh7IHN0YXJ0LCBlbmQgfSk7XG5cbiAgICB0aGlzLmluZGV4Q2hhbmdlLm5leHQoaW5kZXgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
2
|
import { ComponentStore } from '@ngrx/component-store';
|
|
3
3
|
import { combineLatest } from 'rxjs';
|
|
4
4
|
import { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';
|
|
5
|
+
import { TableStore } from '../../classes/table-store';
|
|
5
6
|
import { notNull } from '../../../rxjs/rxjs-operators';
|
|
6
7
|
import { FieldType } from '../../interfaces/report-def';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../classes/table-store";
|
|
9
9
|
export class SortMenuComponentStore extends ComponentStore {
|
|
10
|
-
|
|
10
|
+
tableState = inject(TableStore);
|
|
11
|
+
constructor() {
|
|
11
12
|
super({ notSorted: [], sorted: [] });
|
|
12
|
-
this.tableState = tableState;
|
|
13
|
-
this.set = this.updater((state, data) => ({ ...data }));
|
|
14
|
-
this.setSorted = this.updater((state, sorted) => ({ ...state, sorted }));
|
|
15
|
-
this.setNotSorted = this.updater((state, notSorted) => ({ ...state, notSorted }));
|
|
16
|
-
this.sorted$ = this.select(state => state.sorted);
|
|
17
|
-
this.notSorted$ = this.select(state => state.notSorted);
|
|
18
|
-
this.setDirection = this.updater((state, sort) => {
|
|
19
|
-
const index = state.sorted.findIndex(s => s.active === sort.active);
|
|
20
|
-
const sorted = [...state.sorted];
|
|
21
|
-
sorted.splice(index, 1, sort);
|
|
22
|
-
return ({ ...state, sorted });
|
|
23
|
-
});
|
|
24
|
-
this.reset = () => {
|
|
25
|
-
const sorted = this.tableState.sort$.pipe(mergeMap(sort => this.tableState.metaData$.pipe(notNull(), map(meta => sort.map(s => {
|
|
26
|
-
return { ...s, displayName: meta[s.active]?.displayName };
|
|
27
|
-
})))));
|
|
28
|
-
const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(metas => this.tableState.sort$.pipe(map(s => metas
|
|
29
|
-
.filter(meta => !s.some(s => s.active === meta.key) && meta.fieldType !== FieldType.NotMapped && !meta.noSort)
|
|
30
|
-
.map(meta => ({ active: meta.key, displayName: meta.displayName }))))));
|
|
31
|
-
this.set(combineLatest([
|
|
32
|
-
sorted.pipe(distinctSortArray), notSorted.pipe(distinctSortArray)
|
|
33
|
-
]).pipe(map(([sorted, notSorted]) => ({ sorted, notSorted }))));
|
|
34
|
-
};
|
|
35
13
|
}
|
|
36
|
-
|
|
37
|
-
|
|
14
|
+
set = this.updater((state, data) => ({ ...data }));
|
|
15
|
+
setSorted = this.updater((state, sorted) => ({ ...state, sorted }));
|
|
16
|
+
setNotSorted = this.updater((state, notSorted) => ({ ...state, notSorted }));
|
|
17
|
+
sorted$ = this.select(state => state.sorted);
|
|
18
|
+
notSorted$ = this.select(state => state.notSorted);
|
|
19
|
+
setDirection = this.updater((state, sort) => {
|
|
20
|
+
const index = state.sorted.findIndex(s => s.active === sort.active);
|
|
21
|
+
const sorted = [...state.sorted];
|
|
22
|
+
sorted.splice(index, 1, sort);
|
|
23
|
+
return ({ ...state, sorted });
|
|
24
|
+
});
|
|
25
|
+
reset = () => {
|
|
26
|
+
const sorted = this.tableState.sort$.pipe(mergeMap(sort => this.tableState.metaData$.pipe(notNull(), map(meta => sort.map(s => {
|
|
27
|
+
return { ...s, displayName: meta[s.active]?.displayName };
|
|
28
|
+
})))));
|
|
29
|
+
const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(metas => this.tableState.sort$.pipe(map(s => metas
|
|
30
|
+
.filter(meta => !s.some(s => s.active === meta.key) && meta.fieldType !== FieldType.NotMapped && !meta.noSort)
|
|
31
|
+
.map(meta => ({ active: meta.key, displayName: meta.displayName }))))));
|
|
32
|
+
this.set(combineLatest([
|
|
33
|
+
sorted.pipe(distinctSortArray), notSorted.pipe(distinctSortArray)
|
|
34
|
+
]).pipe(map(([sorted, notSorted]) => ({ sorted, notSorted }))));
|
|
35
|
+
};
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SortMenuComponentStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SortMenuComponentStore });
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SortMenuComponentStore, decorators: [{
|
|
40
40
|
type: Injectable
|
|
41
|
-
}], ctorParameters: () => [
|
|
41
|
+
}], ctorParameters: () => [] });
|
|
42
42
|
const equalSortArray = (arr1, arr2) => arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));
|
|
43
43
|
const distinctSortArray = distinctUntilChanged(equalSortArray);
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1tZW51LmNvbXBvbmVudC1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvc29ydC1tZW51L3NvcnQtbWVudS5jb21wb25lbnQtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHeEQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGNBQW1DO0lBQ3JFLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEM7UUFDRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFDTyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUF5QixFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFFN0UsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBc0IsRUFBQyxFQUFFLENBQUEsQ0FBQyxFQUFD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QUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQyxDQUFBO3VHQXhDVSxzQkFBc0I7MkdBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7QUFxRFgsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFtQixFQUFDLElBQW1CLEVBQUUsRUFBRSxDQUNqRSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzVGLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQWlCLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcbmltcG9ydCB7IG5vdE51bGwgfSBmcm9tICcuLi8uLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTb3J0TWVudUNvbXBvbmVudFN0b3JlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8Q29tcG9uZW50U3RvcmVTdGF0ZT4ge1xuICBwcml2YXRlIHRhYmxlU3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XG5cbiAgY29uc3RydWN0b3IoKXtcbiAgICBzdXBlcih7IG5vdFNvcnRlZDpbXSwgc29ydGVkOiBbXX0pXG4gIH1cbiAgcHJpdmF0ZSBzZXQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkYXRhOiBDb21wb25lbnRTdG9yZVN0YXRlKT0+ICh7Li4uZGF0YX0pKTtcblxuICBzZXRTb3J0ZWQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBzb3J0ZWQ6IFNvcnRXaXRoTmFtZVtdKT0+KHsuLi5zdGF0ZSwgc29ydGVkfSkpO1xuXG4gIHNldE5vdFNvcnRlZCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG5vdFNvcnRlZDogU29ydFdpdGhOYW1lW10pPT4oey4uLnN0YXRlLCBub3RTb3J0ZWR9KSk7XG4gIHNvcnRlZCQgPSB0aGlzLnNlbGVjdChzdGF0ZT0+c3RhdGUuc29ydGVkKTtcbiAgbm90U29ydGVkJCA9IHRoaXMuc2VsZWN0KHN0YXRlPT5zdGF0ZS5ub3RTb3J0ZWQpO1xuXG4gIHNldERpcmVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsc29ydDpTb3J0V2l0aE5hbWUpPT57XG4gICAgY29uc3QgaW5kZXggPSBzdGF0ZS5zb3J0ZWQuZmluZEluZGV4KHMgPT4gcy5hY3RpdmUgPT09IHNvcnQuYWN0aXZlKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uc3RhdGUuc29ydGVkXTtcbiAgICBzb3J0ZWQuc3BsaWNlKGluZGV4LDEsc29ydCk7XG4gICAgcmV0dXJuICh7Li4uc3RhdGUsc29ydGVkfSk7XG4gIH0pXG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy50YWJsZVN0YXRlLnNvcnQkLnBpcGUoXG4gICAgICBtZXJnZU1hcChzb3J0ID0+IHRoaXMudGFibGVTdGF0ZS5tZXRhRGF0YSQucGlwZShcbiAgICAgICAgbm90TnVsbCgpLFxuICAgICAgICBtYXAoXG4gICAgICAgIG1ldGEgPT4gc29ydC5tYXAocyA9PiB7XG4gICAgICAgICAgcmV0dXJuICh7Li4ucywgZGlzcGxheU5hbWU6IG1ldGFbcy5hY3RpdmVdPy5kaXNwbGF5TmFtZX0gYXMgU29ydFdpdGhOYW1lKX0pXG4gICAgICApKSlcbiAgICApO1xuICAgIGNvbnN0IG5vdFNvcnRlZCA9IHRoaXMudGFibGVTdGF0ZS5tZXRhRGF0YUFycmF5JC5waXBlKG1lcmdlTWFwKFxuICAgICAgbWV0YXMgPT4gdGhpcy50YWJsZVN0YXRlLnNvcnQkLnBpcGUoXG4gICAgICAgIG1hcChzID0+IG1ldGFzXG4gICAgICAgICAgLmZpbHRlcihtZXRhID0+ICFzLnNvbWUocz0+cy5hY3RpdmU9PT0gbWV0YS5rZXkpICYmIG1ldGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuTm90TWFwcGVkICYmICFtZXRhLm5vU29ydClcbiAgICAgICAgICAubWFwKG1ldGE9Pih7YWN0aXZlOm1ldGEua2V5LGRpc3BsYXlOYW1lIDogbWV0YS5kaXNwbGF5TmFtZX0gYXMgU29ydFdpdGhOYW1lKSkpXG4gICAgICApXG4gICAgKSk7XG4gICAgdGhpcy5zZXQoY29tYmluZUxhdGVzdChbXG4gICAgICBzb3J0ZWQucGlwZShkaXN0aW5jdFNvcnRBcnJheSksbm90U29ydGVkLnBpcGUoZGlzdGluY3RTb3J0QXJyYXkpXG4gICAgXSkucGlwZShtYXAoKFtzb3J0ZWQsbm90U29ydGVkXSk9Pih7c29ydGVkLG5vdFNvcnRlZH0pKSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U3RvcmVTdGF0ZSB7XG4gIHNvcnRlZCA6IFNvcnRXaXRoTmFtZVtdO1xuICBub3RTb3J0ZWQ6IFNvcnRXaXRoTmFtZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRXaXRoTmFtZSBleHRlbmRzIFNvcnR7XG4gIGRpc3BsYXlOYW1lIDogc3RyaW5nO1xufVxuXG5jb25zdCBlcXVhbFNvcnRBcnJheSA9IChhcnIxOlNvcnRXaXRoTmFtZVtdLGFycjI6U29ydFdpdGhOYW1lW10pID0+XG4gIGFycjEubGVuZ3RoID09PSBhcnIyLmxlbmd0aCAmJiBhcnIyLmV2ZXJ5KHMxID0+IGFycjEuc29tZShzMiA9PiBzMS5hY3RpdmUgPT09IHMyLmFjdGl2ZSkpO1xuY29uc3QgZGlzdGluY3RTb3J0QXJyYXkgPSBkaXN0aW5jdFVudGlsQ2hhbmdlZDxTb3J0V2l0aE5hbWVbXT4oZXF1YWxTb3J0QXJyYXkpO1xuIl19
|