@ionic/angular 8.0.0-beta.2 → 8.0.0-beta.4

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 (236) hide show
  1. package/common/directives/control-value-accessors/value-accessor.d.ts +1 -1
  2. package/common/directives/navigation/back-button.d.ts +1 -4
  3. package/common/directives/navigation/nav.d.ts +1 -1
  4. package/common/directives/navigation/router-link-delegate.d.ts +2 -2
  5. package/common/directives/navigation/router-outlet.d.ts +6 -6
  6. package/common/directives/navigation/tabs.d.ts +5 -5
  7. package/common/overlays/modal.d.ts +1 -1
  8. package/common/overlays/popover.d.ts +1 -1
  9. package/common/providers/dom-controller.d.ts +1 -1
  10. package/css/palettes/dark.always.css.map +1 -0
  11. package/css/{themes → palettes}/dark.class.css +4 -4
  12. package/css/palettes/dark.class.css.map +1 -0
  13. package/css/palettes/dark.system.css.map +1 -0
  14. package/css/palettes/high-contrast-dark.always.css.map +1 -0
  15. package/css/{themes → palettes}/high-contrast-dark.class.css +10 -10
  16. package/css/palettes/high-contrast-dark.class.css.map +1 -0
  17. package/css/palettes/high-contrast-dark.system.css.map +1 -0
  18. package/css/palettes/high-contrast.always.css.map +1 -0
  19. package/css/{themes → palettes}/high-contrast.class.css +31 -31
  20. package/css/palettes/high-contrast.class.css.map +1 -0
  21. package/css/palettes/high-contrast.system.css.map +1 -0
  22. package/directives/control-value-accessors/boolean-value-accessor.d.ts +1 -1
  23. package/directives/control-value-accessors/numeric-value-accessor.d.ts +1 -1
  24. package/directives/control-value-accessors/select-value-accessor.d.ts +1 -1
  25. package/directives/control-value-accessors/text-value-accessor.d.ts +1 -1
  26. package/directives/navigation/ion-back-button.d.ts +1 -1
  27. package/directives/navigation/ion-nav.d.ts +1 -1
  28. package/directives/navigation/ion-router-outlet.d.ts +3 -3
  29. package/directives/navigation/ion-tabs.d.ts +1 -1
  30. package/directives/navigation/router-link-delegate.d.ts +2 -2
  31. package/directives/overlays/modal.d.ts +1 -1
  32. package/directives/overlays/popover.d.ts +1 -1
  33. package/directives/proxies-list.d.ts +1 -1
  34. package/directives/proxies.d.ts +89 -80
  35. package/directives/validators/max-validator.d.ts +1 -1
  36. package/directives/validators/min-validator.d.ts +1 -1
  37. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +145 -0
  38. package/esm2022/common/directives/navigation/back-button.mjs +61 -0
  39. package/esm2022/common/directives/navigation/nav-params.mjs +46 -0
  40. package/esm2022/common/directives/navigation/nav.mjs +49 -0
  41. package/esm2022/common/directives/navigation/router-link-delegate.mjs +123 -0
  42. package/esm2022/common/directives/navigation/router-outlet.mjs +480 -0
  43. package/esm2022/common/directives/navigation/stack-controller.mjs +280 -0
  44. package/esm2022/common/directives/navigation/tabs.mjs +174 -0
  45. package/esm2022/common/overlays/modal.mjs +91 -0
  46. package/esm2022/common/overlays/popover.mjs +83 -0
  47. package/esm2022/common/providers/angular-delegate.mjs +155 -0
  48. package/{esm2020 → esm2022}/common/providers/config.mjs +4 -4
  49. package/{esm2020 → esm2022}/common/providers/dom-controller.mjs +4 -4
  50. package/esm2022/common/providers/menu-controller.mjs +114 -0
  51. package/esm2022/common/providers/nav-controller.mjs +227 -0
  52. package/esm2022/common/providers/platform.mjs +257 -0
  53. package/esm2022/common/utils/overlay.mjs +26 -0
  54. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +41 -0
  55. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +49 -0
  56. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +38 -0
  57. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +37 -0
  58. package/{esm2020 → esm2022}/directives/navigation/ion-back-button.mjs +4 -4
  59. package/{esm2020 → esm2022}/directives/navigation/ion-nav.mjs +4 -4
  60. package/esm2022/directives/navigation/ion-router-outlet.mjs +52 -0
  61. package/esm2022/directives/navigation/ion-tabs.mjs +50 -0
  62. package/{esm2020 → esm2022}/directives/navigation/router-link-delegate.mjs +7 -7
  63. package/{esm2020 → esm2022}/directives/overlays/modal.mjs +5 -5
  64. package/{esm2020 → esm2022}/directives/overlays/popover.mjs +4 -4
  65. package/esm2022/directives/proxies-list.mjs +85 -0
  66. package/esm2022/directives/proxies.mjs +2234 -0
  67. package/{esm2020 → esm2022}/directives/validators/max-validator.mjs +4 -4
  68. package/{esm2020 → esm2022}/directives/validators/min-validator.mjs +4 -4
  69. package/{esm2020 → esm2022}/ionic-module.mjs +41 -41
  70. package/{esm2020 → esm2022}/providers/action-sheet-controller.mjs +4 -4
  71. package/{esm2020 → esm2022}/providers/alert-controller.mjs +4 -4
  72. package/{esm2020 → esm2022}/providers/animation-controller.mjs +4 -4
  73. package/esm2022/providers/gesture-controller.mjs +32 -0
  74. package/{esm2020 → esm2022}/providers/loading-controller.mjs +4 -4
  75. package/{esm2020 → esm2022}/providers/menu-controller.mjs +4 -4
  76. package/esm2022/providers/modal-controller.mjs +24 -0
  77. package/{esm2020 → esm2022}/providers/picker-controller.mjs +4 -4
  78. package/esm2022/providers/popover-controller.mjs +18 -0
  79. package/{esm2020 → esm2022}/providers/toast-controller.mjs +4 -4
  80. package/esm2022/standalone/directives/checkbox.mjs +74 -0
  81. package/esm2022/standalone/directives/datetime.mjs +93 -0
  82. package/esm2022/standalone/directives/icon.mjs +35 -0
  83. package/esm2022/standalone/directives/input.mjs +113 -0
  84. package/esm2022/standalone/directives/proxies.mjs +2138 -0
  85. package/esm2022/standalone/directives/radio-group.mjs +60 -0
  86. package/esm2022/standalone/directives/range.mjs +78 -0
  87. package/esm2022/standalone/directives/searchbar.mjs +82 -0
  88. package/esm2022/standalone/directives/segment.mjs +60 -0
  89. package/esm2022/standalone/directives/select.mjs +82 -0
  90. package/esm2022/standalone/directives/textarea.mjs +91 -0
  91. package/esm2022/standalone/directives/toggle.mjs +74 -0
  92. package/esm2022/standalone/navigation/back-button.mjs +32 -0
  93. package/esm2022/standalone/navigation/nav.mjs +28 -0
  94. package/{esm2020 → esm2022}/standalone/navigation/router-link-delegate.mjs +7 -7
  95. package/esm2022/standalone/navigation/router-outlet.mjs +60 -0
  96. package/esm2022/standalone/navigation/tabs.mjs +49 -0
  97. package/esm2022/standalone/overlays/modal.mjs +32 -0
  98. package/{esm2020 → esm2022}/standalone/overlays/popover.mjs +4 -4
  99. package/{esm2020 → esm2022}/standalone/providers/action-sheet-controller.mjs +4 -4
  100. package/{esm2020 → esm2022}/standalone/providers/alert-controller.mjs +4 -4
  101. package/{esm2020 → esm2022}/standalone/providers/animation-controller.mjs +4 -4
  102. package/esm2022/standalone/providers/gesture-controller.mjs +32 -0
  103. package/esm2022/standalone/providers/ionic-angular.mjs +38 -0
  104. package/{esm2020 → esm2022}/standalone/providers/loading-controller.mjs +4 -4
  105. package/{esm2020 → esm2022}/standalone/providers/menu-controller.mjs +4 -4
  106. package/esm2022/standalone/providers/modal-controller.mjs +26 -0
  107. package/{esm2020 → esm2022}/standalone/providers/picker-controller.mjs +4 -4
  108. package/esm2022/standalone/providers/popover-controller.mjs +20 -0
  109. package/{esm2020 → esm2022}/standalone/providers/toast-controller.mjs +4 -4
  110. package/{fesm2020 → fesm2022}/ionic-angular-common.mjs +221 -156
  111. package/fesm2022/ionic-angular-common.mjs.map +1 -0
  112. package/{fesm2020 → fesm2022}/ionic-angular-standalone.mjs +614 -416
  113. package/fesm2022/ionic-angular-standalone.mjs.map +1 -0
  114. package/{fesm2020 → fesm2022}/ionic-angular.mjs +587 -385
  115. package/fesm2022/ionic-angular.mjs.map +1 -0
  116. package/ionic-module.d.ts +1 -1
  117. package/package.json +16 -26
  118. package/schematics/add/files/root/theme/variables.css +10 -247
  119. package/schematics/utils/config.js +0 -1
  120. package/standalone/directives/checkbox.d.ts +1 -1
  121. package/standalone/directives/datetime.d.ts +1 -1
  122. package/standalone/directives/icon.d.ts +1 -1
  123. package/standalone/directives/input.d.ts +1 -1
  124. package/standalone/directives/proxies.d.ts +78 -69
  125. package/standalone/directives/radio-group.d.ts +1 -1
  126. package/standalone/directives/range.d.ts +1 -1
  127. package/standalone/directives/searchbar.d.ts +1 -1
  128. package/standalone/directives/segment.d.ts +1 -1
  129. package/standalone/directives/select.d.ts +1 -1
  130. package/standalone/directives/textarea.d.ts +1 -1
  131. package/standalone/directives/toggle.d.ts +1 -1
  132. package/standalone/navigation/back-button.d.ts +1 -1
  133. package/standalone/navigation/nav.d.ts +1 -1
  134. package/standalone/navigation/router-link-delegate.d.ts +2 -2
  135. package/standalone/navigation/router-outlet.d.ts +3 -3
  136. package/standalone/navigation/tabs.d.ts +1 -1
  137. package/standalone/overlays/modal.d.ts +1 -1
  138. package/standalone/overlays/popover.d.ts +1 -1
  139. package/standalone/providers/ionic-angular.d.ts +2 -2
  140. package/css/themes/dark.always.css.map +0 -1
  141. package/css/themes/dark.class.css.map +0 -1
  142. package/css/themes/dark.system.css.map +0 -1
  143. package/css/themes/high-contrast-dark.always.css.map +0 -1
  144. package/css/themes/high-contrast-dark.class.css.map +0 -1
  145. package/css/themes/high-contrast-dark.system.css.map +0 -1
  146. package/css/themes/high-contrast.always.css.map +0 -1
  147. package/css/themes/high-contrast.class.css.map +0 -1
  148. package/css/themes/high-contrast.system.css.map +0 -1
  149. package/esm2020/common/directives/control-value-accessors/value-accessor.mjs +0 -141
  150. package/esm2020/common/directives/navigation/back-button.mjs +0 -59
  151. package/esm2020/common/directives/navigation/nav-params.mjs +0 -45
  152. package/esm2020/common/directives/navigation/nav.mjs +0 -47
  153. package/esm2020/common/directives/navigation/router-link-delegate.mjs +0 -111
  154. package/esm2020/common/directives/navigation/router-outlet.mjs +0 -470
  155. package/esm2020/common/directives/navigation/stack-controller.mjs +0 -272
  156. package/esm2020/common/directives/navigation/tabs.mjs +0 -172
  157. package/esm2020/common/overlays/modal.mjs +0 -87
  158. package/esm2020/common/overlays/popover.mjs +0 -79
  159. package/esm2020/common/providers/angular-delegate.mjs +0 -152
  160. package/esm2020/common/providers/menu-controller.mjs +0 -113
  161. package/esm2020/common/providers/nav-controller.mjs +0 -221
  162. package/esm2020/common/providers/platform.mjs +0 -254
  163. package/esm2020/common/utils/overlay.mjs +0 -25
  164. package/esm2020/directives/control-value-accessors/boolean-value-accessor.mjs +0 -41
  165. package/esm2020/directives/control-value-accessors/numeric-value-accessor.mjs +0 -48
  166. package/esm2020/directives/control-value-accessors/select-value-accessor.mjs +0 -38
  167. package/esm2020/directives/control-value-accessors/text-value-accessor.mjs +0 -37
  168. package/esm2020/directives/navigation/ion-router-outlet.mjs +0 -43
  169. package/esm2020/directives/navigation/ion-tabs.mjs +0 -47
  170. package/esm2020/directives/proxies-list.mjs +0 -84
  171. package/esm2020/directives/proxies.mjs +0 -2047
  172. package/esm2020/providers/gesture-controller.mjs +0 -31
  173. package/esm2020/providers/modal-controller.mjs +0 -24
  174. package/esm2020/providers/popover-controller.mjs +0 -18
  175. package/esm2020/standalone/directives/checkbox.mjs +0 -72
  176. package/esm2020/standalone/directives/datetime.mjs +0 -91
  177. package/esm2020/standalone/directives/icon.mjs +0 -33
  178. package/esm2020/standalone/directives/input.mjs +0 -111
  179. package/esm2020/standalone/directives/proxies.mjs +0 -1970
  180. package/esm2020/standalone/directives/radio-group.mjs +0 -58
  181. package/esm2020/standalone/directives/range.mjs +0 -76
  182. package/esm2020/standalone/directives/searchbar.mjs +0 -80
  183. package/esm2020/standalone/directives/segment.mjs +0 -58
  184. package/esm2020/standalone/directives/select.mjs +0 -80
  185. package/esm2020/standalone/directives/textarea.mjs +0 -89
  186. package/esm2020/standalone/directives/toggle.mjs +0 -72
  187. package/esm2020/standalone/navigation/back-button.mjs +0 -32
  188. package/esm2020/standalone/navigation/nav.mjs +0 -28
  189. package/esm2020/standalone/navigation/router-outlet.mjs +0 -51
  190. package/esm2020/standalone/navigation/tabs.mjs +0 -46
  191. package/esm2020/standalone/overlays/modal.mjs +0 -32
  192. package/esm2020/standalone/providers/gesture-controller.mjs +0 -31
  193. package/esm2020/standalone/providers/ionic-angular.mjs +0 -43
  194. package/esm2020/standalone/providers/modal-controller.mjs +0 -26
  195. package/esm2020/standalone/providers/popover-controller.mjs +0 -20
  196. package/fesm2015/ionic-angular-common.mjs +0 -2484
  197. package/fesm2015/ionic-angular-common.mjs.map +0 -1
  198. package/fesm2015/ionic-angular-standalone.mjs +0 -3146
  199. package/fesm2015/ionic-angular-standalone.mjs.map +0 -1
  200. package/fesm2015/ionic-angular.mjs +0 -2790
  201. package/fesm2015/ionic-angular.mjs.map +0 -1
  202. package/fesm2020/ionic-angular-common.mjs.map +0 -1
  203. package/fesm2020/ionic-angular-standalone.mjs.map +0 -1
  204. package/fesm2020/ionic-angular.mjs.map +0 -1
  205. package/test/README.md +0 -118
  206. package/css/{themes → palettes}/dark.always.css +0 -0
  207. package/css/{themes → palettes}/dark.css +0 -0
  208. package/css/{themes → palettes}/dark.css.map +0 -0
  209. package/css/{themes → palettes}/dark.system.css +0 -0
  210. package/css/{themes → palettes}/high-contrast-dark.always.css +1 -1
  211. package/css/{themes → palettes}/high-contrast-dark.css +0 -0
  212. package/css/{themes → palettes}/high-contrast-dark.css.map +0 -0
  213. package/css/{themes → palettes}/high-contrast-dark.system.css +1 -1
  214. package/css/{themes → palettes}/high-contrast.always.css +25 -25
  215. package/css/{themes → palettes}/high-contrast.css +0 -0
  216. package/css/{themes → palettes}/high-contrast.css.map +0 -0
  217. package/css/{themes → palettes}/high-contrast.system.css +25 -25
  218. /package/{esm2020 → esm2022}/app-initialize.mjs +0 -0
  219. /package/{esm2020 → esm2022}/common/directives/control-value-accessors/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/common/directives/navigation/stack-utils.mjs +0 -0
  221. /package/{esm2020 → esm2022}/common/index.mjs +0 -0
  222. /package/{esm2020 → esm2022}/common/ionic-angular-common.mjs +0 -0
  223. /package/{esm2020 → esm2022}/common/types/interfaces.mjs +0 -0
  224. /package/{esm2020 → esm2022}/common/types/ionic-lifecycle-hooks.mjs +0 -0
  225. /package/{esm2020 → esm2022}/common/utils/proxy.mjs +0 -0
  226. /package/{esm2020 → esm2022}/common/utils/routing.mjs +0 -0
  227. /package/{esm2020 → esm2022}/common/utils/util.mjs +0 -0
  228. /package/{esm2020 → esm2022}/directives/angular-component-lib/utils.mjs +0 -0
  229. /package/{esm2020 → esm2022}/directives/control-value-accessors/index.mjs +0 -0
  230. /package/{esm2020 → esm2022}/directives/validators/index.mjs +0 -0
  231. /package/{esm2020 → esm2022}/index.mjs +0 -0
  232. /package/{esm2020 → esm2022}/ionic-angular.mjs +0 -0
  233. /package/{esm2020 → esm2022}/standalone/directives/angular-component-lib/utils.mjs +0 -0
  234. /package/{esm2020 → esm2022}/standalone/directives/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/standalone/index.mjs +0 -0
  236. /package/{esm2020 → esm2022}/standalone/ionic-angular-standalone.mjs +0 -0
@@ -0,0 +1,280 @@
1
+ import { bindLifecycleEvents } from '../../providers/angular-delegate';
2
+ import { computeStackId, destroyView, getUrl, insertView, isTabSwitch, toSegments, } from './stack-utils';
3
+ // TODO(FW-2827): types
4
+ export class StackController {
5
+ containerEl;
6
+ router;
7
+ navCtrl;
8
+ zone;
9
+ location;
10
+ views = [];
11
+ runningTask;
12
+ skipTransition = false;
13
+ tabsPrefix;
14
+ activeView;
15
+ nextId = 0;
16
+ constructor(tabsPrefix, containerEl, router, navCtrl, zone, location) {
17
+ this.containerEl = containerEl;
18
+ this.router = router;
19
+ this.navCtrl = navCtrl;
20
+ this.zone = zone;
21
+ this.location = location;
22
+ this.tabsPrefix = tabsPrefix !== undefined ? toSegments(tabsPrefix) : undefined;
23
+ }
24
+ createView(ref, activatedRoute) {
25
+ const url = getUrl(this.router, activatedRoute);
26
+ const element = ref?.location?.nativeElement;
27
+ const unlistenEvents = bindLifecycleEvents(this.zone, ref.instance, element);
28
+ return {
29
+ id: this.nextId++,
30
+ stackId: computeStackId(this.tabsPrefix, url),
31
+ unlistenEvents,
32
+ element,
33
+ ref,
34
+ url,
35
+ };
36
+ }
37
+ getExistingView(activatedRoute) {
38
+ const activatedUrlKey = getUrl(this.router, activatedRoute);
39
+ const view = this.views.find((vw) => vw.url === activatedUrlKey);
40
+ if (view) {
41
+ view.ref.changeDetectorRef.reattach();
42
+ }
43
+ return view;
44
+ }
45
+ setActive(enteringView) {
46
+ const consumeResult = this.navCtrl.consumeTransition();
47
+ let { direction, animation, animationBuilder } = consumeResult;
48
+ const leavingView = this.activeView;
49
+ const tabSwitch = isTabSwitch(enteringView, leavingView);
50
+ if (tabSwitch) {
51
+ direction = 'back';
52
+ animation = undefined;
53
+ }
54
+ const viewsSnapshot = this.views.slice();
55
+ let currentNavigation;
56
+ const router = this.router;
57
+ // Angular >= 7.2.0
58
+ if (router.getCurrentNavigation) {
59
+ currentNavigation = router.getCurrentNavigation();
60
+ // Angular < 7.2.0
61
+ }
62
+ else if (router.navigations?.value) {
63
+ currentNavigation = router.navigations.value;
64
+ }
65
+ /**
66
+ * If the navigation action
67
+ * sets `replaceUrl: true`
68
+ * then we need to make sure
69
+ * we remove the last item
70
+ * from our views stack
71
+ */
72
+ if (currentNavigation?.extras?.replaceUrl) {
73
+ if (this.views.length > 0) {
74
+ this.views.splice(-1, 1);
75
+ }
76
+ }
77
+ const reused = this.views.includes(enteringView);
78
+ const views = this.insertView(enteringView, direction);
79
+ // Trigger change detection before transition starts
80
+ // This will call ngOnInit() the first time too, just after the view
81
+ // was attached to the dom, but BEFORE the transition starts
82
+ if (!reused) {
83
+ enteringView.ref.changeDetectorRef.detectChanges();
84
+ }
85
+ /**
86
+ * If we are going back from a page that
87
+ * was presented using a custom animation
88
+ * we should default to using that
89
+ * unless the developer explicitly
90
+ * provided another animation.
91
+ */
92
+ const customAnimation = enteringView.animationBuilder;
93
+ if (animationBuilder === undefined && direction === 'back' && !tabSwitch && customAnimation !== undefined) {
94
+ animationBuilder = customAnimation;
95
+ }
96
+ /**
97
+ * Save any custom animation so that navigating
98
+ * back will use this custom animation by default.
99
+ */
100
+ if (leavingView) {
101
+ leavingView.animationBuilder = animationBuilder;
102
+ }
103
+ // Wait until previous transitions finish
104
+ return this.zone.runOutsideAngular(() => {
105
+ return this.wait(() => {
106
+ // disconnect leaving page from change detection to
107
+ // reduce jank during the page transition
108
+ if (leavingView) {
109
+ leavingView.ref.changeDetectorRef.detach();
110
+ }
111
+ // In case the enteringView is the same as the leavingPage we need to reattach()
112
+ enteringView.ref.changeDetectorRef.reattach();
113
+ return this.transition(enteringView, leavingView, animation, this.canGoBack(1), false, animationBuilder)
114
+ .then(() => cleanupAsync(enteringView, views, viewsSnapshot, this.location, this.zone))
115
+ .then(() => ({
116
+ enteringView,
117
+ direction,
118
+ animation,
119
+ tabSwitch,
120
+ }));
121
+ });
122
+ });
123
+ }
124
+ canGoBack(deep, stackId = this.getActiveStackId()) {
125
+ return this.getStack(stackId).length > deep;
126
+ }
127
+ pop(deep, stackId = this.getActiveStackId()) {
128
+ return this.zone.run(() => {
129
+ const views = this.getStack(stackId);
130
+ if (views.length <= deep) {
131
+ return Promise.resolve(false);
132
+ }
133
+ const view = views[views.length - deep - 1];
134
+ let url = view.url;
135
+ const viewSavedData = view.savedData;
136
+ if (viewSavedData) {
137
+ const primaryOutlet = viewSavedData.get('primary');
138
+ if (primaryOutlet?.route?._routerState?.snapshot.url) {
139
+ url = primaryOutlet.route._routerState.snapshot.url;
140
+ }
141
+ }
142
+ const { animationBuilder } = this.navCtrl.consumeTransition();
143
+ return this.navCtrl.navigateBack(url, { ...view.savedExtras, animation: animationBuilder }).then(() => true);
144
+ });
145
+ }
146
+ startBackTransition() {
147
+ const leavingView = this.activeView;
148
+ if (leavingView) {
149
+ const views = this.getStack(leavingView.stackId);
150
+ const enteringView = views[views.length - 2];
151
+ const customAnimation = enteringView.animationBuilder;
152
+ return this.wait(() => {
153
+ return this.transition(enteringView, // entering view
154
+ leavingView, // leaving view
155
+ 'back', this.canGoBack(2), true, customAnimation);
156
+ });
157
+ }
158
+ return Promise.resolve();
159
+ }
160
+ endBackTransition(shouldComplete) {
161
+ if (shouldComplete) {
162
+ this.skipTransition = true;
163
+ this.pop(1);
164
+ }
165
+ else if (this.activeView) {
166
+ cleanup(this.activeView, this.views, this.views, this.location, this.zone);
167
+ }
168
+ }
169
+ getLastUrl(stackId) {
170
+ const views = this.getStack(stackId);
171
+ return views.length > 0 ? views[views.length - 1] : undefined;
172
+ }
173
+ /**
174
+ * @internal
175
+ */
176
+ getRootUrl(stackId) {
177
+ const views = this.getStack(stackId);
178
+ return views.length > 0 ? views[0] : undefined;
179
+ }
180
+ getActiveStackId() {
181
+ return this.activeView ? this.activeView.stackId : undefined;
182
+ }
183
+ /**
184
+ * @internal
185
+ */
186
+ getActiveView() {
187
+ return this.activeView;
188
+ }
189
+ hasRunningTask() {
190
+ return this.runningTask !== undefined;
191
+ }
192
+ destroy() {
193
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
194
+ this.containerEl = undefined;
195
+ this.views.forEach(destroyView);
196
+ this.activeView = undefined;
197
+ this.views = [];
198
+ }
199
+ getStack(stackId) {
200
+ return this.views.filter((v) => v.stackId === stackId);
201
+ }
202
+ insertView(enteringView, direction) {
203
+ this.activeView = enteringView;
204
+ this.views = insertView(this.views, enteringView, direction);
205
+ return this.views.slice();
206
+ }
207
+ transition(enteringView, leavingView, direction, showGoBack, progressAnimation, animationBuilder) {
208
+ if (this.skipTransition) {
209
+ this.skipTransition = false;
210
+ return Promise.resolve(false);
211
+ }
212
+ if (leavingView === enteringView) {
213
+ return Promise.resolve(false);
214
+ }
215
+ const enteringEl = enteringView ? enteringView.element : undefined;
216
+ const leavingEl = leavingView ? leavingView.element : undefined;
217
+ const containerEl = this.containerEl;
218
+ if (enteringEl && enteringEl !== leavingEl) {
219
+ enteringEl.classList.add('ion-page');
220
+ enteringEl.classList.add('ion-page-invisible');
221
+ if (containerEl.commit) {
222
+ return containerEl.commit(enteringEl, leavingEl, {
223
+ duration: direction === undefined ? 0 : undefined,
224
+ direction,
225
+ showGoBack,
226
+ progressAnimation,
227
+ animationBuilder,
228
+ });
229
+ }
230
+ }
231
+ return Promise.resolve(false);
232
+ }
233
+ async wait(task) {
234
+ if (this.runningTask !== undefined) {
235
+ await this.runningTask;
236
+ this.runningTask = undefined;
237
+ }
238
+ const promise = (this.runningTask = task());
239
+ promise.finally(() => (this.runningTask = undefined));
240
+ return promise;
241
+ }
242
+ }
243
+ const cleanupAsync = (activeRoute, views, viewsSnapshot, location, zone) => {
244
+ if (typeof requestAnimationFrame === 'function') {
245
+ return new Promise((resolve) => {
246
+ requestAnimationFrame(() => {
247
+ cleanup(activeRoute, views, viewsSnapshot, location, zone);
248
+ resolve();
249
+ });
250
+ });
251
+ }
252
+ return Promise.resolve();
253
+ };
254
+ const cleanup = (activeRoute, views, viewsSnapshot, location, zone) => {
255
+ /**
256
+ * Re-enter the Angular zone when destroying page components. This will allow
257
+ * lifecycle events (`ngOnDestroy`) to be run inside the Angular zone.
258
+ */
259
+ zone.run(() => viewsSnapshot.filter((view) => !views.includes(view)).forEach(destroyView));
260
+ views.forEach((view) => {
261
+ /**
262
+ * In the event that a user navigated multiple
263
+ * times in rapid succession, we want to make sure
264
+ * we don't pre-emptively detach a view while
265
+ * it is in mid-transition.
266
+ *
267
+ * In this instance we also do not care about query
268
+ * params or fragments as it will be the same view regardless
269
+ */
270
+ const locationWithoutParams = location.path().split('?')[0];
271
+ const locationWithoutFragment = locationWithoutParams.split('#')[0];
272
+ if (view !== activeRoute && view.url !== locationWithoutFragment) {
273
+ const element = view.element;
274
+ element.setAttribute('aria-hidden', 'true');
275
+ element.classList.add('ion-page-hidden');
276
+ view.ref.changeDetectorRef.detach();
277
+ }
278
+ });
279
+ };
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvZGlyZWN0aXZlcy9uYXZpZ2F0aW9uL3N0YWNrLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHdkUsT0FBTyxFQUdMLGNBQWMsRUFDZCxXQUFXLEVBQ1gsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLHVCQUF1QjtBQUV2QixNQUFNLE9BQU8sZUFBZTtJQVVoQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBYkYsS0FBSyxHQUFnQixFQUFFLENBQUM7SUFDeEIsV0FBVyxDQUFnQjtJQUMzQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFVBQVUsQ0FBdUI7SUFDakMsVUFBVSxDQUF3QjtJQUNsQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLFlBQ0UsVUFBOEIsRUFDdEIsV0FBdUMsRUFDdkMsTUFBYyxFQUNkLE9BQXNCLEVBQ3RCLElBQVksRUFDWixRQUFrQjtRQUpsQixnQkFBVyxHQUFYLFdBQVcsQ0FBNEI7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXNCLEVBQUUsY0FBOEI7UUFDL0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxhQUE0QixDQUFDO1FBQzVELE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3RSxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDakIsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQztZQUM3QyxjQUFjO1lBQ2QsT0FBTztZQUNQLEdBQUc7WUFDSCxHQUFHO1NBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsY0FBOEI7UUFDNUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssZUFBZSxDQUFDLENBQUM7UUFDakUsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLFlBQXVCO1FBQy9CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2RCxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLGFBQWEsQ0FBQztRQUMvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekQsSUFBSSxTQUFTLEVBQUU7WUFDYixTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ25CLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDdkI7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXpDLElBQUksaUJBQWlCLENBQUM7UUFFdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQWEsQ0FBQztRQUVsQyxtQkFBbUI7UUFDbkIsSUFBSSxNQUFNLENBQUMsb0JBQW9CLEVBQUU7WUFDL0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFFbEQsa0JBQWtCO1NBQ25CO2FBQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRTtZQUNwQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztTQUM5QztRQUVEOzs7Ozs7V0FNRztRQUNILElBQUksaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXZELG9EQUFvRDtRQUNwRCxvRUFBb0U7UUFDcEUsNERBQTREO1FBQzVELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxZQUFZLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3BEO1FBRUQ7Ozs7OztXQU1HO1FBQ0gsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1FBQ3RELElBQUksZ0JBQWdCLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksQ0FBQyxTQUFTLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRTtZQUN6RyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7U0FDcEM7UUFFRDs7O1dBR0c7UUFDSCxJQUFJLFdBQVcsRUFBRTtZQUNmLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztTQUNqRDtRQUVELHlDQUF5QztRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLG1EQUFtRDtnQkFDbkQseUNBQXlDO2dCQUN6QyxJQUFJLFdBQVcsRUFBRTtvQkFDZixXQUFXLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUM1QztnQkFDRCxnRkFBZ0Y7Z0JBQ2hGLFlBQVksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRTlDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztxQkFDckcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDdEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ1gsWUFBWTtvQkFDWixTQUFTO29CQUNULFNBQVM7b0JBQ1QsU0FBUztpQkFDVixDQUFDLENBQUMsQ0FBQztZQUNSLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVksRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO2dCQUN4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDL0I7WUFDRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUVuQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksYUFBYSxFQUFFO2dCQUNqQixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLGFBQWEsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUU7b0JBQ3BELEdBQUcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2lCQUNyRDthQUNGO1lBQ0QsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9HLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0MsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1lBRXRELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FDcEIsWUFBWSxFQUFFLGdCQUFnQjtnQkFDOUIsV0FBVyxFQUFFLGVBQWU7Z0JBQzVCLE1BQU0sRUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNqQixJQUFJLEVBQ0osZUFBZSxDQUNoQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUF1QjtRQUN2QyxJQUFJLGNBQWMsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2I7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVFO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTztRQUNMLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQTJCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxZQUF1QixFQUFFLFNBQTBCO1FBQ3BFLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sVUFBVSxDQUNoQixZQUFtQyxFQUNuQyxXQUFrQyxFQUNsQyxTQUF5QyxFQUN6QyxVQUFtQixFQUNuQixpQkFBMEIsRUFDMUIsZ0JBQW1DO1FBRW5DLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0I7UUFDRCxJQUFJLFdBQVcsS0FBSyxZQUFZLEVBQUU7WUFDaEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbkUsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLFVBQVUsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQzFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFFL0MsSUFBSyxXQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDL0IsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7b0JBQy9DLFFBQVEsRUFBRSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7b0JBQ2pELFNBQVM7b0JBQ1QsVUFBVTtvQkFDVixpQkFBaUI7b0JBQ2pCLGdCQUFnQjtpQkFDakIsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUksQ0FBSSxJQUFzQjtRQUMxQyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztTQUM5QjtRQUNELE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FDbkIsV0FBc0IsRUFDdEIsS0FBa0IsRUFDbEIsYUFBMEIsRUFDMUIsUUFBa0IsRUFDbEIsSUFBWSxFQUNaLEVBQUU7SUFDRixJQUFJLE9BQVEscUJBQTZCLEtBQUssVUFBVSxFQUFFO1FBQ3hELE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUcsQ0FDZCxXQUFzQixFQUN0QixLQUFrQixFQUNsQixhQUEwQixFQUMxQixRQUFrQixFQUNsQixJQUFZLEVBQ1osRUFBRTtJQUNGOzs7T0FHRztJQUNILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFM0YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3JCOzs7Ozs7OztXQVFHO1FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sdUJBQXVCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBFLElBQUksSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLHVCQUF1QixFQUFFO1lBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDN0IsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbkJ1aWxkZXIsIFJvdXRlckRpcmVjdGlvbiB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBiaW5kTGlmZWN5Y2xlRXZlbnRzIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2FuZ3VsYXItZGVsZWdhdGUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9uYXYtY29udHJvbGxlcic7XG5cbmltcG9ydCB7XG4gIFJvdXRlVmlldyxcbiAgU3RhY2tEaWRDaGFuZ2VFdmVudCxcbiAgY29tcHV0ZVN0YWNrSWQsXG4gIGRlc3Ryb3lWaWV3LFxuICBnZXRVcmwsXG4gIGluc2VydFZpZXcsXG4gIGlzVGFiU3dpdGNoLFxuICB0b1NlZ21lbnRzLFxufSBmcm9tICcuL3N0YWNrLXV0aWxzJztcblxuLy8gVE9ETyhGVy0yODI3KTogdHlwZXNcblxuZXhwb3J0IGNsYXNzIFN0YWNrQ29udHJvbGxlciB7XG4gIHByaXZhdGUgdmlld3M6IFJvdXRlVmlld1tdID0gW107XG4gIHByaXZhdGUgcnVubmluZ1Rhc2s/OiBQcm9taXNlPGFueT47XG4gIHByaXZhdGUgc2tpcFRyYW5zaXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB0YWJzUHJlZml4OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhY3RpdmVWaWV3OiBSb3V0ZVZpZXcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbmV4dElkID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWJzUHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZSBjb250YWluZXJFbDogSFRNTElvblJvdXRlck91dGxldEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgdGhpcy50YWJzUHJlZml4ID0gdGFic1ByZWZpeCAhPT0gdW5kZWZpbmVkID8gdG9TZWdtZW50cyh0YWJzUHJlZml4KSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNyZWF0ZVZpZXcocmVmOiBDb21wb25lbnRSZWY8YW55PiwgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKTogUm91dGVWaWV3IHtcbiAgICBjb25zdCB1cmwgPSBnZXRVcmwodGhpcy5yb3V0ZXIsIGFjdGl2YXRlZFJvdXRlKTtcbiAgICBjb25zdCBlbGVtZW50ID0gcmVmPy5sb2NhdGlvbj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB1bmxpc3RlbkV2ZW50cyA9IGJpbmRMaWZlY3ljbGVFdmVudHModGhpcy56b25lLCByZWYuaW5zdGFuY2UsIGVsZW1lbnQpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5uZXh0SWQrKyxcbiAgICAgIHN0YWNrSWQ6IGNvbXB1dGVTdGFja0lkKHRoaXMudGFic1ByZWZpeCwgdXJsKSxcbiAgICAgIHVubGlzdGVuRXZlbnRzLFxuICAgICAgZWxlbWVudCxcbiAgICAgIHJlZixcbiAgICAgIHVybCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RXhpc3RpbmdWaWV3KGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IFJvdXRlVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWN0aXZhdGVkVXJsS2V5ID0gZ2V0VXJsKHRoaXMucm91dGVyLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgY29uc3QgdmlldyA9IHRoaXMudmlld3MuZmluZCgodncpID0+IHZ3LnVybCA9PT0gYWN0aXZhdGVkVXJsS2V5KTtcbiAgICBpZiAodmlldykge1xuICAgICAgdmlldy5yZWYuY2hhbmdlRGV0ZWN0b3JSZWYucmVhdHRhY2goKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpZXc7XG4gIH1cblxuICBzZXRBY3RpdmUoZW50ZXJpbmdWaWV3OiBSb3V0ZVZpZXcpOiBQcm9taXNlPFN0YWNrRGlkQ2hhbmdlRXZlbnQ+IHtcbiAgICBjb25zdCBjb25zdW1lUmVzdWx0ID0gdGhpcy5uYXZDdHJsLmNvbnN1bWVUcmFuc2l0aW9uKCk7XG4gICAgbGV0IHsgZGlyZWN0aW9uLCBhbmltYXRpb24sIGFuaW1hdGlvbkJ1aWxkZXIgfSA9IGNvbnN1bWVSZXN1bHQ7XG4gICAgY29uc3QgbGVhdmluZ1ZpZXcgPSB0aGlzLmFjdGl2ZVZpZXc7XG4gICAgY29uc3QgdGFiU3dpdGNoID0gaXNUYWJTd2l0Y2goZW50ZXJpbmdWaWV3LCBsZWF2aW5nVmlldyk7XG4gICAgaWYgKHRhYlN3aXRjaCkge1xuICAgICAgZGlyZWN0aW9uID0gJ2JhY2snO1xuICAgICAgYW5pbWF0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdzU25hcHNob3QgPSB0aGlzLnZpZXdzLnNsaWNlKCk7XG5cbiAgICBsZXQgY3VycmVudE5hdmlnYXRpb247XG5cbiAgICBjb25zdCByb3V0ZXIgPSB0aGlzLnJvdXRlciBhcyBhbnk7XG5cbiAgICAvLyBBbmd1bGFyID49IDcuMi4wXG4gICAgaWYgKHJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbikge1xuICAgICAgY3VycmVudE5hdmlnYXRpb24gPSByb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcblxuICAgICAgLy8gQW5ndWxhciA8IDcuMi4wXG4gICAgfSBlbHNlIGlmIChyb3V0ZXIubmF2aWdhdGlvbnM/LnZhbHVlKSB7XG4gICAgICBjdXJyZW50TmF2aWdhdGlvbiA9IHJvdXRlci5uYXZpZ2F0aW9ucy52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgbmF2aWdhdGlvbiBhY3Rpb25cbiAgICAgKiBzZXRzIGByZXBsYWNlVXJsOiB0cnVlYFxuICAgICAqIHRoZW4gd2UgbmVlZCB0byBtYWtlIHN1cmVcbiAgICAgKiB3ZSByZW1vdmUgdGhlIGxhc3QgaXRlbVxuICAgICAqIGZyb20gb3VyIHZpZXdzIHN0YWNrXG4gICAgICovXG4gICAgaWYgKGN1cnJlbnROYXZpZ2F0aW9uPy5leHRyYXM/LnJlcGxhY2VVcmwpIHtcbiAgICAgIGlmICh0aGlzLnZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy52aWV3cy5zcGxpY2UoLTEsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJldXNlZCA9IHRoaXMudmlld3MuaW5jbHVkZXMoZW50ZXJpbmdWaWV3KTtcbiAgICBjb25zdCB2aWV3cyA9IHRoaXMuaW5zZXJ0VmlldyhlbnRlcmluZ1ZpZXcsIGRpcmVjdGlvbik7XG5cbiAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gYmVmb3JlIHRyYW5zaXRpb24gc3RhcnRzXG4gICAgLy8gVGhpcyB3aWxsIGNhbGwgbmdPbkluaXQoKSB0aGUgZmlyc3QgdGltZSB0b28sIGp1c3QgYWZ0ZXIgdGhlIHZpZXdcbiAgICAvLyB3YXMgYXR0YWNoZWQgdG8gdGhlIGRvbSwgYnV0IEJFRk9SRSB0aGUgdHJhbnNpdGlvbiBzdGFydHNcbiAgICBpZiAoIXJldXNlZCkge1xuICAgICAgZW50ZXJpbmdWaWV3LnJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UgYXJlIGdvaW5nIGJhY2sgZnJvbSBhIHBhZ2UgdGhhdFxuICAgICAqIHdhcyBwcmVzZW50ZWQgdXNpbmcgYSBjdXN0b20gYW5pbWF0aW9uXG4gICAgICogd2Ugc2hvdWxkIGRlZmF1bHQgdG8gdXNpbmcgdGhhdFxuICAgICAqIHVubGVzcyB0aGUgZGV2ZWxvcGVyIGV4cGxpY2l0bHlcbiAgICAgKiBwcm92aWRlZCBhbm90aGVyIGFuaW1hdGlvbi5cbiAgICAgKi9cbiAgICBjb25zdCBjdXN0b21BbmltYXRpb24gPSBlbnRlcmluZ1ZpZXcuYW5pbWF0aW9uQnVpbGRlcjtcbiAgICBpZiAoYW5pbWF0aW9uQnVpbGRlciA9PT0gdW5kZWZpbmVkICYmIGRpcmVjdGlvbiA9PT0gJ2JhY2snICYmICF0YWJTd2l0Y2ggJiYgY3VzdG9tQW5pbWF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFuaW1hdGlvbkJ1aWxkZXIgPSBjdXN0b21BbmltYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZSBhbnkgY3VzdG9tIGFuaW1hdGlvbiBzbyB0aGF0IG5hdmlnYXRpbmdcbiAgICAgKiBiYWNrIHdpbGwgdXNlIHRoaXMgY3VzdG9tIGFuaW1hdGlvbiBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIGlmIChsZWF2aW5nVmlldykge1xuICAgICAgbGVhdmluZ1ZpZXcuYW5pbWF0aW9uQnVpbGRlciA9IGFuaW1hdGlvbkJ1aWxkZXI7XG4gICAgfVxuXG4gICAgLy8gV2FpdCB1bnRpbCBwcmV2aW91cyB0cmFuc2l0aW9ucyBmaW5pc2hcbiAgICByZXR1cm4gdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLndhaXQoKCkgPT4ge1xuICAgICAgICAvLyBkaXNjb25uZWN0IGxlYXZpbmcgcGFnZSBmcm9tIGNoYW5nZSBkZXRlY3Rpb24gdG9cbiAgICAgICAgLy8gcmVkdWNlIGphbmsgZHVyaW5nIHRoZSBwYWdlIHRyYW5zaXRpb25cbiAgICAgICAgaWYgKGxlYXZpbmdWaWV3KSB7XG4gICAgICAgICAgbGVhdmluZ1ZpZXcucmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGFjaCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIGVudGVyaW5nVmlldyBpcyB0aGUgc2FtZSBhcyB0aGUgbGVhdmluZ1BhZ2Ugd2UgbmVlZCB0byByZWF0dGFjaCgpXG4gICAgICAgIGVudGVyaW5nVmlldy5yZWYuY2hhbmdlRGV0ZWN0b3JSZWYucmVhdHRhY2goKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uKGVudGVyaW5nVmlldywgbGVhdmluZ1ZpZXcsIGFuaW1hdGlvbiwgdGhpcy5jYW5Hb0JhY2soMSksIGZhbHNlLCBhbmltYXRpb25CdWlsZGVyKVxuICAgICAgICAgIC50aGVuKCgpID0+IGNsZWFudXBBc3luYyhlbnRlcmluZ1ZpZXcsIHZpZXdzLCB2aWV3c1NuYXBzaG90LCB0aGlzLmxvY2F0aW9uLCB0aGlzLnpvbmUpKVxuICAgICAgICAgIC50aGVuKCgpID0+ICh7XG4gICAgICAgICAgICBlbnRlcmluZ1ZpZXcsXG4gICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICBhbmltYXRpb24sXG4gICAgICAgICAgICB0YWJTd2l0Y2gsXG4gICAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjYW5Hb0JhY2soZGVlcDogbnVtYmVyLCBzdGFja0lkID0gdGhpcy5nZXRBY3RpdmVTdGFja0lkKCkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhzdGFja0lkKS5sZW5ndGggPiBkZWVwO1xuICB9XG5cbiAgcG9wKGRlZXA6IG51bWJlciwgc3RhY2tJZCA9IHRoaXMuZ2V0QWN0aXZlU3RhY2tJZCgpKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3Qgdmlld3MgPSB0aGlzLmdldFN0YWNrKHN0YWNrSWQpO1xuICAgICAgaWYgKHZpZXdzLmxlbmd0aCA8PSBkZWVwKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmlldyA9IHZpZXdzW3ZpZXdzLmxlbmd0aCAtIGRlZXAgLSAxXTtcbiAgICAgIGxldCB1cmwgPSB2aWV3LnVybDtcblxuICAgICAgY29uc3Qgdmlld1NhdmVkRGF0YSA9IHZpZXcuc2F2ZWREYXRhO1xuICAgICAgaWYgKHZpZXdTYXZlZERhdGEpIHtcbiAgICAgICAgY29uc3QgcHJpbWFyeU91dGxldCA9IHZpZXdTYXZlZERhdGEuZ2V0KCdwcmltYXJ5Jyk7XG4gICAgICAgIGlmIChwcmltYXJ5T3V0bGV0Py5yb3V0ZT8uX3JvdXRlclN0YXRlPy5zbmFwc2hvdC51cmwpIHtcbiAgICAgICAgICB1cmwgPSBwcmltYXJ5T3V0bGV0LnJvdXRlLl9yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYW5pbWF0aW9uQnVpbGRlciB9ID0gdGhpcy5uYXZDdHJsLmNvbnN1bWVUcmFuc2l0aW9uKCk7XG4gICAgICByZXR1cm4gdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayh1cmwsIHsgLi4udmlldy5zYXZlZEV4dHJhcywgYW5pbWF0aW9uOiBhbmltYXRpb25CdWlsZGVyIH0pLnRoZW4oKCkgPT4gdHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGFydEJhY2tUcmFuc2l0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4gfCBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsZWF2aW5nVmlldyA9IHRoaXMuYWN0aXZlVmlldztcbiAgICBpZiAobGVhdmluZ1ZpZXcpIHtcbiAgICAgIGNvbnN0IHZpZXdzID0gdGhpcy5nZXRTdGFjayhsZWF2aW5nVmlldy5zdGFja0lkKTtcbiAgICAgIGNvbnN0IGVudGVyaW5nVmlldyA9IHZpZXdzW3ZpZXdzLmxlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgY3VzdG9tQW5pbWF0aW9uID0gZW50ZXJpbmdWaWV3LmFuaW1hdGlvbkJ1aWxkZXI7XG5cbiAgICAgIHJldHVybiB0aGlzLndhaXQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uKFxuICAgICAgICAgIGVudGVyaW5nVmlldywgLy8gZW50ZXJpbmcgdmlld1xuICAgICAgICAgIGxlYXZpbmdWaWV3LCAvLyBsZWF2aW5nIHZpZXdcbiAgICAgICAgICAnYmFjaycsXG4gICAgICAgICAgdGhpcy5jYW5Hb0JhY2soMiksXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBjdXN0b21BbmltYXRpb25cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBlbmRCYWNrVHJhbnNpdGlvbihzaG91bGRDb21wbGV0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzaG91bGRDb21wbGV0ZSkge1xuICAgICAgdGhpcy5za2lwVHJhbnNpdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLnBvcCgxKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgY2xlYW51cCh0aGlzLmFjdGl2ZVZpZXcsIHRoaXMudmlld3MsIHRoaXMudmlld3MsIHRoaXMubG9jYXRpb24sIHRoaXMuem9uZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGFzdFVybChzdGFja0lkPzogc3RyaW5nKTogUm91dGVWaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2aWV3cyA9IHRoaXMuZ2V0U3RhY2soc3RhY2tJZCk7XG4gICAgcmV0dXJuIHZpZXdzLmxlbmd0aCA+IDAgPyB2aWV3c1t2aWV3cy5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFJvb3RVcmwoc3RhY2tJZD86IHN0cmluZyk6IFJvdXRlVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLmdldFN0YWNrKHN0YWNrSWQpO1xuICAgIHJldHVybiB2aWV3cy5sZW5ndGggPiAwID8gdmlld3NbMF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBY3RpdmVTdGFja0lkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA/IHRoaXMuYWN0aXZlVmlldy5zdGFja0lkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0QWN0aXZlVmlldygpOiBSb3V0ZVZpZXcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXc7XG4gIH1cblxuICBoYXNSdW5uaW5nVGFzaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ydW5uaW5nVGFzayAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHRoaXMuY29udGFpbmVyRWwgPSB1bmRlZmluZWQhO1xuICAgIHRoaXMudmlld3MuZm9yRWFjaChkZXN0cm95Vmlldyk7XG4gICAgdGhpcy5hY3RpdmVWaWV3ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhY2soc3RhY2tJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMudmlld3MuZmlsdGVyKCh2KSA9PiB2LnN0YWNrSWQgPT09IHN0YWNrSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRWaWV3KGVudGVyaW5nVmlldzogUm91dGVWaWV3LCBkaXJlY3Rpb246IFJvdXRlckRpcmVjdGlvbikge1xuICAgIHRoaXMuYWN0aXZlVmlldyA9IGVudGVyaW5nVmlldztcbiAgICB0aGlzLnZpZXdzID0gaW5zZXJ0Vmlldyh0aGlzLnZpZXdzLCBlbnRlcmluZ1ZpZXcsIGRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHRoaXMudmlld3Muc2xpY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNpdGlvbihcbiAgICBlbnRlcmluZ1ZpZXc6IFJvdXRlVmlldyB8IHVuZGVmaW5lZCxcbiAgICBsZWF2aW5nVmlldzogUm91dGVWaWV3IHwgdW5kZWZpbmVkLFxuICAgIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2snIHwgdW5kZWZpbmVkLFxuICAgIHNob3dHb0JhY2s6IGJvb2xlYW4sXG4gICAgcHJvZ3Jlc3NBbmltYXRpb246IGJvb2xlYW4sXG4gICAgYW5pbWF0aW9uQnVpbGRlcj86IEFuaW1hdGlvbkJ1aWxkZXJcbiAgKSB7XG4gICAgaWYgKHRoaXMuc2tpcFRyYW5zaXRpb24pIHtcbiAgICAgIHRoaXMuc2tpcFRyYW5zaXRpb24gPSBmYWxzZTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAobGVhdmluZ1ZpZXcgPT09IGVudGVyaW5nVmlldykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICAgIGNvbnN0IGVudGVyaW5nRWwgPSBlbnRlcmluZ1ZpZXcgPyBlbnRlcmluZ1ZpZXcuZWxlbWVudCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsZWF2aW5nRWwgPSBsZWF2aW5nVmlldyA/IGxlYXZpbmdWaWV3LmVsZW1lbnQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLmNvbnRhaW5lckVsO1xuICAgIGlmIChlbnRlcmluZ0VsICYmIGVudGVyaW5nRWwgIT09IGxlYXZpbmdFbCkge1xuICAgICAgZW50ZXJpbmdFbC5jbGFzc0xpc3QuYWRkKCdpb24tcGFnZScpO1xuICAgICAgZW50ZXJpbmdFbC5jbGFzc0xpc3QuYWRkKCdpb24tcGFnZS1pbnZpc2libGUnKTtcblxuICAgICAgaWYgKChjb250YWluZXJFbCBhcyBhbnkpLmNvbW1pdCkge1xuICAgICAgICByZXR1cm4gY29udGFpbmVyRWwuY29tbWl0KGVudGVyaW5nRWwsIGxlYXZpbmdFbCwge1xuICAgICAgICAgIGR1cmF0aW9uOiBkaXJlY3Rpb24gPT09IHVuZGVmaW5lZCA/IDAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICAgIHNob3dHb0JhY2ssXG4gICAgICAgICAgcHJvZ3Jlc3NBbmltYXRpb24sXG4gICAgICAgICAgYW5pbWF0aW9uQnVpbGRlcixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWl0PFQ+KHRhc2s6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5ydW5uaW5nVGFzayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLnJ1bm5pbmdUYXNrO1xuICAgICAgdGhpcy5ydW5uaW5nVGFzayA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZSA9ICh0aGlzLnJ1bm5pbmdUYXNrID0gdGFzaygpKTtcbiAgICBwcm9taXNlLmZpbmFsbHkoKCkgPT4gKHRoaXMucnVubmluZ1Rhc2sgPSB1bmRlZmluZWQpKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxufVxuXG5jb25zdCBjbGVhbnVwQXN5bmMgPSAoXG4gIGFjdGl2ZVJvdXRlOiBSb3V0ZVZpZXcsXG4gIHZpZXdzOiBSb3V0ZVZpZXdbXSxcbiAgdmlld3NTbmFwc2hvdDogUm91dGVWaWV3W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgem9uZTogTmdab25lXG4pID0+IHtcbiAgaWYgKHR5cGVvZiAocmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFzIGFueSkgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGNsZWFudXAoYWN0aXZlUm91dGUsIHZpZXdzLCB2aWV3c1NuYXBzaG90LCBsb2NhdGlvbiwgem9uZSk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn07XG5cbmNvbnN0IGNsZWFudXAgPSAoXG4gIGFjdGl2ZVJvdXRlOiBSb3V0ZVZpZXcsXG4gIHZpZXdzOiBSb3V0ZVZpZXdbXSxcbiAgdmlld3NTbmFwc2hvdDogUm91dGVWaWV3W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgem9uZTogTmdab25lXG4pID0+IHtcbiAgLyoqXG4gICAqIFJlLWVudGVyIHRoZSBBbmd1bGFyIHpvbmUgd2hlbiBkZXN0cm95aW5nIHBhZ2UgY29tcG9uZW50cy4gVGhpcyB3aWxsIGFsbG93XG4gICAqIGxpZmVjeWNsZSBldmVudHMgKGBuZ09uRGVzdHJveWApIHRvIGJlIHJ1biBpbnNpZGUgdGhlIEFuZ3VsYXIgem9uZS5cbiAgICovXG4gIHpvbmUucnVuKCgpID0+IHZpZXdzU25hcHNob3QuZmlsdGVyKCh2aWV3KSA9PiAhdmlld3MuaW5jbHVkZXModmlldykpLmZvckVhY2goZGVzdHJveVZpZXcpKTtcblxuICB2aWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XG4gICAgLyoqXG4gICAgICogSW4gdGhlIGV2ZW50IHRoYXQgYSB1c2VyIG5hdmlnYXRlZCBtdWx0aXBsZVxuICAgICAqIHRpbWVzIGluIHJhcGlkIHN1Y2Nlc3Npb24sIHdlIHdhbnQgdG8gbWFrZSBzdXJlXG4gICAgICogd2UgZG9uJ3QgcHJlLWVtcHRpdmVseSBkZXRhY2ggYSB2aWV3IHdoaWxlXG4gICAgICogaXQgaXMgaW4gbWlkLXRyYW5zaXRpb24uXG4gICAgICpcbiAgICAgKiBJbiB0aGlzIGluc3RhbmNlIHdlIGFsc28gZG8gbm90IGNhcmUgYWJvdXQgcXVlcnlcbiAgICAgKiBwYXJhbXMgb3IgZnJhZ21lbnRzIGFzIGl0IHdpbGwgYmUgdGhlIHNhbWUgdmlldyByZWdhcmRsZXNzXG4gICAgICovXG4gICAgY29uc3QgbG9jYXRpb25XaXRob3V0UGFyYW1zID0gbG9jYXRpb24ucGF0aCgpLnNwbGl0KCc/JylbMF07XG4gICAgY29uc3QgbG9jYXRpb25XaXRob3V0RnJhZ21lbnQgPSBsb2NhdGlvbldpdGhvdXRQYXJhbXMuc3BsaXQoJyMnKVswXTtcblxuICAgIGlmICh2aWV3ICE9PSBhY3RpdmVSb3V0ZSAmJiB2aWV3LnVybCAhPT0gbG9jYXRpb25XaXRob3V0RnJhZ21lbnQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB2aWV3LmVsZW1lbnQ7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdpb24tcGFnZS1oaWRkZW4nKTtcbiAgICAgIHZpZXcucmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGFjaCgpO1xuICAgIH1cbiAgfSk7XG59O1xuIl19
@@ -0,0 +1,174 @@
1
+ import { Directive, ElementRef, EventEmitter, HostListener, Output, ViewChild, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../providers/nav-controller";
4
+ // eslint-disable-next-line @angular-eslint/directive-class-suffix
5
+ export class IonTabs {
6
+ navCtrl;
7
+ tabsInner;
8
+ /**
9
+ * Emitted before the tab view is changed.
10
+ */
11
+ ionTabsWillChange = new EventEmitter();
12
+ /**
13
+ * Emitted after the tab view is changed.
14
+ */
15
+ ionTabsDidChange = new EventEmitter();
16
+ tabBarSlot = 'bottom';
17
+ constructor(navCtrl) {
18
+ this.navCtrl = navCtrl;
19
+ }
20
+ ngAfterContentInit() {
21
+ this.detectSlotChanges();
22
+ }
23
+ ngAfterContentChecked() {
24
+ this.detectSlotChanges();
25
+ }
26
+ /**
27
+ * @internal
28
+ */
29
+ onStackWillChange({ enteringView, tabSwitch }) {
30
+ const stackId = enteringView.stackId;
31
+ if (tabSwitch && stackId !== undefined) {
32
+ this.ionTabsWillChange.emit({ tab: stackId });
33
+ }
34
+ }
35
+ /**
36
+ * @internal
37
+ */
38
+ onStackDidChange({ enteringView, tabSwitch }) {
39
+ const stackId = enteringView.stackId;
40
+ if (tabSwitch && stackId !== undefined) {
41
+ if (this.tabBar) {
42
+ this.tabBar.selectedTab = stackId;
43
+ }
44
+ this.ionTabsDidChange.emit({ tab: stackId });
45
+ }
46
+ }
47
+ /**
48
+ * When a tab button is clicked, there are several scenarios:
49
+ * 1. If the selected tab is currently active (the tab button has been clicked
50
+ * again), then it should go to the root view for that tab.
51
+ *
52
+ * a. Get the saved root view from the router outlet. If the saved root view
53
+ * matches the tabRootUrl, set the route view to this view including the
54
+ * navigation extras.
55
+ * b. If the saved root view from the router outlet does
56
+ * not match, navigate to the tabRootUrl. No navigation extras are
57
+ * included.
58
+ *
59
+ * 2. If the current tab tab is not currently selected, get the last route
60
+ * view from the router outlet.
61
+ *
62
+ * a. If the last route view exists, navigate to that view including any
63
+ * navigation extras
64
+ * b. If the last route view doesn't exist, then navigate
65
+ * to the default tabRootUrl
66
+ */
67
+ select(tabOrEvent) {
68
+ const isTabString = typeof tabOrEvent === 'string';
69
+ const tab = isTabString ? tabOrEvent : tabOrEvent.detail.tab;
70
+ const alreadySelected = this.outlet.getActiveStackId() === tab;
71
+ const tabRootUrl = `${this.outlet.tabsPrefix}/${tab}`;
72
+ /**
73
+ * If this is a nested tab, prevent the event
74
+ * from bubbling otherwise the outer tabs
75
+ * will respond to this event too, causing
76
+ * the app to get directed to the wrong place.
77
+ */
78
+ if (!isTabString) {
79
+ tabOrEvent.stopPropagation();
80
+ }
81
+ if (alreadySelected) {
82
+ const activeStackId = this.outlet.getActiveStackId();
83
+ const activeView = this.outlet.getLastRouteView(activeStackId);
84
+ // If on root tab, do not navigate to root tab again
85
+ if (activeView?.url === tabRootUrl) {
86
+ return;
87
+ }
88
+ const rootView = this.outlet.getRootView(tab);
89
+ const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras;
90
+ return this.navCtrl.navigateRoot(tabRootUrl, {
91
+ ...navigationExtras,
92
+ animated: true,
93
+ animationDirection: 'back',
94
+ });
95
+ }
96
+ else {
97
+ const lastRoute = this.outlet.getLastRouteView(tab);
98
+ /**
99
+ * If there is a lastRoute, goto that, otherwise goto the fallback url of the
100
+ * selected tab
101
+ */
102
+ const url = lastRoute?.url || tabRootUrl;
103
+ const navigationExtras = lastRoute?.savedExtras;
104
+ return this.navCtrl.navigateRoot(url, {
105
+ ...navigationExtras,
106
+ animated: true,
107
+ animationDirection: 'back',
108
+ });
109
+ }
110
+ }
111
+ getSelected() {
112
+ return this.outlet.getActiveStackId();
113
+ }
114
+ /**
115
+ * Detects changes to the slot attribute of the tab bar.
116
+ *
117
+ * If the slot attribute has changed, then the tab bar
118
+ * should be relocated to the new slot position.
119
+ */
120
+ detectSlotChanges() {
121
+ this.tabBars.forEach((tabBar) => {
122
+ // el is a protected attribute from the generated component wrapper
123
+ const currentSlot = tabBar.el.getAttribute('slot');
124
+ if (currentSlot !== this.tabBarSlot) {
125
+ this.tabBarSlot = currentSlot;
126
+ this.relocateTabBar();
127
+ }
128
+ });
129
+ }
130
+ /**
131
+ * Relocates the tab bar to the new slot position.
132
+ */
133
+ relocateTabBar() {
134
+ /**
135
+ * `el` is a protected attribute from the generated component wrapper.
136
+ * To avoid having to manually create the wrapper for tab bar, we
137
+ * cast the tab bar to any and access the protected attribute.
138
+ */
139
+ const tabBar = this.tabBar.el;
140
+ if (this.tabBarSlot === 'top') {
141
+ /**
142
+ * A tab bar with a slot of "top" should be inserted
143
+ * at the top of the container.
144
+ */
145
+ this.tabsInner.nativeElement.before(tabBar);
146
+ }
147
+ else {
148
+ /**
149
+ * A tab bar with a slot of "bottom" or without a slot
150
+ * should be inserted at the end of the container.
151
+ */
152
+ this.tabsInner.nativeElement.after(tabBar);
153
+ }
154
+ }
155
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, deps: [{ token: i1.NavController }], target: i0.ɵɵFactoryTarget.Directive });
156
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonTabs, selector: "ion-tabs", outputs: { ionTabsWillChange: "ionTabsWillChange", ionTabsDidChange: "ionTabsDidChange" }, host: { listeners: { "ionTabButtonClick": "select($event)" } }, viewQueries: [{ propertyName: "tabsInner", first: true, predicate: ["tabsInner"], descendants: true, read: ElementRef, static: true }], ngImport: i0 });
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, decorators: [{
159
+ type: Directive,
160
+ args: [{
161
+ selector: 'ion-tabs',
162
+ }]
163
+ }], ctorParameters: function () { return [{ type: i1.NavController }]; }, propDecorators: { tabsInner: [{
164
+ type: ViewChild,
165
+ args: ['tabsInner', { read: ElementRef, static: true }]
166
+ }], ionTabsWillChange: [{
167
+ type: Output
168
+ }], ionTabsDidChange: [{
169
+ type: Output
170
+ }], select: [{
171
+ type: HostListener,
172
+ args: ['ionTabButtonClick', ['$event']]
173
+ }] } });
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvZGlyZWN0aXZlcy9uYXZpZ2F0aW9uL3RhYnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7QUFTdkIsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsT0FBTztJQXNCUDtJQWJ3QyxTQUFTLENBQTZCO0lBRWxHOztPQUVHO0lBQ08saUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFDbEU7O09BRUc7SUFDTyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztJQUV6RCxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBRTlCLFlBQW9CLE9BQXNCO1FBQXRCLFlBQU8sR0FBUCxPQUFPLENBQWU7SUFBRyxDQUFDO0lBRTlDLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBd0I7UUFDakUsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLFNBQVMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBdUI7UUFDL0QsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FB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QUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWM7UUFDcEI7Ozs7V0FJRztRQUNILE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxNQUFjLENBQUMsRUFBaUIsQ0FBQztRQUV0RCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1lBQzdCOzs7ZUFHRztZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0w7OztlQUdHO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQzsySEEzS21CLE9BQU87K0dBQVAsT0FBTyw4UkFTSyxVQUFVOzs0RkFUdEIsT0FBTztrQkFKNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtpQkFDckI7b0dBVzZELFNBQVM7c0JBQXBFLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUtoRCxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBSUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQTBEUCxNQUFNO3NCQURMLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbmF2LWNvbnRyb2xsZXInO1xuXG5pbXBvcnQgeyBTdGFja0RpZENoYW5nZUV2ZW50LCBTdGFja1dpbGxDaGFuZ2VFdmVudCB9IGZyb20gJy4vc3RhY2stdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpb24tdGFicycsXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW9uVGFicyBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyQ29udGVudENoZWNrZWQge1xuICAvKipcbiAgICogTm90ZTogVGhlc2UgbXVzdCBiZSByZWRlY2xhcmVkIG9uIGVhY2ggY2hpbGQgY2xhc3Mgc2luY2UgaXQgbmVlZHNcbiAgICogYWNjZXNzIHRvIGdlbmVyYXRlZCBjb21wb25lbnRzIHN1Y2ggYXMgSW9uUm91dGVyT3V0bGV0IGFuZCBJb25UYWJCYXIuXG4gICAqL1xuICBhYnN0cmFjdCBvdXRsZXQ6IGFueTtcbiAgYWJzdHJhY3QgdGFiQmFyOiBhbnk7XG4gIGFic3RyYWN0IHRhYkJhcnM6IGFueTtcblxuICBAVmlld0NoaWxkKCd0YWJzSW5uZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0YWJzSW5uZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgdGFiIHZpZXcgaXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBpb25UYWJzV2lsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YWI6IHN0cmluZyB9PigpO1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgdGFiIHZpZXcgaXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBpb25UYWJzRGlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRhYjogc3RyaW5nIH0+KCk7XG5cbiAgcHJpdmF0ZSB0YWJCYXJTbG90ID0gJ2JvdHRvbSc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZDdHJsOiBOYXZDb250cm9sbGVyKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGVjdFNsb3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRlY3RTbG90Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25TdGFja1dpbGxDaGFuZ2UoeyBlbnRlcmluZ1ZpZXcsIHRhYlN3aXRjaCB9OiBTdGFja1dpbGxDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrSWQgPSBlbnRlcmluZ1ZpZXcuc3RhY2tJZDtcbiAgICBpZiAodGFiU3dpdGNoICYmIHN0YWNrSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pb25UYWJzV2lsbENoYW5nZS5lbWl0KHsgdGFiOiBzdGFja0lkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uU3RhY2tEaWRDaGFuZ2UoeyBlbnRlcmluZ1ZpZXcsIHRhYlN3aXRjaCB9OiBTdGFja0RpZENoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhY2tJZCA9IGVudGVyaW5nVmlldy5zdGFja0lkO1xuICAgIGlmICh0YWJTd2l0Y2ggJiYgc3RhY2tJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy50YWJCYXIpIHtcbiAgICAgICAgdGhpcy50YWJCYXIuc2VsZWN0ZWRUYWIgPSBzdGFja0lkO1xuICAgICAgfVxuICAgICAgdGhpcy5pb25UYWJzRGlkQ2hhbmdlLmVtaXQoeyB0YWI6IHN0YWNrSWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gYSB0YWIgYnV0dG9uIGlzIGNsaWNrZWQsIHRoZXJlIGFyZSBzZXZlcmFsIHNjZW5hcmlvczpcbiAgICogMS4gSWYgdGhlIHNlbGVjdGVkIHRhYiBpcyBjdXJyZW50bHkgYWN0aXZlICh0aGUgdGFiIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkXG4gICAqICAgIGFnYWluKSwgdGhlbiBpdCBzaG91bGQgZ28gdG8gdGhlIHJvb3QgdmlldyBmb3IgdGhhdCB0YWIuXG4gICAqXG4gICAqICAgYS4gR2V0IHRoZSBzYXZlZCByb290IHZpZXcgZnJvbSB0aGUgcm91dGVyIG91dGxldC4gSWYgdGhlIHNhdmVkIHJvb3Qgdmlld1xuICAgKiAgICAgIG1hdGNoZXMgdGhlIHRhYlJvb3RVcmwsIHNldCB0aGUgcm91dGUgdmlldyB0byB0aGlzIHZpZXcgaW5jbHVkaW5nIHRoZVxuICAgKiAgICAgIG5hdmlnYXRpb24gZXh0cmFzLlxuICAgKiAgIGIuIElmIHRoZSBzYXZlZCByb290IHZpZXcgZnJvbSB0aGUgcm91dGVyIG91dGxldCBkb2VzXG4gICAqICAgICAgbm90IG1hdGNoLCBuYXZpZ2F0ZSB0byB0aGUgdGFiUm9vdFVybC4gTm8gbmF2aWdhdGlvbiBleHRyYXMgYXJlXG4gICAqICAgICAgaW5jbHVkZWQuXG4gICAqXG4gICAqIDIuIElmIHRoZSBjdXJyZW50IHRhYiB0YWIgaXMgbm90IGN1cnJlbnRseSBzZWxlY3RlZCwgZ2V0IHRoZSBsYXN0IHJvdXRlXG4gICAqICAgIHZpZXcgZnJvbSB0aGUgcm91dGVyIG91dGxldC5cbiAgICpcbiAgICogICBhLiBJZiB0aGUgbGFzdCByb3V0ZSB2aWV3IGV4aXN0cywgbmF2aWdhdGUgdG8gdGhhdCB2aWV3IGluY2x1ZGluZyBhbnlcbiAgICogICAgICBuYXZpZ2F0aW9uIGV4dHJhc1xuICAgKiAgIGIuIElmIHRoZSBsYXN0IHJvdXRlIHZpZXcgZG9lc24ndCBleGlzdCwgdGhlbiBuYXZpZ2F0ZVxuICAgKiAgICAgIHRvIHRoZSBkZWZhdWx0IHRhYlJvb3RVcmxcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2lvblRhYkJ1dHRvbkNsaWNrJywgWyckZXZlbnQnXSlcbiAgc2VsZWN0KHRhYk9yRXZlbnQ6IHN0cmluZyB8IEN1c3RvbUV2ZW50KTogUHJvbWlzZTxib29sZWFuPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNUYWJTdHJpbmcgPSB0eXBlb2YgdGFiT3JFdmVudCA9PT0gJ3N0cmluZyc7XG4gICAgY29uc3QgdGFiID0gaXNUYWJTdHJpbmcgPyB0YWJPckV2ZW50IDogKHRhYk9yRXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbC50YWI7XG4gICAgY29uc3QgYWxyZWFkeVNlbGVjdGVkID0gdGhpcy5vdXRsZXQuZ2V0QWN0aXZlU3RhY2tJZCgpID09PSB0YWI7XG4gICAgY29uc3QgdGFiUm9vdFVybCA9IGAke3RoaXMub3V0bGV0LnRhYnNQcmVmaXh9LyR7dGFifWA7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGlzIGlzIGEgbmVzdGVkIHRhYiwgcHJldmVudCB0aGUgZXZlbnRcbiAgICAgKiBmcm9tIGJ1YmJsaW5nIG90aGVyd2lzZSB0aGUgb3V0ZXIgdGFic1xuICAgICAqIHdpbGwgcmVzcG9uZCB0byB0aGlzIGV2ZW50IHRvbywgY2F1c2luZ1xuICAgICAqIHRoZSBhcHAgdG8gZ2V0IGRpcmVjdGVkIHRvIHRoZSB3cm9uZyBwbGFjZS5cbiAgICAgKi9cbiAgICBpZiAoIWlzVGFiU3RyaW5nKSB7XG4gICAgICAodGFiT3JFdmVudCBhcyBDdXN0b21FdmVudCkuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKGFscmVhZHlTZWxlY3RlZCkge1xuICAgICAgY29uc3QgYWN0aXZlU3RhY2tJZCA9IHRoaXMub3V0bGV0LmdldEFjdGl2ZVN0YWNrSWQoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSB0aGlzLm91dGxldC5nZXRMYXN0Um91dGVWaWV3KGFjdGl2ZVN0YWNrSWQpO1xuXG4gICAgICAvLyBJZiBvbiByb290IHRhYiwgZG8gbm90IG5hdmlnYXRlIHRvIHJvb3QgdGFiIGFnYWluXG4gICAgICBpZiAoYWN0aXZlVmlldz8udXJsID09PSB0YWJSb290VXJsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgcm9vdFZpZXcgPSB0aGlzLm91dGxldC5nZXRSb290Vmlldyh0YWIpO1xuICAgICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhcyA9IHJvb3RWaWV3ICYmIHRhYlJvb3RVcmwgPT09IHJvb3RWaWV3LnVybCAmJiByb290Vmlldy5zYXZlZEV4dHJhcztcbiAgICAgIHJldHVybiB0aGlzLm5hdkN0cmwubmF2aWdhdGVSb290KHRhYlJvb3RVcmwsIHtcbiAgICAgICAgLi4ubmF2aWdhdGlvbkV4dHJhcyxcbiAgICAgICAgYW5pbWF0ZWQ6IHRydWUsXG4gICAgICAgIGFuaW1hdGlvbkRpcmVjdGlvbjogJ2JhY2snLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhc3RSb3V0ZSA9IHRoaXMub3V0bGV0LmdldExhc3RSb3V0ZVZpZXcodGFiKTtcbiAgICAgIC8qKlxuICAgICAgICogSWYgdGhlcmUgaXMgYSBsYXN0Um91dGUsIGdvdG8gdGhhdCwgb3RoZXJ3aXNlIGdvdG8gdGhlIGZhbGxiYWNrIHVybCBvZiB0aGVcbiAgICAgICAqIHNlbGVjdGVkIHRhYlxuICAgICAgICovXG4gICAgICBjb25zdCB1cmwgPSBsYXN0Um91dGU/LnVybCB8fCB0YWJSb290VXJsO1xuICAgICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhcyA9IGxhc3RSb3V0ZT8uc2F2ZWRFeHRyYXM7XG5cbiAgICAgIHJldHVybiB0aGlzLm5hdkN0cmwubmF2aWdhdGVSb290KHVybCwge1xuICAgICAgICAuLi5uYXZpZ2F0aW9uRXh0cmFzLFxuICAgICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgICAgYW5pbWF0aW9uRGlyZWN0aW9uOiAnYmFjaycsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RlZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm91dGxldC5nZXRBY3RpdmVTdGFja0lkKCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0cyBjaGFuZ2VzIHRvIHRoZSBzbG90IGF0dHJpYnV0ZSBvZiB0aGUgdGFiIGJhci5cbiAgICpcbiAgICogSWYgdGhlIHNsb3QgYXR0cmlidXRlIGhhcyBjaGFuZ2VkLCB0aGVuIHRoZSB0YWIgYmFyXG4gICAqIHNob3VsZCBiZSByZWxvY2F0ZWQgdG8gdGhlIG5ldyBzbG90IHBvc2l0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBkZXRlY3RTbG90Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkJhcnMuZm9yRWFjaCgodGFiQmFyOiBhbnkpID0+IHtcbiAgICAgIC8vIGVsIGlzIGEgcHJvdGVjdGVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnZW5lcmF0ZWQgY29tcG9uZW50IHdyYXBwZXJcbiAgICAgIGNvbnN0IGN1cnJlbnRTbG90ID0gdGFiQmFyLmVsLmdldEF0dHJpYnV0ZSgnc2xvdCcpO1xuXG4gICAgICBpZiAoY3VycmVudFNsb3QgIT09IHRoaXMudGFiQmFyU2xvdCkge1xuICAgICAgICB0aGlzLnRhYkJhclNsb3QgPSBjdXJyZW50U2xvdDtcbiAgICAgICAgdGhpcy5yZWxvY2F0ZVRhYkJhcigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbG9jYXRlcyB0aGUgdGFiIGJhciB0byB0aGUgbmV3IHNsb3QgcG9zaXRpb24uXG4gICAqL1xuICBwcml2YXRlIHJlbG9jYXRlVGFiQmFyKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIGBlbGAgaXMgYSBwcm90ZWN0ZWQgYXR0cmlidXRlIGZyb20gdGhlIGdlbmVyYXRlZCBjb21wb25lbnQgd3JhcHBlci5cbiAgICAgKiBUbyBhdm9pZCBoYXZpbmcgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSB3cmFwcGVyIGZvciB0YWIgYmFyLCB3ZVxuICAgICAqIGNhc3QgdGhlIHRhYiBiYXIgdG8gYW55IGFuZCBhY2Nlc3MgdGhlIHByb3RlY3RlZCBhdHRyaWJ1dGUuXG4gICAgICovXG4gICAgY29uc3QgdGFiQmFyID0gKHRoaXMudGFiQmFyIGFzIGFueSkuZWwgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy50YWJCYXJTbG90ID09PSAndG9wJykge1xuICAgICAgLyoqXG4gICAgICAgKiBBIHRhYiBiYXIgd2l0aCBhIHNsb3Qgb2YgXCJ0b3BcIiBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgICAqIGF0IHRoZSB0b3Agb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgICAqL1xuICAgICAgdGhpcy50YWJzSW5uZXIubmF0aXZlRWxlbWVudC5iZWZvcmUodGFiQmFyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqXG4gICAgICAgKiBBIHRhYiBiYXIgd2l0aCBhIHNsb3Qgb2YgXCJib3R0b21cIiBvciB3aXRob3V0IGEgc2xvdFxuICAgICAgICogc2hvdWxkIGJlIGluc2VydGVkIGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgICAqL1xuICAgICAgdGhpcy50YWJzSW5uZXIubmF0aXZlRWxlbWVudC5hZnRlcih0YWJCYXIpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,91 @@
1
+ import { __decorate } from "tslib";
2
+ import { ContentChild, Directive, TemplateRef, } from '@angular/core';
3
+ import { ProxyCmp, proxyOutputs } from '../utils/proxy';
4
+ import * as i0 from "@angular/core";
5
+ const MODAL_INPUTS = [
6
+ 'animated',
7
+ 'keepContentsMounted',
8
+ 'backdropBreakpoint',
9
+ 'backdropDismiss',
10
+ 'breakpoints',
11
+ 'canDismiss',
12
+ 'cssClass',
13
+ 'enterAnimation',
14
+ 'event',
15
+ 'handle',
16
+ 'handleBehavior',
17
+ 'initialBreakpoint',
18
+ 'isOpen',
19
+ 'keyboardClose',
20
+ 'leaveAnimation',
21
+ 'mode',
22
+ 'presentingElement',
23
+ 'showBackdrop',
24
+ 'translucent',
25
+ 'trigger',
26
+ ];
27
+ const MODAL_METHODS = [
28
+ 'present',
29
+ 'dismiss',
30
+ 'onDidDismiss',
31
+ 'onWillDismiss',
32
+ 'setCurrentBreakpoint',
33
+ 'getCurrentBreakpoint',
34
+ ];
35
+ let IonModal = class IonModal {
36
+ z;
37
+ // TODO(FW-2827): type
38
+ template;
39
+ isCmpOpen = false;
40
+ el;
41
+ constructor(c, r, z) {
42
+ this.z = z;
43
+ this.el = r.nativeElement;
44
+ this.el.addEventListener('ionMount', () => {
45
+ this.isCmpOpen = true;
46
+ c.detectChanges();
47
+ });
48
+ this.el.addEventListener('didDismiss', () => {
49
+ this.isCmpOpen = false;
50
+ c.detectChanges();
51
+ });
52
+ proxyOutputs(this, this.el, [
53
+ 'ionModalDidPresent',
54
+ 'ionModalWillPresent',
55
+ 'ionModalWillDismiss',
56
+ 'ionModalDidDismiss',
57
+ 'ionBreakpointDidChange',
58
+ 'didPresent',
59
+ 'willPresent',
60
+ 'willDismiss',
61
+ 'didDismiss',
62
+ ]);
63
+ }
64
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
65
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonModal, selector: "ion-modal", inputs: { 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" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
66
+ };
67
+ IonModal = __decorate([
68
+ ProxyCmp({
69
+ inputs: MODAL_INPUTS,
70
+ methods: MODAL_METHODS,
71
+ })
72
+ /**
73
+ * @Component extends from @Directive
74
+ * so by defining the inputs here we
75
+ * do not need to re-define them for the
76
+ * lazy loaded popover.
77
+ */
78
+ ], IonModal);
79
+ export { IonModal };
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonModal, decorators: [{
81
+ type: Directive,
82
+ args: [{
83
+ selector: 'ion-modal',
84
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
85
+ inputs: MODAL_INPUTS,
86
+ }]
87
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { template: [{
88
+ type: ContentChild,
89
+ args: [TemplateRef, { static: false }]
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21tb24vc3JjL292ZXJsYXlzL21vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFJVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUF5Q3hELE1BQU0sWUFBWSxHQUFHO0lBQ25CLFVBQVU7SUFDVixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWTtJQUNaLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsT0FBTztJQUNQLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsbUJBQW1CO0lBQ25CLFFBQVE7SUFDUixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLE1BQU07SUFDTixtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGFBQWE7SUFDYixTQUFTO0NBQ1YsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsY0FBYztJQUNkLGVBQWU7SUFDZixzQkFBc0I7SUFDdEIsc0JBQXNCO0NBQ3ZCLENBQUM7QUFtQkssSUFBTSxRQUFRLEdBQWQsTUFBTSxRQUFRO0lBUXdDO0lBUDNELHNCQUFzQjtJQUN3QixRQUFRLENBQW1CO0lBRXpFLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFUixFQUFFLENBQWM7SUFFMUIsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDMUIsb0JBQW9CO1lBQ3BCLHFCQUFxQjtZQUNyQixxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QixZQUFZO1lBQ1osYUFBYTtZQUNiLGFBQWE7WUFDYixZQUFZO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsySEE5QlUsUUFBUTsrR0FBUixRQUFRLHFxQkFFTCxXQUFXOztBQUZkLFFBQVE7SUFqQnBCLFFBQVEsQ0FBQztRQUNSLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLE9BQU8sRUFBRSxhQUFhO0tBQ3ZCLENBQUM7SUFDRjs7Ozs7T0FLRztHQVFVLFFBQVEsQ0ErQnBCO1NBL0JZLFFBQVE7NEZBQVIsUUFBUTtrQkFQcEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsdUVBQXVFO29CQUN2RSxNQUFNLEVBQUUsWUFBWTtpQkFDckI7c0pBSytDLFFBQVE7c0JBQXJELFlBQVk7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBOZ1pvbmUsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50cywgTW9kYWxCcmVha3BvaW50Q2hhbmdlRXZlbnREZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4uL3V0aWxzL3Byb3h5JztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbk1vZGFsIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25Nb2RhbCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBtb2RhbCBoYXMgcHJlc2VudGVkLlxuICAgKiovXG4gIGlvbk1vZGFsRGlkUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBtb2RhbCBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uTW9kYWxXaWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBtb2RhbCBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uTW9kYWxXaWxsRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGhhcyBkaXNtaXNzZWQuXG4gICAqL1xuICBpb25Nb2RhbERpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBtb2RhbCBicmVha3BvaW50IGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgaW9uQnJlYWtwb2ludERpZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE1vZGFsQnJlYWtwb2ludENoYW5nZUV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBtb2RhbCBoYXMgcHJlc2VudGVkLiBTaG9ydGhhbmQgZm9yIGlvbk1vZGFsRGlkUHJlc2VudC5cbiAgICovXG4gIGRpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgbW9kYWwgaGFzIHByZXNlbnRlZC4gU2hvcnRoYW5kIGZvciBpb25Nb2RhbFdpbGxQcmVzZW50LlxuICAgKi9cbiAgd2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgbW9kYWwgaGFzIGRpc21pc3NlZC4gU2hvcnRoYW5kIGZvciBpb25Nb2RhbFdpbGxEaXNtaXNzLlxuICAgKi9cbiAgd2lsbERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBtb2RhbCBoYXMgZGlzbWlzc2VkLiBTaG9ydGhhbmQgZm9yIGlvbk1vZGFsRGlkRGlzbWlzcy5cbiAgICovXG4gIGRpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG59XG5cbmNvbnN0IE1PREFMX0lOUFVUUyA9IFtcbiAgJ2FuaW1hdGVkJyxcbiAgJ2tlZXBDb250ZW50c01vdW50ZWQnLFxuICAnYmFja2Ryb3BCcmVha3BvaW50JyxcbiAgJ2JhY2tkcm9wRGlzbWlzcycsXG4gICdicmVha3BvaW50cycsXG4gICdjYW5EaXNtaXNzJyxcbiAgJ2Nzc0NsYXNzJyxcbiAgJ2VudGVyQW5pbWF0aW9uJyxcbiAgJ2V2ZW50JyxcbiAgJ2hhbmRsZScsXG4gICdoYW5kbGVCZWhhdmlvcicsXG4gICdpbml0aWFsQnJlYWtwb2ludCcsXG4gICdpc09wZW4nLFxuICAna2V5Ym9hcmRDbG9zZScsXG4gICdsZWF2ZUFuaW1hdGlvbicsXG4gICdtb2RlJyxcbiAgJ3ByZXNlbnRpbmdFbGVtZW50JyxcbiAgJ3Nob3dCYWNrZHJvcCcsXG4gICd0cmFuc2x1Y2VudCcsXG4gICd0cmlnZ2VyJyxcbl07XG5cbmNvbnN0IE1PREFMX01FVEhPRFMgPSBbXG4gICdwcmVzZW50JyxcbiAgJ2Rpc21pc3MnLFxuICAnb25EaWREaXNtaXNzJyxcbiAgJ29uV2lsbERpc21pc3MnLFxuICAnc2V0Q3VycmVudEJyZWFrcG9pbnQnLFxuICAnZ2V0Q3VycmVudEJyZWFrcG9pbnQnLFxuXTtcblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBNT0RBTF9JTlBVVFMsXG4gIG1ldGhvZHM6IE1PREFMX01FVEhPRFMsXG59KVxuLyoqXG4gKiBAQ29tcG9uZW50IGV4dGVuZHMgZnJvbSBARGlyZWN0aXZlXG4gKiBzbyBieSBkZWZpbmluZyB0aGUgaW5wdXRzIGhlcmUgd2VcbiAqIGRvIG5vdCBuZWVkIHRvIHJlLWRlZmluZSB0aGVtIGZvciB0aGVcbiAqIGxhenkgbG9hZGVkIHBvcG92ZXIuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi1tb2RhbCcsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogTU9EQUxfSU5QVVRTLFxufSlcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgSW9uTW9kYWwge1xuICAvLyBUT0RPKEZXLTI4MjcpOiB0eXBlXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBpc0NtcE9wZW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW91bnQnLCAoKSA9PiB7XG4gICAgICB0aGlzLmlzQ21wT3BlbiA9IHRydWU7XG4gICAgICBjLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZERpc21pc3MnLCAoKSA9PiB7XG4gICAgICB0aGlzLmlzQ21wT3BlbiA9IGZhbHNlO1xuICAgICAgYy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFtcbiAgICAgICdpb25Nb2RhbERpZFByZXNlbnQnLFxuICAgICAgJ2lvbk1vZGFsV2lsbFByZXNlbnQnLFxuICAgICAgJ2lvbk1vZGFsV2lsbERpc21pc3MnLFxuICAgICAgJ2lvbk1vZGFsRGlkRGlzbWlzcycsXG4gICAgICAnaW9uQnJlYWtwb2ludERpZENoYW5nZScsXG4gICAgICAnZGlkUHJlc2VudCcsXG4gICAgICAnd2lsbFByZXNlbnQnLFxuICAgICAgJ3dpbGxEaXNtaXNzJyxcbiAgICAgICdkaWREaXNtaXNzJyxcbiAgICBdKTtcbiAgfVxufVxuIl19