@mhmo91/schmancy 0.10.29 → 0.10.30
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.
- package/dist/{mixins-BfazlmLD.js → SchmancyElement-BQ4DFufc.js} +166 -493
- package/dist/SchmancyElement-BQ4DFufc.js.map +1 -0
- package/dist/{mixins-CxGRIPYQ.cjs → SchmancyElement-DhSiMp6Y.cjs} +2 -242
- package/dist/SchmancyElement-DhSiMp6Y.cjs.map +1 -0
- package/dist/agent/{flow-3RrZM-e7.js.map → flow-CvG1fLW5.js.map} +1 -1
- package/dist/agent/schmancy.agent.js +8487 -2979
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/{vendor-material-color-33Mj762T.js.map → vendor-material-color-DcL7ZPxx.js.map} +1 -1
- package/dist/animation-CCOIW4wJ.cjs.map +1 -1
- package/dist/animation-DCznELuT.js.map +1 -1
- package/dist/{area-D5wIy4Fn.js → area-BjpUWvzE.js} +7 -7
- package/dist/{area-D5wIy4Fn.js.map → area-BjpUWvzE.js.map} +1 -1
- package/dist/area-CgTzkxah.cjs +21 -0
- package/dist/{area-HXuLLQnN.cjs.map → area-CgTzkxah.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{audio-CxO5a2HL.js → audio-CwBJntnB.js} +1 -1
- package/dist/{audio-CxO5a2HL.js.map → audio-CwBJntnB.js.map} +1 -1
- package/dist/{audio-Cvmemu84.cjs → audio-DISBFOaR.cjs} +1 -1
- package/dist/{audio-Cvmemu84.cjs.map → audio-DISBFOaR.cjs.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-hj2AQyEF.cjs → autocomplete-DbCUOgWU.cjs} +2 -2
- package/dist/{autocomplete-hj2AQyEF.cjs.map → autocomplete-DbCUOgWU.cjs.map} +1 -1
- package/dist/{autocomplete-DCkkdDON.js → autocomplete-Dy708jem.js} +7 -7
- package/dist/{autocomplete-DCkkdDON.js.map → autocomplete-Dy708jem.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +3 -3
- package/dist/avatar.cjs.map +1 -1
- package/dist/avatar.js +5 -5
- package/dist/avatar.js.map +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-B_5F_rFr.cjs → boat-BzZN_iwp.cjs} +11 -11
- package/dist/{boat-B_5F_rFr.cjs.map → boat-BzZN_iwp.cjs.map} +1 -1
- package/dist/{boat-BfgbRnhA.js → boat-Z4Lzl3ai.js} +8 -8
- package/dist/{boat-BfgbRnhA.js.map → boat-Z4Lzl3ai.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +4 -4
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +7 -7
- package/dist/breadcrumb.js.map +1 -1
- package/dist/{busy-D6tAS-kW.js → busy-CRFGPkcP.js} +7 -7
- package/dist/{busy-D6tAS-kW.js.map → busy-CRFGPkcP.js.map} +1 -1
- package/dist/{busy-zIt9bTZn.cjs → busy-Cu-47DfN.cjs} +8 -8
- package/dist/{busy-zIt9bTZn.cjs.map → busy-Cu-47DfN.cjs.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-8oMffyiO.cjs → button-CN_JTjRd.cjs} +15 -15
- package/dist/{button-8oMffyiO.cjs.map → button-CN_JTjRd.cjs.map} +1 -1
- package/dist/{button-D7AejvfK.js → button-D_USF3tt.js} +10 -10
- package/dist/{button-D7AejvfK.js.map → button-D_USF3tt.js.map} +1 -1
- package/dist/button.cjs +19 -19
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +9 -9
- package/dist/button.js.map +1 -1
- package/dist/{card-CTucMMgp.cjs → card-D4P5_gg9.cjs} +10 -10
- package/dist/{card-CTucMMgp.cjs.map → card-D4P5_gg9.cjs.map} +1 -1
- package/dist/{card-CUt9fm_4.js → card-DpN5KIYc.js} +15 -15
- package/dist/{card-CUt9fm_4.js.map → card-DpN5KIYc.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-DMmqe2OO.js → checkbox-C8ChypKf.js} +5 -5
- package/dist/{checkbox-DMmqe2OO.js.map → checkbox-C8ChypKf.js.map} +1 -1
- package/dist/{checkbox-DrKsfzC4.cjs → checkbox-hhXVXDV1.cjs} +3 -3
- package/dist/{checkbox-DrKsfzC4.cjs.map → checkbox-hhXVXDV1.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-DRGsqDMA.js → chips-B8R9q4yl.js} +27 -27
- package/dist/{chips-DRGsqDMA.js.map → chips-B8R9q4yl.js.map} +1 -1
- package/dist/{chips-B1yQgLyW.cjs → chips-BTLlO_Ow.cjs} +18 -18
- package/dist/{chips-B1yQgLyW.cjs.map → chips-BTLlO_Ow.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +7 -7
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +5 -5
- package/dist/connectivity.js.map +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
- package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
- package/dist/{date-range-BeF0dW1W.cjs → date-range-9h6ZSkZb.cjs} +3 -3
- package/dist/{date-range-BeF0dW1W.cjs.map → date-range-9h6ZSkZb.cjs.map} +1 -1
- package/dist/{date-range-TDF-f0ss.js → date-range-CS96dWMh.js} +7 -7
- package/dist/{date-range-TDF-f0ss.js.map → date-range-CS96dWMh.js.map} +1 -1
- package/dist/date-range-inline-CAxnHA-l.cjs +43 -0
- package/dist/{date-range-inline-BnhQZTK0.cjs.map → date-range-inline-CAxnHA-l.cjs.map} +1 -1
- package/dist/{date-range-inline-JLsmcle2.js → date-range-inline-DCXdGeRv.js} +5 -5
- package/dist/{date-range-inline-JLsmcle2.js.map → date-range-inline-DCXdGeRv.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +4 -4
- package/dist/delay.cjs.map +1 -1
- package/dist/delay.js +6 -6
- package/dist/delay.js.map +1 -1
- package/dist/{details-T75tUASO.cjs → details-BC0IObBd.cjs} +2 -2
- package/dist/{details-T75tUASO.cjs.map → details-BC0IObBd.cjs.map} +1 -1
- package/dist/{details-ChMhQpcY.js → details-Pgd0slKn.js} +11 -11
- package/dist/{details-ChMhQpcY.js.map → details-Pgd0slKn.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{directives-DgPbz0lQ.js → directives-B-RT9R2u.js} +3 -3
- package/dist/{directives-DgPbz0lQ.js.map → directives-B-RT9R2u.js.map} +1 -1
- package/dist/{directives-BkSqmLBV.cjs → directives-CFWacnWU.cjs} +1 -1
- package/dist/{directives-BkSqmLBV.cjs.map → directives-CFWacnWU.cjs.map} +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
- package/dist/discovery.service-DZFxtRwW.js.map +1 -1
- package/dist/{divider-D69bhEUY.js → divider-BMzm0lOz.js} +5 -5
- package/dist/{divider-D69bhEUY.js.map → divider-BMzm0lOz.js.map} +1 -1
- package/dist/{divider-DopO0yKi.cjs → divider-D1OzaRAQ.cjs} +3 -3
- package/dist/{divider-DopO0yKi.cjs.map → divider-D1OzaRAQ.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +4 -4
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +8 -8
- package/dist/dropdown.js.map +1 -1
- package/dist/{expand-KLSx5dea.js → expand-C0Uqxfv0.js} +10 -10
- package/dist/{expand-KLSx5dea.js.map → expand-C0Uqxfv0.js.map} +1 -1
- package/dist/{expand-C386rVT8.cjs → expand-CiQkzth9.cjs} +3 -3
- package/dist/{expand-C386rVT8.cjs.map → expand-CiQkzth9.cjs.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/float-Bu_IfKRd.cjs +1 -0
- package/dist/{float-DyaPI0qO.cjs.map → float-Bu_IfKRd.cjs.map} +1 -1
- package/dist/{float-BoPLNysg.js → float-DwBMXhek.js} +2 -2
- package/dist/{float-BoPLNysg.js.map → float-DwBMXhek.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-CYeMWHmy.js → form-B9Je2W_m.js} +7 -7
- package/dist/{form-CYeMWHmy.js.map → form-B9Je2W_m.js.map} +1 -1
- package/dist/{form-CGIJlQyP.cjs → form-BnbAVZyf.cjs} +3 -3
- package/dist/{form-CGIJlQyP.cjs.map → form-BnbAVZyf.cjs.map} +1 -1
- package/dist/form.cjs +6 -6
- package/dist/form.cjs.map +1 -1
- package/dist/form.js +12 -12
- package/dist/form.js.map +1 -1
- package/dist/gravity-6pL6CfIr.cjs.map +1 -1
- package/dist/gravity-sVK3zGBF.js.map +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/hashContent-BqU6v1Xr.js.map +1 -1
- package/dist/hashContent-iRZJJWtE.cjs.map +1 -1
- package/dist/{icons-CJUA5bfI.cjs → icons-BfWQl5k5.cjs} +6 -6
- package/dist/{icons-CJUA5bfI.cjs.map → icons-BfWQl5k5.cjs.map} +1 -1
- package/dist/{icons-BUQNMhjw.js → icons-DJHPXKgR.js} +4 -4
- package/dist/{icons-BUQNMhjw.js.map → icons-DJHPXKgR.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-CbL0jCo1.js → iframe-DLz8ll0s.js} +5 -5
- package/dist/{iframe-CbL0jCo1.js.map → iframe-DLz8ll0s.js.map} +1 -1
- package/dist/{iframe-pn7MIeH8.cjs → iframe-UtczJypj.cjs} +5 -5
- package/dist/{iframe-pn7MIeH8.cjs.map → iframe-UtczJypj.cjs.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +69 -70
- package/dist/{input-C1h5lLiJ.js → input-AQbBEj2f.js} +15 -15
- package/dist/{input-C1h5lLiJ.js.map → input-AQbBEj2f.js.map} +1 -1
- package/dist/{input-Cmc0IoUP.cjs → input-Pp6A1m3s.cjs} +2 -2
- package/dist/{input-Cmc0IoUP.cjs.map → input-Pp6A1m3s.cjs.map} +1 -1
- package/dist/{input-chip-B0X_CodJ.cjs → input-chip-B5vYNuEm.cjs} +9 -9
- package/dist/{input-chip-B0X_CodJ.cjs.map → input-chip-B5vYNuEm.cjs.map} +1 -1
- package/dist/{input-chip-DqAR4nPD.js → input-chip-Bbs_gXOB.js} +10 -10
- package/dist/{input-chip-DqAR4nPD.js.map → input-chip-Bbs_gXOB.js.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +3 -3
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +5 -5
- package/dist/json.js.map +1 -1
- package/dist/kbd.cjs +2 -2
- package/dist/kbd.cjs.map +1 -1
- package/dist/kbd.js +5 -5
- package/dist/kbd.js.map +1 -1
- package/dist/{layout-DSAjo92m.js → layout-9K1zxhZn.js} +1 -1
- package/dist/{layout-DSAjo92m.js.map → layout-9K1zxhZn.js.map} +1 -1
- package/dist/{layout-eXb9wjDh.cjs → layout-B0dct--7.cjs} +1 -1
- package/dist/{layout-eXb9wjDh.cjs.map → layout-B0dct--7.cjs.map} +1 -1
- package/dist/layout.cjs +2 -2
- package/dist/layout.cjs.map +1 -1
- package/dist/layout.js +7 -7
- package/dist/layout.js.map +1 -1
- package/dist/lazy-CayEFyC3.cjs.map +1 -1
- package/dist/lazy-D-bO2r4m.js.map +1 -1
- package/dist/{lightbox-BiNK_plj.cjs → lightbox-D_EizrG3.cjs} +21 -21
- package/dist/{lightbox-BiNK_plj.cjs.map → lightbox-D_EizrG3.cjs.map} +1 -1
- package/dist/{lightbox-C3zomJ-r.js → lightbox-DmJTs2My.js} +9 -9
- package/dist/{lightbox-C3zomJ-r.js.map → lightbox-DmJTs2My.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CbM9w9OM.cjs → list-BSn8czyO.cjs} +5 -5
- package/dist/{list-CbM9w9OM.cjs.map → list-BSn8czyO.cjs.map} +1 -1
- package/dist/{list-Bbmp1uMa.js → list-DjSSRZxF.js} +12 -12
- package/dist/{list-Bbmp1uMa.js.map → list-DjSSRZxF.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/magnetic-B2VKNfDu.js.map +1 -1
- package/dist/magnetic-MQ3HMHJi.cjs.map +1 -1
- package/dist/{menu-Ph2hboJd.js → menu-CCVEde6u.js} +7 -7
- package/dist/{menu-Ph2hboJd.js.map → menu-CCVEde6u.js.map} +1 -1
- package/dist/menu-DTNnq7j_.cjs +23 -0
- package/dist/{menu-Bfay8vF8.cjs.map → menu-DTNnq7j_.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-BYfSDvbP.js +412 -0
- package/dist/mixins-BYfSDvbP.js.map +1 -0
- package/dist/mixins-YQI9JogS.cjs +245 -0
- package/dist/mixins-YQI9JogS.cjs.map +1 -0
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +3 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +10 -10
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +15 -15
- package/dist/navigation-rail.js.map +1 -1
- package/dist/{notification-Du5FRbYp.js → notification-BNEuu3Q2.js} +7 -7
- package/dist/{notification-Du5FRbYp.js.map → notification-BNEuu3Q2.js.map} +1 -1
- package/dist/notification-RhaYvA1I.cjs +24 -0
- package/dist/{notification-DT_cAi8U.cjs.map → notification-RhaYvA1I.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-B7y4FhOn.js → option-BLMYRy5C.js} +6 -6
- package/dist/{option-B7y4FhOn.js.map → option-BLMYRy5C.js.map} +1 -1
- package/dist/{option-Cl5Q987d.cjs → option-Dk7UFFlr.cjs} +5 -5
- package/dist/{option-Cl5Q987d.cjs.map → option-Dk7UFFlr.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/overlay-BbntqsVm.cjs +43 -0
- package/dist/{overlay-CRwfhbyi.cjs.map → overlay-BbntqsVm.cjs.map} +1 -1
- package/dist/{overlay-B79m-KXf.js → overlay-CujzmLxg.js} +11 -11
- package/dist/{overlay-B79m-KXf.js.map → overlay-CujzmLxg.js.map} +1 -1
- package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
- package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
- package/dist/overlay.cjs +1 -1
- package/dist/overlay.confirm-body-CMge0LP5.cjs +70 -0
- package/dist/{overlay.confirm-body-CxOomuN6.cjs.map → overlay.confirm-body-CMge0LP5.cjs.map} +1 -1
- package/dist/{overlay.confirm-body-CW_spktW.js → overlay.confirm-body-CRk4MvKh.js} +13 -13
- package/dist/{overlay.confirm-body-CW_spktW.js.map → overlay.confirm-body-CRk4MvKh.js.map} +1 -1
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-DsBb_UwG.js → overlay.service-DnT4SBlJ.js} +2 -2
- package/dist/{overlay.service-DsBb_UwG.js.map → overlay.service-DnT4SBlJ.js.map} +1 -1
- package/dist/{overlay.service-fb3KaMiP.cjs → overlay.service-Dq5XtSEL.cjs} +1 -1
- package/dist/{overlay.service-fb3KaMiP.cjs.map → overlay.service-Dq5XtSEL.cjs.map} +1 -1
- package/dist/{progress-fnGrmHpm.cjs → progress-Bqd4DdOQ.cjs} +7 -7
- package/dist/{progress-fnGrmHpm.cjs.map → progress-Bqd4DdOQ.cjs.map} +1 -1
- package/dist/{progress-CMwUEDB1.js → progress-Cu_wh6Sl.js} +10 -10
- package/dist/{progress-CMwUEDB1.js.map → progress-Cu_wh6Sl.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/radio-group-C8rUbYL6.cjs +19 -0
- package/dist/{radio-group-DQRJGMgS.cjs.map → radio-group-C8rUbYL6.cjs.map} +1 -1
- package/dist/{radio-group-Zb0fies1.js → radio-group-Duzgx17I.js} +7 -7
- package/dist/{radio-group-Zb0fies1.js.map → radio-group-Duzgx17I.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +2 -2
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +5 -5
- package/dist/range.js.map +1 -1
- package/dist/reduced-motion-D-L12p7G.js.map +1 -1
- package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
- package/dist/rxjs-utils-Csnks202.cjs.map +1 -1
- package/dist/rxjs-utils-d-ivVN84.js.map +1 -1
- package/dist/search-DPKoC-dT.cjs.map +1 -1
- package/dist/search-MvIBA93K.js.map +1 -1
- package/dist/{select-BJJKYtEi.js → select-CzCv1f1c.js} +6 -6
- package/dist/{select-BJJKYtEi.js.map → select-CzCv1f1c.js.map} +1 -1
- package/dist/{select-C-acFFtV.cjs → select-DdqEsfnG.cjs} +2 -2
- package/dist/{select-C-acFFtV.cjs.map → select-DdqEsfnG.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +2 -2
- package/dist/skeleton.cjs.map +1 -1
- package/dist/skeleton.js +5 -5
- package/dist/skeleton.js.map +1 -1
- package/dist/skills/form.md +34 -0
- package/dist/skills/schmancy/form.md +34 -0
- package/dist/slider.cjs +7 -7
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +6 -6
- package/dist/slider.js.map +1 -1
- package/dist/{sound.service-v_jqCkos.js → sound.service-BOWTBG16.js} +1 -1
- package/dist/{sound.service-v_jqCkos.js.map → sound.service-BOWTBG16.js.map} +1 -1
- package/dist/{sound.service-DVJZb9ox.cjs → sound.service-BwIzAFQx.cjs} +1 -1
- package/dist/{sound.service-DVJZb9ox.cjs.map → sound.service-BwIzAFQx.cjs.map} +1 -1
- package/dist/{splash-screen-CCDpzGg_.js → splash-screen-Dj-zuGuB.js} +6 -6
- package/dist/{splash-screen-CCDpzGg_.js.map → splash-screen-Dj-zuGuB.js.map} +1 -1
- package/dist/splash-screen-_KhxgneW.cjs +41 -0
- package/dist/{splash-screen-CGnhHDB_.cjs.map → splash-screen-_KhxgneW.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/src-BSjgxN07.cjs +263 -0
- package/dist/{src-C0MzzF_S.cjs.map → src-BSjgxN07.cjs.map} +1 -1
- package/dist/{src-CUcUMK0M.js → src-Curgs4Yp.js} +82 -82
- package/dist/{src-CUcUMK0M.js.map → src-Curgs4Yp.js.map} +1 -1
- package/dist/state-BthYuA3T.cjs +1 -0
- package/dist/state-BthYuA3T.cjs.map +1 -0
- package/dist/{state-CHbIt2Dw.js → state-E0bVrZ7q.js} +293 -279
- package/dist/state-E0bVrZ7q.js.map +1 -0
- package/dist/state.cjs +1 -1
- package/dist/state.js +3 -3
- package/dist/steps.cjs +10 -10
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +9 -9
- package/dist/steps.js.map +1 -1
- package/dist/{surface-CLcc26d2.js → surface-C2TIedTq.js} +4 -4
- package/dist/{surface-CLcc26d2.js.map → surface-C2TIedTq.js.map} +1 -1
- package/dist/surface-D-GqzyLn.cjs +7 -0
- package/dist/{surface-DPzlMMYX.cjs.map → surface-D-GqzyLn.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +2 -2
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.js +6 -6
- package/dist/switch.js.map +1 -1
- package/dist/table.cjs +11 -11
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +10 -10
- package/dist/table.js.map +1 -1
- package/dist/{tabs-BvEal6oS.js → tabs-CLRVe23a.js} +11 -11
- package/dist/{tabs-BvEal6oS.js.map → tabs-CLRVe23a.js.map} +1 -1
- package/dist/{tabs-DEKOKYrn.cjs → tabs-C_493iod.cjs} +4 -4
- package/dist/{tabs-DEKOKYrn.cjs.map → tabs-C_493iod.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CH62STRD.js → textarea-BWEyOtPy.js} +9 -9
- package/dist/{textarea-CH62STRD.js.map → textarea-BWEyOtPy.js.map} +1 -1
- package/dist/textarea-CICgd2oP.cjs +43 -0
- package/dist/{textarea-Cjlsy3y9.cjs.map → textarea-CICgd2oP.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-z82BIRuw.js → theme-Bfg_H2AF.js} +12 -12
- package/dist/{theme-z82BIRuw.js.map → theme-Bfg_H2AF.js.map} +1 -1
- package/dist/theme-D7zOJiyg.cjs +181 -0
- package/dist/{theme-CG3Gpne7.cjs.map → theme-D7zOJiyg.cjs.map} +1 -1
- package/dist/{theme-button-oWeOoeSw.js → theme-button-C53GdQER.js} +4 -4
- package/dist/{theme-button-oWeOoeSw.js.map → theme-button-C53GdQER.js.map} +1 -1
- package/dist/theme-button-DgeBcqFm.cjs +8 -0
- package/dist/{theme-button-CEc_Kl54.cjs.map → theme-button-DgeBcqFm.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.interface-CSt7JUBD.cjs.map +1 -1
- package/dist/theme.interface-odQEpZZH.js.map +1 -1
- package/dist/theme.js +3 -3
- package/dist/{theme.service-Bh08uOSJ.js → theme.service-BqDuioYc.js} +1 -1
- package/dist/{theme.service-Bh08uOSJ.js.map → theme.service-BqDuioYc.js.map} +1 -1
- package/dist/{theme.service-Y-e8b331.cjs → theme.service-C3PoISGd.cjs} +1 -1
- package/dist/{theme.service-Y-e8b331.cjs.map → theme.service-C3PoISGd.cjs.map} +1 -1
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js.map +1 -1
- package/dist/tree.cjs +3 -3
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +4 -4
- package/dist/tree.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/typewriter.cjs.map +1 -1
- package/dist/typewriter.js.map +1 -1
- package/dist/{typography-CjAvaB88.cjs → typography-B19fJ5YT.cjs} +4 -4
- package/dist/{typography-CjAvaB88.cjs.map → typography-B19fJ5YT.cjs.map} +1 -1
- package/dist/{typography-DP82e3GJ.js → typography-CzbQv-X0.js} +10 -10
- package/dist/{typography-DP82e3GJ.js.map → typography-CzbQv-X0.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/utils-DTa3QHxk.cjs.map +1 -1
- package/dist/utils-H8wNknWC.js.map +1 -1
- package/dist/visually-hidden.cjs +2 -2
- package/dist/visually-hidden.cjs.map +1 -1
- package/dist/visually-hidden.js +4 -4
- package/dist/visually-hidden.js.map +1 -1
- package/dist/window-DXB53PuA.cjs +59 -0
- package/dist/{window-aVXgfw__.cjs.map → window-DXB53PuA.cjs.map} +1 -1
- package/dist/{window-BkPXY-8m.js → window-DpctMXiy.js} +9 -9
- package/dist/{window-BkPXY-8m.js.map → window-DpctMXiy.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/form.md +34 -0
- package/src/state/active-host.ts +50 -1
- package/src/state/index.ts +50 -11
- package/src/state/schmancy-context.ts +97 -88
- package/src/surface/surface.styles.ts +14 -10
- package/types/src/state/active-host.d.ts +3 -0
- package/types/src/state/index.d.ts +16 -2
- package/types/src/state/schmancy-context.d.ts +2 -2
- package/dist/active-host-BP0zy_Y9.js +0 -63
- package/dist/active-host-BP0zy_Y9.js.map +0 -1
- package/dist/active-host-jH3iloCR.cjs +0 -1
- package/dist/active-host-jH3iloCR.cjs.map +0 -1
- package/dist/agent/overlay.confirm-body-BFYWMa45.js +0 -5518
- package/dist/agent/overlay.confirm-body-BFYWMa45.js.map +0 -1
- package/dist/area-HXuLLQnN.cjs +0 -21
- package/dist/date-range-inline-BnhQZTK0.cjs +0 -43
- package/dist/float-DyaPI0qO.cjs +0 -1
- package/dist/menu-Bfay8vF8.cjs +0 -23
- package/dist/mixins-BfazlmLD.js.map +0 -1
- package/dist/mixins-CxGRIPYQ.cjs.map +0 -1
- package/dist/notification-DT_cAi8U.cjs +0 -24
- package/dist/overlay-CRwfhbyi.cjs +0 -43
- package/dist/overlay.confirm-body-CxOomuN6.cjs +0 -70
- package/dist/radio-group-DQRJGMgS.cjs +0 -19
- package/dist/splash-screen-CGnhHDB_.cjs +0 -41
- package/dist/src-C0MzzF_S.cjs +0 -263
- package/dist/state-CHbIt2Dw.js.map +0 -1
- package/dist/state-DcGj-pJJ.cjs +0 -1
- package/dist/state-DcGj-pJJ.cjs.map +0 -1
- package/dist/surface-DPzlMMYX.cjs +0 -7
- package/dist/textarea-Cjlsy3y9.cjs +0 -43
- package/dist/theme-CG3Gpne7.cjs +0 -181
- package/dist/theme-button-CEc_Kl54.cjs +0 -8
- package/dist/window-aVXgfw__.cjs +0 -59
- /package/dist/agent/{flow-3RrZM-e7.js → flow-CvG1fLW5.js} +0 -0
- /package/dist/agent/{vendor-material-color-33Mj762T.js → vendor-material-color-DcL7ZPxx.js} +0 -0
package/dist/slider.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-DhSiMp6Y.cjs`);require(`./mixins-YQI9JogS.cjs`);let t=require(`rxjs`),n=require(`rxjs/operators`),r=require(`lit/decorators.js`),i=require(`lit`),a=require(`lit/directives/cache.js`);var o=class extends e.t{constructor(...e){super(...e),this.type=`content`,this.src=``,this.alt=``,this.controls=!0,this.autoplay=!1,this.loop=!1,this.muted=!1,this.fit=`cover`}static{this.styles=[i.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
scroll-snap-align: center; /* If your slider uses scroll-snap */
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./ch
|
|
|
10
10
|
height: auto;
|
|
11
11
|
object-fit: var(--object-fit, cover);
|
|
12
12
|
}
|
|
13
|
-
`]}render(){return
|
|
13
|
+
`]}render(){return i.html` <div style="--object-fit: ${this.fit}">${(0,a.cache)(this.renderSlide())}</div> `}renderSlide(){switch(this.type){case`image`:return i.html` <img class="slide" src="${this.src}" alt="${this.alt}" loading="lazy" /> `;case`video`:return i.html`
|
|
14
14
|
<video
|
|
15
15
|
class="slide"
|
|
16
16
|
src="${this.src}"
|
|
@@ -21,7 +21,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./ch
|
|
|
21
21
|
>
|
|
22
22
|
Your browser does not support HTML video.
|
|
23
23
|
</video>
|
|
24
|
-
`;default:return
|
|
24
|
+
`;default:return i.html`<slot></slot>`}}};e.p([(0,r.property)({type:String})],o.prototype,`type`,void 0),e.p([(0,r.property)({type:String})],o.prototype,`src`,void 0),e.p([(0,r.property)({type:String})],o.prototype,`alt`,void 0),e.p([(0,r.property)({type:Boolean})],o.prototype,`controls`,void 0),e.p([(0,r.property)({type:Boolean})],o.prototype,`autoplay`,void 0),e.p([(0,r.property)({type:Boolean})],o.prototype,`loop`,void 0),e.p([(0,r.property)({type:Boolean})],o.prototype,`muted`,void 0),e.p([(0,r.property)({type:String})],o.prototype,`fit`,void 0),o=e.p([(0,r.customElement)(`schmancy-slide`)],o);var s=class extends e.t{constructor(...e){super(...e),this.selectedIndex=0,this.showArrows=!0}static{this.styles=[i.css`
|
|
25
25
|
.slider {
|
|
26
26
|
/* Lay out slides horizontally, one after another */
|
|
27
27
|
display: flex;
|
|
@@ -46,7 +46,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./ch
|
|
|
46
46
|
flex: 0 0 100%;
|
|
47
47
|
box-sizing: border-box;
|
|
48
48
|
}
|
|
49
|
-
`]}firstUpdated(){this.slider.scrollLeft=0,(0,
|
|
49
|
+
`]}firstUpdated(){this.slider.scrollLeft=0,(0,t.fromEvent)(this.slider,`scroll`).pipe((0,n.throttleTime)(100,void 0,{trailing:!0})).subscribe(()=>{this.updateSelectedIndexOnScroll()})}updateSelectedIndexOnScroll(){let e=this.defaultSlot?.assignedElements({flatten:!0})??[];if(!e.length)return;let t=this.selectedIndex,n=this.slider.scrollLeft+this.slider.clientWidth/2,r=0,i=1/0;e.forEach((e,t)=>{let a=e.offsetLeft+e.clientWidth/2,o=Math.abs(n-a);o<i&&(i=o,r=t)}),this.selectedIndex=r,this.selectedIndex!==t&&this.dispatchEvent(new CustomEvent(`slide-changed`,{detail:{index:this.selectedIndex}}))}goToSlide(e){let t=this.defaultSlot?.assignedElements({flatten:!0})??[];t[e]&&this.slider.scrollTo({left:t[e].offsetLeft,behavior:`smooth`})}onPrevClick(){this.goToSlide(this.selectedIndex-1)}onNextClick(){let e=this.defaultSlot?.assignedElements({flatten:!0})??[];this.selectedIndex<e.length-1&&this.goToSlide(this.selectedIndex+1)}render(){let e=this.defaultSlot?.assignedElements({flatten:!0})??[];return i.html`
|
|
50
50
|
<div class="relative inset-0">
|
|
51
51
|
<!-- The scrollable track -->
|
|
52
52
|
<div class="slider" id="slider">
|
|
@@ -54,7 +54,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./ch
|
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
56
|
<!-- Next/Prev Buttons (Optional) -->
|
|
57
|
-
${this.showArrows?
|
|
57
|
+
${this.showArrows?i.html`
|
|
58
58
|
<schmancy-icon-button
|
|
59
59
|
class="absolute left-2 top-1/2 -translate-y-1/2"
|
|
60
60
|
@click=${this.onPrevClick}
|
|
@@ -73,10 +73,10 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./ch
|
|
|
73
73
|
|
|
74
74
|
<!-- Dots / indicators -->
|
|
75
75
|
<div class="absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2">
|
|
76
|
-
${e.map((e,t)=>
|
|
76
|
+
${e.map((e,t)=>i.html`
|
|
77
77
|
<schmancy-button .variant=${t===this.selectedIndex?`filled tonal`:`outlined`} class="rounded-full ">
|
|
78
78
|
</schmancy-button>
|
|
79
79
|
`)}
|
|
80
80
|
</div>
|
|
81
81
|
</div>
|
|
82
|
-
`}};
|
|
82
|
+
`}};e.p([(0,r.state)()],s.prototype,`selectedIndex`,void 0),e.p([(0,r.property)({type:Boolean})],s.prototype,`showArrows`,void 0),e.p([(0,r.query)(`#slider`)],s.prototype,`slider`,void 0),e.p([(0,r.query)(`slot`)],s.prototype,`defaultSlot`,void 0),s=e.p([(0,r.customElement)(`schmancy-slider`)],s),Object.defineProperty(exports,`SchmancySlide`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`SchmancySlider`,{enumerable:!0,get:function(){return s}});
|
package/dist/slider.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.cjs","names":[],"sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`]\n\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends SchmancyElement {\n\tstatic styles = [css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`]\n\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slider.cjs","names":[],"sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`]\n\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends SchmancyElement {\n\tstatic styles = [css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`]\n\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"mappings":"6TAoBO,IAAA,EAAA,cAA4B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,KAmBY,UAAA,KAAA,IAKJ,GAAA,KAAA,IAKA,GAAA,KAAA,SAAA,CAKF,EAAA,KAAA,SAAA,CAKA,EAAA,KAAA,KAAA,CAKJ,EAAA,KAAA,MAAA,CAKC,EAAA,KAAA,IAKQ,OAAA,CAAA,OAAA,KAAA,OArD7B,CAAC,EAAA,GAAG;;;;;;;;;;;;GAuDpB,QAAA,CACC,MAAO,GAAA,IAAI,8BAA8B,KAAK,IAAA,KAAI,EAAA,EAAA,OAAU,KAAK,YAAA,CAAA,EAAA,QAClE,CAEA,aAAA,CACC,OAAQ,KAAK,KAAb,CACC,IAAK,QACJ,MAAO,GAAA,IAAI,4BAA4B,KAAK,IAAA,SAAa,KAAK,IAAA,sBAC/D,IAAK,QACJ,MAAO,GAAA,IAAI;;;aAGF,KAAK,IAAA;mBACC,KAAK,SAAA;mBACL,KAAK,SAAA;eACT,KAAK,KAAA;gBACJ,KAAK,MAAA;;;;MAMlB,QACC,MAAO,GAAA,IAAI,eAAA,CAEd,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UA9DU,CAAE,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,OAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKhB,CAAE,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKhB,CAAE,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKhB,CAAE,KAAM,OAAA,CAAA,CAAA,EAAS,EAAA,UAAA,WAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,OAAA,CAAA,CAAA,EAAS,EAAA,UAAA,WAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,OAAA,CAAA,CAAA,EAAS,EAAA,UAAA,OAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,OAAA,CAAA,CAAA,EAAS,EAAA,UAAA,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,KAAM,MAAA,CAAA,CAAA,EAAQ,EAAA,UAAA,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAvDZ,gBAAA,CAAA,EAAgB,CAAA,ECZxB,IAAA,EAAA,cAA6B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,CAAA,EAAA,KAAA,cA+BM,EAAA,KAAA,WAAA,CAKU,CAAA,CAAA,OAAA,KAAA,OAnCnC,CAAC,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;GAwCpB,cAAA,CAEC,KAAK,OAAO,WAAa,GAGzB,EAAA,EAAA,WAAU,KAAK,OAAQ,QAAA,EACrB,MAAA,EAAA,EAAA,cAAkB,IAAA,IAAK,GAAW,CAAE,SAAA,CAAU,CAAA,CAAA,CAAA,EAC9C,cAAA,CACA,KAAK,4BAAA,CAAA,CAAA,CAER,CAEA,6BAAA,CACC,IAAM,EAAS,KAAK,aAAa,iBAAiB,CAAE,QAAA,CAAS,CAAA,CAAA,GAAW,CAAA,EACxE,GAAA,CAAK,EAAO,OAAQ,OAEpB,IAAM,EAAW,KAAK,cAGhB,EAAe,KAAK,OAAO,WAAa,KAAK,OAAO,YAAc,EAEpE,EAAe,EACf,EAAkB,IAEtB,EAAO,SAAS,EAAO,IAAA,CAEtB,IAAM,EADa,EAAsB,WACV,EAAM,YAAc,EAC7C,EAAW,KAAK,IAAI,EAAe,CAAA,EAErC,EAAW,IACd,EAAkB,EAClB,EAAe,EAAA,CAAA,EAIjB,KAAK,cAAgB,EAGjB,KAAK,gBAAkB,GAC1B,KAAK,cACJ,IAAI,YAAY,gBAAiB,CAChC,OAAQ,CAAE,MAAO,KAAK,aAAA,CAAA,CAAA,CAAA,CAI1B,CAEA,UAAkB,EAAA,CACjB,IAAM,EAAS,KAAK,aAAa,iBAAiB,CAAE,QAAA,CAAS,CAAA,CAAA,GAAW,CAAA,EACnE,EAAO,IAEZ,KAAK,OAAO,SAAS,CACpB,KAAO,EAAO,GAA0B,WACxC,SAAU,QAAA,CAAA,CAEZ,CAEA,aAAA,CACC,KAAK,UAAU,KAAK,cAAgB,CAAA,CACrC,CAEA,aAAA,CACC,IAAM,EAAS,KAAK,aAAa,iBAAiB,CAAE,QAAA,CAAS,CAAA,CAAA,GAAW,CAAA,EACpE,KAAK,cAAgB,EAAO,OAAS,GACxC,KAAK,UAAU,KAAK,cAAgB,CAAA,CAEtC,CAEA,QAAA,CACC,IAAM,EAAS,KAAK,aAAa,iBAAiB,CAAE,QAAA,CAAS,CAAA,CAAA,GAAW,CAAA,EAExE,MAAO,GAAA,IAAI;;;;;;;;MAQP,KAAK,WACJ,EAAA,IAAI;;;iBAGM,KAAK,YAAA;oBACF,KAAK,gBAAkB,EAAlB;;;;;;iBAMR,KAAK,YAAA;oBACF,KAAK,gBAAkB,EAAO,OAAS,EAAA;;;;QAKpD,KAAA;;;;OAIA,EAAO,KAAK,EAAG,IAET,EAAA,IAAI;mCADQ,IAAU,KAAK,cAEQ,eAAiB,WAAA;;;;;GAOhE,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAxHO,EAAA,UAAA,gBAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKG,CAAE,KAAM,OAAA,CAAA,CAAA,EAAS,EAAA,UAAA,aAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OAEpB,SAAA,CAAA,EAAS,EAAA,UAAA,SAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,OACT,MAAA,CAAA,EAAM,EAAA,UAAA,cAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAxCC,iBAAA,CAAA,EAAiB,CAAA,EAAA,OAAA,eAAA,QAAA,gBAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAA,OAAA,eAAA,QAAA,iBAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}
|
package/dist/slider.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { p as e, t } from "./SchmancyElement-BQ4DFufc.js";
|
|
2
|
+
import "./mixins-BYfSDvbP.js";
|
|
3
3
|
import { fromEvent as n } from "rxjs";
|
|
4
4
|
import { throttleTime as r } from "rxjs/operators";
|
|
5
5
|
import { customElement as i, property as a, query as o, state as s } from "lit/decorators.js";
|
|
6
6
|
import { css as c, html as l } from "lit";
|
|
7
7
|
import { cache as u } from "lit/directives/cache.js";
|
|
8
|
-
var d = class extends
|
|
8
|
+
var d = class extends t {
|
|
9
9
|
constructor(...e) {
|
|
10
10
|
super(...e), this.type = "content", this.src = "", this.alt = "", this.controls = !0, this.autoplay = !1, this.loop = !1, this.muted = !1, this.fit = "cover";
|
|
11
11
|
}
|
|
@@ -46,8 +46,8 @@ var d = class extends e {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
-
|
|
50
|
-
var f = class extends
|
|
49
|
+
e([a({ type: String })], d.prototype, "type", void 0), e([a({ type: String })], d.prototype, "src", void 0), e([a({ type: String })], d.prototype, "alt", void 0), e([a({ type: Boolean })], d.prototype, "controls", void 0), e([a({ type: Boolean })], d.prototype, "autoplay", void 0), e([a({ type: Boolean })], d.prototype, "loop", void 0), e([a({ type: Boolean })], d.prototype, "muted", void 0), e([a({ type: String })], d.prototype, "fit", void 0), d = e([i("schmancy-slide")], d);
|
|
50
|
+
var f = class extends t {
|
|
51
51
|
constructor(...e) {
|
|
52
52
|
super(...e), this.selectedIndex = 0, this.showArrows = !0;
|
|
53
53
|
}
|
|
@@ -145,5 +145,5 @@ var f = class extends e {
|
|
|
145
145
|
`;
|
|
146
146
|
}
|
|
147
147
|
};
|
|
148
|
-
|
|
148
|
+
e([s()], f.prototype, "selectedIndex", void 0), e([a({ type: Boolean })], f.prototype, "showArrows", void 0), e([o("#slider")], f.prototype, "slider", void 0), e([o("slot")], f.prototype, "defaultSlot", void 0), f = e([i("schmancy-slider")], f);
|
|
149
149
|
export { d as SchmancySlide, f as SchmancySlider };
|
package/dist/slider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.js","names":[],"sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`]\n\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends SchmancyElement {\n\tstatic styles = [css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`]\n\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slider.js","names":[],"sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`]\n\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends SchmancyElement {\n\tstatic styles = [css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`]\n\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sound.service-v_jqCkos.js","names":[],"sources":["../src/audio/sound.service.ts"],"sourcesContent":["/**\n * Schmancy Sound Service\n *\n * Centralized sound management following the theme service pattern.\n * Provides reactive observables for sound state and methods to control sounds.\n *\n * @example\n * ```typescript\n * import { sound } from '@schmancy/audio'\n *\n * // Play a feeling sound\n * sound.play('joyful')\n *\n * // Set volume\n * sound.setVolume(0.2)\n *\n * // Apply AI-generated sound theme\n * sound.setTheme(aiGeneratedTheme)\n *\n * // Reset to defaults\n * sound.resetTheme()\n *\n * // Subscribe to theme changes\n * sound.theme$.subscribe(theme => {\n * console.log('Current theme:', theme?.name ?? 'default')\n * })\n * ```\n */\n\nimport { BehaviorSubject, distinctUntilChanged, map, shareReplay } from 'rxjs'\nimport { state } from '../state'\nimport type {\n\tFeeling,\n\tFeelingCategory,\n\tFeelingSound,\n\tPuffParams,\n\tSoundTheme,\n\tSoundThemeSettings,\n\tToneParams,\n} from '../types/mood-audio.types'\n\n// ============================================================================\n// CONTEXT\n// ============================================================================\n\n/** Sound settings — persists to localStorage under namespace `schmancy/sound`. */\nconst SoundContext = state<SoundThemeSettings>('schmancy/sound').local({\n\ttheme: null,\n\tvolume: 0.15,\n\tmuted: false,\n})\n\n// ============================================================================\n// DEFAULT SOUND THEME\n// ============================================================================\n\n/**\n * Default sound definitions for all feelings\n * These are used when no custom theme is applied\n */\nconst DEFAULT_SOUNDS: Record<Feeling, FeelingSound> = {\n\t// ========== HAPPY / PLEASANT ==========\n\tjoyful: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 3000, volume: 0.3 },\n\t\t\t{ startTime: 0.06, duration: 0.1, frequency: 3500, volume: 0.35 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.15, frequency: 784, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.1, duration: 0.2, frequency: 988, volume: 0.3, type: 'sine' },\n\t\t\t{ startTime: 0.18, duration: 0.25, frequency: 1175, volume: 0.25, type: 'sine' },\n\t\t],\n\t},\n\tcontent: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1500, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.3, frequency: 523, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.35, frequency: 659, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\texcited: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.06, frequency: 2500, volume: 0.25 },\n\t\t\t{ startTime: 0.05, duration: 0.06, frequency: 3000, volume: 0.3 },\n\t\t\t{ startTime: 0.1, duration: 0.08, frequency: 3500, volume: 0.35 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.12, frequency: 880, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.12, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.14, duration: 0.15, frequency: 1319, volume: 0.3, type: 'sine' },\n\t\t],\n\t},\n\tproud: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1800, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 523, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.25, frequency: 659, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.11, duration: 0.3, frequency: 784, volume: 0.25, type: 'sine' },\n\t\t],\n\t},\n\thopeful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 2200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.3, frequency: 659, volume: 0.2, type: 'sine', frequencyEnd: 880 }],\n\t},\n\trelieved: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 1200, volume: 0.35 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 659, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.4, frequency: 523, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tgrateful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.3, frequency: 440, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.35, frequency: 523, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.4, frequency: 659, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tpeaceful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 800, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.12, type: 'sine', filterFrequency: 500 }],\n\t},\n\tplayful: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2800, volume: 0.2 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 3200, volume: 0.25 },\n\t\t\t{ startTime: 0.14, duration: 0.06, frequency: 2800, volume: 0.2 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.03, duration: 0.1, frequency: 784, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.1, duration: 0.08, frequency: 988, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.16, duration: 0.12, frequency: 784, volume: 0.2, type: 'sine' },\n\t\t],\n\t},\n\tamused: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.04, frequency: 2500, volume: 0.2 },\n\t\t\t{ startTime: 0.06, duration: 0.04, frequency: 2800, volume: 0.22 },\n\t\t\t{ startTime: 0.11, duration: 0.05, frequency: 2600, volume: 0.18 },\n\t\t],\n\t\ttones: [{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' }],\n\t},\n\tcurious: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 2000, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 659, volume: 0.2, type: 'sine', frequencyEnd: 880 }],\n\t},\n\tinspired: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 2500, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.3, frequency: 523, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.07, duration: 0.28, frequency: 784.5, volume: 0.16, type: 'sine' },\n\t\t\t{ startTime: 0.09, duration: 0.26, frequency: 1046, volume: 0.12, type: 'sine' },\n\t\t],\n\t},\n\tconfident: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 523, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.06, duration: 0.22, frequency: 659, volume: 0.2, type: 'sine' },\n\t\t],\n\t},\n\tloved: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1000, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.4, frequency: 392, volume: 0.18, type: 'sine', filterFrequency: 600 },\n\t\t\t{ startTime: 0.2, duration: 0.45, frequency: 494, volume: 0.15, type: 'sine', filterFrequency: 600 },\n\t\t],\n\t},\n\tcomforted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 900, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 523, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.4, frequency: 440, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tenergized: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 3000, volume: 0.25 },\n\t\t\t{ startTime: 0.04, duration: 0.05, frequency: 3500, volume: 0.28 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.1, frequency: 784, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.12, frequency: 988, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.14, duration: 0.15, frequency: 1175, volume: 0.22, type: 'sine' },\n\t\t],\n\t},\n\tcelebrated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.08, frequency: 2500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.18, frequency: 523, volume: 0.22, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.18, frequency: 659, volume: 0.24, type: 'sine' },\n\t\t\t{ startTime: 0.14, duration: 0.2, frequency: 784, volume: 0.26, type: 'sine' },\n\t\t\t{ startTime: 0.22, duration: 0.3, frequency: 1047, volume: 0.22, type: 'sine' },\n\t\t],\n\t},\n\n\t// ========== SAD / LOW ==========\n\tsad: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tlonely: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 700, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 450 }],\n\t},\n\tdisappointed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\theartbroken: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tgrieving: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\thopeless: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 700, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 450 }],\n\t},\n\tempty: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 700, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 450 }],\n\t},\n\tdiscouraged: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\tmelancholic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.45, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.5, frequency: 392, volume: 0.12, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\thomesick: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 440, volume: 0.12, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\thurt: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tmiserable: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tregretful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.45, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.5, frequency: 392, volume: 0.12, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\tashamed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\tinferior: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\n\t// ========== ANXIOUS / FEARFUL ==========\n\tanxious: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t\tdescription: 'Tight, quick puffs with uncertain wobble',\n\t},\n\tworried: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tafraid: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\tterrified: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tpanicked: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tnervous: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\tuneasy: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tinsecure: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\toverwhelmed: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\tstressed: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\ttense: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\tapprehensive: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tstartled: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tsuspicious: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tvulnerable: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\n\t// ========== ANGRY / FRUSTRATED ==========\n\tannoyed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tirritated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tfrustrated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tangry: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tenraged: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tbitter: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tresentful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tjealous: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tenvious: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tindignant: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\timpatient: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.04, frequency: 1500, volume: 0.2 },\n\t\t\t{ startTime: 0.08, duration: 0.04, frequency: 1500, volume: 0.2 },\n\t\t\t{ startTime: 0.16, duration: 0.04, frequency: 1500, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.06, duration: 0.1, frequency: 523, volume: 0.15, type: 'sine' }],\n\t},\n\thostile: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tcontemptuous: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\n\t// ========== TIRED / DRAINED ==========\n\ttired: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 350 }],\n\t},\n\texhausted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tdrained: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tburnedOut: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tnumb: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tbored: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 600, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.3, frequency: 349, volume: 0.1, type: 'sine', filterFrequency: 400 }],\n\t},\n\tunmotivated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 600, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.3, frequency: 349, volume: 0.1, type: 'sine', filterFrequency: 400 }],\n\t},\n\tapathetic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 600, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.3, frequency: 349, volume: 0.1, type: 'sine', filterFrequency: 400 }],\n\t},\n\trestless: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 350 }],\n\t},\n\n\t// ========== CALM / GROUNDED ==========\n\tcalm: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.12 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 500 }],\n\t},\n\trelaxed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.15, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.35, duration: 0.5, frequency: 392, volume: 0.08, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tatEase: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.15, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.35, duration: 0.5, frequency: 392, volume: 0.08, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tbalanced: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.12 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 500 }],\n\t},\n\tstable: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 262, volume: 0.15, type: 'sine', filterFrequency: 350 }],\n\t},\n\tsecure: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tsafe: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tcentered: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 262, volume: 0.15, type: 'sine', filterFrequency: 350 }],\n\t},\n\tgrounded: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 262, volume: 0.15, type: 'sine', filterFrequency: 350 }],\n\t},\n\taccepting: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.12 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 500 }],\n\t},\n\n\t// ========== CONNECTED / SOCIAL ==========\n\tconnected: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\taccepted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tincluded: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tbelonging: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tappreciated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tvalued: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\trespected: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tsupported: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 900, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.4, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tprotective: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 900, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.4, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tcompassionate: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tempathetic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\n\t// ========== MIXED / COMPLICATED ==========\n\tconflicted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n\tconfused: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n\tambivalent: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n\tnostalgic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 440, volume: 0.12, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\tguilty: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\tembarrassed: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\tsurprised: {\n\t\tpuffs: [{ startTime: 0, duration: 0.06, frequency: 2800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.02, duration: 0.15, frequency: 659, volume: 0.2, type: 'sine', frequencyEnd: 988 }],\n\t},\n\tshocked: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tawestruck: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.4, frequency: 440, volume: 0.15, type: 'sine' },\n\t\t\t{ startTime: 0.1, duration: 0.38, frequency: 660, volume: 0.12, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.36, frequency: 880, volume: 0.09, type: 'sine' },\n\t\t],\n\t},\n\tskeptical: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n}\n\n// ============================================================================\n// SOUND SERVICE\n// ============================================================================\n\n/**\n * Sound Service - Provides centralized sound management for Schmancy components\n *\n * Following the theme service pattern:\n * - Has default sounds as fallback\n * - Can receive custom sound theme from AI\n * - Reactive observables for state changes\n * - Persists settings to session storage\n */\nclass SoundService {\n\tprivate static instance: SoundService\n\n\t/** Audio context for Web Audio API */\n\tprivate audioContext: AudioContext | null = null\n\n\t// Public observables derived from context\n\t// Don't use distinctUntilChanged for theme - we need all emissions including storage loads\n\tpublic readonly theme$ = SoundContext.$.pipe(\n\t\tmap(settings => settings.theme),\n\t\tshareReplay(1)\n\t)\n\n\tpublic readonly volume$ = SoundContext.$.pipe(\n\t\tmap(settings => settings.volume),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1)\n\t)\n\n\tpublic readonly muted$ = SoundContext.$.pipe(\n\t\tmap(settings => settings.muted),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1)\n\t)\n\n\t/** BehaviorSubject for current theme name (for debugging/display) */\n\tprivate readonly _themeName$ = new BehaviorSubject<string>('default')\n\tpublic readonly themeName$ = this._themeName$.asObservable()\n\n\t// Getters for synchronous access\n\tget theme(): SoundTheme | null {\n\t\treturn SoundContext.value.theme\n\t}\n\n\tget volume(): number {\n\t\treturn SoundContext.value.volume\n\t}\n\n\tget muted(): boolean {\n\t\treturn SoundContext.value.muted\n\t}\n\n\tget themeName(): string {\n\t\treturn this.theme?.name ?? 'default'\n\t}\n\n\tprivate constructor() {\n\t\t// Subscribe to theme changes to update theme name\n\t\tthis.theme$.subscribe(theme => {\n\t\t\tthis._themeName$.next(theme?.name ?? 'default')\n\t\t})\n\t}\n\n\t// ==========================================================================\n\t// AUDIO CONTEXT MANAGEMENT\n\t// ==========================================================================\n\n\tprivate getContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\tconst AudioContextClass =\n\t\t\t\twindow.AudioContext || (window as unknown as { webkitAudioContext: typeof AudioContext }).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\t\tif (this.audioContext.state === 'suspended') {\n\t\t\tthis.audioContext.resume()\n\t\t}\n\t\treturn this.audioContext\n\t}\n\n\t// ==========================================================================\n\t// SOUND PRIMITIVES\n\t// ==========================================================================\n\n\t/** Play a puff (breath/air) sound */\n\tprivate playPuff(startTime: number, params: PuffParams, masterVolume: number): void {\n\t\tconst ctx = this.getContext()\n\t\tconst bufferSize = Math.floor(ctx.sampleRate * params.duration)\n\t\tconst buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n\t\tconst data = buffer.getChannelData(0)\n\n\t\tfor (let i = 0; i < bufferSize; i++) {\n\t\t\tdata[i] = Math.random() * 2 - 1\n\t\t}\n\n\t\tconst noise = ctx.createBufferSource()\n\t\tnoise.buffer = buffer\n\n\t\tconst filter = ctx.createBiquadFilter()\n\t\tfilter.type = 'bandpass'\n\t\tfilter.frequency.value = params.frequency\n\t\tfilter.Q.value = 0.7\n\n\t\tconst gain = ctx.createGain()\n\t\tgain.gain.setValueAtTime(0, startTime)\n\t\tgain.gain.linearRampToValueAtTime(params.volume * masterVolume, startTime + 0.015)\n\t\tgain.gain.exponentialRampToValueAtTime(0.001, startTime + params.duration)\n\n\t\tnoise.connect(filter).connect(gain).connect(ctx.destination)\n\t\tnoise.start(startTime)\n\t\tnoise.stop(startTime + params.duration)\n\t}\n\n\t/** Play a tone (musical) sound */\n\tprivate playTone(startTime: number, params: ToneParams, masterVolume: number): void {\n\t\tconst ctx = this.getContext()\n\t\tconst osc = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\n\t\tosc.type = params.type\n\t\tosc.frequency.setValueAtTime(params.frequency, startTime)\n\n\t\tif (params.frequencyEnd) {\n\t\t\tosc.frequency.exponentialRampToValueAtTime(params.frequencyEnd, startTime + params.duration * 0.8)\n\t\t}\n\n\t\t// Apply filter if specified\n\t\tlet lastNode: AudioNode = osc\n\t\tif (params.filterFrequency) {\n\t\t\tconst filter = ctx.createBiquadFilter()\n\t\t\tfilter.type = 'lowpass'\n\t\t\tfilter.frequency.value = params.filterFrequency\n\t\t\tosc.connect(filter)\n\t\t\tlastNode = filter\n\t\t}\n\n\t\tgain.gain.setValueAtTime(0, startTime)\n\t\tgain.gain.linearRampToValueAtTime(params.volume * masterVolume, startTime + 0.02)\n\t\tgain.gain.exponentialRampToValueAtTime(0.001, startTime + params.duration)\n\n\t\tlastNode.connect(gain).connect(ctx.destination)\n\t\tosc.start(startTime)\n\t\tosc.stop(startTime + params.duration)\n\t}\n\n\t// ==========================================================================\n\t// PUBLIC API - THEME MANAGEMENT\n\t// ==========================================================================\n\n\t/**\n\t * Set a custom sound theme (e.g., from AI generation)\n\t * @param theme The sound theme to apply\n\t */\n\tpublic setTheme(theme: SoundTheme): void {\n\t\tSoundContext.set({ theme })\n\t}\n\n\t/**\n\t * Reset to default sounds (removes custom theme)\n\t */\n\tpublic resetTheme(): void {\n\t\tSoundContext.set({ theme: null })\n\t}\n\n\t/**\n\t * Set volume level (0.0 - 1.0)\n\t * @param volume Volume level\n\t */\n\tpublic setVolume(volume: number): void {\n\t\tSoundContext.set({ volume: Math.max(0, Math.min(1, volume)) })\n\t}\n\n\t/**\n\t * Mute all sounds\n\t */\n\tpublic mute(): void {\n\t\tSoundContext.set({ muted: true })\n\t}\n\n\t/**\n\t * Unmute sounds\n\t */\n\tpublic unmute(): void {\n\t\tSoundContext.set({ muted: false })\n\t}\n\n\t/**\n\t * Toggle mute state\n\t */\n\tpublic toggleMute(): void {\n\t\tSoundContext.set({ muted: !this.muted })\n\t}\n\n\t// ==========================================================================\n\t// PUBLIC API - SOUND PLAYBACK\n\t// ==========================================================================\n\n\t/**\n\t * Get the sound definition for a feeling\n\t * Uses custom theme if available, falls back to defaults\n\t */\n\tpublic getSoundForFeeling(feeling: Feeling): FeelingSound {\n\t\tconst customTheme = this.theme\n\n\t\t// Try custom theme first\n\t\tif (customTheme?.feelings?.[feeling]) {\n\t\t\treturn customTheme.feelings[feeling]!\n\t\t}\n\n\t\t// Try category default from custom theme\n\t\tif (customTheme?.categoryDefaults) {\n\t\t\tconst category = this.getCategoryForFeeling(feeling)\n\t\t\tif (customTheme.categoryDefaults[category]) {\n\t\t\t\treturn customTheme.categoryDefaults[category]!\n\t\t\t}\n\t\t}\n\n\t\t// Fall back to defaults\n\t\treturn DEFAULT_SOUNDS[feeling]\n\t}\n\n\t/**\n\t * Get the category for a feeling\n\t */\n\tprivate getCategoryForFeeling(feeling: Feeling): FeelingCategory {\n\t\tconst happyFeelings: Feeling[] = [\n\t\t\t'joyful',\n\t\t\t'content',\n\t\t\t'excited',\n\t\t\t'proud',\n\t\t\t'hopeful',\n\t\t\t'relieved',\n\t\t\t'grateful',\n\t\t\t'peaceful',\n\t\t\t'playful',\n\t\t\t'amused',\n\t\t\t'curious',\n\t\t\t'inspired',\n\t\t\t'confident',\n\t\t\t'loved',\n\t\t\t'comforted',\n\t\t\t'energized',\n\t\t\t'celebrated',\n\t\t]\n\t\tconst sadFeelings: Feeling[] = [\n\t\t\t'sad',\n\t\t\t'lonely',\n\t\t\t'disappointed',\n\t\t\t'heartbroken',\n\t\t\t'grieving',\n\t\t\t'hopeless',\n\t\t\t'empty',\n\t\t\t'discouraged',\n\t\t\t'melancholic',\n\t\t\t'homesick',\n\t\t\t'hurt',\n\t\t\t'miserable',\n\t\t\t'regretful',\n\t\t\t'ashamed',\n\t\t\t'inferior',\n\t\t]\n\t\tconst anxiousFeelings: Feeling[] = [\n\t\t\t'anxious',\n\t\t\t'worried',\n\t\t\t'afraid',\n\t\t\t'terrified',\n\t\t\t'panicked',\n\t\t\t'nervous',\n\t\t\t'uneasy',\n\t\t\t'insecure',\n\t\t\t'overwhelmed',\n\t\t\t'stressed',\n\t\t\t'tense',\n\t\t\t'apprehensive',\n\t\t\t'startled',\n\t\t\t'suspicious',\n\t\t\t'vulnerable',\n\t\t]\n\t\tconst angryFeelings: Feeling[] = [\n\t\t\t'annoyed',\n\t\t\t'irritated',\n\t\t\t'frustrated',\n\t\t\t'angry',\n\t\t\t'enraged',\n\t\t\t'bitter',\n\t\t\t'resentful',\n\t\t\t'jealous',\n\t\t\t'envious',\n\t\t\t'indignant',\n\t\t\t'impatient',\n\t\t\t'hostile',\n\t\t\t'contemptuous',\n\t\t]\n\t\tconst tiredFeelings: Feeling[] = ['tired', 'exhausted', 'drained', 'burnedOut', 'numb', 'bored', 'unmotivated', 'apathetic', 'restless']\n\t\tconst calmFeelings: Feeling[] = ['calm', 'relaxed', 'atEase', 'balanced', 'stable', 'secure', 'safe', 'centered', 'grounded', 'accepting']\n\t\tconst connectedFeelings: Feeling[] = [\n\t\t\t'connected',\n\t\t\t'accepted',\n\t\t\t'included',\n\t\t\t'belonging',\n\t\t\t'appreciated',\n\t\t\t'valued',\n\t\t\t'respected',\n\t\t\t'supported',\n\t\t\t'protective',\n\t\t\t'compassionate',\n\t\t\t'empathetic',\n\t\t]\n\n\t\tif (happyFeelings.includes(feeling)) return 'happy'\n\t\tif (sadFeelings.includes(feeling)) return 'sad'\n\t\tif (anxiousFeelings.includes(feeling)) return 'anxious'\n\t\tif (angryFeelings.includes(feeling)) return 'angry'\n\t\tif (tiredFeelings.includes(feeling)) return 'tired'\n\t\tif (calmFeelings.includes(feeling)) return 'calm'\n\t\tif (connectedFeelings.includes(feeling)) return 'connected'\n\t\treturn 'mixed'\n\t}\n\n\t/**\n\t * Play a feeling sound\n\t * @param feeling The feeling to play\n\t */\n\tpublic play(feeling: Feeling): void {\n\t\tif (this.muted) return\n\n\t\tconst sound = this.getSoundForFeeling(feeling)\n\t\tconst ctx = this.getContext()\n\t\tconst now = ctx.currentTime\n\n\t\t// Calculate master volume (theme + user setting)\n\t\tconst themeMasterVolume = this.theme?.masterVolume ?? 1\n\t\tconst masterVolume = this.volume * themeMasterVolume\n\n\t\t// Play puffs\n\t\tsound.puffs.forEach(puff => {\n\t\t\tthis.playPuff(now + puff.startTime, puff, masterVolume)\n\t\t})\n\n\t\t// Play tones\n\t\tsound.tones.forEach(tone => {\n\t\t\tthis.playTone(now + tone.startTime, tone, masterVolume)\n\t\t})\n\t}\n\n\t/**\n\t * Dispose audio context\n\t */\n\tpublic dispose(): void {\n\t\tif (this.audioContext) {\n\t\t\tthis.audioContext.close()\n\t\t\tthis.audioContext = null\n\t\t}\n\t}\n\n\t/**\n\t * Get singleton instance\n\t */\n\tstatic getInstance(): SoundService {\n\t\tif (!SoundService.instance) {\n\t\t\tSoundService.instance = new SoundService()\n\t\t}\n\t\treturn SoundService.instance\n\t}\n}\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\n/** Global sound service singleton */\nexport const sound = SoundService.getInstance()\nexport const schmancySound = sound // Alias for consistency with theme\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sound.service-BOWTBG16.js","names":[],"sources":["../src/audio/sound.service.ts"],"sourcesContent":["/**\n * Schmancy Sound Service\n *\n * Centralized sound management following the theme service pattern.\n * Provides reactive observables for sound state and methods to control sounds.\n *\n * @example\n * ```typescript\n * import { sound } from '@schmancy/audio'\n *\n * // Play a feeling sound\n * sound.play('joyful')\n *\n * // Set volume\n * sound.setVolume(0.2)\n *\n * // Apply AI-generated sound theme\n * sound.setTheme(aiGeneratedTheme)\n *\n * // Reset to defaults\n * sound.resetTheme()\n *\n * // Subscribe to theme changes\n * sound.theme$.subscribe(theme => {\n * console.log('Current theme:', theme?.name ?? 'default')\n * })\n * ```\n */\n\nimport { BehaviorSubject, distinctUntilChanged, map, shareReplay } from 'rxjs'\nimport { state } from '../state'\nimport type {\n\tFeeling,\n\tFeelingCategory,\n\tFeelingSound,\n\tPuffParams,\n\tSoundTheme,\n\tSoundThemeSettings,\n\tToneParams,\n} from '../types/mood-audio.types'\n\n// ============================================================================\n// CONTEXT\n// ============================================================================\n\n/** Sound settings — persists to localStorage under namespace `schmancy/sound`. */\nconst SoundContext = state<SoundThemeSettings>('schmancy/sound').local({\n\ttheme: null,\n\tvolume: 0.15,\n\tmuted: false,\n})\n\n// ============================================================================\n// DEFAULT SOUND THEME\n// ============================================================================\n\n/**\n * Default sound definitions for all feelings\n * These are used when no custom theme is applied\n */\nconst DEFAULT_SOUNDS: Record<Feeling, FeelingSound> = {\n\t// ========== HAPPY / PLEASANT ==========\n\tjoyful: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 3000, volume: 0.3 },\n\t\t\t{ startTime: 0.06, duration: 0.1, frequency: 3500, volume: 0.35 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.15, frequency: 784, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.1, duration: 0.2, frequency: 988, volume: 0.3, type: 'sine' },\n\t\t\t{ startTime: 0.18, duration: 0.25, frequency: 1175, volume: 0.25, type: 'sine' },\n\t\t],\n\t},\n\tcontent: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1500, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.3, frequency: 523, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.35, frequency: 659, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\texcited: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.06, frequency: 2500, volume: 0.25 },\n\t\t\t{ startTime: 0.05, duration: 0.06, frequency: 3000, volume: 0.3 },\n\t\t\t{ startTime: 0.1, duration: 0.08, frequency: 3500, volume: 0.35 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.12, frequency: 880, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.12, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.14, duration: 0.15, frequency: 1319, volume: 0.3, type: 'sine' },\n\t\t],\n\t},\n\tproud: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1800, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 523, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.25, frequency: 659, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.11, duration: 0.3, frequency: 784, volume: 0.25, type: 'sine' },\n\t\t],\n\t},\n\thopeful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 2200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.3, frequency: 659, volume: 0.2, type: 'sine', frequencyEnd: 880 }],\n\t},\n\trelieved: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 1200, volume: 0.35 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 659, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.4, frequency: 523, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tgrateful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.3, frequency: 440, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.35, frequency: 523, volume: 0.2, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.4, frequency: 659, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tpeaceful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 800, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.12, type: 'sine', filterFrequency: 500 }],\n\t},\n\tplayful: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2800, volume: 0.2 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 3200, volume: 0.25 },\n\t\t\t{ startTime: 0.14, duration: 0.06, frequency: 2800, volume: 0.2 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.03, duration: 0.1, frequency: 784, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.1, duration: 0.08, frequency: 988, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.16, duration: 0.12, frequency: 784, volume: 0.2, type: 'sine' },\n\t\t],\n\t},\n\tamused: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.04, frequency: 2500, volume: 0.2 },\n\t\t\t{ startTime: 0.06, duration: 0.04, frequency: 2800, volume: 0.22 },\n\t\t\t{ startTime: 0.11, duration: 0.05, frequency: 2600, volume: 0.18 },\n\t\t],\n\t\ttones: [{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' }],\n\t},\n\tcurious: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 2000, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 659, volume: 0.2, type: 'sine', frequencyEnd: 880 }],\n\t},\n\tinspired: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 2500, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.3, frequency: 523, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.07, duration: 0.28, frequency: 784.5, volume: 0.16, type: 'sine' },\n\t\t\t{ startTime: 0.09, duration: 0.26, frequency: 1046, volume: 0.12, type: 'sine' },\n\t\t],\n\t},\n\tconfident: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 523, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.06, duration: 0.22, frequency: 659, volume: 0.2, type: 'sine' },\n\t\t],\n\t},\n\tloved: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1000, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.4, frequency: 392, volume: 0.18, type: 'sine', filterFrequency: 600 },\n\t\t\t{ startTime: 0.2, duration: 0.45, frequency: 494, volume: 0.15, type: 'sine', filterFrequency: 600 },\n\t\t],\n\t},\n\tcomforted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 900, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 523, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.4, frequency: 440, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tenergized: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 3000, volume: 0.25 },\n\t\t\t{ startTime: 0.04, duration: 0.05, frequency: 3500, volume: 0.28 },\n\t\t],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.1, frequency: 784, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.12, frequency: 988, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.14, duration: 0.15, frequency: 1175, volume: 0.22, type: 'sine' },\n\t\t],\n\t},\n\tcelebrated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.08, frequency: 2500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.02, duration: 0.18, frequency: 523, volume: 0.22, type: 'sine' },\n\t\t\t{ startTime: 0.08, duration: 0.18, frequency: 659, volume: 0.24, type: 'sine' },\n\t\t\t{ startTime: 0.14, duration: 0.2, frequency: 784, volume: 0.26, type: 'sine' },\n\t\t\t{ startTime: 0.22, duration: 0.3, frequency: 1047, volume: 0.22, type: 'sine' },\n\t\t],\n\t},\n\n\t// ========== SAD / LOW ==========\n\tsad: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tlonely: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 700, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 450 }],\n\t},\n\tdisappointed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\theartbroken: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tgrieving: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\thopeless: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 700, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 450 }],\n\t},\n\tempty: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 700, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 450 }],\n\t},\n\tdiscouraged: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\tmelancholic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.45, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.5, frequency: 392, volume: 0.12, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\thomesick: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 440, volume: 0.12, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\thurt: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tmiserable: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.25 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 392, volume: 0.2, type: 'sine', filterFrequency: 400 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 294, volume: 0.15, type: 'sine', filterFrequency: 350 },\n\t\t],\n\t},\n\tregretful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.45, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.5, frequency: 392, volume: 0.12, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\tashamed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\tinferior: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\n\t// ========== ANXIOUS / FEARFUL ==========\n\tanxious: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t\tdescription: 'Tight, quick puffs with uncertain wobble',\n\t},\n\tworried: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tafraid: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\tterrified: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tpanicked: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tnervous: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\tuneasy: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tinsecure: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\toverwhelmed: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\tstressed: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\ttense: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1800, volume: 0.2 },\n\t\t\t{ startTime: 0.12, duration: 0.08, frequency: 1900, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.03, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine' }],\n\t},\n\tapprehensive: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tstartled: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tsuspicious: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1200, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.05, duration: 0.25, frequency: 349, volume: 0.15, type: 'sine', frequencyEnd: 392 }],\n\t},\n\tvulnerable: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\n\t// ========== ANGRY / FRUSTRATED ==========\n\tannoyed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tirritated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tfrustrated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tangry: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tenraged: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tbitter: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tresentful: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tjealous: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tenvious: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\tindignant: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\timpatient: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.04, frequency: 1500, volume: 0.2 },\n\t\t\t{ startTime: 0.08, duration: 0.04, frequency: 1500, volume: 0.2 },\n\t\t\t{ startTime: 0.16, duration: 0.04, frequency: 1500, volume: 0.22 },\n\t\t],\n\t\ttones: [{ startTime: 0.06, duration: 0.1, frequency: 523, volume: 0.15, type: 'sine' }],\n\t},\n\thostile: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 900, volume: 0.28 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.15, frequency: 349, volume: 0.2, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.12, frequency: 330, volume: 0.18, type: 'sine' },\n\t\t],\n\t},\n\tcontemptuous: {\n\t\tpuffs: [{ startTime: 0, duration: 0.1, frequency: 1000, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.03, duration: 0.2, frequency: 294, volume: 0.18, type: 'sine', filterFrequency: 400 }],\n\t},\n\n\t// ========== TIRED / DRAINED ==========\n\ttired: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 350 }],\n\t},\n\texhausted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tdrained: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tburnedOut: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tnumb: {\n\t\tpuffs: [{ startTime: 0, duration: 0.45, frequency: 400, volume: 0.18 }],\n\t\ttones: [{ startTime: 0.15, duration: 0.5, frequency: 294, volume: 0.1, type: 'sine', filterFrequency: 300 }],\n\t},\n\tbored: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 600, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.3, frequency: 349, volume: 0.1, type: 'sine', filterFrequency: 400 }],\n\t},\n\tunmotivated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 600, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.3, frequency: 349, volume: 0.1, type: 'sine', filterFrequency: 400 }],\n\t},\n\tapathetic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 600, volume: 0.15 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.3, frequency: 349, volume: 0.1, type: 'sine', filterFrequency: 400 }],\n\t},\n\trestless: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 330, volume: 0.12, type: 'sine', filterFrequency: 350 }],\n\t},\n\n\t// ========== CALM / GROUNDED ==========\n\tcalm: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.12 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 500 }],\n\t},\n\trelaxed: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.15, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.35, duration: 0.5, frequency: 392, volume: 0.08, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tatEase: {\n\t\tpuffs: [{ startTime: 0, duration: 0.35, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.15, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.35, duration: 0.5, frequency: 392, volume: 0.08, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tbalanced: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.12 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 500 }],\n\t},\n\tstable: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 262, volume: 0.15, type: 'sine', filterFrequency: 350 }],\n\t},\n\tsecure: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tsafe: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 700, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.25, duration: 0.45, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tcentered: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 262, volume: 0.15, type: 'sine', filterFrequency: 350 }],\n\t},\n\tgrounded: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 500, volume: 0.2 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.4, frequency: 262, volume: 0.15, type: 'sine', filterFrequency: 350 }],\n\t},\n\taccepting: {\n\t\tpuffs: [{ startTime: 0, duration: 0.3, frequency: 600, volume: 0.12 }],\n\t\ttones: [{ startTime: 0.1, duration: 0.5, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 500 }],\n\t},\n\n\t// ========== CONNECTED / SOCIAL ==========\n\tconnected: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\taccepted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tincluded: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tbelonging: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tappreciated: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tvalued: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\trespected: {\n\t\tpuffs: [{ startTime: 0, duration: 0.15, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.05, duration: 0.25, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tsupported: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 900, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.4, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tprotective: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 900, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.35, frequency: 349, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.15, duration: 0.4, frequency: 440, volume: 0.1, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tcompassionate: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\tempathetic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.3, frequency: 440, volume: 0.15, type: 'sine', filterFrequency: 800 },\n\t\t\t{ startTime: 0.12, duration: 0.32, frequency: 523, volume: 0.12, type: 'sine', filterFrequency: 800 },\n\t\t],\n\t},\n\n\t// ========== MIXED / COMPLICATED ==========\n\tconflicted: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n\tconfused: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n\tambivalent: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n\tnostalgic: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.15 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.1, duration: 0.4, frequency: 440, volume: 0.12, type: 'sine', filterFrequency: 500 },\n\t\t\t{ startTime: 0.3, duration: 0.45, frequency: 392, volume: 0.1, type: 'sine', filterFrequency: 450 },\n\t\t],\n\t},\n\tguilty: {\n\t\tpuffs: [{ startTime: 0, duration: 0.25, frequency: 800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.08, duration: 0.3, frequency: 523, volume: 0.18, type: 'sine', frequencyEnd: 349 }],\n\t},\n\tembarrassed: {\n\t\tpuffs: [\n\t\t\t{ startTime: 0, duration: 0.05, frequency: 2000, volume: 0.18 },\n\t\t\t{ startTime: 0.08, duration: 0.05, frequency: 2100, volume: 0.18 },\n\t\t\t{ startTime: 0.15, duration: 0.06, frequency: 2000, volume: 0.16 },\n\t\t],\n\t\ttones: [{ startTime: 0.04, duration: 0.2, frequency: 494, volume: 0.12, type: 'sine' }],\n\t},\n\tsurprised: {\n\t\tpuffs: [{ startTime: 0, duration: 0.06, frequency: 2800, volume: 0.25 }],\n\t\ttones: [{ startTime: 0.02, duration: 0.15, frequency: 659, volume: 0.2, type: 'sine', frequencyEnd: 988 }],\n\t},\n\tshocked: {\n\t\tpuffs: [{ startTime: 0, duration: 0.04, frequency: 3500, volume: 0.3 }],\n\t\ttones: [\n\t\t\t{ startTime: 0, duration: 0.08, frequency: 1047, volume: 0.25, type: 'sine' },\n\t\t\t{ startTime: 0.05, duration: 0.15, frequency: 880, volume: 0.15, type: 'sine' },\n\t\t],\n\t},\n\tawestruck: {\n\t\tpuffs: [{ startTime: 0, duration: 0.2, frequency: 1500, volume: 0.2 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.08, duration: 0.4, frequency: 440, volume: 0.15, type: 'sine' },\n\t\t\t{ startTime: 0.1, duration: 0.38, frequency: 660, volume: 0.12, type: 'sine' },\n\t\t\t{ startTime: 0.12, duration: 0.36, frequency: 880, volume: 0.09, type: 'sine' },\n\t\t],\n\t},\n\tskeptical: {\n\t\tpuffs: [{ startTime: 0, duration: 0.12, frequency: 1200, volume: 0.18 }],\n\t\ttones: [\n\t\t\t{ startTime: 0.04, duration: 0.2, frequency: 440, volume: 0.12, type: 'sine', frequencyEnd: 494 },\n\t\t\t{ startTime: 0.15, duration: 0.15, frequency: 466, volume: 0.1, type: 'sine' },\n\t\t],\n\t},\n}\n\n// ============================================================================\n// SOUND SERVICE\n// ============================================================================\n\n/**\n * Sound Service - Provides centralized sound management for Schmancy components\n *\n * Following the theme service pattern:\n * - Has default sounds as fallback\n * - Can receive custom sound theme from AI\n * - Reactive observables for state changes\n * - Persists settings to session storage\n */\nclass SoundService {\n\tprivate static instance: SoundService\n\n\t/** Audio context for Web Audio API */\n\tprivate audioContext: AudioContext | null = null\n\n\t// Public observables derived from context\n\t// Don't use distinctUntilChanged for theme - we need all emissions including storage loads\n\tpublic readonly theme$ = SoundContext.$.pipe(\n\t\tmap(settings => settings.theme),\n\t\tshareReplay(1)\n\t)\n\n\tpublic readonly volume$ = SoundContext.$.pipe(\n\t\tmap(settings => settings.volume),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1)\n\t)\n\n\tpublic readonly muted$ = SoundContext.$.pipe(\n\t\tmap(settings => settings.muted),\n\t\tdistinctUntilChanged(),\n\t\tshareReplay(1)\n\t)\n\n\t/** BehaviorSubject for current theme name (for debugging/display) */\n\tprivate readonly _themeName$ = new BehaviorSubject<string>('default')\n\tpublic readonly themeName$ = this._themeName$.asObservable()\n\n\t// Getters for synchronous access\n\tget theme(): SoundTheme | null {\n\t\treturn SoundContext.value.theme\n\t}\n\n\tget volume(): number {\n\t\treturn SoundContext.value.volume\n\t}\n\n\tget muted(): boolean {\n\t\treturn SoundContext.value.muted\n\t}\n\n\tget themeName(): string {\n\t\treturn this.theme?.name ?? 'default'\n\t}\n\n\tprivate constructor() {\n\t\t// Subscribe to theme changes to update theme name\n\t\tthis.theme$.subscribe(theme => {\n\t\t\tthis._themeName$.next(theme?.name ?? 'default')\n\t\t})\n\t}\n\n\t// ==========================================================================\n\t// AUDIO CONTEXT MANAGEMENT\n\t// ==========================================================================\n\n\tprivate getContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\tconst AudioContextClass =\n\t\t\t\twindow.AudioContext || (window as unknown as { webkitAudioContext: typeof AudioContext }).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\t\tif (this.audioContext.state === 'suspended') {\n\t\t\tthis.audioContext.resume()\n\t\t}\n\t\treturn this.audioContext\n\t}\n\n\t// ==========================================================================\n\t// SOUND PRIMITIVES\n\t// ==========================================================================\n\n\t/** Play a puff (breath/air) sound */\n\tprivate playPuff(startTime: number, params: PuffParams, masterVolume: number): void {\n\t\tconst ctx = this.getContext()\n\t\tconst bufferSize = Math.floor(ctx.sampleRate * params.duration)\n\t\tconst buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n\t\tconst data = buffer.getChannelData(0)\n\n\t\tfor (let i = 0; i < bufferSize; i++) {\n\t\t\tdata[i] = Math.random() * 2 - 1\n\t\t}\n\n\t\tconst noise = ctx.createBufferSource()\n\t\tnoise.buffer = buffer\n\n\t\tconst filter = ctx.createBiquadFilter()\n\t\tfilter.type = 'bandpass'\n\t\tfilter.frequency.value = params.frequency\n\t\tfilter.Q.value = 0.7\n\n\t\tconst gain = ctx.createGain()\n\t\tgain.gain.setValueAtTime(0, startTime)\n\t\tgain.gain.linearRampToValueAtTime(params.volume * masterVolume, startTime + 0.015)\n\t\tgain.gain.exponentialRampToValueAtTime(0.001, startTime + params.duration)\n\n\t\tnoise.connect(filter).connect(gain).connect(ctx.destination)\n\t\tnoise.start(startTime)\n\t\tnoise.stop(startTime + params.duration)\n\t}\n\n\t/** Play a tone (musical) sound */\n\tprivate playTone(startTime: number, params: ToneParams, masterVolume: number): void {\n\t\tconst ctx = this.getContext()\n\t\tconst osc = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\n\t\tosc.type = params.type\n\t\tosc.frequency.setValueAtTime(params.frequency, startTime)\n\n\t\tif (params.frequencyEnd) {\n\t\t\tosc.frequency.exponentialRampToValueAtTime(params.frequencyEnd, startTime + params.duration * 0.8)\n\t\t}\n\n\t\t// Apply filter if specified\n\t\tlet lastNode: AudioNode = osc\n\t\tif (params.filterFrequency) {\n\t\t\tconst filter = ctx.createBiquadFilter()\n\t\t\tfilter.type = 'lowpass'\n\t\t\tfilter.frequency.value = params.filterFrequency\n\t\t\tosc.connect(filter)\n\t\t\tlastNode = filter\n\t\t}\n\n\t\tgain.gain.setValueAtTime(0, startTime)\n\t\tgain.gain.linearRampToValueAtTime(params.volume * masterVolume, startTime + 0.02)\n\t\tgain.gain.exponentialRampToValueAtTime(0.001, startTime + params.duration)\n\n\t\tlastNode.connect(gain).connect(ctx.destination)\n\t\tosc.start(startTime)\n\t\tosc.stop(startTime + params.duration)\n\t}\n\n\t// ==========================================================================\n\t// PUBLIC API - THEME MANAGEMENT\n\t// ==========================================================================\n\n\t/**\n\t * Set a custom sound theme (e.g., from AI generation)\n\t * @param theme The sound theme to apply\n\t */\n\tpublic setTheme(theme: SoundTheme): void {\n\t\tSoundContext.set({ theme })\n\t}\n\n\t/**\n\t * Reset to default sounds (removes custom theme)\n\t */\n\tpublic resetTheme(): void {\n\t\tSoundContext.set({ theme: null })\n\t}\n\n\t/**\n\t * Set volume level (0.0 - 1.0)\n\t * @param volume Volume level\n\t */\n\tpublic setVolume(volume: number): void {\n\t\tSoundContext.set({ volume: Math.max(0, Math.min(1, volume)) })\n\t}\n\n\t/**\n\t * Mute all sounds\n\t */\n\tpublic mute(): void {\n\t\tSoundContext.set({ muted: true })\n\t}\n\n\t/**\n\t * Unmute sounds\n\t */\n\tpublic unmute(): void {\n\t\tSoundContext.set({ muted: false })\n\t}\n\n\t/**\n\t * Toggle mute state\n\t */\n\tpublic toggleMute(): void {\n\t\tSoundContext.set({ muted: !this.muted })\n\t}\n\n\t// ==========================================================================\n\t// PUBLIC API - SOUND PLAYBACK\n\t// ==========================================================================\n\n\t/**\n\t * Get the sound definition for a feeling\n\t * Uses custom theme if available, falls back to defaults\n\t */\n\tpublic getSoundForFeeling(feeling: Feeling): FeelingSound {\n\t\tconst customTheme = this.theme\n\n\t\t// Try custom theme first\n\t\tif (customTheme?.feelings?.[feeling]) {\n\t\t\treturn customTheme.feelings[feeling]!\n\t\t}\n\n\t\t// Try category default from custom theme\n\t\tif (customTheme?.categoryDefaults) {\n\t\t\tconst category = this.getCategoryForFeeling(feeling)\n\t\t\tif (customTheme.categoryDefaults[category]) {\n\t\t\t\treturn customTheme.categoryDefaults[category]!\n\t\t\t}\n\t\t}\n\n\t\t// Fall back to defaults\n\t\treturn DEFAULT_SOUNDS[feeling]\n\t}\n\n\t/**\n\t * Get the category for a feeling\n\t */\n\tprivate getCategoryForFeeling(feeling: Feeling): FeelingCategory {\n\t\tconst happyFeelings: Feeling[] = [\n\t\t\t'joyful',\n\t\t\t'content',\n\t\t\t'excited',\n\t\t\t'proud',\n\t\t\t'hopeful',\n\t\t\t'relieved',\n\t\t\t'grateful',\n\t\t\t'peaceful',\n\t\t\t'playful',\n\t\t\t'amused',\n\t\t\t'curious',\n\t\t\t'inspired',\n\t\t\t'confident',\n\t\t\t'loved',\n\t\t\t'comforted',\n\t\t\t'energized',\n\t\t\t'celebrated',\n\t\t]\n\t\tconst sadFeelings: Feeling[] = [\n\t\t\t'sad',\n\t\t\t'lonely',\n\t\t\t'disappointed',\n\t\t\t'heartbroken',\n\t\t\t'grieving',\n\t\t\t'hopeless',\n\t\t\t'empty',\n\t\t\t'discouraged',\n\t\t\t'melancholic',\n\t\t\t'homesick',\n\t\t\t'hurt',\n\t\t\t'miserable',\n\t\t\t'regretful',\n\t\t\t'ashamed',\n\t\t\t'inferior',\n\t\t]\n\t\tconst anxiousFeelings: Feeling[] = [\n\t\t\t'anxious',\n\t\t\t'worried',\n\t\t\t'afraid',\n\t\t\t'terrified',\n\t\t\t'panicked',\n\t\t\t'nervous',\n\t\t\t'uneasy',\n\t\t\t'insecure',\n\t\t\t'overwhelmed',\n\t\t\t'stressed',\n\t\t\t'tense',\n\t\t\t'apprehensive',\n\t\t\t'startled',\n\t\t\t'suspicious',\n\t\t\t'vulnerable',\n\t\t]\n\t\tconst angryFeelings: Feeling[] = [\n\t\t\t'annoyed',\n\t\t\t'irritated',\n\t\t\t'frustrated',\n\t\t\t'angry',\n\t\t\t'enraged',\n\t\t\t'bitter',\n\t\t\t'resentful',\n\t\t\t'jealous',\n\t\t\t'envious',\n\t\t\t'indignant',\n\t\t\t'impatient',\n\t\t\t'hostile',\n\t\t\t'contemptuous',\n\t\t]\n\t\tconst tiredFeelings: Feeling[] = ['tired', 'exhausted', 'drained', 'burnedOut', 'numb', 'bored', 'unmotivated', 'apathetic', 'restless']\n\t\tconst calmFeelings: Feeling[] = ['calm', 'relaxed', 'atEase', 'balanced', 'stable', 'secure', 'safe', 'centered', 'grounded', 'accepting']\n\t\tconst connectedFeelings: Feeling[] = [\n\t\t\t'connected',\n\t\t\t'accepted',\n\t\t\t'included',\n\t\t\t'belonging',\n\t\t\t'appreciated',\n\t\t\t'valued',\n\t\t\t'respected',\n\t\t\t'supported',\n\t\t\t'protective',\n\t\t\t'compassionate',\n\t\t\t'empathetic',\n\t\t]\n\n\t\tif (happyFeelings.includes(feeling)) return 'happy'\n\t\tif (sadFeelings.includes(feeling)) return 'sad'\n\t\tif (anxiousFeelings.includes(feeling)) return 'anxious'\n\t\tif (angryFeelings.includes(feeling)) return 'angry'\n\t\tif (tiredFeelings.includes(feeling)) return 'tired'\n\t\tif (calmFeelings.includes(feeling)) return 'calm'\n\t\tif (connectedFeelings.includes(feeling)) return 'connected'\n\t\treturn 'mixed'\n\t}\n\n\t/**\n\t * Play a feeling sound\n\t * @param feeling The feeling to play\n\t */\n\tpublic play(feeling: Feeling): void {\n\t\tif (this.muted) return\n\n\t\tconst sound = this.getSoundForFeeling(feeling)\n\t\tconst ctx = this.getContext()\n\t\tconst now = ctx.currentTime\n\n\t\t// Calculate master volume (theme + user setting)\n\t\tconst themeMasterVolume = this.theme?.masterVolume ?? 1\n\t\tconst masterVolume = this.volume * themeMasterVolume\n\n\t\t// Play puffs\n\t\tsound.puffs.forEach(puff => {\n\t\t\tthis.playPuff(now + puff.startTime, puff, masterVolume)\n\t\t})\n\n\t\t// Play tones\n\t\tsound.tones.forEach(tone => {\n\t\t\tthis.playTone(now + tone.startTime, tone, masterVolume)\n\t\t})\n\t}\n\n\t/**\n\t * Dispose audio context\n\t */\n\tpublic dispose(): void {\n\t\tif (this.audioContext) {\n\t\t\tthis.audioContext.close()\n\t\t\tthis.audioContext = null\n\t\t}\n\t}\n\n\t/**\n\t * Get singleton instance\n\t */\n\tstatic getInstance(): SoundService {\n\t\tif (!SoundService.instance) {\n\t\t\tSoundService.instance = new SoundService()\n\t\t}\n\t\treturn SoundService.instance\n\t}\n}\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\n/** Global sound service singleton */\nexport const sound = SoundService.getInstance()\nexport const schmancySound = sound // Alias for consistency with theme\n"],"mappings":"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"}
|