@ionic/angular 7.4.4-nightly.20231011 → 7.4.5-dev.11697034550.1e097439

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 (216) hide show
  1. package/README.md +20 -0
  2. package/app-initialize.d.ts +1 -1
  3. package/common/directives/control-value-accessors/index.d.ts +1 -0
  4. package/{directives → common/directives}/control-value-accessors/value-accessor.d.ts +2 -2
  5. package/common/directives/navigation/back-button.d.ts +26 -0
  6. package/common/directives/navigation/nav.d.ts +13 -0
  7. package/common/directives/navigation/router-link-delegate.d.ts +50 -0
  8. package/common/directives/navigation/router-outlet.d.ts +103 -0
  9. package/{directives → common/directives}/navigation/stack-utils.d.ts +1 -1
  10. package/common/directives/navigation/tabs.d.ts +74 -0
  11. package/common/index.d.ts +28 -0
  12. package/common/overlays/modal.d.ts +50 -0
  13. package/common/overlays/popover.d.ts +46 -0
  14. package/{providers → common/providers}/action-sheet-controller.d.ts +2 -2
  15. package/{providers → common/providers}/alert-controller.d.ts +2 -2
  16. package/{providers → common/providers}/angular-delegate.d.ts +1 -1
  17. package/{providers → common/providers}/animation-controller.d.ts +1 -1
  18. package/{providers → common/providers}/config.d.ts +1 -1
  19. package/{providers → common/providers}/gesture-controller.d.ts +1 -1
  20. package/{providers → common/providers}/loading-controller.d.ts +2 -2
  21. package/{providers → common/providers}/modal-controller.d.ts +2 -2
  22. package/{providers → common/providers}/nav-controller.d.ts +2 -2
  23. package/{providers → common/providers}/picker-controller.d.ts +2 -2
  24. package/{providers → common/providers}/platform.d.ts +2 -2
  25. package/{providers → common/providers}/popover-controller.d.ts +2 -2
  26. package/{providers → common/providers}/toast-controller.d.ts +2 -2
  27. package/{types → common/types}/interfaces.d.ts +0 -4
  28. package/common/utils/proxy.d.ts +8 -0
  29. package/css/core.css +100 -0
  30. package/css/core.css.map +1 -1
  31. package/css/display.css +33 -0
  32. package/css/display.css.map +1 -1
  33. package/css/float-elements.css +33 -0
  34. package/css/float-elements.css.map +1 -1
  35. package/css/global.bundle.css +84 -6
  36. package/css/global.bundle.css.map +1 -1
  37. package/css/ionic-swiper.css +33 -0
  38. package/css/ionic-swiper.css.map +1 -1
  39. package/css/ionic.bundle.css +1 -1
  40. package/css/ionic.bundle.css.map +1 -1
  41. package/css/padding.css +33 -0
  42. package/css/padding.css.map +1 -1
  43. package/css/structure.css +33 -0
  44. package/css/structure.css.map +1 -1
  45. package/css/text-alignment.css +33 -0
  46. package/css/text-alignment.css.map +1 -1
  47. package/css/text-transformation.css +33 -0
  48. package/css/text-transformation.css.map +1 -1
  49. package/css/typography.css +51 -6
  50. package/css/typography.css.map +1 -1
  51. package/css/utils.bundle.css +165 -0
  52. package/css/utils.bundle.css.map +1 -1
  53. package/directives/control-value-accessors/boolean-value-accessor.d.ts +1 -1
  54. package/directives/control-value-accessors/numeric-value-accessor.d.ts +1 -1
  55. package/directives/control-value-accessors/radio-value-accessor.d.ts +1 -1
  56. package/directives/control-value-accessors/select-value-accessor.d.ts +1 -1
  57. package/directives/control-value-accessors/text-value-accessor.d.ts +1 -1
  58. package/directives/navigation/ion-back-button.d.ts +6 -16
  59. package/directives/navigation/ion-nav.d.ts +8 -0
  60. package/directives/navigation/ion-router-outlet.d.ts +4 -122
  61. package/directives/navigation/ion-tabs.d.ts +4 -64
  62. package/directives/navigation/router-link-delegate.d.ts +7 -41
  63. package/directives/overlays/modal.d.ts +3 -47
  64. package/directives/overlays/popover.d.ts +3 -43
  65. package/directives/proxies-list.d.ts +1 -1
  66. package/directives/proxies.d.ts +1 -27
  67. package/esm2020/app-initialize.mjs +2 -2
  68. package/esm2020/common/directives/control-value-accessors/index.mjs +2 -0
  69. package/esm2020/common/directives/control-value-accessors/value-accessor.mjs +141 -0
  70. package/esm2020/common/directives/navigation/back-button.mjs +59 -0
  71. package/esm2020/common/directives/navigation/nav-params.mjs +45 -0
  72. package/esm2020/common/directives/navigation/nav.mjs +47 -0
  73. package/esm2020/common/directives/navigation/router-link-delegate.mjs +111 -0
  74. package/esm2020/common/directives/navigation/router-outlet.mjs +461 -0
  75. package/esm2020/common/directives/navigation/stack-controller.mjs +275 -0
  76. package/esm2020/common/directives/navigation/stack-utils.mjs +73 -0
  77. package/esm2020/common/directives/navigation/tabs.mjs +172 -0
  78. package/esm2020/common/index.mjs +28 -0
  79. package/esm2020/common/ionic-angular-common.mjs +5 -0
  80. package/esm2020/common/overlays/modal.mjs +87 -0
  81. package/esm2020/common/overlays/popover.mjs +79 -0
  82. package/esm2020/common/providers/action-sheet-controller.mjs +18 -0
  83. package/esm2020/common/providers/alert-controller.mjs +18 -0
  84. package/esm2020/common/providers/angular-delegate.mjs +152 -0
  85. package/esm2020/common/providers/animation-controller.mjs +37 -0
  86. package/esm2020/common/providers/config.mjs +44 -0
  87. package/esm2020/common/providers/dom-controller.mjs +44 -0
  88. package/esm2020/common/providers/gesture-controller.mjs +31 -0
  89. package/esm2020/common/providers/loading-controller.mjs +18 -0
  90. package/esm2020/common/providers/menu-controller.mjs +100 -0
  91. package/esm2020/common/providers/modal-controller.mjs +25 -0
  92. package/esm2020/common/providers/nav-controller.mjs +221 -0
  93. package/esm2020/common/providers/picker-controller.mjs +18 -0
  94. package/esm2020/common/providers/platform.mjs +246 -0
  95. package/esm2020/common/providers/popover-controller.mjs +25 -0
  96. package/esm2020/common/providers/toast-controller.mjs +18 -0
  97. package/esm2020/common/types/interfaces.mjs +2 -0
  98. package/esm2020/common/utils/overlay.mjs +25 -0
  99. package/esm2020/common/utils/proxy.mjs +47 -0
  100. package/esm2020/common/utils/routing.mjs +55 -0
  101. package/esm2020/common/utils/util.mjs +10 -0
  102. package/esm2020/directives/control-value-accessors/boolean-value-accessor.mjs +4 -4
  103. package/esm2020/directives/control-value-accessors/numeric-value-accessor.mjs +2 -2
  104. package/esm2020/directives/control-value-accessors/radio-value-accessor.mjs +6 -3
  105. package/esm2020/directives/control-value-accessors/select-value-accessor.mjs +2 -2
  106. package/esm2020/directives/control-value-accessors/text-value-accessor.mjs +2 -2
  107. package/esm2020/directives/navigation/ion-back-button.mjs +15 -36
  108. package/esm2020/directives/navigation/ion-nav.mjs +21 -0
  109. package/esm2020/directives/navigation/ion-router-outlet.mjs +6 -435
  110. package/esm2020/directives/navigation/ion-tabs.mjs +9 -166
  111. package/esm2020/directives/navigation/router-link-delegate.mjs +11 -92
  112. package/esm2020/directives/overlays/modal.mjs +8 -88
  113. package/esm2020/directives/overlays/popover.mjs +8 -87
  114. package/esm2020/directives/proxies-list.mjs +1 -3
  115. package/esm2020/directives/proxies.mjs +4 -56
  116. package/esm2020/index.mjs +5 -22
  117. package/esm2020/ionic-module.mjs +14 -32
  118. package/esm2020/standalone/directives/angular-component-lib/utils.mjs +51 -0
  119. package/esm2020/standalone/directives/checkbox.mjs +73 -0
  120. package/esm2020/standalone/directives/datetime.mjs +90 -0
  121. package/esm2020/standalone/directives/icon.mjs +33 -0
  122. package/esm2020/standalone/directives/index.mjs +13 -0
  123. package/esm2020/standalone/directives/input.mjs +112 -0
  124. package/esm2020/standalone/directives/proxies.mjs +2268 -0
  125. package/esm2020/standalone/directives/radio-group.mjs +58 -0
  126. package/esm2020/standalone/directives/radio.mjs +62 -0
  127. package/esm2020/standalone/directives/range.mjs +77 -0
  128. package/esm2020/standalone/directives/searchbar.mjs +80 -0
  129. package/esm2020/standalone/directives/segment.mjs +58 -0
  130. package/esm2020/standalone/directives/select.mjs +81 -0
  131. package/esm2020/standalone/directives/textarea.mjs +90 -0
  132. package/esm2020/standalone/directives/toggle.mjs +73 -0
  133. package/esm2020/standalone/index.mjs +15 -0
  134. package/esm2020/standalone/ionic-angular-standalone.mjs +5 -0
  135. package/esm2020/standalone/navigation/back-button.mjs +32 -0
  136. package/esm2020/standalone/navigation/nav.mjs +28 -0
  137. package/esm2020/standalone/navigation/router-link-delegate.mjs +28 -0
  138. package/esm2020/standalone/navigation/router-outlet.mjs +23 -0
  139. package/esm2020/standalone/navigation/tabs.mjs +46 -0
  140. package/esm2020/standalone/overlays/modal.mjs +32 -0
  141. package/esm2020/standalone/overlays/popover.mjs +28 -0
  142. package/esm2020/standalone/providers/ionic-angular.mjs +41 -0
  143. package/fesm2015/ionic-angular-common.mjs +2620 -0
  144. package/fesm2015/ionic-angular-common.mjs.map +1 -0
  145. package/fesm2015/ionic-angular-standalone.mjs +3286 -0
  146. package/fesm2015/ionic-angular-standalone.mjs.map +1 -0
  147. package/fesm2015/ionic-angular.mjs +143 -2637
  148. package/fesm2015/ionic-angular.mjs.map +1 -1
  149. package/fesm2020/ionic-angular-common.mjs +2609 -0
  150. package/fesm2020/ionic-angular-common.mjs.map +1 -0
  151. package/fesm2020/ionic-angular-standalone.mjs +3284 -0
  152. package/fesm2020/ionic-angular-standalone.mjs.map +1 -0
  153. package/fesm2020/ionic-angular.mjs +142 -2627
  154. package/fesm2020/ionic-angular.mjs.map +1 -1
  155. package/index.d.ts +4 -20
  156. package/ionic-module.d.ts +2 -2
  157. package/package.json +18 -2
  158. package/standalone/directives/angular-component-lib/utils.d.ts +9 -0
  159. package/standalone/directives/checkbox.d.ts +30 -0
  160. package/standalone/directives/datetime.d.ts +30 -0
  161. package/standalone/directives/icon.d.ts +9 -0
  162. package/standalone/directives/index.d.ts +12 -0
  163. package/standalone/directives/input.d.ts +47 -0
  164. package/standalone/directives/proxies.d.ts +903 -0
  165. package/standalone/directives/radio-group.d.ts +18 -0
  166. package/standalone/directives/radio.d.ts +22 -0
  167. package/standalone/directives/range.d.ts +47 -0
  168. package/standalone/directives/searchbar.d.ts +45 -0
  169. package/standalone/directives/segment.d.ts +19 -0
  170. package/standalone/directives/select.d.ts +34 -0
  171. package/standalone/directives/textarea.d.ts +37 -0
  172. package/standalone/directives/toggle.d.ts +28 -0
  173. package/standalone/index.d.ts +12 -0
  174. package/standalone/navigation/back-button.d.ts +9 -0
  175. package/standalone/navigation/nav.d.ts +8 -0
  176. package/standalone/navigation/router-link-delegate.d.ts +10 -0
  177. package/standalone/navigation/router-outlet.d.ts +6 -0
  178. package/standalone/navigation/tabs.d.ts +12 -0
  179. package/standalone/overlays/modal.d.ts +6 -0
  180. package/standalone/overlays/popover.d.ts +6 -0
  181. package/standalone/providers/ionic-angular.d.ts +3 -0
  182. package/test/README.md +8 -0
  183. package/directives/navigation/nav-delegate.d.ts +0 -9
  184. package/esm2020/directives/control-value-accessors/value-accessor.mjs +0 -141
  185. package/esm2020/directives/navigation/nav-delegate.mjs +0 -42
  186. package/esm2020/directives/navigation/nav-params.mjs +0 -45
  187. package/esm2020/directives/navigation/stack-controller.mjs +0 -275
  188. package/esm2020/directives/navigation/stack-utils.mjs +0 -73
  189. package/esm2020/ionic-core.mjs +0 -6
  190. package/esm2020/providers/action-sheet-controller.mjs +0 -18
  191. package/esm2020/providers/alert-controller.mjs +0 -18
  192. package/esm2020/providers/angular-delegate.mjs +0 -152
  193. package/esm2020/providers/animation-controller.mjs +0 -37
  194. package/esm2020/providers/config.mjs +0 -44
  195. package/esm2020/providers/dom-controller.mjs +0 -44
  196. package/esm2020/providers/gesture-controller.mjs +0 -31
  197. package/esm2020/providers/loading-controller.mjs +0 -18
  198. package/esm2020/providers/menu-controller.mjs +0 -100
  199. package/esm2020/providers/modal-controller.mjs +0 -25
  200. package/esm2020/providers/nav-controller.mjs +0 -221
  201. package/esm2020/providers/picker-controller.mjs +0 -18
  202. package/esm2020/providers/platform.mjs +0 -246
  203. package/esm2020/providers/popover-controller.mjs +0 -25
  204. package/esm2020/providers/toast-controller.mjs +0 -18
  205. package/esm2020/types/interfaces.mjs +0 -2
  206. package/esm2020/util/ionic-router-reuse-strategy.mjs +0 -55
  207. package/esm2020/util/overlay.mjs +0 -25
  208. package/esm2020/util/util.mjs +0 -10
  209. package/ionic-core.d.ts +0 -2
  210. /package/{directives → common/directives}/navigation/nav-params.d.ts +0 -0
  211. /package/{directives → common/directives}/navigation/stack-controller.d.ts +0 -0
  212. /package/{providers → common/providers}/dom-controller.d.ts +0 -0
  213. /package/{providers → common/providers}/menu-controller.d.ts +0 -0
  214. /package/{util → common/utils}/overlay.d.ts +0 -0
  215. /package/{util/ionic-router-reuse-strategy.d.ts → common/utils/routing.d.ts} +0 -0
  216. /package/{util → common/utils}/util.d.ts +0 -0
@@ -0,0 +1,18 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { RadioGroupChangeEventDetail, Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonRadioGroup extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ handleIonChange(el: HTMLIonRadioGroupElement): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonRadioGroup, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonRadioGroup, "ion-radio-group", never, { "allowEmptySelection": "allowEmptySelection"; "name": "name"; "value": "value"; }, {}, never, ["*"], true>;
12
+ }
13
+ export declare interface IonRadioGroup extends Components.IonRadioGroup {
14
+ /**
15
+ * Emitted when the value has changed.
16
+ */
17
+ ionChange: EventEmitter<CustomEvent<RadioGroupChangeEventDetail>>;
18
+ }
@@ -0,0 +1,22 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonRadio extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ handleIonSelect(el: any): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonRadio, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonRadio, "ion-radio", never, { "color": "color"; "disabled": "disabled"; "justify": "justify"; "labelPlacement": "labelPlacement"; "legacy": "legacy"; "mode": "mode"; "name": "name"; "value": "value"; }, {}, never, ["*"], true>;
12
+ }
13
+ export declare interface IonRadio extends Components.IonRadio {
14
+ /**
15
+ * Emitted when the radio button has focus.
16
+ */
17
+ ionFocus: EventEmitter<CustomEvent<void>>;
18
+ /**
19
+ * Emitted when the radio button loses focus.
20
+ */
21
+ ionBlur: EventEmitter<CustomEvent<void>>;
22
+ }
@@ -0,0 +1,47 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { RangeChangeEventDetail, RangeKnobMoveStartEventDetail, RangeKnobMoveEndEventDetail, Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonRange extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ handleIonChange(el: HTMLIonRangeElement): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonRange, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonRange, "ion-range", never, { "activeBarStart": "activeBarStart"; "color": "color"; "debounce": "debounce"; "disabled": "disabled"; "dualKnobs": "dualKnobs"; "label": "label"; "labelPlacement": "labelPlacement"; "legacy": "legacy"; "max": "max"; "min": "min"; "mode": "mode"; "name": "name"; "pin": "pin"; "pinFormatter": "pinFormatter"; "snaps": "snaps"; "step": "step"; "ticks": "ticks"; "value": "value"; }, {}, never, ["*"], true>;
12
+ }
13
+ export declare interface IonRange extends Components.IonRange {
14
+ /**
15
+ * The `ionChange` event is fired for `<ion-range>` elements when the user
16
+ modifies the element's value:
17
+ - When the user releases the knob after dragging;
18
+ - When the user moves the knob with keyboard arrows
19
+
20
+ `ionChange` is not fired when the value is changed programmatically.
21
+ */
22
+ ionChange: EventEmitter<CustomEvent<RangeChangeEventDetail>>;
23
+ /**
24
+ * The `ionInput` event is fired for `<ion-range>` elements when the value
25
+ is modified. Unlike `ionChange`, `ionInput` is fired continuously
26
+ while the user is dragging the knob.
27
+ */
28
+ ionInput: EventEmitter<CustomEvent<RangeChangeEventDetail>>;
29
+ /**
30
+ * Emitted when the range has focus.
31
+ */
32
+ ionFocus: EventEmitter<CustomEvent<void>>;
33
+ /**
34
+ * Emitted when the range loses focus.
35
+ */
36
+ ionBlur: EventEmitter<CustomEvent<void>>;
37
+ /**
38
+ * Emitted when the user starts moving the range knob, whether through
39
+ mouse drag, touch gesture, or keyboard interaction.
40
+ */
41
+ ionKnobMoveStart: EventEmitter<CustomEvent<RangeKnobMoveStartEventDetail>>;
42
+ /**
43
+ * Emitted when the user finishes moving the range knob, whether through
44
+ mouse drag, touch gesture, or keyboard interaction.
45
+ */
46
+ ionKnobMoveEnd: EventEmitter<CustomEvent<RangeKnobMoveEndEventDetail>>;
47
+ }
@@ -0,0 +1,45 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { SearchbarInputEventDetail, SearchbarChangeEventDetail, Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonSearchbar extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ handleIonInput(el: HTMLIonSearchbarElement): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonSearchbar, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonSearchbar, "ion-searchbar", never, { "animated": "animated"; "autocomplete": "autocomplete"; "autocorrect": "autocorrect"; "cancelButtonIcon": "cancelButtonIcon"; "cancelButtonText": "cancelButtonText"; "clearIcon": "clearIcon"; "color": "color"; "debounce": "debounce"; "disabled": "disabled"; "enterkeyhint": "enterkeyhint"; "inputmode": "inputmode"; "mode": "mode"; "name": "name"; "placeholder": "placeholder"; "searchIcon": "searchIcon"; "showCancelButton": "showCancelButton"; "showClearButton": "showClearButton"; "spellcheck": "spellcheck"; "type": "type"; "value": "value"; }, {}, never, ["*"], true>;
12
+ }
13
+ export declare interface IonSearchbar extends Components.IonSearchbar {
14
+ /**
15
+ * Emitted when the `value` of the `ion-searchbar` element has changed.
16
+ */
17
+ ionInput: EventEmitter<CustomEvent<SearchbarInputEventDetail>>;
18
+ /**
19
+ * The `ionChange` event is fired for `<ion-searchbar>` elements when the user
20
+ modifies the element's value. Unlike the `ionInput` event, the `ionChange`
21
+ event is not necessarily fired for each alteration to an element's value.
22
+
23
+ The `ionChange` event is fired when the value has been committed
24
+ by the user. This can happen when the element loses focus or
25
+ when the "Enter" key is pressed. `ionChange` can also fire
26
+ when clicking the clear or cancel buttons.
27
+ */
28
+ ionChange: EventEmitter<CustomEvent<SearchbarChangeEventDetail>>;
29
+ /**
30
+ * Emitted when the cancel button is clicked.
31
+ */
32
+ ionCancel: EventEmitter<CustomEvent<void>>;
33
+ /**
34
+ * Emitted when the clear input button is clicked.
35
+ */
36
+ ionClear: EventEmitter<CustomEvent<void>>;
37
+ /**
38
+ * Emitted when the input loses focus.
39
+ */
40
+ ionBlur: EventEmitter<CustomEvent<void>>;
41
+ /**
42
+ * Emitted when the input has focus.
43
+ */
44
+ ionFocus: EventEmitter<CustomEvent<void>>;
45
+ }
@@ -0,0 +1,19 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { SegmentChangeEventDetail, Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonSegment extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ handleIonChange(el: HTMLIonSegmentElement): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonSegment, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonSegment, "ion-segment", never, { "color": "color"; "disabled": "disabled"; "mode": "mode"; "scrollable": "scrollable"; "selectOnFocus": "selectOnFocus"; "swipeGesture": "swipeGesture"; "value": "value"; }, {}, never, ["*"], true>;
12
+ }
13
+ export declare interface IonSegment extends Components.IonSegment {
14
+ /**
15
+ * Emitted when the value property has changed and any
16
+ dragging pointer has been released from `ion-segment`.
17
+ */
18
+ ionChange: EventEmitter<CustomEvent<SegmentChangeEventDetail>>;
19
+ }
@@ -0,0 +1,34 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { SelectChangeEventDetail, Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonSelect extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ handleIonChange(el: HTMLIonSelectElement): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonSelect, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonSelect, "ion-select", never, { "cancelText": "cancelText"; "color": "color"; "compareWith": "compareWith"; "disabled": "disabled"; "expandedIcon": "expandedIcon"; "fill": "fill"; "interface": "interface"; "interfaceOptions": "interfaceOptions"; "justify": "justify"; "label": "label"; "labelPlacement": "labelPlacement"; "legacy": "legacy"; "mode": "mode"; "multiple": "multiple"; "name": "name"; "okText": "okText"; "placeholder": "placeholder"; "selectedText": "selectedText"; "shape": "shape"; "toggleIcon": "toggleIcon"; "value": "value"; }, {}, never, ["*"], true>;
12
+ }
13
+ export declare interface IonSelect extends Components.IonSelect {
14
+ /**
15
+ * Emitted when the value has changed.
16
+ */
17
+ ionChange: EventEmitter<CustomEvent<SelectChangeEventDetail>>;
18
+ /**
19
+ * Emitted when the selection is cancelled.
20
+ */
21
+ ionCancel: EventEmitter<CustomEvent<void>>;
22
+ /**
23
+ * Emitted when the overlay is dismissed.
24
+ */
25
+ ionDismiss: EventEmitter<CustomEvent<void>>;
26
+ /**
27
+ * Emitted when the select has focus.
28
+ */
29
+ ionFocus: EventEmitter<CustomEvent<void>>;
30
+ /**
31
+ * Emitted when the select loses focus.
32
+ */
33
+ ionBlur: EventEmitter<CustomEvent<void>>;
34
+ }
@@ -0,0 +1,37 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { TextareaChangeEventDetail, TextareaInputEventDetail, Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonTextarea extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ handleIonInput(el: HTMLIonTextareaElement): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonTextarea, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonTextarea, "ion-textarea", never, { "autoGrow": "autoGrow"; "autocapitalize": "autocapitalize"; "autofocus": "autofocus"; "clearOnEdit": "clearOnEdit"; "color": "color"; "cols": "cols"; "counter": "counter"; "counterFormatter": "counterFormatter"; "debounce": "debounce"; "disabled": "disabled"; "enterkeyhint": "enterkeyhint"; "errorText": "errorText"; "fill": "fill"; "helperText": "helperText"; "inputmode": "inputmode"; "label": "label"; "labelPlacement": "labelPlacement"; "legacy": "legacy"; "maxlength": "maxlength"; "minlength": "minlength"; "mode": "mode"; "name": "name"; "placeholder": "placeholder"; "readonly": "readonly"; "required": "required"; "rows": "rows"; "shape": "shape"; "spellcheck": "spellcheck"; "value": "value"; "wrap": "wrap"; }, {}, never, ["*"], true>;
12
+ }
13
+ export declare interface IonTextarea extends Components.IonTextarea {
14
+ /**
15
+ * The `ionChange` event is fired when the user modifies the textarea's value.
16
+ Unlike the `ionInput` event, the `ionChange` event is fired when
17
+ the element loses focus after its value has been modified.
18
+ */
19
+ ionChange: EventEmitter<CustomEvent<TextareaChangeEventDetail>>;
20
+ /**
21
+ * The `ionInput` event is fired each time the user modifies the textarea's value.
22
+ Unlike the `ionChange` event, the `ionInput` event is fired for each alteration
23
+ to the textarea's value. This typically happens for each keystroke as the user types.
24
+
25
+ When `clearOnEdit` is enabled, the `ionInput` event will be fired when
26
+ the user clears the textarea by performing a keydown event.
27
+ */
28
+ ionInput: EventEmitter<CustomEvent<TextareaInputEventDetail>>;
29
+ /**
30
+ * Emitted when the input loses focus.
31
+ */
32
+ ionBlur: EventEmitter<CustomEvent<FocusEvent>>;
33
+ /**
34
+ * Emitted when the input has focus.
35
+ */
36
+ ionFocus: EventEmitter<CustomEvent<FocusEvent>>;
37
+ }
@@ -0,0 +1,28 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from '@angular/core';
2
+ import { ValueAccessor } from '@ionic/angular/common';
3
+ import type { ToggleChangeEventDetail, Components } from '@ionic/core/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonToggle extends ValueAccessor {
6
+ protected z: NgZone;
7
+ protected el: HTMLElement;
8
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone, injector: Injector);
9
+ writeValue(value: boolean): void;
10
+ handleIonChange(el: HTMLIonToggleElement): void;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonToggle, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonToggle, "ion-toggle", never, { "checked": "checked"; "color": "color"; "disabled": "disabled"; "enableOnOffLabels": "enableOnOffLabels"; "justify": "justify"; "labelPlacement": "labelPlacement"; "legacy": "legacy"; "mode": "mode"; "name": "name"; "value": "value"; }, {}, never, ["*"], true>;
13
+ }
14
+ export declare interface IonToggle extends Components.IonToggle {
15
+ /**
16
+ * Emitted when the user switches the toggle on or off. Does not emit
17
+ when programmatically changing the value of the `checked` property.
18
+ */
19
+ ionChange: EventEmitter<CustomEvent<ToggleChangeEventDetail>>;
20
+ /**
21
+ * Emitted when the toggle has focus.
22
+ */
23
+ ionFocus: EventEmitter<CustomEvent<void>>;
24
+ /**
25
+ * Emitted when the toggle loses focus.
26
+ */
27
+ ionBlur: EventEmitter<CustomEvent<void>>;
28
+ }
@@ -0,0 +1,12 @@
1
+ export { IonBackButton } from './navigation/back-button';
2
+ export { IonModal } from './overlays/modal';
3
+ export { IonPopover } from './overlays/popover';
4
+ export { IonRouterOutlet } from './navigation/router-outlet';
5
+ export { IonRouterLink, IonRouterLinkWithHref } from './navigation/router-link-delegate';
6
+ export { IonTabs } from './navigation/tabs';
7
+ export { provideIonicAngular } from './providers/ionic-angular';
8
+ export { ActionSheetController, AlertController, LoadingController, MenuController, ModalController, PickerController, PopoverController, ToastController, AnimationController, GestureController, DomController, NavController, Config, Platform, NavParams, IonicRouteStrategy, } from '@ionic/angular/common';
9
+ export { IonNav } from './navigation/nav';
10
+ export { IonCheckbox, IonDatetime, IonInput, IonIcon, IonRadioGroup, IonRadio, IonRange, IonSearchbar, IonSegment, IonSelect, IonTextarea, IonToggle, } from './directives';
11
+ export * from './directives/proxies';
12
+ export { createAnimation, createGesture, iosTransitionAnimation, mdTransitionAnimation, IonicSlides, getPlatforms, isPlatform, getTimeGivenProgression, Animation, AnimationBuilder, AnimationCallbackOptions, AnimationDirection, AnimationFill, AnimationKeyFrames, AnimationLifecycle, Gesture, GestureConfig, GestureDetail, NavComponentWithProps, SpinnerTypes, AccordionGroupCustomEvent, AccordionGroupChangeEventDetail, BreadcrumbCustomEvent, BreadcrumbCollapsedClickEventDetail, ActionSheetOptions, ActionSheetButton, AlertOptions, AlertInput, AlertButton, BackButtonEvent, CheckboxCustomEvent, CheckboxChangeEventDetail, DatetimeCustomEvent, DatetimeChangeEventDetail, InfiniteScrollCustomEvent, InputCustomEvent, InputChangeEventDetail, ItemReorderEventDetail, ItemReorderCustomEvent, ItemSlidingCustomEvent, IonicSafeString, LoadingOptions, MenuCustomEvent, ModalOptions, NavCustomEvent, PickerOptions, PickerButton, PickerColumn, PickerColumnOption, PlatformConfig, PopoverOptions, RadioGroupCustomEvent, RadioGroupChangeEventDetail, RangeCustomEvent, RangeChangeEventDetail, RangeKnobMoveStartEventDetail, RangeKnobMoveEndEventDetail, RefresherCustomEvent, RefresherEventDetail, RouterEventDetail, RouterCustomEvent, ScrollBaseCustomEvent, ScrollBaseDetail, ScrollDetail, ScrollCustomEvent, SearchbarCustomEvent, SearchbarChangeEventDetail, SearchbarInputEventDetail, SegmentChangeEventDetail, SegmentCustomEvent, SegmentValue, SelectChangeEventDetail, SelectCustomEvent, TabsCustomEvent, TextareaChangeEventDetail, TextareaCustomEvent, ToastOptions, ToastButton, ToastLayout, ToggleChangeEventDetail, ToggleCustomEvent, } from '@ionic/core/components';
@@ -0,0 +1,9 @@
1
+ import { ElementRef, NgZone, ChangeDetectorRef } from '@angular/core';
2
+ import { IonBackButton as IonBackButtonBase, NavController, Config } from '@ionic/angular/common';
3
+ import { IonRouterOutlet } from './router-outlet';
4
+ import * as i0 from "@angular/core";
5
+ export declare class IonBackButton extends IonBackButtonBase {
6
+ constructor(routerOutlet: IonRouterOutlet, navCtrl: NavController, config: Config, r: ElementRef, z: NgZone, c: ChangeDetectorRef);
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonBackButton, [{ optional: true; }, null, null, null, null, null]>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonBackButton, "ion-back-button", never, {}, {}, never, ["*"], true>;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { ElementRef, Injector, EnvironmentInjector, NgZone, ChangeDetectorRef } from '@angular/core';
2
+ import { IonNav as IonNavBase, AngularDelegate } from '@ionic/angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export declare class IonNav extends IonNavBase {
5
+ constructor(ref: ElementRef, environmentInjector: EnvironmentInjector, injector: Injector, angularDelegate: AngularDelegate, z: NgZone, c: ChangeDetectorRef);
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonNav, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonNav, "ion-nav", never, {}, {}, never, ["*"], true>;
8
+ }
@@ -0,0 +1,10 @@
1
+ import { RouterLinkDelegateDirective as RouterLinkDelegateBase, RouterLinkWithHrefDelegateDirective as RouterLinkHrefDelegateBase } from '@ionic/angular/common';
2
+ import * as i0 from "@angular/core";
3
+ export declare class IonRouterLink extends RouterLinkDelegateBase {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonRouterLink, never>;
5
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IonRouterLink, ":not(a):not(area)[routerLink]", never, {}, {}, never, never, true>;
6
+ }
7
+ export declare class IonRouterLinkWithHref extends RouterLinkHrefDelegateBase {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonRouterLinkWithHref, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IonRouterLinkWithHref, "a[routerLink],area[routerLink]", never, {}, {}, never, never, true>;
10
+ }
@@ -0,0 +1,6 @@
1
+ import { IonRouterOutlet as IonRouterOutletBase } from '@ionic/angular/common';
2
+ import * as i0 from "@angular/core";
3
+ export declare class IonRouterOutlet extends IonRouterOutletBase {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonRouterOutlet, never>;
5
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IonRouterOutlet, "ion-router-outlet", never, {}, {}, never, never, true>;
6
+ }
@@ -0,0 +1,12 @@
1
+ import { QueryList } from '@angular/core';
2
+ import { IonTabs as IonTabsBase } from '@ionic/angular/common';
3
+ import { IonTabBar } from '../directives/proxies';
4
+ import { IonRouterOutlet } from './router-outlet';
5
+ import * as i0 from "@angular/core";
6
+ export declare class IonTabs extends IonTabsBase {
7
+ outlet: IonRouterOutlet;
8
+ tabBar: IonTabBar | undefined;
9
+ tabBars: QueryList<IonTabBar>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonTabs, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonTabs, "ion-tabs", never, {}, {}, ["tabBar", "tabBars"], ["[slot=top]", "*"], true>;
12
+ }
@@ -0,0 +1,6 @@
1
+ import { IonModal as IonModalBase } from '@ionic/angular/common';
2
+ import * as i0 from "@angular/core";
3
+ export declare class IonModal extends IonModalBase {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonModal, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonModal, "ion-modal", never, {}, {}, never, never, true>;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { IonPopover as IonPopoverBase } from '@ionic/angular/common';
2
+ import * as i0 from "@angular/core";
3
+ export declare class IonPopover extends IonPopoverBase {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonPopover, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<IonPopover, "ion-popover", never, {}, {}, never, never, true>;
6
+ }
@@ -0,0 +1,3 @@
1
+ import type { Provider } from '@angular/core';
2
+ import type { IonicConfig } from '@ionic/core/components';
3
+ export declare const provideIonicAngular: (config?: IonicConfig) => Provider[];
package/test/README.md CHANGED
@@ -70,6 +70,14 @@ If you want to add a version-specific change, add the change inside of the appro
70
70
 
71
71
  If you need to add E2E tests that are only run on a specific version of the JS Framework, replicate the `VersionTest` component on each partial application. This ensures that tests for framework version X do not get run for framework version Y.
72
72
 
73
+ ### Testing Lazy Loaded Ionic Components
74
+
75
+ Tests for lazy loaded Ionic UI components should only be added under the `/lazy` route. This ensures the `IonicModule` is added.
76
+
77
+ ### Testing Standalone Ionic Components
78
+
79
+ Tests for standalone Ionic UI components should only be added under the `/standalone` route. This allows for an isolated environment where the lazy loaded `IonicModule` is not initialized. The standalone components use Stencil's custom element bundle instead of the lazy loaded bundle. If `IonicModule` is initialized then the Stencil components will fall back to using the lazy loaded implementation instead of the custom elements bundle implementation.
80
+
73
81
  ## Adding New Test Apps
74
82
 
75
83
  As we add support for new versions of Angular, we will also need to update this directory to test against new applications. The following steps can serve as a guide for adding new apps:
@@ -1,9 +0,0 @@
1
- import { ElementRef, Injector, EnvironmentInjector } from '@angular/core';
2
- import { AngularDelegate } from '../../providers/angular-delegate';
3
- import * as i0 from "@angular/core";
4
- export declare class NavDelegate {
5
- protected el: HTMLElement;
6
- constructor(ref: ElementRef, environmentInjector: EnvironmentInjector, injector: Injector, angularDelegate: AngularDelegate);
7
- static ɵfac: i0.ɵɵFactoryDeclaration<NavDelegate, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<NavDelegate, "ion-nav", never, {}, {}, never, never, false>;
9
- }
@@ -1,141 +0,0 @@
1
- import { Directive, HostListener } from '@angular/core';
2
- import { NgControl } from '@angular/forms';
3
- import { raf } from '../../util/util';
4
- import * as i0 from "@angular/core";
5
- // TODO(FW-2827): types
6
- export class ValueAccessor {
7
- constructor(injector, el) {
8
- this.injector = injector;
9
- this.el = el;
10
- this.onChange = () => {
11
- /**/
12
- };
13
- this.onTouched = () => {
14
- /**/
15
- };
16
- }
17
- writeValue(value) {
18
- this.el.nativeElement.value = this.lastValue = value;
19
- setIonicClasses(this.el);
20
- }
21
- /**
22
- * Notifies the ControlValueAccessor of a change in the value of the control.
23
- *
24
- * This is called by each of the ValueAccessor directives when we want to update
25
- * the status and validity of the form control. For example with text components this
26
- * is called when the ionInput event is fired. For select components this is called
27
- * when the ionChange event is fired.
28
- *
29
- * This also updates the Ionic form status classes on the element.
30
- *
31
- * @param el The component element.
32
- * @param value The new value of the control.
33
- */
34
- handleValueChange(el, value) {
35
- if (el === this.el.nativeElement) {
36
- if (value !== this.lastValue) {
37
- this.lastValue = value;
38
- this.onChange(value);
39
- }
40
- setIonicClasses(this.el);
41
- }
42
- }
43
- _handleBlurEvent(el) {
44
- if (el === this.el.nativeElement) {
45
- this.onTouched();
46
- setIonicClasses(this.el);
47
- }
48
- }
49
- registerOnChange(fn) {
50
- this.onChange = fn;
51
- }
52
- registerOnTouched(fn) {
53
- this.onTouched = fn;
54
- }
55
- setDisabledState(isDisabled) {
56
- this.el.nativeElement.disabled = isDisabled;
57
- }
58
- ngOnDestroy() {
59
- if (this.statusChanges) {
60
- this.statusChanges.unsubscribe();
61
- }
62
- }
63
- ngAfterViewInit() {
64
- let ngControl;
65
- try {
66
- ngControl = this.injector.get(NgControl);
67
- }
68
- catch {
69
- /* No FormControl or ngModel binding */
70
- }
71
- if (!ngControl) {
72
- return;
73
- }
74
- // Listen for changes in validity, disabled, or pending states
75
- if (ngControl.statusChanges) {
76
- this.statusChanges = ngControl.statusChanges.subscribe(() => setIonicClasses(this.el));
77
- }
78
- /**
79
- * TODO FW-2787: Remove this in favor of https://github.com/angular/angular/issues/10887
80
- * whenever it is implemented.
81
- */
82
- const formControl = ngControl.control;
83
- if (formControl) {
84
- const methodsToPatch = ['markAsTouched', 'markAllAsTouched', 'markAsUntouched', 'markAsDirty', 'markAsPristine'];
85
- methodsToPatch.forEach((method) => {
86
- if (typeof formControl[method] !== 'undefined') {
87
- const oldFn = formControl[method].bind(formControl);
88
- formControl[method] = (...params) => {
89
- oldFn(...params);
90
- setIonicClasses(this.el);
91
- };
92
- }
93
- });
94
- }
95
- }
96
- }
97
- /** @nocollapse */ ValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
98
- /** @nocollapse */ ValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: ValueAccessor, host: { listeners: { "ionBlur": "_handleBlurEvent($event.target)" } }, ngImport: i0 });
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValueAccessor, decorators: [{
100
- type: Directive
101
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { _handleBlurEvent: [{
102
- type: HostListener,
103
- args: ['ionBlur', ['$event.target']]
104
- }] } });
105
- export const setIonicClasses = (element) => {
106
- raf(() => {
107
- const input = element.nativeElement;
108
- const hasValue = input.value != null && input.value.toString().length > 0;
109
- const classes = getClasses(input);
110
- setClasses(input, classes);
111
- const item = input.closest('ion-item');
112
- if (item) {
113
- if (hasValue) {
114
- setClasses(item, [...classes, 'item-has-value']);
115
- }
116
- else {
117
- setClasses(item, classes);
118
- }
119
- }
120
- });
121
- };
122
- const getClasses = (element) => {
123
- const classList = element.classList;
124
- const classes = [];
125
- for (let i = 0; i < classList.length; i++) {
126
- const item = classList.item(i);
127
- if (item !== null && startsWith(item, 'ng-')) {
128
- classes.push(`ion-${item.substring(3)}`);
129
- }
130
- }
131
- return classes;
132
- };
133
- const setClasses = (element, classes) => {
134
- const classList = element.classList;
135
- classList.remove('ion-valid', 'ion-invalid', 'ion-touched', 'ion-untouched', 'ion-dirty', 'ion-pristine');
136
- classList.add(...classes);
137
- };
138
- const startsWith = (input, search) => {
139
- return input.substring(0, search.length) === search;
140
- };
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9jb250cm9sLXZhbHVlLWFjY2Vzc29ycy92YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtELFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUF3QixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRXRDLHVCQUF1QjtBQUd2QixNQUFNLE9BQU8sYUFBYTtJQVV4QixZQUFzQixRQUFrQixFQUFZLEVBQWM7UUFBNUMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFZLE9BQUUsR0FBRixFQUFFLENBQVk7UUFUMUQsYUFBUSxHQUF5QixHQUFHLEVBQUU7WUFDNUMsSUFBSTtRQUNOLENBQUMsQ0FBQztRQUNNLGNBQVMsR0FBZSxHQUFHLEVBQUU7WUFDbkMsSUFBSTtRQUNOLENBQUMsQ0FBQztJQUltRSxDQUFDO0lBRXRFLFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNyRCxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxpQkFBaUIsQ0FBQyxFQUFlLEVBQUUsS0FBVTtRQUMzQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRTtZQUNoQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FB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YyxDQUFDLENBQUM7SUFDMUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFBVyxFQUFFO0lBQzVELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLE1BQU0sQ0FBQztBQUN0RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25EZXN0cm95LCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyByYWYgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuXG4vLyBUT0RPKEZXLTI4MjcpOiB0eXBlc1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIC8qKi9cbiAgfTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgLyoqL1xuICB9O1xuICBwcm90ZWN0ZWQgbGFzdFZhbHVlOiBhbnk7XG4gIHByaXZhdGUgc3RhdHVzQ2hhbmdlcz86IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcbiAgICBzZXRJb25pY0NsYXNzZXModGhpcy5lbCk7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpZXMgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG9mIGEgY2hhbmdlIGluIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC5cbiAgICpcbiAgICogVGhpcyBpcyBjYWxsZWQgYnkgZWFjaCBvZiB0aGUgVmFsdWVBY2Nlc3NvciBkaXJlY3RpdmVzIHdoZW4gd2Ugd2FudCB0byB1cGRhdGVcbiAgICogdGhlIHN0YXR1cyBhbmQgdmFsaWRpdHkgb2YgdGhlIGZvcm0gY29udHJvbC4gRm9yIGV4YW1wbGUgd2l0aCB0ZXh0IGNvbXBvbmVudHMgdGhpc1xuICAgKiBpcyBjYWxsZWQgd2hlbiB0aGUgaW9uSW5wdXQgZXZlbnQgaXMgZmlyZWQuIEZvciBzZWxlY3QgY29tcG9uZW50cyB0aGlzIGlzIGNhbGxlZFxuICAgKiB3aGVuIHRoZSBpb25DaGFuZ2UgZXZlbnQgaXMgZmlyZWQuXG4gICAqXG4gICAqIFRoaXMgYWxzbyB1cGRhdGVzIHRoZSBJb25pYyBmb3JtIHN0YXR1cyBjbGFzc2VzIG9uIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWwgVGhlIGNvbXBvbmVudCBlbGVtZW50LlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgY29udHJvbC5cbiAgICovXG4gIGhhbmRsZVZhbHVlQ2hhbmdlKGVsOiBIVE1MRWxlbWVudCwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmIChlbCA9PT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMubGFzdFZhbHVlKSB7XG4gICAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgfVxuICAgICAgc2V0SW9uaWNDbGFzc2VzKHRoaXMuZWwpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lvbkJsdXInLCBbJyRldmVudC50YXJnZXQnXSlcbiAgX2hhbmRsZUJsdXJFdmVudChlbDogYW55KTogdm9pZCB7XG4gICAgaWYgKGVsID09PSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICBzZXRJb25pY0NsYXNzZXModGhpcy5lbCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzQ2hhbmdlcykge1xuICAgICAgdGhpcy5zdGF0dXNDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGxldCBuZ0NvbnRyb2w7XG4gICAgdHJ5IHtcbiAgICAgIG5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5nQ29udHJvbD4oTmdDb250cm9sKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIE5vIEZvcm1Db250cm9sIG9yIG5nTW9kZWwgYmluZGluZyAqL1xuICAgIH1cblxuICAgIGlmICghbmdDb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzIGluIHZhbGlkaXR5LCBkaXNhYmxlZCwgb3IgcGVuZGluZyBzdGF0ZXNcbiAgICBpZiAobmdDb250cm9sLnN0YXR1c0NoYW5nZXMpIHtcbiAgICAgIHRoaXMuc3RhdHVzQ2hhbmdlcyA9IG5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiBzZXRJb25pY0NsYXNzZXModGhpcy5lbCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRPRE8gRlctMjc4NzogUmVtb3ZlIHRoaXMgaW4gZmF2b3Igb2YgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTA4ODdcbiAgICAgKiB3aGVuZXZlciBpdCBpcyBpbXBsZW1lbnRlZC5cbiAgICAgKi9cbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIGFueTtcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgIGNvbnN0IG1ldGhvZHNUb1BhdGNoID0gWydtYXJrQXNUb3VjaGVkJywgJ21hcmtBbGxBc1RvdWNoZWQnLCAnbWFya0FzVW50b3VjaGVkJywgJ21hcmtBc0RpcnR5JywgJ21hcmtBc1ByaXN0aW5lJ107XG4gICAgICBtZXRob2RzVG9QYXRjaC5mb3JFYWNoKChtZXRob2QpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmb3JtQ29udHJvbFttZXRob2RdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGNvbnN0IG9sZEZuID0gZm9ybUNvbnRyb2xbbWV0aG9kXS5iaW5kKGZvcm1Db250cm9sKTtcbiAgICAgICAgICBmb3JtQ29udHJvbFttZXRob2RdID0gKC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIG9sZEZuKC4uLnBhcmFtcyk7XG4gICAgICAgICAgICBzZXRJb25pY0NsYXNzZXModGhpcy5lbCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXRJb25pY0NsYXNzZXMgPSAoZWxlbWVudDogRWxlbWVudFJlZik6IHZvaWQgPT4ge1xuICByYWYoKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgaGFzVmFsdWUgPSBpbnB1dC52YWx1ZSAhPSBudWxsICYmIGlucHV0LnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID4gMDtcbiAgICBjb25zdCBjbGFzc2VzID0gZ2V0Q2xhc3NlcyhpbnB1dCk7XG4gICAgc2V0Q2xhc3NlcyhpbnB1dCwgY2xhc3Nlcyk7XG4gICAgY29uc3QgaXRlbSA9IGlucHV0LmNsb3Nlc3QoJ2lvbi1pdGVtJyk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGlmIChoYXNWYWx1ZSkge1xuICAgICAgICBzZXRDbGFzc2VzKGl0ZW0sIFsuLi5jbGFzc2VzLCAnaXRlbS1oYXMtdmFsdWUnXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRDbGFzc2VzKGl0ZW0sIGNsYXNzZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBnZXRDbGFzc2VzID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IGNsYXNzTGlzdCA9IGVsZW1lbnQuY2xhc3NMaXN0O1xuICBjb25zdCBjbGFzc2VzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2xhc3NMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgaXRlbSA9IGNsYXNzTGlzdC5pdGVtKGkpO1xuICAgIGlmIChpdGVtICE9PSBudWxsICYmIHN0YXJ0c1dpdGgoaXRlbSwgJ25nLScpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGlvbi0ke2l0ZW0uc3Vic3RyaW5nKDMpfWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2xhc3Nlcztcbn07XG5cbmNvbnN0IHNldENsYXNzZXMgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNsYXNzZXM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IGNsYXNzTGlzdCA9IGVsZW1lbnQuY2xhc3NMaXN0O1xuICBjbGFzc0xpc3QucmVtb3ZlKCdpb24tdmFsaWQnLCAnaW9uLWludmFsaWQnLCAnaW9uLXRvdWNoZWQnLCAnaW9uLXVudG91Y2hlZCcsICdpb24tZGlydHknLCAnaW9uLXByaXN0aW5lJyk7XG4gIGNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcyk7XG59O1xuXG5jb25zdCBzdGFydHNXaXRoID0gKGlucHV0OiBzdHJpbmcsIHNlYXJjaDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBpbnB1dC5zdWJzdHJpbmcoMCwgc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDtcbn07XG4iXX0=
@@ -1,42 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Directive } from '@angular/core';
3
- import { ProxyCmp, proxyOutputs } from '../angular-component-lib/utils';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../providers/angular-delegate";
6
- let NavDelegate = class NavDelegate {
7
- constructor(ref, environmentInjector, injector, angularDelegate) {
8
- this.el = ref.nativeElement;
9
- ref.nativeElement.delegate = angularDelegate.create(environmentInjector, injector);
10
- proxyOutputs(this, this.el, ['ionNavDidChange', 'ionNavWillChange']);
11
- }
12
- };
13
- /** @nocollapse */ NavDelegate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NavDelegate, deps: [{ token: i0.ElementRef }, { token: i0.EnvironmentInjector }, { token: i0.Injector }, { token: i1.AngularDelegate }], target: i0.ɵɵFactoryTarget.Directive });
14
- /** @nocollapse */ NavDelegate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: NavDelegate, selector: "ion-nav", ngImport: i0 });
15
- NavDelegate = __decorate([
16
- ProxyCmp({
17
- inputs: ['animated', 'animation', 'root', 'rootParams', 'swipeGesture'],
18
- methods: [
19
- 'push',
20
- 'insert',
21
- 'insertPages',
22
- 'pop',
23
- 'popTo',
24
- 'popToRoot',
25
- 'removeIndex',
26
- 'setRoot',
27
- 'setPages',
28
- 'getActive',
29
- 'getByIndex',
30
- 'canGoBack',
31
- 'getPrevious',
32
- ],
33
- })
34
- ], NavDelegate);
35
- export { NavDelegate };
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NavDelegate, decorators: [{
37
- type: Directive,
38
- args: [{
39
- selector: 'ion-nav',
40
- }]
41
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.EnvironmentInjector }, { type: i0.Injector }, { type: i1.AngularDelegate }]; } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWRlbGVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RpcmVjdGl2ZXMvbmF2aWdhdGlvbi9uYXYtZGVsZWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBd0IsU0FBUyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUdyRixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7SUF3QjNELFdBQVcsU0FBWCxXQUFXO0lBRXRCLFlBQ0UsR0FBZSxFQUNmLG1CQUF3QyxFQUN4QyxRQUFrQixFQUNsQixlQUFnQztRQUVoQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRixZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGLENBQUE7NEhBWlksV0FBVztnSEFBWCxXQUFXO0FBQVgsV0FBVztJQXRCdkIsUUFBUSxDQUFDO1FBQ1IsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQztRQUN2RSxPQUFPLEVBQUU7WUFDUCxNQUFNO1lBQ04sUUFBUTtZQUNSLGFBQWE7WUFDYixLQUFLO1lBQ0wsT0FBTztZQUNQLFdBQVc7WUFDWCxhQUFhO1lBQ2IsU0FBUztZQUNULFVBQVU7WUFDVixXQUFXO1lBQ1gsWUFBWTtZQUNaLFdBQVc7WUFDWCxhQUFhO1NBQ2Q7S0FDRixDQUFDO0dBS1csV0FBVyxDQVl2QjtTQVpZLFdBQVc7NEZBQVgsV0FBVztrQkFKdkIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsU0FBUztpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RvciwgRGlyZWN0aXZlLCBFbnZpcm9ubWVudEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFuZ3VsYXJEZWxlZ2F0ZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9hbmd1bGFyLWRlbGVnYXRlJztcbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuLi9hbmd1bGFyLWNvbXBvbmVudC1saWIvdXRpbHMnO1xuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0ZWQnLCAnYW5pbWF0aW9uJywgJ3Jvb3QnLCAncm9vdFBhcmFtcycsICdzd2lwZUdlc3R1cmUnXSxcbiAgbWV0aG9kczogW1xuICAgICdwdXNoJyxcbiAgICAnaW5zZXJ0JyxcbiAgICAnaW5zZXJ0UGFnZXMnLFxuICAgICdwb3AnLFxuICAgICdwb3BUbycsXG4gICAgJ3BvcFRvUm9vdCcsXG4gICAgJ3JlbW92ZUluZGV4JyxcbiAgICAnc2V0Um9vdCcsXG4gICAgJ3NldFBhZ2VzJyxcbiAgICAnZ2V0QWN0aXZlJyxcbiAgICAnZ2V0QnlJbmRleCcsXG4gICAgJ2NhbkdvQmFjaycsXG4gICAgJ2dldFByZXZpb3VzJyxcbiAgXSxcbn0pXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpb24tbmF2Jyxcbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBOYXZEZWxlZ2F0ZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlZjogRWxlbWVudFJlZixcbiAgICBlbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBhbmd1bGFyRGVsZWdhdGU6IEFuZ3VsYXJEZWxlZ2F0ZVxuICApIHtcbiAgICB0aGlzLmVsID0gcmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcmVmLm5hdGl2ZUVsZW1lbnQuZGVsZWdhdGUgPSBhbmd1bGFyRGVsZWdhdGUuY3JlYXRlKGVudmlyb25tZW50SW5qZWN0b3IsIGluamVjdG9yKTtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25OYXZEaWRDaGFuZ2UnLCAnaW9uTmF2V2lsbENoYW5nZSddKTtcbiAgfVxufVxuIl19