@expressivecss/expressive 0.15.0 → 0.16.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 (602) hide show
  1. package/CHANGELOG.md +1502 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19247 -11923
  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-2CS6TITK.mjs +219 -0
  64. package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
  66. package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
  67. package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
  68. package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
  69. package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
  70. package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
  72. package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
  73. package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
  74. package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-4QUCNFSD.mjs} +64 -113
  76. package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
  77. package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-4TRZ2AER.mjs} +35 -41
  78. package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-5KIHWJI2.mjs} +40 -26
  80. package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-67ZPPKXS.mjs} +20 -33
  82. package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-6FSEUFVW.mjs} +39 -26
  84. package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
  85. package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
  86. package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
  87. package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-75E5EDJF.mjs} +3 -11
  88. package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
  89. package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-7NLUI3RR.mjs} +139 -66
  90. package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
  92. package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
  94. package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
  96. package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
  98. package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
  99. package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-ANKFWNWT.mjs} +21 -45
  100. package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
  101. package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-B7DQFHA5.mjs} +30 -47
  102. package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
  103. package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
  104. package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
  105. package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-BPF3I2MN.mjs} +109 -24
  106. package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
  108. package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-CSYWKEK3.mjs} +310 -196
  110. package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
  111. package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
  112. package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
  114. package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
  115. package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-EC26RU2D.mjs} +11 -29
  116. package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
  117. package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-EVCVFEV3.mjs} +235 -146
  118. package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
  119. package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
  120. package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
  121. package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
  122. package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
  123. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  124. package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
  125. package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
  127. package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
  128. package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-ILDRRG7T.mjs} +21 -23
  129. package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
  131. package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
  133. package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
  134. package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
  135. package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-KZPSAXIU.mjs} +142 -32
  137. package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
  139. package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
  140. package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
  141. package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
  143. package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
  145. package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
  146. package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
  147. package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
  148. package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-OP43LLIC.mjs} +28 -45
  149. package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
  151. package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
  152. package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-OYNUDOHR.mjs} +19 -47
  153. package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
  154. package/dist/js/chunks/{chunk-UAZSDUVP.mjs → chunk-P6DRQ6KS.mjs} +36 -30
  155. package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
  157. package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
  158. package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
  159. package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
  160. package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-QXKWVHBD.mjs} +265 -161
  161. package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
  162. package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-ROH2HDB4.mjs} +7 -6
  163. package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
  164. package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
  165. package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
  166. package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-SPPHF7YZ.mjs} +36 -29
  167. package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
  169. package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
  170. package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
  171. package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
  172. package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
  173. package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
  175. package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
  177. package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-VGY4M57S.mjs} +266 -120
  179. package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
  181. package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
  183. package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-VMY55K2X.mjs} +76 -109
  185. package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
  186. package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-VR3L2WN5.mjs} +11 -17
  187. package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  189. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
  191. package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
  193. package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
  194. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
  195. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
  197. package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
  199. package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
  201. package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
  202. package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-ZJNLAGY5.mjs} +19 -30
  203. package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
  205. package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
  206. package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
  207. package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
  208. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
  209. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
  211. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
  212. package/dist/js/expressive.cjs +10613 -4327
  213. package/dist/js/expressive.cjs.map +4 -4
  214. package/dist/js/expressive.js +10613 -4327
  215. package/dist/js/expressive.js.map +4 -4
  216. package/dist/js/expressive.min.js +23 -22
  217. package/dist/js/expressive.min.js.map +4 -4
  218. package/dist/js/expressive.mjs +182 -71
  219. package/dist/js/expressive.mjs.map +2 -2
  220. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  221. package/dist/js/internal/behaviors/copy.mjs +9 -0
  222. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  223. package/dist/js/internal/behaviors/dataTables.mjs +10 -0
  224. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  226. package/dist/js/internal/behaviors/forms.mjs +2 -2
  227. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  228. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  229. package/dist/js/internal/behaviors/lists.mjs +8 -0
  230. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  232. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  234. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  235. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  236. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  237. package/dist/js/internal/behaviors/theme.mjs +8 -0
  238. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/tour.mjs +8 -0
  240. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  242. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  243. package/dist/js/internal/components/appBar.mjs +3 -2
  244. package/dist/js/internal/components/autocomplete.mjs +4 -4
  245. package/dist/js/internal/components/backToTop.mjs +9 -0
  246. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  247. package/dist/js/internal/components/barChart.mjs +5 -4
  248. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  249. package/dist/js/internal/components/buttons.mjs +3 -3
  250. package/dist/js/internal/components/cards.mjs +3 -3
  251. package/dist/js/internal/components/carousel.mjs +3 -3
  252. package/dist/js/internal/components/cascader.mjs +10 -0
  253. package/dist/js/internal/components/cascader.mjs.map +7 -0
  254. package/dist/js/internal/components/characterCounter.mjs +3 -2
  255. package/dist/js/internal/components/chips.mjs +6 -5
  256. package/dist/js/internal/components/colorPicker.mjs +9 -0
  257. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  258. package/dist/js/internal/components/columnChart.mjs +4 -3
  259. package/dist/js/internal/components/commandPalette.mjs +3 -3
  260. package/dist/js/internal/components/confetti.mjs +3 -2
  261. package/dist/js/internal/components/currencyInput.mjs +9 -0
  262. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  263. package/dist/js/internal/components/datepicker.mjs +11 -8
  264. package/dist/js/internal/components/expandingCard.mjs +3 -3
  265. package/dist/js/internal/components/funnelChart.mjs +10 -0
  266. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  267. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  268. package/dist/js/internal/components/hoverCard.mjs +9 -0
  269. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  270. package/dist/js/internal/components/index.mjs +131 -66
  271. package/dist/js/internal/components/inputMask.mjs +9 -0
  272. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  273. package/dist/js/internal/components/keypad.mjs +3 -3
  274. package/dist/js/internal/components/lightbox.mjs +3 -3
  275. package/dist/js/internal/components/lineChart.mjs +25 -4
  276. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  277. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  278. package/dist/js/internal/components/mapView.mjs +3 -3
  279. package/dist/js/internal/components/menu.mjs +3 -3
  280. package/dist/js/internal/components/menubar.mjs +10 -0
  281. package/dist/js/internal/components/menubar.mjs.map +7 -0
  282. package/dist/js/internal/components/messageScroller.mjs +3 -3
  283. package/dist/js/internal/components/mixedChart.mjs +5 -4
  284. package/dist/js/internal/components/navigationRail.mjs +3 -2
  285. package/dist/js/internal/components/particles.mjs +3 -2
  286. package/dist/js/internal/components/pieChart.mjs +4 -3
  287. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  288. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  289. package/dist/js/internal/components/questionnaire.mjs +3 -3
  290. package/dist/js/internal/components/radarChart.mjs +4 -3
  291. package/dist/js/internal/components/radialChart.mjs +4 -3
  292. package/dist/js/internal/components/registry.mjs +59 -41
  293. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  294. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  295. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  296. package/dist/js/internal/components/scatterChart.mjs +10 -0
  297. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  298. package/dist/js/internal/components/scrollspy.mjs +3 -2
  299. package/dist/js/internal/components/select.mjs +4 -4
  300. package/dist/js/internal/components/showMore.mjs +9 -0
  301. package/dist/js/internal/components/showMore.mjs.map +7 -0
  302. package/dist/js/internal/components/slider.mjs +3 -3
  303. package/dist/js/internal/components/snackbar.mjs +2 -2
  304. package/dist/js/internal/components/swipeActions.mjs +9 -0
  305. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  306. package/dist/js/internal/components/tabs.mjs +3 -4
  307. package/dist/js/internal/components/timepicker.mjs +5 -4
  308. package/dist/js/internal/components/tooltip.mjs +3 -3
  309. package/dist/js/internal/components/treeSelect.mjs +13 -0
  310. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  311. package/dist/js/internal/components/treemapChart.mjs +10 -0
  312. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  313. package/dist/js/internal/core/component.mjs +2 -1
  314. package/dist/js/internal/core/formControl.mjs +12 -0
  315. package/dist/js/internal/core/formControl.mjs.map +7 -0
  316. package/dist/js/internal/core/spring.mjs +11 -0
  317. package/dist/js/internal/core/spring.mjs.map +7 -0
  318. package/dist/js/internal/core/utils.mjs +11 -3
  319. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  320. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  321. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  322. package/dist/js/modular.mjs +173 -71
  323. package/dist/types/behaviors/bottomSheets.d.ts +19 -3
  324. package/dist/types/behaviors/copy.d.ts +18 -0
  325. package/dist/types/behaviors/dataTables.d.ts +129 -0
  326. package/dist/types/behaviors/dialogs.d.ts +27 -1
  327. package/dist/types/behaviors/forms.d.ts +68 -2
  328. package/dist/types/behaviors/imageCompare.d.ts +12 -0
  329. package/dist/types/behaviors/lists.d.ts +12 -0
  330. package/dist/types/behaviors/paneResize.d.ts +29 -0
  331. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  332. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  333. package/dist/types/behaviors/sortable.d.ts +28 -0
  334. package/dist/types/behaviors/theme.d.ts +22 -0
  335. package/dist/types/behaviors/tour.d.ts +36 -0
  336. package/dist/types/behaviors/transferList.d.ts +51 -0
  337. package/dist/types/components/appBar.d.ts +5 -6
  338. package/dist/types/components/autocomplete.d.ts +91 -17
  339. package/dist/types/components/backToTop.d.ts +36 -0
  340. package/dist/types/components/barChart.d.ts +3 -6
  341. package/dist/types/components/buttonGroup.d.ts +2 -4
  342. package/dist/types/components/buttons.d.ts +5 -5
  343. package/dist/types/components/cards.d.ts +3 -16
  344. package/dist/types/components/carousel.d.ts +9 -15
  345. package/dist/types/components/cascader.d.ts +130 -0
  346. package/dist/types/components/characterCounter.d.ts +2 -15
  347. package/dist/types/components/chips.d.ts +65 -19
  348. package/dist/types/components/colorPicker.d.ts +42 -0
  349. package/dist/types/components/columnChart.d.ts +23 -10
  350. package/dist/types/components/commandPalette.d.ts +11 -16
  351. package/dist/types/components/confetti.d.ts +2 -4
  352. package/dist/types/components/currencyInput.d.ts +59 -0
  353. package/dist/types/components/datepicker.d.ts +56 -32
  354. package/dist/types/components/expandingCard.d.ts +4 -6
  355. package/dist/types/components/funnelChart.d.ts +38 -0
  356. package/dist/types/components/heatmapChart.d.ts +39 -8
  357. package/dist/types/components/hoverCard.d.ts +58 -0
  358. package/dist/types/components/index.d.ts +16 -1
  359. package/dist/types/components/inputMask.d.ts +30 -0
  360. package/dist/types/components/keypad.d.ts +38 -6
  361. package/dist/types/components/lightbox.d.ts +14 -20
  362. package/dist/types/components/lineChart.d.ts +172 -10
  363. package/dist/types/components/loadingOverlay.d.ts +42 -0
  364. package/dist/types/components/mapView.d.ts +26 -17
  365. package/dist/types/components/menu.d.ts +60 -22
  366. package/dist/types/components/menubar.d.ts +37 -0
  367. package/dist/types/components/messageScroller.d.ts +2 -14
  368. package/dist/types/components/mixedChart.d.ts +15 -6
  369. package/dist/types/components/navigationRail.d.ts +16 -5
  370. package/dist/types/components/particles.d.ts +8 -4
  371. package/dist/types/components/pieChart.d.ts +32 -7
  372. package/dist/types/components/pullToRefresh.d.ts +80 -0
  373. package/dist/types/components/questionnaire.d.ts +58 -16
  374. package/dist/types/components/radarChart.d.ts +10 -6
  375. package/dist/types/components/radialChart.d.ts +58 -7
  376. package/dist/types/components/registry.d.ts +73 -3
  377. package/dist/types/components/richTextEditor.d.ts +6 -14
  378. package/dist/types/components/sankeyChart.d.ts +72 -0
  379. package/dist/types/components/scatterChart.d.ts +102 -0
  380. package/dist/types/components/scrollspy.d.ts +3 -5
  381. package/dist/types/components/select.d.ts +43 -30
  382. package/dist/types/components/showMore.d.ts +51 -0
  383. package/dist/types/components/slider.d.ts +3 -15
  384. package/dist/types/components/snackbar.d.ts +61 -0
  385. package/dist/types/components/swipeActions.d.ts +81 -0
  386. package/dist/types/components/tabs.d.ts +89 -27
  387. package/dist/types/components/timepicker.d.ts +113 -21
  388. package/dist/types/components/tooltip.d.ts +56 -20
  389. package/dist/types/components/treeSelect.d.ts +106 -0
  390. package/dist/types/components/treemapChart.d.ts +56 -0
  391. package/dist/types/core/component.d.ts +43 -25
  392. package/dist/types/core/formControl.d.ts +21 -0
  393. package/dist/types/core/spring.d.ts +20 -0
  394. package/dist/types/core/utils.d.ts +85 -72
  395. package/dist/types/modular.d.ts +33 -1
  396. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
  397. package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
  398. package/package.json +10 -8
  399. package/src/sass/README.md +27 -18
  400. package/src/sass/abstracts/_elevation.scss +13 -7
  401. package/src/sass/abstracts/_index.scss +1 -0
  402. package/src/sass/abstracts/_mixins.scss +422 -36
  403. package/src/sass/abstracts/_spring.scss +63 -0
  404. package/src/sass/abstracts/_variables.scss +39 -21
  405. package/src/sass/base/_fonts.scss +61 -48
  406. package/src/sass/base/_global.scss +104 -24
  407. package/src/sass/base/_index.scss +2 -0
  408. package/src/sass/base/_normalize.scss +59 -114
  409. package/src/sass/base/_print.scss +21 -0
  410. package/src/sass/base/_prose.scss +68 -0
  411. package/src/sass/base/_typography.scss +9 -5
  412. package/src/sass/components/_accordion.scss +9 -16
  413. package/src/sass/components/_alert.scss +102 -0
  414. package/src/sass/components/_aura.scss +8 -3
  415. package/src/sass/components/_avatar.scss +3 -3
  416. package/src/sass/components/_back-to-top.scss +38 -0
  417. package/src/sass/components/_badges.scss +6 -5
  418. package/src/sass/components/_bar-chart.scss +41 -19
  419. package/src/sass/components/_bottom-sheet.scss +44 -16
  420. package/src/sass/components/_breadcrumb.scss +8 -1
  421. package/src/sass/components/_button-groups.scss +15 -25
  422. package/src/sass/components/_buttons.scss +156 -63
  423. package/src/sass/components/_calendar.scss +246 -0
  424. package/src/sass/components/_cards.scss +36 -44
  425. package/src/sass/components/_carousel.scss +27 -103
  426. package/src/sass/components/_cascader.scss +142 -0
  427. package/src/sass/components/_chips.scss +36 -46
  428. package/src/sass/components/_column-chart.scss +19 -12
  429. package/src/sass/components/_command-palette.scss +4 -7
  430. package/src/sass/components/_confetti.scss +0 -2
  431. package/src/sass/components/_countdown.scss +1 -1
  432. package/src/sass/components/_data-table.scss +162 -25
  433. package/src/sass/components/_datepicker.scss +54 -40
  434. package/src/sass/components/_description-list.scss +85 -0
  435. package/src/sass/components/_dialog.scss +42 -41
  436. package/src/sass/components/_docked-display.scss +1 -3
  437. package/src/sass/components/_drag-handle.scss +16 -20
  438. package/src/sass/components/_expanding-card.scss +20 -9
  439. package/src/sass/components/_fab-menu.scss +44 -32
  440. package/src/sass/components/_funnel-chart.scss +124 -0
  441. package/src/sass/components/_heatmap-chart.scss +111 -22
  442. package/src/sass/components/_icon-buttons.scss +7 -7
  443. package/src/sass/components/_icons-material-design.scss +2 -2
  444. package/src/sass/components/_image-compare.scss +108 -0
  445. package/src/sass/components/_index.scss +20 -0
  446. package/src/sass/components/_keypad.scss +39 -19
  447. package/src/sass/components/_kpi.scss +6 -11
  448. package/src/sass/components/_lightbox.scss +24 -13
  449. package/src/sass/components/_line-chart.scss +16 -2
  450. package/src/sass/components/_list.scss +59 -14
  451. package/src/sass/components/_loading-indicator.scss +1 -0
  452. package/src/sass/components/_loading-overlay.scss +105 -0
  453. package/src/sass/components/_map.scss +33 -11
  454. package/src/sass/components/_marquee.scss +3 -2
  455. package/src/sass/components/_mega-menu.scss +137 -0
  456. package/src/sass/components/_menu.scss +143 -123
  457. package/src/sass/components/_menubar.scss +59 -0
  458. package/src/sass/components/_message-scroller.scss +2 -2
  459. package/src/sass/components/_message.scss +3 -3
  460. package/src/sass/components/_mixed-chart.scss +37 -9
  461. package/src/sass/components/_modal-display.scss +21 -0
  462. package/src/sass/components/_navbar.scss +34 -20
  463. package/src/sass/components/_navigation-bar.scss +15 -77
  464. package/src/sass/components/_navigation-rail.scss +151 -92
  465. package/src/sass/components/_org-chart.scss +192 -0
  466. package/src/sass/components/_page-footer.scss +1 -1
  467. package/src/sass/components/_pagination.scss +6 -13
  468. package/src/sass/components/_panes.scss +32 -26
  469. package/src/sass/components/_particles.scss +0 -2
  470. package/src/sass/components/_pie-chart.scss +91 -11
  471. package/src/sass/components/_popover.scss +18 -5
  472. package/src/sass/components/_progress.scss +152 -31
  473. package/src/sass/components/_pull-to-refresh.scss +90 -0
  474. package/src/sass/components/_questionnaire.scss +74 -3
  475. package/src/sass/components/_radar-chart.scss +38 -10
  476. package/src/sass/components/_radial-chart.scss +113 -5
  477. package/src/sass/components/_rich-text-editor.scss +2 -2
  478. package/src/sass/components/_sankey-chart.scss +114 -0
  479. package/src/sass/components/_scatter-chart.scss +153 -0
  480. package/src/sass/components/_scrim.scss +0 -2
  481. package/src/sass/components/_scrollspy.scss +0 -2
  482. package/src/sass/components/_search.scss +26 -22
  483. package/src/sass/components/_show-more.scss +8 -0
  484. package/src/sass/components/_side-sheet.scss +23 -37
  485. package/src/sass/components/_skeleton.scss +2 -4
  486. package/src/sass/components/_snackbar.scss +27 -21
  487. package/src/sass/components/_split-button.scss +5 -5
  488. package/src/sass/components/_stat.scss +3 -8
  489. package/src/sass/components/_stepper.scss +1 -1
  490. package/src/sass/components/_swipe-actions.scss +71 -0
  491. package/src/sass/components/_tabs.scss +51 -32
  492. package/src/sass/components/_timeline.scss +12 -12
  493. package/src/sass/components/_timepicker.scss +109 -78
  494. package/src/sass/components/_toolbar.scss +35 -43
  495. package/src/sass/components/_tooltip.scss +21 -12
  496. package/src/sass/components/_tour.scss +89 -0
  497. package/src/sass/components/_transfer-list.scss +73 -0
  498. package/src/sass/components/_transitions.scss +4 -4
  499. package/src/sass/components/_tree.scss +3 -16
  500. package/src/sass/components/_treemap-chart.scss +122 -0
  501. package/src/sass/components/forms/_checkboxes.scss +106 -24
  502. package/src/sass/components/forms/_color-picker.scss +135 -0
  503. package/src/sass/components/forms/_color-swatches.scss +85 -0
  504. package/src/sass/components/forms/_drop-zone.scss +15 -9
  505. package/src/sass/components/forms/_fieldset.scss +7 -7
  506. package/src/sass/components/forms/_file-input.scss +6 -8
  507. package/src/sass/components/forms/_index.scss +3 -1
  508. package/src/sass/components/forms/_input-fields.scss +254 -90
  509. package/src/sass/components/forms/_radio-buttons.scss +33 -94
  510. package/src/sass/components/forms/_rating.scss +2 -32
  511. package/src/sass/components/forms/_select.scss +199 -20
  512. package/src/sass/components/forms/_slider.scss +91 -94
  513. package/src/sass/components/forms/_switches.scss +53 -164
  514. package/src/sass/custom.scss +10 -1
  515. package/src/sass/expressive.scss +3 -63
  516. package/src/sass/tokens/_contrast.scss +94 -0
  517. package/src/sass/tokens/_elevation.scss +16 -0
  518. package/src/sass/tokens/_index.scss +5 -0
  519. package/src/sass/tokens/_motion.scss +109 -0
  520. package/src/sass/tokens/_reference.scss +72 -141
  521. package/src/sass/tokens/_shape.scss +38 -0
  522. package/src/sass/tokens/_stacking.scss +27 -0
  523. package/src/sass/tokens/_state.scss +0 -2
  524. package/src/sass/tokens/_theme.scss +10 -1
  525. package/src/sass/tokens/_vibrant.scss +2 -5
  526. package/src/sass/utilities/_defer-render.scss +17 -0
  527. package/src/sass/utilities/_helpers.scss +183 -26
  528. package/src/sass/utilities/_index.scss +1 -0
  529. package/src/sass/utilities/_scroll-area.scss +0 -2
  530. package/src/sass/utilities/_spacing.scss +52 -34
  531. package/src/sass/utilities/_typescale.scss +8 -1
  532. package/src/sass/utilities/_visibility.scss +47 -76
  533. package/src/sass/utilities/_z-depth.scss +7 -4
  534. package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
  535. package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
  536. package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
  537. package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
  538. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
  539. package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
  540. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
  541. package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
  543. package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
  544. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
  546. package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
  547. package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
  548. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
  549. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
  551. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
  553. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
  554. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
  556. package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
  558. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
  559. package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
  560. package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
  562. package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
  564. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
  565. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
  567. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
  568. package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
  569. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
  570. package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
  572. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
  573. package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
  574. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
  575. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
  578. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
  580. package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
  582. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
  584. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
  586. package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
  587. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
  589. package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
  590. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
  591. package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
  592. package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
  593. package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
  594. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
  596. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
  597. package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
  598. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
  599. package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
  600. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
  602. /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
@@ -0,0 +1,224 @@
1
+ import {
2
+ Component
3
+ } from "./chunk-CMGXGYUC.mjs";
4
+ import {
5
+ Utils
6
+ } from "./chunk-ZVLOUDIJ.mjs";
7
+
8
+ // src/ts/components/keypad.ts
9
+ var _defaults = {
10
+ onKey: null,
11
+ i18n: {
12
+ tooShort: (minLength) => `Use at least ${minLength} characters.`
13
+ }
14
+ };
15
+ var isField = (el) => el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement;
16
+ var instances = /* @__PURE__ */ new Set();
17
+ var touched = /* @__PURE__ */ new WeakSet();
18
+ var typed = /* @__PURE__ */ new WeakMap();
19
+ var marked = /* @__PURE__ */ new WeakMap();
20
+ function markShort(field, message) {
21
+ if (!message) return unmark(field);
22
+ if (field.validity.customError) return;
23
+ field.setCustomValidity(message);
24
+ marked.set(field, message);
25
+ }
26
+ var unmark = (field) => {
27
+ if (marked.get(field) === field.validationMessage) field.setCustomValidity("");
28
+ marked.delete(field);
29
+ };
30
+ var segmenter;
31
+ function keyFor(e) {
32
+ const key = e.target.closest?.("button");
33
+ if (!key) return null;
34
+ const keypad = key.closest(".keypad, .keyboard")?.["Expressive_Keypad"];
35
+ if (keypad) return [keypad, key];
36
+ const wrapper = key.dataset.key && key.closest(".field");
37
+ if (!wrapper) return null;
38
+ for (const other of instances) {
39
+ const field = other.target;
40
+ if (field && wrapper.contains(field)) return [other, key];
41
+ }
42
+ return null;
43
+ }
44
+ var rootListeners = [
45
+ // A pointer press on a key would move focus off the field and hide its
46
+ // caret. Keep focus where it is while the field has it.
47
+ ["mousedown", (e) => {
48
+ const hit = keyFor(e);
49
+ if (hit && hit[0]._root?.activeElement === hit[0].target) e.preventDefault();
50
+ }],
51
+ ["click", (e) => {
52
+ const hit = keyFor(e);
53
+ if (hit) hit[0]._press(hit[1]);
54
+ }],
55
+ ["focusin", (e) => {
56
+ if (isField(e.target)) touched.add(e.target);
57
+ }],
58
+ ["input", (e) => {
59
+ if (isField(e.target)) typed.get(e.target)?._checkLength(e.target);
60
+ }],
61
+ // A reset empties the fields, so the keypad's messages go with their values.
62
+ ["reset", (e) => {
63
+ for (const el of e.target.elements ?? []) if (isField(el)) unmark(el);
64
+ }],
65
+ // A hardware key held down in a field lights the keypad key it matches.
66
+ ["keydown", (e) => light(e, true)],
67
+ ["keyup", (e) => light(e, false)]
68
+ ];
69
+ var attachEvents = ["focusin", "mousedown", "click"];
70
+ function light(e, on) {
71
+ for (const keypad of instances) {
72
+ if (!on || keypad.target === e.target) keypad._light(e.key, on);
73
+ }
74
+ }
75
+ var isKey = (key) => !key.disabled && (!!key.dataset.key || key.hasAttribute("value"));
76
+ var matches = (key, name) => key.dataset.key === name || key.hasAttribute("value") && key.value.toLowerCase() === name.toLowerCase();
77
+ var Keypad = class extends Component {
78
+ constructor(el, options) {
79
+ super(el, options);
80
+ /** Fields this keypad typed into, whose messages it clears on destroy. */
81
+ this._fields = /* @__PURE__ */ new Set();
82
+ // Listen on the keypad's document (9) or shadow root (11). A keypad
83
+ // initialized while detached has neither yet, so it waits on its own element
84
+ // for the first focus or press after insertion. The root listeners added
85
+ // then still hear that same event as it bubbles up.
86
+ this._attach = () => {
87
+ const root = this.el.getRootNode();
88
+ const attached = root.nodeType === 9 || root.nodeType === 11;
89
+ this._waitForInsertion(!attached);
90
+ if (!attached) return;
91
+ this._root = root;
92
+ this._listen("addEventListener");
93
+ const active = this._root.activeElement;
94
+ if (isField(active)) touched.add(active);
95
+ };
96
+ this._root = null;
97
+ instances.add(this);
98
+ this._attach();
99
+ }
100
+ _waitForInsertion(wait) {
101
+ for (const type of attachEvents) this.el[wait ? "addEventListener" : "removeEventListener"](type, this._attach);
102
+ }
103
+ // Only the first keypad on a root adds the listeners, and only the last removes them.
104
+ _listen(method) {
105
+ if (!this._root || this._shared()) return;
106
+ for (const [type, listener] of rootListeners) this._root[method](type, listener);
107
+ }
108
+ static get defaults() {
109
+ return _defaults;
110
+ }
111
+ destroy() {
112
+ instances.delete(this);
113
+ for (const field of this._fields) {
114
+ unmark(field);
115
+ if (typed.get(field) === this) typed.delete(field);
116
+ }
117
+ this._waitForInsertion(false);
118
+ this._listen("removeEventListener");
119
+ super.destroy();
120
+ }
121
+ /** The text field named by `aria-controls`, if there is one. */
122
+ get target() {
123
+ const id = this.el.getAttribute("aria-controls");
124
+ const field = id ? Utils.getElementById(this.el, id) : null;
125
+ return isField(field) ? field : null;
126
+ }
127
+ // Whether another keypad already listens on this one's root.
128
+ _shared() {
129
+ for (const other of instances) if (other !== this && other._root === this._root) return true;
130
+ return false;
131
+ }
132
+ /** @internal */
133
+ _press(key) {
134
+ if (!isKey(key)) return;
135
+ const pressed = this._act(key);
136
+ this.options.onKey?.(pressed);
137
+ }
138
+ /** Runs a key and returns what onKey hears: the typed text or the function key's name. */
139
+ _act(key) {
140
+ const name = key.dataset.key;
141
+ if (name === "Layer") return this._layer(key);
142
+ if (name === "Shift" || name === "CapsLock") return this._latch(key, name);
143
+ return this._type(key, name);
144
+ }
145
+ /** Shift and Caps Lock latch: pressed until pressed again, or for Shift until the next character. */
146
+ _latch(key, name) {
147
+ key.setAttribute("aria-pressed", String(key.getAttribute("aria-pressed") !== "true"));
148
+ return name;
149
+ }
150
+ /** Shows the layer the key names and hides the others. */
151
+ _layer(key) {
152
+ for (const part of this.el.querySelectorAll("[data-layer]")) part.hidden = part.dataset.layer !== key.value;
153
+ return "Layer";
154
+ }
155
+ _type(key, name) {
156
+ const text = name ? "" : this._case(key.value);
157
+ const field = this._editable;
158
+ if (field) this._apply(field, name, text);
159
+ return name ?? text;
160
+ }
161
+ /** A character as Shift or Caps Lock writes it. Shift is one-shot: it releases after one character. */
162
+ _case(text) {
163
+ const shift = this.el.querySelector('[data-key="Shift"][aria-pressed="true"]');
164
+ shift?.setAttribute("aria-pressed", "false");
165
+ const upper = shift || this.el.querySelector('[data-key="CapsLock"][aria-pressed="true"]');
166
+ return upper ? text.toUpperCase() : text;
167
+ }
168
+ /** The target field, unless it is disabled or read-only. */
169
+ get _editable() {
170
+ const field = this.target;
171
+ return field && !field.matches(":disabled") && !field.readOnly ? field : null;
172
+ }
173
+ _apply(field, name, text) {
174
+ if (name === "Enter") return this._enter(field);
175
+ if (name === "Backspace") return this._edit(field, "", "deleteContentBackward");
176
+ if (text) this._edit(field, text, "insertText");
177
+ }
178
+ /** Enter submits an input's form and starts a new line in a textarea. */
179
+ _enter(field) {
180
+ if (field instanceof HTMLInputElement) field.form?.requestSubmit();
181
+ else this._edit(field, "\n", "insertLineBreak");
182
+ }
183
+ /** @internal Lights or clears every key a hardware key matches. */
184
+ _light(name, on) {
185
+ for (const key of this.el.querySelectorAll("button")) {
186
+ if (matches(key, name)) key.classList.toggle("pressed", on);
187
+ }
188
+ }
189
+ /** @internal A non-empty value shorter than minlength is invalid, as typing would make it. */
190
+ _checkLength(field) {
191
+ if (field.minLength < 1) return;
192
+ const short = field.value.length > 0 && field.value.length < field.minLength;
193
+ markShort(field, short ? this.options.i18n.tooShort(field.minLength) : "");
194
+ }
195
+ _edit(field, text, inputType) {
196
+ const { value } = field;
197
+ let start = field.selectionStart ?? value.length;
198
+ let end = field.selectionEnd ?? value.length;
199
+ if (start === 0 && end === 0 && !touched.has(field)) start = end = value.length;
200
+ if (inputType === "deleteContentBackward" && start === end && start) {
201
+ const tail = value.slice(Math.max(0, start - 64), start);
202
+ start -= (segmenter ?? (segmenter = new Intl.Segmenter())).segment(tail).containing(tail.length - 1).segment.length;
203
+ }
204
+ if (start === end && !text) return;
205
+ if (text && field.maxLength >= 0 && value.length - (end - start) + text.length > field.maxLength) return;
206
+ const next = value.slice(0, start) + text + value.slice(end);
207
+ field.value = next;
208
+ if (next && !field.value) {
209
+ field.value = value;
210
+ return;
211
+ }
212
+ if (field.selectionStart !== null) field.setSelectionRange(start + text.length, start + text.length);
213
+ touched.add(field);
214
+ typed.set(field, this);
215
+ this._fields.add(field);
216
+ field.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true, inputType, data: text || null }));
217
+ }
218
+ };
219
+ Keypad.key = "Expressive_Keypad";
220
+
221
+ export {
222
+ Keypad
223
+ };
224
+ //# sourceMappingURL=chunk-QACZ6TUP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/ts/components/keypad.ts"],
4
+ "sourcesContent": ["import { Component, BaseOptions } from '../core/component';\nimport { Utils } from '../core/utils';\n\nexport interface KeypadOptions extends BaseOptions {\n /**\n * Called after every key press with the text typed ('7', 'A', ' ') or the\n * function key's name ('Backspace', 'Enter', 'Shift').\n * @default null\n */\n onKey: ((key: string) => void) | null;\n /** Text the keypad writes. */\n i18n: Partial<KeypadI18n>;\n}\n\nexport interface KeypadI18n {\n /**\n * The validation message for a field whose keypad-typed value is shorter\n * than its minlength, which the browser only checks after typing.\n */\n tooShort: (minLength: number) => string;\n}\n\nconst _defaults: KeypadOptions = {\n onKey: null,\n i18n: {\n tooShort: (minLength) => `Use at least ${minLength} characters.`\n }\n};\n\ntype Field = HTMLInputElement | HTMLTextAreaElement;\ntype Root = Document | ShadowRoot;\n\nconst isField = (el: unknown): el is Field => el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement;\n\nconst instances = new Set<Keypad>();\n// Fields that have had focus, so their caret is one a person placed.\nconst touched = new WeakSet<Field>();\n// Fields a keypad typed into, with that keypad. A value set by script skips\n// minlength, so the keypad checks the length itself on every input.\nconst typed = new WeakMap<Field, Keypad>();\n// The too-short message a keypad set on a field, so it clears only that one.\nconst marked = new WeakMap<Field, string>();\n\n/** Sets the keypad's too-short message, unless the page set one; '' clears the keypad's own. */\nfunction markShort(field: Field, message: string) {\n if (!message) return unmark(field);\n if (field.validity.customError) return;\n field.setCustomValidity(message);\n marked.set(field, message);\n}\n\n/** Clears the keypad's message, unless the page has since put its own in its place. */\nconst unmark = (field: Field) => {\n if (marked.get(field) === field.validationMessage) field.setCustomValidity('');\n marked.delete(field);\n};\nlet segmenter: Intl.Segmenter | undefined;\n\n// One listener per document or shadow root serves every keypad in it, kept\n// while any keypad lives there. A key inside a keypad belongs to that keypad.\n// A `data-key` key inside a field's `.field` wrapper, such as a trailing\n// Backspace, belongs to the keypad that controls the field, found at press\n// time: a field rendered after init or a changed aria-controls still works,\n// and a press runs once however many keypads share the field. Other buttons\n// there, such as a password toggle, stay their own.\nfunction keyFor(e: Event): [Keypad, HTMLButtonElement] | null {\n const key = (e.target as Element).closest?.('button');\n if (!key) return null;\n const keypad = key.closest('.keypad, .keyboard')?.['Expressive_Keypad'] as Keypad | undefined;\n if (keypad) return [keypad, key];\n const wrapper = key.dataset.key && key.closest('.field');\n if (!wrapper) return null;\n for (const other of instances) {\n const field = other.target;\n if (field && wrapper.contains(field)) return [other, key];\n }\n return null;\n}\n\nconst rootListeners: [string, EventListener][] = [\n // A pointer press on a key would move focus off the field and hide its\n // caret. Keep focus where it is while the field has it.\n ['mousedown', (e) => {\n const hit = keyFor(e);\n if (hit && hit[0]._root?.activeElement === hit[0].target) e.preventDefault();\n }],\n ['click', (e) => {\n const hit = keyFor(e);\n if (hit) hit[0]._press(hit[1]);\n }],\n ['focusin', (e) => {\n if (isField(e.target)) touched.add(e.target);\n }],\n ['input', (e) => {\n if (isField(e.target)) typed.get(e.target)?._checkLength(e.target);\n }],\n // A reset empties the fields, so the keypad's messages go with their values.\n ['reset', (e) => {\n for (const el of (e.target as HTMLFormElement).elements ?? []) if (isField(el)) unmark(el);\n }],\n // A hardware key held down in a field lights the keypad key it matches.\n ['keydown', (e) => light(e, true)],\n ['keyup', (e) => light(e, false)]\n];\nconst attachEvents = ['focusin', 'mousedown', 'click'];\n\n/** Lights or clears the key matching a hardware key; a release clears it wherever focus went. */\nfunction light(e: Event, on: boolean) {\n for (const keypad of instances) {\n if (!on || keypad.target === e.target) keypad._light((e as KeyboardEvent).key, on);\n }\n}\n\n/** Whether a button types its value or runs a function key; any other button is not a key. */\nconst isKey = (key: HTMLButtonElement) => !key.disabled && (!!key.dataset.key || key.hasAttribute('value'));\n\n/** Whether a keypad key is the one a hardware key names, by its function or, ignoring case, its value. */\nconst matches = (key: HTMLButtonElement, name: string) =>\n key.dataset.key === name || (key.hasAttribute('value') && key.value.toLowerCase() === name.toLowerCase());\n\n/**\n * Keypad and keyboard. A `.keypad` or `.keyboard` whose `aria-controls`\n * names a text field types into it: a key's `value` is inserted at the caret,\n * and `data-key=\"Backspace\"`, `\"Enter\"`, `\"Shift\"` and `\"CapsLock\"` edit,\n * submit and capitalize. A `data-key=\"Layer\"` key shows the elements whose\n * `data-layer` matches its `value` and hides the other layers. The field\n * receives the same `input` event typing would fire.\n */\nexport class Keypad extends Component<KeypadOptions> {\n /** @internal */\n _root: Root | null;\n /** Fields this keypad typed into, whose messages it clears on destroy. */\n private _fields = new Set<Field>();\n\n constructor(el: HTMLElement, options: Partial<KeypadOptions>) {\n super(el, options);\n this._root = null;\n instances.add(this);\n this._attach();\n }\n\n // Listen on the keypad's document (9) or shadow root (11). A keypad\n // initialized while detached has neither yet, so it waits on its own element\n // for the first focus or press after insertion. The root listeners added\n // then still hear that same event as it bubbles up.\n private _attach = () => {\n const root = this.el.getRootNode();\n const attached = root.nodeType === 9 || root.nodeType === 11;\n this._waitForInsertion(!attached);\n if (!attached) return;\n this._root = root as Root;\n this._listen('addEventListener');\n const active = this._root.activeElement;\n if (isField(active)) touched.add(active);\n };\n\n private _waitForInsertion(wait: boolean) {\n for (const type of attachEvents) this.el[wait ? 'addEventListener' : 'removeEventListener'](type, this._attach);\n }\n\n // Only the first keypad on a root adds the listeners, and only the last removes them.\n private _listen(method: 'addEventListener' | 'removeEventListener') {\n if (!this._root || this._shared()) return;\n for (const [type, listener] of rootListeners) this._root[method](type, listener);\n }\n\n static get defaults(): KeypadOptions {\n return _defaults;\n }\n\n static key = 'Expressive_Keypad';\n\n destroy() {\n instances.delete(this);\n for (const field of this._fields) {\n unmark(field);\n if (typed.get(field) === this) typed.delete(field);\n }\n this._waitForInsertion(false);\n this._listen('removeEventListener');\n super.destroy();\n }\n\n /** The text field named by `aria-controls`, if there is one. */\n get target(): Field | null {\n const id = this.el.getAttribute('aria-controls');\n const field = id ? Utils.getElementById(this.el, id) : null;\n return isField(field) ? field : null;\n }\n\n // Whether another keypad already listens on this one's root.\n private _shared() {\n for (const other of instances) if (other !== this && other._root === this._root) return true;\n return false;\n }\n\n /** @internal */\n _press(key: HTMLButtonElement) {\n if (!isKey(key)) return;\n // Run the key first: an optional call skips its argument when there is no onKey.\n const pressed = this._act(key);\n this.options.onKey?.(pressed);\n }\n\n /** Runs a key and returns what onKey hears: the typed text or the function key's name. */\n private _act(key: HTMLButtonElement) {\n const name = key.dataset.key;\n if (name === 'Layer') return this._layer(key);\n if (name === 'Shift' || name === 'CapsLock') return this._latch(key, name);\n return this._type(key, name);\n }\n\n /** Shift and Caps Lock latch: pressed until pressed again, or for Shift until the next character. */\n private _latch(key: HTMLButtonElement, name: string) {\n key.setAttribute('aria-pressed', String(key.getAttribute('aria-pressed') !== 'true'));\n return name;\n }\n\n /** Shows the layer the key names and hides the others. */\n private _layer(key: HTMLButtonElement) {\n for (const part of this.el.querySelectorAll<HTMLElement>('[data-layer]')) part.hidden = part.dataset.layer !== key.value;\n return 'Layer';\n }\n\n private _type(key: HTMLButtonElement, name: string | undefined) {\n const text = name ? '' : this._case(key.value);\n const field = this._editable;\n if (field) this._apply(field, name, text);\n return name ?? text;\n }\n\n /** A character as Shift or Caps Lock writes it. Shift is one-shot: it releases after one character. */\n private _case(text: string) {\n const shift = this.el.querySelector('[data-key=\"Shift\"][aria-pressed=\"true\"]');\n shift?.setAttribute('aria-pressed', 'false');\n const upper = shift || this.el.querySelector('[data-key=\"CapsLock\"][aria-pressed=\"true\"]');\n return upper ? text.toUpperCase() : text;\n }\n\n /** The target field, unless it is disabled or read-only. */\n private get _editable(): Field | null {\n const field = this.target;\n return field && !field.matches(':disabled') && !field.readOnly ? field : null;\n }\n\n private _apply(field: Field, name: string | undefined, text: string) {\n if (name === 'Enter') return this._enter(field);\n if (name === 'Backspace') return this._edit(field, '', 'deleteContentBackward');\n if (text) this._edit(field, text, 'insertText');\n }\n\n /** Enter submits an input's form and starts a new line in a textarea. */\n private _enter(field: Field) {\n if (field instanceof HTMLInputElement) field.form?.requestSubmit();\n else this._edit(field, '\\n', 'insertLineBreak');\n }\n\n /** @internal Lights or clears every key a hardware key matches. */\n _light(name: string, on: boolean) {\n for (const key of this.el.querySelectorAll<HTMLButtonElement>('button')) {\n if (matches(key, name)) key.classList.toggle('pressed', on);\n }\n }\n\n /** @internal A non-empty value shorter than minlength is invalid, as typing would make it. */\n _checkLength(field: Field) {\n // Without minlength a field keeps any message the page set.\n if (field.minLength < 1) return;\n const short = field.value.length > 0 && field.value.length < field.minLength;\n markShort(field, short ? this.options.i18n.tooShort!(field.minLength) : '');\n }\n\n private _edit(field: Field, text: string, inputType: string) {\n const { value } = field;\n // Number and email inputs expose no selection; type at the end.\n let start = field.selectionStart ?? value.length;\n let end = field.selectionEnd ?? value.length;\n // A field that has never had focus may report its caret at 0. Type at the\n // end, where a reader expects the next character.\n if (start === 0 && end === 0 && !touched.has(field)) start = end = value.length;\n // Backspace removes the whole character before the caret, emoji included.\n // A short tail holds the last grapheme, so long text is not walked.\n if (inputType === 'deleteContentBackward' && start === end && start) {\n const tail = value.slice(Math.max(0, start - 64), start);\n start -= (segmenter ??= new Intl.Segmenter()).segment(tail).containing(tail.length - 1).segment.length;\n }\n if (start === end && !text) return;\n if (text && field.maxLength >= 0 && value.length - (end - start) + text.length > field.maxLength) return;\n const next = value.slice(0, start) + text + value.slice(end);\n field.value = next;\n // A number input empties itself on a partial value such as \"12.\" or \"-\".\n // Keep what was there; the docs point decimals and signs at a text field.\n if (next && !field.value) {\n field.value = value;\n return;\n }\n if (field.selectionStart !== null) field.setSelectionRange(start + text.length, start + text.length);\n touched.add(field);\n typed.set(field, this);\n this._fields.add(field);\n // Composed, so listeners outside a shadow root hear it as they do typing.\n field.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true, inputType, data: text || null }));\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }