@coolon/angular-ui-powerups 12.4.1 → 12.4.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-cypress.umd.js +14 -34
- package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.js +102 -104
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/cypress/coolon-angular-ui-powerups-cypress.metadata.json +1 -1
- package/esm2015/cypress/component-builder.js +3 -3
- package/esm2015/cypress/component-builder.js.map +1 -1
- package/esm2015/cypress/component-builder.metadata.json +1 -1
- package/esm2015/cypress/components/aup-abstract-table.js +3 -3
- package/esm2015/cypress/components/aup-abstract-table.js.map +1 -1
- package/esm2015/cypress/components/aup-abstract-table.metadata.json +1 -1
- package/esm2015/cypress/components/aup-command.js +2 -2
- package/esm2015/cypress/components/aup-command.js.map +1 -1
- package/esm2015/cypress/components/aup-command.metadata.json +1 -1
- package/esm2015/cypress/components/aup-tree-table.js +1 -1
- package/esm2015/cypress/components/aup-tree-table.js.map +1 -1
- package/esm2015/cypress/components/aup-tree-table.metadata.json +1 -1
- package/esm2015/cypress/page-element.js +3 -3
- package/esm2015/cypress/page-element.js.map +1 -1
- package/esm2015/cypress/page-element.metadata.json +1 -1
- package/esm2015/cypress/page.js +3 -3
- package/esm2015/cypress/page.js.map +1 -1
- package/esm2015/cypress/page.metadata.json +1 -1
- package/esm2015/lib/components/cards/card-container/card-container.component.js +4 -4
- package/esm2015/lib/components/cards/card-container/card-container.component.js.map +1 -1
- package/esm2015/lib/components/cards/card-container/card-container.component.metadata.json +1 -1
- package/esm2015/lib/components/commands/command/command.component.js +2 -2
- package/esm2015/lib/components/commands/command/command.component.js.map +1 -1
- package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
- package/esm2015/lib/components/commands/command-face.js +8 -8
- package/esm2015/lib/components/commands/command-face.js.map +1 -1
- package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +3 -3
- package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js.map +1 -1
- package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.metadata.json +1 -1
- package/esm2015/lib/components/tables/abstract-table-model.js +3 -3
- package/esm2015/lib/components/tables/abstract-table-model.js.map +1 -1
- package/esm2015/lib/components/tables/abstract-table-model.metadata.json +1 -1
- package/esm2015/lib/components/tables/column-list-model.js +2 -2
- package/esm2015/lib/components/tables/column-list-model.js.map +1 -1
- package/esm2015/lib/components/tables/column-list-model.metadata.json +1 -1
- package/esm2015/lib/components/tables/table/column-model.js +12 -12
- package/esm2015/lib/components/tables/table/column-model.js.map +1 -1
- package/esm2015/lib/components/tables/table/column-model.metadata.json +1 -1
- package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
- package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +3 -3
- package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js.map +1 -1
- package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js +2 -2
- package/esm2015/lib/components/tables/tree-table/tree-label-column-model.js.map +1 -1
- package/esm2015/lib/components/tables/tree-table/tree-label-column-model.metadata.json +1 -1
- package/esm2015/lib/components/tables/tree-table/tree-table-model.js +2 -2
- package/esm2015/lib/components/tables/tree-table/tree-table-model.js.map +1 -1
- package/esm2015/lib/components/tables/tree-table/tree-table-model.metadata.json +1 -1
- package/esm2015/lib/components/text/markdown/markdown.component.js +3 -3
- package/esm2015/lib/components/text/markdown/markdown.component.js.map +1 -1
- package/esm2015/lib/components/text/markdown/markdown.component.metadata.json +1 -1
- package/esm2015/lib/directives/highlight.pipe.js +2 -2
- package/esm2015/lib/directives/highlight.pipe.js.map +1 -1
- package/esm2015/lib/directives/highlight.pipe.metadata.json +1 -1
- package/esm2015/lib/interaction/abstract-interaction-context.js.map +1 -1
- package/esm2015/lib/interaction/alert.js +3 -3
- package/esm2015/lib/interaction/alert.js.map +1 -1
- package/esm2015/lib/interaction/components/abstract-dialog.component.js +2 -2
- package/esm2015/lib/interaction/components/abstract-dialog.component.js.map +1 -1
- package/esm2015/lib/interaction/components/activity-body/activity-body.component.js.map +1 -1
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -2
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +2 -2
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.js.map +1 -1
- package/esm2015/lib/interaction/components/activity-title/activity-title.component.metadata.json +1 -1
- package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +2 -2
- package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -1
- package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -1
- package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -1
- package/esm2015/lib/interaction/components/input-activities/input-activity.js +2 -2
- package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -1
- package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -1
- package/esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js +2 -2
- package/esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js.map +1 -1
- package/esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.metadata.json +1 -1
- package/esm2015/lib/place/components/abstract-place-navigation.component.js +1 -1
- 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/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/consolidated-param-map.js +3 -3
- package/esm2015/lib/place/guards/consolidated-param-map.js.map +1 -1
- package/esm2015/lib/place/guards/consolidated-param-map.metadata.json +1 -1
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +2 -2
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.js.map +1 -1
- package/esm2015/lib/place/navigation/place-component-deactivation-handler.metadata.json +1 -1
- package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js +2 -2
- package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js.map +1 -1
- package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.metadata.json +1 -1
- package/esm2015/lib/place/place-component.js +3 -3
- package/esm2015/lib/place/place-component.js.map +1 -1
- package/esm2015/lib/place/place-component.metadata.json +1 -1
- package/esm2015/lib/place/place-definition.js +5 -5
- package/esm2015/lib/place/place-definition.js.map +1 -1
- package/esm2015/lib/place/place-definition.metadata.json +1 -1
- package/esm2015/lib/place/place-history.js +8 -8
- 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.decorator.js +2 -2
- package/esm2015/lib/place/place.decorator.js.map +1 -1
- package/esm2015/lib/place/place.decorator.metadata.json +1 -1
- package/esm2015/lib/place/route/formatter.js +3 -3
- package/esm2015/lib/place/route/formatter.js.map +1 -1
- package/esm2015/lib/place/route/parameter-definition.js +8 -8
- package/esm2015/lib/place/route/parameter-definition.js.map +1 -1
- package/esm2015/lib/place/route/parameter-definition.metadata.json +1 -1
- package/esm2015/lib/place/url-snapshot.js +3 -3
- package/esm2015/lib/place/url-snapshot.js.map +1 -1
- package/esm2015/lib/place/url-snapshot.metadata.json +1 -1
- package/esm2015/lib/place/visit.js +5 -5
- package/esm2015/lib/place/visit.js.map +1 -1
- package/esm2015/lib/place/visit.metadata.json +1 -1
- package/fesm2015/coolon-angular-ui-powerups-cypress.js +10 -10
- package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
- package/fesm2015/coolon-angular-ui-powerups.js +76 -77
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/package.json +10 -9
- package/schematics/place-routes/place-class-scanner.js +5 -5
- package/schematics/place-routes/place-class-scanner.js.map +1 -1
- package/schematics/place-routes/place-def.js +5 -5
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/utils/import-def.js +4 -4
- package/schematics/utils/import-def.js.map +1 -1
- package/schematics/utils/method-scanner.js +6 -6
- package/schematics/utils/method-scanner.js.map +1 -1
- package/schematics/utils/path-helper.js +4 -4
- package/schematics/utils/path-helper.js.map +1 -1
- package/schematics/utils/source-file-scanner.js +5 -5
- package/schematics/utils/source-file-scanner.js.map +1 -1
- package/schematics/utils/source-file-utilities.js +2 -2
- package/schematics/utils/source-file-utilities.js.map +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { assert } from '@coolon/pectin';
|
|
3
|
-
import
|
|
3
|
+
import { first } from 'lodash-es';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class PlaceHistory {
|
|
6
6
|
constructor() {
|
|
@@ -25,7 +25,7 @@ export class PlaceHistory {
|
|
|
25
25
|
return !!((_a = this._previousVisits) === null || _a === void 0 ? void 0 : _a.getVisitFor(placeDef));
|
|
26
26
|
}
|
|
27
27
|
getMostRecentVisitFor(placeDef) {
|
|
28
|
-
return
|
|
28
|
+
return first(this.getHistory(placeDef));
|
|
29
29
|
}
|
|
30
30
|
getHistory(placeDef) {
|
|
31
31
|
let history = this._archive.get(placeDef);
|
|
@@ -41,7 +41,7 @@ export class PlaceHistory {
|
|
|
41
41
|
archive(visits) {
|
|
42
42
|
visits.forEach(state => {
|
|
43
43
|
const history = this.getHistory(state.placeDefinition);
|
|
44
|
-
const previousState =
|
|
44
|
+
const previousState = first(history);
|
|
45
45
|
if (!previousState || state.hasChangedFrom(previousState)) {
|
|
46
46
|
history.unshift(state); // LIFO
|
|
47
47
|
this.setHistory(state.placeDefinition, history.slice(0, this.placeHistoryDepth));
|
|
@@ -92,7 +92,7 @@ PlaceHistory.ctorParameters = () => [];
|
|
|
92
92
|
// return Object.keys(parameters).reduce((acc, key) => {
|
|
93
93
|
// const matchValue = parameters[key];
|
|
94
94
|
// const visitValue = state.get(key);
|
|
95
|
-
// const matched = matchValue === '*' ? !
|
|
95
|
+
// const matched = matchValue === '*' ? !isNil(visitValue) : visitValue == matchValue;
|
|
96
96
|
// // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);
|
|
97
97
|
// return acc && matched;
|
|
98
98
|
// }, true);
|
|
@@ -101,18 +101,18 @@ PlaceHistory.ctorParameters = () => [];
|
|
|
101
101
|
// }
|
|
102
102
|
//
|
|
103
103
|
// last(): Visit.State {
|
|
104
|
-
// return
|
|
104
|
+
// return findLast(this._history, visit => this._matches(visit))
|
|
105
105
|
// }
|
|
106
106
|
//
|
|
107
107
|
// // @trace
|
|
108
108
|
// allThatMatch(): Visit.State[] {
|
|
109
|
-
// return
|
|
109
|
+
// return filter(this._history, visit => this._matches(visit)).slice(-this._limit);
|
|
110
110
|
// }
|
|
111
111
|
//
|
|
112
112
|
// // @trace
|
|
113
113
|
// mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {
|
|
114
|
-
// const lastStateWithParam =
|
|
115
|
-
// return
|
|
114
|
+
// const lastStateWithParam = findLast(this.allThatMatch(), state => !isNil(state.get(param)));
|
|
115
|
+
// return isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);
|
|
116
116
|
// }
|
|
117
117
|
//
|
|
118
118
|
// limit(limit: number): this {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-history.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/place-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAS,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"place-history.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/place-history.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { assert, Trace } from '@coolon/pectin';\n\nimport { first } from 'lodash-es';\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"PlaceHistory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"PlaceHistory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"notifyNavigationStarted":[{"__symbolic":"method"}],"notifyNavigationFinished":[{"__symbolic":"method"}],"updateVisit":[{"__symbolic":"method"}],"lastVisitIncluded":[{"__symbolic":"method"}],"getMostRecentVisitFor":[{"__symbolic":"method"}],"getHistory":[{"__symbolic":"method"}],"setHistory":[{"__symbolic":"method"}],"archive":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}}}]
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { lang } from '@coolon/pectin';
|
|
2
|
-
import
|
|
2
|
+
import { isNil } from 'lodash-es';
|
|
3
3
|
import { PlaceComponent } from './place-component';
|
|
4
4
|
import { PlaceDefinition } from './place-definition';
|
|
5
5
|
export function Place(options) {
|
|
6
6
|
return (target) => {
|
|
7
7
|
var _a;
|
|
8
8
|
if (PlaceComponent.isPlaceComponentConstructor(target)) {
|
|
9
|
-
PlaceComponent.injectDefinition(target, new PlaceDefinition(target, options.path,
|
|
9
|
+
PlaceComponent.injectDefinition(target, new PlaceDefinition(target, options.path, isNil(options.authenticate) ? true : options.authenticate, (_a = options.role) !== null && _a !== void 0 ? _a : options.roles, options.data, PlaceComponent.getRouteParameters(target), (options.children || []).map(c => PlaceComponent.getDefinition(c))));
|
|
10
10
|
if (options.roles) {
|
|
11
11
|
console.warn(`${target.name} @Place({roles: string[]}) is deprecated. Use @Place({role:any}) instead`);
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place.decorator.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/place.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,IAAI,EAAU,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"place.decorator.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/place.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,IAAI,EAAU,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,KAAK,CAAC,OAAsB;IAC1C,OAAO,CAAC,MAAgB,EAAE,EAAE;;QAC1B,IAAI,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE;YACtD,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,eAAe,CACzD,MAAM,EACN,OAAO,CAAC,IAAI,EACZ,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EACzD,MAAA,OAAO,CAAC,IAAI,mCAAI,OAAO,CAAC,KAAK,EAC7B,OAAO,CAAC,IAAI,EACZ,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,EACzC,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,2EAA2E,CAAC,CAAA;aACxG;SAEF;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,yDAAyD,CAAC,CAAC;SACvF;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { Constructable, lang, Logger } from '@coolon/pectin';\n\nimport { isNil } from 'lodash-es';\nimport { PlaceComponent } from './place-component';\nimport { PlaceDefinition } from './place-definition';\n\nexport function Place(options: Place.Options) {\n return (target: Function) => {\n if (PlaceComponent.isPlaceComponentConstructor(target)) {\n PlaceComponent.injectDefinition(target, new PlaceDefinition(\n target,\n options.path,\n isNil(options.authenticate) ? true : options.authenticate,\n options.role ?? options.roles,\n options.data,\n PlaceComponent.getRouteParameters(target),\n (options.children || []).map(c => PlaceComponent.getDefinition(c))\n ));\n\n if (options.roles) {\n console.warn(`${target.name} @Place({roles: string[]}) is deprecated. Use @Place({role:any}) instead`)\n }\n\n } else {\n lang.illegalState(`${target} must extend PlaceComponent to use the @Place decorator`);\n }\n };\n}\n\nexport namespace Place {\n\n export interface Options {\n path: string;\n data?: { [key: string]: any }; // defaults to true\n authenticate?: boolean; // defaults to true\n role?: any; // defaults to empty array\n\n /**\n * @deprecated use #role instead\n */\n roles?: string[]; // defaults to empty array\n\n children?: Constructable<PlaceComponent>[];\n defaultChild?: Constructable<PlaceComponent>;\n }\n\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"Place":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"Place":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Lambda not supported","line":7,"character":9}}}}]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isNumber, isNaN as _isNaN } from 'lodash-es';
|
|
2
2
|
export var Formatter;
|
|
3
3
|
(function (Formatter) {
|
|
4
4
|
class StringType {
|
|
@@ -11,11 +11,11 @@ export var Formatter;
|
|
|
11
11
|
}
|
|
12
12
|
class NumberType {
|
|
13
13
|
format(value) {
|
|
14
|
-
return
|
|
14
|
+
return isNumber(value) && !isNaN(value) ? `${value}` : null;
|
|
15
15
|
}
|
|
16
16
|
parse(value) {
|
|
17
17
|
const parsed = Number.parseFloat(value);
|
|
18
|
-
return
|
|
18
|
+
return _isNaN(parsed) ? null : parsed;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
class BooleanType {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/place/route/formatter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/place/route/formatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAG,KAAK,IAAI,MAAM,EAAC,MAAM,WAAW,CAAC;AAQtD,MAAM,KAAW,SAAS,CAoCzB;AApCD,WAAiB,SAAS;IAExB,MAAM,UAAU;QACd,MAAM,CAAC,KAAa;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,KAAa;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;KACF;IAED,MAAM,UAAU;QACd,MAAM,CAAC,KAAa;YAClB,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC;QAED,KAAK,CAAC,KAAa;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACxC,CAAC;KACF;IAED,MAAM,WAAW;QACf,MAAM,CAAC,KAAc;YACnB,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,KAAa;YACjB,OAAO,KAAK,KAAK,MAAM,CAAC;QAC1B,CAAC;KACF;IAEY,gBAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC1B,gBAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC1B,iBAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAC3C,CAAC,EApCgB,SAAS,KAAT,SAAS,QAoCzB","sourcesContent":["\nimport { isNumber , isNaN as _isNaN} from 'lodash-es';\n\nexport interface Formatter<T> {\n format(value: T): string;\n\n parse(value: string): T;\n}\n\nexport namespace Formatter {\n\n class StringType implements Formatter<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 Formatter<number> {\n format(value: number): string {\n return isNumber(value) && !isNaN(value) ? `${value}` : null;\n }\n\n parse(value: string): number {\n const parsed = Number.parseFloat(value);\n return _isNaN(parsed) ? null : parsed;\n }\n }\n\n class BooleanType implements Formatter<boolean> {\n format(value: boolean): string {\n return value ? 'true' : 'false';\n }\n\n parse(value: string): boolean {\n return value === 'true';\n }\n }\n\n export const STRING = new StringType();\n export const NUMBER = new NumberType();\n export const BOOLEAN = new BooleanType();\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { MutableListModel, MutableValueModel } from '@coolon/pectin';
|
|
3
3
|
import { lang, Opts } from '@coolon/typescript-utilities';
|
|
4
|
-
import
|
|
4
|
+
import { isEqual, isFunction, isNil, isObject } from 'lodash-es';
|
|
5
5
|
const PARAMETER_DEFINITION_KEY = Symbol('parameterDefinition');
|
|
6
6
|
export class ParameterDefinition {
|
|
7
7
|
constructor(propertyName, options, urlFormat) {
|
|
@@ -56,11 +56,11 @@ export class ParameterDefinition {
|
|
|
56
56
|
}
|
|
57
57
|
prepareCustomSanitiser(injector) {
|
|
58
58
|
const customSanitiser = this.options.getOptional('sanitiser', null);
|
|
59
|
-
if (
|
|
59
|
+
if (isFunction(customSanitiser)) {
|
|
60
60
|
return injector.get(customSanitiser);
|
|
61
61
|
}
|
|
62
|
-
if (
|
|
63
|
-
return
|
|
62
|
+
if (isObject(customSanitiser)) {
|
|
63
|
+
return isFunction(customSanitiser['sanitise']) ?
|
|
64
64
|
customSanitiser :
|
|
65
65
|
lang.illegalState(`expected @VisitParameter({sanitiser: ...}) for ${this.propertyName} to be a constructor or instance of ParameterSanitiser, got: ` + customSanitiser);
|
|
66
66
|
}
|
|
@@ -79,7 +79,7 @@ export class ParameterDefinition {
|
|
|
79
79
|
this.backingModelFactory = () => new MutableValueModel();
|
|
80
80
|
}
|
|
81
81
|
isEmptyValue(value) {
|
|
82
|
-
return
|
|
82
|
+
return isNil(value);
|
|
83
83
|
}
|
|
84
84
|
hasChanged(a, b) {
|
|
85
85
|
return a !== b;
|
|
@@ -94,7 +94,7 @@ export class ParameterDefinition {
|
|
|
94
94
|
this.backingModelFactory = () => new MutableValueModel();
|
|
95
95
|
}
|
|
96
96
|
isEmptyValue(value) {
|
|
97
|
-
return
|
|
97
|
+
return isNil(value);
|
|
98
98
|
}
|
|
99
99
|
hasChanged(a, b) {
|
|
100
100
|
return a !== b;
|
|
@@ -109,10 +109,10 @@ export class ParameterDefinition {
|
|
|
109
109
|
this.backingModelFactory = () => new MutableListModel();
|
|
110
110
|
}
|
|
111
111
|
isEmptyValue(value) {
|
|
112
|
-
return
|
|
112
|
+
return isNil(value) || value.length < 1;
|
|
113
113
|
}
|
|
114
114
|
hasChanged(a, b) {
|
|
115
|
-
return !
|
|
115
|
+
return !isEqual(a, b);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
ParameterDefinition.ArrayParameter = ArrayParameter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter-definition.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/place/route/parameter-definition.ts"],"names":[],"mappings":";AACA,OAAO,EAAsC,gBAAgB,EAAE,iBAAiB,EAAc,MAAM,gBAAgB,CAAC;AACrH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"parameter-definition.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/place/route/parameter-definition.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injector } from '@angular/core';\nimport { Constructable, HasValue, ListModel, MutableListModel, MutableValueModel, ValueModel } from '@coolon/pectin';\nimport { lang, Opts } from '@coolon/typescript-utilities';\n\nimport { isEqual, isFunction, isNil, isObject } from 'lodash-es';\nimport { PlaceHistory } from '../place-history';\nimport { Visit } from '../visit';\nimport { Formatter } from './formatter';\nimport { ParameterSanitiser } from './parameter-sanitiser';\n\nconst PARAMETER_DEFINITION_KEY = Symbol('parameterDefinition');\n\n\nexport abstract class ParameterDefinition<T, E = T> {\n\n abstract readonly isRouteId: boolean;\n abstract readonly isArray: boolean;\n\n readonly remember: boolean;\n readonly defaultValue: T;\n private options: Opts<ParameterDefinition.Options<T>>;\n protected abstract backingModelFactory: () => HasValue<T>;\n\n constructor(readonly propertyName: string, options: ParameterDefinition.Options<T>, readonly urlFormat?: Formatter<E>) {\n this.options = Opts.get(options);\n this.remember = this.options.getOptional('remember', false);\n this.defaultValue = this.options.getOptional('defaultValue', null);\n }\n\n get name() {\n return this.options.getOptional('as', this.propertyName);\n }\n\n // @Trace()\n get isRouteParameter(): boolean {\n return !!this.urlFormat;\n }\n\n abstract isEmptyValue(value: T): boolean;\n\n abstract hasChanged(a: any, b: any): boolean;\n\n createBackingModel(): HasValue<T> {\n const model = this.backingModelFactory();\n model[PARAMETER_DEFINITION_KEY] = this;\n return model;\n }\n\n protected getOptionValue<K extends keyof ParameterDefinition.Options<T>>(key: K): ParameterDefinition.Options<T>[K] {\n return this.options.getOptional(key, null);\n }\n\n // @Trace()\n async sanitise(value: T, visit: Visit, placeHistory: PlaceHistory, injector: Injector, isPopState: boolean): Promise<T> {\n // console.log(`sanitise(${this.propertyName})`)\n value = await this.sanitiseMissing(visit, placeHistory, value);\n value = await this.runCustomSanitiser(value, visit, placeHistory, injector, isPopState);\n return value;\n }\n\n private async runCustomSanitiser(value: T, visit: Visit, placeHistory: PlaceHistory, injector: Injector, isPopState: boolean): Promise<T> {\n const customSanitiser = this.prepareCustomSanitiser(injector);\n return customSanitiser ? customSanitiser.sanitise(value, visit, injector) : value;\n }\n\n private sanitiseMissing(visit: Visit, placeHistory: PlaceHistory, value: T) {\n if (this.isMissingFrom(visit)) {\n const returningFromSomewhereElse = !placeHistory.lastVisitIncluded(visit.placeDefinition);\n if (returningFromSomewhereElse) {\n const lastKnownVisit = placeHistory.getMostRecentVisitFor(visit.placeDefinition);\n if (this.remember && lastKnownVisit) {\n value = lastKnownVisit.getParameterValue(this);\n }\n value = this.isEmptyValue(value) ? this.defaultValue : value;\n }\n }\n return value;\n }\n\n private prepareCustomSanitiser(injector: Injector): ParameterSanitiser<any> {\n const customSanitiser = this.options.getOptional('sanitiser', null);\n if (isFunction(customSanitiser)) {\n return injector.get(customSanitiser);\n }\n if (isObject(customSanitiser)) {\n return isFunction(customSanitiser['sanitise']) ?\n customSanitiser as ParameterSanitiser<any> :\n lang.illegalState(`expected @VisitParameter({sanitiser: ...}) for ${this.propertyName} to be a constructor or instance of ParameterSanitiser, got: ` + customSanitiser);\n }\n return undefined;\n }\n\n private isMissingFrom(visit: Visit) {\n return !visit.hasParameter(this);\n }\n}\n\nexport namespace ParameterDefinition {\n\n export interface Options<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n }\n\n export class RouteId<T> extends ParameterDefinition<T> {\n readonly isRouteId = true;\n readonly isArray = false;\n protected backingModelFactory = () => new MutableValueModel<T>();\n\n isEmptyValue(value: T): boolean {\n return isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n\n }\n\n export class ValueParameter<T> extends ParameterDefinition<T> {\n readonly isRouteId = false;\n readonly isArray = false;\n protected backingModelFactory = () => new MutableValueModel<T>();\n\n isEmptyValue(value: T): boolean {\n return isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n }\n\n export class ArrayParameter<T> extends ParameterDefinition<T[], T> {\n readonly isRouteId = false;\n readonly isArray = true;\n protected backingModelFactory = () => new MutableListModel<T>();\n\n constructor(parameterName: string, options: Options<T[]>, urlFormat: Formatter<T>) {\n super(parameterName, options, urlFormat);\n }\n\n isEmptyValue(value: T[]): boolean {\n return isNil(value) || value.length < 1;\n }\n\n hasChanged(a: T[], b: T[]): boolean {\n return !isEqual(a, b);\n }\n\n }\n\n export function get<T>(model: ValueModel<T>): ParameterDefinition.ValueParameter<T>\n export function get<T>(model: ListModel<T>): ParameterDefinition.ArrayParameter<T>\n export function get<T>(model: ValueModel<T> | ListModel<T>): ParameterDefinition.ValueParameter<T> | ParameterDefinition.ArrayParameter<T> {\n const parameterDefinition = model[PARAMETER_DEFINITION_KEY];\n if (!parameterDefinition) {\n lang.illegalArgument('model hasn\\'t been annotated with @VisitParameter, @VisitParameterList or @RouteId');\n }\n return parameterDefinition;\n }\n\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"ParameterDefinition":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ParameterDefinition"},"member":"Options","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"ParameterDefinition":{"__symbolic":"class","arity":2,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ParameterDefinition"},"member":"Options","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":23,"character":82,"context":{"typeName":"T"}}]},{"__symbolic":"reference","module":"./formatter","name":"Formatter","line":23,"character":107,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":23,"character":117,"context":{"typeName":"E"}}]}]}],"isEmptyValue":[{"__symbolic":"method"}],"hasChanged":[{"__symbolic":"method"}],"createBackingModel":[{"__symbolic":"method"}],"getOptionValue":[{"__symbolic":"method"}],"sanitise":[{"__symbolic":"method"}],"runCustomSanitiser":[{"__symbolic":"method"}],"sanitiseMissing":[{"__symbolic":"method"}],"prepareCustomSanitiser":[{"__symbolic":"method"}],"isMissingFrom":[{"__symbolic":"method"}]}}}}]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { UrlSegment } from '@angular/router';
|
|
3
|
-
import { Memoize } from '@typescript-plus/fast-memoize-decorator
|
|
4
|
-
import
|
|
3
|
+
import { Memoize } from '@typescript-plus/fast-memoize-decorator';
|
|
4
|
+
import { isEqual } from 'lodash-es';
|
|
5
5
|
import { ConsolidatedParameterMap } from './guards/consolidated-param-map';
|
|
6
6
|
import { Visit } from './visit';
|
|
7
7
|
function extractPrimarySegments(urlTree) {
|
|
@@ -66,7 +66,7 @@ export class UrlSnapshot {
|
|
|
66
66
|
return this.getInteractionIds().length > 0;
|
|
67
67
|
}
|
|
68
68
|
hasInteractionIds(ids) {
|
|
69
|
-
return
|
|
69
|
+
return isEqual(this.getInteractionIds(), ids);
|
|
70
70
|
}
|
|
71
71
|
// @Trace()
|
|
72
72
|
updateInteractionIds(ids) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-snapshot.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/url-snapshot.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"url-snapshot.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/url-snapshot.ts"],"names":[],"mappings":"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","sourcesContent":["import { UrlSegment, UrlSerializer, UrlTree } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\n\nimport { isEqual } from 'lodash-es';\nimport { ConsolidatedParameterMap } from './guards/consolidated-param-map';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\nfunction extractPrimarySegments(urlTree: UrlTree): UrlSegment[] {\n return urlTree.root.children.primary.segments;\n}\n\nexport class UrlSnapshot {\n\n readonly urlTree: UrlTree;\n\n // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.\n constructor(readonly urlSerializer: UrlSerializer, readonly url: string) {\n this.urlTree = urlSerializer.parse(url);\n }\n\n // @Trace()\n public updateVisitSegments(visit: Visit): UrlSnapshot {\n const newUrlTree = this.urlSerializer.parse(this.url);\n // Ugly, but it works for now.\n const segments = [...extractPrimarySegments(newUrlTree)];\n const visitSegments = this.getSegmentsFor(visit);\n const replaceAt = segments.findIndex(segment => segment.path === visitSegments[0].path);\n // do not use the return value, it's the items that were removed!\n segments.splice(replaceAt, visitSegments.length, ...visitSegments);\n newUrlTree.root.children.primary.segments = segments;\n return new UrlSnapshot(this.urlSerializer, newUrlTree.toString());\n }\n\n @Memoize()\n private getPrimarySegments(): UrlSegment[] {\n return extractPrimarySegments(this.urlTree);\n }\n\n /**\n * Converts the visit into segments. Please not that these segments are not e\n * @param visit\n */\n protected getSegmentsFor(visit: Visit): UrlSegment[] {\n return visit.placeDefinition.hasRouteId() ?\n [\n // NOTE:\n // It's important to attach the params to the root path and not the id. If we attach them\n // to an empty id then the angular router won't match the pattern.\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit)),\n new UrlSegment(visit.placeDefinition.getFormattedRouteId(visit), {})]\n :\n [\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit))\n ];\n }\n\n includesPathOf(placeDef: PlaceDefinition) {\n return this.getPrimarySegments().find(s => s.path === placeDef.path);\n }\n\n createVisitFor(placeDef: PlaceDefinition) {\n return new Visit(placeDef, new ConsolidatedParameterMap(this.getPrimarySegments()));\n }\n\n getInteractionIds() {\n const queryParam = this.urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM];\n if (queryParam) {\n return UrlSnapshot.parseInteractionIds(queryParam);\n } else {\n return [];\n }\n }\n\n hasInteractions() {\n return this.getInteractionIds().length > 0;\n }\n\n hasInteractionIds(ids: string[]): boolean {\n return isEqual(this.getInteractionIds(), ids);\n }\n\n // @Trace()\n updateInteractionIds(ids: string[]): UrlSnapshot {\n if (ids.length === 0) {\n return this.removeInteractionIds();\n } else {\n const urlTree = this.urlSerializer.parse(this.url);\n urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM] = UrlSnapshot.createPathIdFor(ids);\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n }\n\n // @Trace()\n removeInteractionIds(): UrlSnapshot {\n const urlTree = this.urlSerializer.parse(this.url);\n if (urlTree.queryParams && urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM]) {\n urlTree.queryParams = {};//[UrlSnapshot.INTERACTION_ROUTER_OUTLET]\n }\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n\n toString(): string {\n return `UrlSnapshot(${this.url})`;\n }\n\n // withOptions(options: NavigationExtras) {\n // return new UrlSnapshot(this.urlSerializer, this.url, options);\n // }\n //\n // @Trace()\n // getNavigationExtras(): NavigationExtras {\n // return this.options;\n // }\n\n}\n\nexport namespace UrlSnapshot {\n\n export const INTERACTION_QUERY_PARAM = 'aup-interactions';\n export const INTERACTION_ID_SEPARATOR = '--';\n\n export function parseInteractionIds(path: string) {\n return path.split(INTERACTION_ID_SEPARATOR);\n }\n\n export function createPathIdFor(interactionIds: string[]) {\n return interactionIds.join(INTERACTION_ID_SEPARATOR);\n }\n\n export interface NavigationOptions {\n replaceUrl?: boolean;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"UrlSnapshot":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"UrlSerializer","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"UrlSnapshot":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"UrlSerializer","line":18,"character":38},{"__symbolic":"reference","name":"string"}]}],"updateVisitSegments":[{"__symbolic":"method"}],"getPrimarySegments":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@typescript-plus/fast-memoize-decorator","name":"Memoize","line":35,"character":3}}]}],"getSegmentsFor":[{"__symbolic":"method"}],"includesPathOf":[{"__symbolic":"method"}],"createVisitFor":[{"__symbolic":"method"}],"getInteractionIds":[{"__symbolic":"method"}],"hasInteractions":[{"__symbolic":"method"}],"hasInteractionIds":[{"__symbolic":"method"}],"updateInteractionIds":[{"__symbolic":"method"}],"removeInteractionIds":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}}}}]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isEqual, isNil, isString } from 'lodash-es';
|
|
2
2
|
export class Visit {
|
|
3
3
|
constructor(placeDefinition, visitParameters = {}) {
|
|
4
4
|
this.placeDefinition = placeDefinition;
|
|
@@ -10,7 +10,7 @@ export class Visit {
|
|
|
10
10
|
}
|
|
11
11
|
// @Trace()
|
|
12
12
|
hasRouteId() {
|
|
13
|
-
return !
|
|
13
|
+
return !isNil(this.getRouteId());
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Returns the value of the place parameter with the specified name. The parameter
|
|
@@ -19,7 +19,7 @@ export class Visit {
|
|
|
19
19
|
* @param parameter the visit parameter definition
|
|
20
20
|
*/
|
|
21
21
|
getParameterValue(parameter) {
|
|
22
|
-
return
|
|
22
|
+
return isString(parameter) ? this.visitParameters[parameter] : this.visitParameters[parameter.name];
|
|
23
23
|
}
|
|
24
24
|
// @Trace()
|
|
25
25
|
hasParameter(parameterDef) {
|
|
@@ -55,11 +55,11 @@ export class Visit {
|
|
|
55
55
|
const currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);
|
|
56
56
|
const otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);
|
|
57
57
|
// console.log({currentParams, otherParams});
|
|
58
|
-
const sameRouteParameters =
|
|
58
|
+
const sameRouteParameters = isEqual(currentParams, otherParams);
|
|
59
59
|
return !samePlace || !sameRouteParameters;
|
|
60
60
|
}
|
|
61
61
|
hasChangedFrom(other) {
|
|
62
|
-
const sameNonRouteParameters =
|
|
62
|
+
const sameNonRouteParameters = isEqual(this.placeDefinition.getNonRouteParameters(this), this.placeDefinition.getNonRouteParameters(other));
|
|
63
63
|
return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);
|
|
64
64
|
}
|
|
65
65
|
toDebugString() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visit.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/visit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"visit.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/visit.ts"],"names":[],"mappings":"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","sourcesContent":["import { Trace } from '@coolon/pectin';\n\nimport { isEqual, isNil, isString } from 'lodash-es';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition';\n\ninterface Params {\n [p: string]: any;\n}\n\n\nexport class Visit {\n\n constructor(readonly placeDefinition: PlaceDefinition, private readonly visitParameters: Params = {}) {\n }\n\n // @Trace()\n getRouteId(): any {\n return this.placeDefinition.getRouteIdFrom(this);\n }\n\n // @Trace()\n hasRouteId(): boolean {\n return !isNil(this.getRouteId());\n }\n\n /**\n * Returns the value of the place parameter with the specified name. The parameter\n * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the\n * same as the the ValueModel property name.\n * @param parameter the visit parameter definition\n */\n getParameterValue<T, S>(parameter: ParameterDefinition<T, S> | string): T {\n return isString(parameter) ? this.visitParameters[parameter] : this.visitParameters[parameter.name];\n }\n\n // @Trace()\n hasParameter(parameterDef: ParameterDefinition<any>): boolean {\n return Object.keys(this.visitParameters).includes(parameterDef.name);\n }\n\n replace<T>(parameter: ParameterDefinition<T, any>, value: T): Visit {\n return new Visit(this.placeDefinition, { ...this.visitParameters, [parameter.name]: value });\n }\n\n mergeRouteParameters<S>(routeParams: { [p: string]: any }): Visit {\n // todo: whitelist parameters.\n const routeParameterKeys = Object.keys(routeParams);\n const params = {};\n this.placeDefinition.getVisitParameterDefs().forEach(def => {\n if (def.isRouteId || def.isRouteParameter) {\n if (routeParameterKeys.includes(def.name)) {\n params[def.name] = routeParams[def.name];\n }\n } else {\n // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the\n // defaults and remember sanitisation process.\n const value = this.getParameterValue(def);\n if (this.hasParameter(def)) {\n params[def.name] = value;\n }\n }\n });\n return new Visit(this.placeDefinition, params);\n }\n\n // @Trace()\n hasRoutingChangedFrom(other: Visit): boolean {\n const samePlace = other.placeDefinition === this.placeDefinition;\n const currentParams = this.placeDefinition.getFormattedRouteParameters(this, true);\n const otherParams = this.placeDefinition.getFormattedRouteParameters(other, true);\n // console.log({currentParams, otherParams});\n const sameRouteParameters = isEqual(currentParams, otherParams);\n return !samePlace || !sameRouteParameters;\n }\n\n hasChangedFrom(other: Visit) {\n const sameNonRouteParameters = isEqual(\n this.placeDefinition.getNonRouteParameters(this),\n this.placeDefinition.getNonRouteParameters(other)\n );\n return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);\n }\n\n toDebugString() {\n return Object.keys(this.visitParameters).map(k => `${k}=${this.visitParameters[k]}`).join(',');\n }\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"Visit":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./place-definition","name":"PlaceDefinition","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"Visit":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./place-definition","name":"PlaceDefinition","line":13,"character":40},{"__symbolic":"reference","name":"any"}]}],"getRouteId":[{"__symbolic":"method"}],"hasRouteId":[{"__symbolic":"method"}],"getParameterValue":[{"__symbolic":"method"}],"hasParameter":[{"__symbolic":"method"}],"replace":[{"__symbolic":"method"}],"mergeRouteParameters":[{"__symbolic":"method"}],"hasRoutingChangedFrom":[{"__symbolic":"method"}],"hasChangedFrom":[{"__symbolic":"method"}],"toDebugString":[{"__symbolic":"method"}]}}}}]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Stringy, Mixin } from '@coolon/typescript-utilities';
|
|
2
|
-
import
|
|
2
|
+
import { isNil, isString, isFunction, isEmpty } from 'lodash-es';
|
|
3
3
|
import { __decorate, __metadata } from 'tslib';
|
|
4
|
-
import { Memoize } from '@typescript-plus/fast-memoize-decorator
|
|
4
|
+
import { Memoize } from '@typescript-plus/fast-memoize-decorator';
|
|
5
5
|
import { DefaultUrlSerializer } from '@angular/router';
|
|
6
6
|
|
|
7
7
|
var ElementLocator;
|
|
@@ -23,9 +23,9 @@ var ElementLocator;
|
|
|
23
23
|
class PageElement {
|
|
24
24
|
constructor(parent, selectorOrLocator) {
|
|
25
25
|
this.parent = parent;
|
|
26
|
-
this.domElementLocator =
|
|
26
|
+
this.domElementLocator = isNil(selectorOrLocator) ?
|
|
27
27
|
this.getDefaultElementLocator() :
|
|
28
|
-
|
|
28
|
+
isString(selectorOrLocator) ?
|
|
29
29
|
ElementLocator.findByCssSelector(selectorOrLocator) :
|
|
30
30
|
selectorOrLocator;
|
|
31
31
|
}
|
|
@@ -87,7 +87,7 @@ class AupCommandFace extends PageElement {
|
|
|
87
87
|
class AupCommand extends PageElement {
|
|
88
88
|
constructor(parent, faceOrSelector) {
|
|
89
89
|
super(parent, parentElement => {
|
|
90
|
-
if (
|
|
90
|
+
if (isString(faceOrSelector)) {
|
|
91
91
|
return parentElement.dom().find(faceOrSelector);
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
@@ -319,7 +319,7 @@ __decorate([
|
|
|
319
319
|
}
|
|
320
320
|
AupAbstractTable.cssSelectorForNthTableRow = cssSelectorForNthTableRow;
|
|
321
321
|
function cssSelectorForColumnCellRendererById(columnOrId) {
|
|
322
|
-
const columnId =
|
|
322
|
+
const columnId = isString(columnOrId) ? columnOrId : columnOrId.columnId;
|
|
323
323
|
return `aup-table-cell-renderer[column-id=${columnId}]`;
|
|
324
324
|
}
|
|
325
325
|
AupAbstractTable.cssSelectorForColumnCellRendererById = cssSelectorForColumnCellRendererById;
|
|
@@ -489,8 +489,8 @@ class ComponentBuilder {
|
|
|
489
489
|
return this.component(AupEmptyState, selectorOrBuilder, optionalBuilder);
|
|
490
490
|
}
|
|
491
491
|
component(klass, selectorOrBuilder, optionalBuilder) {
|
|
492
|
-
const selector =
|
|
493
|
-
const builder =
|
|
492
|
+
const selector = isString(selectorOrBuilder) ? selectorOrBuilder : undefined;
|
|
493
|
+
const builder = isFunction(selectorOrBuilder) ? selectorOrBuilder : optionalBuilder;
|
|
494
494
|
const element = new klass(this.parentPageElement, selector);
|
|
495
495
|
if (builder) {
|
|
496
496
|
// create the B&E type that the builder has access to
|
|
@@ -737,8 +737,8 @@ class Page extends PageElement {
|
|
|
737
737
|
(function (Page) {
|
|
738
738
|
function create(pathOrPathBuilder, builder) {
|
|
739
739
|
const pathBuilder = new Path.Builder();
|
|
740
|
-
if (
|
|
741
|
-
pathOrPathBuilder.split('/').filter(p => !
|
|
740
|
+
if (isString(pathOrPathBuilder)) {
|
|
741
|
+
pathOrPathBuilder.split('/').filter(p => !isEmpty(p)).forEach(p => pathBuilder.segment(p));
|
|
742
742
|
}
|
|
743
743
|
else {
|
|
744
744
|
pathOrPathBuilder(pathBuilder);
|