@coolon/angular-ui-powerups 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/coolon-angular-ui-powerups.umd.js +493 -734
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.d.ts +15 -0
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +15 -2
- package/esm2015/index.js +2 -2
- package/esm2015/lib/angular-ui-powerups.module.js +5 -1
- package/esm2015/public_api.js +3 -4
- package/esm5/coolon-angular-ui-powerups.js +15 -2
- package/esm5/index.js +2 -2
- package/esm5/lib/angular-ui-powerups.module.js +5 -1
- package/esm5/public_api.js +3 -4
- package/fesm2015/coolon-angular-ui-powerups.js +313 -525
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +374 -616
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -2
- package/styles/styles.scss +11 -0
- package/esm2015/lib/components/index.js +0 -18
- package/esm2015/lib/components/resize-aware.component.js +0 -96
- package/esm2015/lib/components/types/bounds.class.js +0 -56
- package/esm2015/lib/components/types/dimension.class.js +0 -21
- package/esm2015/lib/components/types/point.class.js +0 -36
- package/esm2015/lib/directives/index.js +0 -10
- package/esm5/lib/components/index.js +0 -18
- package/esm5/lib/components/resize-aware.component.js +0 -124
- package/esm5/lib/components/types/bounds.class.js +0 -59
- package/esm5/lib/components/types/dimension.class.js +0 -19
- package/esm5/lib/components/types/point.class.js +0 -43
- package/esm5/lib/directives/index.js +0 -10
- package/lib/components/index.d.ts +0 -13
- package/lib/components/resize-aware.component.d.ts +0 -22
- package/lib/components/types/bounds.class.d.ts +0 -16
- package/lib/components/types/dimension.class.d.ts +0 -5
- package/lib/components/types/point.class.d.ts +0 -10
- package/lib/directives/index.d.ts +0 -5
|
@@ -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/angular-ui-powerups.module.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/abstract-activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/activity.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/interaction-context.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/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/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/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 { 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';\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 ],\n exports: [\n CommandDirective,\n FocusBindingDirective,\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n ]\n\n})\nexport class AngularUiPowerupsModule {\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","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","\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","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 { 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","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 { 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 { 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.__extends","tslib_1.__decorate","_.isNil","tslib_1.__values","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/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 ],\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","\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.__extends","tslib_1.__decorate","_.isNil","tslib_1.__values","Memoize"],"mappings":"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"}
|
package/package.json
CHANGED
package/public_api.d.ts
CHANGED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @file Automatically generated by barrelsby.
|
|
7
|
-
*/
|
|
8
|
-
export { DisposableComponent } from "./disposable-component";
|
|
9
|
-
export { ResizeAwareComponent } from "./resize-aware.component";
|
|
10
|
-
export { AbstractInputComponent } from "./forms/abstract-input.component";
|
|
11
|
-
export { NumberInputComponent } from "./forms/number-input/number-input.component";
|
|
12
|
-
export { PasswordInputComponent } from "./forms/password-input/password-input.component";
|
|
13
|
-
export { SelectInputComponent } from "./forms/select-input/select-input.component";
|
|
14
|
-
export { StringInputComponent } from "./forms/string-input/string-input.component";
|
|
15
|
-
export { Bounds } from "./types/bounds.class";
|
|
16
|
-
export { Dimension } from "./types/dimension.class";
|
|
17
|
-
export { Point } from "./types/point.class";
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsb0NBQWMsd0JBQXdCLENBQUM7QUFDdkMscUNBQWMsMEJBQTBCLENBQUM7QUFDekMsdUNBQWMsa0NBQWtDLENBQUM7QUFDakQscUNBQWMsNkNBQTZDLENBQUM7QUFDNUQsdUNBQWMsaURBQWlELENBQUM7QUFDaEUscUNBQWMsNkNBQTZDLENBQUM7QUFDNUQscUNBQWMsNkNBQTZDLENBQUM7QUFDNUQsdUJBQWMsc0JBQXNCLENBQUM7QUFDckMsMEJBQWMseUJBQXlCLENBQUM7QUFDeEMsc0JBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGJhcnJlbHNieS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9kaXNwb3NhYmxlLWNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybXMvYWJzdHJhY3QtaW5wdXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3Jtcy9udW1iZXItaW5wdXQvbnVtYmVyLWlucHV0LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3Jtcy9zZWxlY3QtaW5wdXQvc2VsZWN0LWlucHV0LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzL2JvdW5kcy5jbGFzc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvZGltZW5zaW9uLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy9wb2ludC5jbGFzc1wiO1xuIl19
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { ValueHolder } from '@coolon/pectin';
|
|
6
|
-
import ResizeObserver from 'resize-observer-polyfill';
|
|
7
|
-
import { DisposableComponent } from './disposable-component';
|
|
8
|
-
import { Bounds } from './types/bounds.class';
|
|
9
|
-
export class ResizeAwareComponent extends DisposableComponent {
|
|
10
|
-
/**
|
|
11
|
-
* @param {?} elementRef
|
|
12
|
-
* @param {?} ngZone
|
|
13
|
-
*/
|
|
14
|
-
constructor(elementRef, ngZone) {
|
|
15
|
-
super();
|
|
16
|
-
this.elementRef = elementRef;
|
|
17
|
-
this.ngZone = ngZone;
|
|
18
|
-
this._boundsModel = new ValueHolder(new Bounds(0, 0, 0, 0));
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* @return {?}
|
|
22
|
-
*/
|
|
23
|
-
ngAfterViewInit() {
|
|
24
|
-
this.updateBounds();
|
|
25
|
-
/** @type {?} */
|
|
26
|
-
const element = this.elementRef.nativeElement;
|
|
27
|
-
/** @type {?} */
|
|
28
|
-
const ro = new ResizeObserver((/**
|
|
29
|
-
* @param {?} entries
|
|
30
|
-
* @param {?} observer
|
|
31
|
-
* @return {?}
|
|
32
|
-
*/
|
|
33
|
-
(entries, observer) => {
|
|
34
|
-
this.ngZone.run((/**
|
|
35
|
-
* @return {?}
|
|
36
|
-
*/
|
|
37
|
-
() => this.updateBounds()));
|
|
38
|
-
}));
|
|
39
|
-
ro.observe(element);
|
|
40
|
-
this.onDispose((/**
|
|
41
|
-
* @return {?}
|
|
42
|
-
*/
|
|
43
|
-
() => ro.disconnect()));
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* @return {?}
|
|
47
|
-
*/
|
|
48
|
-
get boundsModel() {
|
|
49
|
-
return this._boundsModel.readonly;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* @return {?}
|
|
53
|
-
*/
|
|
54
|
-
get nativeElement() {
|
|
55
|
-
return this.elementRef.nativeElement;
|
|
56
|
-
}
|
|
57
|
-
// TODO: Make this handle body scroll
|
|
58
|
-
/**
|
|
59
|
-
* @param {?} point
|
|
60
|
-
* @return {?}
|
|
61
|
-
*/
|
|
62
|
-
relativePositionOf(point) {
|
|
63
|
-
return this.bounds.relativePositionOf(point);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* @return {?}
|
|
67
|
-
*/
|
|
68
|
-
get bounds() {
|
|
69
|
-
return this._boundsModel.value;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* @private
|
|
73
|
-
* @return {?}
|
|
74
|
-
*/
|
|
75
|
-
updateBounds() {
|
|
76
|
-
this._boundsModel.value = Bounds.ofElement(this.nativeElement);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (false) {
|
|
80
|
-
/**
|
|
81
|
-
* @type {?}
|
|
82
|
-
* @private
|
|
83
|
-
*/
|
|
84
|
-
ResizeAwareComponent.prototype._boundsModel;
|
|
85
|
-
/**
|
|
86
|
-
* @type {?}
|
|
87
|
-
* @protected
|
|
88
|
-
*/
|
|
89
|
-
ResizeAwareComponent.prototype.elementRef;
|
|
90
|
-
/**
|
|
91
|
-
* @type {?}
|
|
92
|
-
* @protected
|
|
93
|
-
*/
|
|
94
|
-
ResizeAwareComponent.prototype.ngZone;
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWF3YXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Jlc2l6ZS1hd2FyZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLGNBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFHNUMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjs7Ozs7SUFJekQsWUFBK0IsVUFBc0IsRUFBcUIsTUFBYztRQUNwRixLQUFLLEVBQUUsQ0FBQztRQURtQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQXFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFGaEYsaUJBQVksR0FBRyxJQUFJLFdBQVcsQ0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBSXZFLENBQUM7Ozs7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDOztjQUNkLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWE7O2NBQ3ZDLEVBQUUsR0FBRyxJQUFJLGNBQWM7Ozs7O1FBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHOzs7WUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQUM7UUFDRixFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTOzs7UUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUMsQ0FBQztJQUMxQyxDQUFDOzs7O0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUN0QyxDQUFDOzs7O0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDOzs7Ozs7SUFHTSxrQkFBa0IsQ0FBQyxLQUE0QztRQUNsRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7OztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQzs7Ozs7SUFFTyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FHSjs7Ozs7O0lBdENHLDRDQUF1RTs7Ozs7SUFFM0QsMENBQXlDOzs7OztJQUFFLHNDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VmFsdWVIb2xkZXIsIFZhbHVlTW9kZWx9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tICdyZXNpemUtb2JzZXJ2ZXItcG9seWZpbGwnO1xuaW1wb3J0IHtEaXNwb3NhYmxlQ29tcG9uZW50fSBmcm9tICcuL2Rpc3Bvc2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7Qm91bmRzfSBmcm9tICcuL3R5cGVzL2JvdW5kcy5jbGFzcyc7XG5pbXBvcnQge1BvaW50fSBmcm9tICcuL3R5cGVzL3BvaW50LmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIFJlc2l6ZUF3YXJlQ29tcG9uZW50IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgcHJpdmF0ZSBfYm91bmRzTW9kZWwgPSBuZXcgVmFsdWVIb2xkZXI8Qm91bmRzPihuZXcgQm91bmRzKDAsIDAsIDAsIDApKTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQm91bmRzKCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy51cGRhdGVCb3VuZHMoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByby5vYnNlcnZlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9uRGlzcG9zZSgoKSA9PiByby5kaXNjb25uZWN0KCkpO1xuICAgIH1cblxuICAgIGdldCBib3VuZHNNb2RlbCgpOiBWYWx1ZU1vZGVsPEJvdW5kcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm91bmRzTW9kZWwucmVhZG9ubHk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgaGFuZGxlIGJvZHkgc2Nyb2xsXG4gICAgcHVibGljIHJlbGF0aXZlUG9zaXRpb25PZihwb2ludDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9IHwgTW91c2VFdmVudCk6IFBvaW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm91bmRzLnJlbGF0aXZlUG9zaXRpb25PZihwb2ludCk7XG4gICAgfVxuXG4gICAgZ2V0IGJvdW5kcygpOiBCb3VuZHMge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm91bmRzTW9kZWwudmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVCb3VuZHMoKSB7XG4gICAgICAgIHRoaXMuX2JvdW5kc01vZGVsLnZhbHVlID0gQm91bmRzLm9mRWxlbWVudCh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUmVzaXplQXdhcmVDb21wb25lbnQge1xuXG59XG4iXX0=
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { Dimension } from './dimension.class';
|
|
6
|
-
import { Point } from './point.class';
|
|
7
|
-
export class Bounds extends Dimension {
|
|
8
|
-
/**
|
|
9
|
-
* @param {?} top
|
|
10
|
-
* @param {?} left
|
|
11
|
-
* @param {?} width
|
|
12
|
-
* @param {?} height
|
|
13
|
-
*/
|
|
14
|
-
constructor(top, left, width, height) {
|
|
15
|
-
super(width, height);
|
|
16
|
-
this.top = top;
|
|
17
|
-
this.left = left;
|
|
18
|
-
this.width = width;
|
|
19
|
-
this.height = height;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @param {?} point
|
|
23
|
-
* @return {?}
|
|
24
|
-
*/
|
|
25
|
-
relativePositionOf(point) {
|
|
26
|
-
if (point instanceof MouseEvent) {
|
|
27
|
-
return new Point(point.clientX - this.left, point.clientY - this.top);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
return new Point(point.x - this.left, point.y - this.top);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (false) {
|
|
35
|
-
/** @type {?} */
|
|
36
|
-
Bounds.prototype.top;
|
|
37
|
-
/** @type {?} */
|
|
38
|
-
Bounds.prototype.left;
|
|
39
|
-
/** @type {?} */
|
|
40
|
-
Bounds.prototype.width;
|
|
41
|
-
/** @type {?} */
|
|
42
|
-
Bounds.prototype.height;
|
|
43
|
-
}
|
|
44
|
-
(function (Bounds) {
|
|
45
|
-
/**
|
|
46
|
-
* @param {?} element
|
|
47
|
-
* @return {?}
|
|
48
|
-
*/
|
|
49
|
-
function ofElement(element) {
|
|
50
|
-
/** @type {?} */
|
|
51
|
-
const rect = element.getBoundingClientRect();
|
|
52
|
-
return new Bounds(rect.top, rect.left, rect.width, rect.height);
|
|
53
|
-
}
|
|
54
|
-
Bounds.ofElement = ofElement;
|
|
55
|
-
})(Bounds || (Bounds = {}));
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdHlwZXMvYm91bmRzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0QyxNQUFNLE9BQU8sTUFBTyxTQUFRLFNBQVM7Ozs7Ozs7SUFFakMsWUFBcUIsR0FBVyxFQUFXLElBQVksRUFBVyxLQUFhLEVBQVcsTUFBYztRQUNwRyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBREosUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFXLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUV4RyxDQUFDOzs7OztJQUVELGtCQUFrQixDQUFDLEtBQTRDO1FBQzNELElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRTtZQUM3QixPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0gsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0Q7SUFDTCxDQUFDO0NBQ0o7OztJQVhlLHFCQUFvQjs7SUFBRSxzQkFBcUI7O0lBQUUsdUJBQXNCOztJQUFFLHdCQUF1Qjs7QUFhNUcsV0FBaUIsTUFBTTs7Ozs7SUFDbkIsU0FBZ0IsU0FBUyxDQUFDLE9BQW9COztjQUNwQyxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFO1FBQzVDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFIZSxnQkFBUyxZQUd4QixDQUFBO0FBQ0wsQ0FBQyxFQUxnQixNQUFNLEtBQU4sTUFBTSxRQUt0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpbWVuc2lvbiB9IGZyb20gJy4vZGltZW5zaW9uLmNsYXNzJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi9wb2ludC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBCb3VuZHMgZXh0ZW5kcyBEaW1lbnNpb24ge1xuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgdG9wOiBudW1iZXIsIHJlYWRvbmx5IGxlZnQ6IG51bWJlciwgcmVhZG9ubHkgd2lkdGg6IG51bWJlciwgcmVhZG9ubHkgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIod2lkdGgsIGhlaWdodCk7XG4gICAgfVxuXG4gICAgcmVsYXRpdmVQb3NpdGlvbk9mKHBvaW50OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmIChwb2ludCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9pbnQocG9pbnQuY2xpZW50WCAtIHRoaXMubGVmdCwgcG9pbnQuY2xpZW50WSAtIHRoaXMudG9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9pbnQocG9pbnQueCAtIHRoaXMubGVmdCwgcG9pbnQueSAtIHRoaXMudG9wKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBCb3VuZHMge1xuICAgIGV4cG9ydCBmdW5jdGlvbiBvZkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBCb3VuZHMge1xuICAgICAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBCb3VuZHMocmVjdC50b3AsIHJlY3QubGVmdCwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xuICAgIH1cbn1cblxuIl19
|