@ionic/angular 8.8.9-dev.11780414486.1df2bd72 → 8.8.9-dev.11780493937.17fe092d

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 (243) hide show
  1. package/app-initialize.d.ts +3 -0
  2. package/common/directives/control-value-accessors/index.d.ts +1 -0
  3. package/common/directives/control-value-accessors/value-accessor.d.ts +36 -0
  4. package/common/directives/navigation/back-button.d.ts +23 -0
  5. package/common/directives/navigation/nav-params.d.ts +45 -0
  6. package/common/directives/navigation/nav.d.ts +21 -0
  7. package/common/directives/navigation/router-link-delegate.d.ts +60 -0
  8. package/common/directives/navigation/router-outlet.d.ts +104 -0
  9. package/common/directives/navigation/stack-controller.d.ts +42 -0
  10. package/common/directives/navigation/stack-utils.d.ts +38 -0
  11. package/common/directives/navigation/tabs.d.ts +83 -0
  12. package/common/index.d.ts +22 -0
  13. package/common/overlays/modal.d.ts +62 -0
  14. package/common/overlays/popover.d.ts +46 -0
  15. package/common/providers/angular-delegate.d.ts +28 -0
  16. package/common/providers/config.d.ts +11 -0
  17. package/common/providers/dom-controller.d.ts +16 -0
  18. package/common/providers/menu-controller.d.ts +78 -0
  19. package/common/providers/nav-controller.d.ts +116 -0
  20. package/common/providers/platform.d.ts +174 -0
  21. package/common/types/interfaces.d.ts +8 -0
  22. package/common/types/ionic-lifecycle-hooks.d.ts +27 -0
  23. package/common/types/overlay-options.d.ts +16 -0
  24. package/common/utils/overlay.d.ts +21 -0
  25. package/common/utils/proxy.d.ts +8 -0
  26. package/common/utils/routing.d.ts +28 -0
  27. package/common/utils/util.d.ts +1 -0
  28. package/css/core.css +1 -1
  29. package/css/core.css.map +1 -1
  30. package/css/display.css +1 -1
  31. package/css/display.css.map +1 -1
  32. package/css/flex-utils.css +1 -1
  33. package/css/flex-utils.css.map +1 -1
  34. package/css/float-elements.css.map +1 -1
  35. package/css/global.bundle.css.map +1 -1
  36. package/css/ionic/bundle.ionic.css +1 -0
  37. package/css/ionic/bundle.ionic.css.map +1 -0
  38. package/css/ionic/core.ionic.css +1 -0
  39. package/css/ionic/core.ionic.css.map +1 -0
  40. package/css/ionic/global.bundle.ionic.css +1 -0
  41. package/css/ionic/global.bundle.ionic.css.map +1 -0
  42. package/css/ionic/ionic-swiper.ionic.css +1 -0
  43. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  44. package/css/ionic/link.ionic.css +1 -0
  45. package/css/ionic/link.ionic.css.map +1 -0
  46. package/css/ionic/structure.ionic.css +1 -0
  47. package/css/ionic/structure.ionic.css.map +1 -0
  48. package/css/ionic/typography.ionic.css +1 -0
  49. package/css/ionic/typography.ionic.css.map +1 -0
  50. package/css/ionic/utils.bundle.ionic.css +1 -0
  51. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  52. package/css/ionic-swiper.css +1 -1
  53. package/css/ionic-swiper.css.map +1 -1
  54. package/css/ionic.bundle.css +1 -1
  55. package/css/ionic.bundle.css.map +1 -1
  56. package/css/normalize.css.map +1 -1
  57. package/css/padding.css.map +1 -1
  58. package/css/palettes/dark.always.css.map +1 -1
  59. package/css/palettes/dark.class.css.map +1 -1
  60. package/css/palettes/dark.system.css.map +1 -1
  61. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  62. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  63. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  64. package/css/palettes/high-contrast.always.css.map +1 -1
  65. package/css/palettes/high-contrast.class.css.map +1 -1
  66. package/css/palettes/high-contrast.system.css.map +1 -1
  67. package/css/structure.css.map +1 -1
  68. package/css/text-alignment.css.map +1 -1
  69. package/css/text-transformation.css.map +1 -1
  70. package/css/typography.css.map +1 -1
  71. package/css/utils.bundle.css +1 -1
  72. package/css/utils.bundle.css.map +1 -1
  73. package/directives/angular-component-lib/utils.d.ts +9 -0
  74. package/directives/control-value-accessors/boolean-value-accessor.d.ts +10 -0
  75. package/directives/control-value-accessors/index.d.ts +4 -0
  76. package/directives/control-value-accessors/numeric-value-accessor.d.ts +11 -0
  77. package/directives/control-value-accessors/select-value-accessor.d.ts +9 -0
  78. package/directives/control-value-accessors/text-value-accessor.d.ts +9 -0
  79. package/directives/navigation/ion-back-button.d.ts +9 -0
  80. package/directives/navigation/ion-nav.d.ts +8 -0
  81. package/directives/navigation/ion-router-outlet.d.ts +25 -0
  82. package/directives/navigation/ion-tabs.d.ts +13 -0
  83. package/directives/navigation/router-link-delegate.d.ts +16 -0
  84. package/directives/overlays/modal.d.ts +6 -0
  85. package/directives/overlays/popover.d.ts +6 -0
  86. package/directives/proxies-list.d.ts +2 -0
  87. package/{types/ionic-angular.d.ts → directives/proxies.d.ts} +408 -642
  88. package/directives/validators/index.d.ts +2 -0
  89. package/directives/validators/max-validator.d.ts +12 -0
  90. package/directives/validators/min-validator.d.ts +12 -0
  91. package/esm2022/app-initialize.mjs +29 -0
  92. package/esm2022/common/directives/control-value-accessors/index.mjs +2 -0
  93. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +153 -0
  94. package/esm2022/common/directives/navigation/back-button.mjs +61 -0
  95. package/esm2022/common/directives/navigation/nav-params.mjs +47 -0
  96. package/esm2022/common/directives/navigation/nav.mjs +49 -0
  97. package/esm2022/common/directives/navigation/router-link-delegate.mjs +156 -0
  98. package/esm2022/common/directives/navigation/router-outlet.mjs +480 -0
  99. package/esm2022/common/directives/navigation/stack-controller.mjs +280 -0
  100. package/esm2022/common/directives/navigation/stack-utils.mjs +73 -0
  101. package/esm2022/common/directives/navigation/tabs.mjs +279 -0
  102. package/esm2022/common/index.mjs +20 -0
  103. package/esm2022/common/ionic-angular-common.mjs +5 -0
  104. package/esm2022/common/overlays/modal.mjs +103 -0
  105. package/esm2022/common/overlays/popover.mjs +91 -0
  106. package/esm2022/common/providers/angular-delegate.mjs +203 -0
  107. package/esm2022/common/providers/config.mjs +45 -0
  108. package/esm2022/common/providers/dom-controller.mjs +45 -0
  109. package/esm2022/common/providers/menu-controller.mjs +114 -0
  110. package/esm2022/common/providers/nav-controller.mjs +235 -0
  111. package/esm2022/common/providers/platform.mjs +258 -0
  112. package/esm2022/common/types/interfaces.mjs +2 -0
  113. package/esm2022/common/types/ionic-lifecycle-hooks.mjs +5 -0
  114. package/esm2022/common/types/overlay-options.mjs +2 -0
  115. package/esm2022/common/utils/overlay.mjs +26 -0
  116. package/esm2022/common/utils/proxy.mjs +47 -0
  117. package/esm2022/common/utils/routing.mjs +55 -0
  118. package/esm2022/common/utils/util.mjs +10 -0
  119. package/esm2022/directives/angular-component-lib/utils.mjs +59 -0
  120. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +42 -0
  121. package/esm2022/directives/control-value-accessors/index.mjs +5 -0
  122. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +50 -0
  123. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +39 -0
  124. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +38 -0
  125. package/esm2022/directives/navigation/ion-back-button.mjs +24 -0
  126. package/esm2022/directives/navigation/ion-nav.mjs +21 -0
  127. package/esm2022/directives/navigation/ion-router-outlet.mjs +52 -0
  128. package/esm2022/directives/navigation/ion-tabs.mjs +59 -0
  129. package/esm2022/directives/navigation/router-link-delegate.mjs +32 -0
  130. package/esm2022/directives/overlays/modal.mjs +22 -0
  131. package/esm2022/directives/overlays/popover.mjs +18 -0
  132. package/esm2022/directives/proxies-list.mjs +92 -0
  133. package/esm2022/directives/proxies.mjs +2438 -0
  134. package/esm2022/directives/validators/index.mjs +3 -0
  135. package/esm2022/directives/validators/max-validator.mjs +27 -0
  136. package/esm2022/directives/validators/min-validator.mjs +27 -0
  137. package/esm2022/index.mjs +32 -0
  138. package/esm2022/ionic-angular.mjs +5 -0
  139. package/esm2022/ionic-module.mjs +111 -0
  140. package/esm2022/providers/action-sheet-controller.mjs +19 -0
  141. package/esm2022/providers/alert-controller.mjs +19 -0
  142. package/esm2022/providers/animation-controller.mjs +38 -0
  143. package/esm2022/providers/gesture-controller.mjs +33 -0
  144. package/esm2022/providers/loading-controller.mjs +19 -0
  145. package/esm2022/providers/menu-controller.mjs +19 -0
  146. package/esm2022/providers/modal-controller.mjs +26 -0
  147. package/esm2022/providers/picker-controller.mjs +22 -0
  148. package/esm2022/providers/popover-controller.mjs +19 -0
  149. package/esm2022/providers/toast-controller.mjs +19 -0
  150. package/esm2022/standalone/directives/angular-component-lib/utils.mjs +59 -0
  151. package/esm2022/standalone/directives/checkbox.mjs +76 -0
  152. package/esm2022/standalone/directives/datetime.mjs +95 -0
  153. package/esm2022/standalone/directives/icon.mjs +35 -0
  154. package/esm2022/standalone/directives/index.mjs +13 -0
  155. package/esm2022/standalone/directives/input-otp.mjs +90 -0
  156. package/esm2022/standalone/directives/input.mjs +113 -0
  157. package/esm2022/standalone/directives/proxies.mjs +2326 -0
  158. package/esm2022/standalone/directives/radio-group.mjs +60 -0
  159. package/esm2022/standalone/directives/range.mjs +78 -0
  160. package/esm2022/standalone/directives/searchbar.mjs +82 -0
  161. package/esm2022/standalone/directives/segment.mjs +60 -0
  162. package/esm2022/standalone/directives/select.mjs +84 -0
  163. package/esm2022/standalone/directives/textarea.mjs +91 -0
  164. package/esm2022/standalone/directives/toggle.mjs +76 -0
  165. package/esm2022/standalone/index.mjs +25 -0
  166. package/esm2022/standalone/ionic-angular-standalone.mjs +5 -0
  167. package/esm2022/standalone/navigation/back-button.mjs +32 -0
  168. package/esm2022/standalone/navigation/nav.mjs +28 -0
  169. package/esm2022/standalone/navigation/router-link-delegate.mjs +28 -0
  170. package/esm2022/standalone/navigation/router-outlet.mjs +60 -0
  171. package/esm2022/standalone/navigation/tabs.mjs +58 -0
  172. package/esm2022/standalone/overlays/modal.mjs +32 -0
  173. package/esm2022/standalone/overlays/popover.mjs +28 -0
  174. package/esm2022/standalone/providers/action-sheet-controller.mjs +21 -0
  175. package/esm2022/standalone/providers/alert-controller.mjs +21 -0
  176. package/esm2022/standalone/providers/animation-controller.mjs +38 -0
  177. package/esm2022/standalone/providers/gesture-controller.mjs +33 -0
  178. package/esm2022/standalone/providers/ionic-angular.mjs +38 -0
  179. package/esm2022/standalone/providers/loading-controller.mjs +21 -0
  180. package/esm2022/standalone/providers/menu-controller.mjs +19 -0
  181. package/esm2022/standalone/providers/modal-controller.mjs +28 -0
  182. package/esm2022/standalone/providers/picker-controller.mjs +24 -0
  183. package/esm2022/standalone/providers/popover-controller.mjs +21 -0
  184. package/esm2022/standalone/providers/toast-controller.mjs +21 -0
  185. package/fesm2022/ionic-angular-common.mjs +79 -68
  186. package/fesm2022/ionic-angular-common.mjs.map +1 -1
  187. package/fesm2022/ionic-angular-standalone.mjs +882 -903
  188. package/fesm2022/ionic-angular-standalone.mjs.map +1 -1
  189. package/fesm2022/ionic-angular.mjs +744 -1065
  190. package/fesm2022/ionic-angular.mjs.map +1 -1
  191. package/index.d.ts +27 -0
  192. package/ionic-module.d.ts +28 -0
  193. package/package.json +16 -11
  194. package/providers/action-sheet-controller.d.ts +8 -0
  195. package/providers/alert-controller.d.ts +8 -0
  196. package/providers/animation-controller.d.ts +25 -0
  197. package/providers/gesture-controller.d.ts +13 -0
  198. package/providers/loading-controller.d.ts +8 -0
  199. package/providers/menu-controller.d.ts +7 -0
  200. package/providers/modal-controller.d.ts +12 -0
  201. package/providers/picker-controller.d.ts +11 -0
  202. package/providers/popover-controller.d.ts +9 -0
  203. package/providers/toast-controller.d.ts +8 -0
  204. package/schematics/add/index.js +1 -27
  205. package/schematics/utils/ast.js +2 -1
  206. package/schematics/utils/config.js +11 -10
  207. package/schematics/utils/package.js +2 -1
  208. package/standalone/directives/angular-component-lib/utils.d.ts +9 -0
  209. package/standalone/directives/checkbox.d.ts +30 -0
  210. package/standalone/directives/datetime.d.ts +30 -0
  211. package/standalone/directives/icon.d.ts +9 -0
  212. package/standalone/directives/index.d.ts +12 -0
  213. package/standalone/directives/input-otp.d.ts +49 -0
  214. package/standalone/directives/input.d.ts +47 -0
  215. package/standalone/directives/proxies.d.ts +1053 -0
  216. package/standalone/directives/radio-group.d.ts +18 -0
  217. package/standalone/directives/range.d.ts +47 -0
  218. package/standalone/directives/searchbar.d.ts +45 -0
  219. package/standalone/directives/segment.d.ts +19 -0
  220. package/standalone/directives/select.d.ts +34 -0
  221. package/standalone/directives/textarea.d.ts +37 -0
  222. package/standalone/directives/toggle.d.ts +28 -0
  223. package/standalone/index.d.ts +23 -0
  224. package/standalone/navigation/back-button.d.ts +9 -0
  225. package/standalone/navigation/nav.d.ts +8 -0
  226. package/standalone/navigation/router-link-delegate.d.ts +10 -0
  227. package/standalone/navigation/router-outlet.d.ts +25 -0
  228. package/standalone/navigation/tabs.d.ts +13 -0
  229. package/standalone/overlays/modal.d.ts +6 -0
  230. package/standalone/overlays/popover.d.ts +6 -0
  231. package/standalone/providers/action-sheet-controller.d.ts +8 -0
  232. package/standalone/providers/alert-controller.d.ts +8 -0
  233. package/standalone/providers/animation-controller.d.ts +25 -0
  234. package/standalone/providers/gesture-controller.d.ts +13 -0
  235. package/standalone/providers/ionic-angular.d.ts +7 -0
  236. package/standalone/providers/loading-controller.d.ts +8 -0
  237. package/standalone/providers/menu-controller.d.ts +7 -0
  238. package/standalone/providers/modal-controller.d.ts +12 -0
  239. package/standalone/providers/picker-controller.d.ts +11 -0
  240. package/standalone/providers/popover-controller.d.ts +9 -0
  241. package/standalone/providers/toast-controller.d.ts +8 -0
  242. package/types/ionic-angular-common.d.ts +0 -1014
  243. package/types/ionic-angular-standalone.d.ts +0 -1560
@@ -0,0 +1,279 @@
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
+ /**
5
+ * Extracts `queryParams` and `fragment` from a tab button's href for use
6
+ * as Angular `NavigationExtras`. Returns `undefined` when neither is present.
7
+ */
8
+ const parseHrefExtras = (href) => {
9
+ if (!href) {
10
+ return undefined;
11
+ }
12
+ const hashIndex = href.indexOf('#');
13
+ // Treat a bare `#` (no fragment text) as no fragment.
14
+ const fragment = hashIndex >= 0 && hashIndex < href.length - 1 ? href.slice(hashIndex + 1) : undefined;
15
+ const beforeHash = hashIndex >= 0 ? href.slice(0, hashIndex) : href;
16
+ const queryIndex = beforeHash.indexOf('?');
17
+ const search = queryIndex >= 0 ? beforeHash.slice(queryIndex + 1) : '';
18
+ let queryParams;
19
+ if (search) {
20
+ const params = new URLSearchParams(search);
21
+ queryParams = {};
22
+ for (const key of new Set(params.keys())) {
23
+ const all = params.getAll(key);
24
+ queryParams[key] = all.length > 1 ? all : all[0];
25
+ }
26
+ }
27
+ if (!queryParams && fragment === undefined) {
28
+ return undefined;
29
+ }
30
+ /**
31
+ * Build the result with only the populated keys so that a spread of the
32
+ * returned object does not overwrite saved `queryParams`/`fragment` with
33
+ * `undefined` (which `Object.assign`/spread would copy as a real key).
34
+ */
35
+ const extras = {};
36
+ if (queryParams)
37
+ extras.queryParams = queryParams;
38
+ if (fragment !== undefined)
39
+ extras.fragment = fragment;
40
+ return extras;
41
+ };
42
+ class IonTabs {
43
+ navCtrl;
44
+ tabsInner;
45
+ /**
46
+ * Emitted before the tab view is changed.
47
+ */
48
+ ionTabsWillChange = new EventEmitter();
49
+ /**
50
+ * Emitted after the tab view is changed.
51
+ */
52
+ ionTabsDidChange = new EventEmitter();
53
+ tabBarSlot = 'bottom';
54
+ hasTab = false;
55
+ selectedTab;
56
+ leavingTab;
57
+ constructor(navCtrl) {
58
+ this.navCtrl = navCtrl;
59
+ }
60
+ ngAfterViewInit() {
61
+ /**
62
+ * Developers must pass at least one ion-tab
63
+ * inside of ion-tabs if they want to use a
64
+ * basic tab-based navigation without the
65
+ * history stack or URL updates associated
66
+ * with the router.
67
+ */
68
+ const firstTab = this.tabs.length > 0 ? this.tabs.first : undefined;
69
+ if (firstTab) {
70
+ this.hasTab = true;
71
+ this.setActiveTab(firstTab.tab);
72
+ this.tabSwitch();
73
+ }
74
+ }
75
+ ngAfterContentInit() {
76
+ this.detectSlotChanges();
77
+ }
78
+ ngAfterContentChecked() {
79
+ this.detectSlotChanges();
80
+ }
81
+ /**
82
+ * @internal
83
+ */
84
+ onStackWillChange({ enteringView, tabSwitch }) {
85
+ const stackId = enteringView.stackId;
86
+ if (tabSwitch && stackId !== undefined) {
87
+ this.ionTabsWillChange.emit({ tab: stackId });
88
+ }
89
+ }
90
+ /**
91
+ * @internal
92
+ */
93
+ onStackDidChange({ enteringView, tabSwitch }) {
94
+ const stackId = enteringView.stackId;
95
+ if (tabSwitch && stackId !== undefined) {
96
+ if (this.tabBar) {
97
+ this.tabBar.selectedTab = stackId;
98
+ }
99
+ this.ionTabsDidChange.emit({ tab: stackId });
100
+ }
101
+ }
102
+ /**
103
+ * When a tab button is clicked, there are several scenarios:
104
+ * 1. If the selected tab is currently active (the tab button has been clicked
105
+ * again), then it should go to the root view for that tab.
106
+ *
107
+ * a. Get the saved root view from the router outlet. If the saved root view
108
+ * matches the tabRootUrl, set the route view to this view including the
109
+ * navigation extras. Any `queryParams` or `fragment` declared on the tab
110
+ * button's `href` are also forwarded.
111
+ * b. If the saved root view from the router outlet does not match, navigate
112
+ * to the tabRootUrl, forwarding any `queryParams`/`fragment` declared on
113
+ * the tab button's `href`.
114
+ *
115
+ * 2. If the current tab tab is not currently selected, get the last route
116
+ * view from the router outlet.
117
+ *
118
+ * a. If the last route view exists, navigate to that view including any
119
+ * navigation extras.
120
+ * b. If the last route view doesn't exist, then navigate to the default
121
+ * tabRootUrl, forwarding any `queryParams`/`fragment` declared on the
122
+ * tab button's `href`.
123
+ */
124
+ select(tabOrEvent) {
125
+ const isTabString = typeof tabOrEvent === 'string';
126
+ const tab = isTabString ? tabOrEvent : tabOrEvent.detail.tab;
127
+ const href = isTabString ? undefined : tabOrEvent.detail.href;
128
+ /**
129
+ * If the tabs are not using the router, then
130
+ * the tab switch logic is handled by the tabs
131
+ * component itself.
132
+ */
133
+ if (this.hasTab) {
134
+ this.setActiveTab(tab);
135
+ this.tabSwitch();
136
+ return;
137
+ }
138
+ const alreadySelected = this.outlet.getActiveStackId() === tab;
139
+ const tabRootUrl = `${this.outlet.tabsPrefix}/${tab}`;
140
+ /**
141
+ * The href pathname is ignored here; tab routing is driven by `tabsPrefix/tab`.
142
+ * Only the query and fragment are forwarded as navigation extras.
143
+ */
144
+ const hrefExtras = parseHrefExtras(href);
145
+ /**
146
+ * If this is a nested tab, prevent the event
147
+ * from bubbling otherwise the outer tabs
148
+ * will respond to this event too, causing
149
+ * the app to get directed to the wrong place.
150
+ */
151
+ if (!isTabString) {
152
+ tabOrEvent.stopPropagation();
153
+ }
154
+ if (alreadySelected) {
155
+ const activeStackId = this.outlet.getActiveStackId();
156
+ const activeView = this.outlet.getLastRouteView(activeStackId);
157
+ // If on root tab, do not navigate to root tab again
158
+ if (activeView?.url === tabRootUrl) {
159
+ return;
160
+ }
161
+ const rootView = this.outlet.getRootView(tab);
162
+ const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras;
163
+ return this.navCtrl.navigateRoot(tabRootUrl, {
164
+ ...navigationExtras,
165
+ ...hrefExtras,
166
+ animated: true,
167
+ animationDirection: 'back',
168
+ });
169
+ }
170
+ else {
171
+ const lastRoute = this.outlet.getLastRouteView(tab);
172
+ /**
173
+ * If there is a lastRoute, goto that, otherwise goto the fallback url of the
174
+ * selected tab. When falling back to the tab root, honor query params and
175
+ * fragment declared on the tab button's href.
176
+ */
177
+ const url = lastRoute?.url || tabRootUrl;
178
+ const navigationExtras = lastRoute?.savedExtras ?? (url === tabRootUrl ? hrefExtras : undefined);
179
+ return this.navCtrl.navigateRoot(url, {
180
+ ...navigationExtras,
181
+ animated: true,
182
+ animationDirection: 'back',
183
+ });
184
+ }
185
+ }
186
+ setActiveTab(tab) {
187
+ const tabs = this.tabs;
188
+ const selectedTab = tabs.find((t) => t.tab === tab);
189
+ if (!selectedTab) {
190
+ console.error(`[Ionic Error]: Tab with id: "${tab}" does not exist`);
191
+ return;
192
+ }
193
+ this.leavingTab = this.selectedTab;
194
+ this.selectedTab = selectedTab;
195
+ this.ionTabsWillChange.emit({ tab });
196
+ selectedTab.el.active = true;
197
+ }
198
+ tabSwitch() {
199
+ const { selectedTab, leavingTab } = this;
200
+ if (this.tabBar && selectedTab) {
201
+ this.tabBar.selectedTab = selectedTab.tab;
202
+ }
203
+ if (leavingTab?.tab !== selectedTab?.tab) {
204
+ if (leavingTab?.el) {
205
+ leavingTab.el.active = false;
206
+ }
207
+ }
208
+ if (selectedTab) {
209
+ this.ionTabsDidChange.emit({ tab: selectedTab.tab });
210
+ }
211
+ }
212
+ getSelected() {
213
+ if (this.hasTab) {
214
+ return this.selectedTab?.tab;
215
+ }
216
+ return this.outlet.getActiveStackId();
217
+ }
218
+ /**
219
+ * Detects changes to the slot attribute of the tab bar.
220
+ *
221
+ * If the slot attribute has changed, then the tab bar
222
+ * should be relocated to the new slot position.
223
+ */
224
+ detectSlotChanges() {
225
+ this.tabBars.forEach((tabBar) => {
226
+ // el is a protected attribute from the generated component wrapper
227
+ const currentSlot = tabBar.el.getAttribute('slot');
228
+ if (currentSlot !== this.tabBarSlot) {
229
+ this.tabBarSlot = currentSlot;
230
+ this.relocateTabBar();
231
+ }
232
+ });
233
+ }
234
+ /**
235
+ * Relocates the tab bar to the new slot position.
236
+ */
237
+ relocateTabBar() {
238
+ /**
239
+ * `el` is a protected attribute from the generated component wrapper.
240
+ * To avoid having to manually create the wrapper for tab bar, we
241
+ * cast the tab bar to any and access the protected attribute.
242
+ */
243
+ const tabBar = this.tabBar.el;
244
+ if (this.tabBarSlot === 'top') {
245
+ /**
246
+ * A tab bar with a slot of "top" should be inserted
247
+ * at the top of the container.
248
+ */
249
+ this.tabsInner.nativeElement.before(tabBar);
250
+ }
251
+ else {
252
+ /**
253
+ * A tab bar with a slot of "bottom" or without a slot
254
+ * should be inserted at the end of the container.
255
+ */
256
+ this.tabsInner.nativeElement.after(tabBar);
257
+ }
258
+ }
259
+ /** @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 });
260
+ /** @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 });
261
+ }
262
+ export { IonTabs };
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, decorators: [{
264
+ type: Directive,
265
+ args: [{
266
+ selector: 'ion-tabs',
267
+ }]
268
+ }], ctorParameters: function () { return [{ type: i1.NavController }]; }, propDecorators: { tabsInner: [{
269
+ type: ViewChild,
270
+ args: ['tabsInner', { read: ElementRef, static: true }]
271
+ }], ionTabsWillChange: [{
272
+ type: Output
273
+ }], ionTabsDidChange: [{
274
+ type: Output
275
+ }], select: [{
276
+ type: HostListener,
277
+ args: ['ionTabButtonClick', ['$event']]
278
+ }] } });
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvZGlyZWN0aXZlcy9uYXZpZ2F0aW9uL3RhYnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkI7OztHQUdHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUF3QixFQUEyRCxFQUFFO0lBQzVHLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDVCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsc0RBQXNEO0lBQ3RELE1BQU0sUUFBUSxHQUFHLFNBQVMsSUFBSSxDQUFDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZHLE1BQU0sVUFBVSxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFcEUsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRXZFLElBQUksV0FBK0IsQ0FBQztJQUNwQyxJQUFJLE1BQU0sRUFBRTtRQUNWLE1B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ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbmF2LWNvbnRyb2xsZXInO1xuXG5pbXBvcnQgeyBTdGFja0RpZENoYW5nZUV2ZW50LCBTdGFja1dpbGxDaGFuZ2VFdmVudCB9IGZyb20gJy4vc3RhY2stdXRpbHMnO1xuXG4vKipcbiAqIEV4dHJhY3RzIGBxdWVyeVBhcmFtc2AgYW5kIGBmcmFnbWVudGAgZnJvbSBhIHRhYiBidXR0b24ncyBocmVmIGZvciB1c2VcbiAqIGFzIEFuZ3VsYXIgYE5hdmlnYXRpb25FeHRyYXNgLiBSZXR1cm5zIGB1bmRlZmluZWRgIHdoZW4gbmVpdGhlciBpcyBwcmVzZW50LlxuICovXG5jb25zdCBwYXJzZUhyZWZFeHRyYXMgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkKTogeyBxdWVyeVBhcmFtcz86IFBhcmFtczsgZnJhZ21lbnQ/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghaHJlZikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBoYXNoSW5kZXggPSBocmVmLmluZGV4T2YoJyMnKTtcbiAgLy8gVHJlYXQgYSBiYXJlIGAjYCAobm8gZnJhZ21lbnQgdGV4dCkgYXMgbm8gZnJhZ21lbnQuXG4gIGNvbnN0IGZyYWdtZW50ID0gaGFzaEluZGV4ID49IDAgJiYgaGFzaEluZGV4IDwgaHJlZi5sZW5ndGggLSAxID8gaHJlZi5zbGljZShoYXNoSW5kZXggKyAxKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYmVmb3JlSGFzaCA9IGhhc2hJbmRleCA+PSAwID8gaHJlZi5zbGljZSgwLCBoYXNoSW5kZXgpIDogaHJlZjtcblxuICBjb25zdCBxdWVyeUluZGV4ID0gYmVmb3JlSGFzaC5pbmRleE9mKCc/Jyk7XG4gIGNvbnN0IHNlYXJjaCA9IHF1ZXJ5SW5kZXggPj0gMCA/IGJlZm9yZUhhc2guc2xpY2UocXVlcnlJbmRleCArIDEpIDogJyc7XG5cbiAgbGV0IHF1ZXJ5UGFyYW1zOiBQYXJhbXMgfCB1bmRlZmluZWQ7XG4gIGlmIChzZWFyY2gpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHNlYXJjaCk7XG4gICAgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBuZXcgU2V0KHBhcmFtcy5rZXlzKCkpKSB7XG4gICAgICBjb25zdCBhbGwgPSBwYXJhbXMuZ2V0QWxsKGtleSk7XG4gICAgICBxdWVyeVBhcmFtc1trZXldID0gYWxsLmxlbmd0aCA+IDEgPyBhbGwgOiBhbGxbMF07XG4gICAgfVxuICB9XG5cbiAgaWYgKCFxdWVyeVBhcmFtcyAmJiBmcmFnbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgcmVzdWx0IHdpdGggb25seSB0aGUgcG9wdWxhdGVkIGtleXMgc28gdGhhdCBhIHNwcmVhZCBvZiB0aGVcbiAgICogcmV0dXJuZWQgb2JqZWN0IGRvZXMgbm90IG92ZXJ3cml0ZSBzYXZlZCBgcXVlcnlQYXJhbXNgL2BmcmFnbWVudGAgd2l0aFxuICAgKiBgdW5kZWZpbmVkYCAod2hpY2ggYE9iamVjdC5hc3NpZ25gL3NwcmVhZCB3b3VsZCBjb3B5IGFzIGEgcmVhbCBrZXkpLlxuICAgKi9cbiAgY29uc3QgZXh0cmFzOiB7IHF1ZXJ5UGFyYW1zPzogUGFyYW1zOyBmcmFnbWVudD86IHN0cmluZyB9ID0ge307XG4gIGlmIChxdWVyeVBhcmFtcykgZXh0cmFzLnF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gIGlmIChmcmFnbWVudCAhPT0gdW5kZWZpbmVkKSBleHRyYXMuZnJhZ21lbnQgPSBmcmFnbWVudDtcbiAgcmV0dXJuIGV4dHJhcztcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi10YWJzJyxcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJb25UYWJzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIC8qKlxuICAgKiBOb3RlOiBUaGVzZSBtdXN0IGJlIHJlZGVjbGFyZWQgb24gZWFjaCBjaGlsZCBjbGFzcyBzaW5jZSBpdCBuZWVkc1xuICAgKiBhY2Nlc3MgdG8gZ2VuZXJhdGVkIGNvbXBvbmVudHMgc3VjaCBhcyBJb25Sb3V0ZXJPdXRsZXQgYW5kIElvblRhYkJhci5cbiAgICovXG4gIGFic3RyYWN0IG91dGxldDogYW55O1xuICBhYnN0cmFjdCB0YWJCYXI6IGFueTtcbiAgYWJzdHJhY3QgdGFiQmFyczogUXVlcnlMaXN0PGFueT47XG4gIGFic3RyYWN0IHRhYnM6IFF1ZXJ5TGlzdDxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYnNJbm5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHRhYnNJbm5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSB0YWIgdmlldyBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGlvblRhYnNXaWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRhYjogc3RyaW5nIH0+KCk7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSB0YWIgdmlldyBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGlvblRhYnNEaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGFiOiBzdHJpbmcgfT4oKTtcblxuICBwcml2YXRlIHRhYkJhclNsb3QgPSAnYm90dG9tJztcblxuICBwcml2YXRlIGhhc1RhYiA9IGZhbHNlO1xuICBwcml2YXRlIHNlbGVjdGVkVGFiPzogeyB0YWI6IHN0cmluZyB9O1xuICBwcml2YXRlIGxlYXZpbmdUYWI/OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZDdHJsOiBOYXZDb250cm9sbGVyKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBEZXZlbG9wZXJzIG11c3QgcGFzcyBhdCBsZWFzdCBvbmUgaW9uLXRhYlxuICAgICAqIGluc2lkZSBvZiBpb24tdGFicyBpZiB0aGV5IHdhbnQgdG8gdXNlIGFcbiAgICAgKiBiYXNpYyB0YWItYmFzZWQgbmF2aWdhdGlvbiB3aXRob3V0IHRoZVxuICAgICAqIGhpc3Rvcnkgc3RhY2sgb3IgVVJMIHVwZGF0ZXMgYXNzb2NpYXRlZFxuICAgICAqIHdpdGggdGhlIHJvdXRlci5cbiAgICAgKi9cbiAgICBjb25zdCBmaXJzdFRhYiA9IHRoaXMudGFicy5sZW5ndGggPiAwID8gdGhpcy50YWJzLmZpcnN0IDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGZpcnN0VGFiKSB7XG4gICAgICB0aGlzLmhhc1RhYiA9IHRydWU7XG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYihmaXJzdFRhYi50YWIpO1xuICAgICAgdGhpcy50YWJTd2l0Y2goKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXRlY3RTbG90Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0ZWN0U2xvdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uU3RhY2tXaWxsQ2hhbmdlKHsgZW50ZXJpbmdWaWV3LCB0YWJTd2l0Y2ggfTogU3RhY2tXaWxsQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFja0lkID0gZW50ZXJpbmdWaWV3LnN0YWNrSWQ7XG4gICAgaWYgKHRhYlN3aXRjaCAmJiBzdGFja0lkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaW9uVGFic1dpbGxDaGFuZ2UuZW1pdCh7IHRhYjogc3RhY2tJZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblN0YWNrRGlkQ2hhbmdlKHsgZW50ZXJpbmdWaWV3LCB0YWJTd2l0Y2ggfTogU3RhY2tEaWRDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrSWQgPSBlbnRlcmluZ1ZpZXcuc3RhY2tJZDtcbiAgICBpZiAodGFiU3dpdGNoICYmIHN0YWNrSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMudGFiQmFyKSB7XG4gICAgICAgIHRoaXMudGFiQmFyLnNlbGVjdGVkVGFiID0gc3RhY2tJZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW9uVGFic0RpZENoYW5nZS5lbWl0KHsgdGFiOiBzdGFja0lkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGEgdGFiIGJ1dHRvbiBpcyBjbGlja2VkLCB0aGVyZSBhcmUgc2V2ZXJhbCBzY2VuYXJpb3M6XG4gICAqIDEuIElmIHRoZSBzZWxlY3RlZCB0YWIgaXMgY3VycmVudGx5IGFjdGl2ZSAodGhlIHRhYiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZFxuICAgKiAgICBhZ2FpbiksIHRoZW4gaXQgc2hvdWxkIGdvIHRvIHRoZSByb290IHZpZXcgZm9yIHRoYXQgdGFiLlxuICAgKlxuICAgKiAgIGEuIEdldCB0aGUgc2F2ZWQgcm9vdCB2aWV3IGZyb20gdGhlIHJvdXRlciBvdXRsZXQuIElmIHRoZSBzYXZlZCByb290IHZpZXdcbiAgICogICAgICBtYXRjaGVzIHRoZSB0YWJSb290VXJsLCBzZXQgdGhlIHJvdXRlIHZpZXcgdG8gdGhpcyB2aWV3IGluY2x1ZGluZyB0aGVcbiAgICogICAgICBuYXZpZ2F0aW9uIGV4dHJhcy4gQW55IGBxdWVyeVBhcmFtc2Agb3IgYGZyYWdtZW50YCBkZWNsYXJlZCBvbiB0aGUgdGFiXG4gICAqICAgICAgYnV0dG9uJ3MgYGhyZWZgIGFyZSBhbHNvIGZvcndhcmRlZC5cbiAgICogICBiLiBJZiB0aGUgc2F2ZWQgcm9vdCB2aWV3IGZyb20gdGhlIHJvdXRlciBvdXRsZXQgZG9lcyBub3QgbWF0Y2gsIG5hdmlnYXRlXG4gICAqICAgICAgdG8gdGhlIHRhYlJvb3RVcmwsIGZvcndhcmRpbmcgYW55IGBxdWVyeVBhcmFtc2AvYGZyYWdtZW50YCBkZWNsYXJlZCBvblxuICAgKiAgICAgIHRoZSB0YWIgYnV0dG9uJ3MgYGhyZWZgLlxuICAgKlxuICAgKiAyLiBJZiB0aGUgY3VycmVudCB0YWIgdGFiIGlzIG5vdCBjdXJyZW50bHkgc2VsZWN0ZWQsIGdldCB0aGUgbGFzdCByb3V0ZVxuICAgKiAgICB2aWV3IGZyb20gdGhlIHJvdXRlciBvdXRsZXQuXG4gICAqXG4gICAqICAgYS4gSWYgdGhlIGxhc3Qgcm91dGUgdmlldyBleGlzdHMsIG5hdmlnYXRlIHRvIHRoYXQgdmlldyBpbmNsdWRpbmcgYW55XG4gICAqICAgICAgbmF2aWdhdGlvbiBleHRyYXMuXG4gICAqICAgYi4gSWYgdGhlIGxhc3Qgcm91dGUgdmlldyBkb2Vzbid0IGV4aXN0LCB0aGVuIG5hdmlnYXRlIHRvIHRoZSBkZWZhdWx0XG4gICAqICAgICAgdGFiUm9vdFVybCwgZm9yd2FyZGluZyBhbnkgYHF1ZXJ5UGFyYW1zYC9gZnJhZ21lbnRgIGRlY2xhcmVkIG9uIHRoZVxuICAgKiAgICAgIHRhYiBidXR0b24ncyBgaHJlZmAuXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdpb25UYWJCdXR0b25DbGljaycsIFsnJGV2ZW50J10pXG4gIHNlbGVjdCh0YWJPckV2ZW50OiBzdHJpbmcgfCBDdXN0b21FdmVudCk6IFByb21pc2U8Ym9vbGVhbj4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzVGFiU3RyaW5nID0gdHlwZW9mIHRhYk9yRXZlbnQgPT09ICdzdHJpbmcnO1xuICAgIGNvbnN0IHRhYiA9IGlzVGFiU3RyaW5nID8gdGFiT3JFdmVudCA6ICh0YWJPckV2ZW50IGFzIEN1c3RvbUV2ZW50KS5kZXRhaWwudGFiO1xuICAgIGNvbnN0IGhyZWY6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGlzVGFiU3RyaW5nID8gdW5kZWZpbmVkIDogKHRhYk9yRXZlbnQgYXMgQ3VzdG9tRXZlbnQpLmRldGFpbC5ocmVmO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIHRhYnMgYXJlIG5vdCB1c2luZyB0aGUgcm91dGVyLCB0aGVuXG4gICAgICogdGhlIHRhYiBzd2l0Y2ggbG9naWMgaXMgaGFuZGxlZCBieSB0aGUgdGFic1xuICAgICAqIGNvbXBvbmVudCBpdHNlbGYuXG4gICAgICovXG4gICAgaWYgKHRoaXMuaGFzVGFiKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYih0YWIpO1xuICAgICAgdGhpcy50YWJTd2l0Y2goKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFscmVhZHlTZWxlY3RlZCA9IHRoaXMub3V0bGV0LmdldEFjdGl2ZVN0YWNrSWQoKSA9PT0gdGFiO1xuICAgIGNvbnN0IHRhYlJvb3RVcmwgPSBgJHt0aGlzLm91dGxldC50YWJzUHJlZml4fS8ke3RhYn1gO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhyZWYgcGF0aG5hbWUgaXMgaWdub3JlZCBoZXJlOyB0YWIgcm91dGluZyBpcyBkcml2ZW4gYnkgYHRhYnNQcmVmaXgvdGFiYC5cbiAgICAgKiBPbmx5IHRoZSBxdWVyeSBhbmQgZnJhZ21lbnQgYXJlIGZvcndhcmRlZCBhcyBuYXZpZ2F0aW9uIGV4dHJhcy5cbiAgICAgKi9cbiAgICBjb25zdCBocmVmRXh0cmFzID0gcGFyc2VIcmVmRXh0cmFzKGhyZWYpO1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhpcyBpcyBhIG5lc3RlZCB0YWIsIHByZXZlbnQgdGhlIGV2ZW50XG4gICAgICogZnJvbSBidWJibGluZyBvdGhlcndpc2UgdGhlIG91dGVyIHRhYnNcbiAgICAgKiB3aWxsIHJlc3BvbmQgdG8gdGhpcyBldmVudCB0b28sIGNhdXNpbmdcbiAgICAgKiB0aGUgYXBwIHRvIGdldCBkaXJlY3RlZCB0byB0aGUgd3JvbmcgcGxhY2UuXG4gICAgICovXG4gICAgaWYgKCFpc1RhYlN0cmluZykge1xuICAgICAgKHRhYk9yRXZlbnQgYXMgQ3VzdG9tRXZlbnQpLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGlmIChhbHJlYWR5U2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVN0YWNrSWQgPSB0aGlzLm91dGxldC5nZXRBY3RpdmVTdGFja0lkKCk7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gdGhpcy5vdXRsZXQuZ2V0TGFzdFJvdXRlVmlldyhhY3RpdmVTdGFja0lkKTtcblxuICAgICAgLy8gSWYgb24gcm9vdCB0YWIsIGRvIG5vdCBuYXZpZ2F0ZSB0byByb290IHRhYiBhZ2FpblxuICAgICAgaWYgKGFjdGl2ZVZpZXc/LnVybCA9PT0gdGFiUm9vdFVybCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvb3RWaWV3ID0gdGhpcy5vdXRsZXQuZ2V0Um9vdFZpZXcodGFiKTtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25FeHRyYXMgPSByb290VmlldyAmJiB0YWJSb290VXJsID09PSByb290Vmlldy51cmwgJiYgcm9vdFZpZXcuc2F2ZWRFeHRyYXM7XG4gICAgICByZXR1cm4gdGhpcy5uYXZDdHJsLm5hdmlnYXRlUm9vdCh0YWJSb290VXJsLCB7XG4gICAgICAgIC4uLm5hdmlnYXRpb25FeHRyYXMsXG4gICAgICAgIC4uLmhyZWZFeHRyYXMsXG4gICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICBhbmltYXRpb25EaXJlY3Rpb246ICdiYWNrJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0Um91dGUgPSB0aGlzLm91dGxldC5nZXRMYXN0Um91dGVWaWV3KHRhYik7XG4gICAgICAvKipcbiAgICAgICAqIElmIHRoZXJlIGlzIGEgbGFzdFJvdXRlLCBnb3RvIHRoYXQsIG90aGVyd2lzZSBnb3RvIHRoZSBmYWxsYmFjayB1cmwgb2YgdGhlXG4gICAgICAgKiBzZWxlY3RlZCB0YWIuIFdoZW4gZmFsbGluZyBiYWNrIHRvIHRoZSB0YWIgcm9vdCwgaG9ub3IgcXVlcnkgcGFyYW1zIGFuZFxuICAgICAgICogZnJhZ21lbnQgZGVjbGFyZWQgb24gdGhlIHRhYiBidXR0b24ncyBocmVmLlxuICAgICAgICovXG4gICAgICBjb25zdCB1cmwgPSBsYXN0Um91dGU/LnVybCB8fCB0YWJSb290VXJsO1xuICAgICAgY29uc3QgbmF2aWdhdGlvbkV4dHJhcyA9IGxhc3RSb3V0ZT8uc2F2ZWRFeHRyYXMgPz8gKHVybCA9PT0gdGFiUm9vdFVybCA/IGhyZWZFeHRyYXMgOiB1bmRlZmluZWQpO1xuXG4gICAgICByZXR1cm4gdGhpcy5uYXZDdHJsLm5hdmlnYXRlUm9vdCh1cmwsIHtcbiAgICAgICAgLi4ubmF2aWdhdGlvbkV4dHJhcyxcbiAgICAgICAgYW5pbWF0ZWQ6IHRydWUsXG4gICAgICAgIGFuaW1hdGlvbkRpcmVjdGlvbjogJ2JhY2snLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJzID0gdGhpcy50YWJzO1xuICAgIGNvbnN0IHNlbGVjdGVkVGFiID0gdGFicy5maW5kKCh0OiBhbnkpID0+IHQudGFiID09PSB0YWIpO1xuXG4gICAgaWYgKCFzZWxlY3RlZFRhYikge1xuICAgICAgY29uc29sZS5lcnJvcihgW0lvbmljIEVycm9yXTogVGFiIHdpdGggaWQ6IFwiJHt0YWJ9XCIgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxlYXZpbmdUYWIgPSB0aGlzLnNlbGVjdGVkVGFiO1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSBzZWxlY3RlZFRhYjtcblxuICAgIHRoaXMuaW9uVGFic1dpbGxDaGFuZ2UuZW1pdCh7IHRhYiB9KTtcblxuICAgIHNlbGVjdGVkVGFiLmVsLmFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHRhYlN3aXRjaCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IHNlbGVjdGVkVGFiLCBsZWF2aW5nVGFiIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMudGFiQmFyICYmIHNlbGVjdGVkVGFiKSB7XG4gICAgICB0aGlzLnRhYkJhci5zZWxlY3RlZFRhYiA9IHNlbGVjdGVkVGFiLnRhYjtcbiAgICB9XG5cbiAgICBpZiAobGVhdmluZ1RhYj8udGFiICE9PSBzZWxlY3RlZFRhYj8udGFiKSB7XG4gICAgICBpZiAobGVhdmluZ1RhYj8uZWwpIHtcbiAgICAgICAgbGVhdmluZ1RhYi5lbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWRUYWIpIHtcbiAgICAgIHRoaXMuaW9uVGFic0RpZENoYW5nZS5lbWl0KHsgdGFiOiBzZWxlY3RlZFRhYi50YWIgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2VsZWN0ZWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5oYXNUYWIpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFiPy50YWI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0bGV0LmdldEFjdGl2ZVN0YWNrSWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGNoYW5nZXMgdG8gdGhlIHNsb3QgYXR0cmlidXRlIG9mIHRoZSB0YWIgYmFyLlxuICAgKlxuICAgKiBJZiB0aGUgc2xvdCBhdHRyaWJ1dGUgaGFzIGNoYW5nZWQsIHRoZW4gdGhlIHRhYiBiYXJcbiAgICogc2hvdWxkIGJlIHJlbG9jYXRlZCB0byB0aGUgbmV3IHNsb3QgcG9zaXRpb24uXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFNsb3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudGFiQmFycy5mb3JFYWNoKCh0YWJCYXI6IGFueSkgPT4ge1xuICAgICAgLy8gZWwgaXMgYSBwcm90ZWN0ZWQgYXR0cmlidXRlIGZyb20gdGhlIGdlbmVyYXRlZCBjb21wb25lbnQgd3JhcHBlclxuICAgICAgY29uc3QgY3VycmVudFNsb3QgPSB0YWJCYXIuZWwuZ2V0QXR0cmlidXRlKCdzbG90Jyk7XG5cbiAgICAgIGlmIChjdXJyZW50U2xvdCAhPT0gdGhpcy50YWJCYXJTbG90KSB7XG4gICAgICAgIHRoaXMudGFiQmFyU2xvdCA9IGN1cnJlbnRTbG90O1xuICAgICAgICB0aGlzLnJlbG9jYXRlVGFiQmFyKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVsb2NhdGVzIHRoZSB0YWIgYmFyIHRvIHRoZSBuZXcgc2xvdCBwb3NpdGlvbi5cbiAgICovXG4gIHByaXZhdGUgcmVsb2NhdGVUYWJCYXIoKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogYGVsYCBpcyBhIHByb3RlY3RlZCBhdHRyaWJ1dGUgZnJvbSB0aGUgZ2VuZXJhdGVkIGNvbXBvbmVudCB3cmFwcGVyLlxuICAgICAqIFRvIGF2b2lkIGhhdmluZyB0byBtYW51YWxseSBjcmVhdGUgdGhlIHdyYXBwZXIgZm9yIHRhYiBiYXIsIHdlXG4gICAgICogY2FzdCB0aGUgdGFiIGJhciB0byBhbnkgYW5kIGFjY2VzcyB0aGUgcHJvdGVjdGVkIGF0dHJpYnV0ZS5cbiAgICAgKi9cbiAgICBjb25zdCB0YWJCYXIgPSAodGhpcy50YWJCYXIgYXMgYW55KS5lbCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICh0aGlzLnRhYkJhclNsb3QgPT09ICd0b3AnKSB7XG4gICAgICAvKipcbiAgICAgICAqIEEgdGFiIGJhciB3aXRoIGEgc2xvdCBvZiBcInRvcFwiIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAgICogYXQgdGhlIHRvcCBvZiB0aGUgY29udGFpbmVyLlxuICAgICAgICovXG4gICAgICB0aGlzLnRhYnNJbm5lci5uYXRpdmVFbGVtZW50LmJlZm9yZSh0YWJCYXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKipcbiAgICAgICAqIEEgdGFiIGJhciB3aXRoIGEgc2xvdCBvZiBcImJvdHRvbVwiIG9yIHdpdGhvdXQgYSBzbG90XG4gICAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGFpbmVyLlxuICAgICAgICovXG4gICAgICB0aGlzLnRhYnNJbm5lci5uYXRpdmVFbGVtZW50LmFmdGVyKHRhYkJhcik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ export { DomController } from './providers/dom-controller';
2
+ export { MenuController } from './providers/menu-controller';
3
+ export { NavController } from './providers/nav-controller';
4
+ export { Config, ConfigToken } from './providers/config';
5
+ export { Platform } from './providers/platform';
6
+ export { AngularDelegate, bindLifecycleEvents, IonModalToken } from './providers/angular-delegate';
7
+ export { NavParams } from './directives/navigation/nav-params';
8
+ export { IonModal } from './overlays/modal';
9
+ export { IonPopover } from './overlays/popover';
10
+ export { IonRouterOutlet, provideComponentInputBinding } from './directives/navigation/router-outlet';
11
+ export * from './directives/control-value-accessors';
12
+ export { IonBackButton } from './directives/navigation/back-button';
13
+ export { IonNav } from './directives/navigation/nav';
14
+ export { RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, } from './directives/navigation/router-link-delegate';
15
+ export { IonTabs } from './directives/navigation/tabs';
16
+ export { ProxyCmp } from './utils/proxy';
17
+ export { OverlayBaseController } from './utils/overlay';
18
+ export { IonicRouteStrategy } from './utils/routing';
19
+ export { raf } from './utils/util';
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFNbkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXRHLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLG1DQUFtQyxHQUNwQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBEb21Db250cm9sbGVyIH0gZnJvbSAnLi9wcm92aWRlcnMvZG9tLWNvbnRyb2xsZXInO1xuZXhwb3J0IHsgTWVudUNvbnRyb2xsZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9tZW51LWNvbnRyb2xsZXInO1xuZXhwb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJy4vcHJvdmlkZXJzL25hdi1jb250cm9sbGVyJztcblxuZXhwb3J0IHsgQ29uZmlnLCBDb25maWdUb2tlbiB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbmZpZyc7XG5leHBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJy4vcHJvdmlkZXJzL3BsYXRmb3JtJztcblxuZXhwb3J0IHsgQW5ndWxhckRlbGVnYXRlLCBiaW5kTGlmZWN5Y2xlRXZlbnRzLCBJb25Nb2RhbFRva2VuIH0gZnJvbSAnLi9wcm92aWRlcnMvYW5ndWxhci1kZWxlZ2F0ZSc7XG5cbmV4cG9ydCB0eXBlIHsgSW9uaWNXaW5kb3cgfSBmcm9tICcuL3R5cGVzL2ludGVyZmFjZXMnO1xuZXhwb3J0IHR5cGUgeyBWaWV3RGlkRW50ZXIsIFZpZXdEaWRMZWF2ZSwgVmlld1dpbGxFbnRlciwgVmlld1dpbGxMZWF2ZSB9IGZyb20gJy4vdHlwZXMvaW9uaWMtbGlmZWN5Y2xlLWhvb2tzJztcbmV4cG9ydCB0eXBlIHsgTW9kYWxPcHRpb25zLCBQb3BvdmVyT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMvb3ZlcmxheS1vcHRpb25zJztcblxuZXhwb3J0IHsgTmF2UGFyYW1zIH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vbmF2LXBhcmFtcyc7XG5cbmV4cG9ydCB7IElvbk1vZGFsIH0gZnJvbSAnLi9vdmVybGF5cy9tb2RhbCc7XG5leHBvcnQgeyBJb25Qb3BvdmVyIH0gZnJvbSAnLi9vdmVybGF5cy9wb3BvdmVyJztcblxuZXhwb3J0IHsgSW9uUm91dGVyT3V0bGV0LCBwcm92aWRlQ29tcG9uZW50SW5wdXRCaW5kaW5nIH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vcm91dGVyLW91dGxldCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9jb250cm9sLXZhbHVlLWFjY2Vzc29ycyc7XG5leHBvcnQgeyBJb25CYWNrQnV0dG9uIH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vYmFjay1idXR0b24nO1xuZXhwb3J0IHsgSW9uTmF2IH0gZnJvbSAnLi9kaXJlY3RpdmVzL25hdmlnYXRpb24vbmF2JztcbmV4cG9ydCB7XG4gIFJvdXRlckxpbmtEZWxlZ2F0ZURpcmVjdGl2ZSxcbiAgUm91dGVyTGlua1dpdGhIcmVmRGVsZWdhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vZGlyZWN0aXZlcy9uYXZpZ2F0aW9uL3JvdXRlci1saW5rLWRlbGVnYXRlJztcbmV4cG9ydCB7IElvblRhYnMgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbmF2aWdhdGlvbi90YWJzJztcblxuZXhwb3J0IHsgUHJveHlDbXAgfSBmcm9tICcuL3V0aWxzL3Byb3h5JztcblxuZXhwb3J0IHsgT3ZlcmxheUJhc2VDb250cm9sbGVyIH0gZnJvbSAnLi91dGlscy9vdmVybGF5JztcbmV4cG9ydCB7IElvbmljUm91dGVTdHJhdGVneSB9IGZyb20gJy4vdXRpbHMvcm91dGluZyc7XG5cbmV4cG9ydCB7IHJhZiB9IGZyb20gJy4vdXRpbHMvdXRpbCc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMtYW5ndWxhci1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3JjL2lvbmljLWFuZ3VsYXItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,103 @@
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
+ 'expandToScroll',
15
+ 'event',
16
+ 'focusTrap',
17
+ 'handle',
18
+ 'handleBehavior',
19
+ 'initialBreakpoint',
20
+ 'isOpen',
21
+ 'keyboardClose',
22
+ 'leaveAnimation',
23
+ 'mode',
24
+ 'presentingElement',
25
+ 'showBackdrop',
26
+ 'translucent',
27
+ 'trigger',
28
+ ];
29
+ const MODAL_METHODS = [
30
+ 'present',
31
+ 'dismiss',
32
+ 'onDidDismiss',
33
+ 'onWillDismiss',
34
+ 'setCurrentBreakpoint',
35
+ 'getCurrentBreakpoint',
36
+ ];
37
+ let IonModal =
38
+ /**
39
+ * @Component extends from @Directive
40
+ * so by defining the inputs here we
41
+ * do not need to re-define them for the
42
+ * lazy loaded popover.
43
+ */
44
+ class IonModal {
45
+ z;
46
+ // TODO(FW-2827): type
47
+ template;
48
+ isCmpOpen = false;
49
+ el;
50
+ constructor(c, r, z) {
51
+ this.z = z;
52
+ this.el = r.nativeElement;
53
+ this.el.addEventListener('ionMount', () => {
54
+ this.isCmpOpen = true;
55
+ c.detectChanges();
56
+ });
57
+ this.el.addEventListener('didDismiss', () => {
58
+ this.isCmpOpen = false;
59
+ c.detectChanges();
60
+ });
61
+ proxyOutputs(this, this.el, [
62
+ 'ionModalDidPresent',
63
+ 'ionModalWillPresent',
64
+ 'ionModalWillDismiss',
65
+ 'ionModalDidDismiss',
66
+ 'ionBreakpointDidChange',
67
+ 'didPresent',
68
+ 'willPresent',
69
+ 'willDismiss',
70
+ 'didDismiss',
71
+ 'ionDragStart',
72
+ 'ionDragMove',
73
+ 'ionDragEnd',
74
+ ]);
75
+ }
76
+ /** @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 });
77
+ /** @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", expandToScroll: "expandToScroll", event: "event", focusTrap: "focusTrap", 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 });
78
+ };
79
+ IonModal = __decorate([
80
+ ProxyCmp({
81
+ inputs: MODAL_INPUTS,
82
+ methods: MODAL_METHODS,
83
+ })
84
+ /**
85
+ * @Component extends from @Directive
86
+ * so by defining the inputs here we
87
+ * do not need to re-define them for the
88
+ * lazy loaded popover.
89
+ */
90
+ ], IonModal);
91
+ export { IonModal };
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonModal, decorators: [{
93
+ type: Directive,
94
+ args: [{
95
+ selector: 'ion-modal',
96
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
97
+ inputs: MODAL_INPUTS,
98
+ }]
99
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { template: [{
100
+ type: ContentChild,
101
+ args: [TemplateRef, { static: false }]
102
+ }] } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21tb24vc3JjL292ZXJsYXlzL21vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFJVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFxRHhELE1BQU0sWUFBWSxHQUFHO0lBQ25CLFVBQVU7SUFDVixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWTtJQUNaLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxXQUFXO0lBQ1gsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsUUFBUTtJQUNSLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsTUFBTTtJQUNOLG1CQUFtQjtJQUNuQixjQUFjO0lBQ2QsYUFBYTtJQUNiLFNBQVM7Q0FDVixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUc7SUFDcEIsU0FBUztJQUNULFNBQVM7SUFDVCxjQUFjO0lBQ2QsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixzQkFBc0I7Q0FDdkIsQ0FBQztBQVlGLElBT2EsUUFBUTtBQWJyQjs7Ozs7R0FLRztBQUNILE1BT2EsUUFBUTtJQVF3QztJQVAzRCxzQkFBc0I7SUFDd0IsUUFBUSxDQUFtQjtJQUV6RSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRVIsRUFBRSxDQUFjO0lBRTFCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBRTFCLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzFCLG9CQUFvQjtZQUNwQixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsWUFBWTtZQUNaLGNBQWM7WUFDZCxhQUFhO1lBQ2IsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7MkhBakNVLFFBQVE7K0dBQVIsUUFBUSwrdEJBRUwsV0FBVzs7QUFGZCxRQUFRO0lBakJwQixRQUFRLENBQUM7UUFDUixNQUFNLEVBQUUsWUFBWTtRQUNwQixPQUFPLEVBQUUsYUFBYTtLQUN2QixDQUFDO0lBQ0Y7Ozs7O09BS0c7R0FRVSxRQUFRLENBa0NwQjtTQWxDWSxRQUFROzRGQUFSLFFBQVE7a0JBUHBCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLFlBQVk7aUJBQ3JCO3NKQUsrQyxRQUFRO3NCQUFyRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudHMsIE1vZGFsQnJlYWtwb2ludENoYW5nZUV2ZW50RGV0YWlsLCBNb2RhbERyYWdFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBQcm94eUNtcCwgcHJveHlPdXRwdXRzIH0gZnJvbSAnLi4vdXRpbHMvcHJveHknO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTW9kYWwgZXh0ZW5kcyBDb21wb25lbnRzLklvbk1vZGFsIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGhhcyBwcmVzZW50ZWQuXG4gICAqKi9cbiAgaW9uTW9kYWxEaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIG1vZGFsIGhhcyBwcmVzZW50ZWQuXG4gICAqL1xuICBpb25Nb2RhbFdpbGxQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIG1vZGFsIGhhcyBkaXNtaXNzZWQuXG4gICAqL1xuICBpb25Nb2RhbFdpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgbW9kYWwgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvbk1vZGFsRGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGJyZWFrcG9pbnQgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBpb25CcmVha3BvaW50RGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8TW9kYWxCcmVha3BvaW50Q2hhbmdlRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2hlZXQgb3IgY2FyZCBtb2RhbCBoYXMgc3RhcnRlZCBiZWluZyBkcmFnZ2VkLlxuICAgKi9cbiAgaW9uRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoaWxlIHRoZSBzaGVldCBvciBjYXJkIG1vZGFsIGlzIGJlaW5nIGRyYWdnZWQuXG4gICAqL1xuICBpb25EcmFnTW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE1vZGFsRHJhZ0V2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNoZWV0IG9yIGNhcmQgbW9kYWwgaGFzIGZpbmlzaGVkIGJlaW5nIGRyYWdnZWQuXG4gICAqL1xuICBpb25EcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8TW9kYWxEcmFnRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGhhcyBwcmVzZW50ZWQuIFNob3J0aGFuZCBmb3IgaW9uTW9kYWxEaWRQcmVzZW50LlxuICAgKi9cbiAgZGlkUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBtb2RhbCBoYXMgcHJlc2VudGVkLiBTaG9ydGhhbmQgZm9yIGlvbk1vZGFsV2lsbFByZXNlbnQuXG4gICAqL1xuICB3aWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBtb2RhbCBoYXMgZGlzbWlzc2VkLiBTaG9ydGhhbmQgZm9yIGlvbk1vZGFsV2lsbERpc21pc3MuXG4gICAqL1xuICB3aWxsRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIG1vZGFsIGhhcyBkaXNtaXNzZWQuIFNob3J0aGFuZCBmb3IgaW9uTW9kYWxEaWREaXNtaXNzLlxuICAgKi9cbiAgZGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50Pjtcbn1cblxuY29uc3QgTU9EQUxfSU5QVVRTID0gW1xuICAnYW5pbWF0ZWQnLFxuICAna2VlcENvbnRlbnRzTW91bnRlZCcsXG4gICdiYWNrZHJvcEJyZWFrcG9pbnQnLFxuICAnYmFja2Ryb3BEaXNtaXNzJyxcbiAgJ2JyZWFrcG9pbnRzJyxcbiAgJ2NhbkRpc21pc3MnLFxuICAnY3NzQ2xhc3MnLFxuICAnZW50ZXJBbmltYXRpb24nLFxuICAnZXhwYW5kVG9TY3JvbGwnLFxuICAnZXZlbnQnLFxuICAnZm9jdXNUcmFwJyxcbiAgJ2hhbmRsZScsXG4gICdoYW5kbGVCZWhhdmlvcicsXG4gICdpbml0aWFsQnJlYWtwb2ludCcsXG4gICdpc09wZW4nLFxuICAna2V5Ym9hcmRDbG9zZScsXG4gICdsZWF2ZUFuaW1hdGlvbicsXG4gICdtb2RlJyxcbiAgJ3ByZXNlbnRpbmdFbGVtZW50JyxcbiAgJ3Nob3dCYWNrZHJvcCcsXG4gICd0cmFuc2x1Y2VudCcsXG4gICd0cmlnZ2VyJyxcbl07XG5cbmNvbnN0IE1PREFMX01FVEhPRFMgPSBbXG4gICdwcmVzZW50JyxcbiAgJ2Rpc21pc3MnLFxuICAnb25EaWREaXNtaXNzJyxcbiAgJ29uV2lsbERpc21pc3MnLFxuICAnc2V0Q3VycmVudEJyZWFrcG9pbnQnLFxuICAnZ2V0Q3VycmVudEJyZWFrcG9pbnQnLFxuXTtcblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBNT0RBTF9JTlBVVFMsXG4gIG1ldGhvZHM6IE1PREFMX01FVEhPRFMsXG59KVxuLyoqXG4gKiBAQ29tcG9uZW50IGV4dGVuZHMgZnJvbSBARGlyZWN0aXZlXG4gKiBzbyBieSBkZWZpbmluZyB0aGUgaW5wdXRzIGhlcmUgd2VcbiAqIGRvIG5vdCBuZWVkIHRvIHJlLWRlZmluZSB0aGVtIGZvciB0aGVcbiAqIGxhenkgbG9hZGVkIHBvcG92ZXIuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi1tb2RhbCcsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogTU9EQUxfSU5QVVRTLFxufSlcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgSW9uTW9kYWwge1xuICAvLyBUT0RPKEZXLTI4MjcpOiB0eXBlXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBpc0NtcE9wZW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW91bnQnLCAoKSA9PiB7XG4gICAgICB0aGlzLmlzQ21wT3BlbiA9IHRydWU7XG4gICAgICBjLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZERpc21pc3MnLCAoKSA9PiB7XG4gICAgICB0aGlzLmlzQ21wT3BlbiA9IGZhbHNlO1xuICAgICAgYy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFtcbiAgICAgICdpb25Nb2RhbERpZFByZXNlbnQnLFxuICAgICAgJ2lvbk1vZGFsV2lsbFByZXNlbnQnLFxuICAgICAgJ2lvbk1vZGFsV2lsbERpc21pc3MnLFxuICAgICAgJ2lvbk1vZGFsRGlkRGlzbWlzcycsXG4gICAgICAnaW9uQnJlYWtwb2ludERpZENoYW5nZScsXG4gICAgICAnZGlkUHJlc2VudCcsXG4gICAgICAnd2lsbFByZXNlbnQnLFxuICAgICAgJ3dpbGxEaXNtaXNzJyxcbiAgICAgICdkaWREaXNtaXNzJyxcbiAgICAgICdpb25EcmFnU3RhcnQnLFxuICAgICAgJ2lvbkRyYWdNb3ZlJyxcbiAgICAgICdpb25EcmFnRW5kJyxcbiAgICBdKTtcbiAgfVxufVxuIl19
@@ -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 POPOVER_INPUTS = [
6
+ 'alignment',
7
+ 'animated',
8
+ 'arrow',
9
+ 'keepContentsMounted',
10
+ 'backdropDismiss',
11
+ 'cssClass',
12
+ 'dismissOnSelect',
13
+ 'enterAnimation',
14
+ 'event',
15
+ 'focusTrap',
16
+ 'isOpen',
17
+ 'keyboardClose',
18
+ 'leaveAnimation',
19
+ 'mode',
20
+ 'showBackdrop',
21
+ 'translucent',
22
+ 'trigger',
23
+ 'triggerAction',
24
+ 'reference',
25
+ 'size',
26
+ 'side',
27
+ ];
28
+ const POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];
29
+ let IonPopover =
30
+ /**
31
+ * @Component extends from @Directive
32
+ * so by defining the inputs here we
33
+ * do not need to re-define them for the
34
+ * lazy loaded popover.
35
+ */
36
+ class IonPopover {
37
+ z;
38
+ // TODO(FW-2827): type
39
+ template;
40
+ isCmpOpen = false;
41
+ el;
42
+ constructor(c, r, z) {
43
+ this.z = z;
44
+ this.el = r.nativeElement;
45
+ this.el.addEventListener('ionMount', () => {
46
+ this.isCmpOpen = true;
47
+ c.detectChanges();
48
+ });
49
+ this.el.addEventListener('didDismiss', () => {
50
+ this.isCmpOpen = false;
51
+ c.detectChanges();
52
+ });
53
+ proxyOutputs(this, this.el, [
54
+ 'ionPopoverDidPresent',
55
+ 'ionPopoverWillPresent',
56
+ 'ionPopoverWillDismiss',
57
+ 'ionPopoverDidDismiss',
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: IonPopover, 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: IonPopover, selector: "ion-popover", inputs: { alignment: "alignment", animated: "animated", arrow: "arrow", keepContentsMounted: "keepContentsMounted", backdropDismiss: "backdropDismiss", cssClass: "cssClass", dismissOnSelect: "dismissOnSelect", enterAnimation: "enterAnimation", event: "event", focusTrap: "focusTrap", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger", triggerAction: "triggerAction", reference: "reference", size: "size", side: "side" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
66
+ };
67
+ IonPopover = __decorate([
68
+ ProxyCmp({
69
+ inputs: POPOVER_INPUTS,
70
+ methods: POPOVER_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
+ ], IonPopover);
79
+ export { IonPopover };
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPopover, decorators: [{
81
+ type: Directive,
82
+ args: [{
83
+ selector: 'ion-popover',
84
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
85
+ inputs: POPOVER_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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvb3ZlcmxheXMvcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEVBSVQsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBcUN4RCxNQUFNLGNBQWMsR0FBRztJQUNyQixXQUFXO0lBQ1gsVUFBVTtJQUNWLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxXQUFXO0lBQ1gsUUFBUTtJQUNSLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsTUFBTTtJQUNOLGNBQWM7SUFDZCxhQUFhO0lBQ2IsU0FBUztJQUNULGVBQWU7SUFDZixXQUFXO0lBQ1gsTUFBTTtJQUNOLE1BQU07Q0FDUCxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLENBQUMsQ0FBQztBQVloRixJQU9hLFVBQVU7QUFidkI7Ozs7O0dBS0c7QUFDSCxNQU9hLFVBQVU7SUFRc0M7SUFQM0Qsc0JBQXNCO0lBQ3dCLFFBQVEsQ0FBbUI7SUFFekUsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUVSLEVBQUUsQ0FBYztJQUUxQixZQUFZLENBQW9CLEVBQUUsQ0FBYSxFQUFZLENBQVM7UUFBVCxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQ2xFLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUUxQixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUMxQixzQkFBc0I7WUFDdEIsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN2QixzQkFBc0I7WUFDdEIsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhO1lBQ2IsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7MkhBN0JVLFVBQVU7K0dBQVYsVUFBVSwybkJBRVAsV0FBVzs7QUFGZCxVQUFVO0lBakJ0QixRQUFRLENBQUM7UUFDUixNQUFNLEVBQUUsY0FBYztRQUN0QixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDO0lBQ0Y7Ozs7O09BS0c7R0FRVSxVQUFVLENBOEJ0QjtTQTlCWSxVQUFVOzRGQUFWLFVBQVU7a0JBUHRCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLGNBQWM7aUJBQ3ZCO3NKQUsrQyxRQUFRO3NCQUFyRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgTmdab25lLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IENvbXBvbmVudHMgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4uL3V0aWxzL3Byb3h5JztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblBvcG92ZXIgZXh0ZW5kcyBDb21wb25lbnRzLklvblBvcG92ZXIge1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcG9wb3ZlciBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uUG9wb3ZlckRpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgcG9wb3ZlciBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uUG9wb3ZlcldpbGxQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcG9wb3ZlciBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uUG9wb3ZlcldpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcG9wb3ZlciBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uUG9wb3ZlckRpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBwb3BvdmVyIGhhcyBwcmVzZW50ZWQuIFNob3J0aGFuZCBmb3IgaW9uUG9wb3ZlckRpZFByZXNlbnQuXG4gICAqL1xuICBkaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIHBvcG92ZXIgaGFzIHByZXNlbnRlZC4gU2hvcnRoYW5kIGZvciBpb25Qb3BvdmVyV2lsbFByZXNlbnQuXG4gICAqL1xuICB3aWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBvcG92ZXIgaGFzIHByZXNlbnRlZC4gU2hvcnRoYW5kIGZvciBpb25Qb3BvdmVyV2lsbERpc21pc3MuXG4gICAqL1xuICB3aWxsRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBvcG92ZXIgaGFzIGRpc21pc3NlZC4gU2hvcnRoYW5kIGZvciBpb25Qb3BvdmVyRGlkRGlzbWlzcy5cbiAgICovXG4gIGRpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG59XG5cbmNvbnN0IFBPUE9WRVJfSU5QVVRTID0gW1xuICAnYWxpZ25tZW50JyxcbiAgJ2FuaW1hdGVkJyxcbiAgJ2Fycm93JyxcbiAgJ2tlZXBDb250ZW50c01vdW50ZWQnLFxuICAnYmFja2Ryb3BEaXNtaXNzJyxcbiAgJ2Nzc0NsYXNzJyxcbiAgJ2Rpc21pc3NPblNlbGVjdCcsXG4gICdlbnRlckFuaW1hdGlvbicsXG4gICdldmVudCcsXG4gICdmb2N1c1RyYXAnLFxuICAnaXNPcGVuJyxcbiAgJ2tleWJvYXJkQ2xvc2UnLFxuICAnbGVhdmVBbmltYXRpb24nLFxuICAnbW9kZScsXG4gICdzaG93QmFja2Ryb3AnLFxuICAndHJhbnNsdWNlbnQnLFxuICAndHJpZ2dlcicsXG4gICd0cmlnZ2VyQWN0aW9uJyxcbiAgJ3JlZmVyZW5jZScsXG4gICdzaXplJyxcbiAgJ3NpZGUnLFxuXTtcblxuY29uc3QgUE9QT1ZFUl9NRVRIT0RTID0gWydwcmVzZW50JywgJ2Rpc21pc3MnLCAnb25EaWREaXNtaXNzJywgJ29uV2lsbERpc21pc3MnXTtcblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBQT1BPVkVSX0lOUFVUUyxcbiAgbWV0aG9kczogUE9QT1ZFUl9NRVRIT0RTLFxufSlcbi8qKlxuICogQENvbXBvbmVudCBleHRlbmRzIGZyb20gQERpcmVjdGl2ZVxuICogc28gYnkgZGVmaW5pbmcgdGhlIGlucHV0cyBoZXJlIHdlXG4gKiBkbyBub3QgbmVlZCB0byByZS1kZWZpbmUgdGhlbSBmb3IgdGhlXG4gKiBsYXp5IGxvYWRlZCBwb3BvdmVyLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpb24tcG9wb3ZlcicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogUE9QT1ZFUl9JTlBVVFMsXG59KVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBJb25Qb3BvdmVyIHtcbiAgLy8gVE9ETyhGVy0yODI3KTogdHlwZVxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgaXNDbXBPcGVuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vdW50JywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0NtcE9wZW4gPSB0cnVlO1xuICAgICAgYy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdkaWREaXNtaXNzJywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0NtcE9wZW4gPSBmYWxzZTtcbiAgICAgIGMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbXG4gICAgICAnaW9uUG9wb3ZlckRpZFByZXNlbnQnLFxuICAgICAgJ2lvblBvcG92ZXJXaWxsUHJlc2VudCcsXG4gICAgICAnaW9uUG9wb3ZlcldpbGxEaXNtaXNzJyxcbiAgICAgICdpb25Qb3BvdmVyRGlkRGlzbWlzcycsXG4gICAgICAnZGlkUHJlc2VudCcsXG4gICAgICAnd2lsbFByZXNlbnQnLFxuICAgICAgJ3dpbGxEaXNtaXNzJyxcbiAgICAgICdkaWREaXNtaXNzJyxcbiAgICBdKTtcbiAgfVxufVxuIl19