@mhmo91/schmancy 0.4.94 → 0.4.96

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 (313) hide show
  1. package/dist/{animated-text-BLDqQ33G.js → animated-text-B1DKGEyL.js} +3 -3
  2. package/dist/{animated-text-BLDqQ33G.js.map → animated-text-B1DKGEyL.js.map} +1 -1
  3. package/dist/{animated-text-CIgDmUF0.cjs → animated-text-DBRSI9xt.cjs} +2 -2
  4. package/dist/{animated-text-CIgDmUF0.cjs.map → animated-text-DBRSI9xt.cjs.map} +1 -1
  5. package/dist/animated-text.cjs +1 -1
  6. package/dist/animated-text.js +1 -1
  7. package/dist/area.cjs +1 -1
  8. package/dist/area.component-DA4tYUkZ.cjs +12 -0
  9. package/dist/area.component-DA4tYUkZ.cjs.map +1 -0
  10. package/dist/area.component-DbHc6U3D.js +320 -0
  11. package/dist/area.component-DbHc6U3D.js.map +1 -0
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-35wx4zfo.cjs → autocomplete-BFN4UGNs.cjs} +2 -2
  14. package/dist/{autocomplete-35wx4zfo.cjs.map → autocomplete-BFN4UGNs.cjs.map} +1 -1
  15. package/dist/{autocomplete-DMbJLodc.js → autocomplete-DpZQqAGm.js} +3 -3
  16. package/dist/{autocomplete-DMbJLodc.js.map → autocomplete-DpZQqAGm.js.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/{avatar-BqGZ5lKc.js → avatar-BGzMoyIf.js} +48 -48
  20. package/dist/{avatar-BqGZ5lKc.js.map → avatar-BGzMoyIf.js.map} +1 -1
  21. package/dist/{avatar-UnP-o7T9.cjs → avatar-C-SwQh5Z.cjs} +2 -2
  22. package/dist/{avatar-UnP-o7T9.cjs.map → avatar-C-SwQh5Z.cjs.map} +1 -1
  23. package/dist/badge.cjs +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{boat-PVy1fXfm.js → boat-C6oKTIlM.js} +2 -2
  26. package/dist/{boat-PVy1fXfm.js.map → boat-C6oKTIlM.js.map} +1 -1
  27. package/dist/{boat-zVJF22wK.cjs → boat-CsVNMu2n.cjs} +2 -2
  28. package/dist/{boat-zVJF22wK.cjs.map → boat-CsVNMu2n.cjs.map} +1 -1
  29. package/dist/boat.cjs +1 -1
  30. package/dist/boat.js +1 -1
  31. package/dist/busy.cjs +1 -1
  32. package/dist/busy.js +1 -1
  33. package/dist/button.cjs +1 -1
  34. package/dist/button.js +1 -1
  35. package/dist/card.cjs +1 -1
  36. package/dist/card.js +1 -1
  37. package/dist/{checkbox-BtZqKgPT.cjs → checkbox-B5XA1Ugc.cjs} +2 -2
  38. package/dist/{checkbox-BtZqKgPT.cjs.map → checkbox-B5XA1Ugc.cjs.map} +1 -1
  39. package/dist/{checkbox-DAFDBz7J.js → checkbox-DSW62smU.js} +2 -2
  40. package/dist/{checkbox-DAFDBz7J.js.map → checkbox-DSW62smU.js.map} +1 -1
  41. package/dist/checkbox.cjs +1 -1
  42. package/dist/checkbox.js +1 -1
  43. package/dist/{chips-BRigd0oB.cjs → chips-BWSXmedd.cjs} +108 -30
  44. package/dist/chips-BWSXmedd.cjs.map +1 -0
  45. package/dist/{chips-BnA6mVWq.js → chips-DIoIf1ND.js} +159 -81
  46. package/dist/chips-DIoIf1ND.js.map +1 -0
  47. package/dist/chips.cjs +1 -1
  48. package/dist/chips.js +1 -1
  49. package/dist/code-highlight.cjs +1 -1
  50. package/dist/code-highlight.js +1 -1
  51. package/dist/{code-preview-CUc2NHQu.js → code-preview-8XQAR_rg.js} +2 -2
  52. package/dist/{code-preview-CUc2NHQu.js.map → code-preview-8XQAR_rg.js.map} +1 -1
  53. package/dist/{code-preview-BYWzA52m.cjs → code-preview-U3CqjP3A.cjs} +2 -2
  54. package/dist/{code-preview-BYWzA52m.cjs.map → code-preview-U3CqjP3A.cjs.map} +1 -1
  55. package/dist/components.cjs +1 -1
  56. package/dist/components.js +1 -1
  57. package/dist/content-drawer.cjs +1 -1
  58. package/dist/content-drawer.js +1 -1
  59. package/dist/{date-range-DhWbY9Ph.cjs → date-range-1smHimq3.cjs} +2 -2
  60. package/dist/{date-range-DhWbY9Ph.cjs.map → date-range-1smHimq3.cjs.map} +1 -1
  61. package/dist/{date-range-DFNdMN6p.js → date-range-Bgr1ok1D.js} +3 -3
  62. package/dist/{date-range-DFNdMN6p.js.map → date-range-Bgr1ok1D.js.map} +1 -1
  63. package/dist/{date-range-inline-xh0mrWH9.js → date-range-inline-7g5AJrua.js} +3 -3
  64. package/dist/{date-range-inline-xh0mrWH9.js.map → date-range-inline-7g5AJrua.js.map} +1 -1
  65. package/dist/{date-range-inline-FiCLIta4.cjs → date-range-inline-DyGBs-PG.cjs} +2 -2
  66. package/dist/{date-range-inline-FiCLIta4.cjs.map → date-range-inline-DyGBs-PG.cjs.map} +1 -1
  67. package/dist/date-range-inline.cjs +1 -1
  68. package/dist/date-range-inline.js +1 -1
  69. package/dist/date-range.cjs +1 -1
  70. package/dist/date-range.js +1 -1
  71. package/dist/{delay-BTRy2v5H.js → delay-CtF14hCc.js} +2 -2
  72. package/dist/{delay-BTRy2v5H.js.map → delay-CtF14hCc.js.map} +1 -1
  73. package/dist/{delay-dCLgp1B7.cjs → delay-R0ZUrPTI.cjs} +2 -2
  74. package/dist/{delay-dCLgp1B7.cjs.map → delay-R0ZUrPTI.cjs.map} +1 -1
  75. package/dist/delay.cjs +1 -1
  76. package/dist/delay.js +1 -1
  77. package/dist/{details-Bf0qMDKW.cjs → details-CudVyRmo.cjs} +2 -2
  78. package/dist/{details-Bf0qMDKW.cjs.map → details-CudVyRmo.cjs.map} +1 -1
  79. package/dist/{details-BsmaD0yr.js → details-DDhUTFpC.js} +2 -2
  80. package/dist/{details-BsmaD0yr.js.map → details-DDhUTFpC.js.map} +1 -1
  81. package/dist/details.cjs +1 -1
  82. package/dist/details.js +1 -1
  83. package/dist/{dialog-content-0w0WQYF3.cjs → dialog-content-D1aMHnPF.cjs} +2 -2
  84. package/dist/{dialog-content-0w0WQYF3.cjs.map → dialog-content-D1aMHnPF.cjs.map} +1 -1
  85. package/dist/{dialog-content-r1Ai3BZj.js → dialog-content-DZ5VUwBo.js} +3 -3
  86. package/dist/{dialog-content-r1Ai3BZj.js.map → dialog-content-DZ5VUwBo.js.map} +1 -1
  87. package/dist/dialog.cjs +1 -1
  88. package/dist/dialog.js +1 -1
  89. package/dist/{divider-BPsLFNzK.js → divider-Dn6brh7T.js} +3 -3
  90. package/dist/{divider-BPsLFNzK.js.map → divider-Dn6brh7T.js.map} +1 -1
  91. package/dist/{divider-CYPKRC_-.cjs → divider-PDyRDKLg.cjs} +2 -2
  92. package/dist/{divider-CYPKRC_-.cjs.map → divider-PDyRDKLg.cjs.map} +1 -1
  93. package/dist/divider.cjs +1 -1
  94. package/dist/divider.js +1 -1
  95. package/dist/{dropdown-content-DelDUcfW.cjs → dropdown-content-4VFUPSIJ.cjs} +2 -2
  96. package/dist/{dropdown-content-DelDUcfW.cjs.map → dropdown-content-4VFUPSIJ.cjs.map} +1 -1
  97. package/dist/{dropdown-content-B51-eGbI.js → dropdown-content-Cgj5pA_r.js} +3 -3
  98. package/dist/{dropdown-content-B51-eGbI.js.map → dropdown-content-Cgj5pA_r.js.map} +1 -1
  99. package/dist/dropdown.cjs +1 -1
  100. package/dist/dropdown.js +1 -1
  101. package/dist/{email-recipients-BlSATi3L.cjs → email-recipients-CWuZ6PTF.cjs} +2 -2
  102. package/dist/{email-recipients-BlSATi3L.cjs.map → email-recipients-CWuZ6PTF.cjs.map} +1 -1
  103. package/dist/{email-recipients-hkvv_vgI.js → email-recipients-DWMc4Kbm.js} +5 -5
  104. package/dist/{email-recipients-hkvv_vgI.js.map → email-recipients-DWMc4Kbm.js.map} +1 -1
  105. package/dist/extra.cjs +1 -1
  106. package/dist/extra.js +1 -1
  107. package/dist/{flex-_K-5RVZM.cjs → flex-BNyBqVQE.cjs} +2 -2
  108. package/dist/{flex-_K-5RVZM.cjs.map → flex-BNyBqVQE.cjs.map} +1 -1
  109. package/dist/{flex-BDtCUg0s.js → flex-D7uKo3cp.js} +2 -2
  110. package/dist/{flex-BDtCUg0s.js.map → flex-D7uKo3cp.js.map} +1 -1
  111. package/dist/{form-BTmhZIB8.js → form-B1eDJoVW.js} +2 -2
  112. package/dist/{form-BTmhZIB8.js.map → form-B1eDJoVW.js.map} +1 -1
  113. package/dist/{form-jw1NVkyp.cjs → form-Cl1dBHEC.cjs} +2 -2
  114. package/dist/{form-jw1NVkyp.cjs.map → form-Cl1dBHEC.cjs.map} +1 -1
  115. package/dist/form.cjs +1 -1
  116. package/dist/form.js +1 -1
  117. package/dist/{formField.mixin-D_1WwNWJ.js → formField.mixin-CVgvtBxj.js} +2 -2
  118. package/dist/{formField.mixin-D_1WwNWJ.js.map → formField.mixin-CVgvtBxj.js.map} +1 -1
  119. package/dist/{formField.mixin-HN79lSIE.cjs → formField.mixin-UB5HVdDM.cjs} +2 -2
  120. package/dist/{formField.mixin-HN79lSIE.cjs.map → formField.mixin-UB5HVdDM.cjs.map} +1 -1
  121. package/dist/{icon-pFAWVSGq.cjs → icon-6lRY13IZ.cjs} +2 -2
  122. package/dist/{icon-pFAWVSGq.cjs.map → icon-6lRY13IZ.cjs.map} +1 -1
  123. package/dist/{icon-Clqcexag.js → icon-Bxm8o8R4.js} +2 -2
  124. package/dist/{icon-Clqcexag.js.map → icon-Bxm8o8R4.js.map} +1 -1
  125. package/dist/{icon-button-Bu_eEqfk.js → icon-button-B4fsinj2.js} +3 -3
  126. package/dist/{icon-button-Bu_eEqfk.js.map → icon-button-B4fsinj2.js.map} +1 -1
  127. package/dist/{icon-button-M5CqyRR4.cjs → icon-button-B9Xckdkv.cjs} +2 -2
  128. package/dist/{icon-button-M5CqyRR4.cjs.map → icon-button-B9Xckdkv.cjs.map} +1 -1
  129. package/dist/icons.cjs +1 -1
  130. package/dist/icons.js +1 -1
  131. package/dist/index.cjs +1 -1
  132. package/dist/index.js +47 -47
  133. package/dist/{input-CWOVMdSb.cjs → input-BJ73v2t7.cjs} +2 -2
  134. package/dist/{input-CWOVMdSb.cjs.map → input-BJ73v2t7.cjs.map} +1 -1
  135. package/dist/{input-CFlQ_9Cq.js → input-BrFENpX9.js} +3 -3
  136. package/dist/{input-CFlQ_9Cq.js.map → input-BrFENpX9.js.map} +1 -1
  137. package/dist/input.cjs +1 -1
  138. package/dist/input.js +1 -1
  139. package/dist/layout.cjs +1 -1
  140. package/dist/layout.js +1 -1
  141. package/dist/{list-rmfIuWZK.js → list-B11MYVeT.js} +2 -2
  142. package/dist/{list-rmfIuWZK.js.map → list-B11MYVeT.js.map} +1 -1
  143. package/dist/{list-CDXL73JQ.cjs → list-Cr5bjF_6.cjs} +2 -2
  144. package/dist/{list-CDXL73JQ.cjs.map → list-Cr5bjF_6.cjs.map} +1 -1
  145. package/dist/list.cjs +1 -1
  146. package/dist/list.js +1 -1
  147. package/dist/{litElement.mixin-YJ8D9a8Z.cjs → litElement.mixin-BnXm63YO.cjs} +2 -2
  148. package/dist/{litElement.mixin-YJ8D9a8Z.cjs.map → litElement.mixin-BnXm63YO.cjs.map} +1 -1
  149. package/dist/{litElement.mixin-Dm9SOPDp.js → litElement.mixin-CAQ8pH9g.js} +2 -2
  150. package/dist/{litElement.mixin-Dm9SOPDp.js.map → litElement.mixin-CAQ8pH9g.js.map} +1 -1
  151. package/dist/mailbox.cjs +1 -1
  152. package/dist/mailbox.js +1 -1
  153. package/dist/{map-DQwGv46m.cjs → map-C89AQAh-.cjs} +2 -2
  154. package/dist/{map-DQwGv46m.cjs.map → map-C89AQAh-.cjs.map} +1 -1
  155. package/dist/{map-BfP3ZVm_.js → map-CPaDh0fK.js} +2 -2
  156. package/dist/{map-BfP3ZVm_.js.map → map-CPaDh0fK.js.map} +1 -1
  157. package/dist/map.cjs +1 -1
  158. package/dist/map.js +1 -1
  159. package/dist/{media-B28J9yez.js → media-BvEF-HzD.js} +2 -2
  160. package/dist/{media-B28J9yez.js.map → media-BvEF-HzD.js.map} +1 -1
  161. package/dist/{media-DtYChqKs.cjs → media-v4K8T9FY.cjs} +2 -2
  162. package/dist/{media-DtYChqKs.cjs.map → media-v4K8T9FY.cjs.map} +1 -1
  163. package/dist/{menu-jcodrTEA.cjs → menu-9KPQvqqI.cjs} +2 -2
  164. package/dist/{menu-jcodrTEA.cjs.map → menu-9KPQvqqI.cjs.map} +1 -1
  165. package/dist/{menu-C0iTDVTM.js → menu-BL-7oqJ9.js} +3 -3
  166. package/dist/{menu-C0iTDVTM.js.map → menu-BL-7oqJ9.js.map} +1 -1
  167. package/dist/menu.cjs +1 -1
  168. package/dist/menu.js +1 -1
  169. package/dist/nav-drawer.cjs +1 -1
  170. package/dist/nav-drawer.js +1 -1
  171. package/dist/{notification-service-CD-XzDeP.cjs → notification-service-7NEpiPIR.cjs} +2 -2
  172. package/dist/{notification-service-CD-XzDeP.cjs.map → notification-service-7NEpiPIR.cjs.map} +1 -1
  173. package/dist/{notification-service-BIH173dS.js → notification-service-BwM5HMaj.js} +4 -4
  174. package/dist/{notification-service-BIH173dS.js.map → notification-service-BwM5HMaj.js.map} +1 -1
  175. package/dist/notification.cjs +1 -1
  176. package/dist/notification.js +2 -2
  177. package/dist/{notify-4u_P6A9W.js → notify-BHmCE9I3.js} +2 -2
  178. package/dist/{notify-4u_P6A9W.js.map → notify-BHmCE9I3.js.map} +1 -1
  179. package/dist/{notify-C95rxXiW.cjs → notify-DLSWAUcA.cjs} +2 -2
  180. package/dist/{notify-C95rxXiW.cjs.map → notify-DLSWAUcA.cjs.map} +1 -1
  181. package/dist/{option-D-Itfwmu.cjs → option-C4G7DGtI.cjs} +2 -2
  182. package/dist/{option-D-Itfwmu.cjs.map → option-C4G7DGtI.cjs.map} +1 -1
  183. package/dist/{option-CTkTl7Pz.js → option-CRw6_dXY.js} +2 -2
  184. package/dist/{option-CTkTl7Pz.js.map → option-CRw6_dXY.js.map} +1 -1
  185. package/dist/option.cjs +1 -1
  186. package/dist/option.js +1 -1
  187. package/dist/{payment-card-form-HQsOp4z5.cjs → payment-card-form-BzGdWKH-.cjs} +2 -2
  188. package/dist/{payment-card-form-HQsOp4z5.cjs.map → payment-card-form-BzGdWKH-.cjs.map} +1 -1
  189. package/dist/{payment-card-form-DcipYS1-.js → payment-card-form-D-MHQCM7.js} +3 -3
  190. package/dist/{payment-card-form-DcipYS1-.js.map → payment-card-form-D-MHQCM7.js.map} +1 -1
  191. package/dist/{progress-B3Q1qs5e.cjs → progress-Bkugth6y.cjs} +2 -2
  192. package/dist/{progress-B3Q1qs5e.cjs.map → progress-Bkugth6y.cjs.map} +1 -1
  193. package/dist/{progress-zOZKeIA7.js → progress-BuYkNiju.js} +2 -2
  194. package/dist/{progress-zOZKeIA7.js.map → progress-BuYkNiju.js.map} +1 -1
  195. package/dist/progress.cjs +1 -1
  196. package/dist/progress.js +1 -1
  197. package/dist/{radio-button-C4TI0v9W.js → radio-button-CokLuIqN.js} +3 -3
  198. package/dist/{radio-button-C4TI0v9W.js.map → radio-button-CokLuIqN.js.map} +1 -1
  199. package/dist/{radio-button-COzEX5Ar.cjs → radio-button-DCKG8p75.cjs} +2 -2
  200. package/dist/{radio-button-COzEX5Ar.cjs.map → radio-button-DCKG8p75.cjs.map} +1 -1
  201. package/dist/radio-group.cjs +1 -1
  202. package/dist/radio-group.js +1 -1
  203. package/dist/{schmancy-steps-container-DC6Ca6-A.js → schmancy-steps-container-2gQqGQwB.js} +2 -2
  204. package/dist/{schmancy-steps-container-DC6Ca6-A.js.map → schmancy-steps-container-2gQqGQwB.js.map} +1 -1
  205. package/dist/{schmancy-steps-container-DfzodwEn.cjs → schmancy-steps-container-xIqWhNoQ.cjs} +2 -2
  206. package/dist/{schmancy-steps-container-DfzodwEn.cjs.map → schmancy-steps-container-xIqWhNoQ.cjs.map} +1 -1
  207. package/dist/{select-wUk1qE31.cjs → select-BTIUXOs_.cjs} +2 -2
  208. package/dist/{select-wUk1qE31.cjs.map → select-BTIUXOs_.cjs.map} +1 -1
  209. package/dist/{select-Br2sY6MK.js → select-Dj-oLKFF.js} +3 -3
  210. package/dist/{select-Br2sY6MK.js.map → select-Dj-oLKFF.js.map} +1 -1
  211. package/dist/select.cjs +1 -1
  212. package/dist/select.js +1 -1
  213. package/dist/{sheet-D3RmdvbL.cjs → sheet-BiElPoDB.cjs} +2 -2
  214. package/dist/{sheet-D3RmdvbL.cjs.map → sheet-BiElPoDB.cjs.map} +1 -1
  215. package/dist/{sheet-BjJdVvvp.js → sheet-DHy5-DkZ.js} +3 -3
  216. package/dist/{sheet-BjJdVvvp.js.map → sheet-DHy5-DkZ.js.map} +1 -1
  217. package/dist/sheet.cjs +1 -1
  218. package/dist/sheet.js +1 -1
  219. package/dist/{slider-XoN7Z9iO.cjs → slider-CwX-MWmI.cjs} +2 -2
  220. package/dist/{slider-XoN7Z9iO.cjs.map → slider-CwX-MWmI.cjs.map} +1 -1
  221. package/dist/{slider-Dgwlzvr-.js → slider-FixLgBPB.js} +3 -3
  222. package/dist/{slider-Dgwlzvr-.js.map → slider-FixLgBPB.js.map} +1 -1
  223. package/dist/slider.cjs +1 -1
  224. package/dist/slider.js +1 -1
  225. package/dist/{spinner-D9l0j12i.cjs → spinner-Cm2yObux.cjs} +2 -2
  226. package/dist/{spinner-D9l0j12i.cjs.map → spinner-Cm2yObux.cjs.map} +1 -1
  227. package/dist/{spinner-e06PNB2u.js → spinner-NR-WnRIj.js} +2 -2
  228. package/dist/{spinner-e06PNB2u.js.map → spinner-NR-WnRIj.js.map} +1 -1
  229. package/dist/steps.cjs +1 -1
  230. package/dist/steps.js +1 -1
  231. package/dist/{surface-BgLZnRcp.cjs → surface-BbQxucUq.cjs} +2 -2
  232. package/dist/{surface-BgLZnRcp.cjs.map → surface-BbQxucUq.cjs.map} +1 -1
  233. package/dist/{surface-trk3Zpii.js → surface-Bygc4Pkm.js} +2 -2
  234. package/dist/{surface-trk3Zpii.js.map → surface-Bygc4Pkm.js.map} +1 -1
  235. package/dist/surface.cjs +1 -1
  236. package/dist/surface.js +1 -1
  237. package/dist/{table-BfFAQg7K.js → table--xC1C9bV.js} +2 -2
  238. package/dist/{table-BfFAQg7K.js.map → table--xC1C9bV.js.map} +1 -1
  239. package/dist/{table-g0Wsm45r.cjs → table-D-GttRq4.cjs} +2 -2
  240. package/dist/{table-g0Wsm45r.cjs.map → table-D-GttRq4.cjs.map} +1 -1
  241. package/dist/table.cjs +1 -1
  242. package/dist/table.js +1 -1
  243. package/dist/{tabs-compatibility-FkpvGEG3.cjs → tabs-compatibility-CdydM7pv.cjs} +2 -2
  244. package/dist/{tabs-compatibility-FkpvGEG3.cjs.map → tabs-compatibility-CdydM7pv.cjs.map} +1 -1
  245. package/dist/{tabs-compatibility-D1RfuRqZ.js → tabs-compatibility-Dj58Mdjp.js} +2 -2
  246. package/dist/{tabs-compatibility-D1RfuRqZ.js.map → tabs-compatibility-Dj58Mdjp.js.map} +1 -1
  247. package/dist/tabs.cjs +1 -1
  248. package/dist/tabs.js +1 -1
  249. package/dist/tailwind.mixin-DRrIaNCZ.js +43 -0
  250. package/dist/{tailwind.mixin-CPuO9c5y.js.map → tailwind.mixin-DRrIaNCZ.js.map} +1 -1
  251. package/dist/tailwind.mixin-DvXzFSLc.cjs +2 -0
  252. package/dist/{tailwind.mixin-Cb-fyJ_y.cjs.map → tailwind.mixin-DvXzFSLc.cjs.map} +1 -1
  253. package/dist/teleport.cjs +1 -1
  254. package/dist/teleport.js +1 -1
  255. package/dist/{textarea-U-fvfv2M.js → textarea-8OzsuUGm.js} +2 -2
  256. package/dist/{textarea-U-fvfv2M.js.map → textarea-8OzsuUGm.js.map} +1 -1
  257. package/dist/{textarea-DBKIOjBp.cjs → textarea-BxmPIhSX.cjs} +2 -2
  258. package/dist/{textarea-DBKIOjBp.cjs.map → textarea-BxmPIhSX.cjs.map} +1 -1
  259. package/dist/textarea.cjs +1 -1
  260. package/dist/textarea.js +1 -1
  261. package/dist/{theme-button-CnWM9ZCv.js → theme-button-CKBPOL_F.js} +2 -2
  262. package/dist/{theme-button-CnWM9ZCv.js.map → theme-button-CKBPOL_F.js.map} +1 -1
  263. package/dist/{theme-button-C-6Y_Mib.cjs → theme-button-EkMBPnXv.cjs} +2 -2
  264. package/dist/{theme-button-C-6Y_Mib.cjs.map → theme-button-EkMBPnXv.cjs.map} +1 -1
  265. package/dist/theme-button.cjs +1 -1
  266. package/dist/theme-button.js +1 -1
  267. package/dist/theme.cjs +1 -1
  268. package/dist/{theme.component-Dko2yi2n.cjs → theme.component-BWpLpI0u.cjs} +2 -2
  269. package/dist/{theme.component-Dko2yi2n.cjs.map → theme.component-BWpLpI0u.cjs.map} +1 -1
  270. package/dist/{theme.component-CfLAvCYi.js → theme.component-CMNPDwrg.js} +2 -2
  271. package/dist/{theme.component-CfLAvCYi.js.map → theme.component-CMNPDwrg.js.map} +1 -1
  272. package/dist/theme.js +1 -1
  273. package/dist/{timezone-CXGJk88N.js → timezone-B0JHFjXr.js} +3 -3
  274. package/dist/{timezone-CXGJk88N.js.map → timezone-B0JHFjXr.js.map} +1 -1
  275. package/dist/{timezone-Wy7jf5gf.cjs → timezone-BGgX7VU3.cjs} +2 -2
  276. package/dist/{timezone-Wy7jf5gf.cjs.map → timezone-BGgX7VU3.cjs.map} +1 -1
  277. package/dist/{tooltip-BXCWSU_6.cjs → tooltip-BvM1QM9r.cjs} +2 -2
  278. package/dist/{tooltip-BXCWSU_6.cjs.map → tooltip-BvM1QM9r.cjs.map} +1 -1
  279. package/dist/{tooltip-CuDCLzkr.js → tooltip-vzAPO65W.js} +2 -2
  280. package/dist/{tooltip-CuDCLzkr.js.map → tooltip-vzAPO65W.js.map} +1 -1
  281. package/dist/tooltip.cjs +1 -1
  282. package/dist/tooltip.js +1 -1
  283. package/dist/{tree-CfcLl-dV.js → tree--vE36pPQ.js} +2 -2
  284. package/dist/{tree-CfcLl-dV.js.map → tree--vE36pPQ.js.map} +1 -1
  285. package/dist/{tree-Bux6udiH.cjs → tree-BGHP-zFq.cjs} +2 -2
  286. package/dist/{tree-Bux6udiH.cjs.map → tree-BGHP-zFq.cjs.map} +1 -1
  287. package/dist/tree.cjs +1 -1
  288. package/dist/tree.js +1 -1
  289. package/dist/{typewriter-C63WkKf1.js → typewriter-C0E8tuqP.js} +4 -4
  290. package/dist/{typewriter-C63WkKf1.js.map → typewriter-C0E8tuqP.js.map} +1 -1
  291. package/dist/{typewriter-HZThI3m1.cjs → typewriter-ovVSo7i3.cjs} +2 -2
  292. package/dist/{typewriter-HZThI3m1.cjs.map → typewriter-ovVSo7i3.cjs.map} +1 -1
  293. package/dist/typewriter.cjs +1 -1
  294. package/dist/typewriter.js +1 -1
  295. package/dist/{typography-DRkYb9R0.js → typography-6mMnwoRl.js} +2 -2
  296. package/dist/{typography-DRkYb9R0.js.map → typography-6mMnwoRl.js.map} +1 -1
  297. package/dist/{typography-DNj4eHeR.cjs → typography-BKpY6oL9.cjs} +2 -2
  298. package/dist/{typography-DNj4eHeR.cjs.map → typography-BKpY6oL9.cjs.map} +1 -1
  299. package/dist/typography.cjs +1 -1
  300. package/dist/typography.js +1 -1
  301. package/package.json +1 -1
  302. package/types/src/area/area.component.d.ts +0 -4
  303. package/types/src/chips/assist-chip.d.ts +1 -1
  304. package/types/src/chips/input-chip.d.ts +6 -1
  305. package/types/src/chips/suggestion-chip.d.ts +1 -1
  306. package/dist/chips-BRigd0oB.cjs.map +0 -1
  307. package/dist/chips-BnA6mVWq.js.map +0 -1
  308. package/dist/route.component-Cr-M16SZ.cjs +0 -12
  309. package/dist/route.component-Cr-M16SZ.cjs.map +0 -1
  310. package/dist/route.component-Df4CQy4C.js +0 -320
  311. package/dist/route.component-Df4CQy4C.js.map +0 -1
  312. package/dist/tailwind.mixin-CPuO9c5y.js +0 -43
  313. package/dist/tailwind.mixin-Cb-fyJ_y.cjs +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-35wx4zfo.cjs","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\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 of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\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 (or include it inline)\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!: SchmancyInput\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\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 // Complex autofill detection disabled - using simple auto-select on blur instead\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, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\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 // 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 switchMap(() => fromEvent<MouseEvent>(document, 'click').pipe(\n tap(e => this._documentClick$.next(e)),\n takeUntil(this._open$.pipe(filter(isOpen => !isOpen)))\n ))\n )\n : EMPTY\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\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 // Auto-selection now happens on blur, no need for autofill detection\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 <schmancy-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 @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 @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-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 }}\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 }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \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(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, 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 // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \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":["SchmancyAutocomplete","$LitElement","constructor","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$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","opt","find","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","EMPTY","of","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","toLowerCase","replace","target","hasSelection","_handleKeyDown","_handleAutoSelectOnBlur","classMap","absolute","flex","bestMatch","bestScore","_e","event","key","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"yiBA0CA,IAAqBA,EAArB,cAAkDC,mYAAlD,aAAAC,CAAAC,MAAAA,GAAAC,SAAAA,EAEiCC,KAAAC,SAAAA,GACDD,KAAAE,YAAc,GACCF,KAAAG,MAAQ,GACvBH,KAAAI,KAAO,GACPJ,KAAAK,UAAY,QACXL,KAAAM,MAAAA,GACDN,KAAAO,YAAc,GACCP,KAAAQ,KAAkB,KACjCR,KAAAS,aAAe,KACfT,KAAAU,WAAa,IACbV,KAAAW,oBAAsB,GA6BzCX,KAAQY,MAAAA,GACRZ,KAAQa,YAAc,GACtBb,KAAQc,qBAAuB,EAC/Bd,KAAQe,YAAAA,GAMjBf,KAAQgB,iBAAmBC,cAG3BjB,KAAQkB,gBAAkB,IAAIC,EAAAA,gBAAwB,EAAA,EACtDnB,KAAQoB,iBAAmB,IAAID,EAAAA,gBAA0B,CAAA,CAAA,EACzDnB,KAAQqB,aAAe,IAAIF,EAAAA,gBAAwB,EAAA,EACnDnB,KAAQsB,OAAS,IAAIH,EAAAA,gBAAAA,EAAyB,EAC9CnB,KAAQuB,UAAY,IAAIJ,EAAAA,gBAAkC,CAAA,CAAA,EAC1DnB,KAAQwB,eAAiB,IAAIC,UAC7BzB,KAAQ0B,gBAAkB,IAAID,SAAoB,CA3ClD,IAAA,QAAIE,CACA,MAAO,CAAA,GAAI3B,KAAKoB,iBAAiBQ,KAAAA,CACrC,CACA,IAAA,OAAWC,EAAAA,CACP7B,KAAKoB,iBAAiBU,KAAKC,MAAMC,QAAQH,CAAAA,EAAQ,CAAA,GAAIA,CAAAA,EAAQ,CAAA,CAAA,CACjE,CAIA,IAAA,OAAID,CACA,OAAO5B,KAAKM,MACNN,KAAKoB,iBAAiBQ,MAAMK,KAAK,GAAA,EACjCjC,KAAKkB,gBAAgBU,KAC/B,CACA,IAAA,MAAUM,EAAAA,CACFlC,KAAKM,MACLN,KAAKoB,iBAAiBU,KAClBI,EAAMA,EAAIC,MAAM,GAAA,EAAKC,IAAIC,GAAKA,EAAEC,KAAAA,CAAAA,EAAQC,OAAOC,OAAAA,EAAW,CAAA,CAAA,EAG9DxC,KAAKkB,gBAAgBY,KAAKI,CAAAA,CAElC,CAuBA,mBAAAO,CACI3C,MAAM2C,kBAAAA,EAEDzC,KAAK0C,KACN1C,KAAK0C,GAAK,oBAAoBC,KAAKC,OAAAA,EAASC,SAAS,EAAA,EAAIC,MAAM,EAAG,CAAA,CAAA,IAGtE9C,KAAK+C,wBAAAA,EACL/C,KAAKgD,2BAAAA,CAGT,CAEQ,yBAAAD,CAEJ/C,KAAKuB,UAAU0B,KACXC,EAAAA,IAAIC,GAAAA,CACAA,EAAQC,QAAQ,CAACC,EAAQC,IAAAA,CACrBD,EAAOE,aAAa,OAAQ,QAAA,EAC5BF,EAAOG,SAAAA,GACFH,EAAOX,KACRW,EAAOX,GAAK,GAAG1C,KAAK0C,EAAAA,WAAaY,CAAAA,IAEhCD,EAAOI,aAAa,kBAAA,IACrBC,YAAUL,EAAQ,aAAA,EAAeJ,KAC7BC,EAAAA,IAAIS,GAAAA,CACAA,EAAEC,eAAAA,EACFD,EAAEE,gBAAAA,CAAAA,CAAAA,EAENC,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAU,IAAMhE,KAAKwB,eAAeM,KAAKuB,CAAAA,CAAAA,EAC3CA,EAAOE,aAAa,mBAAoB,MAAA,EAAA,CAAA,CAAA,CAAA,EAIpDO,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,EAGFC,gBAAc,CACVjE,KAAKkB,gBACLlB,KAAKoB,iBACLpB,KAAKuB,SAAAA,CAAAA,EACN0B,KACCC,EAAAA,IAAI,CAAA,CAAEgB,EAAeC,EAAgBhB,CAAAA,IAAAA,CACjCA,EAAQC,QAAQC,GAAAA,CACZA,EAAOe,SAAWpE,KAAKM,MACjB6D,EAAeE,SAAShB,EAAOzB,KAAAA,EAC/ByB,EAAOzB,QAAUsC,EACvBb,EAAOE,aAAa,gBAAiBe,OAAOjB,EAAOe,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAG3DN,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,EAGFhE,KAAKqB,aAAa4B,KACdsB,yBACAC,EAAAA,aAAaxE,KAAKU,UAAAA,EAClB+D,EAAAA,eAAezE,KAAKuB,UAAWvB,KAAKsB,MAAAA,EACpC4B,EAAAA,IAAI,CAAA,CAAEwB,EAAYvB,EAASwB,CAAAA,IAAAA,CACvB,GAAA,CAAKA,EAAQ,OAEb,MAAMC,EAAOF,EAAWpC,KAAAA,EAExB,GAAKsC,EAQE,CAEH,MAAMC,EAAkC1B,EAAQf,IAAIiB,GAAAA,CAEhD,MAAMyB,EAAczB,EAAOlD,OAASkD,EAAO0B,aAAe,GACpDC,EAAc3B,EAAOzB,MAGrBqD,EAAaC,EAAAA,WAAWN,EAAME,CAAAA,EAC9BK,EAAaD,EAAAA,WAAWN,EAAMI,CAAAA,EAKpC,MAAO,CAAE3B,OAAAA,EAAQ+B,MAFHzC,KAAK0C,IAAiB,IAAbJ,EAAkBE,CAAAA,CAAAA,CAAAA,CAAAA,EAM7CN,EAAcS,KAAK,CAACC,EAAGC,IAAMA,EAAEJ,MAAQG,EAAEH,KAAAA,EAGzC,IAAIK,EAAe,EACnBZ,EAAczB,QAAQ,CAACsC,EAAMpC,IAAAA,CACzB,KAAA,CAAMD,OAAEA,EAAA+B,MAAQA,CAAAA,EAAUM,EAGtBN,EAAQpF,KAAKW,oBACb0C,EAAOsC,OAAAA,IAEPtC,EAAOsC,OAAAA,GACPF,IAEApC,EAAOuC,MAAMC,MAAQvB,OAAOhB,CAAAA,EAAAA,CAAAA,EAIpCtD,KAAKc,qBAAuB2E,EAC5BzF,KAAKe,YAAc0E,EAAe,CACtC,MA5CItC,EAAQC,QAAQC,GAAAA,CACZA,EAAOsC,OAAAA,GACPtC,EAAOuC,MAAMC,MAAQ,GAAA,CAAA,EAEzB7F,KAAKc,qBAAuBqC,EAAQ2C,OACpC9F,KAAKe,YAAAA,GAyCTf,KAAK+F,wBACD/F,KAAKc,qBAAuB,EACtB,GAAGd,KAAKc,oBAAAA,UAA8Bd,KAAKc,uBAAyB,EAAI,GAAK,GAAA,cAC7E,mBAAA,CAAA,CAAA,EAGdgD,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,EAGFhE,KAAKwB,eAAeyB,KAChBwB,EAAAA,eAAezE,KAAKkB,gBAAiBlB,KAAKoB,gBAAAA,EAC1C8B,EAAAA,IAAI,CAAA,CAAEG,EAAQ2C,EAAGC,CAAAA,IAAAA,CACb,GAAIjG,KAAKM,MAAO,CACZ,MAAMgD,EAAQ2C,EAAcC,QAAQ7C,EAAOzB,KAAAA,EACrCuE,EAAY7C,EAAAA,GACZ,CAAA,GAAI2C,EAAcnD,MAAM,EAAGQ,CAAAA,EAAAA,GAAW2C,EAAcnD,MAAMQ,EAAQ,CAAA,CAAA,EAClE,CAAA,GAAI2C,EAAe5C,EAAOzB,KAAAA,EAChC5B,KAAKoB,iBAAiBU,KAAKqE,CAAAA,EAE3BnG,KAAKqB,aAAaS,KAAK,EAAA,EACvB9B,KAAKa,YAAc,GAEnB,MAAMuF,EAASpG,KAAKqG,mBAAAA,EACpBrG,KAAK+F,wBACDK,EAAON,OAAS,EACV,aAAaM,EAAOnE,KAAK,IAAA,CAAA,GACzB,qBAAA,CAEd,MACIjC,KAAKkB,gBAAgBY,KAAKuB,EAAOzB,KAAAA,EACjC5B,KAAKsB,OAAOQ,KAAAA,EAAK,EACjB9B,KAAKY,MAAAA,GAELZ,KAAKa,YAAcwC,EAAOlD,OAASkD,EAAO0B,aAAe,GACzD/E,KAAKqB,aAAaS,KAAK9B,KAAKa,WAAAA,EAE5ByF,EAAAA,MAAM,GAAA,EAAKrD,KACPC,EAAAA,IAAI,IAAMlD,KAAKgB,iBAAiBY,OAAO2E,KAAAA,CAAAA,EACvCC,EAAAA,KAAK,CAAA,CAAA,EACPxC,UAAAA,EAEFhE,KAAK+F,wBAAwB,aAAa1C,EAAOlD,OAASkD,EAAO0B,WAAAA,EAAAA,CAAAA,CAAAA,EAGzE7B,MAAI,IAAMlD,KAAKyG,iBAAAA,CAAAA,EACf3C,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,EAGFC,gBAAc,CACVjE,KAAKsB,OACLtB,KAAKkB,gBACLlB,KAAKoB,iBACLpB,KAAKuB,SAAAA,CAAAA,EACN0B,KACCV,EAAAA,OAAO,IAAA,CAAOvC,KAAKsB,OAAOM,KAAAA,EAC1BsB,EAAAA,IAAI,CAAA,CAAC,CAAGgB,EAAeC,EAAgBhB,CAAAA,IAAAA,CACnC,GAAInD,KAAKM,MAAO,CACZ,MAAM8F,EAASjD,EACVZ,OAAOmE,GAAOvC,EAAeE,SAASqC,EAAI9E,KAAAA,CAAAA,EAC1CQ,IAAIsE,GAAOA,EAAIvG,OAASuG,EAAI3B,aAAe,EAAA,EAChD/E,KAAKa,YAAcuF,EAAOnE,KAAK,IAAA,CACnC,KAAO,CACH,MAAMoB,EAASF,EAAQwD,KAAKD,GAAOA,EAAI9E,QAAUsC,CAAAA,EACjDlE,KAAKa,YAAcwC,IAASA,EAAOlD,OAASkD,EAAO0B,cAAoB,EAC3E,CACA/E,KAAKqB,aAAaS,KAAK9B,KAAKa,WAAAA,CAAAA,CAAAA,EAEhCiD,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,EAGFhE,KAAKsB,OAAO2B,KACRC,EAAAA,IAAI0D,GAAQ5G,KAAKY,MAAQgG,CAAAA,EACzB9C,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,CACN,CAEQ,4BAAAhB,CACJhD,KAAK0B,gBAAgBuB,KACjBV,EAAAA,WAAaoB,EAAEkD,aAAAA,EAAexC,SAASrE,IAAAA,CAAAA,EACvCuC,EAAAA,OAAOoB,GAAAA,CAAM3D,KAAK8G,SAASC,KAAKL,GAAO/C,EAAEkD,aAAAA,EAAexC,SAASqC,CAAAA,CAAAA,CAAAA,EACjEnE,SAAO,IAAMvC,KAAKY,KAAAA,EAClBsC,EAAAA,IAAI,IAAA,CACAlD,KAAKsB,OAAOQ,KAAAA,EAAK,EACjB9B,KAAKgH,oBAAAA,CAAAA,CAAAA,EAETlD,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,EAEFhE,KAAKsB,OAAO2B,KACRsB,yBACA0C,EAAAA,UAAUL,GACNA,EACMN,QAAM,EAAA,EAAIrD,KACRgE,EAAAA,UAAU,IAAMvD,EAAAA,UAAsBwD,SAAU,OAAA,EAASjE,KACrDC,EAAAA,IAAIS,GAAK3D,KAAK0B,gBAAgBI,KAAK6B,CAAAA,CAAAA,EACnCG,YAAU9D,KAAKsB,OAAO2B,KAAKV,EAAAA,OAAOoC,GAAAA,CAAWA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAGnDwC,EAAAA,KAAAA,EAEVrD,EAAAA,UAAU9D,KAAK+D,aAAAA,CAAAA,EACjBC,UAAAA,CACN,CAGQ,qBAAAgD,CACJI,EAAAA,GAAG,IAAA,EAAMnE,KACLwB,EAAAA,eACIzE,KAAKkB,gBACLlB,KAAKoB,iBACLpB,KAAKuB,UACLvB,KAAKsB,MAAAA,EAET4B,EAAAA,IAAI,CAAA,CAAC,CAAGgB,EAAeC,EAAgBhB,EAASwB,CAAAA,IAAAA,CAC5C,GAAK3E,KAAKgB,iBAAiBY,QAAAA,CAEtB+C,GAAAA,CAAW3E,KAAKM,OAAO,CACxB,GAAIN,KAAKM,MAAO,CACZ,MAAM8F,EAASjD,EACVZ,OAAOmE,GAAOvC,EAAeE,SAASqC,EAAI9E,KAAAA,CAAAA,EAC1CQ,IAAIsE,GAAOA,EAAIvG,OAASuG,EAAI3B,aAAe,EAAA,EAChD/E,KAAKa,YAAcuF,EAAOnE,KAAK,IAAA,CACnC,KAAO,CACH,MAAMoB,EAASF,EAAQwD,KAAKD,GAAOA,EAAI9E,QAAUsC,CAAAA,EACjDlE,KAAKa,YAAcwC,IAASA,EAAOlD,OAASkD,EAAO0B,cAAoB,EAC3E,CACA/E,KAAKqB,aAAaS,KAAK9B,KAAKa,WAAAA,EAC5Bb,KAAKgB,iBAAiBY,MAAMA,MAAQ5B,KAAKa,WAC7C,CAAA,CAAA,EAEJ2F,EAAAA,KAAK,CAAA,CAAA,EACPxC,UAAAA,CACN,CAEQ,oBAAAqC,CACJ,OAAOrG,KAAK8G,SACPvE,OAAOc,GACJrD,KAAKM,MACCN,KAAKoB,iBAAiBQ,MAAMyC,SAAShB,EAAOzB,KAAAA,EAC5CyB,EAAOzB,QAAU5B,KAAKkB,gBAAgBU,KAAAA,EAE/CQ,IAAIiB,GAAUA,EAAOlD,OAASkD,EAAO0B,aAAe,EAAA,CAC7D,CAEQ,wBAAwBsC,EAAAA,CAC5B,MAAMC,EAAatH,KAAKuH,YAAYC,cAAc,cAAA,EAC9CF,IACAA,EAAWvC,YAAcsC,EAEjC,CAEQ,kBAAAZ,CACJ,MAAMgB,EAAoD,CACtD7F,MAAO5B,KAAK4B,KAAAA,EAGZ5B,KAAKM,QACLmH,EAAO9F,OAAS,CAAA,GAAI3B,KAAKoB,iBAAiBQ,KAAAA,GAG9C5B,KAAK0H,cACD,IAAIC,YAAuD,SAAU,CACjEF,OAAAA,EACAG,QAAAA,GACAC,SAAAA,EAAU,CAAA,CAAA,CAGtB,CAEO,eAAAC,CACH,MAAA,CAAK9H,KAAKC,WACHD,KAAKM,MACNN,KAAKoB,iBAAiBQ,MAAMkE,OAAS,EACrCtD,EAAQxC,KAAKkB,gBAAgBU,MACvC,CAEO,gBAAAmG,CACH,OAAI/H,KAAKgB,iBAAiBY,MACf5B,KAAKgB,iBAAiBY,MAAMmG,eAAAA,EAEhC/H,KAAK8H,cAAAA,CAChB,CAEA,cAAAE,CAEA,CAEA,QAAAC,CACI,MAAMC,EAAgB,GAAGlI,KAAK0C,EAAAA,QAE9B,OAAOyF,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,kBAMGnI,KAAKO,YAAc4H,EAAAA,gBAAgBD,CAAAA,qBAAkClI,KAAKO,WAAAA,SAAsB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAKlFP,KAAKQ,IAAAA;AAAAA,0BACX4H,EAAAA,IAAIpI,KAAKgB,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA,gCAGHhB,KAAKI,MAAQJ,KAAKG,OAAOkI,YAAAA,EAAcC,QAAQ,OAAQ,GAAA,CAAA;AAAA,iCACtDtI,KAAKG,KAAAA;AAAAA,uCACCH,KAAKE,WAAAA;AAAAA,oCACRF,KAAKC,QAAAA;AAAAA,iCACRD,KAAKa,WAAAA;AAAAA;AAAAA,uCAECb,KAAKS,YAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,wCAMJT,KAAKY,KAAAA;AAAAA,2CACFZ,KAAKO,YAAc2H,EAAAA,MAAgB;AAAA,iCAC5CvE,GAAAA,CACN,MAAM/B,EAAS+B,EAAE4E,OAA4B3G,MAC7C5B,KAAKa,YAAce,EACnB5B,KAAKqB,aAAaS,KAAKF,CAAAA,CAAAA,CAAAA;AAAAA,iCAEjB+B,GAAAA,CACNA,EAAEE,gBAAAA,EAEF,MAAM2E,EAAexI,KAAKM,MACpBN,KAAKoB,iBAAiBQ,MAAMkE,OAAS,EAAA,CAAA,CACnC9F,KAAKkB,gBAAgBU,MAEzB5B,KAAKM,OAAAA,CAAUkI,IACfxI,KAAKa,YAAc,GACnBb,KAAKqB,aAAaS,KAAK,IACnB9B,KAAKgB,iBAAiBY,QACtB5B,KAAKgB,iBAAiBY,MAAMA,MAAQ,KAI5C5B,KAAKsB,OAAOQ,KAAAA,EAAK,CAAA,CAAA;AAAA,iCAEX6B,GAAAA,CACNA,EAAEE,gBAAAA,EACF7D,KAAKsB,OAAOQ,KAAAA,EAAK,CAAA,CAAA;AAAA,mCAET6B,GAAAA,CACR3D,KAAKyI,eAAe9E,CAAAA,CAAAA,CAAAA;AAAAA,gCAEhB,IAAA,CACJ3D,KAAK0I,wBAAAA,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,4BASLC,WAAS,CACbC,SAAAA,GACA,cACA,OAAA,GACA,SAAA,GACA,aAAA,GACA,YAAA,GACA,mBACA,aAAA,GACA,iBAAA,GACAC,KAAAA,GACA,WAAA,EAAY,CAAA,CAAA;AAAA;AAAA,2CAGO7I,KAAKM,MAAQ,OAAS,OAAA;AAAA,iCAChC,GAAGN,KAAKG,OAAS,SAAA,WAAA;AAAA,+BACnBH,KAAKY,KAAAA;AAAAA,yCACKZ,KAAKK,SAAAA,cAAuBL,KAAKY,MAAQ,OAAS,MAAA;AAAA,kCACzD,IAAA,CACVZ,KAAKuB,UAAUO,KAAK9B,KAAK8G,QAAAA,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA,sBAI1B9G,KAAKe,YAEJ,GAFkBoH,EAAAA;AAAAA;AAAAA;;;SAMtC,CAEQ,yBAAAO,CAEJ,GAAI1I,KAAKM,OAAAA,CAAUN,KAAKY,OAAAA,CAAUZ,KAAKa,YAAYyB,KAAAA,EAC/C,OAGJ,MAAMoC,EAAa1E,KAAKa,YAAYyB,KAAAA,EAGpC,IAAIwG,EAAmC,KACnCC,EAAY,EAEhB/I,KAAK8G,SAAS1D,QAAQC,GAAAA,CAElB,GAAIA,EAAOsC,OAAQ,OAGnB,MAAMb,EAAczB,EAAOlD,OAASkD,EAAO0B,aAAe,GACpDC,EAAc3B,EAAOzB,MAGrBqD,EAAaC,EAAAA,WAAWR,EAAYI,GACpCK,EAAaD,EAAAA,WAAWR,EAAYM,CAAAA,EAGpCI,EAAQzC,KAAK0C,IAAiB,IAAbJ,EAAkBE,CAAAA,EAGrCC,EAAQ2D,GAAa3D,GAASpF,KAAKW,sBACnCoI,EAAY3D,EACZ0D,EAAYzF,EAAAA,CAAAA,EAKhByF,IAEA9I,KAAKwB,eAAeM,KAAKgH,CAAAA,EAGzB9I,KAAKsB,OAAOQ,KAAAA,EAAK,EACjB9B,KAAKY,MAAAA,GAGb,CAEQ,eAAeoI,EAAAA,CACnBtF,YAAyBwD,SAAU,SAAA,EAAWjE,KAC1CuD,EAAAA,KAAK,CAAA,EACL/B,EAAAA,eAAezE,KAAKsB,OAAQtB,KAAKuB,SAAAA,EACjC2B,EAAAA,IAAI,CAAA,CAAE+F,EAAOtE,EAAQxB,CAAAA,IAAAA,CACjB,GAAA,CAAKwB,IAAWsE,EAAMC,MAAQ,aAAeD,EAAMC,MAAQ,SAWvD,OAVAD,EAAMrF,eAAAA,EACN5D,KAAKsB,OAAOQ,KAAAA,EAAK,EAAA,KAEjBwE,EAAAA,MAAM,EAAA,EAAIrD,KACNC,EAAAA,IAAI,IAAA,CACqBC,EAAQwD,KAAKD,GAAAA,CAAQA,EAAIf,MAAAA,GAChCwD,MAAAA,CAAAA,CAAAA,EAElB3C,EAAAA,KAAK,IACPxC,UAAAA,EAIN,GAAA,CAAKW,EAAQ,OAEb,MAAMyE,EAAiBjG,EAAQZ,OAAOmE,GAAAA,CAAQA,EAAIf,MAAAA,EAC7CL,KAAK,CAACC,EAAGC,IAAM6D,SAAS9D,EAAEK,MAAMC,OAAS,GAAA,EAAOwD,SAAS7D,EAAEI,MAAMC,OAAS,GAAA,CAAA,EAEzEyD,EAAgBF,EAAezC,KAAKD,GAAOA,IAAQQ,SAASqC,aAAAA,EAC5DC,EAAeF,EAAgBF,EAAelD,QAAQoD,CAAAA,EAAAA,GAE5D,OAAQL,EAAMC,IAAAA,CACV,IAAK,SACDD,EAAMrF,iBACN5D,KAAKsB,OAAOQ,KAAAA,EAAK,EACjB9B,KAAKgH,oBAAAA,EACLhH,KAAKgB,iBAAiBY,OAAOuH,MAAAA,EAC7B,MAEJ,IAAK,MACDnJ,KAAKsB,OAAOQ,KAAAA,EAAK,EACjB9B,KAAKgH,oBAAAA,EACL,MAEJ,IAAK,YACDiC,EAAMrF,eAAAA,EACN,MAAM6F,EAAYD,EAAeJ,EAAetD,OAAS,EAAI0D,EAAe,EAAI,EAChFJ,EAAeK,CAAAA,GAAYN,MAAAA,EAC3B,MAEJ,IAAK,UACDF,EAAMrF,eAAAA,EACN,MAAM8F,EAAYF,EAAe,EAAIA,EAAe,EAAIJ,EAAetD,OAAS,EAChFsD,EAAeM,CAAAA,GAAYP,MAAAA,EAC3B,MAEJ,IAAK,OACDF,EAAMrF,eAAAA,EACNwF,EAAe,CAAA,GAAID,QACnB,MAEJ,IAAK,MACDF,EAAMrF,eAAAA,EACNwF,EAAeA,EAAetD,OAAS,CAAA,GAAIqD,MAAAA,EAC3C,MAEJ,IAAK,QACL,IAAK,IACGG,IACAL,EAAMrF,eAAAA,EACN5D,KAAKwB,eAAeM,KAAKwH,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAK3CtF,UAAAA,CACN,CAAA,EAtkB6B2F,EAAA,CAA5BC,WAAS,CAAEC,KAAMrH,OAAAA,CAAAA,CAAAA,EAFD7C,EAEYmK,UAAA,WAAA,CAAA,EACDH,EAAA,CAA3BC,WAAS,CAAEC,KAAMvF,MAAAA,CAAAA,CAAAA,EAHD3E,EAGWmK,UAAA,cAAA,CAAA,EACeH,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMvF,OAAQyF,QAAAA,EAAS,CAAA,CAAA,EAJlBpK,EAI0BmK,UAAA,QAAA,CAAA,EACfH,EAAA,CAA3BC,WAAS,CAAEC,KAAMvF,MAAAA,CAAAA,CAAAA,EALD3E,EAKWmK,UAAA,OAAA,CAAA,EACAH,EAAA,CAA3BC,WAAS,CAAEC,KAAMvF,MAAAA,CAAAA,CAAAA,EAND3E,EAMWmK,UAAA,YAAA,CAAA,EACCH,EAAA,CAA5BC,WAAS,CAAEC,KAAMrH,OAAAA,CAAAA,CAAAA,EAPD7C,EAOYmK,UAAA,QAAA,CAAA,EACDH,EAAA,CAA3BC,WAAS,CAAEC,KAAMvF,MAAAA,CAAAA,CAAAA,EARD3E,EAQWmK,UAAA,cAAA,CAAA,EACeH,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMvF,OAAQyF,QAAAA,EAAS,CAAA,CAAA,EATlBpK,EAS0BmK,UAAA,OAAA,CAAA,EACfH,EAAA,CAA3BC,WAAS,CAAEC,KAAMvF,MAAAA,CAAAA,CAAAA,EAVD3E,EAUWmK,UAAA,eAAA,CAAA,EACAH,EAAA,CAA3BC,WAAS,CAAEC,KAAMG,MAAAA,CAAAA,CAAAA,EAXDrK,EAWWmK,UAAA,aAAA,CAAA,EACAH,EAAA,CAA3BC,WAAS,CAAEC,KAAMG,MAAAA,CAAAA,CAAAA,EAZDrK,EAYWmK,UAAA,sBAAA,CAAA,EAIxBH,EAAA,CADHC,WAAS,CAAEC,KAAM9H,KAAAA,CAAAA,CAAAA,EAfDpC,EAgBbmK,UAAA,SAAA,CAAA,EASAH,EAAA,CADHC,EAAAA,SAAS,CAAEC,KAAMvF,OAAQyF,QAAAA,EAAS,CAAA,CAAA,EAxBlBpK,EAyBbmK,UAAA,QAAA,CAAA,EAgBaH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EAzCgBtK,EAyCAmK,UAAA,QAAA,GACAH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EA1CgBtK,EA0CAmK,UAAA,cAAA,CAAA,EACAH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EA3CgBtK,EA2CAmK,UAAA,uBAAA,CAAA,EACAH,EAAA,CAAhBM,EAAAA,MAAAA,CAAAA,EA5CgBtK,EA4CAmK,UAAA,cAAA,CAAA,EAGEH,EAAA,CAAlBO,EAAAA,MAAM,UAAA,CAAA,EA/CUvK,EA+CEmK,UAAA,WAAA,CAAA,EACCH,EAAA,CAAnBO,EAAAA,MAAM,WAAA,CAAA,EAhDUvK,EAgDGmK,UAAA,SAAA,CAAA,EAC8BH,EAAA,CAAjDQ,wBAAsB,CAAEC,QAAAA,EAAS,CAAA,CAAA,EAjDjBzK,EAiDiCmK,UAAA,WAAA,CAAA,EAjDjCnK,EAArBgK,EAAA,CADCU,EAAAA,cAAc,uBAAA,CAAA,EACM1K,CAAAA"}
1
+ {"version":3,"file":"autocomplete-BFN4UGNs.cjs","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\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 of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\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 (or include it inline)\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!: SchmancyInput\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\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 // Complex autofill detection disabled - using simple auto-select on blur instead\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, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\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 // 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 switchMap(() => fromEvent<MouseEvent>(document, 'click').pipe(\n tap(e => this._documentClick$.next(e)),\n takeUntil(this._open$.pipe(filter(isOpen => !isOpen)))\n ))\n )\n : EMPTY\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\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 // Auto-selection now happens on blur, no need for autofill detection\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 <schmancy-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 @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 @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-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 }}\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 }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \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(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, 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 // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \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":["SchmancyAutocomplete","$LitElement","constructor","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$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","opt","find","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","EMPTY","of","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","toLowerCase","replace","target","hasSelection","_handleKeyDown","_handleAutoSelectOnBlur","classMap","absolute","flex","bestMatch","bestScore","_e","event","key","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { BehaviorSubject as _, Subject as w, fromEvent as x, combineLatest as S,
2
2
  import { classMap as O } from "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
4
  import { property as c, state as b, query as k, queryAssignedElements as T, customElement as j } from "lit/decorators.js";
5
- import "./tailwind.mixin-CPuO9c5y.js";
6
- import { $ as M } from "./litElement.mixin-Dm9SOPDp.js";
5
+ import "./tailwind.mixin-DRrIaNCZ.js";
6
+ import { $ as M } from "./litElement.mixin-CAQ8pH9g.js";
7
7
  import { html as V } from "lit";
8
8
  import { createRef as q, ref as I } from "lit/directives/ref.js";
9
9
  import { tap as h, takeUntil as d, distinctUntilChanged as C, debounceTime as P, withLatestFrom as $, take as f, filter as m, switchMap as E } from "rxjs/operators";
@@ -238,4 +238,4 @@ let l = class extends M(":host{display:block;border:unset!important;line-height:
238
238
  }
239
239
  };
240
240
  a([c({ type: Boolean })], l.prototype, "required", 2), a([c({ type: String })], l.prototype, "placeholder", 2), a([c({ type: String, reflect: !0 })], l.prototype, "label", 2), a([c({ type: String })], l.prototype, "name", 2), a([c({ type: String })], l.prototype, "maxHeight", 2), a([c({ type: Boolean })], l.prototype, "multi", 2), a([c({ type: String })], l.prototype, "description", 2), a([c({ type: String, reflect: !0 })], l.prototype, "size", 2), a([c({ type: String })], l.prototype, "autocomplete", 2), a([c({ type: Number })], l.prototype, "debounceMs", 2), a([c({ type: Number })], l.prototype, "similarityThreshold", 2), a([c({ type: Array })], l.prototype, "values", 1), a([c({ type: String, reflect: !0 })], l.prototype, "value", 1), a([b()], l.prototype, "_open", 2), a([b()], l.prototype, "_inputValue", 2), a([b()], l.prototype, "_visibleOptionsCount", 2), a([b()], l.prototype, "_hasResults", 2), a([k("#options")], l.prototype, "_listbox", 2), a([k("sch-input")], l.prototype, "_input", 2), a([T({ flatten: !0 })], l.prototype, "_options", 2), l = a([j("schmancy-autocomplete")], l);
241
- //# sourceMappingURL=autocomplete-DMbJLodc.js.map
241
+ //# sourceMappingURL=autocomplete-DpZQqAGm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-DMbJLodc.js","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\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 of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\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 (or include it inline)\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!: SchmancyInput\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\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 // Complex autofill detection disabled - using simple auto-select on blur instead\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, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\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 // 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 switchMap(() => fromEvent<MouseEvent>(document, 'click').pipe(\n tap(e => this._documentClick$.next(e)),\n takeUntil(this._open$.pipe(filter(isOpen => !isOpen)))\n ))\n )\n : EMPTY\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\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 // Auto-selection now happens on blur, no need for autofill detection\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 <schmancy-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 @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 @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-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 }}\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 }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \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(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, 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 // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \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":["SchmancyAutocomplete","$LitElement","constructor","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$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","opt","find","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","EMPTY","of","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","toLowerCase","replace","target","hasSelection","_handleKeyDown","_handleAutoSelectOnBlur","classMap","absolute","flex","bestMatch","bestScore","_e","event","key","firstVisible","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"autocomplete-DpZQqAGm.js","sources":["../src/autocomplete/autocomplete.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\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 of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\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 (or include it inline)\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!: SchmancyInput\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\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 // Complex autofill detection disabled - using simple auto-select on blur instead\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, 'pointerdown').pipe(\n tap(e => {\n e.preventDefault() // Prevent blur from firing\n e.stopPropagation()\n }),\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 // 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 switchMap(() => fromEvent<MouseEvent>(document, 'click').pipe(\n tap(e => this._documentClick$.next(e)),\n takeUntil(this._open$.pipe(filter(isOpen => !isOpen)))\n ))\n )\n : EMPTY\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\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 // Auto-selection now happens on blur, no need for autofill detection\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 <schmancy-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 @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 @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-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 }}\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 }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \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(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, 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 // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Select the option using the existing pipeline\n this._optionSelect$.next(bestMatch)\n \n // Close the dropdown\n this._open$.next(false)\n this._open = false\n \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":["SchmancyAutocomplete","$LitElement","constructor","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$","values","value","vals","next","Array","isArray","join","val","split","map","v","trim","filter","Boolean","connectedCallback","id","Math","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","preventDefault","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","includes","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","similarity","valueScore","score","max","sort","a","b","visibleCount","item","hidden","style","order","length","_announceToScreenReader","_","currentValues","indexOf","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","opt","find","open","composedPath","_options","some","_updateInputDisplay","switchMap","document","EMPTY","of","message","liveRegion","shadowRoot","querySelector","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","toLowerCase","replace","target","hasSelection","_handleKeyDown","_handleAutoSelectOnBlur","classMap","absolute","flex","bestMatch","bestScore","_e","event","key","firstVisible","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";require("./autocomplete-35wx4zfo.cjs");
1
+ "use strict";require("./autocomplete-BFN4UGNs.cjs");
2
2
  //# sourceMappingURL=autocomplete.cjs.map
@@ -1,2 +1,2 @@
1
- import "./autocomplete-DMbJLodc.js";
1
+ import "./autocomplete-DpZQqAGm.js";
2
2
  //# sourceMappingURL=autocomplete.js.map
@@ -1,66 +1,66 @@
1
1
  import { css as O, html as c, nothing as lt } from "lit";
2
2
  import { property as l, customElement as y, state as h, queryAssignedElements as ct, query as F } from "lit/decorators.js";
3
3
  import { Subject as Y, merge as G, fromEvent as g, startWith as bt, map as w, debounceTime as R, tap as E, distinctUntilChanged as K, takeUntil as m, from as st, of as U, Observable as ft, zip as rt, filter as ht, take as gt, timeout as wt, bufferTime as vt, concatMap as xt, interval as $t, throwIfEmpty as Ct } from "rxjs";
4
- import "./animated-text-BLDqQ33G.js";
5
- import { b as it, F as St, H as Dt } from "./route.component-Df4CQy4C.js";
6
- import "./autocomplete-DMbJLodc.js";
4
+ import "./animated-text-B1DKGEyL.js";
5
+ import { b as it, F as St, H as Dt } from "./area.component-DbHc6U3D.js";
6
+ import "./autocomplete-DpZQqAGm.js";
7
7
  import "lit/directives/class-map.js";
8
8
  import "lit/directives/style-map.js";
9
- import { T as dt } from "./tailwind.mixin-CPuO9c5y.js";
9
+ import { T as dt } from "./tailwind.mixin-DRrIaNCZ.js";
10
10
  import { c as B, f as Et } from "./ripple-Cy-nvO8W.js";
11
11
  import "lit/directives/guard.js";
12
- import "./boat-PVy1fXfm.js";
13
- import "./spinner-e06PNB2u.js";
14
- import "./icon-button-Bu_eEqfk.js";
15
- import "./media-B28J9yez.js";
16
- import "./checkbox-DAFDBz7J.js";
17
- import "./chips-BnA6mVWq.js";
18
- import "./code-preview-CUc2NHQu.js";
19
- import "./payment-card-form-DcipYS1-.js";
12
+ import "./boat-C6oKTIlM.js";
13
+ import "./spinner-NR-WnRIj.js";
14
+ import "./icon-button-B4fsinj2.js";
15
+ import "./media-BvEF-HzD.js";
16
+ import "./checkbox-DSW62smU.js";
17
+ import "./chips-DIoIf1ND.js";
18
+ import "./code-preview-8XQAR_rg.js";
19
+ import "./payment-card-form-D-MHQCM7.js";
20
20
  import { SchmancyEvents as p } from "./types.js";
21
21
  import { n as P, e as W } from "./provide-tcktw8xB.js";
22
- import { $ as z } from "./litElement.mixin-Dm9SOPDp.js";
22
+ import { $ as z } from "./litElement.mixin-CAQ8pH9g.js";
23
23
  import { c as d } from "./consume-5D1qfVWM.js";
24
- import "./date-range-DFNdMN6p.js";
25
- import "./date-range-inline-xh0mrWH9.js";
26
- import "./delay-BTRy2v5H.js";
27
- import "./details-BsmaD0yr.js";
28
- import "./dialog-content-r1Ai3BZj.js";
24
+ import "./date-range-Bgr1ok1D.js";
25
+ import "./date-range-inline-7g5AJrua.js";
26
+ import "./delay-CtF14hCc.js";
27
+ import "./details-DDhUTFpC.js";
28
+ import "./dialog-content-DZ5VUwBo.js";
29
29
  import "./dialog-service-PQ9ssbsY.js";
30
- import "./divider-BPsLFNzK.js";
31
- import "./dropdown-content-B51-eGbI.js";
32
- import "./timezone-CXGJk88N.js";
33
- import "./form-BTmhZIB8.js";
34
- import "./icon-Clqcexag.js";
35
- import "./input-CFlQ_9Cq.js";
36
- import "./flex-BDtCUg0s.js";
37
- import "./list-rmfIuWZK.js";
38
- import "./email-recipients-hkvv_vgI.js";
39
- import "./map-BfP3ZVm_.js";
40
- import "./menu-C0iTDVTM.js";
30
+ import "./divider-Dn6brh7T.js";
31
+ import "./dropdown-content-Cgj5pA_r.js";
32
+ import "./timezone-B0JHFjXr.js";
33
+ import "./form-B1eDJoVW.js";
34
+ import "./icon-Bxm8o8R4.js";
35
+ import "./input-BrFENpX9.js";
36
+ import "./flex-D7uKo3cp.js";
37
+ import "./list-B11MYVeT.js";
38
+ import "./email-recipients-DWMc4Kbm.js";
39
+ import "./map-CPaDh0fK.js";
40
+ import "./menu-BL-7oqJ9.js";
41
41
  import { when as L } from "lit/directives/when.js";
42
- import "./notification-service-BIH173dS.js";
43
- import "./option-CTkTl7Pz.js";
44
- import "./progress-zOZKeIA7.js";
45
- import "./radio-button-C4TI0v9W.js";
42
+ import "./notification-service-BwM5HMaj.js";
43
+ import "./option-CRw6_dXY.js";
44
+ import "./progress-BuYkNiju.js";
45
+ import "./radio-button-CokLuIqN.js";
46
46
  import "./index-CW6PhEkx.js";
47
- import "./select-Br2sY6MK.js";
48
- import "./sheet-BjJdVvvp.js";
47
+ import "./select-Dj-oLKFF.js";
48
+ import "./sheet-DHy5-DkZ.js";
49
49
  import { s as V } from "./sheet.service-lXqUf6n5.js";
50
- import "./slider-Dgwlzvr-.js";
51
- import "./schmancy-steps-container-DC6Ca6-A.js";
50
+ import "./slider-FixLgBPB.js";
51
+ import "./schmancy-steps-container-2gQqGQwB.js";
52
52
  import "./context-object-u5gBaozZ.js";
53
53
  import { map as Ot, distinctUntilChanged as zt, take as kt } from "rxjs/operators";
54
- import "./surface-trk3Zpii.js";
55
- import "./table-BfFAQg7K.js";
56
- import "./tabs-compatibility-D1RfuRqZ.js";
57
- import "./textarea-U-fvfv2M.js";
58
- import "./theme.component-CfLAvCYi.js";
59
- import "./theme-button-CnWM9ZCv.js";
60
- import "./tooltip-CuDCLzkr.js";
61
- import "./tree-CfcLl-dV.js";
62
- import "./typewriter-C63WkKf1.js";
63
- import "./typography-DRkYb9R0.js";
54
+ import "./surface-Bygc4Pkm.js";
55
+ import "./table--xC1C9bV.js";
56
+ import "./tabs-compatibility-Dj58Mdjp.js";
57
+ import "./textarea-8OzsuUGm.js";
58
+ import "./theme.component-CMNPDwrg.js";
59
+ import "./theme-button-CKBPOL_F.js";
60
+ import "./tooltip-vzAPO65W.js";
61
+ import "./tree--vE36pPQ.js";
62
+ import "./typewriter-C0E8tuqP.js";
63
+ import "./typography-6mMnwoRl.js";
64
64
  import { S as o } from "./theme.interface-C5Kj6WjD.js";
65
65
  var Mt = Object.defineProperty, Wt = Object.getOwnPropertyDescriptor, D = (t, e, r, i) => {
66
66
  for (var n, s = i > 1 ? void 0 : i ? Wt(e, r) : e, a = t.length - 1; a >= 0; a--) (n = t[a]) && (s = (i ? n(e, r, s) : n(s)) || s);
@@ -604,4 +604,4 @@ export {
604
604
  ns as s,
605
605
  q as t
606
606
  };
607
- //# sourceMappingURL=avatar-BqGZ5lKc.js.map
607
+ //# sourceMappingURL=avatar-BGzMoyIf.js.map