@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
@@ -2,48 +2,38 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
-
const index = require('./index-
|
6
|
-
const helpers = require('./helpers-
|
5
|
+
const index = require('./index-bae2a754.js');
|
6
|
+
const helpers = require('./helpers-7e28976c.js');
|
7
7
|
|
8
|
+
/*!
|
9
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
10
|
+
*/
|
8
11
|
const ROUTER_INTENT_NONE = 'root';
|
9
12
|
const ROUTER_INTENT_FORWARD = 'forward';
|
10
13
|
const ROUTER_INTENT_BACK = 'back';
|
11
14
|
|
15
|
+
/*!
|
16
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
17
|
+
*/
|
18
|
+
/** Join the non empty segments with "/". */
|
12
19
|
const generatePath = (segments) => {
|
13
20
|
const path = segments
|
14
21
|
.filter(s => s.length > 0)
|
15
22
|
.join('/');
|
16
23
|
return '/' + path;
|
17
24
|
};
|
18
|
-
const
|
19
|
-
|
20
|
-
for (const route of chain) {
|
21
|
-
for (const segment of route.path) {
|
22
|
-
if (segment[0] === ':') {
|
23
|
-
const param = route.params && route.params[segment.slice(1)];
|
24
|
-
if (!param) {
|
25
|
-
return null;
|
26
|
-
}
|
27
|
-
path.push(param);
|
28
|
-
}
|
29
|
-
else if (segment !== '') {
|
30
|
-
path.push(segment);
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
return path;
|
35
|
-
};
|
36
|
-
const writePath = (history, root, useHash, path, direction, state, queryString) => {
|
37
|
-
let url = generatePath([
|
38
|
-
...parsePath(root),
|
39
|
-
...path
|
40
|
-
]);
|
25
|
+
const generateUrl = (segments, useHash, queryString) => {
|
26
|
+
let url = generatePath(segments);
|
41
27
|
if (useHash) {
|
42
28
|
url = '#' + url;
|
43
29
|
}
|
44
30
|
if (queryString !== undefined) {
|
45
|
-
url
|
31
|
+
url += '?' + queryString;
|
46
32
|
}
|
33
|
+
return url;
|
34
|
+
};
|
35
|
+
const writeSegments = (history, root, useHash, segments, direction, state, queryString) => {
|
36
|
+
const url = generateUrl([...parsePath(root).segments, ...segments], useHash, queryString);
|
47
37
|
if (direction === ROUTER_INTENT_FORWARD) {
|
48
38
|
history.pushState(state, '', url);
|
49
39
|
}
|
@@ -51,58 +41,95 @@ const writePath = (history, root, useHash, path, direction, state, queryString)
|
|
51
41
|
history.replaceState(state, '', url);
|
52
42
|
}
|
53
43
|
};
|
54
|
-
|
55
|
-
|
44
|
+
/**
|
45
|
+
* Transforms a chain to a list of segments.
|
46
|
+
*
|
47
|
+
* Notes:
|
48
|
+
* - parameter segments of the form :param are replaced with their value,
|
49
|
+
* - null is returned when a value is missing for any parameter segment.
|
50
|
+
*/
|
51
|
+
const chainToSegments = (chain) => {
|
52
|
+
const segments = [];
|
53
|
+
for (const route of chain) {
|
54
|
+
for (const segment of route.segments) {
|
55
|
+
if (segment[0] === ':') {
|
56
|
+
const param = route.params && route.params[segment.slice(1)];
|
57
|
+
if (!param) {
|
58
|
+
return null;
|
59
|
+
}
|
60
|
+
segments.push(param);
|
61
|
+
}
|
62
|
+
else if (segment !== '') {
|
63
|
+
segments.push(segment);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
return segments;
|
68
|
+
};
|
69
|
+
/**
|
70
|
+
* Removes the prefix segments from the path segments.
|
71
|
+
*
|
72
|
+
* Return:
|
73
|
+
* - null when the path segments do not start with the passed prefix,
|
74
|
+
* - the path segments after the prefix otherwise.
|
75
|
+
*/
|
76
|
+
const removePrefix = (prefix, segments) => {
|
77
|
+
if (prefix.length > segments.length) {
|
56
78
|
return null;
|
57
79
|
}
|
58
80
|
if (prefix.length <= 1 && prefix[0] === '') {
|
59
|
-
return
|
81
|
+
return segments;
|
60
82
|
}
|
61
83
|
for (let i = 0; i < prefix.length; i++) {
|
62
|
-
if (prefix[i]
|
84
|
+
if (prefix[i] !== segments[i]) {
|
63
85
|
return null;
|
64
86
|
}
|
65
87
|
}
|
66
|
-
if (
|
88
|
+
if (segments.length === prefix.length) {
|
67
89
|
return [''];
|
68
90
|
}
|
69
|
-
return
|
91
|
+
return segments.slice(prefix.length);
|
70
92
|
};
|
71
|
-
const
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
? hash.slice(1)
|
77
|
-
: '';
|
78
|
-
}
|
79
|
-
const prefix = parsePath(root);
|
80
|
-
const path = parsePath(pathname);
|
81
|
-
return removePrefix(prefix, path);
|
93
|
+
const readSegments = (loc, root, useHash) => {
|
94
|
+
const prefix = parsePath(root).segments;
|
95
|
+
const pathname = useHash ? loc.hash.slice(1) : loc.pathname;
|
96
|
+
const segments = parsePath(pathname).segments;
|
97
|
+
return removePrefix(prefix, segments);
|
82
98
|
};
|
99
|
+
/**
|
100
|
+
* Parses the path to:
|
101
|
+
* - segments an array of '/' separated parts,
|
102
|
+
* - queryString (undefined when no query string).
|
103
|
+
*/
|
83
104
|
const parsePath = (path) => {
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
105
|
+
let segments = [''];
|
106
|
+
let queryString;
|
107
|
+
if (path != null) {
|
108
|
+
const qsStart = path.indexOf('?');
|
109
|
+
if (qsStart > -1) {
|
110
|
+
queryString = path.substring(qsStart + 1);
|
111
|
+
path = path.substring(0, qsStart);
|
112
|
+
}
|
113
|
+
segments = path.split('/')
|
114
|
+
.map(s => s.trim())
|
115
|
+
.filter(s => s.length > 0);
|
116
|
+
if (segments.length === 0) {
|
117
|
+
segments = [''];
|
118
|
+
}
|
96
119
|
}
|
120
|
+
return { segments, queryString };
|
97
121
|
};
|
98
122
|
|
123
|
+
/*!
|
124
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
125
|
+
*/
|
99
126
|
const printRoutes = (routes) => {
|
100
127
|
console.group(`[ion-core] ROUTES[${routes.length}]`);
|
101
128
|
for (const chain of routes) {
|
102
|
-
const
|
103
|
-
chain.forEach(r =>
|
129
|
+
const segments = [];
|
130
|
+
chain.forEach(r => segments.push(...r.segments));
|
104
131
|
const ids = chain.map(r => r.id);
|
105
|
-
console.debug(`%c ${generatePath(
|
132
|
+
console.debug(`%c ${generatePath(segments)}`, 'font-weight: bold; padding-left: 20px', '=>\t', `(${ids.join(', ')})`);
|
106
133
|
}
|
107
134
|
console.groupEnd();
|
108
135
|
};
|
@@ -110,12 +137,23 @@ const printRedirects = (redirects) => {
|
|
110
137
|
console.group(`[ion-core] REDIRECTS[${redirects.length}]`);
|
111
138
|
for (const redirect of redirects) {
|
112
139
|
if (redirect.to) {
|
113
|
-
console.debug('FROM: ', `$c ${generatePath(redirect.from)}`, 'font-weight: bold', ' TO: ', `$c ${generatePath(redirect.to)}`, 'font-weight: bold');
|
140
|
+
console.debug('FROM: ', `$c ${generatePath(redirect.from)}`, 'font-weight: bold', ' TO: ', `$c ${generatePath(redirect.to.segments)}`, 'font-weight: bold');
|
114
141
|
}
|
115
142
|
}
|
116
143
|
console.groupEnd();
|
117
144
|
};
|
118
145
|
|
146
|
+
/*!
|
147
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
148
|
+
*/
|
149
|
+
/**
|
150
|
+
* Activates the passed route chain.
|
151
|
+
*
|
152
|
+
* There must be exactly one outlet per route entry in the chain.
|
153
|
+
*
|
154
|
+
* The methods calls setRouteId on each of the outlet with the corresponding route entry in the chain.
|
155
|
+
* setRouteId will create or select the view in the outlet.
|
156
|
+
*/
|
119
157
|
const writeNavState = async (root, chain, direction, index, changed = false, animation) => {
|
120
158
|
try {
|
121
159
|
// find next navigation outlet in the DOM
|
@@ -124,7 +162,7 @@ const writeNavState = async (root, chain, direction, index, changed = false, ani
|
|
124
162
|
if (index >= chain.length || !outlet) {
|
125
163
|
return changed;
|
126
164
|
}
|
127
|
-
await
|
165
|
+
await new Promise(resolve => helpers.componentOnReady(outlet, resolve));
|
128
166
|
const route = chain[index];
|
129
167
|
const result = await outlet.setRouteId(route.id, route.params, direction, animation);
|
130
168
|
// if the outlet changed the page, reset navigation to neutral (no direction)
|
@@ -147,23 +185,21 @@ const writeNavState = async (root, chain, direction, index, changed = false, ani
|
|
147
185
|
return false;
|
148
186
|
}
|
149
187
|
};
|
188
|
+
/**
|
189
|
+
* Recursively walks the outlet in the DOM.
|
190
|
+
*
|
191
|
+
* The function returns a list of RouteID corresponding to each of the outlet and the last outlet without a RouteID.
|
192
|
+
*/
|
150
193
|
const readNavState = async (root) => {
|
151
194
|
const ids = [];
|
152
195
|
let outlet;
|
153
196
|
let node = root;
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
node = id.element;
|
161
|
-
id.element = undefined;
|
162
|
-
ids.push(id);
|
163
|
-
}
|
164
|
-
else {
|
165
|
-
break;
|
166
|
-
}
|
197
|
+
while (outlet = searchNavNode(node)) {
|
198
|
+
const id = await outlet.getRouteId();
|
199
|
+
if (id) {
|
200
|
+
node = id.element;
|
201
|
+
id.element = undefined;
|
202
|
+
ids.push(id);
|
167
203
|
}
|
168
204
|
else {
|
169
205
|
break;
|
@@ -176,27 +212,38 @@ const waitUntilNavNode = () => {
|
|
176
212
|
return Promise.resolve();
|
177
213
|
}
|
178
214
|
return new Promise(resolve => {
|
179
|
-
window.addEventListener('ionNavWillLoad', resolve, { once: true });
|
215
|
+
window.addEventListener('ionNavWillLoad', () => resolve(), { once: true });
|
180
216
|
});
|
181
217
|
};
|
182
|
-
|
218
|
+
/** Selector for all the outlets supported by the router. */
|
219
|
+
const OUTLET_SELECTOR = ':not([no-router]) ion-nav, :not([no-router]) ion-tabs, :not([no-router]) ion-router-outlet';
|
183
220
|
const searchNavNode = (root) => {
|
184
221
|
if (!root) {
|
185
222
|
return undefined;
|
186
223
|
}
|
187
|
-
if (root.matches(
|
224
|
+
if (root.matches(OUTLET_SELECTOR)) {
|
188
225
|
return root;
|
189
226
|
}
|
190
|
-
const outlet = root.querySelector(
|
191
|
-
return outlet ? outlet : undefined;
|
227
|
+
const outlet = root.querySelector(OUTLET_SELECTOR);
|
228
|
+
return outlet !== null && outlet !== void 0 ? outlet : undefined;
|
192
229
|
};
|
193
230
|
|
194
|
-
|
195
|
-
|
231
|
+
/*!
|
232
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
233
|
+
*/
|
234
|
+
/**
|
235
|
+
* Returns whether the given redirect matches the given path segments.
|
236
|
+
*
|
237
|
+
* A redirect matches when the segments of the path and redirect.from are equal.
|
238
|
+
* Note that segments are only checked until redirect.from contains a '*' which matches any path segment.
|
239
|
+
* The path ['some', 'path', 'to', 'page'] matches both ['some', 'path', 'to', 'page'] and ['some', 'path', '*'].
|
240
|
+
*/
|
241
|
+
const matchesRedirect = (segments, redirect) => {
|
242
|
+
const { from, to } = redirect;
|
196
243
|
if (to === undefined) {
|
197
244
|
return false;
|
198
245
|
}
|
199
|
-
if (from.length >
|
246
|
+
if (from.length > segments.length) {
|
200
247
|
return false;
|
201
248
|
}
|
202
249
|
for (let i = 0; i < from.length; i++) {
|
@@ -204,37 +251,83 @@ const matchesRedirect = (input, route) => {
|
|
204
251
|
if (expected === '*') {
|
205
252
|
return true;
|
206
253
|
}
|
207
|
-
if (expected !==
|
254
|
+
if (expected !== segments[i]) {
|
208
255
|
return false;
|
209
256
|
}
|
210
257
|
}
|
211
|
-
return from.length ===
|
258
|
+
return from.length === segments.length;
|
212
259
|
};
|
213
|
-
|
214
|
-
|
260
|
+
/** Returns the first redirect matching the path segments or undefined when no match found. */
|
261
|
+
const findRouteRedirect = (segments, redirects) => {
|
262
|
+
return redirects.find(redirect => matchesRedirect(segments, redirect));
|
215
263
|
};
|
216
264
|
const matchesIDs = (ids, chain) => {
|
217
265
|
const len = Math.min(ids.length, chain.length);
|
218
|
-
let
|
219
|
-
for (; i < len; i++) {
|
220
|
-
|
266
|
+
let score = 0;
|
267
|
+
for (let i = 0; i < len; i++) {
|
268
|
+
const routeId = ids[i];
|
269
|
+
const routeChain = chain[i];
|
270
|
+
// Skip results where the route id does not match the chain at the same index
|
271
|
+
if (routeId.id.toLowerCase() !== routeChain.id) {
|
221
272
|
break;
|
222
273
|
}
|
274
|
+
if (routeId.params) {
|
275
|
+
const routeIdParams = Object.keys(routeId.params);
|
276
|
+
// Only compare routes with the chain that have the same number of parameters.
|
277
|
+
if (routeIdParams.length === routeChain.segments.length) {
|
278
|
+
// Maps the route's params into a path based on the path variable names,
|
279
|
+
// to compare against the route chain format.
|
280
|
+
//
|
281
|
+
// Before:
|
282
|
+
// ```ts
|
283
|
+
// {
|
284
|
+
// params: {
|
285
|
+
// s1: 'a',
|
286
|
+
// s2: 'b'
|
287
|
+
// }
|
288
|
+
// }
|
289
|
+
// ```
|
290
|
+
//
|
291
|
+
// After:
|
292
|
+
// ```ts
|
293
|
+
// [':s1',':s2']
|
294
|
+
// ```
|
295
|
+
//
|
296
|
+
const pathWithParams = routeIdParams.map(key => `:${key}`);
|
297
|
+
for (let j = 0; j < pathWithParams.length; j++) {
|
298
|
+
// Skip results where the path variable is not a match
|
299
|
+
if (pathWithParams[j].toLowerCase() !== routeChain.segments[j]) {
|
300
|
+
break;
|
301
|
+
}
|
302
|
+
// Weight path matches for the same index higher.
|
303
|
+
score++;
|
304
|
+
}
|
305
|
+
}
|
306
|
+
}
|
307
|
+
// Weight id matches
|
308
|
+
score++;
|
223
309
|
}
|
224
|
-
return
|
310
|
+
return score;
|
225
311
|
};
|
226
|
-
|
227
|
-
|
312
|
+
/**
|
313
|
+
* Matches the segments against the chain.
|
314
|
+
*
|
315
|
+
* Returns:
|
316
|
+
* - null when there is no match,
|
317
|
+
* - a chain with the params properties updated with the parameter segments on match.
|
318
|
+
*/
|
319
|
+
const matchesSegments = (segments, chain) => {
|
320
|
+
const inputSegments = new RouterSegments(segments);
|
228
321
|
let matchesDefault = false;
|
229
322
|
let allparams;
|
230
323
|
for (let i = 0; i < chain.length; i++) {
|
231
|
-
const
|
232
|
-
if (
|
324
|
+
const chainSegments = chain[i].segments;
|
325
|
+
if (chainSegments[0] === '') {
|
233
326
|
matchesDefault = true;
|
234
327
|
}
|
235
328
|
else {
|
236
|
-
for (const segment of
|
237
|
-
const data =
|
329
|
+
for (const segment of chainSegments) {
|
330
|
+
const data = inputSegments.next();
|
238
331
|
// data param
|
239
332
|
if (segment[0] === ':') {
|
240
333
|
if (data === '') {
|
@@ -252,7 +345,7 @@ const matchesPath = (inputPath, chain) => {
|
|
252
345
|
}
|
253
346
|
}
|
254
347
|
const matches = (matchesDefault)
|
255
|
-
? matchesDefault === (
|
348
|
+
? matchesDefault === (inputSegments.next() === '')
|
256
349
|
: true;
|
257
350
|
if (!matches) {
|
258
351
|
return null;
|
@@ -260,7 +353,7 @@ const matchesPath = (inputPath, chain) => {
|
|
260
353
|
if (allparams) {
|
261
354
|
return chain.map((route, i) => ({
|
262
355
|
id: route.id,
|
263
|
-
|
356
|
+
segments: route.segments,
|
264
357
|
params: mergeParams(route.params, allparams[i]),
|
265
358
|
beforeEnter: route.beforeEnter,
|
266
359
|
beforeLeave: route.beforeLeave
|
@@ -268,62 +361,84 @@ const matchesPath = (inputPath, chain) => {
|
|
268
361
|
}
|
269
362
|
return chain;
|
270
363
|
};
|
364
|
+
/**
|
365
|
+
* Merges the route parameter objects.
|
366
|
+
* Returns undefined when both parameters are undefined.
|
367
|
+
*/
|
271
368
|
const mergeParams = (a, b) => {
|
272
|
-
|
273
|
-
return b;
|
274
|
-
}
|
275
|
-
else if (a && !b) {
|
276
|
-
return a;
|
277
|
-
}
|
278
|
-
else if (a && b) {
|
279
|
-
return Object.assign(Object.assign({}, a), b);
|
280
|
-
}
|
281
|
-
return undefined;
|
369
|
+
return a || b ? Object.assign(Object.assign({}, a), b) : undefined;
|
282
370
|
};
|
283
|
-
|
371
|
+
/**
|
372
|
+
* Finds the best match for the ids in the chains.
|
373
|
+
*
|
374
|
+
* Returns the best match or null when no match is found.
|
375
|
+
* When a chain is returned the parameters are updated from the RouteIDs.
|
376
|
+
* That is they contain both the componentProps of the <ion-route> and the parameter segment.
|
377
|
+
*/
|
378
|
+
const findChainForIDs = (ids, chains) => {
|
284
379
|
let match = null;
|
285
380
|
let maxMatches = 0;
|
286
|
-
const plainIDs = ids.map(i => i.id);
|
287
381
|
for (const chain of chains) {
|
288
|
-
const score = matchesIDs(
|
382
|
+
const score = matchesIDs(ids, chain);
|
289
383
|
if (score > maxMatches) {
|
290
384
|
match = chain;
|
291
385
|
maxMatches = score;
|
292
386
|
}
|
293
387
|
}
|
294
388
|
if (match) {
|
295
|
-
return match.map((route, i) =>
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
389
|
+
return match.map((route, i) => {
|
390
|
+
var _a;
|
391
|
+
return ({
|
392
|
+
id: route.id,
|
393
|
+
segments: route.segments,
|
394
|
+
params: mergeParams(route.params, (_a = ids[i]) === null || _a === void 0 ? void 0 : _a.params)
|
395
|
+
});
|
396
|
+
});
|
300
397
|
}
|
301
398
|
return null;
|
302
399
|
};
|
303
|
-
|
400
|
+
/**
|
401
|
+
* Finds the best match for the segments in the chains.
|
402
|
+
*
|
403
|
+
* Returns the best match or null when no match is found.
|
404
|
+
* When a chain is returned the parameters are updated from the segments.
|
405
|
+
* That is they contain both the componentProps of the <ion-route> and the parameter segments.
|
406
|
+
*/
|
407
|
+
const findChainForSegments = (segments, chains) => {
|
304
408
|
let match = null;
|
305
|
-
let
|
409
|
+
let bestScore = 0;
|
306
410
|
for (const chain of chains) {
|
307
|
-
const matchedChain =
|
411
|
+
const matchedChain = matchesSegments(segments, chain);
|
308
412
|
if (matchedChain !== null) {
|
309
413
|
const score = computePriority(matchedChain);
|
310
|
-
if (score >
|
311
|
-
|
414
|
+
if (score > bestScore) {
|
415
|
+
bestScore = score;
|
312
416
|
match = matchedChain;
|
313
417
|
}
|
314
418
|
}
|
315
419
|
}
|
316
420
|
return match;
|
317
421
|
};
|
422
|
+
/**
|
423
|
+
* Computes the priority of a chain.
|
424
|
+
*
|
425
|
+
* Parameter segments are given a lower priority over fixed segments.
|
426
|
+
*
|
427
|
+
* Considering the following 2 chains matching the path /path/to/page:
|
428
|
+
* - /path/to/:where
|
429
|
+
* - /path/to/page
|
430
|
+
*
|
431
|
+
* The second one will be given a higher priority because "page" is a fixed segment (vs ":where", a parameter segment).
|
432
|
+
*/
|
318
433
|
const computePriority = (chain) => {
|
319
434
|
let score = 1;
|
320
435
|
let level = 1;
|
321
436
|
for (const route of chain) {
|
322
|
-
for (const
|
323
|
-
if (
|
437
|
+
for (const segment of route.segments) {
|
438
|
+
if (segment[0] === ':') {
|
324
439
|
score += Math.pow(1, level);
|
325
440
|
}
|
326
|
-
else if (
|
441
|
+
else if (segment !== '') {
|
327
442
|
score += Math.pow(2, level);
|
328
443
|
}
|
329
444
|
level++;
|
@@ -332,80 +447,100 @@ const computePriority = (chain) => {
|
|
332
447
|
return score;
|
333
448
|
};
|
334
449
|
class RouterSegments {
|
335
|
-
constructor(
|
336
|
-
this.
|
450
|
+
constructor(segments) {
|
451
|
+
this.segments = segments.slice();
|
337
452
|
}
|
338
453
|
next() {
|
339
|
-
if (this.
|
340
|
-
return this.
|
454
|
+
if (this.segments.length > 0) {
|
455
|
+
return this.segments.shift();
|
341
456
|
}
|
342
457
|
return '';
|
343
458
|
}
|
344
459
|
}
|
345
460
|
|
461
|
+
/*!
|
462
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
463
|
+
*/
|
464
|
+
const readProp = (el, prop) => {
|
465
|
+
if (prop in el) {
|
466
|
+
return el[prop];
|
467
|
+
}
|
468
|
+
if (el.hasAttribute(prop)) {
|
469
|
+
return el.getAttribute(prop);
|
470
|
+
}
|
471
|
+
return null;
|
472
|
+
};
|
473
|
+
/**
|
474
|
+
* Extracts the redirects (that is <ion-route-redirect> elements inside the root).
|
475
|
+
*
|
476
|
+
* The redirects are returned as a list of RouteRedirect.
|
477
|
+
*/
|
346
478
|
const readRedirects = (root) => {
|
347
479
|
return Array.from(root.children)
|
348
480
|
.filter(el => el.tagName === 'ION-ROUTE-REDIRECT')
|
349
481
|
.map(el => {
|
350
482
|
const to = readProp(el, 'to');
|
351
483
|
return {
|
352
|
-
from: parsePath(readProp(el, 'from')),
|
484
|
+
from: parsePath(readProp(el, 'from')).segments,
|
353
485
|
to: to == null ? undefined : parsePath(to),
|
354
486
|
};
|
355
487
|
});
|
356
488
|
};
|
489
|
+
/**
|
490
|
+
* Extracts all the routes (that is <ion-route> elements inside the root).
|
491
|
+
*
|
492
|
+
* The routes are returned as a list of chains - the flattened tree.
|
493
|
+
*/
|
357
494
|
const readRoutes = (root) => {
|
358
495
|
return flattenRouterTree(readRouteNodes(root));
|
359
496
|
};
|
360
|
-
|
497
|
+
/**
|
498
|
+
* Reads the route nodes as a tree modeled after the DOM tree of <ion-route> elements.
|
499
|
+
*
|
500
|
+
* Note: routes without a component are ignored together with their children.
|
501
|
+
*/
|
502
|
+
const readRouteNodes = (node) => {
|
361
503
|
return Array.from(node.children)
|
362
504
|
.filter(el => el.tagName === 'ION-ROUTE' && el.component)
|
363
505
|
.map(el => {
|
364
506
|
const component = readProp(el, 'component');
|
365
|
-
if (component == null) {
|
366
|
-
throw new Error('component missing in ion-route');
|
367
|
-
}
|
368
507
|
return {
|
369
|
-
|
508
|
+
segments: parsePath(readProp(el, 'url')).segments,
|
370
509
|
id: component.toLowerCase(),
|
371
510
|
params: el.componentProps,
|
372
511
|
beforeLeave: el.beforeLeave,
|
373
512
|
beforeEnter: el.beforeEnter,
|
374
|
-
children: readRouteNodes(
|
513
|
+
children: readRouteNodes(el)
|
375
514
|
};
|
376
515
|
});
|
377
516
|
};
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
return el.getAttribute(prop);
|
384
|
-
}
|
385
|
-
return null;
|
386
|
-
};
|
517
|
+
/**
|
518
|
+
* Flattens a RouterTree in a list of chains.
|
519
|
+
*
|
520
|
+
* Each chain represents a path from the root node to a terminal node.
|
521
|
+
*/
|
387
522
|
const flattenRouterTree = (nodes) => {
|
388
|
-
const
|
523
|
+
const chains = [];
|
389
524
|
for (const node of nodes) {
|
390
|
-
flattenNode([],
|
525
|
+
flattenNode([], chains, node);
|
391
526
|
}
|
392
|
-
return
|
527
|
+
return chains;
|
393
528
|
};
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
529
|
+
/** Flattens a route node recursively and push each branch to the chains list. */
|
530
|
+
const flattenNode = (chain, chains, node) => {
|
531
|
+
chain = [...chain, {
|
532
|
+
id: node.id,
|
533
|
+
segments: node.segments,
|
534
|
+
params: node.params,
|
535
|
+
beforeLeave: node.beforeLeave,
|
536
|
+
beforeEnter: node.beforeEnter
|
537
|
+
}];
|
403
538
|
if (node.children.length === 0) {
|
404
|
-
|
539
|
+
chains.push(chain);
|
405
540
|
return;
|
406
541
|
}
|
407
|
-
for (const
|
408
|
-
flattenNode(
|
542
|
+
for (const child of node.children) {
|
543
|
+
flattenNode(chain, chains, child);
|
409
544
|
}
|
410
545
|
};
|
411
546
|
|
@@ -419,9 +554,8 @@ const Router = class {
|
|
419
554
|
this.state = 0;
|
420
555
|
this.lastState = 0;
|
421
556
|
/**
|
422
|
-
*
|
423
|
-
*
|
424
|
-
*
|
557
|
+
* The root path to use when matching URLs. By default, this is set to "/", but you can specify
|
558
|
+
* an alternate prefix for all URL paths.
|
425
559
|
*/
|
426
560
|
this.root = '/';
|
427
561
|
/**
|
@@ -434,17 +568,26 @@ const Router = class {
|
|
434
568
|
* Usually "hash-less" navigation works better for SEO and it's more user friendly too, but it might
|
435
569
|
* requires additional server-side configuration in order to properly work.
|
436
570
|
*
|
437
|
-
* On the
|
571
|
+
* On the other side hash-navigation is much easier to deploy, it even works over the file protocol.
|
438
572
|
*
|
439
573
|
* By default, this property is `true`, change to `false` to allow hash-less URLs.
|
440
574
|
*/
|
441
575
|
this.useHash = true;
|
442
576
|
}
|
443
577
|
async componentWillLoad() {
|
444
|
-
console.debug('[ion-router] router will load');
|
445
578
|
await waitUntilNavNode();
|
446
|
-
|
447
|
-
|
579
|
+
const canProceed = await this.runGuards(this.getSegments());
|
580
|
+
if (canProceed !== true) {
|
581
|
+
if (typeof canProceed === 'object') {
|
582
|
+
const { redirect } = canProceed;
|
583
|
+
const path = parsePath(redirect);
|
584
|
+
this.setSegments(path.segments, ROUTER_INTENT_NONE, path.queryString);
|
585
|
+
await this.writeNavStateRoot(path.segments, ROUTER_INTENT_NONE);
|
586
|
+
}
|
587
|
+
}
|
588
|
+
else {
|
589
|
+
await this.onRoutesChanged();
|
590
|
+
}
|
448
591
|
}
|
449
592
|
componentDidLoad() {
|
450
593
|
window.addEventListener('ionRouteRedirectChanged', helpers.debounce(this.onRedirectChanged.bind(this), 10));
|
@@ -452,16 +595,17 @@ const Router = class {
|
|
452
595
|
}
|
453
596
|
async onPopState() {
|
454
597
|
const direction = this.historyDirection();
|
455
|
-
let
|
456
|
-
const canProceed = await this.runGuards(
|
598
|
+
let segments = this.getSegments();
|
599
|
+
const canProceed = await this.runGuards(segments);
|
457
600
|
if (canProceed !== true) {
|
458
601
|
if (typeof canProceed === 'object') {
|
459
|
-
|
602
|
+
segments = parsePath(canProceed.redirect).segments;
|
603
|
+
}
|
604
|
+
else {
|
605
|
+
return false;
|
460
606
|
}
|
461
|
-
return false;
|
462
607
|
}
|
463
|
-
|
464
|
-
return this.writeNavStateRoot(path, direction);
|
608
|
+
return this.writeNavStateRoot(segments, direction);
|
465
609
|
}
|
466
610
|
onBackButton(ev) {
|
467
611
|
ev.detail.register(0, processNextHandler => {
|
@@ -483,42 +627,39 @@ const Router = class {
|
|
483
627
|
return true;
|
484
628
|
}
|
485
629
|
/**
|
486
|
-
* Navigate to the specified
|
630
|
+
* Navigate to the specified path.
|
487
631
|
*
|
488
|
-
* @param
|
632
|
+
* @param path The path to navigate to.
|
489
633
|
* @param direction The direction of the animation. Defaults to `"forward"`.
|
490
634
|
*/
|
491
|
-
async push(
|
492
|
-
|
493
|
-
|
635
|
+
async push(path, direction = 'forward', animation) {
|
636
|
+
var _a;
|
637
|
+
if (path.startsWith('.')) {
|
638
|
+
const currentPath = (_a = this.previousPath) !== null && _a !== void 0 ? _a : '/';
|
639
|
+
// Convert currentPath to an URL by pre-pending a protocol and a host to resolve the relative path.
|
640
|
+
const url = new URL(path, `https://host/${currentPath}`);
|
641
|
+
path = url.pathname + url.search;
|
494
642
|
}
|
495
|
-
|
496
|
-
|
497
|
-
let queryString = url.split('?')[1];
|
498
|
-
const canProceed = await this.runGuards(path);
|
643
|
+
let parsedPath = parsePath(path);
|
644
|
+
const canProceed = await this.runGuards(parsedPath.segments);
|
499
645
|
if (canProceed !== true) {
|
500
646
|
if (typeof canProceed === 'object') {
|
501
|
-
|
502
|
-
queryString = canProceed.redirect.split('?')[1];
|
647
|
+
parsedPath = parsePath(canProceed.redirect);
|
503
648
|
}
|
504
649
|
else {
|
505
650
|
return false;
|
506
651
|
}
|
507
652
|
}
|
508
|
-
this.
|
509
|
-
return this.writeNavStateRoot(
|
653
|
+
this.setSegments(parsedPath.segments, direction, parsedPath.queryString);
|
654
|
+
return this.writeNavStateRoot(parsedPath.segments, direction, animation);
|
510
655
|
}
|
511
|
-
/**
|
512
|
-
* Go back to previous page in the window.history.
|
513
|
-
*/
|
656
|
+
/** Go back to previous page in the window.history. */
|
514
657
|
back() {
|
515
658
|
window.history.back();
|
516
659
|
return Promise.resolve(this.waitPromise);
|
517
660
|
}
|
518
661
|
/** @internal */
|
519
662
|
async printDebug() {
|
520
|
-
console.debug('CURRENT PATH', this.getPath());
|
521
|
-
console.debug('PREVIOUS PATH', this.previousPath);
|
522
663
|
printRoutes(readRoutes(this.el));
|
523
664
|
printRedirects(readRedirects(this.el));
|
524
665
|
}
|
@@ -530,35 +671,37 @@ const Router = class {
|
|
530
671
|
}
|
531
672
|
const { ids, outlet } = await readNavState(window.document.body);
|
532
673
|
const routes = readRoutes(this.el);
|
533
|
-
const chain =
|
674
|
+
const chain = findChainForIDs(ids, routes);
|
534
675
|
if (!chain) {
|
535
676
|
console.warn('[ion-router] no matching URL for ', ids.map(i => i.id));
|
536
677
|
return false;
|
537
678
|
}
|
538
|
-
const
|
539
|
-
if (!
|
679
|
+
const segments = chainToSegments(chain);
|
680
|
+
if (!segments) {
|
540
681
|
console.warn('[ion-router] router could not match path because some required param is missing');
|
541
682
|
return false;
|
542
683
|
}
|
543
|
-
|
544
|
-
this.
|
545
|
-
await this.safeWriteNavState(outlet, chain, ROUTER_INTENT_NONE, path, null, ids.length);
|
684
|
+
this.setSegments(segments, direction);
|
685
|
+
await this.safeWriteNavState(outlet, chain, ROUTER_INTENT_NONE, segments, null, ids.length);
|
546
686
|
return true;
|
547
687
|
}
|
688
|
+
/** 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. */
|
548
689
|
onRedirectChanged() {
|
549
|
-
const
|
550
|
-
if (
|
551
|
-
this.writeNavStateRoot(
|
690
|
+
const segments = this.getSegments();
|
691
|
+
if (segments && findRouteRedirect(segments, readRedirects(this.el))) {
|
692
|
+
this.writeNavStateRoot(segments, ROUTER_INTENT_NONE);
|
552
693
|
}
|
553
694
|
}
|
695
|
+
/** 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. */
|
554
696
|
onRoutesChanged() {
|
555
|
-
return this.writeNavStateRoot(this.
|
697
|
+
return this.writeNavStateRoot(this.getSegments(), ROUTER_INTENT_NONE);
|
556
698
|
}
|
557
699
|
historyDirection() {
|
700
|
+
var _a;
|
558
701
|
const win = window;
|
559
702
|
if (win.history.state === null) {
|
560
703
|
this.state++;
|
561
|
-
win.history.replaceState(this.state, win.document.title, win.document.location
|
704
|
+
win.history.replaceState(this.state, win.document.title, (_a = win.document.location) === null || _a === void 0 ? void 0 : _a.href);
|
562
705
|
}
|
563
706
|
const state = win.history.state;
|
564
707
|
const lastState = this.lastState;
|
@@ -566,42 +709,41 @@ const Router = class {
|
|
566
709
|
if (state > lastState || (state >= lastState && lastState > 0)) {
|
567
710
|
return ROUTER_INTENT_FORWARD;
|
568
711
|
}
|
569
|
-
|
712
|
+
if (state < lastState) {
|
570
713
|
return ROUTER_INTENT_BACK;
|
571
714
|
}
|
572
|
-
|
573
|
-
return ROUTER_INTENT_NONE;
|
574
|
-
}
|
715
|
+
return ROUTER_INTENT_NONE;
|
575
716
|
}
|
576
|
-
async writeNavStateRoot(
|
577
|
-
if (!
|
717
|
+
async writeNavStateRoot(segments, direction, animation) {
|
718
|
+
if (!segments) {
|
578
719
|
console.error('[ion-router] URL is not part of the routing set');
|
579
720
|
return false;
|
580
721
|
}
|
581
722
|
// lookup redirect rule
|
582
723
|
const redirects = readRedirects(this.el);
|
583
|
-
const redirect =
|
724
|
+
const redirect = findRouteRedirect(segments, redirects);
|
584
725
|
let redirectFrom = null;
|
585
726
|
if (redirect) {
|
586
|
-
|
727
|
+
const { segments: toSegments, queryString } = redirect.to;
|
728
|
+
this.setSegments(toSegments, direction, queryString);
|
587
729
|
redirectFrom = redirect.from;
|
588
|
-
|
730
|
+
segments = toSegments;
|
589
731
|
}
|
590
732
|
// lookup route chain
|
591
733
|
const routes = readRoutes(this.el);
|
592
|
-
const chain =
|
734
|
+
const chain = findChainForSegments(segments, routes);
|
593
735
|
if (!chain) {
|
594
736
|
console.error('[ion-router] the path does not match any route');
|
595
737
|
return false;
|
596
738
|
}
|
597
739
|
// write DOM give
|
598
|
-
return this.safeWriteNavState(document.body, chain, direction,
|
740
|
+
return this.safeWriteNavState(document.body, chain, direction, segments, redirectFrom, 0, animation);
|
599
741
|
}
|
600
|
-
async safeWriteNavState(node, chain, direction,
|
742
|
+
async safeWriteNavState(node, chain, direction, segments, redirectFrom, index = 0, animation) {
|
601
743
|
const unlock = await this.lock();
|
602
744
|
let changed = false;
|
603
745
|
try {
|
604
|
-
changed = await this.writeNavState(node, chain, direction,
|
746
|
+
changed = await this.writeNavState(node, chain, direction, segments, redirectFrom, index, animation);
|
605
747
|
}
|
606
748
|
catch (e) {
|
607
749
|
console.error(e);
|
@@ -618,62 +760,64 @@ const Router = class {
|
|
618
760
|
}
|
619
761
|
return resolve;
|
620
762
|
}
|
621
|
-
|
763
|
+
/**
|
764
|
+
* Executes the beforeLeave hook of the source route and the beforeEnter hook of the target route if they exist.
|
765
|
+
*
|
766
|
+
* When the beforeLeave hook does not return true (to allow navigating) then that value is returned early and the beforeEnter is executed.
|
767
|
+
* Otherwise the beforeEnterHook hook of the target route is executed.
|
768
|
+
*/
|
769
|
+
async runGuards(to = this.getSegments(), from) {
|
770
|
+
if (from === undefined) {
|
771
|
+
from = parsePath(this.previousPath).segments;
|
772
|
+
}
|
622
773
|
if (!to || !from) {
|
623
774
|
return true;
|
624
775
|
}
|
625
776
|
const routes = readRoutes(this.el);
|
626
|
-
const
|
627
|
-
const fromChain = routerPathToChain(from, routes);
|
628
|
-
const beforeEnterHook = toChain && toChain[toChain.length - 1].beforeEnter;
|
777
|
+
const fromChain = findChainForSegments(from, routes);
|
629
778
|
const beforeLeaveHook = fromChain && fromChain[fromChain.length - 1].beforeLeave;
|
630
779
|
const canLeave = beforeLeaveHook ? await beforeLeaveHook() : true;
|
631
780
|
if (canLeave === false || typeof canLeave === 'object') {
|
632
781
|
return canLeave;
|
633
782
|
}
|
634
|
-
const
|
635
|
-
|
636
|
-
|
637
|
-
}
|
638
|
-
return true;
|
783
|
+
const toChain = findChainForSegments(to, routes);
|
784
|
+
const beforeEnterHook = toChain && toChain[toChain.length - 1].beforeEnter;
|
785
|
+
return beforeEnterHook ? beforeEnterHook() : true;
|
639
786
|
}
|
640
|
-
async writeNavState(node, chain, direction,
|
787
|
+
async writeNavState(node, chain, direction, segments, redirectFrom, index = 0, animation) {
|
641
788
|
if (this.busy) {
|
642
789
|
console.warn('[ion-router] router is busy, transition was cancelled');
|
643
790
|
return false;
|
644
791
|
}
|
645
792
|
this.busy = true;
|
646
793
|
// generate route event and emit will change
|
647
|
-
const routeEvent = this.routeChangeEvent(
|
794
|
+
const routeEvent = this.routeChangeEvent(segments, redirectFrom);
|
648
795
|
if (routeEvent) {
|
649
796
|
this.ionRouteWillChange.emit(routeEvent);
|
650
797
|
}
|
651
798
|
const changed = await writeNavState(node, chain, direction, index, false, animation);
|
652
799
|
this.busy = false;
|
653
|
-
if (changed) {
|
654
|
-
console.debug('[ion-router] route changed', path);
|
655
|
-
}
|
656
800
|
// emit did change
|
657
801
|
if (routeEvent) {
|
658
802
|
this.ionRouteDidChange.emit(routeEvent);
|
659
803
|
}
|
660
804
|
return changed;
|
661
805
|
}
|
662
|
-
|
806
|
+
setSegments(segments, direction, queryString) {
|
663
807
|
this.state++;
|
664
|
-
|
808
|
+
writeSegments(window.history, this.root, this.useHash, segments, direction, this.state, queryString);
|
665
809
|
}
|
666
|
-
|
667
|
-
return
|
810
|
+
getSegments() {
|
811
|
+
return readSegments(window.location, this.root, this.useHash);
|
668
812
|
}
|
669
|
-
routeChangeEvent(
|
813
|
+
routeChangeEvent(toSegments, redirectFromSegments) {
|
670
814
|
const from = this.previousPath;
|
671
|
-
const to = generatePath(
|
815
|
+
const to = generatePath(toSegments);
|
672
816
|
this.previousPath = to;
|
673
817
|
if (to === from) {
|
674
818
|
return null;
|
675
819
|
}
|
676
|
-
const redirectedFrom =
|
820
|
+
const redirectedFrom = redirectFromSegments ? generatePath(redirectFromSegments) : null;
|
677
821
|
return {
|
678
822
|
from,
|
679
823
|
redirectedFrom,
|