@ng-doc/app
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
1 lines • 39.3 kB
Source Map (JSON)
{"version":3,"file":"ng-doc-app-components-api-list.mjs","sources":["../tmp-esm2022/components/api-list/api-list.component.js","../tmp-esm2022/components/api-list/ng-doc-app-components-api-list.js"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal, } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormsModule, ReactiveFormsModule, } from '@angular/forms';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { NgDocKindIconComponent } from '@ng-doc/app/components/kind-icon';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { NgDocAutofocusDirective, NgDocButtonToggleComponent, NgDocIconComponent, NgDocInputStringDirective, NgDocInputWrapperComponent, NgDocRadioGroupDirective, NgDocTextComponent, NgDocTooltipDirective, } from '@ng-doc/ui-kit';\nimport { startWith } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport class NgDocApiListComponent {\n constructor() {\n this.title = input('API References');\n this.segment = input();\n this.apiList = signal([]);\n this.formBuilder = inject(FormBuilder);\n this.route = inject(ActivatedRoute);\n this.router = inject(Router);\n this.httpClient = inject(HttpClient);\n this.formGroup = this.formBuilder.group({\n filter: [''],\n scope: [''],\n type: [''],\n });\n this.filter = toSignal(this.formGroup.valueChanges.pipe(startWith(this.formGroup.value)), {\n initialValue: this.formGroup.value,\n });\n this.scopes = computed(() => asArray(new Set(this.apiList().flatMap((api) => api.title))).sort());\n this.types = computed(() => asArray(new Set(this.apiList()\n .flatMap((api) => api.items)\n .flatMap((item) => item.type))).sort());\n this.route.queryParamMap.pipe(takeUntilDestroyed()).subscribe((paramMap) => this.formGroup.setValue({\n filter: paramMap.get('filter') || null,\n scope: paramMap.get('scope') || null,\n type: paramMap.get('type') || null,\n }));\n this.formGroup.valueChanges\n .pipe(takeUntilDestroyed())\n .subscribe((formValue) => this.router.navigate([], {\n relativeTo: this.route,\n queryParams: formValue,\n queryParamsHandling: 'merge',\n }));\n this.filteredApiList = computed(() => {\n const { filter, scope, type } = this.filter();\n return this.apiList()\n .filter((api) => !scope || api.title === scope)\n .map((api) => ({\n ...api,\n items: api.items\n .filter((item) => item.name.toLowerCase().includes(filter?.toLowerCase() ?? '') &&\n (!type || item.type === type))\n .sort((a, b) => a.type.localeCompare(b.type) || a.name.localeCompare(b.name)),\n }))\n .filter((api) => api.items.length);\n });\n }\n ngOnInit() {\n this.httpClient\n .get(asArray('assets/ng-doc', this.segment(), 'api-list.json').join('/'))\n .subscribe((apiList) => this.apiList.set(apiList));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocApiListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.3\", type: NgDocApiListComponent, isStandalone: true, selector: \"ng-doc-api-list\", inputs: { title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, segment: { classPropertyName: \"segment\", publicName: \"segment\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<h1 ng-doc-text>{{ title() }}</h1>\\n<div class=\\\"ng-doc-api-list-wrapper\\\">\\n <form [formGroup]=\\\"formGroup\\\">\\n @if (types().length) {\\n <h3>Declaration types</h3>\\n <ul class=\\\"ng-doc-filter-list\\\" ngDocRadioGroup formControlName=\\\"type\\\">\\n @for (type of types(); track type) {\\n <li>\\n <button class=\\\"ng-doc-filter-button\\\" ng-doc-button-toggle [value]=\\\"type\\\">\\n <ng-doc-kind-icon [kind]=\\\"type\\\" size=\\\"medium\\\"></ng-doc-kind-icon>\\n {{ type }}\\n </button>\\n </li>\\n }\\n </ul>\\n }\\n\\n @if (scopes().length) {\\n <h3>Scopes</h3>\\n <ul class=\\\"ng-doc-filter-list\\\" ngDocRadioGroup formControlName=\\\"scope\\\">\\n @for (scope of scopes(); track scope) {\\n <li>\\n <button class=\\\"ng-doc-filter-button\\\" ng-doc-button-toggle [value]=\\\"scope\\\">\\n {{ scope }}\\n </button>\\n </li>\\n }\\n </ul>\\n }\\n\\n <h3>Filter</h3>\\n <ng-doc-input-wrapper class=\\\"ng-doc-api-list-filter-input\\\">\\n <ng-doc-icon icon=\\\"search\\\" ngDocInputWrapperLeft></ng-doc-icon>\\n <input\\n ngDocInputString\\n formControlName=\\\"filter\\\"\\n placeholder=\\\"Declaration name...\\\"\\n ngDocAutofocus />\\n </ng-doc-input-wrapper>\\n </form>\\n\\n <div class=\\\"ng-doc-api-list\\\">\\n @for (scope of filteredApiList(); track scope) {\\n <div class=\\\"ng-doc-api-scope\\\">\\n <h3 class=\\\"ng-doc-scope-title\\\" ng-doc-text>{{ scope.title }}</h3>\\n @if (scope.items.length) {\\n <ul class=\\\"ng-doc-scope-items\\\">\\n @for (apiReference of scope.items; track apiReference) {\\n <li class=\\\"ng-doc-scope-item\\\">\\n <a class=\\\"ng-doc-scope-item-link\\\" [routerLink]=\\\"[apiReference.route]\\\">\\n <ng-doc-kind-icon\\n [kind]=\\\"apiReference.type\\\"\\n size=\\\"medium\\\"\\n [ngDocTooltip]=\\\"apiReference.type\\\">\\n </ng-doc-kind-icon>\\n {{ apiReference.name }}\\n </a>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n </div>\\n</div>\\n\", styles: [\":host h1{margin-top:0}:host .ng-doc-filter-list{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--ng-doc-base-gutter);list-style:none;padding:0}@container api-list-wrapper (max-width: 775px){:host .ng-doc-filter-list{grid-template-columns:repeat(4,1fr)}}@container api-list-wrapper (max-width: 600px){:host .ng-doc-filter-list{grid-template-columns:repeat(3,1fr)}}@container api-list-wrapper (max-width: 500px){:host .ng-doc-filter-list{grid-template-columns:repeat(2,1fr)}}@container api-list-wrapper (max-width: 350px){:host .ng-doc-filter-list{grid-template-columns:repeat(1,1fr)}}:host .ng-doc-filter-list .ng-doc-filter-button{justify-content:flex-start;text-wrap:nowrap;width:100%}:host .ng-doc-filter-list .ng-doc-filter-button ng-doc-kind-icon{margin-right:var(--ng-doc-base-gutter)}:host .ng-doc-api-list-filter-input{max-width:450px}:host .ng-doc-api-list-wrapper{container:api-list-wrapper/inline-size}:host .ng-doc-api-list-wrapper .ng-doc-api-filter{display:flex;margin-top:calc(var(--ng-doc-base-gutter) * 3);flex-wrap:wrap;gap:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-api-list-wrapper .ng-doc-api-filter .ng-doc-api-filter-item{width:200px}:host .ng-doc-api-list-wrapper .ng-doc-api-list{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope{display:flex;flex-direction:column}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items{margin-top:calc(var(--ng-doc-base-gutter) * 3);list-style:none;padding:0}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item{float:left;width:33%;overflow:hidden;min-width:330px;text-overflow:ellipsis;white-space:nowrap}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item .ng-doc-scope-item-link{display:flex;align-items:center;border-left:1px solid var(--ng-doc-border-color);padding:var(--ng-doc-base-gutter);color:var(--ng-doc-text);background:color-mix(in srgb,var(--ng-doc-scope-item-link-background),transparent 90%);text-decoration:none}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item .ng-doc-scope-item-link:hover{color:var(--ng-doc-heading-color);border-left-color:var(--ng-doc-primary);--ng-doc-scope-item-link-background: var(--ng-doc-primary)}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item .ng-doc-scope-item-link ng-doc-kind-icon{margin-right:var(--ng-doc-base-gutter);text-decoration:none!important}:host ng-doc-input-wrapper ng-doc-icon{--ng-doc-icon-color: var(--ng-doc-text-muted)}\\n\"], dependencies: [{ kind: \"component\", type: NgDocTextComponent, selector: \"[ng-doc-text]\", inputs: [\"size\", \"color\", \"align\", \"absoluteContent\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i1.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"component\", type: NgDocInputWrapperComponent, selector: \"ng-doc-input-wrapper\", inputs: [\"blurContent\", \"blurContext\", \"align\"] }, { kind: \"component\", type: NgDocIconComponent, selector: \"ng-doc-icon\", inputs: [\"icon\", \"customIcon\", \"size\"] }, { kind: \"directive\", type: NgDocInputStringDirective, selector: \"input[ngDocInputString]\" }, { kind: \"directive\", type: NgDocAutofocusDirective, selector: \"[ngDocAutofocus]\", inputs: [\"selectAll\"] }, { kind: \"component\", type: NgDocKindIconComponent, selector: \"ng-doc-kind-icon\", inputs: [\"kind\", \"type\", \"size\"] }, { kind: \"directive\", type: NgDocTooltipDirective, selector: \"[ngDocTooltip]\", inputs: [\"ngDocTooltip\", \"delay\", \"displayOrigin\", \"pointerOrigin\", \"positions\", \"canOpen\", \"panelClass\", \"minHeight\", \"maxHeight\", \"height\", \"minWidth\", \"maxWidth\", \"width\"], outputs: [\"beforeOpen\", \"afterOpen\", \"beforeClose\", \"afterClose\"], exportAs: [\"ngDocTooltip\"] }, { kind: \"directive\", type: RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"directive\", type: NgDocRadioGroupDirective, selector: \"[ngDocRadioGroup]\" }, { kind: \"component\", type: NgDocButtonToggleComponent, selector: \"[ng-doc-button-toggle]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgDocApiListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-doc-api-list', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n NgDocTextComponent,\n FormsModule,\n ReactiveFormsModule,\n NgDocInputWrapperComponent,\n NgDocIconComponent,\n NgDocInputStringDirective,\n NgDocAutofocusDirective,\n NgDocKindIconComponent,\n NgDocTooltipDirective,\n RouterLink,\n NgDocRadioGroupDirective,\n NgDocButtonToggleComponent,\n ], template: \"<h1 ng-doc-text>{{ title() }}</h1>\\n<div class=\\\"ng-doc-api-list-wrapper\\\">\\n <form [formGroup]=\\\"formGroup\\\">\\n @if (types().length) {\\n <h3>Declaration types</h3>\\n <ul class=\\\"ng-doc-filter-list\\\" ngDocRadioGroup formControlName=\\\"type\\\">\\n @for (type of types(); track type) {\\n <li>\\n <button class=\\\"ng-doc-filter-button\\\" ng-doc-button-toggle [value]=\\\"type\\\">\\n <ng-doc-kind-icon [kind]=\\\"type\\\" size=\\\"medium\\\"></ng-doc-kind-icon>\\n {{ type }}\\n </button>\\n </li>\\n }\\n </ul>\\n }\\n\\n @if (scopes().length) {\\n <h3>Scopes</h3>\\n <ul class=\\\"ng-doc-filter-list\\\" ngDocRadioGroup formControlName=\\\"scope\\\">\\n @for (scope of scopes(); track scope) {\\n <li>\\n <button class=\\\"ng-doc-filter-button\\\" ng-doc-button-toggle [value]=\\\"scope\\\">\\n {{ scope }}\\n </button>\\n </li>\\n }\\n </ul>\\n }\\n\\n <h3>Filter</h3>\\n <ng-doc-input-wrapper class=\\\"ng-doc-api-list-filter-input\\\">\\n <ng-doc-icon icon=\\\"search\\\" ngDocInputWrapperLeft></ng-doc-icon>\\n <input\\n ngDocInputString\\n formControlName=\\\"filter\\\"\\n placeholder=\\\"Declaration name...\\\"\\n ngDocAutofocus />\\n </ng-doc-input-wrapper>\\n </form>\\n\\n <div class=\\\"ng-doc-api-list\\\">\\n @for (scope of filteredApiList(); track scope) {\\n <div class=\\\"ng-doc-api-scope\\\">\\n <h3 class=\\\"ng-doc-scope-title\\\" ng-doc-text>{{ scope.title }}</h3>\\n @if (scope.items.length) {\\n <ul class=\\\"ng-doc-scope-items\\\">\\n @for (apiReference of scope.items; track apiReference) {\\n <li class=\\\"ng-doc-scope-item\\\">\\n <a class=\\\"ng-doc-scope-item-link\\\" [routerLink]=\\\"[apiReference.route]\\\">\\n <ng-doc-kind-icon\\n [kind]=\\\"apiReference.type\\\"\\n size=\\\"medium\\\"\\n [ngDocTooltip]=\\\"apiReference.type\\\">\\n </ng-doc-kind-icon>\\n {{ apiReference.name }}\\n </a>\\n </li>\\n }\\n </ul>\\n }\\n </div>\\n }\\n </div>\\n</div>\\n\", styles: [\":host h1{margin-top:0}:host .ng-doc-filter-list{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--ng-doc-base-gutter);list-style:none;padding:0}@container api-list-wrapper (max-width: 775px){:host .ng-doc-filter-list{grid-template-columns:repeat(4,1fr)}}@container api-list-wrapper (max-width: 600px){:host .ng-doc-filter-list{grid-template-columns:repeat(3,1fr)}}@container api-list-wrapper (max-width: 500px){:host .ng-doc-filter-list{grid-template-columns:repeat(2,1fr)}}@container api-list-wrapper (max-width: 350px){:host .ng-doc-filter-list{grid-template-columns:repeat(1,1fr)}}:host .ng-doc-filter-list .ng-doc-filter-button{justify-content:flex-start;text-wrap:nowrap;width:100%}:host .ng-doc-filter-list .ng-doc-filter-button ng-doc-kind-icon{margin-right:var(--ng-doc-base-gutter)}:host .ng-doc-api-list-filter-input{max-width:450px}:host .ng-doc-api-list-wrapper{container:api-list-wrapper/inline-size}:host .ng-doc-api-list-wrapper .ng-doc-api-filter{display:flex;margin-top:calc(var(--ng-doc-base-gutter) * 3);flex-wrap:wrap;gap:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-api-list-wrapper .ng-doc-api-filter .ng-doc-api-filter-item{width:200px}:host .ng-doc-api-list-wrapper .ng-doc-api-list{margin-top:calc(var(--ng-doc-base-gutter) * 2)}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope{display:flex;flex-direction:column}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items{margin-top:calc(var(--ng-doc-base-gutter) * 3);list-style:none;padding:0}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item{float:left;width:33%;overflow:hidden;min-width:330px;text-overflow:ellipsis;white-space:nowrap}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item .ng-doc-scope-item-link{display:flex;align-items:center;border-left:1px solid var(--ng-doc-border-color);padding:var(--ng-doc-base-gutter);color:var(--ng-doc-text);background:color-mix(in srgb,var(--ng-doc-scope-item-link-background),transparent 90%);text-decoration:none}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item .ng-doc-scope-item-link:hover{color:var(--ng-doc-heading-color);border-left-color:var(--ng-doc-primary);--ng-doc-scope-item-link-background: var(--ng-doc-primary)}:host .ng-doc-api-list-wrapper .ng-doc-api-list .ng-doc-api-scope .ng-doc-scope-items .ng-doc-scope-item .ng-doc-scope-item-link ng-doc-kind-icon{margin-right:var(--ng-doc-base-gutter);text-decoration:none!important}:host ng-doc-input-wrapper ng-doc-icon{--ng-doc-icon-color: var(--ng-doc-text-muted)}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHAvY29tcG9uZW50cy9hcGktbGlzdC9hcGktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwcC9jb21wb25lbnRzL2FwaS1saXN0L2FwaS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFDTCxXQUFXLEVBR1gsV0FBVyxFQUNYLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBNEIzQyxNQUFNLE9BQU8scUJBQXFCO0lBaUJoQztRQWhCQSxVQUFLLEdBQUcsS0FBSyxDQUFTLGdCQUFnQixDQUFDLENB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Z0hBQ2xCLFdBQVcsMnBCQUNYLG1CQUFtQixnVkFDbkIsMEJBQTBCLGtIQUMxQixrQkFBa0IsZ0dBQ2xCLHlCQUF5QixvRUFDekIsdUJBQXVCLG9GQUN2QixzQkFBc0IsK0ZBQ3RCLHFCQUFxQiwwVUFDckIsVUFBVSxvT0FDVix3QkFBd0IsOERBQ3hCLDBCQUEwQjs7MkZBR2pCLHFCQUFxQjtrQkFwQmpDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1Asa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixrQkFBa0I7d0JBQ2xCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsVUFBVTt3QkFDVix3QkFBd0I7d0JBQ3hCLDBCQUEwQjtxQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uSW5pdCxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbU1hcCwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5nRG9jS2luZEljb25Db21wb25lbnQgfSBmcm9tICdAbmctZG9jL2FwcC9jb21wb25lbnRzL2tpbmQtaWNvbic7XG5pbXBvcnQgeyBOZ0RvY0Zvcm1QYXJ0aWFsVmFsdWUgfSBmcm9tICdAbmctZG9jL2FwcC90eXBlcyc7XG5pbXBvcnQgeyBhc0FycmF5IH0gZnJvbSAnQG5nLWRvYy9jb3JlL2hlbHBlcnMvYXMtYXJyYXknO1xuaW1wb3J0IHsgTmdEb2NBcGlMaXN0LCBOZ0RvY0FwaUxpc3RJdGVtIH0gZnJvbSAnQG5nLWRvYy9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgTmdEb2NBdXRvZm9jdXNEaXJlY3RpdmUsXG4gIE5nRG9jQnV0dG9uVG9nZ2xlQ29tcG9uZW50LFxuICBOZ0RvY0ljb25Db21wb25lbnQsXG4gIE5nRG9jSW5wdXRTdHJpbmdEaXJlY3RpdmUsXG4gIE5nRG9jSW5wdXRXcmFwcGVyQ29tcG9uZW50LFxuICBOZ0RvY1JhZGlvR3JvdXBEaXJlY3RpdmUsXG4gIE5nRG9jVGV4dENvbXBvbmVudCxcbiAgTmdEb2NUb29sdGlwRGlyZWN0aXZlLFxufSBmcm9tICdAbmctZG9jL3VpLWtpdCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBBcGlGaWx0ZXJGb3JtIHtcbiAgZmlsdGVyOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgc2NvcGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICB0eXBlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctZG9jLWFwaS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwaS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBpLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0RvY1RleHRDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ0RvY0lucHV0V3JhcHBlckNvbXBvbmVudCxcbiAgICBOZ0RvY0ljb25Db21wb25lbnQsXG4gICAgTmdEb2NJbnB1dFN0cmluZ0RpcmVjdGl2ZSxcbiAgICBOZ0RvY0F1dG9mb2N1c0RpcmVjdGl2ZSxcbiAgICBOZ0RvY0tpbmRJY29uQ29tcG9uZW50LFxuICAgIE5nRG9jVG9vbHRpcERpcmVjdGl2ZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE5nRG9jUmFkaW9Hcm91cERpcmVjdGl2ZSxcbiAgICBOZ0RvY0J1dHRvblRvZ2dsZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdEb2NBcGlMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCdBUEkgUmVmZXJlbmNlcycpO1xuICBzZWdtZW50ID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIGFwaUxpc3Q6IFdyaXRhYmxlU2lnbmFsPE5nRG9jQXBpTGlzdFtdPiA9IHNpZ25hbChbXSk7XG4gIGZpbHRlcmVkQXBpTGlzdDogU2lnbmFsPE5nRG9jQXBpTGlzdFtdPjtcbiAgZmlsdGVyOiBTaWduYWw8YW55PjtcbiAgc2NvcGVzOiBTaWduYWw8c3RyaW5nW10+O1xuICB0eXBlczogU2lnbmFsPHN0cmluZ1tdPjtcblxuICBwcm90ZWN0ZWQgZm9ybUdyb3VwOiBGb3JtR3JvdXA8QXBpRmlsdGVyRm9ybT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGZpbHRlcjogWycnXSxcbiAgICAgIHNjb3BlOiBbJyddLFxuICAgICAgdHlwZTogWycnXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZmlsdGVyID0gdG9TaWduYWwodGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybUdyb3VwLnZhbHVlKSksIHtcbiAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy5mb3JtR3JvdXAudmFsdWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNjb3BlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgICBhc0FycmF5KG5ldyBTZXQodGhpcy5hcGlMaXN0KCkuZmxhdE1hcCgoYXBpOiBOZ0RvY0FwaUxpc3QpID0+IGFwaS50aXRsZSkpKS5zb3J0KCksXG4gICAgKTtcblxuICAgIHRoaXMudHlwZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgYXNBcnJheShcbiAgICAgICAgbmV3IFNldChcbiAgICAgICAgICB0aGlzLmFwaUxpc3QoKVxuICAgICAgICAgICAgLmZsYXRNYXAoKGFwaTogTmdEb2NBcGlMaXN0KSA9PiBhcGkuaXRlbXMpXG4gICAgICAgICAgICAuZmxhdE1hcCgoaXRlbTogTmdEb2NBcGlMaXN0SXRlbSkgPT4gaXRlbS50eXBlKSxcbiAgICAgICAgKSxcbiAgICAgICkuc29ydCgpLFxuICAgICk7XG5cbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChwYXJhbU1hcDogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLmZvcm1Hcm91cC5zZXRWYWx1ZSh7XG4gICAgICAgIGZpbHRlcjogcGFyYW1NYXAuZ2V0KCdmaWx0ZXInKSB8fCBudWxsLFxuICAgICAgICBzY29wZTogcGFyYW1NYXAuZ2V0KCdzY29wZScpIHx8IG51bGwsXG4gICAgICAgIHR5cGU6IHBhcmFtTWFwLmdldCgndHlwZScpIHx8IG51bGwsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGZvcm1WYWx1ZTogTmdEb2NGb3JtUGFydGlhbFZhbHVlPHR5cGVvZiB0aGlzLmZvcm1Hcm91cD4pID0+XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICBxdWVyeVBhcmFtczogZm9ybVZhbHVlLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgIHRoaXMuZmlsdGVyZWRBcGlMaXN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgeyBmaWx0ZXIsIHNjb3BlLCB0eXBlIH0gPSB0aGlzLmZpbHRlcigpO1xuXG4gICAgICByZXR1cm4gdGhpcy5hcGlMaXN0KClcbiAgICAgICAgLmZpbHRlcigoYXBpOiBOZ0RvY0FwaUxpc3QpID0+ICFzY29wZSB8fCBhcGkudGl0bGUgPT09IHNjb3BlKVxuICAgICAgICAubWFwKChhcGk6IE5nRG9jQXBpTGlzdCkgPT4gKHtcbiAgICAgICAgICAuLi5hcGksXG4gICAgICAgICAgaXRlbXM6IGFwaS5pdGVtc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKGl0ZW06IE5nRG9jQXBpTGlzdEl0ZW0pID0+XG4gICAgICAgICAgICAgICAgaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyPy50b0xvd2VyQ2FzZSgpID8/ICcnKSAmJlxuICAgICAgICAgICAgICAgICghdHlwZSB8fCBpdGVtLnR5cGUgPT09IHR5cGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNvcnQoXG4gICAgICAgICAgICAgIChhOiBOZ0RvY0FwaUxpc3RJdGVtLCBiOiBOZ0RvY0FwaUxpc3RJdGVtKSA9PlxuICAgICAgICAgICAgICAgIGEudHlwZS5sb2NhbGVDb21wYXJlKGIudHlwZSkgfHwgYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pKVxuICAgICAgICAuZmlsdGVyKChhcGk6IE5nRG9jQXBpTGlzdCkgPT4gYXBpLml0ZW1zLmxlbmd0aCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5nZXQ8TmdEb2NBcGlMaXN0W10+KGFzQXJyYXkoJ2Fzc2V0cy9uZy1kb2MnLCB0aGlzLnNlZ21lbnQoKSwgJ2FwaS1saXN0Lmpzb24nKS5qb2luKCcvJykpXG4gICAgICAuc3Vic2NyaWJlKChhcGlMaXN0KSA9PiB0aGlzLmFwaUxpc3Quc2V0KGFwaUxpc3QpKTtcbiAgfVxufVxuIiwiPGgxIG5nLWRvYy10ZXh0Pnt7IHRpdGxlKCkgfX08L2gxPlxuPGRpdiBjbGFzcz1cIm5nLWRvYy1hcGktbGlzdC13cmFwcGVyXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgQGlmICh0eXBlcygpLmxlbmd0aCkge1xuICAgICAgPGgzPkRlY2xhcmF0aW9uIHR5cGVzPC9oMz5cbiAgICAgIDx1bCBjbGFzcz1cIm5nLWRvYy1maWx0ZXItbGlzdFwiIG5nRG9jUmFkaW9Hcm91cCBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCI+XG4gICAgICAgIEBmb3IgKHR5cGUgb2YgdHlwZXMoKTsgdHJhY2sgdHlwZSkge1xuICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuZy1kb2MtZmlsdGVyLWJ1dHRvblwiIG5nLWRvYy1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJ0eXBlXCI+XG4gICAgICAgICAgICAgIDxuZy1kb2Mta2luZC1pY29uIFtraW5kXT1cInR5cGVcIiBzaXplPVwibWVkaXVtXCI+PC9uZy1kb2Mta2luZC1pY29uPlxuICAgICAgICAgICAgICB7eyB0eXBlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIH1cblxuICAgIEBpZiAoc2NvcGVzKCkubGVuZ3RoKSB7XG4gICAgICA8aDM+U2NvcGVzPC9oMz5cbiAgICAgIDx1bCBjbGFzcz1cIm5nLWRvYy1maWx0ZXItbGlzdFwiIG5nRG9jUmFkaW9Hcm91cCBmb3JtQ29udHJvbE5hbWU9XCJzY29wZVwiPlxuICAgICAgICBAZm9yIChzY29wZSBvZiBzY29wZXMoKTsgdHJhY2sgc2NvcGUpIHtcbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmctZG9jLWZpbHRlci1idXR0b25cIiBuZy1kb2MtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwic2NvcGVcIj5cbiAgICAgICAgICAgICAge3sgc2NvcGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgfVxuXG4gICAgPGgzPkZpbHRlcjwvaDM+XG4gICAgPG5nLWRvYy1pbnB1dC13cmFwcGVyIGNsYXNzPVwibmctZG9jLWFwaS1saXN0LWZpbHRlci1pbnB1dFwiPlxuICAgICAgPG5nLWRvYy1pY29uIGljb249XCJzZWFyY2hcIiBuZ0RvY0lucHV0V3JhcHBlckxlZnQ+PC9uZy1kb2MtaWNvbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBuZ0RvY0lucHV0U3RyaW5nXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpbHRlclwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRGVjbGFyYXRpb24gbmFtZS4uLlwiXG4gICAgICAgIG5nRG9jQXV0b2ZvY3VzIC8+XG4gICAgPC9uZy1kb2MtaW5wdXQtd3JhcHBlcj5cbiAgPC9mb3JtPlxuXG4gIDxkaXYgY2xhc3M9XCJuZy1kb2MtYXBpLWxpc3RcIj5cbiAgICBAZm9yIChzY29wZSBvZiBmaWx0ZXJlZEFwaUxpc3QoKTsgdHJhY2sgc2NvcGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJuZy1kb2MtYXBpLXNjb3BlXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIm5nLWRvYy1zY29wZS10aXRsZVwiIG5nLWRvYy10ZXh0Pnt7IHNjb3BlLnRpdGxlIH19PC9oMz5cbiAgICAgICAgQGlmIChzY29wZS5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICA8dWwgY2xhc3M9XCJuZy1kb2Mtc2NvcGUtaXRlbXNcIj5cbiAgICAgICAgICAgIEBmb3IgKGFwaVJlZmVyZW5jZSBvZiBzY29wZS5pdGVtczsgdHJhY2sgYXBpUmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5nLWRvYy1zY29wZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuZy1kb2Mtc2NvcGUtaXRlbS1saW5rXCIgW3JvdXRlckxpbmtdPVwiW2FwaVJlZmVyZW5jZS5yb3V0ZV1cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1kb2Mta2luZC1pY29uXG4gICAgICAgICAgICAgICAgICAgIFtraW5kXT1cImFwaVJlZmVyZW5jZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0RvY1Rvb2x0aXBdPVwiYXBpUmVmZXJlbmNlLnR5cGVcIj5cbiAgICAgICAgICAgICAgICAgIDwvbmctZG9jLWtpbmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIHt7IGFwaVJlZmVyZW5jZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZG9jLWFwcC1jb21wb25lbnRzLWFwaS1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHAvY29tcG9uZW50cy9hcGktbGlzdC9uZy1kb2MtYXBwLWNvbXBvbmVudHMtYXBpLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}