@mhmo91/schmancy 0.10.15 → 0.10.17
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/custom-elements.json +2554 -3086
- package/dist/active-host-BP0zy_Y9.js +63 -0
- package/dist/{active-host-CvNYoprt.js.map → active-host-BP0zy_Y9.js.map} +1 -1
- package/dist/active-host-jH3iloCR.cjs +1 -0
- package/dist/{active-host-CcIa2tmW.cjs.map → active-host-jH3iloCR.cjs.map} +1 -1
- package/dist/agent/flow-CvG1fLW5.js.map +1 -1
- package/dist/agent/schmancy.agent.js +5694 -5500
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +971 -1189
- package/dist/agent/vendor-material-color-DcL7ZPxx.js.map +1 -1
- package/dist/{animation-CO_Csq84.cjs.map → animation-CCOIW4wJ.cjs.map} +1 -1
- package/dist/{animation-BK-8BwY8.js.map → animation-DCznELuT.js.map} +1 -1
- package/dist/{area-C_kgZZhN.js → area-ChxsDTu_.js} +2 -2
- package/dist/{area-C_kgZZhN.js.map → area-ChxsDTu_.js.map} +1 -1
- package/dist/{area-DFPtKzWy.cjs → area-Qt6yUnuA.cjs} +3 -3
- package/dist/{area-DFPtKzWy.cjs.map → area-Qt6yUnuA.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +2 -2
- package/dist/{audio-CluX8Qpq.cjs → audio-D-TZzpXF.cjs} +1 -1
- package/dist/{audio-CluX8Qpq.cjs.map → audio-D-TZzpXF.cjs.map} +1 -1
- package/dist/{audio-DcXphulJ.js → audio-DS43uoRA.js} +1 -1
- package/dist/{audio-DcXphulJ.js.map → audio-DS43uoRA.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-DWSuwSRS.js → autocomplete-CXvUjMD-.js} +46 -71
- package/dist/autocomplete-CXvUjMD-.js.map +1 -0
- package/dist/autocomplete-Ck2zbdF9.cjs +115 -0
- package/dist/autocomplete-Ck2zbdF9.cjs.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +2 -2
- package/dist/avatar.cjs.map +1 -1
- package/dist/avatar.js +3 -3
- package/dist/avatar.js.map +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-CZma2ojF.js → boat-Bj0wVcZi.js} +5 -5
- package/dist/{boat-CZma2ojF.js.map → boat-Bj0wVcZi.js.map} +1 -1
- package/dist/{boat-Dy6cc3hB.cjs → boat-DpFkILFF.cjs} +2 -2
- package/dist/{boat-Dy6cc3hB.cjs.map → boat-DpFkILFF.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +3 -3
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +2 -2
- package/dist/breadcrumb.js.map +1 -1
- package/dist/{busy-DCsqryvq.cjs → busy-CtcnclA3.cjs} +3 -3
- package/dist/{busy-DCsqryvq.cjs.map → busy-CtcnclA3.cjs.map} +1 -1
- package/dist/{busy-DeV2ByMw.js → busy-CyZSBnZP.js} +2 -2
- package/dist/{busy-DeV2ByMw.js.map → busy-CyZSBnZP.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +4 -4
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +19 -4
- package/dist/button.js.map +1 -1
- package/dist/{card--GgSX4X5.cjs → card-Cl6jp1yX.cjs} +5 -5
- package/dist/{card--GgSX4X5.cjs.map → card-Cl6jp1yX.cjs.map} +1 -1
- package/dist/{card-BTTsHzJJ.js → card-nYZCKmOO.js} +3 -3
- package/dist/{card-BTTsHzJJ.js.map → card-nYZCKmOO.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-NNReP9s_.cjs → checkbox-BeNo0ZGt.cjs} +4 -4
- package/dist/{checkbox-Cj5j-ppk.js.map → checkbox-BeNo0ZGt.cjs.map} +1 -1
- package/dist/{checkbox-Cj5j-ppk.js → checkbox-DiUrZiyc.js} +17 -30
- package/dist/checkbox-DiUrZiyc.js.map +1 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-CP-CbfoZ.js → chips-CfPFXv7Z.js} +5 -5
- package/dist/{chips-CP-CbfoZ.js.map → chips-CfPFXv7Z.js.map} +1 -1
- package/dist/{chips-iporOXxK.cjs → chips-DK6m-VCM.cjs} +5 -5
- package/dist/{chips-iporOXxK.cjs.map → chips-DK6m-VCM.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +2 -2
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +3 -3
- package/dist/connectivity.js.map +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-DJTJnSK4.js.map → context-6oXCZmZN.js.map} +1 -1
- package/dist/{context-BpCETidA.cjs.map → context-CRZeiCqq.cjs.map} +1 -1
- package/dist/{cursor-glow-Bulq-38P.cjs → cursor-glow-C8LgCxpI.cjs} +1 -1
- package/dist/{cursor-glow-Bulq-38P.cjs.map → cursor-glow-C8LgCxpI.cjs.map} +1 -1
- package/dist/{cursor-glow-Ah7VXSj7.js → cursor-glow-Cs2XLDB9.js} +1 -1
- package/dist/{cursor-glow-Ah7VXSj7.js.map → cursor-glow-Cs2XLDB9.js.map} +1 -1
- package/dist/date-range-DA6anfcF.cjs +131 -0
- package/dist/date-range-DA6anfcF.cjs.map +1 -0
- package/dist/{date-range-CgNujP8r.js → date-range-DjlF2u7o.js} +124 -89
- package/dist/date-range-DjlF2u7o.js.map +1 -0
- package/dist/date-range-inline-BfYK795W.cjs +43 -0
- package/dist/{date-range-inline-D4IjOOO0.cjs.map → date-range-inline-BfYK795W.cjs.map} +1 -1
- package/dist/{date-range-inline-C2PXX_GY.js → date-range-inline-n7y_H6PJ.js} +2 -2
- package/dist/{date-range-inline-C2PXX_GY.js.map → date-range-inline-n7y_H6PJ.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 +2 -2
- package/dist/delay.cjs.map +1 -1
- package/dist/delay.js +3 -3
- package/dist/delay.js.map +1 -1
- package/dist/{details-DT2b3xOn.cjs → details-BdAVsLl-.cjs} +2 -2
- package/dist/{details-DT2b3xOn.cjs.map → details-BdAVsLl-.cjs.map} +1 -1
- package/dist/{details-VjaNwtfd.js → details-CS_ToAOj.js} +6 -6
- package/dist/{details-VjaNwtfd.js.map → details-CS_ToAOj.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.js +5 -5
- package/dist/directives.js.map +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/{divider-BMO8pzEO.js → divider-COLK0RbT.js} +2 -2
- package/dist/{divider-BMO8pzEO.js.map → divider-COLK0RbT.js.map} +1 -1
- package/dist/{divider-BW33TZ-X.cjs → divider-CvWAnvdO.cjs} +2 -2
- package/dist/{divider-BW33TZ-X.cjs.map → divider-CvWAnvdO.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +3 -3
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/dropdown.js.map +1 -1
- package/dist/{expand-DbELKKOt.js → expand-D9LzmpoV.js} +5 -5
- package/dist/{expand-DbELKKOt.js.map → expand-D9LzmpoV.js.map} +1 -1
- package/dist/{expand-_f5EUKWB.cjs → expand-r2sATPUJ.cjs} +3 -3
- package/dist/{expand-_f5EUKWB.cjs.map → expand-r2sATPUJ.cjs.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/float-2nHYuBx-.cjs +1 -0
- package/dist/{float-CKmd-0-t.cjs.map → float-2nHYuBx-.cjs.map} +1 -1
- package/dist/{float-B6RBb2dN.js → float-BWy39CXr.js} +2 -2
- package/dist/{float-B6RBb2dN.js.map → float-BWy39CXr.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/form-D1iJOLVb.js +267 -0
- package/dist/form-D1iJOLVb.js.map +1 -0
- package/dist/form-D9K1GhlP.cjs +42 -0
- package/dist/form-D9K1GhlP.cjs.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +9 -2
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{hashContent-Bobsobip.cjs.map → hashContent-Ck6laKlk.cjs.map} +1 -1
- package/dist/{hashContent-BU6jl5ih.js.map → hashContent-dJrI-9sc.js.map} +1 -1
- package/dist/{icons-r-S17M8U.cjs → icons-BXp4vbnW.cjs} +2 -2
- package/dist/{icons-r-S17M8U.cjs.map → icons-BXp4vbnW.cjs.map} +1 -1
- package/dist/{icons-CoDo95Cu.js → icons-COrlmBPB.js} +3 -3
- package/dist/{icons-CoDo95Cu.js.map → icons-COrlmBPB.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-P9c_qg1-.cjs → iframe-BwXj6mLp.cjs} +2 -2
- package/dist/{iframe-P9c_qg1-.cjs.map → iframe-BwXj6mLp.cjs.map} +1 -1
- package/dist/{iframe-k4oI-TIj.js → iframe-CPNsIy7k.js} +2 -2
- package/dist/{iframe-k4oI-TIj.js.map → iframe-CPNsIy7k.js.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 +60 -60
- package/dist/input-BGrF2qVq.cjs +52 -0
- package/dist/input-BGrF2qVq.cjs.map +1 -0
- package/dist/{input-D95GjINh.js → input-C1SnMNuQ.js} +103 -104
- package/dist/input-C1SnMNuQ.js.map +1 -0
- package/dist/{input-chip-DpC_XEKN.js → input-chip-CtQ0pH5b.js} +2 -2
- package/dist/{input-chip-DpC_XEKN.js.map → input-chip-CtQ0pH5b.js.map} +1 -1
- package/dist/{input-chip-D0ZXqTt5.cjs → input-chip-DZktYohr.cjs} +2 -2
- package/dist/{input-chip-D0ZXqTt5.cjs.map → input-chip-DZktYohr.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +2 -2
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +3 -3
- package/dist/json.js.map +1 -1
- package/dist/kbd.cjs +2 -2
- package/dist/kbd.cjs.map +1 -1
- package/dist/kbd.js +2 -2
- package/dist/kbd.js.map +1 -1
- package/dist/{layout-CXPNsUIo.js → layout-BH28sKGc.js} +1 -1
- package/dist/{layout-CXPNsUIo.js.map → layout-BH28sKGc.js.map} +1 -1
- package/dist/{layout-Zhe7wSZ_.cjs → layout-Delq-QvR.cjs} +1 -1
- package/dist/{layout-Zhe7wSZ_.cjs.map → layout-Delq-QvR.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lazy-Dq9mRRjT.cjs.map → lazy-CayEFyC3.cjs.map} +1 -1
- package/dist/{lazy-B0ia54tT.js.map → lazy-D-bO2r4m.js.map} +1 -1
- package/dist/{lightbox-CovQtmyn.js → lightbox-CLwpaiai.js} +9 -9
- package/dist/{lightbox-CovQtmyn.js.map → lightbox-CLwpaiai.js.map} +1 -1
- package/dist/{lightbox-C-yHeoK0.cjs → lightbox-Ck6BpN5u.cjs} +3 -3
- package/dist/{lightbox-C-yHeoK0.cjs.map → lightbox-Ck6BpN5u.cjs.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-C1pR9vhu.js → list-Bmce1Rb8.js} +2 -2
- package/dist/{list-C1pR9vhu.js.map → list-Bmce1Rb8.js.map} +1 -1
- package/dist/{list-CAijuky4.cjs → list-EmRwSpTU.cjs} +3 -3
- package/dist/{list-CAijuky4.cjs.map → list-EmRwSpTU.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{magnetic-BJgB1dVi.cjs → magnetic-Bgh7aHHI.cjs} +1 -1
- package/dist/{magnetic-BJgB1dVi.cjs.map → magnetic-Bgh7aHHI.cjs.map} +1 -1
- package/dist/{magnetic-YwCNvtbB.js → magnetic-DxvoEz8_.js} +2 -2
- package/dist/{magnetic-YwCNvtbB.js.map → magnetic-DxvoEz8_.js.map} +1 -1
- package/dist/{menu-B59vZv9n.js → menu-BA_B7QOG.js} +3 -3
- package/dist/{menu-B59vZv9n.js.map → menu-BA_B7QOG.js.map} +1 -1
- package/dist/{menu-BaHO3Cip.cjs → menu-BTU3wGP6.cjs} +3 -3
- package/dist/{menu-BaHO3Cip.cjs.map → menu-BTU3wGP6.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-BOOu6q2n.cjs +298 -0
- package/dist/mixins-BOOu6q2n.cjs.map +1 -0
- package/dist/mixins-BWb9_e1s.js +680 -0
- package/dist/mixins-BWb9_e1s.js.map +1 -0
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +2 -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 +3 -3
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +2 -2
- package/dist/navigation-rail.js.map +1 -1
- package/dist/notification-CliGbcfU.cjs +23 -0
- package/dist/{notification-BC9nG8Sr.cjs.map → notification-CliGbcfU.cjs.map} +1 -1
- package/dist/{notification-BeLoVa47.js → notification-R2_Mf1HR.js} +4 -4
- package/dist/{notification-BeLoVa47.js.map → notification-R2_Mf1HR.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-UvlSAcC4.js → option-DU1X4SDu.js} +2 -2
- package/dist/{option-UvlSAcC4.js.map → option-DU1X4SDu.js.map} +1 -1
- package/dist/{option-BWF4GBp-.cjs → option-Db98Ndzv.cjs} +2 -2
- package/dist/{option-BWF4GBp-.cjs.map → option-Db98Ndzv.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-DCDS17uj.js.map → overlay-stack-BR4iYivO.js.map} +1 -1
- package/dist/{overlay-stack-DPIe_aYv.cjs.map → overlay-stack-Dk0xETTy.cjs.map} +1 -1
- package/dist/overlay.cjs +2 -2
- package/dist/overlay.cjs.map +1 -1
- package/dist/{overlay.confirm-body-URtE1gI3.cjs → overlay.confirm-body-BkhNvr0c.cjs} +2 -2
- package/dist/{overlay.confirm-body-URtE1gI3.cjs.map → overlay.confirm-body-BkhNvr0c.cjs.map} +1 -1
- package/dist/{overlay.confirm-body-9W0B5QGv.js → overlay.confirm-body-uFp-0Zfh.js} +2 -2
- package/dist/{overlay.confirm-body-9W0B5QGv.js.map → overlay.confirm-body-uFp-0Zfh.js.map} +1 -1
- package/dist/overlay.js +8 -8
- package/dist/overlay.js.map +1 -1
- package/dist/{overlay.service-DnZTcKyJ.cjs → overlay.service-1YWfUD2S.cjs} +1 -1
- package/dist/{overlay.service-DnZTcKyJ.cjs.map → overlay.service-1YWfUD2S.cjs.map} +1 -1
- package/dist/{overlay.service-CVqs2Gu1.js → overlay.service-BcF12kGb.js} +2 -2
- package/dist/{overlay.service-CVqs2Gu1.js.map → overlay.service-BcF12kGb.js.map} +1 -1
- package/dist/page.cjs +2 -2
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +5 -5
- package/dist/page.js.map +1 -1
- package/dist/{progress-C29Uw-WJ.js → progress-C9Y2D5cm.js} +2 -2
- package/dist/{progress-C29Uw-WJ.js.map → progress-C9Y2D5cm.js.map} +1 -1
- package/dist/{progress-CwzwY8Oe.cjs → progress-DiVTGAXa.cjs} +2 -2
- package/dist/{progress-CwzwY8Oe.cjs.map → progress-DiVTGAXa.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-CW8airhZ.js → radio-group-CAzjBI2n.js} +4 -4
- package/dist/radio-group-CAzjBI2n.js.map +1 -0
- package/dist/radio-group-DIRJyYv6.cjs +40 -0
- package/dist/radio-group-DIRJyYv6.cjs.map +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +6 -4
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +19 -15
- package/dist/range.js.map +1 -1
- package/dist/{reduced-motion-D-L12p7G.js.map → reduced-motion-D7LqTUMn.js.map} +1 -1
- package/dist/{reduced-motion-Ds-HjMzn.cjs.map → reduced-motion-Dzfp_w5x.cjs.map} +1 -1
- package/dist/{rxjs-utils-DCUHg_Ml.cjs.map → rxjs-utils-BKB2UM_j.cjs.map} +1 -1
- package/dist/{rxjs-utils-CVeJQ9KG.js.map → rxjs-utils-Dv9T9IpA.js.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-BotoGcMU.js → scroll-BFHUtZOa.js} +2 -2
- package/dist/{scroll-BotoGcMU.js.map → scroll-BFHUtZOa.js.map} +1 -1
- package/dist/{scroll-CmhmUebp.cjs → scroll-nIZyoEMt.cjs} +2 -2
- package/dist/{scroll-CmhmUebp.cjs.map → scroll-nIZyoEMt.cjs.map} +1 -1
- package/dist/{search-BLCRsxIC.cjs.map → search-DPKoC-dT.cjs.map} +1 -1
- package/dist/{search-BTz7-Rev.js.map → search-MvIBA93K.js.map} +1 -1
- package/dist/{select-Dbn-CImU.js → select-7WqaUWBU.js} +52 -73
- package/dist/select-7WqaUWBU.js.map +1 -0
- package/dist/select-DTuf6p6T.cjs +56 -0
- package/dist/select-DTuf6p6T.cjs.map +1 -0
- 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 +2 -2
- package/dist/skeleton.js.map +1 -1
- package/dist/skills/SKILL.md +3 -0
- package/dist/skills/autocomplete.md +16 -3
- package/dist/skills/button.md +19 -0
- package/dist/skills/checkbox.md +19 -0
- package/dist/skills/date-range.md +19 -0
- package/dist/skills/form-ux-rules.md +55 -0
- package/dist/skills/form.md +121 -25
- package/dist/skills/input.md +19 -4
- package/dist/skills/range.md +15 -1
- package/dist/skills/schmancy/SKILL.md +3 -0
- package/dist/skills/schmancy/autocomplete.md +16 -3
- package/dist/skills/schmancy/button.md +19 -0
- package/dist/skills/schmancy/checkbox.md +19 -0
- package/dist/skills/schmancy/date-range.md +19 -0
- package/dist/skills/schmancy/form-ux-rules.md +55 -0
- package/dist/skills/schmancy/form.md +121 -25
- package/dist/skills/schmancy/input.md +19 -4
- package/dist/skills/schmancy/range.md +15 -1
- package/dist/skills/schmancy/select.md +13 -1
- package/dist/skills/schmancy/switch.md +21 -2
- package/dist/skills/schmancy/textarea.md +13 -0
- package/dist/skills/select.md +13 -1
- package/dist/skills/switch.md +21 -2
- package/dist/skills/textarea.md +13 -0
- package/dist/slider.cjs +3 -3
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +2 -2
- package/dist/slider.js.map +1 -1
- package/dist/{sound.service-kKfsN0m-.js → sound.service-BIN2W7Rv.js} +1 -1
- package/dist/{sound.service-kKfsN0m-.js.map → sound.service-BIN2W7Rv.js.map} +1 -1
- package/dist/{sound.service-BGs6m0Cm.cjs → sound.service-DyY78ukR.cjs} +1 -1
- package/dist/{sound.service-BGs6m0Cm.cjs.map → sound.service-DyY78ukR.cjs.map} +1 -1
- package/dist/{splash-screen-DtkjCJYo.js → splash-screen-BcjjJSlK.js} +2 -2
- package/dist/{splash-screen-DtkjCJYo.js.map → splash-screen-BcjjJSlK.js.map} +1 -1
- package/dist/{splash-screen-DlQUv-kV.cjs → splash-screen-Kr1sPtME.cjs} +2 -2
- package/dist/{splash-screen-DlQUv-kV.cjs.map → splash-screen-Kr1sPtME.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-DEUjlTsX.cjs → src-BbMJeLk9.cjs} +11 -11
- package/dist/{src-DEUjlTsX.cjs.map → src-BbMJeLk9.cjs.map} +1 -1
- package/dist/{src-D6e0adHi.js → src-DCu_mEk4.js} +40 -40
- package/dist/{src-D6e0adHi.js.map → src-DCu_mEk4.js.map} +1 -1
- package/dist/state-avic94Ft.cjs +1 -0
- package/dist/{state-DNdCPITt.cjs.map → state-avic94Ft.cjs.map} +1 -1
- package/dist/{state-BusMG6sM.js → state-nm8yzMPp.js} +1 -2
- package/dist/{state-BusMG6sM.js.map → state-nm8yzMPp.js.map} +1 -1
- package/dist/state.cjs +1 -1
- package/dist/state.js +2 -2
- package/dist/steps.cjs +3 -3
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +2 -2
- package/dist/steps.js.map +1 -1
- package/dist/{surface-A82O1kgu.js → surface-BtMMHKol.js} +2 -2
- package/dist/{surface-A82O1kgu.js.map → surface-BtMMHKol.js.map} +1 -1
- package/dist/surface-CgXeKdGL.cjs +7 -0
- package/dist/{surface-BpppoNXN.cjs.map → surface-CgXeKdGL.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +3 -3
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.js +27 -43
- package/dist/switch.js.map +1 -1
- package/dist/table.cjs +3 -3
- package/dist/table.cjs.map +1 -1
- package/dist/table.js +2 -2
- package/dist/table.js.map +1 -1
- package/dist/{tabs-cVHHd1dY.js → tabs-81ADWQqa.js} +2 -2
- package/dist/{tabs-cVHHd1dY.js.map → tabs-81ADWQqa.js.map} +1 -1
- package/dist/{tabs-TO3UiBsm.cjs → tabs-DnG3K0bu.cjs} +2 -2
- package/dist/{tabs-TO3UiBsm.cjs.map → tabs-DnG3K0bu.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-3mWewuAf.js +186 -0
- package/dist/textarea-3mWewuAf.js.map +1 -0
- package/dist/textarea-BenjiTXB.cjs +43 -0
- package/dist/textarea-BenjiTXB.cjs.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-CT408FqH.js → theme-CFPJW933.js} +9 -9
- package/dist/{theme-CT408FqH.js.map → theme-CFPJW933.js.map} +1 -1
- package/dist/theme-DNymrucy.cjs +181 -0
- package/dist/{theme-CpuF3D3q.cjs.map → theme-DNymrucy.cjs.map} +1 -1
- package/dist/{theme-button-pTb5-Wxx.js → theme-button-DC_shZ_7.js} +2 -2
- package/dist/{theme-button-pTb5-Wxx.js.map → theme-button-DC_shZ_7.js.map} +1 -1
- package/dist/theme-button-ENKa3TPT.cjs +8 -0
- package/dist/{theme-button-B6Xf-EiH.cjs.map → theme-button-ENKa3TPT.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-B9TjbSBF.js.map → theme.interface-C2XNgsLB.js.map} +1 -1
- package/dist/{theme.interface-BujperTo.cjs.map → theme.interface-D4NeufQA.cjs.map} +1 -1
- package/dist/theme.js +4 -4
- package/dist/{theme.service-DIUo1mBP.js → theme.service-BOWIT_5k.js} +1 -1
- package/dist/{theme.service-DIUo1mBP.js.map → theme.service-BOWIT_5k.js.map} +1 -1
- package/dist/{theme.service-Cfk88qHK.cjs → theme.service-DkdH1t60.cjs} +1 -1
- package/dist/{theme.service-Cfk88qHK.cjs.map → theme.service-DkdH1t60.cjs.map} +1 -1
- package/dist/tooltip.js.map +1 -1
- package/dist/tree.cjs +2 -2
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +2 -2
- package/dist/tree.js.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.cjs +2 -2
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +2 -2
- package/dist/typography.js.map +1 -1
- package/dist/{utils-kND2Z9Xg.js → utils-Cj_nRRyx.js} +2 -2
- package/dist/{utils-kND2Z9Xg.js.map → utils-Cj_nRRyx.js.map} +1 -1
- package/dist/{utils-Dt5PpmaQ.cjs → utils-D2QUu4-g.cjs} +1 -1
- package/dist/{utils-Dt5PpmaQ.cjs.map → utils-D2QUu4-g.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +4 -4
- package/dist/visually-hidden.cjs +2 -2
- package/dist/visually-hidden.cjs.map +1 -1
- package/dist/visually-hidden.js +2 -2
- package/dist/visually-hidden.js.map +1 -1
- package/dist/{window-CuBcOxbc.js → window-BTecgE_U.js} +7 -7
- package/dist/{window-CuBcOxbc.js.map → window-BTecgE_U.js.map} +1 -1
- package/dist/{window-CSKvv4Ts.cjs → window-DGydMS0g.cjs} +2 -2
- package/dist/{window-CSKvv4Ts.cjs.map → window-DGydMS0g.cjs.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/SKILL.md +3 -0
- package/skills/schmancy/autocomplete.md +16 -3
- package/skills/schmancy/button.md +19 -0
- package/skills/schmancy/checkbox.md +19 -0
- package/skills/schmancy/date-range.md +19 -0
- package/skills/schmancy/form-ux-rules.md +55 -0
- package/skills/schmancy/form.md +121 -25
- package/skills/schmancy/input.md +19 -4
- package/skills/schmancy/range.md +15 -1
- package/skills/schmancy/select.md +13 -1
- package/skills/schmancy/switch.md +21 -2
- package/skills/schmancy/textarea.md +13 -0
- package/src/button/button.test.ts +122 -0
- package/src/button/button.ts +36 -0
- package/src/{autocomplete → form/fields/autocomplete}/autocomplete.ts +48 -75
- package/src/{checkbox → form/fields/checkbox}/checkbox.test.ts +1 -1
- package/src/form/fields/checkbox/checkbox.ts +126 -0
- package/src/form/fields/date-range/date-range.test.ts +102 -0
- package/src/{date-range → form/fields/date-range}/date-range.ts +90 -7
- package/src/form/fields/index.ts +9 -0
- package/src/form/fields/input/input.test.ts +201 -0
- package/src/{input → form/fields/input}/input.ts +153 -238
- package/src/{radio-group → form/fields/radio-group}/radio-button.ts +1 -1
- package/src/{radio-group → form/fields/radio-group}/radio-group.ts +1 -1
- package/src/form/fields/range/range.test.ts +90 -0
- package/src/{range → form/fields/range}/range.ts +34 -13
- package/src/{select → form/fields/select}/select.ts +77 -108
- package/src/{switch → form/fields/switch}/switch.test.ts +1 -1
- package/src/{switch → form/fields/switch}/switch.ts +71 -51
- package/src/form/fields/textarea/textarea.test.ts +54 -0
- package/src/{textarea → form/fields/textarea}/textarea.ts +33 -72
- package/src/form/form-state.ts +31 -0
- package/src/form/form-summary.test.ts +105 -0
- package/src/form/form-summary.ts +171 -0
- package/src/form/form.test.ts +218 -35
- package/src/form/form.ts +330 -99
- package/src/form/index.ts +3 -0
- package/src/index.ts +9 -9
- package/types/mixins/formField.mixin.d.ts +90 -0
- package/types/src/button/button.d.ts +9 -0
- package/types/src/button/button.test.d.ts +3 -0
- package/types/src/{autocomplete → form/fields/autocomplete}/autocomplete.d.ts +6 -15
- package/types/src/form/fields/checkbox/checkbox.d.ts +47 -0
- package/types/src/{date-range → form/fields/date-range}/date-range.d.ts +22 -4
- package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
- package/types/src/form/fields/index.d.ts +9 -0
- package/types/src/{input → form/fields/input}/input.d.ts +20 -45
- package/types/src/form/fields/input/input.test.d.ts +1 -0
- package/types/src/{radio-group → form/fields/radio-group}/radio-button.d.ts +1 -1
- package/types/src/{radio-group → form/fields/radio-group}/radio-group.d.ts +1 -1
- package/types/src/form/fields/range/range.d.ts +28 -0
- package/types/src/form/fields/range/range.test.d.ts +1 -0
- package/types/src/{select → form/fields/select}/select.d.ts +23 -24
- package/types/src/form/fields/switch/switch.d.ts +57 -0
- package/types/src/{textarea → form/fields/textarea}/textarea.d.ts +6 -39
- package/types/src/form/fields/textarea/textarea.test.d.ts +1 -0
- package/types/src/form/form-state.d.ts +22 -0
- package/types/src/form/form-summary.d.ts +42 -0
- package/types/src/form/form-summary.test.d.ts +4 -0
- package/types/src/form/form.d.ts +79 -34
- package/types/src/form/form.test.d.ts +2 -2
- package/types/src/form/index.d.ts +3 -0
- package/types/src/index.d.ts +9 -9
- package/dist/active-host-CcIa2tmW.cjs +0 -1
- package/dist/active-host-CvNYoprt.js +0 -57
- package/dist/autocomplete-DWSuwSRS.js.map +0 -1
- package/dist/autocomplete-iCJOia-q.cjs +0 -115
- package/dist/autocomplete-iCJOia-q.cjs.map +0 -1
- package/dist/checkbox-NNReP9s_.cjs.map +0 -1
- package/dist/date-range-CaOxwZDq.cjs +0 -131
- package/dist/date-range-CaOxwZDq.cjs.map +0 -1
- package/dist/date-range-CgNujP8r.js.map +0 -1
- package/dist/date-range-inline-D4IjOOO0.cjs +0 -43
- package/dist/decorate-23nYs4Le.js +0 -7
- package/dist/decorate-DpFmy0nm.cjs +0 -1
- package/dist/float-CKmd-0-t.cjs +0 -1
- package/dist/form-CFvwnfuJ.js +0 -68
- package/dist/form-CFvwnfuJ.js.map +0 -1
- package/dist/form-Ceijw1aA.cjs +0 -1
- package/dist/form-Ceijw1aA.cjs.map +0 -1
- package/dist/input-D95GjINh.js.map +0 -1
- package/dist/input-D9s4jDAb.cjs +0 -51
- package/dist/input-D9s4jDAb.cjs.map +0 -1
- package/dist/mixins-BV0w2yIE.js +0 -627
- package/dist/mixins-BV0w2yIE.js.map +0 -1
- package/dist/mixins-DvAYa-F7.cjs +0 -298
- package/dist/mixins-DvAYa-F7.cjs.map +0 -1
- package/dist/notification-BC9nG8Sr.cjs +0 -23
- package/dist/radio-group-ByMD6Lsj.cjs +0 -40
- package/dist/radio-group-ByMD6Lsj.cjs.map +0 -1
- package/dist/radio-group-CW8airhZ.js.map +0 -1
- package/dist/select-BdBThja4.cjs +0 -56
- package/dist/select-BdBThja4.cjs.map +0 -1
- package/dist/select-Dbn-CImU.js.map +0 -1
- package/dist/state-DNdCPITt.cjs +0 -1
- package/dist/surface-BpppoNXN.cjs +0 -7
- package/dist/textarea-B9dy-yec.js +0 -211
- package/dist/textarea-B9dy-yec.js.map +0 -1
- package/dist/textarea-DFY0Flgv.cjs +0 -39
- package/dist/textarea-DFY0Flgv.cjs.map +0 -1
- package/dist/theme-CpuF3D3q.cjs +0 -181
- package/dist/theme-button-B6Xf-EiH.cjs +0 -8
- package/src/checkbox/checkbox.ts +0 -162
- package/types/src/checkbox/checkbox.d.ts +0 -71
- package/types/src/range/range.d.ts +0 -25
- package/types/src/switch/switch.d.ts +0 -53
- /package/dist/{animation-CO_Csq84.cjs → animation-CCOIW4wJ.cjs} +0 -0
- /package/dist/{animation-BK-8BwY8.js → animation-DCznELuT.js} +0 -0
- /package/dist/{context-DJTJnSK4.js → context-6oXCZmZN.js} +0 -0
- /package/dist/{context-BpCETidA.cjs → context-CRZeiCqq.cjs} +0 -0
- /package/dist/{hashContent-Bobsobip.cjs → hashContent-Ck6laKlk.cjs} +0 -0
- /package/dist/{hashContent-BU6jl5ih.js → hashContent-dJrI-9sc.js} +0 -0
- /package/dist/{lazy-Dq9mRRjT.cjs → lazy-CayEFyC3.cjs} +0 -0
- /package/dist/{lazy-B0ia54tT.js → lazy-D-bO2r4m.js} +0 -0
- /package/dist/{overlay-stack-DCDS17uj.js → overlay-stack-BR4iYivO.js} +0 -0
- /package/dist/{overlay-stack-DPIe_aYv.cjs → overlay-stack-Dk0xETTy.cjs} +0 -0
- /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-D7LqTUMn.js} +0 -0
- /package/dist/{reduced-motion-Ds-HjMzn.cjs → reduced-motion-Dzfp_w5x.cjs} +0 -0
- /package/dist/{rxjs-utils-DCUHg_Ml.cjs → rxjs-utils-BKB2UM_j.cjs} +0 -0
- /package/dist/{rxjs-utils-CVeJQ9KG.js → rxjs-utils-Dv9T9IpA.js} +0 -0
- /package/dist/{search-BLCRsxIC.cjs → search-DPKoC-dT.cjs} +0 -0
- /package/dist/{search-BTz7-Rev.js → search-MvIBA93K.js} +0 -0
- /package/dist/{theme.interface-B9TjbSBF.js → theme.interface-C2XNgsLB.js} +0 -0
- /package/dist/{theme.interface-BujperTo.cjs → theme.interface-D4NeufQA.cjs} +0 -0
- /package/src/{autocomplete → form/fields/autocomplete}/autocomplete.scss +0 -0
- /package/src/{autocomplete → form/fields/autocomplete}/index.ts +0 -0
- /package/src/{checkbox → form/fields/checkbox}/index.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-range-dialog.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-range-helpers.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-range-presets.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/date-utils.ts +0 -0
- /package/src/{date-range → form/fields/date-range}/index.ts +0 -0
- /package/src/{input → form/fields/input}/index.ts +0 -0
- /package/src/{input → form/fields/input}/input.scss +0 -0
- /package/src/{radio-group → form/fields/radio-group}/index.ts +0 -0
- /package/src/{radio-group → form/fields/radio-group}/radio-group.scss +0 -0
- /package/src/{range → form/fields/range}/index.ts +0 -0
- /package/src/{select → form/fields/select}/index.ts +0 -0
- /package/src/{switch → form/fields/switch}/index.ts +0 -0
- /package/src/{textarea → form/fields/textarea}/index.ts +0 -0
- /package/src/{textarea → form/fields/textarea}/textarea.scss +0 -0
- /package/types/src/{autocomplete → form/fields/autocomplete}/index.d.ts +0 -0
- /package/types/src/{checkbox → form/fields/checkbox}/checkbox.test.d.ts +0 -0
- /package/types/src/{checkbox → form/fields/checkbox}/index.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-range-dialog.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-range-helpers.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-range-presets.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/date-utils.d.ts +0 -0
- /package/types/src/{date-range → form/fields/date-range}/index.d.ts +0 -0
- /package/types/src/{input → form/fields/input}/index.d.ts +0 -0
- /package/types/src/{radio-group → form/fields/radio-group}/index.d.ts +0 -0
- /package/types/src/{range → form/fields/range}/index.d.ts +0 -0
- /package/types/src/{select → form/fields/select}/index.d.ts +0 -0
- /package/types/src/{switch → form/fields/switch}/index.d.ts +0 -0
- /package/types/src/{switch → form/fields/switch}/switch.test.d.ts +0 -0
- /package/types/src/{textarea → form/fields/textarea}/index.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-CluX8Qpq.cjs","names":[],"sources":["../src/audio/emotional-sounds.ts"],"sourcesContent":["/**\n * Schmancy Emotional Sound Library\n *\n * A curated collection of soft, elegant sounds organized by emotional categories.\n * Each sound is designed to be non-intrusive, emotionally evocative, and beautiful.\n *\n * Inspired by the gentle sounds of nature - soft air, gentle chimes, and warm tones.\n *\n * @example\n * ```typescript\n * import { $sounds } from '@schmancy/audio'\n *\n * // Play a feeling\n * $sounds.play('joyful')\n * $sounds.play('relieved')\n * $sounds.play('curious')\n *\n * // Adjust volume\n * $sounds.setVolume(0.2)\n *\n * // Mute/unmute\n * $sounds.mute()\n * $sounds.unmute()\n * ```\n */\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Happy / Pleasant feelings */\nexport type HappyFeeling =\n | 'joyful' | 'content' | 'excited' | 'proud' | 'hopeful'\n | 'relieved' | 'grateful' | 'peaceful' | 'playful' | 'amused'\n | 'curious' | 'inspired' | 'confident' | 'loved' | 'comforted' | 'energized'\n | 'celebrated'\n\n/** Sad / Low feelings */\nexport type SadFeeling =\n | 'sad' | 'lonely' | 'disappointed' | 'heartbroken' | 'grieving'\n | 'hopeless' | 'empty' | 'discouraged' | 'melancholic' | 'homesick'\n | 'hurt' | 'miserable' | 'regretful' | 'ashamed' | 'inferior'\n\n/** Anxious / Fearful feelings */\nexport type AnxiousFeeling =\n | 'anxious' | 'worried' | 'afraid' | 'terrified' | 'panicked'\n | 'nervous' | 'uneasy' | 'insecure' | 'overwhelmed' | 'stressed'\n | 'tense' | 'apprehensive' | 'startled' | 'suspicious' | 'vulnerable'\n\n/** Angry / Frustrated feelings */\nexport type AngryFeeling =\n | 'annoyed' | 'irritated' | 'frustrated' | 'angry' | 'enraged'\n | 'bitter' | 'resentful' | 'jealous' | 'envious' | 'indignant'\n | 'impatient' | 'hostile' | 'contemptuous'\n\n/** Tired / Drained feelings */\nexport type TiredFeeling =\n | 'tired' | 'exhausted' | 'drained' | 'burnedOut' | 'numb'\n | 'bored' | 'unmotivated' | 'apathetic' | 'restless'\n\n/** Calm / Grounded feelings */\nexport type CalmFeeling =\n | 'calm' | 'relaxed' | 'atEase' | 'balanced' | 'stable'\n | 'secure' | 'safe' | 'centered' | 'grounded' | 'accepting'\n\n/** Connected / Social feelings */\nexport type ConnectedFeeling =\n | 'connected' | 'accepted' | 'included' | 'belonging' | 'appreciated'\n | 'valued' | 'respected' | 'supported' | 'protective' | 'compassionate' | 'empathetic'\n\n/** Mixed / Complicated feelings */\nexport type MixedFeeling =\n | 'conflicted' | 'confused' | 'ambivalent' | 'nostalgic' | 'guilty'\n | 'embarrassed' | 'surprised' | 'shocked' | 'awestruck' | 'skeptical'\n\n/** All feelings */\nexport type Feeling =\n | HappyFeeling | SadFeeling | AnxiousFeeling | AngryFeeling\n | TiredFeeling | CalmFeeling | ConnectedFeeling | MixedFeeling\n\n// FeelingCategory is defined in ../types/mood-audio.types.ts and re-exported\n// from ./index.ts — the canonical source.\n\n// ============================================================================\n// SOUND GENERATOR\n// ============================================================================\n\n/**\n * Emotional Sound Generator\n * Creates soft, beautiful sounds using Web Audio API\n */\nexport class EmotionalSoundGenerator {\n private audioContext: AudioContext | null = null\n private volume = 0.15\n private muted = false\n\n private getContext(): AudioContext {\n if (!this.audioContext) {\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n this.audioContext = new AudioContextClass()\n }\n // Resume if suspended (autoplay policy)\n if (this.audioContext.state === 'suspended') {\n this.audioContext.resume()\n }\n return this.audioContext\n }\n\n // ==========================================================================\n // CORE SOUND PRIMITIVES\n // ==========================================================================\n\n /** Soft air puff - the foundation of our sound palette */\n private puff(startTime: number, duration: number, freq: number, vol: number): void {\n const ctx = this.getContext()\n const bufferSize = Math.floor(ctx.sampleRate * duration)\n const buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n const data = buffer.getChannelData(0)\n\n for (let i = 0; i < bufferSize; i++) {\n data[i] = Math.random() * 2 - 1\n }\n\n const noise = ctx.createBufferSource()\n noise.buffer = buffer\n\n const filter = ctx.createBiquadFilter()\n filter.type = 'bandpass'\n filter.frequency.value = freq\n filter.Q.value = 0.7\n\n const gain = ctx.createGain()\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.015)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n noise.connect(filter).connect(gain).connect(ctx.destination)\n noise.start(startTime)\n noise.stop(startTime + duration)\n }\n\n /** Gentle tone with envelope */\n private tone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n type: OscillatorType = 'sine',\n freqEnd?: number\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n\n osc.type = type\n osc.frequency.setValueAtTime(freq, startTime)\n if (freqEnd) {\n osc.frequency.exponentialRampToValueAtTime(freqEnd, startTime + duration * 0.8)\n }\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.02)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Warm filtered tone */\n private warmTone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n filterFreq = 800\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const filter = ctx.createBiquadFilter()\n const gain = ctx.createGain()\n\n osc.type = 'sine'\n osc.frequency.value = freq\n\n filter.type = 'lowpass'\n filter.frequency.value = filterFreq\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(filter).connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Shimmer - multiple soft tones */\n private shimmer(startTime: number, duration: number, baseFreq: number, vol: number): void {\n const freqs = [baseFreq, baseFreq * 1.5, baseFreq * 2]\n freqs.forEach((f, i) => {\n this.tone(startTime + i * 0.02, duration - i * 0.02, f, vol * (1 - i * 0.2))\n })\n }\n\n // ==========================================================================\n // HAPPY / PLEASANT FEELINGS\n // ==========================================================================\n\n private playJoyful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Double puff (excited exhale)\n this.puff(now, 0.08, 3000, 0.3)\n this.puff(now + 0.06, 0.1, 3500, 0.35)\n\n // Rising happy tones\n this.tone(now + 0.02, 0.15, 784, 0.25) // G5\n this.tone(now + 0.1, 0.2, 988, 0.3) // B5\n this.tone(now + 0.18, 0.25, 1175, 0.25) // D6\n }\n\n private playContent(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Gentle satisfied sigh\n this.puff(now, 0.2, 1500, 0.25)\n this.warmTone(now + 0.05, 0.3, 523, 0.2) // C5\n this.warmTone(now + 0.15, 0.35, 659, 0.15) // E5\n }\n\n private playExcited(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick ascending puffs\n this.puff(now, 0.06, 2500, 0.25)\n this.puff(now + 0.05, 0.06, 3000, 0.3)\n this.puff(now + 0.1, 0.08, 3500, 0.35)\n\n // Sparkly ascending tones\n this.tone(now + 0.02, 0.12, 880, 0.2)\n this.tone(now + 0.08, 0.12, 1047, 0.25)\n this.tone(now + 0.14, 0.15, 1319, 0.3)\n }\n\n private playProud(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Confident puff\n this.puff(now, 0.15, 1800, 0.3)\n\n // Strong rising chord\n this.tone(now + 0.05, 0.25, 523, 0.25) // C5\n this.tone(now + 0.08, 0.25, 659, 0.2) // E5\n this.tone(now + 0.11, 0.3, 784, 0.25) // G5\n }\n\n private playHopeful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Light ascending puff\n this.puff(now, 0.12, 2200, 0.2)\n\n // Gentle rising tone\n this.tone(now + 0.03, 0.3, 659, 0.2, 'sine', 880) // E5 -> A5\n }\n\n private playRelieved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long exhale\n this.puff(now, 0.25, 1200, 0.35)\n\n // Descending release\n this.warmTone(now + 0.1, 0.35, 659, 0.2) // E5\n this.warmTone(now + 0.25, 0.4, 523, 0.15) // C5\n }\n\n private playGrateful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm gentle puff\n this.puff(now, 0.15, 1500, 0.25)\n\n // Warm embracing tones\n this.warmTone(now + 0.05, 0.3, 440, 0.2) // A4\n this.warmTone(now + 0.15, 0.35, 523, 0.2) // C5\n this.warmTone(now + 0.25, 0.4, 659, 0.15) // E5\n }\n\n private playPeaceful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very soft puff\n this.puff(now, 0.3, 800, 0.15)\n\n // Gentle sustained tone\n this.warmTone(now + 0.1, 0.5, 392, 0.12, 500) // G4\n }\n\n private playPlayful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bouncy puffs\n this.puff(now, 0.05, 2800, 0.2)\n this.puff(now + 0.08, 0.05, 3200, 0.25)\n this.puff(now + 0.14, 0.06, 2800, 0.2)\n\n // Playful tones\n this.tone(now + 0.03, 0.1, 784, 0.2)\n this.tone(now + 0.1, 0.08, 988, 0.25)\n this.tone(now + 0.16, 0.12, 784, 0.2)\n }\n\n private playAmused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Little chuckle puffs\n this.puff(now, 0.04, 2500, 0.2)\n this.puff(now + 0.06, 0.04, 2800, 0.22)\n this.puff(now + 0.11, 0.05, 2600, 0.18)\n\n // Amused tone\n this.tone(now + 0.05, 0.15, 880, 0.15)\n }\n\n private playCurious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Questioning puff\n this.puff(now, 0.1, 2000, 0.2)\n\n // Rising questioning tone\n this.tone(now + 0.03, 0.2, 659, 0.2, 'sine', 880) // E5 -> A5 (question)\n }\n\n private playInspired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright puff\n this.puff(now, 0.1, 2500, 0.25)\n\n // Ascending shimmer\n this.shimmer(now + 0.05, 0.3, 523, 0.2)\n }\n\n private playConfident(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Solid puff\n this.puff(now, 0.12, 1500, 0.3)\n\n // Strong chord\n this.tone(now + 0.04, 0.2, 523, 0.25) // C5\n this.tone(now + 0.06, 0.22, 659, 0.2) // E5\n }\n\n private playLoved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm embrace puff\n this.puff(now, 0.2, 1000, 0.2)\n\n // Warm loving tones\n this.warmTone(now + 0.08, 0.4, 392, 0.18, 600) // G4\n this.warmTone(now + 0.2, 0.45, 494, 0.15, 600) // B4\n }\n\n private playComforted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft blanket puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Gentle descending comfort\n this.warmTone(now + 0.1, 0.35, 523, 0.15) // C5\n this.warmTone(now + 0.25, 0.4, 440, 0.12) // A4\n }\n\n private playEnergized(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick energetic puffs\n this.puff(now, 0.05, 3000, 0.25)\n this.puff(now + 0.04, 0.05, 3500, 0.28)\n\n // Bright ascending tones\n this.tone(now + 0.02, 0.1, 784, 0.2)\n this.tone(now + 0.08, 0.12, 988, 0.25)\n this.tone(now + 0.14, 0.15, 1175, 0.22)\n }\n\n private playCelebrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright celebratory chime\n this.puff(now, 0.08, 2500, 0.2)\n\n // Triumphant ascending arpeggio (C major -> resolve)\n this.tone(now + 0.02, 0.18, 523, 0.22) // C5\n this.tone(now + 0.08, 0.18, 659, 0.24) // E5\n this.tone(now + 0.14, 0.2, 784, 0.26) // G5\n this.tone(now + 0.22, 0.3, 1047, 0.22) // C6 - resolution\n\n // Warm shimmer on resolution\n this.shimmer(now + 0.25, 0.35, 523, 0.12)\n }\n\n // ==========================================================================\n // SAD / LOW FEELINGS\n // ==========================================================================\n\n private playSad(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy sigh\n this.puff(now, 0.3, 600, 0.25)\n\n // Descending sad tone\n this.warmTone(now + 0.1, 0.4, 392, 0.2, 400) // G4\n this.warmTone(now + 0.3, 0.45, 294, 0.15, 350) // D4\n }\n\n private playLonely(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Single isolated puff\n this.puff(now, 0.2, 700, 0.2)\n\n // Sparse, distant tone\n this.warmTone(now + 0.15, 0.5, 330, 0.12, 450) // E4\n }\n\n private playDisappointed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deflating puff\n this.puff(now, 0.25, 800, 0.25)\n\n // Falling tone\n this.tone(now + 0.08, 0.3, 523, 0.18, 'sine', 349) // C5 -> F4\n }\n\n private playMelancholic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful puff\n this.puff(now, 0.3, 700, 0.18)\n\n // Bittersweet tones\n this.warmTone(now + 0.1, 0.45, 440, 0.15, 500) // A4\n this.warmTone(now + 0.3, 0.5, 392, 0.12, 450) // G4\n }\n\n // ==========================================================================\n // ANXIOUS / FEARFUL FEELINGS\n // ==========================================================================\n\n private playAnxious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tight, quick puffs\n this.puff(now, 0.08, 1800, 0.2)\n this.puff(now + 0.12, 0.08, 1900, 0.22)\n\n // Uncertain wobble\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n const lfo = ctx.createOscillator()\n const lfoGain = ctx.createGain()\n\n osc.frequency.value = 440\n lfo.frequency.value = 8\n lfoGain.gain.value = 20\n\n lfo.connect(lfoGain).connect(osc.frequency)\n\n gain.gain.setValueAtTime(0, now)\n gain.gain.linearRampToValueAtTime(this.volume * 0.15, now + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, now + 0.25)\n\n osc.connect(gain).connect(ctx.destination)\n lfo.start(now)\n osc.start(now)\n osc.stop(now + 0.3)\n lfo.stop(now + 0.3)\n }\n\n private playWorried(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Hesitant puff\n this.puff(now, 0.15, 1200, 0.2)\n\n // Minor questioning tone\n this.tone(now + 0.05, 0.25, 349, 0.15, 'sine', 392) // F4 -> G4 (uncertain)\n }\n\n private playNervous(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick shallow puffs\n this.puff(now, 0.05, 2000, 0.18)\n this.puff(now + 0.08, 0.05, 2100, 0.18)\n this.puff(now + 0.15, 0.06, 2000, 0.16)\n\n // Trembling tone\n this.tone(now + 0.04, 0.2, 494, 0.12) // B4\n }\n\n private playStartled(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick sharp puff\n this.puff(now, 0.04, 3500, 0.3)\n\n // Quick high tone\n this.tone(now, 0.08, 1047, 0.25) // C6\n this.tone(now + 0.05, 0.15, 880, 0.15) // A5\n }\n\n // ==========================================================================\n // ANGRY / FRUSTRATED FEELINGS\n // ==========================================================================\n\n private playAnnoyed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Short frustrated puff\n this.puff(now, 0.1, 1000, 0.25)\n\n // Low rumble\n this.warmTone(now + 0.03, 0.2, 294, 0.18, 400) // D4\n }\n\n private playFrustrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tense puff\n this.puff(now, 0.12, 900, 0.28)\n\n // Blocked feeling\n this.tone(now + 0.04, 0.15, 349, 0.2) // F4\n this.tone(now + 0.12, 0.12, 330, 0.18) // E4\n }\n\n private playImpatient(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick tapping puffs\n this.puff(now, 0.04, 1500, 0.2)\n this.puff(now + 0.08, 0.04, 1500, 0.2)\n this.puff(now + 0.16, 0.04, 1500, 0.22)\n\n // Urgent tone\n this.tone(now + 0.06, 0.1, 523, 0.15)\n }\n\n // ==========================================================================\n // TIRED / DRAINED FEELINGS\n // ==========================================================================\n\n private playTired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy slow puff\n this.puff(now, 0.35, 500, 0.2)\n\n // Drooping tone\n this.warmTone(now + 0.1, 0.4, 330, 0.12, 350) // E4\n }\n\n private playExhausted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very slow, heavy exhale\n this.puff(now, 0.45, 400, 0.18)\n\n // Descending fade\n this.warmTone(now + 0.15, 0.5, 294, 0.1, 300) // D4\n }\n\n private playBored(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Flat sigh\n this.puff(now, 0.25, 600, 0.15)\n\n // Monotone\n this.warmTone(now + 0.1, 0.3, 349, 0.1, 400) // F4\n }\n\n // ==========================================================================\n // CALM / GROUNDED FEELINGS\n // ==========================================================================\n\n private playCalm(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Slow, peaceful puff\n this.puff(now, 0.3, 600, 0.12)\n\n // Sustained gentle tone\n this.warmTone(now + 0.1, 0.5, 392, 0.1, 500) // G4\n }\n\n private playRelaxed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long soft exhale\n this.puff(now, 0.35, 700, 0.15)\n\n // Gentle descending\n this.warmTone(now + 0.15, 0.45, 440, 0.1) // A4\n this.warmTone(now + 0.35, 0.5, 392, 0.08) // G4\n }\n\n private playGrounded(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deep centered puff\n this.puff(now, 0.25, 500, 0.2)\n\n // Low stable tone\n this.warmTone(now + 0.1, 0.4, 262, 0.15, 350) // C4\n }\n\n private playSafe(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft enveloping puff\n this.puff(now, 0.3, 700, 0.15)\n\n // Warm embracing tones\n this.warmTone(now + 0.1, 0.4, 349, 0.12) // F4\n this.warmTone(now + 0.25, 0.45, 440, 0.1) // A4\n }\n\n // ==========================================================================\n // CONNECTED / SOCIAL FEELINGS\n // ==========================================================================\n\n private playConnected(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm shared breath\n this.puff(now, 0.2, 1200, 0.18)\n\n // Harmonious tones\n this.warmTone(now + 0.08, 0.3, 440, 0.15) // A4\n this.warmTone(now + 0.12, 0.32, 523, 0.12) // C5\n }\n\n private playAppreciated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Touched puff\n this.puff(now, 0.15, 1500, 0.2)\n\n // Warm ascending\n this.warmTone(now + 0.05, 0.25, 440, 0.15)\n this.warmTone(now + 0.15, 0.3, 523, 0.18)\n }\n\n private playSupported(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Held puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Stable harmonies\n this.warmTone(now + 0.1, 0.35, 349, 0.12)\n this.warmTone(now + 0.15, 0.4, 440, 0.1)\n }\n\n // ==========================================================================\n // MIXED / COMPLICATED FEELINGS\n // ==========================================================================\n\n private playNostalgic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful distant puff\n this.puff(now, 0.25, 800, 0.15)\n\n // Bittersweet memory tones\n this.warmTone(now + 0.1, 0.4, 440, 0.12, 500) // A4\n this.warmTone(now + 0.3, 0.45, 392, 0.1, 450) // G4\n }\n\n private playSurprised(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick gasp\n this.puff(now, 0.06, 2800, 0.25)\n\n // Rising tone\n this.tone(now + 0.02, 0.15, 659, 0.2, 'sine', 988) // E5 -> B5\n }\n\n private playAwestruck(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wonder-filled breath\n this.puff(now, 0.2, 1500, 0.2)\n\n // Ascending wonder\n this.shimmer(now + 0.08, 0.4, 440, 0.15)\n }\n\n private playConfused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Uncertain puff\n this.puff(now, 0.12, 1200, 0.18)\n\n // Questioning wobble\n this.tone(now + 0.04, 0.2, 440, 0.12, 'sine', 494) // A4 -> B4\n this.tone(now + 0.15, 0.15, 466, 0.1) // Bb4 (chromatic confusion)\n }\n\n // ==========================================================================\n // PUBLIC API\n // ==========================================================================\n\n /** Set volume (0.0 - 1.0) */\n setVolume(vol: number): void {\n this.volume = Math.max(0, Math.min(1, vol))\n }\n\n /** Get current volume */\n getVolume(): number {\n return this.volume\n }\n\n /** Mute all sounds */\n mute(): void {\n this.muted = true\n }\n\n /** Unmute sounds */\n unmute(): void {\n this.muted = false\n }\n\n /** Check if muted */\n isMuted(): boolean {\n return this.muted\n }\n\n /** Play a feeling */\n play(feeling: Feeling): void {\n if (this.muted) return\n\n // Map feelings to their sound methods\n const soundMap: Record<Feeling, () => void> = {\n // Happy\n joyful: () => this.playJoyful(),\n content: () => this.playContent(),\n excited: () => this.playExcited(),\n proud: () => this.playProud(),\n hopeful: () => this.playHopeful(),\n relieved: () => this.playRelieved(),\n grateful: () => this.playGrateful(),\n peaceful: () => this.playPeaceful(),\n playful: () => this.playPlayful(),\n amused: () => this.playAmused(),\n curious: () => this.playCurious(),\n inspired: () => this.playInspired(),\n confident: () => this.playConfident(),\n loved: () => this.playLoved(),\n comforted: () => this.playComforted(),\n energized: () => this.playEnergized(),\n celebrated: () => this.playCelebrated(),\n\n // Sad\n sad: () => this.playSad(),\n lonely: () => this.playLonely(),\n disappointed: () => this.playDisappointed(),\n heartbroken: () => this.playSad(), // Similar to sad\n grieving: () => this.playSad(),\n hopeless: () => this.playLonely(),\n empty: () => this.playLonely(),\n discouraged: () => this.playDisappointed(),\n melancholic: () => this.playMelancholic(),\n homesick: () => this.playNostalgic(),\n hurt: () => this.playSad(),\n miserable: () => this.playSad(),\n regretful: () => this.playMelancholic(),\n ashamed: () => this.playDisappointed(),\n inferior: () => this.playDisappointed(),\n\n // Anxious\n anxious: () => this.playAnxious(),\n worried: () => this.playWorried(),\n afraid: () => this.playAnxious(),\n terrified: () => this.playStartled(),\n panicked: () => this.playStartled(),\n nervous: () => this.playNervous(),\n uneasy: () => this.playWorried(),\n insecure: () => this.playNervous(),\n overwhelmed: () => this.playAnxious(),\n stressed: () => this.playAnxious(),\n tense: () => this.playAnxious(),\n apprehensive: () => this.playWorried(),\n startled: () => this.playStartled(),\n suspicious: () => this.playWorried(),\n vulnerable: () => this.playNervous(),\n\n // Angry\n annoyed: () => this.playAnnoyed(),\n irritated: () => this.playAnnoyed(),\n frustrated: () => this.playFrustrated(),\n angry: () => this.playFrustrated(),\n enraged: () => this.playFrustrated(),\n bitter: () => this.playFrustrated(),\n resentful: () => this.playAnnoyed(),\n jealous: () => this.playAnnoyed(),\n envious: () => this.playAnnoyed(),\n indignant: () => this.playFrustrated(),\n impatient: () => this.playImpatient(),\n hostile: () => this.playFrustrated(),\n contemptuous: () => this.playAnnoyed(),\n\n // Tired\n tired: () => this.playTired(),\n exhausted: () => this.playExhausted(),\n drained: () => this.playExhausted(),\n burnedOut: () => this.playExhausted(),\n numb: () => this.playExhausted(),\n bored: () => this.playBored(),\n unmotivated: () => this.playBored(),\n apathetic: () => this.playBored(),\n restless: () => this.playTired(),\n\n // Calm\n calm: () => this.playCalm(),\n relaxed: () => this.playRelaxed(),\n atEase: () => this.playRelaxed(),\n balanced: () => this.playCalm(),\n stable: () => this.playGrounded(),\n secure: () => this.playSafe(),\n safe: () => this.playSafe(),\n centered: () => this.playGrounded(),\n grounded: () => this.playGrounded(),\n accepting: () => this.playCalm(),\n\n // Connected\n connected: () => this.playConnected(),\n accepted: () => this.playAppreciated(),\n included: () => this.playConnected(),\n belonging: () => this.playConnected(),\n appreciated: () => this.playAppreciated(),\n valued: () => this.playAppreciated(),\n respected: () => this.playAppreciated(),\n supported: () => this.playSupported(),\n protective: () => this.playSupported(),\n compassionate: () => this.playConnected(),\n empathetic: () => this.playConnected(),\n\n // Mixed\n conflicted: () => this.playConfused(),\n confused: () => this.playConfused(),\n ambivalent: () => this.playConfused(),\n nostalgic: () => this.playNostalgic(),\n guilty: () => this.playDisappointed(),\n embarrassed: () => this.playNervous(),\n surprised: () => this.playSurprised(),\n shocked: () => this.playStartled(),\n awestruck: () => this.playAwestruck(),\n skeptical: () => this.playConfused(),\n }\n\n const playFn = soundMap[feeling]\n if (playFn) {\n playFn()\n }\n }\n\n /** Dispose audio context */\n dispose(): void {\n if (this.audioContext) {\n this.audioContext.close()\n this.audioContext = null\n }\n }\n}\n\n// ============================================================================\n// SINGLETON EXPORT\n// ============================================================================\n\n/** Global emotional sound player */\nexport const $sounds = new EmotionalSoundGenerator()\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audio-D-TZzpXF.cjs","names":[],"sources":["../src/audio/emotional-sounds.ts"],"sourcesContent":["/**\n * Schmancy Emotional Sound Library\n *\n * A curated collection of soft, elegant sounds organized by emotional categories.\n * Each sound is designed to be non-intrusive, emotionally evocative, and beautiful.\n *\n * Inspired by the gentle sounds of nature - soft air, gentle chimes, and warm tones.\n *\n * @example\n * ```typescript\n * import { $sounds } from '@schmancy/audio'\n *\n * // Play a feeling\n * $sounds.play('joyful')\n * $sounds.play('relieved')\n * $sounds.play('curious')\n *\n * // Adjust volume\n * $sounds.setVolume(0.2)\n *\n * // Mute/unmute\n * $sounds.mute()\n * $sounds.unmute()\n * ```\n */\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Happy / Pleasant feelings */\nexport type HappyFeeling =\n | 'joyful' | 'content' | 'excited' | 'proud' | 'hopeful'\n | 'relieved' | 'grateful' | 'peaceful' | 'playful' | 'amused'\n | 'curious' | 'inspired' | 'confident' | 'loved' | 'comforted' | 'energized'\n | 'celebrated'\n\n/** Sad / Low feelings */\nexport type SadFeeling =\n | 'sad' | 'lonely' | 'disappointed' | 'heartbroken' | 'grieving'\n | 'hopeless' | 'empty' | 'discouraged' | 'melancholic' | 'homesick'\n | 'hurt' | 'miserable' | 'regretful' | 'ashamed' | 'inferior'\n\n/** Anxious / Fearful feelings */\nexport type AnxiousFeeling =\n | 'anxious' | 'worried' | 'afraid' | 'terrified' | 'panicked'\n | 'nervous' | 'uneasy' | 'insecure' | 'overwhelmed' | 'stressed'\n | 'tense' | 'apprehensive' | 'startled' | 'suspicious' | 'vulnerable'\n\n/** Angry / Frustrated feelings */\nexport type AngryFeeling =\n | 'annoyed' | 'irritated' | 'frustrated' | 'angry' | 'enraged'\n | 'bitter' | 'resentful' | 'jealous' | 'envious' | 'indignant'\n | 'impatient' | 'hostile' | 'contemptuous'\n\n/** Tired / Drained feelings */\nexport type TiredFeeling =\n | 'tired' | 'exhausted' | 'drained' | 'burnedOut' | 'numb'\n | 'bored' | 'unmotivated' | 'apathetic' | 'restless'\n\n/** Calm / Grounded feelings */\nexport type CalmFeeling =\n | 'calm' | 'relaxed' | 'atEase' | 'balanced' | 'stable'\n | 'secure' | 'safe' | 'centered' | 'grounded' | 'accepting'\n\n/** Connected / Social feelings */\nexport type ConnectedFeeling =\n | 'connected' | 'accepted' | 'included' | 'belonging' | 'appreciated'\n | 'valued' | 'respected' | 'supported' | 'protective' | 'compassionate' | 'empathetic'\n\n/** Mixed / Complicated feelings */\nexport type MixedFeeling =\n | 'conflicted' | 'confused' | 'ambivalent' | 'nostalgic' | 'guilty'\n | 'embarrassed' | 'surprised' | 'shocked' | 'awestruck' | 'skeptical'\n\n/** All feelings */\nexport type Feeling =\n | HappyFeeling | SadFeeling | AnxiousFeeling | AngryFeeling\n | TiredFeeling | CalmFeeling | ConnectedFeeling | MixedFeeling\n\n// FeelingCategory is defined in ../types/mood-audio.types.ts and re-exported\n// from ./index.ts — the canonical source.\n\n// ============================================================================\n// SOUND GENERATOR\n// ============================================================================\n\n/**\n * Emotional Sound Generator\n * Creates soft, beautiful sounds using Web Audio API\n */\nexport class EmotionalSoundGenerator {\n private audioContext: AudioContext | null = null\n private volume = 0.15\n private muted = false\n\n private getContext(): AudioContext {\n if (!this.audioContext) {\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n this.audioContext = new AudioContextClass()\n }\n // Resume if suspended (autoplay policy)\n if (this.audioContext.state === 'suspended') {\n this.audioContext.resume()\n }\n return this.audioContext\n }\n\n // ==========================================================================\n // CORE SOUND PRIMITIVES\n // ==========================================================================\n\n /** Soft air puff - the foundation of our sound palette */\n private puff(startTime: number, duration: number, freq: number, vol: number): void {\n const ctx = this.getContext()\n const bufferSize = Math.floor(ctx.sampleRate * duration)\n const buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n const data = buffer.getChannelData(0)\n\n for (let i = 0; i < bufferSize; i++) {\n data[i] = Math.random() * 2 - 1\n }\n\n const noise = ctx.createBufferSource()\n noise.buffer = buffer\n\n const filter = ctx.createBiquadFilter()\n filter.type = 'bandpass'\n filter.frequency.value = freq\n filter.Q.value = 0.7\n\n const gain = ctx.createGain()\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.015)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n noise.connect(filter).connect(gain).connect(ctx.destination)\n noise.start(startTime)\n noise.stop(startTime + duration)\n }\n\n /** Gentle tone with envelope */\n private tone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n type: OscillatorType = 'sine',\n freqEnd?: number\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n\n osc.type = type\n osc.frequency.setValueAtTime(freq, startTime)\n if (freqEnd) {\n osc.frequency.exponentialRampToValueAtTime(freqEnd, startTime + duration * 0.8)\n }\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.02)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Warm filtered tone */\n private warmTone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n filterFreq = 800\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const filter = ctx.createBiquadFilter()\n const gain = ctx.createGain()\n\n osc.type = 'sine'\n osc.frequency.value = freq\n\n filter.type = 'lowpass'\n filter.frequency.value = filterFreq\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(filter).connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Shimmer - multiple soft tones */\n private shimmer(startTime: number, duration: number, baseFreq: number, vol: number): void {\n const freqs = [baseFreq, baseFreq * 1.5, baseFreq * 2]\n freqs.forEach((f, i) => {\n this.tone(startTime + i * 0.02, duration - i * 0.02, f, vol * (1 - i * 0.2))\n })\n }\n\n // ==========================================================================\n // HAPPY / PLEASANT FEELINGS\n // ==========================================================================\n\n private playJoyful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Double puff (excited exhale)\n this.puff(now, 0.08, 3000, 0.3)\n this.puff(now + 0.06, 0.1, 3500, 0.35)\n\n // Rising happy tones\n this.tone(now + 0.02, 0.15, 784, 0.25) // G5\n this.tone(now + 0.1, 0.2, 988, 0.3) // B5\n this.tone(now + 0.18, 0.25, 1175, 0.25) // D6\n }\n\n private playContent(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Gentle satisfied sigh\n this.puff(now, 0.2, 1500, 0.25)\n this.warmTone(now + 0.05, 0.3, 523, 0.2) // C5\n this.warmTone(now + 0.15, 0.35, 659, 0.15) // E5\n }\n\n private playExcited(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick ascending puffs\n this.puff(now, 0.06, 2500, 0.25)\n this.puff(now + 0.05, 0.06, 3000, 0.3)\n this.puff(now + 0.1, 0.08, 3500, 0.35)\n\n // Sparkly ascending tones\n this.tone(now + 0.02, 0.12, 880, 0.2)\n this.tone(now + 0.08, 0.12, 1047, 0.25)\n this.tone(now + 0.14, 0.15, 1319, 0.3)\n }\n\n private playProud(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Confident puff\n this.puff(now, 0.15, 1800, 0.3)\n\n // Strong rising chord\n this.tone(now + 0.05, 0.25, 523, 0.25) // C5\n this.tone(now + 0.08, 0.25, 659, 0.2) // E5\n this.tone(now + 0.11, 0.3, 784, 0.25) // G5\n }\n\n private playHopeful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Light ascending puff\n this.puff(now, 0.12, 2200, 0.2)\n\n // Gentle rising tone\n this.tone(now + 0.03, 0.3, 659, 0.2, 'sine', 880) // E5 -> A5\n }\n\n private playRelieved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long exhale\n this.puff(now, 0.25, 1200, 0.35)\n\n // Descending release\n this.warmTone(now + 0.1, 0.35, 659, 0.2) // E5\n this.warmTone(now + 0.25, 0.4, 523, 0.15) // C5\n }\n\n private playGrateful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm gentle puff\n this.puff(now, 0.15, 1500, 0.25)\n\n // Warm embracing tones\n this.warmTone(now + 0.05, 0.3, 440, 0.2) // A4\n this.warmTone(now + 0.15, 0.35, 523, 0.2) // C5\n this.warmTone(now + 0.25, 0.4, 659, 0.15) // E5\n }\n\n private playPeaceful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very soft puff\n this.puff(now, 0.3, 800, 0.15)\n\n // Gentle sustained tone\n this.warmTone(now + 0.1, 0.5, 392, 0.12, 500) // G4\n }\n\n private playPlayful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bouncy puffs\n this.puff(now, 0.05, 2800, 0.2)\n this.puff(now + 0.08, 0.05, 3200, 0.25)\n this.puff(now + 0.14, 0.06, 2800, 0.2)\n\n // Playful tones\n this.tone(now + 0.03, 0.1, 784, 0.2)\n this.tone(now + 0.1, 0.08, 988, 0.25)\n this.tone(now + 0.16, 0.12, 784, 0.2)\n }\n\n private playAmused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Little chuckle puffs\n this.puff(now, 0.04, 2500, 0.2)\n this.puff(now + 0.06, 0.04, 2800, 0.22)\n this.puff(now + 0.11, 0.05, 2600, 0.18)\n\n // Amused tone\n this.tone(now + 0.05, 0.15, 880, 0.15)\n }\n\n private playCurious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Questioning puff\n this.puff(now, 0.1, 2000, 0.2)\n\n // Rising questioning tone\n this.tone(now + 0.03, 0.2, 659, 0.2, 'sine', 880) // E5 -> A5 (question)\n }\n\n private playInspired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright puff\n this.puff(now, 0.1, 2500, 0.25)\n\n // Ascending shimmer\n this.shimmer(now + 0.05, 0.3, 523, 0.2)\n }\n\n private playConfident(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Solid puff\n this.puff(now, 0.12, 1500, 0.3)\n\n // Strong chord\n this.tone(now + 0.04, 0.2, 523, 0.25) // C5\n this.tone(now + 0.06, 0.22, 659, 0.2) // E5\n }\n\n private playLoved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm embrace puff\n this.puff(now, 0.2, 1000, 0.2)\n\n // Warm loving tones\n this.warmTone(now + 0.08, 0.4, 392, 0.18, 600) // G4\n this.warmTone(now + 0.2, 0.45, 494, 0.15, 600) // B4\n }\n\n private playComforted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft blanket puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Gentle descending comfort\n this.warmTone(now + 0.1, 0.35, 523, 0.15) // C5\n this.warmTone(now + 0.25, 0.4, 440, 0.12) // A4\n }\n\n private playEnergized(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick energetic puffs\n this.puff(now, 0.05, 3000, 0.25)\n this.puff(now + 0.04, 0.05, 3500, 0.28)\n\n // Bright ascending tones\n this.tone(now + 0.02, 0.1, 784, 0.2)\n this.tone(now + 0.08, 0.12, 988, 0.25)\n this.tone(now + 0.14, 0.15, 1175, 0.22)\n }\n\n private playCelebrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright celebratory chime\n this.puff(now, 0.08, 2500, 0.2)\n\n // Triumphant ascending arpeggio (C major -> resolve)\n this.tone(now + 0.02, 0.18, 523, 0.22) // C5\n this.tone(now + 0.08, 0.18, 659, 0.24) // E5\n this.tone(now + 0.14, 0.2, 784, 0.26) // G5\n this.tone(now + 0.22, 0.3, 1047, 0.22) // C6 - resolution\n\n // Warm shimmer on resolution\n this.shimmer(now + 0.25, 0.35, 523, 0.12)\n }\n\n // ==========================================================================\n // SAD / LOW FEELINGS\n // ==========================================================================\n\n private playSad(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy sigh\n this.puff(now, 0.3, 600, 0.25)\n\n // Descending sad tone\n this.warmTone(now + 0.1, 0.4, 392, 0.2, 400) // G4\n this.warmTone(now + 0.3, 0.45, 294, 0.15, 350) // D4\n }\n\n private playLonely(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Single isolated puff\n this.puff(now, 0.2, 700, 0.2)\n\n // Sparse, distant tone\n this.warmTone(now + 0.15, 0.5, 330, 0.12, 450) // E4\n }\n\n private playDisappointed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deflating puff\n this.puff(now, 0.25, 800, 0.25)\n\n // Falling tone\n this.tone(now + 0.08, 0.3, 523, 0.18, 'sine', 349) // C5 -> F4\n }\n\n private playMelancholic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful puff\n this.puff(now, 0.3, 700, 0.18)\n\n // Bittersweet tones\n this.warmTone(now + 0.1, 0.45, 440, 0.15, 500) // A4\n this.warmTone(now + 0.3, 0.5, 392, 0.12, 450) // G4\n }\n\n // ==========================================================================\n // ANXIOUS / FEARFUL FEELINGS\n // ==========================================================================\n\n private playAnxious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tight, quick puffs\n this.puff(now, 0.08, 1800, 0.2)\n this.puff(now + 0.12, 0.08, 1900, 0.22)\n\n // Uncertain wobble\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n const lfo = ctx.createOscillator()\n const lfoGain = ctx.createGain()\n\n osc.frequency.value = 440\n lfo.frequency.value = 8\n lfoGain.gain.value = 20\n\n lfo.connect(lfoGain).connect(osc.frequency)\n\n gain.gain.setValueAtTime(0, now)\n gain.gain.linearRampToValueAtTime(this.volume * 0.15, now + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, now + 0.25)\n\n osc.connect(gain).connect(ctx.destination)\n lfo.start(now)\n osc.start(now)\n osc.stop(now + 0.3)\n lfo.stop(now + 0.3)\n }\n\n private playWorried(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Hesitant puff\n this.puff(now, 0.15, 1200, 0.2)\n\n // Minor questioning tone\n this.tone(now + 0.05, 0.25, 349, 0.15, 'sine', 392) // F4 -> G4 (uncertain)\n }\n\n private playNervous(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick shallow puffs\n this.puff(now, 0.05, 2000, 0.18)\n this.puff(now + 0.08, 0.05, 2100, 0.18)\n this.puff(now + 0.15, 0.06, 2000, 0.16)\n\n // Trembling tone\n this.tone(now + 0.04, 0.2, 494, 0.12) // B4\n }\n\n private playStartled(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick sharp puff\n this.puff(now, 0.04, 3500, 0.3)\n\n // Quick high tone\n this.tone(now, 0.08, 1047, 0.25) // C6\n this.tone(now + 0.05, 0.15, 880, 0.15) // A5\n }\n\n // ==========================================================================\n // ANGRY / FRUSTRATED FEELINGS\n // ==========================================================================\n\n private playAnnoyed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Short frustrated puff\n this.puff(now, 0.1, 1000, 0.25)\n\n // Low rumble\n this.warmTone(now + 0.03, 0.2, 294, 0.18, 400) // D4\n }\n\n private playFrustrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tense puff\n this.puff(now, 0.12, 900, 0.28)\n\n // Blocked feeling\n this.tone(now + 0.04, 0.15, 349, 0.2) // F4\n this.tone(now + 0.12, 0.12, 330, 0.18) // E4\n }\n\n private playImpatient(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick tapping puffs\n this.puff(now, 0.04, 1500, 0.2)\n this.puff(now + 0.08, 0.04, 1500, 0.2)\n this.puff(now + 0.16, 0.04, 1500, 0.22)\n\n // Urgent tone\n this.tone(now + 0.06, 0.1, 523, 0.15)\n }\n\n // ==========================================================================\n // TIRED / DRAINED FEELINGS\n // ==========================================================================\n\n private playTired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy slow puff\n this.puff(now, 0.35, 500, 0.2)\n\n // Drooping tone\n this.warmTone(now + 0.1, 0.4, 330, 0.12, 350) // E4\n }\n\n private playExhausted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very slow, heavy exhale\n this.puff(now, 0.45, 400, 0.18)\n\n // Descending fade\n this.warmTone(now + 0.15, 0.5, 294, 0.1, 300) // D4\n }\n\n private playBored(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Flat sigh\n this.puff(now, 0.25, 600, 0.15)\n\n // Monotone\n this.warmTone(now + 0.1, 0.3, 349, 0.1, 400) // F4\n }\n\n // ==========================================================================\n // CALM / GROUNDED FEELINGS\n // ==========================================================================\n\n private playCalm(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Slow, peaceful puff\n this.puff(now, 0.3, 600, 0.12)\n\n // Sustained gentle tone\n this.warmTone(now + 0.1, 0.5, 392, 0.1, 500) // G4\n }\n\n private playRelaxed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long soft exhale\n this.puff(now, 0.35, 700, 0.15)\n\n // Gentle descending\n this.warmTone(now + 0.15, 0.45, 440, 0.1) // A4\n this.warmTone(now + 0.35, 0.5, 392, 0.08) // G4\n }\n\n private playGrounded(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deep centered puff\n this.puff(now, 0.25, 500, 0.2)\n\n // Low stable tone\n this.warmTone(now + 0.1, 0.4, 262, 0.15, 350) // C4\n }\n\n private playSafe(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft enveloping puff\n this.puff(now, 0.3, 700, 0.15)\n\n // Warm embracing tones\n this.warmTone(now + 0.1, 0.4, 349, 0.12) // F4\n this.warmTone(now + 0.25, 0.45, 440, 0.1) // A4\n }\n\n // ==========================================================================\n // CONNECTED / SOCIAL FEELINGS\n // ==========================================================================\n\n private playConnected(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm shared breath\n this.puff(now, 0.2, 1200, 0.18)\n\n // Harmonious tones\n this.warmTone(now + 0.08, 0.3, 440, 0.15) // A4\n this.warmTone(now + 0.12, 0.32, 523, 0.12) // C5\n }\n\n private playAppreciated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Touched puff\n this.puff(now, 0.15, 1500, 0.2)\n\n // Warm ascending\n this.warmTone(now + 0.05, 0.25, 440, 0.15)\n this.warmTone(now + 0.15, 0.3, 523, 0.18)\n }\n\n private playSupported(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Held puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Stable harmonies\n this.warmTone(now + 0.1, 0.35, 349, 0.12)\n this.warmTone(now + 0.15, 0.4, 440, 0.1)\n }\n\n // ==========================================================================\n // MIXED / COMPLICATED FEELINGS\n // ==========================================================================\n\n private playNostalgic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful distant puff\n this.puff(now, 0.25, 800, 0.15)\n\n // Bittersweet memory tones\n this.warmTone(now + 0.1, 0.4, 440, 0.12, 500) // A4\n this.warmTone(now + 0.3, 0.45, 392, 0.1, 450) // G4\n }\n\n private playSurprised(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick gasp\n this.puff(now, 0.06, 2800, 0.25)\n\n // Rising tone\n this.tone(now + 0.02, 0.15, 659, 0.2, 'sine', 988) // E5 -> B5\n }\n\n private playAwestruck(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wonder-filled breath\n this.puff(now, 0.2, 1500, 0.2)\n\n // Ascending wonder\n this.shimmer(now + 0.08, 0.4, 440, 0.15)\n }\n\n private playConfused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Uncertain puff\n this.puff(now, 0.12, 1200, 0.18)\n\n // Questioning wobble\n this.tone(now + 0.04, 0.2, 440, 0.12, 'sine', 494) // A4 -> B4\n this.tone(now + 0.15, 0.15, 466, 0.1) // Bb4 (chromatic confusion)\n }\n\n // ==========================================================================\n // PUBLIC API\n // ==========================================================================\n\n /** Set volume (0.0 - 1.0) */\n setVolume(vol: number): void {\n this.volume = Math.max(0, Math.min(1, vol))\n }\n\n /** Get current volume */\n getVolume(): number {\n return this.volume\n }\n\n /** Mute all sounds */\n mute(): void {\n this.muted = true\n }\n\n /** Unmute sounds */\n unmute(): void {\n this.muted = false\n }\n\n /** Check if muted */\n isMuted(): boolean {\n return this.muted\n }\n\n /** Play a feeling */\n play(feeling: Feeling): void {\n if (this.muted) return\n\n // Map feelings to their sound methods\n const soundMap: Record<Feeling, () => void> = {\n // Happy\n joyful: () => this.playJoyful(),\n content: () => this.playContent(),\n excited: () => this.playExcited(),\n proud: () => this.playProud(),\n hopeful: () => this.playHopeful(),\n relieved: () => this.playRelieved(),\n grateful: () => this.playGrateful(),\n peaceful: () => this.playPeaceful(),\n playful: () => this.playPlayful(),\n amused: () => this.playAmused(),\n curious: () => this.playCurious(),\n inspired: () => this.playInspired(),\n confident: () => this.playConfident(),\n loved: () => this.playLoved(),\n comforted: () => this.playComforted(),\n energized: () => this.playEnergized(),\n celebrated: () => this.playCelebrated(),\n\n // Sad\n sad: () => this.playSad(),\n lonely: () => this.playLonely(),\n disappointed: () => this.playDisappointed(),\n heartbroken: () => this.playSad(), // Similar to sad\n grieving: () => this.playSad(),\n hopeless: () => this.playLonely(),\n empty: () => this.playLonely(),\n discouraged: () => this.playDisappointed(),\n melancholic: () => this.playMelancholic(),\n homesick: () => this.playNostalgic(),\n hurt: () => this.playSad(),\n miserable: () => this.playSad(),\n regretful: () => this.playMelancholic(),\n ashamed: () => this.playDisappointed(),\n inferior: () => this.playDisappointed(),\n\n // Anxious\n anxious: () => this.playAnxious(),\n worried: () => this.playWorried(),\n afraid: () => this.playAnxious(),\n terrified: () => this.playStartled(),\n panicked: () => this.playStartled(),\n nervous: () => this.playNervous(),\n uneasy: () => this.playWorried(),\n insecure: () => this.playNervous(),\n overwhelmed: () => this.playAnxious(),\n stressed: () => this.playAnxious(),\n tense: () => this.playAnxious(),\n apprehensive: () => this.playWorried(),\n startled: () => this.playStartled(),\n suspicious: () => this.playWorried(),\n vulnerable: () => this.playNervous(),\n\n // Angry\n annoyed: () => this.playAnnoyed(),\n irritated: () => this.playAnnoyed(),\n frustrated: () => this.playFrustrated(),\n angry: () => this.playFrustrated(),\n enraged: () => this.playFrustrated(),\n bitter: () => this.playFrustrated(),\n resentful: () => this.playAnnoyed(),\n jealous: () => this.playAnnoyed(),\n envious: () => this.playAnnoyed(),\n indignant: () => this.playFrustrated(),\n impatient: () => this.playImpatient(),\n hostile: () => this.playFrustrated(),\n contemptuous: () => this.playAnnoyed(),\n\n // Tired\n tired: () => this.playTired(),\n exhausted: () => this.playExhausted(),\n drained: () => this.playExhausted(),\n burnedOut: () => this.playExhausted(),\n numb: () => this.playExhausted(),\n bored: () => this.playBored(),\n unmotivated: () => this.playBored(),\n apathetic: () => this.playBored(),\n restless: () => this.playTired(),\n\n // Calm\n calm: () => this.playCalm(),\n relaxed: () => this.playRelaxed(),\n atEase: () => this.playRelaxed(),\n balanced: () => this.playCalm(),\n stable: () => this.playGrounded(),\n secure: () => this.playSafe(),\n safe: () => this.playSafe(),\n centered: () => this.playGrounded(),\n grounded: () => this.playGrounded(),\n accepting: () => this.playCalm(),\n\n // Connected\n connected: () => this.playConnected(),\n accepted: () => this.playAppreciated(),\n included: () => this.playConnected(),\n belonging: () => this.playConnected(),\n appreciated: () => this.playAppreciated(),\n valued: () => this.playAppreciated(),\n respected: () => this.playAppreciated(),\n supported: () => this.playSupported(),\n protective: () => this.playSupported(),\n compassionate: () => this.playConnected(),\n empathetic: () => this.playConnected(),\n\n // Mixed\n conflicted: () => this.playConfused(),\n confused: () => this.playConfused(),\n ambivalent: () => this.playConfused(),\n nostalgic: () => this.playNostalgic(),\n guilty: () => this.playDisappointed(),\n embarrassed: () => this.playNervous(),\n surprised: () => this.playSurprised(),\n shocked: () => this.playStartled(),\n awestruck: () => this.playAwestruck(),\n skeptical: () => this.playConfused(),\n }\n\n const playFn = soundMap[feeling]\n if (playFn) {\n playFn()\n }\n }\n\n /** Dispose audio context */\n dispose(): void {\n if (this.audioContext) {\n this.audioContext.close()\n this.audioContext = null\n }\n }\n}\n\n// ============================================================================\n// SINGLETON EXPORT\n// ============================================================================\n\n/** Global emotional sound player */\nexport const $sounds = new EmotionalSoundGenerator()\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-DcXphulJ.js","names":[],"sources":["../src/audio/emotional-sounds.ts"],"sourcesContent":["/**\n * Schmancy Emotional Sound Library\n *\n * A curated collection of soft, elegant sounds organized by emotional categories.\n * Each sound is designed to be non-intrusive, emotionally evocative, and beautiful.\n *\n * Inspired by the gentle sounds of nature - soft air, gentle chimes, and warm tones.\n *\n * @example\n * ```typescript\n * import { $sounds } from '@schmancy/audio'\n *\n * // Play a feeling\n * $sounds.play('joyful')\n * $sounds.play('relieved')\n * $sounds.play('curious')\n *\n * // Adjust volume\n * $sounds.setVolume(0.2)\n *\n * // Mute/unmute\n * $sounds.mute()\n * $sounds.unmute()\n * ```\n */\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Happy / Pleasant feelings */\nexport type HappyFeeling =\n | 'joyful' | 'content' | 'excited' | 'proud' | 'hopeful'\n | 'relieved' | 'grateful' | 'peaceful' | 'playful' | 'amused'\n | 'curious' | 'inspired' | 'confident' | 'loved' | 'comforted' | 'energized'\n | 'celebrated'\n\n/** Sad / Low feelings */\nexport type SadFeeling =\n | 'sad' | 'lonely' | 'disappointed' | 'heartbroken' | 'grieving'\n | 'hopeless' | 'empty' | 'discouraged' | 'melancholic' | 'homesick'\n | 'hurt' | 'miserable' | 'regretful' | 'ashamed' | 'inferior'\n\n/** Anxious / Fearful feelings */\nexport type AnxiousFeeling =\n | 'anxious' | 'worried' | 'afraid' | 'terrified' | 'panicked'\n | 'nervous' | 'uneasy' | 'insecure' | 'overwhelmed' | 'stressed'\n | 'tense' | 'apprehensive' | 'startled' | 'suspicious' | 'vulnerable'\n\n/** Angry / Frustrated feelings */\nexport type AngryFeeling =\n | 'annoyed' | 'irritated' | 'frustrated' | 'angry' | 'enraged'\n | 'bitter' | 'resentful' | 'jealous' | 'envious' | 'indignant'\n | 'impatient' | 'hostile' | 'contemptuous'\n\n/** Tired / Drained feelings */\nexport type TiredFeeling =\n | 'tired' | 'exhausted' | 'drained' | 'burnedOut' | 'numb'\n | 'bored' | 'unmotivated' | 'apathetic' | 'restless'\n\n/** Calm / Grounded feelings */\nexport type CalmFeeling =\n | 'calm' | 'relaxed' | 'atEase' | 'balanced' | 'stable'\n | 'secure' | 'safe' | 'centered' | 'grounded' | 'accepting'\n\n/** Connected / Social feelings */\nexport type ConnectedFeeling =\n | 'connected' | 'accepted' | 'included' | 'belonging' | 'appreciated'\n | 'valued' | 'respected' | 'supported' | 'protective' | 'compassionate' | 'empathetic'\n\n/** Mixed / Complicated feelings */\nexport type MixedFeeling =\n | 'conflicted' | 'confused' | 'ambivalent' | 'nostalgic' | 'guilty'\n | 'embarrassed' | 'surprised' | 'shocked' | 'awestruck' | 'skeptical'\n\n/** All feelings */\nexport type Feeling =\n | HappyFeeling | SadFeeling | AnxiousFeeling | AngryFeeling\n | TiredFeeling | CalmFeeling | ConnectedFeeling | MixedFeeling\n\n// FeelingCategory is defined in ../types/mood-audio.types.ts and re-exported\n// from ./index.ts — the canonical source.\n\n// ============================================================================\n// SOUND GENERATOR\n// ============================================================================\n\n/**\n * Emotional Sound Generator\n * Creates soft, beautiful sounds using Web Audio API\n */\nexport class EmotionalSoundGenerator {\n private audioContext: AudioContext | null = null\n private volume = 0.15\n private muted = false\n\n private getContext(): AudioContext {\n if (!this.audioContext) {\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n this.audioContext = new AudioContextClass()\n }\n // Resume if suspended (autoplay policy)\n if (this.audioContext.state === 'suspended') {\n this.audioContext.resume()\n }\n return this.audioContext\n }\n\n // ==========================================================================\n // CORE SOUND PRIMITIVES\n // ==========================================================================\n\n /** Soft air puff - the foundation of our sound palette */\n private puff(startTime: number, duration: number, freq: number, vol: number): void {\n const ctx = this.getContext()\n const bufferSize = Math.floor(ctx.sampleRate * duration)\n const buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n const data = buffer.getChannelData(0)\n\n for (let i = 0; i < bufferSize; i++) {\n data[i] = Math.random() * 2 - 1\n }\n\n const noise = ctx.createBufferSource()\n noise.buffer = buffer\n\n const filter = ctx.createBiquadFilter()\n filter.type = 'bandpass'\n filter.frequency.value = freq\n filter.Q.value = 0.7\n\n const gain = ctx.createGain()\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.015)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n noise.connect(filter).connect(gain).connect(ctx.destination)\n noise.start(startTime)\n noise.stop(startTime + duration)\n }\n\n /** Gentle tone with envelope */\n private tone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n type: OscillatorType = 'sine',\n freqEnd?: number\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n\n osc.type = type\n osc.frequency.setValueAtTime(freq, startTime)\n if (freqEnd) {\n osc.frequency.exponentialRampToValueAtTime(freqEnd, startTime + duration * 0.8)\n }\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.02)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Warm filtered tone */\n private warmTone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n filterFreq = 800\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const filter = ctx.createBiquadFilter()\n const gain = ctx.createGain()\n\n osc.type = 'sine'\n osc.frequency.value = freq\n\n filter.type = 'lowpass'\n filter.frequency.value = filterFreq\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(filter).connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Shimmer - multiple soft tones */\n private shimmer(startTime: number, duration: number, baseFreq: number, vol: number): void {\n const freqs = [baseFreq, baseFreq * 1.5, baseFreq * 2]\n freqs.forEach((f, i) => {\n this.tone(startTime + i * 0.02, duration - i * 0.02, f, vol * (1 - i * 0.2))\n })\n }\n\n // ==========================================================================\n // HAPPY / PLEASANT FEELINGS\n // ==========================================================================\n\n private playJoyful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Double puff (excited exhale)\n this.puff(now, 0.08, 3000, 0.3)\n this.puff(now + 0.06, 0.1, 3500, 0.35)\n\n // Rising happy tones\n this.tone(now + 0.02, 0.15, 784, 0.25) // G5\n this.tone(now + 0.1, 0.2, 988, 0.3) // B5\n this.tone(now + 0.18, 0.25, 1175, 0.25) // D6\n }\n\n private playContent(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Gentle satisfied sigh\n this.puff(now, 0.2, 1500, 0.25)\n this.warmTone(now + 0.05, 0.3, 523, 0.2) // C5\n this.warmTone(now + 0.15, 0.35, 659, 0.15) // E5\n }\n\n private playExcited(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick ascending puffs\n this.puff(now, 0.06, 2500, 0.25)\n this.puff(now + 0.05, 0.06, 3000, 0.3)\n this.puff(now + 0.1, 0.08, 3500, 0.35)\n\n // Sparkly ascending tones\n this.tone(now + 0.02, 0.12, 880, 0.2)\n this.tone(now + 0.08, 0.12, 1047, 0.25)\n this.tone(now + 0.14, 0.15, 1319, 0.3)\n }\n\n private playProud(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Confident puff\n this.puff(now, 0.15, 1800, 0.3)\n\n // Strong rising chord\n this.tone(now + 0.05, 0.25, 523, 0.25) // C5\n this.tone(now + 0.08, 0.25, 659, 0.2) // E5\n this.tone(now + 0.11, 0.3, 784, 0.25) // G5\n }\n\n private playHopeful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Light ascending puff\n this.puff(now, 0.12, 2200, 0.2)\n\n // Gentle rising tone\n this.tone(now + 0.03, 0.3, 659, 0.2, 'sine', 880) // E5 -> A5\n }\n\n private playRelieved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long exhale\n this.puff(now, 0.25, 1200, 0.35)\n\n // Descending release\n this.warmTone(now + 0.1, 0.35, 659, 0.2) // E5\n this.warmTone(now + 0.25, 0.4, 523, 0.15) // C5\n }\n\n private playGrateful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm gentle puff\n this.puff(now, 0.15, 1500, 0.25)\n\n // Warm embracing tones\n this.warmTone(now + 0.05, 0.3, 440, 0.2) // A4\n this.warmTone(now + 0.15, 0.35, 523, 0.2) // C5\n this.warmTone(now + 0.25, 0.4, 659, 0.15) // E5\n }\n\n private playPeaceful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very soft puff\n this.puff(now, 0.3, 800, 0.15)\n\n // Gentle sustained tone\n this.warmTone(now + 0.1, 0.5, 392, 0.12, 500) // G4\n }\n\n private playPlayful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bouncy puffs\n this.puff(now, 0.05, 2800, 0.2)\n this.puff(now + 0.08, 0.05, 3200, 0.25)\n this.puff(now + 0.14, 0.06, 2800, 0.2)\n\n // Playful tones\n this.tone(now + 0.03, 0.1, 784, 0.2)\n this.tone(now + 0.1, 0.08, 988, 0.25)\n this.tone(now + 0.16, 0.12, 784, 0.2)\n }\n\n private playAmused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Little chuckle puffs\n this.puff(now, 0.04, 2500, 0.2)\n this.puff(now + 0.06, 0.04, 2800, 0.22)\n this.puff(now + 0.11, 0.05, 2600, 0.18)\n\n // Amused tone\n this.tone(now + 0.05, 0.15, 880, 0.15)\n }\n\n private playCurious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Questioning puff\n this.puff(now, 0.1, 2000, 0.2)\n\n // Rising questioning tone\n this.tone(now + 0.03, 0.2, 659, 0.2, 'sine', 880) // E5 -> A5 (question)\n }\n\n private playInspired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright puff\n this.puff(now, 0.1, 2500, 0.25)\n\n // Ascending shimmer\n this.shimmer(now + 0.05, 0.3, 523, 0.2)\n }\n\n private playConfident(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Solid puff\n this.puff(now, 0.12, 1500, 0.3)\n\n // Strong chord\n this.tone(now + 0.04, 0.2, 523, 0.25) // C5\n this.tone(now + 0.06, 0.22, 659, 0.2) // E5\n }\n\n private playLoved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm embrace puff\n this.puff(now, 0.2, 1000, 0.2)\n\n // Warm loving tones\n this.warmTone(now + 0.08, 0.4, 392, 0.18, 600) // G4\n this.warmTone(now + 0.2, 0.45, 494, 0.15, 600) // B4\n }\n\n private playComforted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft blanket puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Gentle descending comfort\n this.warmTone(now + 0.1, 0.35, 523, 0.15) // C5\n this.warmTone(now + 0.25, 0.4, 440, 0.12) // A4\n }\n\n private playEnergized(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick energetic puffs\n this.puff(now, 0.05, 3000, 0.25)\n this.puff(now + 0.04, 0.05, 3500, 0.28)\n\n // Bright ascending tones\n this.tone(now + 0.02, 0.1, 784, 0.2)\n this.tone(now + 0.08, 0.12, 988, 0.25)\n this.tone(now + 0.14, 0.15, 1175, 0.22)\n }\n\n private playCelebrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright celebratory chime\n this.puff(now, 0.08, 2500, 0.2)\n\n // Triumphant ascending arpeggio (C major -> resolve)\n this.tone(now + 0.02, 0.18, 523, 0.22) // C5\n this.tone(now + 0.08, 0.18, 659, 0.24) // E5\n this.tone(now + 0.14, 0.2, 784, 0.26) // G5\n this.tone(now + 0.22, 0.3, 1047, 0.22) // C6 - resolution\n\n // Warm shimmer on resolution\n this.shimmer(now + 0.25, 0.35, 523, 0.12)\n }\n\n // ==========================================================================\n // SAD / LOW FEELINGS\n // ==========================================================================\n\n private playSad(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy sigh\n this.puff(now, 0.3, 600, 0.25)\n\n // Descending sad tone\n this.warmTone(now + 0.1, 0.4, 392, 0.2, 400) // G4\n this.warmTone(now + 0.3, 0.45, 294, 0.15, 350) // D4\n }\n\n private playLonely(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Single isolated puff\n this.puff(now, 0.2, 700, 0.2)\n\n // Sparse, distant tone\n this.warmTone(now + 0.15, 0.5, 330, 0.12, 450) // E4\n }\n\n private playDisappointed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deflating puff\n this.puff(now, 0.25, 800, 0.25)\n\n // Falling tone\n this.tone(now + 0.08, 0.3, 523, 0.18, 'sine', 349) // C5 -> F4\n }\n\n private playMelancholic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful puff\n this.puff(now, 0.3, 700, 0.18)\n\n // Bittersweet tones\n this.warmTone(now + 0.1, 0.45, 440, 0.15, 500) // A4\n this.warmTone(now + 0.3, 0.5, 392, 0.12, 450) // G4\n }\n\n // ==========================================================================\n // ANXIOUS / FEARFUL FEELINGS\n // ==========================================================================\n\n private playAnxious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tight, quick puffs\n this.puff(now, 0.08, 1800, 0.2)\n this.puff(now + 0.12, 0.08, 1900, 0.22)\n\n // Uncertain wobble\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n const lfo = ctx.createOscillator()\n const lfoGain = ctx.createGain()\n\n osc.frequency.value = 440\n lfo.frequency.value = 8\n lfoGain.gain.value = 20\n\n lfo.connect(lfoGain).connect(osc.frequency)\n\n gain.gain.setValueAtTime(0, now)\n gain.gain.linearRampToValueAtTime(this.volume * 0.15, now + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, now + 0.25)\n\n osc.connect(gain).connect(ctx.destination)\n lfo.start(now)\n osc.start(now)\n osc.stop(now + 0.3)\n lfo.stop(now + 0.3)\n }\n\n private playWorried(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Hesitant puff\n this.puff(now, 0.15, 1200, 0.2)\n\n // Minor questioning tone\n this.tone(now + 0.05, 0.25, 349, 0.15, 'sine', 392) // F4 -> G4 (uncertain)\n }\n\n private playNervous(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick shallow puffs\n this.puff(now, 0.05, 2000, 0.18)\n this.puff(now + 0.08, 0.05, 2100, 0.18)\n this.puff(now + 0.15, 0.06, 2000, 0.16)\n\n // Trembling tone\n this.tone(now + 0.04, 0.2, 494, 0.12) // B4\n }\n\n private playStartled(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick sharp puff\n this.puff(now, 0.04, 3500, 0.3)\n\n // Quick high tone\n this.tone(now, 0.08, 1047, 0.25) // C6\n this.tone(now + 0.05, 0.15, 880, 0.15) // A5\n }\n\n // ==========================================================================\n // ANGRY / FRUSTRATED FEELINGS\n // ==========================================================================\n\n private playAnnoyed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Short frustrated puff\n this.puff(now, 0.1, 1000, 0.25)\n\n // Low rumble\n this.warmTone(now + 0.03, 0.2, 294, 0.18, 400) // D4\n }\n\n private playFrustrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tense puff\n this.puff(now, 0.12, 900, 0.28)\n\n // Blocked feeling\n this.tone(now + 0.04, 0.15, 349, 0.2) // F4\n this.tone(now + 0.12, 0.12, 330, 0.18) // E4\n }\n\n private playImpatient(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick tapping puffs\n this.puff(now, 0.04, 1500, 0.2)\n this.puff(now + 0.08, 0.04, 1500, 0.2)\n this.puff(now + 0.16, 0.04, 1500, 0.22)\n\n // Urgent tone\n this.tone(now + 0.06, 0.1, 523, 0.15)\n }\n\n // ==========================================================================\n // TIRED / DRAINED FEELINGS\n // ==========================================================================\n\n private playTired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy slow puff\n this.puff(now, 0.35, 500, 0.2)\n\n // Drooping tone\n this.warmTone(now + 0.1, 0.4, 330, 0.12, 350) // E4\n }\n\n private playExhausted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very slow, heavy exhale\n this.puff(now, 0.45, 400, 0.18)\n\n // Descending fade\n this.warmTone(now + 0.15, 0.5, 294, 0.1, 300) // D4\n }\n\n private playBored(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Flat sigh\n this.puff(now, 0.25, 600, 0.15)\n\n // Monotone\n this.warmTone(now + 0.1, 0.3, 349, 0.1, 400) // F4\n }\n\n // ==========================================================================\n // CALM / GROUNDED FEELINGS\n // ==========================================================================\n\n private playCalm(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Slow, peaceful puff\n this.puff(now, 0.3, 600, 0.12)\n\n // Sustained gentle tone\n this.warmTone(now + 0.1, 0.5, 392, 0.1, 500) // G4\n }\n\n private playRelaxed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long soft exhale\n this.puff(now, 0.35, 700, 0.15)\n\n // Gentle descending\n this.warmTone(now + 0.15, 0.45, 440, 0.1) // A4\n this.warmTone(now + 0.35, 0.5, 392, 0.08) // G4\n }\n\n private playGrounded(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deep centered puff\n this.puff(now, 0.25, 500, 0.2)\n\n // Low stable tone\n this.warmTone(now + 0.1, 0.4, 262, 0.15, 350) // C4\n }\n\n private playSafe(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft enveloping puff\n this.puff(now, 0.3, 700, 0.15)\n\n // Warm embracing tones\n this.warmTone(now + 0.1, 0.4, 349, 0.12) // F4\n this.warmTone(now + 0.25, 0.45, 440, 0.1) // A4\n }\n\n // ==========================================================================\n // CONNECTED / SOCIAL FEELINGS\n // ==========================================================================\n\n private playConnected(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm shared breath\n this.puff(now, 0.2, 1200, 0.18)\n\n // Harmonious tones\n this.warmTone(now + 0.08, 0.3, 440, 0.15) // A4\n this.warmTone(now + 0.12, 0.32, 523, 0.12) // C5\n }\n\n private playAppreciated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Touched puff\n this.puff(now, 0.15, 1500, 0.2)\n\n // Warm ascending\n this.warmTone(now + 0.05, 0.25, 440, 0.15)\n this.warmTone(now + 0.15, 0.3, 523, 0.18)\n }\n\n private playSupported(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Held puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Stable harmonies\n this.warmTone(now + 0.1, 0.35, 349, 0.12)\n this.warmTone(now + 0.15, 0.4, 440, 0.1)\n }\n\n // ==========================================================================\n // MIXED / COMPLICATED FEELINGS\n // ==========================================================================\n\n private playNostalgic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful distant puff\n this.puff(now, 0.25, 800, 0.15)\n\n // Bittersweet memory tones\n this.warmTone(now + 0.1, 0.4, 440, 0.12, 500) // A4\n this.warmTone(now + 0.3, 0.45, 392, 0.1, 450) // G4\n }\n\n private playSurprised(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick gasp\n this.puff(now, 0.06, 2800, 0.25)\n\n // Rising tone\n this.tone(now + 0.02, 0.15, 659, 0.2, 'sine', 988) // E5 -> B5\n }\n\n private playAwestruck(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wonder-filled breath\n this.puff(now, 0.2, 1500, 0.2)\n\n // Ascending wonder\n this.shimmer(now + 0.08, 0.4, 440, 0.15)\n }\n\n private playConfused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Uncertain puff\n this.puff(now, 0.12, 1200, 0.18)\n\n // Questioning wobble\n this.tone(now + 0.04, 0.2, 440, 0.12, 'sine', 494) // A4 -> B4\n this.tone(now + 0.15, 0.15, 466, 0.1) // Bb4 (chromatic confusion)\n }\n\n // ==========================================================================\n // PUBLIC API\n // ==========================================================================\n\n /** Set volume (0.0 - 1.0) */\n setVolume(vol: number): void {\n this.volume = Math.max(0, Math.min(1, vol))\n }\n\n /** Get current volume */\n getVolume(): number {\n return this.volume\n }\n\n /** Mute all sounds */\n mute(): void {\n this.muted = true\n }\n\n /** Unmute sounds */\n unmute(): void {\n this.muted = false\n }\n\n /** Check if muted */\n isMuted(): boolean {\n return this.muted\n }\n\n /** Play a feeling */\n play(feeling: Feeling): void {\n if (this.muted) return\n\n // Map feelings to their sound methods\n const soundMap: Record<Feeling, () => void> = {\n // Happy\n joyful: () => this.playJoyful(),\n content: () => this.playContent(),\n excited: () => this.playExcited(),\n proud: () => this.playProud(),\n hopeful: () => this.playHopeful(),\n relieved: () => this.playRelieved(),\n grateful: () => this.playGrateful(),\n peaceful: () => this.playPeaceful(),\n playful: () => this.playPlayful(),\n amused: () => this.playAmused(),\n curious: () => this.playCurious(),\n inspired: () => this.playInspired(),\n confident: () => this.playConfident(),\n loved: () => this.playLoved(),\n comforted: () => this.playComforted(),\n energized: () => this.playEnergized(),\n celebrated: () => this.playCelebrated(),\n\n // Sad\n sad: () => this.playSad(),\n lonely: () => this.playLonely(),\n disappointed: () => this.playDisappointed(),\n heartbroken: () => this.playSad(), // Similar to sad\n grieving: () => this.playSad(),\n hopeless: () => this.playLonely(),\n empty: () => this.playLonely(),\n discouraged: () => this.playDisappointed(),\n melancholic: () => this.playMelancholic(),\n homesick: () => this.playNostalgic(),\n hurt: () => this.playSad(),\n miserable: () => this.playSad(),\n regretful: () => this.playMelancholic(),\n ashamed: () => this.playDisappointed(),\n inferior: () => this.playDisappointed(),\n\n // Anxious\n anxious: () => this.playAnxious(),\n worried: () => this.playWorried(),\n afraid: () => this.playAnxious(),\n terrified: () => this.playStartled(),\n panicked: () => this.playStartled(),\n nervous: () => this.playNervous(),\n uneasy: () => this.playWorried(),\n insecure: () => this.playNervous(),\n overwhelmed: () => this.playAnxious(),\n stressed: () => this.playAnxious(),\n tense: () => this.playAnxious(),\n apprehensive: () => this.playWorried(),\n startled: () => this.playStartled(),\n suspicious: () => this.playWorried(),\n vulnerable: () => this.playNervous(),\n\n // Angry\n annoyed: () => this.playAnnoyed(),\n irritated: () => this.playAnnoyed(),\n frustrated: () => this.playFrustrated(),\n angry: () => this.playFrustrated(),\n enraged: () => this.playFrustrated(),\n bitter: () => this.playFrustrated(),\n resentful: () => this.playAnnoyed(),\n jealous: () => this.playAnnoyed(),\n envious: () => this.playAnnoyed(),\n indignant: () => this.playFrustrated(),\n impatient: () => this.playImpatient(),\n hostile: () => this.playFrustrated(),\n contemptuous: () => this.playAnnoyed(),\n\n // Tired\n tired: () => this.playTired(),\n exhausted: () => this.playExhausted(),\n drained: () => this.playExhausted(),\n burnedOut: () => this.playExhausted(),\n numb: () => this.playExhausted(),\n bored: () => this.playBored(),\n unmotivated: () => this.playBored(),\n apathetic: () => this.playBored(),\n restless: () => this.playTired(),\n\n // Calm\n calm: () => this.playCalm(),\n relaxed: () => this.playRelaxed(),\n atEase: () => this.playRelaxed(),\n balanced: () => this.playCalm(),\n stable: () => this.playGrounded(),\n secure: () => this.playSafe(),\n safe: () => this.playSafe(),\n centered: () => this.playGrounded(),\n grounded: () => this.playGrounded(),\n accepting: () => this.playCalm(),\n\n // Connected\n connected: () => this.playConnected(),\n accepted: () => this.playAppreciated(),\n included: () => this.playConnected(),\n belonging: () => this.playConnected(),\n appreciated: () => this.playAppreciated(),\n valued: () => this.playAppreciated(),\n respected: () => this.playAppreciated(),\n supported: () => this.playSupported(),\n protective: () => this.playSupported(),\n compassionate: () => this.playConnected(),\n empathetic: () => this.playConnected(),\n\n // Mixed\n conflicted: () => this.playConfused(),\n confused: () => this.playConfused(),\n ambivalent: () => this.playConfused(),\n nostalgic: () => this.playNostalgic(),\n guilty: () => this.playDisappointed(),\n embarrassed: () => this.playNervous(),\n surprised: () => this.playSurprised(),\n shocked: () => this.playStartled(),\n awestruck: () => this.playAwestruck(),\n skeptical: () => this.playConfused(),\n }\n\n const playFn = soundMap[feeling]\n if (playFn) {\n playFn()\n }\n }\n\n /** Dispose audio context */\n dispose(): void {\n if (this.audioContext) {\n this.audioContext.close()\n this.audioContext = null\n }\n }\n}\n\n// ============================================================================\n// SINGLETON EXPORT\n// ============================================================================\n\n/** Global emotional sound player */\nexport const $sounds = new EmotionalSoundGenerator()\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audio-DS43uoRA.js","names":[],"sources":["../src/audio/emotional-sounds.ts"],"sourcesContent":["/**\n * Schmancy Emotional Sound Library\n *\n * A curated collection of soft, elegant sounds organized by emotional categories.\n * Each sound is designed to be non-intrusive, emotionally evocative, and beautiful.\n *\n * Inspired by the gentle sounds of nature - soft air, gentle chimes, and warm tones.\n *\n * @example\n * ```typescript\n * import { $sounds } from '@schmancy/audio'\n *\n * // Play a feeling\n * $sounds.play('joyful')\n * $sounds.play('relieved')\n * $sounds.play('curious')\n *\n * // Adjust volume\n * $sounds.setVolume(0.2)\n *\n * // Mute/unmute\n * $sounds.mute()\n * $sounds.unmute()\n * ```\n */\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Happy / Pleasant feelings */\nexport type HappyFeeling =\n | 'joyful' | 'content' | 'excited' | 'proud' | 'hopeful'\n | 'relieved' | 'grateful' | 'peaceful' | 'playful' | 'amused'\n | 'curious' | 'inspired' | 'confident' | 'loved' | 'comforted' | 'energized'\n | 'celebrated'\n\n/** Sad / Low feelings */\nexport type SadFeeling =\n | 'sad' | 'lonely' | 'disappointed' | 'heartbroken' | 'grieving'\n | 'hopeless' | 'empty' | 'discouraged' | 'melancholic' | 'homesick'\n | 'hurt' | 'miserable' | 'regretful' | 'ashamed' | 'inferior'\n\n/** Anxious / Fearful feelings */\nexport type AnxiousFeeling =\n | 'anxious' | 'worried' | 'afraid' | 'terrified' | 'panicked'\n | 'nervous' | 'uneasy' | 'insecure' | 'overwhelmed' | 'stressed'\n | 'tense' | 'apprehensive' | 'startled' | 'suspicious' | 'vulnerable'\n\n/** Angry / Frustrated feelings */\nexport type AngryFeeling =\n | 'annoyed' | 'irritated' | 'frustrated' | 'angry' | 'enraged'\n | 'bitter' | 'resentful' | 'jealous' | 'envious' | 'indignant'\n | 'impatient' | 'hostile' | 'contemptuous'\n\n/** Tired / Drained feelings */\nexport type TiredFeeling =\n | 'tired' | 'exhausted' | 'drained' | 'burnedOut' | 'numb'\n | 'bored' | 'unmotivated' | 'apathetic' | 'restless'\n\n/** Calm / Grounded feelings */\nexport type CalmFeeling =\n | 'calm' | 'relaxed' | 'atEase' | 'balanced' | 'stable'\n | 'secure' | 'safe' | 'centered' | 'grounded' | 'accepting'\n\n/** Connected / Social feelings */\nexport type ConnectedFeeling =\n | 'connected' | 'accepted' | 'included' | 'belonging' | 'appreciated'\n | 'valued' | 'respected' | 'supported' | 'protective' | 'compassionate' | 'empathetic'\n\n/** Mixed / Complicated feelings */\nexport type MixedFeeling =\n | 'conflicted' | 'confused' | 'ambivalent' | 'nostalgic' | 'guilty'\n | 'embarrassed' | 'surprised' | 'shocked' | 'awestruck' | 'skeptical'\n\n/** All feelings */\nexport type Feeling =\n | HappyFeeling | SadFeeling | AnxiousFeeling | AngryFeeling\n | TiredFeeling | CalmFeeling | ConnectedFeeling | MixedFeeling\n\n// FeelingCategory is defined in ../types/mood-audio.types.ts and re-exported\n// from ./index.ts — the canonical source.\n\n// ============================================================================\n// SOUND GENERATOR\n// ============================================================================\n\n/**\n * Emotional Sound Generator\n * Creates soft, beautiful sounds using Web Audio API\n */\nexport class EmotionalSoundGenerator {\n private audioContext: AudioContext | null = null\n private volume = 0.15\n private muted = false\n\n private getContext(): AudioContext {\n if (!this.audioContext) {\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n this.audioContext = new AudioContextClass()\n }\n // Resume if suspended (autoplay policy)\n if (this.audioContext.state === 'suspended') {\n this.audioContext.resume()\n }\n return this.audioContext\n }\n\n // ==========================================================================\n // CORE SOUND PRIMITIVES\n // ==========================================================================\n\n /** Soft air puff - the foundation of our sound palette */\n private puff(startTime: number, duration: number, freq: number, vol: number): void {\n const ctx = this.getContext()\n const bufferSize = Math.floor(ctx.sampleRate * duration)\n const buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n const data = buffer.getChannelData(0)\n\n for (let i = 0; i < bufferSize; i++) {\n data[i] = Math.random() * 2 - 1\n }\n\n const noise = ctx.createBufferSource()\n noise.buffer = buffer\n\n const filter = ctx.createBiquadFilter()\n filter.type = 'bandpass'\n filter.frequency.value = freq\n filter.Q.value = 0.7\n\n const gain = ctx.createGain()\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.015)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n noise.connect(filter).connect(gain).connect(ctx.destination)\n noise.start(startTime)\n noise.stop(startTime + duration)\n }\n\n /** Gentle tone with envelope */\n private tone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n type: OscillatorType = 'sine',\n freqEnd?: number\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n\n osc.type = type\n osc.frequency.setValueAtTime(freq, startTime)\n if (freqEnd) {\n osc.frequency.exponentialRampToValueAtTime(freqEnd, startTime + duration * 0.8)\n }\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.02)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Warm filtered tone */\n private warmTone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n filterFreq = 800\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const filter = ctx.createBiquadFilter()\n const gain = ctx.createGain()\n\n osc.type = 'sine'\n osc.frequency.value = freq\n\n filter.type = 'lowpass'\n filter.frequency.value = filterFreq\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(filter).connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Shimmer - multiple soft tones */\n private shimmer(startTime: number, duration: number, baseFreq: number, vol: number): void {\n const freqs = [baseFreq, baseFreq * 1.5, baseFreq * 2]\n freqs.forEach((f, i) => {\n this.tone(startTime + i * 0.02, duration - i * 0.02, f, vol * (1 - i * 0.2))\n })\n }\n\n // ==========================================================================\n // HAPPY / PLEASANT FEELINGS\n // ==========================================================================\n\n private playJoyful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Double puff (excited exhale)\n this.puff(now, 0.08, 3000, 0.3)\n this.puff(now + 0.06, 0.1, 3500, 0.35)\n\n // Rising happy tones\n this.tone(now + 0.02, 0.15, 784, 0.25) // G5\n this.tone(now + 0.1, 0.2, 988, 0.3) // B5\n this.tone(now + 0.18, 0.25, 1175, 0.25) // D6\n }\n\n private playContent(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Gentle satisfied sigh\n this.puff(now, 0.2, 1500, 0.25)\n this.warmTone(now + 0.05, 0.3, 523, 0.2) // C5\n this.warmTone(now + 0.15, 0.35, 659, 0.15) // E5\n }\n\n private playExcited(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick ascending puffs\n this.puff(now, 0.06, 2500, 0.25)\n this.puff(now + 0.05, 0.06, 3000, 0.3)\n this.puff(now + 0.1, 0.08, 3500, 0.35)\n\n // Sparkly ascending tones\n this.tone(now + 0.02, 0.12, 880, 0.2)\n this.tone(now + 0.08, 0.12, 1047, 0.25)\n this.tone(now + 0.14, 0.15, 1319, 0.3)\n }\n\n private playProud(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Confident puff\n this.puff(now, 0.15, 1800, 0.3)\n\n // Strong rising chord\n this.tone(now + 0.05, 0.25, 523, 0.25) // C5\n this.tone(now + 0.08, 0.25, 659, 0.2) // E5\n this.tone(now + 0.11, 0.3, 784, 0.25) // G5\n }\n\n private playHopeful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Light ascending puff\n this.puff(now, 0.12, 2200, 0.2)\n\n // Gentle rising tone\n this.tone(now + 0.03, 0.3, 659, 0.2, 'sine', 880) // E5 -> A5\n }\n\n private playRelieved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long exhale\n this.puff(now, 0.25, 1200, 0.35)\n\n // Descending release\n this.warmTone(now + 0.1, 0.35, 659, 0.2) // E5\n this.warmTone(now + 0.25, 0.4, 523, 0.15) // C5\n }\n\n private playGrateful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm gentle puff\n this.puff(now, 0.15, 1500, 0.25)\n\n // Warm embracing tones\n this.warmTone(now + 0.05, 0.3, 440, 0.2) // A4\n this.warmTone(now + 0.15, 0.35, 523, 0.2) // C5\n this.warmTone(now + 0.25, 0.4, 659, 0.15) // E5\n }\n\n private playPeaceful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very soft puff\n this.puff(now, 0.3, 800, 0.15)\n\n // Gentle sustained tone\n this.warmTone(now + 0.1, 0.5, 392, 0.12, 500) // G4\n }\n\n private playPlayful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bouncy puffs\n this.puff(now, 0.05, 2800, 0.2)\n this.puff(now + 0.08, 0.05, 3200, 0.25)\n this.puff(now + 0.14, 0.06, 2800, 0.2)\n\n // Playful tones\n this.tone(now + 0.03, 0.1, 784, 0.2)\n this.tone(now + 0.1, 0.08, 988, 0.25)\n this.tone(now + 0.16, 0.12, 784, 0.2)\n }\n\n private playAmused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Little chuckle puffs\n this.puff(now, 0.04, 2500, 0.2)\n this.puff(now + 0.06, 0.04, 2800, 0.22)\n this.puff(now + 0.11, 0.05, 2600, 0.18)\n\n // Amused tone\n this.tone(now + 0.05, 0.15, 880, 0.15)\n }\n\n private playCurious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Questioning puff\n this.puff(now, 0.1, 2000, 0.2)\n\n // Rising questioning tone\n this.tone(now + 0.03, 0.2, 659, 0.2, 'sine', 880) // E5 -> A5 (question)\n }\n\n private playInspired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright puff\n this.puff(now, 0.1, 2500, 0.25)\n\n // Ascending shimmer\n this.shimmer(now + 0.05, 0.3, 523, 0.2)\n }\n\n private playConfident(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Solid puff\n this.puff(now, 0.12, 1500, 0.3)\n\n // Strong chord\n this.tone(now + 0.04, 0.2, 523, 0.25) // C5\n this.tone(now + 0.06, 0.22, 659, 0.2) // E5\n }\n\n private playLoved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm embrace puff\n this.puff(now, 0.2, 1000, 0.2)\n\n // Warm loving tones\n this.warmTone(now + 0.08, 0.4, 392, 0.18, 600) // G4\n this.warmTone(now + 0.2, 0.45, 494, 0.15, 600) // B4\n }\n\n private playComforted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft blanket puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Gentle descending comfort\n this.warmTone(now + 0.1, 0.35, 523, 0.15) // C5\n this.warmTone(now + 0.25, 0.4, 440, 0.12) // A4\n }\n\n private playEnergized(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick energetic puffs\n this.puff(now, 0.05, 3000, 0.25)\n this.puff(now + 0.04, 0.05, 3500, 0.28)\n\n // Bright ascending tones\n this.tone(now + 0.02, 0.1, 784, 0.2)\n this.tone(now + 0.08, 0.12, 988, 0.25)\n this.tone(now + 0.14, 0.15, 1175, 0.22)\n }\n\n private playCelebrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright celebratory chime\n this.puff(now, 0.08, 2500, 0.2)\n\n // Triumphant ascending arpeggio (C major -> resolve)\n this.tone(now + 0.02, 0.18, 523, 0.22) // C5\n this.tone(now + 0.08, 0.18, 659, 0.24) // E5\n this.tone(now + 0.14, 0.2, 784, 0.26) // G5\n this.tone(now + 0.22, 0.3, 1047, 0.22) // C6 - resolution\n\n // Warm shimmer on resolution\n this.shimmer(now + 0.25, 0.35, 523, 0.12)\n }\n\n // ==========================================================================\n // SAD / LOW FEELINGS\n // ==========================================================================\n\n private playSad(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy sigh\n this.puff(now, 0.3, 600, 0.25)\n\n // Descending sad tone\n this.warmTone(now + 0.1, 0.4, 392, 0.2, 400) // G4\n this.warmTone(now + 0.3, 0.45, 294, 0.15, 350) // D4\n }\n\n private playLonely(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Single isolated puff\n this.puff(now, 0.2, 700, 0.2)\n\n // Sparse, distant tone\n this.warmTone(now + 0.15, 0.5, 330, 0.12, 450) // E4\n }\n\n private playDisappointed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deflating puff\n this.puff(now, 0.25, 800, 0.25)\n\n // Falling tone\n this.tone(now + 0.08, 0.3, 523, 0.18, 'sine', 349) // C5 -> F4\n }\n\n private playMelancholic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful puff\n this.puff(now, 0.3, 700, 0.18)\n\n // Bittersweet tones\n this.warmTone(now + 0.1, 0.45, 440, 0.15, 500) // A4\n this.warmTone(now + 0.3, 0.5, 392, 0.12, 450) // G4\n }\n\n // ==========================================================================\n // ANXIOUS / FEARFUL FEELINGS\n // ==========================================================================\n\n private playAnxious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tight, quick puffs\n this.puff(now, 0.08, 1800, 0.2)\n this.puff(now + 0.12, 0.08, 1900, 0.22)\n\n // Uncertain wobble\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n const lfo = ctx.createOscillator()\n const lfoGain = ctx.createGain()\n\n osc.frequency.value = 440\n lfo.frequency.value = 8\n lfoGain.gain.value = 20\n\n lfo.connect(lfoGain).connect(osc.frequency)\n\n gain.gain.setValueAtTime(0, now)\n gain.gain.linearRampToValueAtTime(this.volume * 0.15, now + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, now + 0.25)\n\n osc.connect(gain).connect(ctx.destination)\n lfo.start(now)\n osc.start(now)\n osc.stop(now + 0.3)\n lfo.stop(now + 0.3)\n }\n\n private playWorried(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Hesitant puff\n this.puff(now, 0.15, 1200, 0.2)\n\n // Minor questioning tone\n this.tone(now + 0.05, 0.25, 349, 0.15, 'sine', 392) // F4 -> G4 (uncertain)\n }\n\n private playNervous(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick shallow puffs\n this.puff(now, 0.05, 2000, 0.18)\n this.puff(now + 0.08, 0.05, 2100, 0.18)\n this.puff(now + 0.15, 0.06, 2000, 0.16)\n\n // Trembling tone\n this.tone(now + 0.04, 0.2, 494, 0.12) // B4\n }\n\n private playStartled(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick sharp puff\n this.puff(now, 0.04, 3500, 0.3)\n\n // Quick high tone\n this.tone(now, 0.08, 1047, 0.25) // C6\n this.tone(now + 0.05, 0.15, 880, 0.15) // A5\n }\n\n // ==========================================================================\n // ANGRY / FRUSTRATED FEELINGS\n // ==========================================================================\n\n private playAnnoyed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Short frustrated puff\n this.puff(now, 0.1, 1000, 0.25)\n\n // Low rumble\n this.warmTone(now + 0.03, 0.2, 294, 0.18, 400) // D4\n }\n\n private playFrustrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tense puff\n this.puff(now, 0.12, 900, 0.28)\n\n // Blocked feeling\n this.tone(now + 0.04, 0.15, 349, 0.2) // F4\n this.tone(now + 0.12, 0.12, 330, 0.18) // E4\n }\n\n private playImpatient(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick tapping puffs\n this.puff(now, 0.04, 1500, 0.2)\n this.puff(now + 0.08, 0.04, 1500, 0.2)\n this.puff(now + 0.16, 0.04, 1500, 0.22)\n\n // Urgent tone\n this.tone(now + 0.06, 0.1, 523, 0.15)\n }\n\n // ==========================================================================\n // TIRED / DRAINED FEELINGS\n // ==========================================================================\n\n private playTired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy slow puff\n this.puff(now, 0.35, 500, 0.2)\n\n // Drooping tone\n this.warmTone(now + 0.1, 0.4, 330, 0.12, 350) // E4\n }\n\n private playExhausted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very slow, heavy exhale\n this.puff(now, 0.45, 400, 0.18)\n\n // Descending fade\n this.warmTone(now + 0.15, 0.5, 294, 0.1, 300) // D4\n }\n\n private playBored(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Flat sigh\n this.puff(now, 0.25, 600, 0.15)\n\n // Monotone\n this.warmTone(now + 0.1, 0.3, 349, 0.1, 400) // F4\n }\n\n // ==========================================================================\n // CALM / GROUNDED FEELINGS\n // ==========================================================================\n\n private playCalm(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Slow, peaceful puff\n this.puff(now, 0.3, 600, 0.12)\n\n // Sustained gentle tone\n this.warmTone(now + 0.1, 0.5, 392, 0.1, 500) // G4\n }\n\n private playRelaxed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long soft exhale\n this.puff(now, 0.35, 700, 0.15)\n\n // Gentle descending\n this.warmTone(now + 0.15, 0.45, 440, 0.1) // A4\n this.warmTone(now + 0.35, 0.5, 392, 0.08) // G4\n }\n\n private playGrounded(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deep centered puff\n this.puff(now, 0.25, 500, 0.2)\n\n // Low stable tone\n this.warmTone(now + 0.1, 0.4, 262, 0.15, 350) // C4\n }\n\n private playSafe(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft enveloping puff\n this.puff(now, 0.3, 700, 0.15)\n\n // Warm embracing tones\n this.warmTone(now + 0.1, 0.4, 349, 0.12) // F4\n this.warmTone(now + 0.25, 0.45, 440, 0.1) // A4\n }\n\n // ==========================================================================\n // CONNECTED / SOCIAL FEELINGS\n // ==========================================================================\n\n private playConnected(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm shared breath\n this.puff(now, 0.2, 1200, 0.18)\n\n // Harmonious tones\n this.warmTone(now + 0.08, 0.3, 440, 0.15) // A4\n this.warmTone(now + 0.12, 0.32, 523, 0.12) // C5\n }\n\n private playAppreciated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Touched puff\n this.puff(now, 0.15, 1500, 0.2)\n\n // Warm ascending\n this.warmTone(now + 0.05, 0.25, 440, 0.15)\n this.warmTone(now + 0.15, 0.3, 523, 0.18)\n }\n\n private playSupported(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Held puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Stable harmonies\n this.warmTone(now + 0.1, 0.35, 349, 0.12)\n this.warmTone(now + 0.15, 0.4, 440, 0.1)\n }\n\n // ==========================================================================\n // MIXED / COMPLICATED FEELINGS\n // ==========================================================================\n\n private playNostalgic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful distant puff\n this.puff(now, 0.25, 800, 0.15)\n\n // Bittersweet memory tones\n this.warmTone(now + 0.1, 0.4, 440, 0.12, 500) // A4\n this.warmTone(now + 0.3, 0.45, 392, 0.1, 450) // G4\n }\n\n private playSurprised(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick gasp\n this.puff(now, 0.06, 2800, 0.25)\n\n // Rising tone\n this.tone(now + 0.02, 0.15, 659, 0.2, 'sine', 988) // E5 -> B5\n }\n\n private playAwestruck(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wonder-filled breath\n this.puff(now, 0.2, 1500, 0.2)\n\n // Ascending wonder\n this.shimmer(now + 0.08, 0.4, 440, 0.15)\n }\n\n private playConfused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Uncertain puff\n this.puff(now, 0.12, 1200, 0.18)\n\n // Questioning wobble\n this.tone(now + 0.04, 0.2, 440, 0.12, 'sine', 494) // A4 -> B4\n this.tone(now + 0.15, 0.15, 466, 0.1) // Bb4 (chromatic confusion)\n }\n\n // ==========================================================================\n // PUBLIC API\n // ==========================================================================\n\n /** Set volume (0.0 - 1.0) */\n setVolume(vol: number): void {\n this.volume = Math.max(0, Math.min(1, vol))\n }\n\n /** Get current volume */\n getVolume(): number {\n return this.volume\n }\n\n /** Mute all sounds */\n mute(): void {\n this.muted = true\n }\n\n /** Unmute sounds */\n unmute(): void {\n this.muted = false\n }\n\n /** Check if muted */\n isMuted(): boolean {\n return this.muted\n }\n\n /** Play a feeling */\n play(feeling: Feeling): void {\n if (this.muted) return\n\n // Map feelings to their sound methods\n const soundMap: Record<Feeling, () => void> = {\n // Happy\n joyful: () => this.playJoyful(),\n content: () => this.playContent(),\n excited: () => this.playExcited(),\n proud: () => this.playProud(),\n hopeful: () => this.playHopeful(),\n relieved: () => this.playRelieved(),\n grateful: () => this.playGrateful(),\n peaceful: () => this.playPeaceful(),\n playful: () => this.playPlayful(),\n amused: () => this.playAmused(),\n curious: () => this.playCurious(),\n inspired: () => this.playInspired(),\n confident: () => this.playConfident(),\n loved: () => this.playLoved(),\n comforted: () => this.playComforted(),\n energized: () => this.playEnergized(),\n celebrated: () => this.playCelebrated(),\n\n // Sad\n sad: () => this.playSad(),\n lonely: () => this.playLonely(),\n disappointed: () => this.playDisappointed(),\n heartbroken: () => this.playSad(), // Similar to sad\n grieving: () => this.playSad(),\n hopeless: () => this.playLonely(),\n empty: () => this.playLonely(),\n discouraged: () => this.playDisappointed(),\n melancholic: () => this.playMelancholic(),\n homesick: () => this.playNostalgic(),\n hurt: () => this.playSad(),\n miserable: () => this.playSad(),\n regretful: () => this.playMelancholic(),\n ashamed: () => this.playDisappointed(),\n inferior: () => this.playDisappointed(),\n\n // Anxious\n anxious: () => this.playAnxious(),\n worried: () => this.playWorried(),\n afraid: () => this.playAnxious(),\n terrified: () => this.playStartled(),\n panicked: () => this.playStartled(),\n nervous: () => this.playNervous(),\n uneasy: () => this.playWorried(),\n insecure: () => this.playNervous(),\n overwhelmed: () => this.playAnxious(),\n stressed: () => this.playAnxious(),\n tense: () => this.playAnxious(),\n apprehensive: () => this.playWorried(),\n startled: () => this.playStartled(),\n suspicious: () => this.playWorried(),\n vulnerable: () => this.playNervous(),\n\n // Angry\n annoyed: () => this.playAnnoyed(),\n irritated: () => this.playAnnoyed(),\n frustrated: () => this.playFrustrated(),\n angry: () => this.playFrustrated(),\n enraged: () => this.playFrustrated(),\n bitter: () => this.playFrustrated(),\n resentful: () => this.playAnnoyed(),\n jealous: () => this.playAnnoyed(),\n envious: () => this.playAnnoyed(),\n indignant: () => this.playFrustrated(),\n impatient: () => this.playImpatient(),\n hostile: () => this.playFrustrated(),\n contemptuous: () => this.playAnnoyed(),\n\n // Tired\n tired: () => this.playTired(),\n exhausted: () => this.playExhausted(),\n drained: () => this.playExhausted(),\n burnedOut: () => this.playExhausted(),\n numb: () => this.playExhausted(),\n bored: () => this.playBored(),\n unmotivated: () => this.playBored(),\n apathetic: () => this.playBored(),\n restless: () => this.playTired(),\n\n // Calm\n calm: () => this.playCalm(),\n relaxed: () => this.playRelaxed(),\n atEase: () => this.playRelaxed(),\n balanced: () => this.playCalm(),\n stable: () => this.playGrounded(),\n secure: () => this.playSafe(),\n safe: () => this.playSafe(),\n centered: () => this.playGrounded(),\n grounded: () => this.playGrounded(),\n accepting: () => this.playCalm(),\n\n // Connected\n connected: () => this.playConnected(),\n accepted: () => this.playAppreciated(),\n included: () => this.playConnected(),\n belonging: () => this.playConnected(),\n appreciated: () => this.playAppreciated(),\n valued: () => this.playAppreciated(),\n respected: () => this.playAppreciated(),\n supported: () => this.playSupported(),\n protective: () => this.playSupported(),\n compassionate: () => this.playConnected(),\n empathetic: () => this.playConnected(),\n\n // Mixed\n conflicted: () => this.playConfused(),\n confused: () => this.playConfused(),\n ambivalent: () => this.playConfused(),\n nostalgic: () => this.playNostalgic(),\n guilty: () => this.playDisappointed(),\n embarrassed: () => this.playNervous(),\n surprised: () => this.playSurprised(),\n shocked: () => this.playStartled(),\n awestruck: () => this.playAwestruck(),\n skeptical: () => this.playConfused(),\n }\n\n const playFn = soundMap[feeling]\n if (playFn) {\n playFn()\n }\n }\n\n /** Dispose audio context */\n dispose(): void {\n if (this.audioContext) {\n this.audioContext.close()\n this.audioContext = null\n }\n }\n}\n\n// ============================================================================\n// SINGLETON EXPORT\n// ============================================================================\n\n/** Global emotional sound player */\nexport const $sounds = new EmotionalSoundGenerator()\n"],"mappings":"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"}
|
package/dist/audio.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sound.service-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sound.service-DyY78ukR.cjs`),t=require(`./audio-D-TZzpXF.cjs`);exports.$sounds=t.t,exports.EmotionalSoundGenerator=t.n,exports.schmancySound=e.t,exports.sound=e.n;
|
package/dist/audio.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as e, t } from "./sound.service-
|
|
2
|
-
import { n, t as r } from "./audio-
|
|
1
|
+
import { n as e, t } from "./sound.service-BIN2W7Rv.js";
|
|
2
|
+
import { n, t as r } from "./audio-DS43uoRA.js";
|
|
3
3
|
export { r as $sounds, n as EmotionalSoundGenerator, t as schmancySound, e as sound };
|