@coolon/angular-ui-powerups 1.0.1 → 1.1.0
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/CHANGELOG.md +18 -0
- package/bundles/coolon-angular-ui-powerups.umd.js +446 -169
- 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 +26 -25
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +24 -23
- package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
- package/esm2015/lib/components/components.module.js +9 -2
- package/esm2015/lib/components/components.module.js.map +1 -1
- package/esm2015/lib/components/components.module.metadata.json +1 -1
- package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
- package/esm2015/lib/components/forms/abstract-input.component.js +12 -1
- package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
- package/esm2015/lib/components/forms/abstract-input.component.metadata.json +1 -1
- package/esm2015/lib/components/forms/number-input/number-input.component.js +2 -2
- package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
- package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
- package/esm2015/lib/components/forms/password-input/password-input.component.js +2 -2
- package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
- package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
- package/esm2015/lib/components/forms/select-input/select-input.component.js +3 -3
- package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
- package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
- package/esm2015/lib/components/forms/string-input/string-input.component.js +3 -3
- package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
- package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
- package/esm2015/lib/components/index.js +1 -0
- package/esm2015/lib/components/index.js.map +1 -1
- package/esm2015/lib/components/index.metadata.json +1 -1
- package/esm2015/lib/components/switch-case/switch-case.component.js +124 -0
- package/esm2015/lib/components/switch-case/switch-case.component.js.map +1 -0
- package/esm2015/lib/components/switch-case/switch-case.component.metadata.json +1 -0
- package/esm2015/lib/components/switch-case/switch-case.component.ngfactory.js.map +1 -0
- package/esm2015/lib/components/switch-case/switch-case.component.scss.shim.ngstyle.js.map +1 -0
- package/esm2015/lib/directives/command.directive.js +4 -4
- package/esm2015/lib/directives/command.directive.js.map +1 -1
- package/esm2015/lib/directives/focus-binding.directive.js +3 -3
- package/esm2015/lib/directives/focus-binding.directive.js.map +1 -1
- package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +1 -1
- package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.metadata.json +1 -1
- package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +1 -1
- package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.metadata.json +1 -1
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.metadata.json +1 -1
- package/esm2015/lib/place/components/abstract-place-navigation.component.js +3 -3
- package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
- package/esm2015/lib/place/components/abstract-place-navigation.component.metadata.json +1 -1
- package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.js +2 -2
- package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.js.map +1 -1
- package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.metadata.json +1 -1
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +3 -3
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
- package/esm2015/lib/place/guards/place.guard.js +4 -3
- package/esm2015/lib/place/guards/place.guard.js.map +1 -1
- package/esm2015/lib/place/place-component.js +2 -2
- package/esm2015/lib/place/place-component.js.map +1 -1
- package/esm2015/lib/place/place-history.js +116 -13
- package/esm2015/lib/place/place-history.js.map +1 -1
- package/esm2015/lib/place/place-history.metadata.json +1 -1
- package/esm2015/lib/place/place-router.js +13 -6
- package/esm2015/lib/place/place-router.js.map +1 -1
- package/esm2015/lib/place/place-router.metadata.json +1 -1
- package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
- package/esm2015/lib/place/route/parameter-definition.class.js +10 -9
- package/esm2015/lib/place/route/parameter-definition.class.js.map +1 -1
- package/esm2015/lib/place/route/visit-sanitiser.js +14 -6
- package/esm2015/lib/place/route/visit-sanitiser.js.map +1 -1
- package/esm2015/lib/place/route/visit-sanitiser.metadata.json +1 -1
- package/esm5/coolon-angular-ui-powerups.js +24 -23
- package/esm5/coolon-angular-ui-powerups.js.map +1 -1
- package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
- package/esm5/lib/components/components.module.js +9 -2
- package/esm5/lib/components/components.module.js.map +1 -1
- package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
- package/esm5/lib/components/forms/abstract-input.component.js +12 -1
- package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
- package/esm5/lib/components/forms/number-input/number-input.component.js +2 -2
- package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
- package/esm5/lib/components/forms/password-input/password-input.component.js +2 -2
- package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
- package/esm5/lib/components/forms/select-input/select-input.component.js +3 -3
- package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
- package/esm5/lib/components/forms/string-input/string-input.component.js +3 -3
- package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
- package/esm5/lib/components/index.js +1 -0
- package/esm5/lib/components/index.js.map +1 -1
- package/esm5/lib/components/switch-case/switch-case.component.js +144 -0
- package/esm5/lib/components/switch-case/switch-case.component.js.map +1 -0
- package/esm5/lib/components/switch-case/switch-case.component.ngfactory.js.map +1 -0
- package/esm5/lib/components/switch-case/switch-case.component.scss.shim.ngstyle.js.map +1 -0
- package/esm5/lib/directives/command.directive.js +4 -4
- package/esm5/lib/directives/command.directive.js.map +1 -1
- package/esm5/lib/directives/focus-binding.directive.js +3 -3
- package/esm5/lib/directives/focus-binding.directive.js.map +1 -1
- package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +1 -1
- package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +1 -1
- package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
- package/esm5/lib/place/components/abstract-place-navigation.component.js +3 -3
- package/esm5/lib/place/components/abstract-place-navigation.component.js.map +1 -1
- package/esm5/lib/place/components/busy-overlay/busy-overlay.component.js +2 -2
- package/esm5/lib/place/components/busy-overlay/busy-overlay.component.js.map +1 -1
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +3 -3
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
- package/esm5/lib/place/guards/place.guard.js +5 -4
- package/esm5/lib/place/guards/place.guard.js.map +1 -1
- package/esm5/lib/place/place-component.js +2 -2
- package/esm5/lib/place/place-component.js.map +1 -1
- package/esm5/lib/place/place-history.js +117 -11
- package/esm5/lib/place/place-history.js.map +1 -1
- package/esm5/lib/place/place-router.js +13 -7
- package/esm5/lib/place/place-router.js.map +1 -1
- package/esm5/lib/place/route/parameter-decorators.js.map +1 -1
- package/esm5/lib/place/route/parameter-definition.class.js +11 -11
- package/esm5/lib/place/route/parameter-definition.class.js.map +1 -1
- package/esm5/lib/place/route/visit-sanitiser.js +14 -6
- package/esm5/lib/place/route/visit-sanitiser.js.map +1 -1
- package/fesm2015/coolon-angular-ui-powerups.js +377 -127
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +405 -135
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/components/forms/abstract-input.component.d.ts +11 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/switch-case/switch-case.component.d.ts +32 -0
- package/lib/place/place-history.d.ts +17 -3
- package/lib/place/route/parameter-definition.class.d.ts +1 -1
- package/lib/place/route/visit-sanitiser.d.ts +3 -1
- package/package.json +2 -2
|
@@ -29,12 +29,12 @@ var FocusBindingDirective = /** @class */ (function (_super) {
|
|
|
29
29
|
var _this = this;
|
|
30
30
|
// TODO: Make this also track the current enabled/disabled state.
|
|
31
31
|
if (this.hasBinding()) {
|
|
32
|
-
var
|
|
33
|
-
|
|
32
|
+
var when = Dsl.disposeWith(this).when;
|
|
33
|
+
when.valueOf(this.pectinFocusBinding.focusContext.focused).changes(function (focused) {
|
|
34
34
|
if (focused && !_this.alreadyHasFocus()) {
|
|
35
35
|
_this.tryAndFocus();
|
|
36
36
|
}
|
|
37
|
-
});
|
|
37
|
+
}, { initialValue: 'triggerChange' });
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
40
40
|
Logger.get(this).warn('pectinFocusBinding was nil');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-binding.directive.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/directives/focus-binding.directive.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAOzE;IAA2C,yCAAmB;IAqB5D,+BAAiD,EAAc,EAClB,MAAc,EAC7B,QAAa;QAF3C,YAGE,iBAAO,SAGR;QANgD,QAAE,GAAF,EAAE,CAAY;QAClB,YAAM,GAAN,MAAM,CAAQ;QAGzD,kHAAkH;QAClH,KAAI,CAAC,QAAQ,GAAG,QAAoB,CAAC;;IACvC,CAAC;IAnBD,yCAAS,GAAT;QACE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;SACtD;IACH,CAAC;IAGD,0CAAU,GAAV;QACE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;SACvD;IACH,CAAC;IAUD,wCAAQ,GAAR;IACA,CAAC;IAED,+CAAe,GAAf;QAAA,iBAYC;QAXC,iEAAiE;QACjE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACb,IAAA,
|
|
1
|
+
{"version":3,"file":"focus-binding.directive.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/directives/focus-binding.directive.ts"],"names":[],"mappings":"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","sourcesContent":["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 if (this.hasBinding()) {\n this.pectinFocusBinding.focusContext.notifyFocusIn();\n }\n }\n\n @HostListener('focusout')\n onFocusOut() {\n if (this.hasBinding()) {\n this.pectinFocusBinding.focusContext.notifyFocusOut();\n }\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 if (this.hasBinding()) {\n const { when } = Dsl.disposeWith(this);\n when.valueOf(this.pectinFocusBinding.focusContext.focused).changes((focused) => {\n if (focused && !this.alreadyHasFocus()) {\n this.tryAndFocus();\n }\n }, {initialValue: 'triggerChange'});\n } else {\n Logger.get(this).warn('pectinFocusBinding was nil');\n }\n }\n\n private hasBinding() {\n return !!this.pectinFocusBinding && !!this.pectinFocusBinding.focusContext;\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.hasBinding() && this.pectinFocusBinding.focusContext.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"]}
|
|
@@ -17,7 +17,7 @@ var AlertDialogComponent = /** @class */ (function (_super) {
|
|
|
17
17
|
Component({
|
|
18
18
|
selector: 'aup-alert-dialog',
|
|
19
19
|
template: "<h3 matDialogTitle *ngIf=\"alert.title\">{{alert.title()}}</h3>\n<div matDialogContent>\n <p *ngFor=\"let line of alert.content()\">{{line}}</p>\n</div>\n<div matDialogActions>\n <button mat-raised-button color=\"primary\" (click)=\"done()\" data-cy=\"close-button\">{{alert.ok()}}</button>\n</div>\n",
|
|
20
|
-
styles: [":host{display:block;padding:var(--aup-default-padding)}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{justify-content:flex-end}"]
|
|
20
|
+
styles: [":host{display:block;padding:var(--aup-default-padding)}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}"]
|
|
21
21
|
}),
|
|
22
22
|
__param(0, Inject(ACTIVITY_DATA)),
|
|
23
23
|
__metadata("design:paramtypes", [Object])
|
package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js
CHANGED
|
@@ -35,7 +35,7 @@ var ConfirmThenDialogComponent = /** @class */ (function (_super) {
|
|
|
35
35
|
Component({
|
|
36
36
|
selector: 'aup-confirmation-dialog',
|
|
37
37
|
template: "<h3 matDialogTitle *ngIf=\"confirm.title\">{{confirm.title()}}</h3>\n<div matDialogContent>\n <p *ngFor=\"let line of confirm.content()\">{{line}}</p>\n</div>\n<div matDialogActions>\n <button mat-button (click)=\"cancel()\" data-cy=\"cancel-button\">{{confirm.cancel()}}</button>\n <button mat-raised-button [color]=\"isDestructive() ? 'warn' : 'primary'\"\n (click)=\"onConfirm()\" data-cy=\"confirm-button\">{{confirm.ok()}}</button>\n</div>\n\n",
|
|
38
|
-
styles: [":host{display:block;padding:var(--aup-default-padding)}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{justify-content:flex-end}"]
|
|
38
|
+
styles: [":host{display:block;padding:var(--aup-default-padding)}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}"]
|
|
39
39
|
}),
|
|
40
40
|
__param(0, Inject(ACTIVITY_DATA)),
|
|
41
41
|
__metadata("design:paramtypes", [Object])
|
package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js
CHANGED
|
@@ -22,7 +22,7 @@ var ConfirmationDialogComponent = /** @class */ (function (_super) {
|
|
|
22
22
|
Component({
|
|
23
23
|
selector: 'aup-confirmation-dialog',
|
|
24
24
|
template: "<h3 matDialogTitle *ngIf=\"confirm.title\">{{confirm.title()}}</h3>\n<div matDialogContent>\n <p *ngFor=\"let line of confirm.content()\">{{line}}</p>\n</div>\n<div matDialogActions>\n <button mat-button (click)=\"cancel()\" data-cy=\"cancel-button\">{{confirm.cancel()}}</button>\n <button mat-raised-button [color]=\"isDestructive() ? 'warn' : 'primary'\"\n (click)=\"done()\" data-cy=\"confirm-button\">{{confirm.ok()}}</button>\n</div>\n\n",
|
|
25
|
-
styles: [":host{display:block;padding:var(--aup-default-padding)}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{justify-content:flex-end}"]
|
|
25
|
+
styles: [":host{display:block;padding:var(--aup-default-padding)}.mat-dialog-content{margin:0;padding:0}.mat-dialog-actions{margin-bottom:0!important;padding:0;align-items:flex-end;justify-content:flex-end}"]
|
|
26
26
|
}),
|
|
27
27
|
__param(0, Inject(ACTIVITY_DATA)),
|
|
28
28
|
__metadata("design:paramtypes", [Object])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate, __extends, __metadata } from "tslib";
|
|
2
2
|
import { Component, Input } from '@angular/core';
|
|
3
|
-
import { Command, DelegatingValueModel, Dsl, ListModel, StoreInListModel, StoreInValueModel,
|
|
3
|
+
import { Command, DelegatingValueModel, Dsl, ListModel, StoreInListModel, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';
|
|
4
4
|
import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
|
|
5
5
|
import { DisposableComponent } from '../../components/disposable-component';
|
|
6
6
|
import { PlaceComponent } from '../place-component';
|
|
@@ -48,7 +48,7 @@ var AbstractPlaceNavigationComponent = /** @class */ (function (_super) {
|
|
|
48
48
|
__metadata("design:type", Array)
|
|
49
49
|
], AbstractPlaceNavigationComponent.prototype, "places", void 0);
|
|
50
50
|
__decorate([
|
|
51
|
-
Input(),
|
|
51
|
+
Input(), TrackExternal(),
|
|
52
52
|
__metadata("design:type", ListModel)
|
|
53
53
|
], AbstractPlaceNavigationComponent.prototype, "placesModel", void 0);
|
|
54
54
|
__decorate([
|
|
@@ -56,7 +56,7 @@ var AbstractPlaceNavigationComponent = /** @class */ (function (_super) {
|
|
|
56
56
|
__metadata("design:type", PlaceOutletComponent)
|
|
57
57
|
], AbstractPlaceNavigationComponent.prototype, "placeOutlet", void 0);
|
|
58
58
|
__decorate([
|
|
59
|
-
Input(),
|
|
59
|
+
Input(), TrackExternal(),
|
|
60
60
|
__metadata("design:type", ValueModel)
|
|
61
61
|
], AbstractPlaceNavigationComponent.prototype, "placeOutletModel", void 0);
|
|
62
62
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-place-navigation.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/abstract-place-navigation.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,OAAO,EAEP,oBAAoB,EACpB,GAAG,EACH,SAAS,EAET,gBAAgB,EAChB,iBAAiB,EAEjB,
|
|
1
|
+
{"version":3,"file":"abstract-place-navigation.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/abstract-place-navigation.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport {\n Command,\n Constructable,\n DelegatingValueModel,\n Dsl,\n ListModel,\n ListModelChain,\n StoreInListModel,\n StoreInValueModel,\n TransactionObserver,\n TrackExternal,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { DisposableComponent } from '../../components/disposable-component';\nimport { NavItem } from '../nav-item';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceRouter } from '../place-router';\nimport { Visit } from '../visit';\nimport { PlaceOutletComponent } from './place-outlet/place-outlet.component';\n\n@Component({\n template: ''\n})\nexport class AbstractPlaceNavigationComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInListModel('placesModel')\n places: Constructable<PlaceComponent>[];\n\n @Input() @TrackExternal()\n placesModel: ListModel<Constructable<PlaceComponent>>;\n\n\n @Input() @StoreInValueModel('placeOutletModel')\n placeOutlet: PlaceOutletComponent;\n\n @Input() @TrackExternal()\n placeOutletModel: ValueModel<PlaceOutletComponent>;\n\n readonly placeDefinitions: ListModelChain<PlaceDefinition>;\n\n readonly commandFactory: Command.Factory<PlaceDefinition, void>;\n readonly _activePlaceComponent = new DelegatingValueModel<PlaceComponent>();\n private activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n constructor(placeRouter: PlaceRouter) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.placeDefinitions = chain(this.placesModel).map(c => PlaceComponent.getDefinition(c));\n this.commandFactory = Command.createFactory((placeDefinition: PlaceDefinition) => {\n this.placeOutlet.navigate(new Visit(placeDefinition));\n });\n\n when.valueOf(this.placeOutletModel).changes(outlet => {\n // NOTE: this updates during a change cycle and causes our isActiveMethod to return 2 different\n // values in the one change detection cycle. So instead we delay the update to a different\n // tick.\n setTimeout(() => this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null));\n });\n this.activePlaceDefinition = chain(this._activePlaceComponent).pluck('placeDefinition');\n }\n\n\n @Memoize()\n getNav(placeDef: PlaceDefinition): NavItem {\n const navItem = placeDef.getPlaceData('nav') as NavItem;\n return {\n title: () => navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']),\n tooltip: () => navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null),\n icon: () => navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null)\n };\n }\n\n isActive(place: PlaceDefinition): boolean {\n return this.activePlaceDefinition.query().equals(place);\n }\n\n ngOnInit() {\n }\n\n}\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Component, Input } from '@angular/core';
|
|
3
|
-
import { StoreInValueModel,
|
|
3
|
+
import { StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';
|
|
4
4
|
var BusyOverlayComponent = /** @class */ (function () {
|
|
5
5
|
function BusyOverlayComponent() {
|
|
6
6
|
}
|
|
7
7
|
BusyOverlayComponent.prototype.ngOnInit = function () {
|
|
8
8
|
};
|
|
9
9
|
__decorate([
|
|
10
|
-
Input(),
|
|
10
|
+
Input(), TrackExternal(),
|
|
11
11
|
__metadata("design:type", ValueModel)
|
|
12
12
|
], BusyOverlayComponent.prototype, "busyModel", void 0);
|
|
13
13
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"busy-overlay.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/busy-overlay/busy-overlay.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"busy-overlay.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/busy-overlay/busy-overlay.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAO9E;IAQE;IACA,CAAC;IAED,uCAAQ,GAAR;IACA,CAAC;IATD;QADC,KAAK,EAAE,EAAE,aAAa,EAAE;kCACd,UAAU;2DAAU;IAG/B;QADC,KAAK,EAAE,EAAE,iBAAiB,CAAC,WAAW,CAAC;;sDAC1B;IANH,oBAAoB;QALhC,SAAS,CAAC;YACT,QAAQ,EAAE,kBAAkB;YAC5B,0MAA4C;;SAE7C,CAAC;;OACW,oBAAoB,CAchC;IAAD,2BAAC;CAAA,AAdD,IAcC;SAdY,oBAAoB","sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { StoreInValueModel, TrackExternal, 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() @TrackExternal()\n busyModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('busyModel')\n busy: boolean;\n\n constructor() {\n }\n\n ngOnInit() {\n }\n\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __decorate, __extends, __metadata, __param } from "tslib";
|
|
2
2
|
import { Component, EventEmitter, Inject, Input, Optional, Output, SkipSelf, ViewChild } from '@angular/core';
|
|
3
3
|
import { ActivatedRoute, Router, RouterOutlet } from '@angular/router';
|
|
4
|
-
import { DebugContext, Dsl, lang, ListModel, MutableValueModel, StoreInListModel, StoreInValueModel,
|
|
4
|
+
import { DebugContext, Dsl, lang, ListModel, MutableValueModel, StoreInListModel, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';
|
|
5
5
|
import * as _ from 'lodash';
|
|
6
6
|
import { DisposableComponent } from '../../../components/disposable-component';
|
|
7
7
|
import { AUP_PLACE_CONFIG } from '../../place-config';
|
|
@@ -169,11 +169,11 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
|
|
|
169
169
|
__metadata("design:type", Boolean)
|
|
170
170
|
], PlaceOutletComponent.prototype, "animate", void 0);
|
|
171
171
|
__decorate([
|
|
172
|
-
Input(),
|
|
172
|
+
Input(), TrackExternal({ defaultValue: true }),
|
|
173
173
|
__metadata("design:type", ValueModel)
|
|
174
174
|
], PlaceOutletComponent.prototype, "animateModel", void 0);
|
|
175
175
|
__decorate([
|
|
176
|
-
Input('placeAnimationOrderModel'),
|
|
176
|
+
Input('placeAnimationOrderModel'), TrackExternal(),
|
|
177
177
|
__metadata("design:type", ListModel)
|
|
178
178
|
], PlaceOutletComponent.prototype, "customPlaceAnimationOrderModel", void 0);
|
|
179
179
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-outlet.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/place-outlet/place-outlet.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, SkipSelf, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\nimport {\n Constructable,\n DebugContext,\n Dsl,\n lang,\n ListModel,\n MutableValueModel,\n StoreInListModel,\n StoreInValueModel,\n UseDelegate,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { PlaceComponent } from '../../place-component';\nimport { AUP_PLACE_CONFIG, PlaceConfig } from '../../place-config';\nimport { PlaceDefinition } from '../../place-definition';\nimport { PlaceRouter } from '../../place-router';\n\nimport { Visit } from '../../visit';\nimport { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';\n\n// Quick hack to avoid circular references between this and PlaceComponents.\ninterface PlaceRef {\n readonly placeDefinition: PlaceDefinition\n\n initialiseBindings(param: ValueModel<Visit>): void;\n\n onPlaceReady(): void;\n}\n\n@Component({\n selector: 'aup-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss'],\n animations: [LEFT_RIGHT_PLACE_ANIMATION]\n})\nexport class PlaceOutletComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInValueModel('animateModel')\n animate: boolean;\n\n @Input() @UseDelegate({ defaultValue: true })\n animateModel: ValueModel<boolean>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrderModel') @UseDelegate()\n customPlaceAnimationOrderModel: ListModel<Constructable<PlaceComponent>>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrder') @StoreInListModel('customPlaceAnimationOrderModel')\n customPlaceAnimationOrder: Constructable<PlaceComponent>[];\n\n @Output()\n readonly placeChanged = new EventEmitter<PlaceComponent>();\n\n @ViewChild('routeOutlet', { static: true })\n routerOut: RouterOutlet;\n\n\n private outletActivated = new MutableValueModel(false);\n private readonly _activatedRouteModel = new MutableValueModel<ActivatedRoute>();\n private readonly _activePlaceModel = new MutableValueModel<PlaceComponent>();\n private readonly _activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n private parentOutletModel: MutableValueModel<PlaceOutletComponent>;\n public readonly placeAnimationOrder: ValueModelChain<number>;\n\n private initialPlaceIndex: number = null;\n private routerVisitModel: ValueModelChain<Visit>;\n private _isPushingVisitToRoute = new MutableValueModel<boolean>(false);\n private navigationInProgress: ValueModelChain<boolean>;\n\n constructor(private readonly router: Router,\n private readonly placeRouter: PlaceRouter,\n @Optional() @Inject(AUP_PLACE_CONFIG) readonly placeConfig: PlaceConfig,\n @SkipSelf() @Optional() parentOutlet: PlaceOutletComponent) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.parentOutletModel = new MutableValueModel(parentOutlet);\n\n const defaultPlaceAnimationOrder = chain(this.parentOutletModel)\n .pullValueModel(o => o.activePlaceModel)\n .pluck('placeDefinition')\n .pluckList('children')\n .pluck('component');\n\n const activatePlaceType = chain(this.activePlaceModel).map(p => p.constructor as Constructable<PlaceComponent>);\n this.placeAnimationOrder = chain(this.customPlaceAnimationOrderModel)\n .otherwise(defaultPlaceAnimationOrder)\n .reduce((placesInOrder) => {\n let placeIndex = 0;\n if (activatePlaceType.value) {\n placeIndex = placesInOrder.indexOf(activatePlaceType.value);\n if (_.isNil(this.initialPlaceIndex)) {\n this.initialPlaceIndex = placeIndex;\n }\n }\n return _.isNil(this.initialPlaceIndex) ? 0 : placeIndex - this.initialPlaceIndex;\n }, { dependsOn: activatePlaceType });\n\n // Extract our visit model from the place router.\n this._activePlaceDefinition = chain(this._activePlaceModel).pluck('placeDefinition');\n this.routerVisitModel = this._activePlaceDefinition.findIn(chain(placeRouter.activeVisitsByPlaceDefinition));\n\n this.navigationInProgress = chain(this.placeRouter.navigationInProgress);\n when.valueOf(this.navigationInProgress).becomesFalsey(() => {\n this.checkStateAndInitialise();\n });\n when.valueOf(this.outletActivated).becomesTruthy(() => {\n this.checkStateAndInitialise();\n });\n\n chain(this._activePlaceModel)\n .postponeWhile(this.navigationInProgress)\n .subscribe(place => this.placeChanged.emit(place));\n\n }\n\n // @Trace()\n ngOnInit() {\n }\n\n // @Trace()\n getAnimationOrder() {\n return this.placeAnimationOrder.value;\n }\n\n get animationDuration() {\n return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';\n }\n\n // @Trace()\n navigate(visit: Visit) {\n // console.log({ activatedRoute: this._activatedRouteModel.value });\n this.placeRouter.navigate(visit, {\n relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null\n });\n }\n\n get parentOutlet(): PlaceOutletComponent {\n return this.parentOutletModel.value;\n }\n\n\n get activePlaceModel(): ValueModel<PlaceComponent> {\n return this._activePlaceModel.readonly;\n }\n\n get activatedRouteModel(): ValueModel<ActivatedRoute> {\n return this._activatedRouteModel.readonly;\n }\n\n // @Trace()\n onOutletActivated(routerOutlet: RouterOutlet, place: PlaceComponent) {\n this._activatedRouteModel.value = routerOutlet.activatedRoute;\n this._activePlaceModel.value = place;\n this.outletActivated.value = true;\n this.checkStateAndInitialise();\n }\n\n // @Trace()\n onOutletDeactivated() {\n this.outletActivated.value = false;\n this._activePlaceModel.value = null;\n this._activatedRouteModel.value = null;\n }\n\n // @Trace()\n private checkStateAndInitialise() {\n const routerVisit = this.routerVisitModel.value;\n const activePlace = this.activePlaceModel.value;\n if (routerVisit && activePlace && !activePlace.isInitialised()) {\n if (routerVisit.placeDefinition !== activePlace.placeDefinition) {\n lang.illegalState('wrong visit!!!');\n }\n this.initialisePlace(routerVisit, activePlace);\n }\n }\n\n // @Trace()\n private initialisePlace(routerVisit: Visit, activePlace: PlaceComponent) {\n const visitModel = new MutableValueModel<Visit>(routerVisit);\n DebugContext.tag(visitModel, `PlaceOutletComponent[${activePlace.constructor.name})].visitModel`);\n activePlace.initialiseVisit(routerVisit, (current, previous) => {\n this.pushVisitChangeToRoute(previous, current);\n });\n if (!this.animateModel.value) {\n // we're not animating so trigger any post animation callbacks now.\n this.animationDone();\n }\n const { when, chain, valueOf } = Dsl.disposeWith(activePlace);\n when.valueOf(this.routerVisitModel)\n .changes(visit => {\n activePlace.updateVisit(visit);\n }, {\n unless: valueOf.any(\n this._isPushingVisitToRoute,\n this.routerVisitModel.isNil()\n ).areTruthy()\n });\n }\n\n private pushVisitChangeToRoute(previous: Visit, current: Visit) {\n this._isPushingVisitToRoute.value = true;\n this.placeRouter.pushVisitChangesToRoute(previous, current).finally(() => {\n this._isPushingVisitToRoute.value = false;\n });\n }\n\n// @Trace()\n animationStarted() {\n // console.log({ activePlace: this._activePlaceModel.value });\n }\n\n // @Trace()\n animationDone() {\n if (this._activePlaceModel.value) {\n this._activePlaceModel.value.onPlaceReady();\n }\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"place-outlet.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/place-outlet/place-outlet.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, SkipSelf, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\nimport {\n Constructable,\n DebugContext,\n Dsl,\n lang,\n ListModel,\n MutableValueModel,\n StoreInListModel,\n StoreInValueModel,\n TrackExternal,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { PlaceComponent } from '../../place-component';\nimport { AUP_PLACE_CONFIG, PlaceConfig } from '../../place-config';\nimport { PlaceDefinition } from '../../place-definition';\nimport { PlaceRouter } from '../../place-router';\n\nimport { Visit } from '../../visit';\nimport { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';\n\n// Quick hack to avoid circular references between this and PlaceComponents.\ninterface PlaceRef {\n readonly placeDefinition: PlaceDefinition\n\n initialiseBindings(param: ValueModel<Visit>): void;\n\n onPlaceReady(): void;\n}\n\n@Component({\n selector: 'aup-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss'],\n animations: [LEFT_RIGHT_PLACE_ANIMATION]\n})\nexport class PlaceOutletComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInValueModel('animateModel')\n animate: boolean;\n\n @Input() @TrackExternal({ defaultValue: true })\n animateModel: ValueModel<boolean>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrderModel') @TrackExternal()\n customPlaceAnimationOrderModel: ListModel<Constructable<PlaceComponent>>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrder') @StoreInListModel('customPlaceAnimationOrderModel')\n customPlaceAnimationOrder: Constructable<PlaceComponent>[];\n\n @Output()\n readonly placeChanged = new EventEmitter<PlaceComponent>();\n\n @ViewChild('routeOutlet', { static: true })\n routerOut: RouterOutlet;\n\n\n private outletActivated = new MutableValueModel(false);\n private readonly _activatedRouteModel = new MutableValueModel<ActivatedRoute>();\n private readonly _activePlaceModel = new MutableValueModel<PlaceComponent>();\n private readonly _activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n private parentOutletModel: MutableValueModel<PlaceOutletComponent>;\n public readonly placeAnimationOrder: ValueModelChain<number>;\n\n private initialPlaceIndex: number = null;\n private routerVisitModel: ValueModelChain<Visit>;\n private _isPushingVisitToRoute = new MutableValueModel<boolean>(false);\n private navigationInProgress: ValueModelChain<boolean>;\n\n constructor(private readonly router: Router,\n private readonly placeRouter: PlaceRouter,\n @Optional() @Inject(AUP_PLACE_CONFIG) readonly placeConfig: PlaceConfig,\n @SkipSelf() @Optional() parentOutlet: PlaceOutletComponent) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.parentOutletModel = new MutableValueModel(parentOutlet);\n\n const defaultPlaceAnimationOrder = chain(this.parentOutletModel)\n .pullValueModel(o => o.activePlaceModel)\n .pluck('placeDefinition')\n .pluckList('children')\n .pluck('component');\n\n const activatePlaceType = chain(this.activePlaceModel).map(p => p.constructor as Constructable<PlaceComponent>);\n this.placeAnimationOrder = chain(this.customPlaceAnimationOrderModel)\n .otherwise(defaultPlaceAnimationOrder)\n .reduce((placesInOrder) => {\n let placeIndex = 0;\n if (activatePlaceType.value) {\n placeIndex = placesInOrder.indexOf(activatePlaceType.value);\n if (_.isNil(this.initialPlaceIndex)) {\n this.initialPlaceIndex = placeIndex;\n }\n }\n return _.isNil(this.initialPlaceIndex) ? 0 : placeIndex - this.initialPlaceIndex;\n }, { dependsOn: activatePlaceType });\n\n // Extract our visit model from the place router.\n this._activePlaceDefinition = chain(this._activePlaceModel).pluck('placeDefinition');\n this.routerVisitModel = this._activePlaceDefinition.findIn(chain(placeRouter.activeVisitsByPlaceDefinition));\n\n this.navigationInProgress = chain(this.placeRouter.navigationInProgress);\n when.valueOf(this.navigationInProgress).becomesFalsey(() => {\n this.checkStateAndInitialise();\n });\n when.valueOf(this.outletActivated).becomesTruthy(() => {\n this.checkStateAndInitialise();\n });\n\n chain(this._activePlaceModel)\n .postponeWhile(this.navigationInProgress)\n .subscribe(place => this.placeChanged.emit(place));\n\n }\n\n // @Trace()\n ngOnInit() {\n }\n\n // @Trace()\n getAnimationOrder() {\n return this.placeAnimationOrder.value;\n }\n\n get animationDuration() {\n return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';\n }\n\n // @Trace()\n navigate(visit: Visit) {\n // console.log({ activatedRoute: this._activatedRouteModel.value });\n this.placeRouter.navigate(visit, {\n relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null\n });\n }\n\n get parentOutlet(): PlaceOutletComponent {\n return this.parentOutletModel.value;\n }\n\n\n get activePlaceModel(): ValueModel<PlaceComponent> {\n return this._activePlaceModel.readonly;\n }\n\n get activatedRouteModel(): ValueModel<ActivatedRoute> {\n return this._activatedRouteModel.readonly;\n }\n\n // @Trace()\n onOutletActivated(routerOutlet: RouterOutlet, place: PlaceComponent) {\n this._activatedRouteModel.value = routerOutlet.activatedRoute;\n this._activePlaceModel.value = place;\n this.outletActivated.value = true;\n this.checkStateAndInitialise();\n }\n\n // @Trace()\n onOutletDeactivated() {\n this.outletActivated.value = false;\n this._activePlaceModel.value = null;\n this._activatedRouteModel.value = null;\n }\n\n // @Trace()\n private checkStateAndInitialise() {\n const routerVisit = this.routerVisitModel.value;\n const activePlace = this.activePlaceModel.value;\n if (routerVisit && activePlace && !activePlace.isInitialised()) {\n if (routerVisit.placeDefinition !== activePlace.placeDefinition) {\n lang.illegalState('wrong visit!!!');\n }\n this.initialisePlace(routerVisit, activePlace);\n }\n }\n\n // @Trace()\n private initialisePlace(routerVisit: Visit, activePlace: PlaceComponent) {\n const visitModel = new MutableValueModel<Visit>(routerVisit);\n DebugContext.tag(visitModel, `PlaceOutletComponent[${activePlace.constructor.name})].visitModel`);\n activePlace.initialiseVisit(routerVisit, (current, previous) => {\n this.pushVisitChangeToRoute(previous, current);\n });\n if (!this.animateModel.value) {\n // we're not animating so trigger any post animation callbacks now.\n this.animationDone();\n }\n const { when, chain, valueOf } = Dsl.disposeWith(activePlace);\n when.valueOf(this.routerVisitModel)\n .changes(visit => {\n activePlace.updateVisit(visit);\n }, {\n unless: valueOf.any(\n this._isPushingVisitToRoute,\n this.routerVisitModel.isNil()\n ).areTruthy()\n });\n }\n\n private pushVisitChangeToRoute(previous: Visit, current: Visit) {\n this._isPushingVisitToRoute.value = true;\n this.placeRouter.pushVisitChangesToRoute(previous, current).finally(() => {\n this._isPushingVisitToRoute.value = false;\n });\n }\n\n// @Trace()\n animationStarted() {\n // console.log({ activePlace: this._activePlaceModel.value });\n }\n\n // @Trace()\n animationDone() {\n if (this._activePlaceModel.value) {\n this._activePlaceModel.value.onPlaceReady();\n }\n }\n\n}\n"]}
|
|
@@ -28,19 +28,20 @@ var PlaceGuard = /** @class */ (function () {
|
|
|
28
28
|
return __generator(this, function (_a) {
|
|
29
29
|
switch (_a.label) {
|
|
30
30
|
case 0: return [4 /*yield*/, this.cleanInteractionState(activatedRoute, state, function () { return __awaiter(_this, void 0, void 0, function () {
|
|
31
|
-
var params, parsedParams, initialVisit, sanitiser, sanitisedVisit, urlSnapshot;
|
|
31
|
+
var params, parsedParams, navigationSession, initialVisit, sanitiser, sanitisedVisit, urlSnapshot;
|
|
32
32
|
return __generator(this, function (_a) {
|
|
33
33
|
switch (_a.label) {
|
|
34
34
|
case 0:
|
|
35
35
|
params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
|
|
36
36
|
parsedParams = placeDefinition.parseRouteParams(params);
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
navigationSession = this.placeRouter.navigationSession;
|
|
38
|
+
initialVisit = navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
|
|
39
|
+
sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);
|
|
39
40
|
return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
|
|
40
41
|
case 1:
|
|
41
42
|
sanitisedVisit = _a.sent();
|
|
42
43
|
// Save the visit with any updated parameters. We need to save it so we remember any non route parameters
|
|
43
|
-
|
|
44
|
+
navigationSession.storeVisit(sanitisedVisit);
|
|
44
45
|
if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
|
|
45
46
|
urlSnapshot = this.urlService.parseUrl(state.url).updateVisitSegments(sanitisedVisit);
|
|
46
47
|
// console.log('##### Place Guard Redirect', urlSnapshot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place.guard.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/guards/place.guard.ts"],"names":[],"mappings":";AAUA,OAAO,EAAE,IAAI,EAAS,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE;IAGE,oBAA6B,MAAc,EACvB,UAAsB,EACb,WAAwB,EACxB,YAA0B,EAC1B,kBAAsC,EACtC,QAAkB;QALlB,WAAM,GAAN,MAAM,CAAQ;QACvB,eAAU,GAAV,UAAU,CAAY;QACb,gBAAW,GAAX,WAAW,CAAa;QACxB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,aAAQ,GAAR,QAAQ,CAAU;IAC/C,CAAC;IAED,WAAW;IACL,gCAAW,GAAjB,UAAkB,cAAsC,EAAE,KAA0B;;;;gBAElF,yGAAyG;gBACzG,6DAA6D;gBAC7D,sBAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK,EAAE,UAAO,eAAe;;;;;wCAE3D,qBAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,KAAK,EAAE;;;;;oDAE/D,MAAM,GAAG,IAAI,wBAAwB,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;oDACnF,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oDAExD,
|
|
1
|
+
{"version":3,"file":"place.guard.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/guards/place.guard.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injector } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanDeactivate,\n Router,\n RouterStateSnapshot,\n UrlSerializer,\n UrlTree\n} from '@angular/router';\nimport { lang, Trace } from '@coolon/pectin';\nimport { Observable } from 'rxjs';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceHistory } from '../place-history';\nimport { PlaceRouter } from '../place-router';\nimport { VisitSanitiser } from '../route/visit-sanitiser';\nimport { UrlService } from '../url-service';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { ConsolidatedParameterMap } from './consolidated-param-map';\n\n\nexport abstract class PlaceGuard implements CanActivate, CanDeactivate<PlaceComponent> {\n\n\n constructor(private readonly router: Router,\n private urlService: UrlService,\n private readonly placeRouter: PlaceRouter,\n private readonly placeHistory: PlaceHistory,\n private readonly interactionService: InteractionService,\n private readonly injector: Injector) {\n }\n\n // @Trace()\n async canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n\n // TODO: this is ugly now that I'm return UrlSnapshots and not UrlTrees. It'd be better if the functions\n // weren't nested or if I implemented a handler chain.\n return this.authorisePlaceThen(activatedRoute, state, async (placeDefinition) => {\n\n const result = await this.cleanInteractionState(activatedRoute, state, async () => {\n // Parse our route params.\n const params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);\n const parsedParams = placeDefinition.parseRouteParams(params);\n\n const navigationSession = this.placeRouter.navigationSession;\n const initialVisit = navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);\n const sanitiser = new VisitSanitiser(navigationSession, activatedRoute, this.router, this.placeHistory, this.injector);\n const sanitisedVisit = await sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));\n\n // Save the visit with any updated parameters. We need to save it so we remember any non route parameters\n navigationSession.storeVisit(sanitisedVisit);\n if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {\n // Regenerate the url\n const urlSnapshot = this.urlService.parseUrl(state.url).updateVisitSegments(sanitisedVisit);\n // console.log('##### Place Guard Redirect', urlSnapshot);\n return urlSnapshot;\n } else {\n return true;\n }\n });\n return this.handleGuardResult(result);\n\n });\n }\n\n // @Trace()\n async canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Promise<boolean | UrlTree> {\n const currentUrl = this.urlService.parseUrl(currentState.url);\n const nextUrl = this.urlService.parseUrl(nextState.url);\n const result = await this.placeRouter.navigationSession.canDeactivatePlace(component, currentUrl, nextUrl);\n return this.handleGuardResult(result);\n }\n\n // @Trace()\n private handleGuardResult(result) {\n if (result instanceof UrlSnapshot) {\n return result.urlTree;\n } else {\n return result;\n }\n }\n\n // @Trace()\n protected async authorisePlaceThen(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot, runPlaceGuards: (placeDefinition: PlaceDefinition) => Promise<boolean | UrlTree>) {\n if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {\n const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);\n const authoriseResult = placeDefinition.authenticate ? await this.isAuthorised(activatedRoute, state) : true;\n if (authoriseResult === true) {\n // we're authorised, now run the place guards.\n return runPlaceGuards(placeDefinition);\n } else {\n console.log('not authorised result', authoriseResult);\n return authoriseResult;\n }\n } else {\n return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);\n }\n }\n\n // @Trace()\n async isAuthorised(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n const authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);\n return (authorised instanceof Observable) ? authorised.toPromise() : authorised;\n }\n\n abstract getAuthGuard(injector: Injector): CanActivate;\n\n // @Trace()\n async cleanInteractionState(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, then: () => Promise<boolean | UrlSnapshot>): Promise<boolean | UrlSnapshot> {\n const url = this.urlService.parseUrl(state.url);\n if (!this.interactionService.isActive() && url.hasInteractions()) {\n // This happens if we reload the page or the url was pasted as the route should only be activated\n // after the interaction context has become active.\n return url.removeInteractionIds();\n } else {\n return then();\n }\n }\n\n}\n"]}
|
|
@@ -49,11 +49,11 @@ var PlaceComponent = /** @class */ (function (_super) {
|
|
|
49
49
|
var binding = this.registerDisposable(new Binding(this.visitModel, model, {
|
|
50
50
|
toRight: function (visit) {
|
|
51
51
|
var value = visit.getParameter(parameterDef.name);
|
|
52
|
-
console.log('push to component', { name: parameterDef.name, value
|
|
52
|
+
// console.log('push to component', { name: parameterDef.name, value, visit });
|
|
53
53
|
return value;
|
|
54
54
|
},
|
|
55
55
|
toLeft: function (value, currentVisit) {
|
|
56
|
-
console.log('push to route', { name: parameterDef.name, value
|
|
56
|
+
// console.log('push to route', { name: parameterDef.name, value, currentVisit });
|
|
57
57
|
return currentVisit.replace(parameterDef, value);
|
|
58
58
|
}
|
|
59
59
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/place-component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,MAAM,EACN,OAAO,EAEP,YAAY,EACZ,GAAG,EACH,KAAK,EAEL,IAAI,EACJ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrD,8CAA8C;AAC9C,MAAM,CAAC,IAAM,wBAAwB,GAAG,0BAA0B,CAAC;AACnE,qBAAqB;AACrB,MAAM,CAAC,IAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAGzE;IAAoC,kCAAmB;IASrD;QAAA,YACE,iBAAO,SACR;QATO,gBAAU,GAAG,IAAI,iBAAiB,EAAS,CAAC;QAC5C,oBAAc,GAAG,IAAI,KAAK,EAAE,CAAC;;IAQrC,CAAC;uBAXU,cAAc;IAazB,WAAW;IACJ,wCAAe,GAAtB,UAAuB,KAAY,EAAE,kBAA4D;QAAjG,iBAWC;QAVC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAA,iCAAI,CAA2B;QAEvC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9B,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,gBAAa,CAAC,CAAC;QAC3F,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAA,YAAY,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAjC,CAAiC,CAAC,CAAC;QACxG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAC,OAAO,EAAC,QAAQ;YACrD,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAC,CAAC,CAAC;IACpC,CAAC;IAEM,oCAAW,GAAlB,UAAmB,KAAY;QAA/B,iBAMC;QALC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAC5B,KAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sCAAa,GAAb;QACE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,WAAW;IACH,uCAAc,GAAtB,UAA6B,YAAuC;QAClE,IAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAwB,CAAC;QACrE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,SAAI,YAAY,CAAC,YAAc,CAAC,CAAC;QAC/F,IAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;YAC1E,OAAO,EAAP,UAAQ,KAAY;gBAClB,IAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACpD
|
|
1
|
+
{"version":3,"file":"place-component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/place-component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Directive } from '@angular/core';\nimport {\n assert,\n Binding,\n Constructable,\n DebugContext,\n Dsl,\n Guard,\n IMutableHasValue,\n lang,\n MutableValueModel\n} from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport 'reflect-metadata';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { InteractionContext } from '../interaction/interaction-context';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition.class';\nimport { Visit } from './visit';\n\n// RAKE: making this Symbol(...) broke things.\nexport const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';\n// this one seems ok.\nexport const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');\n\n@Directive()\nexport class PlaceComponent extends DisposableComponent {\n\n private visitModel = new MutableValueModel<Visit>();\n private _inVisitUpdate = new Guard();\n\n interactionContext?: InteractionContext;\n\n canDeactivate?(interactionContext: InteractionContext): boolean | Promise<boolean>;\n\n constructor() {\n super();\n }\n\n // @Trace()\n public initialiseVisit(visit: Visit, notifyVisitChanged: (current: Visit, previous:Visit) => void) {\n assert.isNil(this.visitModel.value);\n\n const { when } = Dsl.disposeWith(this);\n\n this.visitModel.value = visit;\n DebugContext.get(this.visitModel).tag(`${this.placeDefinition.component.name}.visitModel`);\n this.placeDefinition.getVisitParameterDefs().forEach(parameterDef => this.installBinding(parameterDef));\n when.valueOf(this.visitModel).changes((current,previous) => {\n notifyVisitChanged(current, previous);\n }, {unless: this._inVisitUpdate});\n }\n\n public updateVisit(visit: Visit) {\n assert.isTruthy(this.isInitialised());\n assert.notNil(visit);\n this._inVisitUpdate.whileTrue(() => {\n this.visitModel.value = visit;\n });\n }\n\n isInitialised() {\n return !!this.visitModel.value;\n }\n\n // @Trace()\n private installBinding<T, S>(parameterDef: ParameterDefinition<T, S>) {\n const model = this[parameterDef.propertyName] as IMutableHasValue<S>;\n DebugContext.tag(model, `${this.placeDefinition.component.name}.${parameterDef.propertyName}`);\n const binding = this.registerDisposable(new Binding(this.visitModel, model, {\n toRight(visit: Visit): S {\n const value = visit.getParameter(parameterDef.name);\n // console.log('push to component', { name: parameterDef.name, value, visit });\n return value;\n },\n toLeft(value: S, currentVisit?: Visit): Visit {\n // console.log('push to route', { name: parameterDef.name, value, currentVisit });\n return currentVisit.replace(parameterDef, value);\n }\n }));\n\n binding.writeRight();\n }\n\n @Memoize()\n get placeDefinition(): PlaceDefinition {\n return PlaceComponent.getDefinition(this.constructor as any as Constructable<PlaceComponent>);\n }\n\n get childPlaces(): Constructable<PlaceComponent>[] {\n return this.placeDefinition.children.map(d => d.component);\n }\n\n onPlaceReady() {\n }\n\n}\n\nexport namespace PlaceComponent {\n\n export function isPlaceComponentConstructor(target: any): target is Constructable<PlaceComponent> {\n return lang.constructorChain(target as Constructable<any>).includes(PlaceComponent);\n }\n\n export function getRouteParameters(klass: Constructable<PlaceComponent>): ParameterDefinition<any>[] {\n return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY) as ParameterDefinition<any>[];\n }\n\n export function getDefinition(klass: Constructable<PlaceComponent>): PlaceDefinition {\n return Reflect.getMetadata(DEFINITION_META_DATA_KEY, klass);\n }\n\n export function injectDefinition(klass: Constructable<PlaceComponent>, definition: PlaceDefinition) {\n Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);\n }\n\n}\n"]}
|
|
@@ -1,22 +1,36 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
+
import { assert } from '@coolon/pectin';
|
|
3
4
|
import _ from 'lodash';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
var PlaceHistory = /** @class */ (function () {
|
|
6
7
|
function PlaceHistory() {
|
|
7
|
-
this.
|
|
8
|
+
this._archive = new Map();
|
|
9
|
+
this.placeHistoryDepth = 4;
|
|
8
10
|
}
|
|
9
|
-
|
|
10
|
-
PlaceHistory.prototype.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
history.unshift(state); // LIFO
|
|
15
|
-
this.setHistory(state.placeDefinition, history.slice(0, 3)); // limit our history to 4 visits
|
|
11
|
+
PlaceHistory_1 = PlaceHistory;
|
|
12
|
+
PlaceHistory.prototype.notifyNavigationStarted = function () {
|
|
13
|
+
if (this._activeVisits) {
|
|
14
|
+
this.archive(this._activeVisits.visits);
|
|
15
|
+
this._previousVisits = this._activeVisits;
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
|
+
PlaceHistory.prototype.notifyNavigationFinished = function (visits) {
|
|
19
|
+
this._activeVisits = new PlaceHistory_1.VisitRecord(visits);
|
|
20
|
+
};
|
|
21
|
+
PlaceHistory.prototype.updateVisit = function (visit) {
|
|
22
|
+
assert.isTruthy(this._activeVisits);
|
|
23
|
+
this._activeVisits.update(visit);
|
|
24
|
+
};
|
|
25
|
+
PlaceHistory.prototype.lastVisitIncluded = function (placeDef) {
|
|
26
|
+
var _a;
|
|
27
|
+
return !!((_a = this._previousVisits) === null || _a === void 0 ? void 0 : _a.getVisitFor(placeDef));
|
|
28
|
+
};
|
|
29
|
+
PlaceHistory.prototype.getMostRecentVisitFor = function (placeDef) {
|
|
30
|
+
return _.first(this.getHistory(placeDef));
|
|
31
|
+
};
|
|
18
32
|
PlaceHistory.prototype.getHistory = function (placeDef) {
|
|
19
|
-
var history = this.
|
|
33
|
+
var history = this._archive.get(placeDef);
|
|
20
34
|
if (!history) {
|
|
21
35
|
history = [];
|
|
22
36
|
this.setHistory(placeDef, history);
|
|
@@ -24,10 +38,22 @@ var PlaceHistory = /** @class */ (function () {
|
|
|
24
38
|
return history;
|
|
25
39
|
};
|
|
26
40
|
PlaceHistory.prototype.setHistory = function (placeDef, history) {
|
|
27
|
-
this.
|
|
41
|
+
this._archive.set(placeDef, history);
|
|
42
|
+
};
|
|
43
|
+
PlaceHistory.prototype.archive = function (visits) {
|
|
44
|
+
var _this = this;
|
|
45
|
+
visits.forEach(function (state) {
|
|
46
|
+
var history = _this.getHistory(state.placeDefinition);
|
|
47
|
+
var previousState = _.first(history);
|
|
48
|
+
if (!previousState || state.hasChangedFrom(previousState)) {
|
|
49
|
+
history.unshift(state); // LIFO
|
|
50
|
+
_this.setHistory(state.placeDefinition, history.slice(0, _this.placeHistoryDepth));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
28
53
|
};
|
|
54
|
+
var PlaceHistory_1;
|
|
29
55
|
PlaceHistory.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlaceHistory_Factory() { return new PlaceHistory(); }, token: PlaceHistory, providedIn: "root" });
|
|
30
|
-
PlaceHistory = __decorate([
|
|
56
|
+
PlaceHistory = PlaceHistory_1 = __decorate([
|
|
31
57
|
Injectable({
|
|
32
58
|
providedIn: 'root'
|
|
33
59
|
}),
|
|
@@ -36,4 +62,84 @@ var PlaceHistory = /** @class */ (function () {
|
|
|
36
62
|
return PlaceHistory;
|
|
37
63
|
}());
|
|
38
64
|
export { PlaceHistory };
|
|
65
|
+
(function (PlaceHistory) {
|
|
66
|
+
var VisitRecord = /** @class */ (function () {
|
|
67
|
+
function VisitRecord(visits) {
|
|
68
|
+
this.visits = visits;
|
|
69
|
+
}
|
|
70
|
+
VisitRecord.prototype.update = function (visit) {
|
|
71
|
+
this.visits = this.visits.filter(function (v) { return v.placeDefinition !== visit.placeDefinition; }).concat(visit);
|
|
72
|
+
};
|
|
73
|
+
VisitRecord.prototype.getVisitFor = function (placeDef) {
|
|
74
|
+
return this.visits.find(function (v) { return v.placeDefinition === placeDef; });
|
|
75
|
+
};
|
|
76
|
+
return VisitRecord;
|
|
77
|
+
}());
|
|
78
|
+
PlaceHistory.VisitRecord = VisitRecord;
|
|
79
|
+
// export class Query {
|
|
80
|
+
// private _history: Visit.State[];
|
|
81
|
+
// private _places: Place[];
|
|
82
|
+
// private _predicate: (visit: any) => boolean;
|
|
83
|
+
// private _limit: number;
|
|
84
|
+
//
|
|
85
|
+
// constructor(history, limit = history.length) {
|
|
86
|
+
// this._history = history;
|
|
87
|
+
// this._places = [];
|
|
88
|
+
// this._predicate = (visit => true);
|
|
89
|
+
// this._limit = limit;
|
|
90
|
+
// }
|
|
91
|
+
//
|
|
92
|
+
// to(...places:Place[]):this {
|
|
93
|
+
// this._places = places;
|
|
94
|
+
// return this;
|
|
95
|
+
// }
|
|
96
|
+
//
|
|
97
|
+
// with(parameters: { [parameter: string]: any }): this {
|
|
98
|
+
// this.matching(state => {
|
|
99
|
+
// return Object.keys(parameters).reduce((acc, key) => {
|
|
100
|
+
// const matchValue = parameters[key];
|
|
101
|
+
// const visitValue = state.get(key);
|
|
102
|
+
// const matched = matchValue === '*' ? !_.isNil(visitValue) : visitValue == matchValue;
|
|
103
|
+
// // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);
|
|
104
|
+
// return acc && matched;
|
|
105
|
+
// }, true);
|
|
106
|
+
// });
|
|
107
|
+
// return this;
|
|
108
|
+
// }
|
|
109
|
+
//
|
|
110
|
+
// last(): Visit.State {
|
|
111
|
+
// return _.findLast(this._history, visit => this._matches(visit))
|
|
112
|
+
// }
|
|
113
|
+
//
|
|
114
|
+
// // @trace
|
|
115
|
+
// allThatMatch(): Visit.State[] {
|
|
116
|
+
// return _.filter(this._history, visit => this._matches(visit)).slice(-this._limit);
|
|
117
|
+
// }
|
|
118
|
+
//
|
|
119
|
+
// // @trace
|
|
120
|
+
// mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {
|
|
121
|
+
// const lastStateWithParam = _.findLast(this.allThatMatch(), state => !_.isNil(state.get(param)));
|
|
122
|
+
// return _.isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);
|
|
123
|
+
// }
|
|
124
|
+
//
|
|
125
|
+
// limit(limit: number): this {
|
|
126
|
+
// this._limit = limit;
|
|
127
|
+
// return this;
|
|
128
|
+
// }
|
|
129
|
+
//
|
|
130
|
+
// matching(predicate: (visit: Visit.State) => boolean): this {
|
|
131
|
+
// this._predicate = predicate;
|
|
132
|
+
// return this;
|
|
133
|
+
// }
|
|
134
|
+
//
|
|
135
|
+
// _matches(visit: Visit.State) {
|
|
136
|
+
// return this._isPlaceMatch(visit) && this._predicate(visit);
|
|
137
|
+
// }
|
|
138
|
+
//
|
|
139
|
+
// _isPlaceMatch(visit: Visit.State) {
|
|
140
|
+
// return this._places.length < 1 || this._places.includes(visit.place)
|
|
141
|
+
// }
|
|
142
|
+
//
|
|
143
|
+
// }
|
|
144
|
+
})(PlaceHistory || (PlaceHistory = {}));
|
|
39
145
|
//# sourceMappingURL=place-history.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-history.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/place-history.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"place-history.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/place-history.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { assert, Trace } from '@coolon/pectin';\nimport _ from 'lodash';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceHistory {\n\n private _activeVisits: PlaceHistory.VisitRecord;\n private _previousVisits: PlaceHistory.VisitRecord;\n\n private _archive = new Map<PlaceDefinition, Visit[]>();\n private readonly placeHistoryDepth: number = 4;\n\n constructor() {\n }\n\n notifyNavigationStarted() {\n if (this._activeVisits) {\n this.archive(this._activeVisits.visits);\n this._previousVisits = this._activeVisits;\n }\n }\n\n notifyNavigationFinished(visits: Visit[]) {\n this._activeVisits = new PlaceHistory.VisitRecord(visits);\n }\n\n updateVisit(visit: Visit) {\n assert.isTruthy(this._activeVisits);\n this._activeVisits.update(visit);\n }\n\n lastVisitIncluded(placeDef: PlaceDefinition): boolean {\n return !!this._previousVisits?.getVisitFor(placeDef);\n }\n\n getMostRecentVisitFor(placeDef: PlaceDefinition) {\n return _.first(this.getHistory(placeDef));\n }\n\n getHistory(placeDef: PlaceDefinition): Visit[] {\n let history = this._archive.get(placeDef);\n if (!history) {\n history = [];\n this.setHistory(placeDef, history);\n }\n return history;\n }\n\n private setHistory(placeDef: PlaceDefinition, history: Visit[]) {\n this._archive.set(placeDef, history);\n }\n\n protected archive(visits: Visit[]) {\n visits.forEach(state => {\n const history = this.getHistory(state.placeDefinition);\n const previousState = _.first(history);\n if (!previousState || state.hasChangedFrom(previousState)) {\n history.unshift(state); // LIFO\n this.setHistory(state.placeDefinition, history.slice(0, this.placeHistoryDepth));\n }\n });\n }\n\n\n}\n\nexport namespace PlaceHistory {\n\n export class VisitRecord {\n constructor(public visits: Visit[]) {\n }\n\n update(visit: Visit) {\n this.visits = this.visits.filter(v => v.placeDefinition !== visit.placeDefinition).concat(visit);\n }\n\n getVisitFor(placeDef: PlaceDefinition): Visit | undefined {\n return this.visits.find(v => v.placeDefinition === placeDef);\n }\n }\n\n // export class Query {\n // private _history: Visit.State[];\n // private _places: Place[];\n // private _predicate: (visit: any) => boolean;\n // private _limit: number;\n //\n // constructor(history, limit = history.length) {\n // this._history = history;\n // this._places = [];\n // this._predicate = (visit => true);\n // this._limit = limit;\n // }\n //\n // to(...places:Place[]):this {\n // this._places = places;\n // return this;\n // }\n //\n // with(parameters: { [parameter: string]: any }): this {\n // this.matching(state => {\n // return Object.keys(parameters).reduce((acc, key) => {\n // const matchValue = parameters[key];\n // const visitValue = state.get(key);\n // const matched = matchValue === '*' ? !_.isNil(visitValue) : visitValue == matchValue;\n // // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);\n // return acc && matched;\n // }, true);\n // });\n // return this;\n // }\n //\n // last(): Visit.State {\n // return _.findLast(this._history, visit => this._matches(visit))\n // }\n //\n // // @trace\n // allThatMatch(): Visit.State[] {\n // return _.filter(this._history, visit => this._matches(visit)).slice(-this._limit);\n // }\n //\n // // @trace\n // mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {\n // const lastStateWithParam = _.findLast(this.allThatMatch(), state => !_.isNil(state.get(param)));\n // return _.isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);\n // }\n //\n // limit(limit: number): this {\n // this._limit = limit;\n // return this;\n // }\n //\n // matching(predicate: (visit: Visit.State) => boolean): this {\n // this._predicate = predicate;\n // return this;\n // }\n //\n // _matches(visit: Visit.State) {\n // return this._isPlaceMatch(visit) && this._predicate(visit);\n // }\n //\n // _isPlaceMatch(visit: Visit.State) {\n // return this._places.length < 1 || this._places.includes(visit.place)\n // }\n //\n // }\n\n}\n"]}
|