@ionic/react 8.8.1-dev.11772789669.186f42ce → 8.8.1-dev.11773168858.1f9c0eb8

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 (58) hide show
  1. package/css/core.css +1 -1
  2. package/css/core.css.map +1 -1
  3. package/css/display.css +1 -1
  4. package/css/display.css.map +1 -1
  5. package/css/flex-utils.css +1 -1
  6. package/css/flex-utils.css.map +1 -1
  7. package/css/float-elements.css.map +1 -1
  8. package/css/global.bundle.css.map +1 -1
  9. package/css/ionic-swiper.css +1 -1
  10. package/css/ionic-swiper.css.map +1 -1
  11. package/css/ionic.bundle.css +1 -1
  12. package/css/ionic.bundle.css.map +1 -1
  13. package/css/normalize.css.map +1 -1
  14. package/css/padding.css.map +1 -1
  15. package/css/palettes/dark.always.css.map +1 -1
  16. package/css/palettes/dark.class.css.map +1 -1
  17. package/css/palettes/dark.system.css.map +1 -1
  18. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  19. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  20. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  21. package/css/palettes/high-contrast.always.css.map +1 -1
  22. package/css/palettes/high-contrast.class.css.map +1 -1
  23. package/css/palettes/high-contrast.system.css.map +1 -1
  24. package/css/structure.css.map +1 -1
  25. package/css/text-alignment.css.map +1 -1
  26. package/css/text-transformation.css.map +1 -1
  27. package/css/typography.css.map +1 -1
  28. package/css/utils.bundle.css +1 -1
  29. package/css/utils.bundle.css.map +1 -1
  30. package/dist/index.js +210 -181
  31. package/dist/index.js.map +1 -1
  32. package/dist/types/components/IonRoute.d.ts +1 -2
  33. package/dist/types/components/IonRouterOutlet.d.ts +1 -0
  34. package/dist/types/components/index.d.ts +0 -1
  35. package/dist/types/components/proxies.d.ts +0 -1
  36. package/dist/types/contexts/NavContext.d.ts +0 -2
  37. package/dist/types/routing/NavManager.d.ts +0 -4
  38. package/dist/types/routing/OutletPageManager.d.ts +1 -0
  39. package/dist/types/routing/PageManager.d.ts +7 -0
  40. package/dist/types/routing/RouteManagerContext.d.ts +5 -0
  41. package/package.json +2 -2
  42. package/css/ionic/bundle.ionic.css +0 -1
  43. package/css/ionic/bundle.ionic.css.map +0 -1
  44. package/css/ionic/core.ionic.css +0 -1
  45. package/css/ionic/core.ionic.css.map +0 -1
  46. package/css/ionic/global.bundle.ionic.css +0 -1
  47. package/css/ionic/global.bundle.ionic.css.map +0 -1
  48. package/css/ionic/ionic-swiper.ionic.css +0 -1
  49. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  50. package/css/ionic/link.ionic.css +0 -1
  51. package/css/ionic/link.ionic.css.map +0 -1
  52. package/css/ionic/structure.ionic.css +0 -1
  53. package/css/ionic/structure.ionic.css.map +0 -1
  54. package/css/ionic/typography.ionic.css +0 -1
  55. package/css/ionic/typography.ionic.css.map +0 -1
  56. package/css/ionic/utils.bundle.ionic.css +0 -1
  57. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  58. package/dist/types/components/IonRedirect.d.ts +0 -16
package/dist/index.js CHANGED
@@ -20,62 +20,61 @@ import { defineCustomElement as defineCustomElement$e } from '@ionic/core/compon
20
20
  import { defineCustomElement as defineCustomElement$f } from '@ionic/core/components/ion-content.js';
21
21
  import { defineCustomElement as defineCustomElement$g } from '@ionic/core/components/ion-datetime.js';
22
22
  import { defineCustomElement as defineCustomElement$h } from '@ionic/core/components/ion-datetime-button.js';
23
- import { defineCustomElement as defineCustomElement$i } from '@ionic/core/components/ion-divider.js';
24
- import { defineCustomElement as defineCustomElement$j } from '@ionic/core/components/ion-fab.js';
25
- import { defineCustomElement as defineCustomElement$k } from '@ionic/core/components/ion-fab-list.js';
26
- import { defineCustomElement as defineCustomElement$l } from '@ionic/core/components/ion-footer.js';
27
- import { defineCustomElement as defineCustomElement$m } from '@ionic/core/components/ion-grid.js';
28
- import { defineCustomElement as defineCustomElement$n } from '@ionic/core/components/ion-header.js';
29
- import { defineCustomElement as defineCustomElement$o } from '@ionic/core/components/ion-img.js';
30
- import { defineCustomElement as defineCustomElement$p } from '@ionic/core/components/ion-infinite-scroll.js';
31
- import { defineCustomElement as defineCustomElement$q } from '@ionic/core/components/ion-infinite-scroll-content.js';
32
- import { defineCustomElement as defineCustomElement$r } from '@ionic/core/components/ion-input.js';
33
- import { defineCustomElement as defineCustomElement$s } from '@ionic/core/components/ion-input-otp.js';
34
- import { defineCustomElement as defineCustomElement$t } from '@ionic/core/components/ion-input-password-toggle.js';
35
- import { defineCustomElement as defineCustomElement$u } from '@ionic/core/components/ion-item-divider.js';
36
- import { defineCustomElement as defineCustomElement$v } from '@ionic/core/components/ion-item-group.js';
37
- import { defineCustomElement as defineCustomElement$w } from '@ionic/core/components/ion-item-options.js';
38
- import { defineCustomElement as defineCustomElement$x } from '@ionic/core/components/ion-item-sliding.js';
39
- import { defineCustomElement as defineCustomElement$y } from '@ionic/core/components/ion-label.js';
40
- import { defineCustomElement as defineCustomElement$z } from '@ionic/core/components/ion-list.js';
41
- import { defineCustomElement as defineCustomElement$A } from '@ionic/core/components/ion-list-header.js';
42
- import { defineCustomElement as defineCustomElement$B } from '@ionic/core/components/ion-menu.js';
43
- import { defineCustomElement as defineCustomElement$C } from '@ionic/core/components/ion-menu-button.js';
44
- import { defineCustomElement as defineCustomElement$D } from '@ionic/core/components/ion-menu-toggle.js';
45
- import { defineCustomElement as defineCustomElement$1n } from '@ionic/core/components/ion-nav.js';
46
- import { defineCustomElement as defineCustomElement$E } from '@ionic/core/components/ion-nav-link.js';
47
- import { defineCustomElement as defineCustomElement$F } from '@ionic/core/components/ion-note.js';
48
- import { defineCustomElement as defineCustomElement$G } from '@ionic/core/components/ion-picker.js';
49
- import { defineCustomElement as defineCustomElement$H } from '@ionic/core/components/ion-picker-column.js';
50
- import { defineCustomElement as defineCustomElement$I } from '@ionic/core/components/ion-picker-column-option.js';
51
- import { defineCustomElement as defineCustomElement$J } from '@ionic/core/components/ion-progress-bar.js';
52
- import { defineCustomElement as defineCustomElement$K } from '@ionic/core/components/ion-radio.js';
53
- import { defineCustomElement as defineCustomElement$L } from '@ionic/core/components/ion-radio-group.js';
54
- import { defineCustomElement as defineCustomElement$M } from '@ionic/core/components/ion-range.js';
55
- import { defineCustomElement as defineCustomElement$N } from '@ionic/core/components/ion-refresher.js';
56
- import { defineCustomElement as defineCustomElement$O } from '@ionic/core/components/ion-refresher-content.js';
57
- import { defineCustomElement as defineCustomElement$P } from '@ionic/core/components/ion-reorder.js';
58
- import { defineCustomElement as defineCustomElement$Q } from '@ionic/core/components/ion-reorder-group.js';
59
- import { defineCustomElement as defineCustomElement$R } from '@ionic/core/components/ion-ripple-effect.js';
60
- import { defineCustomElement as defineCustomElement$S } from '@ionic/core/components/ion-row.js';
61
- import { defineCustomElement as defineCustomElement$T } from '@ionic/core/components/ion-searchbar.js';
62
- import { defineCustomElement as defineCustomElement$U } from '@ionic/core/components/ion-segment.js';
63
- import { defineCustomElement as defineCustomElement$V } from '@ionic/core/components/ion-segment-button.js';
64
- import { defineCustomElement as defineCustomElement$W } from '@ionic/core/components/ion-segment-content.js';
65
- import { defineCustomElement as defineCustomElement$X } from '@ionic/core/components/ion-segment-view.js';
66
- import { defineCustomElement as defineCustomElement$Y } from '@ionic/core/components/ion-select.js';
67
- import { defineCustomElement as defineCustomElement$Z } from '@ionic/core/components/ion-select-modal.js';
68
- import { defineCustomElement as defineCustomElement$_ } from '@ionic/core/components/ion-select-option.js';
69
- import { defineCustomElement as defineCustomElement$$ } from '@ionic/core/components/ion-skeleton-text.js';
70
- import { defineCustomElement as defineCustomElement$10 } from '@ionic/core/components/ion-spinner.js';
71
- import { defineCustomElement as defineCustomElement$11 } from '@ionic/core/components/ion-split-pane.js';
72
- import { defineCustomElement as defineCustomElement$12 } from '@ionic/core/components/ion-tab.js';
73
- import { defineCustomElement as defineCustomElement$13 } from '@ionic/core/components/ion-text.js';
74
- import { defineCustomElement as defineCustomElement$14 } from '@ionic/core/components/ion-textarea.js';
75
- import { defineCustomElement as defineCustomElement$15 } from '@ionic/core/components/ion-thumbnail.js';
76
- import { defineCustomElement as defineCustomElement$16 } from '@ionic/core/components/ion-title.js';
77
- import { defineCustomElement as defineCustomElement$17 } from '@ionic/core/components/ion-toggle.js';
78
- import { defineCustomElement as defineCustomElement$18 } from '@ionic/core/components/ion-toolbar.js';
23
+ import { defineCustomElement as defineCustomElement$i } from '@ionic/core/components/ion-fab.js';
24
+ import { defineCustomElement as defineCustomElement$j } from '@ionic/core/components/ion-fab-list.js';
25
+ import { defineCustomElement as defineCustomElement$k } from '@ionic/core/components/ion-footer.js';
26
+ import { defineCustomElement as defineCustomElement$l } from '@ionic/core/components/ion-grid.js';
27
+ import { defineCustomElement as defineCustomElement$m } from '@ionic/core/components/ion-header.js';
28
+ import { defineCustomElement as defineCustomElement$n } from '@ionic/core/components/ion-img.js';
29
+ import { defineCustomElement as defineCustomElement$o } from '@ionic/core/components/ion-infinite-scroll.js';
30
+ import { defineCustomElement as defineCustomElement$p } from '@ionic/core/components/ion-infinite-scroll-content.js';
31
+ import { defineCustomElement as defineCustomElement$q } from '@ionic/core/components/ion-input.js';
32
+ import { defineCustomElement as defineCustomElement$r } from '@ionic/core/components/ion-input-otp.js';
33
+ import { defineCustomElement as defineCustomElement$s } from '@ionic/core/components/ion-input-password-toggle.js';
34
+ import { defineCustomElement as defineCustomElement$t } from '@ionic/core/components/ion-item-divider.js';
35
+ import { defineCustomElement as defineCustomElement$u } from '@ionic/core/components/ion-item-group.js';
36
+ import { defineCustomElement as defineCustomElement$v } from '@ionic/core/components/ion-item-options.js';
37
+ import { defineCustomElement as defineCustomElement$w } from '@ionic/core/components/ion-item-sliding.js';
38
+ import { defineCustomElement as defineCustomElement$x } from '@ionic/core/components/ion-label.js';
39
+ import { defineCustomElement as defineCustomElement$y } from '@ionic/core/components/ion-list.js';
40
+ import { defineCustomElement as defineCustomElement$z } from '@ionic/core/components/ion-list-header.js';
41
+ import { defineCustomElement as defineCustomElement$A } from '@ionic/core/components/ion-menu.js';
42
+ import { defineCustomElement as defineCustomElement$B } from '@ionic/core/components/ion-menu-button.js';
43
+ import { defineCustomElement as defineCustomElement$C } from '@ionic/core/components/ion-menu-toggle.js';
44
+ import { defineCustomElement as defineCustomElement$1m } from '@ionic/core/components/ion-nav.js';
45
+ import { defineCustomElement as defineCustomElement$D } from '@ionic/core/components/ion-nav-link.js';
46
+ import { defineCustomElement as defineCustomElement$E } from '@ionic/core/components/ion-note.js';
47
+ import { defineCustomElement as defineCustomElement$F } from '@ionic/core/components/ion-picker.js';
48
+ import { defineCustomElement as defineCustomElement$G } from '@ionic/core/components/ion-picker-column.js';
49
+ import { defineCustomElement as defineCustomElement$H } from '@ionic/core/components/ion-picker-column-option.js';
50
+ import { defineCustomElement as defineCustomElement$I } from '@ionic/core/components/ion-progress-bar.js';
51
+ import { defineCustomElement as defineCustomElement$J } from '@ionic/core/components/ion-radio.js';
52
+ import { defineCustomElement as defineCustomElement$K } from '@ionic/core/components/ion-radio-group.js';
53
+ import { defineCustomElement as defineCustomElement$L } from '@ionic/core/components/ion-range.js';
54
+ import { defineCustomElement as defineCustomElement$M } from '@ionic/core/components/ion-refresher.js';
55
+ import { defineCustomElement as defineCustomElement$N } from '@ionic/core/components/ion-refresher-content.js';
56
+ import { defineCustomElement as defineCustomElement$O } from '@ionic/core/components/ion-reorder.js';
57
+ import { defineCustomElement as defineCustomElement$P } from '@ionic/core/components/ion-reorder-group.js';
58
+ import { defineCustomElement as defineCustomElement$Q } from '@ionic/core/components/ion-ripple-effect.js';
59
+ import { defineCustomElement as defineCustomElement$R } from '@ionic/core/components/ion-row.js';
60
+ import { defineCustomElement as defineCustomElement$S } from '@ionic/core/components/ion-searchbar.js';
61
+ import { defineCustomElement as defineCustomElement$T } from '@ionic/core/components/ion-segment.js';
62
+ import { defineCustomElement as defineCustomElement$U } from '@ionic/core/components/ion-segment-button.js';
63
+ import { defineCustomElement as defineCustomElement$V } from '@ionic/core/components/ion-segment-content.js';
64
+ import { defineCustomElement as defineCustomElement$W } from '@ionic/core/components/ion-segment-view.js';
65
+ import { defineCustomElement as defineCustomElement$X } from '@ionic/core/components/ion-select.js';
66
+ import { defineCustomElement as defineCustomElement$Y } from '@ionic/core/components/ion-select-modal.js';
67
+ import { defineCustomElement as defineCustomElement$Z } from '@ionic/core/components/ion-select-option.js';
68
+ import { defineCustomElement as defineCustomElement$_ } from '@ionic/core/components/ion-skeleton-text.js';
69
+ import { defineCustomElement as defineCustomElement$$ } from '@ionic/core/components/ion-spinner.js';
70
+ import { defineCustomElement as defineCustomElement$10 } from '@ionic/core/components/ion-split-pane.js';
71
+ import { defineCustomElement as defineCustomElement$11 } from '@ionic/core/components/ion-tab.js';
72
+ import { defineCustomElement as defineCustomElement$12 } from '@ionic/core/components/ion-text.js';
73
+ import { defineCustomElement as defineCustomElement$13 } from '@ionic/core/components/ion-textarea.js';
74
+ import { defineCustomElement as defineCustomElement$14 } from '@ionic/core/components/ion-thumbnail.js';
75
+ import { defineCustomElement as defineCustomElement$15 } from '@ionic/core/components/ion-title.js';
76
+ import { defineCustomElement as defineCustomElement$16 } from '@ionic/core/components/ion-toggle.js';
77
+ import { defineCustomElement as defineCustomElement$17 } from '@ionic/core/components/ion-toolbar.js';
79
78
  import { IonBreadcrumb as IonBreadcrumb$1 } from '@ionic/core/components/ion-breadcrumb.js';
80
79
  import { IonButton as IonButton$1 } from '@ionic/core/components/ion-button.js';
81
80
  import { IonCard as IonCard$1 } from '@ionic/core/components/ion-card.js';
@@ -83,20 +82,20 @@ import { IonFabButton as IonFabButton$1 } from '@ionic/core/components/ion-fab-b
83
82
  import { IonItemOption as IonItemOption$1 } from '@ionic/core/components/ion-item-option.js';
84
83
  import { IonItem as IonItem$1 } from '@ionic/core/components/ion-item.js';
85
84
  import { IonRouterLink as IonRouterLink$1 } from '@ionic/core/components/ion-router-link.js';
86
- import { defineCustomElement as defineCustomElement$19 } from '@ionic/core/components/ion-alert.js';
87
- import { defineCustomElement as defineCustomElement$1a } from '@ionic/core/components/ion-loading.js';
88
- import { defineCustomElement as defineCustomElement$1b } from '@ionic/core/components/ion-toast.js';
89
- import { defineCustomElement as defineCustomElement$1c } from '@ionic/core/components/ion-picker-legacy.js';
90
- import { defineCustomElement as defineCustomElement$1d } from '@ionic/core/components/ion-action-sheet.js';
91
- import { defineCustomElement as defineCustomElement$1e } from '@ionic/core/components/ion-modal.js';
92
- import { defineCustomElement as defineCustomElement$1f } from '@ionic/core/components/ion-popover.js';
93
- import { defineCustomElement as defineCustomElement$1l } from '@ionic/core/components/ion-app.js';
94
- import { defineCustomElement as defineCustomElement$1j } from '@ionic/core/components/ion-back-button.js';
95
- import { defineCustomElement as defineCustomElement$1k } from '@ionic/core/components/ion-router-outlet.js';
96
- import { defineCustomElement as defineCustomElement$1h } from '@ionic/core/components/ion-tab-bar.js';
97
- import { defineCustomElement as defineCustomElement$1g } from '@ionic/core/components/ion-tab-button.js';
98
- import { defineCustomElement as defineCustomElement$1i } from '@ionic/core/components/ion-tabs.js';
99
- import { defineCustomElement as defineCustomElement$1m } from 'ionicons/components/ion-icon.js';
85
+ import { defineCustomElement as defineCustomElement$18 } from '@ionic/core/components/ion-alert.js';
86
+ import { defineCustomElement as defineCustomElement$19 } from '@ionic/core/components/ion-loading.js';
87
+ import { defineCustomElement as defineCustomElement$1a } from '@ionic/core/components/ion-toast.js';
88
+ import { defineCustomElement as defineCustomElement$1b } from '@ionic/core/components/ion-picker-legacy.js';
89
+ import { defineCustomElement as defineCustomElement$1c } from '@ionic/core/components/ion-action-sheet.js';
90
+ import { defineCustomElement as defineCustomElement$1d } from '@ionic/core/components/ion-modal.js';
91
+ import { defineCustomElement as defineCustomElement$1e } from '@ionic/core/components/ion-popover.js';
92
+ import { defineCustomElement as defineCustomElement$1k } from '@ionic/core/components/ion-app.js';
93
+ import { defineCustomElement as defineCustomElement$1i } from '@ionic/core/components/ion-back-button.js';
94
+ import { defineCustomElement as defineCustomElement$1j } from '@ionic/core/components/ion-router-outlet.js';
95
+ import { defineCustomElement as defineCustomElement$1g } from '@ionic/core/components/ion-tab-bar.js';
96
+ import { defineCustomElement as defineCustomElement$1f } from '@ionic/core/components/ion-tab-button.js';
97
+ import { defineCustomElement as defineCustomElement$1h } from '@ionic/core/components/ion-tabs.js';
98
+ import { defineCustomElement as defineCustomElement$1l } from 'ionicons/components/ion-icon.js';
100
99
 
101
100
  const IonLifeCycleContext = /*@__PURE__*/ React.createContext({
102
101
  onIonViewWillEnter: () => {
@@ -381,9 +380,7 @@ const useIonViewDidLeave = (callback, deps = []) => {
381
380
  };
382
381
 
383
382
  const NavContext = /*@__PURE__*/ React.createContext({
384
- getIonRedirect: () => undefined,
385
383
  getIonRoute: () => undefined,
386
- getPageManager: () => undefined,
387
384
  getStackManager: () => undefined,
388
385
  goBack: (route) => {
389
386
  if (typeof window !== 'undefined') {
@@ -644,61 +641,60 @@ const IonCol = /*@__PURE__*/ createReactComponent('ion-col', undefined, undefine
644
641
  const IonContent = /*@__PURE__*/ createReactComponent('ion-content', undefined, undefined, defineCustomElement$f);
645
642
  const IonDatetime = /*@__PURE__*/ createReactComponent('ion-datetime', undefined, undefined, defineCustomElement$g);
646
643
  const IonDatetimeButton = /*@__PURE__*/ createReactComponent('ion-datetime-button', undefined, undefined, defineCustomElement$h);
647
- const IonDivider = /*@__PURE__*/ createReactComponent('ion-divider', undefined, undefined, defineCustomElement$i);
648
- const IonFab = /*@__PURE__*/ createReactComponent('ion-fab', undefined, undefined, defineCustomElement$j);
649
- const IonFabList = /*@__PURE__*/ createReactComponent('ion-fab-list', undefined, undefined, defineCustomElement$k);
650
- const IonFooter = /*@__PURE__*/ createReactComponent('ion-footer', undefined, undefined, defineCustomElement$l);
651
- const IonGrid = /*@__PURE__*/ createReactComponent('ion-grid', undefined, undefined, defineCustomElement$m);
652
- const IonHeader = /*@__PURE__*/ createReactComponent('ion-header', undefined, undefined, defineCustomElement$n);
653
- const IonImg = /*@__PURE__*/ createReactComponent('ion-img', undefined, undefined, defineCustomElement$o);
654
- const IonInfiniteScroll = /*@__PURE__*/ createReactComponent('ion-infinite-scroll', undefined, undefined, defineCustomElement$p);
655
- const IonInfiniteScrollContent = /*@__PURE__*/ createReactComponent('ion-infinite-scroll-content', undefined, undefined, defineCustomElement$q);
656
- const IonInput = /*@__PURE__*/ createReactComponent('ion-input', undefined, undefined, defineCustomElement$r);
657
- const IonInputOtp = /*@__PURE__*/ createReactComponent('ion-input-otp', undefined, undefined, defineCustomElement$s);
658
- const IonInputPasswordToggle = /*@__PURE__*/ createReactComponent('ion-input-password-toggle', undefined, undefined, defineCustomElement$t);
659
- const IonItemDivider = /*@__PURE__*/ createReactComponent('ion-item-divider', undefined, undefined, defineCustomElement$u);
660
- const IonItemGroup = /*@__PURE__*/ createReactComponent('ion-item-group', undefined, undefined, defineCustomElement$v);
661
- const IonItemOptions = /*@__PURE__*/ createReactComponent('ion-item-options', undefined, undefined, defineCustomElement$w);
662
- const IonItemSliding = /*@__PURE__*/ createReactComponent('ion-item-sliding', undefined, undefined, defineCustomElement$x);
663
- const IonLabel = /*@__PURE__*/ createReactComponent('ion-label', undefined, undefined, defineCustomElement$y);
664
- const IonList = /*@__PURE__*/ createReactComponent('ion-list', undefined, undefined, defineCustomElement$z);
665
- const IonListHeader = /*@__PURE__*/ createReactComponent('ion-list-header', undefined, undefined, defineCustomElement$A);
666
- const IonMenu = /*@__PURE__*/ createReactComponent('ion-menu', undefined, undefined, defineCustomElement$B);
667
- const IonMenuButton = /*@__PURE__*/ createReactComponent('ion-menu-button', undefined, undefined, defineCustomElement$C);
668
- const IonMenuToggle = /*@__PURE__*/ createReactComponent('ion-menu-toggle', undefined, undefined, defineCustomElement$D);
669
- const IonNavLink = /*@__PURE__*/ createReactComponent('ion-nav-link', undefined, undefined, defineCustomElement$E);
670
- const IonNote = /*@__PURE__*/ createReactComponent('ion-note', undefined, undefined, defineCustomElement$F);
671
- const IonPicker = /*@__PURE__*/ createReactComponent('ion-picker', undefined, undefined, defineCustomElement$G);
672
- const IonPickerColumn = /*@__PURE__*/ createReactComponent('ion-picker-column', undefined, undefined, defineCustomElement$H);
673
- const IonPickerColumnOption = /*@__PURE__*/ createReactComponent('ion-picker-column-option', undefined, undefined, defineCustomElement$I);
674
- const IonProgressBar = /*@__PURE__*/ createReactComponent('ion-progress-bar', undefined, undefined, defineCustomElement$J);
675
- const IonRadio = /*@__PURE__*/ createReactComponent('ion-radio', undefined, undefined, defineCustomElement$K);
676
- const IonRadioGroup = /*@__PURE__*/ createReactComponent('ion-radio-group', undefined, undefined, defineCustomElement$L);
677
- const IonRange = /*@__PURE__*/ createReactComponent('ion-range', undefined, undefined, defineCustomElement$M);
678
- const IonRefresher = /*@__PURE__*/ createReactComponent('ion-refresher', undefined, undefined, defineCustomElement$N);
679
- const IonRefresherContent = /*@__PURE__*/ createReactComponent('ion-refresher-content', undefined, undefined, defineCustomElement$O);
680
- const IonReorder = /*@__PURE__*/ createReactComponent('ion-reorder', undefined, undefined, defineCustomElement$P);
681
- const IonReorderGroup = /*@__PURE__*/ createReactComponent('ion-reorder-group', undefined, undefined, defineCustomElement$Q);
682
- const IonRippleEffect = /*@__PURE__*/ createReactComponent('ion-ripple-effect', undefined, undefined, defineCustomElement$R);
683
- const IonRow = /*@__PURE__*/ createReactComponent('ion-row', undefined, undefined, defineCustomElement$S);
684
- const IonSearchbar = /*@__PURE__*/ createReactComponent('ion-searchbar', undefined, undefined, defineCustomElement$T);
685
- const IonSegment = /*@__PURE__*/ createReactComponent('ion-segment', undefined, undefined, defineCustomElement$U);
686
- const IonSegmentButton = /*@__PURE__*/ createReactComponent('ion-segment-button', undefined, undefined, defineCustomElement$V);
687
- const IonSegmentContent = /*@__PURE__*/ createReactComponent('ion-segment-content', undefined, undefined, defineCustomElement$W);
688
- const IonSegmentView = /*@__PURE__*/ createReactComponent('ion-segment-view', undefined, undefined, defineCustomElement$X);
689
- const IonSelect = /*@__PURE__*/ createReactComponent('ion-select', undefined, undefined, defineCustomElement$Y);
690
- const IonSelectModal = /*@__PURE__*/ createReactComponent('ion-select-modal', undefined, undefined, defineCustomElement$Z);
691
- const IonSelectOption = /*@__PURE__*/ createReactComponent('ion-select-option', undefined, undefined, defineCustomElement$_);
692
- const IonSkeletonText = /*@__PURE__*/ createReactComponent('ion-skeleton-text', undefined, undefined, defineCustomElement$$);
693
- const IonSpinner = /*@__PURE__*/ createReactComponent('ion-spinner', undefined, undefined, defineCustomElement$10);
694
- const IonSplitPane = /*@__PURE__*/ createReactComponent('ion-split-pane', undefined, undefined, defineCustomElement$11);
695
- const IonTab = /*@__PURE__*/ createReactComponent('ion-tab', undefined, undefined, defineCustomElement$12);
696
- const IonText = /*@__PURE__*/ createReactComponent('ion-text', undefined, undefined, defineCustomElement$13);
697
- const IonTextarea = /*@__PURE__*/ createReactComponent('ion-textarea', undefined, undefined, defineCustomElement$14);
698
- const IonThumbnail = /*@__PURE__*/ createReactComponent('ion-thumbnail', undefined, undefined, defineCustomElement$15);
699
- const IonTitle = /*@__PURE__*/ createReactComponent('ion-title', undefined, undefined, defineCustomElement$16);
700
- const IonToggle = /*@__PURE__*/ createReactComponent('ion-toggle', undefined, undefined, defineCustomElement$17);
701
- const IonToolbar = /*@__PURE__*/ createReactComponent('ion-toolbar', undefined, undefined, defineCustomElement$18);
644
+ const IonFab = /*@__PURE__*/ createReactComponent('ion-fab', undefined, undefined, defineCustomElement$i);
645
+ const IonFabList = /*@__PURE__*/ createReactComponent('ion-fab-list', undefined, undefined, defineCustomElement$j);
646
+ const IonFooter = /*@__PURE__*/ createReactComponent('ion-footer', undefined, undefined, defineCustomElement$k);
647
+ const IonGrid = /*@__PURE__*/ createReactComponent('ion-grid', undefined, undefined, defineCustomElement$l);
648
+ const IonHeader = /*@__PURE__*/ createReactComponent('ion-header', undefined, undefined, defineCustomElement$m);
649
+ const IonImg = /*@__PURE__*/ createReactComponent('ion-img', undefined, undefined, defineCustomElement$n);
650
+ const IonInfiniteScroll = /*@__PURE__*/ createReactComponent('ion-infinite-scroll', undefined, undefined, defineCustomElement$o);
651
+ const IonInfiniteScrollContent = /*@__PURE__*/ createReactComponent('ion-infinite-scroll-content', undefined, undefined, defineCustomElement$p);
652
+ const IonInput = /*@__PURE__*/ createReactComponent('ion-input', undefined, undefined, defineCustomElement$q);
653
+ const IonInputOtp = /*@__PURE__*/ createReactComponent('ion-input-otp', undefined, undefined, defineCustomElement$r);
654
+ const IonInputPasswordToggle = /*@__PURE__*/ createReactComponent('ion-input-password-toggle', undefined, undefined, defineCustomElement$s);
655
+ const IonItemDivider = /*@__PURE__*/ createReactComponent('ion-item-divider', undefined, undefined, defineCustomElement$t);
656
+ const IonItemGroup = /*@__PURE__*/ createReactComponent('ion-item-group', undefined, undefined, defineCustomElement$u);
657
+ const IonItemOptions = /*@__PURE__*/ createReactComponent('ion-item-options', undefined, undefined, defineCustomElement$v);
658
+ const IonItemSliding = /*@__PURE__*/ createReactComponent('ion-item-sliding', undefined, undefined, defineCustomElement$w);
659
+ const IonLabel = /*@__PURE__*/ createReactComponent('ion-label', undefined, undefined, defineCustomElement$x);
660
+ const IonList = /*@__PURE__*/ createReactComponent('ion-list', undefined, undefined, defineCustomElement$y);
661
+ const IonListHeader = /*@__PURE__*/ createReactComponent('ion-list-header', undefined, undefined, defineCustomElement$z);
662
+ const IonMenu = /*@__PURE__*/ createReactComponent('ion-menu', undefined, undefined, defineCustomElement$A);
663
+ const IonMenuButton = /*@__PURE__*/ createReactComponent('ion-menu-button', undefined, undefined, defineCustomElement$B);
664
+ const IonMenuToggle = /*@__PURE__*/ createReactComponent('ion-menu-toggle', undefined, undefined, defineCustomElement$C);
665
+ const IonNavLink = /*@__PURE__*/ createReactComponent('ion-nav-link', undefined, undefined, defineCustomElement$D);
666
+ const IonNote = /*@__PURE__*/ createReactComponent('ion-note', undefined, undefined, defineCustomElement$E);
667
+ const IonPicker = /*@__PURE__*/ createReactComponent('ion-picker', undefined, undefined, defineCustomElement$F);
668
+ const IonPickerColumn = /*@__PURE__*/ createReactComponent('ion-picker-column', undefined, undefined, defineCustomElement$G);
669
+ const IonPickerColumnOption = /*@__PURE__*/ createReactComponent('ion-picker-column-option', undefined, undefined, defineCustomElement$H);
670
+ const IonProgressBar = /*@__PURE__*/ createReactComponent('ion-progress-bar', undefined, undefined, defineCustomElement$I);
671
+ const IonRadio = /*@__PURE__*/ createReactComponent('ion-radio', undefined, undefined, defineCustomElement$J);
672
+ const IonRadioGroup = /*@__PURE__*/ createReactComponent('ion-radio-group', undefined, undefined, defineCustomElement$K);
673
+ const IonRange = /*@__PURE__*/ createReactComponent('ion-range', undefined, undefined, defineCustomElement$L);
674
+ const IonRefresher = /*@__PURE__*/ createReactComponent('ion-refresher', undefined, undefined, defineCustomElement$M);
675
+ const IonRefresherContent = /*@__PURE__*/ createReactComponent('ion-refresher-content', undefined, undefined, defineCustomElement$N);
676
+ const IonReorder = /*@__PURE__*/ createReactComponent('ion-reorder', undefined, undefined, defineCustomElement$O);
677
+ const IonReorderGroup = /*@__PURE__*/ createReactComponent('ion-reorder-group', undefined, undefined, defineCustomElement$P);
678
+ const IonRippleEffect = /*@__PURE__*/ createReactComponent('ion-ripple-effect', undefined, undefined, defineCustomElement$Q);
679
+ const IonRow = /*@__PURE__*/ createReactComponent('ion-row', undefined, undefined, defineCustomElement$R);
680
+ const IonSearchbar = /*@__PURE__*/ createReactComponent('ion-searchbar', undefined, undefined, defineCustomElement$S);
681
+ const IonSegment = /*@__PURE__*/ createReactComponent('ion-segment', undefined, undefined, defineCustomElement$T);
682
+ const IonSegmentButton = /*@__PURE__*/ createReactComponent('ion-segment-button', undefined, undefined, defineCustomElement$U);
683
+ const IonSegmentContent = /*@__PURE__*/ createReactComponent('ion-segment-content', undefined, undefined, defineCustomElement$V);
684
+ const IonSegmentView = /*@__PURE__*/ createReactComponent('ion-segment-view', undefined, undefined, defineCustomElement$W);
685
+ const IonSelect = /*@__PURE__*/ createReactComponent('ion-select', undefined, undefined, defineCustomElement$X);
686
+ const IonSelectModal = /*@__PURE__*/ createReactComponent('ion-select-modal', undefined, undefined, defineCustomElement$Y);
687
+ const IonSelectOption = /*@__PURE__*/ createReactComponent('ion-select-option', undefined, undefined, defineCustomElement$Z);
688
+ const IonSkeletonText = /*@__PURE__*/ createReactComponent('ion-skeleton-text', undefined, undefined, defineCustomElement$_);
689
+ const IonSpinner = /*@__PURE__*/ createReactComponent('ion-spinner', undefined, undefined, defineCustomElement$$);
690
+ const IonSplitPane = /*@__PURE__*/ createReactComponent('ion-split-pane', undefined, undefined, defineCustomElement$10);
691
+ const IonTab = /*@__PURE__*/ createReactComponent('ion-tab', undefined, undefined, defineCustomElement$11);
692
+ const IonText = /*@__PURE__*/ createReactComponent('ion-text', undefined, undefined, defineCustomElement$12);
693
+ const IonTextarea = /*@__PURE__*/ createReactComponent('ion-textarea', undefined, undefined, defineCustomElement$13);
694
+ const IonThumbnail = /*@__PURE__*/ createReactComponent('ion-thumbnail', undefined, undefined, defineCustomElement$14);
695
+ const IonTitle = /*@__PURE__*/ createReactComponent('ion-title', undefined, undefined, defineCustomElement$15);
696
+ const IonToggle = /*@__PURE__*/ createReactComponent('ion-toggle', undefined, undefined, defineCustomElement$16);
697
+ const IonToolbar = /*@__PURE__*/ createReactComponent('ion-toolbar', undefined, undefined, defineCustomElement$17);
702
698
 
703
699
  const createForwardRef = (ReactComponent, // TODO(FW-2959): type
704
700
  displayName) => {
@@ -990,19 +986,19 @@ const createInlineOverlayComponent = (tagName, defineCustomElement, hasDelegateH
990
986
  };
991
987
  const DELEGATE_HOST = 'ion-delegate-host';
992
988
 
993
- const IonAlert = /*@__PURE__*/ createInlineOverlayComponent('ion-alert', defineCustomElement$19);
989
+ const IonAlert = /*@__PURE__*/ createInlineOverlayComponent('ion-alert', defineCustomElement$18);
994
990
 
995
- const IonLoading = /*@__PURE__*/ createInlineOverlayComponent('ion-loading', defineCustomElement$1a);
991
+ const IonLoading = /*@__PURE__*/ createInlineOverlayComponent('ion-loading', defineCustomElement$19);
996
992
 
997
- const IonToast = /*@__PURE__*/ createInlineOverlayComponent('ion-toast', defineCustomElement$1b);
993
+ const IonToast = /*@__PURE__*/ createInlineOverlayComponent('ion-toast', defineCustomElement$1a);
998
994
 
999
- const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent('ion-picker-legacy', defineCustomElement$1c);
995
+ const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent('ion-picker-legacy', defineCustomElement$1b);
1000
996
 
1001
- const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent('ion-action-sheet', defineCustomElement$1d);
997
+ const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent('ion-action-sheet', defineCustomElement$1c);
1002
998
 
1003
- const IonModal = /*@__PURE__*/ createInlineOverlayComponent('ion-modal', defineCustomElement$1e, true);
999
+ const IonModal = /*@__PURE__*/ createInlineOverlayComponent('ion-modal', defineCustomElement$1d, true);
1004
1000
 
1005
- const IonPopover = /*@__PURE__*/ createInlineOverlayComponent('ion-popover', defineCustomElement$1f);
1001
+ const IonPopover = /*@__PURE__*/ createInlineOverlayComponent('ion-popover', defineCustomElement$1e);
1006
1002
 
1007
1003
  const IonContext = React.createContext({
1008
1004
  addOverlay: () => {
@@ -1094,14 +1090,14 @@ const IonOverlayManager = ({ onAddOverlay, onRemoveOverlay }) => {
1094
1090
  }) }));
1095
1091
  };
1096
1092
 
1097
- const IonTabButtonInner = /*@__PURE__*/ createReactComponent('ion-tab-button', undefined, undefined, defineCustomElement$1g);
1098
- const IonTabBarInner = /*@__PURE__*/ createReactComponent('ion-tab-bar', undefined, undefined, defineCustomElement$1h);
1099
- const IonTabsInner = /*@__PURE__*/ createReactComponent('ion-tabs', undefined, undefined, defineCustomElement$1i);
1100
- const IonBackButtonInner = /*@__PURE__*/ createReactComponent('ion-back-button', undefined, undefined, defineCustomElement$1j);
1101
- const IonRouterOutletInner = /*@__PURE__*/ createReactComponent('ion-router-outlet', undefined, undefined, defineCustomElement$1k);
1102
- const IonAppInner = /*@__PURE__*/ createReactComponent('ion-app', undefined, undefined, defineCustomElement$1l);
1093
+ const IonTabButtonInner = /*@__PURE__*/ createReactComponent('ion-tab-button', undefined, undefined, defineCustomElement$1f);
1094
+ const IonTabBarInner = /*@__PURE__*/ createReactComponent('ion-tab-bar', undefined, undefined, defineCustomElement$1g);
1095
+ const IonTabsInner = /*@__PURE__*/ createReactComponent('ion-tabs', undefined, undefined, defineCustomElement$1h);
1096
+ const IonBackButtonInner = /*@__PURE__*/ createReactComponent('ion-back-button', undefined, undefined, defineCustomElement$1i);
1097
+ const IonRouterOutletInner = /*@__PURE__*/ createReactComponent('ion-router-outlet', undefined, undefined, defineCustomElement$1j);
1098
+ const IonAppInner = /*@__PURE__*/ createReactComponent('ion-app', undefined, undefined, defineCustomElement$1k);
1103
1099
  // ionicons
1104
- const IonIconInner = /*@__PURE__*/ createReactComponent('ion-icon', undefined, undefined, defineCustomElement$1m);
1100
+ const IonIconInner = /*@__PURE__*/ createReactComponent('ion-icon', undefined, undefined, defineCustomElement$1l);
1105
1101
 
1106
1102
  class IonApp extends React.Component {
1107
1103
  constructor(props) {
@@ -1139,7 +1135,18 @@ class PageManager extends React.PureComponent {
1139
1135
  super(props);
1140
1136
  this.ionPageElementRef = React.createRef();
1141
1137
  // React refs must be stable (not created inline).
1142
- this.stableMergedRefs = mergeRefs(this.ionPageElementRef, this.props.forwardedRef);
1138
+ // Wrap merged refs to add ion-page-invisible synchronously when element is created
1139
+ const baseMergedRefs = mergeRefs(this.ionPageElementRef, this.props.forwardedRef);
1140
+ this.stableMergedRefs = (node) => {
1141
+ if (node && !node.classList.contains('ion-page-invisible') && !node.classList.contains('ion-page-hidden')) {
1142
+ // Add ion-page-invisible synchronously before first paint (if in an outlet)
1143
+ // This prevents the flash that occurs when componentDidMount runs after paint
1144
+ if (this.context?.isInOutlet?.()) {
1145
+ node.classList.add('ion-page-invisible');
1146
+ }
1147
+ }
1148
+ baseMergedRefs(node);
1149
+ };
1143
1150
  /**
1144
1151
  * This binds the scope of the following methods to the class scope.
1145
1152
  * The `.bind` method returns a new function, so we need to assign it
@@ -1151,11 +1158,38 @@ class PageManager extends React.PureComponent {
1151
1158
  this.ionViewWillLeaveHandler = this.ionViewWillLeaveHandler.bind(this);
1152
1159
  this.ionViewDidLeaveHandler = this.ionViewDidLeaveHandler.bind(this);
1153
1160
  }
1161
+ parseClasses(className) {
1162
+ if (!className)
1163
+ return new Set();
1164
+ return new Set(className.split(/\s+/).filter(Boolean));
1165
+ }
1166
+ /**
1167
+ * Updates classList by diffing old/new className props.
1168
+ * Preserves framework-added classes (can-go-back, ion-page-invisible, etc.).
1169
+ */
1170
+ updateUserClasses(oldClassName, newClassName) {
1171
+ if (!this.ionPageElementRef.current)
1172
+ return;
1173
+ const oldClasses = this.parseClasses(oldClassName);
1174
+ const newClasses = this.parseClasses(newClassName);
1175
+ oldClasses.forEach((cls) => {
1176
+ if (!newClasses.has(cls)) {
1177
+ this.ionPageElementRef.current.classList.remove(cls);
1178
+ }
1179
+ });
1180
+ newClasses.forEach((cls) => {
1181
+ if (!oldClasses.has(cls)) {
1182
+ this.ionPageElementRef.current.classList.add(cls);
1183
+ }
1184
+ });
1185
+ }
1154
1186
  componentDidMount() {
1155
1187
  if (this.ionPageElementRef.current) {
1156
- if (this.context.isInOutlet()) {
1157
- this.ionPageElementRef.current.classList.add('ion-page-invisible');
1158
- }
1188
+ // Add user classes via DOM manipulation to preserve framework-added classes.
1189
+ // We only set "ion-page" in JSX; user classes are added here.
1190
+ // Note: ion-page-invisible is added in the ref callback (stableMergedRefs) to prevent flash.
1191
+ // The ref callback runs synchronously when the element is created, before the browser paints.
1192
+ this.updateUserClasses(undefined, this.props.className);
1159
1193
  this.context.registerIonPage(this.ionPageElementRef.current, this.props.routeInfo);
1160
1194
  this.ionPageElementRef.current.addEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);
1161
1195
  this.ionPageElementRef.current.addEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);
@@ -1163,6 +1197,11 @@ class PageManager extends React.PureComponent {
1163
1197
  this.ionPageElementRef.current.addEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);
1164
1198
  }
1165
1199
  }
1200
+ componentDidUpdate(prevProps) {
1201
+ if (prevProps.className !== this.props.className) {
1202
+ this.updateUserClasses(prevProps.className, this.props.className);
1203
+ }
1204
+ }
1166
1205
  componentWillUnmount() {
1167
1206
  if (this.ionPageElementRef.current) {
1168
1207
  this.ionPageElementRef.current.removeEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);
@@ -1192,9 +1231,11 @@ class PageManager extends React.PureComponent {
1192
1231
  render() {
1193
1232
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1194
1233
  const { className, children, routeInfo, forwardedRef, ...props } = this.props;
1234
+ // Only set "ion-page" in JSX. User classes are managed via DOM in componentDidMount/componentDidUpdate
1235
+ // to preserve framework-added classes (can-go-back, ion-page-invisible, etc.) when className prop changes.
1195
1236
  return (jsx(IonLifeCycleContext.Consumer, { children: (context) => {
1196
1237
  this.ionLifeCycleContext = context;
1197
- return (jsx("div", { className: className ? `${className} ion-page` : `ion-page`, ref: this.stableMergedRefs, ...props, children: children }));
1238
+ return (jsx("div", { className: "ion-page", ref: this.stableMergedRefs, ...props, children: children }));
1198
1239
  } }));
1199
1240
  }
1200
1241
  static get contextType() {
@@ -1254,7 +1295,7 @@ const ReactDelegate = (addView, removeView) => {
1254
1295
  };
1255
1296
  };
1256
1297
 
1257
- const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$1n);
1298
+ const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$1m);
1258
1299
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1259
1300
  const IonNavInternal = ({ children, forwardedRef, ...restOfProps }) => {
1260
1301
  const [views, setViews] = useState([]);
@@ -1333,10 +1374,10 @@ class OutletPageManager extends React.Component {
1333
1374
  this.ionLifeCycleContext.ionViewDidLeave();
1334
1375
  }
1335
1376
  render() {
1336
- const { StackManager, children, routeInfo, ...props } = this.props;
1377
+ const { StackManager, children, routeInfo, id, ...props } = this.props;
1337
1378
  return (jsx(IonLifeCycleContext.Consumer, { children: (context) => {
1338
1379
  this.ionLifeCycleContext = context;
1339
- return (jsx(StackManager, { routeInfo: routeInfo, children: jsx(IonRouterOutletInner, { setRef: (val) => (this.ionRouterOutlet = val), ...props, children: children }) }));
1380
+ return (jsx(StackManager, { id: id, routeInfo: routeInfo, children: jsx(IonRouterOutletInner, { id: id, setRef: (val) => (this.ionRouterOutlet = val), ...props, children: children }) }));
1340
1381
  } }));
1341
1382
  }
1342
1383
  static get contextType() {
@@ -1347,11 +1388,13 @@ class OutletPageManager extends React.Component {
1347
1388
  class IonRouterOutletContainer extends React.Component {
1348
1389
  constructor(props) {
1349
1390
  super(props);
1391
+ this.outletId = props.id ?? `routerOutlet-${generateId('routerOutlet')}`;
1350
1392
  }
1351
1393
  render() {
1352
1394
  const StackManager = this.context.getStackManager();
1353
1395
  const { children, forwardedRef, ...props } = this.props;
1354
- return this.context.hasIonicRouter() ? (props.ionPage ? (jsx(OutletPageManager, { StackManager: StackManager, routeInfo: this.context.routeInfo, ...props, children: children })) : (jsx(StackManager, { routeInfo: this.context.routeInfo, children: jsx(IonRouterOutletInner, { ...props, forwardedRef: forwardedRef, children: children }) }))) : (jsx(IonRouterOutletInner, { ref: forwardedRef, ...this.props, children: this.props.children }));
1396
+ const outletId = props.id ?? this.outletId;
1397
+ return this.context.hasIonicRouter() ? (props.ionPage ? (jsx(OutletPageManager, { StackManager: StackManager, routeInfo: this.context.routeInfo, ...props, children: children })) : (jsx(StackManager, { routeInfo: this.context.routeInfo, id: outletId, children: jsx(IonRouterOutletInner, { ...props, id: outletId, forwardedRef: forwardedRef, children: children }) }))) : (jsx(IonRouterOutletInner, { ref: forwardedRef, ...this.props, children: this.props.children }));
1355
1398
  }
1356
1399
  static get contextType() {
1357
1400
  return NavContext;
@@ -1832,20 +1875,6 @@ class IonRoute extends React.PureComponent {
1832
1875
  }
1833
1876
  }
1834
1877
 
1835
- class IonRedirect extends React.PureComponent {
1836
- render() {
1837
- const IonRedirectInner = this.context.getIonRedirect();
1838
- if (!this.context.hasIonicRouter() || !IonRedirect) {
1839
- console.error('You either do not have an Ionic Router package, or your router does not support using <IonRedirect>');
1840
- return null;
1841
- }
1842
- return jsx(IonRedirectInner, { ...this.props });
1843
- }
1844
- static get contextType() {
1845
- return NavContext;
1846
- }
1847
- }
1848
-
1849
1878
  const IonRouterContext = React.createContext({
1850
1879
  routeInfo: undefined, // TODO(FW-2959): type
1851
1880
  push: () => {
@@ -2026,7 +2055,7 @@ function useController(displayName, controller, defineCustomElement) {
2026
2055
  * @returns Returns the present and dismiss methods in an array
2027
2056
  */
2028
2057
  function useIonActionSheet() {
2029
- const controller = useController('IonActionSheet', actionSheetController, defineCustomElement$1d);
2058
+ const controller = useController('IonActionSheet', actionSheetController, defineCustomElement$1c);
2030
2059
  const present = useCallback((buttonsOrOptions, header) => {
2031
2060
  if (Array.isArray(buttonsOrOptions)) {
2032
2061
  return controller.present({
@@ -2046,7 +2075,7 @@ function useIonActionSheet() {
2046
2075
  * @returns Returns the present and dismiss methods in an array
2047
2076
  */
2048
2077
  function useIonAlert() {
2049
- const controller = useController('IonAlert', alertController, defineCustomElement$19);
2078
+ const controller = useController('IonAlert', alertController, defineCustomElement$18);
2050
2079
  const present = useCallback((messageOrOptions, buttons) => {
2051
2080
  if (typeof messageOrOptions === 'string') {
2052
2081
  return controller.present({
@@ -2066,7 +2095,7 @@ function useIonAlert() {
2066
2095
  * @returns Returns the present and dismiss methods in an array
2067
2096
  */
2068
2097
  function useIonToast() {
2069
- const controller = useController('IonToast', toastController, defineCustomElement$1b);
2098
+ const controller = useController('IonToast', toastController, defineCustomElement$1a);
2070
2099
  const present = useCallback((messageOrOptions, duration) => {
2071
2100
  if (typeof messageOrOptions === 'string') {
2072
2101
  return controller.present({
@@ -2152,7 +2181,7 @@ function useOverlay(displayName, controller, defineCustomElement, component, com
2152
2181
  * @returns Returns the present and dismiss methods in an array
2153
2182
  */
2154
2183
  function useIonModal(component, componentProps) {
2155
- const controller = useOverlay('IonModal', modalController, defineCustomElement$1e, component, componentProps);
2184
+ const controller = useOverlay('IonModal', modalController, defineCustomElement$1d, component, componentProps);
2156
2185
  const present = useCallback((options = {}) => {
2157
2186
  controller.present(options);
2158
2187
  }, [controller.present]);
@@ -2167,7 +2196,7 @@ function useIonModal(component, componentProps) {
2167
2196
  * @returns Returns the present and dismiss methods in an array
2168
2197
  */
2169
2198
  function useIonPopover(component, componentProps) {
2170
- const controller = useOverlay('IonPopover', popoverController, defineCustomElement$1f, component, componentProps);
2199
+ const controller = useOverlay('IonPopover', popoverController, defineCustomElement$1e, component, componentProps);
2171
2200
  const present = useCallback((options = {}) => {
2172
2201
  controller.present(options);
2173
2202
  }, [controller.present]);
@@ -2180,7 +2209,7 @@ function useIonPopover(component, componentProps) {
2180
2209
  * @deprecated Use the inline ion-picker component instead.
2181
2210
  */
2182
2211
  function useIonPicker() {
2183
- const controller = useController('IonPicker', pickerController, defineCustomElement$1c);
2212
+ const controller = useController('IonPicker', pickerController, defineCustomElement$1b);
2184
2213
  const present = useCallback((columnsOrOptions, buttons) => {
2185
2214
  if (Array.isArray(columnsOrOptions)) {
2186
2215
  return controller.present({
@@ -2200,7 +2229,7 @@ function useIonPicker() {
2200
2229
  * @returns Returns the present and dismiss methods in an array
2201
2230
  */
2202
2231
  function useIonLoading() {
2203
- const controller = useController('IonLoading', loadingController, defineCustomElement$1a);
2232
+ const controller = useController('IonLoading', loadingController, defineCustomElement$19);
2204
2233
  const present = useCallback((messageOrOptions = {}, duration, spinner) => {
2205
2234
  if (typeof messageOrOptions === 'string') {
2206
2235
  return controller.present({
@@ -2242,6 +2271,7 @@ const RouteManagerContext = /*@__PURE__*/ React.createContext({
2242
2271
  findLeavingViewItemByRouteInfo: () => undefined,
2243
2272
  findViewItemByRouteInfo: () => undefined,
2244
2273
  getChildrenToRender: () => undefined,
2274
+ getViewItemsForOutlet: () => [],
2245
2275
  goBack: () => undefined,
2246
2276
  unMountViewItem: () => undefined,
2247
2277
  });
@@ -2360,7 +2390,14 @@ class LocationHistory {
2360
2390
  _replace(routeInfo) {
2361
2391
  const routeInfos = this._getRouteInfosByKey(routeInfo.tab);
2362
2392
  routeInfos && routeInfos.pop();
2363
- this.locationHistory.pop();
2393
+ // Get the current route that's being replaced
2394
+ const currentRoute = this.locationHistory[this.locationHistory.length - 1];
2395
+ // Only pop from global history if we're replacing in the same outlet context.
2396
+ // Don't pop if we're entering a nested outlet (current route has no tab, new route has a tab)
2397
+ const isEnteringNestedOutlet = currentRoute && !currentRoute.tab && !!routeInfo.tab;
2398
+ if (!isEnteringNestedOutlet) {
2399
+ this.locationHistory.pop();
2400
+ }
2364
2401
  this._add(routeInfo);
2365
2402
  }
2366
2403
  _clear() {
@@ -2443,10 +2480,8 @@ class NavManager extends React.PureComponent {
2443
2480
  goBack: this.goBack.bind(this),
2444
2481
  hasIonicRouter: () => true,
2445
2482
  navigate: this.navigate.bind(this),
2446
- getIonRedirect: this.getIonRedirect.bind(this),
2447
2483
  getIonRoute: this.getIonRoute.bind(this),
2448
2484
  getStackManager: this.getStackManager.bind(this),
2449
- getPageManager: this.getPageManager.bind(this),
2450
2485
  routeInfo: this.props.routeInfo,
2451
2486
  setCurrentTab: this.props.onSetCurrentTab,
2452
2487
  changeTab: this.props.onChangeTab,
@@ -2479,12 +2514,6 @@ class NavManager extends React.PureComponent {
2479
2514
  navigate(path, direction = 'forward', action = 'push', animationBuilder, options, tab) {
2480
2515
  this.props.onNavigate(path, action, direction, animationBuilder, options, tab);
2481
2516
  }
2482
- getPageManager() {
2483
- return PageManager;
2484
- }
2485
- getIonRedirect() {
2486
- return this.props.ionRedirect;
2487
- }
2488
2517
  getIonRoute() {
2489
2518
  return this.props.ionRoute;
2490
2519
  }
@@ -2546,5 +2575,5 @@ class ViewStacks {
2546
2575
  }
2547
2576
  }
2548
2577
 
2549
- export { CreateAnimation, DefaultIonLifeCycleContext, IonAccordion, IonAccordionGroup, IonActionSheet, IonAlert, IonApp, IonAvatar, IonBackButton, IonBackdrop, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonCheckbox, IonChip, IonCol, IonContent, IonDatetime, IonDatetimeButton, IonDivider, IonFab, IonFabButton, IonFabList, IonFooter, IonGrid, IonHeader, IonIcon, IonImg, IonInfiniteScroll, IonInfiniteScrollContent, IonInput, IonInputOtp, IonInputPasswordToggle, IonItem, IonItemDivider, IonItemGroup, IonItemOption, IonItemOptions, IonItemSliding, IonLabel, IonLifeCycleContext, IonList, IonListHeader, IonLoading, IonMenu, IonMenuButton, IonMenuToggle, IonModal, IonNav, IonNavLink, IonNote, IonPage, IonPicker, IonPickerColumn, IonPickerColumnOption, IonPickerLegacy, IonPopover, IonProgressBar, IonRadio, IonRadioGroup, IonRange, IonRedirect, IonRefresher, IonRefresherContent, IonReorder, IonReorderGroup, IonRippleEffect, IonRoute, IonRouterContext, IonRouterLink, IonRouterOutlet, IonRow, IonSearchbar, IonSegment, IonSegmentButton, IonSegmentContent, IonSegmentView, IonSelect, IonSelectModal, IonSelectOption, IonSkeletonText, IonSpinner, IonSplitPane, IonTab, IonTabBar, IonTabButton, IonTabs, IonTabsContext, IonText, IonTextarea, IonThumbnail, IonTitle, IonToast, IonToggle, IonToolbar, LocationHistory, NavContext, NavManager, RouteManagerContext, StackContext, ViewLifeCycleManager, ViewStacks, generateId, getConfig, getPlatforms, isPlatform, setupIonicReact, useIonActionSheet, useIonAlert, useIonLoading, useIonModal, useIonPicker, useIonPopover, useIonRouter, useIonToast, useIonViewDidEnter, useIonViewDidLeave, useIonViewWillEnter, useIonViewWillLeave, withIonLifeCycle };
2578
+ export { CreateAnimation, DefaultIonLifeCycleContext, IonAccordion, IonAccordionGroup, IonActionSheet, IonAlert, IonApp, IonAvatar, IonBackButton, IonBackdrop, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonCheckbox, IonChip, IonCol, IonContent, IonDatetime, IonDatetimeButton, IonFab, IonFabButton, IonFabList, IonFooter, IonGrid, IonHeader, IonIcon, IonImg, IonInfiniteScroll, IonInfiniteScrollContent, IonInput, IonInputOtp, IonInputPasswordToggle, IonItem, IonItemDivider, IonItemGroup, IonItemOption, IonItemOptions, IonItemSliding, IonLabel, IonLifeCycleContext, IonList, IonListHeader, IonLoading, IonMenu, IonMenuButton, IonMenuToggle, IonModal, IonNav, IonNavLink, IonNote, IonPage, IonPicker, IonPickerColumn, IonPickerColumnOption, IonPickerLegacy, IonPopover, IonProgressBar, IonRadio, IonRadioGroup, IonRange, IonRefresher, IonRefresherContent, IonReorder, IonReorderGroup, IonRippleEffect, IonRoute, IonRouterContext, IonRouterLink, IonRouterOutlet, IonRow, IonSearchbar, IonSegment, IonSegmentButton, IonSegmentContent, IonSegmentView, IonSelect, IonSelectModal, IonSelectOption, IonSkeletonText, IonSpinner, IonSplitPane, IonTab, IonTabBar, IonTabButton, IonTabs, IonTabsContext, IonText, IonTextarea, IonThumbnail, IonTitle, IonToast, IonToggle, IonToolbar, LocationHistory, NavContext, NavManager, RouteManagerContext, StackContext, ViewLifeCycleManager, ViewStacks, generateId, getConfig, getPlatforms, isPlatform, setupIonicReact, useIonActionSheet, useIonAlert, useIonLoading, useIonModal, useIonPicker, useIonPopover, useIonRouter, useIonToast, useIonViewDidEnter, useIonViewDidLeave, useIonViewWillEnter, useIonViewWillLeave, withIonLifeCycle };
2550
2579
  //# sourceMappingURL=index.js.map