@pod-os/elements 0.17.1-fef97c9.0 → 0.18.1-a971174.0
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/elements.cjs.js +1 -1
- package/dist/cjs/ion-app.cjs.entry.js +114 -0
- package/dist/cjs/ion-app.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-badge_11.cjs.entry.js +1 -1
- package/dist/cjs/{ion-app_32.cjs.entry.js → ion-card_26.cjs.entry.js} +48 -1380
- package/dist/cjs/ion-card_26.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-content.cjs.entry.js +416 -0
- package/dist/cjs/ion-content.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-footer.cjs.entry.js +144 -0
- package/dist/cjs/ion-footer.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-header.cjs.entry.js +346 -0
- package/dist/cjs/ion-header.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-title.cjs.entry.js +58 -0
- package/dist/cjs/ion-title.cjs.entry.js.map +1 -0
- package/dist/cjs/ion-toolbar.cjs.entry.js +79 -0
- package/dist/cjs/ion-toolbar.cjs.entry.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pos-app-generic.cjs.entry.js +1 -1
- package/dist/cjs/pos-app-ldp-container.cjs.entry.js +1 -1
- package/dist/cjs/pos-app-rdf-document.cjs.entry.js +1 -1
- package/dist/collection/apps/pos-app-browser/pos-app-browser.css +64 -0
- package/dist/collection/apps/pos-app-browser/pos-app-browser.js +33 -2
- package/dist/collection/apps/pos-app-browser/pos-app-browser.js.map +1 -1
- package/dist/collection/apps/pos-app-generic/pos-app-generic.js +1 -1
- package/dist/collection/apps/pos-app-ldp-container/pos-app-ldp-container.js +1 -1
- package/dist/collection/apps/pos-app-rdf-document/pos-app-rdf-document.js +1 -1
- package/dist/collection/components/pos-add-new-thing/pos-add-new-thing.js +1 -1
- package/dist/collection/components/pos-app/pos-app.js +1 -1
- package/dist/collection/components/pos-dialog/pos-dialog.js +1 -1
- package/dist/collection/components/pos-error-toast/pos-error-toast.js +1 -1
- package/dist/collection/components/pos-literals/pos-literals.js +1 -1
- package/dist/collection/components/pos-login/pos-login.css +13 -9
- package/dist/collection/components/pos-login/pos-login.js +1 -1
- package/dist/collection/components/pos-login/pos-login.js.map +1 -1
- package/dist/collection/components/pos-login-form/pos-login-form.js +1 -1
- package/dist/collection/components/pos-navigation-bar/pos-navigation-bar.js +1 -1
- package/dist/collection/components/pos-new-thing-form/pos-new-thing-form.js +1 -1
- package/dist/collection/components/pos-rich-link/pos-rich-link.js +2 -2
- package/dist/collection/components/pos-router/pos-router.js +26 -2
- package/dist/collection/components/pos-router/pos-router.js.map +1 -1
- package/dist/collection/components/pos-select-term/pos-select-term.js +1 -1
- package/dist/components/ion-app.js +121 -1
- package/dist/components/ion-app.js.map +1 -1
- package/dist/components/ion-content.js +436 -1
- package/dist/components/ion-content.js.map +1 -1
- package/dist/components/ion-footer.js +150 -1
- package/dist/components/ion-footer.js.map +1 -1
- package/dist/components/ion-header.js +354 -1
- package/dist/components/ion-header.js.map +1 -1
- package/dist/components/ion-title.js +70 -1
- package/dist/components/ion-title.js.map +1 -1
- package/dist/components/ion-toolbar.js +88 -1
- package/dist/components/ion-toolbar.js.map +1 -1
- package/dist/components/pos-add-new-thing2.js +1 -1
- package/dist/components/pos-app-browser.js +40 -55
- package/dist/components/pos-app-browser.js.map +1 -1
- package/dist/components/pos-app-generic.js +1 -1
- package/dist/components/pos-app-ldp-container.js +1 -1
- package/dist/components/pos-app-rdf-document.js +1 -1
- package/dist/components/pos-app2.js +1 -1
- package/dist/components/pos-dialog2.js +1 -1
- package/dist/components/pos-error-toast2.js +1 -1
- package/dist/components/pos-literals2.js +1 -1
- package/dist/components/pos-login-form2.js +1 -1
- package/dist/components/pos-login2.js +2 -2
- package/dist/components/pos-login2.js.map +1 -1
- package/dist/components/pos-navigation-bar2.js +1 -1
- package/dist/components/pos-new-thing-form2.js +1 -1
- package/dist/components/pos-rich-link2.js +2 -2
- package/dist/components/pos-router2.js +6 -375
- package/dist/components/pos-router2.js.map +1 -1
- package/dist/components/pos-select-term2.js +1 -1
- package/dist/elements/elements.css +1 -1
- package/dist/elements/elements.esm.js +1 -1
- package/dist/elements/elements.esm.js.map +1 -1
- package/dist/elements/p-00ce08f0.entry.js +2 -0
- package/dist/elements/{p-546a0100.entry.js.map → p-00ce08f0.entry.js.map} +1 -1
- package/dist/elements/p-012387ef.js +5 -0
- package/dist/elements/{p-e06dbbcc.entry.js → p-0133f543.entry.js} +2 -2
- package/dist/elements/p-05e3c2f1.entry.js +2 -0
- package/dist/elements/{p-d5ff3d36.entry.js.map → p-05e3c2f1.entry.js.map} +1 -1
- package/dist/elements/{p-3aeb707f.entry.js → p-09a7b8e1.entry.js} +2 -2
- package/dist/elements/{p-86136480.entry.js → p-11ad53dd.entry.js} +2 -2
- package/dist/elements/{p-9365c31d.entry.js → p-122324d9.entry.js} +2 -2
- package/dist/elements/{p-530932bb.js → p-163e3e87.js} +2 -2
- package/dist/elements/{p-9b56d918.js → p-18d4a4f4.js} +3 -3
- package/dist/elements/{p-b90d29b6.entry.js → p-18d9c4f7.entry.js} +2 -2
- package/dist/elements/{p-69d9dbbf.entry.js → p-1a90b8bb.entry.js} +2 -2
- package/dist/elements/{p-02b4f408.entry.js → p-1f36a3c0.entry.js} +2 -2
- package/dist/elements/{p-c7ac1d8b.entry.js → p-200707c8.entry.js} +6 -6
- package/dist/elements/{p-78982008.entry.js → p-2072bd89.entry.js} +2 -2
- package/dist/elements/{p-170a54a2.js → p-20e2e8c1.js} +3 -3
- package/dist/elements/{p-9e7f0522.js → p-25270f1a.js} +2 -2
- package/dist/elements/p-27e8c19d.entry.js +2 -0
- package/dist/elements/{p-909f0d6e.entry.js.map → p-27e8c19d.entry.js.map} +1 -1
- package/dist/elements/p-27ec1e73.entry.js +2 -0
- package/dist/elements/{p-c4a822b5.entry.js → p-28b1f2dc.entry.js} +2 -2
- package/dist/elements/{p-4d47eeb5.js → p-2a17fd31.js} +2 -2
- package/dist/elements/{p-8d4278bb.entry.js → p-2adb9784.entry.js} +2 -2
- package/dist/elements/p-2f85baae.entry.js +2 -0
- package/dist/elements/{p-e3d72483.entry.js.map → p-2f85baae.entry.js.map} +1 -1
- package/dist/elements/{p-d212be68.entry.js → p-30685d32.entry.js} +2 -2
- package/dist/elements/{p-8e1e3e7d.js → p-359bfe6a.js} +2 -2
- package/dist/elements/p-382054bf.entry.js +2 -0
- package/dist/elements/p-382054bf.entry.js.map +1 -0
- package/dist/elements/{p-bba60e3b.entry.js → p-39cc0ada.entry.js} +2 -2
- package/dist/elements/p-4056decf.entry.js +2 -0
- package/dist/elements/p-4056decf.entry.js.map +1 -0
- package/dist/elements/p-4918fd10.entry.js +2 -0
- package/dist/elements/p-4918fd10.entry.js.map +1 -0
- package/dist/elements/{p-af43acbb.entry.js → p-4c0808b4.entry.js} +2 -2
- package/dist/elements/p-4cf87b24.entry.js +2 -0
- package/dist/elements/{p-0edf98c5.entry.js.map → p-4cf87b24.entry.js.map} +1 -1
- package/dist/elements/{p-b8ac0ee4.js → p-4d6e48bf.js} +2 -2
- package/dist/elements/{p-28ad7b6e.entry.js → p-5298b7a1.entry.js} +2 -2
- package/dist/elements/{p-0b1c92f2.entry.js → p-52c87099.entry.js} +2 -2
- package/dist/elements/{p-c0eb0e3d.entry.js → p-55fbf5f7.entry.js} +3 -3
- package/dist/elements/{p-c0eb0e3d.entry.js.map → p-55fbf5f7.entry.js.map} +1 -1
- package/dist/elements/{p-2428b6bf.js → p-592177e8.js} +2 -2
- package/dist/elements/{p-8b81a782.js → p-595c0a57.js} +2 -2
- package/dist/elements/{p-e32a52ee.js → p-5a248cff.js} +2 -2
- package/dist/elements/p-5b933f24.entry.js +2 -0
- package/dist/elements/p-5b933f24.entry.js.map +1 -0
- package/dist/elements/{p-cc62cb3d.entry.js → p-61a489ee.entry.js} +2 -2
- package/dist/elements/p-6ac0c71c.entry.js +2 -0
- package/dist/elements/{p-6c9053ed.entry.js → p-6bcba1f6.entry.js} +2 -2
- package/dist/elements/{p-ddc13326.entry.js → p-6e2a89ab.entry.js} +2 -2
- package/dist/elements/{p-565128c5.entry.js → p-74ebe432.entry.js} +2 -2
- package/dist/elements/p-76543de1.entry.js +2 -0
- package/dist/elements/{p-d7231d27.entry.js → p-76e7559c.entry.js} +2 -2
- package/dist/elements/{p-41e21640.entry.js → p-778d7821.entry.js} +6 -6
- package/dist/elements/{p-f941317f.entry.js → p-78ba7248.entry.js} +2 -2
- package/dist/elements/{p-6579450f.js → p-7a563988.js} +2 -2
- package/dist/elements/{p-3c2b721e.js → p-7f507bcb.js} +2 -2
- package/dist/elements/p-7fb554a5.entry.js +2 -0
- package/dist/elements/{p-cc274814.entry.js.map → p-7fb554a5.entry.js.map} +1 -1
- package/dist/elements/p-8206b1f1.js +6 -0
- package/dist/elements/{p-b097a0ac.entry.js → p-82fb9396.entry.js} +2 -2
- package/dist/elements/{p-d86e6e48.entry.js → p-8817e69b.entry.js} +2 -2
- package/dist/elements/p-8865cb08.entry.js +2 -0
- package/dist/elements/{p-0951f046.entry.js → p-8b9b339b.entry.js} +2 -2
- package/dist/elements/{p-553217d4.entry.js → p-8b9b7f79.entry.js} +2 -2
- package/dist/elements/{p-86eaec56.entry.js → p-8c32e0ab.entry.js} +2 -2
- package/dist/elements/p-8fe569b3.entry.js +2 -0
- package/dist/elements/p-9090e8dc.entry.js +2 -0
- package/dist/elements/p-90f99f85.entry.js +5 -0
- package/dist/elements/p-90f99f85.entry.js.map +1 -0
- package/dist/elements/{p-fb11bb27.entry.js → p-916a6612.entry.js} +2 -2
- package/dist/elements/{p-fa9aa28a.entry.js → p-a68e7901.entry.js} +2 -2
- package/dist/elements/p-a88c6bd6.entry.js +2 -0
- package/dist/elements/{p-f05a0cca.entry.js.map → p-a88c6bd6.entry.js.map} +1 -1
- package/dist/elements/{p-69410d36.js → p-a91046dc.js} +3 -3
- package/dist/elements/{p-325e5484.entry.js → p-aad12400.entry.js} +2 -2
- package/dist/elements/{p-58418838.entry.js → p-ab92e9ad.entry.js} +2 -2
- package/dist/elements/{p-d01e6782.entry.js → p-af3f8ab1.entry.js} +2 -2
- package/dist/elements/p-b11e8f77.entry.js +2 -0
- package/dist/elements/{p-77d82071.entry.js → p-b19890bd.entry.js} +2 -2
- package/dist/elements/p-b1d0e1fe.entry.js +5 -0
- package/dist/{components/header.js.map → elements/p-b1d0e1fe.entry.js.map} +1 -1
- package/dist/elements/{p-573b7dca.entry.js → p-b227f4a8.entry.js} +2 -2
- package/dist/elements/p-b8b9096d.entry.js +2 -0
- package/dist/elements/p-b8b9096d.entry.js.map +1 -0
- package/dist/elements/{p-134b66b6.js → p-bb3054a3.js} +6 -6
- package/dist/elements/p-bc5eefc4.entry.js +2 -0
- package/dist/elements/{p-b115ebcf.entry.js.map → p-bc5eefc4.entry.js.map} +1 -1
- package/dist/elements/{p-56bf9fdf.js → p-c2690129.js} +2 -2
- package/dist/elements/{p-8b0695a7.entry.js → p-c445f3ac.entry.js} +2 -2
- package/dist/elements/{p-2ba30f60.entry.js → p-c9faf4da.entry.js} +2 -2
- package/dist/elements/p-ca453b3d.js +8 -0
- package/dist/elements/p-cc23946c.entry.js +2 -0
- package/dist/elements/{p-4342e2ef.entry.js.map → p-cc23946c.entry.js.map} +1 -1
- package/dist/elements/{p-c23172a0.entry.js → p-cd9107d1.entry.js} +2 -2
- package/dist/elements/{p-9b369d09.js → p-cebe59d4.js} +2 -2
- package/dist/elements/{p-b67ce91f.entry.js → p-cfec477d.entry.js} +2 -2
- package/dist/elements/{p-1c69ca01.js → p-d0fcc589.js} +2 -2
- package/dist/elements/{p-257248f2.entry.js → p-d2458575.entry.js} +2 -2
- package/dist/elements/p-d2e7f4d4.entry.js +2 -0
- package/dist/elements/p-d65caf7a.entry.js +2 -0
- package/dist/elements/{p-acbfc962.entry.js.map → p-d65caf7a.entry.js.map} +1 -1
- package/dist/elements/{p-3505dfe2.js → p-d6769f21.js} +2 -2
- package/dist/elements/{p-a1a15808.entry.js → p-d6bf2b98.entry.js} +2 -2
- package/dist/elements/{p-75cbc833.entry.js → p-d86570da.entry.js} +2 -2
- package/dist/elements/p-d8e8bd9b.entry.js +2 -0
- package/dist/elements/p-d8fc8b11.js +2 -0
- package/dist/elements/{p-0ddd5da3.entry.js → p-da5f6dcd.entry.js} +3 -3
- package/dist/elements/{p-ab5544fc.entry.js → p-db793eec.entry.js} +2 -2
- package/dist/elements/p-db973275.js +5 -0
- package/dist/elements/{p-5f2c1e33.entry.js → p-e134ddc9.entry.js} +2 -2
- package/dist/elements/{p-0752ec21.entry.js → p-e3ae9b45.entry.js} +2 -2
- package/dist/elements/p-e5cefd56.entry.js +2 -0
- package/dist/elements/{p-64af0b46.entry.js.map → p-e5cefd56.entry.js.map} +1 -1
- package/dist/elements/{p-ad2273d6.js → p-ecdb52e8.js} +2 -2
- package/dist/elements/{p-2dddbb15.js → p-f1ef82a9.js} +4 -4
- package/dist/elements/p-f4440338.entry.js +2 -0
- package/dist/elements/{p-5bd948fa.entry.js → p-f981858f.entry.js} +2 -2
- package/dist/elements/{p-f6b92b3c.entry.js → p-fd200088.entry.js} +2 -2
- package/dist/elements/{p-b56ae71f.entry.js → p-fdeb6a78.entry.js} +3 -3
- package/dist/esm/{BrokenFile-0cbdf2f2.js → BrokenFile-660171a9.js} +2 -2
- package/dist/esm/{BrokenFile-0cbdf2f2.js.map → BrokenFile-660171a9.js.map} +1 -1
- package/dist/esm/{animation-0dedebd7.js → animation-8c622dae.js} +2 -2
- package/dist/esm/{animation-0dedebd7.js.map → animation-8c622dae.js.map} +1 -1
- package/dist/esm/{app-globals-8441b381.js → app-globals-a35b051d.js} +2 -2
- package/dist/esm/{app-globals-8441b381.js.map → app-globals-a35b051d.js.map} +1 -1
- package/dist/esm/{data-3bd275a7.js → data-cdc9b206.js} +2 -2
- package/dist/esm/{data-3bd275a7.js.map → data-cdc9b206.js.map} +1 -1
- package/dist/esm/elements.js +5 -5
- package/dist/esm/{form-controller-ba097a73.js → form-controller-1f70ed52.js} +2 -2
- package/dist/esm/{form-controller-ba097a73.js.map → form-controller-1f70ed52.js.map} +1 -1
- package/dist/esm/{framework-delegate-0ffa1682.js → framework-delegate-b5751311.js} +2 -2
- package/dist/esm/{framework-delegate-0ffa1682.js.map → framework-delegate-b5751311.js.map} +1 -1
- package/dist/esm/{hardware-back-button-80e72d27.js → hardware-back-button-e34ddb75.js} +3 -3
- package/dist/esm/{hardware-back-button-80e72d27.js.map → hardware-back-button-e34ddb75.js.map} +1 -1
- package/dist/esm/{helpers-ad2d8971.js → helpers-a93a8cd2.js} +2 -2
- package/dist/esm/{helpers-ad2d8971.js.map → helpers-a93a8cd2.js.map} +1 -1
- package/dist/esm/{index-141ce7d0.js → index-1e601862.js} +5 -5
- package/dist/esm/{index-141ce7d0.js.map → index-1e601862.js.map} +1 -1
- package/dist/esm/{index-38b2da1b.js → index-432e7c6f.js} +3 -3
- package/dist/esm/{index-38b2da1b.js.map → index-432e7c6f.js.map} +1 -1
- package/dist/esm/{index-46b2983b.js → index-538226d8.js} +2 -2
- package/dist/esm/{index-46b2983b.js.map → index-538226d8.js.map} +1 -1
- package/dist/esm/{index-049cf01c.js → index-e9b97538.js} +6 -6
- package/dist/esm/{index-049cf01c.js.map → index-e9b97538.js.map} +1 -1
- package/dist/esm/{index-c043b4c8.js → index-f69a875d.js} +2 -2
- package/dist/esm/{index-c043b4c8.js.map → index-f69a875d.js.map} +1 -1
- package/dist/esm/{index-bec78e8b.js → index-f7ac0403.js} +2 -2
- package/dist/esm/{index-bec78e8b.js.map → index-f7ac0403.js.map} +1 -1
- package/dist/esm/{input-shims-2246db96.js → input-shims-212ee02f.js} +4 -4
- package/dist/esm/{input-shims-2246db96.js.map → input-shims-212ee02f.js.map} +1 -1
- package/dist/esm/{input.utils-8550a81d.js → input.utils-d2c917c3.js} +3 -3
- package/dist/esm/{input.utils-8550a81d.js.map → input.utils-d2c917c3.js.map} +1 -1
- package/dist/esm/ion-accordion-group.entry.js +3 -3
- package/dist/esm/ion-accordion.entry.js +3 -3
- package/dist/esm/ion-action-sheet_3.entry.js +8 -8
- package/dist/{components/app.js → esm/ion-app.entry.js} +20 -35
- package/dist/esm/ion-app.entry.js.map +1 -0
- package/dist/esm/ion-avatar.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-badge_11.entry.js +8 -8
- package/dist/esm/ion-breadcrumb.entry.js +3 -3
- package/dist/esm/ion-breadcrumbs.entry.js +2 -2
- package/dist/esm/ion-button_4.entry.js +4 -4
- package/dist/esm/ion-card-subtitle.entry.js +2 -2
- package/dist/esm/{ion-app_32.entry.js → ion-card_26.entry.js} +48 -1374
- package/dist/esm/ion-card_26.entry.js.map +1 -0
- package/dist/esm/ion-checkbox_4.entry.js +5 -5
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/{components/content.js → esm/ion-content.entry.js} +14 -42
- package/dist/esm/ion-content.entry.js.map +1 -0
- package/dist/esm/ion-datetime-button.entry.js +5 -5
- package/dist/esm/ion-datetime.entry.js +5 -5
- package/dist/esm/ion-fab-button.entry.js +3 -3
- package/dist/esm/ion-fab-list.entry.js +2 -2
- package/dist/esm/ion-fab.entry.js +2 -2
- package/dist/{components/footer.js → esm/ion-footer.entry.js} +20 -34
- package/dist/esm/ion-footer.entry.js.map +1 -0
- package/dist/{components/header.js → esm/ion-header.entry.js} +17 -33
- package/dist/esm/ion-header.entry.js.map +1 -0
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll-content.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll.entry.js +5 -5
- package/dist/esm/ion-item-option.entry.js +2 -2
- package/dist/esm/ion-item-options.entry.js +3 -3
- package/dist/esm/ion-item-sliding.entry.js +5 -5
- package/dist/esm/ion-item_4.entry.js +4 -4
- package/dist/esm/ion-loading.entry.js +8 -8
- package/dist/esm/ion-menu-button.entry.js +8 -8
- package/dist/esm/ion-menu-toggle.entry.js +8 -8
- package/dist/esm/ion-menu.entry.js +9 -9
- package/dist/esm/ion-modal.entry.js +10 -10
- package/dist/esm/ion-nav-link.entry.js +1 -1
- package/dist/esm/ion-nav.entry.js +6 -6
- package/dist/esm/ion-picker-column.entry.js +3 -3
- package/dist/esm/ion-picker.entry.js +8 -8
- package/dist/esm/ion-popover.entry.js +9 -9
- package/dist/esm/ion-range.entry.js +6 -6
- package/dist/esm/ion-refresher-content.entry.js +5 -5
- package/dist/esm/ion-refresher.entry.js +7 -7
- package/dist/esm/ion-reorder-group.entry.js +5 -5
- package/dist/esm/ion-reorder.entry.js +2 -2
- 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 +2 -2
- package/dist/esm/ion-router-outlet.entry.js +6 -6
- package/dist/esm/ion-router.entry.js +2 -2
- package/dist/esm/ion-segment-button.entry.js +3 -3
- package/dist/esm/ion-segment.entry.js +3 -3
- package/dist/esm/ion-select-option.entry.js +2 -2
- package/dist/esm/ion-select.entry.js +9 -9
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar.entry.js +2 -2
- package/dist/esm/ion-tab-button.entry.js +3 -3
- package/dist/esm/ion-tab.entry.js +3 -3
- package/dist/esm/ion-tabs.entry.js +1 -1
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +7 -7
- package/dist/esm/ion-thumbnail.entry.js +2 -2
- package/dist/{components/title.js → esm/ion-title.entry.js} +14 -34
- package/dist/esm/ion-title.entry.js.map +1 -0
- package/dist/esm/ion-toast.entry.js +8 -8
- package/dist/esm/ion-toggle.entry.js +5 -5
- package/dist/{components/toolbar.js → esm/ion-toolbar.entry.js} +14 -31
- package/dist/esm/ion-toolbar.entry.js.map +1 -0
- package/dist/esm/{ionic-global-006bfdaa.js → ionic-global-163eb7af.js} +2 -2
- package/dist/esm/{ionic-global-006bfdaa.js.map → ionic-global-163eb7af.js.map} +1 -1
- package/dist/esm/{ios.transition-e19293f7.js → ios.transition-0236708a.js} +5 -5
- package/dist/esm/{ios.transition-e19293f7.js.map → ios.transition-0236708a.js.map} +1 -1
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-d72e937f.js → md.transition-e93291da.js} +5 -5
- package/dist/esm/{md.transition-d72e937f.js.map → md.transition-e93291da.js.map} +1 -1
- package/dist/esm/{menu-toggle-util-dca4ccca.js → menu-toggle-util-a0afc829.js} +2 -2
- package/dist/esm/{menu-toggle-util-dca4ccca.js.map → menu-toggle-util-a0afc829.js.map} +1 -1
- package/dist/esm/{notch-controller-18232ec1.js → notch-controller-ae856621.js} +2 -2
- package/dist/esm/{notch-controller-18232ec1.js.map → notch-controller-ae856621.js.map} +1 -1
- package/dist/esm/{overlays-f768dabb.js → overlays-708b9a6f.js} +6 -6
- package/dist/esm/{overlays-f768dabb.js.map → overlays-708b9a6f.js.map} +1 -1
- package/dist/esm/pos-app-document-viewer.entry.js +1 -1
- package/dist/esm/pos-app-generic.entry.js +2 -2
- package/dist/esm/pos-app-image-viewer.entry.js +1 -1
- package/dist/esm/pos-app-ldp-container.entry.js +2 -2
- package/dist/esm/pos-app-rdf-document.entry.js +2 -2
- package/dist/esm/pos-container-contents.entry.js +1 -1
- package/dist/esm/pos-container-item.entry.js +1 -1
- package/dist/esm/pos-document.entry.js +2 -2
- package/dist/esm/pos-relations_2.entry.js +1 -1
- package/dist/esm/pos-subjects.entry.js +1 -1
- package/dist/esm/pos-value.entry.js +1 -1
- package/dist/esm/{refresher.utils-5cd2771a.js → refresher.utils-e3624272.js} +4 -4
- package/dist/esm/{refresher.utils-5cd2771a.js.map → refresher.utils-e3624272.js.map} +1 -1
- package/dist/esm/{status-tap-96ab3acb.js → status-tap-9b757300.js} +5 -5
- package/dist/esm/{status-tap-96ab3acb.js.map → status-tap-9b757300.js.map} +1 -1
- package/dist/esm/{swipe-back-44f8b09c.js → swipe-back-5993fe10.js} +2 -2
- package/dist/esm/{swipe-back-44f8b09c.js.map → swipe-back-5993fe10.js.map} +1 -1
- package/dist/types/apps/pos-app-browser/pos-app-browser.d.ts +1 -0
- package/dist/types/components/pos-router/pos-router.d.ts +10 -0
- package/dist/types/components.d.ts +39 -0
- package/package.json +1 -1
- package/dist/cjs/ion-app_32.cjs.entry.js.map +0 -1
- package/dist/components/app.js.map +0 -1
- package/dist/components/content.js.map +0 -1
- package/dist/components/footer.js.map +0 -1
- package/dist/components/title.js.map +0 -1
- package/dist/components/toolbar.js.map +0 -1
- package/dist/elements/p-089421d7.entry.js +0 -8
- package/dist/elements/p-089421d7.entry.js.map +0 -1
- package/dist/elements/p-0edf98c5.entry.js +0 -2
- package/dist/elements/p-0feec79b.js +0 -6
- package/dist/elements/p-118e0bed.entry.js +0 -2
- package/dist/elements/p-2fa5ecde.js +0 -8
- package/dist/elements/p-4342e2ef.entry.js +0 -2
- package/dist/elements/p-546a0100.entry.js +0 -2
- package/dist/elements/p-5f19bcb1.entry.js +0 -2
- package/dist/elements/p-64af0b46.entry.js +0 -2
- package/dist/elements/p-7e36887e.js +0 -5
- package/dist/elements/p-86f80c54.entry.js +0 -2
- package/dist/elements/p-89b3cdad.entry.js +0 -2
- package/dist/elements/p-8eb42424.entry.js +0 -2
- package/dist/elements/p-8f98459a.entry.js +0 -2
- package/dist/elements/p-909f0d6e.entry.js +0 -2
- package/dist/elements/p-963acf5e.entry.js +0 -2
- package/dist/elements/p-9b3608b6.entry.js +0 -2
- package/dist/elements/p-acbfc962.entry.js +0 -2
- package/dist/elements/p-b115ebcf.entry.js +0 -2
- package/dist/elements/p-cc274814.entry.js +0 -2
- package/dist/elements/p-d3a247bd.entry.js +0 -2
- package/dist/elements/p-d5ff3d36.entry.js +0 -2
- package/dist/elements/p-de267699.js +0 -2
- package/dist/elements/p-e3734616.entry.js +0 -2
- package/dist/elements/p-e3d72483.entry.js +0 -2
- package/dist/elements/p-f05a0cca.entry.js +0 -2
- package/dist/elements/p-f82feb40.js +0 -5
- package/dist/esm/ion-app_32.entry.js.map +0 -1
- /package/dist/elements/{p-f82feb40.js.map → p-012387ef.js.map} +0 -0
- /package/dist/elements/{p-e06dbbcc.entry.js.map → p-0133f543.entry.js.map} +0 -0
- /package/dist/elements/{p-3aeb707f.entry.js.map → p-09a7b8e1.entry.js.map} +0 -0
- /package/dist/elements/{p-86136480.entry.js.map → p-11ad53dd.entry.js.map} +0 -0
- /package/dist/elements/{p-9365c31d.entry.js.map → p-122324d9.entry.js.map} +0 -0
- /package/dist/elements/{p-530932bb.js.map → p-163e3e87.js.map} +0 -0
- /package/dist/elements/{p-9b56d918.js.map → p-18d4a4f4.js.map} +0 -0
- /package/dist/elements/{p-b90d29b6.entry.js.map → p-18d9c4f7.entry.js.map} +0 -0
- /package/dist/elements/{p-69d9dbbf.entry.js.map → p-1a90b8bb.entry.js.map} +0 -0
- /package/dist/elements/{p-02b4f408.entry.js.map → p-1f36a3c0.entry.js.map} +0 -0
- /package/dist/elements/{p-c7ac1d8b.entry.js.map → p-200707c8.entry.js.map} +0 -0
- /package/dist/elements/{p-78982008.entry.js.map → p-2072bd89.entry.js.map} +0 -0
- /package/dist/elements/{p-170a54a2.js.map → p-20e2e8c1.js.map} +0 -0
- /package/dist/elements/{p-9e7f0522.js.map → p-25270f1a.js.map} +0 -0
- /package/dist/elements/{p-5f19bcb1.entry.js.map → p-27ec1e73.entry.js.map} +0 -0
- /package/dist/elements/{p-c4a822b5.entry.js.map → p-28b1f2dc.entry.js.map} +0 -0
- /package/dist/elements/{p-4d47eeb5.js.map → p-2a17fd31.js.map} +0 -0
- /package/dist/elements/{p-8d4278bb.entry.js.map → p-2adb9784.entry.js.map} +0 -0
- /package/dist/elements/{p-d212be68.entry.js.map → p-30685d32.entry.js.map} +0 -0
- /package/dist/elements/{p-8e1e3e7d.js.map → p-359bfe6a.js.map} +0 -0
- /package/dist/elements/{p-bba60e3b.entry.js.map → p-39cc0ada.entry.js.map} +0 -0
- /package/dist/elements/{p-af43acbb.entry.js.map → p-4c0808b4.entry.js.map} +0 -0
- /package/dist/elements/{p-b8ac0ee4.js.map → p-4d6e48bf.js.map} +0 -0
- /package/dist/elements/{p-28ad7b6e.entry.js.map → p-5298b7a1.entry.js.map} +0 -0
- /package/dist/elements/{p-0b1c92f2.entry.js.map → p-52c87099.entry.js.map} +0 -0
- /package/dist/elements/{p-2428b6bf.js.map → p-592177e8.js.map} +0 -0
- /package/dist/elements/{p-8b81a782.js.map → p-595c0a57.js.map} +0 -0
- /package/dist/elements/{p-e32a52ee.js.map → p-5a248cff.js.map} +0 -0
- /package/dist/elements/{p-cc62cb3d.entry.js.map → p-61a489ee.entry.js.map} +0 -0
- /package/dist/elements/{p-118e0bed.entry.js.map → p-6ac0c71c.entry.js.map} +0 -0
- /package/dist/elements/{p-6c9053ed.entry.js.map → p-6bcba1f6.entry.js.map} +0 -0
- /package/dist/elements/{p-ddc13326.entry.js.map → p-6e2a89ab.entry.js.map} +0 -0
- /package/dist/elements/{p-565128c5.entry.js.map → p-74ebe432.entry.js.map} +0 -0
- /package/dist/elements/{p-89b3cdad.entry.js.map → p-76543de1.entry.js.map} +0 -0
- /package/dist/elements/{p-d7231d27.entry.js.map → p-76e7559c.entry.js.map} +0 -0
- /package/dist/elements/{p-41e21640.entry.js.map → p-778d7821.entry.js.map} +0 -0
- /package/dist/elements/{p-f941317f.entry.js.map → p-78ba7248.entry.js.map} +0 -0
- /package/dist/elements/{p-6579450f.js.map → p-7a563988.js.map} +0 -0
- /package/dist/elements/{p-3c2b721e.js.map → p-7f507bcb.js.map} +0 -0
- /package/dist/elements/{p-0feec79b.js.map → p-8206b1f1.js.map} +0 -0
- /package/dist/elements/{p-b097a0ac.entry.js.map → p-82fb9396.entry.js.map} +0 -0
- /package/dist/elements/{p-d86e6e48.entry.js.map → p-8817e69b.entry.js.map} +0 -0
- /package/dist/elements/{p-86f80c54.entry.js.map → p-8865cb08.entry.js.map} +0 -0
- /package/dist/elements/{p-0951f046.entry.js.map → p-8b9b339b.entry.js.map} +0 -0
- /package/dist/elements/{p-553217d4.entry.js.map → p-8b9b7f79.entry.js.map} +0 -0
- /package/dist/elements/{p-86eaec56.entry.js.map → p-8c32e0ab.entry.js.map} +0 -0
- /package/dist/elements/{p-8f98459a.entry.js.map → p-8fe569b3.entry.js.map} +0 -0
- /package/dist/elements/{p-e3734616.entry.js.map → p-9090e8dc.entry.js.map} +0 -0
- /package/dist/elements/{p-fb11bb27.entry.js.map → p-916a6612.entry.js.map} +0 -0
- /package/dist/elements/{p-fa9aa28a.entry.js.map → p-a68e7901.entry.js.map} +0 -0
- /package/dist/elements/{p-69410d36.js.map → p-a91046dc.js.map} +0 -0
- /package/dist/elements/{p-325e5484.entry.js.map → p-aad12400.entry.js.map} +0 -0
- /package/dist/elements/{p-58418838.entry.js.map → p-ab92e9ad.entry.js.map} +0 -0
- /package/dist/elements/{p-d01e6782.entry.js.map → p-af3f8ab1.entry.js.map} +0 -0
- /package/dist/elements/{p-8eb42424.entry.js.map → p-b11e8f77.entry.js.map} +0 -0
- /package/dist/elements/{p-77d82071.entry.js.map → p-b19890bd.entry.js.map} +0 -0
- /package/dist/elements/{p-573b7dca.entry.js.map → p-b227f4a8.entry.js.map} +0 -0
- /package/dist/elements/{p-134b66b6.js.map → p-bb3054a3.js.map} +0 -0
- /package/dist/elements/{p-56bf9fdf.js.map → p-c2690129.js.map} +0 -0
- /package/dist/elements/{p-8b0695a7.entry.js.map → p-c445f3ac.entry.js.map} +0 -0
- /package/dist/elements/{p-2ba30f60.entry.js.map → p-c9faf4da.entry.js.map} +0 -0
- /package/dist/elements/{p-2fa5ecde.js.map → p-ca453b3d.js.map} +0 -0
- /package/dist/elements/{p-c23172a0.entry.js.map → p-cd9107d1.entry.js.map} +0 -0
- /package/dist/elements/{p-9b369d09.js.map → p-cebe59d4.js.map} +0 -0
- /package/dist/elements/{p-b67ce91f.entry.js.map → p-cfec477d.entry.js.map} +0 -0
- /package/dist/elements/{p-1c69ca01.js.map → p-d0fcc589.js.map} +0 -0
- /package/dist/elements/{p-257248f2.entry.js.map → p-d2458575.entry.js.map} +0 -0
- /package/dist/elements/{p-9b3608b6.entry.js.map → p-d2e7f4d4.entry.js.map} +0 -0
- /package/dist/elements/{p-3505dfe2.js.map → p-d6769f21.js.map} +0 -0
- /package/dist/elements/{p-a1a15808.entry.js.map → p-d6bf2b98.entry.js.map} +0 -0
- /package/dist/elements/{p-75cbc833.entry.js.map → p-d86570da.entry.js.map} +0 -0
- /package/dist/elements/{p-963acf5e.entry.js.map → p-d8e8bd9b.entry.js.map} +0 -0
- /package/dist/elements/{p-de267699.js.map → p-d8fc8b11.js.map} +0 -0
- /package/dist/elements/{p-0ddd5da3.entry.js.map → p-da5f6dcd.entry.js.map} +0 -0
- /package/dist/elements/{p-ab5544fc.entry.js.map → p-db793eec.entry.js.map} +0 -0
- /package/dist/elements/{p-7e36887e.js.map → p-db973275.js.map} +0 -0
- /package/dist/elements/{p-5f2c1e33.entry.js.map → p-e134ddc9.entry.js.map} +0 -0
- /package/dist/elements/{p-0752ec21.entry.js.map → p-e3ae9b45.entry.js.map} +0 -0
- /package/dist/elements/{p-ad2273d6.js.map → p-ecdb52e8.js.map} +0 -0
- /package/dist/elements/{p-2dddbb15.js.map → p-f1ef82a9.js.map} +0 -0
- /package/dist/elements/{p-d3a247bd.entry.js.map → p-f4440338.entry.js.map} +0 -0
- /package/dist/elements/{p-5bd948fa.entry.js.map → p-f981858f.entry.js.map} +0 -0
- /package/dist/elements/{p-f6b92b3c.entry.js.map → p-fd200088.entry.js.map} +0 -0
- /package/dist/elements/{p-b56ae71f.entry.js.map → p-fdeb6a78.entry.js.map} +0 -0
|
@@ -3,126 +3,21 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-b86da440.js');
|
|
6
|
-
const hardwareBackButton = require('./hardware-back-button-7f7e29d9.js');
|
|
7
|
-
const index$1 = require('./index-5fa17650.js');
|
|
8
|
-
const ionicGlobal = require('./ionic-global-dcebbee3.js');
|
|
9
6
|
const helpers = require('./helpers-95c22e6d.js');
|
|
10
7
|
const theme = require('./theme-187bbc7d.js');
|
|
8
|
+
const ionicGlobal = require('./ionic-global-dcebbee3.js');
|
|
11
9
|
const dir = require('./dir-e6b438e6.js');
|
|
12
|
-
const index$
|
|
13
|
-
const keyboardController = require('./keyboard-controller-736f8327.js');
|
|
14
|
-
const index$3 = require('./index-3129b55a.js');
|
|
10
|
+
const index$1 = require('./index-3129b55a.js');
|
|
15
11
|
const BrokenFile = require('./BrokenFile-426cd057.js');
|
|
16
|
-
const index$
|
|
12
|
+
const index$2 = require('./index-480a0aeb.js');
|
|
17
13
|
const ResourceAware = require('./ResourceAware-7b6501ae.js');
|
|
18
14
|
require('./gesture-controller-85b9b0a5.js');
|
|
19
15
|
const overlays = require('./overlays-a44ab21f.js');
|
|
20
16
|
const PodOsAware = require('./PodOsAware-a16ddb44.js');
|
|
21
17
|
require('./index-957a289d.js');
|
|
22
|
-
require('./
|
|
23
|
-
require('./capacitor-5139e8a2.js');
|
|
18
|
+
require('./hardware-back-button-7f7e29d9.js');
|
|
24
19
|
require('./framework-delegate-a257df68.js');
|
|
25
|
-
|
|
26
|
-
const appCss = "html.plt-mobile ion-app{user-select:none}html.plt-mobile ion-app [contenteditable]{user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}";
|
|
27
|
-
const IonAppStyle0 = appCss;
|
|
28
|
-
|
|
29
|
-
const App = class {
|
|
30
|
-
constructor(hostRef) {
|
|
31
|
-
index.registerInstance(this, hostRef);
|
|
32
|
-
}
|
|
33
|
-
componentDidLoad() {
|
|
34
|
-
{
|
|
35
|
-
rIC(async () => {
|
|
36
|
-
const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
|
|
37
|
-
if (!ionicGlobal.config.getBoolean('_testing')) {
|
|
38
|
-
Promise.resolve().then(function () { return require('./index-865239c9.js'); }).then((module) => module.startTapClick(ionicGlobal.config));
|
|
39
|
-
}
|
|
40
|
-
if (ionicGlobal.config.getBoolean('statusTap', isHybrid)) {
|
|
41
|
-
Promise.resolve().then(function () { return require('./status-tap-9a8ade8f.js'); }).then((module) => module.startStatusTap());
|
|
42
|
-
}
|
|
43
|
-
if (ionicGlobal.config.getBoolean('inputShims', needInputShims())) {
|
|
44
|
-
/**
|
|
45
|
-
* needInputShims() ensures that only iOS and Android
|
|
46
|
-
* platforms proceed into this block.
|
|
47
|
-
*/
|
|
48
|
-
const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
49
|
-
Promise.resolve().then(function () { return require('./input-shims-650ba6be.js'); }).then((module) => module.startInputShims(ionicGlobal.config, platform));
|
|
50
|
-
}
|
|
51
|
-
const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-7f7e29d9.js'); });
|
|
52
|
-
const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
|
|
53
|
-
if (ionicGlobal.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
54
|
-
hardwareBackButtonModule.startHardwareBackButton();
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
/**
|
|
58
|
-
* If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
|
|
59
|
-
* then the close watcher will not be used.
|
|
60
|
-
*/
|
|
61
|
-
if (hardwareBackButton.shouldUseCloseWatcher()) {
|
|
62
|
-
index$1.printIonWarning('experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
|
|
63
|
-
}
|
|
64
|
-
hardwareBackButtonModule.blockHardwareBackButton();
|
|
65
|
-
}
|
|
66
|
-
if (typeof window !== 'undefined') {
|
|
67
|
-
Promise.resolve().then(function () { return require('./keyboard-172ec2d9.js'); }).then((module) => module.startKeyboardAssist(window));
|
|
68
|
-
}
|
|
69
|
-
Promise.resolve().then(function () { return require('./focus-visible-f844cf9d.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* @internal
|
|
75
|
-
* Used to set focus on an element that uses `ion-focusable`.
|
|
76
|
-
* Do not use this if focusing the element as a result of a keyboard
|
|
77
|
-
* event as the focus utility should handle this for us. This method
|
|
78
|
-
* should be used when we want to programmatically focus an element as
|
|
79
|
-
* a result of another user action. (Ex: We focus the first element
|
|
80
|
-
* inside of a popover when the user presents it, but the popover is not always
|
|
81
|
-
* presented as a result of keyboard action.)
|
|
82
|
-
*/
|
|
83
|
-
async setFocus(elements) {
|
|
84
|
-
if (this.focusVisible) {
|
|
85
|
-
this.focusVisible.setFocus(elements);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
render() {
|
|
89
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
90
|
-
return (index.h(index.Host, { key: '6d7c57453b4be454690e8f1a0721f1e3da8f92aa', class: {
|
|
91
|
-
[mode]: true,
|
|
92
|
-
'ion-page': true,
|
|
93
|
-
'force-statusbar-padding': ionicGlobal.config.getBoolean('_forceStatusbarPadding'),
|
|
94
|
-
} }));
|
|
95
|
-
}
|
|
96
|
-
get el() { return index.getElement(this); }
|
|
97
|
-
};
|
|
98
|
-
const needInputShims = () => {
|
|
99
|
-
/**
|
|
100
|
-
* iOS always needs input shims
|
|
101
|
-
*/
|
|
102
|
-
const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
|
|
103
|
-
if (needsShimsIOS) {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Android only needs input shims when running
|
|
108
|
-
* in the browser and only if the browser is using the
|
|
109
|
-
* new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
|
|
110
|
-
*/
|
|
111
|
-
const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
|
|
112
|
-
if (isAndroidMobileWeb) {
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
return false;
|
|
116
|
-
};
|
|
117
|
-
const rIC = (callback) => {
|
|
118
|
-
if ('requestIdleCallback' in window) {
|
|
119
|
-
window.requestIdleCallback(callback);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
setTimeout(callback, 32);
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
App.style = IonAppStyle0;
|
|
20
|
+
require('./index-5fa17650.js');
|
|
126
21
|
|
|
127
22
|
const cardIosCss = ":host{--ion-safe-area-left:0px;--ion-safe-area-right:0px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;background:var(--background);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;overflow:hidden}:host(.ion-color){background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.card-disabled){cursor:default;opacity:0.3;pointer-events:none}.card-native{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;min-height:var(--min-height);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:inherit}.card-native::-moz-focus-inner{border:0}button,a{cursor:pointer;user-select:none;-webkit-user-drag:none}ion-ripple-effect{color:var(--ripple-color)}:host{--background:var(--ion-card-background, var(--ion-item-background, var(--ion-background-color, #fff)));--color:var(--ion-card-color, var(--ion-item-color, var(--ion-color-step-600, #666666)));-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:24px;margin-bottom:24px;border-radius:8px;transition:transform 500ms cubic-bezier(0.12, 0.72, 0.29, 1);font-size:0.875rem;box-shadow:0 4px 16px rgba(0, 0, 0, 0.12)}:host(.ion-activated){transform:scale3d(0.97, 0.97, 1)}";
|
|
128
23
|
const IonCardIosStyle0 = cardIosCss;
|
|
@@ -233,868 +128,6 @@ CardHeader.style = {
|
|
|
233
128
|
md: IonCardHeaderMdStyle0
|
|
234
129
|
};
|
|
235
130
|
|
|
236
|
-
const contentCss = ":host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.outer-content){--background:var(--ion-color-step-50, #f2f2f2)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom));position:absolute;color:var(--color);box-sizing:border-box;overflow:hidden;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:\"\"}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:flex;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;transform:translateZ(0)}";
|
|
237
|
-
const IonContentStyle0 = contentCss;
|
|
238
|
-
|
|
239
|
-
const Content = class {
|
|
240
|
-
constructor(hostRef) {
|
|
241
|
-
index.registerInstance(this, hostRef);
|
|
242
|
-
this.ionScrollStart = index.createEvent(this, "ionScrollStart", 7);
|
|
243
|
-
this.ionScroll = index.createEvent(this, "ionScroll", 7);
|
|
244
|
-
this.ionScrollEnd = index.createEvent(this, "ionScrollEnd", 7);
|
|
245
|
-
this.watchDog = null;
|
|
246
|
-
this.isScrolling = false;
|
|
247
|
-
this.lastScroll = 0;
|
|
248
|
-
this.queued = false;
|
|
249
|
-
this.cTop = -1;
|
|
250
|
-
this.cBottom = -1;
|
|
251
|
-
this.isMainContent = true;
|
|
252
|
-
this.resizeTimeout = null;
|
|
253
|
-
this.tabsElement = null;
|
|
254
|
-
// Detail is used in a hot loop in the scroll event, by allocating it here
|
|
255
|
-
// V8 will be able to inline any read/write to it since it's a monomorphic class.
|
|
256
|
-
// https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
|
|
257
|
-
this.detail = {
|
|
258
|
-
scrollTop: 0,
|
|
259
|
-
scrollLeft: 0,
|
|
260
|
-
type: 'scroll',
|
|
261
|
-
event: undefined,
|
|
262
|
-
startX: 0,
|
|
263
|
-
startY: 0,
|
|
264
|
-
startTime: 0,
|
|
265
|
-
currentX: 0,
|
|
266
|
-
currentY: 0,
|
|
267
|
-
velocityX: 0,
|
|
268
|
-
velocityY: 0,
|
|
269
|
-
deltaX: 0,
|
|
270
|
-
deltaY: 0,
|
|
271
|
-
currentTime: 0,
|
|
272
|
-
data: undefined,
|
|
273
|
-
isScrolling: true,
|
|
274
|
-
};
|
|
275
|
-
this.color = undefined;
|
|
276
|
-
this.fullscreen = false;
|
|
277
|
-
this.forceOverscroll = undefined;
|
|
278
|
-
this.scrollX = false;
|
|
279
|
-
this.scrollY = true;
|
|
280
|
-
this.scrollEvents = false;
|
|
281
|
-
}
|
|
282
|
-
connectedCallback() {
|
|
283
|
-
this.isMainContent = this.el.closest('ion-menu, ion-popover, ion-modal') === null;
|
|
284
|
-
/**
|
|
285
|
-
* The fullscreen content offsets need to be
|
|
286
|
-
* computed after the tab bar has loaded. Since
|
|
287
|
-
* lazy evaluation means components are not hydrated
|
|
288
|
-
* at the same time, we need to wait for the ionTabBarLoaded
|
|
289
|
-
* event to fire. This does not impact dist-custom-elements
|
|
290
|
-
* because there is no hydration there.
|
|
291
|
-
*/
|
|
292
|
-
if (helpers.hasLazyBuild(this.el)) {
|
|
293
|
-
/**
|
|
294
|
-
* We need to cache the reference to the tabs.
|
|
295
|
-
* If just the content is unmounted then we won't
|
|
296
|
-
* be able to query for the closest tabs on disconnectedCallback
|
|
297
|
-
* since the content has been removed from the DOM tree.
|
|
298
|
-
*/
|
|
299
|
-
const closestTabs = (this.tabsElement = this.el.closest('ion-tabs'));
|
|
300
|
-
if (closestTabs !== null) {
|
|
301
|
-
/**
|
|
302
|
-
* When adding and removing the event listener
|
|
303
|
-
* we need to make sure we pass the same function reference
|
|
304
|
-
* otherwise the event listener will not be removed properly.
|
|
305
|
-
* We can't only pass `this.resize` because "this" in the function
|
|
306
|
-
* context becomes a reference to IonTabs instead of IonContent.
|
|
307
|
-
*
|
|
308
|
-
* Additionally, we listen for ionTabBarLoaded on the IonTabs
|
|
309
|
-
* instance rather than the IonTabBar instance. It's possible for
|
|
310
|
-
* a tab bar to be conditionally rendered/mounted. Since ionTabBarLoaded
|
|
311
|
-
* bubbles, we can catch any instances of child tab bars loading by listening
|
|
312
|
-
* on IonTabs.
|
|
313
|
-
*/
|
|
314
|
-
this.tabsLoadCallback = () => this.resize();
|
|
315
|
-
closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
disconnectedCallback() {
|
|
320
|
-
this.onScrollEnd();
|
|
321
|
-
if (helpers.hasLazyBuild(this.el)) {
|
|
322
|
-
/**
|
|
323
|
-
* The event listener and tabs caches need to
|
|
324
|
-
* be cleared otherwise this will create a memory
|
|
325
|
-
* leak where the IonTabs instance can never be
|
|
326
|
-
* garbage collected.
|
|
327
|
-
*/
|
|
328
|
-
const { tabsElement, tabsLoadCallback } = this;
|
|
329
|
-
if (tabsElement !== null && tabsLoadCallback !== undefined) {
|
|
330
|
-
tabsElement.removeEventListener('ionTabBarLoaded', tabsLoadCallback);
|
|
331
|
-
}
|
|
332
|
-
this.tabsElement = null;
|
|
333
|
-
this.tabsLoadCallback = undefined;
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Rotating certain devices can update
|
|
338
|
-
* the safe area insets. As a result,
|
|
339
|
-
* the fullscreen feature on ion-content
|
|
340
|
-
* needs to be recalculated.
|
|
341
|
-
*
|
|
342
|
-
* We listen for "resize" because we
|
|
343
|
-
* do not care what the orientation of
|
|
344
|
-
* the device is. Other APIs
|
|
345
|
-
* such as ScreenOrientation or
|
|
346
|
-
* the deviceorientation event must have
|
|
347
|
-
* permission from the user first whereas
|
|
348
|
-
* the "resize" event does not.
|
|
349
|
-
*
|
|
350
|
-
* We also throttle the callback to minimize
|
|
351
|
-
* thrashing when quickly resizing a window.
|
|
352
|
-
*/
|
|
353
|
-
onResize() {
|
|
354
|
-
if (this.resizeTimeout) {
|
|
355
|
-
clearTimeout(this.resizeTimeout);
|
|
356
|
-
this.resizeTimeout = null;
|
|
357
|
-
}
|
|
358
|
-
this.resizeTimeout = setTimeout(() => {
|
|
359
|
-
/**
|
|
360
|
-
* Resize should only happen
|
|
361
|
-
* if the content is visible.
|
|
362
|
-
* When the content is hidden
|
|
363
|
-
* then offsetParent will be null.
|
|
364
|
-
*/
|
|
365
|
-
if (this.el.offsetParent === null) {
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
this.resize();
|
|
369
|
-
}, 100);
|
|
370
|
-
}
|
|
371
|
-
shouldForceOverscroll() {
|
|
372
|
-
const { forceOverscroll } = this;
|
|
373
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
374
|
-
return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
|
|
375
|
-
}
|
|
376
|
-
resize() {
|
|
377
|
-
/**
|
|
378
|
-
* Only force update if the component is rendered in a browser context.
|
|
379
|
-
* Using `forceUpdate` in a server context with pre-rendering can lead to an infinite loop.
|
|
380
|
-
* The `hydrateDocument` function in `@stencil/core` will render the `ion-content`, but
|
|
381
|
-
* `forceUpdate` will trigger another render, locking up the server.
|
|
382
|
-
*
|
|
383
|
-
* TODO: Remove if STENCIL-834 determines Stencil will account for this.
|
|
384
|
-
*/
|
|
385
|
-
{
|
|
386
|
-
if (this.fullscreen) {
|
|
387
|
-
index.readTask(() => this.readDimensions());
|
|
388
|
-
}
|
|
389
|
-
else if (this.cTop !== 0 || this.cBottom !== 0) {
|
|
390
|
-
this.cTop = this.cBottom = 0;
|
|
391
|
-
index.forceUpdate(this);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
readDimensions() {
|
|
396
|
-
const page = getPageElement(this.el);
|
|
397
|
-
const top = Math.max(this.el.offsetTop, 0);
|
|
398
|
-
const bottom = Math.max(page.offsetHeight - top - this.el.offsetHeight, 0);
|
|
399
|
-
const dirty = top !== this.cTop || bottom !== this.cBottom;
|
|
400
|
-
if (dirty) {
|
|
401
|
-
this.cTop = top;
|
|
402
|
-
this.cBottom = bottom;
|
|
403
|
-
index.forceUpdate(this);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
onScroll(ev) {
|
|
407
|
-
const timeStamp = Date.now();
|
|
408
|
-
const shouldStart = !this.isScrolling;
|
|
409
|
-
this.lastScroll = timeStamp;
|
|
410
|
-
if (shouldStart) {
|
|
411
|
-
this.onScrollStart();
|
|
412
|
-
}
|
|
413
|
-
if (!this.queued && this.scrollEvents) {
|
|
414
|
-
this.queued = true;
|
|
415
|
-
index.readTask((ts) => {
|
|
416
|
-
this.queued = false;
|
|
417
|
-
this.detail.event = ev;
|
|
418
|
-
updateScrollDetail(this.detail, this.scrollEl, ts, shouldStart);
|
|
419
|
-
this.ionScroll.emit(this.detail);
|
|
420
|
-
});
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Get the element where the actual scrolling takes place.
|
|
425
|
-
* This element can be used to subscribe to `scroll` events or manually modify
|
|
426
|
-
* `scrollTop`. However, it's recommended to use the API provided by `ion-content`:
|
|
427
|
-
*
|
|
428
|
-
* i.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events
|
|
429
|
-
* and `scrollToPoint()` to scroll the content into a certain point.
|
|
430
|
-
*/
|
|
431
|
-
async getScrollElement() {
|
|
432
|
-
/**
|
|
433
|
-
* If this gets called in certain early lifecycle hooks (ex: Vue onMounted),
|
|
434
|
-
* scrollEl won't be defined yet with the custom elements build, so wait for it to load in.
|
|
435
|
-
*/
|
|
436
|
-
if (!this.scrollEl) {
|
|
437
|
-
await new Promise((resolve) => helpers.componentOnReady(this.el, resolve));
|
|
438
|
-
}
|
|
439
|
-
return Promise.resolve(this.scrollEl);
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* Returns the background content element.
|
|
443
|
-
* @internal
|
|
444
|
-
*/
|
|
445
|
-
async getBackgroundElement() {
|
|
446
|
-
if (!this.backgroundContentEl) {
|
|
447
|
-
await new Promise((resolve) => helpers.componentOnReady(this.el, resolve));
|
|
448
|
-
}
|
|
449
|
-
return Promise.resolve(this.backgroundContentEl);
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Scroll to the top of the component.
|
|
453
|
-
*
|
|
454
|
-
* @param duration The amount of time to take scrolling to the top. Defaults to `0`.
|
|
455
|
-
*/
|
|
456
|
-
scrollToTop(duration = 0) {
|
|
457
|
-
return this.scrollToPoint(undefined, 0, duration);
|
|
458
|
-
}
|
|
459
|
-
/**
|
|
460
|
-
* Scroll to the bottom of the component.
|
|
461
|
-
*
|
|
462
|
-
* @param duration The amount of time to take scrolling to the bottom. Defaults to `0`.
|
|
463
|
-
*/
|
|
464
|
-
async scrollToBottom(duration = 0) {
|
|
465
|
-
const scrollEl = await this.getScrollElement();
|
|
466
|
-
const y = scrollEl.scrollHeight - scrollEl.clientHeight;
|
|
467
|
-
return this.scrollToPoint(undefined, y, duration);
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Scroll by a specified X/Y distance in the component.
|
|
471
|
-
*
|
|
472
|
-
* @param x The amount to scroll by on the horizontal axis.
|
|
473
|
-
* @param y The amount to scroll by on the vertical axis.
|
|
474
|
-
* @param duration The amount of time to take scrolling by that amount.
|
|
475
|
-
*/
|
|
476
|
-
async scrollByPoint(x, y, duration) {
|
|
477
|
-
const scrollEl = await this.getScrollElement();
|
|
478
|
-
return this.scrollToPoint(x + scrollEl.scrollLeft, y + scrollEl.scrollTop, duration);
|
|
479
|
-
}
|
|
480
|
-
/**
|
|
481
|
-
* Scroll to a specified X/Y location in the component.
|
|
482
|
-
*
|
|
483
|
-
* @param x The point to scroll to on the horizontal axis.
|
|
484
|
-
* @param y The point to scroll to on the vertical axis.
|
|
485
|
-
* @param duration The amount of time to take scrolling to that point. Defaults to `0`.
|
|
486
|
-
*/
|
|
487
|
-
async scrollToPoint(x, y, duration = 0) {
|
|
488
|
-
const el = await this.getScrollElement();
|
|
489
|
-
if (duration < 32) {
|
|
490
|
-
if (y != null) {
|
|
491
|
-
el.scrollTop = y;
|
|
492
|
-
}
|
|
493
|
-
if (x != null) {
|
|
494
|
-
el.scrollLeft = x;
|
|
495
|
-
}
|
|
496
|
-
return;
|
|
497
|
-
}
|
|
498
|
-
let resolve;
|
|
499
|
-
let startTime = 0;
|
|
500
|
-
const promise = new Promise((r) => (resolve = r));
|
|
501
|
-
const fromY = el.scrollTop;
|
|
502
|
-
const fromX = el.scrollLeft;
|
|
503
|
-
const deltaY = y != null ? y - fromY : 0;
|
|
504
|
-
const deltaX = x != null ? x - fromX : 0;
|
|
505
|
-
// scroll loop
|
|
506
|
-
const step = (timeStamp) => {
|
|
507
|
-
const linearTime = Math.min(1, (timeStamp - startTime) / duration) - 1;
|
|
508
|
-
const easedT = Math.pow(linearTime, 3) + 1;
|
|
509
|
-
if (deltaY !== 0) {
|
|
510
|
-
el.scrollTop = Math.floor(easedT * deltaY + fromY);
|
|
511
|
-
}
|
|
512
|
-
if (deltaX !== 0) {
|
|
513
|
-
el.scrollLeft = Math.floor(easedT * deltaX + fromX);
|
|
514
|
-
}
|
|
515
|
-
if (easedT < 1) {
|
|
516
|
-
// do not use DomController here
|
|
517
|
-
// must use nativeRaf in order to fire in the next frame
|
|
518
|
-
requestAnimationFrame(step);
|
|
519
|
-
}
|
|
520
|
-
else {
|
|
521
|
-
resolve();
|
|
522
|
-
}
|
|
523
|
-
};
|
|
524
|
-
// chill out for a frame first
|
|
525
|
-
requestAnimationFrame((ts) => {
|
|
526
|
-
startTime = ts;
|
|
527
|
-
step(ts);
|
|
528
|
-
});
|
|
529
|
-
return promise;
|
|
530
|
-
}
|
|
531
|
-
onScrollStart() {
|
|
532
|
-
this.isScrolling = true;
|
|
533
|
-
this.ionScrollStart.emit({
|
|
534
|
-
isScrolling: true,
|
|
535
|
-
});
|
|
536
|
-
if (this.watchDog) {
|
|
537
|
-
clearInterval(this.watchDog);
|
|
538
|
-
}
|
|
539
|
-
// watchdog
|
|
540
|
-
this.watchDog = setInterval(() => {
|
|
541
|
-
if (this.lastScroll < Date.now() - 120) {
|
|
542
|
-
this.onScrollEnd();
|
|
543
|
-
}
|
|
544
|
-
}, 100);
|
|
545
|
-
}
|
|
546
|
-
onScrollEnd() {
|
|
547
|
-
if (this.watchDog)
|
|
548
|
-
clearInterval(this.watchDog);
|
|
549
|
-
this.watchDog = null;
|
|
550
|
-
if (this.isScrolling) {
|
|
551
|
-
this.isScrolling = false;
|
|
552
|
-
this.ionScrollEnd.emit({
|
|
553
|
-
isScrolling: false,
|
|
554
|
-
});
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
render() {
|
|
558
|
-
const { isMainContent, scrollX, scrollY, el } = this;
|
|
559
|
-
const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
|
|
560
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
561
|
-
const forceOverscroll = this.shouldForceOverscroll();
|
|
562
|
-
const transitionShadow = mode === 'ios';
|
|
563
|
-
const TagType = isMainContent ? 'main' : 'div';
|
|
564
|
-
this.resize();
|
|
565
|
-
return (index.h(index.Host, { key: 'e13815c0e6f6095150b112d3a1aaf2f509aa0d0b', class: theme.createColorClasses(this.color, {
|
|
566
|
-
[mode]: true,
|
|
567
|
-
'content-sizing': theme.hostContext('ion-popover', this.el),
|
|
568
|
-
overscroll: forceOverscroll,
|
|
569
|
-
[`content-${rtl}`]: true,
|
|
570
|
-
}), style: {
|
|
571
|
-
'--offset-top': `${this.cTop}px`,
|
|
572
|
-
'--offset-bottom': `${this.cBottom}px`,
|
|
573
|
-
} }, index.h("div", { key: '8006c4a10d8f7dc83c646246961d018a8097236e', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), index.h(TagType, { key: '4dd2f58421493f7a4ca42f8f5d7b85cda8e320ea', class: {
|
|
574
|
-
'inner-scroll': true,
|
|
575
|
-
'scroll-x': scrollX,
|
|
576
|
-
'scroll-y': scrollY,
|
|
577
|
-
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
578
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '37904f8f1d8319156cd901feb21930ef674fe0f7' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, index.h("slot", { key: '8f696583903af0548d064dca1a6bae060e127485', name: "fixed" })));
|
|
579
|
-
}
|
|
580
|
-
get el() { return index.getElement(this); }
|
|
581
|
-
};
|
|
582
|
-
const getParentElement = (el) => {
|
|
583
|
-
var _a;
|
|
584
|
-
if (el.parentElement) {
|
|
585
|
-
// normal element with a parent element
|
|
586
|
-
return el.parentElement;
|
|
587
|
-
}
|
|
588
|
-
if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.host) {
|
|
589
|
-
// shadow dom's document fragment
|
|
590
|
-
return el.parentNode.host;
|
|
591
|
-
}
|
|
592
|
-
return null;
|
|
593
|
-
};
|
|
594
|
-
const getPageElement = (el) => {
|
|
595
|
-
const tabs = el.closest('ion-tabs');
|
|
596
|
-
if (tabs) {
|
|
597
|
-
return tabs;
|
|
598
|
-
}
|
|
599
|
-
/**
|
|
600
|
-
* If we're in a popover, we need to use its wrapper so we can account for space
|
|
601
|
-
* between the popover and the edges of the screen. But if the popover contains
|
|
602
|
-
* its own page element, we should use that instead.
|
|
603
|
-
*/
|
|
604
|
-
const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
|
|
605
|
-
if (page) {
|
|
606
|
-
return page;
|
|
607
|
-
}
|
|
608
|
-
return getParentElement(el);
|
|
609
|
-
};
|
|
610
|
-
// ******** DOM READ ****************
|
|
611
|
-
const updateScrollDetail = (detail, el, timestamp, shouldStart) => {
|
|
612
|
-
const prevX = detail.currentX;
|
|
613
|
-
const prevY = detail.currentY;
|
|
614
|
-
const prevT = detail.currentTime;
|
|
615
|
-
const currentX = el.scrollLeft;
|
|
616
|
-
const currentY = el.scrollTop;
|
|
617
|
-
const timeDelta = timestamp - prevT;
|
|
618
|
-
if (shouldStart) {
|
|
619
|
-
// remember the start positions
|
|
620
|
-
detail.startTime = timestamp;
|
|
621
|
-
detail.startX = currentX;
|
|
622
|
-
detail.startY = currentY;
|
|
623
|
-
detail.velocityX = detail.velocityY = 0;
|
|
624
|
-
}
|
|
625
|
-
detail.currentTime = timestamp;
|
|
626
|
-
detail.currentX = detail.scrollLeft = currentX;
|
|
627
|
-
detail.currentY = detail.scrollTop = currentY;
|
|
628
|
-
detail.deltaX = currentX - detail.startX;
|
|
629
|
-
detail.deltaY = currentY - detail.startY;
|
|
630
|
-
if (timeDelta > 0 && timeDelta < 100) {
|
|
631
|
-
const velocityX = (currentX - prevX) / timeDelta;
|
|
632
|
-
const velocityY = (currentY - prevY) / timeDelta;
|
|
633
|
-
detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;
|
|
634
|
-
detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;
|
|
635
|
-
}
|
|
636
|
-
};
|
|
637
|
-
Content.style = IonContentStyle0;
|
|
638
|
-
|
|
639
|
-
/*!
|
|
640
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
641
|
-
*/
|
|
642
|
-
const handleFooterFade = (scrollEl, baseEl) => {
|
|
643
|
-
index.readTask(() => {
|
|
644
|
-
const scrollTop = scrollEl.scrollTop;
|
|
645
|
-
const maxScroll = scrollEl.scrollHeight - scrollEl.clientHeight;
|
|
646
|
-
/**
|
|
647
|
-
* Toolbar background will fade
|
|
648
|
-
* out over fadeDuration in pixels.
|
|
649
|
-
*/
|
|
650
|
-
const fadeDuration = 10;
|
|
651
|
-
/**
|
|
652
|
-
* Begin fading out maxScroll - 30px
|
|
653
|
-
* from the bottom of the content.
|
|
654
|
-
* Also determine how close we are
|
|
655
|
-
* to starting the fade. If we are
|
|
656
|
-
* before the starting point, the
|
|
657
|
-
* scale value will get clamped to 0.
|
|
658
|
-
* If we are after the maxScroll (rubber
|
|
659
|
-
* band scrolling), the scale value will
|
|
660
|
-
* get clamped to 1.
|
|
661
|
-
*/
|
|
662
|
-
const fadeStart = maxScroll - fadeDuration;
|
|
663
|
-
const distanceToStart = scrollTop - fadeStart;
|
|
664
|
-
const scale = helpers.clamp(0, 1 - distanceToStart / fadeDuration, 1);
|
|
665
|
-
index.writeTask(() => {
|
|
666
|
-
baseEl.style.setProperty('--opacity-scale', scale.toString());
|
|
667
|
-
});
|
|
668
|
-
});
|
|
669
|
-
};
|
|
670
|
-
|
|
671
|
-
const footerIosCss = "ion-footer{display:block;position:relative;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports (backdrop-filter: blur(0)){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}";
|
|
672
|
-
const IonFooterIosStyle0 = footerIosCss;
|
|
673
|
-
|
|
674
|
-
const footerMdCss = "ion-footer{display:block;position:relative;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{box-shadow:none}";
|
|
675
|
-
const IonFooterMdStyle0 = footerMdCss;
|
|
676
|
-
|
|
677
|
-
const Footer = class {
|
|
678
|
-
constructor(hostRef) {
|
|
679
|
-
index.registerInstance(this, hostRef);
|
|
680
|
-
this.keyboardCtrl = null;
|
|
681
|
-
this.checkCollapsibleFooter = () => {
|
|
682
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
683
|
-
if (mode !== 'ios') {
|
|
684
|
-
return;
|
|
685
|
-
}
|
|
686
|
-
const { collapse } = this;
|
|
687
|
-
const hasFade = collapse === 'fade';
|
|
688
|
-
this.destroyCollapsibleFooter();
|
|
689
|
-
if (hasFade) {
|
|
690
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
691
|
-
const contentEl = pageEl ? index$2.findIonContent(pageEl) : null;
|
|
692
|
-
if (!contentEl) {
|
|
693
|
-
index$2.printIonContentErrorMsg(this.el);
|
|
694
|
-
return;
|
|
695
|
-
}
|
|
696
|
-
this.setupFadeFooter(contentEl);
|
|
697
|
-
}
|
|
698
|
-
};
|
|
699
|
-
this.setupFadeFooter = async (contentEl) => {
|
|
700
|
-
const scrollEl = (this.scrollEl = await index$2.getScrollElement(contentEl));
|
|
701
|
-
/**
|
|
702
|
-
* Handle fading of toolbars on scroll
|
|
703
|
-
*/
|
|
704
|
-
this.contentScrollCallback = () => {
|
|
705
|
-
handleFooterFade(scrollEl, this.el);
|
|
706
|
-
};
|
|
707
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
708
|
-
handleFooterFade(scrollEl, this.el);
|
|
709
|
-
};
|
|
710
|
-
this.keyboardVisible = false;
|
|
711
|
-
this.collapse = undefined;
|
|
712
|
-
this.translucent = false;
|
|
713
|
-
}
|
|
714
|
-
componentDidLoad() {
|
|
715
|
-
this.checkCollapsibleFooter();
|
|
716
|
-
}
|
|
717
|
-
componentDidUpdate() {
|
|
718
|
-
this.checkCollapsibleFooter();
|
|
719
|
-
}
|
|
720
|
-
async connectedCallback() {
|
|
721
|
-
this.keyboardCtrl = await keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
|
|
722
|
-
/**
|
|
723
|
-
* If the keyboard is hiding, then we need to wait
|
|
724
|
-
* for the webview to resize. Otherwise, the footer
|
|
725
|
-
* will flicker before the webview resizes.
|
|
726
|
-
*/
|
|
727
|
-
if (keyboardOpen === false && waitForResize !== undefined) {
|
|
728
|
-
await waitForResize;
|
|
729
|
-
}
|
|
730
|
-
this.keyboardVisible = keyboardOpen; // trigger re-render by updating state
|
|
731
|
-
});
|
|
732
|
-
}
|
|
733
|
-
disconnectedCallback() {
|
|
734
|
-
if (this.keyboardCtrl) {
|
|
735
|
-
this.keyboardCtrl.destroy();
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
destroyCollapsibleFooter() {
|
|
739
|
-
if (this.scrollEl && this.contentScrollCallback) {
|
|
740
|
-
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
741
|
-
this.contentScrollCallback = undefined;
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
render() {
|
|
745
|
-
const { translucent, collapse } = this;
|
|
746
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
747
|
-
const tabs = this.el.closest('ion-tabs');
|
|
748
|
-
const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
|
|
749
|
-
return (index.h(index.Host, { key: 'dd8fa96901e8a09759a9621b6513f0492b3a6197', role: "contentinfo", class: {
|
|
750
|
-
[mode]: true,
|
|
751
|
-
// Used internally for styling
|
|
752
|
-
[`footer-${mode}`]: true,
|
|
753
|
-
[`footer-translucent`]: translucent,
|
|
754
|
-
[`footer-translucent-${mode}`]: translucent,
|
|
755
|
-
['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
|
|
756
|
-
[`footer-collapse-${collapse}`]: collapse !== undefined,
|
|
757
|
-
} }, mode === 'ios' && translucent && index.h("div", { key: '0fbb4ebf8e3951ff399f843dc11aab37fc48f8b7', class: "footer-background" }), index.h("slot", { key: 'ecb14a65e3b6960670446c4428e3095b3231a3b0' })));
|
|
758
|
-
}
|
|
759
|
-
get el() { return index.getElement(this); }
|
|
760
|
-
};
|
|
761
|
-
Footer.style = {
|
|
762
|
-
ios: IonFooterIosStyle0,
|
|
763
|
-
md: IonFooterMdStyle0
|
|
764
|
-
};
|
|
765
|
-
|
|
766
|
-
/*!
|
|
767
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
768
|
-
*/
|
|
769
|
-
const TRANSITION = 'all 0.2s ease-in-out';
|
|
770
|
-
const cloneElement = (tagName) => {
|
|
771
|
-
const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);
|
|
772
|
-
if (getCachedEl !== null) {
|
|
773
|
-
return getCachedEl;
|
|
774
|
-
}
|
|
775
|
-
const clonedEl = document.createElement(tagName);
|
|
776
|
-
clonedEl.classList.add('ion-cloned-element');
|
|
777
|
-
clonedEl.style.setProperty('display', 'none');
|
|
778
|
-
document.body.appendChild(clonedEl);
|
|
779
|
-
return clonedEl;
|
|
780
|
-
};
|
|
781
|
-
const createHeaderIndex = (headerEl) => {
|
|
782
|
-
if (!headerEl) {
|
|
783
|
-
return;
|
|
784
|
-
}
|
|
785
|
-
const toolbars = headerEl.querySelectorAll('ion-toolbar');
|
|
786
|
-
return {
|
|
787
|
-
el: headerEl,
|
|
788
|
-
toolbars: Array.from(toolbars).map((toolbar) => {
|
|
789
|
-
const ionTitleEl = toolbar.querySelector('ion-title');
|
|
790
|
-
return {
|
|
791
|
-
el: toolbar,
|
|
792
|
-
background: toolbar.shadowRoot.querySelector('.toolbar-background'),
|
|
793
|
-
ionTitleEl,
|
|
794
|
-
innerTitleEl: ionTitleEl ? ionTitleEl.shadowRoot.querySelector('.toolbar-title') : null,
|
|
795
|
-
ionButtonsEl: Array.from(toolbar.querySelectorAll('ion-buttons')),
|
|
796
|
-
};
|
|
797
|
-
}),
|
|
798
|
-
};
|
|
799
|
-
};
|
|
800
|
-
const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
|
|
801
|
-
index.readTask(() => {
|
|
802
|
-
const scrollTop = scrollEl.scrollTop;
|
|
803
|
-
const scale = helpers.clamp(1, 1 + -scrollTop / 500, 1.1);
|
|
804
|
-
// Native refresher should not cause titles to scale
|
|
805
|
-
const nativeRefresher = contentEl.querySelector('ion-refresher.refresher-native');
|
|
806
|
-
if (nativeRefresher === null) {
|
|
807
|
-
index.writeTask(() => {
|
|
808
|
-
scaleLargeTitles(scrollHeaderIndex.toolbars, scale);
|
|
809
|
-
});
|
|
810
|
-
}
|
|
811
|
-
});
|
|
812
|
-
};
|
|
813
|
-
const setToolbarBackgroundOpacity = (headerEl, opacity) => {
|
|
814
|
-
/**
|
|
815
|
-
* Fading in the backdrop opacity
|
|
816
|
-
* should happen after the large title
|
|
817
|
-
* has collapsed, so it is handled
|
|
818
|
-
* by handleHeaderFade()
|
|
819
|
-
*/
|
|
820
|
-
if (headerEl.collapse === 'fade') {
|
|
821
|
-
return;
|
|
822
|
-
}
|
|
823
|
-
if (opacity === undefined) {
|
|
824
|
-
headerEl.style.removeProperty('--opacity-scale');
|
|
825
|
-
}
|
|
826
|
-
else {
|
|
827
|
-
headerEl.style.setProperty('--opacity-scale', opacity.toString());
|
|
828
|
-
}
|
|
829
|
-
};
|
|
830
|
-
const handleToolbarBorderIntersection = (ev, mainHeaderIndex, scrollTop) => {
|
|
831
|
-
if (!ev[0].isIntersecting) {
|
|
832
|
-
return;
|
|
833
|
-
}
|
|
834
|
-
/**
|
|
835
|
-
* There is a bug in Safari where overflow scrolling on a non-body element
|
|
836
|
-
* does not always reset the scrollTop position to 0 when letting go. It will
|
|
837
|
-
* set to 1 once the rubber band effect has ended. This causes the background to
|
|
838
|
-
* appear slightly on certain app setups.
|
|
839
|
-
*
|
|
840
|
-
* Additionally, we check if user is rubber banding (scrolling is negative)
|
|
841
|
-
* as this can mean they are using pull to refresh. Once the refresher starts,
|
|
842
|
-
* the content is transformed which can cause the intersection observer to erroneously
|
|
843
|
-
* fire here as well.
|
|
844
|
-
*/
|
|
845
|
-
const scale = ev[0].intersectionRatio > 0.9 || scrollTop <= 0 ? 0 : ((1 - ev[0].intersectionRatio) * 100) / 75;
|
|
846
|
-
setToolbarBackgroundOpacity(mainHeaderIndex.el, scale === 1 ? undefined : scale);
|
|
847
|
-
};
|
|
848
|
-
/**
|
|
849
|
-
* If toolbars are intersecting, hide the scrollable toolbar content
|
|
850
|
-
* and show the primary toolbar content. If the toolbars are not intersecting,
|
|
851
|
-
* hide the primary toolbar content and show the scrollable toolbar content
|
|
852
|
-
*/
|
|
853
|
-
const handleToolbarIntersection = (ev, // TODO(FW-2832): type (IntersectionObserverEntry[] triggers errors which should be sorted)
|
|
854
|
-
mainHeaderIndex, scrollHeaderIndex, scrollEl) => {
|
|
855
|
-
index.writeTask(() => {
|
|
856
|
-
const scrollTop = scrollEl.scrollTop;
|
|
857
|
-
handleToolbarBorderIntersection(ev, mainHeaderIndex, scrollTop);
|
|
858
|
-
const event = ev[0];
|
|
859
|
-
const intersection = event.intersectionRect;
|
|
860
|
-
const intersectionArea = intersection.width * intersection.height;
|
|
861
|
-
const rootArea = event.rootBounds.width * event.rootBounds.height;
|
|
862
|
-
const isPageHidden = intersectionArea === 0 && rootArea === 0;
|
|
863
|
-
const leftDiff = Math.abs(intersection.left - event.boundingClientRect.left);
|
|
864
|
-
const rightDiff = Math.abs(intersection.right - event.boundingClientRect.right);
|
|
865
|
-
const isPageTransitioning = intersectionArea > 0 && (leftDiff >= 5 || rightDiff >= 5);
|
|
866
|
-
if (isPageHidden || isPageTransitioning) {
|
|
867
|
-
return;
|
|
868
|
-
}
|
|
869
|
-
if (event.isIntersecting) {
|
|
870
|
-
setHeaderActive(mainHeaderIndex, false);
|
|
871
|
-
setHeaderActive(scrollHeaderIndex);
|
|
872
|
-
}
|
|
873
|
-
else {
|
|
874
|
-
/**
|
|
875
|
-
* There is a bug with IntersectionObserver on Safari
|
|
876
|
-
* where `event.isIntersecting === false` when cancelling
|
|
877
|
-
* a swipe to go back gesture. Checking the intersection
|
|
878
|
-
* x, y, width, and height provides a workaround. This bug
|
|
879
|
-
* does not happen when using Safari + Web Animations,
|
|
880
|
-
* only Safari + CSS Animations.
|
|
881
|
-
*/
|
|
882
|
-
const hasValidIntersection = (intersection.x === 0 && intersection.y === 0) || (intersection.width !== 0 && intersection.height !== 0);
|
|
883
|
-
if (hasValidIntersection && scrollTop > 0) {
|
|
884
|
-
setHeaderActive(mainHeaderIndex);
|
|
885
|
-
setHeaderActive(scrollHeaderIndex, false);
|
|
886
|
-
setToolbarBackgroundOpacity(mainHeaderIndex.el);
|
|
887
|
-
}
|
|
888
|
-
}
|
|
889
|
-
});
|
|
890
|
-
};
|
|
891
|
-
const setHeaderActive = (headerIndex, active = true) => {
|
|
892
|
-
const headerEl = headerIndex.el;
|
|
893
|
-
if (active) {
|
|
894
|
-
headerEl.classList.remove('header-collapse-condense-inactive');
|
|
895
|
-
headerEl.removeAttribute('aria-hidden');
|
|
896
|
-
}
|
|
897
|
-
else {
|
|
898
|
-
headerEl.classList.add('header-collapse-condense-inactive');
|
|
899
|
-
headerEl.setAttribute('aria-hidden', 'true');
|
|
900
|
-
}
|
|
901
|
-
};
|
|
902
|
-
const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
|
|
903
|
-
toolbars.forEach((toolbar) => {
|
|
904
|
-
const ionTitle = toolbar.ionTitleEl;
|
|
905
|
-
const titleDiv = toolbar.innerTitleEl;
|
|
906
|
-
if (!ionTitle || ionTitle.size !== 'large') {
|
|
907
|
-
return;
|
|
908
|
-
}
|
|
909
|
-
titleDiv.style.transition = transition ? TRANSITION : '';
|
|
910
|
-
titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;
|
|
911
|
-
});
|
|
912
|
-
};
|
|
913
|
-
const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
|
|
914
|
-
index.readTask(() => {
|
|
915
|
-
const scrollTop = scrollEl.scrollTop;
|
|
916
|
-
const baseElHeight = baseEl.clientHeight;
|
|
917
|
-
const fadeStart = condenseHeader ? condenseHeader.clientHeight : 0;
|
|
918
|
-
/**
|
|
919
|
-
* If we are using fade header with a condense
|
|
920
|
-
* header, then the toolbar backgrounds should
|
|
921
|
-
* not begin to fade in until the condense
|
|
922
|
-
* header has fully collapsed.
|
|
923
|
-
*
|
|
924
|
-
* Additionally, the main content should not
|
|
925
|
-
* overflow out of the container until the
|
|
926
|
-
* condense header has fully collapsed. When
|
|
927
|
-
* using just the condense header the content
|
|
928
|
-
* should overflow out of the container.
|
|
929
|
-
*/
|
|
930
|
-
if (condenseHeader !== null && scrollTop < fadeStart) {
|
|
931
|
-
baseEl.style.setProperty('--opacity-scale', '0');
|
|
932
|
-
scrollEl.style.setProperty('clip-path', `inset(${baseElHeight}px 0px 0px 0px)`);
|
|
933
|
-
return;
|
|
934
|
-
}
|
|
935
|
-
const distanceToStart = scrollTop - fadeStart;
|
|
936
|
-
const fadeDuration = 10;
|
|
937
|
-
const scale = helpers.clamp(0, distanceToStart / fadeDuration, 1);
|
|
938
|
-
index.writeTask(() => {
|
|
939
|
-
scrollEl.style.removeProperty('clip-path');
|
|
940
|
-
baseEl.style.setProperty('--opacity-scale', scale.toString());
|
|
941
|
-
});
|
|
942
|
-
});
|
|
943
|
-
};
|
|
944
|
-
|
|
945
|
-
const headerIosCss = "ion-header{display:block;position:relative;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports (backdrop-filter: blur(0)){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{--background:var(--ion-background-color, #fff);z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{transition:all 0.2s ease-in-out}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}";
|
|
946
|
-
const IonHeaderIosStyle0 = headerIosCss;
|
|
947
|
-
|
|
948
|
-
const headerMdCss = "ion-header{display:block;position:relative;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-collapse-condense{display:none}.header-md.ion-no-border{box-shadow:none}";
|
|
949
|
-
const IonHeaderMdStyle0 = headerMdCss;
|
|
950
|
-
|
|
951
|
-
const Header = class {
|
|
952
|
-
constructor(hostRef) {
|
|
953
|
-
index.registerInstance(this, hostRef);
|
|
954
|
-
this.inheritedAttributes = {};
|
|
955
|
-
this.setupFadeHeader = async (contentEl, condenseHeader) => {
|
|
956
|
-
const scrollEl = (this.scrollEl = await index$2.getScrollElement(contentEl));
|
|
957
|
-
/**
|
|
958
|
-
* Handle fading of toolbars on scroll
|
|
959
|
-
*/
|
|
960
|
-
this.contentScrollCallback = () => {
|
|
961
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
962
|
-
};
|
|
963
|
-
scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
964
|
-
handleHeaderFade(this.scrollEl, this.el, condenseHeader);
|
|
965
|
-
};
|
|
966
|
-
this.collapse = undefined;
|
|
967
|
-
this.translucent = false;
|
|
968
|
-
}
|
|
969
|
-
componentWillLoad() {
|
|
970
|
-
this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
|
|
971
|
-
}
|
|
972
|
-
componentDidLoad() {
|
|
973
|
-
this.checkCollapsibleHeader();
|
|
974
|
-
}
|
|
975
|
-
componentDidUpdate() {
|
|
976
|
-
this.checkCollapsibleHeader();
|
|
977
|
-
}
|
|
978
|
-
disconnectedCallback() {
|
|
979
|
-
this.destroyCollapsibleHeader();
|
|
980
|
-
}
|
|
981
|
-
async checkCollapsibleHeader() {
|
|
982
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
983
|
-
if (mode !== 'ios') {
|
|
984
|
-
return;
|
|
985
|
-
}
|
|
986
|
-
const { collapse } = this;
|
|
987
|
-
const hasCondense = collapse === 'condense';
|
|
988
|
-
const hasFade = collapse === 'fade';
|
|
989
|
-
this.destroyCollapsibleHeader();
|
|
990
|
-
if (hasCondense) {
|
|
991
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
992
|
-
const contentEl = pageEl ? index$2.findIonContent(pageEl) : null;
|
|
993
|
-
// Cloned elements are always needed in iOS transition
|
|
994
|
-
index.writeTask(() => {
|
|
995
|
-
const title = cloneElement('ion-title');
|
|
996
|
-
title.size = 'large';
|
|
997
|
-
cloneElement('ion-back-button');
|
|
998
|
-
});
|
|
999
|
-
await this.setupCondenseHeader(contentEl, pageEl);
|
|
1000
|
-
}
|
|
1001
|
-
else if (hasFade) {
|
|
1002
|
-
const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
|
|
1003
|
-
const contentEl = pageEl ? index$2.findIonContent(pageEl) : null;
|
|
1004
|
-
if (!contentEl) {
|
|
1005
|
-
index$2.printIonContentErrorMsg(this.el);
|
|
1006
|
-
return;
|
|
1007
|
-
}
|
|
1008
|
-
const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
|
|
1009
|
-
await this.setupFadeHeader(contentEl, condenseHeader);
|
|
1010
|
-
}
|
|
1011
|
-
}
|
|
1012
|
-
destroyCollapsibleHeader() {
|
|
1013
|
-
if (this.intersectionObserver) {
|
|
1014
|
-
this.intersectionObserver.disconnect();
|
|
1015
|
-
this.intersectionObserver = undefined;
|
|
1016
|
-
}
|
|
1017
|
-
if (this.scrollEl && this.contentScrollCallback) {
|
|
1018
|
-
this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
|
|
1019
|
-
this.contentScrollCallback = undefined;
|
|
1020
|
-
}
|
|
1021
|
-
if (this.collapsibleMainHeader) {
|
|
1022
|
-
this.collapsibleMainHeader.classList.remove('header-collapse-main');
|
|
1023
|
-
this.collapsibleMainHeader = undefined;
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
async setupCondenseHeader(contentEl, pageEl) {
|
|
1027
|
-
if (!contentEl || !pageEl) {
|
|
1028
|
-
index$2.printIonContentErrorMsg(this.el);
|
|
1029
|
-
return;
|
|
1030
|
-
}
|
|
1031
|
-
if (typeof IntersectionObserver === 'undefined') {
|
|
1032
|
-
return;
|
|
1033
|
-
}
|
|
1034
|
-
this.scrollEl = await index$2.getScrollElement(contentEl);
|
|
1035
|
-
const headers = pageEl.querySelectorAll('ion-header');
|
|
1036
|
-
this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
|
|
1037
|
-
if (!this.collapsibleMainHeader) {
|
|
1038
|
-
return;
|
|
1039
|
-
}
|
|
1040
|
-
const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
|
|
1041
|
-
const scrollHeaderIndex = createHeaderIndex(this.el);
|
|
1042
|
-
if (!mainHeaderIndex || !scrollHeaderIndex) {
|
|
1043
|
-
return;
|
|
1044
|
-
}
|
|
1045
|
-
setHeaderActive(mainHeaderIndex, false);
|
|
1046
|
-
setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
|
|
1047
|
-
/**
|
|
1048
|
-
* Handle interaction between toolbar collapse and
|
|
1049
|
-
* showing/hiding content in the primary ion-header
|
|
1050
|
-
* as well as progressively showing/hiding the main header
|
|
1051
|
-
* border as the top-most toolbar collapses or expands.
|
|
1052
|
-
*/
|
|
1053
|
-
const toolbarIntersection = (ev) => {
|
|
1054
|
-
handleToolbarIntersection(ev, mainHeaderIndex, scrollHeaderIndex, this.scrollEl);
|
|
1055
|
-
};
|
|
1056
|
-
this.intersectionObserver = new IntersectionObserver(toolbarIntersection, {
|
|
1057
|
-
root: contentEl,
|
|
1058
|
-
threshold: [0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],
|
|
1059
|
-
});
|
|
1060
|
-
this.intersectionObserver.observe(scrollHeaderIndex.toolbars[scrollHeaderIndex.toolbars.length - 1].el);
|
|
1061
|
-
/**
|
|
1062
|
-
* Handle scaling of large iOS titles and
|
|
1063
|
-
* showing/hiding border on last toolbar
|
|
1064
|
-
* in primary header
|
|
1065
|
-
*/
|
|
1066
|
-
this.contentScrollCallback = () => {
|
|
1067
|
-
handleContentScroll(this.scrollEl, scrollHeaderIndex, contentEl);
|
|
1068
|
-
};
|
|
1069
|
-
this.scrollEl.addEventListener('scroll', this.contentScrollCallback);
|
|
1070
|
-
index.writeTask(() => {
|
|
1071
|
-
if (this.collapsibleMainHeader !== undefined) {
|
|
1072
|
-
this.collapsibleMainHeader.classList.add('header-collapse-main');
|
|
1073
|
-
}
|
|
1074
|
-
});
|
|
1075
|
-
}
|
|
1076
|
-
render() {
|
|
1077
|
-
const { translucent, inheritedAttributes } = this;
|
|
1078
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
1079
|
-
const collapse = this.collapse || 'none';
|
|
1080
|
-
// banner role must be at top level, so remove role if inside a menu
|
|
1081
|
-
const roleType = theme.hostContext('ion-menu', this.el) ? 'none' : 'banner';
|
|
1082
|
-
return (index.h(index.Host, Object.assign({ key: '9fa0af97b605f9fe98b13361bc3d1289745c549f', role: roleType, class: {
|
|
1083
|
-
[mode]: true,
|
|
1084
|
-
// Used internally for styling
|
|
1085
|
-
[`header-${mode}`]: true,
|
|
1086
|
-
[`header-translucent`]: this.translucent,
|
|
1087
|
-
[`header-collapse-${collapse}`]: true,
|
|
1088
|
-
[`header-translucent-${mode}`]: this.translucent,
|
|
1089
|
-
} }, inheritedAttributes), mode === 'ios' && translucent && index.h("div", { key: '1a780d2625302f2465718e304bdd3794c89c9845', class: "header-background" }), index.h("slot", { key: 'b2b8557b44be40c590bfcc362ac4350f9f8b889e' })));
|
|
1090
|
-
}
|
|
1091
|
-
get el() { return index.getElement(this); }
|
|
1092
|
-
};
|
|
1093
|
-
Header.style = {
|
|
1094
|
-
ios: IonHeaderIosStyle0,
|
|
1095
|
-
md: IonHeaderMdStyle0
|
|
1096
|
-
};
|
|
1097
|
-
|
|
1098
131
|
let CACHED_MAP;
|
|
1099
132
|
const getIconMap = () => {
|
|
1100
133
|
if (typeof window === 'undefined') {
|
|
@@ -1694,7 +727,7 @@ const Searchbar = class {
|
|
|
1694
727
|
this.autocapitalize = 'default';
|
|
1695
728
|
this.autocomplete = 'off';
|
|
1696
729
|
this.autocorrect = 'off';
|
|
1697
|
-
this.cancelButtonIcon = ionicGlobal.config.get('backButtonIcon', index$
|
|
730
|
+
this.cancelButtonIcon = ionicGlobal.config.get('backButtonIcon', index$1.arrowBackSharp);
|
|
1698
731
|
this.cancelButtonText = 'Cancel';
|
|
1699
732
|
this.clearIcon = undefined;
|
|
1700
733
|
this.debounce = undefined;
|
|
@@ -1949,8 +982,8 @@ const Searchbar = class {
|
|
|
1949
982
|
const { cancelButtonText, autocapitalize } = this;
|
|
1950
983
|
const animated = this.animated && ionicGlobal.config.getBoolean('animated', true);
|
|
1951
984
|
const mode = ionicGlobal.getIonMode(this);
|
|
1952
|
-
const clearIcon = this.clearIcon || (mode === 'ios' ? index$
|
|
1953
|
-
const searchIcon = this.searchIcon || (mode === 'ios' ? index$
|
|
985
|
+
const clearIcon = this.clearIcon || (mode === 'ios' ? index$1.closeCircle : index$1.closeSharp);
|
|
986
|
+
const searchIcon = this.searchIcon || (mode === 'ios' ? index$1.searchOutline : index$1.searchSharp);
|
|
1954
987
|
const shouldShowCancelButton = this.shouldShowCancelButton();
|
|
1955
988
|
const cancelButton = this.showCancelButton !== 'never' && (index.h("button", { key: '9c7b4d2e86d9bcd12e57c9a96723d3da598a3773', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, index.h("div", { key: '1c25268a776134cccd29eb752898cb8ac0eed30f', "aria-hidden": "true" }, mode === 'md' ? (index.h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
|
|
1956
989
|
return (index.h(index.Host, { key: 'feef9fc7e405656e134a76dc037aaaa1a4ce36b4', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: theme.createColorClasses(this.color, {
|
|
@@ -2022,121 +1055,6 @@ const SkeletonText = class {
|
|
|
2022
1055
|
};
|
|
2023
1056
|
SkeletonText.style = IonSkeletonTextStyle0;
|
|
2024
1057
|
|
|
2025
|
-
const titleIosCss = ":host{--color:initial;display:flex;flex:1;align-items:center;transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;box-sizing:border-box;pointer-events:none}@supports (inset-inline-start: 0){:host{inset-inline-start:0}}@supports not (inset-inline-start: 0){:host{left:0}:host-context([dir=rtl]){left:unset;right:unset;right:0}@supports selector(:dir(rtl)){:host(:dir(rtl)){left:unset;right:unset;right:0}}}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;transform-origin:left center;position:static;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{transform-origin:calc(100% - inherit)}}";
|
|
2026
|
-
const IonTitleIosStyle0 = titleIosCss;
|
|
2027
|
-
|
|
2028
|
-
const titleMdCss = ":host{--color:initial;display:flex;flex:1;align-items:center;transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}";
|
|
2029
|
-
const IonTitleMdStyle0 = titleMdCss;
|
|
2030
|
-
|
|
2031
|
-
const ToolbarTitle = class {
|
|
2032
|
-
constructor(hostRef) {
|
|
2033
|
-
index.registerInstance(this, hostRef);
|
|
2034
|
-
this.ionStyle = index.createEvent(this, "ionStyle", 7);
|
|
2035
|
-
this.color = undefined;
|
|
2036
|
-
this.size = undefined;
|
|
2037
|
-
}
|
|
2038
|
-
sizeChanged() {
|
|
2039
|
-
this.emitStyle();
|
|
2040
|
-
}
|
|
2041
|
-
connectedCallback() {
|
|
2042
|
-
this.emitStyle();
|
|
2043
|
-
}
|
|
2044
|
-
emitStyle() {
|
|
2045
|
-
const size = this.getSize();
|
|
2046
|
-
this.ionStyle.emit({
|
|
2047
|
-
[`title-${size}`]: true,
|
|
2048
|
-
});
|
|
2049
|
-
}
|
|
2050
|
-
getSize() {
|
|
2051
|
-
return this.size !== undefined ? this.size : 'default';
|
|
2052
|
-
}
|
|
2053
|
-
render() {
|
|
2054
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
2055
|
-
const size = this.getSize();
|
|
2056
|
-
return (index.h(index.Host, { key: '6f43362b782ef7d340c241bb66f1469663c03cc1', class: theme.createColorClasses(this.color, {
|
|
2057
|
-
[mode]: true,
|
|
2058
|
-
[`title-${size}`]: true,
|
|
2059
|
-
'title-rtl': document.dir === 'rtl',
|
|
2060
|
-
}) }, index.h("div", { key: '9c3ff1a289e533ee3426b71ab5560fbea3529502', class: "toolbar-title" }, index.h("slot", { key: '50d5cc5a1519ad58f1994d2f8c8f08f62baac1fe' }))));
|
|
2061
|
-
}
|
|
2062
|
-
get el() { return index.getElement(this); }
|
|
2063
|
-
static get watchers() { return {
|
|
2064
|
-
"size": ["sizeChanged"]
|
|
2065
|
-
}; }
|
|
2066
|
-
};
|
|
2067
|
-
ToolbarTitle.style = {
|
|
2068
|
-
ios: IonTitleIosStyle0,
|
|
2069
|
-
md: IonTitleMdStyle0
|
|
2070
|
-
};
|
|
2071
|
-
|
|
2072
|
-
const toolbarIosCss = ":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;position:relative;flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, #f7f7f7));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{flex:1;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){order:2}::slotted([slot=secondary]){order:3}::slotted([slot=primary]){order:5;text-align:end}::slotted([slot=end]){order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{flex-wrap:wrap;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{flex:1;order:8;min-width:100%}";
|
|
2073
|
-
const IonToolbarIosStyle0 = toolbarIosCss;
|
|
2074
|
-
|
|
2075
|
-
const toolbarMdCss = ":host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:flex;position:relative;flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, #c1c4cd)));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{flex:1;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){order:2}::slotted([slot=secondary]){order:4}::slotted([slot=primary]){order:5;text-align:end}::slotted([slot=end]){order:6;text-align:end}";
|
|
2076
|
-
const IonToolbarMdStyle0 = toolbarMdCss;
|
|
2077
|
-
|
|
2078
|
-
const Toolbar = class {
|
|
2079
|
-
constructor(hostRef) {
|
|
2080
|
-
index.registerInstance(this, hostRef);
|
|
2081
|
-
this.childrenStyles = new Map();
|
|
2082
|
-
this.color = undefined;
|
|
2083
|
-
}
|
|
2084
|
-
componentWillLoad() {
|
|
2085
|
-
const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
|
|
2086
|
-
const firstButtons = buttons.find((button) => {
|
|
2087
|
-
return button.slot === 'start';
|
|
2088
|
-
});
|
|
2089
|
-
if (firstButtons) {
|
|
2090
|
-
firstButtons.classList.add('buttons-first-slot');
|
|
2091
|
-
}
|
|
2092
|
-
const buttonsReversed = buttons.reverse();
|
|
2093
|
-
const lastButtons = buttonsReversed.find((button) => button.slot === 'end') ||
|
|
2094
|
-
buttonsReversed.find((button) => button.slot === 'primary') ||
|
|
2095
|
-
buttonsReversed.find((button) => button.slot === 'secondary');
|
|
2096
|
-
if (lastButtons) {
|
|
2097
|
-
lastButtons.classList.add('buttons-last-slot');
|
|
2098
|
-
}
|
|
2099
|
-
}
|
|
2100
|
-
childrenStyle(ev) {
|
|
2101
|
-
ev.stopPropagation();
|
|
2102
|
-
const tagName = ev.target.tagName;
|
|
2103
|
-
const updatedStyles = ev.detail;
|
|
2104
|
-
const newStyles = {};
|
|
2105
|
-
const childStyles = this.childrenStyles.get(tagName) || {};
|
|
2106
|
-
let hasStyleChange = false;
|
|
2107
|
-
Object.keys(updatedStyles).forEach((key) => {
|
|
2108
|
-
const childKey = `toolbar-${key}`;
|
|
2109
|
-
const newValue = updatedStyles[key];
|
|
2110
|
-
if (newValue !== childStyles[childKey]) {
|
|
2111
|
-
hasStyleChange = true;
|
|
2112
|
-
}
|
|
2113
|
-
if (newValue) {
|
|
2114
|
-
newStyles[childKey] = true;
|
|
2115
|
-
}
|
|
2116
|
-
});
|
|
2117
|
-
if (hasStyleChange) {
|
|
2118
|
-
this.childrenStyles.set(tagName, newStyles);
|
|
2119
|
-
index.forceUpdate(this);
|
|
2120
|
-
}
|
|
2121
|
-
}
|
|
2122
|
-
render() {
|
|
2123
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
2124
|
-
const childStyles = {};
|
|
2125
|
-
this.childrenStyles.forEach((value) => {
|
|
2126
|
-
Object.assign(childStyles, value);
|
|
2127
|
-
});
|
|
2128
|
-
return (index.h(index.Host, { key: '8907ed75fbb2b1dced55c481bba6363f1dca815b', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
|
|
2129
|
-
[mode]: true,
|
|
2130
|
-
'in-toolbar': theme.hostContext('ion-toolbar', this.el),
|
|
2131
|
-
})) }, index.h("div", { key: '6bfa09b08d6517f0d680f53b739854cecd631bc9', class: "toolbar-background" }), index.h("div", { key: '1531bd6dd9e0a5843309bba854b744c453037ad0', class: "toolbar-container" }, index.h("slot", { key: '881b41697d386eae651b019128573f0fa432cd33', name: "start" }), index.h("slot", { key: '64a284e6eae5311ac3125dfadb4bb32bdba9d089', name: "secondary" }), index.h("div", { key: 'c1f47503563b38084b27d7ba54f17ec478482b94', class: "toolbar-content" }, index.h("slot", { key: '9a85acfba72252705619ae32acae9c14f81aa57d' })), index.h("slot", { key: '89e08bd761dc6940dbebc5d06f5f080af204aa72', name: "primary" }), index.h("slot", { key: 'a1cb7d95627f8a3d24dd4b9c11718fc164f53674', name: "end" }))));
|
|
2132
|
-
}
|
|
2133
|
-
get el() { return index.getElement(this); }
|
|
2134
|
-
};
|
|
2135
|
-
Toolbar.style = {
|
|
2136
|
-
ios: IonToolbarIosStyle0,
|
|
2137
|
-
md: IonToolbarMdStyle0
|
|
2138
|
-
};
|
|
2139
|
-
|
|
2140
1058
|
const posAddNewThingCss = ":host{font-family:var(--font-sans);display:block}button#new{cursor:pointer;display:flex;align-items:center;justify-content:center;border:none;width:var(--scale-5);height:var(--scale-5);background-color:var(--pos-primary-color);color:var(--color-grey-50);font-size:var(--scale-6);border-radius:var(--radius-xs)}button#new:hover,button#new:focus{outline:none;filter:brightness(110%);box-shadow:var(--shadow-sm)}pos-new-thing-form{margin:var(--scale-3)}";
|
|
2141
1059
|
const PosAddNewThingStyle0 = posAddNewThingCss;
|
|
2142
1060
|
|
|
@@ -2149,13 +1067,13 @@ const PosAddNewThing = class {
|
|
|
2149
1067
|
this.dialog.showModal();
|
|
2150
1068
|
}
|
|
2151
1069
|
render() {
|
|
2152
|
-
return (index.h(index.Host, { key: '
|
|
1070
|
+
return (index.h(index.Host, { key: '2e632aa0d1699b39fd52f178c93bb510ac2d6e91' }, index.h("button", { key: '3830a37cc82868ed6bcbb4b88049da5de1a932c4', id: "new", title: "Add a new thing", onClick: () => this.openDialog() }, index.h("ion-icon", { key: 'efd48bfa658f4d58792e442ede0c22527ac1fb34', name: "add-circle-outline" })), index.h("pos-dialog", { key: '69be02ce0bf6a01ba7c919de67c87acc4a550983', ref: el => (this.dialog = el) }, index.h("span", { key: '8cfc152b49103ed239238af52f7c7de3f18df1b1', slot: "title" }, "Add a new thing"), index.h("pos-new-thing-form", { key: '4780a2a0c7254a577d38deac1d5078e8d5c7f82e', slot: "content", referenceUri: this.referenceUri }))));
|
|
2153
1071
|
}
|
|
2154
1072
|
};
|
|
2155
1073
|
PosAddNewThing.style = PosAddNewThingStyle0;
|
|
2156
1074
|
|
|
2157
1075
|
const createPodOS = () => {
|
|
2158
|
-
return new index$
|
|
1076
|
+
return new index$2.PodOS();
|
|
2159
1077
|
};
|
|
2160
1078
|
|
|
2161
1079
|
function isFunction(value) {
|
|
@@ -3122,19 +2040,39 @@ const PosApp = class {
|
|
|
3122
2040
|
}
|
|
3123
2041
|
}
|
|
3124
2042
|
render() {
|
|
3125
|
-
return index.h("slot", { key: '
|
|
2043
|
+
return index.h("slot", { key: '0c1dd123a984543004e73308e33bab0afca708c7' });
|
|
3126
2044
|
}
|
|
3127
2045
|
};
|
|
3128
2046
|
|
|
2047
|
+
const posAppBrowserCss = "pos-router{margin:0;padding:0;display:flex;flex-direction:column;height:100vh}pos-navigation-bar{max-width:var(--width-lg);margin:0}pos-add-new-thing,pos-login{flex:0 1 auto;}header,footer{display:flex;gap:var(--size-1);height:auto;justify-content:center;align-items:center;padding:var(--size-1)}footer svg{width:var(--size-5);height:var(--size-5)}footer{font-size:var(--scale-fluid-000)}header{flex-wrap:wrap;padding:0 var(--size-8)}main{flex:1;max-height:100vh;overflow:auto}@media (max-width: 640px){header{padding:0 var(--size-1) var(--size-1);justify-content:space-between}pos-navigation-bar{flex-basis:100%;order:0}pos-add-new-thing,pos-login{order:1}}";
|
|
2048
|
+
const PosAppBrowserStyle0 = posAppBrowserCss;
|
|
2049
|
+
|
|
3129
2050
|
const PosAppBrowser = class {
|
|
3130
2051
|
constructor(hostRef) {
|
|
3131
2052
|
index.registerInstance(this, hostRef);
|
|
3132
2053
|
this.restorePreviousSession = false;
|
|
2054
|
+
this.uri = '';
|
|
3133
2055
|
}
|
|
3134
2056
|
render() {
|
|
3135
|
-
return (index.h("pos-app", { key: '
|
|
3136
|
-
}
|
|
3137
|
-
};
|
|
2057
|
+
return (index.h(index.Host, { key: 'b154b596b7c172de223da89c4f6e113607111ff4' }, index.h("pos-app", { key: '057c6ea517b358513a292ee1b22a4ab3f847acb4', restorePreviousSession: this.restorePreviousSession }, index.h("pos-error-toast", { key: '818712bc4dfbba08a5091412931fba60529f1ce1' }, index.h("pos-router", { key: '58b23715dd4a0c4c981b92c43da41df4fde0bfe5', "onPod-os:route-changed": e => (this.uri = e.detail) }, index.h("header", { key: 'e83dcbaff0f013747922a62734856663e0d8e095' }, index.h("pos-add-new-thing", { key: 'e74961384b4c145bdf7d771fbae0547f83b95b78', referenceUri: this.uri }), index.h("pos-navigation-bar", { key: 'e3cb7e3e137f2615fdda8980444fd03bf009bbd3', uri: this.uri }), index.h("pos-login", { key: 'fe07f4cedb465911c76fc0c4520c6084090c9fed' })), index.h("main", { key: '993531497ec2d6ec8a9828519c1405568f2ab86b' }, index.h("pos-resource", { key: this.uri, uri: this.uri }, index.h("pos-type-router", { key: '0b4faa6fac3426438744c224d5966cf1b8312e4a' }))), index.h("footer", { key: 'cff5a02d8a14b478a4484ce105e53443b9b753ae' }, index.h(Logo, { key: 'd6a67415ba15c8b0a72517dd011b622564d9d8d2' }), index.h("span", { key: '5cfb56d1da679a022826b72082fe47cad150f055' }, "PodOS Browser")))))));
|
|
2058
|
+
}
|
|
2059
|
+
};
|
|
2060
|
+
const Logo = () => {
|
|
2061
|
+
return (index.h("svg", { viewBox: "0 0 400 400", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { d: "M50 350 L50 100 L200 50 L350 100 L350 350 Z", style: {
|
|
2062
|
+
'fill': '#008BF8',
|
|
2063
|
+
'stroke': '#008BF8',
|
|
2064
|
+
'stroke-width': '70',
|
|
2065
|
+
}, "stroke-linejoin": "round" }), index.h("path", { d: "M100 300 L100 150 L200 120 L300 150 L300 300 L130 300 L130 370 L100 370Z", style: {
|
|
2066
|
+
'fill': 'white',
|
|
2067
|
+
'stroke': 'white',
|
|
2068
|
+
'stroke-width': '45',
|
|
2069
|
+
}, "stroke-linejoin": "round" }), index.h("path", { d: "M150 250 L150 200 L200 180 L250 200 L250 250 Z", style: {
|
|
2070
|
+
'fill': '#DC0073',
|
|
2071
|
+
'stroke': '#DC0073',
|
|
2072
|
+
'stroke-width': '20',
|
|
2073
|
+
}, "stroke-linejoin": "round" })));
|
|
2074
|
+
};
|
|
2075
|
+
PosAppBrowser.style = PosAppBrowserStyle0;
|
|
3138
2076
|
|
|
3139
2077
|
const PosDescription = class {
|
|
3140
2078
|
constructor(hostRef) {
|
|
@@ -3167,7 +2105,7 @@ const PosDialog = class {
|
|
|
3167
2105
|
this.dialog.close();
|
|
3168
2106
|
}
|
|
3169
2107
|
render() {
|
|
3170
|
-
return (index.h(index.Host, { key: '
|
|
2108
|
+
return (index.h(index.Host, { key: '2afede6b81d08df86698897989cf60ddd0924725' }, index.h("dialog", { key: '437b2817f0cf0a24d2c23705754666db08d86d7b', ref: el => (this.dialog = el) }, index.h("header", { key: 'b117318680cf8afd336ecb0a1833e527c0ab9b12' }, index.h("slot", { key: 'bfb23dd0fcd65c92dce927ddff6656e97a6a4b58', name: "title" }), index.h("button", { key: '954d0e64de334a658a96927921f213cba1e30715', tabindex: -1, id: "close", title: "Close", onClick: () => this.close() }, index.h("ion-icon", { key: 'c7b70eda40f3c087eadfb6cfeb6107cbe7747c21', name: "close-outline" }))), index.h("slot", { key: '9fc63ff77963a2564b18598c97bee19a73655c1a', name: "content" }))));
|
|
3171
2109
|
}
|
|
3172
2110
|
};
|
|
3173
2111
|
PosDialog.style = PosDialogStyle0;
|
|
@@ -3200,7 +2138,7 @@ const PosErrorToast = class {
|
|
|
3200
2138
|
await toast.present();
|
|
3201
2139
|
}
|
|
3202
2140
|
render() {
|
|
3203
|
-
return index.h("slot", { key: '
|
|
2141
|
+
return index.h("slot", { key: '8c5c8f5197184686f81602136672f35a62b2ea78' });
|
|
3204
2142
|
}
|
|
3205
2143
|
};
|
|
3206
2144
|
|
|
@@ -3296,7 +2234,7 @@ const PosLabel = class {
|
|
|
3296
2234
|
}
|
|
3297
2235
|
};
|
|
3298
2236
|
|
|
3299
|
-
const posLoginCss = "
|
|
2237
|
+
const posLoginCss = ".container{display:flex;align-items:center;gap:var(--size-2)}.user-data{align-items:center;display:inline-flex;gap:10px}.user-data pos-picture{--width:40px;--height:40px;--border-radius:50%}pos-login-form{margin:var(--size-2)}dialog{margin-top:var(--size-10)}button#login,button#logout{outline:none;font-weight:var(--weight-bold);letter-spacing:var(--letter-xl);border:none;box-sizing:border-box;border-radius:var(--radius-xs);padding:var(--size-2);box-shadow:var(--shadow-sm);color:var(--pos-primary-text-color);background-color:var(--pos-primary-color)}button#login:focus-within,button#logout:focus-within{outline:var(--pos-input-focus-outline)}button#login:focus,button#login:hover,button#logout:focus,button#logout:hover{filter:brightness(110%);box-shadow:var(--shadow-md)}";
|
|
3300
2238
|
const PosLoginStyle0 = posLoginCss;
|
|
3301
2239
|
|
|
3302
2240
|
const PosLogin = class {
|
|
@@ -3322,7 +2260,7 @@ const PosLogin = class {
|
|
|
3322
2260
|
this.dialog.showModal();
|
|
3323
2261
|
}
|
|
3324
2262
|
render() {
|
|
3325
|
-
return (index.h(index.Host, { key: '
|
|
2263
|
+
return (index.h(index.Host, { key: '780beb7c8a3be6f4f834c0d165c264fc4ca57f9b' }, index.h("div", { key: '66d54e274fab1e72590338ebb3a3aae3ab1275d5', class: "container" }, BrokenFile.store.state.isLoggedIn ? (index.h("pos-resource", { uri: BrokenFile.store.state.webId }, index.h("span", { class: "user-data" }, index.h("pos-picture", null), index.h("pos-label", null)))) : (''), !BrokenFile.store.state.isLoggedIn && (index.h("button", { key: '86196036b1ca3cfa505f3c1efbc2ceeb65843a91', id: "login", onClick: () => this.openDialog() }, "Login")), BrokenFile.store.state.isLoggedIn && (index.h("button", { key: 'ae2d4298dc2300ea9b9812b162bc7c14573a1606', id: "logout", onClick: () => this.logout() }, "Logout"))), index.h("pos-dialog", { key: 'c4cd26d24bdb7a4fa12ed589843da5cc90253c6c', ref: el => (this.dialog = el) }, index.h("span", { key: '5e59b0cde7cc110262edc1c2cf21cca9704970c6', slot: "title" }, "Sign in to your Pod"), index.h("pos-login-form", { key: '32c76681860a47a7a6f56fcd1d54757923891967', "onPod-os:idp-url-selected": ev => this.login(ev), slot: "content" }))));
|
|
3326
2264
|
}
|
|
3327
2265
|
};
|
|
3328
2266
|
PosLogin.style = PosLoginStyle0;
|
|
@@ -3341,7 +2279,7 @@ const PosLoginForm = class {
|
|
|
3341
2279
|
this.canSubmit = Boolean(this.idpUrl);
|
|
3342
2280
|
}
|
|
3343
2281
|
render() {
|
|
3344
|
-
return (index.h("form", { key: '
|
|
2282
|
+
return (index.h("form", { key: '92f9f517c1f20206c03c4a0ba0fa36cf44d03a4e', method: "dialog", onSubmit: () => this.handleSubmit() }, index.h("label", { key: '545072b27374d328f177cc7cd29a869f94084199', htmlFor: "idpUrl" }, "Please enter your Identity Provider"), index.h("input", { key: '702a8478a60f238aa571206709179735a6c4e94c', id: "idpUrl", type: "url", value: this.idpUrl, required: true, onInput: e => this.handleChange(e), list: "suggestedIssuers", placeholder: "Type to search..." }), index.h("datalist", { key: '1998a954b5b5af5f0db4134d5c5936a86ca3d938', id: "suggestedIssuers" }, index.h("option", { key: '10162042cea7e1080ae6dc1b22d417ea2c8bcdf1', value: "https://solidcommunity.net" }, "solidcommunity.net"), index.h("option", { key: 'd6fc9acff784dbf07ecd8370b8a864975c99b34c', value: "https://solidweb.org" }, "solidweb.org"), index.h("option", { key: 'd3980f1bbd66a092a3a8f26994d2e24c786bd311', value: "https://solidweb.me" }, "solidweb.me"), index.h("option", { key: 'c6e71652acbac29140c40f255b9f26cb50334bc9', value: "https://inrupt.net" }, "inrupt.net"), index.h("option", { key: 'c9b5cc8768bee481a34b95d6c993e4c75e63ecfd', value: "https://login.inrupt.com" }, "Inrupt PodSpaces"), index.h("option", { key: '97bb6676127f80f67337a1b0daa4dd367da21482', value: "https://trinpod.us" }, "trinpod.us"), index.h("option", { key: 'c8def1b84548f10bc2e7961139405ab5679e0dcc', value: "https://use.id" }, "use.id"), index.h("option", { key: 'e796fec0814bcafb4b3b48f9aff5efe9868243ba', value: "https://solid.redpencil.io" }, "redpencil.io"), index.h("option", { key: 'fd6632816dbad59dd8ebf3b2ab18d63b74bfd6ca', value: "https://datapod.grant.io" }, "Data Pod (grant.io)"), index.h("option", { key: 'c64c01e649cba6d8ff93b603e582369fd1bd5bd5', value: "https://teamid.live" }, "teamid.live")), index.h("input", { key: '2fe45bcb27fdb9f00680474b7e1cdfc989b0b0f2', id: "login", type: "submit", value: "Login", disabled: !this.canSubmit })));
|
|
3345
2283
|
}
|
|
3346
2284
|
handleChange(event) {
|
|
3347
2285
|
this.validate();
|
|
@@ -3429,7 +2367,7 @@ const PosNavigationBar = class {
|
|
|
3429
2367
|
}
|
|
3430
2368
|
}
|
|
3431
2369
|
render() {
|
|
3432
|
-
return (index.h("form", { key: '
|
|
2370
|
+
return (index.h("form", { key: '0338ecb2fc05df87b7b1b9b46a3fe60dacf66a3a', onSubmit: e => this.onSubmit(e) }, index.h("ion-searchbar", { key: '691b8574fb64227895f521d501edd1d670b2cc6a', enterkeyhint: "search", placeholder: "Search or enter URI", value: this.uri, debounce: 300, onIonChange: e => this.onChange(e), onIonInput: e => this.onChange(e) }), this.suggestions.length > 0 ? (index.h("div", { class: "suggestions" }, index.h("ol", null, this.suggestions.map((it, index$1) => (index.h("li", { class: index$1 === this.selectedIndex ? 'selected' : '' }, index.h("pos-rich-link", { uri: it.ref }))))))) : null));
|
|
3433
2371
|
}
|
|
3434
2372
|
};
|
|
3435
2373
|
PosNavigationBar.style = PosNavigationBarStyle0;
|
|
@@ -3460,7 +2398,7 @@ const PosNewThingForm = class {
|
|
|
3460
2398
|
PodOsAware.subscribePodOs(this);
|
|
3461
2399
|
}
|
|
3462
2400
|
render() {
|
|
3463
|
-
return (index.h("form", { key: '
|
|
2401
|
+
return (index.h("form", { key: 'd2e96a0788fc188f5d565a9f7cfd091cac2a50f9', method: "dialog", onSubmit: e => this.handleSubmit(e) }, index.h("label", { key: '06926ce3e0f9ed415559e05551e12d919fcfb355', htmlFor: "type" }, "Type"), index.h("pos-select-term", { key: '163341916328a9f18265125c9083afde595c617c', id: "type", placeholder: "", value: this.selectedTypeUri, "onPod-os:term-selected": e => this.onTermSelected(e) }), index.h("label", { key: 'f80187e539434d239649451da75f7b03a7735c6f', htmlFor: "name" }, "Name"), index.h("input", { key: '505d645e314a614300ac9e181cf0e9ece5ba564d', id: "name", type: "text", value: this.name, onInput: e => this.handleChange(e) }), this.newUri ? (index.h("div", { id: "new-uri", title: "This will be the URI of the new thing" }, this.newUri)) : null, index.h("input", { key: '5dc303fa9b68d363b417c4c6572bf5ff7afbea14', id: "create", type: "submit", value: "Create", disabled: !this.canSubmit })));
|
|
3464
2402
|
}
|
|
3465
2403
|
handleChange(event) {
|
|
3466
2404
|
this.name = event.target.value;
|
|
@@ -3597,10 +2535,10 @@ const PosRichLink = class {
|
|
|
3597
2535
|
this.uri = undefined;
|
|
3598
2536
|
}
|
|
3599
2537
|
render() {
|
|
3600
|
-
return (index.h("a", { key: '
|
|
2538
|
+
return (index.h("a", { key: '478e3fbeac417934283500edff87459f3ad155c9', class: "container", href: this.uri, onClick: e => {
|
|
3601
2539
|
e.preventDefault();
|
|
3602
2540
|
this.linkEmitter.emit(this.uri);
|
|
3603
|
-
} }, index.h("pos-resource", { key: '
|
|
2541
|
+
} }, index.h("pos-resource", { key: 'c28c929cc2df484cbdf4a071aa2636246eedf6f1', lazy: true, uri: this.uri }, index.h("p", { key: 'fb9f9211aacfb0d2550ba52d76f32632c7a99a38', class: "content" }, index.h("pos-label", { key: 'b44b9b7ed43aa889f4c3f706399a9e5de1509fb2' }), index.h("pos-description", { key: '9db29a285402b80fa18a895bd58996d91d7ea71e' }), index.h("a", { key: 'd5c7d15883f1b65dc2b6557121ad9439a56ddbd6', class: "uri", href: this.uri }, this.uri)))));
|
|
3604
2542
|
}
|
|
3605
2543
|
};
|
|
3606
2544
|
PosRichLink.style = PosRichLinkStyle0;
|
|
@@ -3866,20 +2804,6 @@ const createRouter = (opts) => {
|
|
|
3866
2804
|
win.addEventListener('popstate', navigationChanged);
|
|
3867
2805
|
return router;
|
|
3868
2806
|
};
|
|
3869
|
-
const Route = (props, children) => {
|
|
3870
|
-
var _a;
|
|
3871
|
-
if ('to' in props) {
|
|
3872
|
-
return {
|
|
3873
|
-
path: props.path,
|
|
3874
|
-
to: props.to,
|
|
3875
|
-
};
|
|
3876
|
-
}
|
|
3877
|
-
return {
|
|
3878
|
-
path: props.path,
|
|
3879
|
-
id: props.id,
|
|
3880
|
-
jsx: (_a = props.render) !== null && _a !== void 0 ? _a : children,
|
|
3881
|
-
};
|
|
3882
|
-
};
|
|
3883
2807
|
const matchPath = (pathname, path) => {
|
|
3884
2808
|
if (typeof path === 'string') {
|
|
3885
2809
|
if (path === pathname) {
|
|
@@ -3907,258 +2831,6 @@ const DEFAULT_PARSE_URL = (url) => {
|
|
|
3907
2831
|
return url.pathname.toLowerCase();
|
|
3908
2832
|
};
|
|
3909
2833
|
|
|
3910
|
-
/**
|
|
3911
|
-
* TS adaption of https://github.com/pillarjs/path-to-regexp/blob/master/index.js
|
|
3912
|
-
*/
|
|
3913
|
-
/**
|
|
3914
|
-
* Default configs.
|
|
3915
|
-
*/
|
|
3916
|
-
const DEFAULT_DELIMITER = '/';
|
|
3917
|
-
const DEFAULT_DELIMITERS = './';
|
|
3918
|
-
/**
|
|
3919
|
-
* The main path matching regexp utility.
|
|
3920
|
-
*/
|
|
3921
|
-
const PATH_REGEXP = new RegExp([
|
|
3922
|
-
// Match escaped characters that would otherwise appear in future matches.
|
|
3923
|
-
// This allows the user to escape special characters that won't transform.
|
|
3924
|
-
'(\\\\.)',
|
|
3925
|
-
// Match Express-style parameters and un-named parameters with a prefix
|
|
3926
|
-
// and optional suffixes. Matches appear as:
|
|
3927
|
-
//
|
|
3928
|
-
// "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?"]
|
|
3929
|
-
// "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined]
|
|
3930
|
-
'(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?'
|
|
3931
|
-
].join('|'), 'g');
|
|
3932
|
-
/**
|
|
3933
|
-
* Parse a string for the raw tokens.
|
|
3934
|
-
*/
|
|
3935
|
-
const parse = (str, options) => {
|
|
3936
|
-
var tokens = [];
|
|
3937
|
-
var key = 0;
|
|
3938
|
-
var index = 0;
|
|
3939
|
-
var path = '';
|
|
3940
|
-
var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;
|
|
3941
|
-
var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;
|
|
3942
|
-
var pathEscaped = false;
|
|
3943
|
-
var res;
|
|
3944
|
-
while ((res = PATH_REGEXP.exec(str)) !== null) {
|
|
3945
|
-
var m = res[0];
|
|
3946
|
-
var escaped = res[1];
|
|
3947
|
-
var offset = res.index;
|
|
3948
|
-
path += str.slice(index, offset);
|
|
3949
|
-
index = offset + m.length;
|
|
3950
|
-
// Ignore already escaped sequences.
|
|
3951
|
-
if (escaped) {
|
|
3952
|
-
path += escaped[1];
|
|
3953
|
-
pathEscaped = true;
|
|
3954
|
-
continue;
|
|
3955
|
-
}
|
|
3956
|
-
var prev = '';
|
|
3957
|
-
var next = str[index];
|
|
3958
|
-
var name = res[2];
|
|
3959
|
-
var capture = res[3];
|
|
3960
|
-
var group = res[4];
|
|
3961
|
-
var modifier = res[5];
|
|
3962
|
-
if (!pathEscaped && path.length) {
|
|
3963
|
-
var k = path.length - 1;
|
|
3964
|
-
if (delimiters.indexOf(path[k]) > -1) {
|
|
3965
|
-
prev = path[k];
|
|
3966
|
-
path = path.slice(0, k);
|
|
3967
|
-
}
|
|
3968
|
-
}
|
|
3969
|
-
// Push the current path onto the tokens.
|
|
3970
|
-
if (path) {
|
|
3971
|
-
tokens.push(path);
|
|
3972
|
-
path = '';
|
|
3973
|
-
pathEscaped = false;
|
|
3974
|
-
}
|
|
3975
|
-
var partial = prev !== '' && next !== undefined && next !== prev;
|
|
3976
|
-
var repeat = modifier === '+' || modifier === '*';
|
|
3977
|
-
var optional = modifier === '?' || modifier === '*';
|
|
3978
|
-
var delimiter = prev || defaultDelimiter;
|
|
3979
|
-
var pattern = capture || group;
|
|
3980
|
-
tokens.push({
|
|
3981
|
-
name: name || key++,
|
|
3982
|
-
prefix: prev,
|
|
3983
|
-
delimiter: delimiter,
|
|
3984
|
-
optional: optional,
|
|
3985
|
-
repeat: repeat,
|
|
3986
|
-
partial: partial,
|
|
3987
|
-
pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'
|
|
3988
|
-
});
|
|
3989
|
-
}
|
|
3990
|
-
// Push any remaining characters.
|
|
3991
|
-
if (path || index < str.length) {
|
|
3992
|
-
tokens.push(path + str.substr(index));
|
|
3993
|
-
}
|
|
3994
|
-
return tokens;
|
|
3995
|
-
};
|
|
3996
|
-
/**
|
|
3997
|
-
* Escape a regular expression string.
|
|
3998
|
-
*/
|
|
3999
|
-
const escapeString = (str) => {
|
|
4000
|
-
return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, '\\$1');
|
|
4001
|
-
};
|
|
4002
|
-
/**
|
|
4003
|
-
* Escape the capturing group by escaping special characters and meaning.
|
|
4004
|
-
*/
|
|
4005
|
-
const escapeGroup = (group) => {
|
|
4006
|
-
return group.replace(/([=!:$/()])/g, '\\$1');
|
|
4007
|
-
};
|
|
4008
|
-
/**
|
|
4009
|
-
* Get the flags for a regexp from the options.
|
|
4010
|
-
*/
|
|
4011
|
-
const flags = (options) => {
|
|
4012
|
-
return options && options.sensitive ? '' : 'i';
|
|
4013
|
-
};
|
|
4014
|
-
/**
|
|
4015
|
-
* Pull out keys from a regexp.
|
|
4016
|
-
*/
|
|
4017
|
-
const regexpToRegexp = (path, keys) => {
|
|
4018
|
-
if (!keys)
|
|
4019
|
-
return path;
|
|
4020
|
-
// Use a negative lookahead to match only capturing groups.
|
|
4021
|
-
var groups = path.source.match(/\((?!\?)/g);
|
|
4022
|
-
if (groups) {
|
|
4023
|
-
for (var i = 0; i < groups.length; i++) {
|
|
4024
|
-
keys.push({
|
|
4025
|
-
name: i,
|
|
4026
|
-
prefix: null,
|
|
4027
|
-
delimiter: null,
|
|
4028
|
-
optional: false,
|
|
4029
|
-
repeat: false,
|
|
4030
|
-
partial: false,
|
|
4031
|
-
pattern: null
|
|
4032
|
-
});
|
|
4033
|
-
}
|
|
4034
|
-
}
|
|
4035
|
-
return path;
|
|
4036
|
-
};
|
|
4037
|
-
/**
|
|
4038
|
-
* Transform an array into a regexp.
|
|
4039
|
-
*/
|
|
4040
|
-
const arrayToRegexp = (path, keys, options) => {
|
|
4041
|
-
var parts = [];
|
|
4042
|
-
for (var i = 0; i < path.length; i++) {
|
|
4043
|
-
parts.push(pathToRegexp(path[i], keys, options).source);
|
|
4044
|
-
}
|
|
4045
|
-
return new RegExp('(?:' + parts.join('|') + ')', flags(options));
|
|
4046
|
-
};
|
|
4047
|
-
/**
|
|
4048
|
-
* Create a path regexp from string input.
|
|
4049
|
-
*/
|
|
4050
|
-
const stringToRegexp = (path, keys, options) => {
|
|
4051
|
-
return tokensToRegExp(parse(path, options), keys, options);
|
|
4052
|
-
};
|
|
4053
|
-
/**
|
|
4054
|
-
* Expose a function for taking tokens and returning a RegExp.
|
|
4055
|
-
*/
|
|
4056
|
-
const tokensToRegExp = (tokens, keys, options) => {
|
|
4057
|
-
options = options || {};
|
|
4058
|
-
var strict = options.strict;
|
|
4059
|
-
var end = options.end !== false;
|
|
4060
|
-
var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);
|
|
4061
|
-
var delimiters = options.delimiters || DEFAULT_DELIMITERS;
|
|
4062
|
-
var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');
|
|
4063
|
-
var route = '';
|
|
4064
|
-
var isEndDelimited = false;
|
|
4065
|
-
// Iterate over the tokens and create our regexp string.
|
|
4066
|
-
for (var i = 0; i < tokens.length; i++) {
|
|
4067
|
-
var token = tokens[i];
|
|
4068
|
-
if (typeof token === 'string') {
|
|
4069
|
-
route += escapeString(token);
|
|
4070
|
-
isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;
|
|
4071
|
-
}
|
|
4072
|
-
else {
|
|
4073
|
-
var prefix = escapeString(token.prefix || '');
|
|
4074
|
-
var capture = token.repeat
|
|
4075
|
-
? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'
|
|
4076
|
-
: token.pattern;
|
|
4077
|
-
if (keys)
|
|
4078
|
-
keys.push(token);
|
|
4079
|
-
if (token.optional) {
|
|
4080
|
-
if (token.partial) {
|
|
4081
|
-
route += prefix + '(' + capture + ')?';
|
|
4082
|
-
}
|
|
4083
|
-
else {
|
|
4084
|
-
route += '(?:' + prefix + '(' + capture + '))?';
|
|
4085
|
-
}
|
|
4086
|
-
}
|
|
4087
|
-
else {
|
|
4088
|
-
route += prefix + '(' + capture + ')';
|
|
4089
|
-
}
|
|
4090
|
-
}
|
|
4091
|
-
}
|
|
4092
|
-
if (end) {
|
|
4093
|
-
if (!strict)
|
|
4094
|
-
route += '(?:' + delimiter + ')?';
|
|
4095
|
-
route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';
|
|
4096
|
-
}
|
|
4097
|
-
else {
|
|
4098
|
-
if (!strict)
|
|
4099
|
-
route += '(?:' + delimiter + '(?=' + endsWith + '))?';
|
|
4100
|
-
if (!isEndDelimited)
|
|
4101
|
-
route += '(?=' + delimiter + '|' + endsWith + ')';
|
|
4102
|
-
}
|
|
4103
|
-
return new RegExp('^' + route, flags(options));
|
|
4104
|
-
};
|
|
4105
|
-
/**
|
|
4106
|
-
* Normalize the given path string, returning a regular expression.
|
|
4107
|
-
*
|
|
4108
|
-
* An empty array can be passed in for the keys, which will hold the
|
|
4109
|
-
* placeholder key descriptions. For example, using `/user/:id`, `keys` will
|
|
4110
|
-
* contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
|
|
4111
|
-
*/
|
|
4112
|
-
const pathToRegexp = (path, keys, options) => {
|
|
4113
|
-
if (path instanceof RegExp) {
|
|
4114
|
-
return regexpToRegexp(path, keys);
|
|
4115
|
-
}
|
|
4116
|
-
if (Array.isArray(path)) {
|
|
4117
|
-
return arrayToRegexp(path, keys, options);
|
|
4118
|
-
}
|
|
4119
|
-
return stringToRegexp(path, keys, options);
|
|
4120
|
-
};
|
|
4121
|
-
|
|
4122
|
-
let cacheCount = 0;
|
|
4123
|
-
const patternCache = {};
|
|
4124
|
-
const cacheLimit = 10000;
|
|
4125
|
-
// Memoized function for creating the path match regex
|
|
4126
|
-
const compilePath = (pattern, options) => {
|
|
4127
|
-
const cacheKey = `${options.end}${options.strict}`;
|
|
4128
|
-
const cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});
|
|
4129
|
-
const cachePattern = JSON.stringify(pattern);
|
|
4130
|
-
if (cache[cachePattern]) {
|
|
4131
|
-
return cache[cachePattern];
|
|
4132
|
-
}
|
|
4133
|
-
const keys = [];
|
|
4134
|
-
const re = pathToRegexp(pattern, keys, options);
|
|
4135
|
-
const compiledPattern = { re, keys };
|
|
4136
|
-
if (cacheCount < cacheLimit) {
|
|
4137
|
-
cache[cachePattern] = compiledPattern;
|
|
4138
|
-
cacheCount += 1;
|
|
4139
|
-
}
|
|
4140
|
-
return compiledPattern;
|
|
4141
|
-
};
|
|
4142
|
-
const match = (pathname, options = {}) => {
|
|
4143
|
-
const { exact = false, strict = false } = options;
|
|
4144
|
-
const { re, keys } = compilePath(pathname, { end: exact, strict });
|
|
4145
|
-
return (path) => {
|
|
4146
|
-
const match = re.exec(path);
|
|
4147
|
-
if (!match) {
|
|
4148
|
-
return undefined;
|
|
4149
|
-
}
|
|
4150
|
-
const [url, ...values] = match;
|
|
4151
|
-
const isExact = path === url;
|
|
4152
|
-
if (exact && !isExact) {
|
|
4153
|
-
return undefined;
|
|
4154
|
-
}
|
|
4155
|
-
return keys.reduce((memo, key, index) => {
|
|
4156
|
-
memo[key.name] = values[index];
|
|
4157
|
-
return memo;
|
|
4158
|
-
}, {});
|
|
4159
|
-
};
|
|
4160
|
-
};
|
|
4161
|
-
|
|
4162
2834
|
const posRouterCss = ".toolbar{display:flex;flex-direction:row;gap:0;align-items:center;margin-left:0.5rem}pos-navigation-bar{flex-grow:1}";
|
|
4163
2835
|
const PosRouterStyle0 = posRouterCss;
|
|
4164
2836
|
|
|
@@ -4166,6 +2838,7 @@ const Router = createRouter();
|
|
|
4166
2838
|
const PosRouter = class {
|
|
4167
2839
|
constructor(hostRef) {
|
|
4168
2840
|
index.registerInstance(this, hostRef);
|
|
2841
|
+
this.routeChanged = index.createEvent(this, "pod-os:route-changed", 7);
|
|
4169
2842
|
this.uri = undefined;
|
|
4170
2843
|
}
|
|
4171
2844
|
linkClicked(e) {
|
|
@@ -4185,9 +2858,10 @@ const PosRouter = class {
|
|
|
4185
2858
|
}
|
|
4186
2859
|
updateUri() {
|
|
4187
2860
|
this.uri = new URLSearchParams(window.location.search).get('uri') || window.location.href;
|
|
2861
|
+
this.routeChanged.emit(this.uri);
|
|
4188
2862
|
}
|
|
4189
2863
|
render() {
|
|
4190
|
-
return
|
|
2864
|
+
return index.h("slot", { key: '90cdd039ec5d00643bab4449814cce75e6aef855' });
|
|
4191
2865
|
}
|
|
4192
2866
|
};
|
|
4193
2867
|
PosRouter.style = PosRouterStyle0;
|
|
@@ -4218,7 +2892,7 @@ const PosSelectTerm = class {
|
|
|
4218
2892
|
this.termSelected.emit({ uri: event.target.value });
|
|
4219
2893
|
}
|
|
4220
2894
|
render() {
|
|
4221
|
-
return (index.h(index.Host, { key: '
|
|
2895
|
+
return (index.h(index.Host, { key: 'e73b3d7cb4dd291555b035c82959978ca0f665f3' }, index.h("input", { key: '9900762d64d4f7fcb31552e926bf71229e9b8ea4', part: "input", list: "terms", placeholder: this.placeholder, value: this.value, onChange: ev => this.handleChange(ev) }), index.h("datalist", { key: '71aca3b0d13973ea7e666e04ba09ff0f2d1483b0', part: "terms", id: "terms" }, this.terms.map(term => (index.h("option", { value: term.uri }, term.shorthand))))));
|
|
4222
2896
|
}
|
|
4223
2897
|
static get delegatesFocus() { return true; }
|
|
4224
2898
|
static get watchers() { return {
|
|
@@ -4281,20 +2955,14 @@ const PosTypeRouter = class {
|
|
|
4281
2955
|
}
|
|
4282
2956
|
};
|
|
4283
2957
|
|
|
4284
|
-
exports.ion_app = App;
|
|
4285
2958
|
exports.ion_card = Card;
|
|
4286
2959
|
exports.ion_card_content = CardContent;
|
|
4287
2960
|
exports.ion_card_header = CardHeader;
|
|
4288
|
-
exports.ion_content = Content;
|
|
4289
|
-
exports.ion_footer = Footer;
|
|
4290
|
-
exports.ion_header = Header;
|
|
4291
2961
|
exports.ion_icon = Icon;
|
|
4292
2962
|
exports.ion_progress_bar = ProgressBar;
|
|
4293
2963
|
exports.ion_ripple_effect = RippleEffect;
|
|
4294
2964
|
exports.ion_searchbar = Searchbar;
|
|
4295
2965
|
exports.ion_skeleton_text = SkeletonText;
|
|
4296
|
-
exports.ion_title = ToolbarTitle;
|
|
4297
|
-
exports.ion_toolbar = Toolbar;
|
|
4298
2966
|
exports.pos_add_new_thing = PosAddNewThing;
|
|
4299
2967
|
exports.pos_app = PosApp;
|
|
4300
2968
|
exports.pos_app_browser = PosAppBrowser;
|
|
@@ -4314,4 +2982,4 @@ exports.pos_router = PosRouter;
|
|
|
4314
2982
|
exports.pos_select_term = PosSelectTerm;
|
|
4315
2983
|
exports.pos_type_router = PosTypeRouter;
|
|
4316
2984
|
|
|
4317
|
-
//# sourceMappingURL=ion-
|
|
2985
|
+
//# sourceMappingURL=ion-card_26.cjs.entry.js.map
|