@coolon/angular-ui-powerups 0.0.118 → 0.0.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +72 -168
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/esm2015/lib/place/guards/navigation-state.js +43 -85
  7. package/esm2015/lib/place/guards/navigation-state.js.map +1 -1
  8. package/esm2015/lib/place/guards/navigation-state.metadata.json +1 -1
  9. package/esm2015/lib/place/place-component.js +2 -2
  10. package/esm2015/lib/place/place-component.js.map +1 -1
  11. package/esm2015/lib/place/place-router.js +9 -2
  12. package/esm2015/lib/place/place-router.js.map +1 -1
  13. package/esm2015/lib/place/place-router.metadata.json +1 -1
  14. package/esm2015/lib/place/route/parameter-decorators.js +6 -6
  15. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  16. package/esm5/lib/place/guards/navigation-state.js +52 -159
  17. package/esm5/lib/place/guards/navigation-state.js.map +1 -1
  18. package/esm5/lib/place/place-component.js +2 -2
  19. package/esm5/lib/place/place-component.js.map +1 -1
  20. package/esm5/lib/place/place-router.js +13 -2
  21. package/esm5/lib/place/place-router.js.map +1 -1
  22. package/esm5/lib/place/route/parameter-decorators.js +6 -6
  23. package/esm5/lib/place/route/parameter-decorators.js.map +1 -1
  24. package/fesm2015/coolon-angular-ui-powerups.js +60 -95
  25. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  26. package/fesm5/coolon-angular-ui-powerups.js +73 -169
  27. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  28. package/lib/place/guards/navigation-state.d.ts +4 -1
  29. package/lib/place/place-router.d.ts +4 -1
  30. package/package.json +2 -2
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"PlaceRouter":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":40,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":37,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":50,"character":39},{"__symbolic":"reference","module":"@angular/router","name":"UrlSerializer","line":51,"character":46},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":52,"character":48},{"__symbolic":"reference","module":"./place-history","name":"PlaceHistory","line":53,"character":45},{"__symbolic":"reference","module":"../interaction/services/interaction.service","name":"InteractionService","line":54,"character":51}]}],"processNavigationSuccess":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}],"pushVisitChangesToRoute":[{"__symbolic":"method"}],"doNavigation":[{"__symbolic":"method"}],"runStateTransition":[{"__symbolic":"method"}],"createRouteParameters":[{"__symbolic":"method"}],"extractChildPath":[{"__symbolic":"method"}],"parseUrl":[{"__symbolic":"method"}],"resetBrowserLocation":[{"__symbolic":"method"}],"createUrlSnapshot":[{"__symbolic":"method"}],"getCurrentRouterUrl":[{"__symbolic":"method"}],"getCurrentRouteSnapshot":[{"__symbolic":"method"}],"getActiveInteractionIdsFromUrl":[{"__symbolic":"method"}],"hasActiveInteractionIds":[{"__symbolic":"method"}],"navigateByUrl":[{"__symbolic":"method"}],"syncInteractionIdsWithRouter":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"PlaceRouter":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":39,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":36,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":49,"character":39},{"__symbolic":"reference","module":"@angular/router","name":"UrlSerializer","line":50,"character":46},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":51,"character":48},{"__symbolic":"reference","module":"./place-history","name":"PlaceHistory","line":52,"character":45},{"__symbolic":"reference","module":"../interaction/services/interaction.service","name":"InteractionService","line":53,"character":51}]}],"processNavigationSuccess":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}],"pushVisitChangesToRoute":[{"__symbolic":"method"}],"doNavigation":[{"__symbolic":"method"}],"runStateTransition":[{"__symbolic":"method"}],"createRouteParameters":[{"__symbolic":"method"}],"extractChildPath":[{"__symbolic":"method"}],"parseUrl":[{"__symbolic":"method"}],"resetBrowserLocation":[{"__symbolic":"method"}],"forward":[{"__symbolic":"method"}],"createUrlSnapshot":[{"__symbolic":"method"}],"getCurrentRouterUrl":[{"__symbolic":"method"}],"getCurrentRouteSnapshot":[{"__symbolic":"method"}],"getActiveInteractionIdsFromUrl":[{"__symbolic":"method"}],"hasActiveInteractionIds":[{"__symbolic":"method"}],"navigateByUrl":[{"__symbolic":"method"}],"syncInteractionIdsWithRouter":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}}}]
@@ -71,8 +71,8 @@ export function RouteId(type, options) {
71
71
  /** @type {?} */
72
72
  const param = new ParameterDefinition.RouteId(propertyKey.toString(), options, type);
73
73
  Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
74
- UseDelegate({ tag: `@RouteId(${prototype.constructor.name}.${propertyKey.toString()})` })(prototype, propertyKey);
75
- // UseDelegate()(prototype, propertyKey);
74
+ // UseDelegate({tag: `@RouteId(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);
75
+ UseDelegate()(prototype, propertyKey);
76
76
  });
77
77
  }
78
78
  /**
@@ -92,8 +92,8 @@ export function VisitParameter(options) {
92
92
  /** @type {?} */
93
93
  const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional("storeInUrl", null));
94
94
  Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
95
- UseDelegate({ tag: `@VisitParameter(${prototype.constructor.name}.${propertyKey.toString()})` })(prototype, propertyKey);
96
- // UseDelegate()(prototype, propertyKey);
95
+ // UseDelegate({tag: `@VisitParameter(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);
96
+ UseDelegate()(prototype, propertyKey);
97
97
  });
98
98
  }
99
99
  /**
@@ -112,8 +112,8 @@ export function VisitParameterList(options) {
112
112
  (prototype, propertyKey) => {
113
113
  /** @type {?} */
114
114
  const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional("storeInUrl", null));
115
- // UseDelegate()(prototype, propertyKey);
116
- UseDelegate({ tag: `@VisitParameterList(${prototype.constructor.name}.${propertyKey.toString()})` })(prototype, propertyKey);
115
+ // UseDelegate({tag: `@VisitParameterList(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);
116
+ UseDelegate()(prototype, propertyKey);
117
117
  Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);
118
118
  });
119
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parameter-decorators.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/route/parameter-decorators.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;;;;;AAInE,oCAMC;;;IALC,4BAAY;;IACZ,kCAAmB;;IACnB,kCAAmB;;IACnB,sCAAiB;;;;;;AAInB,2CAOC;;;IANC,mCAAY;;IACZ,yCAAmB;;IACnB,yCAAmB;;IACnB,6CAAiB;;IACjB,2CAAyB;;;;;;AAI3B,+CAOC;;;IANC,uCAAY;;IACZ,6CAAmB;;IACnB,6CAAmB;;IACnB,iDAAmB;;IACnB,+CAAyB;;;;;;;;AAI3B,MAAM,UAAU,OAAO,CAA4B,IAAkB,EAAE,OAA2B;IAChG;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B,EAAE,EAAE;;cACnD,KAAK,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC3E,WAAW,CAAC,EAAC,GAAG,EAAE,YAAY,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAChH,yCAAyC;IAC3C,CAAC,EAAC;AACJ,CAAC;;;;;;AAED,MAAM,UAAU,cAAc,CAAI,OAAkC;;UAC5D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC9B;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B,EAAE,EAAE;;cACnD,KAAK,GAAG,IAAI,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3H,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC3E,WAAW,CAAC,EAAC,GAAG,EAAE,mBAAmB,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACvH,yCAAyC;IAC3C,CAAC,EAAC;AACJ,CAAC;;;;;;AAED,MAAM,UAAU,kBAAkB,CAAI,OAAsC;;UACpE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC9B;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B,EAAE,EAAE;;cACnD,KAAK,GAAG,IAAI,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3H,yCAAyC;QACzC,WAAW,CAAC,EAAC,GAAG,EAAE,uBAAuB,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC3H,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC,EAAC;AACJ,CAAC","sourcesContent":["import { UseDelegate } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ROUTE_PARAMETER_LIST_KEY } from '../place-component';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { Formatter } from './formatter';\n\n\nexport interface RouteIdOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteListParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T[];\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T[]>> | ParameterSanitiser<T[]>;\n}\n\nexport function RouteId<T extends string | number>(type: Formatter<T>, options?: RouteIdOptions<T>): PropertyDecorator {\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.RouteId(propertyKey.toString(), options, type);\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate({tag: `@RouteId(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n // UseDelegate()(prototype, propertyKey);\n };\n}\n\nexport function VisitParameter<T>(options?: RouteParameterOptions<T>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate({tag: `@VisitParameter(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n // UseDelegate()(prototype, propertyKey);\n };\n}\n\nexport function VisitParameterList<E>(options?: RouteListParameterOptions<E>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n // UseDelegate()(prototype, propertyKey);\n UseDelegate({tag: `@VisitParameterList(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n };\n}\n\n// export function RouteParameter<T>(type: ParameterType<T>, options?: RouteParameterOptions<T>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, type);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n//\n// export function RouteParameterList<E>(elementType: ParameterType<E>, options?: RouteListParameterOptions<E>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, elementType);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n"]}
1
+ {"version":3,"file":"parameter-decorators.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/route/parameter-decorators.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;;;;;AAInE,oCAMC;;;IALC,4BAAY;;IACZ,kCAAmB;;IACnB,kCAAmB;;IACnB,sCAAiB;;;;;;AAInB,2CAOC;;;IANC,mCAAY;;IACZ,yCAAmB;;IACnB,yCAAmB;;IACnB,6CAAiB;;IACjB,2CAAyB;;;;;;AAI3B,+CAOC;;;IANC,uCAAY;;IACZ,6CAAmB;;IACnB,6CAAmB;;IACnB,iDAAmB;;IACnB,+CAAyB;;;;;;;;AAI3B,MAAM,UAAU,OAAO,CAA4B,IAAkB,EAAE,OAA2B;IAChG;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B,EAAE,EAAE;;cACnD,KAAK,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC3E,mHAAmH;QACnH,WAAW,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC,EAAC;AACJ,CAAC;;;;;;AAED,MAAM,UAAU,cAAc,CAAI,OAAkC;;UAC5D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC9B;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B,EAAE,EAAE;;cACnD,KAAK,GAAG,IAAI,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3H,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC3E,0HAA0H;QAC1H,WAAW,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC,EAAC;AACJ,CAAC;;;;;;AAED,MAAM,UAAU,kBAAkB,CAAI,OAAsC;;UACpE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC9B;;;;;IAAO,CAAC,SAAiB,EAAE,WAA4B,EAAE,EAAE;;cACnD,KAAK,GAAG,IAAI,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3H,8HAA8H;QAC9H,WAAW,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC,EAAC;AACJ,CAAC","sourcesContent":["import { UseDelegate } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ROUTE_PARAMETER_LIST_KEY } from '../place-component';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { Formatter } from './formatter';\n\n\nexport interface RouteIdOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteListParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T[];\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T[]>> | ParameterSanitiser<T[]>;\n}\n\nexport function RouteId<T extends string | number>(type: Formatter<T>, options?: RouteIdOptions<T>): PropertyDecorator {\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.RouteId(propertyKey.toString(), options, type);\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n // UseDelegate({tag: `@RouteId(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\nexport function VisitParameter<T>(options?: RouteParameterOptions<T>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n // UseDelegate({tag: `@VisitParameter(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\nexport function VisitParameterList<E>(options?: RouteListParameterOptions<E>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n // UseDelegate({tag: `@VisitParameterList(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n UseDelegate()(prototype, propertyKey);\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n };\n}\n\n// export function RouteParameter<T>(type: ParameterType<T>, options?: RouteParameterOptions<T>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, type);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n//\n// export function RouteParameterList<E>(elementType: ParameterType<E>, options?: RouteListParameterOptions<E>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, elementType);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n"]}
@@ -264,20 +264,19 @@ NavigationState = /** @class */ (function (_super) {
264
264
  new NavigationState.IdleDuringInteraction(this.context, this.currentRouterUrl()) :
265
265
  new NavigationState.Idle(this.context);
266
266
  };
267
- //
268
- //
269
267
  /**
270
268
  * @param {?} url
269
+ * @param {?=} options
271
270
  * @return {?}
272
271
  */
273
- NavigationState.prototype.resetBrowserLocation =
274
- //
275
- /**
272
+ NavigationState.prototype.resetBrowserLocation = /**
276
273
  * @param {?} url
274
+ * @param {?=} options
277
275
  * @return {?}
278
276
  */
279
- function (url) {
280
- this.placeRouter.resetBrowserLocation(url);
277
+ function (url, options) {
278
+ if (options === void 0) { options = { replaceCurrent: false }; }
279
+ this.placeRouter.resetBrowserLocation(url, options);
281
280
  };
282
281
  /**
283
282
  * @param {?} event
@@ -323,6 +322,25 @@ NavigationState = /** @class */ (function (_super) {
323
322
  return p + ": " + _this[p];
324
323
  })).join(', ');
325
324
  };
325
+ /**
326
+ * @protected
327
+ * @param {?} url
328
+ * @return {?}
329
+ */
330
+ NavigationState.prototype.replaceBuggeredUrlAfterAngularRouterCancelled = /**
331
+ * @protected
332
+ * @param {?} url
333
+ * @return {?}
334
+ */
335
+ function (url) {
336
+ // Angular calls _this.resetUrlToCurrentUrlTree() on cancelling and fucks our history.
337
+ // So this means that the top of the stack is the url we want to go back to, and not the one that was on
338
+ // it before the cancel event fired.
339
+ // So we need to:
340
+ // - replace the just inserted url with the one that used to be there.
341
+ // - push our actual url back onto the top of the stack.
342
+ this.resetBrowserLocation(url, { replaceCurrent: true });
343
+ };
326
344
  return NavigationState;
327
345
  }(GarbageCollector));
328
346
  /**
@@ -660,11 +678,11 @@ if (false) {
660
678
  * @return {?}
661
679
  */
662
680
  function (event) {
681
+ this.replaceBuggeredUrlAfterAngularRouterCancelled(this.poppedHistoryUrl);
663
682
  // Angular doesn't preserve the url when a guard cancels the back button.
664
683
  // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
665
684
  Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');
666
- this.resetBrowserLocation(this.poppedHistoryUrl); // put the popped history item back in.
667
- this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.
685
+ this.resetBrowserLocation(this.startingUrl);
668
686
  return new Idle(this.context);
669
687
  };
670
688
  /**
@@ -676,15 +694,18 @@ if (false) {
676
694
  * @return {?}
677
695
  */
678
696
  function (event) {
679
- // navigation was aborted.
680
- if (this.currentRouterUrl() !== this.startingUrl) {
681
- // Angular doesn't preserve the url when a guard cancels the back button.
682
- // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
683
- Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');
684
- this.resetBrowserLocation(this.poppedHistoryUrl); // put the popped history item back in.
685
- this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.
686
- }
687
- return new Idle(this.context);
697
+ // // navigation was aborted.
698
+ // if (this.currentRouterUrl() !== this.startingUrl) {
699
+ // // Angular doesn't preserve the url when a guard cancels the back button.
700
+ // // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
701
+ // Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');
702
+ // this.restoreHistory([
703
+ // this.poppedHistoryUrl,
704
+ // this.startingUrl
705
+ // ]);
706
+ // }
707
+ // return new Idle(this.context);
708
+ return this.illegalTransition("when do I get this???");
688
709
  };
689
710
  /**
690
711
  * @param {?} locationTriggerUrl
@@ -833,6 +854,7 @@ if (false) {
833
854
  * @return {?}
834
855
  */
835
856
  function (event) {
857
+ // TODO: this.replaceBuggeredUrlAfterAngularRouterCancells(...);???
836
858
  if (this.context.interactionService.isActive()) {
837
859
  /** @type {?} */
838
860
  var interactionIds = this.interactionService.activeInteractionContextIds.value;
@@ -954,6 +976,7 @@ if (false) {
954
976
  this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);
955
977
  }
956
978
  else {
979
+ // this.replaceBuggeredUrlAfterAngularRouterCancells(this.start)
957
980
  this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.
958
981
  }
959
982
  return this.createIdleState();
@@ -1054,6 +1077,7 @@ if (false) {
1054
1077
  * @return {?}
1055
1078
  */
1056
1079
  function (event) {
1080
+ // TODO: this.replaceBuggeredUrlAfterAngularRouterCancells(...);???
1057
1081
  if (this.interactionService.isActive()) {
1058
1082
  /** @type {?} */
1059
1083
  var interactionIds = this.interactionService.activeInteractionContextIds.value;
@@ -1089,7 +1113,7 @@ if (false) {
1089
1113
  * @return {?}
1090
1114
  */
1091
1115
  function (newUrl) {
1092
- return this.illegalTransition("Leaving interaction after pop-state should't block so should never see a back button click");
1116
+ return this.illegalTransition('Leaving interaction after pop-state should\'t block so should never see a back button click');
1093
1117
  };
1094
1118
  return LeavingInteractionAfterPopStateTransition;
1095
1119
  }(AbstractInteractionTransition));
@@ -1100,74 +1124,6 @@ if (false) {
1100
1124
  /** @type {?} */
1101
1125
  LeavingInteractionAfterPopStateTransition.prototype.poppedHistoryUrl;
1102
1126
  }
1103
- // See LeavingInteractionAfterPopStateTransition.createNavigationInteractionCancelledState(...) above.
1104
- //
1105
- // export class LeavingInteractionAfterPopStateCancelled extends NavigationState {
1106
- //
1107
- // readonly isPopState = false;
1108
- // firstCancelHandled = false;
1109
- // popStateHandled = false;
1110
- // popStateEventUrl: string;
1111
- // debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];
1112
- //
1113
- // constructor(context: Context,
1114
- // readonly startingUrl: string,
1115
- // readonly locationChangeTriggerUrl: string,
1116
- // readonly poppedHistoryUrl: string) {
1117
- // super(context);
1118
- // }
1119
- //
1120
- // get isTransitional() {
1121
- // return true;
1122
- // }
1123
- //
1124
- // onRouterStarted(event: NavigationStart): NavigationState {
1125
- // return this.ignore(event);
1126
- // }
1127
- //
1128
- //
1129
- // onRouterCancelled(event: NavigationCancel): NavigationState {
1130
- //
1131
- // // if (this.firstCancelHandled && this.popStateHandled) {
1132
- // // // Angular doesn't preserve the url when a guard cancels the back button.
1133
- // // // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
1134
- // // Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');
1135
- // // this.resetBrowserLocation(this.locationChangeTriggerUrl); // put the second back click one back in.
1136
- // // this.resetBrowserLocation(this.poppedHistoryUrl); // put the first back click one back in.
1137
- // // if (this.interactionService.isActive()) {
1138
- // // const interactionIds = this.interactionService.activeInteractionContextIds.value;
1139
- // // this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);
1140
- // // } else {
1141
- // // this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.
1142
- // // }
1143
- // // return this.createIdleState();
1144
- // // } else {
1145
- // // this.firstCancelHandled = true;
1146
- // return this.ignore(event);
1147
- // // }
1148
- // }
1149
- //
1150
- //
1151
- // onRouterEnd(event: NavigationEnd): NavigationState {
1152
- // return this.ignore(event);
1153
- // }
1154
- //
1155
- //
1156
- // onRouterError(event: NavigationError): NavigationState {
1157
- // return this.ignore(event);
1158
- // }
1159
- //
1160
- //
1161
- // onPopState(event: NavigationStart): NavigationState {
1162
- // // this.popStateHandled = true;
1163
- // // this.popStateEventUrl = event.url;
1164
- // return this.ignore(event);
1165
- // }
1166
- //
1167
- // async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {
1168
- // return false;
1169
- // }
1170
- // }
1171
1127
  /**
1172
1128
  * This state handles the scenario where a link navigation triggered an interaction and the user clicked back a to cancel it.
1173
1129
  * The routing event sequence is different depending on the link that was clicked.
@@ -1190,76 +1146,7 @@ if (false) {
1190
1146
  * -> PopState
1191
1147
  * -> NavigationCancel
1192
1148
  */
1193
- var
1194
- // See LeavingInteractionAfterPopStateTransition.createNavigationInteractionCancelledState(...) above.
1195
- //
1196
- // export class LeavingInteractionAfterPopStateCancelled extends NavigationState {
1197
- //
1198
- // readonly isPopState = false;
1199
- // firstCancelHandled = false;
1200
- // popStateHandled = false;
1201
- // popStateEventUrl: string;
1202
- // debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];
1203
- //
1204
- // constructor(context: Context,
1205
- // readonly startingUrl: string,
1206
- // readonly locationChangeTriggerUrl: string,
1207
- // readonly poppedHistoryUrl: string) {
1208
- // super(context);
1209
- // }
1210
- //
1211
- // get isTransitional() {
1212
- // return true;
1213
- // }
1214
- //
1215
- // onRouterStarted(event: NavigationStart): NavigationState {
1216
- // return this.ignore(event);
1217
- // }
1218
- //
1219
- //
1220
- // onRouterCancelled(event: NavigationCancel): NavigationState {
1221
- //
1222
- // // if (this.firstCancelHandled && this.popStateHandled) {
1223
- // // // Angular doesn't preserve the url when a guard cancels the back button.
1224
- // // // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
1225
- // // Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');
1226
- // // this.resetBrowserLocation(this.locationChangeTriggerUrl); // put the second back click one back in.
1227
- // // this.resetBrowserLocation(this.poppedHistoryUrl); // put the first back click one back in.
1228
- // // if (this.interactionService.isActive()) {
1229
- // // const interactionIds = this.interactionService.activeInteractionContextIds.value;
1230
- // // this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);
1231
- // // } else {
1232
- // // this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.
1233
- // // }
1234
- // // return this.createIdleState();
1235
- // // } else {
1236
- // // this.firstCancelHandled = true;
1237
- // return this.ignore(event);
1238
- // // }
1239
- // }
1240
- //
1241
- //
1242
- // onRouterEnd(event: NavigationEnd): NavigationState {
1243
- // return this.ignore(event);
1244
- // }
1245
- //
1246
- //
1247
- // onRouterError(event: NavigationError): NavigationState {
1248
- // return this.ignore(event);
1249
- // }
1250
- //
1251
- //
1252
- // onPopState(event: NavigationStart): NavigationState {
1253
- // // this.popStateHandled = true;
1254
- // // this.popStateEventUrl = event.url;
1255
- // return this.ignore(event);
1256
- // }
1257
- //
1258
- // async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {
1259
- // return false;
1260
- // }
1261
- // }
1262
- /**
1149
+ var /**
1263
1150
  * This state handles the scenario where a link navigation triggered an interaction and the user clicked back a to cancel it.
1264
1151
  * The routing event sequence is different depending on the link that was clicked.
1265
1152
  *
@@ -1382,7 +1269,7 @@ if (false) {
1382
1269
  */
1383
1270
  function () {
1384
1271
  Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');
1385
- this.resetBrowserLocation(this.clickedLinkUrl); // put the back click one back in.
1272
+ this.replaceBuggeredUrlAfterAngularRouterCancelled(this.clickedLinkUrl); // put the back click one back in.
1386
1273
  if (this.interactionService.isActive()) {
1387
1274
  /** @type {?} */
1388
1275
  var interactionIds = this.interactionService.activeInteractionContextIds.value;
@@ -1502,7 +1389,13 @@ if (false) {
1502
1389
  // Angular doesn't preserve the url when a guard cancels the back button.
1503
1390
  // See https://github.com/angular/angular/issues/13586#issuecomment-432795720
1504
1391
  Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');
1505
- this.resetBrowserLocation(this.locationChangeTriggerUrl); // put the second back click one back in.
1392
+ // Angular calls _this.resetUrlToCurrentUrlTree() on cancelling and fucks our history.
1393
+ // So this means that the top of the stack is the url we want to go back to, and not the one that was on
1394
+ // it before the cancel event fired.
1395
+ // So we need to:
1396
+ // - replace the just inserted url with the one that used to be there.
1397
+ // - push our actual url back onto the top of the stack.
1398
+ this.replaceBuggeredUrlAfterAngularRouterCancelled(this.locationChangeTriggerUrl);
1506
1399
  this.resetBrowserLocation(this.poppedHistoryUrl); // put the first back click one back in.
1507
1400
  if (this.interactionService.isActive()) {
1508
1401
  /** @type {?} */
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-state.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/guards/navigation-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, RouterEvent } from '@angular/router';\nimport { Dsl, GarbageCollector, lang, Logger, Trace } from '@coolon/pectin';\nimport { InteractionContext } from '../../interaction/interaction-context';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceRouter } from '../place-router';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { PlaceComponentDeactivationHandler } from './place-component-deactivation-handler';\n\nexport abstract class NavigationState extends GarbageCollector {\n\n private _visits = new Map<PlaceDefinition, Visit>();\n\n abstract readonly isTransitional: boolean;\n abstract readonly startingUrl: string;\n abstract readonly isPopState: boolean;\n debugPropertyKeys: string[] = [];\n\n constructor(protected readonly context: NavigationState.Context) {\n super();\n }\n\n get name(): string {\n return this.constructor.name;\n }\n\n get idle() {\n return !this.isTransitional;\n }\n\n get placeRouter(): PlaceRouter {\n return this.context.placeRouter;\n }\n\n get interactionService(): InteractionService {\n return this.context.interactionService;\n }\n\n get interactionContext(): InteractionContext {\n return null;\n }\n\n storeVisit(visit: Visit) {\n this._visits.set(visit.placeDefinition, visit);\n }\n\n getVisitFor(placeDef: PlaceDefinition) {\n return this._visits.get(placeDef);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n return this.illegalTransition('onPlaceNavigationStart');\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.illegalTransition(event);\n }\n\n onBackClickedDuringNavigationInteraction(newUrl: string): NavigationState {\n return this.illegalTransition('onBackClickedDuringNavigationInteraction');\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return this.illegalTransition('canDeactivatePlace');\n }\n\n getVisits(): Visit[] {\n return Array.from(this._visits.values());\n }\n\n protected illegalTransition<R>(message: string | RouterEvent): R {\n return lang.illegalState(`${message.toString()} not supported by ${this.toString()}`);\n }\n\n protected currentRouterUrl(): string {\n return this.placeRouter.getCurrentRouterUrl();\n }\n\n protected createTransitionStateFor(event: NavigationStart) {\n const popstate = event.navigationTrigger === 'popstate';\n const inInteraction = this.interactionService.isActive();\n if (popstate) {\n return inInteraction ?\n new NavigationState.LeavingInteractionAfterPopStateTransition(this.context, this.currentRouterUrl(), event.url) :\n new NavigationState.PopStateTransition(this.context, this.currentRouterUrl(), event.url);\n } else {\n return inInteraction ?\n new NavigationState.StartingInteractionTransition(this.context, this.currentRouterUrl()) :\n new NavigationState.NavigationTransition(this.context, this.currentRouterUrl());\n }\n }\n\n protected createIdleState() {\n return this.interactionService.isActive() ?\n new NavigationState.IdleDuringInteraction(this.context, this.currentRouterUrl()) :\n new NavigationState.Idle(this.context);\n }\n\n //\n resetBrowserLocation(url) {\n this.placeRouter.resetBrowserLocation(url);\n }\n\n ignore(event: RouterEvent, reason?: string): NavigationState {\n reason = reason ? ` -> ${reason}` : '';\n Logger.get(this).info(`Ignoring router event${reason}: ${event.constructor.name} -> ${event.url} :: ${this.toString()}`);\n return this;\n }\n\n toString(): string {\n return `${this.constructor.name}(${this.debugState()})`;\n }\n\n protected debugState(properties?: string[]) {\n return (properties || this.debugPropertyKeys).map(p => {\n return `${p}: ${this[p]}`;\n }).join(', ');\n }\n}\n\nexport namespace NavigationState {\n\n export class Context {\n constructor(\n readonly placeRouter: PlaceRouter,\n readonly interactionService: InteractionService,\n readonly notifySuccess: (success: NavigationState) => void) {\n }\n }\n\n export class Idle extends NavigationState {\n readonly isTransitional = false;\n readonly startingUrl = null;\n readonly isPopState = false;\n\n constructor(context: Context) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n const navigationTransition = new NavigationTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n\n // calling angularLocation.go() to clear back state can trigger router cycles to the current url if we don't ignore them\n if (event.url === this.currentRouterUrl()) {\n Logger.get(this).info(`navigation started to same url -> ${event.url}`);\n return this;\n }\n\n if (this.placeRouter.hasActiveInteractionIds(event.url)) {\n Logger.get(this).info(`navigation started with interaction outlet -> ${event.url}`);\n return new StartingInteractionTransition(this.context, event.url);\n } else {\n return this.createTransitionStateFor(event);\n }\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.createTransitionStateFor(event);\n }\n }\n\n export abstract class AbstractNavigationTransition extends NavigationState {\n readonly isTransitional = true;\n private componentDeactivationHandlers = new Map<PlaceComponent, PlaceComponentDeactivationHandler>();\n private _interactionContext: InteractionContext;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n this._interactionContext = this.interactionService._createExclusiveModalInteractionContext();\n this.onDispose(() => {\n // the interaction context can be detached during the back button cancellation state transition\n // as the transition is synchronous and activityCancellation isn't. Otherwise dispose will be\n // called before the context has been cancelled. It might be work having the interaction context\n // automatically cancel if the context is disposed so we don't have worry about detaching etc.\n if (this._interactionContext) {\n this._interactionContext.dispose(); // or do something like cancelAndDispose?\n }\n });\n }\n\n get interactionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n // active sessions can have many cancel start cycles due\n // to place guard redirects\n return this;\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n // navigation succeeded\n this.context.notifySuccess(this);\n return new Idle(this.context);\n }\n\n\n onBackClickedDuringNavigationInteraction(newUrl: string): NavigationState {\n Logger.get(this).info(`back button pressed during navigation session interaction promise`);\n // detach the interaction from the session so it doesn't get disposed until the activity has completed.\n const navigationInteraction = this.detachInteractionContext();\n const { when } = Dsl.disposeWith(navigationInteraction);\n // TODO: I need to make the exclusive interaction context disallow nested activities or\n // that would mess things up entirely. Or, can I do a context.abortAll().then(..)\n Logger.get(this).info('cancelling current navigation activity..');\n navigationInteraction.cancelActiveActivity().then(() => {\n navigationInteraction.dispose();\n });\n\n return this.createNavigationInteractionCancelledState(newUrl);\n }\n\n abstract createNavigationInteractionCancelledState(newUrl: string): NavigationState\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // lookup the handler and create it if we've not seen it yet\n let handler = this.componentDeactivationHandlers.get(component);\n if (!handler) {\n const isPrimaryHandler = this.componentDeactivationHandlers.size === 0; // only primary handler cancels the app model interations\n handler = new PlaceComponentDeactivationHandler(component, this, isPrimaryHandler);\n this.componentDeactivationHandlers.set(component, handler);\n }\n return handler.canDeactivate(currentUrl, nextUrl);\n }\n\n protected detachInteractionContext(): InteractionContext {\n const context = this._interactionContext;\n this._interactionContext = null;\n return context;\n }\n }\n\n export class NavigationTransition extends AbstractNavigationTransition {\n readonly isPopState = false;\n debugPropertyKeys = ['startingUrl'];\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this;\n }\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new Idle(this.context);\n }\n\n createNavigationInteractionCancelledState(newUrl: string): NavigationState {\n return new LinkTriggeredNavigationInteractionCancelled(\n this.context,\n this.startingUrl,\n newUrl\n );\n }\n }\n\n export class PopStateTransition extends AbstractNavigationTransition {\n readonly isPopState = true;\n debugPropertyKeys = ['startingUrl', 'poppedHistoryUrl'];\n\n constructor(context: NavigationState.Context, startingUrl: string, readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.poppedHistoryUrl); // put the popped history item back in.\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n return new Idle(this.context);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n if (this.currentRouterUrl() !== this.startingUrl) {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.poppedHistoryUrl); // put the popped history item back in.\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n }\n return new Idle(this.context);\n }\n\n createNavigationInteractionCancelledState(locationTriggerUrl: string): NavigationState {\n return new PopStateTriggeredNavigationInteractionCancelled(this.context,\n this.startingUrl,\n locationTriggerUrl,\n this.poppedHistoryUrl);\n }\n\n }\n\n export abstract class AbstractInteractionTransition extends AbstractNavigationTransition {\n readonly isTransitional = true;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context, startingUrl);\n }\n\n }\n\n\n// The following states exist to handle all events while any kind of navigation is in progress. That way all other states can\n// happily ignore interaction contexts.\n\n /**\n * This is the non transitional (i.e. rest) state that is used whenever an interaction context is active.\n */\n export class IdleDuringInteraction extends NavigationState {\n readonly isTransitional = false;\n readonly isPopState = false;\n debugPropertyKeys = ['startingUrl'];\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n // we're in an interaction and the user clicked back\n const navigationTransition = new StartingInteractionTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return new StartingInteractionTransition(this.context, event.url);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n // we're in an interaction and the user clicked back\n return new LeavingInteractionAfterPopStateTransition(this.context, event.url, event.url);\n }\n }\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n * NOTE: This state is activated when ever an interaction is started. It might be better to split it into\n * different states for different scenarios, e.g. starting model, starting model during route guard etc.\n */\n export class StartingInteractionTransition extends AbstractInteractionTransition {\n readonly isPopState = false;\n\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n if (this.context.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new IdleDuringInteraction(this.context, this.startingUrl);\n }\n\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n createNavigationInteractionCancelledState(locationTriggerUrl: string): NavigationState {\n return new LeavingInteractionTransitionCancelled(this.context,\n this.startingUrl,\n locationTriggerUrl);\n }\n }\n\n /**\n * The sequence of router events are:\n * Error -> url = url of navigation link\n * End\n * onPopState url = current intereaction url sans the query params\n * Cancel url == same as above.\n */\n export class LeavingInteractionTransitionCancelled extends NavigationState {\n\n readonly isPopState = false;\n firstCancelHandled = false;\n popStateHandled = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly locationChangeTriggerUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n } else {\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n }\n return this.createIdleState();\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.ignore(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n }\n\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n */\n export class LeavingInteractionAfterPopStateTransition extends AbstractInteractionTransition {\n readonly isPopState = true;\n\n constructor(context: NavigationState.Context, startingUrl: string, readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n createNavigationInteractionCancelledState(newUrl: string): NavigationState {\n return this.illegalTransition(\"Leaving interaction after pop-state should't block so should never see a back button click\")\n }\n\n }\n\n // See LeavingInteractionAfterPopStateTransition.createNavigationInteractionCancelledState(...) above.\n //\n // export class LeavingInteractionAfterPopStateCancelled extends NavigationState {\n //\n // readonly isPopState = false;\n // firstCancelHandled = false;\n // popStateHandled = false;\n // popStateEventUrl: string;\n // debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];\n //\n // constructor(context: Context,\n // readonly startingUrl: string,\n // readonly locationChangeTriggerUrl: string,\n // readonly poppedHistoryUrl: string) {\n // super(context);\n // }\n //\n // get isTransitional() {\n // return true;\n // }\n //\n // onRouterStarted(event: NavigationStart): NavigationState {\n // return this.ignore(event);\n // }\n //\n //\n // onRouterCancelled(event: NavigationCancel): NavigationState {\n //\n // // if (this.firstCancelHandled && this.popStateHandled) {\n // // // Angular doesn't preserve the url when a guard cancels the back button.\n // // // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n // // Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n // // this.resetBrowserLocation(this.locationChangeTriggerUrl); // put the second back click one back in.\n // // this.resetBrowserLocation(this.poppedHistoryUrl); // put the first back click one back in.\n // // if (this.interactionService.isActive()) {\n // // const interactionIds = this.interactionService.activeInteractionContextIds.value;\n // // this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n // // } else {\n // // this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n // // }\n // // return this.createIdleState();\n // // } else {\n // // this.firstCancelHandled = true;\n // return this.ignore(event);\n // // }\n // }\n //\n //\n // onRouterEnd(event: NavigationEnd): NavigationState {\n // return this.ignore(event);\n // }\n //\n //\n // onRouterError(event: NavigationError): NavigationState {\n // return this.ignore(event);\n // }\n //\n //\n // onPopState(event: NavigationStart): NavigationState {\n // // this.popStateHandled = true;\n // // this.popStateEventUrl = event.url;\n // return this.ignore(event);\n // }\n //\n // async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // return false;\n // }\n // }\n\n\n /**\n * This state handles the scenario where a link navigation triggered an interaction and the user clicked back a to cancel it.\n * The routing event sequence is different depending on the link that was clicked.\n *\n * If the link was the same as the previous history location (i.e. they've gone back via a link rather than clicking back) then the sequence is:\n *\n * -> Idle -> NavigationTransition\n * -> confirm dialog shown.\n * -> click back\n * -> NavigationCancel -> clickedLinkUrl === cancel.url\n * -> NavigationEnd\n *\n * Otherwise if the link is different from teh history location then the sequence is:\n *\n * -> Idle -> NavigationTransition\n * -> confirm dialog shown.\n * -> click back\n * -> NavigationCancel -> clickedLinkUrl !== cancel.url\n * -> NavigationEnd\n * -> PopState\n * -> NavigationCancel\n */\n export class LinkTriggeredNavigationInteractionCancelled extends NavigationState {\n\n readonly isPopState = false;\n firstCancelEventUrl: string;\n popStateEventUrl: string;\n clickedLinkMatchedBackButtonUrl = false;\n debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'firstCancelEventUrl', 'clickedLinkMatchedBackButtonUrl', 'popStateEventUrl'];\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly clickedLinkUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // TODO: should really split this into two sub states in the first cancel event.\n if (!this.firstCancelEventUrl) {\n this.firstCancelEventUrl = event.url;\n this.clickedLinkMatchedBackButtonUrl = event.url === this.clickedLinkUrl;\n return this.ignore(event);\n } else {\n // we wait for our popped state to come in.\n if (!this.clickedLinkMatchedBackButtonUrl && this.popStateEventUrl) {\n return this.finaliseRouting();\n }\n }\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.clickedLinkMatchedBackButtonUrl) {\n return this.finaliseRouting();\n } else {\n return this.ignore(event);\n }\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n this.popStateEventUrl = event.url;\n return this.ignore(event);\n }\n\n finaliseRouting() {\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.clickedLinkUrl); // put the back click one back in.\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n } else {\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n }\n return this.createIdleState();\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n }\n\n /**\n * This state handles the scenario where a pop state triggered and interaction and the user clickeb back a second time to cancel it.\n * The sequence of routing events/state transitions is as follows.\n * -> Idle -> PopStateTransition (poppedHistoryUrl == page to go to, startingUrl = page to stay on )\n * -> confirm dialog shown.\n * -> click back\n * -> PopStateTransition -> CancelledDuringBackButtonNavigationInteraction(trigger url is the page before the popped history url)\n * -> NavigationCancel (for the previous back)\n * -> PopState\n * -> NavigationCancel\n */\n export class PopStateTriggeredNavigationInteractionCancelled extends NavigationState {\n\n readonly isPopState = false;\n firstCancelHandled = false;\n popStateHandled = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly locationChangeTriggerUrl: string,\n readonly poppedHistoryUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n\n if (this.firstCancelHandled && this.popStateHandled) {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.locationChangeTriggerUrl); // put the second back click one back in.\n this.resetBrowserLocation(this.poppedHistoryUrl); // put the first back click one back in.\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n } else {\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n }\n return this.createIdleState();\n } else {\n this.firstCancelHandled = true;\n return this.ignore(event);\n }\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.ignore(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n this.popStateHandled = true;\n this.popStateEventUrl = event.url;\n return this.ignore(event);\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"navigation-state.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/guards/navigation-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, RouterEvent } from '@angular/router';\nimport { Dsl, GarbageCollector, lang, Logger } from '@coolon/pectin';\nimport { InteractionContext } from '../../interaction/interaction-context';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceRouter } from '../place-router';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { PlaceComponentDeactivationHandler } from './place-component-deactivation-handler';\n\nexport abstract class NavigationState extends GarbageCollector {\n\n private _visits = new Map<PlaceDefinition, Visit>();\n\n abstract readonly isTransitional: boolean;\n abstract readonly startingUrl: string;\n abstract readonly isPopState: boolean;\n debugPropertyKeys: string[] = [];\n\n constructor(protected readonly context: NavigationState.Context) {\n super();\n }\n\n get name(): string {\n return this.constructor.name;\n }\n\n get idle() {\n return !this.isTransitional;\n }\n\n get placeRouter(): PlaceRouter {\n return this.context.placeRouter;\n }\n\n get interactionService(): InteractionService {\n return this.context.interactionService;\n }\n\n get interactionContext(): InteractionContext {\n return null;\n }\n\n storeVisit(visit: Visit) {\n this._visits.set(visit.placeDefinition, visit);\n }\n\n getVisitFor(placeDef: PlaceDefinition) {\n return this._visits.get(placeDef);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n return this.illegalTransition('onPlaceNavigationStart');\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.illegalTransition(event);\n }\n\n onBackClickedDuringNavigationInteraction(newUrl: string): NavigationState {\n return this.illegalTransition('onBackClickedDuringNavigationInteraction');\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return this.illegalTransition('canDeactivatePlace');\n }\n\n getVisits(): Visit[] {\n return Array.from(this._visits.values());\n }\n\n protected illegalTransition<R>(message: string | RouterEvent): R {\n return lang.illegalState(`${message.toString()} not supported by ${this.toString()}`);\n }\n\n protected currentRouterUrl(): string {\n return this.placeRouter.getCurrentRouterUrl();\n }\n\n protected createTransitionStateFor(event: NavigationStart) {\n const popstate = event.navigationTrigger === 'popstate';\n const inInteraction = this.interactionService.isActive();\n if (popstate) {\n return inInteraction ?\n new NavigationState.LeavingInteractionAfterPopStateTransition(this.context, this.currentRouterUrl(), event.url) :\n new NavigationState.PopStateTransition(this.context, this.currentRouterUrl(), event.url);\n } else {\n return inInteraction ?\n new NavigationState.StartingInteractionTransition(this.context, this.currentRouterUrl()) :\n new NavigationState.NavigationTransition(this.context, this.currentRouterUrl());\n }\n }\n\n protected createIdleState() {\n return this.interactionService.isActive() ?\n new NavigationState.IdleDuringInteraction(this.context, this.currentRouterUrl()) :\n new NavigationState.Idle(this.context);\n }\n\n\n resetBrowserLocation(url, options: {replaceCurrent: boolean} = {replaceCurrent: false}) {\n this.placeRouter.resetBrowserLocation(url, options);\n }\n\n ignore(event: RouterEvent, reason?: string): NavigationState {\n reason = reason ? ` -> ${reason}` : '';\n Logger.get(this).info(`Ignoring router event${reason}: ${event.constructor.name} -> ${event.url} :: ${this.toString()}`);\n return this;\n }\n\n toString(): string {\n return `${this.constructor.name}(${this.debugState()})`;\n }\n\n protected debugState(properties?: string[]) {\n return (properties || this.debugPropertyKeys).map(p => {\n return `${p}: ${this[p]}`;\n }).join(', ');\n }\n\n protected replaceBuggeredUrlAfterAngularRouterCancelled(url:string) {\n // Angular calls _this.resetUrlToCurrentUrlTree() on cancelling and fucks our history.\n // So this means that the top of the stack is the url we want to go back to, and not the one that was on\n // it before the cancel event fired.\n // So we need to:\n // - replace the just inserted url with the one that used to be there.\n // - push our actual url back onto the top of the stack.\n this.resetBrowserLocation(url, {replaceCurrent: true});\n }\n\n}\n\nexport namespace NavigationState {\n\n export class Context {\n constructor(\n readonly placeRouter: PlaceRouter,\n readonly interactionService: InteractionService,\n readonly notifySuccess: (success: NavigationState) => void) {\n }\n }\n\n export class Idle extends NavigationState {\n readonly isTransitional = false;\n readonly startingUrl = null;\n readonly isPopState = false;\n\n constructor(context: Context) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n const navigationTransition = new NavigationTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n\n // calling angularLocation.go() to clear back state can trigger router cycles to the current url if we don't ignore them\n if (event.url === this.currentRouterUrl()) {\n Logger.get(this).info(`navigation started to same url -> ${event.url}`);\n return this;\n }\n\n if (this.placeRouter.hasActiveInteractionIds(event.url)) {\n Logger.get(this).info(`navigation started with interaction outlet -> ${event.url}`);\n return new StartingInteractionTransition(this.context, event.url);\n } else {\n return this.createTransitionStateFor(event);\n }\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.createTransitionStateFor(event);\n }\n }\n\n export abstract class AbstractNavigationTransition extends NavigationState {\n readonly isTransitional = true;\n private componentDeactivationHandlers = new Map<PlaceComponent, PlaceComponentDeactivationHandler>();\n private _interactionContext: InteractionContext;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n this._interactionContext = this.interactionService._createExclusiveModalInteractionContext();\n this.onDispose(() => {\n // the interaction context can be detached during the back button cancellation state transition\n // as the transition is synchronous and activityCancellation isn't. Otherwise dispose will be\n // called before the context has been cancelled. It might be work having the interaction context\n // automatically cancel if the context is disposed so we don't have worry about detaching etc.\n if (this._interactionContext) {\n this._interactionContext.dispose(); // or do something like cancelAndDispose?\n }\n });\n }\n\n get interactionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n // active sessions can have many cancel start cycles due\n // to place guard redirects\n return this;\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n // navigation succeeded\n this.context.notifySuccess(this);\n return new Idle(this.context);\n }\n\n\n onBackClickedDuringNavigationInteraction(newUrl: string): NavigationState {\n Logger.get(this).info(`back button pressed during navigation session interaction promise`);\n // detach the interaction from the session so it doesn't get disposed until the activity has completed.\n const navigationInteraction = this.detachInteractionContext();\n const { when } = Dsl.disposeWith(navigationInteraction);\n // TODO: I need to make the exclusive interaction context disallow nested activities or\n // that would mess things up entirely. Or, can I do a context.abortAll().then(..)\n Logger.get(this).info('cancelling current navigation activity..');\n navigationInteraction.cancelActiveActivity().then(() => {\n navigationInteraction.dispose();\n });\n\n return this.createNavigationInteractionCancelledState(newUrl);\n }\n\n abstract createNavigationInteractionCancelledState(newUrl: string): NavigationState\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // lookup the handler and create it if we've not seen it yet\n let handler = this.componentDeactivationHandlers.get(component);\n if (!handler) {\n const isPrimaryHandler = this.componentDeactivationHandlers.size === 0; // only primary handler cancels the app model interations\n handler = new PlaceComponentDeactivationHandler(component, this, isPrimaryHandler);\n this.componentDeactivationHandlers.set(component, handler);\n }\n return handler.canDeactivate(currentUrl, nextUrl);\n }\n\n protected detachInteractionContext(): InteractionContext {\n const context = this._interactionContext;\n this._interactionContext = null;\n return context;\n }\n }\n\n export class NavigationTransition extends AbstractNavigationTransition {\n readonly isPopState = false;\n debugPropertyKeys = ['startingUrl'];\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this;\n }\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new Idle(this.context);\n }\n\n createNavigationInteractionCancelledState(newUrl: string): NavigationState {\n return new LinkTriggeredNavigationInteractionCancelled(\n this.context,\n this.startingUrl,\n newUrl\n );\n }\n\n }\n\n export class PopStateTransition extends AbstractNavigationTransition {\n readonly isPopState = true;\n debugPropertyKeys = ['startingUrl', 'poppedHistoryUrl'];\n\n constructor(context: NavigationState.Context, startingUrl: string, readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n this.replaceBuggeredUrlAfterAngularRouterCancelled(this.poppedHistoryUrl);\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.startingUrl);\n return new Idle(this.context);\n }\n\n\n onRouterError(event: NavigationError): NavigationState {\n // // navigation was aborted.\n // if (this.currentRouterUrl() !== this.startingUrl) {\n // // Angular doesn't preserve the url when a guard cancels the back button.\n // // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n // Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n // this.restoreHistory([\n // this.poppedHistoryUrl,\n // this.startingUrl\n // ]);\n // }\n // return new Idle(this.context);\n return this.illegalTransition(\"when do I get this???\")\n }\n\n createNavigationInteractionCancelledState(locationTriggerUrl: string): NavigationState {\n return new PopStateTriggeredNavigationInteractionCancelled(this.context,\n this.startingUrl,\n locationTriggerUrl,\n this.poppedHistoryUrl);\n }\n\n }\n\n export abstract class AbstractInteractionTransition extends AbstractNavigationTransition {\n readonly isTransitional = true;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context, startingUrl);\n }\n\n }\n\n\n// The following states exist to handle all events while any kind of navigation is in progress. That way all other states can\n// happily ignore interaction contexts.\n\n /**\n * This is the non transitional (i.e. rest) state that is used whenever an interaction context is active.\n */\n export class IdleDuringInteraction extends NavigationState {\n readonly isTransitional = false;\n readonly isPopState = false;\n debugPropertyKeys = ['startingUrl'];\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n // we're in an interaction and the user clicked back\n const navigationTransition = new StartingInteractionTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return new StartingInteractionTransition(this.context, event.url);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n // we're in an interaction and the user clicked back\n return new LeavingInteractionAfterPopStateTransition(this.context, event.url, event.url);\n }\n }\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n * NOTE: This state is activated when ever an interaction is started. It might be better to split it into\n * different states for different scenarios, e.g. starting model, starting model during route guard etc.\n */\n export class StartingInteractionTransition extends AbstractInteractionTransition {\n readonly isPopState = false;\n\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // TODO: this.replaceBuggeredUrlAfterAngularRouterCancells(...);???\n if (this.context.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new IdleDuringInteraction(this.context, this.startingUrl);\n }\n\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n createNavigationInteractionCancelledState(locationTriggerUrl: string): NavigationState {\n return new LeavingInteractionTransitionCancelled(this.context,\n this.startingUrl,\n locationTriggerUrl);\n }\n }\n\n /**\n * The sequence of router events are:\n * Error -> url = url of navigation link\n * End\n * onPopState url = current intereaction url sans the query params\n * Cancel url == same as above.\n */\n export class LeavingInteractionTransitionCancelled extends NavigationState {\n\n readonly isPopState = false;\n firstCancelHandled = false;\n popStateHandled = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly locationChangeTriggerUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n } else {\n // this.replaceBuggeredUrlAfterAngularRouterCancells(this.start)\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n }\n return this.createIdleState();\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.ignore(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n }\n\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n */\n export class LeavingInteractionAfterPopStateTransition extends AbstractInteractionTransition {\n readonly isPopState = true;\n\n constructor(context: NavigationState.Context, startingUrl: string, readonly poppedHistoryUrl: string) {\n super(context, startingUrl);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // TODO: this.replaceBuggeredUrlAfterAngularRouterCancells(...);???\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n createNavigationInteractionCancelledState(newUrl: string): NavigationState {\n return this.illegalTransition('Leaving interaction after pop-state should\\'t block so should never see a back button click');\n }\n\n }\n\n /**\n * This state handles the scenario where a link navigation triggered an interaction and the user clicked back a to cancel it.\n * The routing event sequence is different depending on the link that was clicked.\n *\n * If the link was the same as the previous history location (i.e. they've gone back via a link rather than clicking back) then the sequence is:\n *\n * -> Idle -> NavigationTransition\n * -> confirm dialog shown.\n * -> click back\n * -> NavigationCancel -> clickedLinkUrl === cancel.url\n * -> NavigationEnd\n *\n * Otherwise if the link is different from teh history location then the sequence is:\n *\n * -> Idle -> NavigationTransition\n * -> confirm dialog shown.\n * -> click back\n * -> NavigationCancel -> clickedLinkUrl !== cancel.url\n * -> NavigationEnd\n * -> PopState\n * -> NavigationCancel\n */\n export class LinkTriggeredNavigationInteractionCancelled extends NavigationState {\n\n readonly isPopState = false;\n firstCancelEventUrl: string;\n popStateEventUrl: string;\n clickedLinkMatchedBackButtonUrl = false;\n debugPropertyKeys = ['idle', 'startingUrl', 'clickedLinkUrl', 'firstCancelEventUrl', 'clickedLinkMatchedBackButtonUrl', 'popStateEventUrl'];\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly clickedLinkUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // TODO: should really split this into two sub states in the first cancel event.\n if (!this.firstCancelEventUrl) {\n this.firstCancelEventUrl = event.url;\n this.clickedLinkMatchedBackButtonUrl = event.url === this.clickedLinkUrl;\n return this.ignore(event);\n } else {\n // we wait for our popped state to come in.\n if (!this.clickedLinkMatchedBackButtonUrl && this.popStateEventUrl) {\n return this.finaliseRouting();\n }\n }\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.clickedLinkMatchedBackButtonUrl) {\n return this.finaliseRouting();\n } else {\n return this.ignore(event);\n }\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n this.popStateEventUrl = event.url;\n return this.ignore(event);\n }\n\n finaliseRouting() {\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.replaceBuggeredUrlAfterAngularRouterCancelled(this.clickedLinkUrl); // put the back click one back in.\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n } else {\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n }\n return this.createIdleState();\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n }\n\n /**\n * This state handles the scenario where a pop state triggered and interaction and the user clickeb back a second time to cancel it.\n * The sequence of routing events/state transitions is as follows.\n * -> Idle -> PopStateTransition (poppedHistoryUrl == page to go to, startingUrl = page to stay on )\n * -> confirm dialog shown.\n * -> click back\n * -> PopStateTransition -> CancelledDuringBackButtonNavigationInteraction(trigger url is the page before the popped history url)\n * -> NavigationCancel (for the previous back)\n * -> PopState\n * -> NavigationCancel\n */\n export class PopStateTriggeredNavigationInteractionCancelled extends NavigationState {\n\n readonly isPopState = false;\n firstCancelHandled = false;\n popStateHandled = false;\n popStateEventUrl: string;\n debugPropertyKeys = ['idle', 'startingUrl', 'poppedHistoryUrl', 'locationChangeTriggerUrl', 'popStateEventUrl', 'firstCancelHandled', 'popStateHandled'];\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly locationChangeTriggerUrl: string,\n readonly poppedHistoryUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n\n if (this.firstCancelHandled && this.popStateHandled) {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n\n // Angular calls _this.resetUrlToCurrentUrlTree() on cancelling and fucks our history.\n // So this means that the top of the stack is the url we want to go back to, and not the one that was on\n // it before the cancel event fired.\n // So we need to:\n // - replace the just inserted url with the one that used to be there.\n // - push our actual url back onto the top of the stack.\n this.replaceBuggeredUrlAfterAngularRouterCancelled(this.locationChangeTriggerUrl);\n this.resetBrowserLocation(this.poppedHistoryUrl); // put the first back click one back in.\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n } else {\n this.resetBrowserLocation(this.startingUrl); // and now put our own url back in.\n }\n return this.createIdleState();\n } else {\n this.firstCancelHandled = true;\n return this.ignore(event);\n }\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.ignore(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n this.popStateHandled = true;\n this.popStateEventUrl = event.url;\n return this.ignore(event);\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
- import { assert, Binding, DebugContext, lang } from '@coolon/pectin';
6
+ import { assert, Binding, lang } from '@coolon/pectin';
7
7
  import { Klass } from '@coolon/typescript-utilities';
8
8
  import { Memoize } from '@typescript-plus/fast-memoize-decorator';
9
9
  import 'reflect-metadata';
@@ -32,7 +32,7 @@ var PlaceComponent = /** @class */ (function (_super) {
32
32
  var _this = this;
33
33
  assert.isNil(this.visit);
34
34
  this.visit = visit;
35
- DebugContext.get(this.visit).tag(this.placeDefinition.component.name + ".visit");
35
+ // DebugContext.get(this.visit).tag(`${this.placeDefinition.component.name}.visit`);
36
36
  this.placeDefinition.getVisitParameterDefs().forEach((/**
37
37
  * @param {?} parameterDef
38
38
  * @return {?}