@ionic/angular 7.3.4-dev.11694532574.1e397a21 → 7.3.4-dev.11694542086.1f624b36

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 (192) hide show
  1. package/README.md +0 -20
  2. package/app-initialize.d.ts +1 -1
  3. package/directives/control-value-accessors/boolean-value-accessor.d.ts +1 -1
  4. package/directives/control-value-accessors/numeric-value-accessor.d.ts +1 -1
  5. package/directives/control-value-accessors/radio-value-accessor.d.ts +1 -1
  6. package/directives/control-value-accessors/select-value-accessor.d.ts +1 -1
  7. package/directives/control-value-accessors/text-value-accessor.d.ts +1 -1
  8. package/{common/directives → directives}/control-value-accessors/value-accessor.d.ts +2 -2
  9. package/directives/navigation/ion-back-button.d.ts +16 -6
  10. package/directives/navigation/ion-router-outlet.d.ts +122 -4
  11. package/directives/navigation/ion-tabs.d.ts +64 -4
  12. package/directives/navigation/nav-delegate.d.ts +9 -0
  13. package/directives/navigation/router-link-delegate.d.ts +41 -7
  14. package/{common/directives → directives}/navigation/stack-utils.d.ts +1 -1
  15. package/directives/overlays/modal.d.ts +47 -3
  16. package/directives/overlays/popover.d.ts +43 -3
  17. package/directives/proxies-list.d.ts +1 -1
  18. package/directives/proxies.d.ts +26 -0
  19. package/esm2020/app-initialize.mjs +2 -2
  20. package/esm2020/directives/control-value-accessors/boolean-value-accessor.mjs +4 -4
  21. package/esm2020/directives/control-value-accessors/numeric-value-accessor.mjs +2 -2
  22. package/esm2020/directives/control-value-accessors/radio-value-accessor.mjs +3 -6
  23. package/esm2020/directives/control-value-accessors/select-value-accessor.mjs +2 -2
  24. package/esm2020/directives/control-value-accessors/text-value-accessor.mjs +2 -2
  25. package/esm2020/directives/control-value-accessors/value-accessor.mjs +141 -0
  26. package/esm2020/directives/navigation/ion-back-button.mjs +36 -15
  27. package/esm2020/directives/navigation/ion-router-outlet.mjs +435 -6
  28. package/esm2020/directives/navigation/ion-tabs.mjs +166 -9
  29. package/esm2020/directives/navigation/nav-delegate.mjs +42 -0
  30. package/esm2020/directives/navigation/nav-params.mjs +45 -0
  31. package/esm2020/directives/navigation/router-link-delegate.mjs +92 -11
  32. package/esm2020/directives/navigation/stack-controller.mjs +275 -0
  33. package/esm2020/directives/navigation/stack-utils.mjs +73 -0
  34. package/esm2020/directives/overlays/modal.mjs +88 -8
  35. package/esm2020/directives/overlays/popover.mjs +87 -8
  36. package/esm2020/directives/proxies-list.mjs +3 -1
  37. package/esm2020/directives/proxies.mjs +53 -1
  38. package/esm2020/index.mjs +21 -4
  39. package/esm2020/ionic-core.mjs +6 -0
  40. package/esm2020/ionic-module.mjs +32 -14
  41. package/esm2020/providers/action-sheet-controller.mjs +18 -0
  42. package/esm2020/providers/alert-controller.mjs +18 -0
  43. package/esm2020/providers/angular-delegate.mjs +152 -0
  44. package/esm2020/providers/animation-controller.mjs +37 -0
  45. package/esm2020/providers/config.mjs +44 -0
  46. package/esm2020/providers/dom-controller.mjs +44 -0
  47. package/esm2020/providers/gesture-controller.mjs +31 -0
  48. package/esm2020/providers/loading-controller.mjs +18 -0
  49. package/esm2020/providers/menu-controller.mjs +100 -0
  50. package/esm2020/providers/modal-controller.mjs +25 -0
  51. package/esm2020/providers/nav-controller.mjs +221 -0
  52. package/esm2020/providers/picker-controller.mjs +18 -0
  53. package/esm2020/providers/platform.mjs +246 -0
  54. package/esm2020/providers/popover-controller.mjs +25 -0
  55. package/esm2020/providers/toast-controller.mjs +18 -0
  56. package/esm2020/types/interfaces.mjs +2 -0
  57. package/esm2020/util/ionic-router-reuse-strategy.mjs +55 -0
  58. package/esm2020/util/overlay.mjs +25 -0
  59. package/esm2020/util/util.mjs +10 -0
  60. package/fesm2015/ionic-angular.mjs +2645 -151
  61. package/fesm2015/ionic-angular.mjs.map +1 -1
  62. package/fesm2020/ionic-angular.mjs +2637 -152
  63. package/fesm2020/ionic-angular.mjs.map +1 -1
  64. package/index.d.ts +19 -3
  65. package/ionic-core.d.ts +2 -0
  66. package/ionic-module.d.ts +2 -2
  67. package/package.json +2 -18
  68. package/{common/providers → providers}/action-sheet-controller.d.ts +2 -2
  69. package/{common/providers → providers}/alert-controller.d.ts +2 -2
  70. package/{common/providers → providers}/angular-delegate.d.ts +1 -1
  71. package/{common/providers → providers}/animation-controller.d.ts +1 -1
  72. package/{common/providers → providers}/config.d.ts +1 -1
  73. package/{common/providers → providers}/gesture-controller.d.ts +1 -1
  74. package/{common/providers → providers}/loading-controller.d.ts +2 -2
  75. package/{common/providers → providers}/modal-controller.d.ts +2 -2
  76. package/{common/providers → providers}/nav-controller.d.ts +2 -2
  77. package/{common/providers → providers}/picker-controller.d.ts +2 -2
  78. package/{common/providers → providers}/platform.d.ts +1 -1
  79. package/{common/providers → providers}/popover-controller.d.ts +2 -2
  80. package/{common/providers → providers}/toast-controller.d.ts +2 -2
  81. package/test/README.md +0 -8
  82. package/{common/types → types}/interfaces.d.ts +4 -0
  83. package/common/directives/control-value-accessors/index.d.ts +0 -1
  84. package/common/directives/navigation/back-button.d.ts +0 -26
  85. package/common/directives/navigation/nav.d.ts +0 -13
  86. package/common/directives/navigation/router-link-delegate.d.ts +0 -50
  87. package/common/directives/navigation/router-outlet.d.ts +0 -103
  88. package/common/directives/navigation/tabs.d.ts +0 -74
  89. package/common/index.d.ts +0 -28
  90. package/common/overlays/modal.d.ts +0 -50
  91. package/common/overlays/popover.d.ts +0 -46
  92. package/common/utils/proxy.d.ts +0 -8
  93. package/directives/navigation/ion-nav.d.ts +0 -8
  94. package/esm2020/common/directives/control-value-accessors/index.mjs +0 -2
  95. package/esm2020/common/directives/control-value-accessors/value-accessor.mjs +0 -141
  96. package/esm2020/common/directives/navigation/back-button.mjs +0 -59
  97. package/esm2020/common/directives/navigation/nav-params.mjs +0 -45
  98. package/esm2020/common/directives/navigation/nav.mjs +0 -47
  99. package/esm2020/common/directives/navigation/router-link-delegate.mjs +0 -111
  100. package/esm2020/common/directives/navigation/router-outlet.mjs +0 -461
  101. package/esm2020/common/directives/navigation/stack-controller.mjs +0 -275
  102. package/esm2020/common/directives/navigation/stack-utils.mjs +0 -73
  103. package/esm2020/common/directives/navigation/tabs.mjs +0 -172
  104. package/esm2020/common/index.mjs +0 -28
  105. package/esm2020/common/ionic-angular-common.mjs +0 -5
  106. package/esm2020/common/overlays/modal.mjs +0 -87
  107. package/esm2020/common/overlays/popover.mjs +0 -79
  108. package/esm2020/common/providers/action-sheet-controller.mjs +0 -18
  109. package/esm2020/common/providers/alert-controller.mjs +0 -18
  110. package/esm2020/common/providers/angular-delegate.mjs +0 -152
  111. package/esm2020/common/providers/animation-controller.mjs +0 -37
  112. package/esm2020/common/providers/config.mjs +0 -44
  113. package/esm2020/common/providers/dom-controller.mjs +0 -44
  114. package/esm2020/common/providers/gesture-controller.mjs +0 -31
  115. package/esm2020/common/providers/loading-controller.mjs +0 -18
  116. package/esm2020/common/providers/menu-controller.mjs +0 -100
  117. package/esm2020/common/providers/modal-controller.mjs +0 -25
  118. package/esm2020/common/providers/nav-controller.mjs +0 -221
  119. package/esm2020/common/providers/picker-controller.mjs +0 -18
  120. package/esm2020/common/providers/platform.mjs +0 -246
  121. package/esm2020/common/providers/popover-controller.mjs +0 -25
  122. package/esm2020/common/providers/toast-controller.mjs +0 -18
  123. package/esm2020/common/types/interfaces.mjs +0 -2
  124. package/esm2020/common/utils/overlay.mjs +0 -25
  125. package/esm2020/common/utils/proxy.mjs +0 -47
  126. package/esm2020/common/utils/routing.mjs +0 -55
  127. package/esm2020/common/utils/util.mjs +0 -10
  128. package/esm2020/directives/navigation/ion-nav.mjs +0 -21
  129. package/esm2020/standalone/directives/angular-component-lib/utils.mjs +0 -51
  130. package/esm2020/standalone/directives/checkbox.mjs +0 -73
  131. package/esm2020/standalone/directives/datetime.mjs +0 -90
  132. package/esm2020/standalone/directives/icon.mjs +0 -33
  133. package/esm2020/standalone/directives/index.mjs +0 -13
  134. package/esm2020/standalone/directives/input.mjs +0 -112
  135. package/esm2020/standalone/directives/proxies.mjs +0 -2268
  136. package/esm2020/standalone/directives/radio-group.mjs +0 -58
  137. package/esm2020/standalone/directives/radio.mjs +0 -62
  138. package/esm2020/standalone/directives/range.mjs +0 -77
  139. package/esm2020/standalone/directives/searchbar.mjs +0 -80
  140. package/esm2020/standalone/directives/segment.mjs +0 -58
  141. package/esm2020/standalone/directives/select.mjs +0 -81
  142. package/esm2020/standalone/directives/textarea.mjs +0 -90
  143. package/esm2020/standalone/directives/toggle.mjs +0 -73
  144. package/esm2020/standalone/index.mjs +0 -12
  145. package/esm2020/standalone/ionic-angular-standalone.mjs +0 -5
  146. package/esm2020/standalone/navigation/back-button.mjs +0 -32
  147. package/esm2020/standalone/navigation/nav.mjs +0 -28
  148. package/esm2020/standalone/navigation/router-link-delegate.mjs +0 -30
  149. package/esm2020/standalone/navigation/router-outlet.mjs +0 -23
  150. package/esm2020/standalone/navigation/tabs.mjs +0 -46
  151. package/esm2020/standalone/overlays/modal.mjs +0 -32
  152. package/esm2020/standalone/overlays/popover.mjs +0 -28
  153. package/esm2020/standalone/providers/ionic-angular.mjs +0 -41
  154. package/fesm2015/ionic-angular-common.mjs +0 -2620
  155. package/fesm2015/ionic-angular-common.mjs.map +0 -1
  156. package/fesm2015/ionic-angular-standalone.mjs +0 -3287
  157. package/fesm2015/ionic-angular-standalone.mjs.map +0 -1
  158. package/fesm2020/ionic-angular-common.mjs +0 -2609
  159. package/fesm2020/ionic-angular-common.mjs.map +0 -1
  160. package/fesm2020/ionic-angular-standalone.mjs +0 -3285
  161. package/fesm2020/ionic-angular-standalone.mjs.map +0 -1
  162. package/standalone/directives/angular-component-lib/utils.d.ts +0 -9
  163. package/standalone/directives/checkbox.d.ts +0 -30
  164. package/standalone/directives/datetime.d.ts +0 -30
  165. package/standalone/directives/icon.d.ts +0 -9
  166. package/standalone/directives/index.d.ts +0 -12
  167. package/standalone/directives/input.d.ts +0 -47
  168. package/standalone/directives/proxies.d.ts +0 -903
  169. package/standalone/directives/radio-group.d.ts +0 -18
  170. package/standalone/directives/radio.d.ts +0 -22
  171. package/standalone/directives/range.d.ts +0 -47
  172. package/standalone/directives/searchbar.d.ts +0 -45
  173. package/standalone/directives/segment.d.ts +0 -19
  174. package/standalone/directives/select.d.ts +0 -34
  175. package/standalone/directives/textarea.d.ts +0 -37
  176. package/standalone/directives/toggle.d.ts +0 -28
  177. package/standalone/index.d.ts +0 -11
  178. package/standalone/navigation/back-button.d.ts +0 -9
  179. package/standalone/navigation/nav.d.ts +0 -8
  180. package/standalone/navigation/router-link-delegate.d.ts +0 -10
  181. package/standalone/navigation/router-outlet.d.ts +0 -6
  182. package/standalone/navigation/tabs.d.ts +0 -12
  183. package/standalone/overlays/modal.d.ts +0 -6
  184. package/standalone/overlays/popover.d.ts +0 -6
  185. package/standalone/providers/ionic-angular.d.ts +0 -3
  186. /package/{common/directives → directives}/navigation/nav-params.d.ts +0 -0
  187. /package/{common/directives → directives}/navigation/stack-controller.d.ts +0 -0
  188. /package/{common/providers → providers}/dom-controller.d.ts +0 -0
  189. /package/{common/providers → providers}/menu-controller.d.ts +0 -0
  190. /package/{common/utils/routing.d.ts → util/ionic-router-reuse-strategy.d.ts} +0 -0
  191. /package/{common/utils → util}/overlay.d.ts +0 -0
  192. /package/{common/utils → util}/util.d.ts +0 -0
package/README.md CHANGED
@@ -52,23 +52,3 @@ $ npx schematics @ionic/angular:ng-add
52
52
 
53
53
 
54
54
  You'll now be able to add ionic components to a vanilla Angular app setup.
55
-
56
- ## Project Structure
57
-
58
- **common**
59
-
60
- This is where logic that is shared between lazy loaded and standalone components live. For example, the lazy loaded IonPopover and standalone IonPopover components extend from a base IonPopover implementation that exists in this directory.
61
-
62
- **Note:** This directory exposes internal APIs and is only accessed in the `standalone` and `src` submodules. Ionic developers should never import directly from `@ionic/angular/common`. Instead, they should import from `@ionic/angular` or `@ionic/angular/standalone`.
63
-
64
- **standalone**
65
-
66
- This is where the standalone component implementations live. It was added as a separate entry point to avoid any lazy loaded logic from accidentally being pulled in to the final build. Having a separate directory allows the lazy loaded implementation to remain accessible from `@ionic/angular` for backwards compatibility.
67
-
68
- Ionic developers can access this by importing from `@ionic/angular/standalone`.
69
-
70
- **src**
71
-
72
- This is where the lazy loaded component implementations live.
73
-
74
- Ionic developers can access this by importing from `@ionic/angular`.
@@ -1,3 +1,3 @@
1
1
  import { NgZone } from '@angular/core';
2
- import type { Config } from '@ionic/angular/common';
2
+ import { Config } from './providers/config';
3
3
  export declare const appInitialize: (config: Config, doc: Document, zone: NgZone) => () => any;
@@ -1,5 +1,5 @@
1
1
  import { ElementRef, Injector } from '@angular/core';
2
- import { ValueAccessor } from '@ionic/angular/common';
2
+ import { ValueAccessor } from './value-accessor';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class BooleanValueAccessorDirective extends ValueAccessor {
5
5
  constructor(injector: Injector, el: ElementRef);
@@ -1,5 +1,5 @@
1
1
  import { ElementRef, Injector } from '@angular/core';
2
- import { ValueAccessor } from '@ionic/angular/common';
2
+ import { ValueAccessor } from './value-accessor';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class NumericValueAccessorDirective extends ValueAccessor {
5
5
  constructor(injector: Injector, el: ElementRef);
@@ -1,5 +1,5 @@
1
1
  import { ElementRef, Injector } from '@angular/core';
2
- import { ValueAccessor } from '@ionic/angular/common';
2
+ import { ValueAccessor } from './value-accessor';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class RadioValueAccessorDirective extends ValueAccessor {
5
5
  constructor(injector: Injector, el: ElementRef);
@@ -1,5 +1,5 @@
1
1
  import { ElementRef, Injector } from '@angular/core';
2
- import { ValueAccessor } from '@ionic/angular/common';
2
+ import { ValueAccessor } from './value-accessor';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class SelectValueAccessorDirective extends ValueAccessor {
5
5
  constructor(injector: Injector, el: ElementRef);
@@ -1,5 +1,5 @@
1
1
  import { ElementRef, Injector } from '@angular/core';
2
- import { ValueAccessor } from '@ionic/angular/common';
2
+ import { ValueAccessor } from './value-accessor';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class TextValueAccessorDirective extends ValueAccessor {
5
5
  constructor(injector: Injector, el: ElementRef);
@@ -3,12 +3,12 @@ import { ControlValueAccessor } from '@angular/forms';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class ValueAccessor implements ControlValueAccessor, AfterViewInit, OnDestroy {
5
5
  protected injector: Injector;
6
- protected elementRef: ElementRef;
6
+ protected el: ElementRef;
7
7
  private onChange;
8
8
  private onTouched;
9
9
  protected lastValue: any;
10
10
  private statusChanges?;
11
- constructor(injector: Injector, elementRef: ElementRef);
11
+ constructor(injector: Injector, el: ElementRef);
12
12
  writeValue(value: any): void;
13
13
  /**
14
14
  * Notifies the ControlValueAccessor of a change in the value of the control.
@@ -1,9 +1,19 @@
1
- import { ElementRef, NgZone, ChangeDetectorRef } from '@angular/core';
2
- import { IonBackButton as IonBackButtonBase, NavController, Config } from '@ionic/angular/common';
1
+ import { AnimationBuilder } from '@ionic/core';
2
+ import { Config } from '../../providers/config';
3
+ import { NavController } from '../../providers/nav-controller';
3
4
  import { IonRouterOutlet } from './ion-router-outlet';
4
5
  import * as i0 from "@angular/core";
5
- export declare class IonBackButton extends IonBackButtonBase {
6
- constructor(routerOutlet: IonRouterOutlet, navCtrl: NavController, config: Config, r: ElementRef, z: NgZone, c: ChangeDetectorRef);
7
- static ɵfac: i0.ɵɵFactoryDeclaration<IonBackButton, [{ optional: true; }, null, null, null, null, null]>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<IonBackButton, "ion-back-button", never, {}, {}, never, ["*"], false>;
6
+ export declare class IonBackButtonDelegateDirective {
7
+ private routerOutlet;
8
+ private navCtrl;
9
+ private config;
10
+ defaultHref: string | undefined | null;
11
+ routerAnimation?: AnimationBuilder;
12
+ constructor(routerOutlet: IonRouterOutlet, navCtrl: NavController, config: Config);
13
+ /**
14
+ * @internal
15
+ */
16
+ onClick(ev: Event): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonBackButtonDelegateDirective, [{ optional: true; }, null, null]>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IonBackButtonDelegateDirective, "ion-back-button", never, { "defaultHref": "defaultHref"; "routerAnimation": "routerAnimation"; }, {}, never, never, false>;
9
19
  }
@@ -1,6 +1,124 @@
1
- import { IonRouterOutlet as IonRouterOutletBase } from '@ionic/angular/common';
1
+ import { Location } from '@angular/common';
2
+ import { ComponentRef, ElementRef, NgZone, OnDestroy, OnInit, EventEmitter, EnvironmentInjector, InjectionToken } from '@angular/core';
3
+ import { OutletContext, Router, ActivatedRoute, Data } from '@angular/router';
4
+ import { AnimationBuilder } from '../../ionic-core';
5
+ import { RouteView, StackDidChangeEvent, StackWillChangeEvent } from './stack-utils';
2
6
  import * as i0 from "@angular/core";
3
- export declare class IonRouterOutlet extends IonRouterOutletBase {
4
- static ɵfac: i0.ɵɵFactoryDeclaration<IonRouterOutlet, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<IonRouterOutlet, "ion-router-outlet", never, {}, {}, never, never, false>;
7
+ export declare class IonRouterOutlet implements OnDestroy, OnInit {
8
+ readonly parentOutlet?: IonRouterOutlet | undefined;
9
+ nativeEl: HTMLIonRouterOutletElement;
10
+ activatedView: RouteView | null;
11
+ tabsPrefix: string | undefined;
12
+ private _swipeGesture?;
13
+ private stackCtrl;
14
+ private proxyMap;
15
+ private currentActivatedRoute$;
16
+ private activated;
17
+ /** @internal */
18
+ get activatedComponentRef(): ComponentRef<any> | null;
19
+ private _activatedRoute;
20
+ /**
21
+ * The name of the outlet
22
+ */
23
+ name: string;
24
+ /** @internal */
25
+ stackWillChange: EventEmitter<StackWillChangeEvent>;
26
+ /** @internal */
27
+ stackDidChange: EventEmitter<StackDidChangeEvent>;
28
+ activateEvents: EventEmitter<any>;
29
+ deactivateEvents: EventEmitter<any>;
30
+ private parentContexts;
31
+ private location;
32
+ private environmentInjector;
33
+ private inputBinder;
34
+ /** @nodoc */
35
+ readonly supportsBindingToComponentInputs = true;
36
+ private config;
37
+ private navCtrl;
38
+ set animation(animation: AnimationBuilder);
39
+ set animated(animated: boolean);
40
+ set swipeGesture(swipe: boolean);
41
+ constructor(name: string, tabs: string, commonLocation: Location, elementRef: ElementRef, router: Router, zone: NgZone, activatedRoute: ActivatedRoute, parentOutlet?: IonRouterOutlet | undefined);
42
+ ngOnDestroy(): void;
43
+ getContext(): OutletContext | null;
44
+ ngOnInit(): void;
45
+ private initializeOutletWithName;
46
+ get isActivated(): boolean;
47
+ get component(): Record<string, unknown>;
48
+ get activatedRoute(): ActivatedRoute;
49
+ get activatedRouteData(): Data;
50
+ /**
51
+ * Called when the `RouteReuseStrategy` instructs to detach the subtree
52
+ */
53
+ detach(): ComponentRef<any>;
54
+ /**
55
+ * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree
56
+ */
57
+ attach(_ref: ComponentRef<any>, _activatedRoute: ActivatedRoute): void;
58
+ deactivate(): void;
59
+ activateWith(activatedRoute: ActivatedRoute, environmentInjector: EnvironmentInjector | null): void;
60
+ /**
61
+ * Returns `true` if there are pages in the stack to go back.
62
+ */
63
+ canGoBack(deep?: number, stackId?: string): boolean;
64
+ /**
65
+ * Resolves to `true` if it the outlet was able to sucessfully pop the last N pages.
66
+ */
67
+ pop(deep?: number, stackId?: string): Promise<boolean>;
68
+ /**
69
+ * Returns the URL of the active page of each stack.
70
+ */
71
+ getLastUrl(stackId?: string): string | undefined;
72
+ /**
73
+ * Returns the RouteView of the active page of each stack.
74
+ * @internal
75
+ */
76
+ getLastRouteView(stackId?: string): RouteView | undefined;
77
+ /**
78
+ * Returns the root view in the tab stack.
79
+ * @internal
80
+ */
81
+ getRootView(stackId?: string): RouteView | undefined;
82
+ /**
83
+ * Returns the active stack ID. In the context of ion-tabs, it means the active tab.
84
+ */
85
+ getActiveStackId(): string | undefined;
86
+ /**
87
+ * Since the activated route can change over the life time of a component in an ion router outlet, we create
88
+ * a proxy so that we can update the values over time as a user navigates back to components already in the stack.
89
+ */
90
+ private createActivatedRouteProxy;
91
+ /**
92
+ * Create a wrapped observable that will switch to the latest activated route matched by the given component
93
+ */
94
+ private proxyObservable;
95
+ /**
96
+ * Updates the activated route proxy for the given component to the new incoming router state
97
+ */
98
+ private updateActivatedRouteProxy;
99
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonRouterOutlet, [{ attribute: "name"; }, { attribute: "tabs"; optional: true; }, null, null, null, null, null, { optional: true; skipSelf: true; }]>;
100
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IonRouterOutlet, "ion-router-outlet", ["outlet"], { "animated": "animated"; "animation": "animation"; "mode": "mode"; "swipeGesture": "swipeGesture"; "name": "name"; }, { "stackWillChange": "stackWillChange"; "stackDidChange": "stackDidChange"; "activateEvents": "activate"; "deactivateEvents": "deactivate"; }, never, never, false>;
101
+ }
102
+ export declare const INPUT_BINDER: InjectionToken<RoutedComponentInputBinder>;
103
+ /**
104
+ * Injectable used as a tree-shakable provider for opting in to binding router data to component
105
+ * inputs.
106
+ *
107
+ * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or
108
+ * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,
109
+ * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.
110
+ * Importantly, when an input does not have an item in the route data with a matching key, this
111
+ * input is set to `undefined`. If it were not done this way, the previous information would be
112
+ * retained if the data got removed from the route (i.e. if a query parameter is removed).
113
+ *
114
+ * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that
115
+ * the subscriptions are cleaned up.
116
+ */
117
+ export declare class RoutedComponentInputBinder {
118
+ private outletDataSubscriptions;
119
+ bindActivatedRouteToOutletComponent(outlet: IonRouterOutlet): void;
120
+ unsubscribeFromRouteData(outlet: IonRouterOutlet): void;
121
+ private subscribeToRouteData;
122
+ static ɵfac: i0.ɵɵFactoryDeclaration<RoutedComponentInputBinder, never>;
123
+ static ɵprov: i0.ɵɵInjectableDeclaration<RoutedComponentInputBinder>;
6
124
  }
@@ -1,12 +1,72 @@
1
- import { QueryList } from '@angular/core';
2
- import { IonTabs as IonTabsBase } from '@ionic/angular/common';
1
+ import { AfterContentChecked, AfterContentInit, ElementRef, EventEmitter, QueryList } from '@angular/core';
2
+ import { NavController } from '../../providers/nav-controller';
3
3
  import { IonTabBar } from '../proxies';
4
4
  import { IonRouterOutlet } from './ion-router-outlet';
5
+ import { StackDidChangeEvent, StackWillChangeEvent } from './stack-utils';
5
6
  import * as i0 from "@angular/core";
6
- export declare class IonTabs extends IonTabsBase {
7
+ export declare class IonTabs implements AfterContentInit, AfterContentChecked {
8
+ private navCtrl;
7
9
  outlet: IonRouterOutlet;
10
+ tabsInner: ElementRef<HTMLDivElement>;
8
11
  tabBar: IonTabBar | undefined;
9
12
  tabBars: QueryList<IonTabBar>;
13
+ /**
14
+ * Emitted before the tab view is changed.
15
+ */
16
+ ionTabsWillChange: EventEmitter<{
17
+ tab: string;
18
+ }>;
19
+ /**
20
+ * Emitted after the tab view is changed.
21
+ */
22
+ ionTabsDidChange: EventEmitter<{
23
+ tab: string;
24
+ }>;
25
+ private tabBarSlot;
26
+ constructor(navCtrl: NavController);
27
+ ngAfterContentInit(): void;
28
+ ngAfterContentChecked(): void;
29
+ /**
30
+ * @internal
31
+ */
32
+ onStackWillChange({ enteringView, tabSwitch }: StackWillChangeEvent): void;
33
+ /**
34
+ * @internal
35
+ */
36
+ onStackDidChange({ enteringView, tabSwitch }: StackDidChangeEvent): void;
37
+ /**
38
+ * When a tab button is clicked, there are several scenarios:
39
+ * 1. If the selected tab is currently active (the tab button has been clicked
40
+ * again), then it should go to the root view for that tab.
41
+ *
42
+ * a. Get the saved root view from the router outlet. If the saved root view
43
+ * matches the tabRootUrl, set the route view to this view including the
44
+ * navigation extras.
45
+ * b. If the saved root view from the router outlet does
46
+ * not match, navigate to the tabRootUrl. No navigation extras are
47
+ * included.
48
+ *
49
+ * 2. If the current tab tab is not currently selected, get the last route
50
+ * view from the router outlet.
51
+ *
52
+ * a. If the last route view exists, navigate to that view including any
53
+ * navigation extras
54
+ * b. If the last route view doesn't exist, then navigate
55
+ * to the default tabRootUrl
56
+ */
57
+ select(tabOrEvent: string | CustomEvent): Promise<boolean> | undefined;
58
+ getSelected(): string | undefined;
59
+ /**
60
+ * Detects changes to the slot attribute of the tab bar.
61
+ *
62
+ * If the slot attribute has changed, then the tab bar
63
+ * should be relocated to the new slot position.
64
+ */
65
+ private detectSlotChanges;
66
+ /**
67
+ * Relocates the tab bar to the new slot position.
68
+ */
69
+ private relocateTabBar;
10
70
  static ɵfac: i0.ɵɵFactoryDeclaration<IonTabs, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<IonTabs, "ion-tabs", never, {}, {}, ["tabBar", "tabBars"], ["[slot=top]", "*"], false>;
71
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonTabs, "ion-tabs", never, {}, { "ionTabsWillChange": "ionTabsWillChange"; "ionTabsDidChange": "ionTabsDidChange"; }, ["tabBar", "tabBars"], ["[slot=top]", "*"], false>;
12
72
  }
@@ -0,0 +1,9 @@
1
+ import { ElementRef, Injector, EnvironmentInjector } from '@angular/core';
2
+ import { AngularDelegate } from '../../providers/angular-delegate';
3
+ import * as i0 from "@angular/core";
4
+ export declare class NavDelegate {
5
+ protected el: HTMLElement;
6
+ constructor(ref: ElementRef, environmentInjector: EnvironmentInjector, injector: Injector, angularDelegate: AngularDelegate);
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavDelegate, never>;
8
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NavDelegate, "ion-nav", never, {}, {}, never, never, false>;
9
+ }
@@ -1,4 +1,8 @@
1
- import { RouterLinkDelegateDirective as RouterLinkDelegateBase, RouterLinkWithHrefDelegateDirective as RouterLinkHrefDelegateBase } from '@ionic/angular/common';
1
+ import { LocationStrategy } from '@angular/common';
2
+ import { ElementRef, OnChanges, OnInit } from '@angular/core';
3
+ import { Router, RouterLink } from '@angular/router';
4
+ import { AnimationBuilder, RouterDirection } from '@ionic/core';
5
+ import { NavController } from '../../providers/nav-controller';
2
6
  import * as i0 from "@angular/core";
3
7
  /**
4
8
  * Adds support for Ionic routing directions and animations to the base Angular router link directive.
@@ -6,11 +10,41 @@ import * as i0 from "@angular/core";
6
10
  * When the router link is clicked, the directive will assign the direction and
7
11
  * animation so that the routing integration will transition correctly.
8
12
  */
9
- export declare class RouterLinkDelegateDirective extends RouterLinkDelegateBase {
10
- static ɵfac: i0.ɵɵFactoryDeclaration<RouterLinkDelegateDirective, never>;
11
- static ɵdir: i0.ɵɵDirectiveDeclaration<RouterLinkDelegateDirective, ":not(a):not(area)[routerLink]", never, {}, {}, never, never, false>;
13
+ export declare class RouterLinkDelegateDirective implements OnInit, OnChanges {
14
+ private locationStrategy;
15
+ private navCtrl;
16
+ private elementRef;
17
+ private router;
18
+ private routerLink?;
19
+ routerDirection: RouterDirection;
20
+ routerAnimation?: AnimationBuilder;
21
+ constructor(locationStrategy: LocationStrategy, navCtrl: NavController, elementRef: ElementRef, router: Router, routerLink?: RouterLink | undefined);
22
+ ngOnInit(): void;
23
+ ngOnChanges(): void;
24
+ private updateTargetUrlAndHref;
25
+ /**
26
+ * @internal
27
+ */
28
+ onClick(ev: UIEvent): void;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<RouterLinkDelegateDirective, [null, null, null, null, { optional: true; }]>;
30
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RouterLinkDelegateDirective, ":not(a):not(area)[routerLink]", never, { "routerDirection": "routerDirection"; "routerAnimation": "routerAnimation"; }, {}, never, never, false>;
12
31
  }
13
- export declare class RouterLinkWithHrefDelegateDirective extends RouterLinkHrefDelegateBase {
14
- static ɵfac: i0.ɵɵFactoryDeclaration<RouterLinkWithHrefDelegateDirective, never>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<RouterLinkWithHrefDelegateDirective, "a[routerLink],area[routerLink]", never, {}, {}, never, never, false>;
32
+ export declare class RouterLinkWithHrefDelegateDirective implements OnInit, OnChanges {
33
+ private locationStrategy;
34
+ private navCtrl;
35
+ private elementRef;
36
+ private router;
37
+ private routerLink?;
38
+ routerDirection: RouterDirection;
39
+ routerAnimation?: AnimationBuilder;
40
+ constructor(locationStrategy: LocationStrategy, navCtrl: NavController, elementRef: ElementRef, router: Router, routerLink?: RouterLink | undefined);
41
+ ngOnInit(): void;
42
+ ngOnChanges(): void;
43
+ private updateTargetUrlAndHref;
44
+ /**
45
+ * @internal
46
+ */
47
+ onClick(): void;
48
+ static ɵfac: i0.ɵɵFactoryDeclaration<RouterLinkWithHrefDelegateDirective, [null, null, null, null, { optional: true; }]>;
49
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RouterLinkWithHrefDelegateDirective, "a[routerLink],area[routerLink]", never, { "routerDirection": "routerDirection"; "routerAnimation": "routerAnimation"; }, {}, never, never, false>;
16
50
  }
@@ -1,6 +1,6 @@
1
1
  import { ComponentRef } from '@angular/core';
2
2
  import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
3
- import type { AnimationBuilder, NavDirection, RouterDirection } from '@ionic/core/components';
3
+ import { AnimationBuilder, NavDirection, RouterDirection } from '@ionic/core';
4
4
  export declare const insertView: (views: RouteView[], view: RouteView, direction: RouterDirection) => RouteView[];
5
5
  export declare const getUrl: (router: Router, activatedRoute: ActivatedRoute) => string;
6
6
  export declare const isTabSwitch: (enteringView: RouteView, leavingView: RouteView | undefined) => boolean;
@@ -1,6 +1,50 @@
1
- import { IonModal as IonModalBase } from '@ionic/angular/common';
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, TemplateRef } from '@angular/core';
2
+ import { Components, ModalBreakpointChangeEventDetail } from '@ionic/core';
2
3
  import * as i0 from "@angular/core";
3
- export declare class IonModal extends IonModalBase {
4
+ export declare interface IonModal extends Components.IonModal {
5
+ /**
6
+ * Emitted after the modal has presented.
7
+ **/
8
+ ionModalDidPresent: EventEmitter<CustomEvent>;
9
+ /**
10
+ * Emitted before the modal has presented.
11
+ */
12
+ ionModalWillPresent: EventEmitter<CustomEvent>;
13
+ /**
14
+ * Emitted before the modal has dismissed.
15
+ */
16
+ ionModalWillDismiss: EventEmitter<CustomEvent>;
17
+ /**
18
+ * Emitted after the modal has dismissed.
19
+ */
20
+ ionModalDidDismiss: EventEmitter<CustomEvent>;
21
+ /**
22
+ * Emitted after the modal breakpoint has changed.
23
+ */
24
+ ionBreakpointDidChange: EventEmitter<CustomEvent<ModalBreakpointChangeEventDetail>>;
25
+ /**
26
+ * Emitted after the modal has presented. Shorthand for ionModalWillDismiss.
27
+ */
28
+ didPresent: EventEmitter<CustomEvent>;
29
+ /**
30
+ * Emitted before the modal has presented. Shorthand for ionModalWillPresent.
31
+ */
32
+ willPresent: EventEmitter<CustomEvent>;
33
+ /**
34
+ * Emitted before the modal has dismissed. Shorthand for ionModalWillDismiss.
35
+ */
36
+ willDismiss: EventEmitter<CustomEvent>;
37
+ /**
38
+ * Emitted after the modal has dismissed. Shorthand for ionModalDidDismiss.
39
+ */
40
+ didDismiss: EventEmitter<CustomEvent>;
41
+ }
42
+ export declare class IonModal {
43
+ protected z: NgZone;
44
+ template: TemplateRef<any>;
45
+ isCmpOpen: boolean;
46
+ protected el: HTMLElement;
47
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
4
48
  static ɵfac: i0.ɵɵFactoryDeclaration<IonModal, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<IonModal, "ion-modal", never, {}, {}, never, never, false>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonModal, "ion-modal", never, { "animated": "animated"; "keepContentsMounted": "keepContentsMounted"; "backdropBreakpoint": "backdropBreakpoint"; "backdropDismiss": "backdropDismiss"; "breakpoints": "breakpoints"; "canDismiss": "canDismiss"; "cssClass": "cssClass"; "enterAnimation": "enterAnimation"; "event": "event"; "handle": "handle"; "handleBehavior": "handleBehavior"; "initialBreakpoint": "initialBreakpoint"; "isOpen": "isOpen"; "keyboardClose": "keyboardClose"; "leaveAnimation": "leaveAnimation"; "mode": "mode"; "presentingElement": "presentingElement"; "showBackdrop": "showBackdrop"; "translucent": "translucent"; "trigger": "trigger"; }, {}, ["template"], never, false>;
6
50
  }
@@ -1,6 +1,46 @@
1
- import { IonPopover as IonPopoverBase } from '@ionic/angular/common';
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, TemplateRef } from '@angular/core';
2
+ import { Components } from '@ionic/core';
2
3
  import * as i0 from "@angular/core";
3
- export declare class IonPopover extends IonPopoverBase {
4
+ export declare interface IonPopover extends Components.IonPopover {
5
+ /**
6
+ * Emitted after the popover has presented.
7
+ */
8
+ ionPopoverDidPresent: EventEmitter<CustomEvent>;
9
+ /**
10
+ * Emitted before the popover has presented.
11
+ */
12
+ ionPopoverWillPresent: EventEmitter<CustomEvent>;
13
+ /**
14
+ * Emitted after the popover has dismissed.
15
+ */
16
+ ionPopoverWillDismiss: EventEmitter<CustomEvent>;
17
+ /**
18
+ * Emitted after the popover has dismissed.
19
+ */
20
+ ionPopoverDidDismiss: EventEmitter<CustomEvent>;
21
+ /**
22
+ * Emitted after the popover has presented. Shorthand for ionPopoverWillDismiss.
23
+ */
24
+ didPresent: EventEmitter<CustomEvent>;
25
+ /**
26
+ * Emitted before the popover has presented. Shorthand for ionPopoverWillPresent.
27
+ */
28
+ willPresent: EventEmitter<CustomEvent>;
29
+ /**
30
+ * Emitted after the popover has presented. Shorthand for ionPopoverWillDismiss.
31
+ */
32
+ willDismiss: EventEmitter<CustomEvent>;
33
+ /**
34
+ * Emitted after the popover has dismissed. Shorthand for ionPopoverDidDismiss.
35
+ */
36
+ didDismiss: EventEmitter<CustomEvent>;
37
+ }
38
+ export declare class IonPopover {
39
+ protected z: NgZone;
40
+ template: TemplateRef<any>;
41
+ isCmpOpen: boolean;
42
+ protected el: HTMLElement;
43
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
4
44
  static ɵfac: i0.ɵɵFactoryDeclaration<IonPopover, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<IonPopover, "ion-popover", never, {}, {}, never, never, false>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonPopover, "ion-popover", never, { "alignment": "alignment"; "animated": "animated"; "arrow": "arrow"; "keepContentsMounted": "keepContentsMounted"; "backdropDismiss": "backdropDismiss"; "cssClass": "cssClass"; "dismissOnSelect": "dismissOnSelect"; "enterAnimation": "enterAnimation"; "event": "event"; "isOpen": "isOpen"; "keyboardClose": "keyboardClose"; "leaveAnimation": "leaveAnimation"; "mode": "mode"; "showBackdrop": "showBackdrop"; "translucent": "translucent"; "trigger": "trigger"; "triggerAction": "triggerAction"; "reference": "reference"; "size": "size"; "side": "side"; }, {}, ["template"], never, false>;
6
46
  }
@@ -1,2 +1,2 @@
1
1
  import * as d from './proxies';
2
- export declare const DIRECTIVES: (typeof d.IonAccordion | typeof d.IonAccordionGroup | typeof d.IonActionSheet | typeof d.IonAlert | typeof d.IonApp | typeof d.IonAvatar | typeof d.IonBackdrop | typeof d.IonBadge | typeof d.IonBreadcrumb | typeof d.IonBreadcrumbs | typeof d.IonButton | typeof d.IonButtons | typeof d.IonCard | typeof d.IonCardContent | typeof d.IonCardHeader | typeof d.IonCardSubtitle | typeof d.IonCardTitle | typeof d.IonCheckbox | typeof d.IonChip | typeof d.IonCol | typeof d.IonContent | typeof d.IonDatetime | typeof d.IonDatetimeButton | typeof d.IonFab | typeof d.IonFabButton | typeof d.IonFabList | typeof d.IonFooter | typeof d.IonGrid | typeof d.IonHeader | typeof d.IonIcon | typeof d.IonImg | typeof d.IonInfiniteScroll | typeof d.IonInfiniteScrollContent | typeof d.IonInput | typeof d.IonItem | typeof d.IonItemDivider | typeof d.IonItemGroup | typeof d.IonItemOption | typeof d.IonItemOptions | typeof d.IonItemSliding | typeof d.IonLabel | typeof d.IonList | typeof d.IonListHeader | typeof d.IonLoading | typeof d.IonMenu | typeof d.IonMenuButton | typeof d.IonMenuToggle | typeof d.IonNavLink | typeof d.IonNote | typeof d.IonPicker | typeof d.IonProgressBar | typeof d.IonRadio | typeof d.IonRadioGroup | typeof d.IonRange | typeof d.IonRefresher | typeof d.IonRefresherContent | typeof d.IonReorder | typeof d.IonReorderGroup | typeof d.IonRippleEffect | typeof d.IonRow | typeof d.IonSearchbar | typeof d.IonSegment | typeof d.IonSegmentButton | typeof d.IonSelect | typeof d.IonSelectOption | typeof d.IonSkeletonText | typeof d.IonSpinner | typeof d.IonSplitPane | typeof d.IonTabBar | typeof d.IonTabButton | typeof d.IonText | typeof d.IonTextarea | typeof d.IonThumbnail | typeof d.IonTitle | typeof d.IonToast | typeof d.IonToggle | typeof d.IonToolbar)[];
2
+ export declare const DIRECTIVES: (typeof d.IonAccordion | typeof d.IonAccordionGroup | typeof d.IonActionSheet | typeof d.IonAlert | typeof d.IonApp | typeof d.IonAvatar | typeof d.IonBackButton | typeof d.IonBackdrop | typeof d.IonBadge | typeof d.IonBreadcrumb | typeof d.IonBreadcrumbs | typeof d.IonButton | typeof d.IonButtons | typeof d.IonCard | typeof d.IonCardContent | typeof d.IonCardHeader | typeof d.IonCardSubtitle | typeof d.IonCardTitle | typeof d.IonCheckbox | typeof d.IonChip | typeof d.IonCol | typeof d.IonContent | typeof d.IonDatetime | typeof d.IonDatetimeButton | typeof d.IonFab | typeof d.IonFabButton | typeof d.IonFabList | typeof d.IonFooter | typeof d.IonGrid | typeof d.IonHeader | typeof d.IonIcon | typeof d.IonImg | typeof d.IonInfiniteScroll | typeof d.IonInfiniteScrollContent | typeof d.IonInput | typeof d.IonItem | typeof d.IonItemDivider | typeof d.IonItemGroup | typeof d.IonItemOption | typeof d.IonItemOptions | typeof d.IonItemSliding | typeof d.IonLabel | typeof d.IonList | typeof d.IonListHeader | typeof d.IonLoading | typeof d.IonMenu | typeof d.IonMenuButton | typeof d.IonMenuToggle | typeof d.IonNav | typeof d.IonNavLink | typeof d.IonNote | typeof d.IonPicker | typeof d.IonProgressBar | typeof d.IonRadio | typeof d.IonRadioGroup | typeof d.IonRange | typeof d.IonRefresher | typeof d.IonRefresherContent | typeof d.IonReorder | typeof d.IonReorderGroup | typeof d.IonRippleEffect | typeof d.IonRow | typeof d.IonSearchbar | typeof d.IonSegment | typeof d.IonSegmentButton | typeof d.IonSelect | typeof d.IonSelectOption | typeof d.IonSkeletonText | typeof d.IonSpinner | typeof d.IonSplitPane | typeof d.IonTabBar | typeof d.IonTabButton | typeof d.IonText | typeof d.IonTextarea | typeof d.IonThumbnail | typeof d.IonTitle | typeof d.IonToast | typeof d.IonToggle | typeof d.IonToolbar)[];
@@ -160,6 +160,15 @@ export declare class IonAvatar {
160
160
  }
161
161
  export declare interface IonAvatar extends Components.IonAvatar {
162
162
  }
163
+ export declare class IonBackButton {
164
+ protected z: NgZone;
165
+ protected el: HTMLElement;
166
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
167
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonBackButton, never>;
168
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonBackButton, "ion-back-button", never, { "color": "color"; "defaultHref": "defaultHref"; "disabled": "disabled"; "icon": "icon"; "mode": "mode"; "routerAnimation": "routerAnimation"; "text": "text"; "type": "type"; }, {}, never, ["*"], false>;
169
+ }
170
+ export declare interface IonBackButton extends Components.IonBackButton {
171
+ }
163
172
  export declare class IonBackdrop {
164
173
  protected z: NgZone;
165
174
  protected el: HTMLElement;
@@ -718,6 +727,23 @@ export declare class IonMenuToggle {
718
727
  }
719
728
  export declare interface IonMenuToggle extends Components.IonMenuToggle {
720
729
  }
730
+ export declare class IonNav {
731
+ protected z: NgZone;
732
+ protected el: HTMLElement;
733
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
734
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonNav, never>;
735
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonNav, "ion-nav", never, { "animated": "animated"; "animation": "animation"; "root": "root"; "rootParams": "rootParams"; "swipeGesture": "swipeGesture"; }, {}, never, ["*"], false>;
736
+ }
737
+ export declare interface IonNav extends Components.IonNav {
738
+ /**
739
+ * Event fired when the nav will change components
740
+ */
741
+ ionNavWillChange: EventEmitter<CustomEvent<void>>;
742
+ /**
743
+ * Event fired when the nav has changed components
744
+ */
745
+ ionNavDidChange: EventEmitter<CustomEvent<void>>;
746
+ }
721
747
  export declare class IonNavLink {
722
748
  protected z: NgZone;
723
749
  protected el: HTMLElement;
@@ -1,6 +1,6 @@
1
- import { raf } from '@ionic/angular/common';
2
1
  import { setupConfig } from '@ionic/core';
3
2
  import { applyPolyfills, defineCustomElements } from '@ionic/core/loader';
3
+ import { raf } from './util/util';
4
4
  // TODO(FW-2827): types
5
5
  export const appInitialize = (config, doc, zone) => {
6
6
  return () => {
@@ -28,4 +28,4 @@ export const appInitialize = (config, doc, zone) => {
28
28
  }
29
29
  };
30
30
  };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwLWluaXRpYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFFLHVCQUF1QjtBQUV2QixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsR0FBYSxFQUFFLElBQVksRUFBRSxFQUFFO0lBQzNFLE9BQU8sR0FBUSxFQUFFO1FBQ2YsTUFBTSxHQUFHLEdBQTRCLEdBQUcsQ0FBQyxXQUFrQixDQUFDO1FBQzVELElBQUksR0FBRyxJQUFJLE9BQVEsTUFBYyxLQUFLLFdBQVcsRUFBRTtZQUNqRCxXQUFXLENBQUM7Z0JBQ1YsR0FBRyxNQUFNO2dCQUNULFNBQVMsRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDbkMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxLQUFLLEdBQ1QsaUNBQWlDLElBQUssR0FBRyxDQUFDLElBQVksQ0FBQyxDQUFDLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1lBRWxILE9BQU8sY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDaEMsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUU7b0JBQy9CLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUM7b0JBQ2hDLFNBQVMsRUFBRSxJQUFJO29CQUNmLEdBQUc7b0JBQ0gsR0FBRyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO29CQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSTt3QkFDekIsR0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzNDLENBQUM7b0JBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUk7d0JBQzFCLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMvQyxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBJb25pY1dpbmRvdyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyByYWYgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgc2V0dXBDb25maWcgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBhcHBseVBvbHlmaWxscywgZGVmaW5lQ3VzdG9tRWxlbWVudHMgfSBmcm9tICdAaW9uaWMvY29yZS9sb2FkZXInO1xuXG4vLyBUT0RPKEZXLTI4MjcpOiB0eXBlc1xuXG5leHBvcnQgY29uc3QgYXBwSW5pdGlhbGl6ZSA9IChjb25maWc6IENvbmZpZywgZG9jOiBEb2N1bWVudCwgem9uZTogTmdab25lKSA9PiB7XG4gIHJldHVybiAoKTogYW55ID0+IHtcbiAgICBjb25zdCB3aW46IElvbmljV2luZG93IHwgdW5kZWZpbmVkID0gZG9jLmRlZmF1bHRWaWV3IGFzIGFueTtcbiAgICBpZiAod2luICYmIHR5cGVvZiAod2luZG93IGFzIGFueSkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBzZXR1cENvbmZpZyh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgX3pvbmVHYXRlOiAoaDogYW55KSA9PiB6b25lLnJ1bihoKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhZWxGbiA9XG4gICAgICAgICdfX3pvbmVfc3ltYm9sX19hZGRFdmVudExpc3RlbmVyJyBpbiAoZG9jLmJvZHkgYXMgYW55KSA/ICdfX3pvbmVfc3ltYm9sX19hZGRFdmVudExpc3RlbmVyJyA6ICdhZGRFdmVudExpc3RlbmVyJztcblxuICAgICAgcmV0dXJuIGFwcGx5UG9seWZpbGxzKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBkZWZpbmVDdXN0b21FbGVtZW50cyh3aW4sIHtcbiAgICAgICAgICBleGNsdWRlOiBbJ2lvbi10YWJzJywgJ2lvbi10YWInXSxcbiAgICAgICAgICBzeW5jUXVldWU6IHRydWUsXG4gICAgICAgICAgcmFmLFxuICAgICAgICAgIGptcDogKGg6IGFueSkgPT4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcihoKSxcbiAgICAgICAgICBhZWwoZWxtLCBldmVudE5hbWUsIGNiLCBvcHRzKSB7XG4gICAgICAgICAgICAoZWxtIGFzIGFueSlbYWVsRm5dKGV2ZW50TmFtZSwgY2IsIG9wdHMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVsKGVsbSwgZXZlbnROYW1lLCBjYiwgb3B0cykge1xuICAgICAgICAgICAgZWxtLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYiwgb3B0cyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59O1xuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwLWluaXRpYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJMUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsQyx1QkFBdUI7QUFFdkIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBYyxFQUFFLEdBQWEsRUFBRSxJQUFZLEVBQUUsRUFBRTtJQUMzRSxPQUFPLEdBQVEsRUFBRTtRQUNmLE1BQU0sR0FBRyxHQUE0QixHQUFHLENBQUMsV0FBa0IsQ0FBQztRQUM1RCxJQUFJLEdBQUcsSUFBSSxPQUFRLE1BQWMsS0FBSyxXQUFXLEVBQUU7WUFDakQsV0FBVyxDQUFDO2dCQUNWLEdBQUcsTUFBTTtnQkFDVCxTQUFTLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ25DLENBQUMsQ0FBQztZQUVILE1BQU0sS0FBSyxHQUNULGlDQUFpQyxJQUFLLEdBQUcsQ0FBQyxJQUFZLENBQUMsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztZQUVsSCxPQUFPLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hDLE9BQU8sb0JBQW9CLENBQUMsR0FBRyxFQUFFO29CQUMvQixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO29CQUNoQyxTQUFTLEVBQUUsSUFBSTtvQkFDZixHQUFHO29CQUNILEdBQUcsRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztvQkFDMUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUk7d0JBQ3pCLEdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMzQyxDQUFDO29CQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJO3dCQUMxQixHQUFHLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDL0MsQ0FBQztpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZXR1cENvbmZpZyB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IGFwcGx5UG9seWZpbGxzLCBkZWZpbmVDdXN0b21FbGVtZW50cyB9IGZyb20gJ0Bpb25pYy9jb3JlL2xvYWRlcic7XG5cbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbmZpZyc7XG5pbXBvcnQgeyBJb25pY1dpbmRvdyB9IGZyb20gJy4vdHlwZXMvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyByYWYgfSBmcm9tICcuL3V0aWwvdXRpbCc7XG5cbi8vIFRPRE8oRlctMjgyNyk6IHR5cGVzXG5cbmV4cG9ydCBjb25zdCBhcHBJbml0aWFsaXplID0gKGNvbmZpZzogQ29uZmlnLCBkb2M6IERvY3VtZW50LCB6b25lOiBOZ1pvbmUpID0+IHtcbiAgcmV0dXJuICgpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHdpbjogSW9uaWNXaW5kb3cgfCB1bmRlZmluZWQgPSBkb2MuZGVmYXVsdFZpZXcgYXMgYW55O1xuICAgIGlmICh3aW4gJiYgdHlwZW9mICh3aW5kb3cgYXMgYW55KSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHNldHVwQ29uZmlnKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBfem9uZUdhdGU6IChoOiBhbnkpID0+IHpvbmUucnVuKGgpLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFlbEZuID1cbiAgICAgICAgJ19fem9uZV9zeW1ib2xfX2FkZEV2ZW50TGlzdGVuZXInIGluIChkb2MuYm9keSBhcyBhbnkpID8gJ19fem9uZV9zeW1ib2xfX2FkZEV2ZW50TGlzdGVuZXInIDogJ2FkZEV2ZW50TGlzdGVuZXInO1xuXG4gICAgICByZXR1cm4gYXBwbHlQb2x5ZmlsbHMoKS50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGRlZmluZUN1c3RvbUVsZW1lbnRzKHdpbiwge1xuICAgICAgICAgIGV4Y2x1ZGU6IFsnaW9uLXRhYnMnLCAnaW9uLXRhYiddLFxuICAgICAgICAgIHN5bmNRdWV1ZTogdHJ1ZSxcbiAgICAgICAgICByYWYsXG4gICAgICAgICAgam1wOiAoaDogYW55KSA9PiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKGgpLFxuICAgICAgICAgIGFlbChlbG0sIGV2ZW50TmFtZSwgY2IsIG9wdHMpIHtcbiAgICAgICAgICAgIChlbG0gYXMgYW55KVthZWxGbl0oZXZlbnROYW1lLCBjYiwgb3B0cyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZWwoZWxtLCBldmVudE5hbWUsIGNiLCBvcHRzKSB7XG4gICAgICAgICAgICBlbG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNiLCBvcHRzKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn07XG4iXX0=
@@ -1,14 +1,14 @@
1
1
  import { Directive, HostListener } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { ValueAccessor, setIonicClasses } from '@ionic/angular/common';
3
+ import { ValueAccessor, setIonicClasses } from './value-accessor';
4
4
  import * as i0 from "@angular/core";
5
5
  export class BooleanValueAccessorDirective extends ValueAccessor {
6
6
  constructor(injector, el) {
7
7
  super(injector, el);
8
8
  }
9
9
  writeValue(value) {
10
- this.elementRef.nativeElement.checked = this.lastValue = value;
11
- setIonicClasses(this.elementRef);
10
+ this.el.nativeElement.checked = this.lastValue = value;
11
+ setIonicClasses(this.el);
12
12
  }
13
13
  _handleIonChange(el) {
14
14
  this.handleValueChange(el, el.checked);
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
38
38
  type: HostListener,
39
39
  args: ['ionChange', ['$event.target']]
40
40
  }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3JzL2Jvb2xlYW4tdmFsdWUtYWNjZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBWXZFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxhQUFhO0lBQzlELFlBQVksUUFBa0IsRUFBRSxFQUFjO1FBQzVDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMvRCxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxFQUFpRDtRQUNoRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs4SUFiVSw2QkFBNkI7a0lBQTdCLDZCQUE2QiwySEFSN0I7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Y7NEZBRVUsNkJBQTZCO2tCQVZ6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLCtCQUErQjs0QkFDMUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7d0hBWUMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3IsIHNldElvbmljQ2xhc3NlcyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi1jaGVja2JveCxpb24tdG9nZ2xlJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQm9vbGVhblZhbHVlQWNjZXNzb3JEaXJlY3RpdmUsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSBleHRlbmRzIFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGVsKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgICBzZXRJb25pY0NsYXNzZXModGhpcy5lbGVtZW50UmVmKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lvbkNoYW5nZScsIFsnJGV2ZW50LnRhcmdldCddKVxuICBfaGFuZGxlSW9uQ2hhbmdlKGVsOiBIVE1MSW9uQ2hlY2tib3hFbGVtZW50IHwgSFRNTElvblRvZ2dsZUVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKGVsLCBlbC5jaGVja2VkKTtcbiAgfVxufVxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3JzL2Jvb2xlYW4tdmFsdWUtYWNjZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBWWxFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxhQUFhO0lBQzlELFlBQVksUUFBa0IsRUFBRSxFQUFjO1FBQzVDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2RCxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxFQUFpRDtRQUNoRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs4SUFiVSw2QkFBNkI7a0lBQTdCLDZCQUE2QiwySEFSN0I7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Y7NEZBRVUsNkJBQTZCO2tCQVZ6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLCtCQUErQjs0QkFDMUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7d0hBWUMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVmFsdWVBY2Nlc3Nvciwgc2V0SW9uaWNDbGFzc2VzIH0gZnJvbSAnLi92YWx1ZS1hY2Nlc3Nvcic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi1jaGVja2JveCxpb24tdG9nZ2xlJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQm9vbGVhblZhbHVlQWNjZXNzb3JEaXJlY3RpdmUsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSBleHRlbmRzIFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGVsKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XG4gICAgc2V0SW9uaWNDbGFzc2VzKHRoaXMuZWwpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW9uQ2hhbmdlJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIF9oYW5kbGVJb25DaGFuZ2UoZWw6IEhUTUxJb25DaGVja2JveEVsZW1lbnQgfCBIVE1MSW9uVG9nZ2xlRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2UoZWwsIGVsLmNoZWNrZWQpO1xuICB9XG59XG4iXX0=