@mhmo91/schmancy 0.4.34 → 0.4.36

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/ai/badge.md +70 -62
  2. package/ai/form.md +10 -10
  3. package/ai/input.md +4 -4
  4. package/dist/ai/badge.md +70 -62
  5. package/dist/ai/form.md +10 -10
  6. package/dist/ai/input.md +4 -4
  7. package/dist/{animated-text-CYmUxmlv.cjs → animated-text-BDl61lcE.cjs} +2 -2
  8. package/dist/{animated-text-CYmUxmlv.cjs.map → animated-text-BDl61lcE.cjs.map} +1 -1
  9. package/dist/{animated-text-AbNgT7ie.js → animated-text-BtDJWgrr.js} +3 -3
  10. package/dist/{animated-text-AbNgT7ie.js.map → animated-text-BtDJWgrr.js.map} +1 -1
  11. package/dist/animated-text.cjs +1 -1
  12. package/dist/animated-text.js +1 -1
  13. package/dist/area.cjs +1 -1
  14. package/dist/{area.component-BxrgxiLv.js → area.component-CYttliWA.js} +3 -3
  15. package/dist/{area.component-BxrgxiLv.js.map → area.component-CYttliWA.js.map} +1 -1
  16. package/dist/{area.component-B1Lmmsuk.cjs → area.component-Dy1q15W1.cjs} +2 -2
  17. package/dist/{area.component-B1Lmmsuk.cjs.map → area.component-Dy1q15W1.cjs.map} +1 -1
  18. package/dist/area.js +1 -1
  19. package/dist/autocomplete-BPnLYwJ4.cjs +74 -0
  20. package/dist/autocomplete-BPnLYwJ4.cjs.map +1 -0
  21. package/dist/autocomplete-Cb6hDFh1.js +332 -0
  22. package/dist/autocomplete-Cb6hDFh1.js.map +1 -0
  23. package/dist/autocomplete.cjs +1 -1
  24. package/dist/autocomplete.js +1 -1
  25. package/dist/{avatar-aYgD4qxk.js → avatar-CaLFYyIO.js} +160 -156
  26. package/dist/avatar-CaLFYyIO.js.map +1 -0
  27. package/dist/{avatar-Ytu5d0n6.cjs → avatar-Dky6l3b2.cjs} +14 -14
  28. package/dist/avatar-Dky6l3b2.cjs.map +1 -0
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.js +3 -2
  31. package/dist/{boat--6fKaS1r.cjs → boat-BhprqJbv.cjs} +2 -2
  32. package/dist/{boat--6fKaS1r.cjs.map → boat-BhprqJbv.cjs.map} +1 -1
  33. package/dist/{boat-vVWqUMYt.js → boat-DcHe-GAJ.js} +2 -2
  34. package/dist/{boat-vVWqUMYt.js.map → boat-DcHe-GAJ.js.map} +1 -1
  35. package/dist/boat.cjs +1 -1
  36. package/dist/boat.js +1 -1
  37. package/dist/busy.cjs +1 -1
  38. package/dist/busy.js +1 -1
  39. package/dist/button.cjs +1 -1
  40. package/dist/button.js +1 -1
  41. package/dist/card.cjs +1 -1
  42. package/dist/card.js +1 -1
  43. package/dist/{checkbox-91xSd_El.js → checkbox-CCgs10Lm.js} +2 -2
  44. package/dist/{checkbox-91xSd_El.js.map → checkbox-CCgs10Lm.js.map} +1 -1
  45. package/dist/{checkbox-CcKQi7Hq.cjs → checkbox-CxSo6sJl.cjs} +2 -2
  46. package/dist/{checkbox-CcKQi7Hq.cjs.map → checkbox-CxSo6sJl.cjs.map} +1 -1
  47. package/dist/checkbox.cjs +1 -1
  48. package/dist/checkbox.js +1 -1
  49. package/dist/{chips-D26R6u7T.js → chips-CJj0gvT6.js} +3 -3
  50. package/dist/{chips-D26R6u7T.js.map → chips-CJj0gvT6.js.map} +1 -1
  51. package/dist/{chips-Duj_48dP.cjs → chips-CS_nQ5EF.cjs} +2 -2
  52. package/dist/{chips-Duj_48dP.cjs.map → chips-CS_nQ5EF.cjs.map} +1 -1
  53. package/dist/chips.cjs +1 -1
  54. package/dist/chips.js +1 -1
  55. package/dist/{circular-progress-CeiF8CYP.cjs → circular-progress-2PqoqeDz.cjs} +2 -2
  56. package/dist/{circular-progress-CeiF8CYP.cjs.map → circular-progress-2PqoqeDz.cjs.map} +1 -1
  57. package/dist/{circular-progress-BAzvWUr0.js → circular-progress-BHbqdobG.js} +3 -3
  58. package/dist/{circular-progress-BAzvWUr0.js.map → circular-progress-BHbqdobG.js.map} +1 -1
  59. package/dist/circular-progress.cjs +1 -1
  60. package/dist/circular-progress.js +1 -1
  61. package/dist/code-highlight.cjs +1 -1
  62. package/dist/code-highlight.js +1 -1
  63. package/dist/{code-preview-kNXSixdo.js → code-preview-BEpOOC-T.js} +2 -2
  64. package/dist/{code-preview-kNXSixdo.js.map → code-preview-BEpOOC-T.js.map} +1 -1
  65. package/dist/{code-preview-BCUSwkuU.cjs → code-preview-CnhG4p16.cjs} +2 -2
  66. package/dist/{code-preview-BCUSwkuU.cjs.map → code-preview-CnhG4p16.cjs.map} +1 -1
  67. package/dist/components.cjs +1 -1
  68. package/dist/components.js +1 -1
  69. package/dist/content-drawer.cjs +1 -1
  70. package/dist/content-drawer.js +1 -1
  71. package/dist/{date-range-gp2cu49l.js → date-range-BmcLAVvA.js} +3 -3
  72. package/dist/{date-range-gp2cu49l.js.map → date-range-BmcLAVvA.js.map} +1 -1
  73. package/dist/{date-range-CBrZ7Pm6.cjs → date-range-C5ZM-uus.cjs} +2 -2
  74. package/dist/{date-range-CBrZ7Pm6.cjs.map → date-range-C5ZM-uus.cjs.map} +1 -1
  75. package/dist/{date-range-inline-ZPM9dCG1.cjs → date-range-inline-Ckz0_B9K.cjs} +2 -2
  76. package/dist/{date-range-inline-ZPM9dCG1.cjs.map → date-range-inline-Ckz0_B9K.cjs.map} +1 -1
  77. package/dist/{date-range-inline-DZwtgeXX.js → date-range-inline-DBYE6ies.js} +3 -3
  78. package/dist/{date-range-inline-DZwtgeXX.js.map → date-range-inline-DBYE6ies.js.map} +1 -1
  79. package/dist/date-range-inline.cjs +1 -1
  80. package/dist/date-range-inline.js +1 -1
  81. package/dist/date-range.cjs +1 -1
  82. package/dist/date-range.js +1 -1
  83. package/dist/{delay-CUpeZtD8.cjs → delay-1Kpt99k6.cjs} +2 -2
  84. package/dist/{delay-CUpeZtD8.cjs.map → delay-1Kpt99k6.cjs.map} +1 -1
  85. package/dist/{delay-CYxt2x_w.js → delay-DpYwuaNT.js} +2 -2
  86. package/dist/{delay-CYxt2x_w.js.map → delay-DpYwuaNT.js.map} +1 -1
  87. package/dist/delay.cjs +1 -1
  88. package/dist/delay.js +1 -1
  89. package/dist/{dialog-content-Cz2MP3fS.cjs → dialog-content-DhsbfRJw.cjs} +2 -2
  90. package/dist/{dialog-content-Cz2MP3fS.cjs.map → dialog-content-DhsbfRJw.cjs.map} +1 -1
  91. package/dist/{dialog-content-DmUr4jZM.js → dialog-content-DwLiPKn6.js} +3 -3
  92. package/dist/{dialog-content-DmUr4jZM.js.map → dialog-content-DwLiPKn6.js.map} +1 -1
  93. package/dist/dialog.cjs +1 -1
  94. package/dist/dialog.js +1 -1
  95. package/dist/{divider-BreFKYh2.js → divider-C4SSlqD4.js} +3 -3
  96. package/dist/{divider-BreFKYh2.js.map → divider-C4SSlqD4.js.map} +1 -1
  97. package/dist/{divider-Cd5pOeZr.cjs → divider-Do9cv9Fw.cjs} +2 -2
  98. package/dist/{divider-Cd5pOeZr.cjs.map → divider-Do9cv9Fw.cjs.map} +1 -1
  99. package/dist/divider.cjs +1 -1
  100. package/dist/divider.js +1 -1
  101. package/dist/{dropdown-content-DjIvlBvq.js → dropdown-content-Clz8-Sau.js} +3 -3
  102. package/dist/{dropdown-content-DjIvlBvq.js.map → dropdown-content-Clz8-Sau.js.map} +1 -1
  103. package/dist/{dropdown-content-zLE8scWl.cjs → dropdown-content-anzsFIOv.cjs} +2 -2
  104. package/dist/{dropdown-content-zLE8scWl.cjs.map → dropdown-content-anzsFIOv.cjs.map} +1 -1
  105. package/dist/dropdown.cjs +1 -1
  106. package/dist/dropdown.js +1 -1
  107. package/dist/extra.cjs +1 -1
  108. package/dist/extra.js +1 -1
  109. package/dist/{flex-DRvBt9P0.js → flex-BVFtWBNT.js} +2 -2
  110. package/dist/{flex-DRvBt9P0.js.map → flex-BVFtWBNT.js.map} +1 -1
  111. package/dist/{flex-CEq4v4cK.cjs → flex-pHmogfUY.cjs} +2 -2
  112. package/dist/{flex-CEq4v4cK.cjs.map → flex-pHmogfUY.cjs.map} +1 -1
  113. package/dist/{form-BKqz7W6V.js → form-BknmFXcv.js} +2 -2
  114. package/dist/{form-BKqz7W6V.js.map → form-BknmFXcv.js.map} +1 -1
  115. package/dist/{form-B5CAbB2i.cjs → form-vwNceguM.cjs} +2 -2
  116. package/dist/{form-B5CAbB2i.cjs.map → form-vwNceguM.cjs.map} +1 -1
  117. package/dist/form.cjs +1 -1
  118. package/dist/form.js +1 -1
  119. package/dist/{formField.mixin-DCPfsyya.js → formField.mixin-Btf8vfYy.js} +2 -2
  120. package/dist/{formField.mixin-DCPfsyya.js.map → formField.mixin-Btf8vfYy.js.map} +1 -1
  121. package/dist/{formField.mixin-BuKEbib1.cjs → formField.mixin-pbMiCLQh.cjs} +2 -2
  122. package/dist/{formField.mixin-BuKEbib1.cjs.map → formField.mixin-pbMiCLQh.cjs.map} +1 -1
  123. package/dist/{icon-B0_pMF_-.cjs → icon-B0GtIpVT.cjs} +2 -2
  124. package/dist/{icon-B0_pMF_-.cjs.map → icon-B0GtIpVT.cjs.map} +1 -1
  125. package/dist/{icon-DA0eDV8w.js → icon-DjtkMY5q.js} +2 -2
  126. package/dist/{icon-DA0eDV8w.js.map → icon-DjtkMY5q.js.map} +1 -1
  127. package/dist/{icon-button-CEnel9Yg.js → icon-button-Cr7K-05m.js} +3 -3
  128. package/dist/{icon-button-CEnel9Yg.js.map → icon-button-Cr7K-05m.js.map} +1 -1
  129. package/dist/{icon-button-DFVuusoz.cjs → icon-button-D4GixH37.cjs} +2 -2
  130. package/dist/{icon-button-DFVuusoz.cjs.map → icon-button-D4GixH37.cjs.map} +1 -1
  131. package/dist/icons.cjs +1 -1
  132. package/dist/icons.js +1 -1
  133. package/dist/index.cjs +1 -1
  134. package/dist/index.js +186 -185
  135. package/dist/input-1jW0v1Pm.js +236 -0
  136. package/dist/input-1jW0v1Pm.js.map +1 -0
  137. package/dist/input-Brm4X9R4.cjs +51 -0
  138. package/dist/input-Brm4X9R4.cjs.map +1 -0
  139. package/dist/input.cjs +1 -1
  140. package/dist/input.js +3 -3
  141. package/dist/layout.cjs +1 -1
  142. package/dist/layout.js +1 -1
  143. package/dist/{list-BTm67LuV.js → list-BpV-YDKH.js} +2 -2
  144. package/dist/{list-BTm67LuV.js.map → list-BpV-YDKH.js.map} +1 -1
  145. package/dist/{list-Bos26fD3.cjs → list-CqTIfJLV.cjs} +2 -2
  146. package/dist/{list-Bos26fD3.cjs.map → list-CqTIfJLV.cjs.map} +1 -1
  147. package/dist/list.cjs +1 -1
  148. package/dist/list.js +1 -1
  149. package/dist/{litElement.mixin-Cs3zx2X6.cjs → litElement.mixin-Bnma23ZU.cjs} +2 -2
  150. package/dist/{litElement.mixin-Cs3zx2X6.cjs.map → litElement.mixin-Bnma23ZU.cjs.map} +1 -1
  151. package/dist/{litElement.mixin-Cn8IAazz.js → litElement.mixin-C2BM-yMx.js} +2 -2
  152. package/dist/{litElement.mixin-Cn8IAazz.js.map → litElement.mixin-C2BM-yMx.js.map} +1 -1
  153. package/dist/{media-YhMV6ELC.cjs → media-C8hYeSXn.cjs} +2 -2
  154. package/dist/{media-YhMV6ELC.cjs.map → media-C8hYeSXn.cjs.map} +1 -1
  155. package/dist/{media-DPQecp4W.js → media-CMFuSVaN.js} +2 -2
  156. package/dist/{media-DPQecp4W.js.map → media-CMFuSVaN.js.map} +1 -1
  157. package/dist/{menu-BfNE5Pz2.cjs → menu-CAkg3Ucm.cjs} +2 -2
  158. package/dist/{menu-BfNE5Pz2.cjs.map → menu-CAkg3Ucm.cjs.map} +1 -1
  159. package/dist/{menu-C5KQk1CK.js → menu-Cy55kr4r.js} +3 -3
  160. package/dist/{menu-C5KQk1CK.js.map → menu-Cy55kr4r.js.map} +1 -1
  161. package/dist/menu.cjs +1 -1
  162. package/dist/menu.js +1 -1
  163. package/dist/nav-drawer.cjs +1 -1
  164. package/dist/nav-drawer.js +4 -4
  165. package/dist/{notification-service-Bq_d-qqB.cjs → notification-service-D8akDWVC.cjs} +2 -2
  166. package/dist/{notification-service-Bq_d-qqB.cjs.map → notification-service-D8akDWVC.cjs.map} +1 -1
  167. package/dist/{notification-service-unFpqUQn.js → notification-service-DCOCdZOc.js} +3 -3
  168. package/dist/{notification-service-unFpqUQn.js.map → notification-service-DCOCdZOc.js.map} +1 -1
  169. package/dist/notification.cjs +1 -1
  170. package/dist/notification.js +1 -1
  171. package/dist/{option-Cy-nYxTs.js → option-Bo8xZrW9.js} +2 -2
  172. package/dist/{option-Cy-nYxTs.js.map → option-Bo8xZrW9.js.map} +1 -1
  173. package/dist/{option-B9LbtNdk.cjs → option-uYfF0ThT.cjs} +2 -2
  174. package/dist/{option-B9LbtNdk.cjs.map → option-uYfF0ThT.cjs.map} +1 -1
  175. package/dist/option.cjs +1 -1
  176. package/dist/option.js +1 -1
  177. package/dist/{payment-card-form-D45IjHFN.cjs → payment-card-form-BQ_ODHty.cjs} +2 -2
  178. package/dist/{payment-card-form-D45IjHFN.cjs.map → payment-card-form-BQ_ODHty.cjs.map} +1 -1
  179. package/dist/{payment-card-form-ctWIc4vM.js → payment-card-form-Bt7jTtGs.js} +3 -3
  180. package/dist/{payment-card-form-ctWIc4vM.js.map → payment-card-form-Bt7jTtGs.js.map} +1 -1
  181. package/dist/{progress-QXnS6DIm.cjs → progress-CAlVHURe.cjs} +2 -2
  182. package/dist/{progress-QXnS6DIm.cjs.map → progress-CAlVHURe.cjs.map} +1 -1
  183. package/dist/{progress-4Ef6bw05.js → progress-DAwEZ_pK.js} +2 -2
  184. package/dist/{progress-4Ef6bw05.js.map → progress-DAwEZ_pK.js.map} +1 -1
  185. package/dist/progress.cjs +1 -1
  186. package/dist/progress.js +1 -1
  187. package/dist/{radio-button-CEp1kd-P.js → radio-button-BfTz8dzJ.js} +3 -3
  188. package/dist/{radio-button-CEp1kd-P.js.map → radio-button-BfTz8dzJ.js.map} +1 -1
  189. package/dist/{radio-button-CUzdKTtW.cjs → radio-button-CaRWSk-y.cjs} +2 -2
  190. package/dist/{radio-button-CUzdKTtW.cjs.map → radio-button-CaRWSk-y.cjs.map} +1 -1
  191. package/dist/radio-group.cjs +1 -1
  192. package/dist/radio-group.js +1 -1
  193. package/dist/{schmancy-steps-container-D3m07gLT.cjs → schmancy-steps-container-BYPHyOLL.cjs} +2 -2
  194. package/dist/{schmancy-steps-container-D3m07gLT.cjs.map → schmancy-steps-container-BYPHyOLL.cjs.map} +1 -1
  195. package/dist/{schmancy-steps-container-KI2azXpv.js → schmancy-steps-container-x6jRkemp.js} +2 -2
  196. package/dist/{schmancy-steps-container-KI2azXpv.js.map → schmancy-steps-container-x6jRkemp.js.map} +1 -1
  197. package/dist/{select-Bw4QilHf.cjs → select-B0JOM-_t.cjs} +2 -2
  198. package/dist/{select-Bw4QilHf.cjs.map → select-B0JOM-_t.cjs.map} +1 -1
  199. package/dist/{select-g77JoEFx.js → select-BJaDcPZl.js} +3 -3
  200. package/dist/{select-g77JoEFx.js.map → select-BJaDcPZl.js.map} +1 -1
  201. package/dist/select.cjs +1 -1
  202. package/dist/select.js +1 -1
  203. package/dist/{sheet-rcWGv1EZ.js → sheet-D4A-XwtC.js} +4 -4
  204. package/dist/{sheet-rcWGv1EZ.js.map → sheet-D4A-XwtC.js.map} +1 -1
  205. package/dist/{sheet-C-bFq5IG.cjs → sheet-D_FOiCy4.cjs} +2 -2
  206. package/dist/{sheet-C-bFq5IG.cjs.map → sheet-D_FOiCy4.cjs.map} +1 -1
  207. package/dist/sheet.cjs +1 -1
  208. package/dist/sheet.js +2 -2
  209. package/dist/{sheet.service-ihtgUWRM.cjs → sheet.service-C0yEu73g.cjs} +2 -2
  210. package/dist/{sheet.service-ihtgUWRM.cjs.map → sheet.service-C0yEu73g.cjs.map} +1 -1
  211. package/dist/{sheet.service-BKQ7n7nz.js → sheet.service-Cs6x0-dj.js} +2 -2
  212. package/dist/{sheet.service-BKQ7n7nz.js.map → sheet.service-Cs6x0-dj.js.map} +1 -1
  213. package/dist/{slider-DMIOW38W.cjs → slider-DWkftwBc.cjs} +2 -2
  214. package/dist/{slider-DMIOW38W.cjs.map → slider-DWkftwBc.cjs.map} +1 -1
  215. package/dist/{slider-BJQE9wHL.js → slider-R8CZdtHO.js} +3 -3
  216. package/dist/{slider-BJQE9wHL.js.map → slider-R8CZdtHO.js.map} +1 -1
  217. package/dist/slider.cjs +1 -1
  218. package/dist/slider.js +1 -1
  219. package/dist/{spinner-NFkGJJz1.js → spinner-4FisLDbU.js} +34 -36
  220. package/dist/spinner-4FisLDbU.js.map +1 -0
  221. package/dist/{spinner-ByMXQNV3.cjs → spinner-Dl222o48.cjs} +21 -23
  222. package/dist/spinner-Dl222o48.cjs.map +1 -0
  223. package/dist/steps.cjs +1 -1
  224. package/dist/steps.js +1 -1
  225. package/dist/{surface-BhCe8hp8.cjs → surface-BBtm2OI1.cjs} +2 -2
  226. package/dist/{surface-BhCe8hp8.cjs.map → surface-BBtm2OI1.cjs.map} +1 -1
  227. package/dist/{surface-C7jJaxVu.js → surface-DF75Qk2N.js} +2 -2
  228. package/dist/{surface-C7jJaxVu.js.map → surface-DF75Qk2N.js.map} +1 -1
  229. package/dist/surface.cjs +1 -1
  230. package/dist/surface.js +1 -1
  231. package/dist/{table-BlwkABmS.cjs → table--JptotNr.cjs} +2 -2
  232. package/dist/{table-BlwkABmS.cjs.map → table--JptotNr.cjs.map} +1 -1
  233. package/dist/{table-CmwIcTR5.js → table-1SVYVJmx.js} +2 -2
  234. package/dist/{table-CmwIcTR5.js.map → table-1SVYVJmx.js.map} +1 -1
  235. package/dist/table.cjs +1 -1
  236. package/dist/table.js +1 -1
  237. package/dist/{tabs-compatibility-BdKslPOu.js → tabs-compatibility-A6VeNdH6.js} +2 -2
  238. package/dist/{tabs-compatibility-BdKslPOu.js.map → tabs-compatibility-A6VeNdH6.js.map} +1 -1
  239. package/dist/{tabs-compatibility-v0k0K0ID.cjs → tabs-compatibility-BIXJqJ6U.cjs} +2 -2
  240. package/dist/{tabs-compatibility-v0k0K0ID.cjs.map → tabs-compatibility-BIXJqJ6U.cjs.map} +1 -1
  241. package/dist/tabs.cjs +1 -1
  242. package/dist/tabs.js +1 -1
  243. package/dist/tailwind.mixin-CWA7D8Ym.js +43 -0
  244. package/dist/{tailwind.mixin-BHLwDiBj.js.map → tailwind.mixin-CWA7D8Ym.js.map} +1 -1
  245. package/dist/tailwind.mixin-Cb7MPMz5.cjs +2 -0
  246. package/dist/{tailwind.mixin-1kcW0BGm.cjs.map → tailwind.mixin-Cb7MPMz5.cjs.map} +1 -1
  247. package/dist/teleport.cjs +1 -1
  248. package/dist/teleport.js +2 -2
  249. package/dist/{textarea-CfLyPiqF.js → textarea-Br2AU0Nv.js} +2 -2
  250. package/dist/{textarea-CfLyPiqF.js.map → textarea-Br2AU0Nv.js.map} +1 -1
  251. package/dist/{textarea-CL3oExE7.cjs → textarea-DTTc9Q9v.cjs} +2 -2
  252. package/dist/{textarea-CL3oExE7.cjs.map → textarea-DTTc9Q9v.cjs.map} +1 -1
  253. package/dist/textarea.cjs +1 -1
  254. package/dist/textarea.js +1 -1
  255. package/dist/{theme-button-D9DpgXlC.cjs → theme-button-B_qS6ur-.cjs} +2 -2
  256. package/dist/{theme-button-D9DpgXlC.cjs.map → theme-button-B_qS6ur-.cjs.map} +1 -1
  257. package/dist/{theme-button-tekBpoTr.js → theme-button-Dw6gnMP7.js} +2 -2
  258. package/dist/{theme-button-tekBpoTr.js.map → theme-button-Dw6gnMP7.js.map} +1 -1
  259. package/dist/theme-button.cjs +1 -1
  260. package/dist/theme-button.js +1 -1
  261. package/dist/theme.cjs +1 -1
  262. package/dist/theme.js +1 -1
  263. package/dist/{timezone-rpn_HlNW.js → timezone-Dtjp82BY.js} +3 -3
  264. package/dist/{timezone-rpn_HlNW.js.map → timezone-Dtjp82BY.js.map} +1 -1
  265. package/dist/{timezone-DIYE4qo4.cjs → timezone-XFFQCQxI.cjs} +2 -2
  266. package/dist/{timezone-DIYE4qo4.cjs.map → timezone-XFFQCQxI.cjs.map} +1 -1
  267. package/dist/{tooltip-apPpbYRb.cjs → tooltip-B2vaA2HE.cjs} +2 -2
  268. package/dist/{tooltip-apPpbYRb.cjs.map → tooltip-B2vaA2HE.cjs.map} +1 -1
  269. package/dist/{tooltip-C5DJ3omV.js → tooltip-CbspXmfO.js} +2 -2
  270. package/dist/{tooltip-C5DJ3omV.js.map → tooltip-CbspXmfO.js.map} +1 -1
  271. package/dist/tooltip.cjs +1 -1
  272. package/dist/tooltip.js +1 -1
  273. package/dist/{tree-DYOX-2CI.cjs → tree-BWiLuVqB.cjs} +2 -2
  274. package/dist/{tree-DYOX-2CI.cjs.map → tree-BWiLuVqB.cjs.map} +1 -1
  275. package/dist/{tree-B38B9Zts.js → tree-Cld52SH0.js} +2 -2
  276. package/dist/{tree-B38B9Zts.js.map → tree-Cld52SH0.js.map} +1 -1
  277. package/dist/tree.cjs +1 -1
  278. package/dist/tree.js +1 -1
  279. package/dist/{typewriter-Cf1Bl0lI.js → typewriter-BVgRBrud.js} +4 -4
  280. package/dist/{typewriter-Cf1Bl0lI.js.map → typewriter-BVgRBrud.js.map} +1 -1
  281. package/dist/{typewriter-D5sC3i_h.cjs → typewriter-CCUnhz7q.cjs} +2 -2
  282. package/dist/{typewriter-D5sC3i_h.cjs.map → typewriter-CCUnhz7q.cjs.map} +1 -1
  283. package/dist/typewriter.cjs +1 -1
  284. package/dist/typewriter.js +1 -1
  285. package/dist/{typography-sm5Ne22S.js → typography-BEhOBun8.js} +2 -2
  286. package/dist/{typography-sm5Ne22S.js.map → typography-BEhOBun8.js.map} +1 -1
  287. package/dist/{typography-VDYy4xDQ.cjs → typography-C_8cRYiU.cjs} +2 -2
  288. package/dist/{typography-VDYy4xDQ.cjs.map → typography-C_8cRYiU.cjs.map} +1 -1
  289. package/dist/typography.cjs +1 -1
  290. package/dist/typography.js +1 -1
  291. package/package.json +1 -1
  292. package/dist/autocomplete-Bx1vWN32.js +0 -315
  293. package/dist/autocomplete-Bx1vWN32.js.map +0 -1
  294. package/dist/autocomplete-ClTDM1cy.cjs +0 -73
  295. package/dist/autocomplete-ClTDM1cy.cjs.map +0 -1
  296. package/dist/avatar-Ytu5d0n6.cjs.map +0 -1
  297. package/dist/avatar-aYgD4qxk.js.map +0 -1
  298. package/dist/input-B7Q3RRwE.js +0 -473
  299. package/dist/input-B7Q3RRwE.js.map +0 -1
  300. package/dist/input-C4tYxk-t.cjs +0 -111
  301. package/dist/input-C4tYxk-t.cjs.map +0 -1
  302. package/dist/spinner-ByMXQNV3.cjs.map +0 -1
  303. package/dist/spinner-NFkGJJz1.js.map +0 -1
  304. package/dist/tailwind.mixin-1kcW0BGm.cjs +0 -2
  305. package/dist/tailwind.mixin-BHLwDiBj.js +0 -43
@@ -0,0 +1,332 @@
1
+ import { BehaviorSubject as E, Subject as L, fromEvent as R, combineLatest as j, timer as x, of as O, EMPTY as N, merge as z } from "rxjs";
2
+ import { classMap as H } from "lit/directives/class-map.js";
3
+ import "lit/directives/style-map.js";
4
+ import { $ as B } from "./litElement.mixin-C2BM-yMx.js";
5
+ import "./tailwind.mixin-CWA7D8Ym.js";
6
+ import { property as b, state as A, query as I, queryAssignedElements as F, customElement as U } from "lit/decorators.js";
7
+ import { html as M } from "lit";
8
+ import { createRef as W, ref as K } from "lit/directives/ref.js";
9
+ import { tap as r, takeUntil as v, distinctUntilChanged as T, debounceTime as Y, withLatestFrom as C, take as V, filter as g, switchMap as D, startWith as G, map as q } from "rxjs/operators";
10
+ function k(e, t) {
11
+ if (!e || !t) return 0;
12
+ if (e === t) return 1;
13
+ const i = e.toLowerCase().trim(), s = t.toLowerCase().trim();
14
+ if (i === s) return 1;
15
+ if (s.startsWith(i))
16
+ return 0.95 + 0.05 * (i.length / s.length);
17
+ const n = s.split(/[\s\-_]+/);
18
+ for (const u of n) if (u.startsWith(i))
19
+ return 0.85 * (1 - n.indexOf(u) / n.length * 0.1);
20
+ if (s.includes(i))
21
+ return 0.7 * (1 - s.indexOf(i) / s.length * 0.2);
22
+ if (function(u, m) {
23
+ let _ = 0, a = 0;
24
+ for (; _ < u.length && a < m.length; ) u[_] === m[a] && _++, a++;
25
+ return _ === u.length;
26
+ }(i, s)) return 0.5;
27
+ const l = function(u, m) {
28
+ if (u.length < 2 || m.length < 2) return 0;
29
+ const _ = P(u), a = P(m);
30
+ let $ = 0;
31
+ const y = new Array(a.length).fill(!1);
32
+ for (const S of _) for (let w = 0; w < a.length; w++) if (!y[w] && a[w] === S) {
33
+ $++, y[w] = !0;
34
+ break;
35
+ }
36
+ return 2 * $ / (_.length + a.length);
37
+ }(i, s), c = Math.max(i.length, s.length), o = function(u, m) {
38
+ if (u.length === 0) return m.length;
39
+ if (m.length === 0) return u.length;
40
+ const _ = [];
41
+ for (let a = 0; a <= m.length; a++) _[a] = [a];
42
+ for (let a = 0; a <= u.length; a++) _[0][a] = a;
43
+ for (let a = 1; a <= m.length; a++) for (let $ = 1; $ <= u.length; $++) {
44
+ const y = u[$ - 1] === m[a - 1] ? 0 : 1;
45
+ _[a][$] = Math.min(_[a - 1][$] + 1, _[a][$ - 1] + 1, _[a - 1][$ - 1] + y);
46
+ }
47
+ return _[m.length][u.length];
48
+ }(i, s), d = c ? 1 - o / c : 0, f = function(u, m) {
49
+ const _ = (y) => y.split("").reduce((S, w) => (S[w] = (S[w] || 0) + 1, S), {}), a = _(u), $ = _(m);
50
+ return Object.keys(a).every((y) => ($[y] || 0) >= a[y]);
51
+ }(i, s) ? 0.3 : 0;
52
+ return Math.max(0.4 * l, 0.4 * d, f);
53
+ }
54
+ function P(e) {
55
+ const t = [];
56
+ for (let i = 0; i < e.length - 1; i++) t.push(e.substring(i, i + 2));
57
+ return t;
58
+ }
59
+ var J = Object.defineProperty, Q = Object.getOwnPropertyDescriptor, p = (e, t, i, s) => {
60
+ for (var n, l = s > 1 ? void 0 : s ? Q(t, i) : t, c = e.length - 1; c >= 0; c--) (n = e[c]) && (l = (s ? n(t, i, l) : n(l)) || l);
61
+ return s && l && J(t, i, l), l;
62
+ };
63
+ let h = class extends B(":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}") {
64
+ constructor() {
65
+ super(...arguments), this.required = !1, this.placeholder = "", this.label = "", this.name = "", this.maxHeight = "300px", this.multi = !1, this.description = "", this.size = "md", this.autocomplete = "on", this.debounceMs = 200, this.similarityThreshold = 0.3, this._open = !1, this._inputValue = "", this._visibleOptionsCount = 0, this._hasResults = !0, this._inputElementRef = W(), this._selectedValue$ = new E(""), this._selectedValues$ = new E([]), this._inputValue$ = new E(""), this._open$ = new E(!1), this._options$ = new E([]), this._optionSelect$ = new L(), this._documentClick$ = new L(), this._checkAutofill$ = new L();
66
+ }
67
+ get values() {
68
+ return [...this._selectedValues$.value];
69
+ }
70
+ set values(e) {
71
+ this._selectedValues$.next(Array.isArray(e) ? [...e] : []);
72
+ }
73
+ get value() {
74
+ return this.multi ? this._selectedValues$.value.join(",") : this._selectedValue$.value;
75
+ }
76
+ set value(e) {
77
+ this.multi ? this._selectedValues$.next(e ? e.split(",").map((t) => t.trim()).filter(Boolean) : []) : this._selectedValue$.next(e);
78
+ }
79
+ connectedCallback() {
80
+ super.connectedCallback(), this.id || (this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`), this._setupAutocompleteLogic(), this._setupDocumentClickHandler(), this._setupAutofillDetection();
81
+ }
82
+ _setupAutocompleteLogic() {
83
+ this._options$.pipe(r((e) => {
84
+ e.forEach((t, i) => {
85
+ t.setAttribute("role", "option"), t.tabIndex = -1, t.id || (t.id = `${this.id}-option-${i}`), t.hasAttribute("data-event-bound") || (R(t, "click").pipe(r((s) => s.stopPropagation()), v(this.disconnecting)).subscribe(() => this._optionSelect$.next(t)), t.setAttribute("data-event-bound", "true"));
86
+ });
87
+ }), v(this.disconnecting)).subscribe(), j([this._selectedValue$, this._selectedValues$, this._options$]).pipe(r(([e, t, i]) => {
88
+ i.forEach((s) => {
89
+ s.selected = this.multi ? t.includes(s.value) : s.value === e, s.setAttribute("aria-selected", String(s.selected));
90
+ });
91
+ }), v(this.disconnecting)).subscribe(), this._inputValue$.pipe(T(), Y(this.debounceMs), C(this._options$, this._open$), r(([e, t, i]) => {
92
+ if (!i) return;
93
+ const s = e.trim();
94
+ if (s) {
95
+ const n = t.map((o) => {
96
+ const d = o.label || o.textContent || "", f = o.value, u = k(s, d), m = k(s, f);
97
+ return { option: o, score: Math.max(1.1 * u, m) };
98
+ });
99
+ n.sort((o, d) => d.score - o.score);
100
+ const l = n.find((o) => (o.option.label || o.option.textContent || "").toLowerCase().trim() === s.toLowerCase());
101
+ if (l && !this.multi) {
102
+ const o = this._options.find((f) => f.value === this._selectedValue$.value), d = (o?.label || o?.textContent || "").toLowerCase().trim();
103
+ if (s.toLowerCase() !== d) return void this._optionSelect$.next(l.option);
104
+ }
105
+ let c = 0;
106
+ n.forEach((o, d) => {
107
+ const { option: f, score: u } = o;
108
+ u < this.similarityThreshold ? f.hidden = !0 : (f.hidden = !1, c++, f.style.order = String(d));
109
+ }), this._visibleOptionsCount = c, this._hasResults = c > 0;
110
+ } else t.forEach((n) => {
111
+ n.hidden = !1, n.style.order = "0";
112
+ }), this._visibleOptionsCount = t.length, this._hasResults = !0;
113
+ this._announceToScreenReader(this._visibleOptionsCount > 0 ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? "" : "s"} available.` : "No results found.");
114
+ }), v(this.disconnecting)).subscribe(), this._optionSelect$.pipe(C(this._selectedValue$, this._selectedValues$), r(([e, t, i]) => {
115
+ if (this.multi) {
116
+ const s = i.indexOf(e.value), n = s > -1 ? [...i.slice(0, s), ...i.slice(s + 1)] : [...i, e.value];
117
+ this._selectedValues$.next(n), this._inputValue$.next(""), this._inputValue = "";
118
+ const l = this._getSelectedLabels();
119
+ this._announceToScreenReader(l.length > 0 ? `Selected: ${l.join(", ")}` : "No options selected");
120
+ } else this._selectedValue$.next(e.value), this._open$.next(!1), this._open = !1, this._inputValue = e.label || e.textContent || "", this._inputValue$.next(this._inputValue), x(100).pipe(r(() => this._inputElementRef.value?.blur()), V(1)).subscribe(), this._announceToScreenReader(`Selected: ${e.label || e.textContent}`);
121
+ }), r(() => this._fireChangeEvent()), v(this.disconnecting)).subscribe(), j([this._open$, this._selectedValue$, this._selectedValues$, this._options$]).pipe(g(() => !this._open$.value), r(([, e, t, i]) => {
122
+ if (this.multi) {
123
+ const s = i.filter((n) => t.includes(n.value)).map((n) => n.label || n.textContent || "");
124
+ this._inputValue = s.join(", ");
125
+ } else {
126
+ const s = i.find((n) => n.value === e);
127
+ this._inputValue = s && (s.label || s.textContent) || "";
128
+ }
129
+ this._inputValue$.next(this._inputValue);
130
+ }), v(this.disconnecting)).subscribe(), this._open$.pipe(r((e) => this._open = e), v(this.disconnecting)).subscribe();
131
+ }
132
+ _setupDocumentClickHandler() {
133
+ this._documentClick$.pipe(g((e) => !e.composedPath().includes(this)), g((e) => !this._options.some((t) => e.composedPath().includes(t))), g(() => this._open), r(() => {
134
+ this._open$.next(!1), this._updateInputDisplay();
135
+ }), v(this.disconnecting)).subscribe(), this._open$.pipe(T(), D((e) => e ? x(10).pipe(r(() => document.addEventListener("click", (t) => this._documentClick$.next(t))), D(() => N)) : O(null).pipe(r(() => document.removeEventListener("click", (t) => this._documentClick$.next(t))))), v(this.disconnecting)).subscribe();
136
+ }
137
+ _setupAutofillDetection() {
138
+ z(x(100, 500).pipe(V(10)), this._checkAutofill$, x(100).pipe(D(() => R(window, "load").pipe(G(null))))).pipe(q(() => {
139
+ const e = this._inputElementRef.value;
140
+ return e ? e.shadowRoot?.querySelector("input") || e.querySelector("input") || e._inputRef?.value : null;
141
+ }), g((e) => !!e), q((e) => e.value), g((e) => !!e && e.trim().length > 0), T(), C(this._options$), r(([e, t]) => {
142
+ let i = null, s = 0;
143
+ if (t.forEach((n) => {
144
+ const l = n.label || n.textContent || "", c = n.value, o = k(e, l), d = k(e, c), f = Math.max(o, d);
145
+ f > s && f >= this.similarityThreshold && (s = f, i = n);
146
+ }), i && s >= 0.95 && e.length >= 3 && ((i.label || i.textContent || "").toLowerCase() === e.toLowerCase() || i.value.toLowerCase() === e.toLowerCase())) {
147
+ this.multi ? this._selectedValues$.next([i.value]) : this._selectedValue$.next(i.value);
148
+ const n = i.label || i.textContent || "";
149
+ this._inputValue = n, this._inputValue$.next(n);
150
+ const l = this._inputElementRef.value;
151
+ l && (l.value = n), this._open$.next(!1), this._fireChangeEvent(), this._announceToScreenReader(`Autofilled: ${n}`);
152
+ }
153
+ }), v(this.disconnecting)).subscribe(), x(100).pipe(q(() => {
154
+ const e = this._inputElementRef.value;
155
+ return e ? e.shadowRoot?.querySelector("input") || e.querySelector("input") || e._inputRef?.value : null;
156
+ }), g((e) => !!e), D((e) => R(e, "animationstart").pipe(g((t) => t.animationName === "onAutoFillStart"), r(() => {
157
+ x(100).pipe(r(() => this._checkAutofill$.next()), V(1)).subscribe();
158
+ }))), v(this.disconnecting)).subscribe();
159
+ }
160
+ _updateInputDisplay() {
161
+ O(null).pipe(C(this._selectedValue$, this._selectedValues$, this._options$, this._open$), r(([, e, t, i, s]) => {
162
+ if (this._inputElementRef.value && (!s || !this.multi)) {
163
+ if (this.multi) {
164
+ const n = i.filter((l) => t.includes(l.value)).map((l) => l.label || l.textContent || "");
165
+ this._inputValue = n.join(", ");
166
+ } else {
167
+ const n = i.find((l) => l.value === e);
168
+ this._inputValue = n && (n.label || n.textContent) || "";
169
+ }
170
+ this._inputValue$.next(this._inputValue), this._inputElementRef.value.value = this._inputValue;
171
+ }
172
+ }), V(1)).subscribe();
173
+ }
174
+ _getSelectedLabels() {
175
+ return this._options.filter((e) => this.multi ? this._selectedValues$.value.includes(e.value) : e.value === this._selectedValue$.value).map((e) => e.label || e.textContent || "");
176
+ }
177
+ _announceToScreenReader(e) {
178
+ const t = this.shadowRoot?.querySelector("#live-status");
179
+ t && (t.textContent = e);
180
+ }
181
+ _fireChangeEvent() {
182
+ const e = { value: this.value };
183
+ this.multi && (e.values = [...this._selectedValues$.value]), this.dispatchEvent(new CustomEvent("change", { detail: e, bubbles: !0, composed: !0 }));
184
+ }
185
+ checkValidity() {
186
+ return !this.required || (this.multi ? this._selectedValues$.value.length > 0 : !!this._selectedValue$.value);
187
+ }
188
+ reportValidity() {
189
+ return this._inputElementRef.value ? this._inputElementRef.value.reportValidity() : this.checkValidity();
190
+ }
191
+ firstUpdated() {
192
+ x(200).pipe(r(() => this._checkAutofill$.next()), V(1)).subscribe(), this._options$.pipe(g((e) => e.length > 0), r(() => this._checkAutofill$.next()), v(this.disconnecting)).subscribe();
193
+ }
194
+ render() {
195
+ const e = `${this.id}-desc`;
196
+ return M`
197
+ <div class="relative">
198
+ <!-- Screen reader live region -->
199
+ <div id="live-status" role="status" aria-live="polite" class="sr-only"></div>
200
+
201
+ <!-- Description -->
202
+ ${this.description ? M`<div id="${e}" class="sr-only">${this.description}</div>` : ""}
203
+
204
+ <!-- Input -->
205
+ <slot name="trigger">
206
+ <sch-input
207
+ .size=${this.size}
208
+ ${K(this._inputElementRef)}
209
+ id="autocomplete-input"
210
+ class="w-full"
211
+ .name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-")}
212
+ .label=${this.label}
213
+ .placeholder=${this.placeholder}
214
+ .required=${this.required}
215
+ .value=${this._inputValue}
216
+ type="text"
217
+ autocomplete=${this.autocomplete}
218
+ clickable
219
+ role="combobox"
220
+ aria-autocomplete="list"
221
+ aria-haspopup="listbox"
222
+ aria-controls="options"
223
+ aria-expanded=${this._open}
224
+ aria-describedby=${this.description ? e : void 0}
225
+ @input=${(t) => {
226
+ const i = t.target.value;
227
+ this._inputValue = i, this._inputValue$.next(i), i.trim() || this.multi || !this._selectedValue$.value || (this._selectedValue$.next(""), this._fireChangeEvent());
228
+ }}
229
+ @focus=${(t) => {
230
+ t.stopPropagation();
231
+ const i = this.multi ? this._selectedValues$.value.length > 0 : !!this._selectedValue$.value;
232
+ this.multi && !i && (this._inputValue = "", this._inputValue$.next(""), this._inputElementRef.value && (this._inputElementRef.value.value = "")), this._open$.next(!0);
233
+ }}
234
+ @blur=${(t) => {
235
+ t.stopPropagation(), O(this._inputValue.trim()).pipe(C(this._open$), g(([, i]) => i), r(([i]) => {
236
+ if (i && (this.multi || !this._selectedValue$.value)) {
237
+ let s = null, n = 0;
238
+ this._options.forEach((l) => {
239
+ if (this.multi && this._selectedValues$.value.includes(l.value)) return;
240
+ const c = l.label || l.textContent || "", o = l.value, d = k(i, c), f = k(i, o), u = Math.max(1.1 * d, f);
241
+ u > n && u >= this.similarityThreshold && (n = u, s = l);
242
+ }), s ? this._optionSelect$.next(s) : (this._open$.next(!1), this._updateInputDisplay());
243
+ } else this._open$.next(!1), this._updateInputDisplay();
244
+ }), V(1)).subscribe();
245
+ }}
246
+ @click=${(t) => {
247
+ t.stopPropagation(), this._open$.next(!0);
248
+ }}
249
+ @keydown=${(t) => {
250
+ this._handleKeyDown(t);
251
+ }}
252
+ >
253
+ </sch-input>
254
+ </slot>
255
+
256
+ <!-- Options dropdown -->
257
+ <ul
258
+ id="options"
259
+ class=${H({ absolute: !0, "z-[1000]": !0, "mt-1": !0, "w-full": !0, "rounded-md": !0, "shadow-md": !0, "overflow-auto": !0, "min-w-full": !0, "bg-surface-low": !0, flex: !0, "flex-col": !0 })}
260
+ role="listbox"
261
+ aria-multiselectable=${this.multi ? "true" : "false"}
262
+ aria-label=${`${this.label || "Options"} dropdown`}
263
+ ?hidden=${!this._open}
264
+ style="max-height: ${this.maxHeight}; display: ${this._open ? "flex" : "none"};"
265
+ @slotchange=${() => {
266
+ this._options$.next(this._options), x(100).pipe(r(() => this._checkAutofill$.next()), V(1)).subscribe();
267
+ }}
268
+ >
269
+ <slot></slot>
270
+ ${this._hasResults ? "" : M`
271
+ <li class="px-3 py-2 text-sm text-muted">No results found</li>
272
+ `}
273
+ </ul>
274
+ </div>
275
+
276
+ <style>
277
+ :host {
278
+ display: block;
279
+ }
280
+
281
+ @keyframes onAutoFillStart {
282
+ from {/**/}
283
+ to {/**/}
284
+ }
285
+
286
+ sch-input::part(input):-webkit-autofill,
287
+ sch-input input:-webkit-autofill {
288
+ animation-name: onAutoFillStart;
289
+ animation-duration: 1ms;
290
+ }
291
+ </style>
292
+ `;
293
+ }
294
+ _handleKeyDown(e) {
295
+ R(document, "keydown").pipe(V(1), C(this._open$, this._options$), r(([t, i, s]) => {
296
+ if (!i && (t.key === "ArrowDown" || t.key === "Enter")) return t.preventDefault(), this._open$.next(!0), void x(10).pipe(r(() => {
297
+ s.find((d) => !d.hidden)?.focus();
298
+ }), V(1)).subscribe();
299
+ if (!i) return;
300
+ const n = s.filter((o) => !o.hidden).sort((o, d) => parseInt(o.style.order || "0") - parseInt(d.style.order || "0")), l = n.find((o) => o === document.activeElement), c = l ? n.indexOf(l) : -1;
301
+ switch (t.key) {
302
+ case "Escape":
303
+ t.preventDefault(), this._open$.next(!1), this._updateInputDisplay(), this._inputElementRef.value?.focus();
304
+ break;
305
+ case "Tab":
306
+ this._open$.next(!1), this._updateInputDisplay();
307
+ break;
308
+ case "ArrowDown":
309
+ t.preventDefault();
310
+ const o = c < n.length - 1 ? c + 1 : 0;
311
+ n[o]?.focus();
312
+ break;
313
+ case "ArrowUp":
314
+ t.preventDefault();
315
+ const d = c > 0 ? c - 1 : n.length - 1;
316
+ n[d]?.focus();
317
+ break;
318
+ case "Home":
319
+ t.preventDefault(), n[0]?.focus();
320
+ break;
321
+ case "End":
322
+ t.preventDefault(), n[n.length - 1]?.focus();
323
+ break;
324
+ case "Enter":
325
+ case " ":
326
+ l && (t.preventDefault(), this._optionSelect$.next(l));
327
+ }
328
+ })).subscribe();
329
+ }
330
+ };
331
+ p([b({ type: Boolean })], h.prototype, "required", 2), p([b({ type: String })], h.prototype, "placeholder", 2), p([b({ type: String, reflect: !0 })], h.prototype, "label", 2), p([b({ type: String })], h.prototype, "name", 2), p([b({ type: String })], h.prototype, "maxHeight", 2), p([b({ type: Boolean })], h.prototype, "multi", 2), p([b({ type: String })], h.prototype, "description", 2), p([b({ type: String, reflect: !0 })], h.prototype, "size", 2), p([b({ type: String })], h.prototype, "autocomplete", 2), p([b({ type: Number })], h.prototype, "debounceMs", 2), p([b({ type: Number })], h.prototype, "similarityThreshold", 2), p([b({ type: Array })], h.prototype, "values", 1), p([b({ type: String, reflect: !0 })], h.prototype, "value", 1), p([A()], h.prototype, "_open", 2), p([A()], h.prototype, "_inputValue", 2), p([A()], h.prototype, "_visibleOptionsCount", 2), p([A()], h.prototype, "_hasResults", 2), p([I("#options")], h.prototype, "_listbox", 2), p([I("sch-input")], h.prototype, "_input", 2), p([F({ flatten: !0 })], h.prototype, "_options", 2), h = p([U("schmancy-autocomplete")], h);
332
+ //# sourceMappingURL=autocomplete-Cb6hDFh1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete-Cb6hDFh1.js","sources":["../src/utils/search.ts","../src/autocomplete/autocomplete.ts"],"sourcesContent":["/**\n * Calculate similarity score between two strings.\n * Returns a value between 0 (no match) and 1 (exact match).\n * Optimized for autocomplete with prioritization of start matches and whole words.\n *\n * @param query The search query string\n * @param target The target string to compare against\n * @returns A similarity score from 0 to 1\n */\nexport function similarity(query: string, target: string): number {\n\t// Handle edge cases\n\tif (!query || !target) return 0\n\tif (query === target) return 1\n\n\t// Normalize strings for comparison\n\tconst normalizedQuery = query.toLowerCase().trim()\n\tconst normalizedTarget = target.toLowerCase().trim()\n\n\t// 1. Exact match (case-insensitive)\n\tif (normalizedQuery === normalizedTarget) return 1\n\n\t// 2. Target starts with query (highest priority for autocomplete)\n\tif (normalizedTarget.startsWith(normalizedQuery)) {\n\t\t// Give higher score to shorter targets (more precise matches)\n\t\tconst lengthRatio = normalizedQuery.length / normalizedTarget.length\n\t\treturn 0.95 + (lengthRatio * 0.05) // Score between 0.95 and 1.0\n\t}\n\n\t// 3. Word boundary match (query matches start of any word in target)\n\tconst words = normalizedTarget.split(/[\\s\\-_]+/)\n\tfor (const word of words) {\n\t\tif (word.startsWith(normalizedQuery)) {\n\t\t\t// Score based on which word matched (earlier words score higher)\n\t\t\tconst wordIndex = words.indexOf(word)\n\t\t\tconst wordPositionScore = 1 - (wordIndex / words.length) * 0.1\n\t\t\treturn 0.85 * wordPositionScore // Score between 0.765 and 0.85\n\t\t}\n\t}\n\n\t// 4. Direct substring match (query appears anywhere in target)\n\tif (normalizedTarget.includes(normalizedQuery)) {\n\t\t// Score based on position (earlier position scores higher)\n\t\tconst position = normalizedTarget.indexOf(normalizedQuery)\n\t\tconst positionScore = 1 - (position / normalizedTarget.length) * 0.2\n\t\treturn 0.7 * positionScore // Score between 0.56 and 0.7\n\t}\n\n\t// 5. Subsequence check (all query chars appear in order)\n\tif (isSubsequence(normalizedQuery, normalizedTarget)) {\n\t\treturn 0.5\n\t}\n\n\t// 6. Fuzzy matching for typos\n\t// 6a. Dice coefficient (good for similar words)\n\tconst diceScore = diceCoefficient(normalizedQuery, normalizedTarget)\n\t\n\t// 6b. Levenshtein distance (good for typos)\n\tconst maxLength = Math.max(normalizedQuery.length, normalizedTarget.length)\n\tconst levenshteinDistance = calculateLevenshtein(normalizedQuery, normalizedTarget)\n\tconst levenshteinScore = maxLength ? 1 - levenshteinDistance / maxLength : 0\n\n\t// 6c. Character frequency match (anagram-like)\n\tconst anagramScore = hasAllCharacters(normalizedQuery, normalizedTarget) ? 0.3 : 0\n\n\t// Combine fuzzy scores with weights\n\tconst fuzzyScore = Math.max(\n\t\tdiceScore * 0.4,\n\t\tlevenshteinScore * 0.4,\n\t\tanagramScore\n\t)\n\n\treturn fuzzyScore\n}\n\n// Keep the rest of the helper functions as they are...\n/**\n * Check if string 'sub' is a subsequence of string 'str'.\n * All characters in 'sub' must appear in order in 'str'.\n */\nfunction isSubsequence(sub: string, str: string): boolean {\n\tlet i = 0,\n\t\tj = 0\n\twhile (i < sub.length && j < str.length) {\n\t\tif (sub[i] === str[j]) i++\n\t\tj++\n\t}\n\treturn i === sub.length\n}\n\n/**\n * Check if all characters in 'query' are present in 'target'.\n * For example, \"aovc\" matches \"avocados\" (anagram subset matching).\n */\nfunction hasAllCharacters(query: string, target: string): boolean {\n\tconst countChars = (s: string): Record<string, number> => {\n\t\treturn s.split('').reduce(\n\t\t\t(acc, char) => {\n\t\t\t\tacc[char] = (acc[char] || 0) + 1\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{} as Record<string, number>,\n\t\t)\n\t}\n\n\tconst queryCount = countChars(query)\n\tconst targetCount = countChars(target)\n\n\treturn Object.keys(queryCount).every(char => (targetCount[char] || 0) >= queryCount[char])\n}\n\n/**\n * Generate bigrams for a string.\n * A bigram is a sequence of two adjacent characters.\n */\nfunction getBigrams(s: string): string[] {\n\tconst bigrams = []\n\tfor (let i = 0; i < s.length - 1; i++) {\n\t\tbigrams.push(s.substring(i, i + 2))\n\t}\n\treturn bigrams\n}\n\n/**\n * Compute Dice's coefficient for two strings based on bigrams.\n * Returns a value between 0 (no similarity) and 1 (perfect match).\n */\nfunction diceCoefficient(s1: string, s2: string): number {\n\tif (s1.length < 2 || s2.length < 2) return 0\n\n\tconst bigrams1 = getBigrams(s1)\n\tconst bigrams2 = getBigrams(s2)\n\n\tlet intersection = 0\n\tconst used = new Array(bigrams2.length).fill(false)\n\n\tfor (const bigram of bigrams1) {\n\t\tfor (let i = 0; i < bigrams2.length; i++) {\n\t\t\tif (!used[i] && bigrams2[i] === bigram) {\n\t\t\t\tintersection++\n\t\t\t\tused[i] = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (2 * intersection) / (bigrams1.length + bigrams2.length)\n}\n\n/**\n * Calculate Levenshtein distance between two strings.\n */\nfunction calculateLevenshtein(a: string, b: string): number {\n\tif (a.length === 0) return b.length\n\tif (b.length === 0) return a.length\n\n\tconst matrix: number[][] = []\n\n\t// Initialize the matrix\n\tfor (let i = 0; i <= b.length; i++) {\n\t\tmatrix[i] = [i]\n\t}\n\tfor (let j = 0; j <= a.length; j++) {\n\t\tmatrix[0][j] = j\n\t}\n\n\t// Calculate distances\n\tfor (let i = 1; i <= b.length; i++) {\n\t\tfor (let j = 1; j <= a.length; j++) {\n\t\t\tconst cost = a[j - 1] === b[i - 1] ? 0 : 1\n\t\t\tmatrix[i][j] = Math.min(\n\t\t\t\tmatrix[i - 1][j] + 1, // deletion\n\t\t\t\tmatrix[i][j - 1] + 1, // insertion\n\t\t\t\tmatrix[i - 1][j - 1] + cost, // substitution\n\t\t\t)\n\t\t}\n\t}\n\n\treturn matrix[b.length][a.length]\n}\n","import { $LitElement } from '@mixins/index'\nimport { InputSize } from '@schmancy/input'\nimport SchmancyInputV2 from '@schmancy/input/input-v2'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n fromEvent,\n merge,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function\nimport { similarity } from '../utils/search'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'on'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInputV2\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n private _checkAutofill$ = new Subject<void>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n if (!option.hasAttribute('data-event-bound')) {\n fromEvent(option, 'click').pipe(\n tap(e => e.stopPropagation()),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n options.forEach(option => {\n option.selected = this.multi \n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n return { option, score }\n })\n \n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n \n // Check for exact match with the input\n const exactMatch = scoredOptions.find(item => {\n const optionLabel = (item.option.label || item.option.textContent || '').toLowerCase().trim()\n return optionLabel === term.toLowerCase()\n })\n \n // Auto-select exact match for single select mode when:\n // 1. The input exactly matches an option's label\n // 2. Not in multi-select mode\n // 3. Either no value is selected OR the current selection doesn't match the input\n if (exactMatch && !this.multi) {\n const currentSelectedOption = this._options.find(opt => opt.value === this._selectedValue$.value)\n const currentSelectedLabel = (currentSelectedOption?.label || currentSelectedOption?.textContent || '').toLowerCase().trim()\n \n // Only auto-select if the input doesn't match the current selection\n if (term.toLowerCase() !== currentSelectedLabel) {\n // Auto-select the exact match\n this._optionSelect$.next(exactMatch.option)\n return // Exit early since we've made a selection\n }\n }\n \n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n \n // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\n option.style.order = String(index)\n }\n })\n \n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n \n this._announceToScreenReader(\n this._visibleOptionsCount > 0 \n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n \n this._inputValue$.next('')\n this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value),\n tap(([, selectedValue, selectedValues, options]) => {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open => \n open \n ? timer(10).pipe(\n tap(() => document.addEventListener('click', e => this._documentClick$.next(e))),\n switchMap(() => EMPTY)\n )\n : of(null).pipe(\n tap(() => document.removeEventListener('click', e => this._documentClick$.next(e)))\n )\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupAutofillDetection() {\n // Enhanced autofill detection with fuzzy matching\n merge(\n timer(100, 500).pipe(take(10)),\n this._checkAutofill$,\n timer(100).pipe(\n switchMap(() => \n fromEvent(window, 'load').pipe(startWith(null))\n )\n )\n ).pipe(\n map(() => {\n const schInput = this._inputElementRef.value\n if (!schInput) return null\n return schInput.shadowRoot?.querySelector('input') || \n schInput.querySelector('input') ||\n (schInput as any)._inputRef?.value\n }),\n filter(input => !!input),\n map(input => (input as HTMLInputElement).value),\n filter(value => !!value && value.trim().length > 0),\n distinctUntilChanged(),\n withLatestFrom(this._options$),\n tap(([autofilledValue, options]) => {\n console.log('Autofill detected:', autofilledValue)\n \n // Use fuzzy matching to find best matching option\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n options.forEach(option => {\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores\n const labelScore = similarity(autofilledValue, optionLabel)\n const valueScore = similarity(autofilledValue, optionValue)\n \n // Use the higher score\n const score = Math.max(labelScore, valueScore)\n \n // Keep track of best match\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n\n // Only accept autofill if:\n // 1. The score is very high (>= 0.95)\n // 2. The autofilled value is at least 3 characters (to avoid single character matches)\n // 3. It's an exact match (case-insensitive)\n if (bestMatch && bestScore >= 0.95 && autofilledValue.length >= 3) {\n // Additional check for exact match\n const optionLabel = bestMatch.label || bestMatch.textContent || ''\n const isExactMatch = optionLabel.toLowerCase() === autofilledValue.toLowerCase() ||\n bestMatch.value.toLowerCase() === autofilledValue.toLowerCase()\n \n if (isExactMatch) {\n console.log('Found matching option:', bestMatch.value, 'with score:', bestScore)\n \n // Select the option\n if (this.multi) {\n this._selectedValues$.next([bestMatch.value])\n } else {\n this._selectedValue$.next(bestMatch.value)\n }\n \n // Update input to show the label\n const displayValue = bestMatch.label || bestMatch.textContent || ''\n this._inputValue = displayValue\n this._inputValue$.next(displayValue)\n \n // Update the actual input element\n const input = this._inputElementRef.value\n if (input) {\n input.value = displayValue\n }\n \n // Close dropdown if open\n this._open$.next(false)\n \n // Fire change event\n this._fireChangeEvent()\n \n // Announce to screen reader\n this._announceToScreenReader(`Autofilled: ${displayValue}`)\n }\n }\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Chrome autofill animation detection\n timer(100).pipe(\n map(() => {\n const schInput = this._inputElementRef.value\n if (!schInput) return null\n return schInput.shadowRoot?.querySelector('input') || \n schInput.querySelector('input') ||\n (schInput as any)._inputRef?.value\n }),\n filter(input => !!input),\n switchMap(input => {\n return fromEvent<AnimationEvent>(input!, 'animationstart').pipe(\n filter(e => e.animationName === 'onAutoFillStart'),\n tap(() => {\n console.log('Chrome autofill animation detected')\n timer(100).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n })\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _updateInputDisplay() {\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._selectedValues$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, selectedValues, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen || !this.multi) {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n timer(200).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n \n this._options$.pipe(\n filter(options => options.length > 0),\n tap(() => this._checkAutofill$.next()),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Input -->\n <slot name=\"trigger\">\n <sch-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n \n // If the input is cleared, also clear the selected value\n if (!value.trim() && !this.multi && this._selectedValue$.value) {\n this._selectedValue$.next('')\n this._fireChangeEvent()\n }\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n \n const hasSelection = this.multi \n ? this._selectedValues$.value.length > 0\n : !!this._selectedValue$.value\n \n if (this.multi && !hasSelection) {\n this._inputValue = ''\n this._inputValue$.next('')\n if (this._inputElementRef.value) {\n this._inputElementRef.value.value = ''\n }\n }\n \n this._open$.next(true)\n }}\n @blur=${(e: FocusEvent) => {\n e.stopPropagation()\n // Delay to allow click events on options to fire first\n of(this._inputValue.trim()).pipe(\n withLatestFrom(this._open$),\n filter(([, isOpen]) => isOpen),\n tap(([inputValue]) => {\n // Only auto-select if there's input and no current selection (for single select)\n const shouldAutoSelect = inputValue && (\n this.multi \n ? true // Always try to match for multi-select\n : !this._selectedValue$.value // Only if no value for single select\n )\n \n if (shouldAutoSelect) {\n // Find best matching option\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip already selected options in multi mode\n if (this.multi && this._selectedValues$.value.includes(option.value)) {\n return\n }\n \n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores\n const labelScore = similarity(inputValue, optionLabel)\n const valueScore = similarity(inputValue, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore)\n \n // Keep track of best match\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // If we found a good match, select it\n if (bestMatch) {\n this._optionSelect$.next(bestMatch)\n } else {\n // Close dropdown without selection\n this._open$.next(false)\n this._updateInputDisplay()\n }\n } else {\n // Close dropdown\n this._open$.next(false)\n this._updateInputDisplay()\n }\n }),\n take(1)\n ).subscribe()\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n >\n </sch-input>\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._options$.next(this._options)\n timer(100).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n\n <style>\n :host {\n display: block;\n }\n\n @keyframes onAutoFillStart {\n from {/**/}\n to {/**/}\n }\n\n sch-input::part(input):-webkit-autofill,\n sch-input input:-webkit-autofill {\n animation-name: onAutoFillStart;\n animation-duration: 1ms;\n }\n </style>\n `\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$),\n tap(([event, isOpen, options]) => {\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n \n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(false)\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["similarity","query","target","normalizedQuery","toLowerCase","trim","normalizedTarget","startsWith","length","words","split","word","indexOf","includes","sub","str","i","j","diceScore","s1","s2","bigrams1","getBigrams","bigrams2","intersection","used","Array","fill","bigram","maxLength","Math","max","levenshteinDistance","a","b","matrix","cost","min","levenshteinScore","anagramScore","countChars","s","reduce","acc","char","queryCount","targetCount","Object","keys","every","bigrams","push","substring","SchmancyAutocomplete","$LitElement","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","_checkAutofill$","values","value","vals","next","isArray","join","val","map","v","filter","Boolean","connectedCallback","id","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","_setupAutofillDetection","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","valueScore","score","sort","exactMatch","find","item","currentSelectedOption","_options","opt","currentSelectedLabel","visibleCount","hidden","style","order","_announceToScreenReader","_","currentValues","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","open","composedPath","some","_updateInputDisplay","switchMap","document","addEventListener","EMPTY","of","removeEventListener","merge","window","startWith","schInput","shadowRoot","querySelector","_inputRef","input","autofilledValue","bestMatch","bestScore","displayValue","animationName","message","liveRegion","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","render","descriptionId","html","ref","replace","hasSelection","inputValue","_handleKeyDown","classMap","absolute","flex","_e","event","key","preventDefault","firstVisible","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","queryAssignedElements","flatten","customElement"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";require("./autocomplete-ClTDM1cy.cjs");
1
+ "use strict";require("./autocomplete-BPnLYwJ4.cjs");
2
2
  //# sourceMappingURL=autocomplete.cjs.map
@@ -1,2 +1,2 @@
1
- import "./autocomplete-Bx1vWN32.js";
1
+ import "./autocomplete-Cb6hDFh1.js";
2
2
  //# sourceMappingURL=autocomplete.js.map