@sparkle-learning/core 0.0.27 → 0.0.30
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.
- package/dist/cjs/{PrivateRoute-cee9b061.js → PrivateRoute-043bb7d3.js} +6 -40
- package/dist/cjs/{active-router-3bd7b540.js → active-router-eedb3bfe.js} +1 -1
- package/dist/cjs/{animation-05337433.js → animation-6132e37f.js} +28 -4
- package/dist/cjs/app-globals-9869bf67.js +9 -0
- package/dist/cjs/{auth.store-aba3d22f.js → auth.store-ff3fda09.js} +1869 -357
- package/dist/cjs/compass-svg.cjs.entry.js +1 -1
- package/dist/cjs/context-consumer.cjs.entry.js +1 -1
- package/dist/cjs/course-select.cjs.entry.js +1 -1
- package/dist/cjs/{cubic-bezier-24e309bf.js → cubic-bezier-293f4663.js} +3 -0
- package/dist/cjs/dir-5af5259a.js +20 -0
- package/dist/cjs/{facilitator.service-e1e2f719.js → facilitator.service-faac5c0c.js} +1 -1
- package/dist/cjs/feed.service-66405969.js +124 -0
- package/dist/cjs/focus-visible-ad3828a7.js +63 -0
- package/dist/cjs/framework-delegate-2470a246.js +113 -0
- package/dist/cjs/{gesture-controller-e824cfb3.js → gesture-controller-07c31f70.js} +3 -0
- package/dist/cjs/{haptic-415dac5b.js → haptic-91e86eb7.js} +3 -0
- package/dist/cjs/{hardware-back-button-ca468aae.js → hardware-back-button-f7b5d99e.js} +3 -0
- package/dist/cjs/header-mobile-collapse_61.cjs.entry.js +18001 -0
- package/dist/cjs/{helpers-26770c32.js → helpers-7e28976c.js} +122 -3
- package/dist/cjs/{icons-a0fef92b.js → icons-b8a2231a.js} +1 -1
- package/dist/cjs/{index-427d03fb.js → index-185f9c5a.js} +3 -0
- package/dist/cjs/{index-6eff209d.js → index-43642662.js} +24 -3
- package/dist/cjs/{index-7bcd36a0.js → index-459a5fa9.js} +20 -4
- package/dist/cjs/index-8540d72e.js +42 -0
- package/dist/cjs/{index-58b3ee93.js → index-b12edb26.js} +34 -5
- package/dist/cjs/{index-fbf4d3bf.js → index-bae2a754.js} +303 -207
- package/dist/cjs/index.cjs.js +8 -7
- package/dist/cjs/index.es-ef3efdfb.js +10671 -0
- package/dist/cjs/{input-shims-213e83f8.js → input-shims-6c442c9f.js} +34 -10
- package/dist/cjs/ion-accordion-group.cjs.entry.js +197 -0
- package/dist/cjs/ion-accordion.cjs.entry.js +340 -0
- package/dist/cjs/ion-action-sheet_4.cjs.entry.js +2203 -0
- package/dist/cjs/ion-app.cjs.entry.js +23 -8
- package/dist/cjs/ion-back-button.cjs.entry.js +14 -9
- package/dist/cjs/ion-backdrop.cjs.entry.js +3 -3
- package/dist/cjs/ion-badge.cjs.entry.js +3 -3
- package/dist/cjs/ion-breadcrumb.cjs.entry.js +103 -0
- package/dist/cjs/ion-breadcrumbs.cjs.entry.js +135 -0
- package/dist/cjs/ion-buttons_3.cjs.entry.js +7 -6
- package/dist/cjs/ion-card-header.cjs.entry.js +3 -3
- package/dist/cjs/ion-card-subtitle.cjs.entry.js +3 -3
- package/dist/cjs/ion-card-title.cjs.entry.js +3 -3
- package/dist/cjs/ion-chip.cjs.entry.js +3 -3
- package/dist/cjs/ion-content_2.cjs.entry.js +144 -56
- package/dist/cjs/ion-datetime.cjs.entry.js +1902 -779
- package/dist/cjs/ion-fab-button.cjs.entry.js +5 -4
- package/dist/cjs/ion-fab-list.cjs.entry.js +2 -2
- package/dist/cjs/ion-fab.cjs.entry.js +2 -2
- package/dist/cjs/ion-footer.cjs.entry.js +79 -4
- package/dist/cjs/ion-img.cjs.entry.js +33 -7
- package/dist/cjs/ion-infinite-scroll-content.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll.cjs.entry.js +4 -2
- package/dist/cjs/ion-item-divider.cjs.entry.js +3 -3
- package/dist/cjs/ion-item-group.cjs.entry.js +2 -2
- package/dist/cjs/ion-item-option.cjs.entry.js +4 -4
- package/dist/cjs/ion-item-options.cjs.entry.js +3 -3
- package/dist/cjs/ion-item-sliding.cjs.entry.js +52 -8
- package/dist/cjs/ion-loading.cjs.entry.js +23 -11
- package/dist/cjs/ion-menu-button.cjs.entry.js +17 -11
- package/dist/cjs/ion-menu-toggle.cjs.entry.js +7 -7
- package/dist/cjs/ion-menu.cjs.entry.js +141 -29
- package/dist/cjs/ion-modal.cjs.entry.js +649 -75
- package/dist/cjs/ion-nav-link.cjs.entry.js +4 -1
- package/dist/cjs/ion-nav.cjs.entry.js +140 -137
- package/dist/cjs/ion-picker-column-internal_2.cjs.entry.js +700 -0
- package/dist/cjs/ion-picker-column.cjs.entry.js +5 -5
- package/dist/cjs/ion-picker.cjs.entry.js +18 -11
- package/dist/cjs/ion-progress-bar.cjs.entry.js +17 -13
- package/dist/cjs/ion-refresher-content.cjs.entry.js +7 -6
- package/dist/cjs/ion-refresher.cjs.entry.js +83 -84
- package/dist/cjs/ion-reorder-group.cjs.entry.js +9 -8
- package/dist/cjs/ion-reorder.cjs.entry.js +5 -4
- package/dist/cjs/ion-route-redirect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route.cjs.entry.js +1 -1
- package/dist/cjs/ion-router-link.cjs.entry.js +3 -3
- package/dist/cjs/ion-router-outlet.cjs.entry.js +50 -12
- package/dist/cjs/ion-router.cjs.entry.js +378 -234
- package/dist/cjs/ion-searchbar.cjs.entry.js +50 -17
- package/dist/cjs/ion-segment-button.cjs.entry.js +12 -9
- package/dist/cjs/ion-segment.cjs.entry.js +89 -10
- package/dist/cjs/ion-select_2.cjs.entry.js +64 -30
- package/dist/cjs/ion-skeleton-text.cjs.entry.js +4 -4
- package/dist/cjs/ion-slide.cjs.entry.js +2 -2
- package/dist/cjs/ion-slides.cjs.entry.js +19 -32
- package/dist/cjs/ion-split-pane.cjs.entry.js +8 -3
- package/dist/cjs/ion-tab-bar.cjs.entry.js +25 -12
- package/dist/cjs/ion-tab-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab.cjs.entry.js +3 -2
- package/dist/cjs/ion-tabs.cjs.entry.js +1 -1
- package/dist/cjs/ion-textarea.cjs.entry.js +9 -8
- package/dist/cjs/ion-thumbnail.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +37 -27
- package/dist/cjs/ion-toggle.cjs.entry.js +15 -15
- package/dist/cjs/ion-virtual-scroll.cjs.entry.js +13 -3
- package/dist/cjs/{ionic-global-4930d319.js → ionic-global-878073d1.js} +103 -77
- package/dist/cjs/{ios.transition-6e1fd3d6.js → ios.transition-c3bfb096.js} +8 -5
- package/dist/cjs/{keyboard-1dcbde6c.js → keyboard-dfd76ac3.js} +3 -0
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/localstorage.service-6346a41d.js +40 -0
- package/dist/cjs/{md.transition-3652ad78.js → md.transition-7eb9a1a7.js} +7 -4
- package/dist/cjs/{menu-toggle-util-a8fb4c56.js → menu-toggle-util-cb549c2c.js} +4 -1
- package/dist/cjs/{overlays-08a817ea.js → overlays-0a748609.js} +188 -47
- package/dist/cjs/{purify-596fc2d6.js → purify-d0ad2883.js} +187 -74
- package/dist/cjs/sparkle-animation-player.cjs.entry.js +56 -50
- package/dist/cjs/sparkle-character-intro.cjs.entry.js +26 -0
- package/dist/cjs/sparkle-code.cjs.entry.js +2 -2
- package/dist/cjs/sparkle-compass-post.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-compass.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-core.cjs.js +7 -7
- package/dist/cjs/sparkle-emoji.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-facilitator-notes-form.cjs.entry.js +7 -7
- package/dist/cjs/sparkle-feed-post.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-feedback.cjs.entry.js +7 -7
- package/dist/cjs/sparkle-goal-form.cjs.entry.js +15 -14
- package/dist/cjs/sparkle-gww-comment-list.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-gww-graph.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-lower-content-nav.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-menu-collapsible.cjs.entry.js +2 -2
- package/dist/cjs/sparkle-modal-image.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-notfound-page.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-overlay.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-poll.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-quiz-container.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-quiz-feedback_5.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-quiz.cjs.entry.js +2 -2
- package/dist/cjs/sparkle-select.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-sidebar.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-tab.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-table-of-contents.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-tabs.cjs.entry.js +1 -1
- package/dist/cjs/sparkle-youtube.cjs.entry.js +2 -2
- package/dist/cjs/{spinner-configs-559523fd.js → spinner-configs-6f6b7ef0.js} +36 -1
- package/dist/cjs/status-tap-8697433c.js +40 -0
- package/dist/cjs/stencil-async-content.cjs.entry.js +1 -1
- package/dist/cjs/stencil-route-title.cjs.entry.js +2 -2
- package/dist/cjs/stencil-router-prompt.cjs.entry.js +2 -2
- package/dist/cjs/{student.service-41c7c78d.js → student.service-744c3155.js} +1 -1
- package/dist/cjs/{swipe-back-c1951cbd.js → swipe-back-7e08b5e0.js} +32 -8
- package/dist/cjs/{swiper.bundle-cbea42d8.js → swiper.bundle-8c897c07.js} +4 -4
- package/dist/cjs/{tap-click-cd858b48.js → tap-click-1caf1780.js} +8 -1
- package/dist/cjs/{theme-98ccfc24.js → theme-4252ac15.js} +3 -0
- package/dist/cjs/util-d383acb8.js +2462 -0
- package/dist/collection/collection-manifest.json +9 -2
- package/dist/collection/components/layout/page/page.js +1 -0
- package/dist/collection/components/sparkle-animation-player/sparkle-animation-player.js +78 -66
- package/dist/collection/components/sparkle-character-intro/assets/characters/character-img.jpg +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/jen.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/kimberly.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/valeria.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/yuna.png +0 -0
- package/dist/collection/components/sparkle-character-intro/assets/characters/zynab.png +0 -0
- package/dist/collection/components/sparkle-character-intro/sparkle-character-intro.css +67 -0
- package/dist/collection/components/sparkle-character-intro/sparkle-character-intro.js +64 -0
- package/dist/collection/components/sparkle-course-root/sparkle-course-root.js +48 -43
- package/dist/collection/components/sparkle-youtube/sparkle-youtube.js +6 -2
- package/dist/collection/util.js +1 -0
- package/dist/esm/{PrivateRoute-9f0973bb.js → PrivateRoute-b9937c45.js} +3 -37
- package/dist/esm/{active-router-b3ae32c7.js → active-router-909088d6.js} +1 -1
- package/dist/esm/{animation-72fdacfb.js → animation-b306f6c2.js} +28 -4
- package/dist/esm/app-globals-5c736ae5.js +7 -0
- package/dist/esm/auth.store-3ed2389e.js +4061 -0
- package/dist/esm/compass-svg.entry.js +1 -1
- package/dist/esm/context-consumer.entry.js +1 -1
- package/dist/esm/course-select.entry.js +1 -1
- package/dist/esm/{cubic-bezier-ed243a9b.js → cubic-bezier-a7ad9c8e.js} +3 -0
- package/dist/esm/dir-03012648.js +18 -0
- package/dist/esm/{facilitator.service-cddb2feb.js → facilitator.service-ec0a9739.js} +1 -1
- package/dist/esm/feed.service-33b83cb7.js +119 -0
- package/dist/esm/focus-visible-40cda868.js +61 -0
- package/dist/esm/framework-delegate-3bc58c27.js +109 -0
- package/dist/esm/{gesture-controller-604336b7.js → gesture-controller-686622ba.js} +3 -0
- package/dist/esm/{haptic-67928174.js → haptic-99c9e346.js} +4 -1
- package/dist/esm/{hardware-back-button-508e48cf.js → hardware-back-button-b6ccf74a.js} +3 -0
- package/dist/esm/header-mobile-collapse_61.entry.js +17937 -0
- package/dist/esm/{helpers-e7f66b2b.js → helpers-39367fe1.js} +119 -4
- package/dist/esm/{icons-33e5804c.js → icons-5debfbaf.js} +1 -1
- package/dist/esm/{index-cc97b114.js → index-435af8e6.js} +3 -0
- package/dist/esm/{index-55fc9f5e.js → index-5568e3fa.js} +303 -208
- package/dist/esm/{index-dc09784f.js → index-9594837e.js} +20 -4
- package/dist/esm/{index-b2ad0f1a.js → index-a12c14bd.js} +25 -4
- package/dist/esm/{index-a94619f9.js → index-c26d8655.js} +34 -5
- package/dist/esm/index-dc61f152.js +22 -0
- package/dist/esm/index.es-97dd8174.js +10585 -0
- package/dist/esm/index.js +8 -7
- package/dist/esm/{input-shims-3a97fa86.js → input-shims-cc98ea92.js} +34 -10
- package/dist/esm/ion-accordion-group.entry.js +193 -0
- package/dist/esm/ion-accordion.entry.js +336 -0
- package/dist/esm/ion-action-sheet_4.entry.js +2196 -0
- package/dist/esm/ion-app.entry.js +23 -8
- package/dist/esm/ion-back-button.entry.js +14 -9
- package/dist/esm/ion-backdrop.entry.js +3 -3
- package/dist/esm/ion-badge.entry.js +3 -3
- package/dist/esm/ion-breadcrumb.entry.js +99 -0
- package/dist/esm/ion-breadcrumbs.entry.js +131 -0
- package/dist/esm/ion-buttons_3.entry.js +7 -6
- package/dist/esm/ion-card-header.entry.js +3 -3
- package/dist/esm/ion-card-subtitle.entry.js +3 -3
- package/dist/esm/ion-card-title.entry.js +3 -3
- package/dist/esm/ion-chip.entry.js +3 -3
- package/dist/esm/ion-content_2.entry.js +144 -56
- package/dist/esm/ion-datetime.entry.js +1902 -779
- package/dist/esm/ion-fab-button.entry.js +5 -4
- package/dist/esm/ion-fab-list.entry.js +2 -2
- package/dist/esm/ion-fab.entry.js +2 -2
- package/dist/esm/ion-footer.entry.js +79 -4
- package/dist/esm/ion-img.entry.js +33 -7
- package/dist/esm/ion-infinite-scroll-content.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll.entry.js +4 -2
- package/dist/esm/ion-item-divider.entry.js +3 -3
- package/dist/esm/ion-item-group.entry.js +2 -2
- package/dist/esm/ion-item-option.entry.js +4 -4
- package/dist/esm/ion-item-options.entry.js +3 -3
- package/dist/esm/ion-item-sliding.entry.js +52 -8
- package/dist/esm/ion-loading.entry.js +23 -11
- package/dist/esm/ion-menu-button.entry.js +17 -11
- package/dist/esm/ion-menu-toggle.entry.js +7 -7
- package/dist/esm/ion-menu.entry.js +141 -29
- package/dist/esm/ion-modal.entry.js +649 -75
- package/dist/esm/ion-nav-link.entry.js +4 -1
- package/dist/esm/ion-nav.entry.js +140 -137
- package/dist/esm/ion-picker-column-internal_2.entry.js +695 -0
- package/dist/esm/ion-picker-column.entry.js +5 -5
- package/dist/esm/ion-picker.entry.js +18 -11
- package/dist/esm/ion-progress-bar.entry.js +17 -13
- package/dist/esm/ion-refresher-content.entry.js +7 -6
- package/dist/esm/ion-refresher.entry.js +82 -83
- package/dist/esm/ion-reorder-group.entry.js +9 -8
- package/dist/esm/ion-reorder.entry.js +5 -4
- package/dist/esm/ion-route-redirect.entry.js +1 -1
- package/dist/esm/ion-route.entry.js +1 -1
- package/dist/esm/ion-router-link.entry.js +3 -3
- package/dist/esm/ion-router-outlet.entry.js +50 -12
- package/dist/esm/ion-router.entry.js +378 -234
- package/dist/esm/ion-searchbar.entry.js +50 -17
- package/dist/esm/ion-segment-button.entry.js +12 -9
- package/dist/esm/ion-segment.entry.js +89 -10
- package/dist/esm/ion-select_2.entry.js +64 -30
- package/dist/esm/ion-skeleton-text.entry.js +4 -4
- package/dist/esm/ion-slide.entry.js +2 -2
- package/dist/esm/ion-slides.entry.js +19 -32
- package/dist/esm/ion-split-pane.entry.js +8 -3
- package/dist/esm/ion-tab-bar.entry.js +25 -12
- package/dist/esm/ion-tab-button.entry.js +2 -2
- package/dist/esm/ion-tab.entry.js +3 -2
- package/dist/esm/ion-tabs.entry.js +1 -1
- package/dist/esm/ion-textarea.entry.js +9 -8
- package/dist/esm/ion-thumbnail.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +37 -27
- package/dist/esm/ion-toggle.entry.js +15 -15
- package/dist/esm/ion-virtual-scroll.entry.js +13 -3
- package/dist/esm/{ionic-global-1f9287cc.js → ionic-global-0939c477.js} +103 -77
- package/dist/esm/{ios.transition-d01abefd.js → ios.transition-b4ca8a33.js} +8 -5
- package/dist/esm/{keyboard-06906eac.js → keyboard-2503e874.js} +3 -0
- package/dist/esm/loader.js +5 -5
- package/dist/esm/localstorage.service-4bf408c8.js +36 -0
- package/dist/esm/{md.transition-245ffa55.js → md.transition-ca5e0322.js} +7 -4
- package/dist/esm/{menu-toggle-util-fe83fcf5.js → menu-toggle-util-7fa22c2f.js} +4 -1
- package/dist/esm/{overlays-8363621c.js → overlays-34cfa9e0.js} +187 -47
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/polyfills/index.js +2 -2
- package/dist/esm/{purify-4247e2d0.js → purify-ffce2b4c.js} +185 -72
- package/dist/esm/sparkle-animation-player.entry.js +56 -50
- package/dist/esm/sparkle-character-intro.entry.js +22 -0
- package/dist/esm/sparkle-code.entry.js +2 -2
- package/dist/esm/sparkle-compass-post.entry.js +1 -1
- package/dist/esm/sparkle-compass.entry.js +1 -1
- package/dist/esm/sparkle-core.js +7 -7
- package/dist/esm/sparkle-emoji.entry.js +1 -1
- package/dist/esm/sparkle-facilitator-notes-form.entry.js +7 -7
- package/dist/esm/sparkle-feed-post.entry.js +1 -1
- package/dist/esm/sparkle-feedback.entry.js +7 -7
- package/dist/esm/sparkle-goal-form.entry.js +8 -7
- package/dist/esm/sparkle-gww-comment-list.entry.js +1 -1
- package/dist/esm/sparkle-gww-graph.entry.js +1 -1
- package/dist/esm/sparkle-lower-content-nav.entry.js +1 -1
- package/dist/esm/sparkle-menu-collapsible.entry.js +2 -2
- package/dist/esm/sparkle-modal-image.entry.js +1 -1
- package/dist/esm/sparkle-notfound-page.entry.js +1 -1
- package/dist/esm/sparkle-overlay.entry.js +1 -1
- package/dist/esm/sparkle-poll.entry.js +1 -1
- package/dist/esm/sparkle-quiz-container.entry.js +1 -1
- package/dist/esm/sparkle-quiz-feedback_5.entry.js +1 -1
- package/dist/esm/sparkle-quiz.entry.js +2 -2
- package/dist/esm/sparkle-select.entry.js +1 -1
- package/dist/esm/sparkle-sidebar.entry.js +1 -1
- package/dist/esm/sparkle-tab.entry.js +1 -1
- package/dist/esm/sparkle-table-of-contents.entry.js +1 -1
- package/dist/esm/sparkle-tabs.entry.js +1 -1
- package/dist/esm/sparkle-youtube.entry.js +2 -2
- package/dist/esm/{spinner-configs-9536fae2.js → spinner-configs-f609a655.js} +36 -1
- package/dist/esm/status-tap-6351a0cb.js +38 -0
- package/dist/esm/stencil-async-content.entry.js +1 -1
- package/dist/esm/stencil-route-title.entry.js +2 -2
- package/dist/esm/stencil-router-prompt.entry.js +2 -2
- package/dist/esm/{student.service-c36c5a75.js → student.service-29b688ba.js} +1 -1
- package/dist/esm/{swipe-back-21f58ecf.js → swipe-back-34251834.js} +32 -8
- package/dist/esm/{swiper.bundle-d4422d52.js → swiper.bundle-b6a959de.js} +4 -4
- package/dist/esm/{tap-click-8c728329.js → tap-click-13f1fb0d.js} +8 -1
- package/dist/esm/{theme-12606872.js → theme-c336c9d9.js} +3 -0
- package/dist/esm/util-6ef753e9.js +2451 -0
- package/dist/loader/index.d.ts +0 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion/accordion.ios.css +75 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion/accordion.md.css +72 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion-group/accordion-group.ios.css +25 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/accordion-group/accordion-group.md.css +59 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.ios.css +10 -19
- package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.md.css +19 -16
- package/dist/node_modules/@ionic/core/dist/collection/components/alert/alert.md.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.ios.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.md.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumb/breadcrumb.ios.css +234 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumb/breadcrumb.md.css +237 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +38 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumbs/breadcrumbs.md.css +37 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/button/button.ios.css +0 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/button/button.md.css +5 -5
- package/dist/node_modules/@ionic/core/dist/collection/components/content/content.css +60 -14
- package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.ios.css +586 -68
- package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.md.css +575 -68
- package/dist/node_modules/@ionic/core/dist/collection/components/footer/footer.ios.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/header/header.ios.css +16 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/input/input.ios.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/input/input.md.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/item/item.ios.css +105 -17
- package/dist/node_modules/@ionic/core/dist/collection/components/item/item.md.css +295 -22
- package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.ios.css +6 -6
- package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.md.css +6 -6
- package/dist/node_modules/@ionic/core/dist/collection/components/item-sliding/item-sliding.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/label/label.ios.css +7 -3
- package/dist/node_modules/@ionic/core/dist/collection/components/label/label.md.css +100 -18
- package/dist/node_modules/@ionic/core/dist/collection/components/list/list.ios.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.ios.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.md.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.ios.css +74 -11
- package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.md.css +48 -4
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +59 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-column-internal/picker-column-internal.md.css +62 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-internal/picker-internal.ios.css +122 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/picker-internal/picker-internal.md.css +118 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.ios.css +83 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.md.css +49 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.ios.css +53 -38
- package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.md.css +53 -38
- package/dist/node_modules/@ionic/core/dist/collection/components/range/range.ios.css +3 -3
- package/dist/node_modules/@ionic/core/dist/collection/components/range/range.md.css +5 -5
- package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.ios.css +12 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.md.css +2 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.ios.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.md.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.ios.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.md.css +4 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/select/select.ios.css +1 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/select/select.md.css +30 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/select-popover/{select-popover.css → select-popover.ios.css} +4 -4
- package/dist/node_modules/@ionic/core/dist/collection/components/select-popover/select-popover.md.css +37 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/skeleton-text/skeleton-text.css +4 -4
- package/dist/node_modules/@ionic/core/dist/collection/components/spinner/spinner.css +15 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.ios.css +2 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.md.css +1 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.ios.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.md.css +9 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/title/title.ios.css +4 -3
- package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.ios.css +14 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.md.css +14 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.ios.css +1 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.md.css +1 -0
- package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.ios.css +3 -2
- package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.md.css +2 -1
- package/dist/node_modules/@ionic/core/dist/collection/components/virtual-scroll/virtual-scroll.css +1 -1
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/button/button.css +49 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/cards/card/card.css +208 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/cards/cards.css +31 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/code/code.css +245 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/dropdown/dropdown.css +115 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/header/header-mobile-collapse/header-mobile-collapse.css +255 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/header/header.css +232 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/menu/collapsible/collapsible.css +3 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/menu/menu-toggle/menu-toggle.css +25 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/menu/menu.css +71 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/nav/nav.css +194 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/notfound-page/notfound-page.css +4 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/overlay/overlay.css +67 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/page-footer/page-footer.css +18 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/pagination/pagination.css +89 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/select/select.css +52 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/sidebar/sidebar.css +98 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/sparkle-lower-content-nav/sparkle-lower-content-nav.css +8 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/table-of-contents/table-of-contents.css +37 -0
- package/dist/node_modules/@sparkle-learning/components/dist/collection/components/tabs/tabs.css +64 -0
- package/dist/sparkle-core/assets/characters/character-img.jpg +0 -0
- package/dist/sparkle-core/assets/characters/jen.png +0 -0
- package/dist/sparkle-core/assets/characters/kimberly.png +0 -0
- package/dist/sparkle-core/assets/characters/valeria.png +0 -0
- package/dist/sparkle-core/assets/characters/yuna.png +0 -0
- package/dist/sparkle-core/assets/characters/zynab.png +0 -0
- package/dist/sparkle-core/index.esm.js +1 -1
- package/dist/sparkle-core/p-0146afa0.entry.js +1 -0
- package/dist/sparkle-core/{p-52355989.entry.js → p-016a7aaf.entry.js} +1 -1
- package/dist/sparkle-core/p-0187adef.entry.js +1 -0
- package/dist/sparkle-core/p-03189863.js +1 -0
- package/dist/sparkle-core/{p-d4d9aa4a.entry.js → p-03ec54a8.entry.js} +1 -1
- package/dist/sparkle-core/p-04583c51.entry.js +1 -0
- package/dist/sparkle-core/{p-6d506f4e.js → p-052caa63.js} +1 -1
- package/dist/sparkle-core/{p-016bf847.entry.js → p-057f6a23.entry.js} +1 -1
- package/dist/sparkle-core/p-0580419b.entry.js +1 -0
- package/dist/sparkle-core/{p-c563b4de.js → p-063cd168.js} +4 -1
- package/dist/sparkle-core/p-081968cc.entry.js +1 -0
- package/dist/sparkle-core/p-0934f5dd.entry.js +1 -0
- package/dist/sparkle-core/{p-3f5d7a08.entry.js → p-11cf398a.entry.js} +1 -1
- package/dist/sparkle-core/p-1339830f.entry.js +1 -0
- package/dist/sparkle-core/p-145e40f5.entry.js +1 -0
- package/dist/sparkle-core/{p-68f3c93d.entry.js → p-1726da2f.entry.js} +1 -1
- package/dist/sparkle-core/p-173d5461.entry.js +7 -0
- package/dist/sparkle-core/p-18e62133.entry.js +1 -0
- package/dist/sparkle-core/p-1af044f7.js +3 -0
- package/dist/sparkle-core/p-1b78dea1.entry.js +1 -0
- package/dist/sparkle-core/p-1cef8572.js +4 -0
- package/dist/sparkle-core/p-1df05176.js +4 -0
- package/dist/sparkle-core/p-21bf4ca0.entry.js +1 -0
- package/dist/sparkle-core/p-21db4e8e.entry.js +1 -0
- package/dist/sparkle-core/p-23a9f7d1.entry.js +1 -0
- package/dist/sparkle-core/p-289a35ed.entry.js +1 -0
- package/dist/sparkle-core/p-2ee6a5f9.entry.js +1 -0
- package/dist/sparkle-core/p-350adbaa.entry.js +1 -0
- package/dist/sparkle-core/{p-bccd9036.entry.js → p-35a7bd6c.entry.js} +1 -1
- package/dist/sparkle-core/{p-66e3bd1c.entry.js → p-37c00e39.entry.js} +1 -1
- package/dist/sparkle-core/p-389500fd.js +4 -0
- package/dist/sparkle-core/p-39e5a90f.entry.js +1 -0
- package/dist/sparkle-core/{p-ac5e5308.entry.js → p-3a202a38.entry.js} +1 -1
- package/dist/sparkle-core/p-3defe550.entry.js +1 -0
- package/dist/sparkle-core/p-45e6db62.entry.js +1 -0
- package/dist/sparkle-core/{p-581ca370.entry.js → p-48f9b960.entry.js} +1 -1
- package/dist/sparkle-core/{p-0efbc0b3.entry.js → p-4dc3ef96.entry.js} +1 -1
- package/dist/sparkle-core/p-506221fe.js +4 -0
- package/dist/sparkle-core/p-50aac721.entry.js +7 -0
- package/dist/sparkle-core/p-513794b0.js +16 -0
- package/dist/sparkle-core/{p-2e4e8117.js → p-5264da79.js} +3 -0
- package/dist/sparkle-core/{p-40db85ac.entry.js → p-547b70c6.entry.js} +1 -1
- package/dist/sparkle-core/p-5598650a.entry.js +1 -0
- package/dist/sparkle-core/p-55ae49e1.js +4 -0
- package/dist/sparkle-core/p-58e98f89.entry.js +1 -0
- package/dist/sparkle-core/p-59f7bf6e.entry.js +1 -0
- package/dist/sparkle-core/p-5a3d0e6b.js +4 -0
- package/dist/sparkle-core/{p-85d31769.entry.js → p-5b40aae5.entry.js} +1 -1
- package/dist/sparkle-core/p-5c9aa1f9.entry.js +4 -0
- package/dist/sparkle-core/p-5d2e54ee.entry.js +1 -0
- package/dist/sparkle-core/p-5d409601.js +1 -0
- package/dist/sparkle-core/{p-afbaad64.entry.js → p-5f45d206.entry.js} +1 -1
- package/dist/sparkle-core/p-5ff6416d.entry.js +7 -0
- package/dist/sparkle-core/{p-cf2332bb.entry.js → p-62a6c96f.entry.js} +1 -1
- package/dist/sparkle-core/p-64e72f8f.js +4 -0
- package/dist/sparkle-core/p-660e0742.js +1 -0
- package/dist/sparkle-core/{p-d5023db0.entry.js → p-667accac.entry.js} +1 -1
- package/dist/sparkle-core/{p-9ca56f5d.entry.js → p-680663a2.entry.js} +1 -1
- package/dist/sparkle-core/{p-e975924a.entry.js → p-6823e6c1.entry.js} +1 -1
- package/dist/sparkle-core/p-69e7783d.js +4 -0
- package/dist/sparkle-core/p-6bbabb80.entry.js +1 -0
- package/dist/sparkle-core/p-6bf07a28.js +1 -0
- package/dist/sparkle-core/p-6c6145cd.js +4 -0
- package/dist/sparkle-core/p-6c90bde6.entry.js +5 -0
- package/dist/sparkle-core/p-6e88764b.entry.js +4 -0
- package/dist/sparkle-core/p-6ee40949.js +1 -0
- package/dist/sparkle-core/p-6fbe3ca3.entry.js +1 -0
- package/dist/sparkle-core/{p-f2660943.js → p-6fd4985d.js} +3 -0
- package/dist/sparkle-core/{p-8fc9298a.js → p-703ca87c.js} +3 -0
- package/dist/sparkle-core/{p-1bf8bed6.entry.js → p-7052c43a.entry.js} +1 -1
- package/dist/sparkle-core/{p-111520a0.js → p-70b2452c.js} +3 -0
- package/dist/sparkle-core/p-713590fc.js +5 -0
- package/dist/sparkle-core/p-7493ee15.entry.js +1 -0
- package/dist/sparkle-core/p-75572037.js +1 -0
- package/dist/sparkle-core/{p-eb56aa20.entry.js → p-768bcc9e.entry.js} +1 -1
- package/dist/sparkle-core/p-797c23ed.entry.js +1 -0
- package/dist/sparkle-core/{p-03eb2164.js → p-7c38a70b.js} +1 -1
- package/dist/sparkle-core/{p-09d43bee.entry.js → p-7d61177b.entry.js} +1 -1
- package/dist/sparkle-core/p-7dbfc316.js +1 -0
- package/dist/sparkle-core/p-7e61973d.entry.js +7 -0
- package/dist/sparkle-core/{p-3cd28c60.entry.js → p-82e98d07.entry.js} +1 -1
- package/dist/sparkle-core/p-838fa86d.entry.js +18 -0
- package/dist/sparkle-core/p-855ca600.js +1 -0
- package/dist/sparkle-core/p-857f3696.entry.js +1 -0
- package/dist/sparkle-core/{p-8f72be08.js → p-8c6b6038.js} +3 -0
- package/dist/sparkle-core/p-8fe2e51f.entry.js +4 -0
- package/dist/sparkle-core/{p-f72a6e6d.entry.js → p-90389886.entry.js} +1 -1
- package/dist/sparkle-core/p-932bfb69.entry.js +1 -0
- package/dist/sparkle-core/p-935e7cfc.js +1 -0
- package/dist/sparkle-core/{p-c70b9765.entry.js → p-941eaa3a.entry.js} +1 -1
- package/dist/sparkle-core/p-95004267.entry.js +1 -0
- package/dist/sparkle-core/p-950effe7.entry.js +1 -0
- package/dist/sparkle-core/{p-1ca4bf1d.entry.js → p-996361f9.entry.js} +1 -1
- package/dist/sparkle-core/p-9a17f2ad.js +4 -0
- package/dist/sparkle-core/p-9a443f51.js +1 -1
- package/dist/sparkle-core/p-9babd345.js +1 -0
- package/dist/sparkle-core/p-9cfdeb18.entry.js +1 -0
- package/dist/sparkle-core/p-a080e768.entry.js +1 -0
- package/dist/sparkle-core/p-a1cab0f3.js +4 -0
- package/dist/sparkle-core/p-a7cc0052.entry.js +4 -0
- package/dist/sparkle-core/p-a9ccb0df.js +4 -0
- package/dist/sparkle-core/p-a9ee3f6d.entry.js +1 -0
- package/dist/sparkle-core/{p-abe2676a.entry.js → p-aa87c7f0.entry.js} +1 -1
- package/dist/sparkle-core/{p-e818b11d.entry.js → p-aa9ebc39.entry.js} +1 -1
- package/dist/sparkle-core/p-ae1f145d.entry.js +1 -0
- package/dist/sparkle-core/{p-73a646fb.entry.js → p-b07a2cf2.entry.js} +1 -1
- package/dist/sparkle-core/{p-c82b05e0.entry.js → p-b3909012.entry.js} +1 -1
- package/dist/sparkle-core/p-b3e6427d.js +7 -0
- package/dist/sparkle-core/p-b49ca0ea.entry.js +1 -0
- package/dist/sparkle-core/p-b81e20fe.entry.js +4 -0
- package/dist/sparkle-core/p-bca0e465.entry.js +1 -0
- package/dist/sparkle-core/p-c1279cc9.entry.js +1 -0
- package/dist/sparkle-core/{p-82d95fcd.entry.js → p-c1376096.entry.js} +1 -1
- package/dist/sparkle-core/p-c3986a52.entry.js +1 -0
- package/dist/sparkle-core/p-c3d3d5c4.entry.js +1 -0
- package/dist/sparkle-core/p-c48bbc7c.entry.js +4 -0
- package/dist/sparkle-core/p-c5b9bdd6.entry.js +1 -0
- package/dist/sparkle-core/{p-15d68269.entry.js → p-c69b0a7a.entry.js} +1 -1
- package/dist/sparkle-core/p-cbbeed67.entry.js +1 -0
- package/dist/sparkle-core/p-d4a435f8.entry.js +1 -0
- package/dist/sparkle-core/p-d4c07aca.js +4 -0
- package/dist/sparkle-core/p-d5b05ece.entry.js +5 -0
- package/dist/sparkle-core/p-d7baf31e.entry.js +1 -0
- package/dist/sparkle-core/p-d8d3524a.js +1 -0
- package/dist/sparkle-core/p-df0070c5.entry.js +352 -0
- package/dist/sparkle-core/{p-22926eed.entry.js → p-e0fced48.entry.js} +1 -1
- package/dist/sparkle-core/p-e1cba44b.entry.js +4 -0
- package/dist/sparkle-core/p-e225581a.js +7 -0
- package/dist/sparkle-core/{p-4e28ca37.entry.js → p-e3fdd0a8.entry.js} +1 -1
- package/dist/sparkle-core/p-e72d4450.js +4 -0
- package/dist/sparkle-core/p-eb70a23c.entry.js +1 -0
- package/dist/sparkle-core/{p-f9143c5d.entry.js → p-ecd39170.entry.js} +1 -1
- package/dist/sparkle-core/{p-151afa9e.entry.js → p-ed0e9d29.entry.js} +1 -1
- package/dist/sparkle-core/{p-92d42c10.entry.js → p-ee0d7f19.entry.js} +1 -1
- package/dist/sparkle-core/p-f4001fdf.js +4 -0
- package/dist/sparkle-core/p-f9b73032.entry.js +1 -0
- package/dist/sparkle-core/p-faa912d7.entry.js +1 -0
- package/dist/sparkle-core/{p-a250e2ae.entry.js → p-fbd7eeca.entry.js} +1 -1
- package/dist/sparkle-core/p-fc933591.entry.js +1 -0
- package/dist/sparkle-core/p-fef04ab5.js +4 -0
- package/dist/sparkle-core/sparkle-core.css +1 -1
- package/dist/sparkle-core/sparkle-core.esm.js +1 -1
- package/dist/sparkle-core/svg/balloon-outline.svg +1 -0
- package/dist/sparkle-core/svg/balloon-sharp.svg +1 -0
- package/dist/sparkle-core/svg/balloon.svg +1 -0
- package/dist/sparkle-core/svg/bowling-ball-outline.svg +1 -0
- package/dist/sparkle-core/svg/bowling-ball-sharp.svg +1 -0
- package/dist/sparkle-core/svg/bowling-ball.svg +1 -0
- package/dist/sparkle-core/svg/calendar-number-outline.svg +1 -0
- package/dist/sparkle-core/svg/calendar-number-sharp.svg +1 -0
- package/dist/sparkle-core/svg/calendar-number.svg +1 -0
- package/dist/sparkle-core/svg/diamond-outline.svg +1 -0
- package/dist/sparkle-core/svg/diamond-sharp.svg +1 -0
- package/dist/sparkle-core/svg/diamond.svg +1 -0
- package/dist/sparkle-core/svg/footsteps-outline.svg +1 -0
- package/dist/sparkle-core/svg/footsteps-sharp.svg +1 -0
- package/dist/sparkle-core/svg/footsteps.svg +1 -0
- package/dist/sparkle-core/svg/id-card-outline.svg +1 -0
- package/dist/sparkle-core/svg/id-card-sharp.svg +1 -0
- package/dist/sparkle-core/svg/id-card.svg +1 -0
- package/dist/sparkle-core/svg/logo-apple-ar.svg +1 -0
- package/dist/sparkle-core/svg/prism-outline.svg +1 -0
- package/dist/sparkle-core/svg/prism-sharp.svg +1 -0
- package/dist/sparkle-core/svg/prism.svg +1 -0
- package/dist/sparkle-core/svg/scale-outline.svg +1 -0
- package/dist/sparkle-core/svg/scale-sharp.svg +1 -0
- package/dist/sparkle-core/svg/scale.svg +1 -0
- package/dist/sparkle-core/svg/shield-half-outline.svg +1 -0
- package/dist/sparkle-core/svg/shield-half-sharp.svg +1 -0
- package/dist/sparkle-core/svg/shield-half.svg +1 -0
- package/dist/sparkle-core/svg/sparkles-outline.svg +1 -0
- package/dist/sparkle-core/svg/sparkles-sharp.svg +1 -0
- package/dist/sparkle-core/svg/sparkles.svg +1 -0
- package/dist/sparkle-core/swiper/swiper.bundle.js +2 -2
- package/dist/types/components/sparkle-animation-player/sparkle-animation-player.d.ts +1 -0
- package/dist/types/components/sparkle-character-intro/sparkle-character-intro.d.ts +7 -0
- package/dist/types/components/sparkle-course-root/sparkle-course-root.d.ts +2 -2
- package/dist/types/components/sparkle-youtube/sparkle-youtube.d.ts +1 -1
- package/dist/types/components.d.ts +17 -0
- package/dist/types/models/definitions.d.ts +8 -0
- package/dist/types/stencil-public-runtime.d.ts +200 -190
- package/dist/types/util.d.ts +1 -0
- package/package.json +26 -26
- package/dist/cjs/app-globals-98121d6d.js +0 -9
- package/dist/cjs/button-active-9456fb4d.js +0 -66
- package/dist/cjs/feed.service-518d18fd.js +0 -5802
- package/dist/cjs/focus-visible-1583bc8e.js +0 -45
- package/dist/cjs/framework-delegate-72815681.js +0 -37
- package/dist/cjs/header-mobile-collapse_60.cjs.entry.js +0 -86
- package/dist/cjs/index.es-baef3314.js +0 -13834
- package/dist/cjs/ion-action-sheet.cjs.entry.js +0 -261
- package/dist/cjs/ion-alert.cjs.entry.js +0 -455
- package/dist/cjs/ion-note.cjs.entry.js +0 -29
- package/dist/cjs/ion-popover.cjs.entry.js +0 -365
- package/dist/cjs/ion-select-popover.cjs.entry.js +0 -35
- package/dist/cjs/status-tap-466a7c6a.js +0 -25
- package/dist/esm/app-globals-6451faf3.js +0 -7
- package/dist/esm/auth.store-dd944bc2.js +0 -2552
- package/dist/esm/button-active-97535443.js +0 -64
- package/dist/esm/feed.service-0fda1e36.js +0 -5787
- package/dist/esm/focus-visible-abf04ce3.js +0 -43
- package/dist/esm/framework-delegate-2c397da3.js +0 -34
- package/dist/esm/header-mobile-collapse_60.entry.js +0 -19
- package/dist/esm/index.es-a5bf9a49.js +0 -13748
- package/dist/esm/ion-action-sheet.entry.js +0 -257
- package/dist/esm/ion-alert.entry.js +0 -451
- package/dist/esm/ion-note.entry.js +0 -25
- package/dist/esm/ion-popover.entry.js +0 -361
- package/dist/esm/ion-select-popover.entry.js +0 -31
- package/dist/esm/status-tap-9221cd79.js +0 -23
- package/dist/sparkle-core/p-019d9d02.entry.js +0 -1
- package/dist/sparkle-core/p-02d6d899.js +0 -1
- package/dist/sparkle-core/p-03fd27d0.entry.js +0 -1
- package/dist/sparkle-core/p-07018d29.js +0 -1
- package/dist/sparkle-core/p-083d57a6.entry.js +0 -1
- package/dist/sparkle-core/p-090f2624.js +0 -1
- package/dist/sparkle-core/p-0e1c7c8c.js +0 -1
- package/dist/sparkle-core/p-101feae9.js +0 -1
- package/dist/sparkle-core/p-13b0cdfc.entry.js +0 -1
- package/dist/sparkle-core/p-13c9bf3a.entry.js +0 -1
- package/dist/sparkle-core/p-169920f1.js +0 -1
- package/dist/sparkle-core/p-1e1f5e98.entry.js +0 -1
- package/dist/sparkle-core/p-1e866c41.entry.js +0 -1
- package/dist/sparkle-core/p-2474bf60.entry.js +0 -1
- package/dist/sparkle-core/p-25bbf9b4.entry.js +0 -1
- package/dist/sparkle-core/p-2a45b732.js +0 -1
- package/dist/sparkle-core/p-2abf4d37.entry.js +0 -1
- package/dist/sparkle-core/p-2c5edb9f.entry.js +0 -1
- package/dist/sparkle-core/p-2d966d35.js +0 -1
- package/dist/sparkle-core/p-30b641a4.entry.js +0 -1
- package/dist/sparkle-core/p-34ea6639.entry.js +0 -1
- package/dist/sparkle-core/p-359422b6.entry.js +0 -1
- package/dist/sparkle-core/p-37bfb548.entry.js +0 -1
- package/dist/sparkle-core/p-38307b31.js +0 -1
- package/dist/sparkle-core/p-3a29a75b.entry.js +0 -1
- package/dist/sparkle-core/p-3bb55510.entry.js +0 -1
- package/dist/sparkle-core/p-3be0a218.js +0 -1
- package/dist/sparkle-core/p-417a8dd6.js +0 -1
- package/dist/sparkle-core/p-447163be.entry.js +0 -1
- package/dist/sparkle-core/p-49265a8e.entry.js +0 -1
- package/dist/sparkle-core/p-4950f841.entry.js +0 -1
- package/dist/sparkle-core/p-4b7db0e6.js +0 -1
- package/dist/sparkle-core/p-4d8cb365.entry.js +0 -1
- package/dist/sparkle-core/p-5073899e.entry.js +0 -1
- package/dist/sparkle-core/p-5b366c20.entry.js +0 -1
- package/dist/sparkle-core/p-5dce20b9.entry.js +0 -1
- package/dist/sparkle-core/p-6006beec.entry.js +0 -1
- package/dist/sparkle-core/p-600d04fc.entry.js +0 -1
- package/dist/sparkle-core/p-60828739.entry.js +0 -1
- package/dist/sparkle-core/p-6112b180.entry.js +0 -1
- package/dist/sparkle-core/p-66eb6b7a.entry.js +0 -1
- package/dist/sparkle-core/p-67ddec3f.entry.js +0 -1
- package/dist/sparkle-core/p-68cb7d41.entry.js +0 -1
- package/dist/sparkle-core/p-69cd49de.js +0 -1
- package/dist/sparkle-core/p-6edbdde5.entry.js +0 -1
- package/dist/sparkle-core/p-6f0ecbe3.js +0 -1
- package/dist/sparkle-core/p-765b8593.js +0 -1
- package/dist/sparkle-core/p-770128c8.js +0 -1
- package/dist/sparkle-core/p-7840618d.js +0 -1
- package/dist/sparkle-core/p-7b37d523.entry.js +0 -1
- package/dist/sparkle-core/p-7d83d006.entry.js +0 -1
- package/dist/sparkle-core/p-7f3d5344.js +0 -1
- package/dist/sparkle-core/p-81651f26.entry.js +0 -1
- package/dist/sparkle-core/p-86148067.entry.js +0 -1
- package/dist/sparkle-core/p-8b5bc1d6.entry.js +0 -1
- package/dist/sparkle-core/p-8c3ee44c.entry.js +0 -1
- package/dist/sparkle-core/p-9007a06b.entry.js +0 -1
- package/dist/sparkle-core/p-90482861.entry.js +0 -1
- package/dist/sparkle-core/p-a061537e.entry.js +0 -1
- package/dist/sparkle-core/p-a38ea475.js +0 -1
- package/dist/sparkle-core/p-ad1ddf1f.js +0 -483
- package/dist/sparkle-core/p-aef0bba0.js +0 -1
- package/dist/sparkle-core/p-b080c1e3.entry.js +0 -1
- package/dist/sparkle-core/p-b11fe0c7.js +0 -1
- package/dist/sparkle-core/p-bac45a26.entry.js +0 -1
- package/dist/sparkle-core/p-bbe5977b.entry.js +0 -1
- package/dist/sparkle-core/p-bc568dcb.js +0 -1
- package/dist/sparkle-core/p-bfb55f1d.js +0 -3
- package/dist/sparkle-core/p-c163c16d.entry.js +0 -1
- package/dist/sparkle-core/p-c3166584.entry.js +0 -1
- package/dist/sparkle-core/p-c34269ae.entry.js +0 -1
- package/dist/sparkle-core/p-c466ee32.js +0 -1
- package/dist/sparkle-core/p-c6710592.entry.js +0 -1
- package/dist/sparkle-core/p-c7022391.entry.js +0 -1
- package/dist/sparkle-core/p-d4ad796c.js +0 -1
- package/dist/sparkle-core/p-d6152660.entry.js +0 -1
- package/dist/sparkle-core/p-d63406d8.js +0 -1
- package/dist/sparkle-core/p-dba672d5.entry.js +0 -1
- package/dist/sparkle-core/p-dd73d01a.entry.js +0 -1
- package/dist/sparkle-core/p-de33872d.entry.js +0 -1
- package/dist/sparkle-core/p-dee2128a.entry.js +0 -1
- package/dist/sparkle-core/p-df07e132.entry.js +0 -1
- package/dist/sparkle-core/p-e5d5aaa5.js +0 -1
- package/dist/sparkle-core/p-e72c6d87.entry.js +0 -1
- package/dist/sparkle-core/p-e8df6ea6.entry.js +0 -1
- package/dist/sparkle-core/p-ef2a2172.js +0 -1
- package/dist/sparkle-core/p-f1a4ab33.entry.js +0 -1
- package/dist/sparkle-core/p-f43ac631.entry.js +0 -1
- package/dist/sparkle-core/p-f8063d7b.js +0 -1
- package/dist/sparkle-core/p-fd62283e.entry.js +0 -1
- package/dist/sparkle-core/p-fef71e0e.entry.js +0 -1
@@ -1,45 +1,35 @@
|
|
1
|
-
import { r as registerInstance,
|
2
|
-
import {
|
1
|
+
import { r as registerInstance, i as createEvent, e as getElement } from './index-5568e3fa.js';
|
2
|
+
import { c as componentOnReady, o as debounce } from './helpers-39367fe1.js';
|
3
3
|
|
4
|
+
/*!
|
5
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
6
|
+
*/
|
4
7
|
const ROUTER_INTENT_NONE = 'root';
|
5
8
|
const ROUTER_INTENT_FORWARD = 'forward';
|
6
9
|
const ROUTER_INTENT_BACK = 'back';
|
7
10
|
|
11
|
+
/*!
|
12
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
13
|
+
*/
|
14
|
+
/** Join the non empty segments with "/". */
|
8
15
|
const generatePath = (segments) => {
|
9
16
|
const path = segments
|
10
17
|
.filter(s => s.length > 0)
|
11
18
|
.join('/');
|
12
19
|
return '/' + path;
|
13
20
|
};
|
14
|
-
const
|
15
|
-
|
16
|
-
for (const route of chain) {
|
17
|
-
for (const segment of route.path) {
|
18
|
-
if (segment[0] === ':') {
|
19
|
-
const param = route.params && route.params[segment.slice(1)];
|
20
|
-
if (!param) {
|
21
|
-
return null;
|
22
|
-
}
|
23
|
-
path.push(param);
|
24
|
-
}
|
25
|
-
else if (segment !== '') {
|
26
|
-
path.push(segment);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
return path;
|
31
|
-
};
|
32
|
-
const writePath = (history, root, useHash, path, direction, state, queryString) => {
|
33
|
-
let url = generatePath([
|
34
|
-
...parsePath(root),
|
35
|
-
...path
|
36
|
-
]);
|
21
|
+
const generateUrl = (segments, useHash, queryString) => {
|
22
|
+
let url = generatePath(segments);
|
37
23
|
if (useHash) {
|
38
24
|
url = '#' + url;
|
39
25
|
}
|
40
26
|
if (queryString !== undefined) {
|
41
|
-
url
|
27
|
+
url += '?' + queryString;
|
42
28
|
}
|
29
|
+
return url;
|
30
|
+
};
|
31
|
+
const writeSegments = (history, root, useHash, segments, direction, state, queryString) => {
|
32
|
+
const url = generateUrl([...parsePath(root).segments, ...segments], useHash, queryString);
|
43
33
|
if (direction === ROUTER_INTENT_FORWARD) {
|
44
34
|
history.pushState(state, '', url);
|
45
35
|
}
|
@@ -47,58 +37,95 @@ const writePath = (history, root, useHash, path, direction, state, queryString)
|
|
47
37
|
history.replaceState(state, '', url);
|
48
38
|
}
|
49
39
|
};
|
50
|
-
|
51
|
-
|
40
|
+
/**
|
41
|
+
* Transforms a chain to a list of segments.
|
42
|
+
*
|
43
|
+
* Notes:
|
44
|
+
* - parameter segments of the form :param are replaced with their value,
|
45
|
+
* - null is returned when a value is missing for any parameter segment.
|
46
|
+
*/
|
47
|
+
const chainToSegments = (chain) => {
|
48
|
+
const segments = [];
|
49
|
+
for (const route of chain) {
|
50
|
+
for (const segment of route.segments) {
|
51
|
+
if (segment[0] === ':') {
|
52
|
+
const param = route.params && route.params[segment.slice(1)];
|
53
|
+
if (!param) {
|
54
|
+
return null;
|
55
|
+
}
|
56
|
+
segments.push(param);
|
57
|
+
}
|
58
|
+
else if (segment !== '') {
|
59
|
+
segments.push(segment);
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return segments;
|
64
|
+
};
|
65
|
+
/**
|
66
|
+
* Removes the prefix segments from the path segments.
|
67
|
+
*
|
68
|
+
* Return:
|
69
|
+
* - null when the path segments do not start with the passed prefix,
|
70
|
+
* - the path segments after the prefix otherwise.
|
71
|
+
*/
|
72
|
+
const removePrefix = (prefix, segments) => {
|
73
|
+
if (prefix.length > segments.length) {
|
52
74
|
return null;
|
53
75
|
}
|
54
76
|
if (prefix.length <= 1 && prefix[0] === '') {
|
55
|
-
return
|
77
|
+
return segments;
|
56
78
|
}
|
57
79
|
for (let i = 0; i < prefix.length; i++) {
|
58
|
-
if (prefix[i]
|
80
|
+
if (prefix[i] !== segments[i]) {
|
59
81
|
return null;
|
60
82
|
}
|
61
83
|
}
|
62
|
-
if (
|
84
|
+
if (segments.length === prefix.length) {
|
63
85
|
return [''];
|
64
86
|
}
|
65
|
-
return
|
87
|
+
return segments.slice(prefix.length);
|
66
88
|
};
|
67
|
-
const
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
? hash.slice(1)
|
73
|
-
: '';
|
74
|
-
}
|
75
|
-
const prefix = parsePath(root);
|
76
|
-
const path = parsePath(pathname);
|
77
|
-
return removePrefix(prefix, path);
|
89
|
+
const readSegments = (loc, root, useHash) => {
|
90
|
+
const prefix = parsePath(root).segments;
|
91
|
+
const pathname = useHash ? loc.hash.slice(1) : loc.pathname;
|
92
|
+
const segments = parsePath(pathname).segments;
|
93
|
+
return removePrefix(prefix, segments);
|
78
94
|
};
|
95
|
+
/**
|
96
|
+
* Parses the path to:
|
97
|
+
* - segments an array of '/' separated parts,
|
98
|
+
* - queryString (undefined when no query string).
|
99
|
+
*/
|
79
100
|
const parsePath = (path) => {
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
101
|
+
let segments = [''];
|
102
|
+
let queryString;
|
103
|
+
if (path != null) {
|
104
|
+
const qsStart = path.indexOf('?');
|
105
|
+
if (qsStart > -1) {
|
106
|
+
queryString = path.substring(qsStart + 1);
|
107
|
+
path = path.substring(0, qsStart);
|
108
|
+
}
|
109
|
+
segments = path.split('/')
|
110
|
+
.map(s => s.trim())
|
111
|
+
.filter(s => s.length > 0);
|
112
|
+
if (segments.length === 0) {
|
113
|
+
segments = [''];
|
114
|
+
}
|
92
115
|
}
|
116
|
+
return { segments, queryString };
|
93
117
|
};
|
94
118
|
|
119
|
+
/*!
|
120
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
121
|
+
*/
|
95
122
|
const printRoutes = (routes) => {
|
96
123
|
console.group(`[ion-core] ROUTES[${routes.length}]`);
|
97
124
|
for (const chain of routes) {
|
98
|
-
const
|
99
|
-
chain.forEach(r =>
|
125
|
+
const segments = [];
|
126
|
+
chain.forEach(r => segments.push(...r.segments));
|
100
127
|
const ids = chain.map(r => r.id);
|
101
|
-
console.debug(`%c ${generatePath(
|
128
|
+
console.debug(`%c ${generatePath(segments)}`, 'font-weight: bold; padding-left: 20px', '=>\t', `(${ids.join(', ')})`);
|
102
129
|
}
|
103
130
|
console.groupEnd();
|
104
131
|
};
|
@@ -106,12 +133,23 @@ const printRedirects = (redirects) => {
|
|
106
133
|
console.group(`[ion-core] REDIRECTS[${redirects.length}]`);
|
107
134
|
for (const redirect of redirects) {
|
108
135
|
if (redirect.to) {
|
109
|
-
console.debug('FROM: ', `$c ${generatePath(redirect.from)}`, 'font-weight: bold', ' TO: ', `$c ${generatePath(redirect.to)}`, 'font-weight: bold');
|
136
|
+
console.debug('FROM: ', `$c ${generatePath(redirect.from)}`, 'font-weight: bold', ' TO: ', `$c ${generatePath(redirect.to.segments)}`, 'font-weight: bold');
|
110
137
|
}
|
111
138
|
}
|
112
139
|
console.groupEnd();
|
113
140
|
};
|
114
141
|
|
142
|
+
/*!
|
143
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
144
|
+
*/
|
145
|
+
/**
|
146
|
+
* Activates the passed route chain.
|
147
|
+
*
|
148
|
+
* There must be exactly one outlet per route entry in the chain.
|
149
|
+
*
|
150
|
+
* The methods calls setRouteId on each of the outlet with the corresponding route entry in the chain.
|
151
|
+
* setRouteId will create or select the view in the outlet.
|
152
|
+
*/
|
115
153
|
const writeNavState = async (root, chain, direction, index, changed = false, animation) => {
|
116
154
|
try {
|
117
155
|
// find next navigation outlet in the DOM
|
@@ -120,7 +158,7 @@ const writeNavState = async (root, chain, direction, index, changed = false, ani
|
|
120
158
|
if (index >= chain.length || !outlet) {
|
121
159
|
return changed;
|
122
160
|
}
|
123
|
-
await
|
161
|
+
await new Promise(resolve => componentOnReady(outlet, resolve));
|
124
162
|
const route = chain[index];
|
125
163
|
const result = await outlet.setRouteId(route.id, route.params, direction, animation);
|
126
164
|
// if the outlet changed the page, reset navigation to neutral (no direction)
|
@@ -143,23 +181,21 @@ const writeNavState = async (root, chain, direction, index, changed = false, ani
|
|
143
181
|
return false;
|
144
182
|
}
|
145
183
|
};
|
184
|
+
/**
|
185
|
+
* Recursively walks the outlet in the DOM.
|
186
|
+
*
|
187
|
+
* The function returns a list of RouteID corresponding to each of the outlet and the last outlet without a RouteID.
|
188
|
+
*/
|
146
189
|
const readNavState = async (root) => {
|
147
190
|
const ids = [];
|
148
191
|
let outlet;
|
149
192
|
let node = root;
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
node = id.element;
|
157
|
-
id.element = undefined;
|
158
|
-
ids.push(id);
|
159
|
-
}
|
160
|
-
else {
|
161
|
-
break;
|
162
|
-
}
|
193
|
+
while (outlet = searchNavNode(node)) {
|
194
|
+
const id = await outlet.getRouteId();
|
195
|
+
if (id) {
|
196
|
+
node = id.element;
|
197
|
+
id.element = undefined;
|
198
|
+
ids.push(id);
|
163
199
|
}
|
164
200
|
else {
|
165
201
|
break;
|
@@ -172,27 +208,38 @@ const waitUntilNavNode = () => {
|
|
172
208
|
return Promise.resolve();
|
173
209
|
}
|
174
210
|
return new Promise(resolve => {
|
175
|
-
window.addEventListener('ionNavWillLoad', resolve, { once: true });
|
211
|
+
window.addEventListener('ionNavWillLoad', () => resolve(), { once: true });
|
176
212
|
});
|
177
213
|
};
|
178
|
-
|
214
|
+
/** Selector for all the outlets supported by the router. */
|
215
|
+
const OUTLET_SELECTOR = ':not([no-router]) ion-nav, :not([no-router]) ion-tabs, :not([no-router]) ion-router-outlet';
|
179
216
|
const searchNavNode = (root) => {
|
180
217
|
if (!root) {
|
181
218
|
return undefined;
|
182
219
|
}
|
183
|
-
if (root.matches(
|
220
|
+
if (root.matches(OUTLET_SELECTOR)) {
|
184
221
|
return root;
|
185
222
|
}
|
186
|
-
const outlet = root.querySelector(
|
187
|
-
return outlet ? outlet : undefined;
|
223
|
+
const outlet = root.querySelector(OUTLET_SELECTOR);
|
224
|
+
return outlet !== null && outlet !== void 0 ? outlet : undefined;
|
188
225
|
};
|
189
226
|
|
190
|
-
|
191
|
-
|
227
|
+
/*!
|
228
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
229
|
+
*/
|
230
|
+
/**
|
231
|
+
* Returns whether the given redirect matches the given path segments.
|
232
|
+
*
|
233
|
+
* A redirect matches when the segments of the path and redirect.from are equal.
|
234
|
+
* Note that segments are only checked until redirect.from contains a '*' which matches any path segment.
|
235
|
+
* The path ['some', 'path', 'to', 'page'] matches both ['some', 'path', 'to', 'page'] and ['some', 'path', '*'].
|
236
|
+
*/
|
237
|
+
const matchesRedirect = (segments, redirect) => {
|
238
|
+
const { from, to } = redirect;
|
192
239
|
if (to === undefined) {
|
193
240
|
return false;
|
194
241
|
}
|
195
|
-
if (from.length >
|
242
|
+
if (from.length > segments.length) {
|
196
243
|
return false;
|
197
244
|
}
|
198
245
|
for (let i = 0; i < from.length; i++) {
|
@@ -200,37 +247,83 @@ const matchesRedirect = (input, route) => {
|
|
200
247
|
if (expected === '*') {
|
201
248
|
return true;
|
202
249
|
}
|
203
|
-
if (expected !==
|
250
|
+
if (expected !== segments[i]) {
|
204
251
|
return false;
|
205
252
|
}
|
206
253
|
}
|
207
|
-
return from.length ===
|
254
|
+
return from.length === segments.length;
|
208
255
|
};
|
209
|
-
|
210
|
-
|
256
|
+
/** Returns the first redirect matching the path segments or undefined when no match found. */
|
257
|
+
const findRouteRedirect = (segments, redirects) => {
|
258
|
+
return redirects.find(redirect => matchesRedirect(segments, redirect));
|
211
259
|
};
|
212
260
|
const matchesIDs = (ids, chain) => {
|
213
261
|
const len = Math.min(ids.length, chain.length);
|
214
|
-
let
|
215
|
-
for (; i < len; i++) {
|
216
|
-
|
262
|
+
let score = 0;
|
263
|
+
for (let i = 0; i < len; i++) {
|
264
|
+
const routeId = ids[i];
|
265
|
+
const routeChain = chain[i];
|
266
|
+
// Skip results where the route id does not match the chain at the same index
|
267
|
+
if (routeId.id.toLowerCase() !== routeChain.id) {
|
217
268
|
break;
|
218
269
|
}
|
270
|
+
if (routeId.params) {
|
271
|
+
const routeIdParams = Object.keys(routeId.params);
|
272
|
+
// Only compare routes with the chain that have the same number of parameters.
|
273
|
+
if (routeIdParams.length === routeChain.segments.length) {
|
274
|
+
// Maps the route's params into a path based on the path variable names,
|
275
|
+
// to compare against the route chain format.
|
276
|
+
//
|
277
|
+
// Before:
|
278
|
+
// ```ts
|
279
|
+
// {
|
280
|
+
// params: {
|
281
|
+
// s1: 'a',
|
282
|
+
// s2: 'b'
|
283
|
+
// }
|
284
|
+
// }
|
285
|
+
// ```
|
286
|
+
//
|
287
|
+
// After:
|
288
|
+
// ```ts
|
289
|
+
// [':s1',':s2']
|
290
|
+
// ```
|
291
|
+
//
|
292
|
+
const pathWithParams = routeIdParams.map(key => `:${key}`);
|
293
|
+
for (let j = 0; j < pathWithParams.length; j++) {
|
294
|
+
// Skip results where the path variable is not a match
|
295
|
+
if (pathWithParams[j].toLowerCase() !== routeChain.segments[j]) {
|
296
|
+
break;
|
297
|
+
}
|
298
|
+
// Weight path matches for the same index higher.
|
299
|
+
score++;
|
300
|
+
}
|
301
|
+
}
|
302
|
+
}
|
303
|
+
// Weight id matches
|
304
|
+
score++;
|
219
305
|
}
|
220
|
-
return
|
306
|
+
return score;
|
221
307
|
};
|
222
|
-
|
223
|
-
|
308
|
+
/**
|
309
|
+
* Matches the segments against the chain.
|
310
|
+
*
|
311
|
+
* Returns:
|
312
|
+
* - null when there is no match,
|
313
|
+
* - a chain with the params properties updated with the parameter segments on match.
|
314
|
+
*/
|
315
|
+
const matchesSegments = (segments, chain) => {
|
316
|
+
const inputSegments = new RouterSegments(segments);
|
224
317
|
let matchesDefault = false;
|
225
318
|
let allparams;
|
226
319
|
for (let i = 0; i < chain.length; i++) {
|
227
|
-
const
|
228
|
-
if (
|
320
|
+
const chainSegments = chain[i].segments;
|
321
|
+
if (chainSegments[0] === '') {
|
229
322
|
matchesDefault = true;
|
230
323
|
}
|
231
324
|
else {
|
232
|
-
for (const segment of
|
233
|
-
const data =
|
325
|
+
for (const segment of chainSegments) {
|
326
|
+
const data = inputSegments.next();
|
234
327
|
// data param
|
235
328
|
if (segment[0] === ':') {
|
236
329
|
if (data === '') {
|
@@ -248,7 +341,7 @@ const matchesPath = (inputPath, chain) => {
|
|
248
341
|
}
|
249
342
|
}
|
250
343
|
const matches = (matchesDefault)
|
251
|
-
? matchesDefault === (
|
344
|
+
? matchesDefault === (inputSegments.next() === '')
|
252
345
|
: true;
|
253
346
|
if (!matches) {
|
254
347
|
return null;
|
@@ -256,7 +349,7 @@ const matchesPath = (inputPath, chain) => {
|
|
256
349
|
if (allparams) {
|
257
350
|
return chain.map((route, i) => ({
|
258
351
|
id: route.id,
|
259
|
-
|
352
|
+
segments: route.segments,
|
260
353
|
params: mergeParams(route.params, allparams[i]),
|
261
354
|
beforeEnter: route.beforeEnter,
|
262
355
|
beforeLeave: route.beforeLeave
|
@@ -264,62 +357,84 @@ const matchesPath = (inputPath, chain) => {
|
|
264
357
|
}
|
265
358
|
return chain;
|
266
359
|
};
|
360
|
+
/**
|
361
|
+
* Merges the route parameter objects.
|
362
|
+
* Returns undefined when both parameters are undefined.
|
363
|
+
*/
|
267
364
|
const mergeParams = (a, b) => {
|
268
|
-
|
269
|
-
return b;
|
270
|
-
}
|
271
|
-
else if (a && !b) {
|
272
|
-
return a;
|
273
|
-
}
|
274
|
-
else if (a && b) {
|
275
|
-
return Object.assign(Object.assign({}, a), b);
|
276
|
-
}
|
277
|
-
return undefined;
|
365
|
+
return a || b ? Object.assign(Object.assign({}, a), b) : undefined;
|
278
366
|
};
|
279
|
-
|
367
|
+
/**
|
368
|
+
* Finds the best match for the ids in the chains.
|
369
|
+
*
|
370
|
+
* Returns the best match or null when no match is found.
|
371
|
+
* When a chain is returned the parameters are updated from the RouteIDs.
|
372
|
+
* That is they contain both the componentProps of the <ion-route> and the parameter segment.
|
373
|
+
*/
|
374
|
+
const findChainForIDs = (ids, chains) => {
|
280
375
|
let match = null;
|
281
376
|
let maxMatches = 0;
|
282
|
-
const plainIDs = ids.map(i => i.id);
|
283
377
|
for (const chain of chains) {
|
284
|
-
const score = matchesIDs(
|
378
|
+
const score = matchesIDs(ids, chain);
|
285
379
|
if (score > maxMatches) {
|
286
380
|
match = chain;
|
287
381
|
maxMatches = score;
|
288
382
|
}
|
289
383
|
}
|
290
384
|
if (match) {
|
291
|
-
return match.map((route, i) =>
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
385
|
+
return match.map((route, i) => {
|
386
|
+
var _a;
|
387
|
+
return ({
|
388
|
+
id: route.id,
|
389
|
+
segments: route.segments,
|
390
|
+
params: mergeParams(route.params, (_a = ids[i]) === null || _a === void 0 ? void 0 : _a.params)
|
391
|
+
});
|
392
|
+
});
|
296
393
|
}
|
297
394
|
return null;
|
298
395
|
};
|
299
|
-
|
396
|
+
/**
|
397
|
+
* Finds the best match for the segments in the chains.
|
398
|
+
*
|
399
|
+
* Returns the best match or null when no match is found.
|
400
|
+
* When a chain is returned the parameters are updated from the segments.
|
401
|
+
* That is they contain both the componentProps of the <ion-route> and the parameter segments.
|
402
|
+
*/
|
403
|
+
const findChainForSegments = (segments, chains) => {
|
300
404
|
let match = null;
|
301
|
-
let
|
405
|
+
let bestScore = 0;
|
302
406
|
for (const chain of chains) {
|
303
|
-
const matchedChain =
|
407
|
+
const matchedChain = matchesSegments(segments, chain);
|
304
408
|
if (matchedChain !== null) {
|
305
409
|
const score = computePriority(matchedChain);
|
306
|
-
if (score >
|
307
|
-
|
410
|
+
if (score > bestScore) {
|
411
|
+
bestScore = score;
|
308
412
|
match = matchedChain;
|
309
413
|
}
|
310
414
|
}
|
311
415
|
}
|
312
416
|
return match;
|
313
417
|
};
|
418
|
+
/**
|
419
|
+
* Computes the priority of a chain.
|
420
|
+
*
|
421
|
+
* Parameter segments are given a lower priority over fixed segments.
|
422
|
+
*
|
423
|
+
* Considering the following 2 chains matching the path /path/to/page:
|
424
|
+
* - /path/to/:where
|
425
|
+
* - /path/to/page
|
426
|
+
*
|
427
|
+
* The second one will be given a higher priority because "page" is a fixed segment (vs ":where", a parameter segment).
|
428
|
+
*/
|
314
429
|
const computePriority = (chain) => {
|
315
430
|
let score = 1;
|
316
431
|
let level = 1;
|
317
432
|
for (const route of chain) {
|
318
|
-
for (const
|
319
|
-
if (
|
433
|
+
for (const segment of route.segments) {
|
434
|
+
if (segment[0] === ':') {
|
320
435
|
score += Math.pow(1, level);
|
321
436
|
}
|
322
|
-
else if (
|
437
|
+
else if (segment !== '') {
|
323
438
|
score += Math.pow(2, level);
|
324
439
|
}
|
325
440
|
level++;
|
@@ -328,80 +443,100 @@ const computePriority = (chain) => {
|
|
328
443
|
return score;
|
329
444
|
};
|
330
445
|
class RouterSegments {
|
331
|
-
constructor(
|
332
|
-
this.
|
446
|
+
constructor(segments) {
|
447
|
+
this.segments = segments.slice();
|
333
448
|
}
|
334
449
|
next() {
|
335
|
-
if (this.
|
336
|
-
return this.
|
450
|
+
if (this.segments.length > 0) {
|
451
|
+
return this.segments.shift();
|
337
452
|
}
|
338
453
|
return '';
|
339
454
|
}
|
340
455
|
}
|
341
456
|
|
457
|
+
/*!
|
458
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
459
|
+
*/
|
460
|
+
const readProp = (el, prop) => {
|
461
|
+
if (prop in el) {
|
462
|
+
return el[prop];
|
463
|
+
}
|
464
|
+
if (el.hasAttribute(prop)) {
|
465
|
+
return el.getAttribute(prop);
|
466
|
+
}
|
467
|
+
return null;
|
468
|
+
};
|
469
|
+
/**
|
470
|
+
* Extracts the redirects (that is <ion-route-redirect> elements inside the root).
|
471
|
+
*
|
472
|
+
* The redirects are returned as a list of RouteRedirect.
|
473
|
+
*/
|
342
474
|
const readRedirects = (root) => {
|
343
475
|
return Array.from(root.children)
|
344
476
|
.filter(el => el.tagName === 'ION-ROUTE-REDIRECT')
|
345
477
|
.map(el => {
|
346
478
|
const to = readProp(el, 'to');
|
347
479
|
return {
|
348
|
-
from: parsePath(readProp(el, 'from')),
|
480
|
+
from: parsePath(readProp(el, 'from')).segments,
|
349
481
|
to: to == null ? undefined : parsePath(to),
|
350
482
|
};
|
351
483
|
});
|
352
484
|
};
|
485
|
+
/**
|
486
|
+
* Extracts all the routes (that is <ion-route> elements inside the root).
|
487
|
+
*
|
488
|
+
* The routes are returned as a list of chains - the flattened tree.
|
489
|
+
*/
|
353
490
|
const readRoutes = (root) => {
|
354
491
|
return flattenRouterTree(readRouteNodes(root));
|
355
492
|
};
|
356
|
-
|
493
|
+
/**
|
494
|
+
* Reads the route nodes as a tree modeled after the DOM tree of <ion-route> elements.
|
495
|
+
*
|
496
|
+
* Note: routes without a component are ignored together with their children.
|
497
|
+
*/
|
498
|
+
const readRouteNodes = (node) => {
|
357
499
|
return Array.from(node.children)
|
358
500
|
.filter(el => el.tagName === 'ION-ROUTE' && el.component)
|
359
501
|
.map(el => {
|
360
502
|
const component = readProp(el, 'component');
|
361
|
-
if (component == null) {
|
362
|
-
throw new Error('component missing in ion-route');
|
363
|
-
}
|
364
503
|
return {
|
365
|
-
|
504
|
+
segments: parsePath(readProp(el, 'url')).segments,
|
366
505
|
id: component.toLowerCase(),
|
367
506
|
params: el.componentProps,
|
368
507
|
beforeLeave: el.beforeLeave,
|
369
508
|
beforeEnter: el.beforeEnter,
|
370
|
-
children: readRouteNodes(
|
509
|
+
children: readRouteNodes(el)
|
371
510
|
};
|
372
511
|
});
|
373
512
|
};
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
return el.getAttribute(prop);
|
380
|
-
}
|
381
|
-
return null;
|
382
|
-
};
|
513
|
+
/**
|
514
|
+
* Flattens a RouterTree in a list of chains.
|
515
|
+
*
|
516
|
+
* Each chain represents a path from the root node to a terminal node.
|
517
|
+
*/
|
383
518
|
const flattenRouterTree = (nodes) => {
|
384
|
-
const
|
519
|
+
const chains = [];
|
385
520
|
for (const node of nodes) {
|
386
|
-
flattenNode([],
|
521
|
+
flattenNode([], chains, node);
|
387
522
|
}
|
388
|
-
return
|
523
|
+
return chains;
|
389
524
|
};
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
525
|
+
/** Flattens a route node recursively and push each branch to the chains list. */
|
526
|
+
const flattenNode = (chain, chains, node) => {
|
527
|
+
chain = [...chain, {
|
528
|
+
id: node.id,
|
529
|
+
segments: node.segments,
|
530
|
+
params: node.params,
|
531
|
+
beforeLeave: node.beforeLeave,
|
532
|
+
beforeEnter: node.beforeEnter
|
533
|
+
}];
|
399
534
|
if (node.children.length === 0) {
|
400
|
-
|
535
|
+
chains.push(chain);
|
401
536
|
return;
|
402
537
|
}
|
403
|
-
for (const
|
404
|
-
flattenNode(
|
538
|
+
for (const child of node.children) {
|
539
|
+
flattenNode(chain, chains, child);
|
405
540
|
}
|
406
541
|
};
|
407
542
|
|
@@ -415,9 +550,8 @@ const Router = class {
|
|
415
550
|
this.state = 0;
|
416
551
|
this.lastState = 0;
|
417
552
|
/**
|
418
|
-
*
|
419
|
-
*
|
420
|
-
*
|
553
|
+
* The root path to use when matching URLs. By default, this is set to "/", but you can specify
|
554
|
+
* an alternate prefix for all URL paths.
|
421
555
|
*/
|
422
556
|
this.root = '/';
|
423
557
|
/**
|
@@ -430,17 +564,26 @@ const Router = class {
|
|
430
564
|
* Usually "hash-less" navigation works better for SEO and it's more user friendly too, but it might
|
431
565
|
* requires additional server-side configuration in order to properly work.
|
432
566
|
*
|
433
|
-
* On the
|
567
|
+
* On the other side hash-navigation is much easier to deploy, it even works over the file protocol.
|
434
568
|
*
|
435
569
|
* By default, this property is `true`, change to `false` to allow hash-less URLs.
|
436
570
|
*/
|
437
571
|
this.useHash = true;
|
438
572
|
}
|
439
573
|
async componentWillLoad() {
|
440
|
-
console.debug('[ion-router] router will load');
|
441
574
|
await waitUntilNavNode();
|
442
|
-
|
443
|
-
|
575
|
+
const canProceed = await this.runGuards(this.getSegments());
|
576
|
+
if (canProceed !== true) {
|
577
|
+
if (typeof canProceed === 'object') {
|
578
|
+
const { redirect } = canProceed;
|
579
|
+
const path = parsePath(redirect);
|
580
|
+
this.setSegments(path.segments, ROUTER_INTENT_NONE, path.queryString);
|
581
|
+
await this.writeNavStateRoot(path.segments, ROUTER_INTENT_NONE);
|
582
|
+
}
|
583
|
+
}
|
584
|
+
else {
|
585
|
+
await this.onRoutesChanged();
|
586
|
+
}
|
444
587
|
}
|
445
588
|
componentDidLoad() {
|
446
589
|
window.addEventListener('ionRouteRedirectChanged', debounce(this.onRedirectChanged.bind(this), 10));
|
@@ -448,16 +591,17 @@ const Router = class {
|
|
448
591
|
}
|
449
592
|
async onPopState() {
|
450
593
|
const direction = this.historyDirection();
|
451
|
-
let
|
452
|
-
const canProceed = await this.runGuards(
|
594
|
+
let segments = this.getSegments();
|
595
|
+
const canProceed = await this.runGuards(segments);
|
453
596
|
if (canProceed !== true) {
|
454
597
|
if (typeof canProceed === 'object') {
|
455
|
-
|
598
|
+
segments = parsePath(canProceed.redirect).segments;
|
599
|
+
}
|
600
|
+
else {
|
601
|
+
return false;
|
456
602
|
}
|
457
|
-
return false;
|
458
603
|
}
|
459
|
-
|
460
|
-
return this.writeNavStateRoot(path, direction);
|
604
|
+
return this.writeNavStateRoot(segments, direction);
|
461
605
|
}
|
462
606
|
onBackButton(ev) {
|
463
607
|
ev.detail.register(0, processNextHandler => {
|
@@ -479,42 +623,39 @@ const Router = class {
|
|
479
623
|
return true;
|
480
624
|
}
|
481
625
|
/**
|
482
|
-
* Navigate to the specified
|
626
|
+
* Navigate to the specified path.
|
483
627
|
*
|
484
|
-
* @param
|
628
|
+
* @param path The path to navigate to.
|
485
629
|
* @param direction The direction of the animation. Defaults to `"forward"`.
|
486
630
|
*/
|
487
|
-
async push(
|
488
|
-
|
489
|
-
|
631
|
+
async push(path, direction = 'forward', animation) {
|
632
|
+
var _a;
|
633
|
+
if (path.startsWith('.')) {
|
634
|
+
const currentPath = (_a = this.previousPath) !== null && _a !== void 0 ? _a : '/';
|
635
|
+
// Convert currentPath to an URL by pre-pending a protocol and a host to resolve the relative path.
|
636
|
+
const url = new URL(path, `https://host/${currentPath}`);
|
637
|
+
path = url.pathname + url.search;
|
490
638
|
}
|
491
|
-
|
492
|
-
|
493
|
-
let queryString = url.split('?')[1];
|
494
|
-
const canProceed = await this.runGuards(path);
|
639
|
+
let parsedPath = parsePath(path);
|
640
|
+
const canProceed = await this.runGuards(parsedPath.segments);
|
495
641
|
if (canProceed !== true) {
|
496
642
|
if (typeof canProceed === 'object') {
|
497
|
-
|
498
|
-
queryString = canProceed.redirect.split('?')[1];
|
643
|
+
parsedPath = parsePath(canProceed.redirect);
|
499
644
|
}
|
500
645
|
else {
|
501
646
|
return false;
|
502
647
|
}
|
503
648
|
}
|
504
|
-
this.
|
505
|
-
return this.writeNavStateRoot(
|
649
|
+
this.setSegments(parsedPath.segments, direction, parsedPath.queryString);
|
650
|
+
return this.writeNavStateRoot(parsedPath.segments, direction, animation);
|
506
651
|
}
|
507
|
-
/**
|
508
|
-
* Go back to previous page in the window.history.
|
509
|
-
*/
|
652
|
+
/** Go back to previous page in the window.history. */
|
510
653
|
back() {
|
511
654
|
window.history.back();
|
512
655
|
return Promise.resolve(this.waitPromise);
|
513
656
|
}
|
514
657
|
/** @internal */
|
515
658
|
async printDebug() {
|
516
|
-
console.debug('CURRENT PATH', this.getPath());
|
517
|
-
console.debug('PREVIOUS PATH', this.previousPath);
|
518
659
|
printRoutes(readRoutes(this.el));
|
519
660
|
printRedirects(readRedirects(this.el));
|
520
661
|
}
|
@@ -526,35 +667,37 @@ const Router = class {
|
|
526
667
|
}
|
527
668
|
const { ids, outlet } = await readNavState(window.document.body);
|
528
669
|
const routes = readRoutes(this.el);
|
529
|
-
const chain =
|
670
|
+
const chain = findChainForIDs(ids, routes);
|
530
671
|
if (!chain) {
|
531
672
|
console.warn('[ion-router] no matching URL for ', ids.map(i => i.id));
|
532
673
|
return false;
|
533
674
|
}
|
534
|
-
const
|
535
|
-
if (!
|
675
|
+
const segments = chainToSegments(chain);
|
676
|
+
if (!segments) {
|
536
677
|
console.warn('[ion-router] router could not match path because some required param is missing');
|
537
678
|
return false;
|
538
679
|
}
|
539
|
-
|
540
|
-
this.
|
541
|
-
await this.safeWriteNavState(outlet, chain, ROUTER_INTENT_NONE, path, null, ids.length);
|
680
|
+
this.setSegments(segments, direction);
|
681
|
+
await this.safeWriteNavState(outlet, chain, ROUTER_INTENT_NONE, segments, null, ids.length);
|
542
682
|
return true;
|
543
683
|
}
|
684
|
+
/** This handler gets called when a `ion-route-redirect` component is added to the DOM or if the from or to property of such node changes. */
|
544
685
|
onRedirectChanged() {
|
545
|
-
const
|
546
|
-
if (
|
547
|
-
this.writeNavStateRoot(
|
686
|
+
const segments = this.getSegments();
|
687
|
+
if (segments && findRouteRedirect(segments, readRedirects(this.el))) {
|
688
|
+
this.writeNavStateRoot(segments, ROUTER_INTENT_NONE);
|
548
689
|
}
|
549
690
|
}
|
691
|
+
/** This handler gets called when a `ion-route` component is added to the DOM or if the from or to property of such node changes. */
|
550
692
|
onRoutesChanged() {
|
551
|
-
return this.writeNavStateRoot(this.
|
693
|
+
return this.writeNavStateRoot(this.getSegments(), ROUTER_INTENT_NONE);
|
552
694
|
}
|
553
695
|
historyDirection() {
|
696
|
+
var _a;
|
554
697
|
const win = window;
|
555
698
|
if (win.history.state === null) {
|
556
699
|
this.state++;
|
557
|
-
win.history.replaceState(this.state, win.document.title, win.document.location
|
700
|
+
win.history.replaceState(this.state, win.document.title, (_a = win.document.location) === null || _a === void 0 ? void 0 : _a.href);
|
558
701
|
}
|
559
702
|
const state = win.history.state;
|
560
703
|
const lastState = this.lastState;
|
@@ -562,42 +705,41 @@ const Router = class {
|
|
562
705
|
if (state > lastState || (state >= lastState && lastState > 0)) {
|
563
706
|
return ROUTER_INTENT_FORWARD;
|
564
707
|
}
|
565
|
-
|
708
|
+
if (state < lastState) {
|
566
709
|
return ROUTER_INTENT_BACK;
|
567
710
|
}
|
568
|
-
|
569
|
-
return ROUTER_INTENT_NONE;
|
570
|
-
}
|
711
|
+
return ROUTER_INTENT_NONE;
|
571
712
|
}
|
572
|
-
async writeNavStateRoot(
|
573
|
-
if (!
|
713
|
+
async writeNavStateRoot(segments, direction, animation) {
|
714
|
+
if (!segments) {
|
574
715
|
console.error('[ion-router] URL is not part of the routing set');
|
575
716
|
return false;
|
576
717
|
}
|
577
718
|
// lookup redirect rule
|
578
719
|
const redirects = readRedirects(this.el);
|
579
|
-
const redirect =
|
720
|
+
const redirect = findRouteRedirect(segments, redirects);
|
580
721
|
let redirectFrom = null;
|
581
722
|
if (redirect) {
|
582
|
-
|
723
|
+
const { segments: toSegments, queryString } = redirect.to;
|
724
|
+
this.setSegments(toSegments, direction, queryString);
|
583
725
|
redirectFrom = redirect.from;
|
584
|
-
|
726
|
+
segments = toSegments;
|
585
727
|
}
|
586
728
|
// lookup route chain
|
587
729
|
const routes = readRoutes(this.el);
|
588
|
-
const chain =
|
730
|
+
const chain = findChainForSegments(segments, routes);
|
589
731
|
if (!chain) {
|
590
732
|
console.error('[ion-router] the path does not match any route');
|
591
733
|
return false;
|
592
734
|
}
|
593
735
|
// write DOM give
|
594
|
-
return this.safeWriteNavState(document.body, chain, direction,
|
736
|
+
return this.safeWriteNavState(document.body, chain, direction, segments, redirectFrom, 0, animation);
|
595
737
|
}
|
596
|
-
async safeWriteNavState(node, chain, direction,
|
738
|
+
async safeWriteNavState(node, chain, direction, segments, redirectFrom, index = 0, animation) {
|
597
739
|
const unlock = await this.lock();
|
598
740
|
let changed = false;
|
599
741
|
try {
|
600
|
-
changed = await this.writeNavState(node, chain, direction,
|
742
|
+
changed = await this.writeNavState(node, chain, direction, segments, redirectFrom, index, animation);
|
601
743
|
}
|
602
744
|
catch (e) {
|
603
745
|
console.error(e);
|
@@ -614,62 +756,64 @@ const Router = class {
|
|
614
756
|
}
|
615
757
|
return resolve;
|
616
758
|
}
|
617
|
-
|
759
|
+
/**
|
760
|
+
* Executes the beforeLeave hook of the source route and the beforeEnter hook of the target route if they exist.
|
761
|
+
*
|
762
|
+
* When the beforeLeave hook does not return true (to allow navigating) then that value is returned early and the beforeEnter is executed.
|
763
|
+
* Otherwise the beforeEnterHook hook of the target route is executed.
|
764
|
+
*/
|
765
|
+
async runGuards(to = this.getSegments(), from) {
|
766
|
+
if (from === undefined) {
|
767
|
+
from = parsePath(this.previousPath).segments;
|
768
|
+
}
|
618
769
|
if (!to || !from) {
|
619
770
|
return true;
|
620
771
|
}
|
621
772
|
const routes = readRoutes(this.el);
|
622
|
-
const
|
623
|
-
const fromChain = routerPathToChain(from, routes);
|
624
|
-
const beforeEnterHook = toChain && toChain[toChain.length - 1].beforeEnter;
|
773
|
+
const fromChain = findChainForSegments(from, routes);
|
625
774
|
const beforeLeaveHook = fromChain && fromChain[fromChain.length - 1].beforeLeave;
|
626
775
|
const canLeave = beforeLeaveHook ? await beforeLeaveHook() : true;
|
627
776
|
if (canLeave === false || typeof canLeave === 'object') {
|
628
777
|
return canLeave;
|
629
778
|
}
|
630
|
-
const
|
631
|
-
|
632
|
-
|
633
|
-
}
|
634
|
-
return true;
|
779
|
+
const toChain = findChainForSegments(to, routes);
|
780
|
+
const beforeEnterHook = toChain && toChain[toChain.length - 1].beforeEnter;
|
781
|
+
return beforeEnterHook ? beforeEnterHook() : true;
|
635
782
|
}
|
636
|
-
async writeNavState(node, chain, direction,
|
783
|
+
async writeNavState(node, chain, direction, segments, redirectFrom, index = 0, animation) {
|
637
784
|
if (this.busy) {
|
638
785
|
console.warn('[ion-router] router is busy, transition was cancelled');
|
639
786
|
return false;
|
640
787
|
}
|
641
788
|
this.busy = true;
|
642
789
|
// generate route event and emit will change
|
643
|
-
const routeEvent = this.routeChangeEvent(
|
790
|
+
const routeEvent = this.routeChangeEvent(segments, redirectFrom);
|
644
791
|
if (routeEvent) {
|
645
792
|
this.ionRouteWillChange.emit(routeEvent);
|
646
793
|
}
|
647
794
|
const changed = await writeNavState(node, chain, direction, index, false, animation);
|
648
795
|
this.busy = false;
|
649
|
-
if (changed) {
|
650
|
-
console.debug('[ion-router] route changed', path);
|
651
|
-
}
|
652
796
|
// emit did change
|
653
797
|
if (routeEvent) {
|
654
798
|
this.ionRouteDidChange.emit(routeEvent);
|
655
799
|
}
|
656
800
|
return changed;
|
657
801
|
}
|
658
|
-
|
802
|
+
setSegments(segments, direction, queryString) {
|
659
803
|
this.state++;
|
660
|
-
|
804
|
+
writeSegments(window.history, this.root, this.useHash, segments, direction, this.state, queryString);
|
661
805
|
}
|
662
|
-
|
663
|
-
return
|
806
|
+
getSegments() {
|
807
|
+
return readSegments(window.location, this.root, this.useHash);
|
664
808
|
}
|
665
|
-
routeChangeEvent(
|
809
|
+
routeChangeEvent(toSegments, redirectFromSegments) {
|
666
810
|
const from = this.previousPath;
|
667
|
-
const to = generatePath(
|
811
|
+
const to = generatePath(toSegments);
|
668
812
|
this.previousPath = to;
|
669
813
|
if (to === from) {
|
670
814
|
return null;
|
671
815
|
}
|
672
|
-
const redirectedFrom =
|
816
|
+
const redirectedFrom = redirectFromSegments ? generatePath(redirectFromSegments) : null;
|
673
817
|
return {
|
674
818
|
from,
|
675
819
|
redirectedFrom,
|