@mhmo91/schmancy 0.2.114 → 0.2.116

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 (305) hide show
  1. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Bold.woff +0 -0
  2. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Light.woff +0 -0
  3. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Medium.woff +0 -0
  4. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Regular.woff +0 -0
  5. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Thin.woff +0 -0
  6. package/dist/GT-Eesti/GT-Eesti-Pro-Display-UBold.woff +0 -0
  7. package/dist/GT-Eesti/GT-Eesti-Pro-Display-ULight.woff +0 -0
  8. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold-Italic.woff +0 -0
  9. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold.woff +0 -0
  10. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book-Italic.woff +0 -0
  11. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book.woff +0 -0
  12. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Light.woff +0 -0
  13. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium-Italic.woff +0 -0
  14. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium.woff +0 -0
  15. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Regular.woff +0 -0
  16. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin-Italic.woff +0 -0
  17. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin.woff +0 -0
  18. package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight-Italic.woff +0 -0
  19. package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight.woff +0 -0
  20. package/dist/GT-Eesti/GT-Eesti-Text-Regular.woff2 +0 -0
  21. package/dist/{animated-text-B576YswO.cjs → animated-text-DmtCT-2q.cjs} +2 -2
  22. package/dist/{animated-text-B576YswO.cjs.map → animated-text-DmtCT-2q.cjs.map} +1 -1
  23. package/dist/{animated-text-BuRbVM-X.js → animated-text-DrH4Miy7.js} +3 -3
  24. package/dist/{animated-text-BuRbVM-X.js.map → animated-text-DrH4Miy7.js.map} +1 -1
  25. package/dist/animated-text.cjs +1 -1
  26. package/dist/animated-text.js +1 -1
  27. package/dist/area.cjs +1 -1
  28. package/dist/{area.component-BFj0Dvfb.cjs → area.component-Bg1zJKiZ.cjs} +2 -2
  29. package/dist/{area.component-BFj0Dvfb.cjs.map → area.component-Bg1zJKiZ.cjs.map} +1 -1
  30. package/dist/{area.component-Bo5aB8BH.js → area.component-CmsssAq_.js} +10 -10
  31. package/dist/{area.component-Bo5aB8BH.js.map → area.component-CmsssAq_.js.map} +1 -1
  32. package/dist/area.js +1 -1
  33. package/dist/autocomplete-BFj0YUYW.cjs +57 -0
  34. package/dist/autocomplete-BFj0YUYW.cjs.map +1 -0
  35. package/dist/autocomplete-BsrWuTsP.js +295 -0
  36. package/dist/autocomplete-BsrWuTsP.js.map +1 -0
  37. package/dist/autocomplete.cjs +1 -1
  38. package/dist/autocomplete.js +1 -1
  39. package/dist/busy.cjs +1 -1
  40. package/dist/busy.js +1 -1
  41. package/dist/button.cjs +1 -1
  42. package/dist/button.js +1 -1
  43. package/dist/card.cjs +1 -1
  44. package/dist/card.js +1 -1
  45. package/dist/{checkbox-FM06WS9G.cjs → checkbox-Cb7nmI6P.cjs} +2 -2
  46. package/dist/{checkbox-FM06WS9G.cjs.map → checkbox-Cb7nmI6P.cjs.map} +1 -1
  47. package/dist/{checkbox-DQYRlKod.js → checkbox-DUP_qnel.js} +2 -2
  48. package/dist/{checkbox-DQYRlKod.js.map → checkbox-DUP_qnel.js.map} +1 -1
  49. package/dist/checkbox.cjs +1 -1
  50. package/dist/checkbox.js +1 -1
  51. package/dist/{chips-DTDFQDv-.js → chips-0hsW-Rxx.js} +14 -14
  52. package/dist/{chips-DTDFQDv-.js.map → chips-0hsW-Rxx.js.map} +1 -1
  53. package/dist/{chips-CJZbtp-O.cjs → chips-CiesiXpI.cjs} +2 -2
  54. package/dist/{chips-CJZbtp-O.cjs.map → chips-CiesiXpI.cjs.map} +1 -1
  55. package/dist/chips.cjs +1 -1
  56. package/dist/chips.js +1 -1
  57. package/dist/color-D8r6dpWm.cjs +2 -0
  58. package/dist/color-D8r6dpWm.cjs.map +1 -0
  59. package/dist/color-DrgmL7QT.js +19 -0
  60. package/dist/color-DrgmL7QT.js.map +1 -0
  61. package/dist/components.cjs +1 -1
  62. package/dist/components.js +1 -1
  63. package/dist/content-drawer.cjs +1 -1
  64. package/dist/content-drawer.js +1 -1
  65. package/dist/{date-range-CZiZR3OZ.js → date-range-DF_kjOLs.js} +3 -3
  66. package/dist/{date-range-CZiZR3OZ.js.map → date-range-DF_kjOLs.js.map} +1 -1
  67. package/dist/{date-range-FxAO_oqk.cjs → date-range-DvTXqD8e.cjs} +2 -2
  68. package/dist/{date-range-FxAO_oqk.cjs.map → date-range-DvTXqD8e.cjs.map} +1 -1
  69. package/dist/date-range.cjs +1 -1
  70. package/dist/date-range.js +1 -1
  71. package/dist/{delay-gZOjfjX_.js → delay-Cmf_vIaJ.js} +2 -2
  72. package/dist/{delay-gZOjfjX_.js.map → delay-Cmf_vIaJ.js.map} +1 -1
  73. package/dist/{delay-Dzei5ynQ.cjs → delay-DhV8MSPZ.cjs} +2 -2
  74. package/dist/{delay-Dzei5ynQ.cjs.map → delay-DhV8MSPZ.cjs.map} +1 -1
  75. package/dist/delay.cjs +1 -1
  76. package/dist/delay.js +1 -1
  77. package/dist/directives.cjs +1 -1
  78. package/dist/directives.js +5 -4
  79. package/dist/directives.js.map +1 -1
  80. package/dist/{divider-nNk0E_jZ.cjs → divider-4ev5A0v0.cjs} +2 -2
  81. package/dist/{divider-nNk0E_jZ.cjs.map → divider-4ev5A0v0.cjs.map} +1 -1
  82. package/dist/{divider-B-JF8gre.js → divider-B7GoicdG.js} +3 -3
  83. package/dist/{divider-B-JF8gre.js.map → divider-B7GoicdG.js.map} +1 -1
  84. package/dist/divider.cjs +1 -1
  85. package/dist/divider.js +1 -1
  86. package/dist/extra.cjs +1 -1
  87. package/dist/extra.js +1 -1
  88. package/dist/{flex-INEcbqBe.cjs → flex-DFHDHleC.cjs} +2 -2
  89. package/dist/{flex-INEcbqBe.cjs.map → flex-DFHDHleC.cjs.map} +1 -1
  90. package/dist/{flex-CieqpOUS.js → flex-t4F0-R-c.js} +2 -2
  91. package/dist/{flex-CieqpOUS.js.map → flex-t4F0-R-c.js.map} +1 -1
  92. package/dist/{form-CKMp4UzU.cjs → form-D_ShigQq.cjs} +2 -2
  93. package/dist/{form-CKMp4UzU.cjs.map → form-D_ShigQq.cjs.map} +1 -1
  94. package/dist/{form-lcamXnkd.js → form-dVHTERy3.js} +2 -2
  95. package/dist/{form-lcamXnkd.js.map → form-dVHTERy3.js.map} +1 -1
  96. package/dist/form.cjs +1 -1
  97. package/dist/form.js +1 -1
  98. package/dist/{icon-BZqH7sp7.cjs → icon-BNyFKp0p.cjs} +2 -2
  99. package/dist/{icon-BZqH7sp7.cjs.map → icon-BNyFKp0p.cjs.map} +1 -1
  100. package/dist/{icon-CJrmUGTm.js → icon-C3PI8GgN.js} +3 -3
  101. package/dist/{icon-CJrmUGTm.js.map → icon-C3PI8GgN.js.map} +1 -1
  102. package/dist/{icon-button-nMHz4MDw.cjs → icon-button-D4D5bXCm.cjs} +2 -2
  103. package/dist/{icon-button-nMHz4MDw.cjs.map → icon-button-D4D5bXCm.cjs.map} +1 -1
  104. package/dist/{icon-button-BNn0qRfC.js → icon-button-Dr_-8Ey5.js} +3 -3
  105. package/dist/{icon-button-BNn0qRfC.js.map → icon-button-Dr_-8Ey5.js.map} +1 -1
  106. package/dist/icons.cjs +1 -1
  107. package/dist/icons.js +1 -1
  108. package/dist/index.cjs +1 -1
  109. package/dist/index.js +77 -74
  110. package/dist/index.js.map +1 -1
  111. package/dist/input-BHgBONgn.cjs +98 -0
  112. package/dist/input-BHgBONgn.cjs.map +1 -0
  113. package/dist/input-BgmQpY14.js +205 -0
  114. package/dist/input-BgmQpY14.js.map +1 -0
  115. package/dist/input-Bk7EZhOl.cjs +51 -0
  116. package/dist/input-Bk7EZhOl.cjs.map +1 -0
  117. package/dist/{input-CZX1sxBe.js → input-_XU4ILwo.js} +25 -24
  118. package/dist/input-_XU4ILwo.js.map +1 -0
  119. package/dist/input.cjs +1 -1
  120. package/dist/input.js +1 -1
  121. package/dist/layout.cjs +1 -1
  122. package/dist/layout.js +1 -1
  123. package/dist/{list-D4y-Mkap.cjs → list-CCrSL1bZ.cjs} +2 -2
  124. package/dist/{list-D4y-Mkap.cjs.map → list-CCrSL1bZ.cjs.map} +1 -1
  125. package/dist/{list-CjrF4M5H.js → list-r6mo_zcT.js} +2 -2
  126. package/dist/{list-CjrF4M5H.js.map → list-r6mo_zcT.js.map} +1 -1
  127. package/dist/list.cjs +1 -1
  128. package/dist/list.js +1 -1
  129. package/dist/{litElement.mixin-djlKJ0lX.cjs → litElement.mixin-CAXeI5RY.cjs} +2 -2
  130. package/dist/{litElement.mixin-djlKJ0lX.cjs.map → litElement.mixin-CAXeI5RY.cjs.map} +1 -1
  131. package/dist/{litElement.mixin-NzkxESus.js → litElement.mixin-DfYInjJd.js} +2 -2
  132. package/dist/{litElement.mixin-NzkxESus.js.map → litElement.mixin-DfYInjJd.js.map} +1 -1
  133. package/dist/{menu-DAtFS31a.cjs → menu-B6x8xZng.cjs} +2 -2
  134. package/dist/{menu-DAtFS31a.cjs.map → menu-B6x8xZng.cjs.map} +1 -1
  135. package/dist/{menu-Cb5kUAvU.js → menu-yboJ8_V4.js} +3 -3
  136. package/dist/{menu-Cb5kUAvU.js.map → menu-yboJ8_V4.js.map} +1 -1
  137. package/dist/menu.cjs +1 -1
  138. package/dist/menu.js +1 -1
  139. package/dist/mixins/formField.mixin.ts +223 -0
  140. package/dist/nav-drawer.cjs +1 -1
  141. package/dist/nav-drawer.js +1 -1
  142. package/dist/notification.cjs +1 -1
  143. package/dist/notification.js +1 -1
  144. package/dist/{option-CxalubCR.js → option-CmZo8fXU.js} +29 -13
  145. package/dist/option-CmZo8fXU.js.map +1 -0
  146. package/dist/option-gnBrhD_1.cjs +18 -0
  147. package/dist/option-gnBrhD_1.cjs.map +1 -0
  148. package/dist/option.cjs +1 -1
  149. package/dist/option.js +1 -1
  150. package/dist/{outlet-6HZp4fo1.js → outlet-BgJ_WOwi.js} +2 -2
  151. package/dist/{outlet-6HZp4fo1.js.map → outlet-BgJ_WOwi.js.map} +1 -1
  152. package/dist/{outlet-DofHDlGH.cjs → outlet-CSduKjEi.cjs} +2 -2
  153. package/dist/{outlet-DofHDlGH.cjs.map → outlet-CSduKjEi.cjs.map} +1 -1
  154. package/dist/payment-card-form-CVW9uWum.cjs +74 -0
  155. package/dist/{payment-card-form-Bi3yNg4b.cjs.map → payment-card-form-CVW9uWum.cjs.map} +1 -1
  156. package/dist/{payment-card-form-C8FxRlh4.js → payment-card-form-NUTic2b3.js} +183 -134
  157. package/dist/{payment-card-form-C8FxRlh4.js.map → payment-card-form-NUTic2b3.js.map} +1 -1
  158. package/dist/{radio-group-BapuNl8y.js → radio-group-Bl5nhDCh.js} +2 -2
  159. package/dist/{radio-group-BapuNl8y.js.map → radio-group-Bl5nhDCh.js.map} +1 -1
  160. package/dist/{radio-group-A5QxSGOr.cjs → radio-group-CTCnzxmZ.cjs} +2 -2
  161. package/dist/{radio-group-A5QxSGOr.cjs.map → radio-group-CTCnzxmZ.cjs.map} +1 -1
  162. package/dist/radio-group.cjs +1 -1
  163. package/dist/radio-group.js +1 -1
  164. package/dist/ripple-3indJ14o.js +64 -0
  165. package/dist/ripple-3indJ14o.js.map +1 -0
  166. package/dist/ripple-B_wT0zgD.cjs +16 -0
  167. package/dist/ripple-B_wT0zgD.cjs.map +1 -0
  168. package/dist/rxjs-utils.js +4 -4
  169. package/dist/{select-8AjN6LbM.js → select-C2TJxenH.js} +66 -41
  170. package/dist/select-C2TJxenH.js.map +1 -0
  171. package/dist/select-D3yrgnVD.cjs +56 -0
  172. package/dist/select-D3yrgnVD.cjs.map +1 -0
  173. package/dist/select.cjs +1 -1
  174. package/dist/select.js +1 -1
  175. package/dist/sheet-CwzonocJ.cjs +62 -0
  176. package/dist/sheet-CwzonocJ.cjs.map +1 -0
  177. package/dist/sheet-DHyy-OIH.js +244 -0
  178. package/dist/sheet-DHyy-OIH.js.map +1 -0
  179. package/dist/sheet.cjs +1 -1
  180. package/dist/sheet.js +1 -1
  181. package/dist/{slider-BakU-Bdw.js → slider-2mhXBUIM.js} +3 -3
  182. package/dist/{slider-BakU-Bdw.js.map → slider-2mhXBUIM.js.map} +1 -1
  183. package/dist/{slider-B4OCBlQg.cjs → slider-DCJHcXt1.cjs} +2 -2
  184. package/dist/{slider-B4OCBlQg.cjs.map → slider-DCJHcXt1.cjs.map} +1 -1
  185. package/dist/slider.cjs +1 -1
  186. package/dist/slider.js +1 -1
  187. package/dist/{spinner-BDx3SZsl.js → spinner-B9JHqmoP.js} +12 -11
  188. package/dist/{spinner-BDx3SZsl.js.map → spinner-B9JHqmoP.js.map} +1 -1
  189. package/dist/{spinner-C3VJtLgk.cjs → spinner-D-vtqMqq.cjs} +4 -4
  190. package/dist/{spinner-C3VJtLgk.cjs.map → spinner-D-vtqMqq.cjs.map} +1 -1
  191. package/dist/{surface-kjOrb8TO.cjs → surface-DLHFSFU6.cjs} +2 -2
  192. package/dist/{surface-kjOrb8TO.cjs.map → surface-DLHFSFU6.cjs.map} +1 -1
  193. package/dist/{surface-YiaJJQ5m.js → surface-O_-YGi6T.js} +2 -2
  194. package/dist/{surface-YiaJJQ5m.js.map → surface-O_-YGi6T.js.map} +1 -1
  195. package/dist/surface.cjs +1 -1
  196. package/dist/surface.js +1 -1
  197. package/dist/{table-BguYeeBH.js → table-Bvb_ZG7b.js} +2 -2
  198. package/dist/{table-BguYeeBH.js.map → table-Bvb_ZG7b.js.map} +1 -1
  199. package/dist/{table-BZV2dBD5.cjs → table-CdkLZM2b.cjs} +2 -2
  200. package/dist/{table-BZV2dBD5.cjs.map → table-CdkLZM2b.cjs.map} +1 -1
  201. package/dist/table.cjs +1 -1
  202. package/dist/table.js +1 -1
  203. package/dist/{tabs-group-BZFBZ1_G.cjs → tabs-group-B-KvImY2.cjs} +2 -2
  204. package/dist/{tabs-group-BZFBZ1_G.cjs.map → tabs-group-B-KvImY2.cjs.map} +1 -1
  205. package/dist/{tabs-group-H3C6ZnQn.js → tabs-group-CVZ2SEq3.js} +2 -2
  206. package/dist/{tabs-group-H3C6ZnQn.js.map → tabs-group-CVZ2SEq3.js.map} +1 -1
  207. package/dist/tabs.cjs +1 -1
  208. package/dist/tabs.js +1 -1
  209. package/dist/tailwind.mixin-BvhzMkqK.js +43 -0
  210. package/dist/{tailwind.mixin-DklgfhB4.js.map → tailwind.mixin-BvhzMkqK.js.map} +1 -1
  211. package/dist/tailwind.mixin-csgxM8P_.cjs +2 -0
  212. package/dist/{tailwind.mixin-CBhPue3q.cjs.map → tailwind.mixin-csgxM8P_.cjs.map} +1 -1
  213. package/dist/teleport.cjs +1 -1
  214. package/dist/{teleport.component-DY1Q8ilK.js → teleport.component-BRm0yYbM.js} +43 -41
  215. package/dist/{teleport.component-DY1Q8ilK.js.map → teleport.component-BRm0yYbM.js.map} +1 -1
  216. package/dist/{teleport.component-C9Q1WHQe.cjs → teleport.component-D9xuyN_z.cjs} +19 -19
  217. package/dist/{teleport.component-C9Q1WHQe.cjs.map → teleport.component-D9xuyN_z.cjs.map} +1 -1
  218. package/dist/teleport.js +1 -1
  219. package/dist/textarea-BaTTXEtZ.cjs +42 -0
  220. package/dist/{textarea-BCWPb0Sn.cjs.map → textarea-BaTTXEtZ.cjs.map} +1 -1
  221. package/dist/{textarea-D7bTMerW.js → textarea-txN6-t64.js} +9 -8
  222. package/dist/{textarea-D7bTMerW.js.map → textarea-txN6-t64.js.map} +1 -1
  223. package/dist/textarea.cjs +1 -1
  224. package/dist/textarea.js +1 -1
  225. package/dist/{theme-button-CP2_aq__.js → theme-button-C2oB9OCM.js} +2 -2
  226. package/dist/{theme-button-CP2_aq__.js.map → theme-button-C2oB9OCM.js.map} +1 -1
  227. package/dist/{theme-button-DHuXg7vh.cjs → theme-button-qFLBZi0_.cjs} +2 -2
  228. package/dist/{theme-button-DHuXg7vh.cjs.map → theme-button-qFLBZi0_.cjs.map} +1 -1
  229. package/dist/theme-button.cjs +1 -1
  230. package/dist/theme-button.js +1 -1
  231. package/dist/theme.cjs +1 -1
  232. package/dist/{theme.component-Ly2C_fQ8.cjs → theme.component-C-055F7V.cjs} +2 -2
  233. package/dist/{theme.component-Ly2C_fQ8.cjs.map → theme.component-C-055F7V.cjs.map} +1 -1
  234. package/dist/{theme.component-BtBosXb1.js → theme.component-UVrnuMPb.js} +47 -47
  235. package/dist/{theme.component-BtBosXb1.js.map → theme.component-UVrnuMPb.js.map} +1 -1
  236. package/dist/theme.js +1 -1
  237. package/dist/timezone-CvS7opKc.cjs +34 -0
  238. package/dist/timezone-CvS7opKc.cjs.map +1 -0
  239. package/dist/{timezone-EDGZdfbO.js → timezone-DUYp8qD3.js} +93 -41
  240. package/dist/timezone-DUYp8qD3.js.map +1 -0
  241. package/dist/{tree-Y2B7yK7L.js → tree-Cxgw_mi9.js} +2 -2
  242. package/dist/{tree-Y2B7yK7L.js.map → tree-Cxgw_mi9.js.map} +1 -1
  243. package/dist/{tree-CG9B3uQP.cjs → tree-DYLlgF1F.cjs} +2 -2
  244. package/dist/{tree-CG9B3uQP.cjs.map → tree-DYLlgF1F.cjs.map} +1 -1
  245. package/dist/tree.cjs +1 -1
  246. package/dist/tree.js +1 -1
  247. package/dist/{typewriter-C1Ij3c--.js → typewriter-DUdvh6VO.js} +4 -4
  248. package/dist/{typewriter-C1Ij3c--.js.map → typewriter-DUdvh6VO.js.map} +1 -1
  249. package/dist/{typewriter-DtWpV0Xd.cjs → typewriter-DoGLma1z.cjs} +2 -2
  250. package/dist/{typewriter-DtWpV0Xd.cjs.map → typewriter-DoGLma1z.cjs.map} +1 -1
  251. package/dist/typewriter.cjs +1 -1
  252. package/dist/typewriter.js +1 -1
  253. package/dist/{typography-CSQByhJF.js → typography-BnQJ5TWy.js} +2 -2
  254. package/dist/{typography-CSQByhJF.js.map → typography-BnQJ5TWy.js.map} +1 -1
  255. package/dist/{typography-D-a-z23R.cjs → typography-DFREXmBg.cjs} +2 -2
  256. package/dist/{typography-D-a-z23R.cjs.map → typography-DFREXmBg.cjs.map} +1 -1
  257. package/dist/typography.cjs +1 -1
  258. package/dist/typography.js +1 -1
  259. package/dist/v2.cjs +2 -0
  260. package/dist/v2.cjs.map +1 -0
  261. package/dist/v2.js +5 -0
  262. package/dist/v2.js.map +1 -0
  263. package/package.json +3 -4
  264. package/types/mixins/formField.mixin.d.ts +48 -0
  265. package/types/src/autocomplete/autocomplete.d.ts +17 -7
  266. package/types/src/components/form-elements/payment-card-form.d.ts +57 -4
  267. package/types/src/extra/countries/countries.d.ts +13 -0
  268. package/types/src/extra/timezone/timezone.d.ts +13 -0
  269. package/types/src/index.d.ts +1 -0
  270. package/types/src/option/option.d.ts +3 -0
  271. package/types/src/select/select.d.ts +9 -1
  272. package/types/src/sheet/header.d.ts +0 -1
  273. package/types/src/sheet/sheet.d.ts +120 -1
  274. package/types/src/utils/search.d.ts +10 -0
  275. package/types/src/v2/form.d.ts +51 -0
  276. package/types/src/v2/index.d.ts +2 -0
  277. package/types/src/v2/input.d.ts +71 -0
  278. package/dist/autocomplete-BU0sC_l-.cjs +0 -49
  279. package/dist/autocomplete-BU0sC_l-.cjs.map +0 -1
  280. package/dist/autocomplete-u76bIDqg.js +0 -264
  281. package/dist/autocomplete-u76bIDqg.js.map +0 -1
  282. package/dist/input-CTC1BTOb.cjs +0 -51
  283. package/dist/input-CTC1BTOb.cjs.map +0 -1
  284. package/dist/input-CZX1sxBe.js.map +0 -1
  285. package/dist/option-CxalubCR.js.map +0 -1
  286. package/dist/option-DJLLszO6.cjs +0 -18
  287. package/dist/option-DJLLszO6.cjs.map +0 -1
  288. package/dist/payment-card-form-Bi3yNg4b.cjs +0 -48
  289. package/dist/ripple-BumgqsDT.js +0 -78
  290. package/dist/ripple-BumgqsDT.js.map +0 -1
  291. package/dist/ripple-C2BHbhcS.cjs +0 -16
  292. package/dist/ripple-C2BHbhcS.cjs.map +0 -1
  293. package/dist/select-8AjN6LbM.js.map +0 -1
  294. package/dist/select-BdU6KcPX.cjs +0 -54
  295. package/dist/select-BdU6KcPX.cjs.map +0 -1
  296. package/dist/sheet-CQFdHSwJ.cjs +0 -43
  297. package/dist/sheet-CQFdHSwJ.cjs.map +0 -1
  298. package/dist/sheet-xR13xD2A.js +0 -182
  299. package/dist/sheet-xR13xD2A.js.map +0 -1
  300. package/dist/tailwind.mixin-CBhPue3q.cjs +0 -2
  301. package/dist/tailwind.mixin-DklgfhB4.js +0 -43
  302. package/dist/textarea-BCWPb0Sn.cjs +0 -42
  303. package/dist/timezone-Cv2QSsl4.cjs +0 -24
  304. package/dist/timezone-Cv2QSsl4.cjs.map +0 -1
  305. package/dist/timezone-EDGZdfbO.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-BU0sC_l-.cjs","sources":["../../../../.yarn/berry/cache/fastest-levenshtein-npm-1.0.16-192d328856-10c0.zip/node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, offset, shift, size } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\nimport type { SchmancyInputInputEvent } from '@schmancy/input/input'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t// Public API properties\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t/**\n\t * ⚠️ If you still want an explicit fallback for maximum dropdown height,\n\t * you can keep this, but the `size()` middleware will already set a\n\t * dynamic max-height based on viewport space.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\n\t/** Direct reference to the <input> inside <schmancy-input> */\n\tinputRef = createRef<HTMLInputElement>()\n\n\t// Query selectors for elements in the shadow DOM\n\t@query('#options') private optionsContainer!: HTMLUListElement\n\t@query('#empty') private empty!: HTMLLIElement\n\t@query('schmancy-input') private input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\n\t// Subject for search term changes\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\t// iOS scroll-blocking logic\n\tprivate startY = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Ensure the component has an ID (used for generating option IDs)\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-autocomplete-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\n\t\t// Listen for keydown events on the input to enable keyboard navigation.\n\t\t// (If your <schmancy-input> is a custom element, ensure it re–forwards keyboard events\n\t\t// from its internal <input> or use a @keydown listener on it in the template.)\n\t\tfromEvent(this, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tnext: (e: KeyboardEvent) => {\n\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t},\n\t\t\t})\n\t\t// 1) Search filtering logic\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// Filter options using Levenshtein distance\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(({ option, levDistance }) => {\n\t\t\t\t\t\t\t// For short search terms, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\treturn levDistance <= option.label.toLowerCase().length - searchTerm.length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide options based on filtering\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"No results found\"\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\t// Update accessibility attributes on options\n\t\t\t\t\tthis.setupOptionsAccessibility()\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\t// Show dropdown on each new search term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus-out animation (fade out)\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as Element)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// reset options to show all\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = false))\n\t\t\t\t\tconst animation = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t})\n\t\t\t\t\treturn from(\n\t\t\t\t\t\tnew Promise<void>(resolve => {\n\t\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.opacity = '1'\n\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// After closing, resync the input’s value\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * When the <slot> changes (i.e. options are added/removed), update the following:\n\t * 1. Show or hide the “No results found” option.\n\t * 2. Sync the selection state.\n\t * 3. Setup accessibility attributes on the options.\n\t */\n\tprivate handleSlotChange() {\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\t/**\n\t * Loops through assigned options and sets accessibility attributes:\n\t * - role=\"option\"\n\t * - A unique ID (if not already set)\n\t * - tabindex=\"-1\"\n\t * - aria-selected (based on whether the option is selected)\n\t */\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute('aria-selected', String(this.multi ? option.selected : option.value === this.value))\n\t\t})\n\t}\n\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate updateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * MAIN: Show the dropdown. Uses Floating UI to position and size the options container.\n\t */\n\tprivate async showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.display = 'block'\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [\n\t\t\t\toffset(5),\n\t\t\t\t// flip(),\n\t\t\t\tshift({ padding: 5 }),\n\t\t\t\t// Let the floating element fill available space, but be at least as wide as the input.\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableWidth, availableHeight, elements, rects }) {\n\t\t\t\t\t\t// At least match input width\n\t\t\t\t\t\tconst referenceWidth = rects.reference.width\n\t\t\t\t\t\telements.floating.style.minWidth = `${referenceWidth}px`\n\t\t\t\t\t\t// Cap to available viewport space\n\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\toverflowY: 'auto',\n\t\t\t// You can still use maxHeight as a fallback if desired:\n\t\t\t// maxHeight: this.maxHeight,\n\t\t})\n\t}\n\n\tprivate hideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tif (this.optionsContainer) {\n\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t}\n\t}\n\n\tprivate handleInputChange(event: SchmancyInputInputEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\tprivate handleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\t/**\n\t * Keyboard navigation for the autocomplete.\n\t * – When the dropdown is closed, ArrowDown (or Enter/Space) opens it.\n\t * – When open, ArrowDown/ArrowUp move focus between options (which must have role=\"option\").\n\t * – Enter or Space selects the active option.\n\t * – Escape (or Tab) hides the dropdown.\n\t */\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Get the visible options (i.e. those not hidden)\n\t\tconst options = this.options.filter(o => !o.hidden)\n\n\t\t// If the dropdown is closed, open it on Enter, Space, or ArrowDown\n\t\tif (this.optionsContainer.hasAttribute('hidden')) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.showOptions().then(() => {\n\t\t\t\t\tif (options.length > 0) {\n\t\t\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Dropdown is open; determine the currently focused option\n\t\tlet currentIndex = options.findIndex(o => o.matches(':focus'))\n\t\tif (currentIndex === -1) {\n\t\t\t// If no option is focused, default to the first\n\t\t\tcurrentIndex = 0\n\t\t}\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.hideOptions()\n\t\t\t\tthis.input.focus()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.min(currentIndex + 1, options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.max(currentIndex - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (options[currentIndex]) {\n\t\t\t\t\t// Assume the option's value is stored in either \"data-value\" or \"value\" attribute.\n\t\t\t\t\tconst value = options[currentIndex].getAttribute('data-value') || options[currentIndex].getAttribute('value')\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.handleOptionClick(value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\t// Close the dropdown on Tab (as done in the select component)\n\t\t\t\tthis.hideOptions()\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Helper to focus an option by index and update the combobox’s aria-activedescendant.\n\t */\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\t// Update the input's aria-activedescendant to match the newly focused option.\n\t\t\tthis.input.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\trender() {\n\t\t// Determine whether the dropdown is open based on the hidden attribute.\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- The trigger slot (if any) overrides the default SchmancyInput -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\taria-expanded=${isOpen}\n\t\t\t\t\t\t@focus=${() => this.showOptions()}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi ? 'true' : 'false'}\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> should dispatch a CustomEvent('click', { detail: { value } })\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) this.handleOptionClick(detailVal)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@slotchange=${this.handleSlotChange}\n\t\t\t\t>\n\t\t\t\t\t<!-- \"No results\" option -->\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","value","label","maxHeight","multi","inputRef","createRef","searchTerm$","Subject","startY","handleKeyDown","e","options","filter","o","hidden","optionsContainer","hasAttribute","includes","key","preventDefault","showOptions","then","focusOption","currentIndex","findIndex","matches","hideOptions","input","focus","max","getAttribute","handleOptionClick","connectedCallback","id","random","toString","substr","fromEvent","pipe","takeUntil","disconnecting","subscribe","next","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","map","option","optionText","levDistance","sort","forEach","empty","setupOptionsAccessibility","requestUpdate","relatedTarget","tagName","switchMap","animation","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","selected","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","some","index","setAttribute","tabIndex","String","values","split","v","Boolean","requestAnimationFrame","found","removeAttribute","x","y","computePosition","placement","middleware","offset","shift","padding","size","availableWidth","availableHeight","elements","rects","referenceWidth","reference","width","floating","minWidth","maxWidth","Object","assign","left","top","position","zIndex","overflowY","event","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","isOpen","html","ref","handleInputChange","detailVal","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","handleSlotChange","__decorateClass","property","type","prototype","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,264 +0,0 @@
1
- import { computePosition as q, offset as Y, shift as H, size as P } from "@floating-ui/dom";
2
- import { Subject as U, fromEvent as j, from as z } from "rxjs";
3
- import "lit/directives/class-map.js";
4
- import "lit/directives/style-map.js";
5
- import { $ as N } from "./litElement.mixin-NzkxESus.js";
6
- import "./tailwind.mixin-DklgfhB4.js";
7
- import { c as B } from "./ripple-BumgqsDT.js";
8
- import { S as F } from "./theme.interface-C5Kj6WjD.js";
9
- import { html as R } from "lit";
10
- import { property as A, query as E, queryAssignedElements as L, eventOptions as W, customElement as K } from "lit/decorators.js";
11
- import { createRef as G, ref as J } from "lit/directives/ref.js";
12
- import { takeUntil as I, distinctUntilChanged as Q, tap as X, filter as Z, switchMap as _ } from "rxjs/operators";
13
- const v = new Uint32Array(65536), tt = (t, e) => {
14
- if (t.length < e.length) {
15
- const i = e;
16
- e = t, t = i;
17
- }
18
- return e.length === 0 ? t.length : t.length <= 32 ? ((i, s) => {
19
- const n = i.length, l = s.length, r = 1 << n - 1;
20
- let p = -1, f = 0, O = n, h = n;
21
- for (; h--; ) v[i.charCodeAt(h)] |= 1 << h;
22
- for (h = 0; h < l; h++) {
23
- let y = v[s.charCodeAt(h)];
24
- const b = y | f;
25
- y |= (y & p) + p ^ p, f |= ~(y | p), p &= y, f & r && O++, p & r && O--, f = f << 1 | 1, p = p << 1 | ~(b | f), f &= b;
26
- }
27
- for (h = n; h--; ) v[i.charCodeAt(h)] = 0;
28
- return O;
29
- })(t, e) : ((i, s) => {
30
- const n = s.length, l = i.length, r = [], p = [], f = Math.ceil(n / 32), O = Math.ceil(l / 32);
31
- for (let o = 0; o < f; o++) p[o] = -1, r[o] = 0;
32
- let h = 0;
33
- for (; h < O - 1; h++) {
34
- let o = 0, d = -1;
35
- const w = 32 * h, C = Math.min(32, l) + w;
36
- for (let a = w; a < C; a++) v[i.charCodeAt(a)] |= 1 << a;
37
- for (let a = 0; a < n; a++) {
38
- const x = v[s.charCodeAt(a)], g = p[a / 32 | 0] >>> a & 1, m = r[a / 32 | 0] >>> a & 1, M = x | o, T = ((x | m) & d) + d ^ d | x | m;
39
- let $ = o | ~(T | d), S = d & T;
40
- $ >>> 31 ^ g && (p[a / 32 | 0] ^= 1 << a), S >>> 31 ^ m && (r[a / 32 | 0] ^= 1 << a), $ = $ << 1 | g, S = S << 1 | m, d = S | ~(M | $), o = $ & M;
41
- }
42
- for (let a = w; a < C; a++) v[i.charCodeAt(a)] = 0;
43
- }
44
- let y = 0, b = -1;
45
- const k = 32 * h, V = Math.min(32, l - k) + k;
46
- for (let o = k; o < V; o++) v[i.charCodeAt(o)] |= 1 << o;
47
- let D = l;
48
- for (let o = 0; o < n; o++) {
49
- const d = v[s.charCodeAt(o)], w = p[o / 32 | 0] >>> o & 1, C = r[o / 32 | 0] >>> o & 1, a = d | y, x = ((d | C) & b) + b ^ b | d | C;
50
- let g = y | ~(x | b), m = b & x;
51
- D += g >>> l - 1 & 1, D -= m >>> l - 1 & 1, g >>> 31 ^ w && (p[o / 32 | 0] ^= 1 << o), m >>> 31 ^ C && (r[o / 32 | 0] ^= 1 << o), g = g << 1 | w, m = m << 1 | C, b = m | ~(a | g), y = g & a;
52
- }
53
- for (let o = k; o < V; o++) v[i.charCodeAt(o)] = 0;
54
- return D;
55
- })(t, e);
56
- };
57
- var et = Object.defineProperty, it = Object.getOwnPropertyDescriptor, u = (t, e, i, s) => {
58
- for (var n, l = s > 1 ? void 0 : s ? it(e, i) : e, r = t.length - 1; r >= 0; r--) (n = t[r]) && (l = (s ? n(e, i, l) : n(l)) || l);
59
- return s && l && et(e, i, l), l;
60
- };
61
- let c = class extends N(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}") {
62
- constructor() {
63
- super(...arguments), this.required = !1, this.placeholder = "", this.value = "", this.label = "", this.maxHeight = "25vh", this.multi = !1, this.inputRef = G(), this.searchTerm$ = new U(), this.startY = 0, this.handleKeyDown = (t) => {
64
- const e = this.options.filter((s) => !s.hidden);
65
- if (this.optionsContainer.hasAttribute("hidden")) return void (["Enter", " ", "ArrowDown"].includes(t.key) && (t.preventDefault(), this.showOptions().then(() => {
66
- e.length > 0 && this.focusOption(e, 0);
67
- })));
68
- let i = e.findIndex((s) => s.matches(":focus"));
69
- switch (i === -1 && (i = 0), t.key) {
70
- case "Escape":
71
- t.preventDefault(), this.hideOptions(), this.input.focus();
72
- break;
73
- case "ArrowDown":
74
- t.preventDefault(), this.focusOption(e, Math.min(i + 1, e.length - 1));
75
- break;
76
- case "ArrowUp":
77
- t.preventDefault(), this.focusOption(e, Math.max(i - 1, 0));
78
- break;
79
- case "Enter":
80
- case " ":
81
- if (t.preventDefault(), e[i]) {
82
- const s = e[i].getAttribute("data-value") || e[i].getAttribute("value");
83
- s && this.handleOptionClick(s);
84
- }
85
- break;
86
- case "Tab":
87
- this.hideOptions();
88
- }
89
- };
90
- }
91
- connectedCallback() {
92
- super.connectedCallback(), this.id || (this.id = `schmancy-autocomplete-${Math.random().toString(36).substr(2, 9)}`), j(this, "keydown").pipe(I(this.disconnecting)).subscribe({ next: (t) => {
93
- this.handleKeyDown(t);
94
- } }), this.searchTerm$.pipe(Q(), X((t) => {
95
- const e = t.trim().toLowerCase(), i = this.options.map((s) => {
96
- const n = s.label.toLowerCase();
97
- return { option: s, levDistance: tt(e, n) };
98
- }).filter(({ option: s, levDistance: n }) => e.length < 3 || n <= s.label.toLowerCase().length - e.length).sort((s, n) => s.levDistance - n.levDistance);
99
- this.options.forEach((s) => s.hidden = !0);
100
- for (const { option: s } of i) s.hidden = !1;
101
- this.empty.hidden = i.length > 0, this.setupOptionsAccessibility(), this.requestUpdate();
102
- }), I(this.disconnecting)).subscribe(() => {
103
- this.showOptions();
104
- }), j(this, "focusout").pipe(I(this.disconnecting), Z((t) => {
105
- var e;
106
- return ((e = t.relatedTarget) == null ? void 0 : e.tagName) !== "SCHMANCY-OPTION";
107
- }), _(() => {
108
- this.options.forEach((e) => e.hidden = !1);
109
- const t = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 150, easing: "cubic-bezier(0.5, 0.01, 0.25, 1)" });
110
- return z(new Promise((e) => {
111
- t.onfinish = () => {
112
- this.optionsContainer.style.display = "none", this.optionsContainer.style.opacity = "1", e();
113
- };
114
- }));
115
- })).subscribe({ next: () => {
116
- var t;
117
- if (this.multi) {
118
- const e = this.options.filter((i) => i.selected).map((i) => i.label);
119
- this.input.value = e.join(", ");
120
- } else this.input.value = ((t = this.options.find((e) => e.value === this.value)) == null ? void 0 : t.label) ?? "";
121
- } });
122
- }
123
- firstUpdated() {
124
- this.updateInputValue();
125
- }
126
- updated(t) {
127
- super.updated(t), t.has("value") && (this.syncSelectionFromValue(), this.updateInputValue());
128
- }
129
- handleSlotChange() {
130
- this.empty.hidden = this.options.some((t) => !t.hidden), this.syncSelectionFromValue(), this.updateInputValue(), this.setupOptionsAccessibility();
131
- }
132
- setupOptionsAccessibility() {
133
- this.options.forEach((t, e) => {
134
- t.setAttribute("role", "option"), t.id || (t.id = `${this.id}-option-${e}`), t.tabIndex = -1, t.setAttribute("aria-selected", String(this.multi ? t.selected : t.value === this.value));
135
- });
136
- }
137
- syncSelectionFromValue() {
138
- if (this.multi) {
139
- const t = this.value.split(",").map((e) => e.trim()).filter(Boolean);
140
- this.options.forEach((e) => {
141
- e.selected = t.includes(e.value);
142
- });
143
- } else this.options.forEach((t) => {
144
- t.selected = t.value === this.value;
145
- });
146
- }
147
- updateInputValue() {
148
- requestAnimationFrame(() => {
149
- var t;
150
- if (this.multi) {
151
- const e = this.options.filter((i) => i.selected).map((i) => i.label);
152
- this.input.value = e.join(", ");
153
- } else {
154
- const e = (t = this.options.find((i) => i.value === this.value)) == null ? void 0 : t.label;
155
- this.input.value = e ?? "";
156
- }
157
- });
158
- }
159
- async showOptions() {
160
- this.optionsContainer.removeAttribute("hidden"), this.optionsContainer.style.display = "block";
161
- const { x: t, y: e } = await q(this.input, this.optionsContainer, { placement: "bottom-start", middleware: [Y(5), H({ padding: 5 }), P({ apply({ availableWidth: i, availableHeight: s, elements: n, rects: l }) {
162
- const r = l.reference.width;
163
- n.floating.style.minWidth = `${r}px`, n.floating.style.maxWidth = `${i}px`, n.floating.style.maxHeight = `${s}px`;
164
- } })] });
165
- Object.assign(this.optionsContainer.style, { left: `${t}px`, top: `${e}px`, position: "absolute", zIndex: "9999", overflowY: "auto" });
166
- }
167
- hideOptions() {
168
- var t;
169
- (t = this.optionsContainer) == null || t.setAttribute("hidden", "true"), this.optionsContainer && (this.optionsContainer.style.display = "none");
170
- }
171
- handleInputChange(t) {
172
- t.preventDefault(), t.stopPropagation();
173
- const e = t.detail.value;
174
- this.searchTerm$.next(e);
175
- }
176
- handleOptionClick(t) {
177
- if (this.multi) {
178
- const e = this.options.find((s) => s.value === t);
179
- e && (e.selected = !e.selected);
180
- const i = this.options.filter((s) => s.selected).map((s) => s.value);
181
- this.value = i.join(","), this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: i }, bubbles: !0, composed: !0 }));
182
- } else this.hideOptions(), this.value = t, this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: t }, bubbles: !0, composed: !0 }));
183
- }
184
- checkValidity() {
185
- return this.multi ? this.options.some((t) => t.selected) : !!this.value;
186
- }
187
- reportValidity() {
188
- var t;
189
- return (t = this.inputRef.value) == null ? void 0 : t.reportValidity();
190
- }
191
- handleTouchStart(t) {
192
- var e, i;
193
- this.startY = ((i = (e = t.touches) == null ? void 0 : e[0]) == null ? void 0 : i.clientY) ?? 0;
194
- }
195
- preventScroll(t) {
196
- var l, r;
197
- const e = t.target;
198
- if (!this.optionsContainer.contains(e)) return;
199
- const i = this.optionsContainer.scrollTop, s = this.optionsContainer.scrollHeight - this.optionsContainer.offsetHeight, n = ((r = (l = t.touches) == null ? void 0 : l[0]) == null ? void 0 : r.clientY) ?? 0;
200
- (i <= 0 && n > this.startY || i >= s && n < this.startY) && t.preventDefault();
201
- }
202
- focusOption(t, e) {
203
- const i = t[e];
204
- i && (i.focus(), this.input.setAttribute("aria-activedescendant", i.id));
205
- }
206
- render() {
207
- var e;
208
- const t = !((e = this.optionsContainer) != null && e.hasAttribute("hidden"));
209
- return R`
210
- <div class="relative">
211
- <!-- The trigger slot (if any) overrides the default SchmancyInput -->
212
- <slot name="trigger">
213
- <schmancy-input
214
- ${J(this.inputRef)}
215
- id="input"
216
- class="w-full"
217
- .label=${this.label}
218
- .placeholder=${this.placeholder}
219
- .required=${this.required}
220
- type="search"
221
- inputmode="text"
222
- autocomplete="off"
223
- clickable
224
- role="combobox"
225
- aria-autocomplete="list"
226
- aria-haspopup="listbox"
227
- aria-controls="options"
228
- aria-expanded=${t}
229
- @focus=${() => this.showOptions()}
230
- @change=${this.handleInputChange}
231
- >
232
- </schmancy-input>
233
- </slot>
234
-
235
- <ul
236
- id="options"
237
- tabindex="-1"
238
- class="absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm"
239
- role="listbox"
240
- aria-multiselectable=${this.multi ? "true" : "false"}
241
- hidden
242
- @click=${(i) => {
243
- var n;
244
- const s = (n = i.detail) == null ? void 0 : n.value;
245
- s && this.handleOptionClick(s);
246
- }}
247
- @touchstart=${this.handleTouchStart}
248
- @touchmove=${this.preventScroll}
249
- ${B({ bgColor: F.sys.color.surface.container })}
250
- @slotchange=${this.handleSlotChange}
251
- >
252
- <!-- "No results" option -->
253
- <li id="empty" tabindex="-1">
254
- <schmancy-typography type="label">No results found</schmancy-typography>
255
- </li>
256
- <!-- Slot for the <schmancy-option> elements -->
257
- <slot></slot>
258
- </ul>
259
- </div>
260
- `;
261
- }
262
- };
263
- u([A({ type: Boolean })], c.prototype, "required", 2), u([A({ type: String })], c.prototype, "placeholder", 2), u([A({ type: String, reflect: !0 })], c.prototype, "value", 2), u([A({ type: String, reflect: !0 })], c.prototype, "label", 2), u([A({ type: String })], c.prototype, "maxHeight", 2), u([A({ type: Boolean })], c.prototype, "multi", 2), u([E("#options")], c.prototype, "optionsContainer", 2), u([E("#empty")], c.prototype, "empty", 2), u([E("schmancy-input")], c.prototype, "input", 2), u([L({ flatten: !0 })], c.prototype, "options", 2), u([W({ passive: !0 })], c.prototype, "handleOptionClick", 1), c = u([K("schmancy-autocomplete")], c);
264
- //# sourceMappingURL=autocomplete-u76bIDqg.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-u76bIDqg.js","sources":["../../../../.yarn/berry/cache/fastest-levenshtein-npm-1.0.16-192d328856-10c0.zip/node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, offset, shift, size } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\nimport type { SchmancyInputInputEvent } from '@schmancy/input/input'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t// Public API properties\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t/**\n\t * ⚠️ If you still want an explicit fallback for maximum dropdown height,\n\t * you can keep this, but the `size()` middleware will already set a\n\t * dynamic max-height based on viewport space.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\n\t/** Direct reference to the <input> inside <schmancy-input> */\n\tinputRef = createRef<HTMLInputElement>()\n\n\t// Query selectors for elements in the shadow DOM\n\t@query('#options') private optionsContainer!: HTMLUListElement\n\t@query('#empty') private empty!: HTMLLIElement\n\t@query('schmancy-input') private input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\n\t// Subject for search term changes\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\t// iOS scroll-blocking logic\n\tprivate startY = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Ensure the component has an ID (used for generating option IDs)\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-autocomplete-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\n\t\t// Listen for keydown events on the input to enable keyboard navigation.\n\t\t// (If your <schmancy-input> is a custom element, ensure it re–forwards keyboard events\n\t\t// from its internal <input> or use a @keydown listener on it in the template.)\n\t\tfromEvent(this, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tnext: (e: KeyboardEvent) => {\n\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t},\n\t\t\t})\n\t\t// 1) Search filtering logic\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// Filter options using Levenshtein distance\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(({ option, levDistance }) => {\n\t\t\t\t\t\t\t// For short search terms, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\treturn levDistance <= option.label.toLowerCase().length - searchTerm.length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide options based on filtering\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"No results found\"\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\t// Update accessibility attributes on options\n\t\t\t\t\tthis.setupOptionsAccessibility()\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\t// Show dropdown on each new search term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus-out animation (fade out)\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as Element)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// reset options to show all\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = false))\n\t\t\t\t\tconst animation = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t})\n\t\t\t\t\treturn from(\n\t\t\t\t\t\tnew Promise<void>(resolve => {\n\t\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.opacity = '1'\n\t\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// After closing, resync the input’s value\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * When the <slot> changes (i.e. options are added/removed), update the following:\n\t * 1. Show or hide the “No results found” option.\n\t * 2. Sync the selection state.\n\t * 3. Setup accessibility attributes on the options.\n\t */\n\tprivate handleSlotChange() {\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\t/**\n\t * Loops through assigned options and sets accessibility attributes:\n\t * - role=\"option\"\n\t * - A unique ID (if not already set)\n\t * - tabindex=\"-1\"\n\t * - aria-selected (based on whether the option is selected)\n\t */\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\toption.tabIndex = -1\n\t\t\toption.setAttribute('aria-selected', String(this.multi ? option.selected : option.value === this.value))\n\t\t})\n\t}\n\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate updateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * MAIN: Show the dropdown. Uses Floating UI to position and size the options container.\n\t */\n\tprivate async showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.display = 'block'\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [\n\t\t\t\toffset(5),\n\t\t\t\t// flip(),\n\t\t\t\tshift({ padding: 5 }),\n\t\t\t\t// Let the floating element fill available space, but be at least as wide as the input.\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableWidth, availableHeight, elements, rects }) {\n\t\t\t\t\t\t// At least match input width\n\t\t\t\t\t\tconst referenceWidth = rects.reference.width\n\t\t\t\t\t\telements.floating.style.minWidth = `${referenceWidth}px`\n\t\t\t\t\t\t// Cap to available viewport space\n\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\toverflowY: 'auto',\n\t\t\t// You can still use maxHeight as a fallback if desired:\n\t\t\t// maxHeight: this.maxHeight,\n\t\t})\n\t}\n\n\tprivate hideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tif (this.optionsContainer) {\n\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t}\n\t}\n\n\tprivate handleInputChange(event: SchmancyInputInputEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\tprivate handleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\t/**\n\t * Keyboard navigation for the autocomplete.\n\t * – When the dropdown is closed, ArrowDown (or Enter/Space) opens it.\n\t * – When open, ArrowDown/ArrowUp move focus between options (which must have role=\"option\").\n\t * – Enter or Space selects the active option.\n\t * – Escape (or Tab) hides the dropdown.\n\t */\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Get the visible options (i.e. those not hidden)\n\t\tconst options = this.options.filter(o => !o.hidden)\n\n\t\t// If the dropdown is closed, open it on Enter, Space, or ArrowDown\n\t\tif (this.optionsContainer.hasAttribute('hidden')) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.showOptions().then(() => {\n\t\t\t\t\tif (options.length > 0) {\n\t\t\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Dropdown is open; determine the currently focused option\n\t\tlet currentIndex = options.findIndex(o => o.matches(':focus'))\n\t\tif (currentIndex === -1) {\n\t\t\t// If no option is focused, default to the first\n\t\t\tcurrentIndex = 0\n\t\t}\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.hideOptions()\n\t\t\t\tthis.input.focus()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.min(currentIndex + 1, options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.max(currentIndex - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (options[currentIndex]) {\n\t\t\t\t\t// Assume the option's value is stored in either \"data-value\" or \"value\" attribute.\n\t\t\t\t\tconst value = options[currentIndex].getAttribute('data-value') || options[currentIndex].getAttribute('value')\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.handleOptionClick(value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\t// Close the dropdown on Tab (as done in the select component)\n\t\t\t\tthis.hideOptions()\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Helper to focus an option by index and update the combobox’s aria-activedescendant.\n\t */\n\tprivate focusOption(options: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\t// Update the input's aria-activedescendant to match the newly focused option.\n\t\t\tthis.input.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\trender() {\n\t\t// Determine whether the dropdown is open based on the hidden attribute.\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- The trigger slot (if any) overrides the default SchmancyInput -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\taria-expanded=${isOpen}\n\t\t\t\t\t\t@focus=${() => this.showOptions()}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi ? 'true' : 'false'}\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> should dispatch a CustomEvent('click', { detail: { value } })\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) this.handleOptionClick(detailVal)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@slotchange=${this.handleSlotChange}\n\t\t\t\t>\n\t\t\t\t\t<!-- \"No results\" option -->\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","value","label","maxHeight","multi","inputRef","createRef","searchTerm$","Subject","startY","handleKeyDown","e","options","filter","o","hidden","optionsContainer","hasAttribute","includes","key","preventDefault","showOptions","then","focusOption","currentIndex","findIndex","matches","hideOptions","input","focus","max","getAttribute","handleOptionClick","connectedCallback","id","random","toString","substr","fromEvent","pipe","takeUntil","disconnecting","subscribe","next","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","map","option","optionText","levDistance","sort","forEach","empty","setupOptionsAccessibility","requestUpdate","relatedTarget","tagName","switchMap","animation","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","selected","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","some","index","setAttribute","tabIndex","String","values","split","v","Boolean","requestAnimationFrame","found","removeAttribute","x","y","computePosition","placement","middleware","offset","shift","padding","size","apply","availableWidth","availableHeight","elements","rects","referenceWidth","reference","width","floating","minWidth","maxWidth","Object","assign","left","top","position","zIndex","overflowY","event","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","isOpen","html","ref","handleInputChange","detailVal","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","handleSlotChange","__decorateClass","property","type","prototype","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,51 +0,0 @@
1
- "use strict";const u=require("lit"),i=require("lit/decorators.js"),m=require("lit/directives/class-map.js"),s=require("lit/directives/if-defined.js"),f=require("lit/directives/ref.js"),b=require("lit/directives/when.js"),o=require("rxjs");require("lit/directives/style-map.js");const g=require("./tailwind.mixin-CBhPue3q.cjs"),y=require("./ripple-C2BHbhcS.cjs"),h=require("./theme.interface-Xg5Zi46a.cjs");var v=Object.defineProperty,$=Object.getOwnPropertyDescriptor,r=(t,n,p,a)=>{for(var c,l=a>1?void 0:a?$(n,p):n,d=t.length-1;d>=0;d--)(c=t[d])&&(l=(a?c(n,p,l):c(l))||l);return a&&l&&v(n,p,l),l};let e=class extends g.TailwindElement(":host{border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important;width:-webkit-fill-available}:host:focus{box-shadow:unset!important}input:focus-visible{outline:none!important}input{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;text-decoration:inherit;text-indent:inherit;text-shadow:inherit;text-overflow:inherit;text-rendering:inherit;text-size-adjust:inherit;text-align-last:inherit}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}@keyframes onAutoFillStart{}input:-webkit-autofill{animation-name:onAutoFillStart}"){constructor(){if(super(),this.id="",this.label="",this.type="text",this.name=`name_${Date.now()}`,this.placeholder="",this.value="",this.required=!1,this.disabled=!1,this.readonly=!1,this.clickable=!1,this.spellcheck=!1,this.align="left",this.autofocus=!1,this.autocomplete="on",this.tabIndex=0,this.error=!1,this.inputRef=f.createRef(),"attachInternals"in this)try{this.internals=this.attachInternals()}catch{this.internals=void 0}}willUpdate(t){this.id||(this.id="schmancy-input-"+e._idCounter++),super.willUpdate(t)}get form(){var t;return((t=this.internals)==null?void 0:t.form)??null}updated(t){var n,p,a;super.updated(t),t.has("value")&&((n=this.internals)==null||n.setFormValue(this.value)),t.has("error")&&(this.error?(p=this.internals)==null||p.setValidity({customError:!0},"Invalid input",this.inputElement):(a=this.internals)==null||a.setValidity({}))}checkValidity(){var t;return((t=this.inputRef.value)==null?void 0:t.checkValidity())??!0}reportValidity(){var t;return((t=this.inputRef.value)==null?void 0:t.reportValidity())??!0}setCustomValidity(t){var n;(n=this.inputRef.value)==null||n.setCustomValidity(t)}firstUpdated(){this.autofocus&&this.focus(),o.fromEvent(this.inputElement,"input").pipe(o.map(t=>t.target.value),o.distinctUntilChanged(),o.takeUntil(this.disconnecting)).subscribe(t=>{this.value=t,this.dispatchEvent(new CustomEvent("input",{detail:{value:t},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}),o.fromEvent(this.inputElement,"change").pipe(o.map(t=>t.target.value),o.distinctUntilChanged(),o.takeUntil(this.disconnecting)).subscribe(t=>{this.value=t,this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}),o.fromEvent(this.inputElement,"keyup").pipe(o.filter(t=>t.key==="Enter"),o.takeUntil(this.disconnecting)).subscribe(t=>{const{value:n}=t.target;this.value=n,this.dispatchEvent(new CustomEvent("enter",{detail:{value:n},bubbles:!0,composed:!0}))}),o.fromEvent(this.inputElement,"animationstart").pipe(o.filter(t=>t.animationName==="onAutoFillStart"),o.takeUntil(this.disconnecting)).subscribe(t=>{const{value:n}=t.target;this.value=n,this.dispatchEvent(new CustomEvent("change",{detail:{value:n},bubbles:!0,composed:!0}))})}select(){var t;return(t=this.inputRef.value)==null?void 0:t.select()}getValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.validity}focus(t){var n;(n=this.inputRef.value)==null||n.focus(t),this.dispatchEvent(new Event("focus"))}click(){var t;(t=this.inputRef.value)==null||t.click(),this.dispatchEvent(new Event("click"))}blur(){var t;(t=this.inputRef.value)==null||t.blur(),this.dispatchEvent(new Event("blur"))}render(){const t={"w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]":!0,"outline-secondary-default focus:outline-1 ":!0,"disabled:opacity-40 disabled:cursor-not-allowed":!0,"placeholder:text-muted":!0,"ring-0 ring-inset focus:ring-1 focus:ring-inset":!0,"ring-secondary-default ring-outline focus:ring-secondary-default":!this.error,"ring-error-default focus:ring-error-default":this.error,"caret-transparent focus:outline-hidden cursor-pointer text-select-none":this.readonly,"cursor-pointer":this.clickable,"text-center":this.align==="center","text-right":this.align==="right"},n={"opacity-40":this.disabled,"block mb-[4px]":!0};return u.html`
2
- ${b.when(this.label,()=>u.html`
3
- <label
4
- for=${this.id}
5
- id="label-${this.id}"
6
- class=${m.classMap(n)}
7
- ${y.color({color:this.error?h.SchmancyTheme.sys.color.error.default:h.SchmancyTheme.sys.color.primary.default})}
8
- >
9
- <schmancy-typography type="label" token="lg">${this.label}</schmancy-typography>
10
- </label>
11
- `)}
12
-
13
- <input
14
- ${y.color({bgColor:h.SchmancyTheme.sys.color.surface.highest,color:h.SchmancyTheme.sys.color.surface.on})}
15
- ${f.ref(this.inputRef)}
16
- id=${this.id}
17
- name=${this.name}
18
- class=${m.classMap(t)}
19
- .value=${this.value}
20
- .type=${this.type}
21
- .autocomplete=${this.autocomplete}
22
- .spellcheck=${this.spellcheck}
23
- placeholder=${this.placeholder}
24
- inputmode=${s.ifDefined(this.inputmode)}
25
- pattern=${s.ifDefined(this.pattern)}
26
- step=${s.ifDefined(this.step)}
27
- minlength=${s.ifDefined(this.minlength)}
28
- maxlength=${s.ifDefined(this.maxlength)}
29
- min=${s.ifDefined(this.min)}
30
- max=${s.ifDefined(this.max)}
31
- ?required=${this.required}
32
- ?disabled=${this.disabled}
33
- ?readonly=${this.readonly}
34
- aria-invalid=${this.error?"true":"false"}
35
- aria-required=${this.required?"true":"false"}
36
- aria-labelledby=${this.label?`label-${this.id}`:u.nothing}
37
- aria-describedby=${this.hint?`hint-${this.id}`:u.nothing}
38
- aria-label=${s.ifDefined(this.label?void 0:this.placeholder||"Input")}
39
- />
40
-
41
- ${b.when(this.hint,()=>u.html`
42
- <div
43
- id="hint-${this.id}"
44
- class="pt-[2px]"
45
- ${y.color({color:this.error?h.SchmancyTheme.sys.color.error.default:h.SchmancyTheme.sys.color.primary.default})}
46
- >
47
- <schmancy-typography align="left" type="label"> ${this.hint} </schmancy-typography>
48
- </div>
49
- `)}
50
- `}};e._idCounter=0,e.formAssociated=!0,e.shadowRootOptions={...u.LitElement.shadowRootOptions,delegatesFocus:!0},r([i.property({reflect:!0})],e.prototype,"id",2),r([i.property({type:String})],e.prototype,"label",2),r([i.property({reflect:!0})],e.prototype,"type",2),r([i.property()],e.prototype,"name",2),r([i.property()],e.prototype,"placeholder",2),r([i.property({type:String,reflect:!0})],e.prototype,"value",2),r([i.property({type:String,reflect:!0})],e.prototype,"pattern",2),r([i.property({type:Boolean,reflect:!0})],e.prototype,"required",2),r([i.property({type:Boolean,reflect:!0})],e.prototype,"disabled",2),r([i.property({type:Boolean,reflect:!0})],e.prototype,"readonly",2),r([i.property({type:Boolean,reflect:!0})],e.prototype,"clickable",2),r([i.property({type:Boolean,reflect:!0})],e.prototype,"spellcheck",2),r([i.property({type:String,reflect:!0})],e.prototype,"align",2),r([i.property()],e.prototype,"inputmode",2),r([i.property({type:Number})],e.prototype,"minlength",2),r([i.property({type:Number})],e.prototype,"maxlength",2),r([i.property()],e.prototype,"min",2),r([i.property()],e.prototype,"max",2),r([i.property({type:Number,reflect:!0})],e.prototype,"step",2),r([i.property({type:Boolean})],e.prototype,"autofocus",2),r([i.property({type:String,reflect:!0})],e.prototype,"autocomplete",2),r([i.property({type:Number,reflect:!0})],e.prototype,"tabIndex",2),r([i.property()],e.prototype,"hint",2),r([i.property({type:Boolean,reflect:!0})],e.prototype,"error",2),r([i.query("input")],e.prototype,"inputElement",2),e=r([i.customElement("schmancy-input")],e);
51
- //# sourceMappingURL=input-CTC1BTOb.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-CTC1BTOb.cjs","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport style from './input.scss?inline'\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement(style) {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t// dispatch change event\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[2px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"label\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","validity","options","Event","click","blur","render","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-CZX1sxBe.js","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport style from './input.scss?inline'\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement(style) {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t// dispatch change event\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[2px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"label\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","constructor","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","firstUpdated","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","getValidity","validity","options","Event","click","blur","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":"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"}