@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.
Files changed (609) hide show
  1. package/CHANGELOG.md +1807 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19176 -11958
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
  8. package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
  9. package/dist/fonts/LICENSE-noto-sans-thai +93 -0
  10. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  11. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  12. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  13. package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
  14. package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
  15. package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
  16. package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
  17. package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
  18. package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
  19. package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
  20. package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
  21. package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
  22. package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
  23. package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
  24. package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
  25. package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
  26. package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
  27. package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
  28. package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
  29. package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
  30. package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
  31. package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
  32. package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
  33. package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
  34. package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
  35. package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
  36. package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
  37. package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
  38. package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
  39. package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
  40. package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
  41. package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
  42. package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
  43. package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
  44. package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
  45. package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
  46. package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
  47. package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
  48. package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
  49. package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
  50. package/dist/fonts/roboto-greek-400.woff2 +0 -0
  51. package/dist/fonts/roboto-greek-500.woff2 +0 -0
  52. package/dist/fonts/roboto-greek-700.woff2 +0 -0
  53. package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
  54. package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
  55. package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
  56. package/dist/fonts/roboto-latin-700.woff2 +0 -0
  57. package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
  58. package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
  59. package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
  60. package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
  61. package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
  62. package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
  63. package/dist/js/chunks/chunk-26VUH75M.mjs +102 -0
  64. package/dist/js/chunks/chunk-26VUH75M.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2LFCOGC3.mjs +233 -0
  66. package/dist/js/chunks/chunk-2LFCOGC3.mjs.map +7 -0
  67. package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-36GELQGX.mjs} +29 -46
  68. package/dist/js/chunks/chunk-36GELQGX.mjs.map +7 -0
  69. package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-3FKWIRHW.mjs} +15 -29
  70. package/dist/js/chunks/chunk-3FKWIRHW.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-3KF65KGL.mjs +209 -0
  72. package/dist/js/chunks/chunk-3KF65KGL.mjs.map +7 -0
  73. package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-3KLZRQZI.mjs} +88 -116
  74. package/dist/js/chunks/chunk-3KLZRQZI.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-3XORNED5.mjs} +3 -11
  76. package/dist/js/chunks/chunk-3XORNED5.mjs.map +7 -0
  77. package/dist/js/chunks/chunk-4WBGAQN3.mjs +113 -0
  78. package/dist/js/chunks/chunk-4WBGAQN3.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-5F4URJHL.mjs} +19 -30
  80. package/dist/js/chunks/chunk-5F4URJHL.mjs.map +7 -0
  81. package/dist/js/chunks/chunk-67UNY7RH.mjs +299 -0
  82. package/dist/js/chunks/chunk-67UNY7RH.mjs.map +7 -0
  83. package/dist/js/chunks/chunk-7CXNATJS.mjs +97 -0
  84. package/dist/js/chunks/chunk-7CXNATJS.mjs.map +7 -0
  85. package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-7X44MKEQ.mjs} +43 -48
  86. package/dist/js/chunks/chunk-7X44MKEQ.mjs.map +7 -0
  87. package/dist/js/chunks/chunk-7ZAMOMGY.mjs +440 -0
  88. package/dist/js/chunks/chunk-7ZAMOMGY.mjs.map +7 -0
  89. package/dist/js/chunks/chunk-AEG6LOAJ.mjs +54 -0
  90. package/dist/js/chunks/chunk-AEG6LOAJ.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-AQNFCJJ5.mjs +135 -0
  92. package/dist/js/chunks/chunk-AQNFCJJ5.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-B55LWKBM.mjs +75 -0
  94. package/dist/js/chunks/chunk-B55LWKBM.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-BB5VXYXT.mjs +28 -0
  96. package/dist/js/chunks/chunk-BB5VXYXT.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-BDATLH3H.mjs +108 -0
  98. package/dist/js/chunks/chunk-BDATLH3H.mjs.map +7 -0
  99. package/dist/js/chunks/chunk-CWMQOT4O.mjs +232 -0
  100. package/dist/js/chunks/chunk-CWMQOT4O.mjs.map +7 -0
  101. package/dist/js/chunks/chunk-CY2CTOVM.mjs +81 -0
  102. package/dist/js/chunks/chunk-CY2CTOVM.mjs.map +7 -0
  103. package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-DWA5UYLJ.mjs} +363 -218
  104. package/dist/js/chunks/chunk-DWA5UYLJ.mjs.map +7 -0
  105. package/dist/js/chunks/chunk-EB2V4OKL.mjs +79 -0
  106. package/dist/js/chunks/chunk-EB2V4OKL.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-EWO662ZC.mjs +188 -0
  108. package/dist/js/chunks/chunk-EWO662ZC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-F7LAKFMX.mjs} +320 -141
  110. package/dist/js/chunks/chunk-F7LAKFMX.mjs.map +7 -0
  111. package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-FNIIH2LU.mjs} +20 -33
  112. package/dist/js/chunks/chunk-FNIIH2LU.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-GE3YMFS6.mjs +15 -0
  114. package/dist/js/chunks/chunk-GE3YMFS6.mjs.map +7 -0
  115. package/dist/js/chunks/chunk-GFWYMWYN.mjs +125 -0
  116. package/dist/js/chunks/chunk-GFWYMWYN.mjs.map +7 -0
  117. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  118. package/dist/js/chunks/chunk-H5ISU45X.mjs +87 -0
  119. package/dist/js/chunks/chunk-H5ISU45X.mjs.map +7 -0
  120. package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-H6YIKFAQ.mjs} +311 -186
  121. package/dist/js/chunks/chunk-H6YIKFAQ.mjs.map +7 -0
  122. package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-HEH7E3KO.mjs} +155 -35
  123. package/dist/js/chunks/chunk-HEH7E3KO.mjs.map +7 -0
  124. package/dist/js/chunks/chunk-HQRLBTNM.mjs +152 -0
  125. package/dist/js/chunks/chunk-HQRLBTNM.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-I2F7MLUU.mjs +137 -0
  127. package/dist/js/chunks/chunk-I2F7MLUU.mjs.map +7 -0
  128. package/dist/js/chunks/chunk-IQOTGGHX.mjs +797 -0
  129. package/dist/js/chunks/chunk-IQOTGGHX.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-JH3YWKA6.mjs +225 -0
  131. package/dist/js/chunks/chunk-JH3YWKA6.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JOLJAYIJ.mjs +7 -0
  133. package/dist/js/chunks/chunk-JOLJAYIJ.mjs.map +7 -0
  134. package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-KOTGMCMI.mjs} +116 -24
  135. package/dist/js/chunks/chunk-KOTGMCMI.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-LC4O5LFS.mjs} +21 -45
  137. package/dist/js/chunks/chunk-LC4O5LFS.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LEF33SCP.mjs +127 -0
  139. package/dist/js/chunks/chunk-LEF33SCP.mjs.map +7 -0
  140. package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-LFORZRPH.mjs} +21 -23
  141. package/dist/js/chunks/chunk-LFORZRPH.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-LWLNV5EC.mjs +451 -0
  143. package/dist/js/chunks/chunk-LWLNV5EC.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-LXRHUQAX.mjs +491 -0
  145. package/dist/js/chunks/chunk-LXRHUQAX.mjs.map +7 -0
  146. package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-MA2SZZFB.mjs} +82 -111
  147. package/dist/js/chunks/chunk-MA2SZZFB.mjs.map +7 -0
  148. package/dist/js/chunks/chunk-MDBZAMIV.mjs +121 -0
  149. package/dist/js/chunks/chunk-MDBZAMIV.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-NODZ5VAD.mjs +75 -0
  151. package/dist/js/chunks/chunk-NODZ5VAD.mjs.map +7 -0
  152. package/dist/js/chunks/chunk-O2WJB6TH.mjs +365 -0
  153. package/dist/js/chunks/chunk-O2WJB6TH.mjs.map +7 -0
  154. package/dist/js/chunks/chunk-PCABY5BN.mjs +35 -0
  155. package/dist/js/chunks/chunk-PCABY5BN.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PWKYVMND.mjs +120 -0
  157. package/dist/js/chunks/chunk-PWKYVMND.mjs.map +7 -0
  158. package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-QHZZT7YO.mjs} +66 -38
  159. package/dist/js/chunks/chunk-QHZZT7YO.mjs.map +7 -0
  160. package/dist/js/chunks/chunk-QND56EW2.mjs +439 -0
  161. package/dist/js/chunks/chunk-QND56EW2.mjs.map +7 -0
  162. package/dist/js/chunks/chunk-QNODAANY.mjs +376 -0
  163. package/dist/js/chunks/chunk-QNODAANY.mjs.map +7 -0
  164. package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-QRO5FV3I.mjs} +156 -73
  165. package/dist/js/chunks/chunk-QRO5FV3I.mjs.map +7 -0
  166. package/dist/js/chunks/chunk-R7A7JRC5.mjs +440 -0
  167. package/dist/js/chunks/chunk-R7A7JRC5.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-RKG2CBFE.mjs +74 -0
  169. package/dist/js/chunks/chunk-RKG2CBFE.mjs.map +7 -0
  170. package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-RSNS5OYS.mjs} +38 -25
  171. package/dist/js/chunks/chunk-RSNS5OYS.mjs.map +7 -0
  172. package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-RUDYMEJ3.mjs} +7 -6
  173. package/dist/js/chunks/chunk-RUDYMEJ3.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-STJR62SU.mjs +161 -0
  175. package/dist/js/chunks/chunk-STJR62SU.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-SUSD4UTN.mjs +220 -0
  177. package/dist/js/chunks/chunk-SUSD4UTN.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-SYBOA5HC.mjs} +26 -48
  179. package/dist/js/chunks/chunk-SYBOA5HC.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-T4MOBP3J.mjs +108 -0
  181. package/dist/js/chunks/chunk-T4MOBP3J.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-TM7HPGTV.mjs +342 -0
  183. package/dist/js/chunks/chunk-TM7HPGTV.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-TMQDZSDC.mjs} +71 -35
  185. package/dist/js/chunks/chunk-TMQDZSDC.mjs.map +7 -0
  186. package/dist/js/chunks/chunk-TVSX5YA2.mjs +48 -0
  187. package/dist/js/chunks/chunk-TVSX5YA2.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-UHO5CV6K.mjs +80 -0
  189. package/dist/js/chunks/chunk-UHO5CV6K.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-UKCNELUN.mjs +223 -0
  191. package/dist/js/chunks/chunk-UKCNELUN.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-UKQK5GWR.mjs +167 -0
  193. package/dist/js/chunks/chunk-UKQK5GWR.mjs.map +7 -0
  194. package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-UTSLYQ65.mjs} +21 -48
  195. package/dist/js/chunks/chunk-UTSLYQ65.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-VS5OJBOD.mjs +108 -0
  197. package/dist/js/chunks/chunk-VS5OJBOD.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-VZMROW5A.mjs +759 -0
  199. package/dist/js/chunks/chunk-VZMROW5A.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  201. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  202. package/dist/js/chunks/chunk-XB6Y7P5W.mjs +69 -0
  203. package/dist/js/chunks/chunk-XB6Y7P5W.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-XDAMOMVD.mjs +226 -0
  205. package/dist/js/chunks/chunk-XDAMOMVD.mjs.map +7 -0
  206. package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-XJPMW5SP.mjs} +247 -172
  207. package/dist/js/chunks/chunk-XJPMW5SP.mjs.map +7 -0
  208. package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-YKANQILZ.mjs} +16 -21
  209. package/dist/js/chunks/chunk-YKANQILZ.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-YLZOJLDI.mjs +175 -0
  211. package/dist/js/chunks/chunk-YLZOJLDI.mjs.map +7 -0
  212. package/dist/js/chunks/chunk-ZK7YY322.mjs +514 -0
  213. package/dist/js/chunks/chunk-ZK7YY322.mjs.map +7 -0
  214. package/dist/js/expressive.cjs +10266 -3628
  215. package/dist/js/expressive.cjs.map +4 -4
  216. package/dist/js/expressive.js +10266 -3628
  217. package/dist/js/expressive.js.map +4 -4
  218. package/dist/js/expressive.min.js +23 -22
  219. package/dist/js/expressive.min.js.map +4 -4
  220. package/dist/js/expressive.mjs +181 -69
  221. package/dist/js/expressive.mjs.map +2 -2
  222. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  223. package/dist/js/internal/behaviors/copy.mjs +9 -0
  224. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dataTables.mjs +8 -0
  226. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  227. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  228. package/dist/js/internal/behaviors/forms.mjs +2 -2
  229. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  230. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/lists.mjs +8 -0
  232. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  234. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  235. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  236. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  237. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  238. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/theme.mjs +8 -0
  240. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/tour.mjs +8 -0
  242. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  243. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  244. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  245. package/dist/js/internal/components/appBar.mjs +3 -2
  246. package/dist/js/internal/components/autocomplete.mjs +5 -4
  247. package/dist/js/internal/components/backToTop.mjs +9 -0
  248. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  249. package/dist/js/internal/components/barChart.mjs +5 -4
  250. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  251. package/dist/js/internal/components/buttons.mjs +3 -3
  252. package/dist/js/internal/components/cards.mjs +3 -3
  253. package/dist/js/internal/components/carousel.mjs +3 -3
  254. package/dist/js/internal/components/cascader.mjs +10 -0
  255. package/dist/js/internal/components/cascader.mjs.map +7 -0
  256. package/dist/js/internal/components/characterCounter.mjs +3 -2
  257. package/dist/js/internal/components/chips.mjs +7 -5
  258. package/dist/js/internal/components/colorPicker.mjs +9 -0
  259. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  260. package/dist/js/internal/components/columnChart.mjs +4 -3
  261. package/dist/js/internal/components/commandPalette.mjs +3 -3
  262. package/dist/js/internal/components/confetti.mjs +3 -2
  263. package/dist/js/internal/components/currencyInput.mjs +9 -0
  264. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  265. package/dist/js/internal/components/datepicker.mjs +12 -8
  266. package/dist/js/internal/components/expandingCard.mjs +3 -3
  267. package/dist/js/internal/components/funnelChart.mjs +10 -0
  268. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  269. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  270. package/dist/js/internal/components/hoverCard.mjs +9 -0
  271. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  272. package/dist/js/internal/components/index.mjs +131 -65
  273. package/dist/js/internal/components/inputMask.mjs +9 -0
  274. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  275. package/dist/js/internal/components/keypad.mjs +3 -3
  276. package/dist/js/internal/components/lightbox.mjs +3 -3
  277. package/dist/js/internal/components/lineChart.mjs +41 -4
  278. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  279. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  280. package/dist/js/internal/components/mapView.mjs +3 -3
  281. package/dist/js/internal/components/menu.mjs +3 -3
  282. package/dist/js/internal/components/menubar.mjs +10 -0
  283. package/dist/js/internal/components/menubar.mjs.map +7 -0
  284. package/dist/js/internal/components/messageScroller.mjs +3 -3
  285. package/dist/js/internal/components/mixedChart.mjs +5 -4
  286. package/dist/js/internal/components/navigationRail.mjs +3 -2
  287. package/dist/js/internal/components/particles.mjs +3 -2
  288. package/dist/js/internal/components/pieChart.mjs +4 -3
  289. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  290. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  291. package/dist/js/internal/components/questionnaire.mjs +3 -3
  292. package/dist/js/internal/components/radarChart.mjs +4 -3
  293. package/dist/js/internal/components/radialChart.mjs +4 -3
  294. package/dist/js/internal/components/registry.mjs +60 -41
  295. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  296. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  297. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  298. package/dist/js/internal/components/scatterChart.mjs +10 -0
  299. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  300. package/dist/js/internal/components/scrollspy.mjs +3 -2
  301. package/dist/js/internal/components/select.mjs +5 -4
  302. package/dist/js/internal/components/showMore.mjs +9 -0
  303. package/dist/js/internal/components/showMore.mjs.map +7 -0
  304. package/dist/js/internal/components/slider.mjs +3 -3
  305. package/dist/js/internal/components/snackbar.mjs +2 -2
  306. package/dist/js/internal/components/swipeActions.mjs +9 -0
  307. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  308. package/dist/js/internal/components/tabs.mjs +3 -4
  309. package/dist/js/internal/components/timepicker.mjs +5 -4
  310. package/dist/js/internal/components/tooltip.mjs +3 -3
  311. package/dist/js/internal/components/treeSelect.mjs +14 -0
  312. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  313. package/dist/js/internal/components/treemapChart.mjs +10 -0
  314. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  315. package/dist/js/internal/core/component.mjs +6 -3
  316. package/dist/js/internal/core/formControl.mjs +12 -0
  317. package/dist/js/internal/core/formControl.mjs.map +7 -0
  318. package/dist/js/internal/core/imageURL.mjs +7 -0
  319. package/dist/js/internal/core/imageURL.mjs.map +7 -0
  320. package/dist/js/internal/core/spring.mjs +11 -0
  321. package/dist/js/internal/core/spring.mjs.map +7 -0
  322. package/dist/js/internal/core/utils.mjs +21 -3
  323. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  324. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  325. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  326. package/dist/js/modular.mjs +172 -69
  327. package/dist/types/behaviors/bottomSheets.d.ts +23 -5
  328. package/dist/types/behaviors/copy.d.ts +18 -0
  329. package/dist/types/behaviors/dataTables.d.ts +125 -0
  330. package/dist/types/behaviors/dialogs.d.ts +27 -1
  331. package/dist/types/behaviors/forms.d.ts +70 -4
  332. package/dist/types/behaviors/imageCompare.d.ts +13 -0
  333. package/dist/types/behaviors/lists.d.ts +12 -0
  334. package/dist/types/behaviors/paneResize.d.ts +29 -0
  335. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  336. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  337. package/dist/types/behaviors/sortable.d.ts +28 -0
  338. package/dist/types/behaviors/theme.d.ts +22 -0
  339. package/dist/types/behaviors/tour.d.ts +36 -0
  340. package/dist/types/behaviors/transferList.d.ts +53 -0
  341. package/dist/types/components/appBar.d.ts +5 -6
  342. package/dist/types/components/autocomplete.d.ts +105 -20
  343. package/dist/types/components/backToTop.d.ts +36 -0
  344. package/dist/types/components/barChart.d.ts +3 -6
  345. package/dist/types/components/buttonGroup.d.ts +2 -4
  346. package/dist/types/components/buttons.d.ts +5 -5
  347. package/dist/types/components/cards.d.ts +3 -16
  348. package/dist/types/components/carousel.d.ts +16 -15
  349. package/dist/types/components/cascader.d.ts +130 -0
  350. package/dist/types/components/characterCounter.d.ts +2 -15
  351. package/dist/types/components/chips.d.ts +80 -19
  352. package/dist/types/components/colorPicker.d.ts +56 -0
  353. package/dist/types/components/columnChart.d.ts +23 -10
  354. package/dist/types/components/commandPalette.d.ts +11 -16
  355. package/dist/types/components/confetti.d.ts +2 -4
  356. package/dist/types/components/currencyInput.d.ts +60 -0
  357. package/dist/types/components/datepicker.d.ts +107 -56
  358. package/dist/types/components/expandingCard.d.ts +4 -6
  359. package/dist/types/components/funnelChart.d.ts +35 -0
  360. package/dist/types/components/heatmapChart.d.ts +42 -8
  361. package/dist/types/components/hoverCard.d.ts +59 -0
  362. package/dist/types/components/index.d.ts +16 -1
  363. package/dist/types/components/inputMask.d.ts +28 -0
  364. package/dist/types/components/keypad.d.ts +38 -6
  365. package/dist/types/components/lightbox.d.ts +14 -20
  366. package/dist/types/components/lineChart.d.ts +212 -12
  367. package/dist/types/components/loadingOverlay.d.ts +42 -0
  368. package/dist/types/components/mapView.d.ts +138 -27
  369. package/dist/types/components/menu.d.ts +74 -22
  370. package/dist/types/components/menubar.d.ts +37 -0
  371. package/dist/types/components/messageScroller.d.ts +2 -14
  372. package/dist/types/components/mixedChart.d.ts +15 -6
  373. package/dist/types/components/navigationRail.d.ts +16 -5
  374. package/dist/types/components/particles.d.ts +22 -5
  375. package/dist/types/components/pieChart.d.ts +33 -9
  376. package/dist/types/components/pullToRefresh.d.ts +80 -0
  377. package/dist/types/components/questionnaire.d.ts +58 -16
  378. package/dist/types/components/radarChart.d.ts +10 -6
  379. package/dist/types/components/radialChart.d.ts +58 -7
  380. package/dist/types/components/registry.d.ts +73 -3
  381. package/dist/types/components/richTextEditor.d.ts +45 -22
  382. package/dist/types/components/sankeyChart.d.ts +72 -0
  383. package/dist/types/components/scatterChart.d.ts +102 -0
  384. package/dist/types/components/scrollspy.d.ts +3 -5
  385. package/dist/types/components/select.d.ts +44 -33
  386. package/dist/types/components/showMore.d.ts +53 -0
  387. package/dist/types/components/slider.d.ts +2 -15
  388. package/dist/types/components/snackbar.d.ts +68 -1
  389. package/dist/types/components/swipeActions.d.ts +81 -0
  390. package/dist/types/components/tabs.d.ts +92 -30
  391. package/dist/types/components/timepicker.d.ts +128 -27
  392. package/dist/types/components/tooltip.d.ts +57 -21
  393. package/dist/types/components/treeSelect.d.ts +106 -0
  394. package/dist/types/components/treemapChart.d.ts +56 -0
  395. package/dist/types/core/component.d.ts +49 -25
  396. package/dist/types/core/formControl.d.ts +21 -0
  397. package/dist/types/core/imageURL.d.ts +2 -0
  398. package/dist/types/core/spring.d.ts +20 -0
  399. package/dist/types/core/utils.d.ts +123 -72
  400. package/dist/types/modular.d.ts +33 -1
  401. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
  402. package/dist/types/plugins/modalDisplayPlugin.d.ts +39 -0
  403. package/package.json +17 -13
  404. package/src/sass/README.md +27 -18
  405. package/src/sass/abstracts/_elevation.scss +13 -7
  406. package/src/sass/abstracts/_index.scss +1 -0
  407. package/src/sass/abstracts/_mixins.scss +864 -78
  408. package/src/sass/abstracts/_spring.scss +63 -0
  409. package/src/sass/abstracts/_variables.scss +64 -21
  410. package/src/sass/base/_fonts.scss +61 -48
  411. package/src/sass/base/_global.scss +104 -24
  412. package/src/sass/base/_index.scss +2 -0
  413. package/src/sass/base/_normalize.scss +59 -114
  414. package/src/sass/base/_print.scss +21 -0
  415. package/src/sass/base/_prose.scss +68 -0
  416. package/src/sass/base/_typography.scss +9 -5
  417. package/src/sass/components/_accordion.scss +10 -19
  418. package/src/sass/components/_alert.scss +102 -0
  419. package/src/sass/components/_aura.scss +9 -3
  420. package/src/sass/components/_avatar.scss +3 -3
  421. package/src/sass/components/_back-to-top.scss +38 -0
  422. package/src/sass/components/_badges.scss +6 -5
  423. package/src/sass/components/_bar-chart.scss +31 -90
  424. package/src/sass/components/_bottom-sheet.scss +51 -16
  425. package/src/sass/components/_breadcrumb.scss +8 -7
  426. package/src/sass/components/_button-groups.scss +30 -63
  427. package/src/sass/components/_buttons.scss +137 -94
  428. package/src/sass/components/_calendar.scss +244 -0
  429. package/src/sass/components/_cards.scss +36 -44
  430. package/src/sass/components/_carousel.scss +37 -113
  431. package/src/sass/components/_cascader.scss +131 -0
  432. package/src/sass/components/_chips.scss +36 -46
  433. package/src/sass/components/_column-chart.scss +15 -26
  434. package/src/sass/components/_command-palette.scss +4 -7
  435. package/src/sass/components/_confetti.scss +1 -4
  436. package/src/sass/components/_countdown.scss +1 -1
  437. package/src/sass/components/_data-table.scss +172 -25
  438. package/src/sass/components/_datepicker.scss +54 -40
  439. package/src/sass/components/_description-list.scss +85 -0
  440. package/src/sass/components/_dialog.scss +48 -55
  441. package/src/sass/components/_docked-display.scss +1 -3
  442. package/src/sass/components/_drag-handle.scss +16 -20
  443. package/src/sass/components/_expanding-card.scss +21 -14
  444. package/src/sass/components/_fab-menu.scss +43 -39
  445. package/src/sass/components/_funnel-chart.scss +63 -0
  446. package/src/sass/components/_heatmap-chart.scss +114 -29
  447. package/src/sass/components/_icon-buttons.scss +8 -11
  448. package/src/sass/components/_icons-material-design.scss +2 -2
  449. package/src/sass/components/_image-compare.scss +108 -0
  450. package/src/sass/components/_index.scss +20 -0
  451. package/src/sass/components/_keypad.scss +39 -19
  452. package/src/sass/components/_kpi.scss +6 -11
  453. package/src/sass/components/_lightbox.scss +24 -13
  454. package/src/sass/components/_line-chart.scss +9 -63
  455. package/src/sass/components/_list.scss +59 -14
  456. package/src/sass/components/_loading-indicator.scss +1 -0
  457. package/src/sass/components/_loading-overlay.scss +105 -0
  458. package/src/sass/components/_map.scss +37 -11
  459. package/src/sass/components/_marquee.scss +4 -3
  460. package/src/sass/components/_mega-menu.scss +128 -0
  461. package/src/sass/components/_menu.scss +146 -127
  462. package/src/sass/components/_menubar.scss +47 -0
  463. package/src/sass/components/_message-scroller.scss +2 -2
  464. package/src/sass/components/_message.scss +3 -3
  465. package/src/sass/components/_mixed-chart.scss +27 -35
  466. package/src/sass/components/_modal-display.scss +21 -0
  467. package/src/sass/components/_navbar.scss +45 -36
  468. package/src/sass/components/_navigation-bar.scss +12 -77
  469. package/src/sass/components/_navigation-rail.scss +161 -92
  470. package/src/sass/components/_org-chart.scss +192 -0
  471. package/src/sass/components/_page-footer.scss +2 -4
  472. package/src/sass/components/_pagination.scss +9 -27
  473. package/src/sass/components/_panes.scss +35 -42
  474. package/src/sass/components/_particles.scss +1 -4
  475. package/src/sass/components/_pie-chart.scss +86 -68
  476. package/src/sass/components/_popover.scss +18 -5
  477. package/src/sass/components/_progress.scss +183 -44
  478. package/src/sass/components/_pull-to-refresh.scss +90 -0
  479. package/src/sass/components/_questionnaire.scss +74 -3
  480. package/src/sass/components/_radar-chart.scss +40 -42
  481. package/src/sass/components/_radial-chart.scss +108 -46
  482. package/src/sass/components/_rich-text-editor.scss +2 -2
  483. package/src/sass/components/_sankey-chart.scss +91 -0
  484. package/src/sass/components/_scatter-chart.scss +144 -0
  485. package/src/sass/components/_scrim.scss +0 -2
  486. package/src/sass/components/_scrollspy.scss +0 -2
  487. package/src/sass/components/_search.scss +27 -26
  488. package/src/sass/components/_show-more.scss +8 -0
  489. package/src/sass/components/_side-sheet.scss +32 -51
  490. package/src/sass/components/_skeleton.scss +26 -19
  491. package/src/sass/components/_snackbar.scss +25 -21
  492. package/src/sass/components/_split-button.scss +5 -5
  493. package/src/sass/components/_stat.scss +3 -8
  494. package/src/sass/components/_stepper.scss +1 -1
  495. package/src/sass/components/_swipe-actions.scss +71 -0
  496. package/src/sass/components/_table_of_contents.scss +1 -3
  497. package/src/sass/components/_tabs.scss +49 -46
  498. package/src/sass/components/_timeline.scss +12 -12
  499. package/src/sass/components/_timepicker.scss +111 -79
  500. package/src/sass/components/_toolbar.scss +36 -47
  501. package/src/sass/components/_tooltip.scss +25 -12
  502. package/src/sass/components/_tour.scss +89 -0
  503. package/src/sass/components/_transfer-list.scss +73 -0
  504. package/src/sass/components/_transitions.scss +4 -4
  505. package/src/sass/components/_tree.scss +7 -32
  506. package/src/sass/components/_treemap-chart.scss +98 -0
  507. package/src/sass/components/forms/_checkboxes.scss +107 -44
  508. package/src/sass/components/forms/_color-picker.scss +135 -0
  509. package/src/sass/components/forms/_color-swatches.scss +85 -0
  510. package/src/sass/components/forms/_drop-zone.scss +16 -13
  511. package/src/sass/components/forms/_fieldset.scss +4 -7
  512. package/src/sass/components/forms/_file-input.scss +12 -8
  513. package/src/sass/components/forms/_index.scss +3 -1
  514. package/src/sass/components/forms/_input-fields.scss +271 -90
  515. package/src/sass/components/forms/_radio-buttons.scss +34 -117
  516. package/src/sass/components/forms/_rating.scss +2 -32
  517. package/src/sass/components/forms/_select.scss +198 -20
  518. package/src/sass/components/forms/_slider.scss +92 -98
  519. package/src/sass/components/forms/_switches.scss +62 -180
  520. package/src/sass/custom.scss +10 -1
  521. package/src/sass/expressive.scss +3 -63
  522. package/src/sass/tokens/_contrast.scss +94 -0
  523. package/src/sass/tokens/_elevation.scss +16 -0
  524. package/src/sass/tokens/_index.scss +5 -0
  525. package/src/sass/tokens/_motion.scss +109 -0
  526. package/src/sass/tokens/_reference.scss +72 -141
  527. package/src/sass/tokens/_shape.scss +38 -0
  528. package/src/sass/tokens/_stacking.scss +27 -0
  529. package/src/sass/tokens/_state.scss +0 -2
  530. package/src/sass/tokens/_theme.scss +10 -1
  531. package/src/sass/tokens/_vibrant.scss +2 -5
  532. package/src/sass/utilities/_defer-render.scss +17 -0
  533. package/src/sass/utilities/_helpers.scss +184 -27
  534. package/src/sass/utilities/_index.scss +1 -0
  535. package/src/sass/utilities/_scroll-area.scss +0 -2
  536. package/src/sass/utilities/_spacing.scss +52 -34
  537. package/src/sass/utilities/_typescale.scss +8 -1
  538. package/src/sass/utilities/_visibility.scss +46 -77
  539. package/src/sass/utilities/_z-depth.scss +7 -4
  540. package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
  541. package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
  543. package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
  544. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
  546. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
  547. package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
  548. package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
  549. package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
  551. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
  553. package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
  554. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
  556. package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
  558. package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
  559. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
  560. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
  562. package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
  564. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
  565. package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
  567. package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
  568. package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
  569. package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
  570. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
  572. package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
  573. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
  574. package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
  575. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
  578. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
  580. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
  582. package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
  584. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
  586. package/dist/js/chunks/chunk-UAZSDUVP.mjs +0 -90
  587. package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
  589. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
  590. package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
  591. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
  592. package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
  593. package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
  594. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
  596. package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
  597. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
  598. package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
  599. package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
  600. package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
  602. package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
  603. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
  604. package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
  605. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
  606. package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
  607. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
  608. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
  609. /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-PD6HYHAE.mjs";
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 _Carousel = class _Carousel extends Component {
26
+ var Carousel = class extends Component {
27
27
  constructor(el, options) {
28
- super(el, options, _Carousel);
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 = true;
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
- const target = e.target;
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 ? Utils.keys.ARROW_LEFT : Utils.keys.ARROW_RIGHT);
182
- const backward = this._vertical ? e.key === "ArrowUp" : e.key === (rtl ? Utils.keys.ARROW_RIGHT : Utils.keys.ARROW_LEFT);
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
- this.el["Expressive_Carousel"] = void 0;
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") || el.classList.contains("carousel-fixed-item")) {
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
- this.el.addEventListener("keydown", this._handleKeydown);
367
- this._motion.addEventListener("change", this._handleMotionChange);
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
- document.addEventListener("visibilitychange", this._handleAutoAdvanceState);
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._scroller.removeEventListener("scroll", this._handleTrackScroll);
413
- this._scroller.removeEventListener("pointerdown", this._handleTrackPointerDown);
414
- this._scroller.removeEventListener("wheel", this._handleNativeScroll);
415
- this._setDragListeners(false);
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._removeEventHandlers();
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
- const original = this._itemA11yOriginal.get(el);
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
- document[method]("pointermove", this._handleTrackPointerMove);
486
- document[method]("pointerup", this._handleTrackPointerUp);
487
- document[method]("pointercancel", this._handleTrackPointerUp);
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
- if (prev !== index && typeof this.options.onCycleTo === "function") {
507
- this.options.onCycleTo.call(this, curr, dragged);
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("flat") || this.el.classList.contains("uncontained") || this.el.classList.contains("full-screen") && this._vertical) {
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 (dist < bestDist || dist === bestDist && i === this.center) {
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
- _Carousel._live = /* @__PURE__ */ new Set();
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-KVJAVDBC.mjs.map
652
+ //# sourceMappingURL=chunk-3KLZRQZI.mjs.map