@expressivecss/expressive 0.15.0 → 0.17.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/CHANGELOG.md +1807 -1
- package/README.md +9 -8
- package/dist/css/expressive.css +19176 -11958
- package/dist/css/expressive.css.map +1 -1
- package/dist/css/expressive.min.css +1 -1
- package/dist/css/expressive.min.css.map +1 -1
- package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
- package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
- package/dist/fonts/LICENSE-noto-sans-thai +93 -0
- package/dist/fonts/material-symbols-outlined.woff2 +0 -0
- package/dist/fonts/material-symbols-rounded.woff2 +0 -0
- package/dist/fonts/material-symbols-sharp.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-greek-400.woff2 +0 -0
- package/dist/fonts/roboto-greek-500.woff2 +0 -0
- package/dist/fonts/roboto-greek-700.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-latin-700.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
- package/dist/js/chunks/chunk-26VUH75M.mjs +102 -0
- package/dist/js/chunks/chunk-26VUH75M.mjs.map +7 -0
- package/dist/js/chunks/chunk-2LFCOGC3.mjs +233 -0
- package/dist/js/chunks/chunk-2LFCOGC3.mjs.map +7 -0
- package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-36GELQGX.mjs} +29 -46
- package/dist/js/chunks/chunk-36GELQGX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-3FKWIRHW.mjs} +15 -29
- package/dist/js/chunks/chunk-3FKWIRHW.mjs.map +7 -0
- package/dist/js/chunks/chunk-3KF65KGL.mjs +209 -0
- package/dist/js/chunks/chunk-3KF65KGL.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-3KLZRQZI.mjs} +88 -116
- package/dist/js/chunks/chunk-3KLZRQZI.mjs.map +7 -0
- package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-3XORNED5.mjs} +3 -11
- package/dist/js/chunks/chunk-3XORNED5.mjs.map +7 -0
- package/dist/js/chunks/chunk-4WBGAQN3.mjs +113 -0
- package/dist/js/chunks/chunk-4WBGAQN3.mjs.map +7 -0
- package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-5F4URJHL.mjs} +19 -30
- package/dist/js/chunks/chunk-5F4URJHL.mjs.map +7 -0
- package/dist/js/chunks/chunk-67UNY7RH.mjs +299 -0
- package/dist/js/chunks/chunk-67UNY7RH.mjs.map +7 -0
- package/dist/js/chunks/chunk-7CXNATJS.mjs +97 -0
- package/dist/js/chunks/chunk-7CXNATJS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-7X44MKEQ.mjs} +43 -48
- package/dist/js/chunks/chunk-7X44MKEQ.mjs.map +7 -0
- package/dist/js/chunks/chunk-7ZAMOMGY.mjs +440 -0
- package/dist/js/chunks/chunk-7ZAMOMGY.mjs.map +7 -0
- package/dist/js/chunks/chunk-AEG6LOAJ.mjs +54 -0
- package/dist/js/chunks/chunk-AEG6LOAJ.mjs.map +7 -0
- package/dist/js/chunks/chunk-AQNFCJJ5.mjs +135 -0
- package/dist/js/chunks/chunk-AQNFCJJ5.mjs.map +7 -0
- package/dist/js/chunks/chunk-B55LWKBM.mjs +75 -0
- package/dist/js/chunks/chunk-B55LWKBM.mjs.map +7 -0
- package/dist/js/chunks/chunk-BB5VXYXT.mjs +28 -0
- package/dist/js/chunks/chunk-BB5VXYXT.mjs.map +7 -0
- package/dist/js/chunks/chunk-BDATLH3H.mjs +108 -0
- package/dist/js/chunks/chunk-BDATLH3H.mjs.map +7 -0
- package/dist/js/chunks/chunk-CWMQOT4O.mjs +232 -0
- package/dist/js/chunks/chunk-CWMQOT4O.mjs.map +7 -0
- package/dist/js/chunks/chunk-CY2CTOVM.mjs +81 -0
- package/dist/js/chunks/chunk-CY2CTOVM.mjs.map +7 -0
- package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-DWA5UYLJ.mjs} +363 -218
- package/dist/js/chunks/chunk-DWA5UYLJ.mjs.map +7 -0
- package/dist/js/chunks/chunk-EB2V4OKL.mjs +79 -0
- package/dist/js/chunks/chunk-EB2V4OKL.mjs.map +7 -0
- package/dist/js/chunks/chunk-EWO662ZC.mjs +188 -0
- package/dist/js/chunks/chunk-EWO662ZC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-F7LAKFMX.mjs} +320 -141
- package/dist/js/chunks/chunk-F7LAKFMX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-FNIIH2LU.mjs} +20 -33
- package/dist/js/chunks/chunk-FNIIH2LU.mjs.map +7 -0
- package/dist/js/chunks/chunk-GE3YMFS6.mjs +15 -0
- package/dist/js/chunks/chunk-GE3YMFS6.mjs.map +7 -0
- package/dist/js/chunks/chunk-GFWYMWYN.mjs +125 -0
- package/dist/js/chunks/chunk-GFWYMWYN.mjs.map +7 -0
- package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
- package/dist/js/chunks/chunk-H5ISU45X.mjs +87 -0
- package/dist/js/chunks/chunk-H5ISU45X.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-H6YIKFAQ.mjs} +311 -186
- package/dist/js/chunks/chunk-H6YIKFAQ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-HEH7E3KO.mjs} +155 -35
- package/dist/js/chunks/chunk-HEH7E3KO.mjs.map +7 -0
- package/dist/js/chunks/chunk-HQRLBTNM.mjs +152 -0
- package/dist/js/chunks/chunk-HQRLBTNM.mjs.map +7 -0
- package/dist/js/chunks/chunk-I2F7MLUU.mjs +137 -0
- package/dist/js/chunks/chunk-I2F7MLUU.mjs.map +7 -0
- package/dist/js/chunks/chunk-IQOTGGHX.mjs +797 -0
- package/dist/js/chunks/chunk-IQOTGGHX.mjs.map +7 -0
- package/dist/js/chunks/chunk-JH3YWKA6.mjs +225 -0
- package/dist/js/chunks/chunk-JH3YWKA6.mjs.map +7 -0
- package/dist/js/chunks/chunk-JOLJAYIJ.mjs +7 -0
- package/dist/js/chunks/chunk-JOLJAYIJ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-KOTGMCMI.mjs} +116 -24
- package/dist/js/chunks/chunk-KOTGMCMI.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-LC4O5LFS.mjs} +21 -45
- package/dist/js/chunks/chunk-LC4O5LFS.mjs.map +7 -0
- package/dist/js/chunks/chunk-LEF33SCP.mjs +127 -0
- package/dist/js/chunks/chunk-LEF33SCP.mjs.map +7 -0
- package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-LFORZRPH.mjs} +21 -23
- package/dist/js/chunks/chunk-LFORZRPH.mjs.map +7 -0
- package/dist/js/chunks/chunk-LWLNV5EC.mjs +451 -0
- package/dist/js/chunks/chunk-LWLNV5EC.mjs.map +7 -0
- package/dist/js/chunks/chunk-LXRHUQAX.mjs +491 -0
- package/dist/js/chunks/chunk-LXRHUQAX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-MA2SZZFB.mjs} +82 -111
- package/dist/js/chunks/chunk-MA2SZZFB.mjs.map +7 -0
- package/dist/js/chunks/chunk-MDBZAMIV.mjs +121 -0
- package/dist/js/chunks/chunk-MDBZAMIV.mjs.map +7 -0
- package/dist/js/chunks/chunk-NODZ5VAD.mjs +75 -0
- package/dist/js/chunks/chunk-NODZ5VAD.mjs.map +7 -0
- package/dist/js/chunks/chunk-O2WJB6TH.mjs +365 -0
- package/dist/js/chunks/chunk-O2WJB6TH.mjs.map +7 -0
- package/dist/js/chunks/chunk-PCABY5BN.mjs +35 -0
- package/dist/js/chunks/chunk-PCABY5BN.mjs.map +7 -0
- package/dist/js/chunks/chunk-PWKYVMND.mjs +120 -0
- package/dist/js/chunks/chunk-PWKYVMND.mjs.map +7 -0
- package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-QHZZT7YO.mjs} +66 -38
- package/dist/js/chunks/chunk-QHZZT7YO.mjs.map +7 -0
- package/dist/js/chunks/chunk-QND56EW2.mjs +439 -0
- package/dist/js/chunks/chunk-QND56EW2.mjs.map +7 -0
- package/dist/js/chunks/chunk-QNODAANY.mjs +376 -0
- package/dist/js/chunks/chunk-QNODAANY.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-QRO5FV3I.mjs} +156 -73
- package/dist/js/chunks/chunk-QRO5FV3I.mjs.map +7 -0
- package/dist/js/chunks/chunk-R7A7JRC5.mjs +440 -0
- package/dist/js/chunks/chunk-R7A7JRC5.mjs.map +7 -0
- package/dist/js/chunks/chunk-RKG2CBFE.mjs +74 -0
- package/dist/js/chunks/chunk-RKG2CBFE.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-RSNS5OYS.mjs} +38 -25
- package/dist/js/chunks/chunk-RSNS5OYS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-RUDYMEJ3.mjs} +7 -6
- package/dist/js/chunks/chunk-RUDYMEJ3.mjs.map +7 -0
- package/dist/js/chunks/chunk-STJR62SU.mjs +161 -0
- package/dist/js/chunks/chunk-STJR62SU.mjs.map +7 -0
- package/dist/js/chunks/chunk-SUSD4UTN.mjs +220 -0
- package/dist/js/chunks/chunk-SUSD4UTN.mjs.map +7 -0
- package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-SYBOA5HC.mjs} +26 -48
- package/dist/js/chunks/chunk-SYBOA5HC.mjs.map +7 -0
- package/dist/js/chunks/chunk-T4MOBP3J.mjs +108 -0
- package/dist/js/chunks/chunk-T4MOBP3J.mjs.map +7 -0
- package/dist/js/chunks/chunk-TM7HPGTV.mjs +342 -0
- package/dist/js/chunks/chunk-TM7HPGTV.mjs.map +7 -0
- package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-TMQDZSDC.mjs} +71 -35
- package/dist/js/chunks/chunk-TMQDZSDC.mjs.map +7 -0
- package/dist/js/chunks/chunk-TVSX5YA2.mjs +48 -0
- package/dist/js/chunks/chunk-TVSX5YA2.mjs.map +7 -0
- package/dist/js/chunks/chunk-UHO5CV6K.mjs +80 -0
- package/dist/js/chunks/chunk-UHO5CV6K.mjs.map +7 -0
- package/dist/js/chunks/chunk-UKCNELUN.mjs +223 -0
- package/dist/js/chunks/chunk-UKCNELUN.mjs.map +7 -0
- package/dist/js/chunks/chunk-UKQK5GWR.mjs +167 -0
- package/dist/js/chunks/chunk-UKQK5GWR.mjs.map +7 -0
- package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-UTSLYQ65.mjs} +21 -48
- package/dist/js/chunks/chunk-UTSLYQ65.mjs.map +7 -0
- package/dist/js/chunks/chunk-VS5OJBOD.mjs +108 -0
- package/dist/js/chunks/chunk-VS5OJBOD.mjs.map +7 -0
- package/dist/js/chunks/chunk-VZMROW5A.mjs +759 -0
- package/dist/js/chunks/chunk-VZMROW5A.mjs.map +7 -0
- package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
- package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
- package/dist/js/chunks/chunk-XB6Y7P5W.mjs +69 -0
- package/dist/js/chunks/chunk-XB6Y7P5W.mjs.map +7 -0
- package/dist/js/chunks/chunk-XDAMOMVD.mjs +226 -0
- package/dist/js/chunks/chunk-XDAMOMVD.mjs.map +7 -0
- package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-XJPMW5SP.mjs} +247 -172
- package/dist/js/chunks/chunk-XJPMW5SP.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-YKANQILZ.mjs} +16 -21
- package/dist/js/chunks/chunk-YKANQILZ.mjs.map +7 -0
- package/dist/js/chunks/chunk-YLZOJLDI.mjs +175 -0
- package/dist/js/chunks/chunk-YLZOJLDI.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZK7YY322.mjs +514 -0
- package/dist/js/chunks/chunk-ZK7YY322.mjs.map +7 -0
- package/dist/js/expressive.cjs +10266 -3628
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +10266 -3628
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +23 -22
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +181 -69
- package/dist/js/expressive.mjs.map +2 -2
- package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
- package/dist/js/internal/behaviors/copy.mjs +9 -0
- package/dist/js/internal/behaviors/copy.mjs.map +7 -0
- package/dist/js/internal/behaviors/dataTables.mjs +8 -0
- package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
- package/dist/js/internal/behaviors/dialogs.mjs +2 -2
- package/dist/js/internal/behaviors/forms.mjs +2 -2
- package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
- package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
- package/dist/js/internal/behaviors/lists.mjs +8 -0
- package/dist/js/internal/behaviors/lists.mjs.map +7 -0
- package/dist/js/internal/behaviors/paneResize.mjs +8 -0
- package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
- package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
- package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
- package/dist/js/internal/behaviors/sortable.mjs +8 -0
- package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
- package/dist/js/internal/behaviors/theme.mjs +8 -0
- package/dist/js/internal/behaviors/theme.mjs.map +7 -0
- package/dist/js/internal/behaviors/tour.mjs +8 -0
- package/dist/js/internal/behaviors/tour.mjs.map +7 -0
- package/dist/js/internal/behaviors/transferList.mjs +8 -0
- package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
- package/dist/js/internal/components/appBar.mjs +3 -2
- package/dist/js/internal/components/autocomplete.mjs +5 -4
- package/dist/js/internal/components/backToTop.mjs +9 -0
- package/dist/js/internal/components/backToTop.mjs.map +7 -0
- package/dist/js/internal/components/barChart.mjs +5 -4
- package/dist/js/internal/components/buttonGroup.mjs +3 -2
- package/dist/js/internal/components/buttons.mjs +3 -3
- package/dist/js/internal/components/cards.mjs +3 -3
- package/dist/js/internal/components/carousel.mjs +3 -3
- package/dist/js/internal/components/cascader.mjs +10 -0
- package/dist/js/internal/components/cascader.mjs.map +7 -0
- package/dist/js/internal/components/characterCounter.mjs +3 -2
- package/dist/js/internal/components/chips.mjs +7 -5
- package/dist/js/internal/components/colorPicker.mjs +9 -0
- package/dist/js/internal/components/colorPicker.mjs.map +7 -0
- package/dist/js/internal/components/columnChart.mjs +4 -3
- package/dist/js/internal/components/commandPalette.mjs +3 -3
- package/dist/js/internal/components/confetti.mjs +3 -2
- package/dist/js/internal/components/currencyInput.mjs +9 -0
- package/dist/js/internal/components/currencyInput.mjs.map +7 -0
- package/dist/js/internal/components/datepicker.mjs +12 -8
- package/dist/js/internal/components/expandingCard.mjs +3 -3
- package/dist/js/internal/components/funnelChart.mjs +10 -0
- package/dist/js/internal/components/funnelChart.mjs.map +7 -0
- package/dist/js/internal/components/heatmapChart.mjs +4 -3
- package/dist/js/internal/components/hoverCard.mjs +9 -0
- package/dist/js/internal/components/hoverCard.mjs.map +7 -0
- package/dist/js/internal/components/index.mjs +131 -65
- package/dist/js/internal/components/inputMask.mjs +9 -0
- package/dist/js/internal/components/inputMask.mjs.map +7 -0
- package/dist/js/internal/components/keypad.mjs +3 -3
- package/dist/js/internal/components/lightbox.mjs +3 -3
- package/dist/js/internal/components/lineChart.mjs +41 -4
- package/dist/js/internal/components/loadingOverlay.mjs +9 -0
- package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
- package/dist/js/internal/components/mapView.mjs +3 -3
- package/dist/js/internal/components/menu.mjs +3 -3
- package/dist/js/internal/components/menubar.mjs +10 -0
- package/dist/js/internal/components/menubar.mjs.map +7 -0
- package/dist/js/internal/components/messageScroller.mjs +3 -3
- package/dist/js/internal/components/mixedChart.mjs +5 -4
- package/dist/js/internal/components/navigationRail.mjs +3 -2
- package/dist/js/internal/components/particles.mjs +3 -2
- package/dist/js/internal/components/pieChart.mjs +4 -3
- package/dist/js/internal/components/pullToRefresh.mjs +9 -0
- package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
- package/dist/js/internal/components/questionnaire.mjs +3 -3
- package/dist/js/internal/components/radarChart.mjs +4 -3
- package/dist/js/internal/components/radialChart.mjs +4 -3
- package/dist/js/internal/components/registry.mjs +60 -41
- package/dist/js/internal/components/richTextEditor.mjs +3 -3
- package/dist/js/internal/components/sankeyChart.mjs +10 -0
- package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
- package/dist/js/internal/components/scatterChart.mjs +10 -0
- package/dist/js/internal/components/scatterChart.mjs.map +7 -0
- package/dist/js/internal/components/scrollspy.mjs +3 -2
- package/dist/js/internal/components/select.mjs +5 -4
- package/dist/js/internal/components/showMore.mjs +9 -0
- package/dist/js/internal/components/showMore.mjs.map +7 -0
- package/dist/js/internal/components/slider.mjs +3 -3
- package/dist/js/internal/components/snackbar.mjs +2 -2
- package/dist/js/internal/components/swipeActions.mjs +9 -0
- package/dist/js/internal/components/swipeActions.mjs.map +7 -0
- package/dist/js/internal/components/tabs.mjs +3 -4
- package/dist/js/internal/components/timepicker.mjs +5 -4
- package/dist/js/internal/components/tooltip.mjs +3 -3
- package/dist/js/internal/components/treeSelect.mjs +14 -0
- package/dist/js/internal/components/treeSelect.mjs.map +7 -0
- package/dist/js/internal/components/treemapChart.mjs +10 -0
- package/dist/js/internal/components/treemapChart.mjs.map +7 -0
- package/dist/js/internal/core/component.mjs +6 -3
- package/dist/js/internal/core/formControl.mjs +12 -0
- package/dist/js/internal/core/formControl.mjs.map +7 -0
- package/dist/js/internal/core/imageURL.mjs +7 -0
- package/dist/js/internal/core/imageURL.mjs.map +7 -0
- package/dist/js/internal/core/spring.mjs +11 -0
- package/dist/js/internal/core/spring.mjs.map +7 -0
- package/dist/js/internal/core/utils.mjs +21 -3
- package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
- package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
- package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
- package/dist/js/modular.mjs +172 -69
- package/dist/types/behaviors/bottomSheets.d.ts +23 -5
- package/dist/types/behaviors/copy.d.ts +18 -0
- package/dist/types/behaviors/dataTables.d.ts +125 -0
- package/dist/types/behaviors/dialogs.d.ts +27 -1
- package/dist/types/behaviors/forms.d.ts +70 -4
- package/dist/types/behaviors/imageCompare.d.ts +13 -0
- package/dist/types/behaviors/lists.d.ts +12 -0
- package/dist/types/behaviors/paneResize.d.ts +29 -0
- package/dist/types/behaviors/sheetDrag.d.ts +18 -0
- package/dist/types/behaviors/sideSheets.d.ts +1 -1
- package/dist/types/behaviors/sortable.d.ts +28 -0
- package/dist/types/behaviors/theme.d.ts +22 -0
- package/dist/types/behaviors/tour.d.ts +36 -0
- package/dist/types/behaviors/transferList.d.ts +53 -0
- package/dist/types/components/appBar.d.ts +5 -6
- package/dist/types/components/autocomplete.d.ts +105 -20
- package/dist/types/components/backToTop.d.ts +36 -0
- package/dist/types/components/barChart.d.ts +3 -6
- package/dist/types/components/buttonGroup.d.ts +2 -4
- package/dist/types/components/buttons.d.ts +5 -5
- package/dist/types/components/cards.d.ts +3 -16
- package/dist/types/components/carousel.d.ts +16 -15
- package/dist/types/components/cascader.d.ts +130 -0
- package/dist/types/components/characterCounter.d.ts +2 -15
- package/dist/types/components/chips.d.ts +80 -19
- package/dist/types/components/colorPicker.d.ts +56 -0
- package/dist/types/components/columnChart.d.ts +23 -10
- package/dist/types/components/commandPalette.d.ts +11 -16
- package/dist/types/components/confetti.d.ts +2 -4
- package/dist/types/components/currencyInput.d.ts +60 -0
- package/dist/types/components/datepicker.d.ts +107 -56
- package/dist/types/components/expandingCard.d.ts +4 -6
- package/dist/types/components/funnelChart.d.ts +35 -0
- package/dist/types/components/heatmapChart.d.ts +42 -8
- package/dist/types/components/hoverCard.d.ts +59 -0
- package/dist/types/components/index.d.ts +16 -1
- package/dist/types/components/inputMask.d.ts +28 -0
- package/dist/types/components/keypad.d.ts +38 -6
- package/dist/types/components/lightbox.d.ts +14 -20
- package/dist/types/components/lineChart.d.ts +212 -12
- package/dist/types/components/loadingOverlay.d.ts +42 -0
- package/dist/types/components/mapView.d.ts +138 -27
- package/dist/types/components/menu.d.ts +74 -22
- package/dist/types/components/menubar.d.ts +37 -0
- package/dist/types/components/messageScroller.d.ts +2 -14
- package/dist/types/components/mixedChart.d.ts +15 -6
- package/dist/types/components/navigationRail.d.ts +16 -5
- package/dist/types/components/particles.d.ts +22 -5
- package/dist/types/components/pieChart.d.ts +33 -9
- package/dist/types/components/pullToRefresh.d.ts +80 -0
- package/dist/types/components/questionnaire.d.ts +58 -16
- package/dist/types/components/radarChart.d.ts +10 -6
- package/dist/types/components/radialChart.d.ts +58 -7
- package/dist/types/components/registry.d.ts +73 -3
- package/dist/types/components/richTextEditor.d.ts +45 -22
- package/dist/types/components/sankeyChart.d.ts +72 -0
- package/dist/types/components/scatterChart.d.ts +102 -0
- package/dist/types/components/scrollspy.d.ts +3 -5
- package/dist/types/components/select.d.ts +44 -33
- package/dist/types/components/showMore.d.ts +53 -0
- package/dist/types/components/slider.d.ts +2 -15
- package/dist/types/components/snackbar.d.ts +68 -1
- package/dist/types/components/swipeActions.d.ts +81 -0
- package/dist/types/components/tabs.d.ts +92 -30
- package/dist/types/components/timepicker.d.ts +128 -27
- package/dist/types/components/tooltip.d.ts +57 -21
- package/dist/types/components/treeSelect.d.ts +106 -0
- package/dist/types/components/treemapChart.d.ts +56 -0
- package/dist/types/core/component.d.ts +49 -25
- package/dist/types/core/formControl.d.ts +21 -0
- package/dist/types/core/imageURL.d.ts +2 -0
- package/dist/types/core/spring.d.ts +20 -0
- package/dist/types/core/utils.d.ts +123 -72
- package/dist/types/modular.d.ts +33 -1
- package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
- package/dist/types/plugins/modalDisplayPlugin.d.ts +39 -0
- package/package.json +17 -13
- package/src/sass/README.md +27 -18
- package/src/sass/abstracts/_elevation.scss +13 -7
- package/src/sass/abstracts/_index.scss +1 -0
- package/src/sass/abstracts/_mixins.scss +864 -78
- package/src/sass/abstracts/_spring.scss +63 -0
- package/src/sass/abstracts/_variables.scss +64 -21
- package/src/sass/base/_fonts.scss +61 -48
- package/src/sass/base/_global.scss +104 -24
- package/src/sass/base/_index.scss +2 -0
- package/src/sass/base/_normalize.scss +59 -114
- package/src/sass/base/_print.scss +21 -0
- package/src/sass/base/_prose.scss +68 -0
- package/src/sass/base/_typography.scss +9 -5
- package/src/sass/components/_accordion.scss +10 -19
- package/src/sass/components/_alert.scss +102 -0
- package/src/sass/components/_aura.scss +9 -3
- package/src/sass/components/_avatar.scss +3 -3
- package/src/sass/components/_back-to-top.scss +38 -0
- package/src/sass/components/_badges.scss +6 -5
- package/src/sass/components/_bar-chart.scss +31 -90
- package/src/sass/components/_bottom-sheet.scss +51 -16
- package/src/sass/components/_breadcrumb.scss +8 -7
- package/src/sass/components/_button-groups.scss +30 -63
- package/src/sass/components/_buttons.scss +137 -94
- package/src/sass/components/_calendar.scss +244 -0
- package/src/sass/components/_cards.scss +36 -44
- package/src/sass/components/_carousel.scss +37 -113
- package/src/sass/components/_cascader.scss +131 -0
- package/src/sass/components/_chips.scss +36 -46
- package/src/sass/components/_column-chart.scss +15 -26
- package/src/sass/components/_command-palette.scss +4 -7
- package/src/sass/components/_confetti.scss +1 -4
- package/src/sass/components/_countdown.scss +1 -1
- package/src/sass/components/_data-table.scss +172 -25
- package/src/sass/components/_datepicker.scss +54 -40
- package/src/sass/components/_description-list.scss +85 -0
- package/src/sass/components/_dialog.scss +48 -55
- package/src/sass/components/_docked-display.scss +1 -3
- package/src/sass/components/_drag-handle.scss +16 -20
- package/src/sass/components/_expanding-card.scss +21 -14
- package/src/sass/components/_fab-menu.scss +43 -39
- package/src/sass/components/_funnel-chart.scss +63 -0
- package/src/sass/components/_heatmap-chart.scss +114 -29
- package/src/sass/components/_icon-buttons.scss +8 -11
- package/src/sass/components/_icons-material-design.scss +2 -2
- package/src/sass/components/_image-compare.scss +108 -0
- package/src/sass/components/_index.scss +20 -0
- package/src/sass/components/_keypad.scss +39 -19
- package/src/sass/components/_kpi.scss +6 -11
- package/src/sass/components/_lightbox.scss +24 -13
- package/src/sass/components/_line-chart.scss +9 -63
- package/src/sass/components/_list.scss +59 -14
- package/src/sass/components/_loading-indicator.scss +1 -0
- package/src/sass/components/_loading-overlay.scss +105 -0
- package/src/sass/components/_map.scss +37 -11
- package/src/sass/components/_marquee.scss +4 -3
- package/src/sass/components/_mega-menu.scss +128 -0
- package/src/sass/components/_menu.scss +146 -127
- package/src/sass/components/_menubar.scss +47 -0
- package/src/sass/components/_message-scroller.scss +2 -2
- package/src/sass/components/_message.scss +3 -3
- package/src/sass/components/_mixed-chart.scss +27 -35
- package/src/sass/components/_modal-display.scss +21 -0
- package/src/sass/components/_navbar.scss +45 -36
- package/src/sass/components/_navigation-bar.scss +12 -77
- package/src/sass/components/_navigation-rail.scss +161 -92
- package/src/sass/components/_org-chart.scss +192 -0
- package/src/sass/components/_page-footer.scss +2 -4
- package/src/sass/components/_pagination.scss +9 -27
- package/src/sass/components/_panes.scss +35 -42
- package/src/sass/components/_particles.scss +1 -4
- package/src/sass/components/_pie-chart.scss +86 -68
- package/src/sass/components/_popover.scss +18 -5
- package/src/sass/components/_progress.scss +183 -44
- package/src/sass/components/_pull-to-refresh.scss +90 -0
- package/src/sass/components/_questionnaire.scss +74 -3
- package/src/sass/components/_radar-chart.scss +40 -42
- package/src/sass/components/_radial-chart.scss +108 -46
- package/src/sass/components/_rich-text-editor.scss +2 -2
- package/src/sass/components/_sankey-chart.scss +91 -0
- package/src/sass/components/_scatter-chart.scss +144 -0
- package/src/sass/components/_scrim.scss +0 -2
- package/src/sass/components/_scrollspy.scss +0 -2
- package/src/sass/components/_search.scss +27 -26
- package/src/sass/components/_show-more.scss +8 -0
- package/src/sass/components/_side-sheet.scss +32 -51
- package/src/sass/components/_skeleton.scss +26 -19
- package/src/sass/components/_snackbar.scss +25 -21
- package/src/sass/components/_split-button.scss +5 -5
- package/src/sass/components/_stat.scss +3 -8
- package/src/sass/components/_stepper.scss +1 -1
- package/src/sass/components/_swipe-actions.scss +71 -0
- package/src/sass/components/_table_of_contents.scss +1 -3
- package/src/sass/components/_tabs.scss +49 -46
- package/src/sass/components/_timeline.scss +12 -12
- package/src/sass/components/_timepicker.scss +111 -79
- package/src/sass/components/_toolbar.scss +36 -47
- package/src/sass/components/_tooltip.scss +25 -12
- package/src/sass/components/_tour.scss +89 -0
- package/src/sass/components/_transfer-list.scss +73 -0
- package/src/sass/components/_transitions.scss +4 -4
- package/src/sass/components/_tree.scss +7 -32
- package/src/sass/components/_treemap-chart.scss +98 -0
- package/src/sass/components/forms/_checkboxes.scss +107 -44
- package/src/sass/components/forms/_color-picker.scss +135 -0
- package/src/sass/components/forms/_color-swatches.scss +85 -0
- package/src/sass/components/forms/_drop-zone.scss +16 -13
- package/src/sass/components/forms/_fieldset.scss +4 -7
- package/src/sass/components/forms/_file-input.scss +12 -8
- package/src/sass/components/forms/_index.scss +3 -1
- package/src/sass/components/forms/_input-fields.scss +271 -90
- package/src/sass/components/forms/_radio-buttons.scss +34 -117
- package/src/sass/components/forms/_rating.scss +2 -32
- package/src/sass/components/forms/_select.scss +198 -20
- package/src/sass/components/forms/_slider.scss +92 -98
- package/src/sass/components/forms/_switches.scss +62 -180
- package/src/sass/custom.scss +10 -1
- package/src/sass/expressive.scss +3 -63
- package/src/sass/tokens/_contrast.scss +94 -0
- package/src/sass/tokens/_elevation.scss +16 -0
- package/src/sass/tokens/_index.scss +5 -0
- package/src/sass/tokens/_motion.scss +109 -0
- package/src/sass/tokens/_reference.scss +72 -141
- package/src/sass/tokens/_shape.scss +38 -0
- package/src/sass/tokens/_stacking.scss +27 -0
- package/src/sass/tokens/_state.scss +0 -2
- package/src/sass/tokens/_theme.scss +10 -1
- package/src/sass/tokens/_vibrant.scss +2 -5
- package/src/sass/utilities/_defer-render.scss +17 -0
- package/src/sass/utilities/_helpers.scss +184 -27
- package/src/sass/utilities/_index.scss +1 -0
- package/src/sass/utilities/_scroll-area.scss +0 -2
- package/src/sass/utilities/_spacing.scss +52 -34
- package/src/sass/utilities/_typescale.scss +8 -1
- package/src/sass/utilities/_visibility.scss +46 -77
- package/src/sass/utilities/_z-depth.scss +7 -4
- package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
- package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
- package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
- package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
- package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
- package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
- package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
- package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
- package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
- package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
- package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
- package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
- package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
- package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
- package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
- package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
- package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
- package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
- package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
- package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
- package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
- package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
- package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
- package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
- package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
- package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
- package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
- package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
- package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
- package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
- package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
- package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
- package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
- package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
- package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
- package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
- package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
- package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
- package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
- package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
- package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
- package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
- package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
- package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
- package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
- package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
- package/dist/js/chunks/chunk-UAZSDUVP.mjs +0 -90
- package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
- package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
- package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
- package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
- package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
- package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
- package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
- package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
- package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
- package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
- package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
- package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
- package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
- package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
- package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
- package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
- package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
- package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
- package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
- package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
- package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
- package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
- /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component
|
|
3
|
+
} from "./chunk-EB2V4OKL.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Utils
|
|
6
|
+
} from "./chunk-67UNY7RH.mjs";
|
|
7
|
+
|
|
8
|
+
// src/ts/components/swipeActions.ts
|
|
9
|
+
var _defaults = {
|
|
10
|
+
onToggle: null
|
|
11
|
+
};
|
|
12
|
+
var SLOP = 4;
|
|
13
|
+
var FLICK_VELOCITY = 0.5;
|
|
14
|
+
var FLICK_TIMEOUT = 100;
|
|
15
|
+
var flick = (swipe) => Date.now() - swipe.lastT < FLICK_TIMEOUT ? swipe.velocity * swipe.sign : 0;
|
|
16
|
+
var opensOnRelease = (swipe) => {
|
|
17
|
+
const velocity = flick(swipe);
|
|
18
|
+
if (Math.abs(velocity) > FLICK_VELOCITY) return velocity > 0;
|
|
19
|
+
return swipe.reveal > swipe.width / 2;
|
|
20
|
+
};
|
|
21
|
+
var SwipeActions = class extends Component {
|
|
22
|
+
constructor(el, options) {
|
|
23
|
+
super(el, options);
|
|
24
|
+
/** The open row, if any. */
|
|
25
|
+
this._open = null;
|
|
26
|
+
/** The touch in progress, while it may still become a swipe or is one. */
|
|
27
|
+
this._swipe = null;
|
|
28
|
+
this._onStart = (event) => {
|
|
29
|
+
if (event.touches.length !== 1) {
|
|
30
|
+
this._cancel();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const row = this._rowFor(Utils.eventTarget(event));
|
|
34
|
+
if (!row) return;
|
|
35
|
+
const { clientX: x, clientY: y } = event.touches[0];
|
|
36
|
+
const width = this._width(row);
|
|
37
|
+
const base = row === this._open ? width : 0;
|
|
38
|
+
this._swipe = { row, x, y, sign: this._sign(row), width, base, reveal: base, swiping: false, last: x, lastT: Date.now(), velocity: 0 };
|
|
39
|
+
};
|
|
40
|
+
this._onMove = (event) => {
|
|
41
|
+
const swipe = this._swipe;
|
|
42
|
+
if (!swipe) return;
|
|
43
|
+
const { clientX, clientY } = event.touches[0];
|
|
44
|
+
if (swipe.swiping || this._decide(swipe, clientX - swipe.x, clientY - swipe.y)) this._drag(event, swipe, clientX);
|
|
45
|
+
};
|
|
46
|
+
this._onEnd = () => {
|
|
47
|
+
const swipe = this._swipe;
|
|
48
|
+
this._swipe = null;
|
|
49
|
+
if (!swipe?.swiping) return;
|
|
50
|
+
swipe.row.classList.remove("swiping");
|
|
51
|
+
this._settle(swipe.row, opensOnRelease(swipe));
|
|
52
|
+
};
|
|
53
|
+
this._onCancel = () => this._cancel();
|
|
54
|
+
this._onClick = (event) => {
|
|
55
|
+
const target = Utils.eventTarget(event);
|
|
56
|
+
if (target.closest(".swipe-actions button")) this._closeFrom(target.closest("li"));
|
|
57
|
+
else if (target.closest("[data-swipe-toggle]")) this._toggle(this._rowFor(target));
|
|
58
|
+
};
|
|
59
|
+
this._onKeydown = (event) => {
|
|
60
|
+
if (event.key !== "Escape") return;
|
|
61
|
+
this._closeFrom(this._rowFor(Utils.eventTarget(event)));
|
|
62
|
+
};
|
|
63
|
+
/** Focus on an action opens its row; focus anywhere outside the open row closes it. */
|
|
64
|
+
this._onFocusin = (event) => {
|
|
65
|
+
const target = Utils.eventTarget(event);
|
|
66
|
+
if (target?.closest(".swipe-actions")) this.open(this._rowFor(target));
|
|
67
|
+
else this._closeOutside(target);
|
|
68
|
+
};
|
|
69
|
+
/** A tap or click outside the open row closes it. */
|
|
70
|
+
this._onPointerdown = (event) => this._closeOutside(Utils.eventTarget(event));
|
|
71
|
+
this._rows().forEach((row) => this._toggleFor(row)?.setAttribute("aria-expanded", "false"));
|
|
72
|
+
const signal = this._events.signal;
|
|
73
|
+
const doc = el.ownerDocument;
|
|
74
|
+
el.addEventListener("click", this._onClick, { signal });
|
|
75
|
+
el.addEventListener("keydown", this._onKeydown, { signal });
|
|
76
|
+
el.addEventListener("touchstart", this._onStart, { passive: true, signal });
|
|
77
|
+
el.addEventListener("touchmove", this._onMove, { passive: false, signal });
|
|
78
|
+
el.addEventListener("touchcancel", this._onCancel, { signal });
|
|
79
|
+
el.addEventListener("touchend", this._onEnd, { signal });
|
|
80
|
+
doc.addEventListener("focusin", this._onFocusin, { signal });
|
|
81
|
+
doc.addEventListener("pointerdown", this._onPointerdown, { signal });
|
|
82
|
+
}
|
|
83
|
+
static get defaults() {
|
|
84
|
+
return _defaults;
|
|
85
|
+
}
|
|
86
|
+
/** Opens a row of this list, closing the one that was open. */
|
|
87
|
+
open(row) {
|
|
88
|
+
if (!this._isRow(row)) return;
|
|
89
|
+
this._place(row, this._width(row));
|
|
90
|
+
if (this._open === row) return;
|
|
91
|
+
this.close();
|
|
92
|
+
this._open = row;
|
|
93
|
+
row.classList.add("swipe-open");
|
|
94
|
+
this._toggleFor(row)?.setAttribute("aria-expanded", "true");
|
|
95
|
+
this._fire(row, true);
|
|
96
|
+
}
|
|
97
|
+
/** Closes the open row, if there is one. */
|
|
98
|
+
close() {
|
|
99
|
+
const row = this._open;
|
|
100
|
+
if (!row) return;
|
|
101
|
+
this._open = null;
|
|
102
|
+
this._shut(row);
|
|
103
|
+
this._fire(row, false);
|
|
104
|
+
}
|
|
105
|
+
destroy() {
|
|
106
|
+
const rows = [this._swipe?.row, this._open];
|
|
107
|
+
this._swipe = null;
|
|
108
|
+
this._open = null;
|
|
109
|
+
rows.forEach((row) => row && this._shut(row));
|
|
110
|
+
this._rows().forEach((row) => this._toggleFor(row)?.removeAttribute("aria-expanded"));
|
|
111
|
+
super.destroy();
|
|
112
|
+
}
|
|
113
|
+
_rows() {
|
|
114
|
+
return [...this.el.querySelectorAll(":scope > li:has(> .swipe-actions)")];
|
|
115
|
+
}
|
|
116
|
+
/** Whether `row` is a row of this list with actions. */
|
|
117
|
+
_isRow(row) {
|
|
118
|
+
return !!row && row.parentElement === this.el && !!row.querySelector(":scope > .swipe-actions");
|
|
119
|
+
}
|
|
120
|
+
_rowFor(target) {
|
|
121
|
+
const row = target?.closest("li") ?? null;
|
|
122
|
+
return this._isRow(row) ? row : null;
|
|
123
|
+
}
|
|
124
|
+
_toggleFor(row) {
|
|
125
|
+
return row.querySelector("[data-swipe-toggle]");
|
|
126
|
+
}
|
|
127
|
+
_width(row) {
|
|
128
|
+
return row.querySelector(":scope > .swipe-actions").offsetWidth;
|
|
129
|
+
}
|
|
130
|
+
/** -1 when rows open toward the left, 1 when they open toward the right. */
|
|
131
|
+
_sign(row) {
|
|
132
|
+
return getComputedStyle(row).direction === "rtl" ? 1 : -1;
|
|
133
|
+
}
|
|
134
|
+
/** Slides a row `reveal` pixels open. */
|
|
135
|
+
_place(row, reveal) {
|
|
136
|
+
row.style.setProperty("--swipe-offset", `${reveal * this._sign(row)}px`);
|
|
137
|
+
}
|
|
138
|
+
/** Puts a row back closed, without telling anyone. */
|
|
139
|
+
_shut(row) {
|
|
140
|
+
row.classList.remove("swipe-open", "swiping");
|
|
141
|
+
row.style.removeProperty("--swipe-offset");
|
|
142
|
+
this._toggleFor(row)?.setAttribute("aria-expanded", "false");
|
|
143
|
+
}
|
|
144
|
+
_fire(row, open) {
|
|
145
|
+
const detail = { row, open };
|
|
146
|
+
this._notify("swipetoggle", this.options.onToggle, { args: [detail], detail });
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Swipes once the finger moves sideways, or leaves the touch to scrolling
|
|
150
|
+
* when it moves up or down first. Returns whether it is now a swipe.
|
|
151
|
+
*/
|
|
152
|
+
_decide(swipe, dx, dy) {
|
|
153
|
+
if (Math.max(Math.abs(dx), Math.abs(dy)) <= SLOP) return false;
|
|
154
|
+
swipe.swiping = Math.abs(dx) > Math.abs(dy);
|
|
155
|
+
if (!swipe.swiping) this._swipe = null;
|
|
156
|
+
return swipe.swiping;
|
|
157
|
+
}
|
|
158
|
+
/** Slides the row with the finger, no farther than its actions reach. */
|
|
159
|
+
_drag(event, swipe, x) {
|
|
160
|
+
if (event.cancelable) event.preventDefault();
|
|
161
|
+
const now = Date.now();
|
|
162
|
+
if (x !== swipe.last) {
|
|
163
|
+
swipe.velocity = (x - swipe.last) / Math.max(1, now - swipe.lastT);
|
|
164
|
+
swipe.last = x;
|
|
165
|
+
swipe.lastT = now;
|
|
166
|
+
}
|
|
167
|
+
swipe.reveal = Math.min(Math.max(swipe.base + (x - swipe.x) * swipe.sign, 0), swipe.width);
|
|
168
|
+
swipe.row.classList.add("swiping");
|
|
169
|
+
this._place(swipe.row, swipe.reveal);
|
|
170
|
+
}
|
|
171
|
+
/** Leaves a released row open or closed, putting its offset where that state has it. */
|
|
172
|
+
_settle(row, open) {
|
|
173
|
+
if (open) this.open(row);
|
|
174
|
+
else if (row === this._open) this.close();
|
|
175
|
+
else this._shut(row);
|
|
176
|
+
}
|
|
177
|
+
/** Ends a swipe without deciding anything: the row goes back to how it was. */
|
|
178
|
+
_cancel() {
|
|
179
|
+
const swipe = this._swipe;
|
|
180
|
+
this._swipe = null;
|
|
181
|
+
if (!swipe?.swiping) return;
|
|
182
|
+
swipe.row.classList.remove("swiping");
|
|
183
|
+
this._settle(swipe.row, swipe.row === this._open);
|
|
184
|
+
}
|
|
185
|
+
/** open() ignores anything that is not a row of this list. */
|
|
186
|
+
_toggle(row) {
|
|
187
|
+
if (row === this._open) this.close();
|
|
188
|
+
else this.open(row);
|
|
189
|
+
}
|
|
190
|
+
/** Closes the open row from inside it, moving focus off an action so it does not stay on a hidden button. */
|
|
191
|
+
_closeFrom(row) {
|
|
192
|
+
if (!row || row !== this._open) return;
|
|
193
|
+
const focused = row.querySelector(":scope > .swipe-actions").contains(row.ownerDocument.activeElement);
|
|
194
|
+
this.close();
|
|
195
|
+
if (focused) this._focusToggle(row);
|
|
196
|
+
}
|
|
197
|
+
_focusToggle(row) {
|
|
198
|
+
this._toggleFor(row)?.focus();
|
|
199
|
+
}
|
|
200
|
+
_closeOutside(target) {
|
|
201
|
+
if (this._open && !this._open.contains(target)) this.close();
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
SwipeActions.key = "Expressive_SwipeActions";
|
|
205
|
+
|
|
206
|
+
export {
|
|
207
|
+
SwipeActions
|
|
208
|
+
};
|
|
209
|
+
//# sourceMappingURL=chunk-3KF65KGL.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ts/components/swipeActions.ts"],
|
|
4
|
+
"sourcesContent": ["import { Component, BaseOptions } from '../core/component';\nimport { Utils } from '../core/utils';\n\n/** What `expressive:swipetoggle` carries, and what `onToggle` receives. */\nexport interface SwipeActionsDetail {\n /** The row that opened or closed. */\n row: HTMLElement;\n /** Whether it is now open. */\n open: boolean;\n}\n\nexport interface SwipeActionsOptions extends BaseOptions {\n /**\n * Called when a row opens or closes, with the event's detail.\n * @default null\n */\n onToggle: ((detail: SwipeActionsDetail) => void) | null;\n}\n\nconst _defaults: SwipeActionsOptions = {\n onToggle: null\n};\n\n/** Past this the finger was moving, not resting. Hand jitter, in pixels. */\nconst SLOP = 4;\n/** Past this a flick opens or closes whatever the distance, in pixels per millisecond. The sheets use the same. */\nconst FLICK_VELOCITY = 0.5;\n/** Ignore a flick after the finger has rested for this many milliseconds. */\nconst FLICK_TIMEOUT = 100;\n\n/** One touch on a row, from the finger going down until it lifts. */\ninterface Swipe {\n row: HTMLElement;\n x: number;\n y: number;\n /** -1 when the row opens toward the left, 1 toward the right (right-to-left pages). */\n sign: 1 | -1;\n /** How far the actions reach, which is as far as the row slides. */\n width: number;\n /** How far open the row was when the finger went down, 0 to `width`. */\n base: number;\n /** How far open it is now. */\n reveal: number;\n /** Set once the finger moves sideways first; until then the touch may still scroll. */\n swiping: boolean;\n last: number;\n lastT: number;\n velocity: number;\n}\n\n/** The pointer's velocity toward opening at release, or 0 once it has rested past the flick window. */\nconst flick = (swipe: Swipe) => (Date.now() - swipe.lastT < FLICK_TIMEOUT ? swipe.velocity * swipe.sign : 0);\n\n/** Whether a released swipe leaves the row open: a flick decides, else whether it is past halfway. */\nconst opensOnRelease = (swipe: Swipe) => {\n const velocity = flick(swipe);\n if (Math.abs(velocity) > FLICK_VELOCITY) return velocity > 0;\n return swipe.reveal > swipe.width / 2;\n};\n\n/**\n * Swipe actions. In a `.list.swipeable`, a touch swipe toward a row's inline\n * start slides the row and reveals its `.swipe-actions` group at the inline\n * end. A swipe only reveals; nothing runs until a person presses an action.\n * The row's `[data-swipe-toggle]` button opens and closes it without a\n * swipe, and focus on an action opens its row, so keyboard and single-pointer\n * users reach the same actions. One row in the list is open at a time.\n *\n * Touch events rather than pointer events, as in PullToRefresh: a pointer\n * drag the browser takes for a pan ends in `pointercancel`. A mouse never\n * fires touch events, so it never swipes.\n */\nexport class SwipeActions extends Component<SwipeActionsOptions> {\n static key = 'Expressive_SwipeActions';\n /** The open row, if any. */\n private _open: HTMLElement | null = null;\n /** The touch in progress, while it may still become a swipe or is one. */\n private _swipe: Swipe | null = null;\n\n constructor(el: HTMLElement, options: Partial<SwipeActionsOptions>) {\n super(el, options);\n this._rows().forEach((row) => this._toggleFor(row)?.setAttribute('aria-expanded', 'false'));\n const signal = this._events.signal;\n const doc = el.ownerDocument;\n el.addEventListener('click', this._onClick, { signal });\n el.addEventListener('keydown', this._onKeydown, { signal });\n el.addEventListener('touchstart', this._onStart, { passive: true, signal });\n // Not passive: a swipe cancels the move so nothing scrolls sideways under it.\n el.addEventListener('touchmove', this._onMove, { passive: false, signal });\n el.addEventListener('touchcancel', this._onCancel, { signal });\n el.addEventListener('touchend', this._onEnd, { signal });\n doc.addEventListener('focusin', this._onFocusin, { signal });\n doc.addEventListener('pointerdown', this._onPointerdown, { signal });\n }\n\n static get defaults(): SwipeActionsOptions {\n return _defaults;\n }\n\n /** Opens a row of this list, closing the one that was open. */\n open(row: HTMLElement) {\n if (!this._isRow(row)) return;\n // Also puts back a row a swipe left part-way open.\n this._place(row, this._width(row));\n if (this._open === row) return;\n this.close();\n this._open = row;\n row.classList.add('swipe-open');\n this._toggleFor(row)?.setAttribute('aria-expanded', 'true');\n this._fire(row, true);\n }\n\n /** Closes the open row, if there is one. */\n close() {\n const row = this._open;\n if (!row) return;\n this._open = null;\n this._shut(row);\n this._fire(row, false);\n }\n\n destroy() {\n // A row part-way through a swipe goes back too, not only the open one.\n const rows = [this._swipe?.row, this._open];\n this._swipe = null;\n this._open = null;\n rows.forEach((row) => row && this._shut(row));\n this._rows().forEach((row) => this._toggleFor(row)?.removeAttribute('aria-expanded'));\n super.destroy();\n }\n\n private _rows() {\n return [...this.el.querySelectorAll<HTMLElement>(':scope > li:has(> .swipe-actions)')];\n }\n\n /** Whether `row` is a row of this list with actions. */\n private _isRow(row: Element | null): row is HTMLElement {\n return !!row && row.parentElement === this.el && !!row.querySelector(':scope > .swipe-actions');\n }\n\n private _rowFor(target: Element | null) {\n const row = target?.closest('li') ?? null;\n return this._isRow(row) ? row : null;\n }\n\n private _toggleFor(row: HTMLElement) {\n return row.querySelector<HTMLElement>('[data-swipe-toggle]');\n }\n\n private _width(row: HTMLElement) {\n return row.querySelector<HTMLElement>(':scope > .swipe-actions')!.offsetWidth;\n }\n\n /** -1 when rows open toward the left, 1 when they open toward the right. */\n private _sign(row: HTMLElement): 1 | -1 {\n return getComputedStyle(row).direction === 'rtl' ? 1 : -1;\n }\n\n /** Slides a row `reveal` pixels open. */\n private _place(row: HTMLElement, reveal: number) {\n row.style.setProperty('--swipe-offset', `${reveal * this._sign(row)}px`);\n }\n\n /** Puts a row back closed, without telling anyone. */\n private _shut(row: HTMLElement) {\n row.classList.remove('swipe-open', 'swiping');\n row.style.removeProperty('--swipe-offset');\n this._toggleFor(row)?.setAttribute('aria-expanded', 'false');\n }\n\n private _fire(row: HTMLElement, open: boolean) {\n const detail: SwipeActionsDetail = { row, open };\n this._notify('swipetoggle', this.options.onToggle, { args: [detail], detail });\n }\n\n private _onStart = (event: TouchEvent) => {\n // A second finger is a pinch or a mistake, not a swipe.\n if (event.touches.length !== 1) {\n this._cancel();\n return;\n }\n const row = this._rowFor(Utils.eventTarget(event));\n if (!row) return;\n const { clientX: x, clientY: y } = event.touches[0];\n const width = this._width(row);\n const base = row === this._open ? width : 0;\n this._swipe = { row, x, y, sign: this._sign(row), width, base, reveal: base, swiping: false, last: x, lastT: Date.now(), velocity: 0 };\n };\n\n private _onMove = (event: TouchEvent) => {\n const swipe = this._swipe;\n if (!swipe) return;\n const { clientX, clientY } = event.touches[0];\n if (swipe.swiping || this._decide(swipe, clientX - swipe.x, clientY - swipe.y)) this._drag(event, swipe, clientX);\n };\n\n /**\n * Swipes once the finger moves sideways, or leaves the touch to scrolling\n * when it moves up or down first. Returns whether it is now a swipe.\n */\n private _decide(swipe: Swipe, dx: number, dy: number) {\n if (Math.max(Math.abs(dx), Math.abs(dy)) <= SLOP) return false;\n swipe.swiping = Math.abs(dx) > Math.abs(dy);\n if (!swipe.swiping) this._swipe = null;\n return swipe.swiping;\n }\n\n /** Slides the row with the finger, no farther than its actions reach. */\n private _drag(event: TouchEvent, swipe: Swipe, x: number) {\n if (event.cancelable) event.preventDefault();\n const now = Date.now();\n if (x !== swipe.last) {\n swipe.velocity = (x - swipe.last) / Math.max(1, now - swipe.lastT);\n swipe.last = x;\n swipe.lastT = now;\n }\n swipe.reveal = Math.min(Math.max(swipe.base + (x - swipe.x) * swipe.sign, 0), swipe.width);\n swipe.row.classList.add('swiping');\n this._place(swipe.row, swipe.reveal);\n }\n\n private _onEnd = () => {\n const swipe = this._swipe;\n this._swipe = null;\n if (!swipe?.swiping) return;\n swipe.row.classList.remove('swiping');\n this._settle(swipe.row, opensOnRelease(swipe));\n };\n\n /** Leaves a released row open or closed, putting its offset where that state has it. */\n private _settle(row: HTMLElement, open: boolean) {\n if (open) this.open(row);\n else if (row === this._open) this.close();\n else this._shut(row);\n }\n\n private _onCancel = () => this._cancel();\n\n /** Ends a swipe without deciding anything: the row goes back to how it was. */\n private _cancel() {\n const swipe = this._swipe;\n this._swipe = null;\n if (!swipe?.swiping) return;\n swipe.row.classList.remove('swiping');\n this._settle(swipe.row, swipe.row === this._open);\n }\n\n private _onClick = (event: MouseEvent) => {\n const target = Utils.eventTarget(event)!;\n // Not _rowFor(): an action may already have removed its row from the list.\n if (target.closest('.swipe-actions button')) this._closeFrom(target.closest('li'));\n else if (target.closest('[data-swipe-toggle]')) this._toggle(this._rowFor(target));\n };\n\n /** open() ignores anything that is not a row of this list. */\n private _toggle(row: HTMLElement | null) {\n if (row === this._open) this.close();\n else this.open(row as HTMLElement);\n }\n\n /** Closes the open row from inside it, moving focus off an action so it does not stay on a hidden button. */\n private _closeFrom(row: HTMLElement | null) {\n if (!row || row !== this._open) return;\n // A row an action removed holds no focus, so it is left alone.\n const focused = row.querySelector(':scope > .swipe-actions')!.contains(row.ownerDocument.activeElement);\n this.close();\n if (focused) this._focusToggle(row);\n }\n\n private _focusToggle(row: HTMLElement) {\n this._toggleFor(row)?.focus();\n }\n\n private _onKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n this._closeFrom(this._rowFor(Utils.eventTarget(event)));\n };\n\n /** Focus on an action opens its row; focus anywhere outside the open row closes it. */\n private _onFocusin = (event: FocusEvent) => {\n const target = Utils.eventTarget(event);\n // open() ignores anything that is not a row of this list.\n if (target?.closest('.swipe-actions')) this.open(this._rowFor(target)!);\n else this._closeOutside(target);\n };\n\n /** A tap or click outside the open row closes it. */\n private _onPointerdown = (event: PointerEvent) => this._closeOutside(Utils.eventTarget(event));\n\n private _closeOutside(target: Element | null) {\n if (this._open && !this._open.contains(target)) this.close();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Utils
|
|
3
|
-
} from "./chunk-M372EDXD.mjs";
|
|
4
1
|
import {
|
|
5
2
|
Component
|
|
6
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EB2V4OKL.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Utils,
|
|
6
|
+
restoreAttribute
|
|
7
|
+
} from "./chunk-67UNY7RH.mjs";
|
|
7
8
|
|
|
8
9
|
// src/ts/components/carousel.ts
|
|
9
10
|
var _defaults = {
|
|
10
11
|
duration: 200,
|
|
11
|
-
fullWidth: false,
|
|
12
12
|
indicators: false,
|
|
13
13
|
noWrap: false,
|
|
14
14
|
interval: 0,
|
|
@@ -23,9 +23,9 @@ var _defaults = {
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
var naturallyFocusable = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
26
|
-
var
|
|
26
|
+
var Carousel = class extends Component {
|
|
27
27
|
constructor(el, options) {
|
|
28
|
-
super(el, options
|
|
28
|
+
super(el, options);
|
|
29
29
|
this.center = 0;
|
|
30
30
|
this._ownIndicators = false;
|
|
31
31
|
this._trackEl = null;
|
|
@@ -36,7 +36,6 @@ var _Carousel = class _Carousel extends Component {
|
|
|
36
36
|
this._vertical = false;
|
|
37
37
|
this._resizeObserver = null;
|
|
38
38
|
this._resizeTimeout = null;
|
|
39
|
-
this._usesWindowResize = false;
|
|
40
39
|
this._dragPointerId = null;
|
|
41
40
|
this._dragStartX = 0;
|
|
42
41
|
this._dragStartY = 0;
|
|
@@ -72,10 +71,16 @@ var _Carousel = class _Carousel extends Component {
|
|
|
72
71
|
this._handleAutoAdvanceState = (e) => {
|
|
73
72
|
if (e.type === "mouseenter") this._hovered = true;
|
|
74
73
|
else if (e.type === "mouseleave") this._hovered = false;
|
|
75
|
-
else if (e.type === "focusin") this._focused =
|
|
74
|
+
else if (e.type === "focusin") this._focused = Utils.eventTarget(e).matches(":focus-visible");
|
|
76
75
|
else if (e.type === "focusout") this._focused = this.el.contains(e.relatedTarget);
|
|
77
76
|
this._syncAutoAdvance();
|
|
78
77
|
};
|
|
78
|
+
// A key pressed in here means keyboard use, with no new focus event when the
|
|
79
|
+
// focus began with a mouse click or moves within a shadow root.
|
|
80
|
+
this._handleAutoAdvanceKey = () => {
|
|
81
|
+
this._focused = true;
|
|
82
|
+
this._syncAutoAdvance();
|
|
83
|
+
};
|
|
79
84
|
this._handleMotionChange = () => {
|
|
80
85
|
this._syncAutoAdvance();
|
|
81
86
|
if (this._motion.matches) this._scrollToIndex(this.center, false);
|
|
@@ -151,6 +156,7 @@ var _Carousel = class _Carousel extends Component {
|
|
|
151
156
|
this._suppressClick = false;
|
|
152
157
|
}, 0);
|
|
153
158
|
this._syncActive(this._nearestIndex(), true);
|
|
159
|
+
this.dragged = false;
|
|
154
160
|
};
|
|
155
161
|
this._handleTrackClick = (e) => {
|
|
156
162
|
if (!this._suppressClick) return;
|
|
@@ -175,11 +181,10 @@ var _Carousel = class _Carousel extends Component {
|
|
|
175
181
|
this._cycleTo(index);
|
|
176
182
|
};
|
|
177
183
|
this._handleKeydown = (e) => {
|
|
178
|
-
|
|
179
|
-
if (target.isContentEditable || target.closest("input, textarea, select")) return;
|
|
184
|
+
if (this._keyBelongsElsewhere(e)) return;
|
|
180
185
|
const rtl = getComputedStyle(this._scroller).direction === "rtl";
|
|
181
|
-
const forward = this._vertical ? e.key === "ArrowDown" : e.key === (rtl ?
|
|
182
|
-
const backward = this._vertical ? e.key === "ArrowUp" : e.key === (rtl ?
|
|
186
|
+
const forward = this._vertical ? e.key === "ArrowDown" : e.key === (rtl ? "ArrowLeft" : "ArrowRight");
|
|
187
|
+
const backward = this._vertical ? e.key === "ArrowUp" : e.key === (rtl ? "ArrowRight" : "ArrowLeft");
|
|
183
188
|
if (e.key === "Home") {
|
|
184
189
|
e.preventDefault();
|
|
185
190
|
this.set(0);
|
|
@@ -228,18 +233,6 @@ var _Carousel = class _Carousel extends Component {
|
|
|
228
233
|
this._finishScroll();
|
|
229
234
|
}
|
|
230
235
|
};
|
|
231
|
-
this.el["Expressive_Carousel"] = this;
|
|
232
|
-
this.options = {
|
|
233
|
-
..._Carousel.defaults,
|
|
234
|
-
...options
|
|
235
|
-
};
|
|
236
|
-
if (options?.i18n) {
|
|
237
|
-
this.options.i18n = { ..._Carousel.defaults.i18n, ...options.i18n };
|
|
238
|
-
}
|
|
239
|
-
if (this.options.fullWidth || this.el.classList.contains("flat")) {
|
|
240
|
-
this.el.classList.add("flat");
|
|
241
|
-
this.options.fullWidth = true;
|
|
242
|
-
}
|
|
243
236
|
this._vertical = this.el.classList.contains("full-screen");
|
|
244
237
|
this.pressed = false;
|
|
245
238
|
this.dragged = false;
|
|
@@ -251,7 +244,9 @@ var _Carousel = class _Carousel extends Component {
|
|
|
251
244
|
this.images.forEach((item) => {
|
|
252
245
|
this._itemA11yOriginal.set(item, {
|
|
253
246
|
ariaHidden: item.getAttribute("aria-hidden"),
|
|
254
|
-
tabIndex: item.getAttribute("tabindex")
|
|
247
|
+
tabIndex: item.getAttribute("tabindex"),
|
|
248
|
+
active: item.classList.contains("active"),
|
|
249
|
+
itemClass: item.classList.contains("carousel-item")
|
|
255
250
|
});
|
|
256
251
|
if (item.hasAttribute("data-carousel-size")) this._authoredItemSizes.add(item);
|
|
257
252
|
});
|
|
@@ -288,15 +283,9 @@ var _Carousel = class _Carousel extends Component {
|
|
|
288
283
|
static get defaults() {
|
|
289
284
|
return _defaults;
|
|
290
285
|
}
|
|
291
|
-
static init(els, options = {}) {
|
|
292
|
-
return super.init(els, options, _Carousel);
|
|
293
|
-
}
|
|
294
|
-
static getInstance(el) {
|
|
295
|
-
return el["Expressive_Carousel"];
|
|
296
|
-
}
|
|
297
286
|
destroy() {
|
|
298
287
|
if (this._started) this._teardown();
|
|
299
|
-
|
|
288
|
+
super.destroy();
|
|
300
289
|
}
|
|
301
290
|
_collectItems() {
|
|
302
291
|
const explicit = Array.from(this.el.children).filter(
|
|
@@ -305,7 +294,7 @@ var _Carousel = class _Carousel extends Component {
|
|
|
305
294
|
if (explicit.length) return explicit;
|
|
306
295
|
return Array.from(this.el.children).filter((el) => {
|
|
307
296
|
if (!(el instanceof HTMLElement)) return false;
|
|
308
|
-
if (el.classList.contains("indicators")
|
|
297
|
+
if (el.classList.contains("indicators")) {
|
|
309
298
|
return false;
|
|
310
299
|
}
|
|
311
300
|
return el.tagName !== "NAV";
|
|
@@ -360,75 +349,39 @@ var _Carousel = class _Carousel extends Component {
|
|
|
360
349
|
this._indicators.appendChild(button);
|
|
361
350
|
});
|
|
362
351
|
if (this._ownIndicators) this.el.appendChild(this._indicators);
|
|
363
|
-
this.el.querySelector(".carousel-fixed-item")?.classList.add("with-indicators");
|
|
364
352
|
}
|
|
365
353
|
_setupEventHandlers() {
|
|
366
|
-
|
|
367
|
-
this.
|
|
354
|
+
const { signal } = this._events;
|
|
355
|
+
this.el.addEventListener("keydown", this._handleKeydown, { signal });
|
|
356
|
+
this._motion.addEventListener("change", this._handleMotionChange, { signal });
|
|
368
357
|
if (this._autoAdvances) {
|
|
369
|
-
this.el.addEventListener("mouseenter", this._handleAutoAdvanceState);
|
|
370
|
-
this.el.addEventListener("mouseleave", this._handleAutoAdvanceState);
|
|
371
|
-
this.el.addEventListener("focusin", this._handleAutoAdvanceState);
|
|
372
|
-
this.el.addEventListener("focusout", this._handleAutoAdvanceState);
|
|
373
|
-
|
|
358
|
+
this.el.addEventListener("mouseenter", this._handleAutoAdvanceState, { signal });
|
|
359
|
+
this.el.addEventListener("mouseleave", this._handleAutoAdvanceState, { signal });
|
|
360
|
+
this.el.addEventListener("focusin", this._handleAutoAdvanceState, { signal });
|
|
361
|
+
this.el.addEventListener("focusout", this._handleAutoAdvanceState, { signal });
|
|
362
|
+
this.el.addEventListener("keydown", this._handleAutoAdvanceKey, { signal });
|
|
363
|
+
document.addEventListener("visibilitychange", this._handleAutoAdvanceState, { signal });
|
|
374
364
|
}
|
|
375
365
|
if (this.showIndicators && this._indicators) {
|
|
376
|
-
this._indicators.addEventListener("click", this._handleIndicatorClick);
|
|
377
|
-
}
|
|
378
|
-
if (typeof ResizeObserver !== "undefined") {
|
|
379
|
-
this._resizeObserver = new ResizeObserver(() => this._handleThrottledResize());
|
|
380
|
-
this._resizeObserver.observe(this.el);
|
|
381
|
-
}
|
|
382
|
-
this._usesWindowResize = !this._resizeObserver || this.el.classList.contains("full-screen");
|
|
383
|
-
if (this._usesWindowResize) {
|
|
384
|
-
_Carousel._live.add(this);
|
|
385
|
-
if (!_Carousel._resizeListening) {
|
|
386
|
-
window.addEventListener("resize", _Carousel._onResize, {
|
|
387
|
-
passive: true
|
|
388
|
-
});
|
|
389
|
-
_Carousel._resizeListening = true;
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
this._scroller.addEventListener("scroll", this._handleTrackScroll, {
|
|
393
|
-
passive: true
|
|
394
|
-
});
|
|
395
|
-
this._scroller.addEventListener("pointerdown", this._handleTrackPointerDown);
|
|
396
|
-
this._scroller.addEventListener("wheel", this._handleNativeScroll, { passive: true });
|
|
397
|
-
this._scroller.addEventListener("click", this._handleTrackClick, true);
|
|
398
|
-
this._scroller.addEventListener("dragstart", this._handleTrackDragStart);
|
|
399
|
-
this._scroller.addEventListener("transitionend", this._handleItemResize);
|
|
400
|
-
}
|
|
401
|
-
_removeEventHandlers() {
|
|
402
|
-
this.el.removeEventListener("keydown", this._handleKeydown);
|
|
403
|
-
this._motion.removeEventListener("change", this._handleMotionChange);
|
|
404
|
-
this.el.removeEventListener("mouseenter", this._handleAutoAdvanceState);
|
|
405
|
-
this.el.removeEventListener("mouseleave", this._handleAutoAdvanceState);
|
|
406
|
-
this.el.removeEventListener("focusin", this._handleAutoAdvanceState);
|
|
407
|
-
this.el.removeEventListener("focusout", this._handleAutoAdvanceState);
|
|
408
|
-
document.removeEventListener("visibilitychange", this._handleAutoAdvanceState);
|
|
409
|
-
if (this._indicators) {
|
|
410
|
-
this._indicators.removeEventListener("click", this._handleIndicatorClick);
|
|
366
|
+
this._indicators.addEventListener("click", this._handleIndicatorClick, { signal });
|
|
411
367
|
}
|
|
412
|
-
this.
|
|
413
|
-
this.
|
|
414
|
-
this.
|
|
415
|
-
|
|
416
|
-
this._scroller.removeEventListener("click", this._handleTrackClick, true);
|
|
417
|
-
this._scroller.removeEventListener("dragstart", this._handleTrackDragStart);
|
|
418
|
-
this._scroller.removeEventListener("transitionend", this._handleItemResize);
|
|
419
|
-
this._resizeObserver?.disconnect();
|
|
420
|
-
this._resizeObserver = null;
|
|
421
|
-
if (this._usesWindowResize) {
|
|
422
|
-
_Carousel._live.delete(this);
|
|
423
|
-
if (_Carousel._live.size === 0 && _Carousel._resizeListening) {
|
|
424
|
-
window.removeEventListener("resize", _Carousel._onResize);
|
|
425
|
-
_Carousel._resizeListening = false;
|
|
426
|
-
}
|
|
368
|
+
this._resizeObserver = new ResizeObserver(() => this._handleThrottledResize());
|
|
369
|
+
this._resizeObserver.observe(this.el);
|
|
370
|
+
if (this.el.classList.contains("full-screen")) {
|
|
371
|
+
window.addEventListener("resize", this._handleThrottledResize, { passive: true, signal });
|
|
427
372
|
}
|
|
373
|
+
this._scroller.addEventListener("scroll", this._handleTrackScroll, { passive: true, signal });
|
|
374
|
+
this._scroller.addEventListener("pointerdown", this._handleTrackPointerDown, { signal });
|
|
375
|
+
this._scroller.addEventListener("wheel", this._handleNativeScroll, { passive: true, signal });
|
|
376
|
+
this._scroller.addEventListener("click", this._handleTrackClick, { capture: true, signal });
|
|
377
|
+
this._scroller.addEventListener("dragstart", this._handleTrackDragStart, { signal });
|
|
378
|
+
this._scroller.addEventListener("transitionend", this._handleItemResize, { signal });
|
|
428
379
|
}
|
|
429
380
|
_teardown() {
|
|
430
381
|
this._started = false;
|
|
431
|
-
this.
|
|
382
|
+
this._events.abort();
|
|
383
|
+
this._resizeObserver?.disconnect();
|
|
384
|
+
this._resizeObserver = null;
|
|
432
385
|
this._finishScroll();
|
|
433
386
|
this._autoAdvances = false;
|
|
434
387
|
this._syncAutoAdvance();
|
|
@@ -443,12 +396,9 @@ var _Carousel = class _Carousel extends Component {
|
|
|
443
396
|
if (this._generatedItemLabels.has(el)) el.removeAttribute("aria-label");
|
|
444
397
|
if (this._generatedItemDescriptions.has(el)) el.removeAttribute("aria-roledescription");
|
|
445
398
|
if (this._generatedItemSizes.has(el)) el.removeAttribute("data-carousel-size");
|
|
446
|
-
|
|
447
|
-
if (original?.ariaHidden === null) el.removeAttribute("aria-hidden");
|
|
448
|
-
else if (original) el.setAttribute("aria-hidden", original.ariaHidden);
|
|
449
|
-
if (original?.tabIndex === null) el.removeAttribute("tabindex");
|
|
450
|
-
else if (original) el.setAttribute("tabindex", original.tabIndex);
|
|
399
|
+
this._restoreItemState(el);
|
|
451
400
|
});
|
|
401
|
+
this.el.classList.remove("dragging", "scrolling");
|
|
452
402
|
if (this._generatedContainerRole) this.el.removeAttribute("role");
|
|
453
403
|
if (this._generatedContainerLabel) this.el.removeAttribute("aria-label");
|
|
454
404
|
if (this._generatedContainerDescription) this.el.removeAttribute("aria-roledescription");
|
|
@@ -466,6 +416,19 @@ var _Carousel = class _Carousel extends Component {
|
|
|
466
416
|
);
|
|
467
417
|
}
|
|
468
418
|
}
|
|
419
|
+
/**
|
|
420
|
+
* Puts back an item's accessibility attributes, its authored `active`
|
|
421
|
+
* class and, for an item found without it, the `carousel-item` class. A
|
|
422
|
+
* carousel started again used to begin at the last shown item.
|
|
423
|
+
*/
|
|
424
|
+
_restoreItemState(el) {
|
|
425
|
+
const original = this._itemA11yOriginal.get(el);
|
|
426
|
+
if (!original) return;
|
|
427
|
+
restoreAttribute(el, "aria-hidden", original.ariaHidden);
|
|
428
|
+
restoreAttribute(el, "tabindex", original.tabIndex);
|
|
429
|
+
el.classList.toggle("active", original.active);
|
|
430
|
+
if (!original.itemClass) el.classList.remove("carousel-item");
|
|
431
|
+
}
|
|
469
432
|
/** Start or stop the timer to match the current pause state. */
|
|
470
433
|
_syncAutoAdvance() {
|
|
471
434
|
const run = this._autoAdvances && !this._autoPaused && !this._hovered && !this._focused && !this._motion.matches && !document.hidden;
|
|
@@ -482,9 +445,21 @@ var _Carousel = class _Carousel extends Component {
|
|
|
482
445
|
/** The document only hears from a carousel while a mouse press is down on its track. */
|
|
483
446
|
_setDragListeners(on) {
|
|
484
447
|
const method = on ? "addEventListener" : "removeEventListener";
|
|
485
|
-
|
|
486
|
-
document[method]("
|
|
487
|
-
document[method]("
|
|
448
|
+
const options = { signal: this._events.signal };
|
|
449
|
+
document[method]("pointermove", this._handleTrackPointerMove, options);
|
|
450
|
+
document[method]("pointerup", this._handleTrackPointerUp, options);
|
|
451
|
+
document[method]("pointercancel", this._handleTrackPointerUp, options);
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Keys the carousel leaves alone. Modified keys are shortcuts (Alt+Left is
|
|
455
|
+
* Back), and a nested widget that reads arrows itself - a field, a slider,
|
|
456
|
+
* tabs, a menu, media controls - keeps them.
|
|
457
|
+
*/
|
|
458
|
+
_keyBelongsElsewhere(e) {
|
|
459
|
+
const target = e.target;
|
|
460
|
+
return [e.defaultPrevented, e.altKey, e.ctrlKey, e.metaKey, e.shiftKey, target.isContentEditable].some(Boolean) || this.el.contains(target.closest(
|
|
461
|
+
'input, textarea, select, video[controls], audio[controls], [role="slider"], [role="tablist"], [role="menu"]'
|
|
462
|
+
));
|
|
488
463
|
}
|
|
489
464
|
_paintIndicators(center) {
|
|
490
465
|
if (!this.showIndicators || !this._indicators) return;
|
|
@@ -496,6 +471,7 @@ var _Carousel = class _Carousel extends Component {
|
|
|
496
471
|
else el.removeAttribute("aria-current");
|
|
497
472
|
});
|
|
498
473
|
}
|
|
474
|
+
/** Whether `index` is still the active item once its change is reported. */
|
|
499
475
|
_syncActive(index, dragged) {
|
|
500
476
|
const prev = this.center;
|
|
501
477
|
this.center = index;
|
|
@@ -503,20 +479,20 @@ var _Carousel = class _Carousel extends Component {
|
|
|
503
479
|
this._paintIndicators(index);
|
|
504
480
|
this._syncLayoutRoles(index);
|
|
505
481
|
const curr = this.images[index];
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
}
|
|
482
|
+
const detail = { item: curr, dragged };
|
|
483
|
+
if (prev !== index && !this._notify("change", this.options.onCycleTo, { args: [curr, dragged], detail, current: () => this.center === index })) return false;
|
|
509
484
|
if (typeof this.oneTimeCallback === "function") {
|
|
510
485
|
this.oneTimeCallback.call(this, curr, dragged);
|
|
511
486
|
this.oneTimeCallback = null;
|
|
512
487
|
}
|
|
488
|
+
return true;
|
|
513
489
|
}
|
|
514
490
|
_syncLayoutRoles(index) {
|
|
515
491
|
const sizes = this.images.map(() => "large");
|
|
516
492
|
const setSize = (i, size) => {
|
|
517
493
|
if (this.images[i]) sizes[i] = size;
|
|
518
494
|
};
|
|
519
|
-
if (this.el.classList.contains("
|
|
495
|
+
if (this.el.classList.contains("uncontained") || this.el.classList.contains("full-screen") && this._vertical) {
|
|
520
496
|
} else if (this.el.classList.contains("hero") || this.el.classList.contains("full-screen-horizontal")) {
|
|
521
497
|
setSize(index + 1, "small");
|
|
522
498
|
if (this.el.classList.contains("center-aligned")) setSize(index - 1, "small");
|
|
@@ -597,18 +573,20 @@ var _Carousel = class _Carousel extends Component {
|
|
|
597
573
|
const padding = parseFloat(this._vertical ? style.paddingBlockStart : style.paddingInlineStart) || 0;
|
|
598
574
|
let best = this.center;
|
|
599
575
|
let bestDist = Infinity;
|
|
576
|
+
let centerDist = Infinity;
|
|
600
577
|
this.images.forEach((el, i) => {
|
|
601
578
|
const start = this._vertical ? el.offsetTop : el.offsetLeft;
|
|
602
579
|
const size = this._vertical ? el.offsetHeight : el.offsetWidth;
|
|
603
580
|
const target = centered ? start - (viewport - size) / 2 : start + (rtl ? size - viewport + padding : -padding);
|
|
604
581
|
const bounded = Math.max(rtl ? -extent : 0, Math.min(rtl ? 0 : extent, target));
|
|
605
582
|
const dist = Math.abs(bounded - position);
|
|
606
|
-
if (
|
|
583
|
+
if (i === this.center) centerDist = dist;
|
|
584
|
+
if (dist < bestDist) {
|
|
607
585
|
bestDist = dist;
|
|
608
586
|
best = i;
|
|
609
587
|
}
|
|
610
588
|
});
|
|
611
|
-
return best;
|
|
589
|
+
return centerDist - bestDist <= 1 ? this.center : best;
|
|
612
590
|
}
|
|
613
591
|
_scrollToIndex(n, smooth = true) {
|
|
614
592
|
const el = this.images[n];
|
|
@@ -633,8 +611,7 @@ var _Carousel = class _Carousel extends Component {
|
|
|
633
611
|
_cycleTo(n, callback = null) {
|
|
634
612
|
this._alignAfterResize = true;
|
|
635
613
|
if (typeof callback === "function") this.oneTimeCallback = callback;
|
|
636
|
-
this._syncActive(n, false);
|
|
637
|
-
this._scrollToIndex(n);
|
|
614
|
+
if (this._syncActive(n, false)) this._scrollToIndex(n);
|
|
638
615
|
}
|
|
639
616
|
/**
|
|
640
617
|
* Stop auto-advance until start() is called. Without an `interval` there is
|
|
@@ -667,14 +644,9 @@ var _Carousel = class _Carousel extends Component {
|
|
|
667
644
|
this._cycleTo(n, callback);
|
|
668
645
|
}
|
|
669
646
|
};
|
|
670
|
-
|
|
671
|
-
_Carousel._resizeListening = false;
|
|
672
|
-
_Carousel._onResize = Utils.throttle(() => {
|
|
673
|
-
_Carousel._live.forEach((c) => c._handleResize());
|
|
674
|
-
}, 200);
|
|
675
|
-
var Carousel = _Carousel;
|
|
647
|
+
Carousel.key = "Expressive_Carousel";
|
|
676
648
|
|
|
677
649
|
export {
|
|
678
650
|
Carousel
|
|
679
651
|
};
|
|
680
|
-
//# sourceMappingURL=chunk-
|
|
652
|
+
//# sourceMappingURL=chunk-3KLZRQZI.mjs.map
|