@ionic/core 8.8.9-dev.11781024903.1e4268e5 → 8.8.9-dev.11781201980.1b6e8398
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/components/index.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-gallery-item.d.ts +11 -0
- package/components/ion-gallery-item.js +4 -0
- package/components/ion-gallery.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-BFZBl0TS.js +4 -0
- package/components/{p-pvh0bjpw.js → p-BVi3gqm6.js} +1 -1
- package/components/{p-D6g8ud1e.js → p-BVk7LVs0.js} +1 -1
- package/components/{p-B9MABkWm.js → p-BdUtZxku.js} +1 -1
- package/components/{p-CzC_ZSgb.js → p-Be8tHurp.js} +1 -1
- package/components/p-C0U8YqYW.js +4 -0
- package/components/{p-C8kBejTT.js → p-CG3ZV6ON.js} +1 -1
- package/components/{p-CBS0sBAa.js → p-CaqTORfV.js} +1 -1
- package/components/{p-D2mReIu8.js → p-CkA0SI9d.js} +1 -1
- package/components/p-Cmql_g3_.js +4 -0
- package/components/p-CsakePQg.js +4 -0
- package/components/{p-CgSn4J7d.js → p-D1gEOh9B.js} +1 -1
- package/components/p-D3qBmaqi.js +4 -0
- package/components/{p-Do7NMUwR.js → p-DGn-jQpr.js} +1 -1
- package/components/p-DH4JHV73.js +4 -0
- package/components/p-DYK0qX7x.js +4 -0
- package/components/{p-Dp2x0MpA.js → p-DfV7pOtM.js} +1 -1
- package/components/{p-BhkGOA7t.js → p-F3N54OKJ.js} +1 -1
- package/components/{p-CgZLVOCc.js → p-MPREydZp.js} +1 -1
- package/components/{p-kKYBfhbe.js → p-OFfrVDLw.js} +1 -1
- package/components/p-iZO3WzZT.js +4 -0
- package/components/{p-LB-QPk3e.js → p-qclL-gNR.js} +1 -1
- package/dist/cjs/index-BJlwOs11.js +171 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
- package/dist/cjs/ion-alert.cjs.entry.js +9 -25
- package/dist/cjs/ion-app_8.cjs.entry.js +7 -7
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-gallery-item.cjs.entry.js +60 -0
- package/dist/cjs/ion-gallery.cjs.entry.js +91 -13
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ion-input.cjs.entry.js +4 -4
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +16 -15
- package/dist/cjs/ion-loading.cjs.entry.js +3 -3
- package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-modal.cjs.entry.js +4 -4
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +2 -2
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-select-modal.cjs.entry.js +10 -30
- package/dist/cjs/ion-select_3.cjs.entry.js +43 -102
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +3 -3
- package/dist/cjs/ion-toast.cjs.entry.js +3 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/select-option-render-C7klBX2H.js +81 -0
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +506 -163
- package/dist/collection/components/action-sheet/action-sheet.ios.css +27 -288
- package/dist/collection/components/action-sheet/action-sheet.md.css +27 -228
- package/dist/collection/components/alert/alert.ionic.css +797 -416
- package/dist/collection/components/alert/alert.ios.css +40 -402
- package/dist/collection/components/alert/alert.js +4 -20
- package/dist/collection/components/alert/alert.md.css +50 -385
- package/dist/collection/components/gallery/gallery.css +1 -86
- package/dist/collection/components/gallery/gallery.js +92 -13
- package/dist/collection/components/gallery/test/utils.js +16 -16
- package/dist/collection/components/gallery-item/gallery-item.css +88 -0
- package/dist/collection/components/gallery-item/gallery-item.js +100 -0
- package/dist/collection/components/grid/grid.js +2 -2
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/img/img.js +2 -2
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
- package/dist/collection/components/input/input.js +4 -4
- package/dist/collection/components/input-otp/input-otp.js +3 -3
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
- package/dist/collection/components/item/item.ionic.css +17 -5
- package/dist/collection/components/item/item.js +3 -2
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +1 -1
- package/dist/collection/components/label/label.js +2 -2
- package/dist/collection/components/list/list.js +1 -1
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +2 -2
- package/dist/collection/components/menu/menu.js +2 -2
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/modal.js +4 -4
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
- package/dist/collection/components/picker-legacy/picker.js +2 -2
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
- package/dist/collection/components/popover/popover.js +2 -2
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +3 -3
- package/dist/collection/components/radio-group/radio-group.js +2 -2
- package/dist/collection/components/range/range.js +3 -3
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +2 -2
- package/dist/collection/components/reorder/reorder.js +2 -2
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +1 -1
- package/dist/collection/components/row/row.js +2 -2
- package/dist/collection/components/searchbar/searchbar.js +4 -4
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +2 -2
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +2 -2
- package/dist/collection/components/select/select.js +32 -72
- package/dist/collection/components/select-modal/select-modal.ionic.css +29 -139
- package/dist/collection/components/select-modal/select-modal.ios.css +7 -379
- package/dist/collection/components/select-modal/select-modal.js +5 -25
- package/dist/collection/components/select-modal/select-modal.md.css +7 -319
- package/dist/collection/components/select-option/select-option.js +1 -39
- package/dist/collection/components/select-popover/select-popover.ionic.css +376 -129
- package/dist/collection/components/select-popover/select-popover.ios.css +69 -252
- package/dist/collection/components/select-popover/select-popover.js +6 -25
- package/dist/collection/components/select-popover/select-popover.md.css +27 -273
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.js +3 -3
- package/dist/collection/components/thumbnail/thumbnail.js +2 -2
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/utils/sanitization/index.js +14 -255
- package/dist/collection/utils/select-option-render.js +24 -59
- package/dist/docs.json +87 -69
- package/dist/esm/index-D4ugF_sT.js +168 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +5 -5
- package/dist/esm/ion-alert.entry.js +9 -25
- package/dist/esm/ion-app_8.entry.js +7 -7
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +4 -4
- package/dist/esm/ion-datetime_3.entry.js +4 -4
- package/dist/esm/ion-gallery-item.entry.js +58 -0
- package/dist/esm/ion-gallery.entry.js +91 -13
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +4 -4
- package/dist/esm/ion-input-otp.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +3 -3
- package/dist/esm/ion-input.entry.js +4 -4
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +16 -15
- package/dist/esm/ion-loading.entry.js +3 -3
- package/dist/esm/ion-menu_3.entry.js +6 -6
- package/dist/esm/ion-modal.entry.js +4 -4
- package/dist/esm/ion-nav_2.entry.js +2 -2
- package/dist/esm/ion-picker-column-option.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +2 -2
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +5 -5
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +4 -4
- package/dist/esm/ion-reorder_2.entry.js +3 -3
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +4 -4
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +2 -2
- package/dist/esm/ion-segment_2.entry.js +4 -4
- package/dist/esm/ion-select-modal.entry.js +10 -30
- package/dist/esm/ion-select_3.entry.js +43 -102
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +3 -3
- package/dist/esm/ion-toast.entry.js +3 -3
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/select-option-render-B2qc5ZP7.js +79 -0
- package/dist/html.html-data.json +42 -27
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-f52856cb.entry.js → p-0592c549.entry.js} +1 -1
- package/dist/ionic/{p-67c2d349.entry.js → p-0aa510cd.entry.js} +1 -1
- package/dist/ionic/{p-9ccfb733.entry.js → p-0cd5fd9d.entry.js} +1 -1
- package/dist/ionic/p-0e9d4e11.entry.js +4 -0
- package/dist/ionic/{p-497f6391.entry.js → p-11a38333.entry.js} +1 -1
- package/dist/ionic/{p-0030507d.entry.js → p-1a009a51.entry.js} +1 -1
- package/dist/ionic/{p-7186786e.entry.js → p-23e524f8.entry.js} +1 -1
- package/dist/ionic/{p-1439fecb.entry.js → p-2826761a.entry.js} +1 -1
- package/dist/ionic/{p-93315d96.entry.js → p-2c4170d8.entry.js} +1 -1
- package/dist/ionic/p-2d5a2511.entry.js +4 -0
- package/dist/ionic/{p-7f294078.entry.js → p-3706ea52.entry.js} +1 -1
- package/dist/ionic/{p-b69add0e.entry.js → p-3e376501.entry.js} +1 -1
- package/dist/ionic/{p-c684a3b6.entry.js → p-44597202.entry.js} +1 -1
- package/dist/ionic/{p-8458f1b6.entry.js → p-4a27a79a.entry.js} +1 -1
- package/dist/ionic/{p-b7235e85.entry.js → p-4f07113d.entry.js} +1 -1
- package/dist/ionic/{p-88e7f52a.entry.js → p-52b85650.entry.js} +1 -1
- package/dist/ionic/{p-199bffb3.entry.js → p-5a6e0ae1.entry.js} +1 -1
- package/dist/ionic/p-6906dca7.entry.js +4 -0
- package/dist/ionic/p-75a1ca50.entry.js +4 -0
- package/dist/ionic/{p-19a1ff9a.entry.js → p-7b09c19d.entry.js} +1 -1
- package/dist/ionic/{p-76c70824.entry.js → p-7b886782.entry.js} +1 -1
- package/dist/ionic/p-7da8b262.entry.js +4 -0
- package/dist/ionic/{p-89eab395.entry.js → p-82c05be2.entry.js} +1 -1
- package/dist/ionic/{p-b653f4c2.entry.js → p-83c0eb9b.entry.js} +1 -1
- package/dist/ionic/{p-b4fd91b8.entry.js → p-85ff1314.entry.js} +1 -1
- package/dist/ionic/p-88048796.entry.js +4 -0
- package/dist/ionic/{p-3f18dfe9.entry.js → p-8eca5ba1.entry.js} +1 -1
- package/dist/ionic/p-96f52444.entry.js +4 -0
- package/dist/ionic/p-CFjI63GE.js +4 -0
- package/dist/ionic/p-CWJdc8f_.js +4 -0
- package/dist/ionic/{p-f2f740aa.entry.js → p-a3b047e0.entry.js} +1 -1
- package/dist/ionic/{p-40d9e029.entry.js → p-a73caa5e.entry.js} +1 -1
- package/dist/ionic/{p-1ad16c09.entry.js → p-b0dfd018.entry.js} +1 -1
- package/dist/ionic/{p-a3f9be52.entry.js → p-b6130fe4.entry.js} +1 -1
- package/dist/ionic/p-c0558552.entry.js +4 -0
- package/dist/ionic/{p-084c2623.entry.js → p-c5f745b4.entry.js} +1 -1
- package/dist/ionic/{p-bc3d68ff.entry.js → p-c781241c.entry.js} +1 -1
- package/dist/ionic/p-cb154afe.entry.js +4 -0
- package/dist/ionic/{p-b847907d.entry.js → p-cde69f38.entry.js} +1 -1
- package/dist/ionic/{p-70ee89c9.entry.js → p-d6f0a698.entry.js} +1 -1
- package/dist/ionic/{p-dd2981d0.entry.js → p-d9804d04.entry.js} +1 -1
- package/dist/ionic/{p-7054a1b9.entry.js → p-e342b205.entry.js} +1 -1
- package/dist/ionic/{p-9dfbe98d.entry.js → p-e8916b04.entry.js} +1 -1
- package/dist/ionic/{p-dac1d4de.entry.js → p-f10f8f95.entry.js} +1 -1
- package/dist/types/components/gallery/gallery.d.ts +41 -8
- package/dist/types/components/gallery/test/utils.d.ts +2 -1
- package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
- package/dist/types/components/select/select-interface.d.ts +0 -8
- package/dist/types/components/select-option/select-option.d.ts +0 -32
- package/dist/types/components.d.ts +33 -18
- package/dist/types/utils/sanitization/index.d.ts +2 -54
- package/dist/types/utils/select-option-render.d.ts +0 -31
- package/hydrate/index.js +380 -645
- package/hydrate/index.mjs +380 -645
- package/package.json +1 -1
- package/components/p-BP_TU_4l.js +0 -4
- package/components/p-BqTwa6uT.js +0 -4
- package/components/p-Bxiu1dAN.js +0 -4
- package/components/p-C91NnY87.js +0 -4
- package/components/p-CODBQrPj.js +0 -4
- package/components/p-GElQZ38c.js +0 -4
- package/components/p-WdrzoonY.js +0 -4
- package/components/p-h64_gZrH.js +0 -4
- package/components/p-sehKq5RI.js +0 -4
- package/dist/cjs/index-Dm4Dm7Vg.js +0 -414
- package/dist/cjs/overlay-control-label-DnRLQR1t.js +0 -52
- package/dist/cjs/select-option-render-DQyZnlF5.js +0 -116
- package/dist/collection/utils/overlay-control-label.js +0 -47
- package/dist/esm/index-Bmyj8b0z.js +0 -409
- package/dist/esm/overlay-control-label-CODBQrPj.js +0 -49
- package/dist/esm/select-option-render-QGJ9tZHa.js +0 -114
- package/dist/ionic/p-18ed37e3.entry.js +0 -4
- package/dist/ionic/p-2049aa81.entry.js +0 -4
- package/dist/ionic/p-290778c1.entry.js +0 -4
- package/dist/ionic/p-2aa7567e.entry.js +0 -4
- package/dist/ionic/p-2e7e3da1.entry.js +0 -4
- package/dist/ionic/p-CODBQrPj.js +0 -4
- package/dist/ionic/p-CxRK9GyE.js +0 -4
- package/dist/ionic/p-NqPMS7BP.js +0 -4
- package/dist/ionic/p-c94fbdab.entry.js +0 -4
- package/dist/ionic/p-e89848b2.entry.js +0 -4
- package/dist/ionic/p-ff09d2a5.entry.js +0 -4
- package/dist/types/utils/overlay-control-label.d.ts +0 -34
package/components/p-h64_gZrH.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import{p as t,H as e,e as o,k as n,h as i,d as a,t as c}from"./p-3Ni1Z654.js";import{c as s}from"./p-Bt0d89x3.js";import{r}from"./p-BqDiJgC_.js";import{c as l}from"./p-B-hirT0v.js";import{d as h,e as d,B as b,i as p,f as u,g,h as v,s as m,j as f,k}from"./p-BBu2n-9C.js";import{r as x}from"./p-sehKq5RI.js";import{g as y}from"./p-DaJxRxSQ.js";import{c as w,b as z}from"./p-DN_scBC7.js";import{c as C}from"./p-Cz4uz3Dy.js";import{d as j}from"./p-Bk9hTY4h.js";import{d as D}from"./p-zWP0sUV_.js";import{d as A}from"./p-Do7NMUwR.js";const B=t=>{const e=C(),o=C(),n=C();return o.addElement(t.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),n.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(100%)","translateY(0%)"),e.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(400).addAnimation([o,n])},O=t=>{const e=C(),o=C(),n=C();return o.addElement(t.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),n.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(0%)","translateY(100%)"),e.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(450).addAnimation([o,n])},I=t=>{const e=C(),o=C(),n=C();return o.addElement(t.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),n.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(100%)","translateY(0%)"),e.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(400).addAnimation([o,n])},S=t=>{const e=C(),o=C(),n=C();return o.addElement(t.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),n.addElement(t.querySelector(".action-sheet-wrapper")).fromTo("transform","translateY(0%)","translateY(100%)"),e.addElement(t).easing("cubic-bezier(.36,.66,.04,1)").duration(450).addAnimation([o,n])},E=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.didPresent=o(this,"ionActionSheetDidPresent",7),this.willPresent=o(this,"ionActionSheetWillPresent",7),this.willDismiss=o(this,"ionActionSheetWillDismiss",7),this.didDismiss=o(this,"ionActionSheetDidDismiss",7),this.didPresentShorthand=o(this,"didPresent",7),this.willPresentShorthand=o(this,"willPresent",7),this.willDismissShorthand=o(this,"willDismiss",7),this.didDismissShorthand=o(this,"didDismiss",7),this.delegateController=h(this),this.lockController=l(),this.triggerController=d(),this.hasRadioButtons=!1,this.presented=!1,this.hasController=!1,this.keyboardClose=!0,this.buttons=[],this.backdropDismiss=!0,this.translucent=!1,this.animated=!0,this.isOpen=!1,this.onBackdropTap=()=>{this.dismiss(void 0,b)},this.dispatchCancelHandler=t=>{if(p(t.detail.role)){const t=this.getButtons().find((t=>"cancel"===t.role));this.callButtonHandler(t)}}}buttonsChanged(){const t=this.getRadioButtons();if(this.hasRadioButtons=t.length>0,this.hasRadioButtons){const e=t.find((t=>{var e;return"true"===(null===(e=t.htmlAttributes)||void 0===e?void 0:e["aria-checked"])}));if(e){const t=this.getButtons().indexOf(e);this.activeRadioId=this.getButtonId(e,t)}}}onIsOpenChange(t,e){!0===t&&!1===e?this.present():!1===t&&!0===e&&this.dismiss()}triggerChanged(){const{trigger:t,el:e,triggerController:o}=this;t&&o.addClickListener(e,t)}async present(){const t=await this.lockController.lock();await this.delegateController.attachViewToDom(),await u(this,"actionSheetEnter",B,I),t()}async dismiss(t,e){const o=await this.lockController.lock(),n=await g(this,t,e,"actionSheetLeave",O,S);return n&&this.delegateController.removeViewFromDom(),o(),n}onDidDismiss(){return v(this.el,"ionActionSheetDidDismiss")}onWillDismiss(){return v(this.el,"ionActionSheetWillDismiss")}async buttonClick(t){const e=t.role;return p(e)?this.dismiss(t.data,e):await this.callButtonHandler(t)?this.dismiss(t.data,t.role):Promise.resolve()}async callButtonHandler(t){return!t||!1!==await m(t.handler)}getButtons(){return this.buttons.map((t=>"string"==typeof t?{text:t}:t))}getRadioButtons(){return this.getButtons().filter((t=>{var e;const o=null===(e=t.htmlAttributes)||void 0===e?void 0:e.role;return"radio"===o&&!p(o)}))}selectRadioButton(t){const e=this.getButtonId(t);this.activeRadioId=e}getButtonId(t,e){if(t.id)return t.id;const o=this.getButtons(),n=void 0!==e?e:o.indexOf(t);return`action-sheet-button-${this.overlayIndex}-${n}`}onKeydown(t){if(!this.hasRadioButtons||!this.presented)return;const e=t.target;if(!this.el.contains(e)||!e.classList.contains("action-sheet-button")||"radio"!==e.getAttribute("role"))return;const o=Array.from(this.el.querySelectorAll('.action-sheet-button[role="radio"]')).filter((t=>!t.disabled)),n=o.findIndex((t=>t.id===e.id));if(-1===n)return;const i=this.getButtons(),a=this.getRadioButtons(),c=new Map;let s;if(a.forEach((t=>{const e=i.indexOf(t),o=this.getButtonId(t,e);c.set(o,t)})),["ArrowDown","ArrowRight"].includes(t.key))t.preventDefault(),t.stopPropagation(),s=n===o.length-1?o[0]:o[n+1];else if(["ArrowUp","ArrowLeft"].includes(t.key))t.preventDefault(),t.stopPropagation(),s=0===n?o[o.length-1]:o[n-1];else if(" "===t.key||"Enter"===t.key){t.preventDefault(),t.stopPropagation();const o=c.get(e.id);return void(o&&(this.selectRadioButton(o),this.buttonClick(o)))}if(s){const t=c.get(s.id);t&&(this.selectRadioButton(t),s.focus())}}connectedCallback(){f(this.el),this.triggerChanged()}disconnectedCallback(){this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.triggerController.removeClickListener()}componentWillLoad(){var t;(null===(t=this.htmlAttributes)||void 0===t?void 0:t.id)||k(this.el),this.buttonsChanged()}componentDidLoad(){const t=w(this),{groupEl:e,wrapperEl:o}=this;!this.gesture&&"ios"===t&&o&&e&&n((()=>{e.scrollHeight>e.clientHeight||(this.gesture=s(o,(t=>t.classList.contains("action-sheet-button"))),this.gesture.enable(!0))})),!0===this.isOpen&&r((()=>this.present())),this.triggerChanged()}renderActionSheetButtons(t){const e=z(this),{activeRadioId:o}=this;return t.map(((t,n)=>{var a;const c="radio"===(null===(a=t.htmlAttributes)||void 0===a?void 0:a.role),s=this.getButtonId(t,n),r=this.getRadioButtons(),l=c&&s===o;let h;h=c?l||!o&&c&&t===r[0]?0:-1:void 0;const d=Object.assign({},t.htmlAttributes);c&&(d["aria-checked"]=l?"true":"false");const b={id:s,label:t.text,startContent:t.startContent,endContent:t.endContent,description:t.description};return i("button",Object.assign({},d,{role:c?"radio":void 0,type:"button",id:s,class:Object.assign(Object.assign({},R(t)),c&&{"action-sheet-selected":l}),onClick:()=>{c&&this.selectRadioButton(t),this.buttonClick(t)},disabled:t.disabled,tabIndex:h}),i("span",{class:"action-sheet-button-inner"},t.icon&&i("ion-icon",{icon:t.icon,"aria-hidden":"true",lazy:!1,class:"action-sheet-icon"}),x(b,"action-sheet-button-label",!0)),"md"===e&&i("ion-ripple-effect",null))}))}render(){const{header:t,htmlAttributes:e,overlayIndex:o,hasRadioButtons:n}=this,c=z(this),s=this.getButtons(),r=s.find((t=>"cancel"===t.role)),l=s.filter((t=>"cancel"!==t.role)),h=`action-sheet-${o}-header`;return i(a,Object.assign({key:"686ad4bf09a5f90bec0a80381b673f00b798345a",role:"dialog","aria-modal":"true","aria-labelledby":void 0!==t?h:null,tabindex:"-1"},e,{style:{zIndex:`${2e4+this.overlayIndex}`},class:Object.assign(Object.assign({[c]:!0},y(this.cssClass)),{"overlay-hidden":!0,"action-sheet-translucent":this.translucent}),onIonActionSheetWillDismiss:this.dispatchCancelHandler,onIonBackdropTap:this.onBackdropTap}),i("ion-backdrop",{key:"9a9d56159c030c5a9f23b588350abdc69806d825",tappable:this.backdropDismiss}),i("div",{key:"d851dd250c9e371f77618aefae1ca17273e56455",tabindex:"0","aria-hidden":"true"}),i("div",{key:"b3779f483a4d761b38e73a1f24eb2640c5f2b9ee",class:"action-sheet-wrapper ion-overlay-wrapper",ref:t=>this.wrapperEl=t},i("div",{key:"91bc56942ef4530b88d83b6a50c0a9b6e0c7eea5",class:"action-sheet-container"},i("div",{key:"815ab417de569a79c59b116e2daf651947a8dafc",class:"action-sheet-group",ref:t=>this.groupEl=t,role:n?"radiogroup":void 0},void 0!==t&&i("div",{key:"065c2d9a7466d5bbfadacae2c3defb7c657c02c7",id:h,class:{"action-sheet-title":!0,"action-sheet-has-sub-title":void 0!==this.subHeader}},t,this.subHeader&&i("div",{key:"f516079993b9db392a19ab6d341d41b72d5958b4",class:"action-sheet-sub-title"},this.subHeader)),this.renderActionSheetButtons(l)),r&&i("div",{key:"e1f1a5df31837663a3c386d7be23760ddf5ed84a",class:"action-sheet-group action-sheet-group-cancel"},i("button",Object.assign({key:"a1e87b6f25d1504562547f70b406327c07105578"},r.htmlAttributes,{type:"button",class:R(r),onClick:()=>this.buttonClick(r)}),i("span",{key:"26d5d7325648b0ebcf9c586ab62825dbc53e77eb",class:"action-sheet-button-inner"},r.icon&&i("ion-icon",{key:"b7ff6919503142323acc87683f83fc4ef32435a9",icon:r.icon,"aria-hidden":"true",lazy:!1,class:"action-sheet-icon"}),r.text),"md"===c&&i("ion-ripple-effect",{key:"40fff3b72af7d0399aebf66081a58c57cd45f07f"}))))),i("div",{key:"68d21ad90f00e0bb1f4dde673411bb8d8d675aad",tabindex:"0","aria-hidden":"true"}))}get el(){return this}static get watchers(){return{buttons:[{buttonsChanged:0}],isOpen:[{onIsOpenChange:0}],trigger:[{triggerChanged:0}]}}static get style(){return{ionic:'.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ionic,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ionic,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ionic,.select-option-label-has-rich-content.sc-ion-action-sheet-ionic{gap:var(--token-space-300, var(--token-scale-300, 12px))}.action-sheet-button-label-text.sc-ion-action-sheet-ionic,.alert-checkbox-label-text.sc-ion-action-sheet-ionic,.alert-radio-label-text.sc-ion-action-sheet-ionic,.select-option-label-text.sc-ion-action-sheet-ionic{gap:var(--token-space-300, var(--token-scale-300, 12px))}.select-option-description.sc-ion-action-sheet-ionic{font-size:var(--token-font-size-350, 0.875rem);font-weight:var(--token-font-weight-regular, 400);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-600, var(--token-scale-600, 24px));text-decoration:none;text-transform:none;-webkit-padding-start:var(--token-space-0, var(--token-scale-0, 0px));padding-inline-start:var(--token-space-0, var(--token-scale-0, 0px));-webkit-padding-end:var(--token-space-0, var(--token-scale-0, 0px));padding-inline-end:var(--token-space-0, var(--token-scale-0, 0px));padding-top:var(--token-space-0, var(--token-scale-0, 0px));padding-bottom:var(--token-space-0, var(--token-scale-0, 0px));color:var(--token-text-subtle, var(--token-primitives-neutral-1000, #3b3b3b));font-size:var(--token-font-size-350, 0.875rem)}.select-option-start.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic{gap:var(--token-space-200, var(--token-scale-200, 8px))}.select-option-start.sc-ion-action-sheet-ionic>ion-avatar.sc-ion-action-sheet-ionic,.select-option-start.sc-ion-action-sheet-ionic>ion-img.sc-ion-action-sheet-ionic,.select-option-start.sc-ion-action-sheet-ionic>ion-thumbnail.sc-ion-action-sheet-ionic,.select-option-start.sc-ion-action-sheet-ionic>ion-icon.sc-ion-action-sheet-ionic,.select-option-start.sc-ion-action-sheet-ionic>img.sc-ion-action-sheet-ionic,.select-option-start.sc-ion-action-sheet-ionic>svg.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic>ion-avatar.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic>ion-img.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic>ion-thumbnail.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic>ion-icon.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic>img.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic>svg.sc-ion-action-sheet-ionic{width:var(--token-scale-1200, 48px);height:var(--token-scale-1200, 48px)}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ionic,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ionic,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ionic,.select-option-label-has-rich-content.sc-ion-action-sheet-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ionic,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ionic,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ionic,.select-option-content.sc-ion-action-sheet-ionic{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-action-sheet-ionic,.alert-checkbox-label-text.sc-ion-action-sheet-ionic,.alert-radio-label-text.sc-ion-action-sheet-ionic,.select-option-label-text.sc-ion-action-sheet-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.select-option-start.sc-ion-action-sheet-ionic,.select-option-end.sc-ion-action-sheet-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.select-option-description.sc-ion-action-sheet-ionic{display:block}.select-option-label.sc-ion-action-sheet-ionic:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-action-sheet-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ionic::part(label),ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ionic [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ionic::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ionic [part~="label"],.select-option-content.sc-ion-action-sheet-ionic{-ms-flex:1;flex:1;white-space:normal}.sc-ion-action-sheet-ionic-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;right:0;left:0;top:0;bottom:0;display:block;position:fixed;outline:none;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.overlay-hidden.sc-ion-action-sheet-ionic-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ionic{right:0;left:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ionic{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ionic:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button.sc-ion-action-sheet-ionic:disabled ion-icon.sc-ion-action-sheet-ionic{color:currentColor}.action-sheet-button-inner.sc-ion-action-sheet-ionic{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ionic{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ionic{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ionic::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ionic{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ionic::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ionic{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ionic::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ionic{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ionic::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ionic:not(.ion-activated){color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ionic:not(.ion-activated)::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ionic:not(.ion-activated).action-sheet-selected::after{background:var(--button-background-focused, var(--button-background-selected));opacity:var(--button-background-focused-opacity, var(--button-background-selected-opacity))}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ionic:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ionic:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ionic-h{--background:var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));--backdrop-opacity:0.7;--button-background:transparent;--button-background-selected:var(--token-bg-primary-subtle-default, var(--token-semantics-primary-100, var(--token-primitives-blue-100, #e9ecfc)));--button-background-selected-opacity:1;--button-background-activated:var(--token-bg-neutral-subtlest-press, var(--token-primitives-neutral-200, #eae9e9));--button-background-activated-opacity:1;--button-background-hover:var(--token-bg-neutral-subtlest-press, var(--token-primitives-neutral-200, #eae9e9));--button-background-hover-opacity:1;--button-color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--button-color-disabled:var(--token-text-disabled, var(--token-primitives-neutral-500, #a2a2a2));--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));z-index:1001}.action-sheet-wrapper.sc-ion-action-sheet-ionic{z-index:10}.action-sheet-button.ion-focused.sc-ion-action-sheet-ionic::after{outline-offset:var(--token-border-size-050, var(--token-scale-050, 2px));outline:var(--token-border-size-050, var(--token-scale-050, 2px)) var(--token-border-style-solid, solid) var(--token-border-focus-default, var(--token-primitives-blue-400, #b5c0f7));outline-offset:calc(var(--token-border-size-050, var(--token-scale-050, 2px)) * -1)}.action-sheet-wrapper.sc-ion-action-sheet-ionic{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-ionic{-webkit-padding-start:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-start:var(--token-space-400, var(--token-scale-400, 16px));-webkit-padding-end:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-end:var(--token-space-400, var(--token-scale-400, 16px));padding-top:var(--token-space-400, var(--token-scale-400, 16px));padding-bottom:var(--token-space-400, var(--token-scale-400, 16px));font-size:var(--token-font-size-450, 1.125rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-700, var(--token-scale-700, 28px));text-decoration:none;text-transform:none;color:var(--color);text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-ionic{font-size:var(--token-font-size-350, 0.875rem);font-weight:var(--token-font-weight-regular, 400);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-600, var(--token-scale-600, 24px));text-decoration:none;text-transform:none;color:var(--token-text-subtlest, var(--token-primitives-neutral-800, #626262))}.action-sheet-group.sc-ion-action-sheet-ionic:first-child{padding-top:var(--token-space-400, var(--token-scale-400, 16px))}.action-sheet-group.sc-ion-action-sheet-ionic:last-child{padding-bottom:var(--token-space-400, var(--token-scale-400, 16px))}.action-sheet-button.sc-ion-action-sheet-ionic{-webkit-padding-start:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-start:var(--token-space-400, var(--token-scale-400, 16px));-webkit-padding-end:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-end:var(--token-space-400, var(--token-scale-400, 16px));padding-top:var(--token-space-200, var(--token-scale-200, 8px));padding-bottom:var(--token-space-200, var(--token-scale-200, 8px));font-size:var(--token-font-size-350, 0.875rem);font-weight:var(--token-font-weight-regular, 400);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-600, var(--token-scale-600, 24px));text-decoration:none;text-transform:none;position:relative;min-height:52px;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-ionic{-webkit-margin-start:var(--token-space-0, var(--token-scale-0, 0px));margin-inline-start:var(--token-space-0, var(--token-scale-0, 0px));-webkit-margin-end:var(--token-space-600, var(--token-scale-600, 24px));margin-inline-end:var(--token-space-600, var(--token-scale-600, 24px));margin-top:var(--token-space-0, var(--token-scale-0, 0px));margin-bottom:var(--token-space-0, var(--token-scale-0, 0px));width:var(--token-scale-600, 24px);height:var(--token-scale-600, 24px);color:var(--color, var(--token-text-default, var(--token-primitives-neutral-1200, #242424)))}.action-sheet-button-inner.sc-ion-action-sheet-ionic{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-ionic{font-weight:bold}',ios:'.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ios,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ios,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ios,.select-option-label-has-rich-content.sc-ion-action-sheet-ios{gap:16px}.action-sheet-button-label-text.sc-ion-action-sheet-ios,.alert-checkbox-label-text.sc-ion-action-sheet-ios,.alert-radio-label-text.sc-ion-action-sheet-ios,.select-option-label-text.sc-ion-action-sheet-ios{gap:12px}.select-option-start.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios{gap:8px}.select-option-description.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-start.sc-ion-action-sheet-ios>ion-avatar.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>ion-img.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>ion-thumbnail.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>img.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>svg.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-avatar.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-img.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-thumbnail.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>img.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>svg.sc-ion-action-sheet-ios{width:44px;height:44px}.select-option-start.sc-ion-action-sheet-ios>ion-icon.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-icon.sc-ion-action-sheet-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-action-sheet-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-action-sheet-ios{-webkit-padding-end:16px;padding-inline-end:16px}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ios,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ios,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ios,.select-option-label-has-rich-content.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ios,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ios,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ios,.select-option-content.sc-ion-action-sheet-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-action-sheet-ios,.alert-checkbox-label-text.sc-ion-action-sheet-ios,.alert-radio-label-text.sc-ion-action-sheet-ios,.select-option-label-text.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.select-option-start.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.select-option-description.sc-ion-action-sheet-ios{display:block}.select-option-label.sc-ion-action-sheet-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ios [part~="label"],.select-option-content.sc-ion-action-sheet-ios{-ms-flex:1;flex:1;white-space:normal}.sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;right:0;left:0;top:0;bottom:0;display:block;position:fixed;outline:none;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{right:0;left:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button.sc-ion-action-sheet-ios:disabled ion-icon.sc-ion-action-sheet-ios{color:currentColor}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated){color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated)::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated).action-sheet-selected::after{background:var(--button-background-focused, var(--button-background-selected));opacity:var(--button-background-focused-opacity, var(--button-background-selected-opacity))}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{font-family:var(--ion-font-family, inherit);z-index:1001}.action-sheet-wrapper.sc-ion-action-sheet-ios{z-index:10}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:0.08;--button-background-hover:currentColor;--button-background-hover-opacity:0.04;--button-background-focused:currentColor;--button-background-focused-opacity:0.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color-step-150, var(--ion-background-color, #fff)));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #0054e9);--button-color-disabled:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--color:var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);padding-bottom:var(--ion-safe-area-bottom, 0);-webkit-box-sizing:content-box;box-sizing:content-box}.action-sheet-container.sc-ion-action-sheet-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-size:max(13px, 0.8125rem);font-weight:400;text-align:center}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:max(13px, 0.8125rem);font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{-webkit-padding-start:14px;padding-inline-start:14px;-webkit-padding-end:14px;padding-inline-end:14px;padding-top:14px;padding-bottom:14px;min-height:56px;font-size:max(20px, 1.25rem);contain:content}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:max(28px, 1.75rem);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #c5000f)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #c5000f)}}',md:'.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-md,.alert-radio-label-has-rich-content.sc-ion-action-sheet-md,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-md,.select-option-label-has-rich-content.sc-ion-action-sheet-md{gap:16px}.action-sheet-button-label-text.sc-ion-action-sheet-md,.alert-checkbox-label-text.sc-ion-action-sheet-md,.alert-radio-label-text.sc-ion-action-sheet-md,.select-option-label-text.sc-ion-action-sheet-md{gap:12px}.select-option-start.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md{gap:8px}.select-option-description.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-start.sc-ion-action-sheet-md>ion-avatar.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-avatar.sc-ion-action-sheet-md{width:40px;height:40px}.select-option-start.sc-ion-action-sheet-md>ion-icon.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-icon.sc-ion-action-sheet-md{width:24px;height:24px}.select-option-start.sc-ion-action-sheet-md>ion-img.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>img.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>svg.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>ion-thumbnail.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-img.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>img.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>svg.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-thumbnail.sc-ion-action-sheet-md{width:56px;height:56px}.select-option-start.sc-ion-action-sheet-md>video.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>video.sc-ion-action-sheet-md{width:114px;height:56px}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-md,.alert-radio-label-has-rich-content.sc-ion-action-sheet-md,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-md,.select-option-label-has-rich-content.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-md,.alert-radio-label-has-rich-content.sc-ion-action-sheet-md,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-md,.select-option-content.sc-ion-action-sheet-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-action-sheet-md,.alert-checkbox-label-text.sc-ion-action-sheet-md,.alert-radio-label-text.sc-ion-action-sheet-md,.select-option-label-text.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.select-option-start.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.select-option-description.sc-ion-action-sheet-md{display:block}.select-option-label.sc-ion-action-sheet-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-action-sheet-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-action-sheet-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-md [part~="label"],.select-option-content.sc-ion-action-sheet-md{-ms-flex:1;flex:1;white-space:normal}.sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;right:0;left:0;top:0;bottom:0;display:block;position:fixed;outline:none;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{right:0;left:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button.sc-ion-action-sheet-md:disabled ion-icon.sc-ion-action-sheet-md{color:currentColor}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated){color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated)::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated).action-sheet-selected::after{background:var(--button-background-focused, var(--button-background-selected));opacity:var(--button-background-focused-opacity, var(--button-background-selected-opacity))}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{font-family:var(--ion-font-family, inherit);z-index:1001}.action-sheet-wrapper.sc-ion-action-sheet-md{z-index:10}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:0.04;--button-background-focused:currentColor;--button-background-focused-opacity:0.12;--button-color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--button-color-disabled:var(--button-color);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:1rem;text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:0.875rem}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;position:relative;min-height:52px;font-size:1rem;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:1.5rem}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}'}}},[34,"ion-action-sheet",{overlayIndex:[2,"overlay-index"],delegate:[16],hasController:[4,"has-controller"],keyboardClose:[4,"keyboard-close"],enterAnimation:[16],leaveAnimation:[16],buttons:[16],cssClass:[1,"css-class"],backdropDismiss:[4,"backdrop-dismiss"],header:[1],subHeader:[1,"sub-header"],translucent:[4],animated:[4],htmlAttributes:[16],isOpen:[4,"is-open"],trigger:[1],activeRadioId:[32],present:[64],dismiss:[64],onDidDismiss:[64],onWillDismiss:[64]},[[0,"keydown","onKeydown"]],{buttons:[{buttonsChanged:0}],isOpen:[{onIsOpenChange:0}],trigger:[{triggerChanged:0}]}]),R=t=>Object.assign({"action-sheet-button":!0,"ion-activatable":!t.disabled,"ion-focusable":!t.disabled,[`action-sheet-${t.role}`]:void 0!==t.role},y(t.cssClass));function Y(){"undefined"!=typeof customElements&&["ion-action-sheet","ion-backdrop","ion-icon","ion-ripple-effect"].forEach((t=>{switch(t){case"ion-action-sheet":customElements.get(c(t))||customElements.define(c(t),E);break;case"ion-backdrop":customElements.get(c(t))||j();break;case"ion-icon":customElements.get(c(t))||D();break;case"ion-ripple-effect":customElements.get(c(t))||A()}}))}export{E as A,Y as d}
|
package/components/p-sehKq5RI.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import{h as t}from"./p-3Ni1Z654.js";import{s as e}from"./p-BP_TU_4l.js";const n=(e,s,o)=>{var r;if(e.nodeType===Node.TEXT_NODE)return null!==(r=e.textContent)&&void 0!==r?r:"";if(e.nodeType!==Node.ELEMENT_NODE)return null;const c=e,l=c.tagName.toLowerCase(),i=`${s}-${o}`,$={key:i};for(let t=0;t<c.attributes.length;t++){const e=c.attributes.item(t);$[e.name]=e.value}const a=Array.from(c.childNodes).map(((t,e)=>n(t,i,e))).filter((t=>null!==t));return t(l,$,a)},s=(s,o,r,c=!1)=>{const l=c?"span":"div",i=`${r}-${s}`;return e(o),t(l,{class:r,key:i},Array.from(o.childNodes).map(((t,e)=>n(t,i,e))))},o=(e,n,o=!1)=>{const{id:r,label:c,startContent:l,endContent:i,description:$}=e,a=!!l||!!i||!!$,p=o?"span":"div";if(!(a||"string"!=typeof c&&c))return t(p,{class:n,key:`${n}-${r}`},c);const y="string"!=typeof c&&c?s(r,c,`${n}-text`,o):t(p,{key:`${n}-label-${r}`},c);return a?t(p,{class:`${n} ${n}-has-rich-content`,key:`${n}-${r}`},l&&s(r,l,"select-option-start",o),t(p,{class:"select-option-content",key:`${n}-content-${r}`},y,$&&t(p,{class:"select-option-description",key:`${n}-desc-${r}`},$)),i&&s(r,i,"select-option-end",o)):t(p,{class:n,key:`${n}-${r}`},y)};export{o as r}
|
|
@@ -1,414 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
'use strict';
|
|
5
|
-
|
|
6
|
-
var index = require('./index-CzcLEdQ5.js');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Sanitize an untrusted HTML string.
|
|
10
|
-
*
|
|
11
|
-
* Parses the string into a detached DOM, removes blocked tags, strips
|
|
12
|
-
* attributes outside the `allowedAttributes` list (refer `sanitizeElement`),
|
|
13
|
-
* and scrubs script-scheme URLs. Returns the sanitized HTML string.
|
|
14
|
-
*
|
|
15
|
-
* Use this when you have an HTML string from an unknown source and need to
|
|
16
|
-
* render it via `innerHTML`. Use `sanitizeDOMTree` instead when you already
|
|
17
|
-
* have a DOM tree and want to sanitize it in place without a string round
|
|
18
|
-
* trip; both apply the same attribute policy.
|
|
19
|
-
*
|
|
20
|
-
* @param untrustedString - The HTML string to sanitize. Pass an
|
|
21
|
-
* `IonicSafeString` to bypass sanitization, or `undefined` to short-circuit.
|
|
22
|
-
* @returns The sanitized HTML string, or `undefined` if the input was
|
|
23
|
-
* `undefined`. Returns `''` if sanitization fails or the input contains
|
|
24
|
-
* an inline `onload=` handler.
|
|
25
|
-
*/
|
|
26
|
-
const sanitizeDOMString = (untrustedString) => {
|
|
27
|
-
try {
|
|
28
|
-
if (untrustedString instanceof IonicSafeString) {
|
|
29
|
-
return untrustedString.value;
|
|
30
|
-
}
|
|
31
|
-
if (!isSanitizerEnabled() || typeof untrustedString !== 'string' || untrustedString === '') {
|
|
32
|
-
return untrustedString;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* onload is fired when appending to a document
|
|
36
|
-
* fragment in Chrome. If a string
|
|
37
|
-
* contains onload then we should not
|
|
38
|
-
* attempt to add this to the fragment.
|
|
39
|
-
*/
|
|
40
|
-
if (untrustedString.includes('onload=')) {
|
|
41
|
-
return '';
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Create a document fragment
|
|
45
|
-
* separate from the main DOM,
|
|
46
|
-
* create a div to do our work in
|
|
47
|
-
*/
|
|
48
|
-
const documentFragment = document.createDocumentFragment();
|
|
49
|
-
const workingDiv = document.createElement('div');
|
|
50
|
-
documentFragment.appendChild(workingDiv);
|
|
51
|
-
workingDiv.innerHTML = untrustedString;
|
|
52
|
-
/**
|
|
53
|
-
* Remove any elements
|
|
54
|
-
* that are blocked
|
|
55
|
-
*/
|
|
56
|
-
blockedTags.forEach((blockedTag) => {
|
|
57
|
-
const getElementsToRemove = documentFragment.querySelectorAll(blockedTag);
|
|
58
|
-
for (let elementIndex = getElementsToRemove.length - 1; elementIndex >= 0; elementIndex--) {
|
|
59
|
-
const element = getElementsToRemove[elementIndex];
|
|
60
|
-
if (element.parentNode) {
|
|
61
|
-
element.parentNode.removeChild(element);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
documentFragment.removeChild(element);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* We still need to sanitize
|
|
68
|
-
* the children of this element
|
|
69
|
-
* as they are left behind
|
|
70
|
-
*/
|
|
71
|
-
const childElements = getElementChildren(element);
|
|
72
|
-
/* eslint-disable-next-line */
|
|
73
|
-
for (let childIndex = 0; childIndex < childElements.length; childIndex++) {
|
|
74
|
-
sanitizeElement(childElements[childIndex]);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
/**
|
|
79
|
-
* Go through remaining elements and remove
|
|
80
|
-
* non-allowed attribs
|
|
81
|
-
*/
|
|
82
|
-
// IE does not support .children on document fragments, only .childNodes
|
|
83
|
-
const dfChildren = getElementChildren(documentFragment);
|
|
84
|
-
/* eslint-disable-next-line */
|
|
85
|
-
for (let childIndex = 0; childIndex < dfChildren.length; childIndex++) {
|
|
86
|
-
sanitizeElement(dfChildren[childIndex]);
|
|
87
|
-
}
|
|
88
|
-
// Append document fragment to div
|
|
89
|
-
const fragmentDiv = document.createElement('div');
|
|
90
|
-
fragmentDiv.appendChild(documentFragment);
|
|
91
|
-
// First child is always the div we did our work in
|
|
92
|
-
const getInnerDiv = fragmentDiv.querySelector('div');
|
|
93
|
-
return getInnerDiv !== null ? getInnerDiv.innerHTML : fragmentDiv.innerHTML;
|
|
94
|
-
}
|
|
95
|
-
catch (err) {
|
|
96
|
-
index.printIonError('sanitizeDOMString', err);
|
|
97
|
-
return '';
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* Sanitize an entire trusted DOM tree in place.
|
|
102
|
-
*
|
|
103
|
-
* Removes blocked tags (`script`, `iframe`, etc.) from the subtree and
|
|
104
|
-
* then sanitizes attributes on every remaining element using the same
|
|
105
|
-
* allowlist policy as `sanitizeDOMString` (refer `sanitizeElement`).
|
|
106
|
-
* Component presentational attributes (`size`, `color`, `shape`, inline
|
|
107
|
-
* SVG, `aria-*`, `data-*`) are preserved; `style`, event handlers (`on*`),
|
|
108
|
-
* form/navigation-hijack attributes, script-scheme URLs, and non-image
|
|
109
|
-
* `data:` URLs are stripped.
|
|
110
|
-
*
|
|
111
|
-
* Use this when you have a DOM tree the developer controls (e.g.
|
|
112
|
-
* cloned slot content from a component) and you need to render it
|
|
113
|
-
* elsewhere safely.
|
|
114
|
-
*
|
|
115
|
-
* @param root - The root element whose subtree will be sanitized in
|
|
116
|
-
* place. No-op when the sanitizer is disabled via `Ionic.config`.
|
|
117
|
-
*/
|
|
118
|
-
const sanitizeDOMTree = (root) => {
|
|
119
|
-
if (!isSanitizerEnabled()) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
blockedTags.forEach((tag) => {
|
|
123
|
-
const matches = root.querySelectorAll(tag);
|
|
124
|
-
for (let i = matches.length - 1; i >= 0; i--) {
|
|
125
|
-
matches[i].remove();
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
sanitizeElement(root);
|
|
129
|
-
};
|
|
130
|
-
/**
|
|
131
|
-
* Clean up current element based on allowed attributes
|
|
132
|
-
* and then recursively dig down into any child elements to
|
|
133
|
-
* clean those up as well
|
|
134
|
-
*/
|
|
135
|
-
// TODO(FW-2832): type (using Element triggers other type errors as well)
|
|
136
|
-
const sanitizeElement = (element) => {
|
|
137
|
-
// IE uses childNodes, so ignore nodes that are not elements
|
|
138
|
-
if (element.nodeType && element.nodeType !== 1) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* If attributes is not a NamedNodeMap
|
|
143
|
-
* then we should remove the element entirely.
|
|
144
|
-
* This helps avoid DOM Clobbering attacks where
|
|
145
|
-
* attributes is overridden.
|
|
146
|
-
*/
|
|
147
|
-
if (typeof NamedNodeMap !== 'undefined' && !(element.attributes instanceof NamedNodeMap)) {
|
|
148
|
-
element.remove();
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Always strip `style` (CSS injection, `background:url()` beaconing, UI
|
|
153
|
-
* spoofing). It is never on the allowlist, but it is removed explicitly
|
|
154
|
-
* here because some engines (e.g. jsdom) don't enumerate the CSSOM-backed
|
|
155
|
-
* `style` attribute in `element.attributes`, which would let the loop
|
|
156
|
-
* below skip over it.
|
|
157
|
-
*/
|
|
158
|
-
element.removeAttribute('style');
|
|
159
|
-
for (let i = element.attributes.length - 1; i >= 0; i--) {
|
|
160
|
-
const attribute = element.attributes.item(i);
|
|
161
|
-
const attributeName = attribute.name;
|
|
162
|
-
const lowerName = attributeName.toLowerCase();
|
|
163
|
-
/**
|
|
164
|
-
* Remove any attribute that is not on the allowlist. This drops event
|
|
165
|
-
* handlers (`on*`), `style`, the form/navigation-hijack attributes
|
|
166
|
-
* (`formaction`, `action`, `target`), namespaced attributes like
|
|
167
|
-
* `xlink:href`, and anything else not explicitly known to be safe.
|
|
168
|
-
*/
|
|
169
|
-
if (!isAttributeAllowed(lowerName)) {
|
|
170
|
-
element.removeAttribute(attributeName);
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
// clean up any allowed attribs
|
|
174
|
-
// that attempt to do any JS funny-business
|
|
175
|
-
const attributeValue = attribute.value;
|
|
176
|
-
if (attributeValue == null) {
|
|
177
|
-
continue;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Scrub dangerous schemes from the value. The value is normalized first
|
|
181
|
-
* (whitespace and ASCII control characters removed) so entity-obfuscated
|
|
182
|
-
* payloads such as `java	script:`, which the parser decodes to
|
|
183
|
-
* `java\tscript:`, are still caught. Normalizing the value also covers
|
|
184
|
-
* namespaced attributes, where the previous `element[attributeName]`
|
|
185
|
-
* property reflection returned `undefined` and let them slip through.
|
|
186
|
-
*/
|
|
187
|
-
const normalizedValue = attributeValue.replace(controlCharactersAndWhitespace, '').toLowerCase();
|
|
188
|
-
// Script schemes are never allowed, on any attribute.
|
|
189
|
-
if (normalizedValue.includes('javascript:') || normalizedValue.includes('vbscript:')) {
|
|
190
|
-
element.removeAttribute(attributeName);
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* For URL-bearing attributes, allow `data:` URIs only for raster
|
|
195
|
-
* images. Document-bearing types (`text/html`, `image/svg+xml`,
|
|
196
|
-
* `application/*`, etc.) can carry markup or script when navigated to
|
|
197
|
-
* or rendered, so they are stripped, while safe image types are kept so
|
|
198
|
-
* inline images keep working.
|
|
199
|
-
*/
|
|
200
|
-
if (urlAttributes.includes(lowerName) &&
|
|
201
|
-
normalizedValue.startsWith('data:') &&
|
|
202
|
-
!safeDataImageUri.test(normalizedValue)) {
|
|
203
|
-
element.removeAttribute(attributeName);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Sanitize any nested children
|
|
208
|
-
*/
|
|
209
|
-
const childElements = getElementChildren(element);
|
|
210
|
-
/* eslint-disable-next-line */
|
|
211
|
-
for (let i = 0; i < childElements.length; i++) {
|
|
212
|
-
sanitizeElement(childElements[i]);
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
/**
|
|
216
|
-
* IE doesn't always support .children
|
|
217
|
-
* so we revert to .childNodes instead
|
|
218
|
-
*/
|
|
219
|
-
// TODO(FW-2832): type
|
|
220
|
-
const getElementChildren = (el) => {
|
|
221
|
-
return el.children != null ? el.children : el.childNodes;
|
|
222
|
-
};
|
|
223
|
-
const isSanitizerEnabled = () => {
|
|
224
|
-
var _a;
|
|
225
|
-
const win = window;
|
|
226
|
-
const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
|
|
227
|
-
if (config) {
|
|
228
|
-
if (config.get) {
|
|
229
|
-
return config.get('sanitizerEnabled', true);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
return config.sanitizerEnabled === true || config.sanitizerEnabled === undefined;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return true;
|
|
236
|
-
};
|
|
237
|
-
/**
|
|
238
|
-
* Mirror known custom-element DOM properties onto attributes so they
|
|
239
|
-
* survive `cloneNode`. Call this on a DOM subtree before cloning it for
|
|
240
|
-
* rendering elsewhere (e.g. cloning slotted option content into an
|
|
241
|
-
* overlay).
|
|
242
|
-
*
|
|
243
|
-
* Only sets the attribute when the property holds a non-empty string
|
|
244
|
-
* and the attribute isn't already present, so existing attributes
|
|
245
|
-
* take precedence.
|
|
246
|
-
*
|
|
247
|
-
* @param root - The root element whose subtree (and itself) will be
|
|
248
|
-
* inspected.
|
|
249
|
-
*/
|
|
250
|
-
const reflectPropertiesToAttributes = (root) => {
|
|
251
|
-
const candidates = [];
|
|
252
|
-
if (root.tagName in elementPropsToReflect) {
|
|
253
|
-
candidates.push(root);
|
|
254
|
-
}
|
|
255
|
-
for (const tagName of Object.keys(elementPropsToReflect)) {
|
|
256
|
-
candidates.push(...Array.from(root.querySelectorAll(tagName.toLowerCase())));
|
|
257
|
-
}
|
|
258
|
-
for (const el of candidates) {
|
|
259
|
-
if (!(el.tagName in elementPropsToReflect)) {
|
|
260
|
-
continue;
|
|
261
|
-
}
|
|
262
|
-
const props = elementPropsToReflect[el.tagName];
|
|
263
|
-
for (const prop of props) {
|
|
264
|
-
const value = el[prop];
|
|
265
|
-
if (typeof value === 'string' && value.length > 0 && !el.hasAttribute(prop)) {
|
|
266
|
-
el.setAttribute(prop, value);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
/**
|
|
272
|
-
* Attribute names that are always safe to keep. Covers global HTML
|
|
273
|
-
* attributes, the Ionic component presentational props that cloned rich
|
|
274
|
-
* content (e.g. `ion-select-option` markup) relies on, and the inert SVG
|
|
275
|
-
* presentation attributes used by inline icons.
|
|
276
|
-
*
|
|
277
|
-
* `aria-*` and `data-*` are allowed separately by prefix (refer
|
|
278
|
-
* `allowedAttributePrefixes`) since they are inert and not worth
|
|
279
|
-
* enumerating. URL-bearing names (`href`, `src`) are allowed here, but
|
|
280
|
-
* their values are still scrubbed for script schemes in `sanitizeElement`.
|
|
281
|
-
*
|
|
282
|
-
* Notably absent: `style`, event handlers (`on*`), and the
|
|
283
|
-
* form/navigation-hijack attributes (`formaction`, `action`, `target`),
|
|
284
|
-
* which are therefore stripped.
|
|
285
|
-
*/
|
|
286
|
-
const allowedAttributes = [
|
|
287
|
-
// Global / structural
|
|
288
|
-
'class',
|
|
289
|
-
'id',
|
|
290
|
-
'slot',
|
|
291
|
-
'name',
|
|
292
|
-
'title',
|
|
293
|
-
'alt',
|
|
294
|
-
'lang',
|
|
295
|
-
'dir',
|
|
296
|
-
'role',
|
|
297
|
-
'type',
|
|
298
|
-
'value',
|
|
299
|
-
'disabled',
|
|
300
|
-
'width',
|
|
301
|
-
'height',
|
|
302
|
-
'href',
|
|
303
|
-
'src',
|
|
304
|
-
// Ionic component presentational props
|
|
305
|
-
'color',
|
|
306
|
-
'size',
|
|
307
|
-
'shape',
|
|
308
|
-
'fill',
|
|
309
|
-
'expand',
|
|
310
|
-
'mode',
|
|
311
|
-
'theme',
|
|
312
|
-
'icon',
|
|
313
|
-
'label',
|
|
314
|
-
'label-placement',
|
|
315
|
-
'justify',
|
|
316
|
-
'inset',
|
|
317
|
-
'lines',
|
|
318
|
-
'ios',
|
|
319
|
-
'md',
|
|
320
|
-
// SVG presentation attributes (compared lowercased, e.g. `viewBox`)
|
|
321
|
-
'xmlns',
|
|
322
|
-
'viewbox',
|
|
323
|
-
'preserveaspectratio',
|
|
324
|
-
'stroke',
|
|
325
|
-
'stroke-width',
|
|
326
|
-
'stroke-linecap',
|
|
327
|
-
'stroke-linejoin',
|
|
328
|
-
'stroke-opacity',
|
|
329
|
-
'stroke-dasharray',
|
|
330
|
-
'fill-rule',
|
|
331
|
-
'fill-opacity',
|
|
332
|
-
'clip-rule',
|
|
333
|
-
'd',
|
|
334
|
-
'points',
|
|
335
|
-
'cx',
|
|
336
|
-
'cy',
|
|
337
|
-
'r',
|
|
338
|
-
'rx',
|
|
339
|
-
'ry',
|
|
340
|
-
'x',
|
|
341
|
-
'y',
|
|
342
|
-
'x1',
|
|
343
|
-
'y1',
|
|
344
|
-
'x2',
|
|
345
|
-
'y2',
|
|
346
|
-
'transform',
|
|
347
|
-
'opacity',
|
|
348
|
-
];
|
|
349
|
-
/**
|
|
350
|
-
* Attribute-name prefixes that are always safe to keep. `aria-*` and
|
|
351
|
-
* `data-*` attributes cannot execute script or load resources, so they are
|
|
352
|
-
* allowed wholesale rather than enumerated by name.
|
|
353
|
-
*/
|
|
354
|
-
const allowedAttributePrefixes = ['aria-', 'data-'];
|
|
355
|
-
/**
|
|
356
|
-
* Whether an attribute name (already lowercased) is safe to keep, by exact
|
|
357
|
-
* match or by an allowed prefix.
|
|
358
|
-
*/
|
|
359
|
-
const isAttributeAllowed = (lowerName) => {
|
|
360
|
-
if (allowedAttributes.includes(lowerName)) {
|
|
361
|
-
return true;
|
|
362
|
-
}
|
|
363
|
-
return allowedAttributePrefixes.some((prefix) => lowerName.startsWith(prefix));
|
|
364
|
-
};
|
|
365
|
-
/**
|
|
366
|
-
* Matches ASCII control characters and whitespace (including the
|
|
367
|
-
* non-breaking space). Used to normalize attribute values before matching
|
|
368
|
-
* a URL scheme so entity-obfuscated payloads such as `java	script:`
|
|
369
|
-
* (decoded by the parser to `java\tscript:`) can't smuggle a scheme past
|
|
370
|
-
* the check.
|
|
371
|
-
*/
|
|
372
|
-
// eslint-disable-next-line no-control-regex -- matching control characters is the point
|
|
373
|
-
const controlCharactersAndWhitespace = /[\u0000-\u0020\u007f-\u00a0]/g;
|
|
374
|
-
/**
|
|
375
|
-
* Attributes whose values are URLs. Their values are scheme-checked in
|
|
376
|
-
* `sanitizeElement` (e.g. `data:` filtering) beyond the script-scheme scrub
|
|
377
|
-
* applied to every attribute.
|
|
378
|
-
*/
|
|
379
|
-
const urlAttributes = ['href', 'src'];
|
|
380
|
-
/**
|
|
381
|
-
* Matches a `data:` URI for a raster image type that cannot carry script.
|
|
382
|
-
* `image/svg+xml` is deliberately excluded (SVG can execute script), as are
|
|
383
|
-
* document types like `text/html` and `application/*`. The value is already
|
|
384
|
-
* lowercased and whitespace-stripped before this is tested.
|
|
385
|
-
*/
|
|
386
|
-
const safeDataImageUri = /^data:image\/(?:png|jpe?g|gif|webp|bmp|avif|x-icon|vnd\.microsoft\.icon)[;,]/;
|
|
387
|
-
/**
|
|
388
|
-
* Tags removed entirely (with their subtree) before attribute sanitization.
|
|
389
|
-
* Exported so tests can assert the set without hardcoding it.
|
|
390
|
-
*/
|
|
391
|
-
const blockedTags = ['script', 'style', 'iframe', 'meta', 'link', 'object', 'embed', 'base'];
|
|
392
|
-
/**
|
|
393
|
-
* Properties on custom elements that frameworks (Vue, Angular) often
|
|
394
|
-
* set as DOM properties rather than attributes. `cloneNode` only copies
|
|
395
|
-
* attributes, so these values are lost when slotted content is cloned
|
|
396
|
-
* into an overlay. For each known custom element, we mirror the listed
|
|
397
|
-
* properties onto attributes so the cloned copy still has the data it
|
|
398
|
-
* needs to render.
|
|
399
|
-
*
|
|
400
|
-
* Keyed by uppercased tagName so the lookup matches `Element.tagName`.
|
|
401
|
-
*/
|
|
402
|
-
const elementPropsToReflect = {
|
|
403
|
-
'ION-ICON': ['icon', 'name', 'src', 'ios', 'md'],
|
|
404
|
-
};
|
|
405
|
-
class IonicSafeString {
|
|
406
|
-
constructor(value) {
|
|
407
|
-
this.value = value;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
exports.IonicSafeString = IonicSafeString;
|
|
412
|
-
exports.reflectPropertiesToAttributes = reflectPropertiesToAttributes;
|
|
413
|
-
exports.sanitizeDOMString = sanitizeDOMString;
|
|
414
|
-
exports.sanitizeDOMTree = sanitizeDOMTree;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
'use strict';
|
|
5
|
-
|
|
6
|
-
// TODO(FW-6886, FW-6892, FW-6891): Remove this file in favor of the Modular Ionic component config. Each overlay will be able to select its own defaults for label placement and justify based on the interface and theme, so this utility will no longer be necessary.
|
|
7
|
-
/**
|
|
8
|
-
* Returns the default `labelPlacement` for a radio or checkbox option
|
|
9
|
-
* rendered inside an overlay. Defaults follow each theme's established
|
|
10
|
-
* option-row layout:
|
|
11
|
-
* - `ionic`: always `"start"`.
|
|
12
|
-
* - `ios`: `"start"` for radio in `alert` and `popover`. The `modal`
|
|
13
|
-
* interface flips iOS radio back to `"end"`. Checkbox is always
|
|
14
|
-
* `"end"` on iOS.
|
|
15
|
-
* - everything else (e.g. `md`): `"end"`.
|
|
16
|
-
*
|
|
17
|
-
* `interfaceType` is optional; only `"modal"` changes the result, so
|
|
18
|
-
* callers that aren't a modal can omit it.
|
|
19
|
-
*
|
|
20
|
-
* Used by `alert`, `select-popover`, and `select-modal` as the fallback
|
|
21
|
-
* when an option doesn't explicitly set `labelPlacement`.
|
|
22
|
-
*/
|
|
23
|
-
const getOverlayLabelPlacement = (theme, control, interfaceType) => {
|
|
24
|
-
if (theme === 'ionic' || (theme === 'ios' && control === 'radio' && interfaceType !== 'modal')) {
|
|
25
|
-
return 'start';
|
|
26
|
-
}
|
|
27
|
-
return 'end';
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Returns the default `justify` for a radio or checkbox option rendered
|
|
31
|
-
* inside an overlay. Defaults follow each theme's option-row layout:
|
|
32
|
-
* - `ionic`: always `"space-between"`.
|
|
33
|
-
* - `ios`: `"space-between"` for radio in `alert` and `popover`. The
|
|
34
|
-
* `modal` interface falls back to `"start"`. Checkbox is always `"start"`
|
|
35
|
-
* on iOS.
|
|
36
|
-
* - everything else (e.g. `md`): `"start"`.
|
|
37
|
-
*
|
|
38
|
-
* `interfaceType` is optional; only `"modal"` changes the result, so
|
|
39
|
-
* callers that aren't a modal can omit it.
|
|
40
|
-
*
|
|
41
|
-
* Used by `alert`, `select-popover`, and `select-modal` as the fallback when
|
|
42
|
-
* an option doesn't explicitly set `justify`.
|
|
43
|
-
*/
|
|
44
|
-
const getOverlayLabelJustify = (theme, control, interfaceType) => {
|
|
45
|
-
if (theme === 'ionic' || (theme === 'ios' && control === 'radio' && interfaceType !== 'modal')) {
|
|
46
|
-
return 'space-between';
|
|
47
|
-
}
|
|
48
|
-
return 'start';
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
exports.getOverlayLabelJustify = getOverlayLabelJustify;
|
|
52
|
-
exports.getOverlayLabelPlacement = getOverlayLabelPlacement;
|