@mhmo91/schmancy 0.9.13 → 0.9.15
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 +194 -0
- package/dist/agent/schmancy.agent.js +107 -1
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +148 -0
- package/dist/{animation-Bcwh107v.cjs.map → animation-CQRdLgzX.cjs.map} +1 -1
- package/dist/{animation-CXKSuUoE.js.map → animation-hXFClrIn.js.map} +1 -1
- package/dist/{area-CApZWjqs.cjs → area-DBjAhgjP.cjs} +2 -2
- package/dist/area-DBjAhgjP.cjs.map +1 -0
- package/dist/{area-D_p1YBgP.js → area-Dr4I9R2p.js} +23 -35
- package/dist/area-Dr4I9R2p.js.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +3 -2
- package/dist/{audio-DUVz7Ars.cjs → audio-Dvr-RBzE.cjs} +1 -1
- package/dist/{audio-DUVz7Ars.cjs.map → audio-Dvr-RBzE.cjs.map} +1 -1
- package/dist/{audio-C7TzWI8M.js → audio-ql6nvY0y.js} +1 -1
- package/dist/{audio-C7TzWI8M.js.map → audio-ql6nvY0y.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-DAK35swc.js → autocomplete-CgWUCUU-.js} +3 -3
- package/dist/{autocomplete-DAK35swc.js.map → autocomplete-CgWUCUU-.js.map} +1 -1
- package/dist/{autocomplete-DlCqS1gW.cjs → autocomplete-EM0jE7X2.cjs} +1 -1
- package/dist/{autocomplete-DlCqS1gW.cjs.map → autocomplete-EM0jE7X2.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-C57YTPbb.cjs → boat-BjYJI1HS.cjs} +1 -1
- package/dist/{boat-C57YTPbb.cjs.map → boat-BjYJI1HS.cjs.map} +1 -1
- package/dist/{boat-Dms45k4o.js → boat-Dw8TmOzN.js} +4 -4
- package/dist/{boat-Dms45k4o.js.map → boat-Dw8TmOzN.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-BfN1p1n8.cjs → busy-BmiumJpB.cjs} +1 -1
- package/dist/{busy-BfN1p1n8.cjs.map → busy-BmiumJpB.cjs.map} +1 -1
- package/dist/{busy-IKS9obYj.js → busy-D2hP3fOy.js} +1 -1
- package/dist/{busy-IKS9obYj.js.map → busy-D2hP3fOy.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +4 -4
- package/dist/{card-ZObyqkFF.cjs → card-BslSqOsf.cjs} +1 -1
- package/dist/{card-ZObyqkFF.cjs.map → card-BslSqOsf.cjs.map} +1 -1
- package/dist/{card-DQNBal9V.js → card-CEdgK9nb.js} +2 -2
- package/dist/{card-DQNBal9V.js.map → card-CEdgK9nb.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.js +1 -1
- package/dist/{checkbox-COhTJ1x5.js → checkbox-Br84TiCs.js} +2 -2
- package/dist/{checkbox-COhTJ1x5.js.map → checkbox-Br84TiCs.js.map} +1 -1
- package/dist/{checkbox-CiAtIrqB.cjs → checkbox-DtcFMgZL.cjs} +1 -1
- package/dist/{checkbox-CiAtIrqB.cjs.map → checkbox-DtcFMgZL.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-B5o3vNQF.js → chips-BNYOweGm.js} +5 -5
- package/dist/{chips-B5o3vNQF.js.map → chips-BNYOweGm.js.map} +1 -1
- package/dist/{chips-D2xmsC36.cjs → chips-DoCu5YQb.cjs} +1 -1
- package/dist/{chips-D2xmsC36.cjs.map → chips-DoCu5YQb.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/{chunk-C_1VqBVD.js → chunk-BM5alsTp.js} +9 -2
- package/dist/chunk-CncqDLb2.cjs +1 -0
- package/dist/{code-highlight-SkMMTkIJ.js → code-highlight-BgExKEto.js} +1 -1
- package/dist/{code-highlight-SkMMTkIJ.js.map → code-highlight-BgExKEto.js.map} +1 -1
- package/dist/{code-highlight-BToHh8T6.cjs → code-highlight-zSYcSfCz.cjs} +1 -1
- package/dist/{code-highlight-BToHh8T6.cjs.map → code-highlight-zSYcSfCz.cjs.map} +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{components-Ca7OTgbQ.js → components-DjKNS9R_.js} +1 -1
- package/dist/{components-Ca7OTgbQ.js.map → components-DjKNS9R_.js.map} +1 -1
- package/dist/{components-B-XYvUWn.cjs → components-TJT8-tva.cjs} +1 -1
- package/dist/{components-B-XYvUWn.cjs.map → components-TJT8-tva.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +2 -2
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/context-CAYQh-mx.cjs +1 -0
- package/dist/{context-C6GwmNJJ.cjs.map → context-CAYQh-mx.cjs.map} +1 -1
- package/dist/context-D8Q66KPe.js +3 -0
- package/dist/{context-oBTPHrbc.js.map → context-D8Q66KPe.js.map} +1 -1
- package/dist/{cursor-glow-C2YRrB8Z.js → cursor-glow-BydlDInj.js} +1 -1
- package/dist/{cursor-glow-C2YRrB8Z.js.map → cursor-glow-BydlDInj.js.map} +1 -1
- package/dist/{cursor-glow-82y5h3E4.cjs → cursor-glow-Duw9jHmh.cjs} +1 -1
- package/dist/{cursor-glow-82y5h3E4.cjs.map → cursor-glow-Duw9jHmh.cjs.map} +1 -1
- package/dist/{date-range-BTA9nKbw.cjs → date-range-CIWYm3eS.cjs} +1 -1
- package/dist/{date-range-BTA9nKbw.cjs.map → date-range-CIWYm3eS.cjs.map} +1 -1
- package/dist/{date-range-inline-LLC3Y0mi.cjs → date-range-inline-B9Dp2z6C.cjs} +1 -1
- package/dist/{date-range-inline-LLC3Y0mi.cjs.map → date-range-inline-B9Dp2z6C.cjs.map} +1 -1
- package/dist/{date-range-inline-B_g1YXu3.js.map → date-range-inline-CpKG6qt2.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/{date-range-DUWpF0Qw.js → date-range-sGkC0KF3.js} +4 -4
- package/dist/{date-range-DUWpF0Qw.js.map → date-range-sGkC0KF3.js.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-Co89XWry.cjs → delay-Bu4WMQlV.cjs} +1 -1
- package/dist/{delay-Co89XWry.cjs.map → delay-Bu4WMQlV.cjs.map} +1 -1
- package/dist/{delay-CtDrlf1Q.js → delay-DwX65fSc.js} +4 -4
- package/dist/{delay-CtDrlf1Q.js.map → delay-DwX65fSc.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-CyXyVdb2.cjs → details-B8p62xmR.cjs} +1 -1
- package/dist/{details-CyXyVdb2.cjs.map → details-B8p62xmR.cjs.map} +1 -1
- package/dist/{details-B1Ax7WiP.js → details-CCW52lzz.js} +5 -5
- package/dist/{details-B1Ax7WiP.js.map → details-CCW52lzz.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-service-DXLGSshF.cjs → dialog-service-CzDO08Gy.cjs} +1 -1
- package/dist/{dialog-service-DXLGSshF.cjs.map → dialog-service-CzDO08Gy.cjs.map} +1 -1
- package/dist/{dialog-service-CCFGpU7a.js → dialog-service-DH-tjPuE.js} +2 -2
- package/dist/{dialog-service-CCFGpU7a.js.map → dialog-service-DH-tjPuE.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +5 -5
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +5 -5
- package/dist/discovery.cjs +1 -1
- package/dist/{divider-DuwCrKQu.js → divider-CbEWg3G_.js} +1 -1
- package/dist/{divider-DuwCrKQu.js.map → divider-CbEWg3G_.js.map} +1 -1
- package/dist/{divider-xcvHqVBc.cjs → divider-JyyFw_3J.cjs} +1 -1
- package/dist/{divider-xcvHqVBc.cjs.map → divider-JyyFw_3J.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/{expand-DUgOh1af.cjs → expand-BmwIPNjq.cjs} +1 -1
- package/dist/{expand-DUgOh1af.cjs.map → expand-BmwIPNjq.cjs.map} +1 -1
- package/dist/{expand-X0C1W279.js → expand-bFa_qVDT.js} +4 -4
- package/dist/{expand-X0C1W279.js.map → expand-bFa_qVDT.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-BqfYIC_q.cjs → extra-BUgyMgjl.cjs} +1 -1
- package/dist/{extra-BqfYIC_q.cjs.map → extra-BUgyMgjl.cjs.map} +1 -1
- package/dist/{extra-BTyq-5Z6.js → extra-HwbaUnCD.js} +1 -1
- package/dist/{extra-BTyq-5Z6.js.map → extra-HwbaUnCD.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/float-BQwhfibw.cjs +1 -0
- package/dist/{float-yZoLnUg0.cjs.map → float-BQwhfibw.cjs.map} +1 -1
- package/dist/{float-BgGeLER6.js → float-D5ezUurt.js} +1 -1
- package/dist/{float-BgGeLER6.js.map → float-D5ezUurt.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{flow-BPDtbhLe.js.map → flow-BGkHnOnd.js.map} +1 -1
- package/dist/{flow-Dn9AZktE.cjs.map → flow-ClAJ6Qby.cjs.map} +1 -1
- package/dist/{form-C1qS9uvS.js.map → form-rCZqoAoK.js.map} +1 -1
- package/dist/{form-CzD0JLxM.cjs → form-wI58M85H.cjs} +1 -1
- package/dist/{form-CzD0JLxM.cjs.map → form-wI58M85H.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/handover/agent-runtime-followups.md +247 -0
- package/dist/handover/agent-runtime-v1.md +109 -0
- package/dist/{hashContent-BUqULUiZ.js.map → hashContent-B2IntJQf.js.map} +1 -1
- package/dist/{hashContent-CI39BY-_.cjs.map → hashContent-CahnEuut.cjs.map} +1 -1
- package/dist/{icons-BLFEJFDG.cjs → icons-B6V3nZ4-.cjs} +1 -1
- package/dist/{icons-BLFEJFDG.cjs.map → icons-B6V3nZ4-.cjs.map} +1 -1
- package/dist/{icons-BDcb8dNb.js → icons-C5-DIjet.js} +2 -2
- package/dist/{icons-BDcb8dNb.js.map → icons-C5-DIjet.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-qCW0HzwB.js → iframe-BXBsuLwt.js} +1 -1
- package/dist/{iframe-qCW0HzwB.js.map → iframe-BXBsuLwt.js.map} +1 -1
- package/dist/{iframe-CrDpQkhj.cjs → iframe-C7sHg7RC.cjs} +1 -1
- package/dist/{iframe-CrDpQkhj.cjs.map → iframe-C7sHg7RC.cjs.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +53 -52
- package/dist/{input-C1MIZaKq.cjs → input-BGNZlfL8.cjs} +1 -1
- package/dist/{input-C1MIZaKq.cjs.map → input-BGNZlfL8.cjs.map} +1 -1
- package/dist/{input-Dv-HtkM9.js.map → input-Bc3bVISm.js.map} +1 -1
- package/dist/{input-chip-CyvjhQSw.js → input-chip-CiG61y-N.js} +1 -1
- package/dist/{input-chip-CyvjhQSw.js.map → input-chip-CiG61y-N.js.map} +1 -1
- package/dist/{input-chip-DnfthOSY.cjs → input-chip-p24lkYtY.cjs} +1 -1
- package/dist/{input-chip-DnfthOSY.cjs.map → input-chip-p24lkYtY.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/{intersection-C0JuW_7U.js.map → intersection-BrXp4YTO.js.map} +1 -1
- package/dist/{intersection-MvbRovUz.cjs → intersection-DqBqnpgh.cjs} +1 -1
- package/dist/{intersection-MvbRovUz.cjs.map → intersection-DqBqnpgh.cjs.map} +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +2 -2
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +1 -1
- package/dist/{layout-D0cR3hT1.cjs → layout-B0_IXfov.cjs} +1 -1
- package/dist/{layout-D0cR3hT1.cjs.map → layout-B0_IXfov.cjs.map} +1 -1
- package/dist/{layout-PZCF3kwl.cjs → layout-CTfRXQoz.cjs} +1 -1
- package/dist/{layout-PZCF3kwl.cjs.map → layout-CTfRXQoz.cjs.map} +1 -1
- package/dist/{layout-Y5qo3er8.js → layout-Cqghi_rx.js} +2 -2
- package/dist/{layout-Y5qo3er8.js.map → layout-Cqghi_rx.js.map} +1 -1
- package/dist/{layout-BE2ld1IY.js → layout-fjM1DWlF.js} +1 -1
- package/dist/{layout-BE2ld1IY.js.map → layout-fjM1DWlF.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/lazy-BDNnH_r7.cjs +1 -0
- package/dist/lazy-BDNnH_r7.cjs.map +1 -0
- package/dist/lazy-D6R5N5v4.js +13 -0
- package/dist/lazy-D6R5N5v4.js.map +1 -0
- package/dist/{lightbox-Ce8nMldr.cjs → lightbox-BWKTzA03.cjs} +1 -1
- package/dist/{lightbox-Ce8nMldr.cjs.map → lightbox-BWKTzA03.cjs.map} +1 -1
- package/dist/{lightbox-C_pqYF6q.js → lightbox-CnCTvqSu.js} +3 -3
- package/dist/{lightbox-C_pqYF6q.js.map → lightbox-CnCTvqSu.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-DcnTGee0.js → list-BpjKUOzM.js} +2 -2
- package/dist/{list-DcnTGee0.js.map → list-BpjKUOzM.js.map} +1 -1
- package/dist/{list-CLc_OQ5k.cjs → list-CMWHu6cV.cjs} +1 -1
- package/dist/{list-CLc_OQ5k.cjs.map → list-CMWHu6cV.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-Mi8bar6B.js → litElement.mixin-BnNYZ24e.js} +1 -1
- package/dist/{litElement.mixin-Mi8bar6B.js.map → litElement.mixin-BnNYZ24e.js.map} +1 -1
- package/dist/{litElement.mixin-DeT3kAOS.cjs → litElement.mixin-CtQOmwq6.cjs} +1 -1
- package/dist/{litElement.mixin-DeT3kAOS.cjs.map → litElement.mixin-CtQOmwq6.cjs.map} +1 -1
- package/dist/{magnetic-Dj52WplI.js → magnetic-BhXebqF3.js} +2 -2
- package/dist/{magnetic-Dj52WplI.js.map → magnetic-BhXebqF3.js.map} +1 -1
- package/dist/{magnetic-aBBnj_vk.cjs → magnetic-CVXEkYTA.cjs} +1 -1
- package/dist/{magnetic-aBBnj_vk.cjs.map → magnetic-CVXEkYTA.cjs.map} +1 -1
- package/dist/{mailbox-BrLZPj2o.js → mailbox-CHIpxS3W.js} +5 -5
- package/dist/{mailbox-BrLZPj2o.js.map → mailbox-CHIpxS3W.js.map} +1 -1
- package/dist/{mailbox-CE5sTDsQ.cjs → mailbox-Tg1CROVz.cjs} +1 -1
- package/dist/{mailbox-CE5sTDsQ.cjs.map → mailbox-Tg1CROVz.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-SNb-3q5h.js → map-YY1Q4FWO.js} +1 -1
- package/dist/{map-SNb-3q5h.js.map → map-YY1Q4FWO.js.map} +1 -1
- package/dist/{map-CKzhM6uY.cjs → map-Z_dsu-dv.cjs} +1 -1
- package/dist/{map-CKzhM6uY.cjs.map → map-Z_dsu-dv.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{menu-VErqs9NG.js → menu-BIBUgS1T.js} +2 -2
- package/dist/{menu-VErqs9NG.js.map → menu-BIBUgS1T.js.map} +1 -1
- package/dist/{menu-BnGjBrdD.cjs → menu-DS8Iz4fJ.cjs} +1 -1
- package/dist/{menu-BnGjBrdD.cjs.map → menu-DS8Iz4fJ.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- 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 +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-B_Fkxv7d.js → notification-ChAvNXf3.js} +3 -3
- package/dist/{notification-B_Fkxv7d.js.map → notification-ChAvNXf3.js.map} +1 -1
- package/dist/{notification-DE5dFf8G.cjs → notification-DPUkuifB.cjs} +1 -1
- package/dist/{notification-DE5dFf8G.cjs.map → notification-DPUkuifB.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-DuAlGv27.js → option-Ci7C8xxh.js} +1 -1
- package/dist/{option-DuAlGv27.js.map → option-Ci7C8xxh.js.map} +1 -1
- package/dist/{option-BmbP5ulK.cjs → option-OIp0joyN.cjs} +1 -1
- package/dist/{option-BmbP5ulK.cjs.map → option-OIp0joyN.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-J_eJCUTX.cjs.map → overlay-stack-7bs4ZNnh.cjs.map} +1 -1
- package/dist/{overlay-stack-BJt_r6aZ.js.map → overlay-stack-DXPYHPhk.js.map} +1 -1
- package/dist/overlay.cjs +130 -0
- package/dist/overlay.cjs.map +1 -0
- package/dist/overlay.js +570 -0
- package/dist/overlay.js.map +1 -0
- package/dist/page.cjs +1 -1
- package/dist/page.js +4 -4
- package/dist/{progress-Bt9gUiGP.cjs → progress-32Cad1NX.cjs} +1 -1
- package/dist/{progress-Bt9gUiGP.cjs.map → progress-32Cad1NX.cjs.map} +1 -1
- package/dist/{progress-BnXr7aAs.js → progress-DGkwPgDX.js} +1 -1
- package/dist/{progress-BnXr7aAs.js.map → progress-DGkwPgDX.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{provide-Disc6_zz.js → provide-BuzyBLGj.js} +1 -1
- package/dist/{provide-Disc6_zz.js.map → provide-BuzyBLGj.js.map} +1 -1
- package/dist/{provide-CnXCF-UP.cjs → provide-MvHcXKzT.cjs} +1 -1
- package/dist/{provide-CnXCF-UP.cjs.map → provide-MvHcXKzT.cjs.map} +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +1 -1
- package/dist/{radio-group-BgZgHMoA.js → radio-group-B72sYGnS.js} +1 -1
- package/dist/{radio-group-BgZgHMoA.js.map → radio-group-B72sYGnS.js.map} +1 -1
- package/dist/{radio-group-DkBFgq_3.cjs → radio-group-B7DuNxUq.cjs} +1 -1
- package/dist/{radio-group-DkBFgq_3.cjs.map → radio-group-B7DuNxUq.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{reduced-motion-DR32yKEO.cjs → reduced-motion-9RjNnhIg.cjs} +1 -1
- package/dist/{reduced-motion-DR32yKEO.cjs.map → reduced-motion-9RjNnhIg.cjs.map} +1 -1
- package/dist/{reduced-motion-B83yZbcO.js.map → reduced-motion-BZTLqAyl.js.map} +1 -1
- package/dist/{rxjs-utils-CN9fv8Xq.js → rxjs-utils-CKTnEKUH.js} +1 -1
- package/dist/{rxjs-utils-CN9fv8Xq.js.map → rxjs-utils-CKTnEKUH.js.map} +1 -1
- package/dist/{rxjs-utils-Vn6DCKgL.cjs → rxjs-utils-DJbZRjp3.cjs} +1 -1
- package/dist/{rxjs-utils-Vn6DCKgL.cjs.map → rxjs-utils-DJbZRjp3.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-57rkTHm8.js → scroll-CdmXRXh2.js} +1 -1
- package/dist/{scroll-57rkTHm8.js.map → scroll-CdmXRXh2.js.map} +1 -1
- package/dist/{scroll-hWt0b1gK.cjs → scroll-V1rAZ9fK.cjs} +1 -1
- package/dist/{scroll-hWt0b1gK.cjs.map → scroll-V1rAZ9fK.cjs.map} +1 -1
- package/dist/{search-BlGJ6uJv.js.map → search-CvUZRLF1.js.map} +1 -1
- package/dist/{search-C8eAOzBm.cjs.map → search-CwMav5QB.cjs.map} +1 -1
- package/dist/{select-BDonPD5a.cjs → select-DFxoBgEf.cjs} +1 -1
- package/dist/{select-BDonPD5a.cjs.map → select-DFxoBgEf.cjs.map} +1 -1
- package/dist/{select-CkOAwmxC.js → select-wFDKDLQI.js} +2 -2
- package/dist/{select-CkOAwmxC.js.map → select-wFDKDLQI.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-Bv2mPHWk.cjs → sheet-DdlZhnDG.cjs} +2 -2
- package/dist/{sheet-Bv2mPHWk.cjs.map → sheet-DdlZhnDG.cjs.map} +1 -1
- package/dist/{sheet-NUgEmozP.js → sheet-LFVo5iN4.js} +4 -4
- package/dist/{sheet-NUgEmozP.js.map → sheet-LFVo5iN4.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-BKmnlkpZ.cjs → sheet.service-BfNDB0K0.cjs} +1 -1
- package/dist/{sheet.service-BKmnlkpZ.cjs.map → sheet.service-BfNDB0K0.cjs.map} +1 -1
- package/dist/{sheet.service-CanLo8ko.js → sheet.service-DQE7-_wq.js} +3 -3
- package/dist/{sheet.service-CanLo8ko.js.map → sheet.service-DQE7-_wq.js.map} +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/INDEX.md +1 -1
- package/dist/skills/overlay.md +200 -0
- package/dist/skills/schmancy/INDEX.md +1 -1
- package/dist/skills/schmancy/overlay.md +200 -0
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{sound.service-BjSoGjmT.cjs → sound.service-BEN6Xjy_.cjs} +1 -1
- package/dist/{sound.service-BjSoGjmT.cjs.map → sound.service-BEN6Xjy_.cjs.map} +1 -1
- package/dist/{sound.service-cdkw3Wkv.js → sound.service-DWZe6swU.js} +1 -1
- package/dist/{sound.service-cdkw3Wkv.js.map → sound.service-DWZe6swU.js.map} +1 -1
- package/dist/{splash-screen-BemqNFNj.cjs → splash-screen-C9HqX2nR.cjs} +1 -1
- package/dist/{splash-screen-BemqNFNj.cjs.map → splash-screen-C9HqX2nR.cjs.map} +1 -1
- package/dist/{splash-screen-B0ppA3f1.js → splash-screen-COg3Z6n8.js} +1 -1
- package/dist/{splash-screen-B0ppA3f1.js.map → splash-screen-COg3Z6n8.js.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-Cjy9zCiU.js → src-C7niWYur.js} +51 -51
- package/dist/{src-Cjy9zCiU.js.map → src-C7niWYur.js.map} +1 -1
- package/dist/{src-ByGCYD-E.cjs → src-I4M33WK2.cjs} +3 -3
- package/dist/{src-ByGCYD-E.cjs.map → src-I4M33WK2.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +3 -3
- package/dist/{store-CO4nJyGj.cjs → store-CjFHCSDb.cjs} +1 -1
- package/dist/{store-CO4nJyGj.cjs.map → store-CjFHCSDb.cjs.map} +1 -1
- package/dist/{store-Bmj6rvZY.js.map → store-CjzZDQt8.js.map} +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +1 -1
- package/dist/{surface-CtpWeSGn.js → surface-0XM4DBaT.js} +2 -2
- package/dist/{surface-CtpWeSGn.js.map → surface-0XM4DBaT.js.map} +1 -1
- package/dist/{surface-CoLYICO1.cjs → surface-B6DA01kL.cjs} +1 -1
- package/dist/{surface-CoLYICO1.cjs.map → surface-B6DA01kL.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{surface.mixin-CSKqQH-0.cjs → surface.mixin-DxOi-xo0.cjs} +1 -1
- package/dist/{surface.mixin-CSKqQH-0.cjs.map → surface.mixin-DxOi-xo0.cjs.map} +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/{table-COQKtlJB.cjs → table-B-DsOqzT.cjs} +2 -2
- package/dist/{table-COQKtlJB.cjs.map → table-B-DsOqzT.cjs.map} +1 -1
- package/dist/{table-bgFb1KYU.js → table-hBEZRxM_.js} +3 -3
- package/dist/{table-bgFb1KYU.js.map → table-hBEZRxM_.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-BicCpU1B.js → tabs-C7r4TqcX.js} +2 -2
- package/dist/{tabs-BicCpU1B.js.map → tabs-C7r4TqcX.js.map} +1 -1
- package/dist/{tabs-CoMJAXDy.cjs → tabs-DZaLZUBy.cjs} +1 -1
- package/dist/{tabs-CoMJAXDy.cjs.map → tabs-DZaLZUBy.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-Bh58QnlW.cjs +2 -0
- package/dist/{tailwind.mixin-BfdVIGgD.cjs.map → tailwind.mixin-Bh58QnlW.cjs.map} +1 -1
- package/dist/tailwind.mixin-H5Pn7vSJ.js +219 -0
- package/dist/{tailwind.mixin-CNdR3zFD.js.map → tailwind.mixin-H5Pn7vSJ.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CxTSwn3x.cjs → textarea-B2544vx9.cjs} +1 -1
- package/dist/{textarea-CxTSwn3x.cjs.map → textarea-B2544vx9.cjs.map} +1 -1
- package/dist/{textarea-D7O9Uo15.js → textarea-CS-KdSLz.js} +1 -1
- package/dist/{textarea-D7O9Uo15.js.map → textarea-CS-KdSLz.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-DGiyJMTT.js → theme-Cq_c9IO3.js} +7 -7
- package/dist/{theme-DGiyJMTT.js.map → theme-Cq_c9IO3.js.map} +1 -1
- package/dist/{theme-CCez6SRm.cjs → theme-DU5yXaV-.cjs} +1 -1
- package/dist/{theme-CCez6SRm.cjs.map → theme-DU5yXaV-.cjs.map} +1 -1
- package/dist/{theme-button-BV0CxpGn.cjs → theme-button-CPujUbgV.cjs} +1 -1
- package/dist/{theme-button-BV0CxpGn.cjs.map → theme-button-CPujUbgV.cjs.map} +1 -1
- package/dist/{theme-button-s9GfSQL5.js → theme-button-OJl2ma0u.js} +1 -1
- package/dist/{theme-button-s9GfSQL5.js.map → theme-button-OJl2ma0u.js.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.events-EznKK2Y0.cjs.map → theme.events-DakXxZeP.cjs.map} +1 -1
- package/dist/{theme.events-Bw3mYjUA.js.map → theme.events-NuihzD_p.js.map} +1 -1
- package/dist/{theme.interface-Cyqv5XWY.js.map → theme.interface-Buged9Cg.js.map} +1 -1
- package/dist/{theme.interface-CCE3L1ql.cjs.map → theme.interface-DTwkuAKJ.cjs.map} +1 -1
- package/dist/theme.js +5 -5
- package/dist/{theme.service-ETiKUwVy.cjs → theme.service-DxJPUGlu.cjs} +1 -1
- package/dist/{theme.service-ETiKUwVy.cjs.map → theme.service-DxJPUGlu.cjs.map} +1 -1
- package/dist/{theme.service-_qP5WvB9.js → theme.service-cOfPrtfe.js} +2 -2
- package/dist/{theme.service-_qP5WvB9.js.map → theme.service-cOfPrtfe.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{tslib.es6-PMITL0Z3.cjs.map → tslib.es6-Cnt75pb6.cjs.map} +1 -1
- package/dist/{tslib.es6-vJQZBGJO.js.map → tslib.es6-DMzzJKHV.js.map} +1 -1
- package/dist/{typewriter-BTqEQXsX.js → typewriter-DyN7xa0n.js} +5 -5
- package/dist/{typewriter-BTqEQXsX.js.map → typewriter-DyN7xa0n.js.map} +1 -1
- package/dist/{typewriter-DeaL3NfZ.cjs → typewriter-LK0S4NEr.cjs} +1 -1
- package/dist/{typewriter-DeaL3NfZ.cjs.map → typewriter-LK0S4NEr.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-C8PD8So2.cjs → utils-2qrmPb78.cjs} +1 -1
- package/dist/{utils-C8PD8So2.cjs.map → utils-2qrmPb78.cjs.map} +1 -1
- package/dist/{utils-DVuCPDfw.js → utils-xBXLvebz.js} +3 -3
- package/dist/{utils-DVuCPDfw.js.map → utils-xBXLvebz.js.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +5 -5
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-CDHDVOwO.js → window-BWecg8Ih.js} +6 -6
- package/dist/{window-CDHDVOwO.js.map → window-BWecg8Ih.js.map} +1 -1
- package/dist/{window-IGZgxuUC.cjs → window-Cjv2GqSN.cjs} +1 -1
- package/dist/{window-IGZgxuUC.cjs.map → window-Cjv2GqSN.cjs.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +3 -2
- package/skills/schmancy/INDEX.md +1 -1
- package/skills/schmancy/overlay.md +200 -0
- package/src/overlay/index.ts +15 -0
- package/src/overlay/overlay.animations.ts +137 -0
- package/src/overlay/overlay.component.ts +452 -0
- package/src/overlay/overlay.confirm-body.ts +149 -0
- package/src/overlay/overlay.gestures.ts +131 -0
- package/src/overlay/overlay.layout.ts +76 -0
- package/src/overlay/overlay.service.ts +299 -0
- package/src/overlay/overlay.stack.ts +171 -0
- package/src/overlay/overlay.types.ts +146 -0
- package/types/src/overlay/index.d.ts +5 -0
- package/types/src/overlay/overlay.animations.d.ts +26 -0
- package/types/src/overlay/overlay.component.d.ts +48 -0
- package/types/src/overlay/overlay.confirm-body.d.ts +42 -0
- package/types/src/overlay/overlay.gestures.d.ts +39 -0
- package/types/src/overlay/overlay.layout.d.ts +48 -0
- package/types/src/overlay/overlay.service.d.ts +62 -0
- package/types/src/overlay/overlay.stack.d.ts +25 -0
- package/types/src/overlay/overlay.types.d.ts +122 -0
- package/dist/area-CApZWjqs.cjs.map +0 -1
- package/dist/area-D_p1YBgP.js.map +0 -1
- package/dist/chunk-BCfY8kxB.cjs +0 -1
- package/dist/context-C6GwmNJJ.cjs +0 -1
- package/dist/context-oBTPHrbc.js +0 -3
- package/dist/float-yZoLnUg0.cjs +0 -1
- package/dist/tailwind.mixin-BfdVIGgD.cjs +0 -2
- package/dist/tailwind.mixin-CNdR3zFD.js +0 -219
- /package/dist/{animation-Bcwh107v.cjs → animation-CQRdLgzX.cjs} +0 -0
- /package/dist/{animation-CXKSuUoE.js → animation-hXFClrIn.js} +0 -0
- /package/dist/{date-range-inline-B_g1YXu3.js → date-range-inline-CpKG6qt2.js} +0 -0
- /package/dist/{flow-BPDtbhLe.js → flow-BGkHnOnd.js} +0 -0
- /package/dist/{flow-Dn9AZktE.cjs → flow-ClAJ6Qby.cjs} +0 -0
- /package/dist/{form-C1qS9uvS.js → form-rCZqoAoK.js} +0 -0
- /package/dist/{hashContent-BUqULUiZ.js → hashContent-B2IntJQf.js} +0 -0
- /package/dist/{hashContent-CI39BY-_.cjs → hashContent-CahnEuut.cjs} +0 -0
- /package/dist/{input-Dv-HtkM9.js → input-Bc3bVISm.js} +0 -0
- /package/dist/{intersection-C0JuW_7U.js → intersection-BrXp4YTO.js} +0 -0
- /package/dist/{overlay-stack-J_eJCUTX.cjs → overlay-stack-7bs4ZNnh.cjs} +0 -0
- /package/dist/{overlay-stack-BJt_r6aZ.js → overlay-stack-DXPYHPhk.js} +0 -0
- /package/dist/{reduced-motion-B83yZbcO.js → reduced-motion-BZTLqAyl.js} +0 -0
- /package/dist/{search-BlGJ6uJv.js → search-CvUZRLF1.js} +0 -0
- /package/dist/{search-C8eAOzBm.cjs → search-CwMav5QB.cjs} +0 -0
- /package/dist/{store-Bmj6rvZY.js → store-CjzZDQt8.js} +0 -0
- /package/dist/{theme.events-EznKK2Y0.cjs → theme.events-DakXxZeP.cjs} +0 -0
- /package/dist/{theme.events-Bw3mYjUA.js → theme.events-NuihzD_p.js} +0 -0
- /package/dist/{theme.interface-Cyqv5XWY.js → theme.interface-Buged9Cg.js} +0 -0
- /package/dist/{theme.interface-CCE3L1ql.cjs → theme.interface-DTwkuAKJ.cjs} +0 -0
- /package/dist/{tslib.es6-PMITL0Z3.cjs → tslib.es6-Cnt75pb6.cjs} +0 -0
- /package/dist/{tslib.es6-vJQZBGJO.js → tslib.es6-DMzzJKHV.js} +0 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# Overlay — `show` / `<schmancy-overlay>`
|
|
2
|
+
|
|
3
|
+
> One overlay primitive. Anchored by default. Observable lifecycle. Replaces `sheet` + `$dialog`.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import {
|
|
9
|
+
show, confirm, prompt,
|
|
10
|
+
openOverlays$, overlayEvents,
|
|
11
|
+
dismissAll, lazy,
|
|
12
|
+
} from '@mhmo91/schmancy/overlay'
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## The novel default — anchored
|
|
16
|
+
|
|
17
|
+
When you're triggering an overlay from a user gesture (click, touch), pass the event as `anchor`. The overlay blooms from the point of attention instead of materializing at the viewport center.
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
private handlePick = (ev: MouseEvent) => {
|
|
21
|
+
show(TemplatePicker, { anchor: ev, props: { kind: 'email' } })
|
|
22
|
+
.pipe(takeUntil(this.disconnecting))
|
|
23
|
+
.subscribe(picked => { if (picked) this.template = picked })
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Centered is the fallback (no anchor given). Sheet is the responsive adaptation (narrow viewport / touch / oversized content). You never pick layout — the system does.
|
|
28
|
+
|
|
29
|
+
## API
|
|
30
|
+
|
|
31
|
+
| Export | Signature | Purpose |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `show<T>(content, opts?)` | `Observable<T \| undefined>` | Primary verb. Cold stream — subscribe to mount, unsubscribe to dismiss. |
|
|
34
|
+
| `confirm(opts)` | `Promise<boolean>` | Yes/no dialog. `variant: 'danger'` for destructive. |
|
|
35
|
+
| `prompt(opts)` | `Promise<string \| null>` | Single-line input. |
|
|
36
|
+
| `dismissAll()` | `void` | Close every open overlay (LIFO). |
|
|
37
|
+
| `openOverlays$` | `Observable<readonly OverlayEntry[]>` | Mechanical state — the current stack. |
|
|
38
|
+
| `overlayEvents<E>(tag, evt)` | `Observable<E>` | Third-party subscription to events from any overlay of `tag`. |
|
|
39
|
+
| `lazy(loader)` | `LazyComponent` | Re-exported from area for lazy-loaded content. |
|
|
40
|
+
|
|
41
|
+
## Subscription IS the overlay lifecycle
|
|
42
|
+
|
|
43
|
+
Inside any `$LitElement`, pipe `takeUntil(this.disconnecting)`. When the caller unmounts, the overlay auto-dismisses — no handles to track, no leaks.
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
show(MyForm, { props: { id }, anchor: ev })
|
|
47
|
+
.pipe(takeUntil(this.disconnecting))
|
|
48
|
+
.subscribe(saved => saved && this.store.persist(saved))
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Programmatic dismiss = unsubscribe. Either store the Subscription and call `.unsubscribe()`, or compose a terminator stream via `takeUntil(merge(this.disconnecting, saveTrigger$))`.
|
|
52
|
+
|
|
53
|
+
## How content returns a result — three platform paths
|
|
54
|
+
|
|
55
|
+
Priority order:
|
|
56
|
+
|
|
57
|
+
1. **CustomEvent('close', { detail })** — dispatched from content. `detail` becomes the Observable emission.
|
|
58
|
+
2. **`<form method="dialog">`** — native submit. The dialog's `returnValue` is emitted.
|
|
59
|
+
3. **User dismissal** — Esc / backdrop click / swipe / back-button / `.unsubscribe()` / `dismissAll()` emits `undefined`.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
// Inside a content component:
|
|
63
|
+
this.dispatchEvent(new CustomEvent('close', {
|
|
64
|
+
detail: savedRecord,
|
|
65
|
+
bubbles: true,
|
|
66
|
+
composed: true, // cross shadow-DOM
|
|
67
|
+
}))
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
// Inline template with native form — zero JS
|
|
72
|
+
show<string>(html`
|
|
73
|
+
<form method="dialog">
|
|
74
|
+
<button value="save">Save</button>
|
|
75
|
+
<button value="discard">Discard</button>
|
|
76
|
+
<button value="">Cancel</button>
|
|
77
|
+
</form>
|
|
78
|
+
`)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Options
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
interface ShowOptions {
|
|
85
|
+
props?: Record<string, unknown> // merged into component
|
|
86
|
+
anchor?: MouseEvent | HTMLElement | { x, y } // NOVEL DEFAULT
|
|
87
|
+
dismissable?: boolean // default true
|
|
88
|
+
persist?: boolean // reuse DOM on re-show
|
|
89
|
+
signal?: AbortSignal // standard cancellation
|
|
90
|
+
modal?: boolean // force focus trap; rare
|
|
91
|
+
historyStrategy?: 'push' | 'replace' | 'silent' // default 'push'
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## History integration
|
|
96
|
+
|
|
97
|
+
Each `show()` pushes a history sentinel unless `historyStrategy: 'silent'`. Browser back dismisses the overlay instead of navigating the page. For forward-restore on routed callers, pair with `area.on(name)` — your overlay sits inside a route-observer's `switchMap`, so forward-navigation re-subscribes and re-opens the overlay naturally.
|
|
98
|
+
|
|
99
|
+
```ts
|
|
100
|
+
area.on('root').pipe(
|
|
101
|
+
map(route => route.params?.editId),
|
|
102
|
+
distinctUntilChanged(),
|
|
103
|
+
switchMap(id => id ? show(TaskEditor, { props: { id } }) : EMPTY),
|
|
104
|
+
takeUntil(this.disconnecting),
|
|
105
|
+
).subscribe()
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Layout dispatch — internal
|
|
109
|
+
|
|
110
|
+
Pure function of (anchor, content size, viewport):
|
|
111
|
+
|
|
112
|
+
- Narrow viewport (< 640px) or coarse-pointer → **sheet**
|
|
113
|
+
- Content > 80% viewport height or 90% width → **sheet**
|
|
114
|
+
- Anchor provided → **anchored**
|
|
115
|
+
- Fallback → **centered**
|
|
116
|
+
|
|
117
|
+
Callers never override. The `modal: true` escape hatch forces focus trap on an anchored overlay for the rare "menu-with-destructive-item" case.
|
|
118
|
+
|
|
119
|
+
## Examples
|
|
120
|
+
|
|
121
|
+
### 1. Confirm / prompt / danger
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
if (await confirm({ title: 'Delete?', message: '...', variant: 'danger', anchor: ev })) {
|
|
125
|
+
await store.delete(id)
|
|
126
|
+
}
|
|
127
|
+
const name = await prompt({ label: 'Name', defaultValue: 'Untitled', anchor: ev })
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 2. Cancellable via AbortSignal
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
const ac = new AbortController()
|
|
134
|
+
this.routeChange$.pipe(take(1)).subscribe(() => ac.abort())
|
|
135
|
+
show(LoadingOverlay, { signal: ac.signal })
|
|
136
|
+
.pipe(takeUntil(this.disconnecting))
|
|
137
|
+
.subscribe()
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 3. Observe events from any open overlay without owning it
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
// A header progress bar reflects any upload overlay's progress.
|
|
144
|
+
overlayEvents<CustomEvent<{ pct: number }>>('image-upload', 'progress')
|
|
145
|
+
.pipe(map(e => e.detail.pct), takeUntil(this.disconnecting))
|
|
146
|
+
.subscribe(pct => this.progress = pct)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 4. Stack-driven UI
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
openOverlays$.pipe(
|
|
153
|
+
map(s => s.length > 1),
|
|
154
|
+
distinctUntilChanged(),
|
|
155
|
+
takeUntil(this.disconnecting),
|
|
156
|
+
).subscribe(many => this.showCloseAllButton = many)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 5. Lazy-loaded heavy overlay with error recovery
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
show(lazy(() => import('./canvas-editor')))
|
|
163
|
+
.pipe(
|
|
164
|
+
catchError(err => { $notify.error('Load failed'); return EMPTY }),
|
|
165
|
+
takeUntil(this.disconnecting),
|
|
166
|
+
)
|
|
167
|
+
.subscribe()
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 6. Non-component caller (service / test)
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
const saved = await firstValueFrom(
|
|
174
|
+
show<Record>(MyPicker).pipe(defaultIfEmpty(undefined))
|
|
175
|
+
)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Migration cheatsheet — from `sheet` / `$dialog`
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
sheet.push({ component, props }) → show(C, { props }).pipe(takeUntil(...)).subscribe()
|
|
182
|
+
sheet.push({ ..., position: 'side'|'bottom' }) → show(C, { props }) // engine decides
|
|
183
|
+
sheet.dismiss(uid) → sub.unsubscribe() | dismissAll()
|
|
184
|
+
sheet.isOpen(uid) → openOverlays$.pipe(map(s => s.some(...)))
|
|
185
|
+
|
|
186
|
+
$dialog.confirm(opts) → confirm(opts)
|
|
187
|
+
$dialog.ask(msg, ev) → confirm({ message: msg, anchor: ev })
|
|
188
|
+
$dialog.danger(opts) → confirm({ ...opts, variant: 'danger' })
|
|
189
|
+
$dialog.prompt(opts) → prompt(opts)
|
|
190
|
+
$dialog.component(tpl, { position: ev }) → show(tpl, { anchor: ev })
|
|
191
|
+
$dialog.dismiss() → dismissAll()
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Principles (why this shape)
|
|
195
|
+
|
|
196
|
+
- **rxjs SUBSCRIPTION_IS_STATE.** The overlay lifecycle is a subscription — setup on subscribe, teardown on unsubscribe. No imperative handles.
|
|
197
|
+
- **Fewer APIs, smarter system.** Caller declares intent (`show(X, { anchor })`); the system decides layout, focus trap, positioning, scroll lock, inert, back-button handling.
|
|
198
|
+
- **Native platform first.** `<dialog>` + `::backdrop` + `returnValue` carry the weight. `CustomEvent('close', { detail })` is the typed overlay on top.
|
|
199
|
+
- **Anchored is novel default.** Overlays bloom from the user's gesture instead of center-of-viewport.
|
|
200
|
+
- **Content identity is the key.** `overlayEvents` keys on tag name (stable across HMR). No uid strings in the public API.
|
|
@@ -28,7 +28,7 @@ The framework pieces — touch before components.
|
|
|
28
28
|
[Breadcrumb](./breadcrumb.md) · [Nav Drawer](./nav-drawer.md) · [Tabs](./tabs.md) · [Navigation Bar](./navigation-bar.md) · [Navigation Rail](./navigation-rail.md) · [Steps](./steps.md) · [Teleport](./teleport.md) · [Theme Button](./theme-button.md)
|
|
29
29
|
|
|
30
30
|
### Overlays
|
|
31
|
-
[Dialog](./dialog.md)
|
|
31
|
+
[Overlay](./overlay.md) — canonical · [Dialog](./dialog.md) / [Sheet](./sheet.md) — *deprecated, use Overlay* · [Notification](./notification.md) · [Menu](./menu.md) · [Dropdown](./dropdown.md) · [Tooltip (directive)](./tooltip.md) · [Lightbox](./lightbox.md) · [Expand](./expand.md)
|
|
32
32
|
|
|
33
33
|
### Interactive
|
|
34
34
|
[Button](./button.md) · [List](./list.md) · [Details](./details.md) · [Table](./table.md) · [Tree](./tree.md) · [Slider](./slider.md) · [QR Scanner](./qr-scanner.md)
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# Overlay — `show` / `<schmancy-overlay>`
|
|
2
|
+
|
|
3
|
+
> One overlay primitive. Anchored by default. Observable lifecycle. Replaces `sheet` + `$dialog`.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import {
|
|
9
|
+
show, confirm, prompt,
|
|
10
|
+
openOverlays$, overlayEvents,
|
|
11
|
+
dismissAll, lazy,
|
|
12
|
+
} from '@mhmo91/schmancy/overlay'
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## The novel default — anchored
|
|
16
|
+
|
|
17
|
+
When you're triggering an overlay from a user gesture (click, touch), pass the event as `anchor`. The overlay blooms from the point of attention instead of materializing at the viewport center.
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
private handlePick = (ev: MouseEvent) => {
|
|
21
|
+
show(TemplatePicker, { anchor: ev, props: { kind: 'email' } })
|
|
22
|
+
.pipe(takeUntil(this.disconnecting))
|
|
23
|
+
.subscribe(picked => { if (picked) this.template = picked })
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Centered is the fallback (no anchor given). Sheet is the responsive adaptation (narrow viewport / touch / oversized content). You never pick layout — the system does.
|
|
28
|
+
|
|
29
|
+
## API
|
|
30
|
+
|
|
31
|
+
| Export | Signature | Purpose |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `show<T>(content, opts?)` | `Observable<T \| undefined>` | Primary verb. Cold stream — subscribe to mount, unsubscribe to dismiss. |
|
|
34
|
+
| `confirm(opts)` | `Promise<boolean>` | Yes/no dialog. `variant: 'danger'` for destructive. |
|
|
35
|
+
| `prompt(opts)` | `Promise<string \| null>` | Single-line input. |
|
|
36
|
+
| `dismissAll()` | `void` | Close every open overlay (LIFO). |
|
|
37
|
+
| `openOverlays$` | `Observable<readonly OverlayEntry[]>` | Mechanical state — the current stack. |
|
|
38
|
+
| `overlayEvents<E>(tag, evt)` | `Observable<E>` | Third-party subscription to events from any overlay of `tag`. |
|
|
39
|
+
| `lazy(loader)` | `LazyComponent` | Re-exported from area for lazy-loaded content. |
|
|
40
|
+
|
|
41
|
+
## Subscription IS the overlay lifecycle
|
|
42
|
+
|
|
43
|
+
Inside any `$LitElement`, pipe `takeUntil(this.disconnecting)`. When the caller unmounts, the overlay auto-dismisses — no handles to track, no leaks.
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
show(MyForm, { props: { id }, anchor: ev })
|
|
47
|
+
.pipe(takeUntil(this.disconnecting))
|
|
48
|
+
.subscribe(saved => saved && this.store.persist(saved))
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Programmatic dismiss = unsubscribe. Either store the Subscription and call `.unsubscribe()`, or compose a terminator stream via `takeUntil(merge(this.disconnecting, saveTrigger$))`.
|
|
52
|
+
|
|
53
|
+
## How content returns a result — three platform paths
|
|
54
|
+
|
|
55
|
+
Priority order:
|
|
56
|
+
|
|
57
|
+
1. **CustomEvent('close', { detail })** — dispatched from content. `detail` becomes the Observable emission.
|
|
58
|
+
2. **`<form method="dialog">`** — native submit. The dialog's `returnValue` is emitted.
|
|
59
|
+
3. **User dismissal** — Esc / backdrop click / swipe / back-button / `.unsubscribe()` / `dismissAll()` emits `undefined`.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
// Inside a content component:
|
|
63
|
+
this.dispatchEvent(new CustomEvent('close', {
|
|
64
|
+
detail: savedRecord,
|
|
65
|
+
bubbles: true,
|
|
66
|
+
composed: true, // cross shadow-DOM
|
|
67
|
+
}))
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
// Inline template with native form — zero JS
|
|
72
|
+
show<string>(html`
|
|
73
|
+
<form method="dialog">
|
|
74
|
+
<button value="save">Save</button>
|
|
75
|
+
<button value="discard">Discard</button>
|
|
76
|
+
<button value="">Cancel</button>
|
|
77
|
+
</form>
|
|
78
|
+
`)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Options
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
interface ShowOptions {
|
|
85
|
+
props?: Record<string, unknown> // merged into component
|
|
86
|
+
anchor?: MouseEvent | HTMLElement | { x, y } // NOVEL DEFAULT
|
|
87
|
+
dismissable?: boolean // default true
|
|
88
|
+
persist?: boolean // reuse DOM on re-show
|
|
89
|
+
signal?: AbortSignal // standard cancellation
|
|
90
|
+
modal?: boolean // force focus trap; rare
|
|
91
|
+
historyStrategy?: 'push' | 'replace' | 'silent' // default 'push'
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## History integration
|
|
96
|
+
|
|
97
|
+
Each `show()` pushes a history sentinel unless `historyStrategy: 'silent'`. Browser back dismisses the overlay instead of navigating the page. For forward-restore on routed callers, pair with `area.on(name)` — your overlay sits inside a route-observer's `switchMap`, so forward-navigation re-subscribes and re-opens the overlay naturally.
|
|
98
|
+
|
|
99
|
+
```ts
|
|
100
|
+
area.on('root').pipe(
|
|
101
|
+
map(route => route.params?.editId),
|
|
102
|
+
distinctUntilChanged(),
|
|
103
|
+
switchMap(id => id ? show(TaskEditor, { props: { id } }) : EMPTY),
|
|
104
|
+
takeUntil(this.disconnecting),
|
|
105
|
+
).subscribe()
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Layout dispatch — internal
|
|
109
|
+
|
|
110
|
+
Pure function of (anchor, content size, viewport):
|
|
111
|
+
|
|
112
|
+
- Narrow viewport (< 640px) or coarse-pointer → **sheet**
|
|
113
|
+
- Content > 80% viewport height or 90% width → **sheet**
|
|
114
|
+
- Anchor provided → **anchored**
|
|
115
|
+
- Fallback → **centered**
|
|
116
|
+
|
|
117
|
+
Callers never override. The `modal: true` escape hatch forces focus trap on an anchored overlay for the rare "menu-with-destructive-item" case.
|
|
118
|
+
|
|
119
|
+
## Examples
|
|
120
|
+
|
|
121
|
+
### 1. Confirm / prompt / danger
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
if (await confirm({ title: 'Delete?', message: '...', variant: 'danger', anchor: ev })) {
|
|
125
|
+
await store.delete(id)
|
|
126
|
+
}
|
|
127
|
+
const name = await prompt({ label: 'Name', defaultValue: 'Untitled', anchor: ev })
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 2. Cancellable via AbortSignal
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
const ac = new AbortController()
|
|
134
|
+
this.routeChange$.pipe(take(1)).subscribe(() => ac.abort())
|
|
135
|
+
show(LoadingOverlay, { signal: ac.signal })
|
|
136
|
+
.pipe(takeUntil(this.disconnecting))
|
|
137
|
+
.subscribe()
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 3. Observe events from any open overlay without owning it
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
// A header progress bar reflects any upload overlay's progress.
|
|
144
|
+
overlayEvents<CustomEvent<{ pct: number }>>('image-upload', 'progress')
|
|
145
|
+
.pipe(map(e => e.detail.pct), takeUntil(this.disconnecting))
|
|
146
|
+
.subscribe(pct => this.progress = pct)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 4. Stack-driven UI
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
openOverlays$.pipe(
|
|
153
|
+
map(s => s.length > 1),
|
|
154
|
+
distinctUntilChanged(),
|
|
155
|
+
takeUntil(this.disconnecting),
|
|
156
|
+
).subscribe(many => this.showCloseAllButton = many)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 5. Lazy-loaded heavy overlay with error recovery
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
show(lazy(() => import('./canvas-editor')))
|
|
163
|
+
.pipe(
|
|
164
|
+
catchError(err => { $notify.error('Load failed'); return EMPTY }),
|
|
165
|
+
takeUntil(this.disconnecting),
|
|
166
|
+
)
|
|
167
|
+
.subscribe()
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 6. Non-component caller (service / test)
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
const saved = await firstValueFrom(
|
|
174
|
+
show<Record>(MyPicker).pipe(defaultIfEmpty(undefined))
|
|
175
|
+
)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Migration cheatsheet — from `sheet` / `$dialog`
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
sheet.push({ component, props }) → show(C, { props }).pipe(takeUntil(...)).subscribe()
|
|
182
|
+
sheet.push({ ..., position: 'side'|'bottom' }) → show(C, { props }) // engine decides
|
|
183
|
+
sheet.dismiss(uid) → sub.unsubscribe() | dismissAll()
|
|
184
|
+
sheet.isOpen(uid) → openOverlays$.pipe(map(s => s.some(...)))
|
|
185
|
+
|
|
186
|
+
$dialog.confirm(opts) → confirm(opts)
|
|
187
|
+
$dialog.ask(msg, ev) → confirm({ message: msg, anchor: ev })
|
|
188
|
+
$dialog.danger(opts) → confirm({ ...opts, variant: 'danger' })
|
|
189
|
+
$dialog.prompt(opts) → prompt(opts)
|
|
190
|
+
$dialog.component(tpl, { position: ev }) → show(tpl, { anchor: ev })
|
|
191
|
+
$dialog.dismiss() → dismissAll()
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Principles (why this shape)
|
|
195
|
+
|
|
196
|
+
- **rxjs SUBSCRIPTION_IS_STATE.** The overlay lifecycle is a subscription — setup on subscribe, teardown on unsubscribe. No imperative handles.
|
|
197
|
+
- **Fewer APIs, smarter system.** Caller declares intent (`show(X, { anchor })`); the system decides layout, focus trap, positioning, scroll lock, inert, back-button handling.
|
|
198
|
+
- **Native platform first.** `<dialog>` + `::backdrop` + `returnValue` carry the weight. `CustomEvent('close', { detail })` is the typed overlay on top.
|
|
199
|
+
- **Anchored is novel default.** Overlays bloom from the user's gesture instead of center-of-viewport.
|
|
200
|
+
- **Content identity is the key.** `overlayEvents` keys on tag name (stable across HMR). No uid strings in the public API.
|
package/dist/slider.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-CtQOmwq6.cjs`);require(`./mixins.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/cache.js`);var s=class extends t.t(a.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
scroll-snap-align: center; /* If your slider uses scroll-snap */
|
package/dist/slider.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./decorate-D_utPUsC.js";
|
|
2
|
-
import { t } from "./litElement.mixin-
|
|
2
|
+
import { t } from "./litElement.mixin-BnNYZ24e.js";
|
|
3
3
|
import "./mixins.js";
|
|
4
4
|
import { fromEvent as n } from "rxjs";
|
|
5
5
|
import { throttleTime as r } from "rxjs/operators";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk-BCfY8kxB.cjs`);const e=require(`./store-CO4nJyGj.cjs`);let t=require(`rxjs`);var n=e.M({theme:null,volume:.15,muted:!1},`local`,`schmancy-sound-settings`),r={joyful:{puffs:[{startTime:0,duration:.08,frequency:3e3,volume:.3},{startTime:.06,duration:.1,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.15,frequency:784,volume:.25,type:`sine`},{startTime:.1,duration:.2,frequency:988,volume:.3,type:`sine`},{startTime:.18,duration:.25,frequency:1175,volume:.25,type:`sine`}]},content:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},excited:{puffs:[{startTime:0,duration:.06,frequency:2500,volume:.25},{startTime:.05,duration:.06,frequency:3e3,volume:.3},{startTime:.1,duration:.08,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.12,frequency:880,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:1047,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1319,volume:.3,type:`sine`}]},proud:{puffs:[{startTime:0,duration:.15,frequency:1800,volume:.3}],tones:[{startTime:.05,duration:.25,frequency:523,volume:.25,type:`sine`},{startTime:.08,duration:.25,frequency:659,volume:.2,type:`sine`},{startTime:.11,duration:.3,frequency:784,volume:.25,type:`sine`}]},hopeful:{puffs:[{startTime:0,duration:.12,frequency:2200,volume:.2}],tones:[{startTime:.03,duration:.3,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},relieved:{puffs:[{startTime:0,duration:.25,frequency:1200,volume:.35}],tones:[{startTime:.1,duration:.35,frequency:659,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:523,volume:.15,type:`sine`,filterFrequency:800}]},grateful:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:440,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},peaceful:{puffs:[{startTime:0,duration:.3,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:500}]},playful:{puffs:[{startTime:0,duration:.05,frequency:2800,volume:.2},{startTime:.08,duration:.05,frequency:3200,volume:.25},{startTime:.14,duration:.06,frequency:2800,volume:.2}],tones:[{startTime:.03,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.1,duration:.08,frequency:988,volume:.25,type:`sine`},{startTime:.16,duration:.12,frequency:784,volume:.2,type:`sine`}]},amused:{puffs:[{startTime:0,duration:.04,frequency:2500,volume:.2},{startTime:.06,duration:.04,frequency:2800,volume:.22},{startTime:.11,duration:.05,frequency:2600,volume:.18}],tones:[{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},curious:{puffs:[{startTime:0,duration:.1,frequency:2e3,volume:.2}],tones:[{startTime:.03,duration:.2,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},inspired:{puffs:[{startTime:0,duration:.1,frequency:2500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`},{startTime:.07,duration:.28,frequency:784.5,volume:.16,type:`sine`},{startTime:.09,duration:.26,frequency:1046,volume:.12,type:`sine`}]},confident:{puffs:[{startTime:0,duration:.12,frequency:1500,volume:.3}],tones:[{startTime:.04,duration:.2,frequency:523,volume:.25,type:`sine`},{startTime:.06,duration:.22,frequency:659,volume:.2,type:`sine`}]},loved:{puffs:[{startTime:0,duration:.2,frequency:1e3,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:392,volume:.18,type:`sine`,filterFrequency:600},{startTime:.2,duration:.45,frequency:494,volume:.15,type:`sine`,filterFrequency:600}]},comforted:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:523,volume:.15,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:800}]},energized:{puffs:[{startTime:0,duration:.05,frequency:3e3,volume:.25},{startTime:.04,duration:.05,frequency:3500,volume:.28}],tones:[{startTime:.02,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:988,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1175,volume:.22,type:`sine`}]},celebrated:{puffs:[{startTime:0,duration:.08,frequency:2500,volume:.2}],tones:[{startTime:.02,duration:.18,frequency:523,volume:.22,type:`sine`},{startTime:.08,duration:.18,frequency:659,volume:.24,type:`sine`},{startTime:.14,duration:.2,frequency:784,volume:.26,type:`sine`},{startTime:.22,duration:.3,frequency:1047,volume:.22,type:`sine`}]},sad:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},lonely:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},disappointed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},heartbroken:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},grieving:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},hopeless:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},empty:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},discouraged:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},melancholic:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},homesick:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},hurt:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},miserable:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},regretful:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},ashamed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},inferior:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},anxious:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}],description:`Tight, quick puffs with uncertain wobble`},worried:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},afraid:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},terrified:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},panicked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},nervous:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},uneasy:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},insecure:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},overwhelmed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},stressed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},tense:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},apprehensive:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},startled:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},suspicious:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},vulnerable:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},annoyed:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},irritated:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},frustrated:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},angry:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},enraged:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},bitter:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},resentful:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},jealous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},envious:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},indignant:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},impatient:{puffs:[{startTime:0,duration:.04,frequency:1500,volume:.2},{startTime:.08,duration:.04,frequency:1500,volume:.2},{startTime:.16,duration:.04,frequency:1500,volume:.22}],tones:[{startTime:.06,duration:.1,frequency:523,volume:.15,type:`sine`}]},hostile:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},contemptuous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},tired:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},exhausted:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},drained:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},burnedOut:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},numb:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},bored:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},unmotivated:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},apathetic:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},restless:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},calm:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},relaxed:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},atEase:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},balanced:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},stable:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},secure:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},safe:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},centered:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},grounded:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},accepting:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},connected:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},accepted:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},included:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},belonging:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},appreciated:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},valued:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},respected:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},supported:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},protective:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},compassionate:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},empathetic:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},conflicted:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},confused:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},ambivalent:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},nostalgic:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},guilty:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},embarrassed:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},surprised:{puffs:[{startTime:0,duration:.06,frequency:2800,volume:.25}],tones:[{startTime:.02,duration:.15,frequency:659,volume:.2,type:`sine`,frequencyEnd:988}]},shocked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},awestruck:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:440,volume:.15,type:`sine`},{startTime:.1,duration:.38,frequency:660,volume:.12,type:`sine`},{startTime:.12,duration:.36,frequency:880,volume:.09,type:`sine`}]},skeptical:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]}},i=class e{get theme(){return n.value.theme}get volume(){return n.value.volume}get muted(){return n.value.muted}get themeName(){return this.theme?.name??`default`}constructor(){this.audioContext=null,this.theme$=n.$.pipe((0,t.map)(e=>e.theme),(0,t.shareReplay)(1)),this.volume$=n.$.pipe((0,t.map)(e=>e.volume),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.muted$=n.$.pipe((0,t.map)(e=>e.muted),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this._themeName$=new t.BehaviorSubject(`default`),this.themeName$=this._themeName$.asObservable(),this.theme$.subscribe(e=>{this._themeName$.next(e?.name??`default`)})}getContext(){if(!this.audioContext){let e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e}return this.audioContext.state===`suspended`&&this.audioContext.resume(),this.audioContext}playPuff(e,t,n){let r=this.getContext(),i=Math.floor(r.sampleRate*t.duration),a=r.createBuffer(1,i,r.sampleRate),o=a.getChannelData(0);for(let e=0;e<i;e++)o[e]=2*Math.random()-1;let s=r.createBufferSource();s.buffer=a;let c=r.createBiquadFilter();c.type=`bandpass`,c.frequency.value=t.frequency,c.Q.value=.7;let l=r.createGain();l.gain.setValueAtTime(0,e),l.gain.linearRampToValueAtTime(t.volume*n,e+.015),l.gain.exponentialRampToValueAtTime(.001,e+t.duration),s.connect(c).connect(l).connect(r.destination),s.start(e),s.stop(e+t.duration)}playTone(e,t,n){let r=this.getContext(),i=r.createOscillator(),a=r.createGain();i.type=t.type,i.frequency.setValueAtTime(t.frequency,e),t.frequencyEnd&&i.frequency.exponentialRampToValueAtTime(t.frequencyEnd,e+.8*t.duration);let o=i;if(t.filterFrequency){let e=r.createBiquadFilter();e.type=`lowpass`,e.frequency.value=t.filterFrequency,i.connect(e),o=e}a.gain.setValueAtTime(0,e),a.gain.linearRampToValueAtTime(t.volume*n,e+.02),a.gain.exponentialRampToValueAtTime(.001,e+t.duration),o.connect(a).connect(r.destination),i.start(e),i.stop(e+t.duration)}setTheme(e){n.set({theme:e})}resetTheme(){n.set({theme:null})}setVolume(e){n.set({volume:Math.max(0,Math.min(1,e))})}mute(){n.set({muted:!0})}unmute(){n.set({muted:!1})}toggleMute(){n.set({muted:!this.muted})}getSoundForFeeling(e){let t=this.theme;if(t?.feelings?.[e])return t.feelings[e];if(t?.categoryDefaults){let n=this.getCategoryForFeeling(e);if(t.categoryDefaults[n])return t.categoryDefaults[n]}return r[e]}getCategoryForFeeling(e){return[`joyful`,`content`,`excited`,`proud`,`hopeful`,`relieved`,`grateful`,`peaceful`,`playful`,`amused`,`curious`,`inspired`,`confident`,`loved`,`comforted`,`energized`,`celebrated`].includes(e)?`happy`:[`sad`,`lonely`,`disappointed`,`heartbroken`,`grieving`,`hopeless`,`empty`,`discouraged`,`melancholic`,`homesick`,`hurt`,`miserable`,`regretful`,`ashamed`,`inferior`].includes(e)?`sad`:[`anxious`,`worried`,`afraid`,`terrified`,`panicked`,`nervous`,`uneasy`,`insecure`,`overwhelmed`,`stressed`,`tense`,`apprehensive`,`startled`,`suspicious`,`vulnerable`].includes(e)?`anxious`:[`annoyed`,`irritated`,`frustrated`,`angry`,`enraged`,`bitter`,`resentful`,`jealous`,`envious`,`indignant`,`impatient`,`hostile`,`contemptuous`].includes(e)?`angry`:[`tired`,`exhausted`,`drained`,`burnedOut`,`numb`,`bored`,`unmotivated`,`apathetic`,`restless`].includes(e)?`tired`:[`calm`,`relaxed`,`atEase`,`balanced`,`stable`,`secure`,`safe`,`centered`,`grounded`,`accepting`].includes(e)?`calm`:[`connected`,`accepted`,`included`,`belonging`,`appreciated`,`valued`,`respected`,`supported`,`protective`,`compassionate`,`empathetic`].includes(e)?`connected`:`mixed`}play(e){if(this.muted)return;let t=this.getSoundForFeeling(e),n=this.getContext().currentTime,r=this.theme?.masterVolume??1,i=this.volume*r;t.puffs.forEach(e=>{this.playPuff(n+e.startTime,e,i)}),t.tones.forEach(e=>{this.playTone(n+e.startTime,e,i)})}dispose(){this.audioContext&&=(this.audioContext.close(),null)}static getInstance(){return e.instance||=new e,e.instance}}.getInstance(),a=i;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
1
|
+
require(`./chunk-CncqDLb2.cjs`);const e=require(`./store-CjFHCSDb.cjs`);let t=require(`rxjs`);var n=e.M({theme:null,volume:.15,muted:!1},`local`,`schmancy-sound-settings`),r={joyful:{puffs:[{startTime:0,duration:.08,frequency:3e3,volume:.3},{startTime:.06,duration:.1,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.15,frequency:784,volume:.25,type:`sine`},{startTime:.1,duration:.2,frequency:988,volume:.3,type:`sine`},{startTime:.18,duration:.25,frequency:1175,volume:.25,type:`sine`}]},content:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},excited:{puffs:[{startTime:0,duration:.06,frequency:2500,volume:.25},{startTime:.05,duration:.06,frequency:3e3,volume:.3},{startTime:.1,duration:.08,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.12,frequency:880,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:1047,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1319,volume:.3,type:`sine`}]},proud:{puffs:[{startTime:0,duration:.15,frequency:1800,volume:.3}],tones:[{startTime:.05,duration:.25,frequency:523,volume:.25,type:`sine`},{startTime:.08,duration:.25,frequency:659,volume:.2,type:`sine`},{startTime:.11,duration:.3,frequency:784,volume:.25,type:`sine`}]},hopeful:{puffs:[{startTime:0,duration:.12,frequency:2200,volume:.2}],tones:[{startTime:.03,duration:.3,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},relieved:{puffs:[{startTime:0,duration:.25,frequency:1200,volume:.35}],tones:[{startTime:.1,duration:.35,frequency:659,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:523,volume:.15,type:`sine`,filterFrequency:800}]},grateful:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:440,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},peaceful:{puffs:[{startTime:0,duration:.3,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:500}]},playful:{puffs:[{startTime:0,duration:.05,frequency:2800,volume:.2},{startTime:.08,duration:.05,frequency:3200,volume:.25},{startTime:.14,duration:.06,frequency:2800,volume:.2}],tones:[{startTime:.03,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.1,duration:.08,frequency:988,volume:.25,type:`sine`},{startTime:.16,duration:.12,frequency:784,volume:.2,type:`sine`}]},amused:{puffs:[{startTime:0,duration:.04,frequency:2500,volume:.2},{startTime:.06,duration:.04,frequency:2800,volume:.22},{startTime:.11,duration:.05,frequency:2600,volume:.18}],tones:[{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},curious:{puffs:[{startTime:0,duration:.1,frequency:2e3,volume:.2}],tones:[{startTime:.03,duration:.2,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},inspired:{puffs:[{startTime:0,duration:.1,frequency:2500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`},{startTime:.07,duration:.28,frequency:784.5,volume:.16,type:`sine`},{startTime:.09,duration:.26,frequency:1046,volume:.12,type:`sine`}]},confident:{puffs:[{startTime:0,duration:.12,frequency:1500,volume:.3}],tones:[{startTime:.04,duration:.2,frequency:523,volume:.25,type:`sine`},{startTime:.06,duration:.22,frequency:659,volume:.2,type:`sine`}]},loved:{puffs:[{startTime:0,duration:.2,frequency:1e3,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:392,volume:.18,type:`sine`,filterFrequency:600},{startTime:.2,duration:.45,frequency:494,volume:.15,type:`sine`,filterFrequency:600}]},comforted:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:523,volume:.15,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:800}]},energized:{puffs:[{startTime:0,duration:.05,frequency:3e3,volume:.25},{startTime:.04,duration:.05,frequency:3500,volume:.28}],tones:[{startTime:.02,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:988,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1175,volume:.22,type:`sine`}]},celebrated:{puffs:[{startTime:0,duration:.08,frequency:2500,volume:.2}],tones:[{startTime:.02,duration:.18,frequency:523,volume:.22,type:`sine`},{startTime:.08,duration:.18,frequency:659,volume:.24,type:`sine`},{startTime:.14,duration:.2,frequency:784,volume:.26,type:`sine`},{startTime:.22,duration:.3,frequency:1047,volume:.22,type:`sine`}]},sad:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},lonely:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},disappointed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},heartbroken:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},grieving:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},hopeless:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},empty:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},discouraged:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},melancholic:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},homesick:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},hurt:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},miserable:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},regretful:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},ashamed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},inferior:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},anxious:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}],description:`Tight, quick puffs with uncertain wobble`},worried:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},afraid:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},terrified:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},panicked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},nervous:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},uneasy:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},insecure:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},overwhelmed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},stressed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},tense:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},apprehensive:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},startled:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},suspicious:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},vulnerable:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},annoyed:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},irritated:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},frustrated:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},angry:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},enraged:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},bitter:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},resentful:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},jealous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},envious:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},indignant:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},impatient:{puffs:[{startTime:0,duration:.04,frequency:1500,volume:.2},{startTime:.08,duration:.04,frequency:1500,volume:.2},{startTime:.16,duration:.04,frequency:1500,volume:.22}],tones:[{startTime:.06,duration:.1,frequency:523,volume:.15,type:`sine`}]},hostile:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},contemptuous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},tired:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},exhausted:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},drained:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},burnedOut:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},numb:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},bored:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},unmotivated:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},apathetic:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},restless:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},calm:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},relaxed:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},atEase:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},balanced:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},stable:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},secure:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},safe:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},centered:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},grounded:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},accepting:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},connected:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},accepted:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},included:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},belonging:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},appreciated:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},valued:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},respected:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},supported:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},protective:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},compassionate:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},empathetic:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},conflicted:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},confused:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},ambivalent:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},nostalgic:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},guilty:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},embarrassed:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},surprised:{puffs:[{startTime:0,duration:.06,frequency:2800,volume:.25}],tones:[{startTime:.02,duration:.15,frequency:659,volume:.2,type:`sine`,frequencyEnd:988}]},shocked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},awestruck:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:440,volume:.15,type:`sine`},{startTime:.1,duration:.38,frequency:660,volume:.12,type:`sine`},{startTime:.12,duration:.36,frequency:880,volume:.09,type:`sine`}]},skeptical:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]}},i=class e{get theme(){return n.value.theme}get volume(){return n.value.volume}get muted(){return n.value.muted}get themeName(){return this.theme?.name??`default`}constructor(){this.audioContext=null,this.theme$=n.$.pipe((0,t.map)(e=>e.theme),(0,t.shareReplay)(1)),this.volume$=n.$.pipe((0,t.map)(e=>e.volume),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.muted$=n.$.pipe((0,t.map)(e=>e.muted),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this._themeName$=new t.BehaviorSubject(`default`),this.themeName$=this._themeName$.asObservable(),this.theme$.subscribe(e=>{this._themeName$.next(e?.name??`default`)})}getContext(){if(!this.audioContext){let e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e}return this.audioContext.state===`suspended`&&this.audioContext.resume(),this.audioContext}playPuff(e,t,n){let r=this.getContext(),i=Math.floor(r.sampleRate*t.duration),a=r.createBuffer(1,i,r.sampleRate),o=a.getChannelData(0);for(let e=0;e<i;e++)o[e]=2*Math.random()-1;let s=r.createBufferSource();s.buffer=a;let c=r.createBiquadFilter();c.type=`bandpass`,c.frequency.value=t.frequency,c.Q.value=.7;let l=r.createGain();l.gain.setValueAtTime(0,e),l.gain.linearRampToValueAtTime(t.volume*n,e+.015),l.gain.exponentialRampToValueAtTime(.001,e+t.duration),s.connect(c).connect(l).connect(r.destination),s.start(e),s.stop(e+t.duration)}playTone(e,t,n){let r=this.getContext(),i=r.createOscillator(),a=r.createGain();i.type=t.type,i.frequency.setValueAtTime(t.frequency,e),t.frequencyEnd&&i.frequency.exponentialRampToValueAtTime(t.frequencyEnd,e+.8*t.duration);let o=i;if(t.filterFrequency){let e=r.createBiquadFilter();e.type=`lowpass`,e.frequency.value=t.filterFrequency,i.connect(e),o=e}a.gain.setValueAtTime(0,e),a.gain.linearRampToValueAtTime(t.volume*n,e+.02),a.gain.exponentialRampToValueAtTime(.001,e+t.duration),o.connect(a).connect(r.destination),i.start(e),i.stop(e+t.duration)}setTheme(e){n.set({theme:e})}resetTheme(){n.set({theme:null})}setVolume(e){n.set({volume:Math.max(0,Math.min(1,e))})}mute(){n.set({muted:!0})}unmute(){n.set({muted:!1})}toggleMute(){n.set({muted:!this.muted})}getSoundForFeeling(e){let t=this.theme;if(t?.feelings?.[e])return t.feelings[e];if(t?.categoryDefaults){let n=this.getCategoryForFeeling(e);if(t.categoryDefaults[n])return t.categoryDefaults[n]}return r[e]}getCategoryForFeeling(e){return[`joyful`,`content`,`excited`,`proud`,`hopeful`,`relieved`,`grateful`,`peaceful`,`playful`,`amused`,`curious`,`inspired`,`confident`,`loved`,`comforted`,`energized`,`celebrated`].includes(e)?`happy`:[`sad`,`lonely`,`disappointed`,`heartbroken`,`grieving`,`hopeless`,`empty`,`discouraged`,`melancholic`,`homesick`,`hurt`,`miserable`,`regretful`,`ashamed`,`inferior`].includes(e)?`sad`:[`anxious`,`worried`,`afraid`,`terrified`,`panicked`,`nervous`,`uneasy`,`insecure`,`overwhelmed`,`stressed`,`tense`,`apprehensive`,`startled`,`suspicious`,`vulnerable`].includes(e)?`anxious`:[`annoyed`,`irritated`,`frustrated`,`angry`,`enraged`,`bitter`,`resentful`,`jealous`,`envious`,`indignant`,`impatient`,`hostile`,`contemptuous`].includes(e)?`angry`:[`tired`,`exhausted`,`drained`,`burnedOut`,`numb`,`bored`,`unmotivated`,`apathetic`,`restless`].includes(e)?`tired`:[`calm`,`relaxed`,`atEase`,`balanced`,`stable`,`secure`,`safe`,`centered`,`grounded`,`accepting`].includes(e)?`calm`:[`connected`,`accepted`,`included`,`belonging`,`appreciated`,`valued`,`respected`,`supported`,`protective`,`compassionate`,`empathetic`].includes(e)?`connected`:`mixed`}play(e){if(this.muted)return;let t=this.getSoundForFeeling(e),n=this.getContext().currentTime,r=this.theme?.masterVolume??1,i=this.volume*r;t.puffs.forEach(e=>{this.playPuff(n+e.startTime,e,i)}),t.tones.forEach(e=>{this.playTone(n+e.startTime,e,i)})}dispose(){this.audioContext&&=(this.audioContext.close(),null)}static getInstance(){return e.instance||=new e,e.instance}}.getInstance(),a=i;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|