@coolon/angular-ui-powerups 0.0.6 → 0.0.8

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.
Files changed (32) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +19 -21
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/esm2015/coolon-angular-ui-powerups.js +2 -2
  7. package/esm2015/index.js +2 -2
  8. package/esm2015/lib/animations/index.js +2 -2
  9. package/esm2015/lib/animations/slideDownAndUpAnimation.js +29 -0
  10. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +1 -1
  11. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
  12. package/esm2015/lib/place/components/empty-state/empty-state.component.js +1 -1
  13. package/esm2015/public_api.js +2 -2
  14. package/esm5/coolon-angular-ui-powerups.js +2 -2
  15. package/esm5/index.js +2 -2
  16. package/esm5/lib/animations/index.js +2 -2
  17. package/esm5/lib/animations/slideDownAndUpAnimation.js +29 -0
  18. package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +1 -1
  19. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
  20. package/esm5/lib/place/components/empty-state/empty-state.component.js +1 -1
  21. package/esm5/public_api.js +2 -2
  22. package/fesm2015/coolon-angular-ui-powerups.js +21 -22
  23. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  24. package/fesm5/coolon-angular-ui-powerups.js +21 -23
  25. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  26. package/lib/animations/index.d.ts +1 -1
  27. package/lib/animations/slideDownAndUpAnimation.d.ts +5 -0
  28. package/package.json +1 -1
  29. package/styles/styles.scss +15 -0
  30. package/esm2015/lib/animations/slideUpDownAnimation.js +0 -29
  31. package/esm5/lib/animations/slideUpDownAnimation.js +0 -30
  32. package/lib/animations/slideUpDownAnimation.d.ts +0 -1
@@ -5,12 +5,12 @@ import { MatDialog, MatButtonModule, MatDialogModule, MatTabsModule, MatProgress
5
5
  import { BrowserModule } from '@angular/platform-browser';
6
6
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
7
7
  import { __decorate, __metadata, __awaiter } from 'tslib';
8
- import { GarbageCollector, MutableListModel, Constant, UseDelegate, MutableValueModel, assert, Dsl, Logger, ListModel, StoreInListModel, EventListenerList, DelegatingValueModel, lang, UseDelegatingValueModel, ValueModel, StoreInValueModel, Trace, ValueHolder, TransactionObserver, Binding } from '@coolon/pectin';
8
+ import { GarbageCollector, MutableListModel, Constant, UseDelegate, MutableValueModel, assert, Dsl, Logger, ListModel, StoreInListModel, EventListenerList, DelegatingValueModel, lang, UseDelegatingValueModel, ValueModel, StoreInValueModel, Trace, OptionsHelper, ValueHolder, TransactionObserver, Binding } from '@coolon/pectin';
9
9
  import { PortalModule } from '@angular/cdk/portal';
10
10
  import { Deferred } from '@coolon/pectin/lib/promise/deferred.class';
11
11
  import { MatDialog as MatDialog$1 } from '@angular/material/dialog';
12
12
  import { RouterModule, Router, ActivatedRoute, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
13
- import { trigger, state, style, transition, animate } from '@angular/animations';
13
+ import { style, trigger, transition, animate } from '@angular/animations';
14
14
  import ResizeObserver from 'resize-observer-polyfill';
15
15
  import { Memoize } from '@typescript-plus/fast-memoize-decorator';
16
16
  import { isNil } from 'lodash';
@@ -784,7 +784,7 @@ AlertDialogComponent.decorators = [
784
784
  { type: Component, args: [{
785
785
  selector: 'angular-ui-powerups-alert-dialog',
786
786
  template: "<h3 matDialogTitle *ngIf=\"alert.title\">{{alert.title()}}</h3>\n<div matDialogContent>\n <p *ngFor=\"let line of alert.content()\">{{line}}</p>\n</div>\n<p matDialogActions>\n <button mat-raised-button color=\"primary\" (click)=\"done()\">{{alert.ok()}}</button>\n</p>\n",
787
- styles: [":host{display:block;padding:var(--default-padding)}.mat-dialog-actions{justify-content:flex-end}"]
787
+ styles: [":host{display:block;padding:var(--angular-ui-powerups-default-padding)}.mat-dialog-actions{justify-content:flex-end}"]
788
788
  }] }
789
789
  ];
790
790
  /** @nocollapse */
@@ -826,7 +826,7 @@ ConfirmationDialogComponent.decorators = [
826
826
  { type: Component, args: [{
827
827
  selector: 'angular-ui-powerups-confirmation-dialog',
828
828
  template: "<h3 matDialogTitle *ngIf=\"confirm.title\">{{confirm.title()}}</h3>\n<div matDialogContent>\n <p *ngFor=\"let line of confirm.content()\">{{line}}</p>\n</div>\n<p matDialogActions>\n <button mat-button (click)=\"cancel()\">{{confirm.cancel()}}</button>\n <button mat-raised-button [color]=\"isDestructive() ? 'warn' : 'primary'\" (click)=\"done(true)\">{{confirm.ok()}}</button>\n</p>\n\n",
829
- styles: [":host{display:block;padding:var(--default-padding)}.mat-dialog-actions{justify-content:flex-end}"]
829
+ styles: [":host{display:block;padding:var(--angular-ui-powerups-default-padding)}.mat-dialog-actions{justify-content:flex-end}"]
830
830
  }] }
831
831
  ];
832
832
  /** @nocollapse */
@@ -1337,7 +1337,7 @@ EmptyStateComponent.decorators = [
1337
1337
  <ng-content></ng-content>
1338
1338
  </div>
1339
1339
  `,
1340
- styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center}.container{padding:var(--default-padding);border:2px dashed rgba(0,0,0,.2);border-radius:5px;font-size:14px;font-weight:300}"]
1340
+ styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center}.container{padding:var(--angular-ui-powerups-default-padding);border:2px dashed rgba(0,0,0,.2);border-radius:5px;font-size:14px;font-weight:300}"]
1341
1341
  }] }
1342
1342
  ];
1343
1343
  /** @nocollapse */
@@ -1524,27 +1524,26 @@ AngularUiPowerupsModule.decorators = [
1524
1524
  * @fileoverview added by tsickle
1525
1525
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1526
1526
  */
1527
+ /** @type {?} */
1528
+ const defaultHiddenStyleDef = style({
1529
+ opacity: 0,
1530
+ 'height': '0',
1531
+ paddingTop: '0',
1532
+ paddingBottom: '0'
1533
+ });
1527
1534
  /**
1528
1535
  * @param {?} triggerName
1529
- * @param {?=} duration
1536
+ * @param {?=} options
1530
1537
  * @return {?}
1531
1538
  */
1532
- function slideUpDownAnimation(triggerName, duration = "100ms") {
1539
+ function slideDownAndUpAnimation(triggerName, options) {
1540
+ /** @type {?} */
1541
+ const duration = OptionsHelper.get(options).getOptional('duration', '100ms');
1542
+ /** @type {?} */
1543
+ const hiddenStyleDef = OptionsHelper.get(options).getOptional('hiddenStyleDef', defaultHiddenStyleDef);
1533
1544
  return trigger(triggerName, [
1534
- state('true', style({
1535
- 'height': '*',
1536
- 'overflow': 'hidden',
1537
- 'opacity': '1'
1538
- })),
1539
- state('false', style({
1540
- 'height': '0px',
1541
- 'padding-top': '0px',
1542
- 'padding-bottom': '0px',
1543
- 'overflow': 'hidden',
1544
- 'opacity': '0'
1545
- })),
1546
- transition('void => *', []),
1547
- transition('* => *', [animate(duration)])
1545
+ transition(':enter', [hiddenStyleDef, animate('100ms')]),
1546
+ transition(':leave', [animate('100ms', hiddenStyleDef)])
1548
1547
  ]);
1549
1548
  }
1550
1549
 
@@ -2721,5 +2720,5 @@ var ParameterType;
2721
2720
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2722
2721
  */
2723
2722
 
2724
- export { ACTIVITY_DATA, AbstractActivity, AbstractInputComponent, AbstractPlaceComponent, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CommandDirective, ConfirmationDialogComponent, DialogInteractionService, Dimension, DisposableComponent, EmptyStateComponent, FocusBindingDirective, INTERACTION_CONTEXT, InteractionContext, InteractionModule, LeavePlaceGuard, NumberInputComponent, ParameterType, PasswordInputComponent, Place, PlaceModule, PlaceOutletComponent, PlaceRouteGuard, PlaceService, Point, QueryParameter, ResizeAwareComponent, RouteId, RouteParameterBindings, RouteParameterSanitiser, SelectInputComponent, StringInputComponent, slideUpDownAnimation, CommandDirective as ɵa, FocusBindingDirective as ɵb, DisposableComponent as ɵc, NumberInputComponent as ɵd, AbstractInputComponent as ɵe, StringInputComponent as ɵf, PasswordInputComponent as ɵg, SelectInputComponent as ɵh, PlaceModule as ɵi, EmptyStateComponent as ɵj, BusyOverlayComponent as ɵk, PlaceOutletComponent as ɵl, PlaceService as ɵm, InteractionModule as ɵn, ActivityContainerComponent as ɵo, ConfirmationDialogComponent as ɵp, AbstractActivity as ɵq, ACTIVITY_DATA as ɵr, AlertDialogComponent as ɵt, ActivityOutletComponent as ɵv, DialogInteractionService as ɵw, InteractionContext as ɵx };
2723
+ export { ACTIVITY_DATA, AbstractActivity, AbstractInputComponent, AbstractPlaceComponent, ActivityContainerComponent, ActivityOutletComponent, AlertDialogComponent, AngularUiPowerupsModule, Bounds, BusyOverlayComponent, CommandDirective, ConfirmationDialogComponent, DialogInteractionService, Dimension, DisposableComponent, EmptyStateComponent, FocusBindingDirective, INTERACTION_CONTEXT, InteractionContext, InteractionModule, LeavePlaceGuard, NumberInputComponent, ParameterType, PasswordInputComponent, Place, PlaceModule, PlaceOutletComponent, PlaceRouteGuard, PlaceService, Point, QueryParameter, ResizeAwareComponent, RouteId, RouteParameterBindings, RouteParameterSanitiser, SelectInputComponent, StringInputComponent, slideDownAndUpAnimation, CommandDirective as ɵa, FocusBindingDirective as ɵb, DisposableComponent as ɵc, NumberInputComponent as ɵd, AbstractInputComponent as ɵe, StringInputComponent as ɵf, PasswordInputComponent as ɵg, SelectInputComponent as ɵh, PlaceModule as ɵi, EmptyStateComponent as ɵj, BusyOverlayComponent as ɵk, PlaceOutletComponent as ɵl, PlaceService as ɵm, InteractionModule as ɵn, ActivityContainerComponent as ɵo, ConfirmationDialogComponent as ɵp, AbstractActivity as ɵq, ACTIVITY_DATA as ɵr, AlertDialogComponent as ɵt, ActivityOutletComponent as ɵv, DialogInteractionService as ɵw, InteractionContext as ɵx };
2725
2724
  //# sourceMappingURL=coolon-angular-ui-powerups.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coolon-angular-ui-powerups.js","sources":["ng://@coolon/angular-ui-powerups/lib/components/disposable-component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/abstract-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/number-input/number-input.component.ts","ng://@coolon/angular-ui-powerups/lib/directives/command.directive.ts","ng://@coolon/angular-ui-powerups/lib/directives/focus-binding.directive.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/string-input/string-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/password-input/password-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/select-input/select-input.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/abstract-activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/alert-dialog/alert-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-container/activity-container.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/dialog-interaction.service.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction.module.ts","ng://@coolon/angular-ui-powerups/lib/place/components/busy-overlay/busy-overlay.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/empty-state/empty-state.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.service.ts","ng://@coolon/angular-ui-powerups/lib/place/components/place-outlet/place-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.module.ts","ng://@coolon/angular-ui-powerups/lib/angular-ui-powerups.module.ts","ng://@coolon/angular-ui-powerups/lib/animations/slideUpDownAnimation.ts","ng://@coolon/angular-ui-powerups/lib/components/types/dimension.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/point.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/bounds.class.ts","ng://@coolon/angular-ui-powerups/lib/components/resize-aware.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/alert.ts","ng://@coolon/angular-ui-powerups/lib/interaction/confirm.ts","ng://@coolon/angular-ui-powerups/lib/interaction/result.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet-context.ts","ng://@coolon/angular-ui-powerups/lib/place/place.decorator.ts","ng://@coolon/angular-ui-powerups/lib/place/route/route-parameter-bindings.ts","ng://@coolon/angular-ui-powerups/lib/place/abstract-place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/leave-place.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/route-parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/place-route.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/json-types.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-decorators.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-definition.class.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-type.ts"],"sourcesContent":["import {OnDestroy} from '@angular/core';\nimport {GarbageCollector} from '@coolon/pectin';\n\nexport class DisposableComponent extends GarbageCollector implements OnDestroy {\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\n","/* tslint:disable:no-input-rename */\nimport { EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material';\nimport {\n Constant,\n ListModel,\n MutableListModel,\n MutableValueModel,\n UiCommand,\n UseDelegate,\n ValueModel\n} from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\n\nconst EMPTY_ERRORS = new MutableListModel<string>().readonly;\n\nexport abstract class AbstractInputComponent<T> extends DisposableComponent implements OnInit {\n\n @Input() @UseDelegate()\n valueModel: MutableValueModel<T>;\n\n @Input() label: string;\n @Input() floatLabel: 'auto' | 'always' | 'never';\n @Input() hint: string;\n @Input() placeholder: string;\n\n @Input('command.focus') focusCommand: UiCommand.Nullary;\n @Input('command.blur') blurCommand: UiCommand.Nullary;\n @Input('command.enter') enterCommand: UiCommand.Nullary;\n @Input('command.escape') escapeCommand: UiCommand.Nullary;\n @Input('command.click') clickCommand: UiCommand.Nullary;\n\n @Output() focus = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() enterKey = new EventEmitter();\n @Output() escapeKey = new EventEmitter();\n\n readonly errorStateMatcher: ErrorStateMatcher;\n\n @HostListener('click')\n notifyClick() {\n this.safelyInvoke(this.clickCommand);\n }\n\n @HostListener('focusin')\n notifyFocusIn() {\n this.safelyInvoke(this.focusCommand);\n this.focus.emit();\n }\n\n @HostListener('focusout')\n notifyFocusOut() {\n this.safelyInvoke(this.blurCommand);\n this.blur.emit();\n }\n\n\n notifyEnterKey() {\n this.safelyInvoke(this.enterCommand);\n this.enterKey.emit();\n }\n\n notifyEscapeKey() {\n this.safelyInvoke(this.escapeCommand);\n this.escapeKey.emit();\n }\n\n protected safelyInvoke(command: UiCommand.Nullary) {\n if (command && command.isEnabled()) {\n command.execute();\n }\n }\n\n constructor() {\n super();\n const self = this;\n this.errorStateMatcher = {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return self.hasErrors();\n }\n };\n }\n\n ngOnInit(): void {\n // this._focused = this.valueModel['focused'] || new ValueHolder();\n }\n\n isEnabled(): boolean {\n return this.enabled.value;\n }\n\n get enabled(): ValueModel<boolean> {\n // @ts-ignore\n return (this.valueModel as any).enabled || Constant.TRUE;\n }\n\n hasErrors(): boolean {\n return !this.errorList.query().isEmpty();\n }\n\n get errorList(): ListModel<string> {\n return (this.valueModel as any).errorList || EMPTY_ERRORS;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList.value[0] : null;\n }\n\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n\n@Component({\n selector: 'angular-ui-powerups-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss']\n})\nexport class NumberInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import {AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit} from '@angular/core';\nimport {assert, Dsl, GarbageCollector, UiCommand} from '@coolon/pectin';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinCommand]'\n})\nexport class CommandDirective extends GarbageCollector implements OnInit, OnDestroy, AfterViewInit {\n\n @Input()\n pectinCommand: UiCommand.Nullary<any>;\n\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n assert.notNil(this.pectinCommand);\n }\n\n ngAfterViewInit(): void {\n // for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now\n // we need to do this.\n const {chain} = Dsl.disposeWith(this);\n chain.value(this.pectinCommand.enabled).subscribe(enabled => {\n if (enabled) {\n this.elementRef.nativeElement.removeAttribute('disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.setAttribute('href', 'javascript:void');\n }\n } else {\n this.elementRef.nativeElement.setAttribute('disabled', 'disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.removeAttribute('href');\n }\n }\n });\n\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n\n @HostListener('click', ['$event'])\n notifyClick($event: Event) {\n $event.preventDefault();\n $event.stopPropagation();\n if (this.pectinCommand.isEnabled()) {\n this.pectinCommand.execute({event: $event});\n } else {\n console.warn('disabled command clicked, ignoring.');\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, NgZone, OnInit} from '@angular/core';\nimport {Dsl, HasFocusTracking, Logger} from '@coolon/pectin';\nimport {DisposableComponent} from '../components/disposable-component';\n\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinFocusBinding]'\n})\nexport class FocusBindingDirective extends DisposableComponent implements OnInit, AfterViewInit {\n\n private readonly document: Document;\n\n @Input() pectinFocusBinding: HasFocusTracking;\n @Input() focusBindingTarget: HTMLElement;\n\n @HostListener('focusin')\n onFocusIn() {\n this.pectinFocusBinding.focusCallbacks.notifyFocusIn();\n }\n\n @HostListener('focusout')\n onFocusOut() {\n this.pectinFocusBinding.focusCallbacks.notifyFocusOut();\n }\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(DOCUMENT) document: any) {\n super();\n // @see https://stackoverflow.com/questions/49513359/could-not-resolve-type-document-in-angular5/53715642#53715642\n this.document = document as Document;\n }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n // TODO: Make this also track the current enabled/disabled state.\n const {chain} = Dsl.disposeWith(this);\n chain.value(this.pectinFocusBinding.focused).subscribe((focused) => {\n if (focused && !this.alreadyHasFocus()) {\n this.tryAndFocus();\n }\n });\n }\n\n // Hook method for debugging via tracing.\n alreadyHasFocus() {\n return this.isFocused(this.focusTarget);\n }\n\n // Hook method for debugging via tracing.\n isFocused(element: Element): boolean {\n return this.document.activeElement === element;\n }\n\n tryAndFocus(retries: number = 5) {\n if (this.modelShouldStillHaveFocus() && this.canFocus()) {\n if (!this.alreadyHasFocus()) {\n this.focusTarget.focus();\n }\n // if we didn't get the focus we try again later.\n if (!this.alreadyHasFocus()) {\n Logger.get(this).log(`focus failed, trying ${retries} more times`);\n if (retries > 0) {\n // try again on the next paint\n // TODO: is there an angular way of doing this without calling a window function.\n requestAnimationFrame(() => {\n this.tryAndFocus(retries - 1);\n });\n } else {\n Logger.get(this).warn(`Tried to focus but gave up as the component wasn't enabled or visible.`);\n }\n }\n }\n }\n\n get focusTarget(): HTMLElement {\n return this.focusBindingTarget || this.el.nativeElement;\n }\n\n // Hook method for debugging via tracing.\n modelShouldStillHaveFocus() {\n return this.pectinFocusBinding.focused.value;\n }\n\n // Hook method for debugging via tracing.\n canFocus(): boolean {\n const dimension = this.focusTarget.getBoundingClientRect();\n const hasSize = dimension.height >= 0 && dimension.height >= 0;\n // tslint:disable-next-line:no-string-literal\n return hasSize && !this.focusTarget['disabled'];\n }\n}\n","import {Component, OnInit} from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-string-input',\n templateUrl: './string-input.component.html',\n styleUrls: ['./string-input.component.scss']\n})\nexport class StringInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import {Component, OnInit} from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss']\n})\nexport class PasswordInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ListModel, StoreInListModel, UseDelegate } from '@coolon/pectin';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss']\n})\nexport class SelectInputComponent<T = any> extends AbstractInputComponent<T> implements OnInit {\n\n @Input() @UseDelegate()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n optionLabelFormat: (option: T) => any = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { InjectionToken } from '@angular/core';\nimport { Constructable } from '@coolon/pectin';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { Confirm } from './confirm';\n\nexport const INTERACTION_CONTEXT = new InjectionToken<any>('InteractionContext');\n\nexport abstract class InteractionContext {\n\n abstract startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;\n\n abstract confirm(confirm: Confirm): Promise<boolean>;\n\n abstract alert(alert: Alert): Promise<void>;\n}\n","import { DelegatingValueModel, EventListenerList, ValueModel } from '@coolon/pectin';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { Activity } from './activity';\n\nexport class AbstractActivity<D, R, E = any> extends DisposableComponent implements Activity<D, R, E> {\n\n private readonly _doneListeners = new EventListenerList<Activity.CallBack<R>>();\n private readonly _cancelListeners = new EventListenerList<Activity.CallBack<E>>();\n private readonly _finishListeners = new EventListenerList<() => void>();\n\n private readonly _busyModel = new DelegatingValueModel<boolean>().withDefault(false);\n\n onDone(callback: Activity.CallBack<R>) {\n this._doneListeners.add(callback);\n }\n\n onCancel(callback: Activity.CallBack<E>) {\n this._cancelListeners.add(callback);\n }\n\n done(result?: R): Promise<any> {\n return this._doneListeners\n .fireAndWait(l => l(result))\n .finally(() => this.finalizeAndDispose());\n }\n\n cancel(error?: E): Promise<any> {\n return this._cancelListeners\n .fireAndWait(l => l(error))\n .finally(() => this.finalizeAndDispose());\n }\n\n private finalizeAndDispose() {\n // this._activeModel.value = false;\n this._finishListeners.fire(l => l());\n // this._interactionContext = null;\n // this._initialized = false;\n [\n this._finishListeners,\n this._doneListeners,\n this._cancelListeners\n ].forEach(l => l.dispose());\n }\n\n\n get busy(): ValueModel<boolean> {\n return this._busyModel.readonly;\n }\n\n busyWhile(busyModel: ValueModel<boolean>) {\n this._busyModel.setDelegate(busyModel);\n }\n\n isBusy() {\n return this._busyModel.value;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ValueModel } from '@coolon/pectin';\n\nexport const ACTIVITY_DATA = new InjectionToken<any>('InteractionActivityData');\n\nexport interface Activity<D, R, E = any> {\n readonly busy: ValueModel<boolean>;\n\n onDone(callback: Activity.CallBack<R>);\n\n onCancel(callback: Activity.CallBack<E>);\n\n}\n\nexport namespace Activity {\n export type CallBack<T> = (value: T) => void | Promise<any>;\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\n\n@Component({\n selector: 'angular-ui-powerups-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss']\n})\nexport class AlertDialogComponent extends AbstractActivity<Alert, void> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly alert: Alert) {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert } from '@coolon/pectin';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Confirm } from '../../confirm';\n\n@Component({\n selector: 'angular-ui-powerups-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss']\n})\nexport class ConfirmationDialogComponent extends AbstractActivity<Confirm, boolean> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {\n super();\n assert.notNil(confirm);\n console.log(confirm);\n }\n\n ngOnInit() {\n }\n\n isDestructive(): boolean {\n return this.confirm.destructive && this.confirm.destructive();\n }\n}\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatTabGroup } from '@angular/material';\nimport { Constructable, Dsl, MutableListModel } from '@coolon/pectin';\nimport { Deferred } from '@coolon/pectin/lib/promise/deferred.class';\nimport { DisposableComponent } from '../../../components/disposable-component';\n\nimport { Activity } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\nimport { AlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'angular-ui-powerups-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent extends DisposableComponent implements OnInit, AfterViewInit, InteractionContext {\n\n @Input()\n parentInteractionContext: InteractionContext;\n\n @Input()\n initialActivity: ActivityOutletContext<any, any, any>;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n readonly activityTabs = new MutableListModel<ActivityOutletContext<any, any, any>>();\n private obsoleteTabs: ActivityOutletContext<any, any, any>[] = [];\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { observe } = Dsl.disposeWith(this);\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.cleanUpTabs());\n }\n\n initialise<D, R, E>(options: ActivityContainerComponent.ActivityContext<D, R, E>) {\n this.initialActivity = {\n ...options,\n interactionContext: this\n };\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n const deferred = Deferred.defer<R>();\n const context = {\n interactionContext: this,\n activityClass: activityType,\n activityData: data,\n onDone: deferred.resolve,\n onCancel: deferred.reject\n };\n this.activityTabs.push(context);\n this.tabs.selectedIndex = this.activityTabs.length;\n return deferred.promise.finally(() => {\n this.obsoleteTabs.push(context);\n this.tabs.selectedIndex = this.activityTabs.length - 1;\n });\n }\n\n alert(alert: Alert): Promise<void> {\n return this.startActivity(AlertDialogComponent, alert);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this.startActivity(ConfirmationDialogComponent, confirm);\n }\n\n private cleanUpTabs() {\n this.activityTabs.value = this.activityTabs.value.filter(tab => {\n return !this.obsoleteTabs.includes(tab);\n });\n }\n}\n\nexport namespace ActivityContainerComponent {\n\n export interface ActivityContext<D, R, E> {\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Injector,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { Constructable, lang } from '@coolon/pectin';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from './activity-outlet-context';\n\n@Component({\n selector: 'angular-ui-powerups-activity-outlet',\n template: '',\n styleUrls: ['./activity-outlet.component.scss']\n})\nexport class ActivityOutletComponent<D, R, E> implements OnInit, InteractionContext {\n\n @Input()\n interactionContext: InteractionContext;\n\n @Input()\n set activityContext(activityContext: ActivityOutletContext<D, R, E>) {\n this.loadActivity(activityContext);\n };\n\n private activityComponent: ComponentRef<Activity<D, R, E>>;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n }\n\n ngOnInit() {\n }\n\n loadActivity(activityContext: ActivityOutletContext<D, R, E>) {\n const injector = Injector.create({\n providers: [\n {\n provide: InteractionContext,\n useValue: this\n },\n { provide: ACTIVITY_DATA, useValue: activityContext.activityData }\n ],\n parent: this.injector\n });\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityContext.activityClass);\n this.viewContainerRef.clear();\n this.activityComponent = this.viewContainerRef.createComponent(componentFactory, 0, injector);\n this.activityComponent.instance.onDone(activityContext.onDone);\n this.activityComponent.instance.onCancel(activityContext.onCancel);\n }\n\n alert(alert: Alert): Promise<void> {\n return this.interactionContext.alert(alert);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this.interactionContext.confirm(confirm);\n }\n\n startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n return this.interactionContext.startActivity(activityType, data);\n }\n}\n\nexport namespace ActivityOutletComponent {\n\n export class OutletInteractionContext<D, R, E> implements InteractionContext {\n\n constructor(private readonly context: ActivityOutletContext<D, R, E>) {\n }\n\n alert(alert: Alert): Promise<void> {\n return lang.notImplemented();\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return lang.notImplemented();\n }\n\n startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n return lang.notImplemented();\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material';\nimport { Constructable } from '@coolon/pectin';\nimport { Activity } from '../activity';\nimport { Alert } from '../alert';\nimport { ActivityContainerComponent } from '../components/activity-container/activity-container.component';\nimport { AlertDialogComponent } from '../components/alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from '../confirm';\nimport { InteractionContext } from '../interaction-context';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionService extends InteractionContext {\n\n constructor(private readonly dialogService: MatDialog) {\n super();\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this._startActivity(activityType, data);\n }\n\n private _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean = true) {\n const config = {\n data,\n disableClose,\n panelClass: 'dialog-interaction-service',\n autoFocus: false\n };\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent>;\n return new Promise<R>((resolve, reject) => {\n const activityContainer = matDialogRef.componentInstance;\n activityContainer.parentInteractionContext = this;\n activityContainer.initialise({\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n resolve(result);\n matDialogRef.close(result);\n },\n onCancel(error) {\n reject(error);\n matDialogRef.close(error);\n }\n });\n\n matDialogRef.updateSize();\n });\n }\n\n alert(alert: Alert): Promise<void> {\n return this._startActivity(AlertDialogComponent, alert, false);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this._startActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule, MatDialogModule, MatTabsModule } from '@angular/material';\nimport { ActivityContainerComponent } from './components/activity-container/activity-container.component';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { ActivityOutletComponent } from './components/activity-outlet/activity-outlet.component';\nimport { DialogInteractionService } from './services/dialog-interaction.service';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatTabsModule,\n PortalModule\n ],\n declarations: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n AlertDialogComponent,\n ActivityOutletComponent\n ],\n entryComponents: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n AlertDialogComponent\n ],\n providers: [\n DialogInteractionService\n ]\n})\nexport class InteractionModule {\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { StoreInValueModel, UseDelegatingValueModel, ValueModel } from '@coolon/pectin';\n\n@Component({\n selector: 'aup-busy-overlay',\n templateUrl: `./busy-overlay.component.html`,\n styleUrls: ['./busy-overlay.component.scss']\n})\nexport class BusyOverlayComponent implements OnInit {\n\n @Input() @UseDelegatingValueModel()\n busyModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('busyModel')\n busy: boolean;\n\n constructor() {\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'angular-ui-powerups-empty-state',\n template: `\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./empty-state.component.scss']\n})\nexport class EmptyStateComponent implements OnInit {\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MutableListModel, Trace } from '@coolon/pectin';\nimport { PlaceComponent } from './place-component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceService {\n\n private _activePlaces = new MutableListModel<PlaceComponent>();\n\n constructor() {\n }\n\n get activePlaces() {\n return this._activePlaces.readonly;\n }\n\n @Trace()\n onActivate(place: PlaceComponent) {\n this._activePlaces.push(place);\n }\n\n @Trace()\n onDeactivate(place: PlaceComponent) {\n this._activePlaces.remove(place);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PlaceComponent } from '../../place-component';\nimport { PlaceService } from '../../place.service';\n\n@Component({\n selector: 'angular-ui-powerups-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss']\n})\nexport class PlaceOutletComponent implements OnInit {\n\n constructor(private readonly placeService: PlaceService) { }\n\n ngOnInit() {\n }\n\n onActivate($event: PlaceComponent) {\n this.placeService.onActivate($event);\n }\n onDeactivate($event: PlaceComponent) {\n this.placeService.onDeactivate($event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { BusyOverlayComponent } from './components/busy-overlay/busy-overlay.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { PlaceService } from './place.service';\nimport { PlaceOutletComponent } from './components/place-outlet/place-outlet.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n RouterModule\n ],\n declarations: [\n EmptyStateComponent,\n BusyOverlayComponent,\n PlaceOutletComponent\n ],\n entryComponents: [BusyOverlayComponent],\n exports: [\n BusyOverlayComponent,\n PlaceOutletComponent,\n EmptyStateComponent\n ],\n providers: [\n PlaceService\n ]\n})\nexport class PlaceModule {\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NumberInputComponent} from './components/forms/number-input/number-input.component';\nimport { CommandDirective } from './directives/command.directive';\nimport { FocusBindingDirective } from './directives/focus-binding.directive';\nimport { StringInputComponent } from './components/forms/string-input/string-input.component';\nimport { PasswordInputComponent } from './components/forms/password-input/password-input.component';\nimport { SelectInputComponent } from './components/forms/select-input/select-input.component';\nimport { InteractionModule } from './interaction/interaction.module';\nimport { PlaceModule } from './place/place.module';\n\n@NgModule({\n declarations: [\n CommandDirective,\n FocusBindingDirective,\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n ],\n imports: [\n CommonModule,\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n PlaceModule,\n InteractionModule\n ],\n exports: [\n CommandDirective,\n FocusBindingDirective,\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n InteractionModule,\n PlaceModule,\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport function slideUpDownAnimation(triggerName: string, duration:string = \"100ms\") {\n return trigger(triggerName, [\n state('true', style(\n {\n 'height': '*',\n 'overflow': 'hidden',\n 'opacity': '1'\n })),\n state('false', style({\n 'height': '0px',\n 'padding-top': '0px',\n 'padding-bottom': '0px',\n 'overflow': 'hidden',\n 'opacity': '0'\n })),\n transition('void => *', []),\n transition('* => *', [animate(duration)])\n ]);\n}\n\n// export function slideOutLeftAnimation(triggerName: string, duration:string = \"100ms\") {\n// return trigger(triggerName, [\n// state('true', style(\n// {\n// 'width': '*',\n// 'overflow': 'hidden',\n// 'opacity': '1'\n// })),\n// state('false', style({\n// 'width': '0px',\n// 'overflow': 'hidden',\n// 'opacity': '0'\n// })),\n// transition('* => *', [animate(duration)])\n// ]);\n// }\n","export class Dimension {\n constructor(readonly width: number, readonly height: number){}\n}\n","export class Point {\n\n static from(data: { x: number, y: number }) {\n return new Point(data.x, data.y);\n }\n\n constructor(readonly x: number, readonly y: number) {\n }\n\n translate(x: number, y: number): Point {\n return new Point(this.x + x, this.y + y);\n }\n}\n","import { Dimension } from './dimension.class';\nimport { Point } from './point.class';\n\nexport class Bounds extends Dimension {\n\n constructor(readonly top: number, readonly left: number, readonly width: number, readonly height: number) {\n super(width, height);\n }\n\n relativePositionOf(point: { x: number, y: number } | MouseEvent) {\n if (point instanceof MouseEvent) {\n return new Point(point.clientX - this.left, point.clientY - this.top);\n } else {\n return new Point(point.x - this.left, point.y - this.top);\n }\n }\n}\n\nexport namespace Bounds {\n export function ofElement(element: HTMLElement): Bounds {\n const rect = element.getBoundingClientRect();\n return new Bounds(rect.top, rect.left, rect.width, rect.height);\n }\n}\n\n","import {AfterViewInit, ElementRef, NgZone} from '@angular/core';\nimport {ValueHolder, ValueModel} from '@coolon/pectin';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport {DisposableComponent} from './disposable-component';\nimport {Bounds} from './types/bounds.class';\nimport {Point} from './types/point.class';\n\nexport class ResizeAwareComponent extends DisposableComponent implements AfterViewInit {\n\n private _boundsModel = new ValueHolder<Bounds>(new Bounds(0, 0, 0, 0));\n\n constructor(protected readonly elementRef: ElementRef, protected readonly ngZone: NgZone) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.updateBounds();\n const element = this.elementRef.nativeElement;\n const ro = new ResizeObserver((entries, observer) => {\n this.ngZone.run(() => this.updateBounds());\n });\n ro.observe(element);\n this.onDispose(() => ro.disconnect());\n }\n\n get boundsModel(): ValueModel<Bounds> {\n return this._boundsModel.readonly;\n }\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n // TODO: Make this handle body scroll\n public relativePositionOf(point: { x: number, y: number } | MouseEvent): Point {\n return this.bounds.relativePositionOf(point);\n }\n\n get bounds(): Bounds {\n return this._boundsModel.value;\n }\n\n private updateBounds() {\n this._boundsModel.value = Bounds.ofElement(this.nativeElement);\n }\n\n\n}\n\nexport namespace ResizeAwareComponent {\n\n}\n","\nexport interface Alert {\n title?():string;\n content():string[];\n ok():string;\n}\n","import { Alert } from './alert';\n\nexport interface Confirm extends Alert {\n destructive?: () => boolean;\n cancel(): string;\n}\n","export interface Result<R, E> {\n // catch(callback: (error: E) => void): Result<R,E>;\n}\n\nexport namespace Result {\n export interface Callback<R,E> {\n then: <T>(result:R)=>T;\n catch: <T>(result:E)=>T;\n }\n\n}\n\n// const r:Result<string, number> = null;\n\n// r.catch(e => {}).then();\n\n","import { Constructable } from '@coolon/pectin';\nimport { Activity } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\n\n\nexport interface ActivityOutletContext<D, R, E> {\n interactionContext: InteractionContext,\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n}\n","import { assert, Constructable } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport 'reflect-metadata';\nimport { PlaceComponent } from './place-component';\n\nexport function Place(options: Place.Options) {\n return (target: Function) => {\n Reflect.defineMetadata('place.options', options, target);\n };\n}\n\nexport namespace Place {\n export interface Options {\n path: string,\n title: string,\n authenticate?: boolean // defaults to true\n // childOf?: Constructable<PlaceComponent>\n }\n\n export class Descriptor {\n readonly path: string;\n readonly authenticate: boolean;\n readonly title: string;\n\n constructor(placeClass: Constructable<PlaceComponent>, options: Options) {\n assert.notNil(options);\n this.path = options.path;\n this.title = options.title;\n this.authenticate = _.isNil(options.authenticate) || options.authenticate;\n }\n }\n\n export function getDescriptor(klass: Constructable<PlaceComponent>): Descriptor {\n const placeOptions = Reflect.getMetadata('place.options', klass);\n return new Descriptor(klass, placeOptions);\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport {\n Binding,\n Dsl,\n GarbageCollector,\n MutableHasValue,\n MutableValueModel,\n Trace,\n TransactionObserver\n} from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { AbstractPlaceComponent } from '../abstract-place-component';\nimport { ParameterDefinition } from './parameter-definition.class';\n\ninterface ResolvedParameter<T> {\n parameter: ParameterDefinition<T>;\n resolvedValue: T;\n}\n\nclass ResolvedParameters {\n constructor(readonly parameters: ResolvedParameter<any>[]) {\n }\n\n get<T>(parameter: ParameterDefinition<T>): T {\n const resolved = this.parameters.find(p => p.parameter === parameter);\n return resolved ? resolved.resolvedValue : null;\n }\n\n replace<T>(parameter: ParameterDefinition<T>, value: T): ResolvedParameters {\n return new ResolvedParameters(this.parameters.filter(p => p.parameter !== parameter).concat({\n parameter,\n resolvedValue: value\n }));\n }\n\n @Trace()\n protected getFormattedRouteId() {\n const routeIdParam = this.getRouteIdParam();\n return routeIdParam ? routeIdParam.parameter.type.format(routeIdParam.resolvedValue) : null;\n }\n\n private getRouteIdParam() {\n return this.parameters.find(p => p.parameter.isRouteId);\n }\n\n @Trace()\n protected getFormattedParameters() {\n const params = {};\n const routeIdParam = this.parameters.filter(p => !p.parameter.isRouteId).forEach(p => {\n params[p.parameter.name] = p.parameter.type.format(p.resolvedValue);\n });\n return params;\n }\n\n hasRouteId() {\n return !!this.getRouteIdParam();\n }\n\n @Trace()\n redirect(previous: ResolvedParameters, router: Router, activatedRoute: ActivatedRoute) {\n const routeId = this.getFormattedRouteId();\n const relativePath = !!previous.hasRouteId() ? '..' : '.';\n const path = routeId ? [relativePath, routeId, this.getFormattedParameters()] : [relativePath, this.getFormattedParameters()];\n router.navigate(path, {\n relativeTo: activatedRoute,\n });\n }\n}\n\nexport class RouteParameterBindings extends GarbageCollector {\n\n public readonly _incomingRouteChange = new MutableValueModel<boolean>(false);\n\n private txo: TransactionObserver;\n\n private readonly resolvedParameters = new MutableValueModel<ResolvedParameters>();\n\n constructor(private readonly component: any, private readonly router: Router, private readonly activatedRoute: ActivatedRoute) {\n super();\n const { chain, valueOf, before, when, after, observe } = Dsl.disposeWith(this);\n this.txo = new TransactionObserver();//.onEvent(e => console.log(e.toString()));\n\n const routeParameterDefs = Klass.get(component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);\n routeParameterDefs.forEach(parameter => this.installBinding(parameter));\n\n const incomingResolvedRouteParameters = observe.valuesFrom(activatedRoute.paramMap)\n .last()\n .map(params => {\n const result: ResolvedParameter<any>[] = [];\n routeParameterDefs.forEach(parameter => {\n result.push({ parameter, resolvedValue: parameter.type.parse(params.get(parameter.name)) });\n });\n return new ResolvedParameters(result);\n });\n\n incomingResolvedRouteParameters.subscribe(resolvedParameters => {\n this._incomingRouteChange.value = true;\n this.resolvedParameters.value = resolvedParameters;\n this._incomingRouteChange.value = false;\n });\n\n when.valueOf(this.resolvedParameters).changes((params, previous) => {\n params.redirect(previous, router, activatedRoute);\n }, { unless: this.incomingRouteChange });\n\n this.txo.observe('incomingResolvedRouteParameters', incomingResolvedRouteParameters);\n this.txo.observe('this.routeIsChanging', this.incomingRouteChange);\n }\n\n get incomingRouteChange() {\n return this._incomingRouteChange.readonly;\n }\n\n protected installBinding<T>(parameter: ParameterDefinition<T>) {\n const model = this.getModelFor(parameter);\n this.txo.observe(parameter.propertyName, model);\n this.registerDisposable(new Binding(this.resolvedParameters, model, {\n toRight(parameters: ResolvedParameters): T {\n return parameters.get(parameter);\n },\n toLeft(value: T, currentParameters?: ResolvedParameters): ResolvedParameters {\n return currentParameters.replace(parameter, value);\n }\n }));\n }\n\n\n private getModelFor<T>(parameter: ParameterDefinition<T>): MutableHasValue<T> {\n return this.component[parameter.propertyName];\n }\n}\n\nexport namespace RouteParameterBindings {\n export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');\n}\n","import { ActivatedRoute, Router } from '@angular/router';\n\nimport { Constructable, DelegatingValueModel, MutableValueModel, UseDelegate } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { PlaceComponent } from './place-component';\nimport { Place } from './place.decorator';\nimport { RouteParameterBindings } from './route/route-parameter-bindings';\n\nexport class AbstractPlaceComponent extends DisposableComponent implements PlaceComponent {\n\n @UseDelegate()\n readonly titleModel: MutableValueModel<string>;\n\n private routeBindingMediator: RouteParameterBindings;\n\n constructor(protected activatedRoute: ActivatedRoute, router: Router) {\n super();\n this.routeBindingMediator = this.registerDisposable(new RouteParameterBindings(this, router, activatedRoute));\n // See https://coolon.atlassian.net/browse/PEC-59\n (this.titleModel as unknown as DelegatingValueModel<string>).setDefault(this.placeConfig.title);\n }\n\n @Memoize()\n get placeConfig(): Place.Descriptor {\n return Place.getDescriptor(this.constructor as any as Constructable<PlaceComponent>);\n }\n\n canDeactivate(): boolean | Promise<boolean> {\n return true;\n }\n\n}\n","import { ValueModel } from '@coolon/pectin';\n\nexport interface PlaceComponent {\n titleModel:ValueModel<string>;\n canDeactivate(): boolean | Promise<boolean>;\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { PlaceComponent } from '../place-component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LeavePlaceGuard implements CanDeactivate<PlaceComponent> {\n\n constructor(private router: Router, private injector: Injector) {\n }\n\n canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return component.canDeactivate();\n }\n\n}\n","import { Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { assert, Trace } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { ParameterSanitiser } from './parameter-sanitiser';\n\nexport class RouteParameterSanitiser {\n\n private readonly routeParameter: ParameterDefinition<any>;\n private readonly queryParameters: ParameterDefinition<any>[];\n\n private readonly sanitisedParameters: { def: ParameterDefinition<any>, value: string }[] = [];\n\n constructor(readonly parameterDefs: ParameterDefinition<any>[], readonly injector: Injector) {\n this.routeParameter = parameterDefs.find(p => p.isRouteId);\n this.queryParameters = parameterDefs.filter(p => !p.isRouteId);\n }\n\n async sanitise(snapshot: ActivatedRouteSnapshot): Promise<boolean> {\n if (this.routeParameter) {\n const routeOk = await this.sanitiseParameter(this.routeParameter, snapshot.paramMap.get(this.routeParameter.name));\n if (!routeOk) {\n // if the route id isn't ok we redirect immediately as the query params may need to be sanitised in the\n // context of the route id.\n return false;\n }\n }\n for (const param of this.queryParameters) {\n await this.sanitiseParameter(param, snapshot.queryParamMap.get(param.name));\n }\n return this.sanitisedParameters.length === 0;\n }\n\n @Trace()\n async sanitiseParameter<T>(def: ParameterDefinition<T>, formattedInitialValue: string): Promise<boolean> {\n if (def) {\n const sanitiser = this.getSanitiser(def);\n if (sanitiser) {\n const initialValue = def.type.parse(formattedInitialValue);\n const sanitisedValue = await sanitiser.sanitise(initialValue);\n if (initialValue !== sanitisedValue) {\n this.sanitisedParameters.push({ def, value: def.type.format(sanitisedValue) });\n return false;\n }\n }\n }\n return true;\n }\n\n redirect(router: Router) {\n assert.isTruthy(this.sanitisedParameters.length !== 0);\n const sanitisedRouteId = this.sanitisedParameters.find(s => s.def === this.routeParameter);\n if (sanitisedRouteId) {\n return router.navigate(['..', sanitisedRouteId.value]);\n } else {\n const queryParams = this.sanitisedParameters.filter(s => s.def !== this.routeParameter)\n .reduce((params, item) => ({ ...params, [item.def.name]: item.value }), {});\n return router.navigate(['.', queryParams]);\n }\n }\n\n @Memoize()\n private getSanitiser<T>(def: ParameterDefinition<T>): ParameterSanitiser<T> {\n return def.sanitiser ? this.injector.get<ParameterSanitiser<T>>(def.sanitiser, new def.sanitiser()) : null;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanDeactivate,\n Router,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { Observable } from 'rxjs';\nimport { PlaceComponent } from '../place-component';\nimport { RouteParameterBindings } from '../route/route-parameter-bindings';\nimport { RouteParameterSanitiser } from '../route/route-parameter-sanitiser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouteGuard implements CanActivate {\n\n constructor(private router: Router, private injector: Injector) {\n }\n\n @Trace()\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const routeParameters = Klass.get(route.component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);\n const sanitiser = new RouteParameterSanitiser(routeParameters, this.injector);\n return sanitiser.sanitise(route).then(proceed => {\n if (!proceed) {\n sanitiser.redirect(this.router);\n }\n return proceed;\n });\n }\n\n}\n","export type JsonPrimitive = boolean | number | string;\nexport type AnyJson = JsonPrimitive | null | JsonArray | JsonMap;\nexport interface JsonArray extends Array<AnyJson> {}\nexport interface JsonMap { [key: string]: AnyJson; }\n\n","import { assert, Constructable, UseDelegate } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { ParameterSanitiser } from './parameter-sanitiser';\nimport { ParameterType } from './parameter-type';\nimport { RouteParameterBindings } from './route-parameter-bindings';\n\nexport interface ParameterOptions<T> {\n as?: string;\n sanitiser?: Constructable<ParameterSanitiser<T>>;\n}\n\nexport function RouteId<T extends string | number>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator {\n // assert.isTruthy(type.isValid());\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = createDefinition(propertyKey, type, options, true);\n Klass.get(prototype).addToOwnMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\n\nexport function QueryParameter<T>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator {\n // assert.isTruthy(type.isValid());\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = createDefinition(propertyKey, type, options, false);\n Klass.get(prototype).addToOwnMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\nfunction createDefinition<T>(propertyName: symbol | string, type: ParameterType<T>, options: ParameterOptions<T>, routeId: boolean) {\n const opts = Opts.get(options);\n const propertyNameAsString = assert.notNil(propertyName).toString();\n const def: ParameterDefinition<T> = {\n name: opts.getOptional('as', propertyNameAsString),\n propertyName: propertyNameAsString,\n type: assert.notNil(type),\n sanitiser: opts.getOptional('sanitiser', null),\n isRouteId: routeId\n };\n return def;\n}\n","import { Constructable } from '@coolon/pectin';\nimport { ParameterSanitiser } from './parameter-sanitiser';\nimport { ParameterType } from './parameter-type';\n\nexport interface ParameterDefinition<T> {\n readonly name: string;\n readonly propertyName: string;\n readonly type: ParameterType<T>;\n readonly sanitiser: Constructable<ParameterSanitiser<T>>;\n readonly isRouteId: boolean;\n}\n","export interface ParameterSanitiser<T> {\n sanitise(value: T): T | Promise<T>;\n}\n","export interface ParameterType<T> {\n format(value: T): string;\n\n parse(value: string): T;\n}\n\nexport namespace ParameterType {\n\n class StringType implements ParameterType<string> {\n format(value: string): string {\n return value;\n }\n\n parse(value: string): string {\n return value;\n }\n }\n\n class NumberType implements ParameterType<number> {\n format(value: number): string {\n return `${value}`;\n }\n\n parse(value: string): number {\n return +value;\n }\n }\n\n export const STRING = new StringType();\n export const NUMBER = new NumberType();\n}\n"],"names":["tslib_1.__decorate","_.isNil","Memoize"],"mappings":"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"}
1
+ {"version":3,"file":"coolon-angular-ui-powerups.js","sources":["ng://@coolon/angular-ui-powerups/lib/components/disposable-component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/abstract-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/number-input/number-input.component.ts","ng://@coolon/angular-ui-powerups/lib/directives/command.directive.ts","ng://@coolon/angular-ui-powerups/lib/directives/focus-binding.directive.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/string-input/string-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/password-input/password-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/select-input/select-input.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/abstract-activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/alert-dialog/alert-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-container/activity-container.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/dialog-interaction.service.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction.module.ts","ng://@coolon/angular-ui-powerups/lib/place/components/busy-overlay/busy-overlay.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/empty-state/empty-state.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.service.ts","ng://@coolon/angular-ui-powerups/lib/place/components/place-outlet/place-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.module.ts","ng://@coolon/angular-ui-powerups/lib/angular-ui-powerups.module.ts","ng://@coolon/angular-ui-powerups/lib/animations/slideDownAndUpAnimation.ts","ng://@coolon/angular-ui-powerups/lib/components/types/dimension.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/point.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/bounds.class.ts","ng://@coolon/angular-ui-powerups/lib/components/resize-aware.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/alert.ts","ng://@coolon/angular-ui-powerups/lib/interaction/confirm.ts","ng://@coolon/angular-ui-powerups/lib/interaction/result.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet-context.ts","ng://@coolon/angular-ui-powerups/lib/place/place.decorator.ts","ng://@coolon/angular-ui-powerups/lib/place/route/route-parameter-bindings.ts","ng://@coolon/angular-ui-powerups/lib/place/abstract-place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/leave-place.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/route-parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/place-route.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/json-types.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-decorators.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-definition.class.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-type.ts"],"sourcesContent":["import {OnDestroy} from '@angular/core';\nimport {GarbageCollector} from '@coolon/pectin';\n\nexport class DisposableComponent extends GarbageCollector implements OnDestroy {\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\n","/* tslint:disable:no-input-rename */\nimport { EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material';\nimport {\n Constant,\n ListModel,\n MutableListModel,\n MutableValueModel,\n UiCommand,\n UseDelegate,\n ValueModel\n} from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\n\nconst EMPTY_ERRORS = new MutableListModel<string>().readonly;\n\nexport abstract class AbstractInputComponent<T> extends DisposableComponent implements OnInit {\n\n @Input() @UseDelegate()\n valueModel: MutableValueModel<T>;\n\n @Input() label: string;\n @Input() floatLabel: 'auto' | 'always' | 'never';\n @Input() hint: string;\n @Input() placeholder: string;\n\n @Input('command.focus') focusCommand: UiCommand.Nullary;\n @Input('command.blur') blurCommand: UiCommand.Nullary;\n @Input('command.enter') enterCommand: UiCommand.Nullary;\n @Input('command.escape') escapeCommand: UiCommand.Nullary;\n @Input('command.click') clickCommand: UiCommand.Nullary;\n\n @Output() focus = new EventEmitter();\n @Output() blur = new EventEmitter();\n @Output() enterKey = new EventEmitter();\n @Output() escapeKey = new EventEmitter();\n\n readonly errorStateMatcher: ErrorStateMatcher;\n\n @HostListener('click')\n notifyClick() {\n this.safelyInvoke(this.clickCommand);\n }\n\n @HostListener('focusin')\n notifyFocusIn() {\n this.safelyInvoke(this.focusCommand);\n this.focus.emit();\n }\n\n @HostListener('focusout')\n notifyFocusOut() {\n this.safelyInvoke(this.blurCommand);\n this.blur.emit();\n }\n\n\n notifyEnterKey() {\n this.safelyInvoke(this.enterCommand);\n this.enterKey.emit();\n }\n\n notifyEscapeKey() {\n this.safelyInvoke(this.escapeCommand);\n this.escapeKey.emit();\n }\n\n protected safelyInvoke(command: UiCommand.Nullary) {\n if (command && command.isEnabled()) {\n command.execute();\n }\n }\n\n constructor() {\n super();\n const self = this;\n this.errorStateMatcher = {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return self.hasErrors();\n }\n };\n }\n\n ngOnInit(): void {\n // this._focused = this.valueModel['focused'] || new ValueHolder();\n }\n\n isEnabled(): boolean {\n return this.enabled.value;\n }\n\n get enabled(): ValueModel<boolean> {\n // @ts-ignore\n return (this.valueModel as any).enabled || Constant.TRUE;\n }\n\n hasErrors(): boolean {\n return !this.errorList.query().isEmpty();\n }\n\n get errorList(): ListModel<string> {\n return (this.valueModel as any).errorList || EMPTY_ERRORS;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList.value[0] : null;\n }\n\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n\n@Component({\n selector: 'angular-ui-powerups-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss']\n})\nexport class NumberInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import {AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit} from '@angular/core';\nimport {assert, Dsl, GarbageCollector, UiCommand} from '@coolon/pectin';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinCommand]'\n})\nexport class CommandDirective extends GarbageCollector implements OnInit, OnDestroy, AfterViewInit {\n\n @Input()\n pectinCommand: UiCommand.Nullary<any>;\n\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n assert.notNil(this.pectinCommand);\n }\n\n ngAfterViewInit(): void {\n // for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now\n // we need to do this.\n const {chain} = Dsl.disposeWith(this);\n chain.value(this.pectinCommand.enabled).subscribe(enabled => {\n if (enabled) {\n this.elementRef.nativeElement.removeAttribute('disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.setAttribute('href', 'javascript:void');\n }\n } else {\n this.elementRef.nativeElement.setAttribute('disabled', 'disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.removeAttribute('href');\n }\n }\n });\n\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n\n @HostListener('click', ['$event'])\n notifyClick($event: Event) {\n $event.preventDefault();\n $event.stopPropagation();\n if (this.pectinCommand.isEnabled()) {\n this.pectinCommand.execute({event: $event});\n } else {\n console.warn('disabled command clicked, ignoring.');\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, NgZone, OnInit} from '@angular/core';\nimport {Dsl, HasFocusTracking, Logger} from '@coolon/pectin';\nimport {DisposableComponent} from '../components/disposable-component';\n\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinFocusBinding]'\n})\nexport class FocusBindingDirective extends DisposableComponent implements OnInit, AfterViewInit {\n\n private readonly document: Document;\n\n @Input() pectinFocusBinding: HasFocusTracking;\n @Input() focusBindingTarget: HTMLElement;\n\n @HostListener('focusin')\n onFocusIn() {\n this.pectinFocusBinding.focusCallbacks.notifyFocusIn();\n }\n\n @HostListener('focusout')\n onFocusOut() {\n this.pectinFocusBinding.focusCallbacks.notifyFocusOut();\n }\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(DOCUMENT) document: any) {\n super();\n // @see https://stackoverflow.com/questions/49513359/could-not-resolve-type-document-in-angular5/53715642#53715642\n this.document = document as Document;\n }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n // TODO: Make this also track the current enabled/disabled state.\n const {chain} = Dsl.disposeWith(this);\n chain.value(this.pectinFocusBinding.focused).subscribe((focused) => {\n if (focused && !this.alreadyHasFocus()) {\n this.tryAndFocus();\n }\n });\n }\n\n // Hook method for debugging via tracing.\n alreadyHasFocus() {\n return this.isFocused(this.focusTarget);\n }\n\n // Hook method for debugging via tracing.\n isFocused(element: Element): boolean {\n return this.document.activeElement === element;\n }\n\n tryAndFocus(retries: number = 5) {\n if (this.modelShouldStillHaveFocus() && this.canFocus()) {\n if (!this.alreadyHasFocus()) {\n this.focusTarget.focus();\n }\n // if we didn't get the focus we try again later.\n if (!this.alreadyHasFocus()) {\n Logger.get(this).log(`focus failed, trying ${retries} more times`);\n if (retries > 0) {\n // try again on the next paint\n // TODO: is there an angular way of doing this without calling a window function.\n requestAnimationFrame(() => {\n this.tryAndFocus(retries - 1);\n });\n } else {\n Logger.get(this).warn(`Tried to focus but gave up as the component wasn't enabled or visible.`);\n }\n }\n }\n }\n\n get focusTarget(): HTMLElement {\n return this.focusBindingTarget || this.el.nativeElement;\n }\n\n // Hook method for debugging via tracing.\n modelShouldStillHaveFocus() {\n return this.pectinFocusBinding.focused.value;\n }\n\n // Hook method for debugging via tracing.\n canFocus(): boolean {\n const dimension = this.focusTarget.getBoundingClientRect();\n const hasSize = dimension.height >= 0 && dimension.height >= 0;\n // tslint:disable-next-line:no-string-literal\n return hasSize && !this.focusTarget['disabled'];\n }\n}\n","import {Component, OnInit} from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-string-input',\n templateUrl: './string-input.component.html',\n styleUrls: ['./string-input.component.scss']\n})\nexport class StringInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import {Component, OnInit} from '@angular/core';\nimport {AbstractInputComponent} from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss']\n})\nexport class PasswordInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ListModel, StoreInListModel, UseDelegate } from '@coolon/pectin';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'angular-ui-powerups-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss']\n})\nexport class SelectInputComponent<T = any> extends AbstractInputComponent<T> implements OnInit {\n\n @Input() @UseDelegate()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n optionLabelFormat: (option: T) => any = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { InjectionToken } from '@angular/core';\nimport { Constructable } from '@coolon/pectin';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { Confirm } from './confirm';\n\nexport const INTERACTION_CONTEXT = new InjectionToken<any>('InteractionContext');\n\nexport abstract class InteractionContext {\n\n abstract startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;\n\n abstract confirm(confirm: Confirm): Promise<boolean>;\n\n abstract alert(alert: Alert): Promise<void>;\n}\n","import { DelegatingValueModel, EventListenerList, ValueModel } from '@coolon/pectin';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { Activity } from './activity';\n\nexport class AbstractActivity<D, R, E = any> extends DisposableComponent implements Activity<D, R, E> {\n\n private readonly _doneListeners = new EventListenerList<Activity.CallBack<R>>();\n private readonly _cancelListeners = new EventListenerList<Activity.CallBack<E>>();\n private readonly _finishListeners = new EventListenerList<() => void>();\n\n private readonly _busyModel = new DelegatingValueModel<boolean>().withDefault(false);\n\n onDone(callback: Activity.CallBack<R>) {\n this._doneListeners.add(callback);\n }\n\n onCancel(callback: Activity.CallBack<E>) {\n this._cancelListeners.add(callback);\n }\n\n done(result?: R): Promise<any> {\n return this._doneListeners\n .fireAndWait(l => l(result))\n .finally(() => this.finalizeAndDispose());\n }\n\n cancel(error?: E): Promise<any> {\n return this._cancelListeners\n .fireAndWait(l => l(error))\n .finally(() => this.finalizeAndDispose());\n }\n\n private finalizeAndDispose() {\n // this._activeModel.value = false;\n this._finishListeners.fire(l => l());\n // this._interactionContext = null;\n // this._initialized = false;\n [\n this._finishListeners,\n this._doneListeners,\n this._cancelListeners\n ].forEach(l => l.dispose());\n }\n\n\n get busy(): ValueModel<boolean> {\n return this._busyModel.readonly;\n }\n\n busyWhile(busyModel: ValueModel<boolean>) {\n this._busyModel.setDelegate(busyModel);\n }\n\n isBusy() {\n return this._busyModel.value;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ValueModel } from '@coolon/pectin';\n\nexport const ACTIVITY_DATA = new InjectionToken<any>('InteractionActivityData');\n\nexport interface Activity<D, R, E = any> {\n readonly busy: ValueModel<boolean>;\n\n onDone(callback: Activity.CallBack<R>);\n\n onCancel(callback: Activity.CallBack<E>);\n\n}\n\nexport namespace Activity {\n export type CallBack<T> = (value: T) => void | Promise<any>;\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\n\n@Component({\n selector: 'angular-ui-powerups-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss']\n})\nexport class AlertDialogComponent extends AbstractActivity<Alert, void> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly alert: Alert) {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert } from '@coolon/pectin';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Confirm } from '../../confirm';\n\n@Component({\n selector: 'angular-ui-powerups-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss']\n})\nexport class ConfirmationDialogComponent extends AbstractActivity<Confirm, boolean> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {\n super();\n assert.notNil(confirm);\n console.log(confirm);\n }\n\n ngOnInit() {\n }\n\n isDestructive(): boolean {\n return this.confirm.destructive && this.confirm.destructive();\n }\n}\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { MatTabGroup } from '@angular/material';\nimport { Constructable, Dsl, MutableListModel } from '@coolon/pectin';\nimport { Deferred } from '@coolon/pectin/lib/promise/deferred.class';\nimport { DisposableComponent } from '../../../components/disposable-component';\n\nimport { Activity } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\nimport { AlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\n\n@Component({\n selector: 'angular-ui-powerups-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent extends DisposableComponent implements OnInit, AfterViewInit, InteractionContext {\n\n @Input()\n parentInteractionContext: InteractionContext;\n\n @Input()\n initialActivity: ActivityOutletContext<any, any, any>;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n readonly activityTabs = new MutableListModel<ActivityOutletContext<any, any, any>>();\n private obsoleteTabs: ActivityOutletContext<any, any, any>[] = [];\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { observe } = Dsl.disposeWith(this);\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.cleanUpTabs());\n }\n\n initialise<D, R, E>(options: ActivityContainerComponent.ActivityContext<D, R, E>) {\n this.initialActivity = {\n ...options,\n interactionContext: this\n };\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n const deferred = Deferred.defer<R>();\n const context = {\n interactionContext: this,\n activityClass: activityType,\n activityData: data,\n onDone: deferred.resolve,\n onCancel: deferred.reject\n };\n this.activityTabs.push(context);\n this.tabs.selectedIndex = this.activityTabs.length;\n return deferred.promise.finally(() => {\n this.obsoleteTabs.push(context);\n this.tabs.selectedIndex = this.activityTabs.length - 1;\n });\n }\n\n alert(alert: Alert): Promise<void> {\n return this.startActivity(AlertDialogComponent, alert);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this.startActivity(ConfirmationDialogComponent, confirm);\n }\n\n private cleanUpTabs() {\n this.activityTabs.value = this.activityTabs.value.filter(tab => {\n return !this.obsoleteTabs.includes(tab);\n });\n }\n}\n\nexport namespace ActivityContainerComponent {\n\n export interface ActivityContext<D, R, E> {\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n }\n}\n","import {\n AfterViewInit,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Injector,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { Constructable, lang } from '@coolon/pectin';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from './activity-outlet-context';\n\n@Component({\n selector: 'angular-ui-powerups-activity-outlet',\n template: '',\n styleUrls: ['./activity-outlet.component.scss']\n})\nexport class ActivityOutletComponent<D, R, E> implements OnInit, InteractionContext {\n\n @Input()\n interactionContext: InteractionContext;\n\n @Input()\n set activityContext(activityContext: ActivityOutletContext<D, R, E>) {\n this.loadActivity(activityContext);\n };\n\n private activityComponent: ComponentRef<Activity<D, R, E>>;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n }\n\n ngOnInit() {\n }\n\n loadActivity(activityContext: ActivityOutletContext<D, R, E>) {\n const injector = Injector.create({\n providers: [\n {\n provide: InteractionContext,\n useValue: this\n },\n { provide: ACTIVITY_DATA, useValue: activityContext.activityData }\n ],\n parent: this.injector\n });\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityContext.activityClass);\n this.viewContainerRef.clear();\n this.activityComponent = this.viewContainerRef.createComponent(componentFactory, 0, injector);\n this.activityComponent.instance.onDone(activityContext.onDone);\n this.activityComponent.instance.onCancel(activityContext.onCancel);\n }\n\n alert(alert: Alert): Promise<void> {\n return this.interactionContext.alert(alert);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this.interactionContext.confirm(confirm);\n }\n\n startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n return this.interactionContext.startActivity(activityType, data);\n }\n}\n\nexport namespace ActivityOutletComponent {\n\n export class OutletInteractionContext<D, R, E> implements InteractionContext {\n\n constructor(private readonly context: ActivityOutletContext<D, R, E>) {\n }\n\n alert(alert: Alert): Promise<void> {\n return lang.notImplemented();\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return lang.notImplemented();\n }\n\n startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n return lang.notImplemented();\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material';\nimport { Constructable } from '@coolon/pectin';\nimport { Activity } from '../activity';\nimport { Alert } from '../alert';\nimport { ActivityContainerComponent } from '../components/activity-container/activity-container.component';\nimport { AlertDialogComponent } from '../components/alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from '../confirm';\nimport { InteractionContext } from '../interaction-context';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionService extends InteractionContext {\n\n constructor(private readonly dialogService: MatDialog) {\n super();\n }\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this._startActivity(activityType, data);\n }\n\n private _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean = true) {\n const config = {\n data,\n disableClose,\n panelClass: 'dialog-interaction-service',\n autoFocus: false\n };\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent>;\n return new Promise<R>((resolve, reject) => {\n const activityContainer = matDialogRef.componentInstance;\n activityContainer.parentInteractionContext = this;\n activityContainer.initialise({\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n resolve(result);\n matDialogRef.close(result);\n },\n onCancel(error) {\n reject(error);\n matDialogRef.close(error);\n }\n });\n\n matDialogRef.updateSize();\n });\n }\n\n alert(alert: Alert): Promise<void> {\n return this._startActivity(AlertDialogComponent, alert, false);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n return this._startActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule, MatDialogModule, MatTabsModule } from '@angular/material';\nimport { ActivityContainerComponent } from './components/activity-container/activity-container.component';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { ActivityOutletComponent } from './components/activity-outlet/activity-outlet.component';\nimport { DialogInteractionService } from './services/dialog-interaction.service';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatTabsModule,\n PortalModule\n ],\n declarations: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n AlertDialogComponent,\n ActivityOutletComponent\n ],\n entryComponents: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n AlertDialogComponent\n ],\n providers: [\n DialogInteractionService\n ]\n})\nexport class InteractionModule {\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { StoreInValueModel, UseDelegatingValueModel, ValueModel } from '@coolon/pectin';\n\n@Component({\n selector: 'aup-busy-overlay',\n templateUrl: `./busy-overlay.component.html`,\n styleUrls: ['./busy-overlay.component.scss']\n})\nexport class BusyOverlayComponent implements OnInit {\n\n @Input() @UseDelegatingValueModel()\n busyModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('busyModel')\n busy: boolean;\n\n constructor() {\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'angular-ui-powerups-empty-state',\n template: `\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./empty-state.component.scss']\n})\nexport class EmptyStateComponent implements OnInit {\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MutableListModel, Trace } from '@coolon/pectin';\nimport { PlaceComponent } from './place-component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceService {\n\n private _activePlaces = new MutableListModel<PlaceComponent>();\n\n constructor() {\n }\n\n get activePlaces() {\n return this._activePlaces.readonly;\n }\n\n @Trace()\n onActivate(place: PlaceComponent) {\n this._activePlaces.push(place);\n }\n\n @Trace()\n onDeactivate(place: PlaceComponent) {\n this._activePlaces.remove(place);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PlaceComponent } from '../../place-component';\nimport { PlaceService } from '../../place.service';\n\n@Component({\n selector: 'angular-ui-powerups-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss']\n})\nexport class PlaceOutletComponent implements OnInit {\n\n constructor(private readonly placeService: PlaceService) { }\n\n ngOnInit() {\n }\n\n onActivate($event: PlaceComponent) {\n this.placeService.onActivate($event);\n }\n onDeactivate($event: PlaceComponent) {\n this.placeService.onDeactivate($event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { BusyOverlayComponent } from './components/busy-overlay/busy-overlay.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { PlaceService } from './place.service';\nimport { PlaceOutletComponent } from './components/place-outlet/place-outlet.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n RouterModule\n ],\n declarations: [\n EmptyStateComponent,\n BusyOverlayComponent,\n PlaceOutletComponent\n ],\n entryComponents: [BusyOverlayComponent],\n exports: [\n BusyOverlayComponent,\n PlaceOutletComponent,\n EmptyStateComponent\n ],\n providers: [\n PlaceService\n ]\n})\nexport class PlaceModule {\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NumberInputComponent} from './components/forms/number-input/number-input.component';\nimport { CommandDirective } from './directives/command.directive';\nimport { FocusBindingDirective } from './directives/focus-binding.directive';\nimport { StringInputComponent } from './components/forms/string-input/string-input.component';\nimport { PasswordInputComponent } from './components/forms/password-input/password-input.component';\nimport { SelectInputComponent } from './components/forms/select-input/select-input.component';\nimport { InteractionModule } from './interaction/interaction.module';\nimport { PlaceModule } from './place/place.module';\n\n@NgModule({\n declarations: [\n CommandDirective,\n FocusBindingDirective,\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n ],\n imports: [\n CommonModule,\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n PlaceModule,\n InteractionModule\n ],\n exports: [\n CommandDirective,\n FocusBindingDirective,\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n InteractionModule,\n PlaceModule,\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","import { animate, AnimationStyleMetadata, style, transition, trigger } from '@angular/animations';\nimport { OptionsHelper } from '@coolon/pectin';\n\nconst defaultHiddenStyleDef = style({\n opacity: 0,\n 'height': '0',\n paddingTop: '0',\n paddingBottom: '0'\n});\n\nexport function slideDownAndUpAnimation(triggerName: string, options?: {\n duration?: string;\n hiddenStyleDef?: AnimationStyleMetadata;\n}) {\n const duration = OptionsHelper.get(options).getOptional('duration', '100ms');\n const hiddenStyleDef = OptionsHelper.get(options).getOptional('hiddenStyleDef', defaultHiddenStyleDef);\n return trigger(triggerName, [\n transition(':enter', [hiddenStyleDef, animate('100ms')]),\n transition(':leave', [animate('100ms', hiddenStyleDef)])\n ]);\n}\n\n// export function slideOutLeftAnimation(triggerName: string, duration:string = \"100ms\") {\n// return trigger(triggerName, [\n// state('true', style(\n// {\n// 'width': '*',\n// 'overflow': 'hidden',\n// 'opacity': '1'\n// })),\n// state('false', style({\n// 'width': '0px',\n// 'overflow': 'hidden',\n// 'opacity': '0'\n// })),\n// transition('* => *', [animate(duration)])\n// ]);\n// }\n","export class Dimension {\n constructor(readonly width: number, readonly height: number){}\n}\n","export class Point {\n\n static from(data: { x: number, y: number }) {\n return new Point(data.x, data.y);\n }\n\n constructor(readonly x: number, readonly y: number) {\n }\n\n translate(x: number, y: number): Point {\n return new Point(this.x + x, this.y + y);\n }\n}\n","import { Dimension } from './dimension.class';\nimport { Point } from './point.class';\n\nexport class Bounds extends Dimension {\n\n constructor(readonly top: number, readonly left: number, readonly width: number, readonly height: number) {\n super(width, height);\n }\n\n relativePositionOf(point: { x: number, y: number } | MouseEvent) {\n if (point instanceof MouseEvent) {\n return new Point(point.clientX - this.left, point.clientY - this.top);\n } else {\n return new Point(point.x - this.left, point.y - this.top);\n }\n }\n}\n\nexport namespace Bounds {\n export function ofElement(element: HTMLElement): Bounds {\n const rect = element.getBoundingClientRect();\n return new Bounds(rect.top, rect.left, rect.width, rect.height);\n }\n}\n\n","import {AfterViewInit, ElementRef, NgZone} from '@angular/core';\nimport {ValueHolder, ValueModel} from '@coolon/pectin';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport {DisposableComponent} from './disposable-component';\nimport {Bounds} from './types/bounds.class';\nimport {Point} from './types/point.class';\n\nexport class ResizeAwareComponent extends DisposableComponent implements AfterViewInit {\n\n private _boundsModel = new ValueHolder<Bounds>(new Bounds(0, 0, 0, 0));\n\n constructor(protected readonly elementRef: ElementRef, protected readonly ngZone: NgZone) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.updateBounds();\n const element = this.elementRef.nativeElement;\n const ro = new ResizeObserver((entries, observer) => {\n this.ngZone.run(() => this.updateBounds());\n });\n ro.observe(element);\n this.onDispose(() => ro.disconnect());\n }\n\n get boundsModel(): ValueModel<Bounds> {\n return this._boundsModel.readonly;\n }\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n // TODO: Make this handle body scroll\n public relativePositionOf(point: { x: number, y: number } | MouseEvent): Point {\n return this.bounds.relativePositionOf(point);\n }\n\n get bounds(): Bounds {\n return this._boundsModel.value;\n }\n\n private updateBounds() {\n this._boundsModel.value = Bounds.ofElement(this.nativeElement);\n }\n\n\n}\n\nexport namespace ResizeAwareComponent {\n\n}\n","\nexport interface Alert {\n title?():string;\n content():string[];\n ok():string;\n}\n","import { Alert } from './alert';\n\nexport interface Confirm extends Alert {\n destructive?: () => boolean;\n cancel(): string;\n}\n","export interface Result<R, E> {\n // catch(callback: (error: E) => void): Result<R,E>;\n}\n\nexport namespace Result {\n export interface Callback<R,E> {\n then: <T>(result:R)=>T;\n catch: <T>(result:E)=>T;\n }\n\n}\n\n// const r:Result<string, number> = null;\n\n// r.catch(e => {}).then();\n\n","import { Constructable } from '@coolon/pectin';\nimport { Activity } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\n\n\nexport interface ActivityOutletContext<D, R, E> {\n interactionContext: InteractionContext,\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n}\n","import { assert, Constructable } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport 'reflect-metadata';\nimport { PlaceComponent } from './place-component';\n\nexport function Place(options: Place.Options) {\n return (target: Function) => {\n Reflect.defineMetadata('place.options', options, target);\n };\n}\n\nexport namespace Place {\n export interface Options {\n path: string,\n title: string,\n authenticate?: boolean // defaults to true\n // childOf?: Constructable<PlaceComponent>\n }\n\n export class Descriptor {\n readonly path: string;\n readonly authenticate: boolean;\n readonly title: string;\n\n constructor(placeClass: Constructable<PlaceComponent>, options: Options) {\n assert.notNil(options);\n this.path = options.path;\n this.title = options.title;\n this.authenticate = _.isNil(options.authenticate) || options.authenticate;\n }\n }\n\n export function getDescriptor(klass: Constructable<PlaceComponent>): Descriptor {\n const placeOptions = Reflect.getMetadata('place.options', klass);\n return new Descriptor(klass, placeOptions);\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport {\n Binding,\n Dsl,\n GarbageCollector,\n MutableHasValue,\n MutableValueModel,\n Trace,\n TransactionObserver\n} from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { AbstractPlaceComponent } from '../abstract-place-component';\nimport { ParameterDefinition } from './parameter-definition.class';\n\ninterface ResolvedParameter<T> {\n parameter: ParameterDefinition<T>;\n resolvedValue: T;\n}\n\nclass ResolvedParameters {\n constructor(readonly parameters: ResolvedParameter<any>[]) {\n }\n\n get<T>(parameter: ParameterDefinition<T>): T {\n const resolved = this.parameters.find(p => p.parameter === parameter);\n return resolved ? resolved.resolvedValue : null;\n }\n\n replace<T>(parameter: ParameterDefinition<T>, value: T): ResolvedParameters {\n return new ResolvedParameters(this.parameters.filter(p => p.parameter !== parameter).concat({\n parameter,\n resolvedValue: value\n }));\n }\n\n @Trace()\n protected getFormattedRouteId() {\n const routeIdParam = this.getRouteIdParam();\n return routeIdParam ? routeIdParam.parameter.type.format(routeIdParam.resolvedValue) : null;\n }\n\n private getRouteIdParam() {\n return this.parameters.find(p => p.parameter.isRouteId);\n }\n\n @Trace()\n protected getFormattedParameters() {\n const params = {};\n const routeIdParam = this.parameters.filter(p => !p.parameter.isRouteId).forEach(p => {\n params[p.parameter.name] = p.parameter.type.format(p.resolvedValue);\n });\n return params;\n }\n\n hasRouteId() {\n return !!this.getRouteIdParam();\n }\n\n @Trace()\n redirect(previous: ResolvedParameters, router: Router, activatedRoute: ActivatedRoute) {\n const routeId = this.getFormattedRouteId();\n const relativePath = !!previous.hasRouteId() ? '..' : '.';\n const path = routeId ? [relativePath, routeId, this.getFormattedParameters()] : [relativePath, this.getFormattedParameters()];\n router.navigate(path, {\n relativeTo: activatedRoute,\n });\n }\n}\n\nexport class RouteParameterBindings extends GarbageCollector {\n\n public readonly _incomingRouteChange = new MutableValueModel<boolean>(false);\n\n private txo: TransactionObserver;\n\n private readonly resolvedParameters = new MutableValueModel<ResolvedParameters>();\n\n constructor(private readonly component: any, private readonly router: Router, private readonly activatedRoute: ActivatedRoute) {\n super();\n const { chain, valueOf, before, when, after, observe } = Dsl.disposeWith(this);\n this.txo = new TransactionObserver();//.onEvent(e => console.log(e.toString()));\n\n const routeParameterDefs = Klass.get(component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);\n routeParameterDefs.forEach(parameter => this.installBinding(parameter));\n\n const incomingResolvedRouteParameters = observe.valuesFrom(activatedRoute.paramMap)\n .last()\n .map(params => {\n const result: ResolvedParameter<any>[] = [];\n routeParameterDefs.forEach(parameter => {\n result.push({ parameter, resolvedValue: parameter.type.parse(params.get(parameter.name)) });\n });\n return new ResolvedParameters(result);\n });\n\n incomingResolvedRouteParameters.subscribe(resolvedParameters => {\n this._incomingRouteChange.value = true;\n this.resolvedParameters.value = resolvedParameters;\n this._incomingRouteChange.value = false;\n });\n\n when.valueOf(this.resolvedParameters).changes((params, previous) => {\n params.redirect(previous, router, activatedRoute);\n }, { unless: this.incomingRouteChange });\n\n this.txo.observe('incomingResolvedRouteParameters', incomingResolvedRouteParameters);\n this.txo.observe('this.routeIsChanging', this.incomingRouteChange);\n }\n\n get incomingRouteChange() {\n return this._incomingRouteChange.readonly;\n }\n\n protected installBinding<T>(parameter: ParameterDefinition<T>) {\n const model = this.getModelFor(parameter);\n this.txo.observe(parameter.propertyName, model);\n this.registerDisposable(new Binding(this.resolvedParameters, model, {\n toRight(parameters: ResolvedParameters): T {\n return parameters.get(parameter);\n },\n toLeft(value: T, currentParameters?: ResolvedParameters): ResolvedParameters {\n return currentParameters.replace(parameter, value);\n }\n }));\n }\n\n\n private getModelFor<T>(parameter: ParameterDefinition<T>): MutableHasValue<T> {\n return this.component[parameter.propertyName];\n }\n}\n\nexport namespace RouteParameterBindings {\n export const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');\n}\n","import { ActivatedRoute, Router } from '@angular/router';\n\nimport { Constructable, DelegatingValueModel, MutableValueModel, UseDelegate } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { PlaceComponent } from './place-component';\nimport { Place } from './place.decorator';\nimport { RouteParameterBindings } from './route/route-parameter-bindings';\n\nexport class AbstractPlaceComponent extends DisposableComponent implements PlaceComponent {\n\n @UseDelegate()\n readonly titleModel: MutableValueModel<string>;\n\n private routeBindingMediator: RouteParameterBindings;\n\n constructor(protected activatedRoute: ActivatedRoute, router: Router) {\n super();\n this.routeBindingMediator = this.registerDisposable(new RouteParameterBindings(this, router, activatedRoute));\n // See https://coolon.atlassian.net/browse/PEC-59\n (this.titleModel as unknown as DelegatingValueModel<string>).setDefault(this.placeConfig.title);\n }\n\n @Memoize()\n get placeConfig(): Place.Descriptor {\n return Place.getDescriptor(this.constructor as any as Constructable<PlaceComponent>);\n }\n\n canDeactivate(): boolean | Promise<boolean> {\n return true;\n }\n\n}\n","import { ValueModel } from '@coolon/pectin';\n\nexport interface PlaceComponent {\n titleModel:ValueModel<string>;\n canDeactivate(): boolean | Promise<boolean>;\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { PlaceComponent } from '../place-component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LeavePlaceGuard implements CanDeactivate<PlaceComponent> {\n\n constructor(private router: Router, private injector: Injector) {\n }\n\n canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return component.canDeactivate();\n }\n\n}\n","import { Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { assert, Trace } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { ParameterSanitiser } from './parameter-sanitiser';\n\nexport class RouteParameterSanitiser {\n\n private readonly routeParameter: ParameterDefinition<any>;\n private readonly queryParameters: ParameterDefinition<any>[];\n\n private readonly sanitisedParameters: { def: ParameterDefinition<any>, value: string }[] = [];\n\n constructor(readonly parameterDefs: ParameterDefinition<any>[], readonly injector: Injector) {\n this.routeParameter = parameterDefs.find(p => p.isRouteId);\n this.queryParameters = parameterDefs.filter(p => !p.isRouteId);\n }\n\n async sanitise(snapshot: ActivatedRouteSnapshot): Promise<boolean> {\n if (this.routeParameter) {\n const routeOk = await this.sanitiseParameter(this.routeParameter, snapshot.paramMap.get(this.routeParameter.name));\n if (!routeOk) {\n // if the route id isn't ok we redirect immediately as the query params may need to be sanitised in the\n // context of the route id.\n return false;\n }\n }\n for (const param of this.queryParameters) {\n await this.sanitiseParameter(param, snapshot.queryParamMap.get(param.name));\n }\n return this.sanitisedParameters.length === 0;\n }\n\n @Trace()\n async sanitiseParameter<T>(def: ParameterDefinition<T>, formattedInitialValue: string): Promise<boolean> {\n if (def) {\n const sanitiser = this.getSanitiser(def);\n if (sanitiser) {\n const initialValue = def.type.parse(formattedInitialValue);\n const sanitisedValue = await sanitiser.sanitise(initialValue);\n if (initialValue !== sanitisedValue) {\n this.sanitisedParameters.push({ def, value: def.type.format(sanitisedValue) });\n return false;\n }\n }\n }\n return true;\n }\n\n redirect(router: Router) {\n assert.isTruthy(this.sanitisedParameters.length !== 0);\n const sanitisedRouteId = this.sanitisedParameters.find(s => s.def === this.routeParameter);\n if (sanitisedRouteId) {\n return router.navigate(['..', sanitisedRouteId.value]);\n } else {\n const queryParams = this.sanitisedParameters.filter(s => s.def !== this.routeParameter)\n .reduce((params, item) => ({ ...params, [item.def.name]: item.value }), {});\n return router.navigate(['.', queryParams]);\n }\n }\n\n @Memoize()\n private getSanitiser<T>(def: ParameterDefinition<T>): ParameterSanitiser<T> {\n return def.sanitiser ? this.injector.get<ParameterSanitiser<T>>(def.sanitiser, new def.sanitiser()) : null;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanDeactivate,\n Router,\n RouterStateSnapshot,\n UrlTree\n} from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { Observable } from 'rxjs';\nimport { PlaceComponent } from '../place-component';\nimport { RouteParameterBindings } from '../route/route-parameter-bindings';\nimport { RouteParameterSanitiser } from '../route/route-parameter-sanitiser';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouteGuard implements CanActivate {\n\n constructor(private router: Router, private injector: Injector) {\n }\n\n @Trace()\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const routeParameters = Klass.get(route.component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);\n const sanitiser = new RouteParameterSanitiser(routeParameters, this.injector);\n return sanitiser.sanitise(route).then(proceed => {\n if (!proceed) {\n sanitiser.redirect(this.router);\n }\n return proceed;\n });\n }\n\n}\n","export type JsonPrimitive = boolean | number | string;\nexport type AnyJson = JsonPrimitive | null | JsonArray | JsonMap;\nexport interface JsonArray extends Array<AnyJson> {}\nexport interface JsonMap { [key: string]: AnyJson; }\n\n","import { assert, Constructable, UseDelegate } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { ParameterSanitiser } from './parameter-sanitiser';\nimport { ParameterType } from './parameter-type';\nimport { RouteParameterBindings } from './route-parameter-bindings';\n\nexport interface ParameterOptions<T> {\n as?: string;\n sanitiser?: Constructable<ParameterSanitiser<T>>;\n}\n\nexport function RouteId<T extends string | number>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator {\n // assert.isTruthy(type.isValid());\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = createDefinition(propertyKey, type, options, true);\n Klass.get(prototype).addToOwnMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\n\nexport function QueryParameter<T>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator {\n // assert.isTruthy(type.isValid());\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = createDefinition(propertyKey, type, options, false);\n Klass.get(prototype).addToOwnMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\nfunction createDefinition<T>(propertyName: symbol | string, type: ParameterType<T>, options: ParameterOptions<T>, routeId: boolean) {\n const opts = Opts.get(options);\n const propertyNameAsString = assert.notNil(propertyName).toString();\n const def: ParameterDefinition<T> = {\n name: opts.getOptional('as', propertyNameAsString),\n propertyName: propertyNameAsString,\n type: assert.notNil(type),\n sanitiser: opts.getOptional('sanitiser', null),\n isRouteId: routeId\n };\n return def;\n}\n","import { Constructable } from '@coolon/pectin';\nimport { ParameterSanitiser } from './parameter-sanitiser';\nimport { ParameterType } from './parameter-type';\n\nexport interface ParameterDefinition<T> {\n readonly name: string;\n readonly propertyName: string;\n readonly type: ParameterType<T>;\n readonly sanitiser: Constructable<ParameterSanitiser<T>>;\n readonly isRouteId: boolean;\n}\n","export interface ParameterSanitiser<T> {\n sanitise(value: T): T | Promise<T>;\n}\n","export interface ParameterType<T> {\n format(value: T): string;\n\n parse(value: string): T;\n}\n\nexport namespace ParameterType {\n\n class StringType implements ParameterType<string> {\n format(value: string): string {\n return value;\n }\n\n parse(value: string): string {\n return value;\n }\n }\n\n class NumberType implements ParameterType<number> {\n format(value: number): string {\n return `${value}`;\n }\n\n parse(value: string): number {\n return +value;\n }\n }\n\n export const STRING = new StringType();\n export const NUMBER = new NumberType();\n}\n"],"names":["tslib_1.__decorate","_.isNil","Memoize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,MAEa,mBAAoB,SAAQ,gBAAgB;;;;IAErD,WAAW;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;CACJ;;;;;;;MCQK,YAAY,GAAG,IAAI,gBAAgB,EAAU,CAAC,QAAQ;;;;;AAE5D,MAAsB,sBAA0B,SAAQ,mBAAmB;IAyDzE;QACE,KAAK,EAAE,CAAC;QA1CA,UAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3B,SAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1B,aAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC9B,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;;cAwCjC,IAAI,GAAG,IAAI;QACjB,IAAI,CAAC,iBAAiB,GAAG;;;;;;YACvB,YAAY,CAAC,OAA2B,EAAE,IAAwC;gBAChF,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;aACzB;SACF,CAAC;KACH;;;;IAzCD,WAAW;QACT,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACtC;;;;IAGD,aAAa;QACX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACnB;;;;IAGD,cAAc;QACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KAClB;;;;IAGD,cAAc;QACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;;;;IAED,eAAe;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACvB;;;;;;IAES,YAAY,CAAC,OAA0B;QAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE;YAClC,OAAO,CAAC,OAAO,EAAE,CAAC;SACnB;KACF;;;;IAYD,QAAQ;;KAEP;;;;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;;;;IAED,IAAI,OAAO;;QAET,OAAO,oBAAC,IAAI,CAAC,UAAU,IAAS,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC;KAC1D;;;;IAED,SAAS;QACP,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;KAC1C;;;;IAED,IAAI,SAAS;QACX,OAAO,oBAAC,IAAI,CAAC,UAAU,IAAS,SAAS,IAAI,YAAY,CAAC;KAC3D;;;;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KAC1D;;;yBAxFA,KAAK;oBAGL,KAAK;yBACL,KAAK;mBACL,KAAK;0BACL,KAAK;2BAEL,KAAK,SAAC,eAAe;0BACrB,KAAK,SAAC,cAAc;2BACpB,KAAK,SAAC,eAAe;4BACrB,KAAK,SAAC,gBAAgB;2BACtB,KAAK,SAAC,eAAe;oBAErB,MAAM;mBACN,MAAM;uBACN,MAAM;wBACN,MAAM;0BAIN,YAAY,SAAC,OAAO;4BAKpB,YAAY,SAAC,SAAS;6BAMtB,YAAY,SAAC,UAAU;;AA/BxBA;IADU,WAAW,EAAE;8BACX,iBAAiB;0DAAI;;;IADjC,4CACiC;;IAEjC,uCAAuB;;IACvB,4CAAiD;;IACjD,sCAAsB;;IACtB,6CAA6B;;IAE7B,8CAAwD;;IACxD,6CAAsD;;IACtD,8CAAwD;;IACxD,+CAA0D;;IAC1D,8CAAwD;;IAExD,uCAAqC;;IACrC,sCAAoC;;IACpC,0CAAwC;;IACxC,2CAAyC;;IAEzC,mDAA8C;;;;;;;ACvChD,MASa,oBAAqB,SAAQ,sBAA8B;IAEpE;QACI,KAAK,EAAE,CAAC;KACX;;;;IAED,QAAQ;KACP;;;YAZJ,SAAS,SAAC;gBACP,QAAQ,EAAE,kCAAkC;gBAC5C,unBAA4C;;aAE/C;;;;;;;;;ACRD,MAOa,gBAAiB,SAAQ,gBAAgB;;;;IAKpD,YAAwC,UAAsB;QAC5D,KAAK,EAAE,CAAC;QAD8B,eAAU,GAAV,UAAU,CAAY;KAE7D;;;;IAED,QAAQ;QACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnC;;;;IAED,eAAe;;;cAGP,EAAC,KAAK,EAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS;;;;QAAC,OAAO;YACvD,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG,EAAE;oBACjD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;iBACvE;aACF;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACnE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG,EAAE;oBACjD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;iBACvD;aACF;SACF,EAAC,CAAC;KAEJ;;;;IAED,WAAW;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;;;;;IAID,WAAW,CAAC,MAAa;QACvB,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;SACrD;KACF;;;YAnDF,SAAS,SAAC;;gBAET,QAAQ,EAAE,iBAAiB;aAC5B;;;;YANiC,UAAU,uBAY7B,MAAM,SAAC,UAAU;;;4BAH7B,KAAK;0BAoCL,YAAY,SAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;;IApCjC,yCACsC;;;;;IAE1B,sCAAkD;;;;;;;ACZhE,MAUa,qBAAsB,SAAQ,mBAAmB;;;;;;IAiB5D,YAAiD,EAAc,EAClB,MAAc,EAC7B,QAAa;QACzC,KAAK,EAAE,CAAC;QAHuC,OAAE,GAAF,EAAE,CAAY;QAClB,WAAM,GAAN,MAAM,CAAQ;;QAIzD,IAAI,CAAC,QAAQ,sBAAG,QAAQ,EAAY,CAAC;KACtC;;;;IAfD,SAAS;QACP,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;KACxD;;;;IAGD,UAAU;QACR,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;KACzD;;;;IAUD,QAAQ;KACP;;;;IAED,eAAe;;cAEP,EAAC,KAAK,EAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS;;;;QAAC,CAAC,OAAO;YAC7D,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;gBACtC,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;SACF,EAAC,CAAC;KACJ;;;;;IAGD,eAAe;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACzC;;;;;;IAGD,SAAS,CAAC,OAAgB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC;KAChD;;;;;IAED,WAAW,CAAC,UAAkB,CAAC;QAC7B,IAAI,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACvD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAC1B;;YAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,wBAAwB,OAAO,aAAa,CAAC,CAAC;gBACnE,IAAI,OAAO,GAAG,CAAC,EAAE;;;oBAGf,qBAAqB;;;oBAAC;wBACpB,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;qBAC/B,EAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;iBACjG;aACF;SACF;KACF;;;;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;KACzD;;;;;IAGD,yBAAyB;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC;KAC9C;;;;;IAGD,QAAQ;;cACA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE;;cACpD,OAAO,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;;QAE9D,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;KACjD;;;YAxFF,SAAS,SAAC;;gBAET,QAAQ,EAAE,sBAAsB;aACjC;;;;YARiC,UAAU,uBA0B7B,MAAM,SAAC,UAAU;YA1B2C,MAAM,uBA2BlE,MAAM,SAAC,MAAM;4CACb,MAAM,SAAC,QAAQ;;;iCAf3B,KAAK;iCACL,KAAK;wBAEL,YAAY,SAAC,SAAS;yBAKtB,YAAY,SAAC,UAAU;;;;;;;IAVxB,yCAAoC;;IAEpC,mDAA8C;;IAC9C,mDAAyC;;;;;IAY7B,mCAAmD;;;;;IACnD,uCAA+C;;;;;;;AC5B7D,MAQa,oBAAqB,SAAQ,sBAA8B;IAEtE;QACE,KAAK,EAAE,CAAC;KACT;;;;IAED,QAAQ;KACP;;;YAZF,SAAS,SAAC;gBACT,QAAQ,EAAE,kCAAkC;gBAC5C,+lBAA4C;;aAE7C;;;;;;;;;ACPD,MAQa,sBAAuB,SAAQ,sBAA8B;IAExE;QACE,KAAK,EAAE,CAAC;KACT;;;;IAED,QAAQ;KACP;;;YAZF,SAAS,SAAC;gBACT,QAAQ,EAAE,oCAAoC;gBAC9C,2nBAA8C;;aAE/C;;;;;;;;;;;;ACED,MAAa,oBAA8B,SAAQ,sBAAyB;IAc1E;QACE,KAAK,EAAE,CAAC;QAHV,sBAAiB;;;;QAAuB,CAAC,MAAM,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,EAAC;KAIpH;;;;IAED,QAAQ;KACP;;;YAxBF,SAAS,SAAC;gBACT,QAAQ,EAAE,kCAAkC;gBAC5C,+vBAA4C;;aAE7C;;;;;2BAGE,KAAK;sBAGL,KAAK;0BAGL,KAAK;gCAGL,KAAK;;AARNA;IADU,WAAW,EAAE;8BACT,SAAS;0DAAI;AAG3BA;IADU,gBAAgB,CAAC,cAAc,CAAC;;qDAC7B;;;IAJb,4CAC2B;;IAE3B,uCACa;;IAEb,2CACqB;;IAErB,iDACqH;;;;;;;ACrBvH;AAMA,MAAa,mBAAmB,GAAG,IAAI,cAAc,CAAM,oBAAoB,CAAC;;;;AAEhF,MAAsB,kBAAkB;CAOvC;;;;;;;;;IALC,+EAAsG;;;;;;IAEtG,8DAAqD;;;;;;IAErD,0DAA4C;;;;;;;ACd9C;;;AAIA,MAAa,gBAAgC,SAAQ,mBAAmB;IAAxE;;QAEmB,mBAAc,GAAG,IAAI,iBAAiB,EAAwB,CAAC;QAC/D,qBAAgB,GAAG,IAAI,iBAAiB,EAAwB,CAAC;QACjE,qBAAgB,GAAG,IAAI,iBAAiB,EAAc,CAAC;QAEvD,eAAU,GAAG,IAAI,oBAAoB,EAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KA8CtF;;;;;IA5CC,MAAM,CAAC,QAA8B;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACnC;;;;;IAED,QAAQ,CAAC,QAA8B;QACrC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KACrC;;;;;IAED,IAAI,CAAC,MAAU;QACb,OAAO,IAAI,CAAC,cAAc;aACvB,WAAW;;;;QAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAC;aAC3B,OAAO;;;QAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAC,CAAC;KAC7C;;;;;IAED,MAAM,CAAC,KAAS;QACd,OAAO,IAAI,CAAC,gBAAgB;aACzB,WAAW;;;;QAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAC;aAC1B,OAAO;;;QAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAC,CAAC;KAC7C;;;;;IAEO,kBAAkB;;QAExB,IAAI,CAAC,gBAAgB,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,EAAE,EAAC,CAAC;;;QAGrC;YACE,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,gBAAgB;SACtB,CAAC,OAAO;;;;QAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC;KAC7B;;;;IAGD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;KACjC;;;;;IAED,SAAS,CAAC,SAA8B;QACtC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;KACxC;;;;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;KAC9B;CACF;;;;;;IAlDC,0CAAgF;;;;;IAChF,4CAAkF;;;;;IAClF,4CAAwE;;;;;IAExE,sCAAqF;;;;;;;ACVvF;AAGA,MAAa,aAAa,GAAG,IAAI,cAAc,CAAM,yBAAyB,CAAC;;;;;AAE/E,uBAOC;;;IANC,wBAAmC;;;;;IAEnC,oDAAuC;;;;;IAEvC,sDAAyC;;;;;;;ACV3C,MAUa,oBAAqB,SAAQ,gBAA6B;;;;IAErE,YAA4C,KAAY;QACtD,KAAK,EAAE,CAAC;QADkC,UAAK,GAAL,KAAK,CAAO;KAEvD;;;;IAED,QAAQ;KACP;;;YAZF,SAAS,SAAC;gBACT,QAAQ,EAAE,kCAAkC;gBAC5C,6RAA4C;;aAE7C;;;;4CAGc,MAAM,SAAC,aAAa;;;;IAArB,qCAA4C;;;;;;;ACZ1D,MAWa,2BAA4B,SAAQ,gBAAkC;;;;IAEjF,YAA4C,OAAgB;QAC1D,KAAK,EAAE,CAAC;QADkC,YAAO,GAAP,OAAO,CAAS;QAE1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACtB;;;;IAED,QAAQ;KACP;;;;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KAC/D;;;YAlBF,SAAS,SAAC;gBACT,QAAQ,EAAE,yCAAyC;gBACnD,mZAAmD;;aAEpD;;;;4CAGc,MAAM,SAAC,aAAa;;;;IAArB,8CAAgD;;;;;;;ACb9D,MAmBa,0BAA2B,SAAQ,mBAAmB;IAcjE;QACE,KAAK,EAAE,CAAC;QAJD,iBAAY,GAAG,IAAI,gBAAgB,EAAwC,CAAC;QAC7E,iBAAY,GAA2C,EAAE,CAAC;KAIjE;;;;IAED,QAAQ;KACP;;;;IAED,eAAe;cACP,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;QACzC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS;;;QAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAC,CAAC;KACjF;;;;;;IAED,UAAU,CAAU,OAA4D;QAC9E,IAAI,CAAC,eAAe,qBACf,OAAO,IACV,kBAAkB,EAAE,IAAI,GACzB,CAAC;KACH;;;;;;;IAED,aAAa,CAAU,YAA8C,EAAE,IAAQ;;cACvE,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAK;;cAC9B,OAAO,GAAG;YACd,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAE,YAAY;YAC3B,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,QAAQ,CAAC,OAAO;YACxB,QAAQ,EAAE,QAAQ,CAAC,MAAM;SAC1B;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACnD,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO;;;QAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;SACxD,EAAC,CAAC;KACJ;;;;;IAED,KAAK,CAAC,KAAY;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;KACxD;;;;;IAED,OAAO,CAAC,OAAgB;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;KACjE;;;;;IAEO,WAAW;QACjB,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM;;;;QAAC,GAAG;YAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACzC,EAAC,CAAC;KACJ;;;YAnEF,SAAS,SAAC;gBACT,QAAQ,EAAE,wCAAwC;gBAClD,ydAAkD;;aAEnD;;;;;uCAGE,KAAK;8BAGL,KAAK;mBAGL,SAAS,SAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;;IANnC,8DAC6C;;IAE7C,qDACsD;;IAEtD,0CACkB;;IAElB,kDAAqF;;;;;IACrF,kDAAkE;;AAqDpE,WAAiB,0BAA0B;;;;;IAEzC,8BAKC;;;;QAJC,wCAAgD;;QAChD,uCAAgB;;QAChB,iCAA4B;;QAC5B,mCAA6B;;CAEhC,EARgB,0BAA0B,KAA1B,0BAA0B,QAQ1C;;;;;;AC5FD;;;AAsBA,MAAa,uBAAuB;;;;;;IAYlC,YACU,wBAAkD,EAClD,gBAAkC,EAClC,QAAkB;QAFlB,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,aAAQ,GAAR,QAAQ,CAAU;KAE3B;;;;;IAZD,IACI,eAAe,CAAC,eAA+C;QACjE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;KACpC;;;;;IAWD,QAAQ;KACP;;;;;IAED,YAAY,CAAC,eAA+C;;cACpD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,IAAI;iBACf;gBACD,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,CAAC,YAAY,EAAE;aACnE;YACD,MAAM,EAAE,IAAI,CAAC,QAAQ;SACtB,CAAC;;cACI,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,eAAe,CAAC,aAAa,CAAC;QAC7G,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9F,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KACpE;;;;;IAED,KAAK,CAAC,KAAY;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC7C;;;;;IAED,OAAO,CAAC,OAAgB;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACjD;;;;;;;IAED,aAAa,CAAa,YAAiD,EAAE,IAAS;QACpF,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KAClE;;;YAvDF,SAAS,SAAC;gBACT,QAAQ,EAAE,qCAAqC;gBAC/C,QAAQ,EAAE,EAAE;;aAEb;;;;YAlBC,wBAAwB;YAKxB,gBAAgB;YAHhB,QAAQ;;;iCAmBP,KAAK;8BAGL,KAAK;;;;IAHN,qDACuC;;;;;IAOvC,oDAA2D;;;;;IAGzD,2DAA0D;;;;;IAC1D,mDAA0C;;;;;IAC1C,2CAA0B;;;AAsC9B,WAAiB,uBAAuB;;;;IAEtC,MAAa,wBAAwB;;;;QAEnC,YAA6B,OAAuC;YAAvC,YAAO,GAAP,OAAO,CAAgC;SACnE;;;;;QAED,KAAK,CAAC,KAAY;YAChB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;;;;;QAED,OAAO,CAAC,OAAgB;YACtB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;;;;;;;QAED,aAAa,CAAa,YAAiD,EAAE,IAAS;YACpF,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAC9B;KACF;IAhBY,gDAAwB,2BAgBpC,CAAA;;;;;;QAda,2CAAwD;;CAgBvE,EApBgB,uBAAuB,KAAvB,uBAAuB,QAoBvC;;;;;;AC/FD,MAca,wBAAyB,SAAQ,kBAAkB;;;;IAE9D,YAA6B,aAAwB;QACnD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAW;KAEpD;;;;;;;IAED,aAAa,CAAU,YAA8C,EAAE,IAAQ;QAC7E,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KAChD;;;;;;;;;IAEO,cAAc,CAAU,YAA8C,EAAE,IAAO,EAAE,eAAwB,IAAI;;cAC7G,MAAM,GAAG;YACb,IAAI;YACJ,YAAY;YACZ,UAAU,EAAE,4BAA4B;YACxC,SAAS,EAAE,KAAK;SACjB;;cACK,YAAY,sBAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,EAA4C;QAC5H,OAAO,IAAI,OAAO;;;;;QAAI,CAAC,OAAO,EAAE,MAAM;;kBAC9B,iBAAiB,GAAG,YAAY,CAAC,iBAAiB;YACxD,iBAAiB,CAAC,wBAAwB,GAAG,IAAI,CAAC;YAClD,iBAAiB,CAAC,UAAU,CAAC;gBAC3B,aAAa,EAAE,YAAY;gBAC3B,YAAY,EAAE,IAAI;;;;;gBAClB,MAAM,CAAC,MAAM;oBACX,OAAO,CAAC,MAAM,CAAC,CAAC;oBAChB,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC5B;;;;;gBACD,QAAQ,CAAC,KAAK;oBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC3B;aACF,CAAC,CAAC;YAEH,YAAY,CAAC,UAAU,EAAE,CAAC;SAC3B,EAAC,CAAC;KACJ;;;;;IAED,KAAK,CAAC,KAAY;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAChE;;;;;IAED,OAAO,CAAC,OAAgB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KACxE;;;YA/CF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;YAZQ,SAAS;;;;;;;;IAeJ,iDAAyC;;;;;;;AChBvD,MAiCa,iBAAiB;;;YAvB7B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,eAAe;oBACf,aAAa;oBACb,YAAY;iBACb;gBACD,YAAY,EAAE;oBACZ,0BAA0B;oBAC1B,2BAA2B;oBAC3B,oBAAoB;oBACpB,uBAAuB;iBACxB;gBACD,eAAe,EAAE;oBACf,0BAA0B;oBAC1B,2BAA2B;oBAC3B,oBAAoB;iBACrB;gBACD,SAAS,EAAE;oBACT,wBAAwB;iBACzB;aACF;;;;;;;MCxBY,oBAAoB;IAQ/B;KACC;;;;IAED,QAAQ;KACP;;;YAjBF,SAAS,SAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,0MAA4C;;aAE7C;;;;;wBAGE,KAAK;mBAGL,KAAK;;AAFNA;IADU,uBAAuB,EAAE;8BACxB,UAAU;uDAAU;AAG/BA;IADU,iBAAiB,CAAC,WAAW,CAAC;;kDAC1B;;;IAJd,yCAC+B;;IAE/B,oCACc;;;;;;;ACdhB,MAWa,mBAAmB;IAE9B;KACC;;;;IAED,QAAQ;KACP;;;YAfF,SAAS,SAAC;gBACT,QAAQ,EAAE,iCAAiC;gBAC3C,QAAQ,EAAE;;;;GAIT;;aAEF;;;;;;;;;MCHY,YAAY;IAIvB;QAFQ,kBAAa,GAAG,IAAI,gBAAgB,EAAkB,CAAC;KAG9D;;;;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;KACpC;;;;;IAGD,UAAU,CAAC,KAAqB;QAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;;;IAGD,YAAY,CAAC,KAAqB;QAChC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAClC;;;YAtBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;;AAaCA;IADC,KAAK,EAAE;;;;8CAGP;AAGDA;IADC,KAAK,EAAE;;;;gDAGP;;;;;;IAjBD,qCAA+D;;;;;;;ACTjE,MASa,oBAAoB;;;;IAE/B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;KAAK;;;;IAE5D,QAAQ;KACP;;;;;IAED,UAAU,CAAC,MAAsB;QAC/B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACtC;;;;;IACD,YAAY,CAAC,MAAsB;QACjC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACxC;;;YAjBF,SAAS,SAAC;gBACT,QAAQ,EAAE,kCAAkC;gBAC5C,qHAA4C;;aAE7C;;;;YANQ,YAAY;;;;;;;IASP,4CAA2C;;;;;;;ACXzD,MA8Ba,WAAW;;;YArBvB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,wBAAwB;oBACxB,YAAY;iBACb;gBACD,YAAY,EAAE;oBACZ,mBAAmB;oBACnB,oBAAoB;oBACpB,oBAAoB;iBACrB;gBACD,eAAe,EAAE,CAAC,oBAAoB,CAAC;gBACvC,OAAO,EAAE;oBACP,oBAAoB;oBACpB,oBAAoB;oBACpB,mBAAmB;iBACpB;gBACD,SAAS,EAAE;oBACT,YAAY;iBACb;aACF;;;;;;;AC7BD,MA+Ca,uBAAuB;;;YAhCnC,QAAQ,SAAC;gBACR,YAAY,EAAE;oBACZ,gBAAgB;oBAChB,qBAAqB;oBACrB,oBAAoB;oBACpB,oBAAoB;oBACpB,sBAAsB;oBACtB,oBAAoB;iBACrB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;oBACb,uBAAuB;oBACvB,WAAW;oBACX,cAAc;oBACd,kBAAkB;oBAClB,eAAe;oBACf,WAAW;oBACX,iBAAiB;iBAClB;gBACD,OAAO,EAAE;oBACP,gBAAgB;oBAChB,qBAAqB;oBACrB,oBAAoB;oBACpB,oBAAoB;oBACpB,sBAAsB;oBACtB,oBAAoB;oBACpB,iBAAiB;oBACjB,WAAW;iBACZ;aAEF;;;;;;;AC9CD;MAGM,qBAAqB,GAAG,KAAK,CAAC;IAClC,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,GAAG;CACnB,CAAC;;;;;;AAEF,SAAgB,uBAAuB,CAAC,WAAmB,EAAE,OAG5D;;UACO,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;;UACtE,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;IACtG,OAAO,OAAO,CAAC,WAAW,EAAE;QAC1B,UAAU,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;KACzD,CAAC,CAAC;CACJ;;;;;;;;;;;ACpBD,MAAa,SAAS;;;;;IAClB,YAAqB,KAAa,EAAW,MAAc;QAAtC,UAAK,GAAL,KAAK,CAAQ;QAAW,WAAM,GAAN,MAAM,CAAQ;KAAG;CACjE;;;IADe,0BAAsB;;IAAE,2BAAuB;;;;;;;ACD/D,MAAa,KAAK;;;;;IAMd,YAAqB,CAAS,EAAW,CAAS;QAA7B,MAAC,GAAD,CAAC,CAAQ;QAAW,MAAC,GAAD,CAAC,CAAQ;KACjD;;;;;IALD,OAAO,IAAI,CAAC,IAA8B;QACtC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KACpC;;;;;;IAKD,SAAS,CAAC,CAAS,EAAE,CAAS;QAC1B,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5C;CACJ;;;IANe,kBAAkB;;IAAE,kBAAkB;;;;;;;ACNtD,MAGa,MAAO,SAAQ,SAAS;;;;;;;IAEjC,YAAqB,GAAW,EAAW,IAAY,EAAW,KAAa,EAAW,MAAc;QACpG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QADJ,QAAG,GAAH,GAAG,CAAQ;QAAW,SAAI,GAAJ,IAAI,CAAQ;QAAW,UAAK,GAAL,KAAK,CAAQ;QAAW,WAAM,GAAN,MAAM,CAAQ;KAEvG;;;;;IAED,kBAAkB,CAAC,KAA4C;QAC3D,IAAI,KAAK,YAAY,UAAU,EAAE;YAC7B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACzE;aAAM;YACH,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SAC7D;KACJ;CACJ;;;IAXe,qBAAoB;;IAAE,sBAAqB;;IAAE,uBAAsB;;IAAE,wBAAuB;;AAa5G,WAAiB,MAAM;;;;;IACnB,SAAgB,SAAS,CAAC,OAAoB;;cACpC,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAC5C,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACnE;IAHe,gBAAS,YAGxB,CAAA;CACJ,EALgB,MAAM,KAAN,MAAM,QAKtB;;;;;;ACtBD,MAMa,oBAAqB,SAAQ,mBAAmB;;;;;IAIzD,YAA+B,UAAsB,EAAqB,MAAc;QACpF,KAAK,EAAE,CAAC;QADmB,eAAU,GAAV,UAAU,CAAY;QAAqB,WAAM,GAAN,MAAM,CAAQ;QAFhF,iBAAY,GAAG,IAAI,WAAW,CAAS,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAItE;;;;IAED,eAAe;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;;cACd,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;;cACvC,EAAE,GAAG,IAAI,cAAc;;;;;QAAC,CAAC,OAAO,EAAE,QAAQ;YAC5C,IAAI,CAAC,MAAM,CAAC,GAAG;;;YAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAC,CAAC;SAC9C,EAAC;QACF,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS;;;QAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAC,CAAC;KACzC;;;;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;KACrC;;;;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;KACxC;;;;;;IAGM,kBAAkB,CAAC,KAA4C;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAChD;;;;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC;;;;;IAEO,YAAY;QAChB,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAClE;CAGJ;;;;;;IAtCG,4CAAuE;;;;;IAE3D,0CAAyC;;;;;IAAE,sCAAiC;;;;;;;;;;;;;;;;;;;;ACV5F,oBAIC;;;;;IAHG,wCAAgB;;;;IAChB,0CAAmB;;;;IACnB,qCAAY;;;;;;;;;;ACFhB,sBAGC;;;IAFC,8BAA4B;;;;IAC5B,2CAAiB;;;;;;;;;;;ACJnB,qBAEC;AAED,WAAiB,MAAM;;;;;IACrB,uBAGC;;;;QAFC,wBAAuB;;QACvB,yBAAwB;;CAG3B,EANgB,MAAM,KAAN,MAAM,QAMtB;;;;;;;;;;ACLD,oCAMC;;;IALC,mDAAuC;;IACvC,8CAAgD;;IAChD,6CAAgB;;IAChB,uCAA4B;;IAC5B,yCAA6B;;;;;;;;;;;;ACV/B;;;;AAKA,SAAgB,KAAK,CAAC,OAAsB;IAC1C;;;;IAAO,CAAC,MAAgB;QACtB,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC1D,EAAC;CACH;AAED,WAAiB,KAAK;;;;IACpB,sBAKC;;;;QAJC,uBAAa;;QACb,wBAAc;;QACd,+BAAsB;;IAIxB,MAAa,UAAU;;;;;QAKrB,YAAY,UAAyC,EAAE,OAAgB;YACrE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAGC,KAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC;SAC3E;KACF;IAXY,gBAAU,aAWtB,CAAA;;;QAVC,0BAAsB;;QACtB,kCAA+B;;QAC/B,2BAAuB;;;;;;IAUzB,SAAgB,aAAa,CAAC,KAAoC;;cAC1D,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC;QAChE,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;KAC5C;IAHe,mBAAa,gBAG5B,CAAA;CACF,EAzBgB,KAAK,KAAL,KAAK,QAyBrB;;;;;;;;;;ACtBD,gCAGC;;;IAFC,sCAAkC;;IAClC,0CAAiB;;AAGnB,MAAM,kBAAkB;;;;IACtB,YAAqB,UAAoC;QAApC,eAAU,GAAV,UAAU,CAA0B;KACxD;;;;;;IAED,GAAG,CAAI,SAAiC;;cAChC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAC;QACrE,OAAO,QAAQ,GAAG,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;KACjD;;;;;;;IAED,OAAO,CAAI,SAAiC,EAAE,KAAQ;QACpD,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;;;;QAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAC,CAAC,MAAM,CAAC;YAC1F,SAAS;YACT,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC,CAAC;KACL;;;;;IAGS,mBAAmB;;cACrB,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC3C,OAAO,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;KAC7F;;;;;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,EAAC,CAAC;KACzD;;;;;IAGS,sBAAsB;;cACxB,MAAM,GAAG,EAAE;;cACX,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;;;;QAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAC,CAAC,OAAO;;;;QAAC,CAAC;YAChF,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;SACrE,EAAC;QACF,OAAO,MAAM,CAAC;KACf;;;;IAED,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;KACjC;;;;;;;IAGD,QAAQ,CAAC,QAA4B,EAAE,MAAc,EAAE,cAA8B;;cAC7E,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;;cACpC,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,IAAI,GAAG,GAAG;;cACnD,IAAI,GAAG,OAAO,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7H,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;YACpB,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAC;KACJ;CACF;AA/BCD;IADC,KAAK,EAAE;;;;6DAIP;AAODA;IADC,KAAK,EAAE;;;;gEAOP;AAODA;IADC,KAAK,EAAE;;qCACW,kBAAkB,EAAU,MAAM,EAAkB,cAAc;;kDAOpF;;;IA9CW,wCAA6C;;AAiD3D,MAAa,sBAAuB,SAAQ,gBAAgB;;;;;;IAQ1D,YAA6B,SAAc,EAAmB,MAAc,EAAmB,cAA8B;QAC3H,KAAK,EAAE,CAAC;QADmB,cAAS,GAAT,SAAS,CAAK;QAAmB,WAAM,GAAN,MAAM,CAAQ;QAAmB,mBAAc,GAAd,cAAc,CAAgB;QAN7G,yBAAoB,GAAG,IAAI,iBAAiB,CAAU,KAAK,CAAC,CAAC;QAI5D,uBAAkB,GAAG,IAAI,iBAAiB,EAAsB,CAAC;cAI1E,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;QAC9E,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;;;cAE/B,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC,wBAAwB,CAAC;QAChH,kBAAkB,CAAC,OAAO;;;;QAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAC,CAAC;;cAElE,+BAA+B,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC;aAChF,IAAI,EAAE;aACN,GAAG;;;;QAAC,MAAM;;kBACH,MAAM,GAA6B,EAAE;YAC3C,kBAAkB,CAAC,OAAO;;;;YAAC,SAAS;gBAClC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;aAC7F,EAAC,CAAC;YACH,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;SACvC,EAAC;QAEJ,+BAA+B,CAAC,SAAS;;;;QAAC,kBAAkB;YAC1D,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,kBAAkB,CAAC;YACnD,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,KAAK,CAAC;SACzC,EAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO;;;;;QAAC,CAAC,MAAM,EAAE,QAAQ;YAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;SACnD,GAAE,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iCAAiC,EAAE,+BAA+B,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACpE;;;;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;KAC3C;;;;;;;IAES,cAAc,CAAI,SAAiC;;cACrD,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE;;;;;YAClE,OAAO,CAAC,UAA8B;gBACpC,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAClC;;;;;;YACD,MAAM,CAAC,KAAQ,EAAE,iBAAsC;gBACrD,OAAO,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aACpD;SACF,CAAC,CAAC,CAAC;KACL;;;;;;;IAGO,WAAW,CAAI,SAAiC;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;KAC/C;CACF;;;IA3DC,sDAA6E;;;;;IAE7E,qCAAiC;;;;;IAEjC,oDAAkF;;;;;IAEtE,2CAA+B;;;;;IAAE,wCAA+B;;;;;IAAE,gDAA+C;;AAuD/H,WAAiB,sBAAsB;IACxB,+CAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;CACzE,EAFgB,sBAAsB,KAAtB,sBAAsB,QAEtC;;;;;;MC7HY,sBAAuB,SAAQ,mBAAmB;;;;;IAO7D,YAAsB,cAA8B,EAAE,MAAc;QAClE,KAAK,EAAE,CAAC;QADY,mBAAc,GAAd,cAAc,CAAgB;QAElD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;;QAE9G,uCAAC,IAAI,CAAC,UAAU,MAA6C,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjG;;;;IAGD,IAAI,WAAW;QACb,OAAO,KAAK,CAAC,aAAa,uCAAC,IAAI,CAAC,WAAW,KAAyC,CAAC;KACtF;;;;IAED,aAAa;QACX,OAAO,IAAI,CAAC;KACb;CAEF;AApBCA;IADC,WAAW,EAAE;8BACO,iBAAiB;0DAAS;AAY/CA;IADC,OAAO,EAAE;8BACS,KAAK,CAAC,UAAU;;yDAElC;;;IAfD,4CAC+C;;;;;IAE/C,sDAAqD;;;;;IAEzC,gDAAwC;;;;;;;;;;ACdtD,6BAGC;;;IAFC,oCAA8B;;;;IAC9B,yDAA4C;;;;;;;ACJ9C,MAQa,eAAe;;;;;IAE1B,YAAoB,MAAc,EAAU,QAAkB;QAA1C,WAAM,GAAN,MAAM,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAU;KAC7D;;;;;;;;IAED,aAAa,CAAC,SAAyB,EAAE,YAAoC,EAAE,YAAiC,EAAE,SAA+B;QAC/I,OAAO,SAAS,CAAC,aAAa,EAAE,CAAC;KAClC;;;YAVF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;YAN+C,MAAM;YADjC,QAAQ;;;;;;;;IAUf,iCAAsB;;;;;IAAE,mCAA0B;;;;;;;MCHnD,uBAAuB;;;;;IAOlC,YAAqB,aAAyC,EAAW,QAAkB;QAAtE,kBAAa,GAAb,aAAa,CAA4B;QAAW,aAAQ,GAAR,QAAQ,CAAU;QAF1E,wBAAmB,GAAuD,EAAE,CAAC;QAG5F,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,MAAM;;;;QAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC;KAChE;;;;;IAEK,QAAQ,CAAC,QAAgC;;YAC7C,IAAI,IAAI,CAAC,cAAc,EAAE;;sBACjB,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAClH,IAAI,CAAC,OAAO,EAAE;;;oBAGZ,OAAO,KAAK,CAAC;iBACd;aACF;YACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7E;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,CAAC;SAC9C;KAAA;;;;;;;IAGK,iBAAiB,CAAI,GAA2B,EAAE,qBAA6B;;YACnF,IAAI,GAAG,EAAE;;sBACD,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;gBACxC,IAAI,SAAS,EAAE;;0BACP,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;;0BACpD,cAAc,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAC7D,IAAI,YAAY,KAAK,cAAc,EAAE;wBACnC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;wBAC/E,OAAO,KAAK,CAAC;qBACd;iBACF;aACF;YACD,OAAO,IAAI,CAAC;SACb;KAAA;;;;;IAED,QAAQ,CAAC,MAAc;QACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;;cACjD,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI;;;;QAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAC;QAC1F,IAAI,gBAAgB,EAAE;YACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;SACxD;aAAM;;kBACC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM;;;;YAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,EAAC;iBACpF,MAAM;;;;;YAAC,CAAC,MAAM,EAAE,IAAI,wBAAW,MAAM,IAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAG,GAAE,EAAE,CAAC;YAC7E,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;SAC5C;KACF;;;;;;;IAGO,YAAY,CAAI,GAA2B;QACjD,OAAO,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAwB,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC;KAC5G;CACF;AA/BCA;IADC,KAAK,EAAE;;;;gEAcP;AAeDA;IADCE,SAAO,EAAE;;;;2DAGT;;;;;;IAxDD,iDAA0D;;;;;IAC1D,kDAA6D;;;;;IAE7D,sDAA8F;;IAElF,gDAAkD;;IAAE,2CAA2B;;;;;;;MCKhF,eAAe;;;;;IAE1B,YAAoB,MAAc,EAAU,QAAkB;QAA1C,WAAM,GAAN,MAAM,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAU;KAC7D;;;;;;IAGD,WAAW,CAAC,KAA6B,EAAE,KAA0B;;cAC7D,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC,wBAAwB,CAAC;;cAC7G,SAAS,GAAG,IAAI,uBAAuB,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC7E,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI;;;;QAAC,OAAO;YAC3C,IAAI,CAAC,OAAO,EAAE;gBACZ,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACjC;YACD,OAAO,OAAO,CAAC;SAChB,EAAC,CAAC;KACJ;;;YAlBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;YAbC,MAAM;YALa,QAAQ;;;AAyB3BF;IADC,KAAK,EAAE;;qCACW,sBAAsB,EAAS,mBAAmB;;kDASpE;;;;;;IAbW,iCAAsB;;;;;IAAE,mCAA0B;;;;;;;;;;ACnBhE,wBAAoD;;;;AACpD,sBAAqD;;;;;;ACHrD;;;;AAOA,+BAGC;;;IAFC,8BAAY;;IACZ,qCAAiD;;;;;;;;AAGnD,SAAgB,OAAO,CAA4B,IAAsB,EAAE,OAA6B;;IAEtG;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B;;cAC/C,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;QAChE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAClG,WAAW,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;KACvC,EAAC;CACH;;;;;;;AAGD,SAAgB,cAAc,CAAI,IAAsB,EAAE,OAA6B;;IAErF;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B;;cAC/C,KAAK,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAClG,WAAW,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;KACvC,EAAC;CACH;;;;;;;;;AAED,SAAS,gBAAgB,CAAI,YAA6B,EAAE,IAAsB,EAAE,OAA4B,EAAE,OAAgB;;UAC1H,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;UACxB,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;;UAC7D,GAAG,GAA2B;QAClC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAClD,YAAY,EAAE,oBAAoB;QAClC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACzB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC;QAC9C,SAAS,EAAE,OAAO;KACnB;IACD,OAAO,GAAG,CAAC;CACZ;;;;;;;;;;ACtCD,kCAMC;;;IALC,mCAAsB;;IACtB,2CAA8B;;IAC9B,mCAAgC;;IAChC,wCAAyD;;IACzD,wCAA4B;;;;;;;;;;;ACT9B,iCAEC;;;;;;IADE,6DAAmC;;;;;;;;ACKtC,IAAiB,aAAa,CAwB7B;AAxBD,WAAiB,aAAa;IAE5B,MAAM,UAAU;;;;;QACd,MAAM,CAAC,KAAa;YAClB,OAAO,KAAK,CAAC;SACd;;;;;QAED,KAAK,CAAC,KAAa;YACjB,OAAO,KAAK,CAAC;SACd;KACF;IAED,MAAM,UAAU;;;;;QACd,MAAM,CAAC,KAAa;YAClB,OAAO,GAAG,KAAK,EAAE,CAAC;SACnB;;;;;QAED,KAAK,CAAC,KAAa;YACjB,OAAO,CAAC,KAAK,CAAC;SACf;KACF;IAEY,oBAAM,GAAG,IAAI,UAAU,EAAE;IACzB,oBAAM,GAAG,IAAI,UAAU,EAAE;CACvC,EAxBgB,aAAa,KAAb,aAAa,QAwB7B;;;;;;;;;;;;;;;;;;;;;;;;"}