@mhmo91/schmancy 0.2.20 → 0.2.22

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 (219) hide show
  1. package/dist/{animated-text-DrjiBStC.js → animated-text-CUx9CM5O.js} +3 -3
  2. package/dist/{animated-text-DrjiBStC.js.map → animated-text-CUx9CM5O.js.map} +1 -1
  3. package/dist/{animated-text-VuDSGmJu.cjs → animated-text-Dj6eM2tE.cjs} +2 -2
  4. package/dist/{animated-text-VuDSGmJu.cjs.map → animated-text-Dj6eM2tE.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-BLglMVqv.js → area.component-B3adb0Y6.js} +3 -3
  9. package/dist/{area.component-BLglMVqv.js.map → area.component-B3adb0Y6.js.map} +1 -1
  10. package/dist/{area.component-qqTF9Cwv.cjs → area.component-Do3Jb3jC.cjs} +2 -2
  11. package/dist/{area.component-qqTF9Cwv.cjs.map → area.component-Do3Jb3jC.cjs.map} +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-cGKAFBi1.js → autocomplete-BUOnKDbI.js} +3 -3
  14. package/dist/{autocomplete-cGKAFBi1.js.map → autocomplete-BUOnKDbI.js.map} +1 -1
  15. package/dist/{autocomplete-B0fc_Nh_.cjs → autocomplete-U3vu-siT.cjs} +2 -2
  16. package/dist/{autocomplete-B0fc_Nh_.cjs.map → autocomplete-U3vu-siT.cjs.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/busy.cjs +1 -1
  20. package/dist/busy.js +1 -1
  21. package/dist/button.cjs +1 -1
  22. package/dist/button.js +1 -1
  23. package/dist/card.cjs +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/{checkbox-D9M3J9G8.js → checkbox-BWaWg2Gm.js} +2 -2
  26. package/dist/{checkbox-D9M3J9G8.js.map → checkbox-BWaWg2Gm.js.map} +1 -1
  27. package/dist/{checkbox-CFRY_WA9.cjs → checkbox-FZpN0Mgj.cjs} +2 -2
  28. package/dist/{checkbox-CFRY_WA9.cjs.map → checkbox-FZpN0Mgj.cjs.map} +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.js +1 -1
  31. package/dist/{chips-DK1t1fX8.cjs → chips-BoxKYOMa.cjs} +2 -2
  32. package/dist/{chips-DK1t1fX8.cjs.map → chips-BoxKYOMa.cjs.map} +1 -1
  33. package/dist/{chips-CCQq31in.js → chips-CRfhI-G7.js} +3 -3
  34. package/dist/{chips-CCQq31in.js.map → chips-CRfhI-G7.js.map} +1 -1
  35. package/dist/chips.cjs +1 -1
  36. package/dist/chips.js +1 -1
  37. package/dist/components.cjs +1 -1
  38. package/dist/components.js +1 -1
  39. package/dist/content-drawer.cjs +1 -1
  40. package/dist/content-drawer.js +1 -1
  41. package/dist/{date-range-CyPVmgYc.js → date-range-2Zd4XvrS.js} +3 -3
  42. package/dist/{date-range-CyPVmgYc.js.map → date-range-2Zd4XvrS.js.map} +1 -1
  43. package/dist/{date-range-ojNc9Onw.cjs → date-range-X97ioY-h.cjs} +2 -2
  44. package/dist/{date-range-ojNc9Onw.cjs.map → date-range-X97ioY-h.cjs.map} +1 -1
  45. package/dist/date-range.cjs +1 -1
  46. package/dist/date-range.js +1 -1
  47. package/dist/{delay-BdpZfHDc.cjs → delay-BqTo3aLA.cjs} +2 -2
  48. package/dist/{delay-BdpZfHDc.cjs.map → delay-BqTo3aLA.cjs.map} +1 -1
  49. package/dist/{delay-75ofxuyx.js → delay-CwXLGveT.js} +2 -2
  50. package/dist/{delay-75ofxuyx.js.map → delay-CwXLGveT.js.map} +1 -1
  51. package/dist/delay.cjs +1 -1
  52. package/dist/delay.js +1 -1
  53. package/dist/{divider-_i9O2PBo.cjs → divider-BfxgNMsI.cjs} +2 -2
  54. package/dist/{divider-_i9O2PBo.cjs.map → divider-BfxgNMsI.cjs.map} +1 -1
  55. package/dist/{divider-C9o90_5e.js → divider-CdV7coS1.js} +3 -3
  56. package/dist/{divider-C9o90_5e.js.map → divider-CdV7coS1.js.map} +1 -1
  57. package/dist/divider.cjs +1 -1
  58. package/dist/divider.js +1 -1
  59. package/dist/{form-CqnEVlhB.cjs → form-BTnhPK7O.cjs} +2 -2
  60. package/dist/{form-CqnEVlhB.cjs.map → form-BTnhPK7O.cjs.map} +1 -1
  61. package/dist/{form-Cmp0Zkgn.js → form-DfGEOLag.js} +2 -2
  62. package/dist/{form-Cmp0Zkgn.js.map → form-DfGEOLag.js.map} +1 -1
  63. package/dist/form.cjs +1 -1
  64. package/dist/form.js +1 -1
  65. package/dist/{icon-DMpNiWR7.js → icon-B34qm8t_.js} +3 -3
  66. package/dist/{icon-DMpNiWR7.js.map → icon-B34qm8t_.js.map} +1 -1
  67. package/dist/{icon-CpZBVkRH.cjs → icon-DL24gxLi.cjs} +2 -2
  68. package/dist/{icon-CpZBVkRH.cjs.map → icon-DL24gxLi.cjs.map} +1 -1
  69. package/dist/{icon-button-BnakhpuT.cjs → icon-button-BXlgRBET.cjs} +2 -2
  70. package/dist/{icon-button-BnakhpuT.cjs.map → icon-button-BXlgRBET.cjs.map} +1 -1
  71. package/dist/{icon-button-DX3Zm-2u.js → icon-button-yOFOGX0Y.js} +3 -3
  72. package/dist/{icon-button-DX3Zm-2u.js.map → icon-button-yOFOGX0Y.js.map} +1 -1
  73. package/dist/icons.cjs +1 -1
  74. package/dist/icons.js +1 -1
  75. package/dist/index.cjs +1 -1
  76. package/dist/index.js +33 -33
  77. package/dist/{input-UMM0G3kS.js → input-B63-M9qj.js} +2 -2
  78. package/dist/{input-UMM0G3kS.js.map → input-B63-M9qj.js.map} +1 -1
  79. package/dist/{input-B2rV3JCi.cjs → input-C5Qe0WzY.cjs} +2 -2
  80. package/dist/{input-B2rV3JCi.cjs.map → input-C5Qe0WzY.cjs.map} +1 -1
  81. package/dist/input.cjs +1 -1
  82. package/dist/input.js +1 -1
  83. package/dist/layout.cjs +1 -1
  84. package/dist/layout.js +1 -1
  85. package/dist/{list-DOnYlCys.cjs → list-BDw1aNOH.cjs} +2 -2
  86. package/dist/{list-DOnYlCys.cjs.map → list-BDw1aNOH.cjs.map} +1 -1
  87. package/dist/{list-fbJSJN44.js → list-C9kPT0mr.js} +2 -2
  88. package/dist/{list-fbJSJN44.js.map → list-C9kPT0mr.js.map} +1 -1
  89. package/dist/list.cjs +1 -1
  90. package/dist/list.js +1 -1
  91. package/dist/{litElement.mixin-BnUdikbt.js → litElement.mixin-CJYb3izk.js} +2 -2
  92. package/dist/{litElement.mixin-BnUdikbt.js.map → litElement.mixin-CJYb3izk.js.map} +1 -1
  93. package/dist/{litElement.mixin-BGFFSTo6.cjs → litElement.mixin-Cw40wOLl.cjs} +2 -2
  94. package/dist/{litElement.mixin-BGFFSTo6.cjs.map → litElement.mixin-Cw40wOLl.cjs.map} +1 -1
  95. package/dist/{menu-BXkQgdTe.js → menu-B-9Sd5xU.js} +3 -3
  96. package/dist/{menu-BXkQgdTe.js.map → menu-B-9Sd5xU.js.map} +1 -1
  97. package/dist/{menu-BZyh3Omd.cjs → menu-BezCg_ZV.cjs} +2 -2
  98. package/dist/{menu-BZyh3Omd.cjs.map → menu-BezCg_ZV.cjs.map} +1 -1
  99. package/dist/menu.cjs +1 -1
  100. package/dist/menu.js +1 -1
  101. package/dist/nav-drawer.cjs +1 -1
  102. package/dist/nav-drawer.js +1 -1
  103. package/dist/notification.cjs +1 -1
  104. package/dist/notification.js +1 -1
  105. package/dist/{option-DC1BiTB1.cjs → option-Ds6sb35B.cjs} +2 -2
  106. package/dist/{option-DC1BiTB1.cjs.map → option-Ds6sb35B.cjs.map} +1 -1
  107. package/dist/{option-DLU4N2ZE.js → option-ETcMXlUc.js} +2 -2
  108. package/dist/{option-DLU4N2ZE.js.map → option-ETcMXlUc.js.map} +1 -1
  109. package/dist/option.cjs +1 -1
  110. package/dist/option.js +1 -1
  111. package/dist/outlet-BDkD7_9L.cjs +61 -0
  112. package/dist/outlet-BDkD7_9L.cjs.map +1 -0
  113. package/dist/outlet-Bc4MC45j.js +124 -0
  114. package/dist/outlet-Bc4MC45j.js.map +1 -0
  115. package/dist/{payment-card-form-DT2MgPCZ.cjs → payment-card-form-BXq6Mxck.cjs} +2 -2
  116. package/dist/{payment-card-form-DT2MgPCZ.cjs.map → payment-card-form-BXq6Mxck.cjs.map} +1 -1
  117. package/dist/{payment-card-form-D2wNtJk-.js → payment-card-form-yjKqadtl.js} +3 -3
  118. package/dist/{payment-card-form-D2wNtJk-.js.map → payment-card-form-yjKqadtl.js.map} +1 -1
  119. package/dist/{radio-group-WV66V12S.cjs → radio-group-B3jrTLIL.cjs} +2 -2
  120. package/dist/{radio-group-WV66V12S.cjs.map → radio-group-B3jrTLIL.cjs.map} +1 -1
  121. package/dist/{radio-group-BAXIANqT.js → radio-group-SZ7LT0BI.js} +2 -2
  122. package/dist/{radio-group-BAXIANqT.js.map → radio-group-SZ7LT0BI.js.map} +1 -1
  123. package/dist/radio-group.cjs +1 -1
  124. package/dist/radio-group.js +1 -1
  125. package/dist/{scroll-BxE0fD2e.js → scroll-BZXWpgyx.js} +2 -2
  126. package/dist/{scroll-BxE0fD2e.js.map → scroll-BZXWpgyx.js.map} +1 -1
  127. package/dist/{scroll-CD1V-q-_.cjs → scroll-DIBR9WHR.cjs} +2 -2
  128. package/dist/{scroll-CD1V-q-_.cjs.map → scroll-DIBR9WHR.cjs.map} +1 -1
  129. package/dist/{select-CV8IdXQf.js → select-DP9QxGkH.js} +3 -3
  130. package/dist/{select-CV8IdXQf.js.map → select-DP9QxGkH.js.map} +1 -1
  131. package/dist/{select-BP6OE_lC.cjs → select-ExBspAsr.cjs} +2 -2
  132. package/dist/{select-BP6OE_lC.cjs.map → select-ExBspAsr.cjs.map} +1 -1
  133. package/dist/select.cjs +1 -1
  134. package/dist/select.js +1 -1
  135. package/dist/{sheet-VJBIc1zb.cjs → sheet-CJ6kO7WG.cjs} +16 -17
  136. package/dist/{sheet-VJBIc1zb.cjs.map → sheet-CJ6kO7WG.cjs.map} +1 -1
  137. package/dist/{sheet-D8-zxp3n.js → sheet-CoO8bSHc.js} +25 -24
  138. package/dist/{sheet-D8-zxp3n.js.map → sheet-CoO8bSHc.js.map} +1 -1
  139. package/dist/sheet.cjs +1 -1
  140. package/dist/sheet.js +1 -1
  141. package/dist/{slider-B12L6AxV.js → slider-D4GAHeMx.js} +3 -3
  142. package/dist/{slider-B12L6AxV.js.map → slider-D4GAHeMx.js.map} +1 -1
  143. package/dist/{slider-BEGG7odV.cjs → slider-DEaQC5Qe.cjs} +2 -2
  144. package/dist/{slider-BEGG7odV.cjs.map → slider-DEaQC5Qe.cjs.map} +1 -1
  145. package/dist/slider.cjs +1 -1
  146. package/dist/slider.js +1 -1
  147. package/dist/{spinner-vK7ZLqSI.cjs → spinner-BJ5VG2fV.cjs} +2 -2
  148. package/dist/{spinner-vK7ZLqSI.cjs.map → spinner-BJ5VG2fV.cjs.map} +1 -1
  149. package/dist/{spinner-Qncx6I22.js → spinner-_aBya_Qc.js} +3 -3
  150. package/dist/{spinner-Qncx6I22.js.map → spinner-_aBya_Qc.js.map} +1 -1
  151. package/dist/{surface-pByMeeQt.cjs → surface-DKrkxarv.cjs} +2 -2
  152. package/dist/{surface-pByMeeQt.cjs.map → surface-DKrkxarv.cjs.map} +1 -1
  153. package/dist/{surface-DYJn8g9F.js → surface-DlwQilPV.js} +2 -2
  154. package/dist/{surface-DYJn8g9F.js.map → surface-DlwQilPV.js.map} +1 -1
  155. package/dist/surface.cjs +1 -1
  156. package/dist/surface.js +1 -1
  157. package/dist/{table-DduFFvUh.cjs → table-BmyyQrx8.cjs} +2 -2
  158. package/dist/{table-DduFFvUh.cjs.map → table-BmyyQrx8.cjs.map} +1 -1
  159. package/dist/{table-DvOkIhMb.js → table-Ds0ivk4n.js} +2 -2
  160. package/dist/{table-DvOkIhMb.js.map → table-Ds0ivk4n.js.map} +1 -1
  161. package/dist/table.cjs +1 -1
  162. package/dist/table.js +1 -1
  163. package/dist/{tabs-group-BBByN_wj.cjs → tabs-group-2sFsKJxb.cjs} +2 -2
  164. package/dist/{tabs-group-BBByN_wj.cjs.map → tabs-group-2sFsKJxb.cjs.map} +1 -1
  165. package/dist/{tabs-group-Wohd6x3I.js → tabs-group-OdIAitHN.js} +2 -2
  166. package/dist/{tabs-group-Wohd6x3I.js.map → tabs-group-OdIAitHN.js.map} +1 -1
  167. package/dist/tabs.cjs +1 -1
  168. package/dist/tabs.js +1 -1
  169. package/dist/{tailwind.mixin-bRVZL2lY.cjs → tailwind.mixin-mhYVlkxs.cjs} +2 -2
  170. package/dist/{tailwind.mixin-bRVZL2lY.cjs.map → tailwind.mixin-mhYVlkxs.cjs.map} +1 -1
  171. package/dist/{tailwind.mixin-jeUK-Doz.js → tailwind.mixin-wwBoa4Jw.js} +15 -15
  172. package/dist/{tailwind.mixin-jeUK-Doz.js.map → tailwind.mixin-wwBoa4Jw.js.map} +1 -1
  173. package/dist/teleport.cjs +1 -1
  174. package/dist/{teleport.component-90QAnife.cjs → teleport.component-MYrtD0Li.cjs} +2 -2
  175. package/dist/{teleport.component-90QAnife.cjs.map → teleport.component-MYrtD0Li.cjs.map} +1 -1
  176. package/dist/{teleport.component-CMZW0HoW.js → teleport.component-SInaGefV.js} +35 -35
  177. package/dist/{teleport.component-CMZW0HoW.js.map → teleport.component-SInaGefV.js.map} +1 -1
  178. package/dist/teleport.js +1 -1
  179. package/dist/{textarea-DnIefaLe.cjs → textarea-DE-5ySnu.cjs} +2 -2
  180. package/dist/{textarea-DnIefaLe.cjs.map → textarea-DE-5ySnu.cjs.map} +1 -1
  181. package/dist/{textarea-BfzMpFnt.js → textarea-p0XofIBJ.js} +2 -2
  182. package/dist/{textarea-BfzMpFnt.js.map → textarea-p0XofIBJ.js.map} +1 -1
  183. package/dist/textarea.cjs +1 -1
  184. package/dist/textarea.js +1 -1
  185. package/dist/{theme-button-C5ReoqDx.js → theme-button-BczCoNKk.js} +2 -2
  186. package/dist/{theme-button-C5ReoqDx.js.map → theme-button-BczCoNKk.js.map} +1 -1
  187. package/dist/{theme-button-B0kxPZka.cjs → theme-button-HfAO7YLi.cjs} +2 -2
  188. package/dist/{theme-button-B0kxPZka.cjs.map → theme-button-HfAO7YLi.cjs.map} +1 -1
  189. package/dist/theme-button.cjs +1 -1
  190. package/dist/theme-button.js +1 -1
  191. package/dist/theme.cjs +1 -1
  192. package/dist/{theme.component-CbQ3s3hX.cjs → theme.component-78M08LUD.cjs} +2 -2
  193. package/dist/{theme.component-CbQ3s3hX.cjs.map → theme.component-78M08LUD.cjs.map} +1 -1
  194. package/dist/{theme.component-wMpGPTus.js → theme.component-CKmrq6vY.js} +2 -2
  195. package/dist/{theme.component-wMpGPTus.js.map → theme.component-CKmrq6vY.js.map} +1 -1
  196. package/dist/theme.js +1 -1
  197. package/dist/{tree-BKd26LdC.cjs → tree-C0L22or-.cjs} +2 -2
  198. package/dist/{tree-BKd26LdC.cjs.map → tree-C0L22or-.cjs.map} +1 -1
  199. package/dist/{tree-DN5gv8hS.js → tree-CJueZNtq.js} +2 -2
  200. package/dist/{tree-DN5gv8hS.js.map → tree-CJueZNtq.js.map} +1 -1
  201. package/dist/tree.cjs +1 -1
  202. package/dist/tree.js +1 -1
  203. package/dist/{typewriter-FnhgAazS.js → typewriter-DOVBdtxY.js} +4 -4
  204. package/dist/{typewriter-FnhgAazS.js.map → typewriter-DOVBdtxY.js.map} +1 -1
  205. package/dist/{typewriter-jklG56Kf.cjs → typewriter-n3ITVaff.cjs} +2 -2
  206. package/dist/{typewriter-jklG56Kf.cjs.map → typewriter-n3ITVaff.cjs.map} +1 -1
  207. package/dist/typewriter.cjs +1 -1
  208. package/dist/typewriter.js +1 -1
  209. package/dist/{typography-CPFqZt0d.js → typography-BRiJcJhp.js} +2 -2
  210. package/dist/{typography-CPFqZt0d.js.map → typography-BRiJcJhp.js.map} +1 -1
  211. package/dist/{typography-D5hY_euh.cjs → typography-bMZIS2rJ.cjs} +2 -2
  212. package/dist/{typography-D5hY_euh.cjs.map → typography-bMZIS2rJ.cjs.map} +1 -1
  213. package/dist/typography.cjs +1 -1
  214. package/dist/typography.js +1 -1
  215. package/package.json +1 -1
  216. package/dist/outlet-B1D2BYCl.cjs +0 -66
  217. package/dist/outlet-B1D2BYCl.cjs.map +0 -1
  218. package/dist/outlet-DuNsi1ZI.js +0 -129
  219. package/dist/outlet-DuNsi1ZI.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-cGKAFBi1.js","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport type { SchmancyInputChangeEvent } from '..'\nimport style from './autocomplete.scss?inline'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t/**\n\t * Whether input is required for form validity.\n\t */\n\t@property({ type: Boolean }) required = false\n\n\t/**\n\t * Placeholder text for the input.\n\t */\n\t@property({ type: String }) placeholder = ''\n\n\t/**\n\t * Programmatic value of the autocomplete. Setting this\n\t * after the element is rendered will now update the display.\n\t */\n\t@property({ type: String, reflect: true }) value = ''\n\n\t/**\n\t * Label for the input (floating label or similar).\n\t */\n\t@property({ type: String, reflect: true }) label = ''\n\n\t/**\n\t * Max height of the dropdown options container.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\n\t/**\n\t * Whether multiple selections are allowed.\n\t */\n\t@property({ type: Boolean }) multi = false\n\n\t/**\n\t * A local property to store the *display* value (label text).\n\t * This is separate from the raw `value`.\n\t */\n\t@state() valueLabel = ''\n\n\t// Refs and queries\n\tinputRef = createRef<HTMLInputElement>()\n\n\t/**\n\t * The main <ul> with id=\"options\".\n\t */\n\t@query('#options') optionsContainer!: HTMLUListElement\n\n\t/**\n\t * The \"no results found\" <li> element.\n\t */\n\t@query('#empty') empty!: HTMLLIElement\n\n\t/**\n\t * The SchmancyInput element (your visible text input).\n\t */\n\t@query('schmancy-input') input!: SchmancyInput\n\n\t/**\n\t * All the <schmancy-option> children assigned via the default slot.\n\t */\n\t@queryAssignedElements({ flatten: true })\n\toptions!: SchmancyOption[]\n\n\t// Reactive search term stream\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t/**\n\t\t * Whenever user types in the schmancy-input, we do\n\t\t * fuzzy or distance-based filtering of the child <schmancy-option> elements.\n\t\t */\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// The \"levenshtein-ish\" filtering\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t({ option, levDistance }) =>\n\t\t\t\t\t\t\t\t// if short searchTerm, be lenient\n\t\t\t\t\t\t\t\tsearchTerm.length < 3 ||\n\t\t\t\t\t\t\t\t// otherwise, filter by distance\n\t\t\t\t\t\t\t\tlevDistance <= option.label.toLowerCase().length - searchTerm.length,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t// sort by ascending distance\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide appropriate options\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show/hide the \"no results found\" <li>\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t/**\n\t\t * If the user focuses out of the entire component (and\n\t\t * not just stepping from one <schmancy-option> to another),\n\t\t * animate out the dropdown, then hide it.\n\t\t */\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t// Make sure the newly focused element is *not* one of our <schmancy-option>s\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// Animate the <ul> out\n\t\t\t\t\tconst animation = this.optionsContainer.animate(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{ opacity: 1 }, // from\n\t\t\t\t\t\t\t{ opacity: 0 }, // to\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// Convert onfinish to a Promise\n\t\t\t\t\tconst animationPromise = new Promise<void>(resolve => {\n\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('display', 'none')\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('opacity', '1')\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(animationPromise)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Once animation completes\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\t// Make sure the input displays the selected labels\n\t\t\t\t\t\tthis.input.value = this.options\n\t\t\t\t\t\t\t.filter(o => o.selected)\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\t/**\n\t * firstUpdated (similar to componentDidMount in React).\n\t * We can do an initial sync of the input's display text\n\t * if a `value` was pre-set.\n\t */\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * This will be invoked *any time* a reactive property changes\n\t * after the first render. We specifically check if `value` changed,\n\t * so we can update the display text (and selected states) if needed.\n\t */\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('value')) {\n\t\t\t// If value changed, update the input display text + selected states\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * If user assigned new <schmancy-option> children, or changed them,\n\t * we also want to ensure the \"no results\" is correct and that\n\t * our input text is still in sync.\n\t */\n\tprivate handleSlotChange() {\n\t\t// Hide 'empty' if at least one option is visible\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\t// Also do a fresh fill of the input\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * For multi-select, ensure that any `value` strings\n\t * are reflected in the child <schmancy-option>'s `selected` property.\n\t * For single select, do similarly for the one matching option.\n\t */\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Takes the current `value` (and child <schmancy-option>s) and updates\n\t * the displayed text in the schmancy-input. Called whenever we need\n\t * to re-sync the visible input text to the actual data.\n\t */\n\tupdateInputValue() {\n\t\t// We do this in a rAF to avoid any weird timing issues\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selectedOptions = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selectedOptions.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Show the dropdown list, using Floating UI for positioning.\n\t */\n\tasync showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.setProperty('display', 'block')\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\tmaxHeight: this.maxHeight,\n\t\t\toverflowY: 'auto',\n\t\t})\n\t}\n\n\t/**\n\t * Hide the dropdown immediately (no animation).\n\t */\n\thideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tthis.optionsContainer?.style.setProperty('display', 'none')\n\t}\n\n\t/**\n\t * Called whenever the user types in the schmancy-input.\n\t */\n\thandleInputChange(event: SchmancyInputChangeEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t/**\n\t * Called whenever user clicks or taps an <schmancy-option>.\n\t */\n\t@eventOptions({ passive: true })\n\thandleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) {\n\t\t\t\toption.selected = !option.selected\n\t\t\t}\n\t\t\t// Rebuild the .value from the selected items\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\t// Update display text, dispatch \"change\"\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Check validity of the selected value(s) to satisfy forms.\n\t */\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : !!this.value\n\t}\n\n\t/**\n\t * Actually cause form validation checks if needed.\n\t */\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\t/**\n\t * Attempt to prevent iOS scrolling the background page\n\t * while swiping within the options list. (NB: This logic\n\t * currently needs a bit more nuance to be robust.)\n\t */\n\tprivate startY = 0\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\t// Current touch Y\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\n\t\t// If user is at top and swiping down, or at bottom and swiping up, block\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- If there's no external trigger slot, fall back to a schmancy-input -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t@focus=${this.showOptions}\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\tstyle=\"max-height: ${this.maxHeight}\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// We rely on each <schmancy-option> dispatching a CustomEvent with detail.value\n\t\t\t\t\t\t// Or you can re-check e.target as <schmancy-option> and retrieve its value\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionClick(detailVal)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<!-- Default slot with the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","super","arguments","this","required","placeholder","value","label","maxHeight","multi","valueLabel","inputRef","createRef","searchTerm$","Subject","startY","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","animationPromise","Promise","resolve","onfinish","style","setProperty","from","next","input","selected","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","handleSlotChange","some","values","split","v","Boolean","includes","requestAnimationFrame","selectedOptions","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","zIndex","overflowY","hideOptions","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","__decorateClass","property","type","prototype","String","reflect","state","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"autocomplete-BUOnKDbI.js","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport type { SchmancyInputChangeEvent } from '..'\nimport style from './autocomplete.scss?inline'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t/**\n\t * Whether input is required for form validity.\n\t */\n\t@property({ type: Boolean }) required = false\n\n\t/**\n\t * Placeholder text for the input.\n\t */\n\t@property({ type: String }) placeholder = ''\n\n\t/**\n\t * Programmatic value of the autocomplete. Setting this\n\t * after the element is rendered will now update the display.\n\t */\n\t@property({ type: String, reflect: true }) value = ''\n\n\t/**\n\t * Label for the input (floating label or similar).\n\t */\n\t@property({ type: String, reflect: true }) label = ''\n\n\t/**\n\t * Max height of the dropdown options container.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\n\t/**\n\t * Whether multiple selections are allowed.\n\t */\n\t@property({ type: Boolean }) multi = false\n\n\t/**\n\t * A local property to store the *display* value (label text).\n\t * This is separate from the raw `value`.\n\t */\n\t@state() valueLabel = ''\n\n\t// Refs and queries\n\tinputRef = createRef<HTMLInputElement>()\n\n\t/**\n\t * The main <ul> with id=\"options\".\n\t */\n\t@query('#options') optionsContainer!: HTMLUListElement\n\n\t/**\n\t * The \"no results found\" <li> element.\n\t */\n\t@query('#empty') empty!: HTMLLIElement\n\n\t/**\n\t * The SchmancyInput element (your visible text input).\n\t */\n\t@query('schmancy-input') input!: SchmancyInput\n\n\t/**\n\t * All the <schmancy-option> children assigned via the default slot.\n\t */\n\t@queryAssignedElements({ flatten: true })\n\toptions!: SchmancyOption[]\n\n\t// Reactive search term stream\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t/**\n\t\t * Whenever user types in the schmancy-input, we do\n\t\t * fuzzy or distance-based filtering of the child <schmancy-option> elements.\n\t\t */\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// The \"levenshtein-ish\" filtering\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t({ option, levDistance }) =>\n\t\t\t\t\t\t\t\t// if short searchTerm, be lenient\n\t\t\t\t\t\t\t\tsearchTerm.length < 3 ||\n\t\t\t\t\t\t\t\t// otherwise, filter by distance\n\t\t\t\t\t\t\t\tlevDistance <= option.label.toLowerCase().length - searchTerm.length,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t// sort by ascending distance\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide appropriate options\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show/hide the \"no results found\" <li>\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t/**\n\t\t * If the user focuses out of the entire component (and\n\t\t * not just stepping from one <schmancy-option> to another),\n\t\t * animate out the dropdown, then hide it.\n\t\t */\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t// Make sure the newly focused element is *not* one of our <schmancy-option>s\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// Animate the <ul> out\n\t\t\t\t\tconst animation = this.optionsContainer.animate(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{ opacity: 1 }, // from\n\t\t\t\t\t\t\t{ opacity: 0 }, // to\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// Convert onfinish to a Promise\n\t\t\t\t\tconst animationPromise = new Promise<void>(resolve => {\n\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('display', 'none')\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('opacity', '1')\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(animationPromise)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Once animation completes\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\t// Make sure the input displays the selected labels\n\t\t\t\t\t\tthis.input.value = this.options\n\t\t\t\t\t\t\t.filter(o => o.selected)\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\t/**\n\t * firstUpdated (similar to componentDidMount in React).\n\t * We can do an initial sync of the input's display text\n\t * if a `value` was pre-set.\n\t */\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * This will be invoked *any time* a reactive property changes\n\t * after the first render. We specifically check if `value` changed,\n\t * so we can update the display text (and selected states) if needed.\n\t */\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('value')) {\n\t\t\t// If value changed, update the input display text + selected states\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * If user assigned new <schmancy-option> children, or changed them,\n\t * we also want to ensure the \"no results\" is correct and that\n\t * our input text is still in sync.\n\t */\n\tprivate handleSlotChange() {\n\t\t// Hide 'empty' if at least one option is visible\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\t// Also do a fresh fill of the input\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * For multi-select, ensure that any `value` strings\n\t * are reflected in the child <schmancy-option>'s `selected` property.\n\t * For single select, do similarly for the one matching option.\n\t */\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Takes the current `value` (and child <schmancy-option>s) and updates\n\t * the displayed text in the schmancy-input. Called whenever we need\n\t * to re-sync the visible input text to the actual data.\n\t */\n\tupdateInputValue() {\n\t\t// We do this in a rAF to avoid any weird timing issues\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selectedOptions = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selectedOptions.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Show the dropdown list, using Floating UI for positioning.\n\t */\n\tasync showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.setProperty('display', 'block')\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\tmaxHeight: this.maxHeight,\n\t\t\toverflowY: 'auto',\n\t\t})\n\t}\n\n\t/**\n\t * Hide the dropdown immediately (no animation).\n\t */\n\thideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tthis.optionsContainer?.style.setProperty('display', 'none')\n\t}\n\n\t/**\n\t * Called whenever the user types in the schmancy-input.\n\t */\n\thandleInputChange(event: SchmancyInputChangeEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t/**\n\t * Called whenever user clicks or taps an <schmancy-option>.\n\t */\n\t@eventOptions({ passive: true })\n\thandleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) {\n\t\t\t\toption.selected = !option.selected\n\t\t\t}\n\t\t\t// Rebuild the .value from the selected items\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\t// Update display text, dispatch \"change\"\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Check validity of the selected value(s) to satisfy forms.\n\t */\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : !!this.value\n\t}\n\n\t/**\n\t * Actually cause form validation checks if needed.\n\t */\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\t/**\n\t * Attempt to prevent iOS scrolling the background page\n\t * while swiping within the options list. (NB: This logic\n\t * currently needs a bit more nuance to be robust.)\n\t */\n\tprivate startY = 0\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\t// Current touch Y\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\n\t\t// If user is at top and swiping down, or at bottom and swiping up, block\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- If there's no external trigger slot, fall back to a schmancy-input -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t@focus=${this.showOptions}\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\tstyle=\"max-height: ${this.maxHeight}\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// We rely on each <schmancy-option> dispatching a CustomEvent with detail.value\n\t\t\t\t\t\t// Or you can re-check e.target as <schmancy-option> and retrieve its value\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionClick(detailVal)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<!-- Default slot with the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","super","arguments","this","required","placeholder","value","label","maxHeight","multi","valueLabel","inputRef","createRef","searchTerm$","Subject","startY","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","animationPromise","Promise","resolve","onfinish","style","setProperty","from","next","input","selected","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","handleSlotChange","some","values","split","v","Boolean","includes","requestAnimationFrame","selectedOptions","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","zIndex","overflowY","hideOptions","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","__decorateClass","property","type","prototype","String","reflect","state","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":";;;;;;;;;;;;AAAA,MAAMA,IAAM,IAAIC,YAAY,KAAA,GA+GtBC,KAAW,CAACC,GAAGC,MAAAA;AACjB,MAAID,EAAEE,SAASD,EAAEC,QAAQ;AACrB,UAAMC,IAAMF;AACZA,IAAAA,IAAID,GACJA,IAAIG;AAAAA,EACZ;AACI,SAAIF,EAAEC,WAAW,IACNF,EAAEE,SAETF,EAAEE,UAAU,MAvHFF,CAAAA,GAAGC,MACjB;AAAA,UAAMG,IAAIJ,EAAEE,QACNG,IAAIJ,EAAEC,QACNI,IAAM,KAAMF,IAAI;AACtB,QAAIG,IAAO,IACPC,IAAK,GACLC,IAAKL,GACLM,IAAIN;AACR,WAAOM,MACHb,CAAAA,EAAIG,EAAEW,WAAWD,CAAO,CAAA,KAAA,KAAKA;AAEjC,SAAKA,IAAI,GAAGA,IAAIL,GAAGK,KAAK;AACpB,UAAIE,IAAKf,EAAII,EAAEU,WAAWD,CAC1B,CAAA;AAAA,YAAMG,IAAKD,IAAKJ;AAChBI,MAAAA,MAAQA,IAAKL,KAAMA,IAAMA,GACzBC,KAAAA,EAAQI,IAAKL,IACbA,KAAMK,GACFJ,IAAKF,KACLG,KAEAF,IAAKD,KACLG,KAEJD,IAAMA,KAAM,IAAK,GACjBD,IAAMA,KAAM,IAAOM,EAAAA,IAAKL,IACxBA,KAAMK;AAAAA,IACd;AAEI,SADAH,IAAIN,GACGM,MACHb,CAAAA,EAAIG,EAAEW,WAAWD,CAAAA,CAAAA,IAAM;AAE3B,WAAOD;AAAAA,EAAE,GAyFWT,GAAGC,CAAAA,KAvFVA,CAAAA,GAAGD,MAChB;AAAA,UAAMI,IAAIJ,EAAEE,QACNG,IAAIJ,EAAEC,QACNY,IAAM,CACNC,GAAAA,IAAM,CACNC,GAAAA,IAAQC,KAAKC,KAAKd,IAAI,EAAA,GACtBe,IAAQF,KAAKC,KAAKb,IAAI,EAC5B;AAAA,aAASK,IAAI,GAAGA,IAAIM,GAAON,IACvBK,CAAAA,EAAIL,CAAO,IAAA,IACXI,EAAIJ,CAAAA,IAAK;AAEb,QAAIU,IAAI;AACR,WAAOA,IAAID,IAAQ,GAAGC,KAAK;AACvB,UAAIZ,IAAK,GACLD,IAAAA;AACJ,YAAMc,IAAY,KAAJD,GACRE,IAAOL,KAAKM,IAAI,IAAIlB,CAAAA,IAAKgB;AAC/B,eAASG,IAAIH,GAAOG,IAAIF,GAAME,IAC1B3B,CAAAA,EAAII,EAAEU,WAAWa,OAAO,KAAKA;AAEjC,eAASd,IAAI,GAAGA,IAAIN,GAAGM,KAAK;AACxB,cAAME,IAAKf,EAAIG,EAAEW,WAAWD,CACtBe,CAAAA,GAAAA,IAAMV,EAAKL,IAAI,KAAM,CAAA,MAAOA,IAAK,GACjCgB,IAAMZ,EAAKJ,IAAI,KAAM,CAAA,MAAOA,IAAK,GACjCG,IAAKD,IAAKJ,GACVmB,MAASf,IAAKc,KAAMnB,KAAMA,IAAMA,IAAMK,IAAKc;AACjD,YAAIE,IAAKpB,MAAOmB,IAAKpB,IACjBsB,IAAKtB,IAAKoB;AACTC,QAAAA,MAAO,KAAMH,MACdV,EAAKL,IAAI,KAAM,CAAA,KAAM,KAAKA,IAEzBmB,MAAO,KAAMH,MACdZ,EAAKJ,IAAI,KAAM,CAAA,KAAM,KAAKA,IAE9BkB,IAAMA,KAAM,IAAKH,GACjBI,IAAMA,KAAM,IAAKH,GACjBnB,IAAKsB,IAAAA,EAAOhB,IAAKe,IACjBpB,IAAKoB,IAAKf;AAAAA,MACtB;AACQ,eAASW,IAAIH,GAAOG,IAAIF,GAAME,IAC1B3B,CAAAA,EAAII,EAAEU,WAAWa,CAAAA,CAAAA,IAAM;AAAA,IAEnC;AACI,QAAIhB,IAAK,GACLD,IAAO;AACX,UAAMc,IAAY,KAAJD,GACRE,IAAOL,KAAKM,IAAI,IAAIlB,IAAIgB,CAASA,IAAAA;AACvC,aAASG,IAAIH,GAAOG,IAAIF,GAAME,IAC1B3B,CAAAA,EAAII,EAAEU,WAAWa,CAAAA,CAAAA,KAAO,KAAKA;AAEjC,QAAIM,IAAQzB;AACZ,aAASK,IAAI,GAAGA,IAAIN,GAAGM,KAAK;AACxB,YAAME,IAAKf,EAAIG,EAAEW,WAAWD,CACtBe,CAAAA,GAAAA,IAAMV,EAAKL,IAAI,KAAM,CAAA,MAAOA,IAAK,GACjCgB,IAAMZ,EAAKJ,IAAI,KAAM,CAAA,MAAOA,IAAK,GACjCG,IAAKD,IAAKJ,GACVmB,MAASf,IAAKc,KAAMnB,KAAMA,IAAMA,IAAMK,IAAKc;AACjD,UAAIE,IAAKpB,IAAOmB,EAAAA,IAAKpB,IACjBsB,IAAKtB,IAAKoB;AACdG,MAAAA,KAAUF,MAAQvB,IAAI,IAAM,GAC5ByB,KAAUD,MAAQxB,IAAI,IAAM,GACvBuB,MAAO,KAAMH,MACdV,EAAKL,IAAI,KAAM,CAAM,KAAA,KAAKA,IAEzBmB,MAAO,KAAMH,MACdZ,EAAKJ,IAAI,KAAM,CAAM,KAAA,KAAKA,IAE9BkB,IAAMA,KAAM,IAAKH,GACjBI,IAAMA,KAAM,IAAKH,GACjBnB,IAAKsB,IAAOhB,EAAAA,IAAKe,IACjBpB,IAAKoB,IAAKf;AAAAA,IAClB;AACI,aAASW,IAAIH,GAAOG,IAAIF,GAAME,IAC1B3B,CAAAA,EAAII,EAAEU,WAAWa,CAAM,CAAA,IAAA;AAE3B,WAAOM;AAAAA,EAAK,GAcG9B,GAAGC,CAAE;AAAA;;;;;ACvGxB,IAAqB8B,IAArB,cAAkDC,0NAAlD,EAAA;AAAA,EAAA,cAAAC;AAAAA,UAAAA,GAAAC,SAIyCC,GAAAA,KAAAC,WAAA,IAKED,KAAAE,cAAA,IAMSF,KAAAG,QAAA,IAKAH,KAAAI,QAAA,IAKXJ,KAAAK,YAAA,QAKHL,KAAAM,QAAAA,IAMfN,KAAAO,aAAA,IAGtBP,KAAAQ,WAAWC,EAAAA,GAwBMT,KAAAU,cAAc,IAAIC,KAiRnCX,KAAQY,SAAS;AAAA,EAAA;AAAA,EA/QjB,oBAAAC;AACCf,UAAMe,kBAAAA,GAMNb,KAAKU,YACHI,KACAC,EAAUf,KAAKgB,aACfC,GAAAA,EAAAA,GACAC,EAAYC,OAAAA;AACX,YAAMC,IAAaD,EAAKE,KAAAA,EAAOC,YAGzBC,GAAAA,IAAUvB,KAAKwB,QACnBC,IAAcC,CAAAA,MAAAA;AACR,cAAAC,IAAaD,EAAOtB,MAAMkB,YAAAA;AAEzB,eAAA,EAAEI,QAAQE,GAAAA,aADGhE,GAASwD,GAAYO,CACZ,EAAA;AAAA,MAAA,CAAA,EAE7BE,OACA,CAAA,EAAGH,QAAQE,GAAAA,aAAAA,EAAAA,MAEVR,EAAWrD,SAAS,KAEpB6D,KAAeF,EAAOtB,MAAMkB,YAAAA,EAAcvD,SAASqD,EAAWrD,QAG/D+D,KAAK,CAACjE,GAAGC,MAAMD,EAAE+D,cAAc9D,EAAE8D,WAAAA;AAGnC5B,WAAKwB,QAAQO,QAAcC,CAAAA,MAAAA,EAAEC,SAAS,EAAA;AAC3B,iBAAA,EAAAP,QAAEA,EAAAA,KAAYH,EACxBG,CAAAA,EAAOO,SAAS;AAIZjC,WAAAkC,MAAMD,SAASV,EAAQxD,SAAS,GAErCiC,KAAKmC,cAAc;AAAA,IAAA,CAAA,CAAA,EAGpBC,UAAU,MAAA;AACVpC,WAAKqC,YAAY;AAAA,IAAA,CAAA,GAQGC,EAAAtC,MAAM,UAC1Bc,EAAAA,KACAC,EAAUf,KAAKgB,gBAEfa,EAAOU,OAAAA;;AAAsD,eAAhDA,IAAAA,EAAEC,kBAAFD,gBAAAA,EAAoCE,aAAY;AAAA,KAAZA,GACjDC,GAAU,MAAA;AAEH,YAAAC,IAAY3C,KAAK4C,iBAAiBC,QACvC,CACC,EAAEC,SAAS,KACX,EAAEA,SAAS,EAEZ,CAAA,GAAA,EACCC,UAAU,KACVC,QAAQ,mCAAA,CAAA,GAKJC,IAAmB,IAAIC,QAAyBC,CAAAA,MACrDR;AAAAA,UAAUS,WAAW,MAAA;AACpBpD,eAAK4C,iBAAiBS,MAAMC,YAAY,WAAW,MACnDtD,GAAAA,KAAK4C,iBAAiBS,MAAMC,YAAY,WAAW,GAC3CH,GAAAA,EAAAA;AAAAA,QAAA;AAAA,MACT,CAAA;AAGD,aAAOI,EAAKN,CAAgB;AAAA,IAAA,CAAA,CAAA,EAG7Bb,UAAU,EACVoB,MAAM,MAEDxD;;AAAAA,WAAKM,QAERN,KAAKyD,MAAMtD,QAAQH,KAAKwB,QACtBK,OAAYG,CAAAA,MAAAA,EAAE0B,QAAAA,EACdjC,IAASO,CAAAA,MAAAA,EAAE5B,KACXuD,EAAAA,KAAK,IAGF3D,IAAAA,KAAAyD,MAAMtD,UAAQH,IAAAA,KAAKwB,QAAQoC,KAAU5B,CAAAA,MAAAA,EAAE7B,UAAUH,KAAKG,KAAAA,MAAxCH,gBAAAA,EAAgDI,UAAS;AAAA,IAAA;EAG9E;AAAA,EAQH,eACCJ;AAAAA,SAAK6D,iBAAiB;AAAA,EAAA;AAAA,EAQb,QAAQC;AACjBhE,UAAMiE,QAAQD,CAEVA,GAAAA,EAAaE,IAAI,OAAA,MAEpBhE,KAAKiE,uBAAAA,GACLjE,KAAK6D,iBACN;AAAA,EAAA;AAAA,EAQO,mBAAAK;AAEFlE,SAAAkC,MAAMD,SAASjC,KAAKwB,QAAQ2C,KAAezC,OAACA,CAAAA,EAAOO,MAExDjC,GAAAA,KAAKiE,uBACLjE,GAAAA,KAAK6D;EAAiB;AAAA,EAQf,yBACP;AAAA,QAAI7D,KAAKM,OAAO;AACf,YAAM8D,IAASpE,KAAKG,MAClBkE,MAAM,GAAA,EACN5C,IAAI6C,CAAAA,MAAKA,EAAEjD,KAAAA,CAAAA,EACXQ,OAAO0C,OAEJvE;AAAAA,WAAAwB,QAAQO,QAAaC,CAAAA,MACzBA;AAAAA,QAAAA,EAAE0B,WAAWU,EAAOI,SAASxC,EAAE7B,KAAK;AAAA,MAAA,CAAA;AAAA,IACpC,MAEIH,MAAAwB,QAAQO,QAAaC;AACvBA,QAAA0B,WAAW1B,EAAE7B,UAAUH,KAAKG;AAAAA,IAAA,CAEhC;AAAA,EAAA;AAAA,EAQD,mBAECsE;AAAAA,0BAAsB,MACrB;;AAAA,UAAIzE,KAAKM,OAAO;AACT,cAAAoE,IAAkB1E,KAAKwB,QAAQK,OAAOG,CAAAA,MAAKA,EAAE0B,QAAAA,EAAUjC,IAASO,CAAAA,MAAAA,EAAE5B,KAAAA;AACxEJ,aAAKyD,MAAMtD,QAAQuE,EAAgBf,KAAK,IAAA;AAAA,MAAI,OACtC;AACA,cAAAgB,KAAQ3E,IAAAA,KAAKwB,QAAQoC,YAAU5B,EAAE7B,UAAUH,KAAKG,KAAQC,MAAhDJ,gBAAAA,EAAgDI;AACzDJ,aAAAyD,MAAMtD,QAAQwE,KAAS;AAAA,MAAA;AAAA,IAE7B,CAAA;AAAA,EAAA;AAAA,EAMF,MAAMtC,cAAAA;AACArC,SAAA4C,iBAAiBgC,gBAAgB,QAAA,GACtC5E,KAAK4C,iBAAiBS,MAAMC,YAAY,WAAW,OAAA;AAE7C,UAAAuB,EAAAA,GAAEA,MAAGC,EAAAA,IAAAA,MAAYC,EAAgB/E,KAAKyD,OAAOzD,KAAK4C,kBAAkB,EACzEoC,WAAW,gBACXC,YAAY,CAACC,EAAO,CAAIC,GAAAA,EAAAA,GAAQC,EAAM,EAAEC,SAAS,EAG3CC,CAAAA,CAAAA,EAAAA,CAAAA;AAAAA,WAAAC,OAAOvF,KAAK4C,iBAAiBS,OAAO,EAC1CmC,MAAM,GAAGX,CAAAA,MACTY,KAAK,GAAGX,CACRY,MAAAA,UAAU,YACVC,QAAQ,QACRtF,WAAWL,KAAKK,WAChBuF,WAAW,OACX,CAAA;AAAA,EAAA;AAAA,EAMF,cAAAC;;AACM7F,KAAAA,IAAAA,KAAA4C,qBAAA5C,QAAAA,EAAkB8F,aAAa,UAAU,UAC9C9F,IAAAA,KAAK4C,qBAAL5C,QAAAA,EAAuBqD,MAAMC,YAAY,WAAW;AAAA,EAAM;AAAA,EAM3D,kBAAkByC,GACjBA;AAAAA,MAAMC,eACND,GAAAA,EAAME,gBACA;AAAA,UAAA9E,IAAO4E,EAAMG,OAAO/F;AACrBH,SAAAU,YAAY8C,KAAKrC,CAAI;AAAA,EAAA;AAAA,EAO3B,kBAAkBhB,GACjB;AAAA,QAAIH,KAAKM,OAAO;AACf,YAAMoB,IAAS1B,KAAKwB,QAAQoC,KAAU5B,CAAAA,MAAAA,EAAE7B,UAAUA;AAC9CuB,MAAAA,MACIA,EAAAgC,WAAYhC,CAAAA,EAAOgC;AAGrB,YAAAyC,IAAiBnG,KAAKwB,QAAQK,OAAOG,CAAAA,MAAKA,EAAE0B,QAAUjC,EAAAA,IAASO,CAAAA,MAAAA,EAAE7B;AAClEH,WAAAG,QAAQgG,EAAexC,KAAK,GAEjC3D,GAAAA,KAAK6D,iBACA7D,GAAAA,KAAAoG,cACJ,IAAIC,YAAuD,UAAU,EACpEH,QAAQ,EAAE/F,OAAOgG,EAAAA,GACjBG,aACAC,UAAAA,GAEF,CAAA,CAAA;AAAA,IAAA,MAEAvG,MAAK6F,YAAAA,GACL7F,KAAKG,QAAQA,GACbH,KAAK6D,iBACA7D,GAAAA,KAAAoG,cACJ,IAAIC,YAAuD,UAAU,EACpEH,QAAQ,EAAE/F,OACVmG,EAAAA,GAAAA,SAAAA,IACAC,UAAAA,GAGH,CAAA,CAAA;AAAA,EAAA;AAAA,EAMM,gBACC;AAAA,WAAAvG,KAAKM,QAAQN,KAAKwB,QAAQ2C,KAAUnC,OAAAA,EAAE0B,QAAc1D,IAAAA,CAAAA,CAAAA,KAAKG;AAAAA,EAAA;AAAA,EAM1D,iBAAAqG;;AACC,YAAAxG,IAAAA,KAAKQ,SAASL,UAAdH,gBAAAA,EAAqBwG;AAAAA,EAAe;AAAA,EAUpC,iBAAiBT,GACxB/F;;AAAAA,SAAKY,WAASmF,KAAAA,IAAAA,EAAMU,YAANV,gBAAAA,EAAgB,OAAhBA,gBAAAA,EAAoBW,YAAW;AAAA,EAAA;AAAA,EAGtC,cAAcX;;AACrB,UAAMY,IAASZ,EAAMY;AACrB,QAAK3G,CAAAA,KAAK4C,iBAAiBgE,SAASD,GAAS;AAEvC,UAAAE,IAAY7G,KAAK4C,iBAAiBiE,WAGlCC,IAFe9G,KAAK4C,iBAAiBmE,eACtB/G,KAAK4C,iBAAiBoE,cAIrCC,MAAWlB,KAAAA,IAAAA,EAAMU,YAANV,gBAAAA,EAAgB,OAAhBA,gBAAAA,EAAoBW,YAAW;AAAA,KAG3CG,KAAa,KAAKI,IAAWjH,KAAKY,UAAYiG,KAAaC,KAAiBG,IAAWjH,KAAKY,WAChGmF,EAAMC,eACP;AAAA,EAAA;AAAA,EAGD,SAAAkB;AACQ,WAAAC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,QAODC,EAAIpH,KAAKQ,QAAAA,CAAAA;AAAAA,kBACCR,KAAKC,QAAAA;AAAAA;AAAAA,eAERD,KAAKI,KAAAA;AAAAA,eACLJ,KAAKqC,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oBAIArC,KAAKE,WAAAA;AAAAA,gBACTF,KAAKqH,iBAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,0BASKrH,KAAKK,SAAAA;AAAAA;AAAAA;AAAAA,cAGhBkC,OAGH;;AAAA,YAAA+E,KAAa/E,IAAAA,EAAkB2D,WAAlB3D,gBAAAA,EAA0BpC;AACzCmH,MAAAA,KACHtH,KAAKuH,kBAAkBD,CAAS;AAAA,IAAA,CAAA;AAAA,mBAGpBtH,KAAKwH,gBAAAA;AAAAA,kBACNxH,KAAKyH,aAAAA;AAAAA,OAChBC,EAAM,EACPC,SAASC,EAAcC,IAAIH,MAAMI,QAAQC,UAAAA,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,yBAQtB/H,KAAKkE,gBAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAAgB;AApZhB8D;AAAAA,EAAA,CAA5BC,EAAS,EAAEC,MAAM3D,QAJE3E,CAAAA,CAAAA,GAAAA,EAISuI,WAAA,YAAA,CAKDH,GAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAME,OAAAA,CAAAA,CAAAA,GATExI,EASQuI,WAAA,eAAA,CAAA,GAMeH,EAAA,CAA1CC,EAAS,EAAEC,MAAME,QAAQC,SAAS,GAAA,CAAA,CAAA,GAffzI,EAeuBuI,WAAA,SAAA,CAKAH,GAAAA,EAAA,CAA1CC,EAAS,EAAEC,MAAME,QAAQC,SAAAA,GApBNzI,CAAAA,CAAAA,GAAAA,EAoBuBuI,WAAA,SAAA,CAKfH,GAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAME,OAzBExI,CAAAA,CAAAA,GAAAA,EAyBQuI,WAAA,aAAA,CAKCH,GAAAA,EAAA,CAA5BC,EAAS,EAAEC,MAAM3D,aA9BE3E,EA8BSuI,WAAA,SAAA,CAAA,GAMpBH,EAAA,CAARM,EApCmB1I,CAAAA,GAAAA,EAoCXuI,WAAA,cAAA,CAQUH,GAAAA,EAAA,CAAlBO,EAAM,UA5Ca3I,CAAAA,GAAAA,EA4CDuI,WAAA,oBAAA,CAKFH,GAAAA,EAAA,CAAhBO,EAAM,QAjDa3I,CAAAA,GAAAA,EAiDHuI,WAAA,SAAA,CAKQH,GAAAA,EAAA,CAAxBO,EAAM,oBAtDa3I,EAsDKuI,WAAA,SAAA,CAAA,GAMzBH,EAAA,CADCQ,EAAsB,EAAEC,SAAS,GAAA,CAAA,CAAA,GA3Dd7I,EA4DpBuI,WAAA,WAAA,CAAA,GAiOAH,EAAA,CADCU,EAAa,EAAEC,SAAS,GAAA,CAAA,CAAA,GA5RL/I,EA6RpBuI,WAAA,qBAAA,CAAA,GA7RoBvI,IAArBoI,EAAA,CADCY,EAAc,uBACMhJ,CAAAA,GAAAA,CAAAA;","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- "use strict";const V=require("@floating-ui/dom"),I=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const Y=require("./litElement.mixin-BGFFSTo6.cjs");require("./tailwind.mixin-bRVZL2lY.cjs");const j=require("./ripple-C2BHbhcS.cjs"),L=require("./theme.interface-Xg5Zi46a.cjs"),M=require("lit"),u=require("lit/decorators.js"),H=require("lit/directives/ref.js"),$=require("rxjs/operators"),C=new Uint32Array(65536),U=(t,e)=>{if(t.length<e.length){const i=e;e=t,t=i}return e.length===0?t.length:t.length<=32?((i,o)=>{const r=i.length,l=o.length,a=1<<r-1;let p=-1,f=0,S=r,h=r;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<l;h++){let g=C[o.charCodeAt(h)];const v=g|f;g|=(g&p)+p^p,f|=~(g|p),p&=g,f&a&&S++,p&a&&S--,f=f<<1|1,p=p<<1|~(v|f),f&=v}for(h=r;h--;)C[i.charCodeAt(h)]=0;return S})(t,e):((i,o)=>{const r=o.length,l=i.length,a=[],p=[],f=Math.ceil(r/32),S=Math.ceil(l/32);for(let s=0;s<f;s++)p[s]=-1,a[s]=0;let h=0;for(;h<S-1;h++){let s=0,m=-1;const q=32*h,w=Math.min(32,l)+q;for(let n=q;n<w;n++)C[i.charCodeAt(n)]|=1<<n;for(let n=0;n<r;n++){const x=C[o.charCodeAt(n)],b=p[n/32|0]>>>n&1,y=a[n/32|0]>>>n&1,T=x|s,D=((x|y)&m)+m^m|x|y;let A=s|~(D|m),k=m&D;A>>>31^b&&(p[n/32|0]^=1<<n),k>>>31^y&&(a[n/32|0]^=1<<n),A=A<<1|b,k=k<<1|y,m=k|~(T|A),s=A&T}for(let n=q;n<w;n++)C[i.charCodeAt(n)]=0}let g=0,v=-1;const O=32*h,P=Math.min(32,l-O)+O;for(let s=O;s<P;s++)C[i.charCodeAt(s)]|=1<<s;let E=l;for(let s=0;s<r;s++){const m=C[o.charCodeAt(s)],q=p[s/32|0]>>>s&1,w=a[s/32|0]>>>s&1,n=m|g,x=((m|w)&v)+v^v|m|w;let b=g|~(x|v),y=v&x;E+=b>>>l-1&1,E-=y>>>l-1&1,b>>>31^q&&(p[s/32|0]^=1<<s),y>>>31^w&&(a[s/32|0]^=1<<s),b=b<<1|q,y=y<<1|w,v=y|~(n|b),g=b&n}for(let s=O;s<P;s++)C[i.charCodeAt(s)]=0;return E})(t,e)};var z=Object.defineProperty,F=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var r,l=o>1?void 0:o?F(e,i):e,a=t.length-1;a>=0;a--)(r=t[a])&&(l=(o?r(e,i,l):r(l))||l);return o&&l&&z(e,i,l),l};let c=class extends Y.$LitElement(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}"){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.valueLabel="",this.inputRef=H.createRef(),this.searchTerm$=new I.Subject,this.startY=0}connectedCallback(){super.connectedCallback(),this.searchTerm$.pipe($.takeUntil(this.disconnecting),$.distinctUntilChanged(),$.tap(t=>{const e=t.trim().toLowerCase(),i=this.options.map(o=>{const r=o.label.toLowerCase();return{option:o,levDistance:U(e,r)}}).filter(({option:o,levDistance:r})=>e.length<3||r<=o.label.toLowerCase().length-e.length).sort((o,r)=>o.levDistance-r.levDistance);this.options.forEach(o=>o.hidden=!0);for(const{option:o}of i)o.hidden=!1;this.empty.hidden=i.length>0,this.requestUpdate()})).subscribe(()=>{this.showOptions()}),I.fromEvent(this,"focusout").pipe($.takeUntil(this.disconnecting),$.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),$.switchMap(()=>{const t=this.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:250,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"}),e=new Promise(i=>{t.onfinish=()=>{this.optionsContainer.style.setProperty("display","none"),this.optionsContainer.style.setProperty("opacity","1"),i()}});return I.from(e)})).subscribe({next:()=>{var t;this.multi?this.input.value=this.options.filter(e=>e.selected).map(e=>e.label).join(", "):this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue()}syncSelectionFromValue(){if(this.multi){const t=this.value.split(",").map(e=>e.trim()).filter(Boolean);this.options.forEach(e=>{e.selected=t.includes(e.value)})}else this.options.forEach(t=>{t.selected=t.value===this.value})}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else{const e=(t=this.options.find(i=>i.value===this.value))==null?void 0:t.label;this.input.value=e??""}})}async showOptions(){this.optionsContainer.removeAttribute("hidden"),this.optionsContainer.style.setProperty("display","block");const{x:t,y:e}=await V.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[V.offset(5),V.flip(),V.shift({padding:5})]});Object.assign(this.optionsContainer.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",maxHeight:this.maxHeight,overflowY:"auto"})}hideOptions(){var t,e;(t=this.optionsContainer)==null||t.setAttribute("hidden","true"),(e=this.optionsContainer)==null||e.style.setProperty("display","none")}handleInputChange(t){t.preventDefault(),t.stopPropagation();const e=t.detail.value;this.searchTerm$.next(e)}handleOptionClick(t){if(this.multi){const e=this.options.find(o=>o.value===t);e&&(e.selected=!e.selected);const i=this.options.filter(o=>o.selected).map(o=>o.value);this.value=i.join(","),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:i},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}handleTouchStart(t){var e,i;this.startY=((i=(e=t.touches)==null?void 0:e[0])==null?void 0:i.clientY)??0}preventScroll(t){var l,a;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,r=((a=(l=t.touches)==null?void 0:l[0])==null?void 0:a.clientY)??0;(i<=0&&r>this.startY||i>=o&&r<this.startY)&&t.preventDefault()}render(){return M.html`
1
+ "use strict";const V=require("@floating-ui/dom"),I=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const Y=require("./litElement.mixin-Cw40wOLl.cjs");require("./tailwind.mixin-mhYVlkxs.cjs");const j=require("./ripple-C2BHbhcS.cjs"),L=require("./theme.interface-Xg5Zi46a.cjs"),M=require("lit"),u=require("lit/decorators.js"),H=require("lit/directives/ref.js"),$=require("rxjs/operators"),C=new Uint32Array(65536),U=(t,e)=>{if(t.length<e.length){const i=e;e=t,t=i}return e.length===0?t.length:t.length<=32?((i,o)=>{const r=i.length,l=o.length,a=1<<r-1;let p=-1,f=0,S=r,h=r;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<l;h++){let g=C[o.charCodeAt(h)];const v=g|f;g|=(g&p)+p^p,f|=~(g|p),p&=g,f&a&&S++,p&a&&S--,f=f<<1|1,p=p<<1|~(v|f),f&=v}for(h=r;h--;)C[i.charCodeAt(h)]=0;return S})(t,e):((i,o)=>{const r=o.length,l=i.length,a=[],p=[],f=Math.ceil(r/32),S=Math.ceil(l/32);for(let s=0;s<f;s++)p[s]=-1,a[s]=0;let h=0;for(;h<S-1;h++){let s=0,m=-1;const q=32*h,w=Math.min(32,l)+q;for(let n=q;n<w;n++)C[i.charCodeAt(n)]|=1<<n;for(let n=0;n<r;n++){const x=C[o.charCodeAt(n)],b=p[n/32|0]>>>n&1,y=a[n/32|0]>>>n&1,T=x|s,D=((x|y)&m)+m^m|x|y;let A=s|~(D|m),k=m&D;A>>>31^b&&(p[n/32|0]^=1<<n),k>>>31^y&&(a[n/32|0]^=1<<n),A=A<<1|b,k=k<<1|y,m=k|~(T|A),s=A&T}for(let n=q;n<w;n++)C[i.charCodeAt(n)]=0}let g=0,v=-1;const O=32*h,P=Math.min(32,l-O)+O;for(let s=O;s<P;s++)C[i.charCodeAt(s)]|=1<<s;let E=l;for(let s=0;s<r;s++){const m=C[o.charCodeAt(s)],q=p[s/32|0]>>>s&1,w=a[s/32|0]>>>s&1,n=m|g,x=((m|w)&v)+v^v|m|w;let b=g|~(x|v),y=v&x;E+=b>>>l-1&1,E-=y>>>l-1&1,b>>>31^q&&(p[s/32|0]^=1<<s),y>>>31^w&&(a[s/32|0]^=1<<s),b=b<<1|q,y=y<<1|w,v=y|~(n|b),g=b&n}for(let s=O;s<P;s++)C[i.charCodeAt(s)]=0;return E})(t,e)};var z=Object.defineProperty,F=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var r,l=o>1?void 0:o?F(e,i):e,a=t.length-1;a>=0;a--)(r=t[a])&&(l=(o?r(e,i,l):r(l))||l);return o&&l&&z(e,i,l),l};let c=class extends Y.$LitElement(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}"){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.valueLabel="",this.inputRef=H.createRef(),this.searchTerm$=new I.Subject,this.startY=0}connectedCallback(){super.connectedCallback(),this.searchTerm$.pipe($.takeUntil(this.disconnecting),$.distinctUntilChanged(),$.tap(t=>{const e=t.trim().toLowerCase(),i=this.options.map(o=>{const r=o.label.toLowerCase();return{option:o,levDistance:U(e,r)}}).filter(({option:o,levDistance:r})=>e.length<3||r<=o.label.toLowerCase().length-e.length).sort((o,r)=>o.levDistance-r.levDistance);this.options.forEach(o=>o.hidden=!0);for(const{option:o}of i)o.hidden=!1;this.empty.hidden=i.length>0,this.requestUpdate()})).subscribe(()=>{this.showOptions()}),I.fromEvent(this,"focusout").pipe($.takeUntil(this.disconnecting),$.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),$.switchMap(()=>{const t=this.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:250,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"}),e=new Promise(i=>{t.onfinish=()=>{this.optionsContainer.style.setProperty("display","none"),this.optionsContainer.style.setProperty("opacity","1"),i()}});return I.from(e)})).subscribe({next:()=>{var t;this.multi?this.input.value=this.options.filter(e=>e.selected).map(e=>e.label).join(", "):this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue()}syncSelectionFromValue(){if(this.multi){const t=this.value.split(",").map(e=>e.trim()).filter(Boolean);this.options.forEach(e=>{e.selected=t.includes(e.value)})}else this.options.forEach(t=>{t.selected=t.value===this.value})}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else{const e=(t=this.options.find(i=>i.value===this.value))==null?void 0:t.label;this.input.value=e??""}})}async showOptions(){this.optionsContainer.removeAttribute("hidden"),this.optionsContainer.style.setProperty("display","block");const{x:t,y:e}=await V.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[V.offset(5),V.flip(),V.shift({padding:5})]});Object.assign(this.optionsContainer.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",maxHeight:this.maxHeight,overflowY:"auto"})}hideOptions(){var t,e;(t=this.optionsContainer)==null||t.setAttribute("hidden","true"),(e=this.optionsContainer)==null||e.style.setProperty("display","none")}handleInputChange(t){t.preventDefault(),t.stopPropagation();const e=t.detail.value;this.searchTerm$.next(e)}handleOptionClick(t){if(this.multi){const e=this.options.find(o=>o.value===t);e&&(e.selected=!e.selected);const i=this.options.filter(o=>o.selected).map(o=>o.value);this.value=i.join(","),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:i},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}handleTouchStart(t){var e,i;this.startY=((i=(e=t.touches)==null?void 0:e[0])==null?void 0:i.clientY)??0}preventScroll(t){var l,a;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,r=((a=(l=t.touches)==null?void 0:l[0])==null?void 0:a.clientY)??0;(i<=0&&r>this.startY||i>=o&&r<this.startY)&&t.preventDefault()}render(){return M.html`
2
2
  <div class="relative">
3
3
  <!-- If there's no external trigger slot, fall back to a schmancy-input -->
4
4
  <slot name="trigger">
@@ -40,4 +40,4 @@
40
40
  </ul>
41
41
  </div>
42
42
  `}};d([u.property({type:Boolean})],c.prototype,"required",2),d([u.property({type:String})],c.prototype,"placeholder",2),d([u.property({type:String,reflect:!0})],c.prototype,"value",2),d([u.property({type:String,reflect:!0})],c.prototype,"label",2),d([u.property({type:String})],c.prototype,"maxHeight",2),d([u.property({type:Boolean})],c.prototype,"multi",2),d([u.state()],c.prototype,"valueLabel",2),d([u.query("#options")],c.prototype,"optionsContainer",2),d([u.query("#empty")],c.prototype,"empty",2),d([u.query("schmancy-input")],c.prototype,"input",2),d([u.queryAssignedElements({flatten:!0})],c.prototype,"options",2),d([u.eventOptions({passive:!0})],c.prototype,"handleOptionClick",1),c=d([u.customElement("schmancy-autocomplete")],c);
43
- //# sourceMappingURL=autocomplete-B0fc_Nh_.cjs.map
43
+ //# sourceMappingURL=autocomplete-U3vu-siT.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-B0fc_Nh_.cjs","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport type { SchmancyInputChangeEvent } from '..'\nimport style from './autocomplete.scss?inline'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t/**\n\t * Whether input is required for form validity.\n\t */\n\t@property({ type: Boolean }) required = false\n\n\t/**\n\t * Placeholder text for the input.\n\t */\n\t@property({ type: String }) placeholder = ''\n\n\t/**\n\t * Programmatic value of the autocomplete. Setting this\n\t * after the element is rendered will now update the display.\n\t */\n\t@property({ type: String, reflect: true }) value = ''\n\n\t/**\n\t * Label for the input (floating label or similar).\n\t */\n\t@property({ type: String, reflect: true }) label = ''\n\n\t/**\n\t * Max height of the dropdown options container.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\n\t/**\n\t * Whether multiple selections are allowed.\n\t */\n\t@property({ type: Boolean }) multi = false\n\n\t/**\n\t * A local property to store the *display* value (label text).\n\t * This is separate from the raw `value`.\n\t */\n\t@state() valueLabel = ''\n\n\t// Refs and queries\n\tinputRef = createRef<HTMLInputElement>()\n\n\t/**\n\t * The main <ul> with id=\"options\".\n\t */\n\t@query('#options') optionsContainer!: HTMLUListElement\n\n\t/**\n\t * The \"no results found\" <li> element.\n\t */\n\t@query('#empty') empty!: HTMLLIElement\n\n\t/**\n\t * The SchmancyInput element (your visible text input).\n\t */\n\t@query('schmancy-input') input!: SchmancyInput\n\n\t/**\n\t * All the <schmancy-option> children assigned via the default slot.\n\t */\n\t@queryAssignedElements({ flatten: true })\n\toptions!: SchmancyOption[]\n\n\t// Reactive search term stream\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t/**\n\t\t * Whenever user types in the schmancy-input, we do\n\t\t * fuzzy or distance-based filtering of the child <schmancy-option> elements.\n\t\t */\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// The \"levenshtein-ish\" filtering\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t({ option, levDistance }) =>\n\t\t\t\t\t\t\t\t// if short searchTerm, be lenient\n\t\t\t\t\t\t\t\tsearchTerm.length < 3 ||\n\t\t\t\t\t\t\t\t// otherwise, filter by distance\n\t\t\t\t\t\t\t\tlevDistance <= option.label.toLowerCase().length - searchTerm.length,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t// sort by ascending distance\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide appropriate options\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show/hide the \"no results found\" <li>\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t/**\n\t\t * If the user focuses out of the entire component (and\n\t\t * not just stepping from one <schmancy-option> to another),\n\t\t * animate out the dropdown, then hide it.\n\t\t */\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t// Make sure the newly focused element is *not* one of our <schmancy-option>s\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// Animate the <ul> out\n\t\t\t\t\tconst animation = this.optionsContainer.animate(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{ opacity: 1 }, // from\n\t\t\t\t\t\t\t{ opacity: 0 }, // to\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// Convert onfinish to a Promise\n\t\t\t\t\tconst animationPromise = new Promise<void>(resolve => {\n\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('display', 'none')\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('opacity', '1')\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(animationPromise)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Once animation completes\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\t// Make sure the input displays the selected labels\n\t\t\t\t\t\tthis.input.value = this.options\n\t\t\t\t\t\t\t.filter(o => o.selected)\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\t/**\n\t * firstUpdated (similar to componentDidMount in React).\n\t * We can do an initial sync of the input's display text\n\t * if a `value` was pre-set.\n\t */\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * This will be invoked *any time* a reactive property changes\n\t * after the first render. We specifically check if `value` changed,\n\t * so we can update the display text (and selected states) if needed.\n\t */\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('value')) {\n\t\t\t// If value changed, update the input display text + selected states\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * If user assigned new <schmancy-option> children, or changed them,\n\t * we also want to ensure the \"no results\" is correct and that\n\t * our input text is still in sync.\n\t */\n\tprivate handleSlotChange() {\n\t\t// Hide 'empty' if at least one option is visible\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\t// Also do a fresh fill of the input\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * For multi-select, ensure that any `value` strings\n\t * are reflected in the child <schmancy-option>'s `selected` property.\n\t * For single select, do similarly for the one matching option.\n\t */\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Takes the current `value` (and child <schmancy-option>s) and updates\n\t * the displayed text in the schmancy-input. Called whenever we need\n\t * to re-sync the visible input text to the actual data.\n\t */\n\tupdateInputValue() {\n\t\t// We do this in a rAF to avoid any weird timing issues\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selectedOptions = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selectedOptions.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Show the dropdown list, using Floating UI for positioning.\n\t */\n\tasync showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.setProperty('display', 'block')\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\tmaxHeight: this.maxHeight,\n\t\t\toverflowY: 'auto',\n\t\t})\n\t}\n\n\t/**\n\t * Hide the dropdown immediately (no animation).\n\t */\n\thideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tthis.optionsContainer?.style.setProperty('display', 'none')\n\t}\n\n\t/**\n\t * Called whenever the user types in the schmancy-input.\n\t */\n\thandleInputChange(event: SchmancyInputChangeEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t/**\n\t * Called whenever user clicks or taps an <schmancy-option>.\n\t */\n\t@eventOptions({ passive: true })\n\thandleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) {\n\t\t\t\toption.selected = !option.selected\n\t\t\t}\n\t\t\t// Rebuild the .value from the selected items\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\t// Update display text, dispatch \"change\"\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Check validity of the selected value(s) to satisfy forms.\n\t */\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : !!this.value\n\t}\n\n\t/**\n\t * Actually cause form validation checks if needed.\n\t */\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\t/**\n\t * Attempt to prevent iOS scrolling the background page\n\t * while swiping within the options list. (NB: This logic\n\t * currently needs a bit more nuance to be robust.)\n\t */\n\tprivate startY = 0\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\t// Current touch Y\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\n\t\t// If user is at top and swiping down, or at bottom and swiping up, block\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- If there's no external trigger slot, fall back to a schmancy-input -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t@focus=${this.showOptions}\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\tstyle=\"max-height: ${this.maxHeight}\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// We rely on each <schmancy-option> dispatching a CustomEvent with detail.value\n\t\t\t\t\t\t// Or you can re-check e.target as <schmancy-option> and retrieve its value\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionClick(detailVal)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<!-- Default slot with the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","super","arguments","this","required","placeholder","value","label","maxHeight","multi","valueLabel","inputRef","createRef","searchTerm$","Subject","startY","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","animationPromise","Promise","resolve","onfinish","style","setProperty","from","next","input","selected","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","handleSlotChange","some","values","split","v","Boolean","includes","requestAnimationFrame","selectedOptions","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","zIndex","overflowY","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","hideOptions","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","__decorateClass","property","type","prototype","String","reflect","state","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"autocomplete-U3vu-siT.cjs","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport type { SchmancyInputChangeEvent } from '..'\nimport style from './autocomplete.scss?inline'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t/**\n\t * Whether input is required for form validity.\n\t */\n\t@property({ type: Boolean }) required = false\n\n\t/**\n\t * Placeholder text for the input.\n\t */\n\t@property({ type: String }) placeholder = ''\n\n\t/**\n\t * Programmatic value of the autocomplete. Setting this\n\t * after the element is rendered will now update the display.\n\t */\n\t@property({ type: String, reflect: true }) value = ''\n\n\t/**\n\t * Label for the input (floating label or similar).\n\t */\n\t@property({ type: String, reflect: true }) label = ''\n\n\t/**\n\t * Max height of the dropdown options container.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\n\t/**\n\t * Whether multiple selections are allowed.\n\t */\n\t@property({ type: Boolean }) multi = false\n\n\t/**\n\t * A local property to store the *display* value (label text).\n\t * This is separate from the raw `value`.\n\t */\n\t@state() valueLabel = ''\n\n\t// Refs and queries\n\tinputRef = createRef<HTMLInputElement>()\n\n\t/**\n\t * The main <ul> with id=\"options\".\n\t */\n\t@query('#options') optionsContainer!: HTMLUListElement\n\n\t/**\n\t * The \"no results found\" <li> element.\n\t */\n\t@query('#empty') empty!: HTMLLIElement\n\n\t/**\n\t * The SchmancyInput element (your visible text input).\n\t */\n\t@query('schmancy-input') input!: SchmancyInput\n\n\t/**\n\t * All the <schmancy-option> children assigned via the default slot.\n\t */\n\t@queryAssignedElements({ flatten: true })\n\toptions!: SchmancyOption[]\n\n\t// Reactive search term stream\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t/**\n\t\t * Whenever user types in the schmancy-input, we do\n\t\t * fuzzy or distance-based filtering of the child <schmancy-option> elements.\n\t\t */\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// The \"levenshtein-ish\" filtering\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t({ option, levDistance }) =>\n\t\t\t\t\t\t\t\t// if short searchTerm, be lenient\n\t\t\t\t\t\t\t\tsearchTerm.length < 3 ||\n\t\t\t\t\t\t\t\t// otherwise, filter by distance\n\t\t\t\t\t\t\t\tlevDistance <= option.label.toLowerCase().length - searchTerm.length,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t// sort by ascending distance\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide appropriate options\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show/hide the \"no results found\" <li>\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t/**\n\t\t * If the user focuses out of the entire component (and\n\t\t * not just stepping from one <schmancy-option> to another),\n\t\t * animate out the dropdown, then hide it.\n\t\t */\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t// Make sure the newly focused element is *not* one of our <schmancy-option>s\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// Animate the <ul> out\n\t\t\t\t\tconst animation = this.optionsContainer.animate(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{ opacity: 1 }, // from\n\t\t\t\t\t\t\t{ opacity: 0 }, // to\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// Convert onfinish to a Promise\n\t\t\t\t\tconst animationPromise = new Promise<void>(resolve => {\n\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('display', 'none')\n\t\t\t\t\t\t\tthis.optionsContainer.style.setProperty('opacity', '1')\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(animationPromise)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Once animation completes\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\t// Make sure the input displays the selected labels\n\t\t\t\t\t\tthis.input.value = this.options\n\t\t\t\t\t\t\t.filter(o => o.selected)\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\t/**\n\t * firstUpdated (similar to componentDidMount in React).\n\t * We can do an initial sync of the input's display text\n\t * if a `value` was pre-set.\n\t */\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * This will be invoked *any time* a reactive property changes\n\t * after the first render. We specifically check if `value` changed,\n\t * so we can update the display text (and selected states) if needed.\n\t */\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('value')) {\n\t\t\t// If value changed, update the input display text + selected states\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * If user assigned new <schmancy-option> children, or changed them,\n\t * we also want to ensure the \"no results\" is correct and that\n\t * our input text is still in sync.\n\t */\n\tprivate handleSlotChange() {\n\t\t// Hide 'empty' if at least one option is visible\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\t// Also do a fresh fill of the input\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t}\n\n\t/**\n\t * For multi-select, ensure that any `value` strings\n\t * are reflected in the child <schmancy-option>'s `selected` property.\n\t * For single select, do similarly for the one matching option.\n\t */\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Takes the current `value` (and child <schmancy-option>s) and updates\n\t * the displayed text in the schmancy-input. Called whenever we need\n\t * to re-sync the visible input text to the actual data.\n\t */\n\tupdateInputValue() {\n\t\t// We do this in a rAF to avoid any weird timing issues\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selectedOptions = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selectedOptions.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Show the dropdown list, using Floating UI for positioning.\n\t */\n\tasync showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.setProperty('display', 'block')\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\tmaxHeight: this.maxHeight,\n\t\t\toverflowY: 'auto',\n\t\t})\n\t}\n\n\t/**\n\t * Hide the dropdown immediately (no animation).\n\t */\n\thideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tthis.optionsContainer?.style.setProperty('display', 'none')\n\t}\n\n\t/**\n\t * Called whenever the user types in the schmancy-input.\n\t */\n\thandleInputChange(event: SchmancyInputChangeEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t/**\n\t * Called whenever user clicks or taps an <schmancy-option>.\n\t */\n\t@eventOptions({ passive: true })\n\thandleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) {\n\t\t\t\toption.selected = !option.selected\n\t\t\t}\n\t\t\t// Rebuild the .value from the selected items\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\t// Update display text, dispatch \"change\"\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Check validity of the selected value(s) to satisfy forms.\n\t */\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : !!this.value\n\t}\n\n\t/**\n\t * Actually cause form validation checks if needed.\n\t */\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\t/**\n\t * Attempt to prevent iOS scrolling the background page\n\t * while swiping within the options list. (NB: This logic\n\t * currently needs a bit more nuance to be robust.)\n\t */\n\tprivate startY = 0\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\t// Current touch Y\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\n\t\t// If user is at top and swiping down, or at bottom and swiping up, block\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- If there's no external trigger slot, fall back to a schmancy-input -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t@focus=${this.showOptions}\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\tstyle=\"max-height: ${this.maxHeight}\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// We rely on each <schmancy-option> dispatching a CustomEvent with detail.value\n\t\t\t\t\t\t// Or you can re-check e.target as <schmancy-option> and retrieve its value\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionClick(detailVal)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<!-- Default slot with the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","super","arguments","this","required","placeholder","value","label","maxHeight","multi","valueLabel","inputRef","createRef","searchTerm$","Subject","startY","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","animationPromise","Promise","resolve","onfinish","style","setProperty","from","next","input","selected","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","handleSlotChange","some","values","split","v","Boolean","includes","requestAnimationFrame","selectedOptions","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","zIndex","overflowY","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","hideOptions","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","__decorateClass","property","type","prototype","String","reflect","state","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";require("./autocomplete-B0fc_Nh_.cjs");
1
+ "use strict";require("./autocomplete-U3vu-siT.cjs");
2
2
  //# sourceMappingURL=autocomplete.cjs.map
@@ -1,2 +1,2 @@
1
- import "./autocomplete-cGKAFBi1.js";
1
+ import "./autocomplete-BUOnKDbI.js";
2
2
  //# sourceMappingURL=autocomplete.js.map
package/dist/busy.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";require("./spinner-vK7ZLqSI.cjs");
1
+ "use strict";require("./spinner-BJ5VG2fV.cjs");
2
2
  //# sourceMappingURL=busy.cjs.map
package/dist/busy.js CHANGED
@@ -1,2 +1,2 @@
1
- import "./spinner-Qncx6I22.js";
1
+ import "./spinner-_aBya_Qc.js";
2
2
  //# sourceMappingURL=busy.js.map
package/dist/button.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./icon-button-BnakhpuT.cjs");Object.defineProperty(exports,"SchmnacyButton",{enumerable:!0,get:()=>e.SchmnacyButton}),Object.defineProperty(exports,"SchmnacyIconButton",{enumerable:!0,get:()=>e.SchmnacyIconButton});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./icon-button-BXlgRBET.cjs");Object.defineProperty(exports,"SchmnacyButton",{enumerable:!0,get:()=>e.SchmnacyButton}),Object.defineProperty(exports,"SchmnacyIconButton",{enumerable:!0,get:()=>e.SchmnacyIconButton});
2
2
  //# sourceMappingURL=button.cjs.map
package/dist/button.js CHANGED
@@ -1,4 +1,4 @@
1
- import { S as n, a as o } from "./icon-button-DX3Zm-2u.js";
1
+ import { S as n, a as o } from "./icon-button-yOFOGX0Y.js";
2
2
  export {
3
3
  n as SchmnacyButton,
4
4
  o as SchmnacyIconButton
package/dist/card.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";require("./teleport.component-90QAnife.cjs");
1
+ "use strict";require("./teleport.component-MYrtD0Li.cjs");
2
2
  //# sourceMappingURL=card.cjs.map
package/dist/card.js CHANGED
@@ -1,2 +1,2 @@
1
- import "./teleport.component-CMZW0HoW.js";
1
+ import "./teleport.component-SInaGefV.js";
2
2
  //# sourceMappingURL=card.js.map
@@ -4,7 +4,7 @@ import { isServer as I, LitElement as q, html as $, nothing as y, css as U } fro
4
4
  import { classMap as D } from "lit/directives/class-map.js";
5
5
  import "rxjs";
6
6
  import "lit/directives/style-map.js";
7
- import { T as F } from "./tailwind.mixin-jeUK-Doz.js";
7
+ import { T as F } from "./tailwind.mixin-wwBoa4Jw.js";
8
8
  function T(i) {
9
9
  return i.currentTarget === i.target && i.composedPath()[0] === i.target && !i.target.disabled && !function(e) {
10
10
  const t = g;
@@ -233,4 +233,4 @@ l.shadowRootOptions = { ...q.shadowRootOptions, delegatesFocus: !0 }, l.formAsso
233
233
  export {
234
234
  l as S
235
235
  };
236
- //# sourceMappingURL=checkbox-D9M3J9G8.js.map
236
+ //# sourceMappingURL=checkbox-BWaWg2Gm.js.map