@coolon/angular-ui-powerups 0.0.32 → 0.0.34

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 (60) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +847 -765
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/esm2015/coolon-angular-ui-powerups.js +2 -2
  7. package/esm2015/index.js +2 -2
  8. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +33 -4
  9. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +3 -3
  10. package/esm2015/lib/place/guards/leave-place.guard.js +1 -1
  11. package/esm2015/lib/place/i-place-component.js +17 -0
  12. package/esm2015/lib/place/i-place-service.js +16 -0
  13. package/esm2015/lib/place/index.js +8 -4
  14. package/esm2015/lib/place/place-component.js +163 -7
  15. package/esm2015/lib/place/place.decorator.js +7 -87
  16. package/esm2015/lib/place/place.service.js +47 -8
  17. package/esm2015/lib/place/route/parameter-decorators.js +1 -42
  18. package/esm2015/lib/place/route/resolved-parameter.js +16 -0
  19. package/esm2015/lib/place/route/resolved-route-parameter-snapshot.js +106 -0
  20. package/esm2015/lib/place/route/route-parameter-bindings.js +14 -158
  21. package/esm2015/lib/place/route/visit-snapshot.js +7 -0
  22. package/esm2015/public_api.js +2 -2
  23. package/esm5/coolon-angular-ui-powerups.js +2 -2
  24. package/esm5/index.js +2 -2
  25. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +40 -4
  26. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +3 -3
  27. package/esm5/lib/place/guards/leave-place.guard.js +1 -1
  28. package/esm5/lib/place/i-place-component.js +17 -0
  29. package/esm5/lib/place/i-place-service.js +16 -0
  30. package/esm5/lib/place/index.js +8 -4
  31. package/esm5/lib/place/place-component.js +191 -7
  32. package/esm5/lib/place/place.decorator.js +7 -97
  33. package/esm5/lib/place/place.service.js +52 -10
  34. package/esm5/lib/place/route/parameter-decorators.js +1 -42
  35. package/esm5/lib/place/route/resolved-parameter.js +16 -0
  36. package/esm5/lib/place/route/resolved-route-parameter-snapshot.js +129 -0
  37. package/esm5/lib/place/route/route-parameter-bindings.js +13 -185
  38. package/esm5/lib/place/route/visit-snapshot.js +11 -0
  39. package/esm5/public_api.js +2 -2
  40. package/fesm2015/coolon-angular-ui-powerups.js +777 -712
  41. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  42. package/fesm5/coolon-angular-ui-powerups.js +843 -761
  43. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  44. package/lib/place/components/place-outlet/place-outlet.component.d.ts +4 -0
  45. package/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.d.ts +1 -2
  46. package/lib/place/i-place-component.d.ts +5 -0
  47. package/lib/place/i-place-service.d.ts +10 -0
  48. package/lib/place/index.d.ts +5 -1
  49. package/lib/place/place-component.d.ts +39 -1
  50. package/lib/place/place.decorator.d.ts +1 -25
  51. package/lib/place/place.service.d.ts +13 -2
  52. package/lib/place/route/parameter-decorators.d.ts +0 -12
  53. package/lib/place/route/resolved-parameter.d.ts +5 -0
  54. package/lib/place/route/resolved-route-parameter-snapshot.d.ts +12 -0
  55. package/lib/place/route/route-parameter-bindings.d.ts +3 -4
  56. package/lib/place/route/visit-snapshot.d.ts +2 -0
  57. package/package.json +1 -1
  58. package/esm2015/lib/place/abstract-place-component.js +0 -50
  59. package/esm5/lib/place/abstract-place-component.js +0 -57
  60. package/lib/place/abstract-place-component.d.ts +0 -11
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material'), require('@angular/platform-browser'), require('@angular/platform-browser/animations'), require('@coolon/pectin'), require('@angular/cdk/portal'), require('@coolon/pectin/lib/promise/deferred.class'), require('@coolon/typescript-utilities'), require('@angular/material/dialog'), require('@angular/material/icon'), require('@angular/material/list'), require('@angular/material/tabs'), require('@angular/material/tooltip'), require('@angular/router'), require('@angular/animations'), require('lodash'), require('reflect-metadata'), require('resize-observer-polyfill'), require('@typescript-plus/fast-memoize-decorator'), require('@typescript-plus/fast-memoize-decorator/dist/src')) :
3
- typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material', '@angular/platform-browser', '@angular/platform-browser/animations', '@coolon/pectin', '@angular/cdk/portal', '@coolon/pectin/lib/promise/deferred.class', '@coolon/typescript-utilities', '@angular/material/dialog', '@angular/material/icon', '@angular/material/list', '@angular/material/tabs', '@angular/material/tooltip', '@angular/router', '@angular/animations', 'lodash', 'reflect-metadata', 'resize-observer-polyfill', '@typescript-plus/fast-memoize-decorator', '@typescript-plus/fast-memoize-decorator/dist/src'], factory) :
4
- (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material, global.ng.platformBrowser, global.ng.platformBrowser.animations, global.pectin, global.ng.cdk.portal, global.deferred_class, global.typescriptUtilities, global.ng.material.dialog, global.ng.material.icon, global.ng.material.list, global.ng.material.tabs, global.ng.material.tooltip, global.ng.router, global.ng.animations, global.lodash, null, global.ResizeObserver, global.fastMemoizeDecorator, global.src));
5
- }(this, function (exports, common, core, forms, material, platformBrowser, animations, pectin, portal, deferred_class, typescriptUtilities, dialog, icon, list, tabs, tooltip, router, animations$1, lodash, reflectMetadata, ResizeObserver, fastMemoizeDecorator, src) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material'), require('@angular/platform-browser'), require('@angular/platform-browser/animations'), require('@coolon/pectin'), require('@angular/cdk/portal'), require('@coolon/pectin/lib/promise/deferred.class'), require('@coolon/typescript-utilities'), require('@angular/material/dialog'), require('@angular/material/icon'), require('@angular/material/list'), require('@angular/material/tabs'), require('@angular/material/tooltip'), require('@angular/router'), require('@typescript-plus/fast-memoize-decorator'), require('lodash'), require('reflect-metadata'), require('@angular/animations'), require('resize-observer-polyfill'), require('@typescript-plus/fast-memoize-decorator/dist/src')) :
3
+ typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material', '@angular/platform-browser', '@angular/platform-browser/animations', '@coolon/pectin', '@angular/cdk/portal', '@coolon/pectin/lib/promise/deferred.class', '@coolon/typescript-utilities', '@angular/material/dialog', '@angular/material/icon', '@angular/material/list', '@angular/material/tabs', '@angular/material/tooltip', '@angular/router', '@typescript-plus/fast-memoize-decorator', 'lodash', 'reflect-metadata', '@angular/animations', 'resize-observer-polyfill', '@typescript-plus/fast-memoize-decorator/dist/src'], factory) :
4
+ (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material, global.ng.platformBrowser, global.ng.platformBrowser.animations, global.pectin, global.ng.cdk.portal, global.deferred_class, global.typescriptUtilities, global.ng.material.dialog, global.ng.material.icon, global.ng.material.list, global.ng.material.tabs, global.ng.material.tooltip, global.ng.router, global.fastMemoizeDecorator, global.lodash, null, global.ng.animations, global.ResizeObserver, global.src));
5
+ }(this, function (exports, common, core, forms, material, platformBrowser, animations, pectin, portal, deferred_class, typescriptUtilities, dialog, icon, list, tabs, tooltip, router, fastMemoizeDecorator, lodash, reflectMetadata, animations$1, ResizeObserver, src) { 'use strict';
6
6
 
7
7
  ResizeObserver = ResizeObserver && ResizeObserver.hasOwnProperty('default') ? ResizeObserver['default'] : ResizeObserver;
8
8
 
@@ -1904,247 +1904,397 @@
1904
1904
  * @fileoverview added by tsickle
1905
1905
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1906
1906
  */
1907
- var PlaceService = /** @class */ (function () {
1908
- function PlaceService() {
1909
- this._activePlaces = new pectin.MutableListModel();
1907
+ var ResolvedRouteParameterSnapshot = /** @class */ (function () {
1908
+ function ResolvedRouteParameterSnapshot(parameters) {
1909
+ this.parameters = parameters;
1910
1910
  }
1911
- Object.defineProperty(PlaceService.prototype, "activePlaces", {
1912
- get: /**
1913
- * @return {?}
1914
- */
1915
- function () {
1916
- return this._activePlaces.readonly;
1917
- },
1918
- enumerable: true,
1919
- configurable: true
1920
- });
1921
1911
  /**
1922
- * @param {?} place
1912
+ * @template T
1913
+ * @param {?} parameter
1923
1914
  * @return {?}
1924
1915
  */
1925
- PlaceService.prototype.onActivate = /**
1926
- * @param {?} place
1916
+ ResolvedRouteParameterSnapshot.prototype.get = /**
1917
+ * @template T
1918
+ * @param {?} parameter
1927
1919
  * @return {?}
1928
1920
  */
1929
- function (place) {
1930
- this._activePlaces.push(place);
1921
+ function (parameter) {
1922
+ /** @type {?} */
1923
+ var resolved = this.parameters.find((/**
1924
+ * @param {?} p
1925
+ * @return {?}
1926
+ */
1927
+ function (p) { return p.parameterDef === parameter; }));
1928
+ return resolved ? resolved.resolvedValue : null;
1931
1929
  };
1932
1930
  /**
1933
- * @param {?} place
1931
+ * @template T
1932
+ * @param {?} parameter
1933
+ * @param {?} value
1934
1934
  * @return {?}
1935
1935
  */
1936
- PlaceService.prototype.onDeactivate = /**
1937
- * @param {?} place
1936
+ ResolvedRouteParameterSnapshot.prototype.replace = /**
1937
+ * @template T
1938
+ * @param {?} parameter
1939
+ * @param {?} value
1938
1940
  * @return {?}
1939
1941
  */
1940
- function (place) {
1941
- this._activePlaces.remove(place);
1942
+ function (parameter, value) {
1943
+ return new ResolvedRouteParameterSnapshot(this.parameters.filter((/**
1944
+ * @param {?} p
1945
+ * @return {?}
1946
+ */
1947
+ function (p) { return p.parameterDef !== parameter; })).concat({
1948
+ parameterDef: parameter,
1949
+ resolvedValue: value
1950
+ }));
1942
1951
  };
1943
- PlaceService.decorators = [
1944
- { type: core.Injectable, args: [{
1945
- providedIn: 'root'
1946
- },] }
1947
- ];
1948
- /** @nocollapse */
1949
- PlaceService.ctorParameters = function () { return []; };
1950
- /** @nocollapse */ PlaceService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PlaceService_Factory() { return new PlaceService(); }, token: PlaceService, providedIn: "root" });
1951
- __decorate([
1952
- pectin.Trace(),
1953
- __metadata("design:type", Function),
1954
- __metadata("design:paramtypes", [Object]),
1955
- __metadata("design:returntype", void 0)
1956
- ], PlaceService.prototype, "onActivate", null);
1957
- __decorate([
1958
- pectin.Trace(),
1959
- __metadata("design:type", Function),
1960
- __metadata("design:paramtypes", [Object]),
1961
- __metadata("design:returntype", void 0)
1962
- ], PlaceService.prototype, "onDeactivate", null);
1963
- return PlaceService;
1964
- }());
1965
- if (false) {
1966
- /**
1967
- * @type {?}
1968
- * @private
1969
- */
1970
- PlaceService.prototype._activePlaces;
1971
- }
1972
-
1973
- /**
1974
- * @fileoverview added by tsickle
1975
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1976
- */
1977
- // Freezes the state of the components at the start of the animation.
1978
- /** @type {?} */
1979
- var animationStartStyle = animations$1.style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });
1980
- /** @type {?} */
1981
- var left = [
1982
- animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
1983
- animations$1.group([
1984
- animations$1.query(':enter', [
1985
- animations$1.style({ transform: 'translateX(-100%)' }),
1986
- animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
1987
- ], {
1988
- optional: true
1989
- }),
1990
- animations$1.query(':leave', [
1991
- animations$1.style({ transform: 'translateX(0%)' }),
1992
- animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(100%)' }))
1993
- ], {
1994
- optional: true
1995
- })
1996
- ])
1997
- ];
1998
- /** @type {?} */
1999
- var right = [
2000
- animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
2001
- animations$1.group([
2002
- animations$1.query(':enter', [
2003
- animations$1.style({ transform: 'translateX(100%)' }),
2004
- animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
2005
- ], {
2006
- optional: true
2007
- }),
2008
- animations$1.query(':leave', [animations$1.style({ transform: 'translateX(0%)' }), animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(-100%)' }))], {
2009
- optional: true
2010
- })
2011
- ])
2012
- ];
2013
- /** @type {?} */
2014
- var LEFT_RIGHT_PLACE_ANIMATION = animations$1.trigger('routeAnimations', [
2015
- animations$1.transition(':increment', right, { params: { duration: '.3s' } }),
2016
- animations$1.transition(':decrement', left, { params: { duration: '.3s' } })
2017
- ]);
2018
-
2019
- /**
2020
- * @fileoverview added by tsickle
2021
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2022
- */
2023
- var PlaceOutletComponent = /** @class */ (function () {
2024
- function PlaceOutletComponent(placeService) {
2025
- this.placeService = placeService;
2026
- this.animate = true;
2027
- }
2028
1952
  /**
2029
1953
  * @return {?}
2030
1954
  */
2031
- PlaceOutletComponent.prototype.ngOnInit = /**
1955
+ ResolvedRouteParameterSnapshot.prototype.getFormattedRouteId = /**
2032
1956
  * @return {?}
2033
1957
  */
2034
1958
  function () {
1959
+ /** @type {?} */
1960
+ var routeIdParam = this.getRouteIdParam();
1961
+ return routeIdParam ? routeIdParam.parameterDef.type.format(routeIdParam.resolvedValue) : null;
2035
1962
  };
2036
1963
  /**
2037
- * @param {?} $event
1964
+ * @private
2038
1965
  * @return {?}
2039
1966
  */
2040
- PlaceOutletComponent.prototype.onActivate = /**
2041
- * @param {?} $event
1967
+ ResolvedRouteParameterSnapshot.prototype.getRouteIdParam = /**
1968
+ * @private
2042
1969
  * @return {?}
2043
1970
  */
2044
- function ($event) {
2045
- this.placeService.onActivate($event);
1971
+ function () {
1972
+ return this.parameters.find((/**
1973
+ * @param {?} p
1974
+ * @return {?}
1975
+ */
1976
+ function (p) { return p.parameterDef.isRouteId; }));
2046
1977
  };
2047
1978
  /**
2048
- * @param {?} $event
2049
1979
  * @return {?}
2050
1980
  */
2051
- PlaceOutletComponent.prototype.onDeactivate = /**
2052
- * @param {?} $event
1981
+ ResolvedRouteParameterSnapshot.prototype.getFormattedParameters = /**
2053
1982
  * @return {?}
2054
1983
  */
2055
- function ($event) {
2056
- this.placeService.onDeactivate($event);
1984
+ function () {
1985
+ /** @type {?} */
1986
+ var params = {};
1987
+ /** @type {?} */
1988
+ var routeIdParam = this.parameters.filter((/**
1989
+ * @param {?} p
1990
+ * @return {?}
1991
+ */
1992
+ function (p) { return !p.parameterDef.isRouteId; })).forEach((/**
1993
+ * @param {?} p
1994
+ * @return {?}
1995
+ */
1996
+ function (p) {
1997
+ params[p.parameterDef.name] = p.parameterDef.type.format(p.resolvedValue);
1998
+ }));
1999
+ return params;
2057
2000
  };
2058
2001
  /**
2059
- * @param {?} outlet
2060
2002
  * @return {?}
2061
2003
  */
2062
- PlaceOutletComponent.prototype.getPlaceOrder = /**
2063
- * @param {?} outlet
2004
+ ResolvedRouteParameterSnapshot.prototype.hasRouteId = /**
2064
2005
  * @return {?}
2065
2006
  */
2066
- function (outlet) {
2067
- return this.animate && outlet && outlet.activatedRouteData && outlet.activatedRouteData['placeOrder'];
2068
- };
2069
- PlaceOutletComponent.decorators = [
2070
- { type: core.Component, args: [{
2071
- selector: 'angular-ui-powerups-place-outlet',
2072
- template: "<div class=\"router-outlet-container\" [@routeAnimations]=\"getPlaceOrder(routerOutlet)\">\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\">\n </router-outlet>\n</div>\n\n",
2073
- animations: [LEFT_RIGHT_PLACE_ANIMATION],
2074
- styles: [":host{display:flex;flex-direction:column;min-height:0}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
2075
- }] }
2076
- ];
2077
- /** @nocollapse */
2078
- PlaceOutletComponent.ctorParameters = function () { return [
2079
- { type: PlaceService }
2080
- ]; };
2081
- PlaceOutletComponent.propDecorators = {
2082
- animate: [{ type: core.Input }]
2007
+ function () {
2008
+ return !!this.getRouteIdParam();
2083
2009
  };
2084
- return PlaceOutletComponent;
2010
+ __decorate([
2011
+ pectin.Trace(),
2012
+ __metadata("design:type", Function),
2013
+ __metadata("design:paramtypes", []),
2014
+ __metadata("design:returntype", void 0)
2015
+ ], ResolvedRouteParameterSnapshot.prototype, "getFormattedRouteId", null);
2016
+ __decorate([
2017
+ pectin.Trace(),
2018
+ __metadata("design:type", Function),
2019
+ __metadata("design:paramtypes", []),
2020
+ __metadata("design:returntype", void 0)
2021
+ ], ResolvedRouteParameterSnapshot.prototype, "getFormattedParameters", null);
2022
+ return ResolvedRouteParameterSnapshot;
2085
2023
  }());
2086
2024
  if (false) {
2087
2025
  /** @type {?} */
2088
- PlaceOutletComponent.prototype.animate;
2089
- /**
2090
- * @type {?}
2091
- * @private
2092
- */
2093
- PlaceOutletComponent.prototype.placeService;
2026
+ ResolvedRouteParameterSnapshot.prototype.parameters;
2094
2027
  }
2095
2028
 
2096
2029
  /**
2097
2030
  * @fileoverview added by tsickle
2098
2031
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2099
2032
  */
2100
- /**
2101
- * @param {?} options
2102
- * @return {?}
2103
- */
2104
- function Place(options) {
2105
- return (/**
2106
- * @param {?} target
2107
- * @return {?}
2108
- */
2109
- function (target) {
2110
- Reflect.defineMetadata('place.options', options, target);
2111
- });
2112
- }
2113
- (function (Place) {
2114
- /**
2115
- * @record
2116
- */
2117
- function Options() { }
2118
- Place.Options = Options;
2119
- if (false) {
2120
- /** @type {?} */
2121
- Options.prototype.path;
2033
+ exports.RouteParameterBindings = /** @class */ (function (_super) {
2034
+ __extends(RouteParameterBindings, _super);
2035
+ function RouteParameterBindings(component, placeService) {
2036
+ var _this = _super.call(this) || this;
2037
+ _this.component = component;
2038
+ _this._incomingRouteChange = new pectin.MutableValueModel(false);
2039
+ _this.resolvedParameters = new pectin.MutableValueModel();
2040
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe;
2041
+ _this.txo = new pectin.TransactionObserver(); //.onEvent(e => console.log(e.toString()));
2042
+ //.onEvent(e => console.log(e.toString()));
2122
2043
  /** @type {?} */
2123
- Options.prototype.order;
2124
- /** @type {?|undefined} */
2125
- Options.prototype.data;
2126
- /** @type {?|undefined} */
2127
- Options.prototype.authenticate;
2128
- }
2129
- var Descriptor = /** @class */ (function () {
2130
- function Descriptor(placeClass, options) {
2131
- pectin.assert.notNil(options);
2132
- this.path = options.path;
2133
- this.order = options.order;
2134
- this.data = options.data;
2135
- this.authenticate = lodash.isNil(options.authenticate) || options.authenticate;
2136
- }
2137
- /**
2138
- * @template T
2139
- * @param {?} key
2140
- * @param {?=} defaultValue
2044
+ var routeParameterDefs = typescriptUtilities.Klass.get(component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);
2045
+ routeParameterDefs.forEach((/**
2046
+ * @param {?} parameter
2141
2047
  * @return {?}
2142
2048
  */
2143
- Descriptor.prototype.getData = /**
2144
- * @template T
2145
- * @param {?} key
2146
- * @param {?=} defaultValue
2147
- * @return {?}
2049
+ function (parameter) { return _this.installBinding(parameter); }));
2050
+ /** @type {?} */
2051
+ var incomingResolvedRouteParameters = observe.valuesFrom(component.activatedRoute.paramMap)
2052
+ .last()
2053
+ .map((/**
2054
+ * @param {?} params
2055
+ * @return {?}
2056
+ */
2057
+ function (params) {
2058
+ /** @type {?} */
2059
+ var result = [];
2060
+ routeParameterDefs.forEach((/**
2061
+ * @param {?} parameterDef
2062
+ * @return {?}
2063
+ */
2064
+ function (parameterDef) {
2065
+ /** @type {?} */
2066
+ var resolvedValue;
2067
+ if (parameterDef.isArray) {
2068
+ resolvedValue = params.getAll(parameterDef.name).map((/**
2069
+ * @param {?} v
2070
+ * @return {?}
2071
+ */
2072
+ function (v) { return parameterDef.type.parse(v); }));
2073
+ }
2074
+ else {
2075
+ resolvedValue = parameterDef.type.parse(params.get(parameterDef.name));
2076
+ }
2077
+ result.push({ parameterDef: parameterDef, resolvedValue: resolvedValue });
2078
+ }));
2079
+ return new ResolvedRouteParameterSnapshot(result);
2080
+ }));
2081
+ incomingResolvedRouteParameters.subscribe((/**
2082
+ * @param {?} resolvedParameters
2083
+ * @return {?}
2084
+ */
2085
+ function (resolvedParameters) {
2086
+ _this._incomingRouteChange.value = true;
2087
+ _this.resolvedParameters.value = resolvedParameters;
2088
+ _this._incomingRouteChange.value = false;
2089
+ }));
2090
+ when.valueOf(_this.resolvedParameters).changes((/**
2091
+ * @param {?} params
2092
+ * @param {?} previous
2093
+ * @return {?}
2094
+ */
2095
+ function (params, previous) {
2096
+ placeService.notifyRouteParametersChanged({
2097
+ placeComponent: component,
2098
+ next: params,
2099
+ previous: previous,
2100
+ updateRoute: !_this.incomingRouteChange.value // we update the route if it's a component triggered change.
2101
+ });
2102
+ }));
2103
+ _this.txo.observe('incomingResolvedRouteParameters', incomingResolvedRouteParameters);
2104
+ _this.txo.observe('this.routeIsChanging', _this.incomingRouteChange);
2105
+ return _this;
2106
+ }
2107
+ Object.defineProperty(RouteParameterBindings.prototype, "incomingRouteChange", {
2108
+ get: /**
2109
+ * @return {?}
2110
+ */
2111
+ function () {
2112
+ return this._incomingRouteChange.readonly;
2113
+ },
2114
+ enumerable: true,
2115
+ configurable: true
2116
+ });
2117
+ /**
2118
+ * @protected
2119
+ * @template T
2120
+ * @param {?} parameter
2121
+ * @return {?}
2122
+ */
2123
+ RouteParameterBindings.prototype.installBinding = /**
2124
+ * @protected
2125
+ * @template T
2126
+ * @param {?} parameter
2127
+ * @return {?}
2128
+ */
2129
+ function (parameter) {
2130
+ /** @type {?} */
2131
+ var model = this.getModelFor(parameter);
2132
+ // this.txo.observe(parameter.propertyName, model);
2133
+ this.registerDisposable(new pectin.Binding(this.resolvedParameters, model, {
2134
+ toRight: /**
2135
+ * @param {?} parameters
2136
+ * @return {?}
2137
+ */
2138
+ function (parameters) {
2139
+ return parameters.get(parameter);
2140
+ },
2141
+ toLeft: /**
2142
+ * @param {?} value
2143
+ * @param {?=} currentParameters
2144
+ * @return {?}
2145
+ */
2146
+ function (value, currentParameters) {
2147
+ return currentParameters.replace(parameter, value);
2148
+ }
2149
+ }));
2150
+ };
2151
+ /**
2152
+ * @private
2153
+ * @template T
2154
+ * @param {?} parameter
2155
+ * @return {?}
2156
+ */
2157
+ RouteParameterBindings.prototype.getModelFor = /**
2158
+ * @private
2159
+ * @template T
2160
+ * @param {?} parameter
2161
+ * @return {?}
2162
+ */
2163
+ function (parameter) {
2164
+ return this.component[parameter.propertyName];
2165
+ };
2166
+ return RouteParameterBindings;
2167
+ }(pectin.GarbageCollector));
2168
+ if (false) {
2169
+ /** @type {?} */
2170
+ exports.RouteParameterBindings.prototype._incomingRouteChange;
2171
+ /**
2172
+ * @type {?}
2173
+ * @private
2174
+ */
2175
+ exports.RouteParameterBindings.prototype.txo;
2176
+ /**
2177
+ * @type {?}
2178
+ * @private
2179
+ */
2180
+ exports.RouteParameterBindings.prototype.resolvedParameters;
2181
+ /**
2182
+ * @type {?}
2183
+ * @private
2184
+ */
2185
+ exports.RouteParameterBindings.prototype.component;
2186
+ }
2187
+ (function (RouteParameterBindings) {
2188
+ RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
2189
+ })(exports.RouteParameterBindings || (exports.RouteParameterBindings = {}));
2190
+
2191
+ /**
2192
+ * @fileoverview added by tsickle
2193
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2194
+ */
2195
+ // RAKE: making this Symbol(...) broke things.
2196
+ /** @type {?} */
2197
+ var DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';
2198
+ exports.PlaceComponent = /** @class */ (function (_super) {
2199
+ __extends(PlaceComponent, _super);
2200
+ function PlaceComponent(activatedRoute, placeService) {
2201
+ var _this = _super.call(this) || this;
2202
+ _this.activatedRoute = activatedRoute;
2203
+ _this.routeBindingMediator = _this.registerDisposable(new exports.RouteParameterBindings(_this, placeService));
2204
+ return _this;
2205
+ }
2206
+ Object.defineProperty(PlaceComponent.prototype, "placeConfig", {
2207
+ get: /**
2208
+ * @return {?}
2209
+ */
2210
+ function () {
2211
+ return PlaceComponent.getDefinition((/** @type {?} */ ((/** @type {?} */ (this.constructor)))));
2212
+ },
2213
+ enumerable: true,
2214
+ configurable: true
2215
+ });
2216
+ /**
2217
+ * @return {?}
2218
+ */
2219
+ PlaceComponent.prototype.canDeactivate = /**
2220
+ * @return {?}
2221
+ */
2222
+ function () {
2223
+ return true;
2224
+ };
2225
+ /**
2226
+ * @return {?}
2227
+ */
2228
+ PlaceComponent.prototype.onPlaceReady = /**
2229
+ * @return {?}
2230
+ */
2231
+ function () {
2232
+ };
2233
+ __decorate([
2234
+ fastMemoizeDecorator.Memoize(),
2235
+ __metadata("design:type", PlaceComponent.Definition),
2236
+ __metadata("design:paramtypes", [])
2237
+ ], PlaceComponent.prototype, "placeConfig", null);
2238
+ __decorate([
2239
+ pectin.Trace(),
2240
+ __metadata("design:type", Function),
2241
+ __metadata("design:paramtypes", []),
2242
+ __metadata("design:returntype", void 0)
2243
+ ], PlaceComponent.prototype, "onPlaceReady", null);
2244
+ return PlaceComponent;
2245
+ }(DisposableComponent));
2246
+ if (false) {
2247
+ /**
2248
+ * @type {?}
2249
+ * @private
2250
+ */
2251
+ exports.PlaceComponent.prototype.routeBindingMediator;
2252
+ /** @type {?} */
2253
+ exports.PlaceComponent.prototype.activatedRoute;
2254
+ }
2255
+ (function (PlaceComponent) {
2256
+ var Definition = /** @class */ (function () {
2257
+ function Definition(component, options) {
2258
+ this.component = component;
2259
+ pectin.assert.notNil(options);
2260
+ this.path = options.path;
2261
+ this.order = options.order;
2262
+ this.data = options.data;
2263
+ this.authenticate = lodash.isNil(options.authenticate) || options.authenticate;
2264
+ }
2265
+ /**
2266
+ * @param {?} construcable
2267
+ * @return {?}
2268
+ */
2269
+ Definition.prototype.isDescriptorForType = /**
2270
+ * @param {?} construcable
2271
+ * @return {?}
2272
+ */
2273
+ function (construcable) {
2274
+ return pectin.lang.constructorChain(construcable).includes(PlaceComponent);
2275
+ };
2276
+ /**
2277
+ * @param {?} placeComponent
2278
+ * @return {?}
2279
+ */
2280
+ Definition.prototype.isDescriptorFor = /**
2281
+ * @param {?} placeComponent
2282
+ * @return {?}
2283
+ */
2284
+ function (placeComponent) {
2285
+ return placeComponent.constructor === this.component;
2286
+ };
2287
+ /**
2288
+ * @template T
2289
+ * @param {?} key
2290
+ * @param {?=} defaultValue
2291
+ * @return {?}
2292
+ */
2293
+ Definition.prototype.getData = /**
2294
+ * @template T
2295
+ * @param {?} key
2296
+ * @param {?=} defaultValue
2297
+ * @return {?}
2148
2298
  */
2149
2299
  function (key, defaultValue) {
2150
2300
  return this.data ?
@@ -2157,7 +2307,7 @@
2157
2307
  * @param {?=} defaultValue
2158
2308
  * @return {?}
2159
2309
  */
2160
- Descriptor.prototype.searchData = /**
2310
+ Definition.prototype.searchData = /**
2161
2311
  * @template T
2162
2312
  * @param {?} keys
2163
2313
  * @param {?=} defaultValue
@@ -2178,54 +2328,347 @@
2178
2328
  return defaultValue;
2179
2329
  }
2180
2330
  };
2181
- return Descriptor;
2331
+ return Definition;
2182
2332
  }());
2183
- Place.Descriptor = Descriptor;
2333
+ PlaceComponent.Definition = Definition;
2184
2334
  if (false) {
2185
2335
  /** @type {?} */
2186
- Descriptor.prototype.path;
2336
+ Definition.prototype.path;
2337
+ /** @type {?} */
2338
+ Definition.prototype.authenticate;
2187
2339
  /** @type {?} */
2188
- Descriptor.prototype.authenticate;
2340
+ Definition.prototype.order;
2341
+ /** @type {?} */
2342
+ Definition.prototype.data;
2343
+ /** @type {?} */
2344
+ Definition.prototype.component;
2345
+ }
2346
+ /**
2347
+ * @record
2348
+ */
2349
+ function Options() { }
2350
+ PlaceComponent.Options = Options;
2351
+ if (false) {
2189
2352
  /** @type {?} */
2190
- Descriptor.prototype.order;
2353
+ Options.prototype.path;
2191
2354
  /** @type {?} */
2192
- Descriptor.prototype.data;
2355
+ Options.prototype.order;
2356
+ /** @type {?|undefined} */
2357
+ Options.prototype.data;
2358
+ /** @type {?|undefined} */
2359
+ Options.prototype.authenticate;
2193
2360
  }
2194
2361
  /**
2195
2362
  * @param {?} klass
2196
2363
  * @return {?}
2197
2364
  */
2198
- function getDescriptor(klass) {
2365
+ function getDefinition(klass) {
2199
2366
  /** @type {?} */
2200
- var placeOptions = Reflect.getMetadata('place.options', klass);
2201
- return new Descriptor(klass, placeOptions);
2367
+ var placeOptions = Reflect.getMetadata(DEFINITION_META_DATA_KEY, klass);
2368
+ return new Definition(klass, placeOptions);
2369
+ }
2370
+ PlaceComponent.getDefinition = getDefinition;
2371
+ /**
2372
+ * @param {?} klass
2373
+ * @param {?} options
2374
+ * @return {?}
2375
+ */
2376
+ function injectDefinition(klass, options) {
2377
+ Reflect.defineMetadata(DEFINITION_META_DATA_KEY, options, klass);
2202
2378
  }
2203
- Place.getDescriptor = getDescriptor;
2204
- })(Place || (Place = {}));
2379
+ PlaceComponent.injectDefinition = injectDefinition;
2380
+ })(exports.PlaceComponent || (exports.PlaceComponent = {}));
2205
2381
 
2206
2382
  /**
2207
2383
  * @fileoverview added by tsickle
2208
2384
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2209
2385
  */
2210
- var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
2211
- __extends(TabbedPlaceNavigationComponent, _super);
2212
- function TabbedPlaceNavigationComponent() {
2386
+ var PlaceService = /** @class */ (function (_super) {
2387
+ __extends(PlaceService, _super);
2388
+ function PlaceService(router) {
2213
2389
  var _this = _super.call(this) || this;
2214
- var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
2215
- _this.orderedPlaces = chain(_this.placesModel).map((/**
2216
- * @param {?} c
2217
- * @return {?}
2218
- */
2219
- function (c) { return Place.getDescriptor(c); })).sortBy('order');
2390
+ _this.router = router;
2391
+ _this._activePlaces = new pectin.MutableListModel();
2220
2392
  return _this;
2221
2393
  }
2394
+ Object.defineProperty(PlaceService.prototype, "activePlaces", {
2395
+ get: /**
2396
+ * @return {?}
2397
+ */
2398
+ function () {
2399
+ return this._activePlaces.readonly;
2400
+ },
2401
+ enumerable: true,
2402
+ configurable: true
2403
+ });
2222
2404
  /**
2405
+ * @param {?} place
2223
2406
  * @return {?}
2224
2407
  */
2225
- TabbedPlaceNavigationComponent.prototype.ngOnInit = /**
2408
+ PlaceService.prototype.onActivate = /**
2409
+ * @param {?} place
2226
2410
  * @return {?}
2227
2411
  */
2228
- function () {
2412
+ function (place) {
2413
+ this._activePlaces.push(place);
2414
+ };
2415
+ /**
2416
+ * @param {?} place
2417
+ * @return {?}
2418
+ */
2419
+ PlaceService.prototype.onDeactivate = /**
2420
+ * @param {?} place
2421
+ * @return {?}
2422
+ */
2423
+ function (place) {
2424
+ this._activePlaces.remove(place);
2425
+ };
2426
+ /**
2427
+ * @param {?} params
2428
+ * @return {?}
2429
+ */
2430
+ PlaceService.prototype.notifyRouteParametersChanged = /**
2431
+ * @param {?} params
2432
+ * @return {?}
2433
+ */
2434
+ function (params) {
2435
+ // We update the router state...
2436
+ if (params.updateRoute) {
2437
+ /** @type {?} */
2438
+ var routeId = params.next.getFormattedRouteId();
2439
+ /** @type {?} */
2440
+ var relativePath = !!params.previous.hasRouteId() ? '..' : '.';
2441
+ /** @type {?} */
2442
+ var path = routeId ? [relativePath, routeId, params.next.getFormattedParameters()] : [relativePath, params.next.getFormattedParameters()];
2443
+ this.router.navigate(path, {
2444
+ relativeTo: params.placeComponent.activatedRoute
2445
+ });
2446
+ }
2447
+ };
2448
+ PlaceService.decorators = [
2449
+ { type: core.Injectable, args: [{
2450
+ providedIn: 'root'
2451
+ },] }
2452
+ ];
2453
+ /** @nocollapse */
2454
+ PlaceService.ctorParameters = function () { return [
2455
+ { type: router.Router }
2456
+ ]; };
2457
+ /** @nocollapse */ PlaceService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PlaceService_Factory() { return new PlaceService(core.ɵɵinject(router.Router)); }, token: PlaceService, providedIn: "root" });
2458
+ __decorate([
2459
+ pectin.Trace(),
2460
+ __metadata("design:type", Function),
2461
+ __metadata("design:paramtypes", [exports.PlaceComponent]),
2462
+ __metadata("design:returntype", void 0)
2463
+ ], PlaceService.prototype, "onActivate", null);
2464
+ __decorate([
2465
+ pectin.Trace(),
2466
+ __metadata("design:type", Function),
2467
+ __metadata("design:paramtypes", [exports.PlaceComponent]),
2468
+ __metadata("design:returntype", void 0)
2469
+ ], PlaceService.prototype, "onDeactivate", null);
2470
+ __decorate([
2471
+ pectin.Trace(),
2472
+ __metadata("design:type", Function),
2473
+ __metadata("design:paramtypes", [Object]),
2474
+ __metadata("design:returntype", void 0)
2475
+ ], PlaceService.prototype, "notifyRouteParametersChanged", null);
2476
+ return PlaceService;
2477
+ }(pectin.GarbageCollector));
2478
+ if (false) {
2479
+ /**
2480
+ * @type {?}
2481
+ * @private
2482
+ */
2483
+ PlaceService.prototype._activePlaces;
2484
+ /**
2485
+ * @type {?}
2486
+ * @protected
2487
+ */
2488
+ PlaceService.prototype.router;
2489
+ }
2490
+
2491
+ /**
2492
+ * @fileoverview added by tsickle
2493
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2494
+ */
2495
+ // Freezes the state of the components at the start of the animation.
2496
+ /** @type {?} */
2497
+ var animationStartStyle = animations$1.style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });
2498
+ /** @type {?} */
2499
+ var left = [
2500
+ animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
2501
+ animations$1.group([
2502
+ animations$1.query(':enter', [
2503
+ animations$1.style({ transform: 'translateX(-100%)' }),
2504
+ animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
2505
+ ], {
2506
+ optional: true
2507
+ }),
2508
+ animations$1.query(':leave', [
2509
+ animations$1.style({ transform: 'translateX(0%)' }),
2510
+ animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(100%)' }))
2511
+ ], {
2512
+ optional: true
2513
+ })
2514
+ ])
2515
+ ];
2516
+ /** @type {?} */
2517
+ var right = [
2518
+ animations$1.query(':enter, :leave', animationStartStyle, { optional: true }),
2519
+ animations$1.group([
2520
+ animations$1.query(':enter', [
2521
+ animations$1.style({ transform: 'translateX(100%)' }),
2522
+ animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(0%)' }))
2523
+ ], {
2524
+ optional: true
2525
+ }),
2526
+ animations$1.query(':leave', [animations$1.style({ transform: 'translateX(0%)' }), animations$1.animate('{{duration}} ease-out', animations$1.style({ transform: 'translateX(-100%)' }))], {
2527
+ optional: true
2528
+ })
2529
+ ])
2530
+ ];
2531
+ /** @type {?} */
2532
+ var LEFT_RIGHT_PLACE_ANIMATION = animations$1.trigger('routeAnimations', [
2533
+ animations$1.transition(':increment', right, { params: { duration: '.3s' } }),
2534
+ animations$1.transition(':decrement', left, { params: { duration: '.3s' } })
2535
+ ]);
2536
+
2537
+ /**
2538
+ * @fileoverview added by tsickle
2539
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2540
+ */
2541
+ var PlaceOutletComponent = /** @class */ (function () {
2542
+ function PlaceOutletComponent(placeService) {
2543
+ this.placeService = placeService;
2544
+ this.animate = true;
2545
+ }
2546
+ /**
2547
+ * @return {?}
2548
+ */
2549
+ PlaceOutletComponent.prototype.ngOnInit = /**
2550
+ * @return {?}
2551
+ */
2552
+ function () {
2553
+ };
2554
+ /**
2555
+ * @param {?} $event
2556
+ * @return {?}
2557
+ */
2558
+ PlaceOutletComponent.prototype.onActivate = /**
2559
+ * @param {?} $event
2560
+ * @return {?}
2561
+ */
2562
+ function ($event) {
2563
+ this.currentPlace = $event;
2564
+ this.placeService.onActivate($event);
2565
+ if (!this.animate) {
2566
+ this.notifyPlaceReady();
2567
+ }
2568
+ };
2569
+ /**
2570
+ * @param {?} $event
2571
+ * @return {?}
2572
+ */
2573
+ PlaceOutletComponent.prototype.onDeactivate = /**
2574
+ * @param {?} $event
2575
+ * @return {?}
2576
+ */
2577
+ function ($event) {
2578
+ this.currentPlace = null;
2579
+ this.placeService.onDeactivate($event);
2580
+ };
2581
+ /**
2582
+ * @param {?} outlet
2583
+ * @return {?}
2584
+ */
2585
+ PlaceOutletComponent.prototype.getPlaceOrder = /**
2586
+ * @param {?} outlet
2587
+ * @return {?}
2588
+ */
2589
+ function (outlet) {
2590
+ return this.animate && outlet && outlet.activatedRouteData && outlet.activatedRouteData['placeOrder'];
2591
+ };
2592
+ /**
2593
+ * @return {?}
2594
+ */
2595
+ PlaceOutletComponent.prototype.animationDone = /**
2596
+ * @return {?}
2597
+ */
2598
+ function () {
2599
+ this.notifyPlaceReady();
2600
+ };
2601
+ /**
2602
+ * @private
2603
+ * @return {?}
2604
+ */
2605
+ PlaceOutletComponent.prototype.notifyPlaceReady = /**
2606
+ * @private
2607
+ * @return {?}
2608
+ */
2609
+ function () {
2610
+ if (this.currentPlace) {
2611
+ this.currentPlace.onPlaceReady();
2612
+ }
2613
+ };
2614
+ PlaceOutletComponent.decorators = [
2615
+ { type: core.Component, args: [{
2616
+ selector: 'angular-ui-powerups-place-outlet',
2617
+ template: "<div class=\"router-outlet-container\"\n [@routeAnimations]=\"getPlaceOrder(routerOutlet)\"\n (@routeAnimations.done)=\"animationDone()\"\n>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\">\n </router-outlet>\n</div>\n\n",
2618
+ animations: [LEFT_RIGHT_PLACE_ANIMATION],
2619
+ styles: [":host{display:flex;flex-direction:column;min-height:0}.router-outlet-container{flex:1;display:block;position:relative;min-height:0}router-outlet{display:none}"]
2620
+ }] }
2621
+ ];
2622
+ /** @nocollapse */
2623
+ PlaceOutletComponent.ctorParameters = function () { return [
2624
+ { type: PlaceService }
2625
+ ]; };
2626
+ PlaceOutletComponent.propDecorators = {
2627
+ animate: [{ type: core.Input }],
2628
+ routerOutLet: [{ type: core.ViewChild, args: ['routerOutlet', { static: false },] }]
2629
+ };
2630
+ return PlaceOutletComponent;
2631
+ }());
2632
+ if (false) {
2633
+ /** @type {?} */
2634
+ PlaceOutletComponent.prototype.animate;
2635
+ /** @type {?} */
2636
+ PlaceOutletComponent.prototype.routerOutLet;
2637
+ /**
2638
+ * @type {?}
2639
+ * @private
2640
+ */
2641
+ PlaceOutletComponent.prototype.currentPlace;
2642
+ /**
2643
+ * @type {?}
2644
+ * @private
2645
+ */
2646
+ PlaceOutletComponent.prototype.placeService;
2647
+ }
2648
+
2649
+ /**
2650
+ * @fileoverview added by tsickle
2651
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2652
+ */
2653
+ var TabbedPlaceNavigationComponent = /** @class */ (function (_super) {
2654
+ __extends(TabbedPlaceNavigationComponent, _super);
2655
+ function TabbedPlaceNavigationComponent() {
2656
+ var _this = _super.call(this) || this;
2657
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
2658
+ _this.orderedPlaces = chain(_this.placesModel).map((/**
2659
+ * @param {?} c
2660
+ * @return {?}
2661
+ */
2662
+ function (c) { return exports.PlaceComponent.getDefinition(c); })).sortBy('order');
2663
+ return _this;
2664
+ }
2665
+ /**
2666
+ * @return {?}
2667
+ */
2668
+ TabbedPlaceNavigationComponent.prototype.ngOnInit = /**
2669
+ * @return {?}
2670
+ */
2671
+ function () {
2229
2672
  };
2230
2673
  TabbedPlaceNavigationComponent.decorators = [
2231
2674
  { type: core.Component, args: [{
@@ -2555,543 +2998,175 @@
2555
2998
  // TODO: Make this handle body scroll
2556
2999
  // TODO: Make this handle body scroll
2557
3000
  /**
2558
- * @param {?} point
2559
- * @return {?}
2560
- */
2561
- ResizeAwareComponent.prototype.relativePositionOf =
2562
- // TODO: Make this handle body scroll
2563
- /**
2564
- * @param {?} point
2565
- * @return {?}
2566
- */
2567
- function (point) {
2568
- return this.bounds.relativePositionOf(point);
2569
- };
2570
- Object.defineProperty(ResizeAwareComponent.prototype, "bounds", {
2571
- get: /**
2572
- * @return {?}
2573
- */
2574
- function () {
2575
- return this._boundsModel.value;
2576
- },
2577
- enumerable: true,
2578
- configurable: true
2579
- });
2580
- /**
2581
- * @private
2582
- * @return {?}
2583
- */
2584
- ResizeAwareComponent.prototype.updateBounds = /**
2585
- * @private
2586
- * @return {?}
2587
- */
2588
- function () {
2589
- this._boundsModel.value = exports.Bounds.ofElement(this.nativeElement);
2590
- };
2591
- return ResizeAwareComponent;
2592
- }(DisposableComponent));
2593
- if (false) {
2594
- /**
2595
- * @type {?}
2596
- * @private
2597
- */
2598
- ResizeAwareComponent.prototype._boundsModel;
2599
- /**
2600
- * @type {?}
2601
- * @protected
2602
- */
2603
- ResizeAwareComponent.prototype.elementRef;
2604
- /**
2605
- * @type {?}
2606
- * @protected
2607
- */
2608
- ResizeAwareComponent.prototype.ngZone;
2609
- }
2610
-
2611
- /**
2612
- * @fileoverview added by tsickle
2613
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2614
- */
2615
-
2616
- /**
2617
- * @fileoverview added by tsickle
2618
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2619
- */
2620
-
2621
- /**
2622
- * @fileoverview added by tsickle
2623
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2624
- */
2625
- /**
2626
- * @record
2627
- */
2628
- function Alert() { }
2629
- if (false) {
2630
- /**
2631
- * @return {?}
2632
- */
2633
- Alert.prototype.title = function () { };
2634
- /**
2635
- * @return {?}
2636
- */
2637
- Alert.prototype.content = function () { };
2638
- /**
2639
- * @return {?}
2640
- */
2641
- Alert.prototype.ok = function () { };
2642
- }
2643
-
2644
- /**
2645
- * @fileoverview added by tsickle
2646
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2647
- */
2648
- /**
2649
- * @record
2650
- */
2651
- function Confirm() { }
2652
- if (false) {
2653
- /** @type {?|undefined} */
2654
- Confirm.prototype.destructive;
2655
- /**
2656
- * @return {?}
2657
- */
2658
- Confirm.prototype.cancel = function () { };
2659
- }
2660
-
2661
- /**
2662
- * @fileoverview added by tsickle
2663
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2664
- */
2665
- /**
2666
- * @record
2667
- * @template R, E
2668
- */
2669
- function Result() { }
2670
- (function (Result) {
2671
- /**
2672
- * @record
2673
- * @template R, E
2674
- */
2675
- function Callback() { }
2676
- Result.Callback = Callback;
2677
- if (false) {
2678
- /** @type {?} */
2679
- Callback.prototype.then;
2680
- /** @type {?} */
2681
- Callback.prototype.catch;
2682
- }
2683
- })(Result || (Result = {}));
2684
-
2685
- /**
2686
- * @fileoverview added by tsickle
2687
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2688
- */
2689
- /**
2690
- * @record
2691
- * @template D, R, E
2692
- */
2693
- function ActivityOutletContext() { }
2694
- if (false) {
2695
- /** @type {?} */
2696
- ActivityOutletContext.prototype.interactionContext;
2697
- /** @type {?} */
2698
- ActivityOutletContext.prototype.activityClass;
2699
- /** @type {?} */
2700
- ActivityOutletContext.prototype.activityData;
2701
- /** @type {?} */
2702
- ActivityOutletContext.prototype.onDone;
2703
- /** @type {?} */
2704
- ActivityOutletContext.prototype.onCancel;
2705
- }
2706
-
2707
- /**
2708
- * @fileoverview added by tsickle
2709
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2710
- */
2711
-
2712
- /**
2713
- * @fileoverview added by tsickle
2714
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2715
- */
2716
- /**
2717
- * @record
2718
- * @template T
2719
- */
2720
- function ResolvedParameter() { }
2721
- if (false) {
2722
- /** @type {?} */
2723
- ResolvedParameter.prototype.parameterDef;
2724
- /** @type {?} */
2725
- ResolvedParameter.prototype.resolvedValue;
2726
- }
2727
- var ResolvedParameters = /** @class */ (function () {
2728
- function ResolvedParameters(parameters) {
2729
- this.parameters = parameters;
2730
- }
2731
- /**
2732
- * @template T
2733
- * @param {?} parameter
2734
- * @return {?}
2735
- */
2736
- ResolvedParameters.prototype.get = /**
2737
- * @template T
2738
- * @param {?} parameter
2739
- * @return {?}
2740
- */
2741
- function (parameter) {
2742
- /** @type {?} */
2743
- var resolved = this.parameters.find((/**
2744
- * @param {?} p
2745
- * @return {?}
2746
- */
2747
- function (p) { return p.parameterDef === parameter; }));
2748
- return resolved ? resolved.resolvedValue : null;
2749
- };
2750
- /**
2751
- * @template T
2752
- * @param {?} parameter
2753
- * @param {?} value
2754
- * @return {?}
2755
- */
2756
- ResolvedParameters.prototype.replace = /**
2757
- * @template T
2758
- * @param {?} parameter
2759
- * @param {?} value
2760
- * @return {?}
2761
- */
2762
- function (parameter, value) {
2763
- return new ResolvedParameters(this.parameters.filter((/**
2764
- * @param {?} p
2765
- * @return {?}
2766
- */
2767
- function (p) { return p.parameterDef !== parameter; })).concat({
2768
- parameterDef: parameter,
2769
- resolvedValue: value
2770
- }));
2771
- };
2772
- /**
2773
- * @protected
2774
- * @return {?}
2775
- */
2776
- ResolvedParameters.prototype.getFormattedRouteId = /**
2777
- * @protected
2778
- * @return {?}
2779
- */
2780
- function () {
2781
- /** @type {?} */
2782
- var routeIdParam = this.getRouteIdParam();
2783
- return routeIdParam ? routeIdParam.parameterDef.type.format(routeIdParam.resolvedValue) : null;
2784
- };
2785
- /**
2786
- * @private
2787
- * @return {?}
2788
- */
2789
- ResolvedParameters.prototype.getRouteIdParam = /**
2790
- * @private
2791
- * @return {?}
2792
- */
2793
- function () {
2794
- return this.parameters.find((/**
2795
- * @param {?} p
2796
- * @return {?}
2797
- */
2798
- function (p) { return p.parameterDef.isRouteId; }));
2799
- };
2800
- /**
2801
- * @protected
2802
- * @return {?}
2803
- */
2804
- ResolvedParameters.prototype.getFormattedParameters = /**
2805
- * @protected
2806
- * @return {?}
2807
- */
2808
- function () {
2809
- /** @type {?} */
2810
- var params = {};
2811
- /** @type {?} */
2812
- var routeIdParam = this.parameters.filter((/**
2813
- * @param {?} p
2814
- * @return {?}
2815
- */
2816
- function (p) { return !p.parameterDef.isRouteId; })).forEach((/**
2817
- * @param {?} p
2818
- * @return {?}
2819
- */
2820
- function (p) {
2821
- params[p.parameterDef.name] = p.parameterDef.type.format(p.resolvedValue);
2822
- }));
2823
- return params;
2824
- };
2825
- /**
2826
- * @return {?}
2827
- */
2828
- ResolvedParameters.prototype.hasRouteId = /**
2829
- * @return {?}
2830
- */
2831
- function () {
2832
- return !!this.getRouteIdParam();
2833
- };
2834
- /**
2835
- * @param {?} previous
2836
- * @param {?} router
2837
- * @param {?} activatedRoute
2838
- * @return {?}
2839
- */
2840
- ResolvedParameters.prototype.redirect = /**
2841
- * @param {?} previous
2842
- * @param {?} router
2843
- * @param {?} activatedRoute
2844
- * @return {?}
2845
- */
2846
- function (previous, router, activatedRoute) {
2847
- /** @type {?} */
2848
- var routeId = this.getFormattedRouteId();
2849
- /** @type {?} */
2850
- var relativePath = !!previous.hasRouteId() ? '..' : '.';
2851
- /** @type {?} */
2852
- var path = routeId ? [relativePath, routeId, this.getFormattedParameters()] : [relativePath, this.getFormattedParameters()];
2853
- router.navigate(path, {
2854
- relativeTo: activatedRoute
2855
- });
2856
- };
2857
- __decorate([
2858
- pectin.Trace(),
2859
- __metadata("design:type", Function),
2860
- __metadata("design:paramtypes", []),
2861
- __metadata("design:returntype", void 0)
2862
- ], ResolvedParameters.prototype, "getFormattedRouteId", null);
2863
- __decorate([
2864
- pectin.Trace(),
2865
- __metadata("design:type", Function),
2866
- __metadata("design:paramtypes", []),
2867
- __metadata("design:returntype", void 0)
2868
- ], ResolvedParameters.prototype, "getFormattedParameters", null);
2869
- __decorate([
2870
- pectin.Trace(),
2871
- __metadata("design:type", Function),
2872
- __metadata("design:paramtypes", [ResolvedParameters, router.Router, router.ActivatedRoute]),
2873
- __metadata("design:returntype", void 0)
2874
- ], ResolvedParameters.prototype, "redirect", null);
2875
- return ResolvedParameters;
2876
- }());
2877
- if (false) {
2878
- /** @type {?} */
2879
- ResolvedParameters.prototype.parameters;
2880
- }
2881
- exports.RouteParameterBindings = /** @class */ (function (_super) {
2882
- __extends(RouteParameterBindings, _super);
2883
- function RouteParameterBindings(component, router, activatedRoute) {
2884
- var _this = _super.call(this) || this;
2885
- _this.component = component;
2886
- _this.router = router;
2887
- _this.activatedRoute = activatedRoute;
2888
- _this._incomingRouteChange = new pectin.MutableValueModel(false);
2889
- _this.resolvedParameters = new pectin.MutableValueModel();
2890
- var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe;
2891
- _this.txo = new pectin.TransactionObserver(); //.onEvent(e => console.log(e.toString()));
2892
- //.onEvent(e => console.log(e.toString()));
2893
- /** @type {?} */
2894
- var routeParameterDefs = typescriptUtilities.Klass.get(component).getMetadataList(RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY);
2895
- routeParameterDefs.forEach((/**
2896
- * @param {?} parameter
2897
- * @return {?}
2898
- */
2899
- function (parameter) { return _this.installBinding(parameter); }));
2900
- /** @type {?} */
2901
- var incomingResolvedRouteParameters = observe.valuesFrom(activatedRoute.paramMap)
2902
- .last()
2903
- .map((/**
2904
- * @param {?} params
2905
- * @return {?}
2906
- */
2907
- function (params) {
2908
- /** @type {?} */
2909
- var result = [];
2910
- routeParameterDefs.forEach((/**
2911
- * @param {?} parameterDef
2912
- * @return {?}
2913
- */
2914
- function (parameterDef) {
2915
- /** @type {?} */
2916
- var resolvedValue;
2917
- if (parameterDef.isArray) {
2918
- resolvedValue = params.getAll(parameterDef.name).map((/**
2919
- * @param {?} v
2920
- * @return {?}
2921
- */
2922
- function (v) { return parameterDef.type.parse(v); }));
2923
- }
2924
- else {
2925
- resolvedValue = parameterDef.type.parse(params.get(parameterDef.name));
2926
- }
2927
- result.push({ parameterDef: parameterDef, resolvedValue: resolvedValue });
2928
- }));
2929
- return new ResolvedParameters(result);
2930
- }));
2931
- incomingResolvedRouteParameters.subscribe((/**
2932
- * @param {?} resolvedParameters
2933
- * @return {?}
2934
- */
2935
- function (resolvedParameters) {
2936
- _this._incomingRouteChange.value = true;
2937
- _this.resolvedParameters.value = resolvedParameters;
2938
- _this._incomingRouteChange.value = false;
2939
- }));
2940
- when.valueOf(_this.resolvedParameters).changes((/**
2941
- * @param {?} params
2942
- * @param {?} previous
2943
- * @return {?}
2944
- */
2945
- function (params, previous) {
2946
- params.redirect(previous, router, activatedRoute);
2947
- }), { unless: _this.incomingRouteChange });
2948
- _this.txo.observe('incomingResolvedRouteParameters', incomingResolvedRouteParameters);
2949
- _this.txo.observe('this.routeIsChanging', _this.incomingRouteChange);
2950
- return _this;
2951
- }
2952
- Object.defineProperty(RouteParameterBindings.prototype, "incomingRouteChange", {
2953
- get: /**
2954
- * @return {?}
2955
- */
2956
- function () {
2957
- return this._incomingRouteChange.readonly;
2958
- },
2959
- enumerable: true,
2960
- configurable: true
2961
- });
2962
- /**
2963
- * @protected
2964
- * @template T
2965
- * @param {?} parameter
2966
- * @return {?}
2967
- */
2968
- RouteParameterBindings.prototype.installBinding = /**
2969
- * @protected
2970
- * @template T
2971
- * @param {?} parameter
2972
- * @return {?}
2973
- */
2974
- function (parameter) {
2975
- /** @type {?} */
2976
- var model = this.getModelFor(parameter);
2977
- // this.txo.observe(parameter.propertyName, model);
2978
- this.registerDisposable(new pectin.Binding(this.resolvedParameters, model, {
2979
- toRight: /**
2980
- * @param {?} parameters
2981
- * @return {?}
2982
- */
2983
- function (parameters) {
2984
- return parameters.get(parameter);
2985
- },
2986
- toLeft: /**
2987
- * @param {?} value
2988
- * @param {?=} currentParameters
2989
- * @return {?}
2990
- */
2991
- function (value, currentParameters) {
2992
- return currentParameters.replace(parameter, value);
2993
- }
2994
- }));
2995
- };
2996
- /**
2997
- * @private
2998
- * @template T
2999
- * @param {?} parameter
3001
+ * @param {?} point
3000
3002
  * @return {?}
3001
3003
  */
3002
- RouteParameterBindings.prototype.getModelFor = /**
3003
- * @private
3004
- * @template T
3005
- * @param {?} parameter
3004
+ ResizeAwareComponent.prototype.relativePositionOf =
3005
+ // TODO: Make this handle body scroll
3006
+ /**
3007
+ * @param {?} point
3006
3008
  * @return {?}
3007
3009
  */
3008
- function (parameter) {
3009
- return this.component[parameter.propertyName];
3010
+ function (point) {
3011
+ return this.bounds.relativePositionOf(point);
3010
3012
  };
3011
- return RouteParameterBindings;
3012
- }(pectin.GarbageCollector));
3013
- if (false) {
3014
- /** @type {?} */
3015
- exports.RouteParameterBindings.prototype._incomingRouteChange;
3013
+ Object.defineProperty(ResizeAwareComponent.prototype, "bounds", {
3014
+ get: /**
3015
+ * @return {?}
3016
+ */
3017
+ function () {
3018
+ return this._boundsModel.value;
3019
+ },
3020
+ enumerable: true,
3021
+ configurable: true
3022
+ });
3016
3023
  /**
3017
- * @type {?}
3018
3024
  * @private
3025
+ * @return {?}
3019
3026
  */
3020
- exports.RouteParameterBindings.prototype.txo;
3021
- /**
3022
- * @type {?}
3027
+ ResizeAwareComponent.prototype.updateBounds = /**
3023
3028
  * @private
3029
+ * @return {?}
3024
3030
  */
3025
- exports.RouteParameterBindings.prototype.resolvedParameters;
3031
+ function () {
3032
+ this._boundsModel.value = exports.Bounds.ofElement(this.nativeElement);
3033
+ };
3034
+ return ResizeAwareComponent;
3035
+ }(DisposableComponent));
3036
+ if (false) {
3026
3037
  /**
3027
3038
  * @type {?}
3028
3039
  * @private
3029
3040
  */
3030
- exports.RouteParameterBindings.prototype.component;
3041
+ ResizeAwareComponent.prototype._boundsModel;
3031
3042
  /**
3032
3043
  * @type {?}
3033
- * @private
3044
+ * @protected
3034
3045
  */
3035
- exports.RouteParameterBindings.prototype.router;
3046
+ ResizeAwareComponent.prototype.elementRef;
3036
3047
  /**
3037
3048
  * @type {?}
3038
- * @private
3049
+ * @protected
3039
3050
  */
3040
- exports.RouteParameterBindings.prototype.activatedRoute;
3051
+ ResizeAwareComponent.prototype.ngZone;
3041
3052
  }
3042
- (function (RouteParameterBindings) {
3043
- RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');
3044
- })(exports.RouteParameterBindings || (exports.RouteParameterBindings = {}));
3045
3053
 
3046
3054
  /**
3047
3055
  * @fileoverview added by tsickle
3048
3056
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3049
3057
  */
3050
- var AbstractPlaceComponent = /** @class */ (function (_super) {
3051
- __extends(AbstractPlaceComponent, _super);
3052
- function AbstractPlaceComponent(activatedRoute, router) {
3053
- var _this = _super.call(this) || this;
3054
- _this.activatedRoute = activatedRoute;
3055
- _this.routeBindingMediator = _this.registerDisposable(new exports.RouteParameterBindings(_this, router, activatedRoute));
3056
- return _this;
3057
- }
3058
- Object.defineProperty(AbstractPlaceComponent.prototype, "placeConfig", {
3059
- get: /**
3060
- * @return {?}
3061
- */
3062
- function () {
3063
- return Place.getDescriptor((/** @type {?} */ ((/** @type {?} */ (this.constructor)))));
3064
- },
3065
- enumerable: true,
3066
- configurable: true
3067
- });
3058
+
3059
+ /**
3060
+ * @fileoverview added by tsickle
3061
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3062
+ */
3063
+
3064
+ /**
3065
+ * @fileoverview added by tsickle
3066
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3067
+ */
3068
+ /**
3069
+ * @record
3070
+ */
3071
+ function Alert() { }
3072
+ if (false) {
3068
3073
  /**
3069
3074
  * @return {?}
3070
3075
  */
3071
- AbstractPlaceComponent.prototype.canDeactivate = /**
3076
+ Alert.prototype.title = function () { };
3077
+ /**
3072
3078
  * @return {?}
3073
3079
  */
3074
- function () {
3075
- return true;
3076
- };
3077
- __decorate([
3078
- fastMemoizeDecorator.Memoize(),
3079
- __metadata("design:type", Place.Descriptor),
3080
- __metadata("design:paramtypes", [])
3081
- ], AbstractPlaceComponent.prototype, "placeConfig", null);
3082
- return AbstractPlaceComponent;
3083
- }(DisposableComponent));
3080
+ Alert.prototype.content = function () { };
3081
+ /**
3082
+ * @return {?}
3083
+ */
3084
+ Alert.prototype.ok = function () { };
3085
+ }
3086
+
3087
+ /**
3088
+ * @fileoverview added by tsickle
3089
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3090
+ */
3091
+ /**
3092
+ * @record
3093
+ */
3094
+ function Confirm() { }
3084
3095
  if (false) {
3096
+ /** @type {?|undefined} */
3097
+ Confirm.prototype.destructive;
3085
3098
  /**
3086
- * @type {?}
3087
- * @private
3099
+ * @return {?}
3088
3100
  */
3089
- AbstractPlaceComponent.prototype.routeBindingMediator;
3101
+ Confirm.prototype.cancel = function () { };
3102
+ }
3103
+
3104
+ /**
3105
+ * @fileoverview added by tsickle
3106
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3107
+ */
3108
+ /**
3109
+ * @record
3110
+ * @template R, E
3111
+ */
3112
+ function Result() { }
3113
+ (function (Result) {
3090
3114
  /**
3091
- * @type {?}
3092
- * @protected
3115
+ * @record
3116
+ * @template R, E
3117
+ */
3118
+ function Callback() { }
3119
+ Result.Callback = Callback;
3120
+ if (false) {
3121
+ /** @type {?} */
3122
+ Callback.prototype.then;
3123
+ /** @type {?} */
3124
+ Callback.prototype.catch;
3125
+ }
3126
+ })(Result || (Result = {}));
3127
+
3128
+ /**
3129
+ * @fileoverview added by tsickle
3130
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3131
+ */
3132
+ /**
3133
+ * @record
3134
+ * @template D, R, E
3135
+ */
3136
+ function ActivityOutletContext() { }
3137
+ if (false) {
3138
+ /** @type {?} */
3139
+ ActivityOutletContext.prototype.interactionContext;
3140
+ /** @type {?} */
3141
+ ActivityOutletContext.prototype.activityClass;
3142
+ /** @type {?} */
3143
+ ActivityOutletContext.prototype.activityData;
3144
+ /** @type {?} */
3145
+ ActivityOutletContext.prototype.onDone;
3146
+ /** @type {?} */
3147
+ ActivityOutletContext.prototype.onCancel;
3148
+ }
3149
+
3150
+ /**
3151
+ * @fileoverview added by tsickle
3152
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3153
+ */
3154
+
3155
+ /**
3156
+ * @fileoverview added by tsickle
3157
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3158
+ */
3159
+ /**
3160
+ * @record
3161
+ */
3162
+ function IPlaceComponent() { }
3163
+ if (false) {
3164
+ /** @type {?} */
3165
+ IPlaceComponent.prototype.activatedRoute;
3166
+ /**
3167
+ * @return {?}
3093
3168
  */
3094
- AbstractPlaceComponent.prototype.activatedRoute;
3169
+ IPlaceComponent.prototype.onPlaceReady = function () { };
3095
3170
  }
3096
3171
 
3097
3172
  /**
@@ -3101,12 +3176,34 @@
3101
3176
  /**
3102
3177
  * @record
3103
3178
  */
3104
- function PlaceComponent() { }
3179
+ function IPlaceService() { }
3105
3180
  if (false) {
3106
3181
  /**
3182
+ * @param {?} params
3183
+ * @return {?}
3184
+ */
3185
+ IPlaceService.prototype.notifyRouteParametersChanged = function (params) { };
3186
+ }
3187
+
3188
+ /**
3189
+ * @fileoverview added by tsickle
3190
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3191
+ */
3192
+ /**
3193
+ * @param {?} options
3194
+ * @return {?}
3195
+ */
3196
+ function Place(options) {
3197
+ return (/**
3198
+ * @param {?} target
3107
3199
  * @return {?}
3108
3200
  */
3109
- PlaceComponent.prototype.canDeactivate = function () { };
3201
+ function (target) {
3202
+ if (!pectin.lang.constructorChain((/** @type {?} */ (target))).includes(exports.PlaceComponent)) {
3203
+ pectin.lang.illegalState(target + " must extend PlaceComponent to use the @Place decorator");
3204
+ }
3205
+ exports.PlaceComponent.injectDefinition((/** @type {?} */ (target)), options);
3206
+ });
3110
3207
  }
3111
3208
 
3112
3209
  /**
@@ -3677,26 +3774,6 @@
3677
3774
  pectin.UseDelegate()(prototype, propertyKey);
3678
3775
  });
3679
3776
  }
3680
- /**
3681
- * @deprecated use RouteParameter instead.
3682
- * @template T
3683
- * @param {?} type
3684
- * @param {?=} options
3685
- * @return {?}
3686
- */
3687
- function QueryParameter(type, options) {
3688
- return (/**
3689
- * @param {?} prototype
3690
- * @param {?} propertyKey
3691
- * @return {?}
3692
- */
3693
- function (prototype, propertyKey) {
3694
- /** @type {?} */
3695
- var param = createDefinition(propertyKey, type, options, false);
3696
- typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(exports.RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);
3697
- pectin.UseDelegate()(prototype, propertyKey);
3698
- });
3699
- }
3700
3777
  /**
3701
3778
  * @template T
3702
3779
  * @param {?} type
@@ -3717,27 +3794,6 @@
3717
3794
  pectin.UseDelegate()(prototype, propertyKey);
3718
3795
  });
3719
3796
  }
3720
- /**
3721
- * @deprecated use RouteParameterList instead
3722
- * @template E
3723
- * @param {?} elementType
3724
- * @param {?=} options
3725
- * @return {?}
3726
- */
3727
- function QueryParameterList(elementType, options) {
3728
- // assert.isTruthy(type.isValid());
3729
- return (/**
3730
- * @param {?} prototype
3731
- * @param {?} propertyKey
3732
- * @return {?}
3733
- */
3734
- function (prototype, propertyKey) {
3735
- /** @type {?} */
3736
- var param = createArrayDefinition(propertyKey, elementType, options);
3737
- typescriptUtilities.Klass.get(prototype).addToOwnMetadataList(exports.RouteParameterBindings.ROUTE_PARAMETER_LIST_KEY, param);
3738
- pectin.UseDelegate()(prototype, propertyKey);
3739
- });
3740
- }
3741
3797
  /**
3742
3798
  * @template E
3743
3799
  * @param {?} elementType
@@ -3940,10 +3996,35 @@
3940
3996
  ParameterType.BOOLEAN = new BooleanType();
3941
3997
  })(exports.ParameterType || (exports.ParameterType = {}));
3942
3998
 
3999
+ /**
4000
+ * @fileoverview added by tsickle
4001
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4002
+ */
4003
+ /**
4004
+ * @record
4005
+ * @template T
4006
+ */
4007
+ function ResolvedParameter() { }
4008
+ if (false) {
4009
+ /** @type {?} */
4010
+ ResolvedParameter.prototype.parameterDef;
4011
+ /** @type {?} */
4012
+ ResolvedParameter.prototype.resolvedValue;
4013
+ }
4014
+
4015
+ /**
4016
+ * @fileoverview added by tsickle
4017
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4018
+ */
4019
+ var VisitSnapshot = /** @class */ (function () {
4020
+ function VisitSnapshot() {
4021
+ }
4022
+ return VisitSnapshot;
4023
+ }());
4024
+
3943
4025
  exports.ACTIVITY_DATA = ACTIVITY_DATA;
3944
4026
  exports.AbstractActivity = AbstractActivity;
3945
4027
  exports.AbstractInputComponent = AbstractInputComponent;
3946
- exports.AbstractPlaceComponent = AbstractPlaceComponent;
3947
4028
  exports.ActivityContainerComponent = exports.ɵq;
3948
4029
  exports.ActivityOutletComponent = exports.ɵx;
3949
4030
  exports.AlertDialogComponent = AlertDialogComponent;
@@ -3951,6 +4032,7 @@
3951
4032
  exports.BusyOverlayComponent = BusyOverlayComponent;
3952
4033
  exports.CommandDirective = CommandDirective;
3953
4034
  exports.ConfirmationDialogComponent = ConfirmationDialogComponent;
4035
+ exports.DEFINITION_META_DATA_KEY = DEFINITION_META_DATA_KEY;
3954
4036
  exports.DialogInteractionService = DialogInteractionService;
3955
4037
  exports.Dimension = Dimension;
3956
4038
  exports.DisposableComponent = DisposableComponent;
@@ -3969,9 +4051,8 @@
3969
4051
  exports.PlaceRouteGuard = PlaceRouteGuard;
3970
4052
  exports.PlaceService = PlaceService;
3971
4053
  exports.Point = Point;
3972
- exports.QueryParameter = QueryParameter;
3973
- exports.QueryParameterList = QueryParameterList;
3974
4054
  exports.ResizeAwareComponent = ResizeAwareComponent;
4055
+ exports.ResolvedRouteParameterSnapshot = ResolvedRouteParameterSnapshot;
3975
4056
  exports.RouteId = RouteId;
3976
4057
  exports.RouteParameter = RouteParameter;
3977
4058
  exports.RouteParameterList = RouteParameterList;
@@ -3979,6 +4060,7 @@
3979
4060
  exports.SelectInputComponent = SelectInputComponent;
3980
4061
  exports.StringInputComponent = StringInputComponent;
3981
4062
  exports.TabbedPlaceNavigationComponent = TabbedPlaceNavigationComponent;
4063
+ exports.VisitSnapshot = VisitSnapshot;
3982
4064
  exports.slideDownAndUpAnimation = slideDownAndUpAnimation;
3983
4065
  exports.ɵa = CommandDirective;
3984
4066
  exports.ɵb = FocusBindingDirective;