@ionic/angular 7.3.4-dev.11694534020.12e16bee → 7.3.4-dev.11694542086.1f624b36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +0 -20
  2. package/app-initialize.d.ts +1 -1
  3. package/directives/navigation/ion-back-button.d.ts +16 -6
  4. package/directives/navigation/ion-router-outlet.d.ts +122 -4
  5. package/directives/navigation/ion-tabs.d.ts +64 -4
  6. package/directives/navigation/nav-delegate.d.ts +9 -0
  7. package/directives/navigation/router-link-delegate.d.ts +41 -7
  8. package/{common/directives → directives}/navigation/stack-utils.d.ts +1 -1
  9. package/directives/overlays/modal.d.ts +47 -3
  10. package/directives/overlays/popover.d.ts +43 -3
  11. package/directives/proxies-list.d.ts +1 -1
  12. package/directives/proxies.d.ts +26 -0
  13. package/esm2020/app-initialize.mjs +1 -1
  14. package/esm2020/directives/navigation/ion-back-button.mjs +36 -15
  15. package/esm2020/directives/navigation/ion-router-outlet.mjs +435 -6
  16. package/esm2020/directives/navigation/ion-tabs.mjs +166 -9
  17. package/esm2020/directives/navigation/nav-delegate.mjs +42 -0
  18. package/esm2020/directives/navigation/nav-params.mjs +45 -0
  19. package/esm2020/directives/navigation/router-link-delegate.mjs +92 -11
  20. package/esm2020/directives/navigation/stack-controller.mjs +275 -0
  21. package/esm2020/directives/navigation/stack-utils.mjs +73 -0
  22. package/esm2020/directives/overlays/modal.mjs +88 -8
  23. package/esm2020/directives/overlays/popover.mjs +87 -8
  24. package/esm2020/directives/proxies-list.mjs +3 -1
  25. package/esm2020/directives/proxies.mjs +53 -1
  26. package/esm2020/index.mjs +21 -4
  27. package/esm2020/ionic-core.mjs +6 -0
  28. package/esm2020/ionic-module.mjs +32 -14
  29. package/esm2020/providers/action-sheet-controller.mjs +18 -0
  30. package/esm2020/providers/alert-controller.mjs +18 -0
  31. package/esm2020/providers/angular-delegate.mjs +152 -0
  32. package/esm2020/providers/animation-controller.mjs +37 -0
  33. package/esm2020/providers/config.mjs +44 -0
  34. package/esm2020/providers/dom-controller.mjs +44 -0
  35. package/esm2020/providers/gesture-controller.mjs +31 -0
  36. package/esm2020/providers/loading-controller.mjs +18 -0
  37. package/esm2020/providers/menu-controller.mjs +100 -0
  38. package/esm2020/providers/modal-controller.mjs +25 -0
  39. package/esm2020/providers/nav-controller.mjs +221 -0
  40. package/esm2020/providers/picker-controller.mjs +18 -0
  41. package/esm2020/providers/platform.mjs +246 -0
  42. package/esm2020/providers/popover-controller.mjs +25 -0
  43. package/esm2020/providers/toast-controller.mjs +18 -0
  44. package/esm2020/types/interfaces.mjs +2 -0
  45. package/esm2020/util/ionic-router-reuse-strategy.mjs +55 -0
  46. package/esm2020/util/overlay.mjs +25 -0
  47. package/fesm2015/ionic-angular.mjs +2474 -124
  48. package/fesm2015/ionic-angular.mjs.map +1 -1
  49. package/fesm2020/ionic-angular.mjs +2466 -125
  50. package/fesm2020/ionic-angular.mjs.map +1 -1
  51. package/index.d.ts +19 -3
  52. package/ionic-core.d.ts +2 -0
  53. package/ionic-module.d.ts +2 -2
  54. package/package.json +3 -19
  55. package/{common/providers → providers}/action-sheet-controller.d.ts +2 -2
  56. package/{common/providers → providers}/alert-controller.d.ts +2 -2
  57. package/{common/providers → providers}/angular-delegate.d.ts +1 -1
  58. package/{common/providers → providers}/animation-controller.d.ts +1 -1
  59. package/{common/providers → providers}/config.d.ts +1 -1
  60. package/{common/providers → providers}/gesture-controller.d.ts +1 -1
  61. package/{common/providers → providers}/loading-controller.d.ts +2 -2
  62. package/{common/providers → providers}/modal-controller.d.ts +2 -2
  63. package/{common/providers → providers}/nav-controller.d.ts +2 -2
  64. package/{common/providers → providers}/picker-controller.d.ts +2 -2
  65. package/{common/providers → providers}/platform.d.ts +1 -1
  66. package/{common/providers → providers}/popover-controller.d.ts +2 -2
  67. package/{common/providers → providers}/toast-controller.d.ts +2 -2
  68. package/test/README.md +0 -8
  69. package/{common/types → types}/interfaces.d.ts +4 -0
  70. package/common/directives/navigation/back-button.d.ts +0 -26
  71. package/common/directives/navigation/nav.d.ts +0 -13
  72. package/common/directives/navigation/router-link-delegate.d.ts +0 -50
  73. package/common/directives/navigation/router-outlet.d.ts +0 -103
  74. package/common/directives/navigation/tabs.d.ts +0 -74
  75. package/common/index.d.ts +0 -26
  76. package/common/overlays/modal.d.ts +0 -50
  77. package/common/overlays/popover.d.ts +0 -46
  78. package/common/utils/proxy.d.ts +0 -8
  79. package/directives/navigation/ion-nav.d.ts +0 -8
  80. package/esm2020/common/directives/navigation/back-button.mjs +0 -59
  81. package/esm2020/common/directives/navigation/nav-params.mjs +0 -45
  82. package/esm2020/common/directives/navigation/nav.mjs +0 -47
  83. package/esm2020/common/directives/navigation/router-link-delegate.mjs +0 -111
  84. package/esm2020/common/directives/navigation/router-outlet.mjs +0 -461
  85. package/esm2020/common/directives/navigation/stack-controller.mjs +0 -275
  86. package/esm2020/common/directives/navigation/stack-utils.mjs +0 -73
  87. package/esm2020/common/directives/navigation/tabs.mjs +0 -172
  88. package/esm2020/common/index.mjs +0 -26
  89. package/esm2020/common/ionic-angular-common.mjs +0 -5
  90. package/esm2020/common/overlays/modal.mjs +0 -87
  91. package/esm2020/common/overlays/popover.mjs +0 -79
  92. package/esm2020/common/providers/action-sheet-controller.mjs +0 -18
  93. package/esm2020/common/providers/alert-controller.mjs +0 -18
  94. package/esm2020/common/providers/angular-delegate.mjs +0 -152
  95. package/esm2020/common/providers/animation-controller.mjs +0 -37
  96. package/esm2020/common/providers/config.mjs +0 -44
  97. package/esm2020/common/providers/dom-controller.mjs +0 -44
  98. package/esm2020/common/providers/gesture-controller.mjs +0 -31
  99. package/esm2020/common/providers/loading-controller.mjs +0 -18
  100. package/esm2020/common/providers/menu-controller.mjs +0 -100
  101. package/esm2020/common/providers/modal-controller.mjs +0 -25
  102. package/esm2020/common/providers/nav-controller.mjs +0 -221
  103. package/esm2020/common/providers/picker-controller.mjs +0 -18
  104. package/esm2020/common/providers/platform.mjs +0 -246
  105. package/esm2020/common/providers/popover-controller.mjs +0 -25
  106. package/esm2020/common/providers/toast-controller.mjs +0 -18
  107. package/esm2020/common/types/interfaces.mjs +0 -2
  108. package/esm2020/common/utils/overlay.mjs +0 -25
  109. package/esm2020/common/utils/proxy.mjs +0 -47
  110. package/esm2020/common/utils/routing.mjs +0 -55
  111. package/esm2020/directives/navigation/ion-nav.mjs +0 -21
  112. package/esm2020/standalone/directives/angular-component-lib/utils.mjs +0 -51
  113. package/esm2020/standalone/directives/icon.mjs +0 -33
  114. package/esm2020/standalone/directives/proxies.mjs +0 -2179
  115. package/esm2020/standalone/index.mjs +0 -12
  116. package/esm2020/standalone/ionic-angular-standalone.mjs +0 -5
  117. package/esm2020/standalone/navigation/back-button.mjs +0 -32
  118. package/esm2020/standalone/navigation/nav.mjs +0 -28
  119. package/esm2020/standalone/navigation/router-link-delegate.mjs +0 -30
  120. package/esm2020/standalone/navigation/router-outlet.mjs +0 -23
  121. package/esm2020/standalone/navigation/tabs.mjs +0 -46
  122. package/esm2020/standalone/overlays/modal.mjs +0 -32
  123. package/esm2020/standalone/overlays/popover.mjs +0 -28
  124. package/esm2020/standalone/providers/ionic-angular.mjs +0 -41
  125. package/fesm2015/ionic-angular-common.mjs +0 -2472
  126. package/fesm2015/ionic-angular-common.mjs.map +0 -1
  127. package/fesm2015/ionic-angular-standalone.mjs +0 -2409
  128. package/fesm2015/ionic-angular-standalone.mjs.map +0 -1
  129. package/fesm2020/ionic-angular-common.mjs +0 -2461
  130. package/fesm2020/ionic-angular-common.mjs.map +0 -1
  131. package/fesm2020/ionic-angular-standalone.mjs +0 -2407
  132. package/fesm2020/ionic-angular-standalone.mjs.map +0 -1
  133. package/standalone/directives/angular-component-lib/utils.d.ts +0 -9
  134. package/standalone/directives/icon.d.ts +0 -9
  135. package/standalone/directives/proxies.d.ts +0 -1217
  136. package/standalone/index.d.ts +0 -11
  137. package/standalone/navigation/back-button.d.ts +0 -9
  138. package/standalone/navigation/nav.d.ts +0 -8
  139. package/standalone/navigation/router-link-delegate.d.ts +0 -10
  140. package/standalone/navigation/router-outlet.d.ts +0 -6
  141. package/standalone/navigation/tabs.d.ts +0 -12
  142. package/standalone/overlays/modal.d.ts +0 -6
  143. package/standalone/overlays/popover.d.ts +0 -6
  144. package/standalone/providers/ionic-angular.d.ts +0 -3
  145. /package/{common/directives → directives}/navigation/nav-params.d.ts +0 -0
  146. /package/{common/directives → directives}/navigation/stack-controller.d.ts +0 -0
  147. /package/{common/providers → providers}/dom-controller.d.ts +0 -0
  148. /package/{common/providers → providers}/menu-controller.d.ts +0 -0
  149. /package/{common/utils/routing.d.ts → util/ionic-router-reuse-strategy.d.ts} +0 -0
  150. /package/{common/utils → util}/overlay.d.ts +0 -0
@@ -0,0 +1,246 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { getPlatforms, isPlatform } from '@ionic/core';
4
+ import { Subject } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class Platform {
7
+ constructor(doc, zone) {
8
+ this.doc = doc;
9
+ /**
10
+ * @hidden
11
+ */
12
+ this.backButton = new Subject();
13
+ /**
14
+ * The keyboardDidShow event emits when the
15
+ * on-screen keyboard is presented.
16
+ */
17
+ this.keyboardDidShow = new Subject();
18
+ /**
19
+ * The keyboardDidHide event emits when the
20
+ * on-screen keyboard is hidden.
21
+ */
22
+ this.keyboardDidHide = new Subject();
23
+ /**
24
+ * The pause event emits when the native platform puts the application
25
+ * into the background, typically when the user switches to a different
26
+ * application. This event would emit when a Cordova app is put into
27
+ * the background, however, it would not fire on a standard web browser.
28
+ */
29
+ this.pause = new Subject();
30
+ /**
31
+ * The resume event emits when the native platform pulls the application
32
+ * out from the background. This event would emit when a Cordova app comes
33
+ * out from the background, however, it would not fire on a standard web browser.
34
+ */
35
+ this.resume = new Subject();
36
+ /**
37
+ * The resize event emits when the browser window has changed dimensions. This
38
+ * could be from a browser window being physically resized, or from a device
39
+ * changing orientation.
40
+ */
41
+ this.resize = new Subject();
42
+ zone.run(() => {
43
+ this.win = doc.defaultView;
44
+ this.backButton.subscribeWithPriority = function (priority, callback) {
45
+ return this.subscribe((ev) => {
46
+ return ev.register(priority, (processNextHandler) => zone.run(() => callback(processNextHandler)));
47
+ });
48
+ };
49
+ proxyEvent(this.pause, doc, 'pause');
50
+ proxyEvent(this.resume, doc, 'resume');
51
+ proxyEvent(this.backButton, doc, 'ionBackButton');
52
+ proxyEvent(this.resize, this.win, 'resize');
53
+ proxyEvent(this.keyboardDidShow, this.win, 'ionKeyboardDidShow');
54
+ proxyEvent(this.keyboardDidHide, this.win, 'ionKeyboardDidHide');
55
+ let readyResolve;
56
+ this._readyPromise = new Promise((res) => {
57
+ readyResolve = res;
58
+ });
59
+ if (this.win?.['cordova']) {
60
+ doc.addEventListener('deviceready', () => {
61
+ readyResolve('cordova');
62
+ }, { once: true });
63
+ }
64
+ else {
65
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
66
+ readyResolve('dom');
67
+ }
68
+ });
69
+ }
70
+ /**
71
+ * @returns returns true/false based on platform.
72
+ * @description
73
+ * Depending on the platform the user is on, `is(platformName)` will
74
+ * return `true` or `false`. Note that the same app can return `true`
75
+ * for more than one platform name. For example, an app running from
76
+ * an iPad would return `true` for the platform names: `mobile`,
77
+ * `ios`, `ipad`, and `tablet`. Additionally, if the app was running
78
+ * from Cordova then `cordova` would be true, and if it was running
79
+ * from a web browser on the iPad then `mobileweb` would be `true`.
80
+ *
81
+ * ```
82
+ * import { Platform } from 'ionic-angular';
83
+ *
84
+ * @Component({...})
85
+ * export MyPage {
86
+ * constructor(public platform: Platform) {
87
+ * if (this.platform.is('ios')) {
88
+ * // This will only print when on iOS
89
+ * console.log('I am an iOS device!');
90
+ * }
91
+ * }
92
+ * }
93
+ * ```
94
+ *
95
+ * | Platform Name | Description |
96
+ * |-----------------|------------------------------------|
97
+ * | android | on a device running Android. |
98
+ * | capacitor | on a device running Capacitor. |
99
+ * | cordova | on a device running Cordova. |
100
+ * | ios | on a device running iOS. |
101
+ * | ipad | on an iPad device. |
102
+ * | iphone | on an iPhone device. |
103
+ * | phablet | on a phablet device. |
104
+ * | tablet | on a tablet device. |
105
+ * | electron | in Electron on a desktop device. |
106
+ * | pwa | as a PWA app. |
107
+ * | mobile | on a mobile device. |
108
+ * | mobileweb | on a mobile device in a browser. |
109
+ * | desktop | on a desktop device. |
110
+ * | hybrid | is a cordova or capacitor app. |
111
+ *
112
+ */
113
+ is(platformName) {
114
+ return isPlatform(this.win, platformName);
115
+ }
116
+ /**
117
+ * @returns the array of platforms
118
+ * @description
119
+ * Depending on what device you are on, `platforms` can return multiple values.
120
+ * Each possible value is a hierarchy of platforms. For example, on an iPhone,
121
+ * it would return `mobile`, `ios`, and `iphone`.
122
+ *
123
+ * ```
124
+ * import { Platform } from 'ionic-angular';
125
+ *
126
+ * @Component({...})
127
+ * export MyPage {
128
+ * constructor(public platform: Platform) {
129
+ * // This will print an array of the current platforms
130
+ * console.log(this.platform.platforms());
131
+ * }
132
+ * }
133
+ * ```
134
+ */
135
+ platforms() {
136
+ return getPlatforms(this.win);
137
+ }
138
+ /**
139
+ * Returns a promise when the platform is ready and native functionality
140
+ * can be called. If the app is running from within a web browser, then
141
+ * the promise will resolve when the DOM is ready. When the app is running
142
+ * from an application engine such as Cordova, then the promise will
143
+ * resolve when Cordova triggers the `deviceready` event.
144
+ *
145
+ * The resolved value is the `readySource`, which states which platform
146
+ * ready was used. For example, when Cordova is ready, the resolved ready
147
+ * source is `cordova`. The default ready source value will be `dom`. The
148
+ * `readySource` is useful if different logic should run depending on the
149
+ * platform the app is running from. For example, only Cordova can execute
150
+ * the status bar plugin, so the web should not run status bar plugin logic.
151
+ *
152
+ * ```
153
+ * import { Component } from '@angular/core';
154
+ * import { Platform } from 'ionic-angular';
155
+ *
156
+ * @Component({...})
157
+ * export MyApp {
158
+ * constructor(public platform: Platform) {
159
+ * this.platform.ready().then((readySource) => {
160
+ * console.log('Platform ready from', readySource);
161
+ * // Platform now ready, execute any required native code
162
+ * });
163
+ * }
164
+ * }
165
+ * ```
166
+ */
167
+ ready() {
168
+ return this._readyPromise;
169
+ }
170
+ /**
171
+ * Returns if this app is using right-to-left language direction or not.
172
+ * We recommend the app's `index.html` file already has the correct `dir`
173
+ * attribute value set, such as `<html dir="ltr">` or `<html dir="rtl">`.
174
+ * [W3C: Structural markup and right-to-left text in HTML](http://www.w3.org/International/questions/qa-html-dir)
175
+ */
176
+ get isRTL() {
177
+ return this.doc.dir === 'rtl';
178
+ }
179
+ /**
180
+ * Get the query string parameter
181
+ */
182
+ getQueryParam(key) {
183
+ return readQueryParam(this.win.location.href, key);
184
+ }
185
+ /**
186
+ * Returns `true` if the app is in landscape mode.
187
+ */
188
+ isLandscape() {
189
+ return !this.isPortrait();
190
+ }
191
+ /**
192
+ * Returns `true` if the app is in portrait mode.
193
+ */
194
+ isPortrait() {
195
+ return this.win.matchMedia?.('(orientation: portrait)').matches;
196
+ }
197
+ testUserAgent(expression) {
198
+ const nav = this.win.navigator;
199
+ return !!(nav?.userAgent && nav.userAgent.indexOf(expression) >= 0);
200
+ }
201
+ /**
202
+ * Get the current url.
203
+ */
204
+ url() {
205
+ return this.win.location.href;
206
+ }
207
+ /**
208
+ * Gets the width of the platform's viewport using `window.innerWidth`.
209
+ */
210
+ width() {
211
+ return this.win.innerWidth;
212
+ }
213
+ /**
214
+ * Gets the height of the platform's viewport using `window.innerHeight`.
215
+ */
216
+ height() {
217
+ return this.win.innerHeight;
218
+ }
219
+ }
220
+ /** @nocollapse */ Platform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Platform, deps: [{ token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
221
+ /** @nocollapse */ Platform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Platform, providedIn: 'root' });
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Platform, decorators: [{
223
+ type: Injectable,
224
+ args: [{
225
+ providedIn: 'root',
226
+ }]
227
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
228
+ type: Inject,
229
+ args: [DOCUMENT]
230
+ }] }, { type: i0.NgZone }]; } });
231
+ const readQueryParam = (url, key) => {
232
+ key = key.replace(/[[\]\\]/g, '\\$&');
233
+ const regex = new RegExp('[\\?&]' + key + '=([^&#]*)');
234
+ const results = regex.exec(url);
235
+ return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null;
236
+ };
237
+ const proxyEvent = (emitter, el, eventName) => {
238
+ if (el) {
239
+ el.addEventListener(eventName, (ev) => {
240
+ // ?? cordova might emit "null" events
241
+ const value = ev != null ? ev.detail : undefined;
242
+ emitter.next(value);
243
+ });
244
+ }
245
+ };
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3BsYXRmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQVUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQXlELFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUcsT0FBTyxFQUFnQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBYzdDLE1BQU0sT0FBTyxRQUFRO0lBMkNuQixZQUFzQyxHQUFRLEVBQUUsSUFBWTtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBdkM5Qzs7V0FFRztRQUNILGVBQVUsR0FBc0IsSUFBSSxPQUFPLEVBQWdDLENBQUM7UUFFNUU7OztXQUdHO1FBQ0gsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztRQUU1RDs7O1dBR0c7UUFDSCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdEM7Ozs7O1dBS0c7UUFDSCxVQUFLLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1Qjs7OztXQUlHO1FBQ0gsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFN0I7Ozs7V0FJRztRQUNILFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRzNCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLEdBQUcsVUFBVSxRQUFRLEVBQUUsUUFBUTtnQkFDbEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLFFBQVEs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QyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNwQyxzQ0FBc0M7WUFDdEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUUsRUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzFELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7S0FDSjtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nWm9uZSwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYWNrQnV0dG9uRXZlbnREZXRhaWwsIEtleWJvYXJkRXZlbnREZXRhaWwsIFBsYXRmb3JtcywgZ2V0UGxhdGZvcm1zLCBpc1BsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8vIFRPRE8oRlctMjgyNyk6IHR5cGVzXG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFja0J1dHRvbkVtaXR0ZXIgZXh0ZW5kcyBTdWJqZWN0PEJhY2tCdXR0b25FdmVudERldGFpbD4ge1xuICBzdWJzY3JpYmVXaXRoUHJpb3JpdHkoXG4gICAgcHJpb3JpdHk6IG51bWJlcixcbiAgICBjYWxsYmFjazogKHByb2Nlc3NOZXh0SGFuZGxlcjogKCkgPT4gdm9pZCkgPT4gUHJvbWlzZTxhbnk+IHwgdm9pZFxuICApOiBTdWJzY3JpcHRpb247XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybSB7XG4gIHByaXZhdGUgX3JlYWR5UHJvbWlzZTogUHJvbWlzZTxzdHJpbmc+O1xuICBwcml2YXRlIHdpbjogYW55O1xuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBiYWNrQnV0dG9uOiBCYWNrQnV0dG9uRW1pdHRlciA9IG5ldyBTdWJqZWN0PEJhY2tCdXR0b25FdmVudERldGFpbD4oKSBhcyBhbnk7XG5cbiAgLyoqXG4gICAqIFRoZSBrZXlib2FyZERpZFNob3cgZXZlbnQgZW1pdHMgd2hlbiB0aGVcbiAgICogb24tc2NyZWVuIGtleWJvYXJkIGlzIHByZXNlbnRlZC5cbiAgICovXG4gIGtleWJvYXJkRGlkU2hvdyA9IG5ldyBTdWJqZWN0PEtleWJvYXJkRXZlbnREZXRhaWw+KCkgYXMgYW55O1xuXG4gIC8qKlxuICAgKiBUaGUga2V5Ym9hcmREaWRIaWRlIGV2ZW50IGVtaXRzIHdoZW4gdGhlXG4gICAqIG9uLXNjcmVlbiBrZXlib2FyZCBpcyBoaWRkZW4uXG4gICAqL1xuICBrZXlib2FyZERpZEhpZGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF1c2UgZXZlbnQgZW1pdHMgd2hlbiB0aGUgbmF0aXZlIHBsYXRmb3JtIHB1dHMgdGhlIGFwcGxpY2F0aW9uXG4gICAqIGludG8gdGhlIGJhY2tncm91bmQsIHR5cGljYWxseSB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50XG4gICAqIGFwcGxpY2F0aW9uLiBUaGlzIGV2ZW50IHdvdWxkIGVtaXQgd2hlbiBhIENvcmRvdmEgYXBwIGlzIHB1dCBpbnRvXG4gICAqIHRoZSBiYWNrZ3JvdW5kLCBob3dldmVyLCBpdCB3b3VsZCBub3QgZmlyZSBvbiBhIHN0YW5kYXJkIHdlYiBicm93c2VyLlxuICAgKi9cbiAgcGF1c2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzdW1lIGV2ZW50IGVtaXRzIHdoZW4gdGhlIG5hdGl2ZSBwbGF0Zm9ybSBwdWxscyB0aGUgYXBwbGljYXRpb25cbiAgICogb3V0IGZyb20gdGhlIGJhY2tncm91bmQuIFRoaXMgZXZlbnQgd291bGQgZW1pdCB3aGVuIGEgQ29yZG92YSBhcHAgY29tZXNcbiAgICogb3V0IGZyb20gdGhlIGJhY2tncm91bmQsIGhvd2V2ZXIsIGl0IHdvdWxkIG5vdCBmaXJlIG9uIGEgc3RhbmRhcmQgd2ViIGJyb3dzZXIuXG4gICAqL1xuICByZXN1bWUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzaXplIGV2ZW50IGVtaXRzIHdoZW4gdGhlIGJyb3dzZXIgd2luZG93IGhhcyBjaGFuZ2VkIGRpbWVuc2lvbnMuIFRoaXNcbiAgICogY291bGQgYmUgZnJvbSBhIGJyb3dzZXIgd2luZG93IGJlaW5nIHBoeXNpY2FsbHkgcmVzaXplZCwgb3IgZnJvbSBhIGRldmljZVxuICAgKiBjaGFuZ2luZyBvcmllbnRhdGlvbi5cbiAgICovXG4gIHJlc2l6ZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueSwgem9uZTogTmdab25lKSB7XG4gICAgem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy53aW4gPSBkb2MuZGVmYXVsdFZpZXc7XG4gICAgICB0aGlzLmJhY2tCdXR0b24uc3Vic2NyaWJlV2l0aFByaW9yaXR5ID0gZnVuY3Rpb24gKHByaW9yaXR5LCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmUoKGV2KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGV2LnJlZ2lzdGVyKHByaW9yaXR5LCAocHJvY2Vzc05leHRIYW5kbGVyKSA9PiB6b25lLnJ1bigoKSA9PiBjYWxsYmFjayhwcm9jZXNzTmV4dEhhbmRsZXIpKSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgcHJveHlFdmVudCh0aGlzLnBhdXNlLCBkb2MsICdwYXVzZScpO1xuICAgICAgcHJveHlFdmVudCh0aGlzLnJlc3VtZSwgZG9jLCAncmVzdW1lJyk7XG4gICAgICBwcm94eUV2ZW50KHRoaXMuYmFja0J1dHRvbiwgZG9jLCAnaW9uQmFja0J1dHRvbicpO1xuICAgICAgcHJveHlFdmVudCh0aGlzLnJlc2l6ZSwgdGhpcy53aW4sICdyZXNpemUnKTtcbiAgICAgIHByb3h5RXZlbnQodGhpcy5rZXlib2FyZERpZFNob3csIHRoaXMud2luLCAnaW9uS2V5Ym9hcmREaWRTaG93Jyk7XG4gICAgICBwcm94eUV2ZW50KHRoaXMua2V5Ym9hcmREaWRIaWRlLCB0aGlzLndpbiwgJ2lvbktleWJvYXJkRGlkSGlkZScpO1xuXG4gICAgICBsZXQgcmVhZHlSZXNvbHZlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICAgIHRoaXMuX3JlYWR5UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXMpID0+IHtcbiAgICAgICAgcmVhZHlSZXNvbHZlID0gcmVzO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy53aW4/LlsnY29yZG92YSddKSB7XG4gICAgICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdkZXZpY2VyZWFkeScsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgcmVhZHlSZXNvbHZlKCdjb3Jkb3ZhJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IG9uY2U6IHRydWUgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgcmVhZHlSZXNvbHZlISgnZG9tJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgcmV0dXJucyB0cnVlL2ZhbHNlIGJhc2VkIG9uIHBsYXRmb3JtLlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSB0aGUgdXNlciBpcyBvbiwgYGlzKHBsYXRmb3JtTmFtZSlgIHdpbGxcbiAgICogcmV0dXJuIGB0cnVlYCBvciBgZmFsc2VgLiBOb3RlIHRoYXQgdGhlIHNhbWUgYXBwIGNhbiByZXR1cm4gYHRydWVgXG4gICAqIGZvciBtb3JlIHRoYW4gb25lIHBsYXRmb3JtIG5hbWUuIEZvciBleGFtcGxlLCBhbiBhcHAgcnVubmluZyBmcm9tXG4gICAqIGFuIGlQYWQgd291bGQgcmV0dXJuIGB0cnVlYCBmb3IgdGhlIHBsYXRmb3JtIG5hbWVzOiBgbW9iaWxlYCxcbiAgICogYGlvc2AsIGBpcGFkYCwgYW5kIGB0YWJsZXRgLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBhcHAgd2FzIHJ1bm5pbmdcbiAgICogZnJvbSBDb3Jkb3ZhIHRoZW4gYGNvcmRvdmFgIHdvdWxkIGJlIHRydWUsIGFuZCBpZiBpdCB3YXMgcnVubmluZ1xuICAgKiBmcm9tIGEgd2ViIGJyb3dzZXIgb24gdGhlIGlQYWQgdGhlbiBgbW9iaWxld2ViYCB3b3VsZCBiZSBgdHJ1ZWAuXG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ2lvbmljLWFuZ3VsYXInO1xuICAgKlxuICAgKiBAQ29tcG9uZW50KHsuLi59KVxuICAgKiBleHBvcnQgTXlQYWdlIHtcbiAgICogICBjb25zdHJ1Y3RvcihwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gICAqICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pcygnaW9zJykpIHtcbiAgICogICAgICAgLy8gVGhpcyB3aWxsIG9ubHkgcHJpbnQgd2hlbiBvbiBpT1NcbiAgICogICAgICAgY29uc29sZS5sb2coJ0kgYW0gYW4gaU9TIGRldmljZSEnKTtcbiAgICogICAgIH1cbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIHwgUGxhdGZvcm0gTmFtZSAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gICAqIHwgYW5kcm9pZCAgICAgICAgIHwgb24gYSBkZXZpY2UgcnVubmluZyBBbmRyb2lkLiAgICAgICB8XG4gICAqIHwgY2FwYWNpdG9yICAgICAgIHwgb24gYSBkZXZpY2UgcnVubmluZyBDYXBhY2l0b3IuICAgICB8XG4gICAqIHwgY29yZG92YSAgICAgICAgIHwgb24gYSBkZXZpY2UgcnVubmluZyBDb3Jkb3ZhLiAgICAgICB8XG4gICAqIHwgaW9zICAgICAgICAgICAgIHwgb24gYSBkZXZpY2UgcnVubmluZyBpT1MuICAgICAgICAgICB8XG4gICAqIHwgaXBhZCAgICAgICAgICAgIHwgb24gYW4gaVBhZCBkZXZpY2UuICAgICAgICAgICAgICAgICB8XG4gICAqIHwgaXBob25lICAgICAgICAgIHwgb24gYW4gaVBob25lIGRldmljZS4gICAgICAgICAgICAgICB8XG4gICAqIHwgcGhhYmxldCAgICAgICAgIHwgb24gYSBwaGFibGV0IGRldmljZS4gICAgICAgICAgICAgICB8XG4gICAqIHwgdGFibGV0ICAgICAgICAgIHwgb24gYSB0YWJsZXQgZGV2aWNlLiAgICAgICAgICAgICAgICB8XG4gICAqIHwgZWxlY3Ryb24gICAgICAgIHwgaW4gRWxlY3Ryb24gb24gYSBkZXNrdG9wIGRldmljZS4gICB8XG4gICAqIHwgcHdhICAgICAgICAgICAgIHwgYXMgYSBQV0EgYXBwLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgbW9iaWxlICAgICAgICAgIHwgb24gYSBtb2JpbGUgZGV2aWNlLiAgICAgICAgICAgICAgICB8XG4gICAqIHwgbW9iaWxld2ViICAgICAgIHwgb24gYSBtb2JpbGUgZGV2aWNlIGluIGEgYnJvd3Nlci4gICB8XG4gICAqIHwgZGVza3RvcCAgICAgICAgIHwgb24gYSBkZXNrdG9wIGRldmljZS4gICAgICAgICAgICAgICB8XG4gICAqIHwgaHlicmlkICAgICAgICAgIHwgaXMgYSBjb3Jkb3ZhIG9yIGNhcGFjaXRvciBhcHAuICAgICB8XG4gICAqXG4gICAqL1xuICBpcyhwbGF0Zm9ybU5hbWU6IFBsYXRmb3Jtcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1BsYXRmb3JtKHRoaXMud2luLCBwbGF0Zm9ybU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRoZSBhcnJheSBvZiBwbGF0Zm9ybXNcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERlcGVuZGluZyBvbiB3aGF0IGRldmljZSB5b3UgYXJlIG9uLCBgcGxhdGZvcm1zYCBjYW4gcmV0dXJuIG11bHRpcGxlIHZhbHVlcy5cbiAgICogRWFjaCBwb3NzaWJsZSB2YWx1ZSBpcyBhIGhpZXJhcmNoeSBvZiBwbGF0Zm9ybXMuIEZvciBleGFtcGxlLCBvbiBhbiBpUGhvbmUsXG4gICAqIGl0IHdvdWxkIHJldHVybiBgbW9iaWxlYCwgYGlvc2AsIGFuZCBgaXBob25lYC5cbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnaW9uaWMtYW5ndWxhcic7XG4gICAqXG4gICAqIEBDb21wb25lbnQoey4uLn0pXG4gICAqIGV4cG9ydCBNeVBhZ2Uge1xuICAgKiAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwbGF0Zm9ybTogUGxhdGZvcm0pIHtcbiAgICogICAgIC8vIFRoaXMgd2lsbCBwcmludCBhbiBhcnJheSBvZiB0aGUgY3VycmVudCBwbGF0Zm9ybXNcbiAgICogICAgIGNvbnNvbGUubG9nKHRoaXMucGxhdGZvcm0ucGxhdGZvcm1zKCkpO1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHBsYXRmb3JtcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGdldFBsYXRmb3Jtcyh0aGlzLndpbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHByb21pc2Ugd2hlbiB0aGUgcGxhdGZvcm0gaXMgcmVhZHkgYW5kIG5hdGl2ZSBmdW5jdGlvbmFsaXR5XG4gICAqIGNhbiBiZSBjYWxsZWQuIElmIHRoZSBhcHAgaXMgcnVubmluZyBmcm9tIHdpdGhpbiBhIHdlYiBicm93c2VyLCB0aGVuXG4gICAqIHRoZSBwcm9taXNlIHdpbGwgcmVzb2x2ZSB3aGVuIHRoZSBET00gaXMgcmVhZHkuIFdoZW4gdGhlIGFwcCBpcyBydW5uaW5nXG4gICAqIGZyb20gYW4gYXBwbGljYXRpb24gZW5naW5lIHN1Y2ggYXMgQ29yZG92YSwgdGhlbiB0aGUgcHJvbWlzZSB3aWxsXG4gICAqIHJlc29sdmUgd2hlbiBDb3Jkb3ZhIHRyaWdnZXJzIHRoZSBgZGV2aWNlcmVhZHlgIGV2ZW50LlxuICAgKlxuICAgKiBUaGUgcmVzb2x2ZWQgdmFsdWUgaXMgdGhlIGByZWFkeVNvdXJjZWAsIHdoaWNoIHN0YXRlcyB3aGljaCBwbGF0Zm9ybVxuICAgKiByZWFkeSB3YXMgdXNlZC4gRm9yIGV4YW1wbGUsIHdoZW4gQ29yZG92YSBpcyByZWFkeSwgdGhlIHJlc29sdmVkIHJlYWR5XG4gICAqIHNvdXJjZSBpcyBgY29yZG92YWAuIFRoZSBkZWZhdWx0IHJlYWR5IHNvdXJjZSB2YWx1ZSB3aWxsIGJlIGBkb21gLiBUaGVcbiAgICogYHJlYWR5U291cmNlYCBpcyB1c2VmdWwgaWYgZGlmZmVyZW50IGxvZ2ljIHNob3VsZCBydW4gZGVwZW5kaW5nIG9uIHRoZVxuICAgKiBwbGF0Zm9ybSB0aGUgYXBwIGlzIHJ1bm5pbmcgZnJvbS4gRm9yIGV4YW1wbGUsIG9ubHkgQ29yZG92YSBjYW4gZXhlY3V0ZVxuICAgKiB0aGUgc3RhdHVzIGJhciBwbHVnaW4sIHNvIHRoZSB3ZWIgc2hvdWxkIG5vdCBydW4gc3RhdHVzIGJhciBwbHVnaW4gbG9naWMuXG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbiAgICogaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdpb25pYy1hbmd1bGFyJztcbiAgICpcbiAgICogQENvbXBvbmVudCh7Li4ufSlcbiAgICogZXhwb3J0IE15QXBwIHtcbiAgICogICBjb25zdHJ1Y3RvcihwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gICAqICAgICB0aGlzLnBsYXRmb3JtLnJlYWR5KCkudGhlbigocmVhZHlTb3VyY2UpID0+IHtcbiAgICogICAgICAgY29uc29sZS5sb2coJ1BsYXRmb3JtIHJlYWR5IGZyb20nLCByZWFkeVNvdXJjZSk7XG4gICAqICAgICAgIC8vIFBsYXRmb3JtIG5vdyByZWFkeSwgZXhlY3V0ZSBhbnkgcmVxdWlyZWQgbmF0aXZlIGNvZGVcbiAgICogICAgIH0pO1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHJlYWR5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5UHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGlmIHRoaXMgYXBwIGlzIHVzaW5nIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2UgZGlyZWN0aW9uIG9yIG5vdC5cbiAgICogV2UgcmVjb21tZW5kIHRoZSBhcHAncyBgaW5kZXguaHRtbGAgZmlsZSBhbHJlYWR5IGhhcyB0aGUgY29ycmVjdCBgZGlyYFxuICAgKiBhdHRyaWJ1dGUgdmFsdWUgc2V0LCBzdWNoIGFzIGA8aHRtbCBkaXI9XCJsdHJcIj5gIG9yIGA8aHRtbCBkaXI9XCJydGxcIj5gLlxuICAgKiBbVzNDOiBTdHJ1Y3R1cmFsIG1hcmt1cCBhbmQgcmlnaHQtdG8tbGVmdCB0ZXh0IGluIEhUTUxdKGh0dHA6Ly93d3cudzMub3JnL0ludGVybmF0aW9uYWwvcXVlc3Rpb25zL3FhLWh0bWwtZGlyKVxuICAgKi9cbiAgZ2V0IGlzUlRMKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRvYy5kaXIgPT09ICdydGwnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcXVlcnkgc3RyaW5nIHBhcmFtZXRlclxuICAgKi9cbiAgZ2V0UXVlcnlQYXJhbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiByZWFkUXVlcnlQYXJhbSh0aGlzLndpbi5sb2NhdGlvbi5ocmVmLCBrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBhcHAgaXMgaW4gbGFuZHNjYXBlIG1vZGUuXG4gICAqL1xuICBpc0xhbmRzY2FwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNQb3J0cmFpdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBhcHAgaXMgaW4gcG9ydHJhaXQgbW9kZS5cbiAgICovXG4gIGlzUG9ydHJhaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMud2luLm1hdGNoTWVkaWE/LignKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknKS5tYXRjaGVzO1xuICB9XG5cbiAgdGVzdFVzZXJBZ2VudChleHByZXNzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBuYXYgPSB0aGlzLndpbi5uYXZpZ2F0b3I7XG4gICAgcmV0dXJuICEhKG5hdj8udXNlckFnZW50ICYmIG5hdi51c2VyQWdlbnQuaW5kZXhPZihleHByZXNzaW9uKSA+PSAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdXJsLlxuICAgKi9cbiAgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMud2luLmxvY2F0aW9uLmhyZWY7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIHBsYXRmb3JtJ3Mgdmlld3BvcnQgdXNpbmcgYHdpbmRvdy5pbm5lcldpZHRoYC5cbiAgICovXG4gIHdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMud2luLmlubmVyV2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBwbGF0Zm9ybSdzIHZpZXdwb3J0IHVzaW5nIGB3aW5kb3cuaW5uZXJIZWlnaHRgLlxuICAgKi9cbiAgaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMud2luLmlubmVySGVpZ2h0O1xuICB9XG59XG5cbmNvbnN0IHJlYWRRdWVyeVBhcmFtID0gKHVybDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICBrZXkgPSBrZXkucmVwbGFjZSgvW1tcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG4gIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnW1xcXFw/Jl0nICsga2V5ICsgJz0oW14mI10qKScpO1xuICBjb25zdCByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xuICByZXR1cm4gcmVzdWx0cyA/IGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzFdLnJlcGxhY2UoL1xcKy9nLCAnICcpKSA6IG51bGw7XG59O1xuXG5jb25zdCBwcm94eUV2ZW50ID0gPFQ+KGVtaXR0ZXI6IFN1YmplY3Q8VD4sIGVsOiBFdmVudFRhcmdldCwgZXZlbnROYW1lOiBzdHJpbmcpID0+IHtcbiAgaWYgKGVsKSB7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIChldikgPT4ge1xuICAgICAgLy8gPz8gY29yZG92YSBtaWdodCBlbWl0IFwibnVsbFwiIGV2ZW50c1xuICAgICAgY29uc3QgdmFsdWUgPSBldiAhPSBudWxsID8gKGV2IGFzIGFueSkuZGV0YWlsIDogdW5kZWZpbmVkO1xuICAgICAgZW1pdHRlci5uZXh0KHZhbHVlKTtcbiAgICB9KTtcbiAgfVxufTtcbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Injector, Injectable, inject, EnvironmentInjector } from '@angular/core';
2
+ import { popoverController } from '@ionic/core';
3
+ import { OverlayBaseController } from '../util/overlay';
4
+ import { AngularDelegate } from './angular-delegate';
5
+ import * as i0 from "@angular/core";
6
+ export class PopoverController extends OverlayBaseController {
7
+ constructor() {
8
+ super(popoverController);
9
+ this.angularDelegate = inject(AngularDelegate);
10
+ this.injector = inject(Injector);
11
+ this.environmentInjector = inject(EnvironmentInjector);
12
+ }
13
+ create(opts) {
14
+ return super.create({
15
+ ...opts,
16
+ delegate: this.angularDelegate.create(this.environmentInjector, this.injector, 'popover'),
17
+ });
18
+ }
19
+ }
20
+ /** @nocollapse */ PopoverController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PopoverController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
+ /** @nocollapse */ PopoverController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PopoverController });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: PopoverController, decorators: [{
23
+ type: Injectable
24
+ }], ctorParameters: function () { return []; } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9wb3BvdmVyLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUdyRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQTREO0lBS2pHO1FBQ0UsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFMbkIsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1Qix3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUkxRCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQW9CO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQixHQUFHLElBQUk7WUFDUCxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1NBQzFGLENBQUMsQ0FBQztJQUNMLENBQUM7O2tJQWRVLGlCQUFpQjtzSUFBakIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgSW5qZWN0YWJsZSwgaW5qZWN0LCBFbnZpcm9ubWVudEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3BvdmVyT3B0aW9ucywgcG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbmltcG9ydCB7IE92ZXJsYXlCYXNlQ29udHJvbGxlciB9IGZyb20gJy4uL3V0aWwvb3ZlcmxheSc7XG5cbmltcG9ydCB7IEFuZ3VsYXJEZWxlZ2F0ZSB9IGZyb20gJy4vYW5ndWxhci1kZWxlZ2F0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQb3BvdmVyQ29udHJvbGxlciBleHRlbmRzIE92ZXJsYXlCYXNlQ29udHJvbGxlcjxQb3BvdmVyT3B0aW9ucywgSFRNTElvblBvcG92ZXJFbGVtZW50PiB7XG4gIHByaXZhdGUgYW5ndWxhckRlbGVnYXRlID0gaW5qZWN0KEFuZ3VsYXJEZWxlZ2F0ZSk7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIocG9wb3ZlckNvbnRyb2xsZXIpO1xuICB9XG5cbiAgY3JlYXRlKG9wdHM6IFBvcG92ZXJPcHRpb25zKTogUHJvbWlzZTxIVE1MSW9uUG9wb3ZlckVsZW1lbnQ+IHtcbiAgICByZXR1cm4gc3VwZXIuY3JlYXRlKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkZWxlZ2F0ZTogdGhpcy5hbmd1bGFyRGVsZWdhdGUuY3JlYXRlKHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciwgdGhpcy5pbmplY3RvciwgJ3BvcG92ZXInKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { toastController } from '@ionic/core';
3
+ import { OverlayBaseController } from '../util/overlay';
4
+ import * as i0 from "@angular/core";
5
+ export class ToastController extends OverlayBaseController {
6
+ constructor() {
7
+ super(toastController);
8
+ }
9
+ }
10
+ /** @nocollapse */ ToastController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ToastController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
+ /** @nocollapse */ ToastController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ToastController, providedIn: 'root' });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ToastController, decorators: [{
13
+ type: Injectable,
14
+ args: [{
15
+ providedIn: 'root',
16
+ }]
17
+ }], ctorParameters: function () { return []; } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvdG9hc3QtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUt4RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxxQkFBd0Q7SUFDM0Y7UUFDRSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7Z0lBSFUsZUFBZTtvSUFBZixlQUFlLGNBRmQsTUFBTTs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0T3B0aW9ucywgdG9hc3RDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuXG5pbXBvcnQgeyBPdmVybGF5QmFzZUNvbnRyb2xsZXIgfSBmcm9tICcuLi91dGlsL292ZXJsYXknO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RDb250cm9sbGVyIGV4dGVuZHMgT3ZlcmxheUJhc2VDb250cm9sbGVyPFRvYXN0T3B0aW9ucywgSFRNTElvblRvYXN0RWxlbWVudD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih0b2FzdENvbnRyb2xsZXIpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElvbmljR2xvYmFsIHtcbiAgY29uZmlnPzogYW55OyAvLyBUT0RPKEZXLTI4MjcpOiB0eXBlXG4gIGFzeW5jUXVldWU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElvbmljV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgSW9uaWM6IElvbmljR2xvYmFsO1xuICBfX3pvbmVfc3ltYm9sX19yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/OiAodHM6IEZyYW1lUmVxdWVzdENhbGxiYWNrKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSFRNTFN0ZW5jaWxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBjb21wb25lbnRPblJlYWR5PygpOiBQcm9taXNlPHRoaXM+O1xuICBmb3JjZVVwZGF0ZT8oKTogdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Provides a way to customize when activated routes get reused.
3
+ */
4
+ export class IonicRouteStrategy {
5
+ /**
6
+ * Whether the given route should detach for later reuse.
7
+ */
8
+ shouldDetach(_route) {
9
+ return false;
10
+ }
11
+ /**
12
+ * Returns `false`, meaning the route (and its subtree) is never reattached
13
+ */
14
+ shouldAttach(_route) {
15
+ return false;
16
+ }
17
+ /**
18
+ * A no-op; the route is never stored since this strategy never detaches routes for later re-use.
19
+ */
20
+ store(_route, _detachedTree) {
21
+ return;
22
+ }
23
+ /**
24
+ * Returns `null` because this strategy does not store routes for later re-use.
25
+ */
26
+ retrieve(_route) {
27
+ return null;
28
+ }
29
+ /**
30
+ * Determines if a route should be reused.
31
+ * This strategy returns `true` when the future route config and
32
+ * current route config are identical and all route parameters are identical.
33
+ */
34
+ shouldReuseRoute(future, curr) {
35
+ if (future.routeConfig !== curr.routeConfig) {
36
+ return false;
37
+ }
38
+ // checking router params
39
+ const futureParams = future.params;
40
+ const currentParams = curr.params;
41
+ const keysA = Object.keys(futureParams);
42
+ const keysB = Object.keys(currentParams);
43
+ if (keysA.length !== keysB.length) {
44
+ return false;
45
+ }
46
+ // Test for A's keys different from B.
47
+ for (const key of keysA) {
48
+ if (currentParams[key] !== futureParams[key]) {
49
+ return false;
50
+ }
51
+ }
52
+ return true;
53
+ }
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMtcm91dGVyLXJldXNlLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWwvaW9uaWMtcm91dGVyLXJldXNlLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7T0FFRztJQUNILFlBQVksQ0FBQyxNQUE4QjtRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxNQUE4QjtRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUE4QixFQUFFLGFBQWtDO1FBQ3RFLE9BQU87SUFDVCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsTUFBOEI7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLE1BQThCLEVBQUUsSUFBNEI7UUFDM0UsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELHlCQUF5QjtRQUN6QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxzQ0FBc0M7UUFDdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUU7WUFDdkIsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QyxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgRGV0YWNoZWRSb3V0ZUhhbmRsZSwgUm91dGVSZXVzZVN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIHdheSB0byBjdXN0b21pemUgd2hlbiBhY3RpdmF0ZWQgcm91dGVzIGdldCByZXVzZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBJb25pY1JvdXRlU3RyYXRlZ3kgaW1wbGVtZW50cyBSb3V0ZVJldXNlU3RyYXRlZ3kge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZ2l2ZW4gcm91dGUgc2hvdWxkIGRldGFjaCBmb3IgbGF0ZXIgcmV1c2UuXG4gICAqL1xuICBzaG91bGREZXRhY2goX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYGZhbHNlYCwgbWVhbmluZyB0aGUgcm91dGUgKGFuZCBpdHMgc3VidHJlZSkgaXMgbmV2ZXIgcmVhdHRhY2hlZFxuICAgKi9cbiAgc2hvdWxkQXR0YWNoKF9yb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG5vLW9wOyB0aGUgcm91dGUgaXMgbmV2ZXIgc3RvcmVkIHNpbmNlIHRoaXMgc3RyYXRlZ3kgbmV2ZXIgZGV0YWNoZXMgcm91dGVzIGZvciBsYXRlciByZS11c2UuXG4gICAqL1xuICBzdG9yZShfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIF9kZXRhY2hlZFRyZWU6IERldGFjaGVkUm91dGVIYW5kbGUpOiB2b2lkIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgbnVsbGAgYmVjYXVzZSB0aGlzIHN0cmF0ZWd5IGRvZXMgbm90IHN0b3JlIHJvdXRlcyBmb3IgbGF0ZXIgcmUtdXNlLlxuICAgKi9cbiAgcmV0cmlldmUoX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogRGV0YWNoZWRSb3V0ZUhhbmRsZSB8IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSByb3V0ZSBzaG91bGQgYmUgcmV1c2VkLlxuICAgKiBUaGlzIHN0cmF0ZWd5IHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGZ1dHVyZSByb3V0ZSBjb25maWcgYW5kXG4gICAqIGN1cnJlbnQgcm91dGUgY29uZmlnIGFyZSBpZGVudGljYWwgYW5kIGFsbCByb3V0ZSBwYXJhbWV0ZXJzIGFyZSBpZGVudGljYWwuXG4gICAqL1xuICBzaG91bGRSZXVzZVJvdXRlKGZ1dHVyZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycjogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIGlmIChmdXR1cmUucm91dGVDb25maWcgIT09IGN1cnIucm91dGVDb25maWcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBjaGVja2luZyByb3V0ZXIgcGFyYW1zXG4gICAgY29uc3QgZnV0dXJlUGFyYW1zID0gZnV0dXJlLnBhcmFtcztcbiAgICBjb25zdCBjdXJyZW50UGFyYW1zID0gY3Vyci5wYXJhbXM7XG4gICAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhmdXR1cmVQYXJhbXMpO1xuICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMoY3VycmVudFBhcmFtcyk7XG5cbiAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XG4gICAgICBpZiAoY3VycmVudFBhcmFtc1trZXldICE9PSBmdXR1cmVQYXJhbXNba2V5XSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ // TODO(FW-2827): types
2
+ export class OverlayBaseController {
3
+ constructor(ctrl) {
4
+ this.ctrl = ctrl;
5
+ }
6
+ /**
7
+ * Creates a new overlay
8
+ */
9
+ create(opts) {
10
+ return this.ctrl.create((opts || {}));
11
+ }
12
+ /**
13
+ * When `id` is not provided, it dismisses the top overlay.
14
+ */
15
+ dismiss(data, role, id) {
16
+ return this.ctrl.dismiss(data, role, id);
17
+ }
18
+ /**
19
+ * Returns the top overlay.
20
+ */
21
+ getTop() {
22
+ return this.ctrl.getTop();
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL292ZXJsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUJBQXVCO0FBUXZCLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBb0IsSUFBb0M7UUFBcEMsU0FBSSxHQUFKLElBQUksQ0FBZ0M7SUFBRyxDQUFDO0lBRTVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLElBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxJQUFVLEVBQUUsSUFBYSxFQUFFLEVBQVc7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETyhGVy0yODI3KTogdHlwZXNcblxuaW50ZXJmYWNlIENvbnRyb2xsZXJTaGFwZTxPcHRzLCBIVE1MRWxtPiB7XG4gIGNyZWF0ZShvcHRpb25zOiBPcHRzKTogUHJvbWlzZTxIVE1MRWxtPjtcbiAgZGlzbWlzcyhkYXRhPzogYW55LCByb2xlPzogc3RyaW5nLCBpZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj47XG4gIGdldFRvcCgpOiBQcm9taXNlPEhUTUxFbG0gfCB1bmRlZmluZWQ+O1xufVxuXG5leHBvcnQgY2xhc3MgT3ZlcmxheUJhc2VDb250cm9sbGVyPE9wdHMsIE92ZXJsYXk+IGltcGxlbWVudHMgQ29udHJvbGxlclNoYXBlPE9wdHMsIE92ZXJsYXk+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHJsOiBDb250cm9sbGVyU2hhcGU8T3B0cywgT3ZlcmxheT4pIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgb3ZlcmxheVxuICAgKi9cbiAgY3JlYXRlKG9wdHM/OiBPcHRzKTogUHJvbWlzZTxPdmVybGF5PiB7XG4gICAgcmV0dXJuIHRoaXMuY3RybC5jcmVhdGUoKG9wdHMgfHwge30pIGFzIGFueSk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBgaWRgIGlzIG5vdCBwcm92aWRlZCwgaXQgZGlzbWlzc2VzIHRoZSB0b3Agb3ZlcmxheS5cbiAgICovXG4gIGRpc21pc3MoZGF0YT86IGFueSwgcm9sZT86IHN0cmluZywgaWQ/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jdHJsLmRpc21pc3MoZGF0YSwgcm9sZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRvcCBvdmVybGF5LlxuICAgKi9cbiAgZ2V0VG9wKCk6IFByb21pc2U8T3ZlcmxheSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLmN0cmwuZ2V0VG9wKCk7XG4gIH1cbn1cbiJdfQ==