@ionic/react 8.8.1-dev.11773676615.1d6c4cf7 → 8.8.1-dev.11773929121.1aabdf46

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 (60) 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/bundle.ionic.css +1 -0
  10. package/css/ionic/bundle.ionic.css.map +1 -0
  11. package/css/ionic/core.ionic.css +1 -0
  12. package/css/ionic/core.ionic.css.map +1 -0
  13. package/css/ionic/global.bundle.ionic.css +1 -0
  14. package/css/ionic/global.bundle.ionic.css.map +1 -0
  15. package/css/ionic/ionic-swiper.ionic.css +1 -0
  16. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  17. package/css/ionic/link.ionic.css +1 -0
  18. package/css/ionic/link.ionic.css.map +1 -0
  19. package/css/ionic/structure.ionic.css +1 -0
  20. package/css/ionic/structure.ionic.css.map +1 -0
  21. package/css/ionic/typography.ionic.css +1 -0
  22. package/css/ionic/typography.ionic.css.map +1 -0
  23. package/css/ionic/utils.bundle.ionic.css +1 -0
  24. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  25. package/css/ionic-swiper.css +1 -1
  26. package/css/ionic-swiper.css.map +1 -1
  27. package/css/ionic.bundle.css +1 -1
  28. package/css/ionic.bundle.css.map +1 -1
  29. package/css/normalize.css.map +1 -1
  30. package/css/padding.css.map +1 -1
  31. package/css/palettes/dark.always.css.map +1 -1
  32. package/css/palettes/dark.class.css.map +1 -1
  33. package/css/palettes/dark.system.css.map +1 -1
  34. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  35. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  36. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  37. package/css/palettes/high-contrast.always.css.map +1 -1
  38. package/css/palettes/high-contrast.class.css.map +1 -1
  39. package/css/palettes/high-contrast.system.css.map +1 -1
  40. package/css/structure.css.map +1 -1
  41. package/css/text-alignment.css.map +1 -1
  42. package/css/text-transformation.css.map +1 -1
  43. package/css/typography.css.map +1 -1
  44. package/css/utils.bundle.css +1 -1
  45. package/css/utils.bundle.css.map +1 -1
  46. package/dist/index.js +181 -221
  47. package/dist/index.js.map +1 -1
  48. package/dist/types/components/IonRedirect.d.ts +16 -0
  49. package/dist/types/components/IonRoute.d.ts +2 -3
  50. package/dist/types/components/IonRouterOutlet.d.ts +0 -1
  51. package/dist/types/components/index.d.ts +1 -0
  52. package/dist/types/components/proxies.d.ts +1 -0
  53. package/dist/types/contexts/NavContext.d.ts +2 -0
  54. package/dist/types/routing/LocationHistory.d.ts +0 -1
  55. package/dist/types/routing/NavManager.d.ts +4 -0
  56. package/dist/types/routing/OutletPageManager.d.ts +0 -1
  57. package/dist/types/routing/PageManager.d.ts +0 -7
  58. package/dist/types/routing/RouteManagerContext.d.ts +1 -6
  59. package/dist/types/routing/ViewStacks.d.ts +1 -1
  60. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -20,61 +20,62 @@ 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-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';
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';
78
79
  import { IonBreadcrumb as IonBreadcrumb$1 } from '@ionic/core/components/ion-breadcrumb.js';
79
80
  import { IonButton as IonButton$1 } from '@ionic/core/components/ion-button.js';
80
81
  import { IonCard as IonCard$1 } from '@ionic/core/components/ion-card.js';
@@ -82,20 +83,20 @@ import { IonFabButton as IonFabButton$1 } from '@ionic/core/components/ion-fab-b
82
83
  import { IonItemOption as IonItemOption$1 } from '@ionic/core/components/ion-item-option.js';
83
84
  import { IonItem as IonItem$1 } from '@ionic/core/components/ion-item.js';
84
85
  import { IonRouterLink as IonRouterLink$1 } from '@ionic/core/components/ion-router-link.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';
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';
99
100
 
100
101
  const IonLifeCycleContext = /*@__PURE__*/ React.createContext({
101
102
  onIonViewWillEnter: () => {
@@ -380,7 +381,9 @@ const useIonViewDidLeave = (callback, deps = []) => {
380
381
  };
381
382
 
382
383
  const NavContext = /*@__PURE__*/ React.createContext({
384
+ getIonRedirect: () => undefined,
383
385
  getIonRoute: () => undefined,
386
+ getPageManager: () => undefined,
384
387
  getStackManager: () => undefined,
385
388
  goBack: (route) => {
386
389
  if (typeof window !== 'undefined') {
@@ -641,60 +644,61 @@ const IonCol = /*@__PURE__*/ createReactComponent('ion-col', undefined, undefine
641
644
  const IonContent = /*@__PURE__*/ createReactComponent('ion-content', undefined, undefined, defineCustomElement$f);
642
645
  const IonDatetime = /*@__PURE__*/ createReactComponent('ion-datetime', undefined, undefined, defineCustomElement$g);
643
646
  const IonDatetimeButton = /*@__PURE__*/ createReactComponent('ion-datetime-button', undefined, undefined, defineCustomElement$h);
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);
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);
698
702
 
699
703
  const createForwardRef = (ReactComponent, // TODO(FW-2959): type
700
704
  displayName) => {
@@ -986,19 +990,19 @@ const createInlineOverlayComponent = (tagName, defineCustomElement, hasDelegateH
986
990
  };
987
991
  const DELEGATE_HOST = 'ion-delegate-host';
988
992
 
989
- const IonAlert = /*@__PURE__*/ createInlineOverlayComponent('ion-alert', defineCustomElement$18);
993
+ const IonAlert = /*@__PURE__*/ createInlineOverlayComponent('ion-alert', defineCustomElement$19);
990
994
 
991
- const IonLoading = /*@__PURE__*/ createInlineOverlayComponent('ion-loading', defineCustomElement$19);
995
+ const IonLoading = /*@__PURE__*/ createInlineOverlayComponent('ion-loading', defineCustomElement$1a);
992
996
 
993
- const IonToast = /*@__PURE__*/ createInlineOverlayComponent('ion-toast', defineCustomElement$1a);
997
+ const IonToast = /*@__PURE__*/ createInlineOverlayComponent('ion-toast', defineCustomElement$1b);
994
998
 
995
- const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent('ion-picker-legacy', defineCustomElement$1b);
999
+ const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent('ion-picker-legacy', defineCustomElement$1c);
996
1000
 
997
- const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent('ion-action-sheet', defineCustomElement$1c);
1001
+ const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent('ion-action-sheet', defineCustomElement$1d);
998
1002
 
999
- const IonModal = /*@__PURE__*/ createInlineOverlayComponent('ion-modal', defineCustomElement$1d, true);
1003
+ const IonModal = /*@__PURE__*/ createInlineOverlayComponent('ion-modal', defineCustomElement$1e, true);
1000
1004
 
1001
- const IonPopover = /*@__PURE__*/ createInlineOverlayComponent('ion-popover', defineCustomElement$1e);
1005
+ const IonPopover = /*@__PURE__*/ createInlineOverlayComponent('ion-popover', defineCustomElement$1f);
1002
1006
 
1003
1007
  const IonContext = React.createContext({
1004
1008
  addOverlay: () => {
@@ -1090,14 +1094,14 @@ const IonOverlayManager = ({ onAddOverlay, onRemoveOverlay }) => {
1090
1094
  }) }));
1091
1095
  };
1092
1096
 
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);
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);
1099
1103
  // ionicons
1100
- const IonIconInner = /*@__PURE__*/ createReactComponent('ion-icon', undefined, undefined, defineCustomElement$1l);
1104
+ const IonIconInner = /*@__PURE__*/ createReactComponent('ion-icon', undefined, undefined, defineCustomElement$1m);
1101
1105
 
1102
1106
  class IonApp extends React.Component {
1103
1107
  constructor(props) {
@@ -1135,18 +1139,7 @@ class PageManager extends React.PureComponent {
1135
1139
  super(props);
1136
1140
  this.ionPageElementRef = React.createRef();
1137
1141
  // React refs must be stable (not created inline).
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
- };
1142
+ this.stableMergedRefs = mergeRefs(this.ionPageElementRef, this.props.forwardedRef);
1150
1143
  /**
1151
1144
  * This binds the scope of the following methods to the class scope.
1152
1145
  * The `.bind` method returns a new function, so we need to assign it
@@ -1158,38 +1151,11 @@ class PageManager extends React.PureComponent {
1158
1151
  this.ionViewWillLeaveHandler = this.ionViewWillLeaveHandler.bind(this);
1159
1152
  this.ionViewDidLeaveHandler = this.ionViewDidLeaveHandler.bind(this);
1160
1153
  }
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
- }
1186
1154
  componentDidMount() {
1187
1155
  if (this.ionPageElementRef.current) {
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);
1156
+ if (this.context.isInOutlet()) {
1157
+ this.ionPageElementRef.current.classList.add('ion-page-invisible');
1158
+ }
1193
1159
  this.context.registerIonPage(this.ionPageElementRef.current, this.props.routeInfo);
1194
1160
  this.ionPageElementRef.current.addEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);
1195
1161
  this.ionPageElementRef.current.addEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);
@@ -1197,11 +1163,6 @@ class PageManager extends React.PureComponent {
1197
1163
  this.ionPageElementRef.current.addEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);
1198
1164
  }
1199
1165
  }
1200
- componentDidUpdate(prevProps) {
1201
- if (prevProps.className !== this.props.className) {
1202
- this.updateUserClasses(prevProps.className, this.props.className);
1203
- }
1204
- }
1205
1166
  componentWillUnmount() {
1206
1167
  if (this.ionPageElementRef.current) {
1207
1168
  this.ionPageElementRef.current.removeEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);
@@ -1231,11 +1192,9 @@ class PageManager extends React.PureComponent {
1231
1192
  render() {
1232
1193
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1233
1194
  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.
1236
1195
  return (jsx(IonLifeCycleContext.Consumer, { children: (context) => {
1237
1196
  this.ionLifeCycleContext = context;
1238
- return (jsx("div", { className: "ion-page", ref: this.stableMergedRefs, ...props, children: children }));
1197
+ return (jsx("div", { className: className ? `${className} ion-page` : `ion-page`, ref: this.stableMergedRefs, ...props, children: children }));
1239
1198
  } }));
1240
1199
  }
1241
1200
  static get contextType() {
@@ -1295,7 +1254,7 @@ const ReactDelegate = (addView, removeView) => {
1295
1254
  };
1296
1255
  };
1297
1256
 
1298
- const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$1m);
1257
+ const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$1n);
1299
1258
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1300
1259
  const IonNavInternal = ({ children, forwardedRef, ...restOfProps }) => {
1301
1260
  const [views, setViews] = useState([]);
@@ -1374,10 +1333,10 @@ class OutletPageManager extends React.Component {
1374
1333
  this.ionLifeCycleContext.ionViewDidLeave();
1375
1334
  }
1376
1335
  render() {
1377
- const { StackManager, children, routeInfo, id, ...props } = this.props;
1336
+ const { StackManager, children, routeInfo, ...props } = this.props;
1378
1337
  return (jsx(IonLifeCycleContext.Consumer, { children: (context) => {
1379
1338
  this.ionLifeCycleContext = context;
1380
- return (jsx(StackManager, { id: id, routeInfo: routeInfo, children: jsx(IonRouterOutletInner, { id: id, setRef: (val) => (this.ionRouterOutlet = val), ...props, children: children }) }));
1339
+ return (jsx(StackManager, { routeInfo: routeInfo, children: jsx(IonRouterOutletInner, { setRef: (val) => (this.ionRouterOutlet = val), ...props, children: children }) }));
1381
1340
  } }));
1382
1341
  }
1383
1342
  static get contextType() {
@@ -1388,13 +1347,11 @@ class OutletPageManager extends React.Component {
1388
1347
  class IonRouterOutletContainer extends React.Component {
1389
1348
  constructor(props) {
1390
1349
  super(props);
1391
- this.outletId = props.id ?? `routerOutlet-${generateId('routerOutlet')}`;
1392
1350
  }
1393
1351
  render() {
1394
1352
  const StackManager = this.context.getStackManager();
1395
1353
  const { children, forwardedRef, ...props } = this.props;
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 }));
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 }));
1398
1355
  }
1399
1356
  static get contextType() {
1400
1357
  return NavContext;
@@ -1875,6 +1832,20 @@ class IonRoute extends React.PureComponent {
1875
1832
  }
1876
1833
  }
1877
1834
 
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
+
1878
1849
  const IonRouterContext = React.createContext({
1879
1850
  routeInfo: undefined, // TODO(FW-2959): type
1880
1851
  push: () => {
@@ -2055,7 +2026,7 @@ function useController(displayName, controller, defineCustomElement) {
2055
2026
  * @returns Returns the present and dismiss methods in an array
2056
2027
  */
2057
2028
  function useIonActionSheet() {
2058
- const controller = useController('IonActionSheet', actionSheetController, defineCustomElement$1c);
2029
+ const controller = useController('IonActionSheet', actionSheetController, defineCustomElement$1d);
2059
2030
  const present = useCallback((buttonsOrOptions, header) => {
2060
2031
  if (Array.isArray(buttonsOrOptions)) {
2061
2032
  return controller.present({
@@ -2075,7 +2046,7 @@ function useIonActionSheet() {
2075
2046
  * @returns Returns the present and dismiss methods in an array
2076
2047
  */
2077
2048
  function useIonAlert() {
2078
- const controller = useController('IonAlert', alertController, defineCustomElement$18);
2049
+ const controller = useController('IonAlert', alertController, defineCustomElement$19);
2079
2050
  const present = useCallback((messageOrOptions, buttons) => {
2080
2051
  if (typeof messageOrOptions === 'string') {
2081
2052
  return controller.present({
@@ -2095,7 +2066,7 @@ function useIonAlert() {
2095
2066
  * @returns Returns the present and dismiss methods in an array
2096
2067
  */
2097
2068
  function useIonToast() {
2098
- const controller = useController('IonToast', toastController, defineCustomElement$1a);
2069
+ const controller = useController('IonToast', toastController, defineCustomElement$1b);
2099
2070
  const present = useCallback((messageOrOptions, duration) => {
2100
2071
  if (typeof messageOrOptions === 'string') {
2101
2072
  return controller.present({
@@ -2181,7 +2152,7 @@ function useOverlay(displayName, controller, defineCustomElement, component, com
2181
2152
  * @returns Returns the present and dismiss methods in an array
2182
2153
  */
2183
2154
  function useIonModal(component, componentProps) {
2184
- const controller = useOverlay('IonModal', modalController, defineCustomElement$1d, component, componentProps);
2155
+ const controller = useOverlay('IonModal', modalController, defineCustomElement$1e, component, componentProps);
2185
2156
  const present = useCallback((options = {}) => {
2186
2157
  controller.present(options);
2187
2158
  }, [controller.present]);
@@ -2196,7 +2167,7 @@ function useIonModal(component, componentProps) {
2196
2167
  * @returns Returns the present and dismiss methods in an array
2197
2168
  */
2198
2169
  function useIonPopover(component, componentProps) {
2199
- const controller = useOverlay('IonPopover', popoverController, defineCustomElement$1e, component, componentProps);
2170
+ const controller = useOverlay('IonPopover', popoverController, defineCustomElement$1f, component, componentProps);
2200
2171
  const present = useCallback((options = {}) => {
2201
2172
  controller.present(options);
2202
2173
  }, [controller.present]);
@@ -2209,7 +2180,7 @@ function useIonPopover(component, componentProps) {
2209
2180
  * @deprecated Use the inline ion-picker component instead.
2210
2181
  */
2211
2182
  function useIonPicker() {
2212
- const controller = useController('IonPicker', pickerController, defineCustomElement$1b);
2183
+ const controller = useController('IonPicker', pickerController, defineCustomElement$1c);
2213
2184
  const present = useCallback((columnsOrOptions, buttons) => {
2214
2185
  if (Array.isArray(columnsOrOptions)) {
2215
2186
  return controller.present({
@@ -2229,7 +2200,7 @@ function useIonPicker() {
2229
2200
  * @returns Returns the present and dismiss methods in an array
2230
2201
  */
2231
2202
  function useIonLoading() {
2232
- const controller = useController('IonLoading', loadingController, defineCustomElement$19);
2203
+ const controller = useController('IonLoading', loadingController, defineCustomElement$1a);
2233
2204
  const present = useCallback((messageOrOptions = {}, duration, spinner) => {
2234
2205
  if (typeof messageOrOptions === 'string') {
2235
2206
  return controller.present({
@@ -2271,7 +2242,6 @@ const RouteManagerContext = /*@__PURE__*/ React.createContext({
2271
2242
  findLeavingViewItemByRouteInfo: () => undefined,
2272
2243
  findViewItemByRouteInfo: () => undefined,
2273
2244
  getChildrenToRender: () => undefined,
2274
- getViewItemsForOutlet: () => [],
2275
2245
  goBack: () => undefined,
2276
2246
  unMountViewItem: () => undefined,
2277
2247
  });
@@ -2390,14 +2360,7 @@ class LocationHistory {
2390
2360
  _replace(routeInfo) {
2391
2361
  const routeInfos = this._getRouteInfosByKey(routeInfo.tab);
2392
2362
  routeInfos && routeInfos.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
- }
2363
+ this.locationHistory.pop();
2401
2364
  this._add(routeInfo);
2402
2365
  }
2403
2366
  _clear() {
@@ -2460,17 +2423,6 @@ class LocationHistory {
2460
2423
  canGoBack() {
2461
2424
  return this.locationHistory.length > 1;
2462
2425
  }
2463
- findTabForPathname(pathname) {
2464
- for (const tab of Object.keys(this.tabHistory)) {
2465
- const routeInfos = this.tabHistory[tab];
2466
- for (let i = routeInfos.length - 1; i >= 0; i--) {
2467
- if (routeInfos[i].pathname === pathname) {
2468
- return tab;
2469
- }
2470
- }
2471
- }
2472
- return undefined;
2473
- }
2474
2426
  }
2475
2427
 
2476
2428
  class NavManager extends React.PureComponent {
@@ -2491,8 +2443,10 @@ class NavManager extends React.PureComponent {
2491
2443
  goBack: this.goBack.bind(this),
2492
2444
  hasIonicRouter: () => true,
2493
2445
  navigate: this.navigate.bind(this),
2446
+ getIonRedirect: this.getIonRedirect.bind(this),
2494
2447
  getIonRoute: this.getIonRoute.bind(this),
2495
2448
  getStackManager: this.getStackManager.bind(this),
2449
+ getPageManager: this.getPageManager.bind(this),
2496
2450
  routeInfo: this.props.routeInfo,
2497
2451
  setCurrentTab: this.props.onSetCurrentTab,
2498
2452
  changeTab: this.props.onChangeTab,
@@ -2525,6 +2479,12 @@ class NavManager extends React.PureComponent {
2525
2479
  navigate(path, direction = 'forward', action = 'push', animationBuilder, options, tab) {
2526
2480
  this.props.onNavigate(path, action, direction, animationBuilder, options, tab);
2527
2481
  }
2482
+ getPageManager() {
2483
+ return PageManager;
2484
+ }
2485
+ getIonRedirect() {
2486
+ return this.props.ionRedirect;
2487
+ }
2528
2488
  getIonRoute() {
2529
2489
  return this.props.ionRoute;
2530
2490
  }
@@ -2586,5 +2546,5 @@ class ViewStacks {
2586
2546
  }
2587
2547
  }
2588
2548
 
2589
- 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 };
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 };
2590
2550
  //# sourceMappingURL=index.js.map