@mhmo91/schmancy 0.4.91 → 0.4.93

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 (383) hide show
  1. package/ai/area.md +181 -968
  2. package/dist/ai/area.md +181 -968
  3. package/dist/{animated-text-xlSXYbRY.cjs → animated-text-Dqrad7cv.cjs} +2 -2
  4. package/dist/{animated-text-xlSXYbRY.cjs.map → animated-text-Dqrad7cv.cjs.map} +1 -1
  5. package/dist/{animated-text-CE25uxIq.js → animated-text-mNos9Gw8.js} +3 -3
  6. package/dist/{animated-text-CE25uxIq.js.map → animated-text-mNos9Gw8.js.map} +1 -1
  7. package/dist/animated-text.cjs +1 -1
  8. package/dist/animated-text.js +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/area.js +1 -1
  11. package/dist/{autocomplete-BrcVARei.js → autocomplete-CMxXFeC_.js} +35 -35
  12. package/dist/autocomplete-CMxXFeC_.js.map +1 -0
  13. package/dist/{autocomplete-BJKuzyUg.cjs → autocomplete-CzYbBt-K.cjs} +6 -6
  14. package/dist/autocomplete-CzYbBt-K.cjs.map +1 -0
  15. package/dist/autocomplete.cjs +1 -1
  16. package/dist/autocomplete.js +1 -1
  17. package/dist/{avatar-CH6xAiaz.cjs → avatar-CGGPvamo.cjs} +21 -69
  18. package/dist/avatar-CGGPvamo.cjs.map +1 -0
  19. package/dist/{avatar-2XjX7xHh.js → avatar-CH-EctMv.js} +156 -203
  20. package/dist/avatar-CH-EctMv.js.map +1 -0
  21. package/dist/badge.cjs +1 -1
  22. package/dist/badge.js +1 -1
  23. package/dist/{boat-pedGlD9G.cjs → boat-feSRWu7P.cjs} +2 -2
  24. package/dist/{boat-pedGlD9G.cjs.map → boat-feSRWu7P.cjs.map} +1 -1
  25. package/dist/{boat-DjkboEvz.js → boat-xekVVZab.js} +2 -2
  26. package/dist/{boat-DjkboEvz.js.map → boat-xekVVZab.js.map} +1 -1
  27. package/dist/boat.cjs +1 -1
  28. package/dist/boat.js +1 -1
  29. package/dist/busy.cjs +1 -1
  30. package/dist/busy.js +1 -1
  31. package/dist/button.cjs +1 -1
  32. package/dist/button.js +1 -1
  33. package/dist/card.cjs +1 -1
  34. package/dist/card.js +1 -1
  35. package/dist/{checkbox-tC2o2KPO.js → checkbox-DTfIF2XH.js} +2 -2
  36. package/dist/{checkbox-tC2o2KPO.js.map → checkbox-DTfIF2XH.js.map} +1 -1
  37. package/dist/{checkbox-BFsHGpGO.cjs → checkbox-DwBANLb6.cjs} +2 -2
  38. package/dist/{checkbox-BFsHGpGO.cjs.map → checkbox-DwBANLb6.cjs.map} +1 -1
  39. package/dist/checkbox.cjs +1 -1
  40. package/dist/checkbox.js +1 -1
  41. package/dist/{chips-CaQfMLUC.js → chips-7TbOS1By.js} +56 -67
  42. package/dist/{chips-CaQfMLUC.js.map → chips-7TbOS1By.js.map} +1 -1
  43. package/dist/{chips-BUDd-Se_.cjs → chips-DORDPg5b.cjs} +10 -21
  44. package/dist/{chips-BUDd-Se_.cjs.map → chips-DORDPg5b.cjs.map} +1 -1
  45. package/dist/chips.cjs +1 -1
  46. package/dist/chips.js +1 -1
  47. package/dist/code-highlight.cjs +1 -1
  48. package/dist/code-highlight.js +1 -1
  49. package/dist/{code-preview-dFXCzXKx.js → code-preview-DWDE2pUe.js} +2 -2
  50. package/dist/{code-preview-dFXCzXKx.js.map → code-preview-DWDE2pUe.js.map} +1 -1
  51. package/dist/{code-preview-DpoxEUM7.cjs → code-preview-DqFuxCjV.cjs} +2 -2
  52. package/dist/{code-preview-DpoxEUM7.cjs.map → code-preview-DqFuxCjV.cjs.map} +1 -1
  53. package/dist/components.cjs +1 -1
  54. package/dist/components.js +1 -1
  55. package/dist/content-drawer.cjs +1 -1
  56. package/dist/content-drawer.js +1 -1
  57. package/dist/{date-range-BMlo50YP.cjs → date-range-DwdO0vNv.cjs} +2 -2
  58. package/dist/{date-range-BMlo50YP.cjs.map → date-range-DwdO0vNv.cjs.map} +1 -1
  59. package/dist/{date-range-inline-FIDbZiar.cjs → date-range-inline-B1WaAPY6.cjs} +2 -2
  60. package/dist/{date-range-inline-FIDbZiar.cjs.map → date-range-inline-B1WaAPY6.cjs.map} +1 -1
  61. package/dist/{date-range-inline-BX0qnRUj.js → date-range-inline-yYh4Uw-k.js} +3 -3
  62. package/dist/{date-range-inline-BX0qnRUj.js.map → date-range-inline-yYh4Uw-k.js.map} +1 -1
  63. package/dist/date-range-inline.cjs +1 -1
  64. package/dist/date-range-inline.js +1 -1
  65. package/dist/{date-range-DDr3pL_X.js → date-range-s2EHTGQM.js} +4 -4
  66. package/dist/{date-range-DDr3pL_X.js.map → date-range-s2EHTGQM.js.map} +1 -1
  67. package/dist/date-range.cjs +1 -1
  68. package/dist/date-range.js +1 -1
  69. package/dist/{delay-CGWe8yFV.js → delay-D19Mpit_.js} +2 -2
  70. package/dist/{delay-CGWe8yFV.js.map → delay-D19Mpit_.js.map} +1 -1
  71. package/dist/{delay-xtpIck-Z.cjs → delay-l2gPaJoH.cjs} +2 -2
  72. package/dist/{delay-xtpIck-Z.cjs.map → delay-l2gPaJoH.cjs.map} +1 -1
  73. package/dist/delay.cjs +1 -1
  74. package/dist/delay.js +1 -1
  75. package/dist/{details-DcxMoj1H.js → details-CEu4oDP7.js} +2 -2
  76. package/dist/{details-DcxMoj1H.js.map → details-CEu4oDP7.js.map} +1 -1
  77. package/dist/{details-4QmeW0uP.cjs → details-LNuoItTO.cjs} +2 -2
  78. package/dist/{details-4QmeW0uP.cjs.map → details-LNuoItTO.cjs.map} +1 -1
  79. package/dist/details.cjs +1 -1
  80. package/dist/details.js +1 -1
  81. package/dist/{dialog-content-CusT_84B.cjs → dialog-content-6wVlm9RL.cjs} +2 -2
  82. package/dist/{dialog-content-CusT_84B.cjs.map → dialog-content-6wVlm9RL.cjs.map} +1 -1
  83. package/dist/{dialog-content-BfaVybIp.js → dialog-content-CQ3Xi4_b.js} +4 -4
  84. package/dist/{dialog-content-BfaVybIp.js.map → dialog-content-CQ3Xi4_b.js.map} +1 -1
  85. package/dist/dialog-service-CgJH8clD.cjs +2 -0
  86. package/dist/dialog-service-CgJH8clD.cjs.map +1 -0
  87. package/dist/{dialog-service-DwhuICgc.js → dialog-service-PQ9ssbsY.js} +53 -47
  88. package/dist/dialog-service-PQ9ssbsY.js.map +1 -0
  89. package/dist/dialog.cjs +1 -1
  90. package/dist/dialog.js +2 -2
  91. package/dist/directives.cjs +1 -1
  92. package/dist/directives.js +6 -4
  93. package/dist/directives.js.map +1 -1
  94. package/dist/divider-5OCZNBJ7.js +22 -0
  95. package/dist/divider-5OCZNBJ7.js.map +1 -0
  96. package/dist/divider-auzbAyaR.cjs +2 -0
  97. package/dist/divider-auzbAyaR.cjs.map +1 -0
  98. package/dist/divider.cjs +1 -1
  99. package/dist/divider.js +1 -1
  100. package/dist/{dropdown-content-CDAX41cX.cjs → dropdown-content-BI541LSK.cjs} +5 -10
  101. package/dist/dropdown-content-BI541LSK.cjs.map +1 -0
  102. package/dist/{dropdown-content-DA6wal4A.js → dropdown-content-BLZviV1z.js} +40 -41
  103. package/dist/dropdown-content-BLZviV1z.js.map +1 -0
  104. package/dist/dropdown.cjs +1 -1
  105. package/dist/dropdown.js +1 -1
  106. package/dist/{email-recipients-OBogh7Uo.cjs → email-recipients-DizBUcJ2.cjs} +24 -24
  107. package/dist/email-recipients-DizBUcJ2.cjs.map +1 -0
  108. package/dist/{email-recipients-BFhkzOzI.js → email-recipients-JeGKXcBj.js} +141 -144
  109. package/dist/email-recipients-JeGKXcBj.js.map +1 -0
  110. package/dist/extra.cjs +1 -1
  111. package/dist/extra.js +1 -1
  112. package/dist/{flex-B7tsIv60.cjs → flex-BN7HdoGW.cjs} +2 -2
  113. package/dist/{flex-B7tsIv60.cjs.map → flex-BN7HdoGW.cjs.map} +1 -1
  114. package/dist/{flex-C2ER0I8V.js → flex-ro_7y02P.js} +2 -2
  115. package/dist/{flex-C2ER0I8V.js.map → flex-ro_7y02P.js.map} +1 -1
  116. package/dist/{form-Bkg6Q_f5.js → form-BqGTSZpr.js} +11 -23
  117. package/dist/form-BqGTSZpr.js.map +1 -0
  118. package/dist/form-DT6f2KNH.cjs +2 -0
  119. package/dist/form-DT6f2KNH.cjs.map +1 -0
  120. package/dist/form.cjs +1 -1
  121. package/dist/form.js +1 -1
  122. package/dist/{formField.mixin-Bp77n7z6.cjs → formField.mixin-CSy0dZ7Q.cjs} +2 -2
  123. package/dist/{formField.mixin-Bp77n7z6.cjs.map → formField.mixin-CSy0dZ7Q.cjs.map} +1 -1
  124. package/dist/{formField.mixin-as1q6J0T.js → formField.mixin-DtegNyKv.js} +2 -2
  125. package/dist/{formField.mixin-as1q6J0T.js.map → formField.mixin-DtegNyKv.js.map} +1 -1
  126. package/dist/{icon-CLzd6U7v.js → icon-CSxxuGxN.js} +2 -2
  127. package/dist/{icon-CLzd6U7v.js.map → icon-CSxxuGxN.js.map} +1 -1
  128. package/dist/{icon-BYd5Gta6.cjs → icon-GaL2G_1M.cjs} +2 -2
  129. package/dist/{icon-BYd5Gta6.cjs.map → icon-GaL2G_1M.cjs.map} +1 -1
  130. package/dist/{icon-button-U9gN6pT3.js → icon-button-B0jLowAy.js} +5 -5
  131. package/dist/icon-button-B0jLowAy.js.map +1 -0
  132. package/dist/{icon-button-DNg0mA1P.cjs → icon-button-DkvwZOHF.cjs} +4 -4
  133. package/dist/icon-button-DkvwZOHF.cjs.map +1 -0
  134. package/dist/icons.cjs +1 -1
  135. package/dist/icons.js +1 -1
  136. package/dist/index.cjs +1 -1
  137. package/dist/index.js +162 -160
  138. package/dist/index.js.map +1 -1
  139. package/dist/{input-CX1jyK-P.js → input-D0c-WhDi.js} +40 -44
  140. package/dist/input-D0c-WhDi.js.map +1 -0
  141. package/dist/input-fPWOjQgP.cjs +51 -0
  142. package/dist/input-fPWOjQgP.cjs.map +1 -0
  143. package/dist/input.cjs +1 -1
  144. package/dist/input.js +1 -1
  145. package/dist/layout.cjs +1 -1
  146. package/dist/layout.js +1 -1
  147. package/dist/lazy-DObpkuL6.cjs.map +1 -1
  148. package/dist/lazy-E2LCDm7n.js.map +1 -1
  149. package/dist/{list-BMR8QRo0.js → list-3Ity7MFT.js} +2 -2
  150. package/dist/{list-BMR8QRo0.js.map → list-3Ity7MFT.js.map} +1 -1
  151. package/dist/{list-DZPMOfrH.cjs → list-CbXXjBUM.cjs} +2 -2
  152. package/dist/{list-DZPMOfrH.cjs.map → list-CbXXjBUM.cjs.map} +1 -1
  153. package/dist/list.cjs +1 -1
  154. package/dist/list.js +1 -1
  155. package/dist/{litElement.mixin-De6F4bUs.cjs → litElement.mixin-DFG5Ckp7.cjs} +2 -2
  156. package/dist/{litElement.mixin-De6F4bUs.cjs.map → litElement.mixin-DFG5Ckp7.cjs.map} +1 -1
  157. package/dist/{litElement.mixin-C9e4ffot.js → litElement.mixin-Efwm8boA.js} +2 -2
  158. package/dist/{litElement.mixin-C9e4ffot.js.map → litElement.mixin-Efwm8boA.js.map} +1 -1
  159. package/dist/mailbox.cjs +1 -1
  160. package/dist/mailbox.js +1 -1
  161. package/dist/{map-E2MqAGzQ.js → map-BCQwFMpm.js} +2 -2
  162. package/dist/{map-E2MqAGzQ.js.map → map-BCQwFMpm.js.map} +1 -1
  163. package/dist/{map-ORYWFuxx.cjs → map-DeRVVjHa.cjs} +2 -2
  164. package/dist/{map-ORYWFuxx.cjs.map → map-DeRVVjHa.cjs.map} +1 -1
  165. package/dist/map.cjs +1 -1
  166. package/dist/map.js +1 -1
  167. package/dist/media-CL9LNHic.cjs +226 -0
  168. package/dist/media-CL9LNHic.cjs.map +1 -0
  169. package/dist/media-nVQjNoX7.js +307 -0
  170. package/dist/media-nVQjNoX7.js.map +1 -0
  171. package/dist/{menu-Cm1jwIsB.js → menu-CusvB2dY.js} +3 -3
  172. package/dist/{menu-Cm1jwIsB.js.map → menu-CusvB2dY.js.map} +1 -1
  173. package/dist/{menu-DJuRr_aL.cjs → menu-Delwe6al.cjs} +2 -2
  174. package/dist/{menu-DJuRr_aL.cjs.map → menu-Delwe6al.cjs.map} +1 -1
  175. package/dist/menu.cjs +1 -1
  176. package/dist/menu.js +1 -1
  177. package/dist/nav-drawer.cjs +1 -1
  178. package/dist/nav-drawer.js +1 -1
  179. package/dist/{notification-service-CTlTTCbP.cjs → notification-service-BwcUY8O5.cjs} +7 -7
  180. package/dist/notification-service-BwcUY8O5.cjs.map +1 -0
  181. package/dist/{notification-service-CiE9ITno.js → notification-service-DiTgelcm.js} +65 -60
  182. package/dist/notification-service-DiTgelcm.js.map +1 -0
  183. package/dist/notification.cjs +1 -1
  184. package/dist/notification.js +2 -2
  185. package/dist/{notify-Da9oU7Jf.cjs → notify-C81e8flx.cjs} +2 -2
  186. package/dist/{notify-Da9oU7Jf.cjs.map → notify-C81e8flx.cjs.map} +1 -1
  187. package/dist/{notify-DA2N7Zvr.js → notify-JNbirYT5.js} +2 -2
  188. package/dist/{notify-DA2N7Zvr.js.map → notify-JNbirYT5.js.map} +1 -1
  189. package/dist/{option-D8BWjBZV.cjs → option-D4XcuvRK.cjs} +5 -5
  190. package/dist/option-D4XcuvRK.cjs.map +1 -0
  191. package/dist/{option-svgZq3Hw.js → option-dihFw6qv.js} +12 -12
  192. package/dist/option-dihFw6qv.js.map +1 -0
  193. package/dist/option.cjs +1 -1
  194. package/dist/option.js +1 -1
  195. package/dist/{payment-card-form-18_ZqMt5.cjs → payment-card-form-CIm57Nfa.cjs} +2 -2
  196. package/dist/{payment-card-form-18_ZqMt5.cjs.map → payment-card-form-CIm57Nfa.cjs.map} +1 -1
  197. package/dist/{payment-card-form-BU57CRS3.js → payment-card-form-pDuTrWgZ.js} +3 -3
  198. package/dist/{payment-card-form-BU57CRS3.js.map → payment-card-form-pDuTrWgZ.js.map} +1 -1
  199. package/dist/{progress-B3-p0pjn.cjs → progress-BETtTl0y.cjs} +2 -2
  200. package/dist/{progress-B3-p0pjn.cjs.map → progress-BETtTl0y.cjs.map} +1 -1
  201. package/dist/{progress-y5p1ltND.js → progress-C4o_zWvg.js} +2 -2
  202. package/dist/{progress-y5p1ltND.js.map → progress-C4o_zWvg.js.map} +1 -1
  203. package/dist/progress.cjs +1 -1
  204. package/dist/progress.js +1 -1
  205. package/dist/{radio-button-DINgMpZS.js → radio-button-DaSKbB-Z.js} +27 -27
  206. package/dist/radio-button-DaSKbB-Z.js.map +1 -0
  207. package/dist/radio-button-h6y0tWJQ.cjs +41 -0
  208. package/dist/radio-button-h6y0tWJQ.cjs.map +1 -0
  209. package/dist/radio-group.cjs +1 -1
  210. package/dist/radio-group.js +1 -1
  211. package/dist/{ripple-BumgqsDT.js → ripple-Cy-nvO8W.js} +24 -22
  212. package/dist/ripple-Cy-nvO8W.js.map +1 -0
  213. package/dist/ripple-DqQrvaTe.cjs +16 -0
  214. package/dist/ripple-DqQrvaTe.cjs.map +1 -0
  215. package/dist/route.component-BaefEO15.js +320 -0
  216. package/dist/route.component-BaefEO15.js.map +1 -0
  217. package/dist/route.component-DzBfI9eE.cjs +12 -0
  218. package/dist/route.component-DzBfI9eE.cjs.map +1 -0
  219. package/dist/{schmancy-steps-container-DLHL9mKo.cjs → schmancy-steps-container-DpM5Kvt3.cjs} +2 -2
  220. package/dist/{schmancy-steps-container-DLHL9mKo.cjs.map → schmancy-steps-container-DpM5Kvt3.cjs.map} +1 -1
  221. package/dist/{schmancy-steps-container-Dhq8V1Jy.js → schmancy-steps-container-uRaJiCZE.js} +2 -2
  222. package/dist/{schmancy-steps-container-Dhq8V1Jy.js.map → schmancy-steps-container-uRaJiCZE.js.map} +1 -1
  223. package/dist/select-ClFVeWZA.cjs +57 -0
  224. package/dist/select-ClFVeWZA.cjs.map +1 -0
  225. package/dist/{select-DXcdeHjY.js → select-uQ5xnOKn.js} +17 -16
  226. package/dist/select-uQ5xnOKn.js.map +1 -0
  227. package/dist/select.cjs +1 -1
  228. package/dist/select.js +1 -1
  229. package/dist/{sheet-BJ_P15Uh.cjs → sheet-CEcMgg-2.cjs} +2 -2
  230. package/dist/{sheet-BJ_P15Uh.cjs.map → sheet-CEcMgg-2.cjs.map} +1 -1
  231. package/dist/{sheet-DFY331sa.js → sheet-CvvdxIUZ.js} +3 -3
  232. package/dist/{sheet-DFY331sa.js.map → sheet-CvvdxIUZ.js.map} +1 -1
  233. package/dist/sheet.cjs +1 -1
  234. package/dist/sheet.js +1 -1
  235. package/dist/{slider-6VTsJJth.js → slider-DyxIZ-hn.js} +3 -3
  236. package/dist/{slider-6VTsJJth.js.map → slider-DyxIZ-hn.js.map} +1 -1
  237. package/dist/{slider-C8YC6MCP.cjs → slider-T8sYw1p-.cjs} +2 -2
  238. package/dist/{slider-C8YC6MCP.cjs.map → slider-T8sYw1p-.cjs.map} +1 -1
  239. package/dist/slider.cjs +1 -1
  240. package/dist/slider.js +1 -1
  241. package/dist/{spinner-B4DEcQwc.js → spinner-D9fC8P3H.js} +2 -2
  242. package/dist/{spinner-B4DEcQwc.js.map → spinner-D9fC8P3H.js.map} +1 -1
  243. package/dist/{spinner-BCCCQMeS.cjs → spinner-DJviKuwJ.cjs} +2 -2
  244. package/dist/{spinner-BCCCQMeS.cjs.map → spinner-DJviKuwJ.cjs.map} +1 -1
  245. package/dist/steps.cjs +1 -1
  246. package/dist/steps.js +1 -1
  247. package/dist/{surface-CrfGHJEt.cjs → surface-B_SGQ1f7.cjs} +2 -2
  248. package/dist/{surface-CrfGHJEt.cjs.map → surface-B_SGQ1f7.cjs.map} +1 -1
  249. package/dist/{surface-B9w3VOkr.js → surface-CUyYCpFl.js} +2 -2
  250. package/dist/{surface-B9w3VOkr.js.map → surface-CUyYCpFl.js.map} +1 -1
  251. package/dist/surface.cjs +1 -1
  252. package/dist/surface.js +1 -1
  253. package/dist/{table-ClOXrs2P.cjs → table-C-sWuoAy.cjs} +2 -2
  254. package/dist/{table-ClOXrs2P.cjs.map → table-C-sWuoAy.cjs.map} +1 -1
  255. package/dist/{table-pJ6NI0tm.js → table-D7p7a-Ag.js} +2 -2
  256. package/dist/{table-pJ6NI0tm.js.map → table-D7p7a-Ag.js.map} +1 -1
  257. package/dist/table.cjs +1 -1
  258. package/dist/table.js +1 -1
  259. package/dist/{tabs-compatibility-Cv0h7xqj.js → tabs-compatibility-Dn8bSEvA.js} +2 -2
  260. package/dist/{tabs-compatibility-Cv0h7xqj.js.map → tabs-compatibility-Dn8bSEvA.js.map} +1 -1
  261. package/dist/{tabs-compatibility-BgtRf8jN.cjs → tabs-compatibility-XoF2vpv5.cjs} +2 -2
  262. package/dist/{tabs-compatibility-BgtRf8jN.cjs.map → tabs-compatibility-XoF2vpv5.cjs.map} +1 -1
  263. package/dist/tabs.cjs +1 -1
  264. package/dist/tabs.js +1 -1
  265. package/dist/tailwind.mixin-C13RR5x6.js +43 -0
  266. package/dist/{tailwind.mixin-CUBQFucF.js.map → tailwind.mixin-C13RR5x6.js.map} +1 -1
  267. package/dist/tailwind.mixin-O9jmUJ7m.cjs +2 -0
  268. package/dist/{tailwind.mixin-tQzjJi1o.cjs.map → tailwind.mixin-O9jmUJ7m.cjs.map} +1 -1
  269. package/dist/teleport.cjs +1 -1
  270. package/dist/teleport.js +1 -1
  271. package/dist/textarea-9rSwC34M.cjs +44 -0
  272. package/dist/{textarea-DsfpxxrR.cjs.map → textarea-9rSwC34M.cjs.map} +1 -1
  273. package/dist/{textarea-VzUmYJ8k.js → textarea-Dsqg9ted.js} +4 -3
  274. package/dist/{textarea-VzUmYJ8k.js.map → textarea-Dsqg9ted.js.map} +1 -1
  275. package/dist/textarea.cjs +1 -1
  276. package/dist/textarea.js +1 -1
  277. package/dist/{theme-button-Cc8uLdST.cjs → theme-button-BTH2A59w.cjs} +2 -2
  278. package/dist/{theme-button-Cc8uLdST.cjs.map → theme-button-BTH2A59w.cjs.map} +1 -1
  279. package/dist/{theme-button-Dv0mFIy1.js → theme-button-pfkAwkvY.js} +2 -2
  280. package/dist/{theme-button-Dv0mFIy1.js.map → theme-button-pfkAwkvY.js.map} +1 -1
  281. package/dist/theme-button.cjs +1 -1
  282. package/dist/theme-button.js +1 -1
  283. package/dist/theme.cjs +1 -1
  284. package/dist/{theme.component-CBQMtIWn.cjs → theme.component-BvoZuM2h.cjs} +3 -3
  285. package/dist/{theme.component-CBQMtIWn.cjs.map → theme.component-BvoZuM2h.cjs.map} +1 -1
  286. package/dist/{theme.component-BJkqP8OJ.js → theme.component-C3G_OrjE.js} +66 -66
  287. package/dist/{theme.component-BJkqP8OJ.js.map → theme.component-C3G_OrjE.js.map} +1 -1
  288. package/dist/theme.js +1 -1
  289. package/dist/{timezone-Cidrq38O.cjs → timezone-BKBME7Gq.cjs} +2 -2
  290. package/dist/{timezone-Cidrq38O.cjs.map → timezone-BKBME7Gq.cjs.map} +1 -1
  291. package/dist/{timezone-s8dLt1Tp.js → timezone-mQeoU0_O.js} +3 -3
  292. package/dist/{timezone-s8dLt1Tp.js.map → timezone-mQeoU0_O.js.map} +1 -1
  293. package/dist/tooltip-Bcun7m0S.cjs +7 -0
  294. package/dist/tooltip-Bcun7m0S.cjs.map +1 -0
  295. package/dist/{tooltip-CbKaR_7c.js → tooltip-Doh_evJW.js} +55 -55
  296. package/dist/tooltip-Doh_evJW.js.map +1 -0
  297. package/dist/tooltip.cjs +1 -1
  298. package/dist/tooltip.js +1 -1
  299. package/dist/{tree-BncfGRKE.cjs → tree-DpKb9Q-1.cjs} +2 -2
  300. package/dist/{tree-BncfGRKE.cjs.map → tree-DpKb9Q-1.cjs.map} +1 -1
  301. package/dist/{tree-BalOrz7r.js → tree-cl3PdPTy.js} +2 -2
  302. package/dist/{tree-BalOrz7r.js.map → tree-cl3PdPTy.js.map} +1 -1
  303. package/dist/tree.cjs +1 -1
  304. package/dist/tree.js +1 -1
  305. package/dist/{typewriter-C3nBx8M1.cjs → typewriter-QSd_xI9j.cjs} +3 -15
  306. package/dist/typewriter-QSd_xI9j.cjs.map +1 -0
  307. package/dist/{typewriter-CdsU7g5m.js → typewriter-peuqmq9f.js} +64 -76
  308. package/dist/typewriter-peuqmq9f.js.map +1 -0
  309. package/dist/typewriter.cjs +1 -1
  310. package/dist/typewriter.js +1 -1
  311. package/dist/{typography-D-unaqtW.js → typography-BkuzOZ0g.js} +2 -2
  312. package/dist/{typography-D-unaqtW.js.map → typography-BkuzOZ0g.js.map} +1 -1
  313. package/dist/{typography-C2kzFuZS.cjs → typography-BoI8HgTE.cjs} +2 -2
  314. package/dist/{typography-C2kzFuZS.cjs.map → typography-BoI8HgTE.cjs.map} +1 -1
  315. package/dist/typography.cjs +1 -1
  316. package/dist/typography.js +1 -1
  317. package/package.json +1 -1
  318. package/types/src/area/area.component.d.ts +8 -3
  319. package/types/src/area/area.service.d.ts +1 -0
  320. package/types/src/area/route.component.d.ts +4 -5
  321. package/types/src/area/utils.d.ts +2 -1
  322. package/types/src/card/card.d.ts +55 -3
  323. package/types/src/directives/guard.d.ts +1 -0
  324. package/types/src/directives/index.d.ts +1 -0
  325. package/types/src/directives/ripple.d.ts +2 -1
  326. package/types/src/dropdown/dropdown-component.d.ts +1 -0
  327. package/types/src/form/form-v2.d.ts +0 -1
  328. package/types/src/form/form.d.ts +0 -1
  329. package/types/src/mailbox/email-editor.d.ts +1 -2
  330. package/types/src/notification/notification-audio.d.ts +9 -0
  331. package/types/src/notification/notification-container.d.ts +1 -0
  332. package/dist/autocomplete-BJKuzyUg.cjs.map +0 -1
  333. package/dist/autocomplete-BrcVARei.js.map +0 -1
  334. package/dist/avatar-2XjX7xHh.js.map +0 -1
  335. package/dist/avatar-CH6xAiaz.cjs.map +0 -1
  336. package/dist/dialog-service-DwhuICgc.js.map +0 -1
  337. package/dist/dialog-service-juvsgc5X.cjs +0 -2
  338. package/dist/dialog-service-juvsgc5X.cjs.map +0 -1
  339. package/dist/divider-BHA8zjDr.js +0 -103
  340. package/dist/divider-BHA8zjDr.js.map +0 -1
  341. package/dist/divider-C-kmaW3d.cjs +0 -83
  342. package/dist/divider-C-kmaW3d.cjs.map +0 -1
  343. package/dist/dropdown-content-CDAX41cX.cjs.map +0 -1
  344. package/dist/dropdown-content-DA6wal4A.js.map +0 -1
  345. package/dist/email-recipients-BFhkzOzI.js.map +0 -1
  346. package/dist/email-recipients-OBogh7Uo.cjs.map +0 -1
  347. package/dist/form-Bkg6Q_f5.js.map +0 -1
  348. package/dist/form-yJc1T0GI.cjs +0 -14
  349. package/dist/form-yJc1T0GI.cjs.map +0 -1
  350. package/dist/icon-button-DNg0mA1P.cjs.map +0 -1
  351. package/dist/icon-button-U9gN6pT3.js.map +0 -1
  352. package/dist/input-CX1jyK-P.js.map +0 -1
  353. package/dist/input-DYp4wudB.cjs +0 -51
  354. package/dist/input-DYp4wudB.cjs.map +0 -1
  355. package/dist/media-BmSmYaBR.cjs +0 -100
  356. package/dist/media-BmSmYaBR.cjs.map +0 -1
  357. package/dist/media-CRKWL-3S.js +0 -151
  358. package/dist/media-CRKWL-3S.js.map +0 -1
  359. package/dist/notification-service-CTlTTCbP.cjs.map +0 -1
  360. package/dist/notification-service-CiE9ITno.js.map +0 -1
  361. package/dist/option-D8BWjBZV.cjs.map +0 -1
  362. package/dist/option-svgZq3Hw.js.map +0 -1
  363. package/dist/radio-button-DINgMpZS.js.map +0 -1
  364. package/dist/radio-button-Yzy01Adt.cjs +0 -41
  365. package/dist/radio-button-Yzy01Adt.cjs.map +0 -1
  366. package/dist/ripple-BumgqsDT.js.map +0 -1
  367. package/dist/ripple-C2BHbhcS.cjs +0 -16
  368. package/dist/ripple-C2BHbhcS.cjs.map +0 -1
  369. package/dist/route.component-C_OoXIgy.cjs +0 -12
  370. package/dist/route.component-C_OoXIgy.cjs.map +0 -1
  371. package/dist/route.component-Cfz1lAvS.js +0 -321
  372. package/dist/route.component-Cfz1lAvS.js.map +0 -1
  373. package/dist/select-DXcdeHjY.js.map +0 -1
  374. package/dist/select-JFsojOGZ.cjs +0 -57
  375. package/dist/select-JFsojOGZ.cjs.map +0 -1
  376. package/dist/tailwind.mixin-CUBQFucF.js +0 -43
  377. package/dist/tailwind.mixin-tQzjJi1o.cjs +0 -2
  378. package/dist/textarea-DsfpxxrR.cjs +0 -44
  379. package/dist/tooltip-CKhGU64R.cjs +0 -7
  380. package/dist/tooltip-CKhGU64R.cjs.map +0 -1
  381. package/dist/tooltip-CbKaR_7c.js.map +0 -1
  382. package/dist/typewriter-C3nBx8M1.cjs.map +0 -1
  383. package/dist/typewriter-CdsU7g5m.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ "use strict";const r=require("@floating-ui/dom"),w=require("lit/directive.js"),n=require("rxjs"),I=require("./tailwind.mixin-O9jmUJ7m.cjs"),O=require("lit"),m=require("lit/decorators.js"),E=new WeakMap;class U extends w.Directive{constructor(i){if(super(i),i.type!==w.PartType.ELEMENT)throw new Error("The tooltip directive can only be used on elements")}render(i,s={}){return{text:i,options:s}}update(i,[s,e={}]){const o=i.element,l=e?.position||"top",d=e?.delay||300,y=e?.showArrow!==!1;let t=E.get(o);if(t)t.tooltipElement.textContent=s,t.arrowElement&&(t.arrowElement.style.visibility=y?"visible":"hidden");else{const p=document.createElement("div");let u;p.className="schmancy-tooltip",Object.assign(p.style,{position:"absolute",zIndex:"10000",backgroundColor:"var(--schmancy-sys-color-surface-highest, #333)",color:"var(--schmancy-sys-color-surface-on, white)",padding:"8px 12px",borderRadius:"4px",fontSize:"14px",fontWeight:"normal",maxWidth:"300px",pointerEvents:"none",opacity:"0",transition:"opacity 150ms ease",boxShadow:"var(--schmancy-sys-elevation-2)",textAlign:"center",visibility:"hidden"}),y&&(u=document.createElement("div"),u.className="schmancy-tooltip-arrow",Object.assign(u.style,{position:"absolute",width:"8px",height:"8px",background:"inherit",visibility:"hidden",transform:"rotate(45deg)"}),p.appendChild(u)),p.setAttribute("role","tooltip");const f=`tooltip-${Math.random().toString(36).slice(2,9)}`;p.id=f,o.setAttribute("aria-describedby",f),document.body.appendChild(p),t={tooltipElement:p,arrowElement:u},E.set(o,t);const x=()=>{t?.showTimeout&&clearTimeout(t.showTimeout),t.showTimeout=window.setTimeout(()=>{t.tooltipElement.textContent=s,y&&t.arrowElement&&!t.tooltipElement.contains(t.arrowElement)&&t.tooltipElement.appendChild(t.arrowElement),t.tooltipElement.style.visibility="visible",t.cleanup&&t.cleanup(),t.cleanup=r.autoUpdate(o,t.tooltipElement,()=>async function(v,c,T,k){const S=[r.offset(8),r.flip({fallbackPlacements:["top","right","bottom","left"].filter(b=>b!==T),padding:5}),r.shift({padding:5})];k&&c.arrowElement&&S.push(r.arrow({element:c.arrowElement}));const{x:q,y:P,placement:$,middlewareData:C}=await r.computePosition(v,c.tooltipElement,{placement:T,middleware:S,strategy:"fixed"});if(Object.assign(c.tooltipElement.style,{left:`${q}px`,top:`${P}px`,position:"fixed"}),k&&c.arrowElement&&C.arrow){const{x:b,y:A}=C.arrow,z={top:"bottom",right:"left",bottom:"top",left:"right"}[$.split("-")[0]]||"bottom";Object.assign(c.arrowElement.style,{left:b!=null?`${b}px`:"",top:A!=null?`${A}px`:"",[z]:"-4px",visibility:"visible"})}}(o,t,l,y)),requestAnimationFrame(()=>{t.tooltipElement.style.opacity="1"})},d)},g=()=>{t?.showTimeout&&clearTimeout(t.showTimeout),t.tooltipElement.style.opacity="0",setTimeout(()=>{t.tooltipElement.style.visibility="hidden"},150),t?.cleanup&&(t.cleanup(),t.cleanup=void 0)},j=[n.fromEvent(o,"mouseenter").subscribe(x),n.fromEvent(o,"focus").subscribe(x),n.fromEvent(o,"mouseleave").subscribe(g),n.fromEvent(o,"blur").subscribe(g),n.fromEvent(document,"keydown").subscribe(v=>{v.key==="Escape"&&t?.tooltipElement.style.opacity==="1"&&g()})];t.subscriptions=j}return{text:s,options:e}}disconnected(i){const s=i.element,e=E.get(s);e&&(e.subscriptions&&e.subscriptions.forEach(o=>o.unsubscribe()),e.showTimeout&&clearTimeout(e.showTimeout),e.cleanup&&e.cleanup(),document.body.contains(e.tooltipElement)&&document.body.removeChild(e.tooltipElement),s.hasAttribute("aria-describedby")&&s.removeAttribute("aria-describedby"),E.delete(s))}}const N=w.directive(U);var W=Object.defineProperty,M=Object.getOwnPropertyDescriptor,h=(a,i,s,e)=>{for(var o,l=e>1?void 0:e?M(i,s):i,d=a.length-1;d>=0;d--)(o=a[d])&&(l=(e?o(i,s,l):o(l))||l);return e&&l&&W(i,s,l),l};exports.SchmancyTooltip=class extends I.TailwindElement(O.css`
2
+ :host {
3
+ display: inline-block;
4
+ position: relative;
5
+ }
6
+ `){constructor(){super(...arguments),this.text="",this.position="top",this.delay=50,this.disabled=!1,this.visible=!1,this.triggerElement=null,this.tooltipElement=null}connectedCallback(){super.connectedCallback(),this.tooltipElement||this.createTooltipElement()}firstUpdated(){this.updateComplete.then(()=>{const a=this.shadowRoot?.querySelector("slot"),i=a?.assignedElements()||[];i.length>0&&(this.triggerElement=i[0],this.setupEvents())})}createTooltipElement(){this.tooltipElement=document.createElement("div"),this.tooltipElement.className="schmancy-tooltip",Object.assign(this.tooltipElement.style,{position:"absolute",zIndex:"10000",backgroundColor:"var(--schmancy-sys-color-surface-highest, #333)",color:"var(--schmancy-sys-color-surface-on, white)",padding:"8px 12px",borderRadius:"4px",fontSize:"14px",fontWeight:"normal",maxWidth:"300px",pointerEvents:"none",opacity:"0",transition:"opacity 150ms ease",boxShadow:"var(--schmancy-sys-elevation-2)",textAlign:"center"}),this.tooltipElement.setAttribute("role","tooltip"),document.body.appendChild(this.tooltipElement)}setupEvents(){if(!this.triggerElement||this.disabled)return;const a=`tooltip-${Math.random().toString(36).slice(2,9)}`;this.tooltipElement&&(this.tooltipElement.id=a,this.triggerElement.setAttribute("aria-describedby",a));const i=n.fromEvent(this.triggerElement,"mouseenter"),s=n.fromEvent(this.triggerElement,"focus"),e=n.fromEvent(this.triggerElement,"mouseleave"),o=n.fromEvent(this.triggerElement,"blur");n.fromEvent(document,"keydown").pipe(n.takeUntil(this.disconnecting)).subscribe(l=>{l.key==="Escape"&&this.visible&&this.hideTooltip()}),n.merge(i,s).pipe(n.takeUntil(this.disconnecting)).subscribe(()=>{this.showTooltip()}),n.merge(e,o).pipe(n.takeUntil(this.disconnecting)).subscribe(()=>{this.hideTooltip()})}disconnectedCallback(){this.tooltipElement&&document.body.contains(this.tooltipElement)&&document.body.removeChild(this.tooltipElement),this.cleanup?.(),clearTimeout(this.showTimeoutId),super.disconnectedCallback()}showTooltip(){!this.disabled&&this.tooltipElement&&this.triggerElement&&(clearTimeout(this.showTimeoutId),this.showTimeoutId=window.setTimeout(()=>{this.tooltipElement&&(this.tooltipElement.textContent=this.text,this.visible=!0,this.tooltipElement.style.opacity="1",this.initializePositioning())},this.delay))}hideTooltip(){clearTimeout(this.showTimeoutId),this.tooltipElement&&(this.visible=!1,this.tooltipElement.style.opacity="0"),this.cleanup&&(this.cleanup(),this.cleanup=void 0)}initializePositioning(){this.triggerElement&&this.tooltipElement&&(this.cleanup&&this.cleanup(),this.cleanup=r.autoUpdate(this.triggerElement,this.tooltipElement,()=>{r.computePosition(this.triggerElement,this.tooltipElement,{placement:this.position,middleware:[r.offset(8),r.flip({padding:5}),r.shift({padding:5})]}).then(({x:a,y:i})=>{this.tooltipElement&&Object.assign(this.tooltipElement.style,{left:`${a}px`,top:`${i}px`})})}))}render(){return O.html`<slot></slot>`}},h([m.property({type:String})],exports.SchmancyTooltip.prototype,"text",2),h([m.property({type:String})],exports.SchmancyTooltip.prototype,"position",2),h([m.property({type:Number})],exports.SchmancyTooltip.prototype,"delay",2),h([m.property({type:Boolean})],exports.SchmancyTooltip.prototype,"disabled",2),h([m.state()],exports.SchmancyTooltip.prototype,"visible",2),exports.SchmancyTooltip=h([m.customElement("schmancy-tooltip")],exports.SchmancyTooltip),exports.tooltip=N;
7
+ //# sourceMappingURL=tooltip-Bcun7m0S.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-Bcun7m0S.cjs","sources":["../src/tooltip/tooltip.directive.ts","../src/tooltip/tooltip.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n","import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil } from 'rxjs'\nimport { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'\n\n/**\n * A tooltip component that displays a text tooltip when hovering over content.\n * Addresses shadow DOM limitations by teleporting the tooltip to document.body.\n *\n * @element schmancy-tooltip\n */\n@customElement('schmancy-tooltip')\nexport class SchmancyTooltip extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n`) {\n\t@property({ type: String })\n\ttext = ''\n\n\t@property({ type: String })\n\tposition: 'top' | 'right' | 'bottom' | 'left' = 'top'\n\n\t@property({ type: Number })\n\tdelay = 50\n\n\t@property({ type: Boolean })\n\tdisabled = false\n\n\t@state() private visible = false\n\n\tprivate triggerElement: HTMLElement | null = null\n\tprivate tooltipElement: HTMLElement | null = null\n\tprivate cleanup: (() => void) | undefined\n\tprivate showTimeoutId: number | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create tooltip element once\n\t\tif (!this.tooltipElement) {\n\t\t\tthis.createTooltipElement()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\t// Wait for slotted elements to be available\n\t\tthis.updateComplete.then(() => {\n\t\t\t// Get the first slotted element as trigger\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement\n\t\t\tconst slottedElements = slot?.assignedElements() || []\n\n\t\t\tif (slottedElements.length > 0) {\n\t\t\t\tthis.triggerElement = slottedElements[0] as HTMLElement\n\t\t\t\tthis.setupEvents()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createTooltipElement() {\n\t\t// Create the tooltip element in document.body\n\t\tthis.tooltipElement = document.createElement('div')\n\t\tthis.tooltipElement.className = 'schmancy-tooltip'\n\n\t\t// Apply styles\n\t\tObject.assign(this.tooltipElement.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10000',\n\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\tpadding: '8px 12px',\n\t\t\tborderRadius: '4px',\n\t\t\tfontSize: '14px',\n\t\t\tfontWeight: 'normal',\n\t\t\tmaxWidth: '300px',\n\t\t\tpointerEvents: 'none',\n\t\t\topacity: '0',\n\t\t\ttransition: 'opacity 150ms ease',\n\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\ttextAlign: 'center',\n\t\t})\n\n\t\t// Set ARIA attributes\n\t\tthis.tooltipElement.setAttribute('role', 'tooltip')\n\n\t\t// Add to document\n\t\tdocument.body.appendChild(this.tooltipElement)\n\t}\n\n\tprivate setupEvents() {\n\t\tif (!this.triggerElement || this.disabled) return\n\n\t\t// Generate unique ID for ARIA\n\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\tif (this.tooltipElement) {\n\t\t\tthis.tooltipElement.id = tooltipId\n\t\t\tthis.triggerElement.setAttribute('aria-describedby', tooltipId)\n\t\t}\n\n\t\t// Setup event streams using RxJS\n\t\tconst mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')\n\t\tconst focus$ = fromEvent(this.triggerElement, 'focus')\n\t\tconst mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')\n\t\tconst blur$ = fromEvent(this.triggerElement, 'blur')\n\n\t\t// Global escape key handler\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tif (event.key === 'Escape' && this.visible) {\n\t\t\t\t\tthis.hideTooltip()\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Handle showing\n\t\tmerge(mouseEnter$, focus$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showTooltip()\n\t\t\t})\n\n\t\t// Handle hiding\n\t\tmerge(mouseLeave$, blur$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideTooltip()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Clean up\n\t\tif (this.tooltipElement && document.body.contains(this.tooltipElement)) {\n\t\t\tdocument.body.removeChild(this.tooltipElement)\n\t\t}\n\t\tthis.cleanup?.()\n\t\tclearTimeout(this.showTimeoutId)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tprivate showTooltip() {\n\t\tif (this.disabled || !this.tooltipElement || !this.triggerElement) return\n\n\t\t// Clear any existing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Set timeout for showing\n\t\tthis.showTimeoutId = window.setTimeout(() => {\n\t\t\t// Update content\n\t\t\tif (this.tooltipElement) {\n\t\t\t\tthis.tooltipElement.textContent = this.text\n\n\t\t\t\t// Make visible\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.tooltipElement.style.opacity = '1'\n\n\t\t\t\t// Initialize positioning\n\t\t\t\tthis.initializePositioning()\n\t\t\t}\n\t\t}, this.delay)\n\t}\n\n\tprivate hideTooltip() {\n\t\t// Clear showing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Hide tooltip\n\t\tif (this.tooltipElement) {\n\t\t\tthis.visible = false\n\t\t\tthis.tooltipElement.style.opacity = '0'\n\t\t}\n\n\t\t// Clean up positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t}\n\n\tprivate initializePositioning() {\n\t\tif (!this.triggerElement || !this.tooltipElement) return\n\n\t\t// Clean up existing positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t}\n\n\t\t// Set up auto-updating position\n\t\tthis.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {\n\t\t\t// Compute position\n\t\t\tcomputePosition(this.triggerElement!, this.tooltipElement!, {\n\t\t\t\tplacement: this.position as Placement,\n\t\t\t\tmiddleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Apply position\n\t\t\t\tif (this.tooltipElement) {\n\t\t\t\t\tObject.assign(this.tooltipElement.style, {\n\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tooltip': SchmancyTooltip\n\t}\n}\n"],"names":["tooltipMap","WeakMap","TooltipDirective","Directive","partInfo","super","type","PartType","ELEMENT","Error","text","options","part","element","position","delay","showArrow","tooltipData","get","tooltipElement","textContent","arrowElement","style","visibility","document","createElement","className","Object","assign","zIndex","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","maxWidth","pointerEvents","opacity","transition","boxShadow","textAlign","width","height","background","transform","appendChild","setAttribute","tooltipId","Math","random","toString","slice","id","body","set","showTooltip","showTimeout","clearTimeout","window","setTimeout","contains","cleanup","autoUpdate","async","middleware","offset","flip","fallbackPlacements","filter","p","shift","push","arrow","x","y","placement","middlewareData","computePosition","strategy","left","top","arrowX","arrowY","staticSide","right","bottom","split","requestAnimationFrame","hideTooltip","subscriptions","fromEvent","subscribe","e","key","forEach","subscription","unsubscribe","removeChild","hasAttribute","removeAttribute","delete","tooltip","directive","SchmancyTooltip","TailwindElement","css","constructor","arguments","this","disabled","visible","triggerElement","connectedCallback","createTooltipElement","firstUpdated","updateComplete","then","slot","shadowRoot","querySelector","slottedElements","assignedElements","length","setupEvents","mouseEnter$","focus$","mouseLeave$","blur$","pipe","takeUntil","disconnecting","event","merge","showTimeoutId","disconnectedCallback","initializePositioning","render","html","__decorateClass","property","String","prototype","Number","Boolean","state","customElement"],"mappings":"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"}
@@ -1,61 +1,61 @@
1
- import { autoUpdate as j, offset as O, flip as $, shift as P, arrow as M, computePosition as z } from "@floating-ui/dom";
2
- import { directive as D, Directive as R, PartType as U } from "lit/directive.js";
3
- import { T as q } from "./tailwind.mixin-CUBQFucF.js";
4
- import { css as B, html as F } from "lit";
5
- import { property as y, state as G, customElement as H } from "lit/decorators.js";
6
- import { fromEvent as h, takeUntil as v, merge as S } from "rxjs";
7
- const E = /* @__PURE__ */ new WeakMap(), tt = D(class extends R {
8
- constructor(i) {
9
- if (super(i), i.type !== U.ELEMENT) throw new Error("The tooltip directive can only be used on elements");
1
+ import { autoUpdate as j, offset as O, flip as $, shift as P, arrow as R, computePosition as z } from "@floating-ui/dom";
2
+ import { directive as U, Directive as q, PartType as B } from "lit/directive.js";
3
+ import { fromEvent as n, takeUntil as w, merge as S } from "rxjs";
4
+ import { T as F } from "./tailwind.mixin-C13RR5x6.js";
5
+ import { css as L, html as G } from "lit";
6
+ import { property as b, state as H, customElement as J } from "lit/decorators.js";
7
+ const y = /* @__PURE__ */ new WeakMap(), et = U(class extends q {
8
+ constructor(o) {
9
+ if (super(o), o.type !== B.ELEMENT) throw new Error("The tooltip directive can only be used on elements");
10
10
  }
11
- render(i, e = {}) {
12
- return { text: i, options: e };
11
+ render(o, e = {}) {
12
+ return { text: o, options: e };
13
13
  }
14
- update(i, [e, o = {}]) {
15
- const s = i.element, a = o?.position || "top", n = o?.delay || 300, l = o?.showArrow !== !1;
16
- let t = E.get(s);
17
- if (t) t.tooltipElement.textContent = e, t.arrowElement && (t.arrowElement.style.visibility = l ? "visible" : "hidden");
14
+ update(o, [e, i = {}]) {
15
+ const s = o.element, a = i?.position || "top", l = i?.delay || 300, r = i?.showArrow !== !1;
16
+ let t = y.get(s);
17
+ if (t) t.tooltipElement.textContent = e, t.arrowElement && (t.arrowElement.style.visibility = r ? "visible" : "hidden");
18
18
  else {
19
- const r = document.createElement("div");
19
+ const p = document.createElement("div");
20
20
  let d;
21
- r.className = "schmancy-tooltip", Object.assign(r.style, { position: "absolute", zIndex: "10000", backgroundColor: "var(--schmancy-sys-color-surface-highest, #333)", color: "var(--schmancy-sys-color-surface-on, white)", padding: "8px 12px", borderRadius: "4px", fontSize: "14px", fontWeight: "normal", maxWidth: "300px", pointerEvents: "none", opacity: "0", transition: "opacity 150ms ease", boxShadow: "var(--schmancy-sys-elevation-2)", textAlign: "center", visibility: "hidden" }), l && (d = document.createElement("div"), d.className = "schmancy-tooltip-arrow", Object.assign(d.style, { position: "absolute", width: "8px", height: "8px", background: "inherit", visibility: "hidden", transform: "rotate(45deg)" }), r.appendChild(d)), r.setAttribute("role", "tooltip");
22
- const w = `tooltip-${Math.random().toString(36).slice(2, 9)}`;
23
- r.id = w, s.setAttribute("aria-describedby", w), document.body.appendChild(r), t = { tooltipElement: r, arrowElement: d }, E.set(s, t);
21
+ p.className = "schmancy-tooltip", Object.assign(p.style, { position: "absolute", zIndex: "10000", backgroundColor: "var(--schmancy-sys-color-surface-highest, #333)", color: "var(--schmancy-sys-color-surface-on, white)", padding: "8px 12px", borderRadius: "4px", fontSize: "14px", fontWeight: "normal", maxWidth: "300px", pointerEvents: "none", opacity: "0", transition: "opacity 150ms ease", boxShadow: "var(--schmancy-sys-elevation-2)", textAlign: "center", visibility: "hidden" }), r && (d = document.createElement("div"), d.className = "schmancy-tooltip-arrow", Object.assign(d.style, { position: "absolute", width: "8px", height: "8px", background: "inherit", visibility: "hidden", transform: "rotate(45deg)" }), p.appendChild(d)), p.setAttribute("role", "tooltip");
22
+ const v = `tooltip-${Math.random().toString(36).slice(2, 9)}`;
23
+ p.id = v, s.setAttribute("aria-describedby", v), document.body.appendChild(p), t = { tooltipElement: p, arrowElement: d }, y.set(s, t);
24
24
  const x = () => {
25
25
  t?.showTimeout && clearTimeout(t.showTimeout), t.showTimeout = window.setTimeout(() => {
26
- t.tooltipElement.textContent = e, l && t.arrowElement && !t.tooltipElement.contains(t.arrowElement) && t.tooltipElement.appendChild(t.arrowElement), t.tooltipElement.style.visibility = "visible", t.cleanup && t.cleanup(), t.cleanup = j(s, t.tooltipElement, () => async function(g, m, f, T) {
26
+ t.tooltipElement.textContent = e, r && t.arrowElement && !t.tooltipElement.contains(t.arrowElement) && t.tooltipElement.appendChild(t.arrowElement), t.tooltipElement.style.visibility = "visible", t.cleanup && t.cleanup(), t.cleanup = j(s, t.tooltipElement, () => async function(g, m, f, T) {
27
27
  const C = [O(8), $({ fallbackPlacements: ["top", "right", "bottom", "left"].filter((u) => u !== f), padding: 5 }), P({ padding: 5 })];
28
- T && m.arrowElement && C.push(M({ element: m.arrowElement }));
29
- const { x: I, y: L, placement: N, middlewareData: k } = await z(g, m.tooltipElement, { placement: f, middleware: C, strategy: "fixed" });
30
- if (Object.assign(m.tooltipElement.style, { left: `${I}px`, top: `${L}px`, position: "fixed" }), T && m.arrowElement && k.arrow) {
31
- const { x: u, y: A } = k.arrow, W = { top: "bottom", right: "left", bottom: "top", left: "right" }[N.split("-")[0]] || "bottom";
32
- Object.assign(m.arrowElement.style, { left: u != null ? `${u}px` : "", top: A != null ? `${A}px` : "", [W]: "-4px", visibility: "visible" });
28
+ T && m.arrowElement && C.push(R({ element: m.arrowElement }));
29
+ const { x: N, y: W, placement: M, middlewareData: k } = await z(g, m.tooltipElement, { placement: f, middleware: C, strategy: "fixed" });
30
+ if (Object.assign(m.tooltipElement.style, { left: `${N}px`, top: `${W}px`, position: "fixed" }), T && m.arrowElement && k.arrow) {
31
+ const { x: u, y: A } = k.arrow, D = { top: "bottom", right: "left", bottom: "top", left: "right" }[M.split("-")[0]] || "bottom";
32
+ Object.assign(m.arrowElement.style, { left: u != null ? `${u}px` : "", top: A != null ? `${A}px` : "", [D]: "-4px", visibility: "visible" });
33
33
  }
34
- }(s, t, a, l)), requestAnimationFrame(() => {
34
+ }(s, t, a, r)), requestAnimationFrame(() => {
35
35
  t.tooltipElement.style.opacity = "1";
36
36
  });
37
- }, n);
38
- }, b = () => {
37
+ }, l);
38
+ }, E = () => {
39
39
  t?.showTimeout && clearTimeout(t.showTimeout), t.tooltipElement.style.opacity = "0", setTimeout(() => {
40
40
  t.tooltipElement.style.visibility = "hidden";
41
41
  }, 150), t?.cleanup && (t.cleanup(), t.cleanup = void 0);
42
- };
43
- s.addEventListener("mouseenter", x), s.addEventListener("focus", x), s.addEventListener("mouseleave", b), s.addEventListener("blur", b), document.addEventListener("keydown", (g) => {
44
- g.key === "Escape" && t?.tooltipElement.style.opacity === "1" && b();
45
- });
42
+ }, I = [n(s, "mouseenter").subscribe(x), n(s, "focus").subscribe(x), n(s, "mouseleave").subscribe(E), n(s, "blur").subscribe(E), n(document, "keydown").subscribe((g) => {
43
+ g.key === "Escape" && t?.tooltipElement.style.opacity === "1" && E();
44
+ })];
45
+ t.subscriptions = I;
46
46
  }
47
- return { text: e, options: o };
47
+ return { text: e, options: i };
48
48
  }
49
- disconnected(i) {
50
- const e = i.element, o = E.get(e);
51
- o && (o.showTimeout && clearTimeout(o.showTimeout), o.cleanup && o.cleanup(), document.body.contains(o.tooltipElement) && document.body.removeChild(o.tooltipElement), e.hasAttribute("aria-describedby") && e.removeAttribute("aria-describedby"), E.delete(e));
49
+ disconnected(o) {
50
+ const e = o.element, i = y.get(e);
51
+ i && (i.subscriptions && i.subscriptions.forEach((s) => s.unsubscribe()), i.showTimeout && clearTimeout(i.showTimeout), i.cleanup && i.cleanup(), document.body.contains(i.tooltipElement) && document.body.removeChild(i.tooltipElement), e.hasAttribute("aria-describedby") && e.removeAttribute("aria-describedby"), y.delete(e));
52
52
  }
53
53
  });
54
- var J = Object.defineProperty, K = Object.getOwnPropertyDescriptor, c = (i, e, o, s) => {
55
- for (var a, n = s > 1 ? void 0 : s ? K(e, o) : e, l = i.length - 1; l >= 0; l--) (a = i[l]) && (n = (s ? a(e, o, n) : a(n)) || n);
56
- return s && n && J(e, o, n), n;
54
+ var K = Object.defineProperty, Q = Object.getOwnPropertyDescriptor, h = (o, e, i, s) => {
55
+ for (var a, l = s > 1 ? void 0 : s ? Q(e, i) : e, r = o.length - 1; r >= 0; r--) (a = o[r]) && (l = (s ? a(e, i, l) : a(l)) || l);
56
+ return s && l && K(e, i, l), l;
57
57
  };
58
- let p = class extends q(B`
58
+ let c = class extends F(L`
59
59
  :host {
60
60
  display: inline-block;
61
61
  position: relative;
@@ -69,7 +69,7 @@ let p = class extends q(B`
69
69
  }
70
70
  firstUpdated() {
71
71
  this.updateComplete.then(() => {
72
- const i = this.shadowRoot?.querySelector("slot"), e = i?.assignedElements() || [];
72
+ const o = this.shadowRoot?.querySelector("slot"), e = o?.assignedElements() || [];
73
73
  e.length > 0 && (this.triggerElement = e[0], this.setupEvents());
74
74
  });
75
75
  }
@@ -78,14 +78,14 @@ let p = class extends q(B`
78
78
  }
79
79
  setupEvents() {
80
80
  if (!this.triggerElement || this.disabled) return;
81
- const i = `tooltip-${Math.random().toString(36).slice(2, 9)}`;
82
- this.tooltipElement && (this.tooltipElement.id = i, this.triggerElement.setAttribute("aria-describedby", i));
83
- const e = h(this.triggerElement, "mouseenter"), o = h(this.triggerElement, "focus"), s = h(this.triggerElement, "mouseleave"), a = h(this.triggerElement, "blur");
84
- h(document, "keydown").pipe(v(this.disconnecting)).subscribe((n) => {
85
- n.key === "Escape" && this.visible && this.hideTooltip();
86
- }), S(e, o).pipe(v(this.disconnecting)).subscribe(() => {
81
+ const o = `tooltip-${Math.random().toString(36).slice(2, 9)}`;
82
+ this.tooltipElement && (this.tooltipElement.id = o, this.triggerElement.setAttribute("aria-describedby", o));
83
+ const e = n(this.triggerElement, "mouseenter"), i = n(this.triggerElement, "focus"), s = n(this.triggerElement, "mouseleave"), a = n(this.triggerElement, "blur");
84
+ n(document, "keydown").pipe(w(this.disconnecting)).subscribe((l) => {
85
+ l.key === "Escape" && this.visible && this.hideTooltip();
86
+ }), S(e, i).pipe(w(this.disconnecting)).subscribe(() => {
87
87
  this.showTooltip();
88
- }), S(s, a).pipe(v(this.disconnecting)).subscribe(() => {
88
+ }), S(s, a).pipe(w(this.disconnecting)).subscribe(() => {
89
89
  this.hideTooltip();
90
90
  });
91
91
  }
@@ -102,18 +102,18 @@ let p = class extends q(B`
102
102
  }
103
103
  initializePositioning() {
104
104
  this.triggerElement && this.tooltipElement && (this.cleanup && this.cleanup(), this.cleanup = j(this.triggerElement, this.tooltipElement, () => {
105
- z(this.triggerElement, this.tooltipElement, { placement: this.position, middleware: [O(8), $({ padding: 5 }), P({ padding: 5 })] }).then(({ x: i, y: e }) => {
106
- this.tooltipElement && Object.assign(this.tooltipElement.style, { left: `${i}px`, top: `${e}px` });
105
+ z(this.triggerElement, this.tooltipElement, { placement: this.position, middleware: [O(8), $({ padding: 5 }), P({ padding: 5 })] }).then(({ x: o, y: e }) => {
106
+ this.tooltipElement && Object.assign(this.tooltipElement.style, { left: `${o}px`, top: `${e}px` });
107
107
  });
108
108
  }));
109
109
  }
110
110
  render() {
111
- return F`<slot></slot>`;
111
+ return G`<slot></slot>`;
112
112
  }
113
113
  };
114
- c([y({ type: String })], p.prototype, "text", 2), c([y({ type: String })], p.prototype, "position", 2), c([y({ type: Number })], p.prototype, "delay", 2), c([y({ type: Boolean })], p.prototype, "disabled", 2), c([G()], p.prototype, "visible", 2), p = c([H("schmancy-tooltip")], p);
114
+ h([b({ type: String })], c.prototype, "text", 2), h([b({ type: String })], c.prototype, "position", 2), h([b({ type: Number })], c.prototype, "delay", 2), h([b({ type: Boolean })], c.prototype, "disabled", 2), h([H()], c.prototype, "visible", 2), c = h([J("schmancy-tooltip")], c);
115
115
  export {
116
- p as S,
117
- tt as t
116
+ c as S,
117
+ et as t
118
118
  };
119
- //# sourceMappingURL=tooltip-CbKaR_7c.js.map
119
+ //# sourceMappingURL=tooltip-Doh_evJW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-Doh_evJW.js","sources":["../src/tooltip/tooltip.directive.ts","../src/tooltip/tooltip.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\nimport { fromEvent, Subscription } from 'rxjs'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t\tsubscriptions?: Subscription[]\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners using fromEvent\n\t\t\tconst subscriptions = [\n\t\t\t\tfromEvent(element, 'mouseenter').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'focus').subscribe(showTooltip),\n\t\t\t\tfromEvent(element, 'mouseleave').subscribe(hideTooltip),\n\t\t\t\tfromEvent(element, 'blur').subscribe(hideTooltip),\n\t\t\t\tfromEvent<KeyboardEvent>(document, 'keydown').subscribe((e: KeyboardEvent) => {\n\t\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\t\thideTooltip()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t]\n\n\t\t\t// Store subscriptions for cleanup\n\t\t\ttooltipData.subscriptions = subscriptions\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up subscriptions\n\t\t\tif (tooltipData.subscriptions) {\n\t\t\t\ttooltipData.subscriptions.forEach(subscription => subscription.unsubscribe())\n\t\t\t}\n\n\t\t\t// Clean up timeouts and positioning\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n","import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil } from 'rxjs'\nimport { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'\n\n/**\n * A tooltip component that displays a text tooltip when hovering over content.\n * Addresses shadow DOM limitations by teleporting the tooltip to document.body.\n *\n * @element schmancy-tooltip\n */\n@customElement('schmancy-tooltip')\nexport class SchmancyTooltip extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n`) {\n\t@property({ type: String })\n\ttext = ''\n\n\t@property({ type: String })\n\tposition: 'top' | 'right' | 'bottom' | 'left' = 'top'\n\n\t@property({ type: Number })\n\tdelay = 50\n\n\t@property({ type: Boolean })\n\tdisabled = false\n\n\t@state() private visible = false\n\n\tprivate triggerElement: HTMLElement | null = null\n\tprivate tooltipElement: HTMLElement | null = null\n\tprivate cleanup: (() => void) | undefined\n\tprivate showTimeoutId: number | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create tooltip element once\n\t\tif (!this.tooltipElement) {\n\t\t\tthis.createTooltipElement()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\t// Wait for slotted elements to be available\n\t\tthis.updateComplete.then(() => {\n\t\t\t// Get the first slotted element as trigger\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement\n\t\t\tconst slottedElements = slot?.assignedElements() || []\n\n\t\t\tif (slottedElements.length > 0) {\n\t\t\t\tthis.triggerElement = slottedElements[0] as HTMLElement\n\t\t\t\tthis.setupEvents()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createTooltipElement() {\n\t\t// Create the tooltip element in document.body\n\t\tthis.tooltipElement = document.createElement('div')\n\t\tthis.tooltipElement.className = 'schmancy-tooltip'\n\n\t\t// Apply styles\n\t\tObject.assign(this.tooltipElement.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10000',\n\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\tpadding: '8px 12px',\n\t\t\tborderRadius: '4px',\n\t\t\tfontSize: '14px',\n\t\t\tfontWeight: 'normal',\n\t\t\tmaxWidth: '300px',\n\t\t\tpointerEvents: 'none',\n\t\t\topacity: '0',\n\t\t\ttransition: 'opacity 150ms ease',\n\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\ttextAlign: 'center',\n\t\t})\n\n\t\t// Set ARIA attributes\n\t\tthis.tooltipElement.setAttribute('role', 'tooltip')\n\n\t\t// Add to document\n\t\tdocument.body.appendChild(this.tooltipElement)\n\t}\n\n\tprivate setupEvents() {\n\t\tif (!this.triggerElement || this.disabled) return\n\n\t\t// Generate unique ID for ARIA\n\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\tif (this.tooltipElement) {\n\t\t\tthis.tooltipElement.id = tooltipId\n\t\t\tthis.triggerElement.setAttribute('aria-describedby', tooltipId)\n\t\t}\n\n\t\t// Setup event streams using RxJS\n\t\tconst mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')\n\t\tconst focus$ = fromEvent(this.triggerElement, 'focus')\n\t\tconst mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')\n\t\tconst blur$ = fromEvent(this.triggerElement, 'blur')\n\n\t\t// Global escape key handler\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tif (event.key === 'Escape' && this.visible) {\n\t\t\t\t\tthis.hideTooltip()\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Handle showing\n\t\tmerge(mouseEnter$, focus$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showTooltip()\n\t\t\t})\n\n\t\t// Handle hiding\n\t\tmerge(mouseLeave$, blur$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideTooltip()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Clean up\n\t\tif (this.tooltipElement && document.body.contains(this.tooltipElement)) {\n\t\t\tdocument.body.removeChild(this.tooltipElement)\n\t\t}\n\t\tthis.cleanup?.()\n\t\tclearTimeout(this.showTimeoutId)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tprivate showTooltip() {\n\t\tif (this.disabled || !this.tooltipElement || !this.triggerElement) return\n\n\t\t// Clear any existing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Set timeout for showing\n\t\tthis.showTimeoutId = window.setTimeout(() => {\n\t\t\t// Update content\n\t\t\tif (this.tooltipElement) {\n\t\t\t\tthis.tooltipElement.textContent = this.text\n\n\t\t\t\t// Make visible\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.tooltipElement.style.opacity = '1'\n\n\t\t\t\t// Initialize positioning\n\t\t\t\tthis.initializePositioning()\n\t\t\t}\n\t\t}, this.delay)\n\t}\n\n\tprivate hideTooltip() {\n\t\t// Clear showing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Hide tooltip\n\t\tif (this.tooltipElement) {\n\t\t\tthis.visible = false\n\t\t\tthis.tooltipElement.style.opacity = '0'\n\t\t}\n\n\t\t// Clean up positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t}\n\n\tprivate initializePositioning() {\n\t\tif (!this.triggerElement || !this.tooltipElement) return\n\n\t\t// Clean up existing positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t}\n\n\t\t// Set up auto-updating position\n\t\tthis.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {\n\t\t\t// Compute position\n\t\t\tcomputePosition(this.triggerElement!, this.tooltipElement!, {\n\t\t\t\tplacement: this.position as Placement,\n\t\t\t\tmiddleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Apply position\n\t\t\t\tif (this.tooltipElement) {\n\t\t\t\t\tObject.assign(this.tooltipElement.style, {\n\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tooltip': SchmancyTooltip\n\t}\n}\n"],"names":["tooltipMap","WeakMap","tooltip","directive","Directive","partInfo","super","type","PartType","ELEMENT","Error","text","options","part","element","position","delay","showArrow","tooltipData","get","tooltipElement","textContent","arrowElement","style","visibility","document","createElement","className","Object","assign","zIndex","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","maxWidth","pointerEvents","opacity","transition","boxShadow","textAlign","width","height","background","transform","appendChild","setAttribute","tooltipId","Math","random","toString","slice","id","body","set","showTooltip","showTimeout","clearTimeout","window","setTimeout","contains","cleanup","autoUpdate","async","middleware","offset","flip","fallbackPlacements","filter","p","shift","push","arrow","x","y","placement","middlewareData","computePosition","strategy","left","top","arrowX","arrowY","staticSide","right","bottom","split","requestAnimationFrame","hideTooltip","subscriptions","fromEvent","subscribe","e","key","forEach","subscription","unsubscribe","removeChild","hasAttribute","removeAttribute","delete","SchmancyTooltip","TailwindElement","css","constructor","arguments","this","disabled","visible","triggerElement","connectedCallback","createTooltipElement","updateComplete","then","slot","shadowRoot","querySelector","slottedElements","assignedElements","length","setupEvents","mouseEnter$","focus$","mouseLeave$","blur$","pipe","takeUntil","disconnecting","event","merge","disconnectedCallback","showTimeoutId","initializePositioning","render","html","__decorateClass","property","String","prototype","Number","Boolean","state","customElement"],"mappings":"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"}
package/dist/tooltip.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tooltip-CKhGU64R.cjs");Object.defineProperty(exports,"SchmancyTooltip",{enumerable:!0,get:()=>e.SchmancyTooltip}),exports.tooltip=e.tooltip;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tooltip-Bcun7m0S.cjs");Object.defineProperty(exports,"SchmancyTooltip",{enumerable:!0,get:()=>e.SchmancyTooltip}),exports.tooltip=e.tooltip;
2
2
  //# sourceMappingURL=tooltip.cjs.map
package/dist/tooltip.js CHANGED
@@ -1,4 +1,4 @@
1
- import { S as a, t as p } from "./tooltip-CbKaR_7c.js";
1
+ import { S as a, t as p } from "./tooltip-Doh_evJW.js";
2
2
  export {
3
3
  a as SchmancyTooltip,
4
4
  p as tooltip
@@ -1,4 +1,4 @@
1
- "use strict";const t=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const c=require("lit/decorators.js"),d=require("./tailwind.mixin-tQzjJi1o.cjs"),p=require("lit");var u=Object.defineProperty,g=Object.getOwnPropertyDescriptor,l=(n,r,o,i)=>{for(var s,e=i>1?void 0:i?g(r,o):r,a=n.length-1;a>=0;a--)(s=n[a])&&(e=(i?s(r,o,e):s(e))||e);return i&&e&&u(r,o,e),e};exports.SchmancyTree=class extends d.TailwindElement(p.css`
1
+ "use strict";const t=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const c=require("lit/decorators.js"),d=require("./tailwind.mixin-O9jmUJ7m.cjs"),p=require("lit");var u=Object.defineProperty,g=Object.getOwnPropertyDescriptor,l=(n,r,o,i)=>{for(var s,e=i>1?void 0:i?g(r,o):r,a=n.length-1;a>=0;a--)(s=n[a])&&(e=(i?s(r,o,e):s(e))||e);return i&&e&&u(r,o,e),e};exports.SchmancyTree=class extends d.TailwindElement(p.css`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -24,4 +24,4 @@
24
24
  <!-- The default slot: tree children -->
25
25
  <slot></slot>
26
26
  `}},l([c.property({type:Boolean})],exports.SchmancyTree.prototype,"open",2),l([c.query("#toggler")],exports.SchmancyTree.prototype,"toggler",2),l([c.query('slot:not([name="root"])')],exports.SchmancyTree.prototype,"defaultSlot",2),l([c.query("#chevron")],exports.SchmancyTree.prototype,"chevron",2),exports.SchmancyTree=l([c.customElement("schmancy-tree")],exports.SchmancyTree);
27
- //# sourceMappingURL=tree-BncfGRKE.cjs.map
27
+ //# sourceMappingURL=tree-DpKb9Q-1.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-BncfGRKE.cjs","sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: true, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"names":["SchmancyTree","TailwindElement","css","super","arguments","this","open","firstUpdated","defaultSlot","hidden","toggleClick$","fromEvent","toggler","pipe","takeUntil","disconnecting","tap","e","preventDefault","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","chevronClick$","chevron","merge","switchMap","fromDeg","toDeg","chevronAnimation","animate","transform","duration","easing","fill","fromOpacity","toOpacity","slotAnimation","opacity","onfinish","style","height","zip","subscribe","render","html","__decorateClass","property","type","Boolean","prototype","query","customElement"],"mappings":"oZAWaA,QAAAA,aAAN,cAA2BC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA3C,CAAA,CAAA,cAAAC,MAAAA,GAAAC,SAAAA,EAiBuBC,KAAAC,KAAAA,EAAO,CAQpC,cAAAC,CAEMF,KAAKC,OACTD,KAAKG,YAAYC,OAAAA,IAIlB,MAAMC,EAAeC,EAAAA,UAAsBN,KAAKO,QAAS,OAAA,EAASC,KACjEC,EAAAA,UAAUT,KAAKU,aAAAA,EACfC,EAAAA,IAAIC,GAAAA,CACHA,EAAEC,iBACFD,EAAEE,gBAAAA,EACFd,KAAKe,cAAc,IAAIC,YAAY,SAAU,CAAEC,WAAeC,SAAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,EAKpEC,EAAgBb,EAAAA,UAAsBN,KAAKoB,QAAS,OAAA,EAE1DC,QAAMhB,EAAcc,CAAAA,EAClBX,KACAc,EAAAA,UAAU,IAAA,CAGT,MAAMC,EAAUvB,KAAKC,KAAO,IAAM,EAC5BuB,EAAQxB,KAAKC,KAAO,EAAI,IACxBwB,EAAmBzB,KAAKoB,QAAQM,QACrC,CAAC,CAAEC,UAAW,UAAUJ,CAAAA,MAAAA,EAAiB,CAAEI,UAAW,UAAUH,CAAAA,MAAAA,CAAAA,EAChE,CACCI,SAAU,IACVC,OAAQ,UACRC,KAAM,UAAA,CAAA,EAKH9B,KAAKC,OAETD,KAAKG,YAAYC,WAGlB,MAAM2B,EAAc/B,KAAKC,KAAO,EAAI,EAC9B+B,EAAYhC,KAAKC,KAAO,EAAI,EAE5BgC,EAAgBjC,KAAKG,YAAYuB,QAAQ,CAAC,CAAEQ,QAASH,CAAAA,EAAe,CAAEG,QAASF,CAAAA,CAAAA,EAAc,CAClGJ,SAAU,IACVC,OAAQ,WACRC,KAAM,UAAA,CAAA,EAcP,OAVAG,EAAcE,SAAW,KACpBnC,KAAKC,KACRD,KAAKG,YAAYC,OAAAA,IAEjBJ,KAAKG,YAAYiC,MAAMC,OAAS,OAChCrC,KAAKG,YAAYiC,MAAMF,QAAU,IAAA,EAK5BI,EAAAA,IAAIhC,YAAUmB,EAAkB,UAAWnB,EAAAA,UAAU2B,EAAe,QAAA,CAAA,EAAWzB,KACrFC,EAAAA,UAAUT,KAAKU,aAAAA,CAAAA,CAAAA,CAAAA,EAGjBC,EAAAA,IAAI,IAAA,CAEHX,KAAKC,MAAQD,KAAKC,IAAAA,CAAAA,EAEnBQ,EAAAA,UAAUT,KAAKU,gBAEf6B,UAAAA,CACH,CAEA,QAAAC,CACC,OAAOC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2DAOmD7B,GAAaA,EAAEE,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAM1E,CAAA,EAhG6B4B,EAAA,CAA5BC,WAAS,CAAEC,KAAMC,OAAAA,CAAAA,CAAAA,EAjBNlD,qBAiBiBmD,UAAA,OAAA,GAEVJ,EAAA,CAAlBK,EAAAA,MAAM,UAAA,CAAA,EAnBKpD,qBAmBOmD,UAAA,UAAA,CAAA,EACeJ,EAAA,CAAjCK,EAAAA,MAAM,yBAAA,CAAA,EApBKpD,qBAoBsBmD,UAAA,cAAA,CAAA,EAGfJ,EAAA,CAAlBK,EAAAA,MAAM,UAAA,CAAA,EAvBKpD,qBAuBOmD,UAAA,UAAA,CAAA,EAvBPnD,QAAAA,aAAN+C,EAAA,CADNM,EAAAA,cAAc,eAAA,CAAA,EACFrD"}
1
+ {"version":3,"file":"tree-DpKb9Q-1.cjs","sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: true, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"names":["SchmancyTree","TailwindElement","css","super","arguments","this","open","firstUpdated","defaultSlot","hidden","toggleClick$","fromEvent","toggler","pipe","takeUntil","disconnecting","tap","e","preventDefault","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","chevronClick$","chevron","merge","switchMap","fromDeg","toDeg","chevronAnimation","animate","transform","duration","easing","fill","fromOpacity","toOpacity","slotAnimation","opacity","onfinish","style","height","zip","subscribe","render","html","__decorateClass","property","type","Boolean","prototype","query","customElement"],"mappings":"oZAWaA,QAAAA,aAAN,cAA2BC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA3C,CAAA,CAAA,cAAAC,MAAAA,GAAAC,SAAAA,EAiBuBC,KAAAC,KAAAA,EAAO,CAQpC,cAAAC,CAEMF,KAAKC,OACTD,KAAKG,YAAYC,OAAAA,IAIlB,MAAMC,EAAeC,EAAAA,UAAsBN,KAAKO,QAAS,OAAA,EAASC,KACjEC,EAAAA,UAAUT,KAAKU,aAAAA,EACfC,EAAAA,IAAIC,GAAAA,CACHA,EAAEC,iBACFD,EAAEE,gBAAAA,EACFd,KAAKe,cAAc,IAAIC,YAAY,SAAU,CAAEC,WAAeC,SAAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAA,EAKpEC,EAAgBb,EAAAA,UAAsBN,KAAKoB,QAAS,OAAA,EAE1DC,QAAMhB,EAAcc,CAAAA,EAClBX,KACAc,EAAAA,UAAU,IAAA,CAGT,MAAMC,EAAUvB,KAAKC,KAAO,IAAM,EAC5BuB,EAAQxB,KAAKC,KAAO,EAAI,IACxBwB,EAAmBzB,KAAKoB,QAAQM,QACrC,CAAC,CAAEC,UAAW,UAAUJ,CAAAA,MAAAA,EAAiB,CAAEI,UAAW,UAAUH,CAAAA,MAAAA,CAAAA,EAChE,CACCI,SAAU,IACVC,OAAQ,UACRC,KAAM,UAAA,CAAA,EAKH9B,KAAKC,OAETD,KAAKG,YAAYC,WAGlB,MAAM2B,EAAc/B,KAAKC,KAAO,EAAI,EAC9B+B,EAAYhC,KAAKC,KAAO,EAAI,EAE5BgC,EAAgBjC,KAAKG,YAAYuB,QAAQ,CAAC,CAAEQ,QAASH,CAAAA,EAAe,CAAEG,QAASF,CAAAA,CAAAA,EAAc,CAClGJ,SAAU,IACVC,OAAQ,WACRC,KAAM,UAAA,CAAA,EAcP,OAVAG,EAAcE,SAAW,KACpBnC,KAAKC,KACRD,KAAKG,YAAYC,OAAAA,IAEjBJ,KAAKG,YAAYiC,MAAMC,OAAS,OAChCrC,KAAKG,YAAYiC,MAAMF,QAAU,IAAA,EAK5BI,EAAAA,IAAIhC,YAAUmB,EAAkB,UAAWnB,EAAAA,UAAU2B,EAAe,QAAA,CAAA,EAAWzB,KACrFC,EAAAA,UAAUT,KAAKU,aAAAA,CAAAA,CAAAA,CAAAA,EAGjBC,EAAAA,IAAI,IAAA,CAEHX,KAAKC,MAAQD,KAAKC,IAAAA,CAAAA,EAEnBQ,EAAAA,UAAUT,KAAKU,gBAEf6B,UAAAA,CACH,CAEA,QAAAC,CACC,OAAOC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2DAOmD7B,GAAaA,EAAEE,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAM1E,CAAA,EAhG6B4B,EAAA,CAA5BC,WAAS,CAAEC,KAAMC,OAAAA,CAAAA,CAAAA,EAjBNlD,qBAiBiBmD,UAAA,OAAA,GAEVJ,EAAA,CAAlBK,EAAAA,MAAM,UAAA,CAAA,EAnBKpD,qBAmBOmD,UAAA,UAAA,CAAA,EACeJ,EAAA,CAAjCK,EAAAA,MAAM,yBAAA,CAAA,EApBKpD,qBAoBsBmD,UAAA,cAAA,CAAA,EAGfJ,EAAA,CAAlBK,EAAAA,MAAM,UAAA,CAAA,EAvBKpD,qBAuBOmD,UAAA,UAAA,CAAA,EAvBPnD,QAAAA,aAAN+C,EAAA,CADNM,EAAAA,cAAc,eAAA,CAAA,EACFrD"}
@@ -2,7 +2,7 @@ import { fromEvent as p, takeUntil as c, tap as g, merge as m, switchMap as f, z
2
2
  import "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
4
  import { property as y, query as h, customElement as v } from "lit/decorators.js";
5
- import { T as b } from "./tailwind.mixin-CUBQFucF.js";
5
+ import { T as b } from "./tailwind.mixin-C13RR5x6.js";
6
6
  import { css as S, html as w } from "lit";
7
7
  var k = Object.defineProperty, j = Object.getOwnPropertyDescriptor, l = (e, s, o, i) => {
8
8
  for (var r, t = i > 1 ? void 0 : i ? j(s, o) : s, a = e.length - 1; a >= 0; a--) (r = e[a]) && (t = (i ? r(s, o, t) : r(t)) || t);
@@ -61,4 +61,4 @@ l([y({ type: Boolean })], n.prototype, "open", 2), l([h("#toggler")], n.prototyp
61
61
  export {
62
62
  n as S
63
63
  };
64
- //# sourceMappingURL=tree-BalOrz7r.js.map
64
+ //# sourceMappingURL=tree-cl3PdPTy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-BalOrz7r.js","sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: true, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"names":["SchmancyTree","TailwindElement","css","super","arguments","this","open","firstUpdated","defaultSlot","hidden","toggleClick$","fromEvent","toggler","pipe","takeUntil","disconnecting","tap","e","preventDefault","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","chevronClick$","chevron","merge","switchMap","fromDeg","toDeg","chevronAnimation","animate","transform","duration","easing","fill","fromOpacity","toOpacity","slotAnimation","opacity","onfinish","style","height","zip","subscribe","render","html","__decorateClass","property","type","Boolean","prototype","query","customElement"],"mappings":";;;;;;;;;;AAWO,IAAMA,IAAN,cAA2BC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA3C,EAAA;AAAA,EAAA;AAAAC,UAAAA,GAAAC,SAAAA,GAiBuBC,KAAAC,OAAAA;AAAAA,EAAO;AAAA,EAQpC,eAAAC;AAEMF,SAAKC,SACTD,KAAKG,YAAYC,SAAAA;AAIlB,UAAMC,IAAeC,EAAsBN,KAAKO,SAAS,SAASC,KACjEC,EAAUT,KAAKU,aAAAA,GACfC,EAAIC,CAAAA,MAAAA;AACHA,MAAAA,EAAEC,eAAAA,GACFD,EAAEE,mBACFd,KAAKe,cAAc,IAAIC,YAAY,UAAU,EAAEC,SAAAA,IAAeC,UAAAA,GAAU,CAAA,CAAA;AAAA,IAAA,CAAA,CAAA,GAKpEC,IAAgBb,EAAsBN,KAAKoB,SAAS,OAAA;AAE1DC,IAAAA,EAAMhB,GAAcc,CAAAA,EAClBX,KACAc,EAAU;AAGT,YAAMC,IAAUvB,KAAKC,OAAO,MAAM,GAC5BuB,IAAQxB,KAAKC,OAAO,IAAI,KACxBwB,IAAmBzB,KAAKoB,QAAQM,QACrC,CAAC,EAAEC,WAAW,UAAUJ,CAAAA,OAAAA,GAAiB,EAAEI,WAAW,UAAUH,YAChE,EACCI,UAAU,KACVC,QAAQ,WACRC,MAAM,WAAA,CAAA;AAKH9B,WAAKC,SAETD,KAAKG,YAAYC,SAAAA;AAGlB,YAAM2B,IAAc/B,KAAKC,OAAO,IAAI,GAC9B+B,IAAYhC,KAAKC,OAAO,IAAI,GAE5BgC,IAAgBjC,KAAKG,YAAYuB,QAAQ,CAAC,EAAEQ,SAASH,EAAAA,GAAe,EAAEG,SAASF,EAAAA,CAAAA,GAAc,EAClGJ,UAAU,KACVC,QAAQ,YACRC,MAAM;AAcP,aAVAG,EAAcE,WAAW,MAAA;AACpBnC,aAAKC,OACRD,KAAKG,YAAYC,SAAAA,MAEjBJ,KAAKG,YAAYiC,MAAMC,SAAS,QAChCrC,KAAKG,YAAYiC,MAAMF,UAAU;AAAA,MAAA,GAK5BI,EAAIhC,EAAUmB,GAAkB,WAAWnB,EAAU2B,GAAe,QAAA,CAAA,EAAWzB,KACrFC,EAAUT,KAAKU,aAAAA,CAAAA;AAAAA,IAAAA,CAAAA,GAGjBC,EAAI,MAAA;AAEHX,WAAKC,OAAAA,CAAQD,KAAKC;AAAAA,IAAAA,CAAAA,GAEnBQ,EAAUT,KAAKU,aAAAA,CAAAA,EAEf6B,UAAAA;AAAAA,EACH;AAAA,EAEA,SAAAC;AACC,WAAOC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2DAOmD7B,CAAAA,MAAaA,EAAEE,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAM1E;AAAA;AAhG6B4B,EAAA,CAA5BC,EAAS,EAAEC,MAAMC,aAjBNlD,EAiBiBmD,WAAA,QAAA,CAAA,GAEVJ,EAAA,CAAlBK,EAAM,cAnBKpD,EAmBOmD,WAAA,WAAA,CAAA,GACeJ,EAAA,CAAjCK,EAAM,6BApBKpD,EAoBsBmD,WAAA,eAAA,CAAA,GAGfJ,EAAA,CAAlBK,EAAM,UAAA,CAAA,GAvBKpD,EAuBOmD,WAAA,WAAA,CAAA,GAvBPnD,IAAN+C,EAAA,CADNM,EAAc,mBACFrD,CAAAA;"}
1
+ {"version":3,"file":"tree-cl3PdPTy.js","sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: true, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"names":["SchmancyTree","TailwindElement","css","super","arguments","this","open","firstUpdated","defaultSlot","hidden","toggleClick$","fromEvent","toggler","pipe","takeUntil","disconnecting","tap","e","preventDefault","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","chevronClick$","chevron","merge","switchMap","fromDeg","toDeg","chevronAnimation","animate","transform","duration","easing","fill","fromOpacity","toOpacity","slotAnimation","opacity","onfinish","style","height","zip","subscribe","render","html","__decorateClass","property","type","Boolean","prototype","query","customElement"],"mappings":";;;;;;;;;;AAWO,IAAMA,IAAN,cAA2BC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA3C,EAAA;AAAA,EAAA;AAAAC,UAAAA,GAAAC,SAAAA,GAiBuBC,KAAAC,OAAAA;AAAAA,EAAO;AAAA,EAQpC,eAAAC;AAEMF,SAAKC,SACTD,KAAKG,YAAYC,SAAAA;AAIlB,UAAMC,IAAeC,EAAsBN,KAAKO,SAAS,SAASC,KACjEC,EAAUT,KAAKU,aAAAA,GACfC,EAAIC,CAAAA,MAAAA;AACHA,MAAAA,EAAEC,eAAAA,GACFD,EAAEE,mBACFd,KAAKe,cAAc,IAAIC,YAAY,UAAU,EAAEC,SAAAA,IAAeC,UAAAA,GAAU,CAAA,CAAA;AAAA,IAAA,CAAA,CAAA,GAKpEC,IAAgBb,EAAsBN,KAAKoB,SAAS,OAAA;AAE1DC,IAAAA,EAAMhB,GAAcc,CAAAA,EAClBX,KACAc,EAAU;AAGT,YAAMC,IAAUvB,KAAKC,OAAO,MAAM,GAC5BuB,IAAQxB,KAAKC,OAAO,IAAI,KACxBwB,IAAmBzB,KAAKoB,QAAQM,QACrC,CAAC,EAAEC,WAAW,UAAUJ,CAAAA,OAAAA,GAAiB,EAAEI,WAAW,UAAUH,YAChE,EACCI,UAAU,KACVC,QAAQ,WACRC,MAAM,WAAA,CAAA;AAKH9B,WAAKC,SAETD,KAAKG,YAAYC,SAAAA;AAGlB,YAAM2B,IAAc/B,KAAKC,OAAO,IAAI,GAC9B+B,IAAYhC,KAAKC,OAAO,IAAI,GAE5BgC,IAAgBjC,KAAKG,YAAYuB,QAAQ,CAAC,EAAEQ,SAASH,EAAAA,GAAe,EAAEG,SAASF,EAAAA,CAAAA,GAAc,EAClGJ,UAAU,KACVC,QAAQ,YACRC,MAAM;AAcP,aAVAG,EAAcE,WAAW,MAAA;AACpBnC,aAAKC,OACRD,KAAKG,YAAYC,SAAAA,MAEjBJ,KAAKG,YAAYiC,MAAMC,SAAS,QAChCrC,KAAKG,YAAYiC,MAAMF,UAAU;AAAA,MAAA,GAK5BI,EAAIhC,EAAUmB,GAAkB,WAAWnB,EAAU2B,GAAe,QAAA,CAAA,EAAWzB,KACrFC,EAAUT,KAAKU,aAAAA,CAAAA;AAAAA,IAAAA,CAAAA,GAGjBC,EAAI,MAAA;AAEHX,WAAKC,OAAAA,CAAQD,KAAKC;AAAAA,IAAAA,CAAAA,GAEnBQ,EAAUT,KAAKU,aAAAA,CAAAA,EAEf6B,UAAAA;AAAAA,EACH;AAAA,EAEA,SAAAC;AACC,WAAOC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2DAOmD7B,CAAAA,MAAaA,EAAEE,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAM1E;AAAA;AAhG6B4B,EAAA,CAA5BC,EAAS,EAAEC,MAAMC,aAjBNlD,EAiBiBmD,WAAA,QAAA,CAAA,GAEVJ,EAAA,CAAlBK,EAAM,cAnBKpD,EAmBOmD,WAAA,WAAA,CAAA,GACeJ,EAAA,CAAjCK,EAAM,6BApBKpD,EAoBsBmD,WAAA,eAAA,CAAA,GAGfJ,EAAA,CAAlBK,EAAM,UAAA,CAAA,GAvBKpD,EAuBOmD,WAAA,WAAA,CAAA,GAvBPnD,IAAN+C,EAAA,CADNM,EAAc,mBACFrD,CAAAA;"}
package/dist/tree.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tree-BncfGRKE.cjs");Object.defineProperty(exports,"SchmancyTree",{enumerable:!0,get:()=>e.SchmancyTree});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tree-DpKb9Q-1.cjs");Object.defineProperty(exports,"SchmancyTree",{enumerable:!0,get:()=>e.SchmancyTree});
2
2
  //# sourceMappingURL=tree.cjs.map
package/dist/tree.js CHANGED
@@ -1,4 +1,4 @@
1
- import { S as a } from "./tree-BalOrz7r.js";
1
+ import { S as a } from "./tree-cl3PdPTy.js";
2
2
  export {
3
3
  a as SchmancyTree
4
4
  };
@@ -1,21 +1,9 @@
1
- "use strict";const J=require("./consume-edta5ng5.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("lit/decorators.js");require("./tailwind.mixin-tQzjJi1o.cjs");const W=require("./litElement.mixin-De6F4bUs.cjs"),M=require("./delay-xtpIck-Z.cjs"),G=require("./intersection-CVvaDv96.cjs"),k=require("lit"),B=s=>Array.isArray(s),A=s=>B(s)?s:[s],j="data-typeit-id",y="ti-cursor",Y={started:!1,completed:!1,frozen:!1,destroyed:!1},f={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(s=>({opacity:s})),options:{iterations:1/0,easing:"steps(2, start)",fill:"forwards"}}},cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},Z=`[${j}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,C=s=>document.createElement(s),q=s=>document.createTextNode(s),_=(s,e="")=>{let t=C("style");t.id=e,t.appendChild(q(s)),document.head.appendChild(t)},$=s=>(B(s)||(s=[s/2,s/2]),s),O=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let H=s=>s/2;const K=s=>Array.from(s);let N=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(q(t),e)}),void e.remove();N(e)}),s);const Q=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,N(e.body)};function U(s,e=!1,t=!1){let i,r=s.querySelector(`.${y}`),n=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:a=>{if(r&&t){if(a.classList?.contains(y))return NodeFilter.FILTER_ACCEPT;if(r.contains(a))return NodeFilter.FILTER_REJECT}return a.classList?.contains(y)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),o=[];for(;i=n.nextNode();)i.originalParent||(i.originalParent=i.parentNode),o.push(i);return e?o.reverse():o}function ee(s,e=!0){return e?U(Q(s)):K(s).map(q)}const te=({index:s,newIndex:e,queueItems:t,cleanUp:i})=>{for(let r=s+1;r<e+1;r++)i(t[r][0])},V=s=>Number.isInteger(s),z=({queueItems:s,selector:e,cursorPosition:t,to:i})=>{if(V(e))return-1*e;let r=new RegExp("END","i").test(i),n=e?[...s].reverse().findIndex(({char:o})=>{let a=o.parentElement,u=a.matches(e);return!(!r||!u)||u&&a.firstChild.isSameNode(o)}):-1;return n<0&&(n=r?0:s.length-1),n-t+(r?0:1)},I=(s,e)=>new Array(e).fill(s);let v=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),F=s=>s?.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),X=({cursor:s,frames:e,options:t})=>{let i=s.animate(e,t);return i.pause(),i.id=s.dataset.tiAnimationId,v(()=>{v(()=>{i.play()})}),i},R=s=>s.func?.call(null),se=async({index:s,queueItems:e,wait:t,cursor:i,cursorOptions:r})=>{let n=e[s][1],o=[],a=s,u=n,h=()=>u&&!u.delay,l=n.shouldPauseCursor()&&r.autoPause;for(;h();)o.push(u),h()&&a++,u=e[a]?e[a][1]:null;if(o.length)return await v(async()=>{for(let b of o)await R(b)}),a-1;let c,m=F(i);return m&&(c={...m.effect.getComputedTiming(),delay:l?r.autoPauseDelay:0}),await t(async()=>{m&&l&&m.cancel(),await v(()=>{R(n)})},n.delay),await(({cursor:b,options:L,cursorOptions:x})=>{if(!b||!x)return;let P,T=F(b);T&&(L.delay=T.effect.getComputedTiming().delay,P=T.currentTime,T.cancel());let D=X({cursor:b,frames:x.animation.frames,options:L});return P&&(D.currentTime=P),D})({cursor:i,options:c,cursorOptions:r}),s};const E=s=>"value"in s;let g=s=>typeof s=="function"?s():s,S=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const w=(s,e)=>Object.assign({},s,e);let ie={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};class re{element;timeouts;cursorPosition;predictedCursorPosition;statuses={started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1};opts;id;queue;cursor;flushCallback=null;unfreeze=()=>{};constructor(e,t={}){var i;this.opts=w(f,t),this.element=typeof(i=e)=="string"?S(i):i,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=w({},Y),this.id=Math.random().toString().substring(2,9),this.queue=function(r){let n=function(l){return A(l).forEach(c=>h.set(Symbol(c.char?.innerText),o({...c}))),this},o=l=>(l.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},l),a=()=>h,u=()=>Array.from(h.values()),h=new Map;return n(r),{add:n,set:function(l,c){let m=[...h.keys()];h.set(m[l],o(c))},wipe:function(){h=new Map,n(r)},done:(l,c=!1)=>c?h.delete(l):h.get(l).done=!0,reset:function(){h.forEach(l=>delete l.done)},destroy:l=>h.delete(l),getItems:(l=!1)=>l?u():u().filter(c=>!c.done),getQueue:a,getTypeable:()=>u().filter(l=>l.typeable),getPendingQueueItems:()=>{const l=[];for(let[,c]of a())c.done||l.push(c);return l}}}([{delay:this.opts.startDelay}]),this.#E(t),this.cursor=this.#v(),this.element.dataset.typeitId=this.id,_(Z),this.opts.strings.length&&this.#I()}go(){return this.statuses.started?this:(this.#m(),this.opts.waitUntilVisible?(e=this.element,t=this.#i.bind(this),new IntersectionObserver((i,r)=>{i.forEach(n=>{n.isIntersecting&&(t(),r.unobserve(e))})},{threshold:1}).observe(e),this):(this.#i(),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),g(e)&&this.cursor&&this.#c(this.cursor),this.statuses.destroyed=!0}reset(e){!this.is("destroyed")&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let t in this.statuses)this.statuses[t]=!1;return this.element[this.#u()?"value":"innerHTML"]="",this}is=function(e){return this.statuses[e]};type(e,t={}){e=g(e);let{instant:i}=t,r=this.#r(t),n=ee(e,this.opts.html).map(a=>{return{func:()=>this.#h(a),char:a,delay:i||(u=a,/<(.+)>(.*?)<\/(.+)>/.test(u.outerHTML))?0:this.#s(),typeable:a.nodeType===Node.TEXT_NODE};var u}),o=[r[0],{func:async()=>await this.opts.beforeString(e,this)},...n,{func:async()=>await this.opts.afterString(e,this)},r[1]];return this.#e(o,t)}break(e={}){return this.#e({func:()=>this.#h(C("BR")),typeable:!0},e)}move(e,t={}){e=g(e);let i=this.#r(t),{instant:r,to:n}=t,o=z({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:n,cursorPosition:this.#a}),a=o<0?-1:1;return this.predictedCursorPosition=this.#a+o,this.#e([i[0],...I({func:()=>this.#p(a),delay:r?0:this.#s(),cursorable:!0},Math.abs(o)),i[1]],t)}exec(e,t={}){let i=this.#r(t);return this.#e([i[0],{func:()=>e(this)},i[1]],t)}options(e,t={}){return e=g(e),this.#n(e),this.#e({},t)}pause(e,t={}){return this.#e({delay:g(e)},t)}delete(e=null,t={}){e=g(e);let i=this.#r(t),r=e,{instant:n,to:o}=t,a=this.queue.getTypeable(),u=r===null?a.length:V(r)?r:z({queueItems:a,selector:r,cursorPosition:this.#a,to:o});return this.#e([i[0],...I({func:this.#o.bind(this),delay:n?0:this.#s(1),deletable:!0},u),i[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(this.#m(),this.#i(!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return this.#n(e)}getElement(){return this.element}empty(e={}){return this.#e({func:this.#b.bind(this)},e)}async#b(){this.#u()?this.element.value="":this.#t.forEach(this.#c.bind(this))}async#i(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=i=>{this.queue.done(i,!e)};try{let i=[...this.queue.getQueue()];for(let n=0;n<i.length;n++){let[o,a]=i[n];if(!a.done){if(!a.deletable||a.deletable&&this.#t.length){let u=await this.#d(n,i);te({index:n,newIndex:u,queueItems:i,cleanUp:t}),n=u}t(o)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw"";let r=this.opts.loopDelay;this.#y(async()=>{await this.#w(r[0]),this.#i()},r[1])}catch{}return this.statuses.firing=!1,this}async#p(e){var t,i,r;this.cursorPosition=(t=e,i=this.cursorPosition,r=this.#t,Math.min(Math.max(i+t,0),r.length)),((n,o,a)=>{let u=o[a-1],h=S(`.${y}`,n);(n=u?.parentNode||n).insertBefore(h,u||null)})(this.element,this.#t,this.cursorPosition)}async#w(e){let t=this.#a;t&&await this.#p({value:t});let i=this.#t.map(r=>[Symbol(),{func:this.#o.bind(this),delay:this.#s(1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let r=0;r<i.length;r++)await this.#d(r,i);this.queue.reset(),this.queue.set(0,{delay:e})}#d(e,t){return se({index:e,queueItems:t,wait:this.#y.bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})}async#y(e,t,i=!1){this.statuses.frozen&&await new Promise(r=>{this.unfreeze=()=>{this.statuses.frozen=!1,r()}}),i||await this.opts.beforeStep(this),await((r,n,o)=>new Promise(a=>{o.push(setTimeout(async()=>{await r(),a()},n||0))}))(e,t,this.timeouts),i||await this.opts.afterStep(this)}async#m(){if(!this.#u()&&this.cursor&&this.element.appendChild(this.cursor),this.#g){((r,n)=>{let o=`[${j}='${r}'] .${y}`,a=getComputedStyle(n),u=Object.entries(ie).reduce((h,[l,c])=>`${h} ${l}: var(--ti-cursor-${l}, ${c||a[l]});`,"");_(`${o} { display: inline-block; width: 0; ${u} }`,r)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:i}=e;X({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...i}})}}#u(){return E(this.element)}#e(e,t){return this.queue.add(e),this.#T(t),this}#T(e={}){let t=e.delay;t&&this.queue.add({delay:t})}#r(e={}){return[{func:()=>this.#n(e)},{func:()=>this.#n(this.opts)}]}async#n(e){this.opts=w(this.opts,e)}#I(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,i)=>{if(this.type(t),i+1===e.length)return;let r=this.opts.breakLines?[{func:()=>this.#h(C("BR")),typeable:!0}]:I({func:this.#o.bind(this),delay:this.#s(1)},this.queue.getTypeable().length);this.#f(r)})}#E=e=>{this.opts.cursor=(t=>{if(typeof t=="object"){let i={},{frames:r,options:n}=f.cursor.animation;return i.animation=t.animation||{},i.animation.frames=t.animation?.frames||r,i.animation.options=w(n,t.animation?.options||{}),i.autoPause=t.autoPause??f.cursor.autoPause,i.autoPauseDelay=t.autoPauseDelay||f.cursor.autoPauseDelay,i}return t===!0?f.cursor:t})(e.cursor??f.cursor),this.opts.strings=this.#C(A(this.opts.strings)),this.opts=w(this.opts,{html:!this.#l&&this.opts.html,nextStringDelay:$(this.opts.nextStringDelay),loopDelay:$(this.opts.loopDelay)})};#C(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,N(this.element),this.#f(I({func:this.#o.bind(this),delay:this.#s(1),deletable:!0},this.#t.length)),e):(i=t,i.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var i}#v(){if(this.#l)return null;let e=C("span");return e.className=y,this.#g?(e.innerHTML=Q(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)}#f(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])}#h(e){((t,i)=>{if(E(t))return void(t.value=`${t.value}${i.textContent}`);i.innerHTML="";let r=(n=i.originalParent,/body/i.test(n?.tagName)?t:i.originalParent||t);var n;let o=S("."+y,r)||null;o&&o.parentElement!==r&&(r=o.parentElement),r.insertBefore(i,o)})(this.element,e)}#o(){this.#t.length&&(this.#l?this.element.value=this.element.value.slice(0,-1):this.#c(this.#t[this.cursorPosition]))}#c(e){((t,i)=>{if(!t)return;let r=t.parentNode;(r.childNodes.length>1||r.isSameNode(i)?t:r).remove()})(e,this.element)}#s(e=0){return function(t){let{speed:i,deleteSpeed:r,lifeLike:n}=t;return r=r!==null?r:i/3,n?[O(i,H(i)),O(r,H(r))]:[i,r]}(this.opts)[e]}get#a(){return this.predictedCursorPosition??this.cursorPosition}get#l(){return E(this.element)}get#g(){return!!this.opts.cursor&&!this.#l}get#t(){return e=this.element,E(e)?K(e.value):U(e,!0).filter(t=>!(t.childNodes.length>0));var e}}var ne=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,d=(s,e,t,i)=>{for(var r,n=i>1?void 0:i?oe(e,t):e,o=s.length-1;o>=0;o--)(r=s[o])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&ne(e,t,n),n};exports.TypewriterElement=class extends W.$LitElement(k.css`
2
- :host {
3
- display: inherit;
4
- }
5
-
6
- #typewriter {
7
- --ti-cursor-display: initial;
8
- }
9
-
10
- #typewriter .ti-cursor {
11
- display: var(--ti-cursor-display);
12
- }
13
- `){constructor(){super(...arguments),this.speed=50,this.delay=0,this.autoStart=!0,this.cursorChar="",this.deleteSpeed=25,this.once=!0,this.typeItInstance=null,this.sessionKey=""}disconnectedCallback(){super.disconnectedCallback(),this._destroyTypeIt()}_startTyping(){if(this._destroyTypeIt(),this.sessionKey=this.generateSessionKey(),this.once&&sessionStorage.getItem(this.sessionKey)==="true")return void this.shadowRoot?.querySelector("slot")?.removeAttribute("hidden");if(!this.typewriterContainer)return;const s={speed:this.speed,startDelay:this.delay,cursor:!!this.cursorChar,cursorChar:this.cursorChar,deleteSpeed:this.deleteSpeed,afterComplete:()=>{if(this.once)try{sessionStorage.setItem(this.sessionKey,"true")}catch{}this.dispatchEvent(new CustomEvent("typeit-complete",{bubbles:!0,composed:!0})),this.typewriterContainer.style.setProperty("--ti-cursor-display","none")}};this.typeItInstance=new re(this.typewriterContainer,s),this._getSlottedNodes.forEach(e=>{e.nodeType===Node.TEXT_NODE?this.typeItInstance?.type(e.textContent||""):e instanceof HTMLElement&&this._processCustomElement(e)}),G.intersection$(this.shadowRoot?.host).subscribe(()=>{this.typeItInstance?.go()})}generateSessionKey(){const s=this._getSlottedElements.map(e=>e.outerHTML).join("");return this.once?M.hashContent(s):""}_destroyTypeIt(){if(this.typeItInstance){try{this.typeItInstance.destroy()}catch{}this.typeItInstance=null}}_processCustomElement(s){const e=s.getAttribute("action"),t=s.getAttribute("value");switch(e){case"pause":this.typeItInstance?.pause(parseInt(t||"0",10));break;case"delete":this.typeItInstance?.delete(parseInt(t||"0",10));break;default:s.tagName==="P"&&this.typeItInstance.break(),this.typeItInstance?.type(s.textContent||"")}}render(){return k.html`<div id="typewriter" aria-live="polite"></div>
1
+ "use strict";const X=require("./consume-edta5ng5.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("lit/decorators.js");require("./tailwind.mixin-O9jmUJ7m.cjs");const J=require("./litElement.mixin-DFG5Ckp7.cjs"),M=require("./delay-l2gPaJoH.cjs"),W=require("./intersection-CVvaDv96.cjs"),G=require("lit"),R=s=>Array.isArray(s),k=s=>R(s)?s:[s],B="data-typeit-id",y="ti-cursor",Y={started:!1,completed:!1,frozen:!1,destroyed:!1},f={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(s=>({opacity:s})),options:{iterations:1/0,easing:"steps(2, start)",fill:"forwards"}}},cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},Z=`[${B}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,C=s=>document.createElement(s),q=s=>document.createTextNode(s),A=(s,e="")=>{let t=C("style");t.id=e,t.appendChild(q(s)),document.head.appendChild(t)},_=s=>(R(s)||(s=[s/2,s/2]),s),$=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let O=s=>s/2;const j=s=>Array.from(s);let N=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(q(t),e)}),void e.remove();N(e)}),s);const K=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,N(e.body)};function Q(s,e=!1,t=!1){let i,r=s.querySelector(`.${y}`),n=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:a=>{if(r&&t){if(a.classList?.contains(y))return NodeFilter.FILTER_ACCEPT;if(r.contains(a))return NodeFilter.FILTER_REJECT}return a.classList?.contains(y)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),o=[];for(;i=n.nextNode();)i.originalParent||(i.originalParent=i.parentNode),o.push(i);return e?o.reverse():o}function ee(s,e=!0){return e?Q(K(s)):j(s).map(q)}const te=({index:s,newIndex:e,queueItems:t,cleanUp:i})=>{for(let r=s+1;r<e+1;r++)i(t[r][0])},U=s=>Number.isInteger(s),H=({queueItems:s,selector:e,cursorPosition:t,to:i})=>{if(U(e))return-1*e;let r=new RegExp("END","i").test(i),n=e?[...s].reverse().findIndex(({char:o})=>{let a=o.parentElement,u=a.matches(e);return!(!r||!u)||u&&a.firstChild.isSameNode(o)}):-1;return n<0&&(n=r?0:s.length-1),n-t+(r?0:1)},I=(s,e)=>new Array(e).fill(s);let v=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),z=s=>s?.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),V=({cursor:s,frames:e,options:t})=>{let i=s.animate(e,t);return i.pause(),i.id=s.dataset.tiAnimationId,v(()=>{v(()=>{i.play()})}),i},F=s=>s.func?.call(null),se=async({index:s,queueItems:e,wait:t,cursor:i,cursorOptions:r})=>{let n=e[s][1],o=[],a=s,u=n,h=()=>u&&!u.delay,l=n.shouldPauseCursor()&&r.autoPause;for(;h();)o.push(u),h()&&a++,u=e[a]?e[a][1]:null;if(o.length)return await v(async()=>{for(let b of o)await F(b)}),a-1;let c,m=z(i);return m&&(c={...m.effect.getComputedTiming(),delay:l?r.autoPauseDelay:0}),await t(async()=>{m&&l&&m.cancel(),await v(()=>{F(n)})},n.delay),await(({cursor:b,options:L,cursorOptions:x})=>{if(!b||!x)return;let P,T=z(b);T&&(L.delay=T.effect.getComputedTiming().delay,P=T.currentTime,T.cancel());let D=V({cursor:b,frames:x.animation.frames,options:L});return P&&(D.currentTime=P),D})({cursor:i,options:c,cursorOptions:r}),s};const E=s=>"value"in s;let g=s=>typeof s=="function"?s():s,S=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const w=(s,e)=>Object.assign({},s,e);let ie={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};class re{element;timeouts;cursorPosition;predictedCursorPosition;statuses={started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1};opts;id;queue;cursor;flushCallback=null;unfreeze=()=>{};constructor(e,t={}){var i;this.opts=w(f,t),this.element=typeof(i=e)=="string"?S(i):i,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=w({},Y),this.id=Math.random().toString().substring(2,9),this.queue=function(r){let n=function(l){return k(l).forEach(c=>h.set(Symbol(c.char?.innerText),o({...c}))),this},o=l=>(l.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},l),a=()=>h,u=()=>Array.from(h.values()),h=new Map;return n(r),{add:n,set:function(l,c){let m=[...h.keys()];h.set(m[l],o(c))},wipe:function(){h=new Map,n(r)},done:(l,c=!1)=>c?h.delete(l):h.get(l).done=!0,reset:function(){h.forEach(l=>delete l.done)},destroy:l=>h.delete(l),getItems:(l=!1)=>l?u():u().filter(c=>!c.done),getQueue:a,getTypeable:()=>u().filter(l=>l.typeable),getPendingQueueItems:()=>{const l=[];for(let[,c]of a())c.done||l.push(c);return l}}}([{delay:this.opts.startDelay}]),this.#E(t),this.cursor=this.#v(),this.element.dataset.typeitId=this.id,A(Z),this.opts.strings.length&&this.#I()}go(){return this.statuses.started?this:(this.#m(),this.opts.waitUntilVisible?(e=this.element,t=this.#i.bind(this),new IntersectionObserver((i,r)=>{i.forEach(n=>{n.isIntersecting&&(t(),r.unobserve(e))})},{threshold:1}).observe(e),this):(this.#i(),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),g(e)&&this.cursor&&this.#c(this.cursor),this.statuses.destroyed=!0}reset(e){!this.is("destroyed")&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let t in this.statuses)this.statuses[t]=!1;return this.element[this.#u()?"value":"innerHTML"]="",this}is=function(e){return this.statuses[e]};type(e,t={}){e=g(e);let{instant:i}=t,r=this.#r(t),n=ee(e,this.opts.html).map(a=>{return{func:()=>this.#h(a),char:a,delay:i||(u=a,/<(.+)>(.*?)<\/(.+)>/.test(u.outerHTML))?0:this.#s(),typeable:a.nodeType===Node.TEXT_NODE};var u}),o=[r[0],{func:async()=>await this.opts.beforeString(e,this)},...n,{func:async()=>await this.opts.afterString(e,this)},r[1]];return this.#e(o,t)}break(e={}){return this.#e({func:()=>this.#h(C("BR")),typeable:!0},e)}move(e,t={}){e=g(e);let i=this.#r(t),{instant:r,to:n}=t,o=H({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:n,cursorPosition:this.#a}),a=o<0?-1:1;return this.predictedCursorPosition=this.#a+o,this.#e([i[0],...I({func:()=>this.#p(a),delay:r?0:this.#s(),cursorable:!0},Math.abs(o)),i[1]],t)}exec(e,t={}){let i=this.#r(t);return this.#e([i[0],{func:()=>e(this)},i[1]],t)}options(e,t={}){return e=g(e),this.#n(e),this.#e({},t)}pause(e,t={}){return this.#e({delay:g(e)},t)}delete(e=null,t={}){e=g(e);let i=this.#r(t),r=e,{instant:n,to:o}=t,a=this.queue.getTypeable(),u=r===null?a.length:U(r)?r:H({queueItems:a,selector:r,cursorPosition:this.#a,to:o});return this.#e([i[0],...I({func:this.#o.bind(this),delay:n?0:this.#s(1),deletable:!0},u),i[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(this.#m(),this.#i(!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return this.#n(e)}getElement(){return this.element}empty(e={}){return this.#e({func:this.#b.bind(this)},e)}async#b(){this.#u()?this.element.value="":this.#t.forEach(this.#c.bind(this))}async#i(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=i=>{this.queue.done(i,!e)};try{let i=[...this.queue.getQueue()];for(let n=0;n<i.length;n++){let[o,a]=i[n];if(!a.done){if(!a.deletable||a.deletable&&this.#t.length){let u=await this.#d(n,i);te({index:n,newIndex:u,queueItems:i,cleanUp:t}),n=u}t(o)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw"";let r=this.opts.loopDelay;this.#y(async()=>{await this.#w(r[0]),this.#i()},r[1])}catch{}return this.statuses.firing=!1,this}async#p(e){var t,i,r;this.cursorPosition=(t=e,i=this.cursorPosition,r=this.#t,Math.min(Math.max(i+t,0),r.length)),((n,o,a)=>{let u=o[a-1],h=S(`.${y}`,n);(n=u?.parentNode||n).insertBefore(h,u||null)})(this.element,this.#t,this.cursorPosition)}async#w(e){let t=this.#a;t&&await this.#p({value:t});let i=this.#t.map(r=>[Symbol(),{func:this.#o.bind(this),delay:this.#s(1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let r=0;r<i.length;r++)await this.#d(r,i);this.queue.reset(),this.queue.set(0,{delay:e})}#d(e,t){return se({index:e,queueItems:t,wait:this.#y.bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})}async#y(e,t,i=!1){this.statuses.frozen&&await new Promise(r=>{this.unfreeze=()=>{this.statuses.frozen=!1,r()}}),i||await this.opts.beforeStep(this),await((r,n,o)=>new Promise(a=>{o.push(setTimeout(async()=>{await r(),a()},n||0))}))(e,t,this.timeouts),i||await this.opts.afterStep(this)}async#m(){if(!this.#u()&&this.cursor&&this.element.appendChild(this.cursor),this.#g){((r,n)=>{let o=`[${B}='${r}'] .${y}`,a=getComputedStyle(n),u=Object.entries(ie).reduce((h,[l,c])=>`${h} ${l}: var(--ti-cursor-${l}, ${c||a[l]});`,"");A(`${o} { display: inline-block; width: 0; ${u} }`,r)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:i}=e;V({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...i}})}}#u(){return E(this.element)}#e(e,t){return this.queue.add(e),this.#T(t),this}#T(e={}){let t=e.delay;t&&this.queue.add({delay:t})}#r(e={}){return[{func:()=>this.#n(e)},{func:()=>this.#n(this.opts)}]}async#n(e){this.opts=w(this.opts,e)}#I(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,i)=>{if(this.type(t),i+1===e.length)return;let r=this.opts.breakLines?[{func:()=>this.#h(C("BR")),typeable:!0}]:I({func:this.#o.bind(this),delay:this.#s(1)},this.queue.getTypeable().length);this.#f(r)})}#E=e=>{this.opts.cursor=(t=>{if(typeof t=="object"){let i={},{frames:r,options:n}=f.cursor.animation;return i.animation=t.animation||{},i.animation.frames=t.animation?.frames||r,i.animation.options=w(n,t.animation?.options||{}),i.autoPause=t.autoPause??f.cursor.autoPause,i.autoPauseDelay=t.autoPauseDelay||f.cursor.autoPauseDelay,i}return t===!0?f.cursor:t})(e.cursor??f.cursor),this.opts.strings=this.#C(k(this.opts.strings)),this.opts=w(this.opts,{html:!this.#l&&this.opts.html,nextStringDelay:_(this.opts.nextStringDelay),loopDelay:_(this.opts.loopDelay)})};#C(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,N(this.element),this.#f(I({func:this.#o.bind(this),delay:this.#s(1),deletable:!0},this.#t.length)),e):(i=t,i.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var i}#v(){if(this.#l)return null;let e=C("span");return e.className=y,this.#g?(e.innerHTML=K(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)}#f(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])}#h(e){((t,i)=>{if(E(t))return void(t.value=`${t.value}${i.textContent}`);i.innerHTML="";let r=(n=i.originalParent,/body/i.test(n?.tagName)?t:i.originalParent||t);var n;let o=S("."+y,r)||null;o&&o.parentElement!==r&&(r=o.parentElement),r.insertBefore(i,o)})(this.element,e)}#o(){this.#t.length&&(this.#l?this.element.value=this.element.value.slice(0,-1):this.#c(this.#t[this.cursorPosition]))}#c(e){((t,i)=>{if(!t)return;let r=t.parentNode;(r.childNodes.length>1||r.isSameNode(i)?t:r).remove()})(e,this.element)}#s(e=0){return function(t){let{speed:i,deleteSpeed:r,lifeLike:n}=t;return r=r!==null?r:i/3,n?[$(i,O(i)),$(r,O(r))]:[i,r]}(this.opts)[e]}get#a(){return this.predictedCursorPosition??this.cursorPosition}get#l(){return E(this.element)}get#g(){return!!this.opts.cursor&&!this.#l}get#t(){return e=this.element,E(e)?j(e.value):Q(e,!0).filter(t=>!(t.childNodes.length>0));var e}}var ne=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,d=(s,e,t,i)=>{for(var r,n=i>1?void 0:i?oe(e,t):e,o=s.length-1;o>=0;o--)(r=s[o])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&ne(e,t,n),n};exports.TypewriterElement=class extends J.$LitElement(){constructor(){super(...arguments),this.speed=50,this.delay=0,this.autoStart=!0,this.cursorChar="",this.deleteSpeed=25,this.once=!0,this.typeItInstance=null,this.sessionKey=""}disconnectedCallback(){super.disconnectedCallback(),this._destroyTypeIt()}_startTyping(){if(this._destroyTypeIt(),this.sessionKey=this.generateSessionKey(),this.once&&sessionStorage.getItem(this.sessionKey)==="true")return void this.shadowRoot?.querySelector("slot")?.removeAttribute("hidden");if(!this.typewriterContainer)return;const s={speed:this.speed,startDelay:this.delay,cursor:!!this.cursorChar,cursorChar:this.cursorChar,deleteSpeed:this.deleteSpeed,afterComplete:()=>{if(this.once)try{sessionStorage.setItem(this.sessionKey,"true")}catch{}this.dispatchEvent(new CustomEvent("typeit-complete",{bubbles:!0,composed:!0})),this.typewriterContainer.style.setProperty("--ti-cursor-display","none")}};this.typeItInstance=new re(this.typewriterContainer,s),this._getSlottedNodes.forEach(e=>{e.nodeType===Node.TEXT_NODE?this.typeItInstance?.type(e.textContent||""):e instanceof HTMLElement&&this._processCustomElement(e)}),W.intersection$(this.shadowRoot?.host).subscribe(()=>{this.typeItInstance?.go()})}generateSessionKey(){const s=this._getSlottedElements.map(e=>e.outerHTML).join("");return this.once?M.hashContent(s):""}_destroyTypeIt(){if(this.typeItInstance){try{this.typeItInstance.destroy()}catch{}this.typeItInstance=null}}_processCustomElement(s){const e=s.getAttribute("action"),t=s.getAttribute("value");switch(e){case"pause":this.typeItInstance?.pause(parseInt(t||"0",10));break;case"delete":this.typeItInstance?.delete(parseInt(t||"0",10));break;default:s.tagName==="P"&&this.typeItInstance.break(),this.typeItInstance?.type(s.textContent||"")}}render(){return G.html`<div id="typewriter" aria-live="polite"></div>
14
2
 
15
3
  <div class="typewriter">
16
4
  <slot
17
5
  hidden
18
6
  @slotchange=${()=>{this._startTyping()}}
19
7
  ></slot>
20
- </div> `}},d([p.property({type:Number})],exports.TypewriterElement.prototype,"speed",2),d([J.c({context:M.delayContext,subscribe:!0}),p.property({type:Number})],exports.TypewriterElement.prototype,"delay",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"autoStart",2),d([p.property({type:String})],exports.TypewriterElement.prototype,"cursorChar",2),d([p.property({type:Number})],exports.TypewriterElement.prototype,"deleteSpeed",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"once",2),d([p.query("#typewriter")],exports.TypewriterElement.prototype,"typewriterContainer",2),d([p.queryAssignedNodes({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedNodes",2),d([p.queryAssignedElements({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedElements",2),exports.TypewriterElement=d([p.customElement("schmancy-typewriter")],exports.TypewriterElement);
21
- //# sourceMappingURL=typewriter-C3nBx8M1.cjs.map
8
+ </div> `}},d([p.property({type:Number})],exports.TypewriterElement.prototype,"speed",2),d([X.c({context:M.delayContext,subscribe:!0}),p.property({type:Number})],exports.TypewriterElement.prototype,"delay",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"autoStart",2),d([p.property({type:String})],exports.TypewriterElement.prototype,"cursorChar",2),d([p.property({type:Number})],exports.TypewriterElement.prototype,"deleteSpeed",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"once",2),d([p.query("#typewriter")],exports.TypewriterElement.prototype,"typewriterContainer",2),d([p.queryAssignedNodes({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedNodes",2),d([p.queryAssignedElements({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedElements",2),exports.TypewriterElement=d([p.customElement("schmancy-typewriter")],exports.TypewriterElement);
9
+ //# sourceMappingURL=typewriter-QSd_xI9j.cjs.map