@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
@@ -1,8 +1,8 @@
1
- "use strict";const f=require("rxjs"),b=require("lit/directives/class-map.js"),v=require("lit/directives/style-map.js"),u=require("lit/decorators.js");require("./tailwind.mixin-tQzjJi1o.cjs");const T=require("./litElement.mixin-De6F4bUs.cjs"),S=require("./ripple-C2BHbhcS.cjs"),l=require("./theme.interface-Xg5Zi46a.cjs"),d=require("lit");require("./progress-B3-p0pjn.cjs");const A=require("lit/directives/repeat.js");var _=Object.defineProperty,C=Object.getOwnPropertyDescriptor,h=(o,t,e,i)=>{for(var n,s=i>1?void 0:i?C(t,e):t,a=o.length-1;a>=0;a--)(n=o[a])&&(s=(i?n(t,e,s):n(s))||s);return i&&s&&_(t,e,s),s};exports.SchmancyNotification=class extends T.$LitElement(':host{display:block;margin-bottom:10px}:host:last-child{margin-bottom:0}.notification{width:100%;max-width:400px;box-shadow:var(--schmancy-sys-elevation-2);overflow:hidden;transform:translate(0);opacity:1;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);background-color:var(--schmancy-sys-color-surface-container);color:var(--schmancy-sys-color-surface-on);border-radius:16px;position:relative}.notification:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(180deg,#ffffff14,#fff0);z-index:1}.notification.info{border-left:4px solid var(--schmancy-sys-color-primary-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-primary-container) 10%)}.notification.success{border-left:4px solid var(--schmancy-sys-color-success-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-success-container) 10%)}.notification.warning{border-left:4px solid var(--schmancy-sys-color-tertiary-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-tertiary-container) 10%)}.notification.error{border-left:4px solid var(--schmancy-sys-color-error-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-error-container) 10%)}.notification.closing{transform:translate(120%);opacity:0}.notification .notification-content{display:flex;padding:18px 20px;align-items:flex-start;position:relative;z-index:2}.notification .icon-container{flex-shrink:0;margin-right:14px;display:flex;align-items:center;justify-content:center;border-radius:50%;width:28px;height:28px;position:relative}.notification .content{flex:1;min-width:0;display:flex;flex-direction:column}.notification .title{font-weight:500;font-size:16px;line-height:1.5;margin-bottom:2px;word-break:break-word;letter-spacing:.15px}.notification .message{font-size:14px;line-height:1.5;word-break:break-word;letter-spacing:.25px;opacity:.92}.notification .close-button{background:transparent;border:none;cursor:pointer;color:var(--schmancy-sys-color-surface-onVariant);padding:8px;margin-left:8px;margin-right:-4px;margin-top:-4px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,transform .2s ease}.notification .close-button:hover{background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-onVariant) 8%,transparent);transform:scale(1.05)}.notification .close-button:active{transform:scale(.95)}.notification .close-button:focus-visible{outline:none;box-shadow:0 0 0 2px var(--schmancy-sys-color-primary-default)}'){constructor(){super(...arguments),this.title="",this.message="",this.type="info",this.closable=!0,this.duration=5e3,this.id=`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,this.playSound=!0,this.showProgress=!1,this._visible=!0,this._progress=100,this._hovered=!1,this._closing=!1}connectedCallback(){super.connectedCallback(),this.duration>0&&this._startAutoCloseTimer(),this.playSound&&this._playSound()}disconnectedCallback(){this._clearTimers(),super.disconnectedCallback()}updated(o){super.updated(o),o.has("duration")&&this.duration>0&&(this._clearTimers(),this._startAutoCloseTimer())}_startAutoCloseTimer(){if(this.duration<=0)return;const o=Date.now()+this.duration;this._autoCloseTimer=window.setTimeout(()=>{this.close()},this.duration),this._progressTimer=window.setInterval(()=>{if(this._hovered)return;const t=Date.now(),e=Math.max(0,o-t);this._progress=e/this.duration*100,e<=0&&this._clearTimers()},16)}_clearTimers(){this._autoCloseTimer&&(clearTimeout(this._autoCloseTimer),this._autoCloseTimer=void 0),this._progressTimer&&(clearInterval(this._progressTimer),this._progressTimer=void 0)}_pauseTimers(){this._clearTimers()}_resumeTimers(){if(this.duration>0){const o=this._progress/100*this.duration;if(o>0){this._autoCloseTimer=window.setTimeout(()=>{this.close()},o);const t=Date.now()+o;this._progressTimer=window.setInterval(()=>{if(this._hovered)return;const e=Date.now(),i=Math.max(0,t-e);this._progress=i/o*100,i<=0&&this._clearTimers()},16)}}}_playSound(){this.dispatchEvent(new CustomEvent("playsound",{detail:{type:this.type},bubbles:!0,composed:!0}))}_handleMouseEnter(){this._hovered=!0,this._pauseTimers()}_handleMouseLeave(){this._hovered=!1,this._resumeTimers()}close(){this._closing||(this._closing=!0,this._clearTimers(),this._visible=!1,setTimeout(()=>{this.dispatchEvent(new CustomEvent("close",{detail:{id:this.id},bubbles:!0,composed:!0}))},300))}render(){if(!this._visible&&this._closing)return d.html``;const o=this._getTypeStyles(),t=this._hovered?"3":"2";return d.html`
1
+ "use strict";const p=require("rxjs"),b=require("lit/directives/class-map.js"),w=require("lit/directives/style-map.js"),u=require("lit/decorators.js");require("./tailwind.mixin-O9jmUJ7m.cjs");const x=require("./litElement.mixin-DFG5Ckp7.cjs"),S=require("./ripple-DqQrvaTe.cjs");require("lit/directives/guard.js");const l=require("./theme.interface-Xg5Zi46a.cjs"),d=require("lit");require("./progress-BETtTl0y.cjs");const A=require("lit/directives/repeat.js");var C=Object.defineProperty,_=Object.getOwnPropertyDescriptor,h=(o,t,e,i)=>{for(var n,s=i>1?void 0:i?_(t,e):t,a=o.length-1;a>=0;a--)(n=o[a])&&(s=(i?n(t,e,s):n(s))||s);return i&&s&&C(t,e,s),s};exports.SchmancyNotification=class extends x.$LitElement(':host{display:block;margin-bottom:10px}:host:last-child{margin-bottom:0}.notification{width:100%;max-width:400px;box-shadow:var(--schmancy-sys-elevation-2);overflow:hidden;transform:translate(0);opacity:1;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);background-color:var(--schmancy-sys-color-surface-container);color:var(--schmancy-sys-color-surface-on);border-radius:16px;position:relative}.notification:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(180deg,#ffffff14,#fff0);z-index:1}.notification.info{border-left:4px solid var(--schmancy-sys-color-primary-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-primary-container) 10%)}.notification.success{border-left:4px solid var(--schmancy-sys-color-success-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-success-container) 10%)}.notification.warning{border-left:4px solid var(--schmancy-sys-color-tertiary-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-tertiary-container) 10%)}.notification.error{border-left:4px solid var(--schmancy-sys-color-error-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-error-container) 10%)}.notification.closing{transform:translate(120%);opacity:0}.notification .notification-content{display:flex;padding:18px 20px;align-items:flex-start;position:relative;z-index:2}.notification .icon-container{flex-shrink:0;margin-right:14px;display:flex;align-items:center;justify-content:center;border-radius:50%;width:28px;height:28px;position:relative}.notification .content{flex:1;min-width:0;display:flex;flex-direction:column}.notification .title{font-weight:500;font-size:16px;line-height:1.5;margin-bottom:2px;word-break:break-word;letter-spacing:.15px}.notification .message{font-size:14px;line-height:1.5;word-break:break-word;letter-spacing:.25px;opacity:.92}.notification .close-button{background:transparent;border:none;cursor:pointer;color:var(--schmancy-sys-color-surface-onVariant);padding:8px;margin-left:8px;margin-right:-4px;margin-top:-4px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,transform .2s ease}.notification .close-button:hover{background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-onVariant) 8%,transparent);transform:scale(1.05)}.notification .close-button:active{transform:scale(.95)}.notification .close-button:focus-visible{outline:none;box-shadow:0 0 0 2px var(--schmancy-sys-color-primary-default)}'){constructor(){super(...arguments),this.title="",this.message="",this.type="info",this.closable=!0,this.duration=5e3,this.id=`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,this.playSound=!0,this.showProgress=!1,this._visible=!0,this._progress=100,this._hovered=!1,this._closing=!1}connectedCallback(){super.connectedCallback(),this.duration>0&&this._startAutoCloseTimer(),this.playSound&&this._playSound()}disconnectedCallback(){this._clearTimers(),super.disconnectedCallback()}updated(o){super.updated(o),o.has("duration")&&this.duration>0&&(this._clearTimers(),this._startAutoCloseTimer())}_startAutoCloseTimer(){if(this.duration<=0)return;const o=Date.now()+this.duration;this._autoCloseTimer=window.setTimeout(()=>{this.close()},this.duration),this._progressTimer=window.setInterval(()=>{if(this._hovered)return;const t=Date.now(),e=Math.max(0,o-t);this._progress=e/this.duration*100,e<=0&&this._clearTimers()},16)}_clearTimers(){this._autoCloseTimer&&(clearTimeout(this._autoCloseTimer),this._autoCloseTimer=void 0),this._progressTimer&&(clearInterval(this._progressTimer),this._progressTimer=void 0)}_pauseTimers(){this._clearTimers()}_resumeTimers(){if(this.duration>0){const o=this._progress/100*this.duration;if(o>0){this._autoCloseTimer=window.setTimeout(()=>{this.close()},o);const t=Date.now()+o;this._progressTimer=window.setInterval(()=>{if(this._hovered)return;const e=Date.now(),i=Math.max(0,t-e);this._progress=i/o*100,i<=0&&this._clearTimers()},16)}}}_playSound(){this.dispatchEvent(new CustomEvent("playsound",{detail:{type:this.type},bubbles:!0,composed:!0}))}_handleMouseEnter(){this._hovered=!0,this._pauseTimers()}_handleMouseLeave(){this._hovered=!1,this._resumeTimers()}close(){this._closing||(this._closing=!0,this._clearTimers(),this._visible=!1,setTimeout(()=>{this.dispatchEvent(new CustomEvent("close",{detail:{id:this.id},bubbles:!0,composed:!0}))},300))}render(){if(!this._visible&&this._closing)return d.html``;const o=this._getTypeStyles(),t=this._hovered?"3":"2";return d.html`
2
2
  <div
3
3
  class=${b.classMap({notification:!0,closing:this._closing,[this.type]:!0})}
4
4
  role="alert"
5
- style=${v.styleMap({transform:this._closing?"translateX(120%)":"translateX(0)",opacity:this._closing?"0":"1",boxShadow:`var(--schmancy-sys-elevation-${t})`,transition:"transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease"})}
5
+ style=${w.styleMap({transform:this._closing?"translateX(120%)":"translateX(0)",opacity:this._closing?"0":"1",boxShadow:`var(--schmancy-sys-elevation-${t})`,transition:"transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease"})}
6
6
  @mouseenter=${this._handleMouseEnter}
7
7
  @mouseleave=${this._handleMouseLeave}
8
8
  >
@@ -18,7 +18,7 @@
18
18
  ${this.title?d.html`
19
19
  <div
20
20
  class="title"
21
- style=${v.styleMap({color:this.type==="info"?`color-mix(in srgb, ${l.SchmancyTheme.sys.color.primary.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`:this.type==="success"?`color-mix(in srgb, ${l.SchmancyTheme.sys.color.success.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`:this.type==="warning"?`color-mix(in srgb, ${l.SchmancyTheme.sys.color.tertiary.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`:`color-mix(in srgb, ${l.SchmancyTheme.sys.color.error.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`})}
21
+ style=${w.styleMap({color:this.type==="info"?`color-mix(in srgb, ${l.SchmancyTheme.sys.color.primary.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`:this.type==="success"?`color-mix(in srgb, ${l.SchmancyTheme.sys.color.success.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`:this.type==="warning"?`color-mix(in srgb, ${l.SchmancyTheme.sys.color.tertiary.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`:`color-mix(in srgb, ${l.SchmancyTheme.sys.color.error.default} 90%, ${l.SchmancyTheme.sys.color.surface.on} 10%)`})}
22
22
  >
23
23
  ${this.title}
24
24
  </div>
@@ -32,7 +32,7 @@
32
32
  class="close-button"
33
33
  aria-label="Close notification"
34
34
  @click=${this.close}
35
- style=${v.styleMap({color:this.type==="info"?l.SchmancyTheme.sys.color.surface.onVariant:`color-mix(in srgb, ${o.iconColor} 80%, ${l.SchmancyTheme.sys.color.surface.onVariant} 20%)`})}
35
+ style=${w.styleMap({color:this.type==="info"?l.SchmancyTheme.sys.color.surface.onVariant:`color-mix(in srgb, ${o.iconColor} 80%, ${l.SchmancyTheme.sys.color.surface.onVariant} 20%)`})}
36
36
  >
37
37
  <svg
38
38
  width="18"
@@ -121,7 +121,7 @@
121
121
  <line x1="12" y1="16" x2="12" y2="12"></line>
122
122
  <line x1="12" y1="8" x2="12.01" y2="8"></line>
123
123
  </svg>
124
- `,iconColor:l.SchmancyTheme.sys.color.primary.default,progressColor:`color-mix(in srgb, ${l.SchmancyTheme.sys.color.primary.default} 94%, ${l.SchmancyTheme.sys.color.primary.container} 6%)`}}}},h([u.property({type:String})],exports.SchmancyNotification.prototype,"title",2),h([u.property({type:String})],exports.SchmancyNotification.prototype,"message",2),h([u.property({type:String})],exports.SchmancyNotification.prototype,"type",2),h([u.property({type:Boolean})],exports.SchmancyNotification.prototype,"closable",2),h([u.property({type:Number})],exports.SchmancyNotification.prototype,"duration",2),h([u.property({type:String})],exports.SchmancyNotification.prototype,"id",2),h([u.property({type:Boolean})],exports.SchmancyNotification.prototype,"playSound",2),h([u.property({type:Boolean})],exports.SchmancyNotification.prototype,"showProgress",2),h([u.state()],exports.SchmancyNotification.prototype,"_visible",2),h([u.state()],exports.SchmancyNotification.prototype,"_progress",2),h([u.state()],exports.SchmancyNotification.prototype,"_hovered",2),h([u.state()],exports.SchmancyNotification.prototype,"_closing",2),h([u.state()],exports.SchmancyNotification.prototype,"_autoCloseTimer",2),h([u.state()],exports.SchmancyNotification.prototype,"_progressTimer",2),exports.SchmancyNotification=h([u.customElement("sch-notification")],exports.SchmancyNotification);class V{constructor(){this.audioContext=null}getAudioContext(){if(!this.audioContext){const t=window.AudioContext||window.webkitAudioContext;this.audioContext=new t}return this.audioContext}playInfoSound(t=.2){const e=this.getAudioContext(),i=e.currentTime,n=e.createOscillator(),s=e.createGain(),a=e.createBiquadFilter();n.type="sine",n.frequency.setValueAtTime(392,i),n.frequency.exponentialRampToValueAtTime(523.25,i+.25),a.type="lowpass",a.frequency.value=1500,s.gain.setValueAtTime(1e-4,i),s.gain.exponentialRampToValueAtTime(t,i+.15),s.gain.exponentialRampToValueAtTime(1e-4,i+.4),n.connect(a).connect(s).connect(e.destination),n.start(i),n.stop(i+.45)}playSuccessSound(t=.2){const e=this.getAudioContext(),i=e.currentTime,n=(s,a,r)=>{const c=e.createOscillator(),y=e.createGain(),w=e.createBiquadFilter();c.type="sine",c.frequency.setValueAtTime(s,i),w.type="lowpass",w.frequency.value=4*s,y.gain.setValueAtTime(1e-4,i),y.gain.exponentialRampToValueAtTime(t,i+.1),y.gain.exponentialRampToValueAtTime(1e-4,i+r),c.connect(w).connect(y).connect(e.destination),c.start(i+a),c.stop(i+r)};n(659.25,0,.6),n(523.25,.05,.55)}playWarningSound(t=.25){const e=this.getAudioContext(),i=e.currentTime,n=e.createOscillator(),s=e.createOscillator(),a=e.createGain(),r=e.createBiquadFilter();n.type="sine",s.type="sine",n.frequency.setValueAtTime(349.23,i),s.frequency.setValueAtTime(440,i),r.type="lowpass",r.frequency.value=1e3,a.gain.setValueAtTime(1e-4,i),a.gain.exponentialRampToValueAtTime(t,i+.08),a.gain.exponentialRampToValueAtTime(1e-4,i+.5),n.connect(r),s.connect(r),r.connect(a).connect(e.destination),n.start(i),s.start(i),n.stop(i+.55),s.stop(i+.55)}playErrorSound(t=.25){const e=this.getAudioContext(),i=e.currentTime,n=e.createOscillator(),s=e.createGain(),a=e.createBiquadFilter();n.type="triangle",n.frequency.setValueAtTime(220,i),n.frequency.exponentialRampToValueAtTime(1760,i+.3),a.type="lowpass",a.frequency.value=800,a.Q.value=.5,s.gain.setValueAtTime(1e-4,i),s.gain.exponentialRampToValueAtTime(.8*t,i+.1),s.gain.exponentialRampToValueAtTime(1e-4,i+.7),n.connect(a).connect(s).connect(e.destination),n.start(i),n.stop(i+.75)}async generateAudioFiles(t=.25){const i={};return i.info=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(320,0),s.frequency.exponentialRampToValueAtTime(520,.3);const a=n.createGain();a.gain.setValueAtTime(0,0),a.gain.linearRampToValueAtTime(t,.1),a.gain.linearRampToValueAtTime(0,.5),s.connect(a),a.connect(n.destination),s.start(),s.stop(.5)},44100,1),i.success=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(660,0);const a=n.createOscillator();a.type="sine",a.frequency.setValueAtTime(440,0);const r=n.createGain();r.gain.setValueAtTime(0,0),r.gain.linearRampToValueAtTime(t,.1),r.gain.linearRampToValueAtTime(0,.5);const c=n.createGain();c.gain.setValueAtTime(0,0),c.gain.linearRampToValueAtTime(.6*t,.15),c.gain.linearRampToValueAtTime(0,.7),s.connect(r),r.connect(n.destination),a.connect(c),c.connect(n.destination),s.start(),a.start(.15),s.stop(.5),a.stop(.7)},44100,1),i.warning=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(293.66,0);const a=n.createOscillator();a.type="sine",a.frequency.setValueAtTime(349.23,0);const r=n.createGain();r.gain.setValueAtTime(0,0),r.gain.linearRampToValueAtTime(t,.1),r.gain.linearRampToValueAtTime(.6*t,.2),r.gain.linearRampToValueAtTime(.8*t,.3),r.gain.linearRampToValueAtTime(0,.6),s.connect(r),a.connect(r),r.connect(n.destination),s.start(),a.start(),s.stop(.6),a.stop(.6)},44100,1),i.error=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(196,0);const a=n.createGain();a.gain.setValueAtTime(0,0),a.gain.linearRampToValueAtTime(t,.1),a.gain.linearRampToValueAtTime(.4*t,.2),a.gain.linearRampToValueAtTime(.6*t,.3),a.gain.linearRampToValueAtTime(0,.7);const r=n.createBiquadFilter();r.type="lowpass",r.frequency.value=600,r.Q.value=.7,s.connect(r),r.connect(a),a.connect(n.destination),s.start(),s.stop(.7)},44100,1),i}async generateAudioFile(t,e=44100,i=1){const n=new OfflineAudioContext(2,e*i,e);await t(n);const s=await n.startRendering(),a=this.audioBufferToWav(s);return URL.createObjectURL(a)}audioBufferToWav(t){const e=t.numberOfChannels,i=t.sampleRate,n=2*e,s=this.getAudioSamples(t,16),a=2*s.length,r=new ArrayBuffer(44+a),c=new DataView(r);return this.writeString(c,0,"RIFF"),c.setUint32(4,36+a,!0),this.writeString(c,8,"WAVE"),this.writeString(c,12,"fmt "),c.setUint32(16,16,!0),c.setUint16(20,1,!0),c.setUint16(22,e,!0),c.setUint32(24,i,!0),c.setUint32(28,i*n,!0),c.setUint16(32,n,!0),c.setUint16(34,16,!0),this.writeString(c,36,"data"),c.setUint32(40,a,!0),this.writeInt16Samples(c,44,s),new Blob([r],{type:"audio/wav"})}getAudioSamples(t,e){const i=t.numberOfChannels,n=t.length,s=[],a=e===16?32768:128;for(let r=0;r<n;r++)for(let c=0;c<i;c++){const y=t.getChannelData(c)[r],w=Math.max(-1,Math.min(1,y));s.push(w*a)}return s}writeInt16Samples(t,e,i){for(let n=0;n<i.length;n++)t.setInt16(e+2*n,i[n],!0)}writeString(t,e,i){for(let n=0;n<i.length;n++)t.setUint8(e+n,i.charCodeAt(n))}}class x{constructor(){this.audioContext=null,this.soundBuffers=new Map,this.volume=.5,this.muted=!1,this.soundGenerator=new V,this.soundUrls={info:"/assets/sounds/notification-info.mp3",success:"/assets/sounds/notification-success.mp3",warning:"/assets/sounds/notification-warning.mp3",error:"/assets/sounds/notification-error.mp3"},this.initializeAudioFiles()}async initializeAudioFiles(){try{await this.preloadSounds()}catch{try{const e=await this.soundGenerator.generateAudioFiles(this.volume);this.soundUrls=e}catch{}}}getAudioContext(){if(!this.audioContext){const t=window.AudioContext||window.webkitAudioContext;this.audioContext=new t}return this.audioContext}async preloadSounds(){const t=["info","success","warning","error"];for(const e of t)try{const i=await this.loadSound(e);this.soundBuffers.set(e,i)}catch{}}async loadSound(t){const e=this.soundUrls[t],i=await fetch(e);if(!i.ok)throw new Error(`Failed to load sound from ${e}: ${i.statusText}`);const n=await i.arrayBuffer();return await this.getAudioContext().decodeAudioData(n)}async playSound(t){if(!this.muted)try{const e=this.getAudioContext();if(e.state==="suspended"&&await e.resume(),this.soundUrls[t].startsWith("blob:"))return void this.playFallbackSound(t);if(!this.soundBuffers.has(t))try{const a=await this.loadSound(t);this.soundBuffers.set(t,a)}catch{return void this.playDirectGeneratedSound(t)}const i=this.soundBuffers.get(t);if(!i)throw new Error(`Sound buffer for ${t} not available`);const n=e.createBufferSource();n.buffer=i;const s=e.createGain();s.gain.value=this.volume,n.connect(s),s.connect(e.destination),n.start(0)}catch{this.playDirectGeneratedSound(t)}}playDirectGeneratedSound(t){if(!this.muted)try{switch(t){case"info":this.soundGenerator.playInfoSound(this.volume);break;case"success":this.soundGenerator.playSuccessSound(this.volume);break;case"warning":this.soundGenerator.playWarningSound(this.volume);break;case"error":this.soundGenerator.playErrorSound(this.volume)}}catch{}}playFallbackSound(t){if(!this.muted)try{const e=new Audio(this.soundUrls[t]);e.volume=this.volume,e.addEventListener("ended",()=>{e.remove()}),e.play().catch(i=>{this.playDirectGeneratedSound(t)})}catch{this.playDirectGeneratedSound(t)}}setVolume(t){this.volume=Math.max(0,Math.min(1,t))}getVolume(){return this.volume}mute(){this.muted=!0}unmute(){this.muted=!1}isMuted(){return this.muted}setSoundUrl(t,e){this.soundUrls[t]=e,this.soundBuffers.delete(t)}getSoundUrl(t){return this.soundUrls[t]}}var $=Object.defineProperty,k=Object.getOwnPropertyDescriptor,g=(o,t,e,i)=>{for(var n,s=i>1?void 0:i?k(t,e):t,a=o.length-1;a>=0;a--)(n=o[a])&&(s=(i?n(t,e,s):n(s))||s);return i&&s&&$(t,e,s),s};exports.SchmancyNotificationContainer=class extends T.$LitElement(":host{display:block}.notification-container{position:fixed;z-index:9999;padding:12px;pointer-events:none;width:100%;max-width:424px}.notification-container sch-notification{pointer-events:auto}.notification-container.top-right{top:0;right:0;display:flex;flex-direction:column-reverse}.notification-container.top-left{top:0;left:0;display:flex;flex-direction:column-reverse}.notification-container.bottom-right{bottom:0;right:0;display:flex;flex-direction:column}.notification-container.bottom-left{bottom:0;left:0;display:flex;flex-direction:column}.notification-container.top-center{top:0;left:50%;transform:translate(-50%);display:flex;flex-direction:column-reverse}.notification-container.bottom-center{bottom:0;left:50%;transform:translate(-50%);display:flex;flex-direction:column}"){constructor(){super(...arguments),this.position="top-right",this.maxVisibleNotifications=2,this.playSound=!1,this.audioVolume=.1,this._notifications=[],this._audioService=new x}connectedCallback(){super.connectedCallback(),this._audioService.setVolume(this.audioVolume),f.fromEvent(window,"schmancy-notification").pipe(f.takeUntil(this.disconnecting)).subscribe(o=>{this.addNotification(o.detail)}),f.fromEvent(window,"schmancy-notification-dismiss").pipe(f.takeUntil(this.disconnecting)).subscribe(o=>{this.removeNotification(o.detail.id)}),f.fromEvent(window,"schmancy-notification-update").pipe(f.takeUntil(this.disconnecting)).subscribe(o=>{this.updateNotification(o.detail.id,o.detail)}),this.addEventListener("playsound",o=>{this.playSound&&this._audioService.playSound(o.detail.type)})}addNotification(o){const t=o.id||`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,e={id:t,title:o.title||"",message:o.message,type:o.type||"info",duration:o.duration!==void 0?o.duration:750,closable:o.closable===void 0||o.closable,playSound:o.playSound!==void 0?o.playSound:this.playSound,showProgress:o.showProgress!==void 0&&o.showProgress};return this.position.startsWith("top")?this._notifications=[...this._notifications,e]:this._notifications=[e,...this._notifications],this._notifications.length>this.maxVisibleNotifications&&(this._notifications=this._notifications.slice(-this.maxVisibleNotifications)),e.playSound&&this._audioService.playSound(e.type),t}removeNotification(o){this._notifications=this._notifications.filter(t=>t.id!==o)}updateNotification(o,t){const e=this._notifications.findIndex(i=>i.id===o);e!==-1&&(this._notifications[e]={...this._notifications[e],...t},this.requestUpdate())}_handleClose(o){const t=o.detail.id;this.removeNotification(t)}render(){return d.html`
124
+ `,iconColor:l.SchmancyTheme.sys.color.primary.default,progressColor:`color-mix(in srgb, ${l.SchmancyTheme.sys.color.primary.default} 94%, ${l.SchmancyTheme.sys.color.primary.container} 6%)`}}}},h([u.property({type:String})],exports.SchmancyNotification.prototype,"title",2),h([u.property({type:String})],exports.SchmancyNotification.prototype,"message",2),h([u.property({type:String})],exports.SchmancyNotification.prototype,"type",2),h([u.property({type:Boolean})],exports.SchmancyNotification.prototype,"closable",2),h([u.property({type:Number})],exports.SchmancyNotification.prototype,"duration",2),h([u.property({type:String})],exports.SchmancyNotification.prototype,"id",2),h([u.property({type:Boolean})],exports.SchmancyNotification.prototype,"playSound",2),h([u.property({type:Boolean})],exports.SchmancyNotification.prototype,"showProgress",2),h([u.state()],exports.SchmancyNotification.prototype,"_visible",2),h([u.state()],exports.SchmancyNotification.prototype,"_progress",2),h([u.state()],exports.SchmancyNotification.prototype,"_hovered",2),h([u.state()],exports.SchmancyNotification.prototype,"_closing",2),h([u.state()],exports.SchmancyNotification.prototype,"_autoCloseTimer",2),h([u.state()],exports.SchmancyNotification.prototype,"_progressTimer",2),exports.SchmancyNotification=h([u.customElement("sch-notification")],exports.SchmancyNotification);class V{constructor(){this.audioContext=null}getAudioContext(){if(!this.audioContext){const t=window.AudioContext||window.webkitAudioContext;this.audioContext=new t}return this.audioContext}playInfoSound(t=.2){const e=this.getAudioContext(),i=e.currentTime,n=e.createOscillator(),s=e.createGain(),a=e.createBiquadFilter();n.type="sine",n.frequency.setValueAtTime(392,i),n.frequency.exponentialRampToValueAtTime(523.25,i+.25),a.type="lowpass",a.frequency.value=1500,s.gain.setValueAtTime(1e-4,i),s.gain.exponentialRampToValueAtTime(t,i+.15),s.gain.exponentialRampToValueAtTime(1e-4,i+.4),n.connect(a).connect(s).connect(e.destination),n.start(i),n.stop(i+.45)}playSuccessSound(t=.2){const e=this.getAudioContext(),i=e.currentTime,n=(s,a,r)=>{const c=e.createOscillator(),f=e.createGain(),v=e.createBiquadFilter();c.type="sine",c.frequency.setValueAtTime(s,i),v.type="lowpass",v.frequency.value=4*s,f.gain.setValueAtTime(1e-4,i),f.gain.exponentialRampToValueAtTime(t,i+.1),f.gain.exponentialRampToValueAtTime(1e-4,i+r),c.connect(v).connect(f).connect(e.destination),c.start(i+a),c.stop(i+r)};n(659.25,0,.6),n(523.25,.05,.55)}playWarningSound(t=.25){const e=this.getAudioContext(),i=e.currentTime,n=e.createOscillator(),s=e.createOscillator(),a=e.createGain(),r=e.createBiquadFilter();n.type="sine",s.type="sine",n.frequency.setValueAtTime(349.23,i),s.frequency.setValueAtTime(440,i),r.type="lowpass",r.frequency.value=1e3,a.gain.setValueAtTime(1e-4,i),a.gain.exponentialRampToValueAtTime(t,i+.08),a.gain.exponentialRampToValueAtTime(1e-4,i+.5),n.connect(r),s.connect(r),r.connect(a).connect(e.destination),n.start(i),s.start(i),n.stop(i+.55),s.stop(i+.55)}playErrorSound(t=.25){const e=this.getAudioContext(),i=e.currentTime,n=e.createOscillator(),s=e.createGain(),a=e.createBiquadFilter();n.type="triangle",n.frequency.setValueAtTime(220,i),n.frequency.exponentialRampToValueAtTime(1760,i+.3),a.type="lowpass",a.frequency.value=800,a.Q.value=.5,s.gain.setValueAtTime(1e-4,i),s.gain.exponentialRampToValueAtTime(.8*t,i+.1),s.gain.exponentialRampToValueAtTime(1e-4,i+.7),n.connect(a).connect(s).connect(e.destination),n.start(i),n.stop(i+.75)}async generateAudioFiles(t=.25){const i={};return i.info=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(320,0),s.frequency.exponentialRampToValueAtTime(520,.3);const a=n.createGain();a.gain.setValueAtTime(0,0),a.gain.linearRampToValueAtTime(t,.1),a.gain.linearRampToValueAtTime(0,.5),s.connect(a),a.connect(n.destination),s.start(),s.stop(.5)},44100,1),i.success=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(660,0);const a=n.createOscillator();a.type="sine",a.frequency.setValueAtTime(440,0);const r=n.createGain();r.gain.setValueAtTime(0,0),r.gain.linearRampToValueAtTime(t,.1),r.gain.linearRampToValueAtTime(0,.5);const c=n.createGain();c.gain.setValueAtTime(0,0),c.gain.linearRampToValueAtTime(.6*t,.15),c.gain.linearRampToValueAtTime(0,.7),s.connect(r),r.connect(n.destination),a.connect(c),c.connect(n.destination),s.start(),a.start(.15),s.stop(.5),a.stop(.7)},44100,1),i.warning=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(293.66,0);const a=n.createOscillator();a.type="sine",a.frequency.setValueAtTime(349.23,0);const r=n.createGain();r.gain.setValueAtTime(0,0),r.gain.linearRampToValueAtTime(t,.1),r.gain.linearRampToValueAtTime(.6*t,.2),r.gain.linearRampToValueAtTime(.8*t,.3),r.gain.linearRampToValueAtTime(0,.6),s.connect(r),a.connect(r),r.connect(n.destination),s.start(),a.start(),s.stop(.6),a.stop(.6)},44100,1),i.error=await this.generateAudioFile(async n=>{const s=n.createOscillator();s.type="sine",s.frequency.setValueAtTime(196,0);const a=n.createGain();a.gain.setValueAtTime(0,0),a.gain.linearRampToValueAtTime(t,.1),a.gain.linearRampToValueAtTime(.4*t,.2),a.gain.linearRampToValueAtTime(.6*t,.3),a.gain.linearRampToValueAtTime(0,.7);const r=n.createBiquadFilter();r.type="lowpass",r.frequency.value=600,r.Q.value=.7,s.connect(r),r.connect(a),a.connect(n.destination),s.start(),s.stop(.7)},44100,1),i}async generateAudioFile(t,e=44100,i=1){const n=new OfflineAudioContext(2,e*i,e);await t(n);const s=await n.startRendering(),a=this.audioBufferToWav(s);return URL.createObjectURL(a)}audioBufferToWav(t){const e=t.numberOfChannels,i=t.sampleRate,n=2*e,s=this.getAudioSamples(t,16),a=2*s.length,r=new ArrayBuffer(44+a),c=new DataView(r);return this.writeString(c,0,"RIFF"),c.setUint32(4,36+a,!0),this.writeString(c,8,"WAVE"),this.writeString(c,12,"fmt "),c.setUint32(16,16,!0),c.setUint16(20,1,!0),c.setUint16(22,e,!0),c.setUint32(24,i,!0),c.setUint32(28,i*n,!0),c.setUint16(32,n,!0),c.setUint16(34,16,!0),this.writeString(c,36,"data"),c.setUint32(40,a,!0),this.writeInt16Samples(c,44,s),new Blob([r],{type:"audio/wav"})}getAudioSamples(t,e){const i=t.numberOfChannels,n=t.length,s=[],a=e===16?32768:128;for(let r=0;r<n;r++)for(let c=0;c<i;c++){const f=t.getChannelData(c)[r],v=Math.max(-1,Math.min(1,f));s.push(v*a)}return s}writeInt16Samples(t,e,i){for(let n=0;n<i.length;n++)t.setInt16(e+2*n,i[n],!0)}writeString(t,e,i){for(let n=0;n<i.length;n++)t.setUint8(e+n,i.charCodeAt(n))}}class T{constructor(){this.audioContext=null,this.soundBuffers=new Map,this.volume=.5,this.muted=!1,this.soundGenerator=new V,this.disconnecting=new EventTarget,this.soundUrls={info:"/assets/sounds/notification-info.mp3",success:"/assets/sounds/notification-success.mp3",warning:"/assets/sounds/notification-warning.mp3",error:"/assets/sounds/notification-error.mp3"},this.handleAudioEnded=t=>()=>{t.remove()},this.initializeAudioFiles()}async initializeAudioFiles(){try{await this.preloadSounds()}catch{try{const e=await this.soundGenerator.generateAudioFiles(this.volume);this.soundUrls=e}catch{}}}getAudioContext(){if(!this.audioContext){const t=window.AudioContext||window.webkitAudioContext;this.audioContext=new t}return this.audioContext}async preloadSounds(){const t=["info","success","warning","error"];for(const e of t)try{const i=await this.loadSound(e);this.soundBuffers.set(e,i)}catch{}}async loadSound(t){const e=this.soundUrls[t],i=await fetch(e);if(!i.ok)throw new Error(`Failed to load sound from ${e}: ${i.statusText}`);const n=await i.arrayBuffer();return await this.getAudioContext().decodeAudioData(n)}async playSound(t){if(!this.muted)try{const e=this.getAudioContext();if(e.state==="suspended"&&await e.resume(),this.soundUrls[t].startsWith("blob:"))return void this.playFallbackSound(t);if(!this.soundBuffers.has(t))try{const a=await this.loadSound(t);this.soundBuffers.set(t,a)}catch{return void this.playDirectGeneratedSound(t)}const i=this.soundBuffers.get(t);if(!i)throw new Error(`Sound buffer for ${t} not available`);const n=e.createBufferSource();n.buffer=i;const s=e.createGain();s.gain.value=this.volume,n.connect(s),s.connect(e.destination),n.start(0)}catch{this.playDirectGeneratedSound(t)}}playDirectGeneratedSound(t){if(!this.muted)try{switch(t){case"info":this.soundGenerator.playInfoSound(this.volume);break;case"success":this.soundGenerator.playSuccessSound(this.volume);break;case"warning":this.soundGenerator.playWarningSound(this.volume);break;case"error":this.soundGenerator.playErrorSound(this.volume)}}catch{}}playFallbackSound(t){if(!this.muted)try{const e=new Audio(this.soundUrls[t]);e.volume=this.volume,p.fromEvent(e,"ended").pipe(p.takeUntil(p.fromEvent(this.disconnecting,"disconnect"))).subscribe(this.handleAudioEnded(e)),e.play().catch(i=>{this.playDirectGeneratedSound(t)})}catch{this.playDirectGeneratedSound(t)}}setVolume(t){this.volume=Math.max(0,Math.min(1,t))}getVolume(){return this.volume}mute(){this.muted=!0}unmute(){this.muted=!1}isMuted(){return this.muted}setSoundUrl(t,e){this.soundUrls[t]=e,this.soundBuffers.delete(t)}getSoundUrl(t){return this.soundUrls[t]}dispose(){this.disconnecting.dispatchEvent(new Event("disconnect")),this.audioContext&&this.audioContext.state!=="closed"&&this.audioContext.close().catch(t=>{})}}var k=Object.defineProperty,$=Object.getOwnPropertyDescriptor,g=(o,t,e,i)=>{for(var n,s=i>1?void 0:i?$(t,e):t,a=o.length-1;a>=0;a--)(n=o[a])&&(s=(i?n(t,e,s):n(s))||s);return i&&s&&k(t,e,s),s};exports.SchmancyNotificationContainer=class extends x.$LitElement(":host{display:block}.notification-container{position:fixed;z-index:9999;padding:12px;pointer-events:none;width:100%;max-width:424px}.notification-container sch-notification{pointer-events:auto}.notification-container.top-right{top:0;right:0;display:flex;flex-direction:column-reverse}.notification-container.top-left{top:0;left:0;display:flex;flex-direction:column-reverse}.notification-container.bottom-right{bottom:0;right:0;display:flex;flex-direction:column}.notification-container.bottom-left{bottom:0;left:0;display:flex;flex-direction:column}.notification-container.top-center{top:0;left:50%;transform:translate(-50%);display:flex;flex-direction:column-reverse}.notification-container.bottom-center{bottom:0;left:50%;transform:translate(-50%);display:flex;flex-direction:column}"){constructor(){super(...arguments),this.position="top-right",this.maxVisibleNotifications=2,this.playSound=!1,this.audioVolume=.1,this._notifications=[],this._audioService=new T,this.handlePlaySound=o=>{this.playSound&&this._audioService.playSound(o.detail.type)}}connectedCallback(){super.connectedCallback(),this._audioService.setVolume(this.audioVolume),p.fromEvent(window,"schmancy-notification").pipe(p.takeUntil(this.disconnecting)).subscribe(o=>{this.addNotification(o.detail)}),p.fromEvent(window,"schmancy-notification-dismiss").pipe(p.takeUntil(this.disconnecting)).subscribe(o=>{this.removeNotification(o.detail.id)}),p.fromEvent(window,"schmancy-notification-update").pipe(p.takeUntil(this.disconnecting)).subscribe(o=>{this.updateNotification(o.detail.id,o.detail)}),p.fromEvent(this,"playsound").pipe(p.takeUntil(this.disconnecting)).subscribe(this.handlePlaySound)}addNotification(o){const t=o.id||`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,e={id:t,title:o.title||"",message:o.message,type:o.type||"info",duration:o.duration!==void 0?o.duration:750,closable:o.closable===void 0||o.closable,playSound:o.playSound!==void 0?o.playSound:this.playSound,showProgress:o.showProgress!==void 0&&o.showProgress};return this.position.startsWith("top")?this._notifications=[...this._notifications,e]:this._notifications=[e,...this._notifications],this._notifications.length>this.maxVisibleNotifications&&(this._notifications=this._notifications.slice(-this.maxVisibleNotifications)),e.playSound&&this._audioService.playSound(e.type),t}removeNotification(o){this._notifications=this._notifications.filter(t=>t.id!==o)}updateNotification(o,t){const e=this._notifications.findIndex(i=>i.id===o);e!==-1&&(this._notifications[e]={...this._notifications[e],...t},this.requestUpdate())}_handleClose(o){const t=o.detail.id;this.removeNotification(t)}render(){return d.html`
125
125
  <div
126
126
  class=${b.classMap({"notification-container":!0,[this.position]:!0})}
127
127
  >
@@ -139,5 +139,5 @@
139
139
  ></sch-notification>
140
140
  `)}
141
141
  </div>
142
- `}},g([u.property({type:String})],exports.SchmancyNotificationContainer.prototype,"position",2),g([u.property({type:Number})],exports.SchmancyNotificationContainer.prototype,"maxVisibleNotifications",2),g([u.property({type:Boolean})],exports.SchmancyNotificationContainer.prototype,"playSound",2),g([u.property({type:Number})],exports.SchmancyNotificationContainer.prototype,"audioVolume",2),g([u.state()],exports.SchmancyNotificationContainer.prototype,"_notifications",2),exports.SchmancyNotificationContainer=g([u.customElement("sch-notification-container")],exports.SchmancyNotificationContainer);const p=class p{constructor(){this.notificationStack=[]}static getInstance(){return p.instance||(p.instance=new p),p.instance}notify(t){const e={...p.DEFAULT_OPTIONS,...t,duration:t.duration??p.DEFAULT_OPTIONS.duration},i=e.id||`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`;this.notificationStack.push(i);const n=new CustomEvent("schmancy-notification",{bubbles:!0,composed:!0,detail:{...e,id:i}});return window.dispatchEvent(n),i}dismiss(t){let e;if(t){const i=this.notificationStack.indexOf(t);i>-1&&(this.notificationStack.splice(i,1),e=t)}else e=this.notificationStack.pop();if(e){const i=new CustomEvent("schmancy-notification-dismiss",{bubbles:!0,composed:!0,detail:{id:e}});window.dispatchEvent(i)}}update(t,e){const i=new CustomEvent("schmancy-notification-update",{bubbles:!0,composed:!0,detail:{id:t,...e}});window.dispatchEvent(i)}info(t,e={}){return this.notify({message:t??"",type:"info",duration:t?e.duration:1,...e})}success(t,e={}){return this.notify({message:t??"",type:"success",duration:t?e.duration:1,...e})}warning(t,e={}){return this.notify({message:t??"",type:"warning",duration:t?e.duration:1,...e})}error(t,e={}){return this.notify({message:t??"",type:"error",duration:t?e.duration:1,...e})}customDuration(t,e,i={}){return this.notify({message:t,duration:e,...i})}persistent(t,e={}){return this.notify({message:t,duration:0,...e})}};p.DEFAULT_OPTIONS={duration:1e3,closable:!0,playSound:!0};let m=p;const N={show:o=>m.getInstance().notify(o),info:(o,t={})=>m.getInstance().info(o,t),success:(o,t={})=>m.getInstance().success(o,t),warning:(o,t={})=>m.getInstance().warning(o,t),error:(o,t={})=>m.getInstance().error(o,t),customDuration:(o,t,e={})=>m.getInstance().customDuration(o,t,e),persistent:(o,t={})=>m.getInstance().persistent(o,t),dismiss:o=>m.getInstance().dismiss(o),update:(o,t)=>m.getInstance().update(o,t)};exports.$notify=N,exports.NotificationAudioService=x;
143
- //# sourceMappingURL=notification-service-CTlTTCbP.cjs.map
142
+ `}},g([u.property({type:String})],exports.SchmancyNotificationContainer.prototype,"position",2),g([u.property({type:Number})],exports.SchmancyNotificationContainer.prototype,"maxVisibleNotifications",2),g([u.property({type:Boolean})],exports.SchmancyNotificationContainer.prototype,"playSound",2),g([u.property({type:Number})],exports.SchmancyNotificationContainer.prototype,"audioVolume",2),g([u.state()],exports.SchmancyNotificationContainer.prototype,"_notifications",2),exports.SchmancyNotificationContainer=g([u.customElement("sch-notification-container")],exports.SchmancyNotificationContainer);const y=class y{constructor(){this.notificationStack=[]}static getInstance(){return y.instance||(y.instance=new y),y.instance}notify(t){const e={...y.DEFAULT_OPTIONS,...t,duration:t.duration??y.DEFAULT_OPTIONS.duration},i=e.id||`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`;this.notificationStack.push(i);const n=new CustomEvent("schmancy-notification",{bubbles:!0,composed:!0,detail:{...e,id:i}});return window.dispatchEvent(n),i}dismiss(t){let e;if(t){const i=this.notificationStack.indexOf(t);i>-1&&(this.notificationStack.splice(i,1),e=t)}else e=this.notificationStack.pop();if(e){const i=new CustomEvent("schmancy-notification-dismiss",{bubbles:!0,composed:!0,detail:{id:e}});window.dispatchEvent(i)}}update(t,e){const i=new CustomEvent("schmancy-notification-update",{bubbles:!0,composed:!0,detail:{id:t,...e}});window.dispatchEvent(i)}info(t,e={}){return this.notify({message:t??"",type:"info",duration:t?e.duration:1,...e})}success(t,e={}){return this.notify({message:t??"",type:"success",duration:t?e.duration:1,...e})}warning(t,e={}){return this.notify({message:t??"",type:"warning",duration:t?e.duration:1,...e})}error(t,e={}){return this.notify({message:t??"",type:"error",duration:t?e.duration:1,...e})}customDuration(t,e,i={}){return this.notify({message:t,duration:e,...i})}persistent(t,e={}){return this.notify({message:t,duration:0,...e})}};y.DEFAULT_OPTIONS={duration:1e3,closable:!0,playSound:!0};let m=y;const N={show:o=>m.getInstance().notify(o),info:(o,t={})=>m.getInstance().info(o,t),success:(o,t={})=>m.getInstance().success(o,t),warning:(o,t={})=>m.getInstance().warning(o,t),error:(o,t={})=>m.getInstance().error(o,t),customDuration:(o,t,e={})=>m.getInstance().customDuration(o,t,e),persistent:(o,t={})=>m.getInstance().persistent(o,t),dismiss:o=>m.getInstance().dismiss(o),update:(o,t)=>m.getInstance().update(o,t)};exports.$notify=N,exports.NotificationAudioService=T;
143
+ //# sourceMappingURL=notification-service-BwcUY8O5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-service-BwcUY8O5.cjs","sources":["../src/notification/notification.ts","../src/notification/notification-audio-generator.ts","../src/notification/notification-audio.ts","../src/notification/notification-container.ts","../src/notification/notification-service.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport '@schmancy/progress'\nimport style from './notification.scss?inline'\n\nexport type NotificationType = 'info' | 'success' | 'warning' | 'error'\n\n/**\n * @fires close - When notification is closed\n */\n@customElement('sch-notification')\nexport default class SchmancyNotification extends $LitElement(style) {\n\t@property({ type: String }) title = ''\n\t@property({ type: String }) message = ''\n\t@property({ type: String }) type: NotificationType = 'info'\n\t@property({ type: Boolean }) closable = true\n\t@property({ type: Number }) duration = 5000 // 0 means no auto-close\n\t@property({ type: String }) id = `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\t@property({ type: Boolean }) playSound = true\n\t@property({ type: Boolean }) showProgress = false // Show indeterminate progress bar\n\n\t@state() private _visible = true\n\t@state() private _progress = 100\n\t@state() private _hovered = false\n\t@state() private _closing = false\n\t@state() private _autoCloseTimer?: number\n\t@state() private _progressTimer?: number\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (this.duration > 0) {\n\t\t\tthis._startAutoCloseTimer()\n\t\t}\n\n\t\tif (this.playSound) {\n\t\t\tthis._playSound()\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis._clearTimers()\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('duration') && this.duration > 0) {\n\t\t\tthis._clearTimers()\n\t\t\tthis._startAutoCloseTimer()\n\t\t}\n\t}\n\n\tprivate _startAutoCloseTimer() {\n\t\tif (this.duration <= 0) return\n\n\t\tconst startTime = Date.now()\n\t\tconst endTime = startTime + this.duration\n\n\t\t// Setup the auto-close timer\n\t\tthis._autoCloseTimer = window.setTimeout(() => {\n\t\t\tthis.close()\n\t\t}, this.duration)\n\n\t\t// Setup the progress timer to update every 16ms (60fps)\n\t\tthis._progressTimer = window.setInterval(() => {\n\t\t\tif (this._hovered) return\n\n\t\t\tconst now = Date.now()\n\t\t\tconst remaining = Math.max(0, endTime - now)\n\t\t\tthis._progress = (remaining / this.duration) * 100\n\n\t\t\tif (remaining <= 0) {\n\t\t\t\tthis._clearTimers()\n\t\t\t}\n\t\t}, 16)\n\t}\n\n\tprivate _clearTimers() {\n\t\tif (this._autoCloseTimer) {\n\t\t\tclearTimeout(this._autoCloseTimer)\n\t\t\tthis._autoCloseTimer = undefined\n\t\t}\n\n\t\tif (this._progressTimer) {\n\t\t\tclearInterval(this._progressTimer)\n\t\t\tthis._progressTimer = undefined\n\t\t}\n\t}\n\n\tprivate _pauseTimers() {\n\t\tthis._clearTimers()\n\t}\n\n\tprivate _resumeTimers() {\n\t\tif (this.duration > 0) {\n\t\t\t// Calculate remaining time based on progress\n\t\t\tconst remainingTime = (this._progress / 100) * this.duration\n\n\t\t\tif (remainingTime > 0) {\n\t\t\t\tthis._autoCloseTimer = window.setTimeout(() => {\n\t\t\t\t\tthis.close()\n\t\t\t\t}, remainingTime)\n\n\t\t\t\tconst startTime = Date.now()\n\t\t\t\tconst endTime = startTime + remainingTime\n\n\t\t\t\tthis._progressTimer = window.setInterval(() => {\n\t\t\t\t\tif (this._hovered) return\n\n\t\t\t\t\tconst now = Date.now()\n\t\t\t\t\tconst remaining = Math.max(0, endTime - now)\n\t\t\t\t\tthis._progress = (remaining / remainingTime) * 100\n\n\t\t\t\t\tif (remaining <= 0) {\n\t\t\t\t\t\tthis._clearTimers()\n\t\t\t\t\t}\n\t\t\t\t}, 16)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _playSound() {\n\t\t// Dispatch event to play sound through audio service\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('playsound', {\n\t\t\t\tdetail: { type: this.type },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate _handleMouseEnter() {\n\t\tthis._hovered = true\n\t\tthis._pauseTimers()\n\t}\n\n\tprivate _handleMouseLeave() {\n\t\tthis._hovered = false\n\t\tthis._resumeTimers()\n\t}\n\n\tpublic close() {\n\t\tif (this._closing) return\n\n\t\tthis._closing = true\n\t\tthis._clearTimers()\n\n\t\t// Add closing animation\n\t\tthis._visible = false\n\n\t\t// Dispatch close event\n\t\tsetTimeout(() => {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('close', {\n\t\t\t\t\tdetail: { id: this.id },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}, 300) // Match animation duration\n\t}\n\n\trender() {\n\t\tif (!this._visible && this._closing) return html``\n\n\t\tconst typeStyles = this._getTypeStyles()\n\n\t\t// Calculate elevation based on hover state\n\t\tconst elevationLevel = this._hovered ? '3' : '2'\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${classMap({\n\t\t\t\t\tnotification: true,\n\t\t\t\t\tclosing: this._closing,\n\t\t\t\t\t[this.type]: true,\n\t\t\t\t})}\n\t\t\t\trole=\"alert\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\ttransform: this._closing ? 'translateX(120%)' : 'translateX(0)',\n\t\t\t\t\topacity: this._closing ? '0' : '1',\n\t\t\t\t\tboxShadow: `var(--schmancy-sys-elevation-${elevationLevel})`,\n\t\t\t\t\ttransition:\n\t\t\t\t\t\t'transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease',\n\t\t\t\t})}\n\t\t\t\t@mouseenter=${this._handleMouseEnter}\n\t\t\t\t@mouseleave=${this._handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div class=\"notification-content\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"icon-container\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: typeStyles.iconColor,\n\t\t\t\t\t\t\tbgColor: `color-mix(in srgb, ${typeStyles.iconColor} 10%, transparent)`,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t${typeStyles.icon}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"content\">\n\t\t\t\t\t\t${this.title\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclass=\"title\"\n\t\t\t\t\t\t\t\t\t\tstyle=${styleMap({\n\t\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\t\tthis.type === 'info'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: this.type === 'success'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: this.type === 'warning'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.title}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t\t<div class=\"message\">${this.message}</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t${this.closable\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"close-button\"\n\t\t\t\t\t\t\t\t\taria-label=\"Close notification\"\n\t\t\t\t\t\t\t\t\t@click=${this.close}\n\t\t\t\t\t\t\t\t\tstyle=${styleMap({\n\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\tthis.type === 'info'\n\t\t\t\t\t\t\t\t\t\t\t\t? SchmancyTheme.sys.color.surface.onVariant\n\t\t\t\t\t\t\t\t\t\t\t\t: `color-mix(in srgb, ${typeStyles.iconColor} 80%, ${SchmancyTheme.sys.color.surface.onVariant} 20%)`,\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\twidth=\"18\"\n\t\t\t\t\t\t\t\t\t\theight=\"18\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n\t\t\t\t\t\t\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\n\t\t\t\t${this.showProgress || this.duration > 0\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-progress\n\t\t\t\t\t\t\t\tstyle=\"position: absolute; bottom: 0; left: 0; right: 0; width: 100%;\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t.color=${this.type === 'error' ? 'error' : this.type === 'success' ? 'success' : 'primary'}\n\t\t\t\t\t\t\t\t?indeterminate=${this.showProgress}\n\t\t\t\t\t\t\t\t.value=${this.showProgress ? 0 : this._progress}\n\t\t\t\t\t\t\t\t.max=${100}\n\t\t\t\t\t\t\t></schmancy-progress>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate _getTypeStyles() {\n\t\tswitch (this.type) {\n\t\t\tcase 'success':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path>\n\t\t\t\t\t\t\t<polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.success.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 95%, ${SchmancyTheme.sys.color.success.container} 5%)`,\n\t\t\t\t}\n\t\t\tcase 'warning':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.tertiary.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.tertiary.container} 10%)`,\n\t\t\t\t}\n\t\t\tcase 'error':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n\t\t\t\t\t\t\t<line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\n\t\t\t\t\t\t\t<line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.error.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 92%, ${SchmancyTheme.sys.color.error.container} 8%)`,\n\t\t\t\t}\n\t\t\tcase 'info':\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 94%, ${SchmancyTheme.sys.color.primary.container} 6%)`,\n\t\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-notification': SchmancyNotification\n\t}\n}\n","/**\n * Programmatic sound generator for Schmancy notifications\n * Uses Web Audio API to generate gentle, subtle and soft sounds for each notification type\n */\nexport class NotificationSoundGenerator {\n\tprivate audioContext: AudioContext | null = null\n\n\t/**\n\t * Get or create AudioContext\n\t */\n\tprivate getAudioContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\tconst AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\t\treturn this.audioContext\n\t}\n\n\tpublic playInfoSound(volume = 0.2): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst oscillator = ctx.createOscillator()\n\t\tconst gainNode = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\toscillator.type = 'sine'\n\t\toscillator.frequency.setValueAtTime(392, now) // G4\n\t\toscillator.frequency.exponentialRampToValueAtTime(523.25, now + 0.25) // C5\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 1500\n\n\t\tgainNode.gain.setValueAtTime(0.0001, now)\n\t\tgainNode.gain.exponentialRampToValueAtTime(volume, now + 0.15)\n\t\tgainNode.gain.exponentialRampToValueAtTime(0.0001, now + 0.4)\n\n\t\toscillator.connect(filter).connect(gainNode).connect(ctx.destination)\n\t\toscillator.start(now)\n\t\toscillator.stop(now + 0.45)\n\t}\n\n\tpublic playSuccessSound(volume = 0.2): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst createBell = (freq: number, start: number, duration: number) => {\n\t\t\tconst osc = ctx.createOscillator()\n\t\t\tconst gain = ctx.createGain()\n\t\t\tconst filter = ctx.createBiquadFilter()\n\n\t\t\tosc.type = 'sine'\n\t\t\tosc.frequency.setValueAtTime(freq, now)\n\t\t\tfilter.type = 'lowpass'\n\t\t\tfilter.frequency.value = freq * 4\n\n\t\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\t\tgain.gain.exponentialRampToValueAtTime(volume, now + 0.1)\n\t\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + duration)\n\n\t\t\tosc.connect(filter).connect(gain).connect(ctx.destination)\n\t\t\tosc.start(now + start)\n\t\t\tosc.stop(now + duration)\n\t\t}\n\n\t\tcreateBell(659.25, 0, 0.6) // E5\n\t\tcreateBell(523.25, 0.05, 0.55) // C5\n\t}\n\n\tpublic playWarningSound(volume = 0.25): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst osc1 = ctx.createOscillator()\n\t\tconst osc2 = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\tosc1.type = 'sine'\n\t\tosc2.type = 'sine'\n\t\tosc1.frequency.setValueAtTime(349.23, now) // F4\n\t\tosc2.frequency.setValueAtTime(440, now) // A4\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 1000\n\n\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\tgain.gain.exponentialRampToValueAtTime(volume, now + 0.08)\n\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + 0.5)\n\n\t\tosc1.connect(filter)\n\t\tosc2.connect(filter)\n\t\tfilter.connect(gain).connect(ctx.destination)\n\n\t\tosc1.start(now)\n\t\tosc2.start(now)\n\t\tosc1.stop(now + 0.55)\n\t\tosc2.stop(now + 0.55)\n\t}\n\n\tpublic playErrorSound(volume = 0.25): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst osc = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\tosc.type = 'triangle'\n\t\tosc.frequency.setValueAtTime(220, now) // A3\n\t\tosc.frequency.exponentialRampToValueAtTime(1760, now + 0.3) // A6\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 800\n\t\tfilter.Q.value = 0.5\n\n\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\tgain.gain.exponentialRampToValueAtTime(volume * 0.8, now + 0.1)\n\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + 0.7)\n\n\t\tosc.connect(filter).connect(gain).connect(ctx.destination)\n\t\tosc.start(now)\n\t\tosc.stop(now + 0.75)\n\t}\n\n\t/**\n\t * Generate audio blob files for all notification sounds\n\t * Returns a Promise that resolves with URLs to the generated audio files\n\t */\n\tpublic async generateAudioFiles(volume = 0.25): Promise<Record<string, string>> {\n\t\t// Create offline audio context for rendering\n\t\tconst sampleRate = 44100\n\t\tconst duration = 1 // 1 second duration to capture the full sound\n\n\t\tconst audioUrls: Record<string, string> = {}\n\n\t\t// Generate info sound\n\t\taudioUrls.info = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create oscillator for main tone\n\t\t\t\tconst oscillator = ctx.createOscillator()\n\t\t\t\toscillator.type = 'sine'\n\t\t\t\toscillator.frequency.setValueAtTime(320, 0)\n\t\t\t\toscillator.frequency.exponentialRampToValueAtTime(520, 0.3)\n\n\t\t\t\t// Create gain node for volume control with softer attack/release\n\t\t\t\tconst gainNode = ctx.createGain()\n\t\t\t\tgainNode.gain.setValueAtTime(0, 0)\n\t\t\t\tgainNode.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgainNode.gain.linearRampToValueAtTime(0, 0.5)\n\n\t\t\t\t// Connect and play\n\t\t\t\toscillator.connect(gainNode)\n\t\t\t\tgainNode.connect(ctx.destination)\n\t\t\t\toscillator.start()\n\t\t\t\toscillator.stop(0.5)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate success sound\n\t\taudioUrls.success = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create main oscillator (higher note)\n\t\t\t\tconst osc1 = ctx.createOscillator()\n\t\t\t\tosc1.type = 'sine'\n\t\t\t\tosc1.frequency.setValueAtTime(660, 0)\n\n\t\t\t\t// Create secondary oscillator (lower note)\n\t\t\t\tconst osc2 = ctx.createOscillator()\n\t\t\t\tosc2.type = 'sine'\n\t\t\t\tosc2.frequency.setValueAtTime(440, 0)\n\n\t\t\t\t// Create gain nodes with softer envelope\n\t\t\t\tconst gain1 = ctx.createGain()\n\t\t\t\tgain1.gain.setValueAtTime(0, 0)\n\t\t\t\tgain1.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain1.gain.linearRampToValueAtTime(0, 0.5)\n\n\t\t\t\tconst gain2 = ctx.createGain()\n\t\t\t\tgain2.gain.setValueAtTime(0, 0)\n\t\t\t\tgain2.gain.linearRampToValueAtTime(volume * 0.6, 0.15)\n\t\t\t\tgain2.gain.linearRampToValueAtTime(0, 0.7)\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc1.connect(gain1)\n\t\t\t\tgain1.connect(ctx.destination)\n\n\t\t\t\tosc2.connect(gain2)\n\t\t\t\tgain2.connect(ctx.destination)\n\n\t\t\t\tosc1.start()\n\t\t\t\tosc2.start(0.15)\n\n\t\t\t\tosc1.stop(0.5)\n\t\t\t\tosc2.stop(0.7)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate warning sound\n\t\taudioUrls.warning = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create oscillators for a two-tone warning\n\t\t\t\tconst osc1 = ctx.createOscillator()\n\t\t\t\tosc1.type = 'sine'\n\t\t\t\tosc1.frequency.setValueAtTime(293.66, 0)\n\n\t\t\t\tconst osc2 = ctx.createOscillator()\n\t\t\t\tosc2.type = 'sine'\n\t\t\t\tosc2.frequency.setValueAtTime(349.23, 0)\n\n\t\t\t\t// Create gain node with softer envelope\n\t\t\t\tconst gain = ctx.createGain()\n\t\t\t\tgain.gain.setValueAtTime(0, 0)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.6, 0.2)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.8, 0.3)\n\t\t\t\tgain.gain.linearRampToValueAtTime(0, 0.6)\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc1.connect(gain)\n\t\t\t\tosc2.connect(gain)\n\t\t\t\tgain.connect(ctx.destination)\n\n\t\t\t\tosc1.start()\n\t\t\t\tosc2.start()\n\n\t\t\t\tosc1.stop(0.6)\n\t\t\t\tosc2.stop(0.6)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate error sound\n\t\taudioUrls.error = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create main oscillator\n\t\t\t\tconst osc = ctx.createOscillator()\n\t\t\t\tosc.type = 'sine'\n\t\t\t\tosc.frequency.setValueAtTime(196, 0)\n\n\t\t\t\t// Create gain node with softer envelope\n\t\t\t\tconst gain = ctx.createGain()\n\t\t\t\tgain.gain.setValueAtTime(0, 0)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.4, 0.2)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.6, 0.3)\n\t\t\t\tgain.gain.linearRampToValueAtTime(0, 0.7)\n\n\t\t\t\t// Additional filter to make it even softer\n\t\t\t\tconst filter = ctx.createBiquadFilter()\n\t\t\t\tfilter.type = 'lowpass'\n\t\t\t\tfilter.frequency.value = 600\n\t\t\t\tfilter.Q.value = 0.7\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc.connect(filter)\n\t\t\t\tfilter.connect(gain)\n\t\t\t\tgain.connect(ctx.destination)\n\n\t\t\t\tosc.start()\n\t\t\t\tosc.stop(0.7)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\treturn audioUrls\n\t}\n\n\t/**\n\t * Generate an audio file from a sound generation function\n\t * @param renderFunction Function that creates the sound in the provided context\n\t * @param sampleRate Sample rate for the audio\n\t * @param duration Duration in seconds\n\t * @returns Promise that resolves with the URL to the generated audio file\n\t */\n\tprivate async generateAudioFile(\n\t\trenderFunction: (ctx: OfflineAudioContext) => Promise<void>,\n\t\tsampleRate = 44100,\n\t\tduration = 1,\n\t): Promise<string> {\n\t\t// Create offline context\n\t\tconst offlineCtx = new OfflineAudioContext(2, sampleRate * duration, sampleRate)\n\n\t\t// Render the sound\n\t\tawait renderFunction(offlineCtx)\n\n\t\t// Render the audio\n\t\tconst audioBuffer = await offlineCtx.startRendering()\n\n\t\t// Convert to WAV format\n\t\tconst wavBlob = this.audioBufferToWav(audioBuffer)\n\n\t\t// Create URL\n\t\treturn URL.createObjectURL(wavBlob)\n\t}\n\n\t/**\n\t * Convert AudioBuffer to WAV format\n\t * Based on https://github.com/Jam3/audiobuffer-to-wav\n\t */\n\tprivate audioBufferToWav(buffer: AudioBuffer): Blob {\n\t\tconst numChannels = buffer.numberOfChannels\n\t\tconst sampleRate = buffer.sampleRate\n\t\tconst format = 1 // PCM\n\t\tconst bitDepth = 16\n\n\t\tconst bytesPerSample = bitDepth / 8\n\t\tconst blockAlign = numChannels * bytesPerSample\n\n\t\tconst samples = this.getAudioSamples(buffer, bitDepth)\n\t\tconst dataLength = samples.length * bytesPerSample\n\n\t\t// Create WAV header\n\t\tconst headerLength = 44\n\t\tconst wavBuffer = new ArrayBuffer(headerLength + dataLength)\n\t\tconst view = new DataView(wavBuffer)\n\n\t\t// RIFF identifier\n\t\tthis.writeString(view, 0, 'RIFF')\n\t\t// File length minus RIFF identifier and file size\n\t\tview.setUint32(4, 36 + dataLength, true)\n\t\t// RIFF type\n\t\tthis.writeString(view, 8, 'WAVE')\n\t\t// Format chunk identifier\n\t\tthis.writeString(view, 12, 'fmt ')\n\t\t// Format chunk length\n\t\tview.setUint32(16, 16, true)\n\t\t// Sample format (PCM)\n\t\tview.setUint16(20, format, true)\n\t\t// Channel count\n\t\tview.setUint16(22, numChannels, true)\n\t\t// Sample rate\n\t\tview.setUint32(24, sampleRate, true)\n\t\t// Byte rate (sample rate * block align)\n\t\tview.setUint32(28, sampleRate * blockAlign, true)\n\t\t// Block align (channel count * bytes per sample)\n\t\tview.setUint16(32, blockAlign, true)\n\t\t// Bits per sample\n\t\tview.setUint16(34, bitDepth, true)\n\t\t// Data chunk identifier\n\t\tthis.writeString(view, 36, 'data')\n\t\t// Data chunk length\n\t\tview.setUint32(40, dataLength, true)\n\n\t\t// Write the audio data\n\t\tif (bitDepth === 16) {\n\t\t\tthis.writeInt16Samples(view, headerLength, samples)\n\t\t} else {\n\t\t\tthrow new Error('Only 16-bit audio is supported')\n\t\t}\n\n\t\treturn new Blob([wavBuffer], { type: 'audio/wav' })\n\t}\n\n\t/**\n\t * Get audio samples from an AudioBuffer\n\t */\n\tprivate getAudioSamples(buffer: AudioBuffer, bitDepth: number): number[] {\n\t\tconst numChannels = buffer.numberOfChannels\n\t\tconst length = buffer.length\n\t\tconst samples: number[] = []\n\t\tconst scale = bitDepth === 16 ? 32768 : 128\n\n\t\t// Get samples from all channels\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tfor (let channel = 0; channel < numChannels; channel++) {\n\t\t\t\tconst sample = buffer.getChannelData(channel)[i]\n\t\t\t\t// Convert float32 to int16 or int8\n\t\t\t\tconst intSample = Math.max(-1, Math.min(1, sample))\n\t\t\t\tsamples.push(intSample * scale)\n\t\t\t}\n\t\t}\n\n\t\treturn samples\n\t}\n\n\t/**\n\t * Write 16-bit samples to a DataView\n\t */\n\tprivate writeInt16Samples(view: DataView, offset: number, samples: number[]): void {\n\t\tfor (let i = 0; i < samples.length; i++) {\n\t\t\tview.setInt16(offset + i * 2, samples[i], true)\n\t\t}\n\t}\n\n\t/**\n\t * Write a string to a DataView\n\t */\n\tprivate writeString(view: DataView, offset: number, string: string): void {\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tview.setUint8(offset + i, string.charCodeAt(i))\n\t\t}\n\t}\n}\n","import { fromEvent, takeUntil } from 'rxjs'\nimport { NotificationType } from './notification'\nimport { NotificationSoundGenerator } from './notification-audio-generator'\n\n/**\n * Audio service for playing notification sounds.\n * Uses Web Audio API with fallback to HTML5 Audio.\n */\nexport class NotificationAudioService {\n\tprivate audioContext: AudioContext | null = null\n\tprivate soundBuffers: Map<NotificationType, AudioBuffer> = new Map()\n\tprivate volume: number = 0.5\n\tprivate muted: boolean = false\n\tprivate soundGenerator = new NotificationSoundGenerator()\n\tprivate disconnecting = new EventTarget()\n\n\t// Default sound URLs (will be generated programmatically as fallback)\n\tprivate soundUrls: Record<NotificationType, string> = {\n\t\tinfo: '/assets/sounds/notification-info.mp3',\n\t\tsuccess: '/assets/sounds/notification-success.mp3',\n\t\twarning: '/assets/sounds/notification-warning.mp3',\n\t\terror: '/assets/sounds/notification-error.mp3',\n\t}\n\n\tconstructor() {\n\t\t// Initialize audio context when first needed\n\t\tthis.initializeAudioFiles()\n\t}\n\n\t/**\n\t * Initialize audio files - generate programmatically if needed\n\t */\n\tprivate async initializeAudioFiles(): Promise<void> {\n\t\ttry {\n\t\t\t// Try to load from default URLs\n\t\t\tawait this.preloadSounds()\n\t\t} catch (err) {\n\n\t\t\t// If loading fails, generate programmatically\n\t\t\ttry {\n\t\t\t\tconst generatedUrls = await this.soundGenerator.generateAudioFiles(this.volume)\n\t\t\t\tthis.soundUrls = generatedUrls\n\t\t\t} catch (genErr) {\n\t\t\t\tconsole.warn('Failed to generate notification sounds:', genErr)\n\t\t\t\t// Will fall back to direct playback when needed\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Lazy-initialize the audio context\n\t */\n\tprivate getAudioContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\t// Use AudioContext with webkit prefix fallback for Safari\n\t\t\tconst AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\n\t\treturn this.audioContext\n\t}\n\n\t/**\n\t * Preload all notification sounds\n\t */\n\tprivate async preloadSounds(): Promise<void> {\n\t\tconst types: NotificationType[] = ['info', 'success', 'warning', 'error']\n\n\t\tfor (const type of types) {\n\t\t\ttry {\n\t\t\t\tconst buffer = await this.loadSound(type)\n\t\t\t\tthis.soundBuffers.set(type, buffer)\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(`Failed to preload ${type} sound:`, err)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Load a sound file and decode it\n\t */\n\tprivate async loadSound(type: NotificationType): Promise<AudioBuffer> {\n\t\tconst url = this.soundUrls[type]\n\t\tconst response = await fetch(url)\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to load sound from ${url}: ${response.statusText}`)\n\t\t}\n\n\t\tconst arrayBuffer = await response.arrayBuffer()\n\t\treturn await this.getAudioContext().decodeAudioData(arrayBuffer)\n\t}\n\n\t/**\n\t * Play a notification sound\n\t */\n\tpublic async playSound(type: NotificationType): Promise<void> {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\t// Try to use Web Audio API first\n\t\t\tconst context = this.getAudioContext()\n\n\t\t\t// Ensure audio context is resumed (needed due to autoplay policy)\n\t\t\tif (context.state === 'suspended') {\n\t\t\t\tawait context.resume()\n\t\t\t}\n\n\t\t\t// Try to use programmatically generated sound first\n\t\t\tif (this.soundUrls[type].startsWith('blob:')) {\n\t\t\t\tthis.playFallbackSound(type)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Load sound if not already cached\n\t\t\tif (!this.soundBuffers.has(type)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst buffer = await this.loadSound(type)\n\t\t\t\t\tthis.soundBuffers.set(type, buffer)\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Fall back to direct generator\n\t\t\t\t\tthis.playDirectGeneratedSound(type)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst buffer = this.soundBuffers.get(type)\n\t\t\tif (!buffer) {\n\t\t\t\tthrow new Error(`Sound buffer for ${type} not available`)\n\t\t\t}\n\n\t\t\t// Create source and gain nodes\n\t\t\tconst source = context.createBufferSource()\n\t\t\tsource.buffer = buffer\n\n\t\t\tconst gainNode = context.createGain()\n\t\t\tgainNode.gain.value = this.volume\n\n\t\t\t// Connect and play\n\t\t\tsource.connect(gainNode)\n\t\t\tgainNode.connect(context.destination)\n\t\t\tsource.start(0)\n\t\t} catch (err) {\n\t\t\tconsole.warn(`Web Audio API buffer playback failed, trying direct generation:`, err)\n\t\t\tthis.playDirectGeneratedSound(type)\n\t\t}\n\t}\n\n\t/**\n\t * Play a directly generated sound when other methods fail\n\t */\n\tprivate playDirectGeneratedSound(type: NotificationType): void {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'info':\n\t\t\t\t\tthis.soundGenerator.playInfoSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'success':\n\t\t\t\t\tthis.soundGenerator.playSuccessSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'warning':\n\t\t\t\t\tthis.soundGenerator.playWarningSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'error':\n\t\t\t\t\tthis.soundGenerator.playErrorSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to play generated sound for ${type}:`, err)\n\t\t}\n\t}\n\n\t/**\n\t * Handle audio ended event for cleanup\n\t */\n\tprivate handleAudioEnded = (audio: HTMLAudioElement) => () => {\n\t\taudio.remove()\n\t}\n\n\t/**\n\t * Play sound using HTML5 Audio as a fallback\n\t */\n\tprivate playFallbackSound(type: NotificationType): void {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\tconst audio = new Audio(this.soundUrls[type])\n\t\t\taudio.volume = this.volume\n\n\t\t\t// Add event listener to clean up after playback using RxJS\n\t\t\tfromEvent(audio, 'ended').pipe(\n\t\t\t\ttakeUntil(fromEvent(this.disconnecting, 'disconnect'))\n\t\t\t).subscribe(this.handleAudioEnded(audio))\n\n\t\t\taudio.play().catch(err => {\n\t\t\t\tconsole.error(`Failed to play fallback sound for ${type}:`, err)\n\t\t\t\tthis.playDirectGeneratedSound(type)\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tconsole.error('HTML5 Audio fallback failed:', err)\n\t\t\tthis.playDirectGeneratedSound(type)\n\t\t}\n\t}\n\n\t/**\n\t * Set volume for notification sounds (0.0 to 1.0)\n\t */\n\tpublic setVolume(volume: number): void {\n\t\tthis.volume = Math.max(0, Math.min(1, volume))\n\t}\n\n\t/**\n\t * Get current volume level\n\t */\n\tpublic getVolume(): number {\n\t\treturn this.volume\n\t}\n\n\t/**\n\t * Mute notification sounds\n\t */\n\tpublic mute(): void {\n\t\tthis.muted = true\n\t}\n\n\t/**\n\t * Unmute notification sounds\n\t */\n\tpublic unmute(): void {\n\t\tthis.muted = false\n\t}\n\n\t/**\n\t * Check if notification sounds are muted\n\t */\n\tpublic isMuted(): boolean {\n\t\treturn this.muted\n\t}\n\n\t/**\n\t * Set custom sound URL for a notification type\n\t */\n\tpublic setSoundUrl(type: NotificationType, url: string): void {\n\t\tthis.soundUrls[type] = url\n\n\t\t// Clear cached buffer to force reload\n\t\tthis.soundBuffers.delete(type)\n\t}\n\n\t/**\n\t * Get the current sound URL for a notification type\n\t */\n\tpublic getSoundUrl(type: NotificationType): string {\n\t\treturn this.soundUrls[type]\n\t}\n\n\t/**\n\t * Cleanup all subscriptions and resources\n\t */\n\tpublic dispose(): void {\n\t\tthis.disconnecting.dispatchEvent(new Event('disconnect'))\n\n\t\t// Close audio context if exists\n\t\tif (this.audioContext && this.audioContext.state !== 'closed') {\n\t\t\tthis.audioContext.close().catch(err => {\n\t\t\t\tconsole.warn('Failed to close audio context:', err)\n\t\t\t})\n\t\t}\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { fromEvent, takeUntil } from 'rxjs'\nimport { NotificationType } from './notification'\nimport { NotificationAudioService } from './notification-audio'\nimport style from './notification-container.scss?inline'\n\nexport interface NotificationItem {\n\tid: string\n\ttitle: string\n\tmessage: string\n\ttype: NotificationType\n\tduration: number\n\tclosable: boolean\n\tplaySound: boolean\n\tshowProgress?: boolean\n}\n\nexport interface NotificationOptions {\n\tid?: string\n\ttitle?: string\n\tmessage: string\n\ttype?: NotificationType\n\tduration?: number\n\tclosable?: boolean\n\tplaySound?: boolean\n\tshowProgress?: boolean\n}\n\n/**\n * Container component for displaying stacked notifications.\n *\n * @element sch-notification-container\n */\n@customElement('sch-notification-container')\nexport default class SchmancyNotificationContainer extends $LitElement(style) {\n\t@property({ type: String }) position:\n\t\t| 'top-right'\n\t\t| 'top-left'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'top-center'\n\t\t| 'bottom-center' = 'top-right'\n\t@property({ type: Number }) maxVisibleNotifications = 2\n\t@property({ type: Boolean }) playSound = false\n\t@property({ type: Number }) audioVolume = 0.1\n\n\t@state() private _notifications: NotificationItem[] = []\n\n\t// Audio service\n\tprivate _audioService = new NotificationAudioService()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set audio volume\n\t\tthis._audioService.setVolume(this.audioVolume)\n\n\t\t// Listen for notification events\n\t\tfromEvent<CustomEvent<NotificationOptions>>(window, 'schmancy-notification')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.addNotification(event.detail)\n\t\t\t})\n\n\t\t// Listen for dismiss events\n\t\tfromEvent<CustomEvent<{ id: string }>>(window, 'schmancy-notification-dismiss')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.removeNotification(event.detail.id)\n\t\t\t})\n\n\t\t// Listen for update events\n\t\tfromEvent<CustomEvent<{ id: string } & Partial<NotificationOptions>>>(window, 'schmancy-notification-update')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.updateNotification(event.detail.id, event.detail)\n\t\t\t})\n\n\t\t// Listen for play sound events from child notifications\n\t\tfromEvent<CustomEvent>(this, 'playsound')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(this.handlePlaySound)\n\t}\n\n\t// Public API to add notifications\n\tpublic addNotification(options: NotificationOptions): string {\n\t\tconst id = options.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\n\t\tconst notification: NotificationItem = {\n\t\t\tid,\n\t\t\ttitle: options.title || '',\n\t\t\tmessage: options.message,\n\t\t\ttype: options.type || 'info',\n\t\t\tduration: options.duration !== undefined ? options.duration : 750,\n\t\t\tclosable: options.closable !== undefined ? options.closable : true,\n\t\t\tplaySound: options.playSound !== undefined ? options.playSound : this.playSound,\n\t\t\tshowProgress: options.showProgress !== undefined ? options.showProgress : false,\n\t\t}\n\n\t\t// Add new notification (top for top-* positions, bottom for bottom-* positions)\n\t\tif (this.position.startsWith('top')) {\n\t\t\tthis._notifications = [...this._notifications, notification]\n\t\t} else {\n\t\t\tthis._notifications = [notification, ...this._notifications]\n\t\t}\n\n\t\t// Enforce max visible notifications\n\t\tif (this._notifications.length > this.maxVisibleNotifications) {\n\t\t\tthis._notifications = this._notifications.slice(-this.maxVisibleNotifications)\n\t\t}\n\n\t\t// Play sound if enabled\n\t\tif (notification.playSound) {\n\t\t\tthis._audioService.playSound(notification.type)\n\t\t}\n\n\t\treturn id\n\t}\n\n\tpublic removeNotification(id: string) {\n\t\tthis._notifications = this._notifications.filter(n => n.id !== id)\n\t}\n\n\tpublic updateNotification(id: string, options: Partial<NotificationOptions>) {\n\t\tconst index = this._notifications.findIndex(n => n.id === id)\n\t\tif (index !== -1) {\n\t\t\tthis._notifications[index] = {\n\t\t\t\t...this._notifications[index],\n\t\t\t\t...options,\n\t\t\t}\n\t\t\tthis.requestUpdate()\n\t\t}\n\t}\n\n\tprivate handlePlaySound = (event: CustomEvent) => {\n\t\tif (this.playSound) {\n\t\t\tthis._audioService.playSound(event.detail.type)\n\t\t}\n\t}\n\n\tprivate _handleClose(e: CustomEvent) {\n\t\tconst id = e.detail.id\n\t\tthis.removeNotification(id)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${classMap({\n\t\t\t\t\t'notification-container': true,\n\t\t\t\t\t[this.position]: true,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t${repeat(\n\t\t\t\t\tthis._notifications,\n\t\t\t\t\tnotification => notification.id,\n\t\t\t\t\tnotification => html`\n <sch-notification\n .id=${notification.id}\n .title=${notification.title}\n .message=${notification.message}\n .type=${notification.type}\n .duration=${notification.duration}\n ?closable=${notification.closable}\n ?playSound=${false}\n ?showProgress=${notification.showProgress}\n @close=${this._handleClose}\n ></sch-notification>\n `,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-notification-container': SchmancyNotificationContainer\n\t}\n}\n","import { NotificationOptions } from './notification-container'\n\n/**\n * Notification service for centralized notification management.\n * Provides a simple API for showing notifications.\n */\nexport class NotificationService {\n\tprivate static instance: NotificationService\n\tprivate notificationStack: string[] = []\n\n\t// Default notification options\n\tprivate static DEFAULT_OPTIONS: Partial<NotificationOptions> = {\n\t\tduration: 1000, // 1 seconds - long enough to be readable\n\t\tclosable: true,\n\t\tplaySound: true,\n\t}\n\n\t// Private constructor for singleton pattern\n\tprivate constructor() {}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): NotificationService {\n\t\tif (!NotificationService.instance) {\n\t\t\tNotificationService.instance = new NotificationService()\n\t\t}\n\t\treturn NotificationService.instance\n\t}\n\n\t/**\n\t * Show a notification\n\t * @returns The ID of the created notification\n\t */\n\tpublic notify(options: NotificationOptions): string {\n\t\t// Apply default options\n\t\tconst completeOptions = {\n\t\t\t...NotificationService.DEFAULT_OPTIONS,\n\t\t\t...options,\n\t\t\t// Override with duraton from options if provided, otherwise use default\n\t\t\tduration: options.duration ?? NotificationService.DEFAULT_OPTIONS.duration,\n\t\t}\n\n\t\tconst id = completeOptions.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\n\t\t// Add to stack for tracking\n\t\tthis.notificationStack.push(id)\n\n\t\t// Create and dispatch event\n\t\tconst event = new CustomEvent('schmancy-notification', {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tdetail: {\n\t\t\t\t...completeOptions,\n\t\t\t\tid,\n\t\t\t},\n\t\t})\n\n\t\twindow.dispatchEvent(event)\n\t\treturn id\n\t}\n\n\t/**\n\t * Dismiss a notification\n\t * @param id Optional notification ID. If not provided, dismisses the most recent notification\n\t */\n\tpublic dismiss(id?: string): void {\n\t\tlet targetId: string | undefined\n\n\t\tif (id) {\n\t\t\t// Remove specific notification from stack\n\t\t\tconst index = this.notificationStack.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.notificationStack.splice(index, 1)\n\t\t\t\ttargetId = id\n\t\t\t}\n\t\t} else {\n\t\t\t// Remove most recent notification (last in stack)\n\t\t\ttargetId = this.notificationStack.pop()\n\t\t}\n\n\t\tif (targetId) {\n\t\t\t// Dispatch dismiss event\n\t\t\tconst event = new CustomEvent('schmancy-notification-dismiss', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t\tdetail: { id: targetId },\n\t\t\t})\n\t\t\twindow.dispatchEvent(event)\n\t\t}\n\t}\n\n\t/**\n\t * Update a notification's content\n\t */\n\tpublic update(id: string, options: Partial<NotificationOptions>): void {\n\t\tconst event = new CustomEvent('schmancy-notification-update', {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tdetail: { id, ...options },\n\t\t})\n\t\twindow.dispatchEvent(event)\n\t}\n\n\t/**\n\t * Show an info notification\n\t */\n\tpublic info(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'info',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a success notification\n\t */\n\tpublic success(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'success',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a warning notification\n\t */\n\tpublic warning(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'warning',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show an error notification\n\t */\n\tpublic error(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'error',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a notification with a custom duration\n\t */\n\tpublic customDuration(\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a persistent notification (won't auto-dismiss)\n\t */\n\tpublic persistent(message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration: 0, // Zero duration means no auto-close\n\t\t\t...options,\n\t\t})\n\t}\n\n}\n\n/**\n * Global notification utility - provides a quick way to show notifications\n */\nexport const $notify = {\n\t/**\n\t * Show a notification\n\t */\n\tshow: (options: NotificationOptions): string => {\n\t\treturn NotificationService.getInstance().notify(options)\n\t},\n\n\t/**\n\t * Show an info notification\n\t */\n\tinfo: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().info(message, options)\n\t},\n\n\t/**\n\t * Show a success notification\n\t */\n\tsuccess: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().success(message, options)\n\t},\n\n\t/**\n\t * Show a warning notification\n\t */\n\twarning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().warning(message, options)\n\t},\n\n\t/**\n\t * Show an error notification\n\t */\n\terror: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().error(message, options)\n\t},\n\n\t/**\n\t * Show a notification with a custom duration\n\t * @param message The notification message\n\t * @param duration Duration in milliseconds before auto-dismissing (0 for no auto-dismiss)\n\t * @param options Additional notification options\n\t */\n\tcustomDuration: (\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string => {\n\t\treturn NotificationService.getInstance().customDuration(message, duration, options)\n\t},\n\n\t/**\n\t * Show a persistent notification that won't auto-dismiss\n\t */\n\tpersistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string => {\n\t\treturn NotificationService.getInstance().persistent(message, options)\n\t},\n\n\t/**\n\t * Dismiss a notification\n\t * @param id Optional notification ID. If not provided, dismisses the most recent notification (queue-like behavior)\n\t */\n\tdismiss: (id?: string): void => {\n\t\treturn NotificationService.getInstance().dismiss(id)\n\t},\n\n\t/**\n\t * Update a notification's content\n\t */\n\tupdate: (id: string, options: Partial<NotificationOptions>): void => {\n\t\treturn NotificationService.getInstance().update(id, options)\n\t},\n}\n\nexport default NotificationService\n"],"names":["SchmancyNotification","$LitElement","constructor","super","arguments","this","title","message","type","closable","duration","id","Date","now","Math","floor","random","playSound","showProgress","_visible","_progress","_hovered","_closing","connectedCallback","_startAutoCloseTimer","_playSound","_clearTimers","disconnectedCallback","changedProps","updated","has","endTime","_autoCloseTimer","window","setTimeout","close","_progressTimer","setInterval","remaining","max","clearTimeout","clearInterval","_pauseTimers","_resumeTimers","remainingTime","dispatchEvent","CustomEvent","detail","bubbles","composed","_handleMouseEnter","html","typeStyles","_getTypeStyles","elevationLevel","classMap","notification","closing","styleMap","transform","opacity","boxShadow","transition","_handleMouseLeave","color","iconColor","bgColor","icon","SchmancyTheme","sys","primary","default","surface","on","success","tertiary","error","onVariant","progressColor","container","__decorateClass","property","String","prototype","Boolean","Number","state","customElement","NotificationSoundGenerator","audioContext","getAudioContext","AudioContextClass","AudioContext","webkitAudioContext","volume","ctx","currentTime","oscillator","createOscillator","gainNode","createGain","filter","createBiquadFilter","frequency","setValueAtTime","exponentialRampToValueAtTime","value","gain","connect","destination","start","stop","createBell","freq","osc","osc1","osc2","Q","audioUrls","info","generateAudioFile","async","linearRampToValueAtTime","sampleRate","gain1","gain2","warning","renderFunction","offlineCtx","OfflineAudioContext","audioBuffer","startRendering","wavBlob","audioBufferToWav","URL","createObjectURL","buffer","numChannels","numberOfChannels","blockAlign","bitDepth","samples","getAudioSamples","dataLength","length","wavBuffer","ArrayBuffer","view","DataView","writeString","setUint32","setUint16","writeInt16Samples","Blob","scale","i","channel","sample","getChannelData","intSample","min","push","offset","setInt16","string","setUint8","charCodeAt","NotificationAudioService","soundBuffers","Map","muted","soundGenerator","disconnecting","EventTarget","soundUrls","handleAudioEnded","audio","remove","initializeAudioFiles","preloadSounds","err","generatedUrls","generateAudioFiles","genErr","types","loadSound","set","url","response","fetch","ok","Error","statusText","arrayBuffer","decodeAudioData","context","resume","startsWith","playFallbackSound","playDirectGeneratedSound","get","source","createBufferSource","playInfoSound","playSuccessSound","playWarningSound","playErrorSound","Audio","fromEvent","pipe","takeUntil","subscribe","play","catch","getVolume","mute","unmute","delete","dispose","Event","SchmancyNotificationContainer","position","maxVisibleNotifications","audioVolume","_notifications","_audioService","handlePlaySound","event","setVolume","addNotification","removeNotification","updateNotification","options","slice","n","index","findIndex","requestUpdate","e","render","repeat","_handleClose","NotificationService","notificationStack","getInstance","instance","completeOptions","DEFAULT_OPTIONS","targetId","indexOf","splice","pop","notify","_x","$notify","show","customDuration","persistent","dismiss","update"],"mappings":"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"}
@@ -1,16 +1,17 @@
1
1
  import { fromEvent as x, takeUntil as T } from "rxjs";
2
- import { classMap as _ } from "lit/directives/class-map.js";
2
+ import { classMap as S } from "lit/directives/class-map.js";
3
3
  import { styleMap as A } from "lit/directives/style-map.js";
4
- import { property as h, state as g, customElement as S } from "lit/decorators.js";
5
- import "./tailwind.mixin-CUBQFucF.js";
6
- import { $ as C } from "./litElement.mixin-C9e4ffot.js";
7
- import { c as V } from "./ripple-BumgqsDT.js";
4
+ import { property as h, state as g, customElement as _ } from "lit/decorators.js";
5
+ import "./tailwind.mixin-C13RR5x6.js";
6
+ import { $ as C } from "./litElement.mixin-Efwm8boA.js";
7
+ import { c as V } from "./ripple-Cy-nvO8W.js";
8
+ import "lit/directives/guard.js";
8
9
  import { S as l } from "./theme.interface-C5Kj6WjD.js";
9
10
  import { html as p } from "lit";
10
- import "./progress-y5p1ltND.js";
11
+ import "./progress-C4o_zWvg.js";
11
12
  import { repeat as k } from "lit/directives/repeat.js";
12
13
  var $ = Object.defineProperty, R = Object.getOwnPropertyDescriptor, d = (o, t, e, i) => {
13
- for (var s, n = i > 1 ? void 0 : i ? R(t, e) : t, r = o.length - 1; r >= 0; r--) (s = o[r]) && (n = (i ? s(t, e, n) : s(n)) || n);
14
+ for (var s, n = i > 1 ? void 0 : i ? R(t, e) : t, a = o.length - 1; a >= 0; a--) (s = o[a]) && (n = (i ? s(t, e, n) : s(n)) || n);
14
15
  return i && n && $(t, e, n), n;
15
16
  };
16
17
  let u = class extends C(':host{display:block;margin-bottom:10px}:host:last-child{margin-bottom:0}.notification{width:100%;max-width:400px;box-shadow:var(--schmancy-sys-elevation-2);overflow:hidden;transform:translate(0);opacity:1;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);background-color:var(--schmancy-sys-color-surface-container);color:var(--schmancy-sys-color-surface-on);border-radius:16px;position:relative}.notification:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(180deg,#ffffff14,#fff0);z-index:1}.notification.info{border-left:4px solid var(--schmancy-sys-color-primary-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-primary-container) 10%)}.notification.success{border-left:4px solid var(--schmancy-sys-color-success-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-success-container) 10%)}.notification.warning{border-left:4px solid var(--schmancy-sys-color-tertiary-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-tertiary-container) 10%)}.notification.error{border-left:4px solid var(--schmancy-sys-color-error-default);background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-container) 90%,var(--schmancy-sys-color-error-container) 10%)}.notification.closing{transform:translate(120%);opacity:0}.notification .notification-content{display:flex;padding:18px 20px;align-items:flex-start;position:relative;z-index:2}.notification .icon-container{flex-shrink:0;margin-right:14px;display:flex;align-items:center;justify-content:center;border-radius:50%;width:28px;height:28px;position:relative}.notification .content{flex:1;min-width:0;display:flex;flex-direction:column}.notification .title{font-weight:500;font-size:16px;line-height:1.5;margin-bottom:2px;word-break:break-word;letter-spacing:.15px}.notification .message{font-size:14px;line-height:1.5;word-break:break-word;letter-spacing:.25px;opacity:.92}.notification .close-button{background:transparent;border:none;cursor:pointer;color:var(--schmancy-sys-color-surface-onVariant);padding:8px;margin-left:8px;margin-right:-4px;margin-top:-4px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,transform .2s ease}.notification .close-button:hover{background-color:color-mix(in srgb,var(--schmancy-sys-color-surface-onVariant) 8%,transparent);transform:scale(1.05)}.notification .close-button:active{transform:scale(.95)}.notification .close-button:focus-visible{outline:none;box-shadow:0 0 0 2px var(--schmancy-sys-color-primary-default)}') {
@@ -78,7 +79,7 @@ let u = class extends C(':host{display:block;margin-bottom:10px}:host:last-child
78
79
  const o = this._getTypeStyles(), t = this._hovered ? "3" : "2";
79
80
  return p`
80
81
  <div
81
- class=${_({ notification: !0, closing: this._closing, [this.type]: !0 })}
82
+ class=${S({ notification: !0, closing: this._closing, [this.type]: !0 })}
82
83
  role="alert"
83
84
  style=${A({ transform: this._closing ? "translateX(120%)" : "translateX(0)", opacity: this._closing ? "0" : "1", boxShadow: `var(--schmancy-sys-elevation-${t})`, transition: "transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease" })}
84
85
  @mouseenter=${this._handleMouseEnter}
@@ -214,7 +215,7 @@ let u = class extends C(':host{display:block;margin-bottom:10px}:host:last-child
214
215
  }
215
216
  }
216
217
  };
217
- d([h({ type: String })], u.prototype, "title", 2), d([h({ type: String })], u.prototype, "message", 2), d([h({ type: String })], u.prototype, "type", 2), d([h({ type: Boolean })], u.prototype, "closable", 2), d([h({ type: Number })], u.prototype, "duration", 2), d([h({ type: String })], u.prototype, "id", 2), d([h({ type: Boolean })], u.prototype, "playSound", 2), d([h({ type: Boolean })], u.prototype, "showProgress", 2), d([g()], u.prototype, "_visible", 2), d([g()], u.prototype, "_progress", 2), d([g()], u.prototype, "_hovered", 2), d([g()], u.prototype, "_closing", 2), d([g()], u.prototype, "_autoCloseTimer", 2), d([g()], u.prototype, "_progressTimer", 2), u = d([S("sch-notification")], u);
218
+ d([h({ type: String })], u.prototype, "title", 2), d([h({ type: String })], u.prototype, "message", 2), d([h({ type: String })], u.prototype, "type", 2), d([h({ type: Boolean })], u.prototype, "closable", 2), d([h({ type: Number })], u.prototype, "duration", 2), d([h({ type: String })], u.prototype, "id", 2), d([h({ type: Boolean })], u.prototype, "playSound", 2), d([h({ type: Boolean })], u.prototype, "showProgress", 2), d([g()], u.prototype, "_visible", 2), d([g()], u.prototype, "_progress", 2), d([g()], u.prototype, "_hovered", 2), d([g()], u.prototype, "_closing", 2), d([g()], u.prototype, "_autoCloseTimer", 2), d([g()], u.prototype, "_progressTimer", 2), u = d([_("sch-notification")], u);
218
219
  class O {
219
220
  constructor() {
220
221
  this.audioContext = null;
@@ -227,71 +228,71 @@ class O {
227
228
  return this.audioContext;
228
229
  }
229
230
  playInfoSound(t = 0.2) {
230
- const e = this.getAudioContext(), i = e.currentTime, s = e.createOscillator(), n = e.createGain(), r = e.createBiquadFilter();
231
- s.type = "sine", s.frequency.setValueAtTime(392, i), s.frequency.exponentialRampToValueAtTime(523.25, i + 0.25), r.type = "lowpass", r.frequency.value = 1500, n.gain.setValueAtTime(1e-4, i), n.gain.exponentialRampToValueAtTime(t, i + 0.15), n.gain.exponentialRampToValueAtTime(1e-4, i + 0.4), s.connect(r).connect(n).connect(e.destination), s.start(i), s.stop(i + 0.45);
231
+ const e = this.getAudioContext(), i = e.currentTime, s = e.createOscillator(), n = e.createGain(), a = e.createBiquadFilter();
232
+ s.type = "sine", s.frequency.setValueAtTime(392, i), s.frequency.exponentialRampToValueAtTime(523.25, i + 0.25), a.type = "lowpass", a.frequency.value = 1500, n.gain.setValueAtTime(1e-4, i), n.gain.exponentialRampToValueAtTime(t, i + 0.15), n.gain.exponentialRampToValueAtTime(1e-4, i + 0.4), s.connect(a).connect(n).connect(e.destination), s.start(i), s.stop(i + 0.45);
232
233
  }
233
234
  playSuccessSound(t = 0.2) {
234
- const e = this.getAudioContext(), i = e.currentTime, s = (n, r, a) => {
235
+ const e = this.getAudioContext(), i = e.currentTime, s = (n, a, r) => {
235
236
  const c = e.createOscillator(), w = e.createGain(), v = e.createBiquadFilter();
236
- c.type = "sine", c.frequency.setValueAtTime(n, i), v.type = "lowpass", v.frequency.value = 4 * n, w.gain.setValueAtTime(1e-4, i), w.gain.exponentialRampToValueAtTime(t, i + 0.1), w.gain.exponentialRampToValueAtTime(1e-4, i + a), c.connect(v).connect(w).connect(e.destination), c.start(i + r), c.stop(i + a);
237
+ c.type = "sine", c.frequency.setValueAtTime(n, i), v.type = "lowpass", v.frequency.value = 4 * n, w.gain.setValueAtTime(1e-4, i), w.gain.exponentialRampToValueAtTime(t, i + 0.1), w.gain.exponentialRampToValueAtTime(1e-4, i + r), c.connect(v).connect(w).connect(e.destination), c.start(i + a), c.stop(i + r);
237
238
  };
238
239
  s(659.25, 0, 0.6), s(523.25, 0.05, 0.55);
239
240
  }
240
241
  playWarningSound(t = 0.25) {
241
- const e = this.getAudioContext(), i = e.currentTime, s = e.createOscillator(), n = e.createOscillator(), r = e.createGain(), a = e.createBiquadFilter();
242
- s.type = "sine", n.type = "sine", s.frequency.setValueAtTime(349.23, i), n.frequency.setValueAtTime(440, i), a.type = "lowpass", a.frequency.value = 1e3, r.gain.setValueAtTime(1e-4, i), r.gain.exponentialRampToValueAtTime(t, i + 0.08), r.gain.exponentialRampToValueAtTime(1e-4, i + 0.5), s.connect(a), n.connect(a), a.connect(r).connect(e.destination), s.start(i), n.start(i), s.stop(i + 0.55), n.stop(i + 0.55);
242
+ const e = this.getAudioContext(), i = e.currentTime, s = e.createOscillator(), n = e.createOscillator(), a = e.createGain(), r = e.createBiquadFilter();
243
+ s.type = "sine", n.type = "sine", s.frequency.setValueAtTime(349.23, i), n.frequency.setValueAtTime(440, i), r.type = "lowpass", r.frequency.value = 1e3, a.gain.setValueAtTime(1e-4, i), a.gain.exponentialRampToValueAtTime(t, i + 0.08), a.gain.exponentialRampToValueAtTime(1e-4, i + 0.5), s.connect(r), n.connect(r), r.connect(a).connect(e.destination), s.start(i), n.start(i), s.stop(i + 0.55), n.stop(i + 0.55);
243
244
  }
244
245
  playErrorSound(t = 0.25) {
245
- const e = this.getAudioContext(), i = e.currentTime, s = e.createOscillator(), n = e.createGain(), r = e.createBiquadFilter();
246
- s.type = "triangle", s.frequency.setValueAtTime(220, i), s.frequency.exponentialRampToValueAtTime(1760, i + 0.3), r.type = "lowpass", r.frequency.value = 800, r.Q.value = 0.5, n.gain.setValueAtTime(1e-4, i), n.gain.exponentialRampToValueAtTime(0.8 * t, i + 0.1), n.gain.exponentialRampToValueAtTime(1e-4, i + 0.7), s.connect(r).connect(n).connect(e.destination), s.start(i), s.stop(i + 0.75);
246
+ const e = this.getAudioContext(), i = e.currentTime, s = e.createOscillator(), n = e.createGain(), a = e.createBiquadFilter();
247
+ s.type = "triangle", s.frequency.setValueAtTime(220, i), s.frequency.exponentialRampToValueAtTime(1760, i + 0.3), a.type = "lowpass", a.frequency.value = 800, a.Q.value = 0.5, n.gain.setValueAtTime(1e-4, i), n.gain.exponentialRampToValueAtTime(0.8 * t, i + 0.1), n.gain.exponentialRampToValueAtTime(1e-4, i + 0.7), s.connect(a).connect(n).connect(e.destination), s.start(i), s.stop(i + 0.75);
247
248
  }
248
249
  async generateAudioFiles(t = 0.25) {
249
250
  const i = {};
250
251
  return i.info = await this.generateAudioFile(async (s) => {
251
252
  const n = s.createOscillator();
252
253
  n.type = "sine", n.frequency.setValueAtTime(320, 0), n.frequency.exponentialRampToValueAtTime(520, 0.3);
253
- const r = s.createGain();
254
- r.gain.setValueAtTime(0, 0), r.gain.linearRampToValueAtTime(t, 0.1), r.gain.linearRampToValueAtTime(0, 0.5), n.connect(r), r.connect(s.destination), n.start(), n.stop(0.5);
254
+ const a = s.createGain();
255
+ a.gain.setValueAtTime(0, 0), a.gain.linearRampToValueAtTime(t, 0.1), a.gain.linearRampToValueAtTime(0, 0.5), n.connect(a), a.connect(s.destination), n.start(), n.stop(0.5);
255
256
  }, 44100, 1), i.success = await this.generateAudioFile(async (s) => {
256
257
  const n = s.createOscillator();
257
258
  n.type = "sine", n.frequency.setValueAtTime(660, 0);
258
- const r = s.createOscillator();
259
- r.type = "sine", r.frequency.setValueAtTime(440, 0);
260
- const a = s.createGain();
261
- a.gain.setValueAtTime(0, 0), a.gain.linearRampToValueAtTime(t, 0.1), a.gain.linearRampToValueAtTime(0, 0.5);
259
+ const a = s.createOscillator();
260
+ a.type = "sine", a.frequency.setValueAtTime(440, 0);
261
+ const r = s.createGain();
262
+ r.gain.setValueAtTime(0, 0), r.gain.linearRampToValueAtTime(t, 0.1), r.gain.linearRampToValueAtTime(0, 0.5);
262
263
  const c = s.createGain();
263
- c.gain.setValueAtTime(0, 0), c.gain.linearRampToValueAtTime(0.6 * t, 0.15), c.gain.linearRampToValueAtTime(0, 0.7), n.connect(a), a.connect(s.destination), r.connect(c), c.connect(s.destination), n.start(), r.start(0.15), n.stop(0.5), r.stop(0.7);
264
+ c.gain.setValueAtTime(0, 0), c.gain.linearRampToValueAtTime(0.6 * t, 0.15), c.gain.linearRampToValueAtTime(0, 0.7), n.connect(r), r.connect(s.destination), a.connect(c), c.connect(s.destination), n.start(), a.start(0.15), n.stop(0.5), a.stop(0.7);
264
265
  }, 44100, 1), i.warning = await this.generateAudioFile(async (s) => {
265
266
  const n = s.createOscillator();
266
267
  n.type = "sine", n.frequency.setValueAtTime(293.66, 0);
267
- const r = s.createOscillator();
268
- r.type = "sine", r.frequency.setValueAtTime(349.23, 0);
269
- const a = s.createGain();
270
- a.gain.setValueAtTime(0, 0), a.gain.linearRampToValueAtTime(t, 0.1), a.gain.linearRampToValueAtTime(0.6 * t, 0.2), a.gain.linearRampToValueAtTime(0.8 * t, 0.3), a.gain.linearRampToValueAtTime(0, 0.6), n.connect(a), r.connect(a), a.connect(s.destination), n.start(), r.start(), n.stop(0.6), r.stop(0.6);
268
+ const a = s.createOscillator();
269
+ a.type = "sine", a.frequency.setValueAtTime(349.23, 0);
270
+ const r = s.createGain();
271
+ r.gain.setValueAtTime(0, 0), r.gain.linearRampToValueAtTime(t, 0.1), r.gain.linearRampToValueAtTime(0.6 * t, 0.2), r.gain.linearRampToValueAtTime(0.8 * t, 0.3), r.gain.linearRampToValueAtTime(0, 0.6), n.connect(r), a.connect(r), r.connect(s.destination), n.start(), a.start(), n.stop(0.6), a.stop(0.6);
271
272
  }, 44100, 1), i.error = await this.generateAudioFile(async (s) => {
272
273
  const n = s.createOscillator();
273
274
  n.type = "sine", n.frequency.setValueAtTime(196, 0);
274
- const r = s.createGain();
275
- r.gain.setValueAtTime(0, 0), r.gain.linearRampToValueAtTime(t, 0.1), r.gain.linearRampToValueAtTime(0.4 * t, 0.2), r.gain.linearRampToValueAtTime(0.6 * t, 0.3), r.gain.linearRampToValueAtTime(0, 0.7);
276
- const a = s.createBiquadFilter();
277
- a.type = "lowpass", a.frequency.value = 600, a.Q.value = 0.7, n.connect(a), a.connect(r), r.connect(s.destination), n.start(), n.stop(0.7);
275
+ const a = s.createGain();
276
+ a.gain.setValueAtTime(0, 0), a.gain.linearRampToValueAtTime(t, 0.1), a.gain.linearRampToValueAtTime(0.4 * t, 0.2), a.gain.linearRampToValueAtTime(0.6 * t, 0.3), a.gain.linearRampToValueAtTime(0, 0.7);
277
+ const r = s.createBiquadFilter();
278
+ r.type = "lowpass", r.frequency.value = 600, r.Q.value = 0.7, n.connect(r), r.connect(a), a.connect(s.destination), n.start(), n.stop(0.7);
278
279
  }, 44100, 1), i;
279
280
  }
280
281
  async generateAudioFile(t, e = 44100, i = 1) {
281
282
  const s = new OfflineAudioContext(2, e * i, e);
282
283
  await t(s);
283
- const n = await s.startRendering(), r = this.audioBufferToWav(n);
284
- return URL.createObjectURL(r);
284
+ const n = await s.startRendering(), a = this.audioBufferToWav(n);
285
+ return URL.createObjectURL(a);
285
286
  }
286
287
  audioBufferToWav(t) {
287
- const e = t.numberOfChannels, i = t.sampleRate, s = 2 * e, n = this.getAudioSamples(t, 16), r = 2 * n.length, a = new ArrayBuffer(44 + r), c = new DataView(a);
288
- return this.writeString(c, 0, "RIFF"), c.setUint32(4, 36 + r, !0), this.writeString(c, 8, "WAVE"), this.writeString(c, 12, "fmt "), c.setUint32(16, 16, !0), c.setUint16(20, 1, !0), c.setUint16(22, e, !0), c.setUint32(24, i, !0), c.setUint32(28, i * s, !0), c.setUint16(32, s, !0), c.setUint16(34, 16, !0), this.writeString(c, 36, "data"), c.setUint32(40, r, !0), this.writeInt16Samples(c, 44, n), new Blob([a], { type: "audio/wav" });
288
+ const e = t.numberOfChannels, i = t.sampleRate, s = 2 * e, n = this.getAudioSamples(t, 16), a = 2 * n.length, r = new ArrayBuffer(44 + a), c = new DataView(r);
289
+ return this.writeString(c, 0, "RIFF"), c.setUint32(4, 36 + a, !0), this.writeString(c, 8, "WAVE"), this.writeString(c, 12, "fmt "), c.setUint32(16, 16, !0), c.setUint16(20, 1, !0), c.setUint16(22, e, !0), c.setUint32(24, i, !0), c.setUint32(28, i * s, !0), c.setUint16(32, s, !0), c.setUint16(34, 16, !0), this.writeString(c, 36, "data"), c.setUint32(40, a, !0), this.writeInt16Samples(c, 44, n), new Blob([r], { type: "audio/wav" });
289
290
  }
290
291
  getAudioSamples(t, e) {
291
- const i = t.numberOfChannels, s = t.length, n = [], r = e === 16 ? 32768 : 128;
292
- for (let a = 0; a < s; a++) for (let c = 0; c < i; c++) {
293
- const w = t.getChannelData(c)[a], v = Math.max(-1, Math.min(1, w));
294
- n.push(v * r);
292
+ const i = t.numberOfChannels, s = t.length, n = [], a = e === 16 ? 32768 : 128;
293
+ for (let r = 0; r < s; r++) for (let c = 0; c < i; c++) {
294
+ const w = t.getChannelData(c)[r], v = Math.max(-1, Math.min(1, w));
295
+ n.push(v * a);
295
296
  }
296
297
  return n;
297
298
  }
@@ -302,9 +303,11 @@ class O {
302
303
  for (let s = 0; s < i.length; s++) t.setUint8(e + s, i.charCodeAt(s));
303
304
  }
304
305
  }
305
- class B {
306
+ class E {
306
307
  constructor() {
307
- this.audioContext = null, this.soundBuffers = /* @__PURE__ */ new Map(), this.volume = 0.5, this.muted = !1, this.soundGenerator = new O(), this.soundUrls = { info: "/assets/sounds/notification-info.mp3", success: "/assets/sounds/notification-success.mp3", warning: "/assets/sounds/notification-warning.mp3", error: "/assets/sounds/notification-error.mp3" }, this.initializeAudioFiles();
308
+ this.audioContext = null, this.soundBuffers = /* @__PURE__ */ new Map(), this.volume = 0.5, this.muted = !1, this.soundGenerator = new O(), this.disconnecting = new EventTarget(), this.soundUrls = { info: "/assets/sounds/notification-info.mp3", success: "/assets/sounds/notification-success.mp3", warning: "/assets/sounds/notification-warning.mp3", error: "/assets/sounds/notification-error.mp3" }, this.handleAudioEnded = (t) => () => {
309
+ t.remove();
310
+ }, this.initializeAudioFiles();
308
311
  }
309
312
  async initializeAudioFiles() {
310
313
  try {
@@ -343,8 +346,8 @@ class B {
343
346
  const e = this.getAudioContext();
344
347
  if (e.state === "suspended" && await e.resume(), this.soundUrls[t].startsWith("blob:")) return void this.playFallbackSound(t);
345
348
  if (!this.soundBuffers.has(t)) try {
346
- const r = await this.loadSound(t);
347
- this.soundBuffers.set(t, r);
349
+ const a = await this.loadSound(t);
350
+ this.soundBuffers.set(t, a);
348
351
  } catch {
349
352
  return void this.playDirectGeneratedSound(t);
350
353
  }
@@ -379,9 +382,7 @@ class B {
379
382
  playFallbackSound(t) {
380
383
  if (!this.muted) try {
381
384
  const e = new Audio(this.soundUrls[t]);
382
- e.volume = this.volume, e.addEventListener("ended", () => {
383
- e.remove();
384
- }), e.play().catch((i) => {
385
+ e.volume = this.volume, x(e, "ended").pipe(T(x(this.disconnecting, "disconnect"))).subscribe(this.handleAudioEnded(e)), e.play().catch((i) => {
385
386
  this.playDirectGeneratedSound(t);
386
387
  });
387
388
  } catch {
@@ -409,14 +410,20 @@ class B {
409
410
  getSoundUrl(t) {
410
411
  return this.soundUrls[t];
411
412
  }
413
+ dispose() {
414
+ this.disconnecting.dispatchEvent(new Event("disconnect")), this.audioContext && this.audioContext.state !== "closed" && this.audioContext.close().catch((t) => {
415
+ });
416
+ }
412
417
  }
413
- var U = Object.defineProperty, q = Object.getOwnPropertyDescriptor, b = (o, t, e, i) => {
414
- for (var s, n = i > 1 ? void 0 : i ? q(t, e) : t, r = o.length - 1; r >= 0; r--) (s = o[r]) && (n = (i ? s(t, e, n) : s(n)) || n);
415
- return i && n && U(t, e, n), n;
418
+ var B = Object.defineProperty, U = Object.getOwnPropertyDescriptor, b = (o, t, e, i) => {
419
+ for (var s, n = i > 1 ? void 0 : i ? U(t, e) : t, a = o.length - 1; a >= 0; a--) (s = o[a]) && (n = (i ? s(t, e, n) : s(n)) || n);
420
+ return i && n && B(t, e, n), n;
416
421
  };
417
422
  let y = class extends C(":host{display:block}.notification-container{position:fixed;z-index:9999;padding:12px;pointer-events:none;width:100%;max-width:424px}.notification-container sch-notification{pointer-events:auto}.notification-container.top-right{top:0;right:0;display:flex;flex-direction:column-reverse}.notification-container.top-left{top:0;left:0;display:flex;flex-direction:column-reverse}.notification-container.bottom-right{bottom:0;right:0;display:flex;flex-direction:column}.notification-container.bottom-left{bottom:0;left:0;display:flex;flex-direction:column}.notification-container.top-center{top:0;left:50%;transform:translate(-50%);display:flex;flex-direction:column-reverse}.notification-container.bottom-center{bottom:0;left:50%;transform:translate(-50%);display:flex;flex-direction:column}") {
418
423
  constructor() {
419
- super(...arguments), this.position = "top-right", this.maxVisibleNotifications = 2, this.playSound = !1, this.audioVolume = 0.1, this._notifications = [], this._audioService = new B();
424
+ super(...arguments), this.position = "top-right", this.maxVisibleNotifications = 2, this.playSound = !1, this.audioVolume = 0.1, this._notifications = [], this._audioService = new E(), this.handlePlaySound = (o) => {
425
+ this.playSound && this._audioService.playSound(o.detail.type);
426
+ };
420
427
  }
421
428
  connectedCallback() {
422
429
  super.connectedCallback(), this._audioService.setVolume(this.audioVolume), x(window, "schmancy-notification").pipe(T(this.disconnecting)).subscribe((o) => {
@@ -425,9 +432,7 @@ let y = class extends C(":host{display:block}.notification-container{position:fi
425
432
  this.removeNotification(o.detail.id);
426
433
  }), x(window, "schmancy-notification-update").pipe(T(this.disconnecting)).subscribe((o) => {
427
434
  this.updateNotification(o.detail.id, o.detail);
428
- }), this.addEventListener("playsound", (o) => {
429
- this.playSound && this._audioService.playSound(o.detail.type);
430
- });
435
+ }), x(this, "playsound").pipe(T(this.disconnecting)).subscribe(this.handlePlaySound);
431
436
  }
432
437
  addNotification(o) {
433
438
  const t = o.id || `notification-${Date.now()}-${Math.floor(1e4 * Math.random())}`, e = { id: t, title: o.title || "", message: o.message, type: o.type || "info", duration: o.duration !== void 0 ? o.duration : 750, closable: o.closable === void 0 || o.closable, playSound: o.playSound !== void 0 ? o.playSound : this.playSound, showProgress: o.showProgress !== void 0 && o.showProgress };
@@ -447,7 +452,7 @@ let y = class extends C(":host{display:block}.notification-container{position:fi
447
452
  render() {
448
453
  return p`
449
454
  <div
450
- class=${_({ "notification-container": !0, [this.position]: !0 })}
455
+ class=${S({ "notification-container": !0, [this.position]: !0 })}
451
456
  >
452
457
  ${k(this._notifications, (o) => o.id, (o) => p`
453
458
  <sch-notification
@@ -466,7 +471,7 @@ let y = class extends C(":host{display:block}.notification-container{position:fi
466
471
  `;
467
472
  }
468
473
  };
469
- b([h({ type: String })], y.prototype, "position", 2), b([h({ type: Number })], y.prototype, "maxVisibleNotifications", 2), b([h({ type: Boolean })], y.prototype, "playSound", 2), b([h({ type: Number })], y.prototype, "audioVolume", 2), b([g()], y.prototype, "_notifications", 2), y = b([S("sch-notification-container")], y);
474
+ b([h({ type: String })], y.prototype, "position", 2), b([h({ type: Number })], y.prototype, "maxVisibleNotifications", 2), b([h({ type: Boolean })], y.prototype, "playSound", 2), b([h({ type: Number })], y.prototype, "audioVolume", 2), b([g()], y.prototype, "_notifications", 2), y = b([_("sch-notification-container")], y);
470
475
  const f = class f {
471
476
  constructor() {
472
477
  this.notificationStack = [];
@@ -516,11 +521,11 @@ const f = class f {
516
521
  };
517
522
  f.DEFAULT_OPTIONS = { duration: 1e3, closable: !0, playSound: !0 };
518
523
  let m = f;
519
- const W = { show: (o) => m.getInstance().notify(o), info: (o, t = {}) => m.getInstance().info(o, t), success: (o, t = {}) => m.getInstance().success(o, t), warning: (o, t = {}) => m.getInstance().warning(o, t), error: (o, t = {}) => m.getInstance().error(o, t), customDuration: (o, t, e = {}) => m.getInstance().customDuration(o, t, e), persistent: (o, t = {}) => m.getInstance().persistent(o, t), dismiss: (o) => m.getInstance().dismiss(o), update: (o, t) => m.getInstance().update(o, t) };
524
+ const Q = { show: (o) => m.getInstance().notify(o), info: (o, t = {}) => m.getInstance().info(o, t), success: (o, t = {}) => m.getInstance().success(o, t), warning: (o, t = {}) => m.getInstance().warning(o, t), error: (o, t = {}) => m.getInstance().error(o, t), customDuration: (o, t, e = {}) => m.getInstance().customDuration(o, t, e), persistent: (o, t = {}) => m.getInstance().persistent(o, t), dismiss: (o) => m.getInstance().dismiss(o), update: (o, t) => m.getInstance().update(o, t) };
520
525
  export {
521
- W as $,
522
- B as N,
526
+ Q as $,
527
+ E as N,
523
528
  u as S,
524
529
  y as a
525
530
  };
526
- //# sourceMappingURL=notification-service-CiE9ITno.js.map
531
+ //# sourceMappingURL=notification-service-DiTgelcm.js.map