@mhmo91/schmancy 0.10.17 → 0.10.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/{flow-CvG1fLW5.js.map → flow-3RrZM-e7.js.map} +1 -1
- package/dist/agent/overlay.confirm-body-D3jQyXgA.js +2863 -0
- package/dist/agent/overlay.confirm-body-D3jQyXgA.js.map +1 -0
- package/dist/agent/{rolldown-runtime-DsMetpgY.js → rolldown-runtime-BIIoCavz.js} +9 -2
- package/dist/agent/schmancy.agent.js +3938 -5911
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/{vendor-material-color-DcL7ZPxx.js.map → vendor-material-color-33Mj762T.js.map} +1 -1
- package/dist/{area-ChxsDTu_.js → area-BIipuSyO.js} +1 -1
- package/dist/{area-ChxsDTu_.js.map → area-BIipuSyO.js.map} +1 -1
- package/dist/{area-Qt6yUnuA.cjs → area-C-EMiNEE.cjs} +1 -1
- package/dist/{area-Qt6yUnuA.cjs.map → area-C-EMiNEE.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{audio-D-TZzpXF.cjs → audio-Cvmemu84.cjs} +1 -1
- package/dist/{audio-D-TZzpXF.cjs.map → audio-Cvmemu84.cjs.map} +1 -1
- package/dist/{audio-DS43uoRA.js → audio-CxO5a2HL.js} +1 -1
- package/dist/{audio-DS43uoRA.js.map → audio-CxO5a2HL.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-Ck2zbdF9.cjs → autocomplete-B8CE5vGw.cjs} +1 -1
- package/dist/{autocomplete-Ck2zbdF9.cjs.map → autocomplete-B8CE5vGw.cjs.map} +1 -1
- package/dist/{autocomplete-CXvUjMD-.js → autocomplete-Mrb3koUN.js} +2 -2
- package/dist/{autocomplete-CXvUjMD-.js.map → autocomplete-Mrb3koUN.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-Bj0wVcZi.js → boat-CNWIQPA1.js} +2 -5
- package/dist/{boat-Bj0wVcZi.js.map → boat-CNWIQPA1.js.map} +1 -1
- package/dist/{boat-DpFkILFF.cjs → boat-OatK_MGh.cjs} +2 -2
- package/dist/{boat-DpFkILFF.cjs.map → boat-OatK_MGh.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +2 -1
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +2 -1
- package/dist/breadcrumb.js.map +1 -1
- package/dist/{busy-CtcnclA3.cjs → busy-CMKX4oQf.cjs} +1 -1
- package/dist/{busy-CtcnclA3.cjs.map → busy-CMKX4oQf.cjs.map} +1 -1
- package/dist/{busy-CyZSBnZP.js → busy-Cetzws-m.js} +1 -1
- package/dist/{busy-CyZSBnZP.js.map → busy-Cetzws-m.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +4 -3
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +4 -3
- package/dist/button.js.map +1 -1
- package/dist/{card-Cl6jp1yX.cjs → card-8VXoo2C_.cjs} +1 -1
- package/dist/{card-Cl6jp1yX.cjs.map → card-8VXoo2C_.cjs.map} +1 -1
- package/dist/{card-nYZCKmOO.js → card-D2k3dRL0.js} +1 -1
- package/dist/{card-nYZCKmOO.js.map → card-D2k3dRL0.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-DiUrZiyc.js → checkbox-8hNsBejz.js} +1 -1
- package/dist/{checkbox-DiUrZiyc.js.map → checkbox-8hNsBejz.js.map} +1 -1
- package/dist/{checkbox-BeNo0ZGt.cjs → checkbox-Cq5wzeaY.cjs} +1 -1
- package/dist/{checkbox-BeNo0ZGt.cjs.map → checkbox-Cq5wzeaY.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-CfPFXv7Z.js → chips-D1kJrbzo.js} +9 -23
- package/dist/chips-D1kJrbzo.js.map +1 -0
- package/dist/{chips-DK6m-VCM.cjs → chips-Dx_WvOGk.cjs} +9 -18
- package/dist/chips-Dx_WvOGk.cjs.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- 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/{date-range-DjlF2u7o.js → date-range-Dv-DM6mB.js} +2 -2
- package/dist/{date-range-DjlF2u7o.js.map → date-range-Dv-DM6mB.js.map} +1 -1
- package/dist/{date-range-DA6anfcF.cjs → date-range-H903Vt_r.cjs} +1 -1
- package/dist/{date-range-DA6anfcF.cjs.map → date-range-H903Vt_r.cjs.map} +1 -1
- package/dist/{date-range-inline-BfYK795W.cjs → date-range-inline-Bvs2ZvEY.cjs} +1 -1
- package/dist/{date-range-inline-BfYK795W.cjs.map → date-range-inline-Bvs2ZvEY.cjs.map} +1 -1
- package/dist/{date-range-inline-n7y_H6PJ.js → date-range-inline-TWWnTZlw.js} +1 -1
- package/dist/{date-range-inline-n7y_H6PJ.js.map → date-range-inline-TWWnTZlw.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-CS_ToAOj.js → details-Cpg8sH2F.js} +3 -8
- package/dist/details-Cpg8sH2F.js.map +1 -0
- package/dist/{details-BdAVsLl-.cjs → details-CwSDur6j.cjs} +2 -6
- package/dist/details-CwSDur6j.cjs.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +1 -1
- package/dist/{divider-CvWAnvdO.cjs → divider-BNdVLE0H.cjs} +1 -1
- package/dist/{divider-CvWAnvdO.cjs.map → divider-BNdVLE0H.cjs.map} +1 -1
- package/dist/{divider-COLK0RbT.js → divider-Be833gGZ.js} +1 -1
- package/dist/{divider-COLK0RbT.js.map → divider-Be833gGZ.js.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 +1 -1
- package/dist/{expand-r2sATPUJ.cjs → expand-BP6RLzHw.cjs} +1 -1
- package/dist/{expand-r2sATPUJ.cjs.map → expand-BP6RLzHw.cjs.map} +1 -1
- package/dist/{expand-D9LzmpoV.js → expand-CtoffNNj.js} +2 -2
- package/dist/{expand-D9LzmpoV.js.map → expand-CtoffNNj.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{float-2nHYuBx-.cjs → float-CfbQM_2v.cjs} +1 -1
- package/dist/{float-2nHYuBx-.cjs.map → float-CfbQM_2v.cjs.map} +1 -1
- package/dist/{float-BWy39CXr.js → float-KmbhaQHA.js} +1 -1
- package/dist/{float-BWy39CXr.js.map → float-KmbhaQHA.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-D1iJOLVb.js → form-8IcmP8uV.js} +9 -9
- package/dist/{form-D1iJOLVb.js.map → form-8IcmP8uV.js.map} +1 -1
- package/dist/{form-D9K1GhlP.cjs → form-CuBIrKOA.cjs} +1 -1
- package/dist/{form-D9K1GhlP.cjs.map → form-CuBIrKOA.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +6 -6
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{icons-BXp4vbnW.cjs → icons-BJld4JHp.cjs} +1 -1
- package/dist/{icons-BXp4vbnW.cjs.map → icons-BJld4JHp.cjs.map} +1 -1
- package/dist/{icons-COrlmBPB.js → icons-D7df1ysG.js} +1 -1
- package/dist/{icons-COrlmBPB.js.map → icons-D7df1ysG.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-CPNsIy7k.js → iframe-DAbgW9tT.js} +1 -1
- package/dist/{iframe-CPNsIy7k.js.map → iframe-DAbgW9tT.js.map} +1 -1
- package/dist/{iframe-BwXj6mLp.cjs → iframe-GT6D8l5Z.cjs} +1 -1
- package/dist/{iframe-BwXj6mLp.cjs.map → iframe-GT6D8l5Z.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 +59 -56
- package/dist/{input-BGrF2qVq.cjs → input-BE9wEEw4.cjs} +1 -1
- package/dist/{input-BGrF2qVq.cjs.map → input-BE9wEEw4.cjs.map} +1 -1
- package/dist/{input-C1SnMNuQ.js → input-DC6ap_uN.js} +1 -1
- package/dist/{input-C1SnMNuQ.js.map → input-DC6ap_uN.js.map} +1 -1
- package/dist/{input-chip-DZktYohr.cjs → input-chip-MsiMu-b5.cjs} +4 -4
- package/dist/input-chip-MsiMu-b5.cjs.map +1 -0
- package/dist/{input-chip-CtQ0pH5b.js → input-chip-c5n547tg.js} +3 -6
- package/dist/input-chip-c5n547tg.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +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-Delq-QvR.cjs → layout-BbCIfIgo.cjs} +1 -1
- package/dist/{layout-Delq-QvR.cjs.map → layout-BbCIfIgo.cjs.map} +1 -1
- package/dist/{layout-BH28sKGc.js → layout-Dq2oeOTS.js} +1 -1
- package/dist/{layout-BH28sKGc.js.map → layout-Dq2oeOTS.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-CLwpaiai.js → lightbox-CNX9Eg3U.js} +4 -4
- package/dist/lightbox-CNX9Eg3U.js.map +1 -0
- package/dist/{lightbox-Ck6BpN5u.cjs → lightbox-HqJBBjAT.cjs} +4 -4
- package/dist/lightbox-HqJBBjAT.cjs.map +1 -0
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-Bmce1Rb8.js → list-C76Pb-c1.js} +1 -1
- package/dist/{list-Bmce1Rb8.js.map → list-C76Pb-c1.js.map} +1 -1
- package/dist/{list-EmRwSpTU.cjs → list-bhyuQSyO.cjs} +1 -1
- package/dist/{list-EmRwSpTU.cjs.map → list-bhyuQSyO.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{menu-BTU3wGP6.cjs → menu-BqKQ-s0C.cjs} +1 -1
- package/dist/{menu-BTU3wGP6.cjs.map → menu-BqKQ-s0C.cjs.map} +1 -1
- package/dist/{menu-BA_B7QOG.js → menu-C5ksITpG.js} +2 -2
- package/dist/{menu-BA_B7QOG.js.map → menu-C5ksITpG.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-DCVXqL1Q.js +636 -0
- package/dist/{mixins-BWb9_e1s.js.map → mixins-DCVXqL1Q.js.map} +1 -1
- package/dist/mixins-Du9HMrIG.cjs +254 -0
- package/dist/{mixins-BOOu6q2n.cjs.map → mixins-Du9HMrIG.cjs.map} +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +1 -1
- 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-CliGbcfU.cjs → notification-DR3gvWt8.cjs} +1 -1
- package/dist/notification-DR3gvWt8.cjs.map +1 -0
- package/dist/{notification-R2_Mf1HR.js → notification-eZxtr3NN.js} +4 -4
- package/dist/notification-eZxtr3NN.js.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-Db98Ndzv.cjs → option-BDOKUqTy.cjs} +1 -1
- package/dist/{option-Db98Ndzv.cjs.map → option-BDOKUqTy.cjs.map} +1 -1
- package/dist/{option-DU1X4SDu.js → option-CBEHYG4U.js} +1 -1
- package/dist/{option-DU1X4SDu.js.map → option-CBEHYG4U.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/overlay-DG6EeyKt.cjs +80 -0
- package/dist/overlay-DG6EeyKt.cjs.map +1 -0
- package/dist/overlay-oxM9OLXP.js +745 -0
- package/dist/overlay-oxM9OLXP.js.map +1 -0
- package/dist/overlay.cjs +1 -80
- package/dist/{overlay.confirm-body-BkhNvr0c.cjs → overlay.confirm-body-78e1WrN9.cjs} +2 -2
- package/dist/{overlay.confirm-body-BkhNvr0c.cjs.map → overlay.confirm-body-78e1WrN9.cjs.map} +1 -1
- package/dist/{overlay.confirm-body-uFp-0Zfh.js → overlay.confirm-body-D_P2e7l6.js} +2 -2
- package/dist/{overlay.confirm-body-uFp-0Zfh.js.map → overlay.confirm-body-D_P2e7l6.js.map} +1 -1
- package/dist/overlay.js +5 -746
- package/dist/{overlay.service-BcF12kGb.js → overlay.service-C8NwO4Bx.js} +2 -2
- package/dist/{overlay.service-BcF12kGb.js.map → overlay.service-C8NwO4Bx.js.map} +1 -1
- package/dist/{overlay.service-1YWfUD2S.cjs → overlay.service-DQkGPUY7.cjs} +1 -1
- package/dist/{overlay.service-1YWfUD2S.cjs.map → overlay.service-DQkGPUY7.cjs.map} +1 -1
- package/dist/page.cjs +1 -1
- package/dist/page.js +4 -4
- package/dist/{progress-C9Y2D5cm.js → progress-C4kDZfb7.js} +1 -1
- package/dist/{progress-C9Y2D5cm.js.map → progress-C4kDZfb7.js.map} +1 -1
- package/dist/{progress-DiVTGAXa.cjs → progress-CMSst_2U.cjs} +1 -1
- package/dist/{progress-DiVTGAXa.cjs.map → progress-CMSst_2U.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-CAzjBI2n.js → radio-group-DB9D2ZkA.js} +1 -1
- package/dist/{radio-group-CAzjBI2n.js.map → radio-group-DB9D2ZkA.js.map} +1 -1
- package/dist/{radio-group-DIRJyYv6.cjs → radio-group-dVUvYFq7.cjs} +1 -1
- package/dist/{radio-group-DIRJyYv6.cjs.map → radio-group-dVUvYFq7.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/{rxjs-utils-Dv9T9IpA.js.map → rxjs-utils-Cs6XGwF6.js.map} +1 -1
- package/dist/{rxjs-utils-BKB2UM_j.cjs.map → rxjs-utils-Dsj75cJy.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-BFHUtZOa.js → scroll-C1klVgSQ.js} +1 -1
- package/dist/{scroll-BFHUtZOa.js.map → scroll-C1klVgSQ.js.map} +1 -1
- package/dist/{scroll-nIZyoEMt.cjs → scroll-S-bXF2u6.cjs} +1 -1
- package/dist/{scroll-nIZyoEMt.cjs.map → scroll-S-bXF2u6.cjs.map} +1 -1
- package/dist/{select-7WqaUWBU.js → select-UU2pB67h.js} +1 -1
- package/dist/{select-7WqaUWBU.js.map → select-UU2pB67h.js.map} +1 -1
- package/dist/{select-DTuf6p6T.cjs → select-fu_-rZyn.cjs} +1 -1
- package/dist/{select-DTuf6p6T.cjs.map → select-fu_-rZyn.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{sound.service-DyY78ukR.cjs → sound.service-DVJZb9ox.cjs} +1 -1
- package/dist/{sound.service-DyY78ukR.cjs.map → sound.service-DVJZb9ox.cjs.map} +1 -1
- package/dist/{sound.service-BIN2W7Rv.js → sound.service-v_jqCkos.js} +1 -1
- package/dist/{sound.service-BIN2W7Rv.js.map → sound.service-v_jqCkos.js.map} +1 -1
- package/dist/{splash-screen-Kr1sPtME.cjs → splash-screen-BvaDkvJU.cjs} +1 -1
- package/dist/{splash-screen-Kr1sPtME.cjs.map → splash-screen-BvaDkvJU.cjs.map} +1 -1
- package/dist/{splash-screen-BcjjJSlK.js → splash-screen-ChMkAPLU.js} +1 -1
- package/dist/{splash-screen-BcjjJSlK.js.map → splash-screen-ChMkAPLU.js.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-BbMJeLk9.cjs → src-BIlD63Cz.cjs} +1 -1
- package/dist/{src-BbMJeLk9.cjs.map → src-BIlD63Cz.cjs.map} +1 -1
- package/dist/{src-DCu_mEk4.js → src-DnunCC4X.js} +37 -36
- package/dist/{src-DCu_mEk4.js.map → src-DnunCC4X.js.map} +1 -1
- package/dist/{state-nm8yzMPp.js → state-CHbIt2Dw.js} +198 -202
- package/dist/{state-nm8yzMPp.js.map → state-CHbIt2Dw.js.map} +1 -1
- package/dist/state-DcGj-pJJ.cjs +1 -0
- package/dist/{state-avic94Ft.cjs.map → state-DcGj-pJJ.cjs.map} +1 -1
- package/dist/state.cjs +1 -1
- package/dist/state.js +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-BtMMHKol.js → surface-DCRy-EyT.js} +1 -1
- package/dist/{surface-BtMMHKol.js.map → surface-DCRy-EyT.js.map} +1 -1
- package/dist/{surface-CgXeKdGL.cjs → surface-DWwQDX9r.cjs} +1 -1
- package/dist/{surface-CgXeKdGL.cjs.map → surface-DWwQDX9r.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-81ADWQqa.js → tabs-CkDNLbiS.js} +1 -1
- package/dist/{tabs-81ADWQqa.js.map → tabs-CkDNLbiS.js.map} +1 -1
- package/dist/{tabs-DnG3K0bu.cjs → tabs-lxQHWEb7.cjs} +1 -1
- package/dist/{tabs-DnG3K0bu.cjs.map → tabs-lxQHWEb7.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-BenjiTXB.cjs → textarea-CNa4dSvF.cjs} +1 -1
- package/dist/{textarea-BenjiTXB.cjs.map → textarea-CNa4dSvF.cjs.map} +1 -1
- package/dist/{textarea-3mWewuAf.js → textarea-DkfGmRSI.js} +1 -1
- package/dist/{textarea-3mWewuAf.js.map → textarea-DkfGmRSI.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-DNymrucy.cjs → theme-CMyXTDht.cjs} +1 -1
- package/dist/{theme-DNymrucy.cjs.map → theme-CMyXTDht.cjs.map} +1 -1
- package/dist/{theme-CFPJW933.js → theme-CNWRYdfn.js} +3 -3
- package/dist/{theme-CFPJW933.js.map → theme-CNWRYdfn.js.map} +1 -1
- package/dist/{theme-button-DC_shZ_7.js → theme-button-CixloLin.js} +1 -1
- package/dist/{theme-button-DC_shZ_7.js.map → theme-button-CixloLin.js.map} +1 -1
- package/dist/{theme-button-ENKa3TPT.cjs → theme-button-kMhsX5Oe.cjs} +1 -1
- package/dist/{theme-button-ENKa3TPT.cjs.map → theme-button-kMhsX5Oe.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +3 -3
- package/dist/{theme.service-BOWIT_5k.js → theme.service-CSzNkqBB.js} +1 -1
- package/dist/{theme.service-BOWIT_5k.js.map → theme.service-CSzNkqBB.js.map} +1 -1
- package/dist/{theme.service-DkdH1t60.cjs → theme.service-CnFUmUpc.cjs} +1 -1
- package/dist/{theme.service-DkdH1t60.cjs.map → theme.service-CnFUmUpc.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-D2QUu4-g.cjs.map → utils-C-Q8ePtG.cjs.map} +1 -1
- package/dist/{utils-Cj_nRRyx.js.map → utils-DXE5fBBd.js.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-BTecgE_U.js → window-BcvDNi9D.js} +4 -11
- package/dist/window-BcvDNi9D.js.map +1 -0
- package/dist/{window-DGydMS0g.cjs → window-qaGFMn_4.cjs} +3 -3
- package/dist/window-qaGFMn_4.cjs.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/src/boat/boat.ts +0 -3
- package/src/breadcrumb/breadcrumb.ts +1 -0
- package/src/button/button.ts +1 -1
- package/src/button/icon-button.ts +2 -1
- package/src/chips/assist-chip.ts +2 -1
- package/src/chips/filter-chip.ts +2 -16
- package/src/chips/input-chip.ts +2 -5
- package/src/chips/suggestion-chip.ts +2 -3
- package/src/details/details.ts +2 -7
- package/src/index.ts +8 -0
- package/src/lightbox/lightbox.ts +3 -3
- package/src/notification/notification.scss +0 -1
- package/src/overlay/overlay.confirm-body.ts +1 -1
- package/src/state/index.ts +31 -9
- package/src/surface/surface.styles.ts +1 -45
- package/src/window/window.ts +0 -12
- package/types/src/index.d.ts +1 -0
- package/types/src/window/window.d.ts +0 -2
- package/dist/chips-CfPFXv7Z.js.map +0 -1
- package/dist/chips-DK6m-VCM.cjs.map +0 -1
- package/dist/details-BdAVsLl-.cjs.map +0 -1
- package/dist/details-CS_ToAOj.js.map +0 -1
- package/dist/input-chip-CtQ0pH5b.js.map +0 -1
- package/dist/input-chip-DZktYohr.cjs.map +0 -1
- package/dist/lightbox-CLwpaiai.js.map +0 -1
- package/dist/lightbox-Ck6BpN5u.cjs.map +0 -1
- package/dist/mixins-BOOu6q2n.cjs +0 -298
- package/dist/mixins-BWb9_e1s.js +0 -680
- package/dist/notification-CliGbcfU.cjs.map +0 -1
- package/dist/notification-R2_Mf1HR.js.map +0 -1
- package/dist/overlay.cjs.map +0 -1
- package/dist/overlay.js.map +0 -1
- package/dist/state-avic94Ft.cjs +0 -1
- package/dist/window-BTecgE_U.js.map +0 -1
- package/dist/window-DGydMS0g.cjs.map +0 -1
- /package/dist/agent/{flow-CvG1fLW5.js → flow-3RrZM-e7.js} +0 -0
- /package/dist/agent/{vendor-material-color-DcL7ZPxx.js → vendor-material-color-33Mj762T.js} +0 -0
- /package/dist/{rxjs-utils-Dv9T9IpA.js → rxjs-utils-Cs6XGwF6.js} +0 -0
- /package/dist/{rxjs-utils-BKB2UM_j.cjs → rxjs-utils-Dsj75cJy.cjs} +0 -0
- /package/dist/{utils-D2QUu4-g.cjs → utils-C-Q8ePtG.cjs} +0 -0
- /package/dist/{utils-Cj_nRRyx.js → utils-DXE5fBBd.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-inline-n7y_H6PJ.js","names":[],"sources":["../src/date-range-inline/date-range-inline.ts"],"sourcesContent":["import { html } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { SchmancyFormField } from '@mixins/index'\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'schmancy-date-range-inline': SchmancyDateRangeInline\r\n\t}\r\n}\r\n\r\nexport type SchmancyDateRangeInlineChangeEvent = CustomEvent<{\r\n\tdateFrom: string\r\n\tdateTo: string\r\n\tisValid: boolean\r\n}>\r\n\r\n/**\r\n * Smart inline date range picker that handles all the heavy lifting.\r\n * Auto-corrects invalid ranges, provides smart defaults, and validates dates.\r\n */\r\n@customElement('schmancy-date-range-inline')\r\nexport default class SchmancyDateRangeInline extends SchmancyFormField() {\r\n\t/**\r\n\t * Input type - 'date' or 'datetime-local'\r\n\t */\r\n\t@property({ type: String })\r\n\ttype: 'date' | 'datetime-local' = 'date'\r\n\r\n\t/**\r\n\t * From date configuration\r\n\t */\r\n\t@property({ type: Object })\r\n\tdateFrom: { label: string; value: string } = { label: 'From', value: '' }\r\n\r\n\t/**\r\n\t * To date configuration\r\n\t */\r\n\t@property({ type: Object })\r\n\tdateTo: { label: string; value: string } = { label: 'To', value: '' }\r\n\r\n\t/**\r\n\t * Minimum allowed date\r\n\t */\r\n\t@property({ type: String })\r\n\tminDate?: string\r\n\r\n\t/**\r\n\t * Maximum allowed date\r\n\t */\r\n\t@property({ type: String })\r\n\tmaxDate?: string\r\n\r\n\t/**\r\n\t * Compact mode for smaller UI\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tcompact = false\r\n\r\n\t/**\r\n\t * Auto-correct invalid date ranges\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tautoCorrect = true\r\n\r\n\t/**\r\n\t * Minimum gap between dates (in days)\r\n\t */\r\n\t@property({ type: Number })\r\n\tminGap = 0\r\n\r\n\t/**\r\n\t * Maximum gap between dates (in days)\r\n\t */\r\n\t@property({ type: Number })\r\n\tmaxGap?: number\r\n\r\n\t/**\r\n\t * Default gap when auto-setting dates (in days)\r\n\t */\r\n\t@property({ type: Number })\r\n\tdefaultGap = 1\r\n\r\n\t/**\r\n\t * Whether to allow same date selection\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tallowSameDate = false\r\n\r\n\t/**\r\n\t * Internal validation state\r\n\t */\r\n\t@state()\r\n\tprivate validationState = {\r\n\t\tdateFromError: '',\r\n\t\tdateToError: '',\r\n\t\trangeError: ''\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\t// Initialize with smart defaults if no values provided\r\n\t\tif (!this.dateFrom.value && !this.dateTo.value) {\r\n\t\t\tthis.setSmartDefaults()\r\n\t\t} else {\r\n\t\t\t// Validate initial values\r\n\t\t\tthis.validateAndCorrect()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set smart default dates based on context\r\n\t */\r\n\tprivate setSmartDefaults() {\r\n\t\tconst today = new Date()\r\n\t\tconst tomorrow = new Date(today)\r\n\t\ttomorrow.setDate(tomorrow.getDate() + this.defaultGap)\r\n\r\n\t\tconst format = this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD'\r\n\t\t\r\n\t\tthis.dateFrom = {\r\n\t\t\t...this.dateFrom,\r\n\t\t\tvalue: this.formatDate(today, format)\r\n\t\t}\r\n\t\t\r\n\t\tthis.dateTo = {\r\n\t\t\t...this.dateTo,\r\n\t\t\tvalue: this.formatDate(tomorrow, format)\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Format date to required string format\r\n\t */\r\n\tprivate formatDate(date: Date, format: string): string {\r\n\t\tconst year = date.getFullYear()\r\n\t\tconst month = String(date.getMonth() + 1).padStart(2, '0')\r\n\t\tconst day = String(date.getDate()).padStart(2, '0')\r\n\t\t\r\n\t\tif (format === 'YYYY-MM-DD') {\r\n\t\t\treturn `${year}-${month}-${day}`\r\n\t\t} else {\r\n\t\t\tconst hours = String(date.getHours()).padStart(2, '0')\r\n\t\t\tconst minutes = String(date.getMinutes()).padStart(2, '0')\r\n\t\t\treturn `${year}-${month}-${day}T${hours}:${minutes}`\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Parse date string to Date object\r\n\t */\r\n\tprivate parseDate(dateStr: string): Date | null {\r\n\t\tif (!dateStr) return null\r\n\t\tconst date = new Date(dateStr)\r\n\t\treturn isNaN(date.getTime()) ? null : date\r\n\t}\r\n\r\n\t/**\r\n\t * Calculate days between two dates\r\n\t */\r\n\tprivate getDaysBetween(date1: Date, date2: Date): number {\r\n\t\tconst msPerDay = 24 * 60 * 60 * 1000\r\n\t\treturn Math.floor((date2.getTime() - date1.getTime()) / msPerDay)\r\n\t}\r\n\r\n\t/**\r\n\t * Handle from date change with validation and auto-correction\r\n\t */\r\n\tprivate handleDateFromChange(e: Event) {\r\n\t\tconst input = e.target as HTMLInputElement\r\n\t\tconst newValue = input.value\r\n\r\n\t\t// Update the value\r\n\t\tthis.dateFrom = { ...this.dateFrom, value: newValue }\r\n\r\n\t\t// Clear previous errors\r\n\t\tthis.validationState = { ...this.validationState, dateFromError: '', rangeError: '' }\r\n\r\n\t\tif (!newValue) {\r\n\t\t\t// Allow empty for optional fields\r\n\t\t\tif (!this.required) {\r\n\t\t\t\tthis.emitChange()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tthis.validationState = { ...this.validationState, dateFromError: 'Start date is required' }\r\n\t\t\tthis.error = true\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Validate and potentially auto-correct\r\n\t\tthis.validateAndCorrect('from')\r\n\t}\r\n\r\n\t/**\r\n\t * Handle to date change with validation and auto-correction\r\n\t */\r\n\tprivate handleDateToChange(e: Event) {\r\n\t\tconst input = e.target as HTMLInputElement\r\n\t\tconst newValue = input.value\r\n\r\n\t\t// Update the value\r\n\t\tthis.dateTo = { ...this.dateTo, value: newValue }\r\n\r\n\t\t// Clear previous errors\r\n\t\tthis.validationState = { ...this.validationState, dateToError: '', rangeError: '' }\r\n\r\n\t\tif (!newValue) {\r\n\t\t\t// Allow empty for optional fields\r\n\t\t\tif (!this.required) {\r\n\t\t\t\tthis.emitChange()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tthis.validationState = { ...this.validationState, dateToError: 'End date is required' }\r\n\t\t\tthis.error = true\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Validate and potentially auto-correct\r\n\t\tthis.validateAndCorrect('to')\r\n\t}\r\n\r\n\t/**\r\n\t * Validate dates and auto-correct if enabled\r\n\t */\r\n\tprivate validateAndCorrect(changedField?: 'from' | 'to') {\r\n\t\tconst fromDate = this.parseDate(this.dateFrom.value)\r\n\t\tconst toDate = this.parseDate(this.dateTo.value)\r\n\r\n\t\t// Reset validation state\r\n\t\tlet hasError = false\r\n\t\tconst newValidationState = { dateFromError: '', dateToError: '', rangeError: '' }\r\n\r\n\t\t// Validate individual dates\r\n\t\tif (this.dateFrom.value && !fromDate) {\r\n\t\t\tnewValidationState.dateFromError = 'Invalid date format'\r\n\t\t\thasError = true\r\n\t\t}\r\n\r\n\t\tif (this.dateTo.value && !toDate) {\r\n\t\t\tnewValidationState.dateToError = 'Invalid date format'\r\n\t\t\thasError = true\r\n\t\t}\r\n\r\n\t\t// If both dates are valid, check range constraints\r\n\t\tif (fromDate && toDate) {\r\n\t\t\tconst daysBetween = this.getDaysBetween(fromDate, toDate)\r\n\r\n\t\t\t// Check if from date is after to date\r\n\t\t\tif (fromDate > toDate) {\r\n\t\t\t\tif (this.autoCorrect) {\r\n\t\t\t\t\t// Auto-correct based on which field changed\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\t// User changed from date, adjust to date\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.defaultGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (changedField === 'to') {\r\n\t\t\t\t\t\t// User changed to date, adjust from date\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.defaultGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// No specific field changed, swap them\r\n\t\t\t\t\t\tconst tempValue = this.dateFrom.value\r\n\t\t\t\t\t\tthis.dateFrom = { ...this.dateFrom, value: this.dateTo.value }\r\n\t\t\t\t\t\tthis.dateTo = { ...this.dateTo, value: tempValue }\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = 'End date must be after start date'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check same date constraint\r\n\t\t\tif (!this.allowSameDate && daysBetween === 0) {\r\n\t\t\t\tif (this.autoCorrect && changedField) {\r\n\t\t\t\t\t// Auto-correct by adjusting the other date\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.defaultGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.defaultGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = 'Start and end dates cannot be the same'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check minimum gap\r\n\t\t\tif (this.minGap > 0 && daysBetween < this.minGap) {\r\n\t\t\t\tif (this.autoCorrect && changedField) {\r\n\t\t\t\t\t// Auto-correct to maintain minimum gap\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.minGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.minGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = `Minimum ${this.minGap} day${this.minGap > 1 ? 's' : ''} required between dates`\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check maximum gap\r\n\t\t\tif (this.maxGap !== undefined && daysBetween > this.maxGap) {\r\n\t\t\t\tif (this.autoCorrect && changedField) {\r\n\t\t\t\t\t// Auto-correct to maintain maximum gap\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.maxGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.maxGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = `Maximum ${this.maxGap} day${this.maxGap > 1 ? 's' : ''} allowed between dates`\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check against min/max date constraints\r\n\t\t\tif (this.minDate) {\r\n\t\t\t\tconst minDateObj = this.parseDate(this.minDate)\r\n\t\t\t\tif (minDateObj && fromDate < minDateObj) {\r\n\t\t\t\t\tnewValidationState.dateFromError = 'Date is before minimum allowed date'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.maxDate) {\r\n\t\t\t\tconst maxDateObj = this.parseDate(this.maxDate)\r\n\t\t\t\tif (maxDateObj && toDate > maxDateObj) {\r\n\t\t\t\t\tnewValidationState.dateToError = 'Date is after maximum allowed date'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update validation state\r\n\t\tthis.validationState = newValidationState\r\n\t\tthis.error = hasError\r\n\r\n\t\t// Emit change event with validation status\r\n\t\tthis.emitChange()\r\n\t}\r\n\r\n\t/**\r\n\t * Get computed min date for the \"to\" field based on \"from\" value\r\n\t */\r\n\tprivate getComputedMinDateTo(): string | undefined {\r\n\t\tif (!this.dateFrom.value) return this.minDate\r\n\r\n\t\tconst fromDate = this.parseDate(this.dateFrom.value)\r\n\t\tif (!fromDate) return this.minDate\r\n\r\n\t\t// Calculate minimum date based on constraints\r\n\t\tconst minToDate = new Date(fromDate)\r\n\t\t\r\n\t\tif (!this.allowSameDate) {\r\n\t\t\tminToDate.setDate(minToDate.getDate() + 1)\r\n\t\t}\r\n\t\t\r\n\t\tif (this.minGap > 0) {\r\n\t\t\tminToDate.setDate(fromDate.getDate() + this.minGap)\r\n\t\t}\r\n\r\n\t\t// Compare with global minDate if set\r\n\t\tif (this.minDate) {\r\n\t\t\tconst globalMin = this.parseDate(this.minDate)\r\n\t\t\tif (globalMin && globalMin > minToDate) {\r\n\t\t\t\treturn this.minDate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.formatDate(minToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t}\r\n\r\n\t/**\r\n\t * Get computed max date for the \"from\" field based on \"to\" value\r\n\t */\r\n\tprivate getComputedMaxDateFrom(): string | undefined {\r\n\t\tif (!this.dateTo.value) return this.maxDate\r\n\r\n\t\tconst toDate = this.parseDate(this.dateTo.value)\r\n\t\tif (!toDate) return this.maxDate\r\n\r\n\t\t// Calculate maximum date based on constraints\r\n\t\tconst maxFromDate = new Date(toDate)\r\n\t\t\r\n\t\tif (!this.allowSameDate) {\r\n\t\t\tmaxFromDate.setDate(maxFromDate.getDate() - 1)\r\n\t\t}\r\n\t\t\r\n\t\tif (this.minGap > 0) {\r\n\t\t\tmaxFromDate.setDate(toDate.getDate() - this.minGap)\r\n\t\t}\r\n\r\n\t\t// Compare with global maxDate if set\r\n\t\tif (this.maxDate) {\r\n\t\t\tconst globalMax = this.parseDate(this.maxDate)\r\n\t\t\tif (globalMax && globalMax < maxFromDate) {\r\n\t\t\t\treturn this.maxDate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.formatDate(maxFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t}\r\n\r\n\temitChange() {\r\n\t\tconst isValid = !this.error && \r\n\t\t\t!!this.dateFrom.value && \r\n\t\t\t!!this.dateTo.value && \r\n\t\t\t!this.validationState.dateFromError && \r\n\t\t\t!this.validationState.dateToError && \r\n\t\t\t!this.validationState.rangeError\r\n\r\n\t\tthis.dispatchEvent(new CustomEvent<SchmancyDateRangeInlineChangeEvent['detail']>('change', {\r\n\t\t\tdetail: {\r\n\t\t\t\tdateFrom: this.dateFrom.value,\r\n\t\t\t\tdateTo: this.dateTo.value,\r\n\t\t\t\tisValid\r\n\t\t\t},\r\n\t\t\tbubbles: true,\r\n\t\t\tcomposed: true\r\n\t\t}))\r\n\t}\r\n\r\n\tprotected render() {\r\n\t\t// Determine which error to show on each input\r\n\t\tconst fromError = this.validationState.dateFromError || this.validationState.rangeError\r\n\t\tconst toError = this.validationState.dateToError || this.validationState.rangeError\r\n\r\n\t\treturn html`\r\n\t\t\t<div class=\"w-full\">\r\n\t\t\t\t<div class=\"flex items-start gap-2 w-full\">\r\n\t\t\t\t\t<div class=\"flex-1\">\r\n\t\t\t\t\t\t<schmancy-input\r\n\t\t\t\t\t\t\t.type=${this.type}\r\n\t\t\t\t\t\t\t.label=${this.dateFrom.label}\r\n\t\t\t\t\t\t\t.value=${this.dateFrom.value}\r\n\t\t\t\t\t\t\t.min=${this.minDate}\r\n\t\t\t\t\t\t\t.max=${this.getComputedMaxDateFrom()}\r\n\t\t\t\t\t\t\t@change=${this.handleDateFromChange}\r\n\t\t\t\t\t\t\t.error=${!!fromError}\r\n\t\t\t\t\t\t\t.hint=${fromError || ''}\r\n\t\t\t\t\t\t\t.required=${this.required}\r\n\t\t\t\t\t\t\t.disabled=${this.disabled}\r\n\t\t\t\t\t\t\tsize=${this.compact ? 'sm' : 'md'}\r\n\t\t\t\t\t\t></schmancy-input>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"flex items-center justify-center ${this.compact ? 'pt-8' : 'pt-10'} px-1\">\r\n\t\t\t\t\t\t<schmancy-icon class=\"text-surface-onVariant opacity-50\">\r\n\t\t\t\t\t\t\tarrow_forward\r\n\t\t\t\t\t\t</schmancy-icon>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"flex-1\">\r\n\t\t\t\t\t\t<schmancy-input\r\n\t\t\t\t\t\t\t.type=${this.type}\r\n\t\t\t\t\t\t\t.label=${this.dateTo.label}\r\n\t\t\t\t\t\t\t.value=${this.dateTo.value}\r\n\t\t\t\t\t\t\t.min=${this.getComputedMinDateTo()}\r\n\t\t\t\t\t\t\t.max=${this.maxDate}\r\n\t\t\t\t\t\t\t@change=${this.handleDateToChange}\r\n\t\t\t\t\t\t\t.error=${!!toError}\r\n\t\t\t\t\t\t\t.hint=${toError || ''}\r\n\t\t\t\t\t\t\t.required=${this.required}\r\n\t\t\t\t\t\t\t.disabled=${this.disabled}\r\n\t\t\t\t\t\t\tsize=${this.compact ? 'sm' : 'md'}\r\n\t\t\t\t\t\t></schmancy-input>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t`\r\n\t}\r\n}"],"mappings":";;;;AAqBe,IAAA,IAAA,cAAsC,GAAA,CAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,EAAA,EAAA,KAAA,OAKlB,QAAA,KAAA,WAMW;GAAE,OAAO;GAAQ,OAAO;GAAA,EAAA,KAAA,SAM1B;GAAE,OAAO;GAAM,OAAO;GAAA,EAAA,KAAA,UAAA,CAkBvD,GAAA,KAAA,cAAA,CAMI,GAAA,KAAA,SAML,GAAA,KAAA,aAYI,GAAA,KAAA,gBAAA,CAMG,GAAA,KAAA,kBAMU;GACzB,eAAe;GACf,aAAa;GACb,YAAY;GAAA;;CAGb,oBAAA;EACC,MAAM,mBAAA,EAED,KAAK,SAAS,SAAU,KAAK,OAAO,QAIxC,KAAK,oBAAA,GAHL,KAAK,kBAAA;;CAUP,mBAAA;EACC,IAAM,oBAAQ,IAAI,MAAA,EACZ,IAAW,IAAI,KAAK,EAAA;EAC1B,EAAS,QAAQ,EAAS,SAAA,GAAY,KAAK,WAAA;EAE3C,IAAM,IAAS,KAAK,SAAS,mBAAmB,qBAAqB;EAErE,KAAK,WAAW;GAAA,GACZ,KAAK;GACR,OAAO,KAAK,WAAW,GAAO,EAAA;GAAA,EAG/B,KAAK,SAAS;GAAA,GACV,KAAK;GACR,OAAO,KAAK,WAAW,GAAU,EAAA;GAAA;;CAOnC,WAAmB,GAAY,GAAA;EAC9B,IAAM,IAAO,EAAK,aAAA,EACZ,IAAQ,OAAO,EAAK,UAAA,GAAa,EAAA,CAAG,SAAS,GAAG,IAAA,EAChD,IAAM,OAAO,EAAK,SAAA,CAAA,CAAW,SAAS,GAAG,IAAA;EAE/C,OAAI,MAAW,eACP,GAAG,EAAA,GAAQ,EAAA,GAAS,MAIpB,GAAG,EAAA,GAAQ,EAAA,GAAS,EAAA,GAFb,OAAO,EAAK,UAAA,CAAA,CAAY,SAAS,GAAG,IAAA,CAAA,GAClC,OAAO,EAAK,YAAA,CAAA,CAAc,SAAS,GAAG,IAAA;;CAQxD,UAAkB,GAAA;EACjB,IAAA,CAAK,GAAS,OAAO;EACrB,IAAM,IAAO,IAAI,KAAK,EAAA;EACtB,OAAO,MAAM,EAAK,SAAA,CAAA,GAAa,OAAO;;CAMvC,eAAuB,GAAa,GAAA;EAEnC,OAAO,KAAK,OAAO,EAAM,SAAA,GAAY,EAAM,SAAA,IAAS,MAAA;;CAMrD,qBAA6B,GAAA;EAE5B,IAAM,IADQ,EAAE,OACO;EAQvB,IALA,KAAK,WAAW;GAAA,GAAK,KAAK;GAAU,OAAO;GAAA,EAG3C,KAAK,kBAAkB;GAAA,GAAK,KAAK;GAAiB,eAAe;GAAI,YAAY;GAAA,EAAA,CAE5E,GAEJ,OAAK,KAAK,YAIV,KAAK,kBAAkB;GAAA,GAAK,KAAK;GAAiB,eAAe;GAAA,EAAA,MACjE,KAAK,QAAA,CAAQ,MAAA,KAJZ,KAAK,YAAA;EASP,KAAK,mBAAmB,OAAA;;CAMzB,mBAA2B,GAAA;EAE1B,IAAM,IADQ,EAAE,OACO;EAQvB,IALA,KAAK,SAAS;GAAA,GAAK,KAAK;GAAQ,OAAO;GAAA,EAGvC,KAAK,kBAAkB;GAAA,GAAK,KAAK;GAAiB,aAAa;GAAI,YAAY;GAAA,EAAA,CAE1E,GAEJ,OAAK,KAAK,YAIV,KAAK,kBAAkB;GAAA,GAAK,KAAK;GAAiB,aAAa;GAAA,EAAA,MAC/D,KAAK,QAAA,CAAQ,MAAA,KAJZ,KAAK,YAAA;EASP,KAAK,mBAAmB,KAAA;;CAMzB,mBAA2B,GAAA;EAC1B,IAAM,IAAW,KAAK,UAAU,KAAK,SAAS,MAAA,EACxC,IAAS,KAAK,UAAU,KAAK,OAAO,MAAA,EAGtC,IAAA,CAAW,GACT,IAAqB;GAAE,eAAe;GAAI,aAAa;GAAI,YAAY;GAAA;EAc7E,IAXI,KAAK,SAAS,SAAA,CAAU,MAC3B,EAAmB,gBAAgB,uBACnC,IAAA,CAAW,IAGR,KAAK,OAAO,SAAA,CAAU,MACzB,EAAmB,cAAc,uBACjC,IAAA,CAAW,IAIR,KAAY,GAAQ;GACvB,IAAM,IAAc,KAAK,eAAe,GAAU,EAAA;GAGlD,IAAI,IAAW,GACd;IAAA,IAAI,KAAK,aAAa;KAErB,IAAI,MAAiB,QAAQ;MAE5B,IAAM,IAAY,IAAI,KAAK,EAAA;MAC3B,EAAU,QAAQ,EAAU,SAAA,GAAY,KAAK,WAAA,EAC7C,KAAK,SAAS;OAAA,GACV,KAAK;OACR,OAAO,KAAK,WAAW,GAAW,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;YAEnF,IAAI,MAAiB,MAAM;MAEjC,IAAM,IAAc,IAAI,KAAK,EAAA;MAC7B,EAAY,QAAQ,EAAY,SAAA,GAAY,KAAK,WAAA,EACjD,KAAK,WAAW;OAAA,GACZ,KAAK;OACR,OAAO,KAAK,WAAW,GAAa,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;YAErF;MAEN,IAAM,IAAY,KAAK,SAAS;MAChC,KAAK,WAAW;OAAA,GAAK,KAAK;OAAU,OAAO,KAAK,OAAO;OAAA,EACvD,KAAK,SAAS;OAAA,GAAK,KAAK;OAAQ,OAAO;OAAA;;KAIxC,AADA,KAAK,oBAAA;KACL;;IAEA,EAAmB,aAAa,qCAChC,IAAA,CAAW;;GAKb,IAAA,CAAK,KAAK,iBAAiB,MAAgB,GAC1C;IAAA,IAAI,KAAK,eAAe,GAAc;KAErC,IAAI,MAAiB,QAAQ;MAC5B,IAAM,IAAY,IAAI,KAAK,EAAA;MAC3B,EAAU,QAAQ,EAAU,SAAA,GAAY,KAAK,WAAA,EAC7C,KAAK,SAAS;OAAA,GACV,KAAK;OACR,OAAO,KAAK,WAAW,GAAW,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;YAEnF;MACN,IAAM,IAAc,IAAI,KAAK,EAAA;MAC7B,EAAY,QAAQ,EAAY,SAAA,GAAY,KAAK,WAAA,EACjD,KAAK,WAAW;OAAA,GACZ,KAAK;OACR,OAAO,KAAK,WAAW,GAAa,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;;KAK5F,AADA,KAAK,oBAAA;KACL;;IAEA,EAAmB,aAAa,0CAChC,IAAA,CAAW;;GAKb,IAAI,KAAK,SAAS,KAAK,IAAc,KAAK,QACzC;IAAA,IAAI,KAAK,eAAe,GAAc;KAErC,IAAI,MAAiB,QAAQ;MAC5B,IAAM,IAAY,IAAI,KAAK,EAAA;MAC3B,EAAU,QAAQ,EAAU,SAAA,GAAY,KAAK,OAAA,EAC7C,KAAK,SAAS;OAAA,GACV,KAAK;OACR,OAAO,KAAK,WAAW,GAAW,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;YAEnF;MACN,IAAM,IAAc,IAAI,KAAK,EAAA;MAC7B,EAAY,QAAQ,EAAY,SAAA,GAAY,KAAK,OAAA,EACjD,KAAK,WAAW;OAAA,GACZ,KAAK;OACR,OAAO,KAAK,WAAW,GAAa,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;;KAK5F,AADA,KAAK,oBAAA;KACL;;IAEA,EAAmB,aAAa,WAAW,KAAK,OAAA,MAAa,KAAK,SAAS,IAAI,MAAM,GAAA,0BACrF,IAAA,CAAW;;GAKb,IAAI,KAAK,WAAT,KAAoB,KAAa,IAAc,KAAK,QACnD;IAAA,IAAI,KAAK,eAAe,GAAc;KAErC,IAAI,MAAiB,QAAQ;MAC5B,IAAM,IAAY,IAAI,KAAK,EAAA;MAC3B,EAAU,QAAQ,EAAU,SAAA,GAAY,KAAK,OAAA,EAC7C,KAAK,SAAS;OAAA,GACV,KAAK;OACR,OAAO,KAAK,WAAW,GAAW,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;YAEnF;MACN,IAAM,IAAc,IAAI,KAAK,EAAA;MAC7B,EAAY,QAAQ,EAAY,SAAA,GAAY,KAAK,OAAA,EACjD,KAAK,WAAW;OAAA,GACZ,KAAK;OACR,OAAO,KAAK,WAAW,GAAa,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;OAAA;;KAK5F,AADA,KAAK,oBAAA;KACL;;IAEA,EAAmB,aAAa,WAAW,KAAK,OAAA,MAAa,KAAK,SAAS,IAAI,MAAM,GAAA,yBACrF,IAAA,CAAW;;GAKb,IAAI,KAAK,SAAS;IACjB,IAAM,IAAa,KAAK,UAAU,KAAK,QAAA;IACnC,KAAc,IAAW,MAC5B,EAAmB,gBAAgB,uCACnC,IAAA,CAAW;;GAIb,IAAI,KAAK,SAAS;IACjB,IAAM,IAAa,KAAK,UAAU,KAAK,QAAA;IACnC,KAAc,IAAS,MAC1B,EAAmB,cAAc,sCACjC,IAAA,CAAW;;;EAMd,KAAK,kBAAkB,GACvB,KAAK,QAAQ,GAGb,KAAK,YAAA;;CAMN,uBAAA;EACC,IAAA,CAAK,KAAK,SAAS,OAAO,OAAO,KAAK;EAEtC,IAAM,IAAW,KAAK,UAAU,KAAK,SAAS,MAAA;EAC9C,IAAA,CAAK,GAAU,OAAO,KAAK;EAG3B,IAAM,IAAY,IAAI,KAAK,EAAA;EAW3B,IATK,KAAK,iBACT,EAAU,QAAQ,EAAU,SAAA,GAAY,EAAA,EAGrC,KAAK,SAAS,KACjB,EAAU,QAAQ,EAAS,SAAA,GAAY,KAAK,OAAA,EAIzC,KAAK,SAAS;GACjB,IAAM,IAAY,KAAK,UAAU,KAAK,QAAA;GACtC,IAAI,KAAa,IAAY,GAC5B,OAAO,KAAK;;EAId,OAAO,KAAK,WAAW,GAAW,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;;CAMzF,yBAAA;EACC,IAAA,CAAK,KAAK,OAAO,OAAO,OAAO,KAAK;EAEpC,IAAM,IAAS,KAAK,UAAU,KAAK,OAAO,MAAA;EAC1C,IAAA,CAAK,GAAQ,OAAO,KAAK;EAGzB,IAAM,IAAc,IAAI,KAAK,EAAA;EAW7B,IATK,KAAK,iBACT,EAAY,QAAQ,EAAY,SAAA,GAAY,EAAA,EAGzC,KAAK,SAAS,KACjB,EAAY,QAAQ,EAAO,SAAA,GAAY,KAAK,OAAA,EAIzC,KAAK,SAAS;GACjB,IAAM,IAAY,KAAK,UAAU,KAAK,QAAA;GACtC,IAAI,KAAa,IAAY,GAC5B,OAAO,KAAK;;EAId,OAAO,KAAK,WAAW,GAAa,KAAK,SAAS,mBAAmB,qBAAqB,aAAA;;CAG3F,aAAA;EACC,IAAM,IAAA,EAAW,KAAK,SAAA,CACnB,KAAK,SAAS,SAAA,CACd,KAAK,OAAO,SACb,KAAK,gBAAgB,iBACrB,KAAK,gBAAgB,eACrB,KAAK,gBAAgB;EAEvB,KAAK,cAAc,IAAI,YAA0D,UAAU;GAC1F,QAAQ;IACP,UAAU,KAAK,SAAS;IACxB,QAAQ,KAAK,OAAO;IACpB,SAAA;IAAA;GAED,SAAA,CAAS;GACT,UAAA,CAAU;GAAA,CAAA,CAAA;;CAIZ,SAAA;EAEC,IAAM,IAAY,KAAK,gBAAgB,iBAAiB,KAAK,gBAAgB,YACvE,IAAU,KAAK,gBAAgB,eAAe,KAAK,gBAAgB;EAEzE,OAAO,CAAI;;;;;eAKE,KAAK,KAAA;gBACJ,KAAK,SAAS,MAAA;gBACd,KAAK,SAAS,MAAA;cAChB,KAAK,QAAA;cACL,KAAK,wBAAA,CAAA;iBACF,KAAK,qBAAA;kBACJ,EAAA;eACH,KAAa,GAAA;mBACT,KAAK,SAAA;mBACL,KAAK,SAAA;cACV,KAAK,UAAU,OAAO,KAAA;;;;oDAIgB,KAAK,UAAU,SAAS,QAAA;;;;;;;;eAQ7D,KAAK,KAAA;gBACJ,KAAK,OAAO,MAAA;gBACZ,KAAK,OAAO,MAAA;cACd,KAAK,sBAAA,CAAA;cACL,KAAK,QAAA;iBACF,KAAK,mBAAA;kBACJ,EAAA;eACH,KAAW,GAAA;mBACP,KAAK,SAAA;mBACL,KAAK,SAAA;cACV,KAAK,UAAU,OAAO,KAAA;;;;;;;;GAzelC,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAM3B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAM3B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,cAAA,KAAA,EAAA,EAAA,EAAA,CAM1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,iBAAA,KAAA,EAAA,EAAA,EAAA,CAM3B,GAAA,CAAA,EAAO,EAAA,WAAA,mBAAA,KAAA,EAAA;AAAA,IAAA,IAAA,IAAA,EAAA,CAvER,EAAc,6BAAA,CAAA,EAA6B,EAAA;AAAA,SAAA,KAAA"}
|
|
1
|
+
{"version":3,"file":"date-range-inline-TWWnTZlw.js","names":[],"sources":["../src/date-range-inline/date-range-inline.ts"],"sourcesContent":["import { html } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { SchmancyFormField } from '@mixins/index'\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'schmancy-date-range-inline': SchmancyDateRangeInline\r\n\t}\r\n}\r\n\r\nexport type SchmancyDateRangeInlineChangeEvent = CustomEvent<{\r\n\tdateFrom: string\r\n\tdateTo: string\r\n\tisValid: boolean\r\n}>\r\n\r\n/**\r\n * Smart inline date range picker that handles all the heavy lifting.\r\n * Auto-corrects invalid ranges, provides smart defaults, and validates dates.\r\n */\r\n@customElement('schmancy-date-range-inline')\r\nexport default class SchmancyDateRangeInline extends SchmancyFormField() {\r\n\t/**\r\n\t * Input type - 'date' or 'datetime-local'\r\n\t */\r\n\t@property({ type: String })\r\n\ttype: 'date' | 'datetime-local' = 'date'\r\n\r\n\t/**\r\n\t * From date configuration\r\n\t */\r\n\t@property({ type: Object })\r\n\tdateFrom: { label: string; value: string } = { label: 'From', value: '' }\r\n\r\n\t/**\r\n\t * To date configuration\r\n\t */\r\n\t@property({ type: Object })\r\n\tdateTo: { label: string; value: string } = { label: 'To', value: '' }\r\n\r\n\t/**\r\n\t * Minimum allowed date\r\n\t */\r\n\t@property({ type: String })\r\n\tminDate?: string\r\n\r\n\t/**\r\n\t * Maximum allowed date\r\n\t */\r\n\t@property({ type: String })\r\n\tmaxDate?: string\r\n\r\n\t/**\r\n\t * Compact mode for smaller UI\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tcompact = false\r\n\r\n\t/**\r\n\t * Auto-correct invalid date ranges\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tautoCorrect = true\r\n\r\n\t/**\r\n\t * Minimum gap between dates (in days)\r\n\t */\r\n\t@property({ type: Number })\r\n\tminGap = 0\r\n\r\n\t/**\r\n\t * Maximum gap between dates (in days)\r\n\t */\r\n\t@property({ type: Number })\r\n\tmaxGap?: number\r\n\r\n\t/**\r\n\t * Default gap when auto-setting dates (in days)\r\n\t */\r\n\t@property({ type: Number })\r\n\tdefaultGap = 1\r\n\r\n\t/**\r\n\t * Whether to allow same date selection\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tallowSameDate = false\r\n\r\n\t/**\r\n\t * Internal validation state\r\n\t */\r\n\t@state()\r\n\tprivate validationState = {\r\n\t\tdateFromError: '',\r\n\t\tdateToError: '',\r\n\t\trangeError: ''\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\t\t// Initialize with smart defaults if no values provided\r\n\t\tif (!this.dateFrom.value && !this.dateTo.value) {\r\n\t\t\tthis.setSmartDefaults()\r\n\t\t} else {\r\n\t\t\t// Validate initial values\r\n\t\t\tthis.validateAndCorrect()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set smart default dates based on context\r\n\t */\r\n\tprivate setSmartDefaults() {\r\n\t\tconst today = new Date()\r\n\t\tconst tomorrow = new Date(today)\r\n\t\ttomorrow.setDate(tomorrow.getDate() + this.defaultGap)\r\n\r\n\t\tconst format = this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD'\r\n\t\t\r\n\t\tthis.dateFrom = {\r\n\t\t\t...this.dateFrom,\r\n\t\t\tvalue: this.formatDate(today, format)\r\n\t\t}\r\n\t\t\r\n\t\tthis.dateTo = {\r\n\t\t\t...this.dateTo,\r\n\t\t\tvalue: this.formatDate(tomorrow, format)\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Format date to required string format\r\n\t */\r\n\tprivate formatDate(date: Date, format: string): string {\r\n\t\tconst year = date.getFullYear()\r\n\t\tconst month = String(date.getMonth() + 1).padStart(2, '0')\r\n\t\tconst day = String(date.getDate()).padStart(2, '0')\r\n\t\t\r\n\t\tif (format === 'YYYY-MM-DD') {\r\n\t\t\treturn `${year}-${month}-${day}`\r\n\t\t} else {\r\n\t\t\tconst hours = String(date.getHours()).padStart(2, '0')\r\n\t\t\tconst minutes = String(date.getMinutes()).padStart(2, '0')\r\n\t\t\treturn `${year}-${month}-${day}T${hours}:${minutes}`\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Parse date string to Date object\r\n\t */\r\n\tprivate parseDate(dateStr: string): Date | null {\r\n\t\tif (!dateStr) return null\r\n\t\tconst date = new Date(dateStr)\r\n\t\treturn isNaN(date.getTime()) ? null : date\r\n\t}\r\n\r\n\t/**\r\n\t * Calculate days between two dates\r\n\t */\r\n\tprivate getDaysBetween(date1: Date, date2: Date): number {\r\n\t\tconst msPerDay = 24 * 60 * 60 * 1000\r\n\t\treturn Math.floor((date2.getTime() - date1.getTime()) / msPerDay)\r\n\t}\r\n\r\n\t/**\r\n\t * Handle from date change with validation and auto-correction\r\n\t */\r\n\tprivate handleDateFromChange(e: Event) {\r\n\t\tconst input = e.target as HTMLInputElement\r\n\t\tconst newValue = input.value\r\n\r\n\t\t// Update the value\r\n\t\tthis.dateFrom = { ...this.dateFrom, value: newValue }\r\n\r\n\t\t// Clear previous errors\r\n\t\tthis.validationState = { ...this.validationState, dateFromError: '', rangeError: '' }\r\n\r\n\t\tif (!newValue) {\r\n\t\t\t// Allow empty for optional fields\r\n\t\t\tif (!this.required) {\r\n\t\t\t\tthis.emitChange()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tthis.validationState = { ...this.validationState, dateFromError: 'Start date is required' }\r\n\t\t\tthis.error = true\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Validate and potentially auto-correct\r\n\t\tthis.validateAndCorrect('from')\r\n\t}\r\n\r\n\t/**\r\n\t * Handle to date change with validation and auto-correction\r\n\t */\r\n\tprivate handleDateToChange(e: Event) {\r\n\t\tconst input = e.target as HTMLInputElement\r\n\t\tconst newValue = input.value\r\n\r\n\t\t// Update the value\r\n\t\tthis.dateTo = { ...this.dateTo, value: newValue }\r\n\r\n\t\t// Clear previous errors\r\n\t\tthis.validationState = { ...this.validationState, dateToError: '', rangeError: '' }\r\n\r\n\t\tif (!newValue) {\r\n\t\t\t// Allow empty for optional fields\r\n\t\t\tif (!this.required) {\r\n\t\t\t\tthis.emitChange()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tthis.validationState = { ...this.validationState, dateToError: 'End date is required' }\r\n\t\t\tthis.error = true\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Validate and potentially auto-correct\r\n\t\tthis.validateAndCorrect('to')\r\n\t}\r\n\r\n\t/**\r\n\t * Validate dates and auto-correct if enabled\r\n\t */\r\n\tprivate validateAndCorrect(changedField?: 'from' | 'to') {\r\n\t\tconst fromDate = this.parseDate(this.dateFrom.value)\r\n\t\tconst toDate = this.parseDate(this.dateTo.value)\r\n\r\n\t\t// Reset validation state\r\n\t\tlet hasError = false\r\n\t\tconst newValidationState = { dateFromError: '', dateToError: '', rangeError: '' }\r\n\r\n\t\t// Validate individual dates\r\n\t\tif (this.dateFrom.value && !fromDate) {\r\n\t\t\tnewValidationState.dateFromError = 'Invalid date format'\r\n\t\t\thasError = true\r\n\t\t}\r\n\r\n\t\tif (this.dateTo.value && !toDate) {\r\n\t\t\tnewValidationState.dateToError = 'Invalid date format'\r\n\t\t\thasError = true\r\n\t\t}\r\n\r\n\t\t// If both dates are valid, check range constraints\r\n\t\tif (fromDate && toDate) {\r\n\t\t\tconst daysBetween = this.getDaysBetween(fromDate, toDate)\r\n\r\n\t\t\t// Check if from date is after to date\r\n\t\t\tif (fromDate > toDate) {\r\n\t\t\t\tif (this.autoCorrect) {\r\n\t\t\t\t\t// Auto-correct based on which field changed\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\t// User changed from date, adjust to date\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.defaultGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (changedField === 'to') {\r\n\t\t\t\t\t\t// User changed to date, adjust from date\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.defaultGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// No specific field changed, swap them\r\n\t\t\t\t\t\tconst tempValue = this.dateFrom.value\r\n\t\t\t\t\t\tthis.dateFrom = { ...this.dateFrom, value: this.dateTo.value }\r\n\t\t\t\t\t\tthis.dateTo = { ...this.dateTo, value: tempValue }\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = 'End date must be after start date'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check same date constraint\r\n\t\t\tif (!this.allowSameDate && daysBetween === 0) {\r\n\t\t\t\tif (this.autoCorrect && changedField) {\r\n\t\t\t\t\t// Auto-correct by adjusting the other date\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.defaultGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.defaultGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = 'Start and end dates cannot be the same'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check minimum gap\r\n\t\t\tif (this.minGap > 0 && daysBetween < this.minGap) {\r\n\t\t\t\tif (this.autoCorrect && changedField) {\r\n\t\t\t\t\t// Auto-correct to maintain minimum gap\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.minGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.minGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = `Minimum ${this.minGap} day${this.minGap > 1 ? 's' : ''} required between dates`\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check maximum gap\r\n\t\t\tif (this.maxGap !== undefined && daysBetween > this.maxGap) {\r\n\t\t\t\tif (this.autoCorrect && changedField) {\r\n\t\t\t\t\t// Auto-correct to maintain maximum gap\r\n\t\t\t\t\tif (changedField === 'from') {\r\n\t\t\t\t\t\tconst newToDate = new Date(fromDate)\r\n\t\t\t\t\t\tnewToDate.setDate(newToDate.getDate() + this.maxGap)\r\n\t\t\t\t\t\tthis.dateTo = {\r\n\t\t\t\t\t\t\t...this.dateTo,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconst newFromDate = new Date(toDate)\r\n\t\t\t\t\t\tnewFromDate.setDate(newFromDate.getDate() - this.maxGap)\r\n\t\t\t\t\t\tthis.dateFrom = {\r\n\t\t\t\t\t\t\t...this.dateFrom,\r\n\t\t\t\t\t\t\tvalue: this.formatDate(newFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// Re-validate after correction\r\n\t\t\t\t\tthis.validateAndCorrect()\r\n\t\t\t\t\treturn\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewValidationState.rangeError = `Maximum ${this.maxGap} day${this.maxGap > 1 ? 's' : ''} allowed between dates`\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check against min/max date constraints\r\n\t\t\tif (this.minDate) {\r\n\t\t\t\tconst minDateObj = this.parseDate(this.minDate)\r\n\t\t\t\tif (minDateObj && fromDate < minDateObj) {\r\n\t\t\t\t\tnewValidationState.dateFromError = 'Date is before minimum allowed date'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.maxDate) {\r\n\t\t\t\tconst maxDateObj = this.parseDate(this.maxDate)\r\n\t\t\t\tif (maxDateObj && toDate > maxDateObj) {\r\n\t\t\t\t\tnewValidationState.dateToError = 'Date is after maximum allowed date'\r\n\t\t\t\t\thasError = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update validation state\r\n\t\tthis.validationState = newValidationState\r\n\t\tthis.error = hasError\r\n\r\n\t\t// Emit change event with validation status\r\n\t\tthis.emitChange()\r\n\t}\r\n\r\n\t/**\r\n\t * Get computed min date for the \"to\" field based on \"from\" value\r\n\t */\r\n\tprivate getComputedMinDateTo(): string | undefined {\r\n\t\tif (!this.dateFrom.value) return this.minDate\r\n\r\n\t\tconst fromDate = this.parseDate(this.dateFrom.value)\r\n\t\tif (!fromDate) return this.minDate\r\n\r\n\t\t// Calculate minimum date based on constraints\r\n\t\tconst minToDate = new Date(fromDate)\r\n\t\t\r\n\t\tif (!this.allowSameDate) {\r\n\t\t\tminToDate.setDate(minToDate.getDate() + 1)\r\n\t\t}\r\n\t\t\r\n\t\tif (this.minGap > 0) {\r\n\t\t\tminToDate.setDate(fromDate.getDate() + this.minGap)\r\n\t\t}\r\n\r\n\t\t// Compare with global minDate if set\r\n\t\tif (this.minDate) {\r\n\t\t\tconst globalMin = this.parseDate(this.minDate)\r\n\t\t\tif (globalMin && globalMin > minToDate) {\r\n\t\t\t\treturn this.minDate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.formatDate(minToDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t}\r\n\r\n\t/**\r\n\t * Get computed max date for the \"from\" field based on \"to\" value\r\n\t */\r\n\tprivate getComputedMaxDateFrom(): string | undefined {\r\n\t\tif (!this.dateTo.value) return this.maxDate\r\n\r\n\t\tconst toDate = this.parseDate(this.dateTo.value)\r\n\t\tif (!toDate) return this.maxDate\r\n\r\n\t\t// Calculate maximum date based on constraints\r\n\t\tconst maxFromDate = new Date(toDate)\r\n\t\t\r\n\t\tif (!this.allowSameDate) {\r\n\t\t\tmaxFromDate.setDate(maxFromDate.getDate() - 1)\r\n\t\t}\r\n\t\t\r\n\t\tif (this.minGap > 0) {\r\n\t\t\tmaxFromDate.setDate(toDate.getDate() - this.minGap)\r\n\t\t}\r\n\r\n\t\t// Compare with global maxDate if set\r\n\t\tif (this.maxDate) {\r\n\t\t\tconst globalMax = this.parseDate(this.maxDate)\r\n\t\t\tif (globalMax && globalMax < maxFromDate) {\r\n\t\t\t\treturn this.maxDate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.formatDate(maxFromDate, this.type === 'datetime-local' ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD')\r\n\t}\r\n\r\n\temitChange() {\r\n\t\tconst isValid = !this.error && \r\n\t\t\t!!this.dateFrom.value && \r\n\t\t\t!!this.dateTo.value && \r\n\t\t\t!this.validationState.dateFromError && \r\n\t\t\t!this.validationState.dateToError && \r\n\t\t\t!this.validationState.rangeError\r\n\r\n\t\tthis.dispatchEvent(new CustomEvent<SchmancyDateRangeInlineChangeEvent['detail']>('change', {\r\n\t\t\tdetail: {\r\n\t\t\t\tdateFrom: this.dateFrom.value,\r\n\t\t\t\tdateTo: this.dateTo.value,\r\n\t\t\t\tisValid\r\n\t\t\t},\r\n\t\t\tbubbles: true,\r\n\t\t\tcomposed: true\r\n\t\t}))\r\n\t}\r\n\r\n\tprotected render() {\r\n\t\t// Determine which error to show on each input\r\n\t\tconst fromError = this.validationState.dateFromError || this.validationState.rangeError\r\n\t\tconst toError = this.validationState.dateToError || this.validationState.rangeError\r\n\r\n\t\treturn html`\r\n\t\t\t<div class=\"w-full\">\r\n\t\t\t\t<div class=\"flex items-start gap-2 w-full\">\r\n\t\t\t\t\t<div class=\"flex-1\">\r\n\t\t\t\t\t\t<schmancy-input\r\n\t\t\t\t\t\t\t.type=${this.type}\r\n\t\t\t\t\t\t\t.label=${this.dateFrom.label}\r\n\t\t\t\t\t\t\t.value=${this.dateFrom.value}\r\n\t\t\t\t\t\t\t.min=${this.minDate}\r\n\t\t\t\t\t\t\t.max=${this.getComputedMaxDateFrom()}\r\n\t\t\t\t\t\t\t@change=${this.handleDateFromChange}\r\n\t\t\t\t\t\t\t.error=${!!fromError}\r\n\t\t\t\t\t\t\t.hint=${fromError || ''}\r\n\t\t\t\t\t\t\t.required=${this.required}\r\n\t\t\t\t\t\t\t.disabled=${this.disabled}\r\n\t\t\t\t\t\t\tsize=${this.compact ? 'sm' : 'md'}\r\n\t\t\t\t\t\t></schmancy-input>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"flex items-center justify-center ${this.compact ? 'pt-8' : 'pt-10'} px-1\">\r\n\t\t\t\t\t\t<schmancy-icon class=\"text-surface-onVariant opacity-50\">\r\n\t\t\t\t\t\t\tarrow_forward\r\n\t\t\t\t\t\t</schmancy-icon>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"flex-1\">\r\n\t\t\t\t\t\t<schmancy-input\r\n\t\t\t\t\t\t\t.type=${this.type}\r\n\t\t\t\t\t\t\t.label=${this.dateTo.label}\r\n\t\t\t\t\t\t\t.value=${this.dateTo.value}\r\n\t\t\t\t\t\t\t.min=${this.getComputedMinDateTo()}\r\n\t\t\t\t\t\t\t.max=${this.maxDate}\r\n\t\t\t\t\t\t\t@change=${this.handleDateToChange}\r\n\t\t\t\t\t\t\t.error=${!!toError}\r\n\t\t\t\t\t\t\t.hint=${toError || ''}\r\n\t\t\t\t\t\t\t.required=${this.required}\r\n\t\t\t\t\t\t\t.disabled=${this.disabled}\r\n\t\t\t\t\t\t\tsize=${this.compact ? 'sm' : 'md'}\r\n\t\t\t\t\t\t></schmancy-input>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t`\r\n\t}\r\n}"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-range-inline-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-range-inline-Bvs2ZvEY.cjs`);exports.SchmancyDateRangeInline=e.t;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./date-range-inline-
|
|
1
|
+
import { t as e } from "./date-range-inline-TWWnTZlw.js";
|
|
2
2
|
export { e as SchmancyDateRangeInline };
|
package/dist/date-range.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-range-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./date-range-H903Vt_r.cjs`);Object.defineProperty(exports,`SchmancyDateRange`,{enumerable:!0,get:function(){return e.t}}),exports.validateInitialDateRange=e.n;
|
package/dist/date-range.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./date-range-
|
|
1
|
+
import { n as e, t } from "./date-range-Dv-DM6mB.js";
|
|
2
2
|
export { t as SchmancyDateRange, e as validateInitialDateRange };
|
package/dist/delay.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./hashContent-Ck6laKlk.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`@lit/context`),o=require(`lit/decorators.js`),s=require(`lit`),c=require(`@lit-labs/motion`),l=require(`lit/directives/cache.js`);var u,d=(0,a.createContext)(`delay-context`),f=u=class extends e.c{constructor(...e){super(...e),this.delay=0,this.motion=`flyBelow`,this.rendered=!1,this.parentDelay=0,this.effectiveDelay=0,this.once=!0,this.sessionKey=``}firstUpdated(){this.observeSlotChanges(),this.updateRenderState()}disconnectedCallback(){super.disconnectedCallback(),this.mutationObserver?.disconnect()}observeSlotChanges(){let e=this.shadowRoot?.querySelector(`slot`);e&&(this.mutationObserver=new MutationObserver(()=>{this.sessionKey=this.generateSessionKey()}),this.mutationObserver.observe(e,{childList:!0,subtree:!0}))}getTotalSiblingDelay(e){if(!(e&&e instanceof HTMLElement))return 0;let t=0,n=e.previousElementSibling;for(;n;)n instanceof u&&(t+=n.delay),n=n.previousElementSibling;return e.parentElement&&(t+=this.getTotalSiblingDelay(e.parentElement)),t}updateRenderState(){if(this.sessionKey=this.generateSessionKey(),this.once&&sessionStorage.getItem(this.sessionKey)===`true`)return void(this.rendered=!0);let e=this.getTotalSiblingDelay(this);this.effectiveDelay=this.delay+this.parentDelay+e,(0,r.timer)(this.effectiveDelay).pipe((0,i.takeUntil)(this.disconnecting)).subscribe(()=>{if(this.rendered=!0,this.once)try{sessionStorage.setItem(this.sessionKey,`true`)}catch{}})}generateSessionKey(){let e=this.assignedElements.map(e=>e.outerHTML).join(``);return this.once?n.t(e):``}get motionLit(){return this.motion===`flyBelow`?c.flyBelow:this.motion===`flyAbove`?c.flyAbove:c.fadeIn}render(){return(0,l.cache)(this.rendered?s.html`<div
|
|
2
2
|
${(0,c.animate)({in:this.motionLit,keyframeOptions:{duration:300,easing:`ease-out`}})}
|
|
3
3
|
>
|
|
4
4
|
<slot></slot>
|
package/dist/delay.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as e, t } from "./mixins-
|
|
1
|
+
import { c as e, t } from "./mixins-DCVXqL1Q.js";
|
|
2
2
|
import { a as n } from "./active-host-BP0zy_Y9.js";
|
|
3
3
|
import { f as r } from "./animation-DCznELuT.js";
|
|
4
4
|
import { t as i } from "./reduced-motion-D7LqTUMn.js";
|
|
@@ -14,7 +14,6 @@ var C = class extends t(e) {
|
|
|
14
14
|
this.styles = [v`
|
|
15
15
|
:host {
|
|
16
16
|
display: block;
|
|
17
|
-
transition: box-shadow 400ms cubic-bezier(0.34, 1.2, 0.64, 1);
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
:host([overlay]) {
|
|
@@ -22,9 +21,6 @@ var C = class extends t(e) {
|
|
|
22
21
|
}
|
|
23
22
|
|
|
24
23
|
:host([open]) {
|
|
25
|
-
box-shadow:
|
|
26
|
-
0 2px 12px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent),
|
|
27
|
-
0 8px 32px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 8%, transparent);
|
|
28
24
|
z-index: 10;
|
|
29
25
|
}
|
|
30
26
|
|
|
@@ -161,8 +157,7 @@ var C = class extends t(e) {
|
|
|
161
157
|
[this.summaryPadding]: !0,
|
|
162
158
|
"select-none relative flex items-center gap-2 rounded-xl": !0,
|
|
163
159
|
"transition-colors duration-150": !0,
|
|
164
|
-
"
|
|
165
|
-
"hover:bg-surface-on/5 active:bg-surface-on/8 hover:ring-outline-variant/40": !this.locked,
|
|
160
|
+
"hover:bg-surface-on/5 active:bg-surface-on/8": !this.locked,
|
|
166
161
|
"focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1": !this.locked,
|
|
167
162
|
"cursor-pointer group": !this.locked,
|
|
168
163
|
"cursor-default": this.locked,
|
|
@@ -171,7 +166,7 @@ var C = class extends t(e) {
|
|
|
171
166
|
}), r = this.classMap({
|
|
172
167
|
[this.contentPadding]: !0,
|
|
173
168
|
"text-sm": !0,
|
|
174
|
-
"absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20
|
|
169
|
+
"absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20": this.overlay
|
|
175
170
|
});
|
|
176
171
|
return y`
|
|
177
172
|
<details ?open=${e} @toggle=${this._handleToggle} class=${t}>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"details-Cpg8sH2F.js","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-hidden': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-
|
|
1
|
+
require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./animation-CCOIW4wJ.cjs`),r=require(`./reduced-motion-Dzfp_w5x.cjs`),i=require(`./cursor-glow-C8LgCxpI.cjs`),a=require(`./magnetic-Bgh7aHHI.cjs`);let o=require(`rxjs`),s=require(`rxjs/operators`),c=require(`lit/decorators.js`),l=require(`lit`),u=require(`lit/directives/ref.js`);var d=class extends e.t(e.c){static{this.styles=[l.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
|
-
transition: box-shadow 400ms cubic-bezier(0.34, 1.2, 0.64, 1);
|
|
5
4
|
}
|
|
6
5
|
|
|
7
6
|
:host([overlay]) {
|
|
@@ -9,9 +8,6 @@ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-BOOu6q2n.cjs`),t=requi
|
|
|
9
8
|
}
|
|
10
9
|
|
|
11
10
|
:host([open]) {
|
|
12
|
-
box-shadow:
|
|
13
|
-
0 2px 12px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent),
|
|
14
|
-
0 8px 32px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 8%, transparent);
|
|
15
11
|
z-index: 10;
|
|
16
12
|
}
|
|
17
13
|
|
|
@@ -113,7 +109,7 @@ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-BOOu6q2n.cjs`),t=requi
|
|
|
113
109
|
transition: none;
|
|
114
110
|
}
|
|
115
111
|
}
|
|
116
|
-
`]}static{this.shadowRootOptions={...l.LitElement.shadowRootOptions,mode:`open`,delegatesFocus:!0}}get open(){return this._open$.value}set open(e){this._open$.value!==e&&this._open$.next(e)}constructor(){super(),this.summary=``,this.indicatorPlacement=`end`,this.hideIndicator=!1,this.indicatorRotate=90,this.locked=!1,this.overlay=!1,this.summaryPadding=`p-3`,this.contentPadding=`p-3`,this._open$=new o.BehaviorSubject(!1),this._indicatorRef=(0,u.createRef)(),this._contentRef=(0,u.createRef)(),this._indicatorIsOpen=!1,this._closing=!1,this._nativeAnim=typeof CSS<`u`&&!!CSS.supports?.(`selector(::details-content)`)&&!!CSS.supports?.(`interpolate-size`,`allow-keywords`),this._hasOpened=!1,this.type=`solid`,this.rounded=`all`}connectedCallback(){super.connectedCallback(),this._open$.pipe((0,s.distinctUntilChanged)(),(0,s.tap)(e=>{e&&!this._hasOpened&&(this._hasOpened=!0),this._animateIndicator(e),this._updateIndicatorSlot()}),(0,s.takeUntil)(this.disconnecting)).subscribe(()=>this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this._closeSub?.unsubscribe()}render(){let e=this._open$.value,t=this.classMap({"w-full rounded-xl transition-shadow duration-200 ease-out":!0,"overflow-hidden":!this.overlay,"overflow-visible relative":this.overlay}),n=this.classMap({[this.summaryPadding]:!0,"select-none relative flex items-center gap-2 rounded-xl":!0,"transition-colors duration-150":!0,"
|
|
112
|
+
`]}static{this.shadowRootOptions={...l.LitElement.shadowRootOptions,mode:`open`,delegatesFocus:!0}}get open(){return this._open$.value}set open(e){this._open$.value!==e&&this._open$.next(e)}constructor(){super(),this.summary=``,this.indicatorPlacement=`end`,this.hideIndicator=!1,this.indicatorRotate=90,this.locked=!1,this.overlay=!1,this.summaryPadding=`p-3`,this.contentPadding=`p-3`,this._open$=new o.BehaviorSubject(!1),this._indicatorRef=(0,u.createRef)(),this._contentRef=(0,u.createRef)(),this._indicatorIsOpen=!1,this._closing=!1,this._nativeAnim=typeof CSS<`u`&&!!CSS.supports?.(`selector(::details-content)`)&&!!CSS.supports?.(`interpolate-size`,`allow-keywords`),this._hasOpened=!1,this.type=`solid`,this.rounded=`all`}connectedCallback(){super.connectedCallback(),this._open$.pipe((0,s.distinctUntilChanged)(),(0,s.tap)(e=>{e&&!this._hasOpened&&(this._hasOpened=!0),this._animateIndicator(e),this._updateIndicatorSlot()}),(0,s.takeUntil)(this.disconnecting)).subscribe(()=>this.requestUpdate())}disconnectedCallback(){super.disconnectedCallback(),this._closeSub?.unsubscribe()}render(){let e=this._open$.value,t=this.classMap({"w-full rounded-xl transition-shadow duration-200 ease-out":!0,"overflow-hidden":!this.overlay,"overflow-visible relative":this.overlay}),n=this.classMap({[this.summaryPadding]:!0,"select-none relative flex items-center gap-2 rounded-xl":!0,"transition-colors duration-150":!0,"hover:bg-surface-on/5 active:bg-surface-on/8":!this.locked,"focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1":!this.locked,"cursor-pointer group":!this.locked,"cursor-default":this.locked,"flex-row":this.indicatorPlacement===`start`,"flex-row-reverse":this.indicatorPlacement===`end`}),r=this.classMap({[this.contentPadding]:!0,"text-sm":!0,"absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20":this.overlay});return l.html`
|
|
117
113
|
<details ?open=${e} @toggle=${this._handleToggle} class=${t}>
|
|
118
114
|
<summary ${this.locked?``:a.t({strength:2,radius:50})} ${this.locked?``:i.t({radius:250,intensity:.08})} class=${n} tabindex=${this.locked?-1:0} @click=${this._handleSummaryClick}>
|
|
119
115
|
${this.hideIndicator?``:l.html`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"details-CwSDur6j.cjs","names":[],"sources":["../src/details/details.ts"],"sourcesContent":["import { SchmancyElement, SurfaceMixin } from '@mixins/index'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { magnetic } from '../directives/magnetic'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs'\nimport { distinctUntilChanged, filter, take, takeUntil, tap } from 'rxjs/operators'\nimport { SPRING_SNAPPY } from '../utils/animation.js'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n@customElement('schmancy-details')\nexport default class SchmancyDetails extends SurfaceMixin(SchmancyElement) {\n\tstatic styles = [css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t:host([overlay]) {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t:host([open]) {\n\t\t\tz-index: 10;\n\t\t}\n\n\t\tdetails {\n\t\t\tbackground: inherit;\n\t\t\tcolor: inherit;\n\t\t\tborder-radius: inherit;\n\t\t}\n\n\t\tsummary::-webkit-details-marker {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\tsummary {\n\t\t\tlist-style: none;\n\t\t\tcolor: inherit;\n\t\t}\n\n\t\t/*\n\t\t * Blackbird 2.1 — CSS-driven collapse/expand\n\t\t *\n\t\t * Single animation system: CSS grid transition handles height,\n\t\t * coordinated opacity fade for buttery smooth feel.\n\t\t * No competing Web Animations API on content.\n\t\t */\n\n\t\t.content-wrapper {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: 0fr;\n\t\t\toverflow: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition:\n\t\t\t\tgrid-template-rows 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\topacity 250ms ease;\n\t\t}\n\n\t\t/* Spring easing when linear() is supported */\n\t\t@supports (animation-timing-function: linear(0, 1)) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition:\n\t\t\t\t\tgrid-template-rows 400ms linear(\n\t\t\t\t\t\t0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n\t\t\t\t\t\t0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50%, 1.015 54.8%,\n\t\t\t\t\t\t1.017 63.3%, 1.001\n\t\t\t\t\t),\n\t\t\t\t\topacity 250ms ease;\n\t\t\t}\n\t\t}\n\n\t\t.content-wrapper[data-open='true'] {\n\t\t\tgrid-template-rows: 1fr;\n\t\t\topacity: 1;\n\t\t}\n\n\t\t.content-inner {\n\t\t\tmin-height: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t/*\n\t\t * Progressive Enhancement: ::details-content (Chrome 131+)\n\t\t *\n\t\t * When both ::details-content AND interpolate-size are supported,\n\t\t * the browser handles height animation natively — including animated\n\t\t * close via transition-behavior: allow-discrete on content-visibility.\n\t\t * The grid wrapper becomes transparent (display: contents).\n\t\t */\n\t\t@supports selector(::details-content) and (interpolate-size: allow-keywords) {\n\t\t\t:host {\n\t\t\t\tinterpolate-size: allow-keywords;\n\t\t\t}\n\n\t\t\t.content-wrapper {\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tdetails::details-content {\n\t\t\t\tblock-size: 0;\n\t\t\t\toverflow-y: clip;\n\t\t\t\topacity: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tblock-size 400ms cubic-bezier(0.34, 1.2, 0.64, 1),\n\t\t\t\t\topacity 250ms ease,\n\t\t\t\t\tcontent-visibility 400ms;\n\t\t\t\ttransition-behavior: allow-discrete;\n\t\t\t}\n\n\t\t\tdetails[open]::details-content {\n\t\t\t\tblock-size: auto;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.content-wrapper {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t\tdetails::details-content {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t`];\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open' as const,\n\t\tdelegatesFocus: true,\n\t}\n\n\t@property() summary = ''\n\n\t@property({ type: Boolean, reflect: true })\n\tget open() {\n\t\treturn this._open$.value\n\t}\n\tset open(value: boolean) {\n\t\tif (this._open$.value !== value) {\n\t\t\tthis._open$.next(value)\n\t\t}\n\t}\n\n\t@property({ attribute: 'indicator-placement', reflect: true })\n\tindicatorPlacement: 'start' | 'end' = 'end'\n\n\t@property({ type: Boolean, attribute: 'hide-indicator' })\n\thideIndicator = false\n\n\t@property({ type: Number, attribute: 'indicator-rotate' })\n\tindicatorRotate: number = 90\n\n\t@property({ type: Boolean, reflect: true })\n\tlocked = false\n\n\t@property({ type: Boolean, reflect: true })\n\toverlay = false\n\n\t@property({ attribute: 'summary-padding' })\n\tsummaryPadding = 'p-3'\n\n\t@property({ attribute: 'content-padding' })\n\tcontentPadding = 'p-3'\n\n\tprivate _open$ = new BehaviorSubject<boolean>(false)\n\tprivate _indicatorRef: Ref<HTMLElement> = createRef()\n\tprivate _contentRef: Ref<HTMLDivElement> = createRef()\n\tprivate _currentAnimation?: Animation\n\tprivate _indicatorIsOpen = false\n\tprivate _closing = false\n\tprivate _closeSub?: Subscription\n\n\t/** True when browser handles close animation natively via ::details-content */\n\tprivate _nativeAnim =\n\t\ttypeof CSS !== 'undefined' &&\n\t\t!!CSS.supports?.('selector(::details-content)') &&\n\t\t!!CSS.supports?.('interpolate-size', 'allow-keywords')\n\n\t/**\n\t * Lazy rendering: tracks if content has ever been opened.\n\t * Once true, content stays rendered (even when closed) for smooth animations.\n\t */\n\t@state() private _hasOpened = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tthis.type = 'solid'\n\t\tthis.rounded = 'all'\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis._open$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isOpen => {\n\t\t\t\t\tif (isOpen && !this._hasOpened) {\n\t\t\t\t\t\tthis._hasOpened = true\n\t\t\t\t\t}\n\t\t\t\t\tthis._animateIndicator(isOpen)\n\t\t\t\t\tthis._updateIndicatorSlot()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.requestUpdate())\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._closeSub?.unsubscribe()\n\t}\n\n\trender() {\n\t\tconst isOpen = this._open$.value\n\n\t\tconst detailsClasses = this.classMap({\n\t\t\t'w-full rounded-xl transition-shadow duration-200 ease-out': true,\n\t\t\t'overflow-hidden': !this.overlay,\n\t\t\t'overflow-visible relative': this.overlay,\n\t\t})\n\n\t\tconst summaryClasses = this.classMap({\n\t\t\t[this.summaryPadding]: true,\n\t\t\t'select-none relative flex items-center gap-2 rounded-xl': true,\n\t\t\t'transition-colors duration-150': true,\n\t\t\t'hover:bg-surface-on/5 active:bg-surface-on/8': !this.locked,\n\t\t\t'focus-visible:ring-2 focus-visible:ring-primary-default/50 focus-visible:ring-offset-1': !this.locked,\n\t\t\t'cursor-pointer group': !this.locked,\n\t\t\t'cursor-default': this.locked,\n\t\t\t'flex-row': this.indicatorPlacement === 'start',\n\t\t\t'flex-row-reverse': this.indicatorPlacement === 'end',\n\t\t})\n\n\t\tconst contentClasses = this.classMap({\n\t\t\t[this.contentPadding]: true,\n\t\t\t'text-sm': true,\n\t\t\t'absolute inset-x-0 bg-surface-lowest/55 backdrop-blur-[16px] shadow-2xl rounded-b-xl z-20':\n\t\t\t\tthis.overlay,\n\t\t})\n\n\t\treturn html`\n\t\t\t<details ?open=${isOpen} @toggle=${this._handleToggle} class=${detailsClasses}>\n\t\t\t\t<summary ${this.locked ? '' : magnetic({ strength: 2, radius: 50 })} ${this.locked ? '' : cursorGlow({ radius: 250, intensity: 0.08 })} class=${summaryClasses} tabindex=${this.locked ? -1 : 0} @click=${this._handleSummaryClick}>\n\t\t\t\t\t${!this.hideIndicator\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t${ref(this._indicatorRef)}\n\t\t\t\t\t\t\t\t\tclass=\"flex items-center justify-center w-5 h-5 rounded-full shrink-0 opacity-70 group-hover:opacity-100\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<slot name=\"indicator\" @slotchange=${this._handleIndicatorSlotChange}>\n\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"w-5 h-5\"\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M9 6L15 12L9 18\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t</slot>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t<span class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<slot name=\"summary\">${this.summary}</slot>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t\t</summary>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._contentRef)}\n\t\t\t\t\tclass=\"content-wrapper\"\n\t\t\t\t\tdata-open=${isOpen && !this._closing}\n\t\t\t\t\taria-hidden=${isOpen ? 'false' : 'true'}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"content-inner\">\n\t\t\t\t\t\t${this._hasOpened\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t\t\t<slot name=\"details\"></slot>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</details>\n\t\t`\n\t}\n\n\tprivate _handleSummaryClick(e: MouseEvent) {\n\t\tif ((e.target as HTMLElement).closest('[slot=\"actions\"]')) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this.locked) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\t\tif (this._closing) {\n\t\t\te.preventDefault()\n\t\t\treturn\n\t\t}\n\n\t\t// Native animated path (Chromium 131+): browser handles everything via CSS\n\t\tif (this._nativeAnim) return\n\n\t\t// Fallback: manually animate close via CSS transition, then close native details\n\t\tif (this._open$.value) {\n\t\t\te.preventDefault()\n\t\t\tthis._startClose()\n\t\t}\n\t\t// If closed, let native open happen (handled by _handleToggle)\n\t}\n\n\tprivate _handleToggle(e: Event) {\n\t\te.stopPropagation()\n\n\t\tconst ownDetails = this.shadowRoot?.querySelector('details')\n\t\tif (e.target !== ownDetails) return\n\n\t\tconst newState = ownDetails.open\n\n\t\tif (this._nativeAnim) {\n\t\t\t// Native path: handle both open and close\n\t\t\tif (this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback path: only handle OPEN (close is driven by _startClose)\n\t\t\tif (newState && this._open$.value !== newState) {\n\t\t\t\tthis.open = newState\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: newState })\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fallback close: trigger CSS grid+opacity transition, then close native <details>.\n\t * The CSS transition (400ms) handles the visual collapse — no WAAPI needed.\n\t */\n\tprivate _startClose() {\n\t\tthis._closing = true\n\t\tthis._closeSub?.unsubscribe()\n\n\t\t// Immediately collapse the grid wrapper via DOM attribute\n\t\tthis._contentRef.value?.setAttribute('data-open', 'false')\n\n\t\t// Animate indicator immediately\n\t\tthis._animateIndicator(false)\n\n\t\t// After CSS transition completes, close native details and update state\n\t\tconst wrapper = this._contentRef.value\n\t\tif (!wrapper) return\n\n\t\tthis._closeSub = fromEvent<TransitionEvent>(wrapper, 'transitionend').pipe(\n\t\t\tfilter(e => e.propertyName === 'grid-template-rows'),\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._closing = false\n\t\t\t\tthis.open = false\n\t\t\t\tthis.dispatchScopedEvent('toggle', { open: false })\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\t}\n\n\tprivate _handleIndicatorSlotChange(e: Event) {\n\t\tconst slot = e.target as HTMLSlotElement\n\t\tslot.assignedElements().forEach(el => {\n\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t})\n\t}\n\n\tprivate _updateIndicatorSlot() {\n\t\tconst slot = this.shadowRoot?.querySelector('slot[name=\"indicator\"]') as HTMLSlotElement | null\n\t\tif (slot) {\n\t\t\tslot.assignedElements().forEach(el => {\n\t\t\t\tel.setAttribute('data-open', String(this._open$.value))\n\t\t\t})\n\t\t}\n\t}\n\n\t/** Idempotent indicator rotation — skips if already at target state */\n\tprivate _animateIndicator(isOpen: boolean) {\n\t\tif (this._indicatorIsOpen === isOpen) return\n\t\tthis._indicatorIsOpen = isOpen\n\n\t\tconst indicator = this._indicatorRef.value\n\t\tif (!indicator || reducedMotion$.value) return\n\n\t\tthis._currentAnimation?.cancel()\n\n\t\tthis._currentAnimation = indicator.animate(\n\t\t\t[\n\t\t\t\t{ transform: `rotate(${isOpen ? '0deg' : `${this.indicatorRotate}deg`})` },\n\t\t\t\t{ transform: `rotate(${isOpen ? `${this.indicatorRotate}deg` : '0deg'})` },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-details': SchmancyDetails\n\t}\n}\n"],"mappings":"oZAYe,IAAA,EAAA,cAA8B,EAAA,EAAa,EAAA,EAAA,AAAA,CAAA,OAAA,KAAA,OACzC,CAAC,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAgHiB,CAAA,GACjC,EAAA,WAAW,kBACd,KAAM,OACN,eAAA,CAAgB,EAAA,CAKjB,IAAA,MACI,CACH,OAAO,KAAK,OAAO,MAEpB,IAAA,KAAS,EAAA,CACJ,KAAK,OAAO,QAAU,GACzB,KAAK,OAAO,KAAK,EAAA,CA6CnB,aAAA,CACC,OAAA,CAAA,KAAA,QAtDqB,GAAA,KAAA,mBAagB,MAAA,KAAA,cAAA,CAGtB,EAAA,KAAA,gBAGU,GAAA,KAAA,OAAA,CAGjB,EAAA,KAAA,QAAA,CAGC,EAAA,KAAA,eAGO,MAAA,KAAA,eAGA,MAAA,KAAA,OAEA,IAAI,EAAA,gBAAA,CAAyB,EAAA,CAAA,KAAA,eAAA,EAAA,EAAA,YAAA,CAAA,KAAA,aAAA,EAAA,EAAA,YAAA,CAAA,KAAA,iBAAA,CAInB,EAAA,KAAA,SAAA,CACR,EAAA,KAAA,YAKH,OAAR,IAAQ,KAAR,CAAA,CACL,IAAI,WAAW,8BAAA,EAAA,CAAA,CACf,IAAI,WAAW,mBAAoB,iBAAA,CAAA,KAAA,WAAA,CAMR,EAI7B,KAAK,KAAO,QACZ,KAAK,QAAU,MAGhB,mBAAA,CACC,MAAM,mBAAA,CAEN,KAAK,OACH,MAAA,EAAA,EAAA,uBAAA,EACsB,EAAA,EAAA,KAClB,GAAA,CACC,GAAA,CAAW,KAAK,aACnB,KAAK,WAAA,CAAa,GAEnB,KAAK,kBAAkB,EAAA,CACvB,KAAK,sBAAA,EAAA,EACJ,EAAA,EAAA,WACQ,KAAK,cAAA,CAAA,CAEf,cAAgB,KAAK,eAAA,CAAA,CAGxB,sBAAA,CACC,MAAM,sBAAA,CACN,KAAK,WAAW,aAAA,CAGjB,QAAA,CACC,IAAM,EAAS,KAAK,OAAO,MAErB,EAAiB,KAAK,SAAS,CACpC,4DAAA,CAA6D,EAC7D,kBAAA,CAAoB,KAAK,QACzB,4BAA6B,KAAK,QAAA,CAAA,CAG7B,EAAiB,KAAK,SAAS,EACnC,KAAK,gBAAA,CAAiB,EACvB,0DAAA,CAA2D,EAC3D,iCAAA,CAAkC,EAClC,+CAAA,CAAiD,KAAK,OACtD,yFAAA,CAA2F,KAAK,OAChG,uBAAA,CAAyB,KAAK,OAC9B,iBAAkB,KAAK,OACvB,WAAY,KAAK,qBAAuB,QACxC,mBAAoB,KAAK,qBAAuB,MAAvB,CAAA,CAGpB,EAAiB,KAAK,SAAS,EACnC,KAAK,gBAAA,CAAiB,EACvB,UAAA,CAAW,EACX,4FACC,KAAK,QAAA,CAAA,CAGP,MAAO,GAAA,IAAI;oBACO,EAAA,WAAkB,KAAK,cAAA,SAAuB,EAAA;eACnD,KAAK,OAAS,GAAK,EAAA,EAAS,CAAE,SAAU,EAAG,OAAQ,GAAA,CAAA,CAAA,GAAS,KAAK,OAAS,GAAK,EAAA,EAAW,CAAE,OAAQ,IAAK,UAAW,IAAA,CAAA,CAAA,SAAiB,EAAA,YAA2B,KAAK,OAAA,GAAc,EAAA,UAAY,KAAK,oBAAA;OAC3M,KAAK,cA0BL,GAzBA,EAAA,IAAI;;qBAEG,KAAK,cAAA,CAAA;;;8CAG0B,KAAK,2BAAA;;;;;;;;;;;;;;;;;;;;;;6BAuBtB,KAAK,QAAA;;;;;;;iBAOvB,KAAK,YAAA,CAAA;;iBAEC,GAAA,CAAW,KAAK,SAAA;mBACd,EAAS,QAAU,OAAA;;;QAG9B,KAAK,WACJ,EAAA,IAAI;sBACS,EAAA;;;;UAKb,EAAA,QAAA;;;;IAOR,oBAA4B,EAAA,CACtB,EAAE,OAAuB,QAAQ,mBAAA,EAIlC,KAAK,QAIL,KAAK,SAPR,EAAE,gBAAA,CAaC,KAAK,aAGL,KAAK,OAAO,QACf,EAAE,gBAAA,CACF,KAAK,aAAA,EAKP,cAAsB,EAAA,CACrB,EAAE,iBAAA,CAEF,IAAM,EAAa,KAAK,YAAY,cAAc,UAAA,CAClD,GAAI,EAAE,SAAW,EAAY,OAE7B,IAAM,EAAW,EAAW,KAExB,KAAK,YAEJ,KAAK,OAAO,QAAU,IACzB,KAAK,KAAO,EACZ,KAAK,oBAAoB,SAAU,CAAE,KAAM,EAAA,CAAA,EAIxC,GAAY,KAAK,OAAO,QAAU,IACrC,KAAK,KAAO,EACZ,KAAK,oBAAoB,SAAU,CAAE,KAAM,EAAA,CAAA,EAS9C,aAAA,CACC,KAAK,SAAA,CAAW,EAChB,KAAK,WAAW,aAAA,CAGhB,KAAK,YAAY,OAAO,aAAa,YAAa,QAAA,CAGlD,KAAK,kBAAA,CAAkB,EAAA,CAGvB,IAAM,EAAU,KAAK,YAAY,MAC5B,IAEL,KAAK,WAAA,EAAA,EAAA,WAAuC,EAAS,gBAAA,CAAiB,MAAA,EAAA,EAAA,QAC9D,GAAK,EAAE,eAAiB,qBAAjB,EAAsC,EAAA,EAAA,MAC/C,EAAA,EAAE,EAAA,EAAA,SAAA,CAEN,KAAK,SAAA,CAAW,EAChB,KAAK,KAAA,CAAO,EACZ,KAAK,oBAAoB,SAAU,CAAE,KAAA,CAAM,EAAA,CAAA,EAAA,EAC1C,EAAA,EAAA,WACQ,KAAK,cAAA,CAAA,CACd,WAAA,EAGH,2BAAmC,EAAA,CAElC,EADe,OACV,kBAAA,CAAmB,QAAQ,GAAA,CAC/B,EAAG,aAAa,YAAa,OAAO,KAAK,OAAO,MAAA,CAAA,EAAA,CAIlD,sBAAA,CACC,IAAM,EAAO,KAAK,YAAY,cAAc,yBAAA,CACxC,GACH,EAAK,kBAAA,CAAmB,QAAQ,GAAA,CAC/B,EAAG,aAAa,YAAa,OAAO,KAAK,OAAO,MAAA,CAAA,EAAA,CAMnD,kBAA0B,EAAA,CACzB,GAAI,KAAK,mBAAqB,EAAQ,OACtC,KAAK,iBAAmB,EAExB,IAAM,EAAY,KAAK,cAAc,MAChC,GAAA,CAAa,EAAA,EAAe,QAEjC,KAAK,mBAAmB,QAAA,CAExB,KAAK,kBAAoB,EAAU,QAClC,CACC,CAAE,UAAW,UAAU,EAAS,OAAS,GAAG,KAAK,gBAAA,KAAA,GAAA,CACjD,CAAE,UAAW,UAAU,EAAS,GAAG,KAAK,gBAAA,KAAuB,OAAA,GAAA,CAAA,CAEhE,CACC,SAAU,EAAA,EAAc,SACxB,OAAQ,EAAA,EAAc,eACtB,KAAM,WAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,WAAA,CAAA,CAzRE,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAED,CAAE,KAAM,QAAS,QAAA,CAAS,EAAA,CAAA,CAAA,CAAO,EAAA,UAAA,OAAA,KAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAUjC,CAAE,UAAW,sBAAuB,QAAA,CAAS,EAAA,CAAA,CAAA,CAAO,EAAA,UAAA,qBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGpD,CAAE,KAAM,QAAS,UAAW,iBAAA,CAAA,CAAA,CAAmB,EAAA,UAAA,gBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAG/C,CAAE,KAAM,OAAQ,UAAW,mBAAA,CAAA,CAAA,CAAqB,EAAA,UAAA,kBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGhD,CAAE,KAAM,QAAS,QAAA,CAAS,EAAA,CAAA,CAAA,CAAO,EAAA,UAAA,SAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGjC,CAAE,KAAM,QAAS,QAAA,CAAS,EAAA,CAAA,CAAA,CAAO,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGjC,CAAE,UAAW,kBAAA,CAAA,CAAA,CAAoB,EAAA,UAAA,iBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGjC,CAAE,UAAW,kBAAA,CAAA,CAAA,CAAoB,EAAA,UAAA,iBAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CAqBnC,EAAA,UAAA,aAAA,IAAA,GAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eA3KM,mBAAA,CAAA,CAAmB,EAAA,CAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
|
package/dist/details.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./details-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./details-CwSDur6j.cjs`);exports.SchmancyDetails=e.t;
|
package/dist/details.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "./details-
|
|
1
|
+
import { t as e } from "./details-Cpg8sH2F.js";
|
|
2
2
|
export { e as SchmancyDetails };
|
package/dist/directives.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./animation-CCOIW4wJ.cjs`),t=require(`./reduced-motion-Dzfp_w5x.cjs`),n=require(`./cursor-glow-C8LgCxpI.cjs`),r=require(`./layout-Delq-QvR.cjs`),i=require(`./magnetic-Bgh7aHHI.cjs`);let a=require(`rxjs`),o=require(`rxjs/operators`),s=require(`lit`),c=require(`lit/async-directive.js`),l=require(`lit/directive.js`);var u={smooth:e.d,snappy:e.f,bouncy:e.l,gentle:e.u},d=class extends c.AsyncDirective{constructor(...e){super(...e),this.element=null,this.originalContent=``,this.animations=[],this.disconnecting$=new a.Subject,this.initialized=!1}render(e){return s.noChange}update(e,[t]){return this.element=e.element,this.initialized||(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new a.Subject),t.text===void 0?this.originalContent=this.element.textContent||``:(this.originalContent=t.text,this.element.textContent=t.text),this.element.style.willChange=`transform, opacity`,t.animation===`typewriter`?this.element.textContent=``:this.element.style.opacity=`0`,this.initialize(t)),s.noChange}disconnected(){this.cleanup()}reconnected(){this.element&&(this.element.style.willChange=`transform, opacity`)}initialize(e){let{animation:t,delay:n=0,duration:r,stagger:i,preset:s=`snappy`,restart:c=!1}=e,l=u[s],d=r??l.duration,f=i??(t===`cyber-glitch`?30:50),p=this.createVisibilityObservable$();(c?p.pipe((0,o.switchMap)(e=>e?(0,a.timer)(n).pipe((0,o.switchMap)(()=>this.runAnimation$(t,d,f,l))):(0,a.defer)(()=>(this.resetToInitial(t),a.EMPTY)))):p.pipe((0,o.filter)(e=>e),(0,o.take)(1),(0,o.delay)(n),(0,o.switchMap)(()=>this.runAnimation$(t,d,f,l)))).pipe((0,o.takeUntil)(this.disconnecting$)).subscribe()}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.cancelAnimations(),this.element&&(this.element.textContent=this.originalContent,this.element.style.opacity=``,this.element.style.willChange=`auto`,this.element.style.transform=``,this.element.style.filter=``),this.element=null,this.initialized=!1}cancelAnimations(){this.animations.forEach(e=>e.cancel()),this.animations=[]}resetToInitial(e){this.cancelAnimations(),this.element&&(e===`typewriter`?this.element.textContent=``:(this.element.textContent=this.originalContent,this.element.style.opacity=`0`),this.element.style.transform=``,this.element.style.filter=``,this.element.style.willChange=`transform, opacity`)}getAccumulatedOpacity(){if(!this.element)return 0;let e=1,t=this.element.parentElement,n=0;for(;t&&t!==document.body&&n<10;){let r=window.getComputedStyle(t);if(r.visibility===`hidden`||r.display===`none`)return 0;let i=parseFloat(r.opacity)||1;if(i<1&&(e*=i,e<=.5))return e;if(t.assignedSlot){let n=this.getSlotAncestorOpacity(t.assignedSlot);if(n===0)return 0;e*=n}t=t.parentElement,n++}return e}getSlotAncestorOpacity(e){let t=1,n=e.parentElement;for(;n;){let e=window.getComputedStyle(n);if(e.visibility===`hidden`||e.display===`none`)return 0;t*=parseFloat(e.opacity)||1,n=n.parentElement}return t}createVisibilityObservable$(){let e=(0,a.fromEvent)(document,`visibilitychange`).pipe((0,o.startWith)(null),(0,o.map)(()=>document.visibilityState===`visible`),(0,o.distinctUntilChanged)());return(0,a.combineLatest)([(0,a.interval)(200).pipe((0,o.startWith)(0),(0,o.map)(()=>{if(!this.element)return!1;let e=this.element.getBoundingClientRect();return e.width>0&&e.height>0&&e.top<window.innerHeight&&e.bottom>0&&this.getAccumulatedOpacity()>.5}),(0,o.distinctUntilChanged)()),e]).pipe((0,o.map)(([e,t])=>e&&t),(0,o.distinctUntilChanged)())}runAnimation$(e,t,n,r){if(!this.element)return a.EMPTY;switch(e){case`fade-up`:return this.animateFadeUp$(t,r);case`blur-reveal`:return this.animateBlurReveal$(t,n,r);case`word-reveal`:return this.animateWordReveal$(t,n,r);case`cyber-glitch`:return this.animateCyberGlitch$(t,n,r);case`typewriter`:return this.animateTypewriter$(t);default:return a.EMPTY}}animateFadeUp$(e,t){if(!this.element)return a.EMPTY;let n=this.element.animate([{opacity:0,transform:`translateY(30px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:t.easingFallback,fill:`forwards`});return this.animations.push(n),(0,a.from)(n.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.opacity=``,this.element.style.transform=``,this.element.style.willChange=`auto`)}),(0,o.catchError)(()=>a.EMPTY))}wrapTextNodes(e){let t=[],n=document.createDocumentFragment(),r=Array.from(e.childNodes);for(let e of r)if(e.nodeType===Node.TEXT_NODE){let r=(e.textContent||``).split(/(\s+)/);for(let e of r)if(/^\s+$/.test(e))n.appendChild(document.createTextNode(e));else if(e.length>0){let r=document.createElement(`span`);r.textContent=e,n.appendChild(r),t.push(r)}}else e instanceof HTMLElement&&(n.appendChild(e),t.push(e));return e.textContent=``,e.appendChild(n),t}animateBlurReveal$(e,t,n){if(!this.element)return a.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,filter:`blur(8px)`,transform:`scale(0.9)`},{opacity:1,filter:`blur(0)`,transform:`scale(1)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,a.from)(i.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,o.catchError)(()=>a.EMPTY)):a.EMPTY}animateWordReveal$(e,t,n){if(!this.element)return a.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,transform:`translateY(20px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,a.from)(i.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,o.catchError)(()=>a.EMPTY)):a.EMPTY}animateCyberGlitch$(e,t,n){if(!this.element)return a.EMPTY;let r=this.originalContent.split(``),i=document.createDocumentFragment(),s=[];for(let e of r){let t=document.createElement(`span`);t.style.display=`inline-block`,t.style.opacity=`0`,t.textContent=e===` `?`\xA0`:e,i.appendChild(t),s.push(t)}this.element.textContent=``,this.element.appendChild(i),this.element.style.opacity=`1`,s.forEach((i,a)=>{if(r[a]===` `)return void(i.style.opacity=`1`);let o=i.animate([{opacity:0,transform:`translateY(-8px) scale(1.4)`,filter:`blur(4px)`},{opacity:1,transform:`translateY(0) scale(1)`,filter:`blur(0)`}],{duration:e,easing:n.easingFallback,delay:a*t,fill:`forwards`});this.animations.push(o)});let c=this.animations[this.animations.length-1];return c?(0,a.from)(c.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,s.forEach(e=>{e.style.willChange=`auto`}))}),(0,o.catchError)(()=>a.EMPTY)):a.EMPTY}animateTypewriter$(e){if(!this.element)return a.EMPTY;let t=this.originalContent,n=t.length;if(n===0)return a.EMPTY;let r=e/n,i=0;return(0,a.interval)(r).pipe((0,o.tap)(()=>{i++,this.element&&(this.element.textContent=t.slice(0,i))}),(0,o.takeWhile)(()=>i<n),(0,o.finalize)(()=>{this.element&&(this.element.textContent=this.originalContent,this.element.style.willChange=`auto`)}))}},f=(0,c.directive)(d),p=class extends l.Directive{constructor(e){super(e),this.config={}}update(e,[t]){if(e.type!==l.PartType.ELEMENT)throw Error("The `classMap` directive must be used in the `class` attribute");let n=e.element;this.config=t,this.config.bgColor&&(n.style.backgroundColor=this.config.bgColor),this.config.color&&(n.style.color=this.config.color)}render(e){return this.config=e,s.nothing}},m=(0,l.directive)(p),h=new WeakMap;function g(e,t){let n=e.match(/var\(([^,)]+)/);return n&&getComputedStyle(document.documentElement).getPropertyValue(n[1]).trim()||t}var _=class extends l.Directive{constructor(e){if(super(e),e.type!==l.PartType.ELEMENT)throw Error(`confirmClick directive can only be used on elements`)}render(e,t){}update(e,[t,n={}]){let r=e.element,i=h.get(r);if(i){if(i.callback=t,this.optionsEqual(i.options,n))return;this.cleanup(r)}let o=new a.Subject,s=this.setupClickListener(r,n??{},o);h.set(r,{subscription:s,callback:t,options:n??{},overlayElement:null,isConfirming:!1,cancel$:o})}optionsEqual(e,t){return t?e.timeout===t.timeout&&e.icon===t.icon:Object.keys(e).length===0}setupClickListener(e,t,n){return(0,a.fromEvent)(e,`click`).pipe((0,o.tap)(r=>{let i=h.get(e);i&&!i.isConfirming&&(r.stopPropagation(),r.preventDefault(),i.isConfirming=!0,this.showOverlay(e,i,t,n))})).subscribe()}showOverlay(e,t,n,r){let i=n.timeout??3e3,s=e,c=n.icon??s.icon??s._capturedIcon??e.textContent?.trim()??`warning`,l=g(`var(--schmancy-sys-color-error-default)`,`#dc2626`),u=g(`var(--schmancy-sys-color-error-on)`,`#ffffff`),d=g(`var(--schmancy-sys-color-error-container)`,`#fecaca`),f=document.createElement(`div`);f.setAttribute(`role`,`status`),f.setAttribute(`aria-label`,`Click again to confirm`);let p=e.getBoundingClientRect(),m=p.width,_=p.height,v=window.devicePixelRatio||1,y=getComputedStyle(e);Object.assign(f.style,{position:`fixed`,top:`${p.top}px`,left:`${p.left}px`,width:`${m}px`,height:`${_}px`,zIndex:`10000`,borderRadius:y.borderRadius||`50%`,overflow:`hidden`,cursor:`pointer`,opacity:`0`,transform:`scale(0.6)`,transition:`opacity 250ms cubic-bezier(0.22, 1.25, 0.36, 1), transform 300ms cubic-bezier(0.22, 1.25, 0.36, 1)`});let b=document.createElement(`canvas`);b.width=m*v,b.height=_*v,b.style.width=`${m}px`,b.style.height=`${_}px`,b.style.position=`absolute`,b.style.top=`0`,b.style.left=`0`,f.appendChild(b);let x=Math.round(.5*Math.min(m,_)),S=document.createElement(`schmancy-icon`);S.textContent=c,S.setAttribute(`size`,`${x}px`),Object.assign(S.style,{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,color:u,pointerEvents:`none`}),f.appendChild(S),document.body.appendChild(f),t.overlayElement=f,(0,a.of)(null).pipe((0,o.observeOn)(a.animationFrameScheduler)).subscribe(()=>{f.style.opacity=`1`,f.style.transform=`scale(1)`});let C=b.getContext(`2d`);if(!C)return;C.scale(v,v);let w=m/2,T=_/2,E=Math.min(m,_)/2-1,D=E-3,O=e=>{C.clearRect(0,0,m,_),C.beginPath(),C.arc(w,T,D,0,2*Math.PI),C.fillStyle=l,C.fill();let t=1-e;if(t>0){let e=-Math.PI/2,n=e+2*Math.PI*t;C.beginPath(),C.arc(w,T,E,e,n),C.arc(w,T,D,n,e,!0),C.closePath(),C.fillStyle=d,C.fill()}};O(0);let k=performance.now(),A=(0,a.interval)(0,a.animationFrameScheduler).pipe((0,o.map)(()=>(performance.now()-k)/i),(0,o.takeWhile)(e=>e<=1),(0,o.takeUntil)(r),(0,o.tap)(e=>O(e))).subscribe({complete:()=>{h.get(e)?.isConfirming&&this.hideOverlay(e)}});t.subscription.add(A);let j=(0,a.merge)((0,a.fromEvent)(f,`click`).pipe((0,o.take)(1),(0,o.tap)(()=>{t.callback(),this.hideOverlay(e)})),(0,a.fromEvent)(document,`click`,{capture:!0}).pipe((0,o.filter)(t=>!f.contains(t.target)&&!e.contains(t.target)),(0,o.take)(1),(0,o.tap)(()=>this.hideOverlay(e))),(0,a.fromEvent)(document,`keydown`).pipe((0,o.filter)(e=>e.key===`Escape`),(0,o.take)(1),(0,o.tap)(()=>this.hideOverlay(e)))).pipe((0,o.take)(1),(0,o.takeUntil)(r)).subscribe();t.subscription.add(j)}hideOverlay(e){let t=h.get(e);if(t&&(t.cancel$.next(),t.isConfirming=!1,t.overlayElement)){let e=t.overlayElement;e.style.opacity=`0`,e.style.transform=`scale(0.6)`,(0,a.timer)(250).pipe((0,o.tap)(()=>{document.body.contains(e)&&document.body.removeChild(e)})).subscribe(),t.overlayElement=null}}cleanup(e){let t=h.get(e);t&&(t.cancel$.next(),t.cancel$.complete(),t.subscription.unsubscribe(),t.overlayElement&&document.body.contains(t.overlayElement)&&document.body.removeChild(t.overlayElement),h.delete(e))}disconnected(e){this.cleanup(e.element)}reconnected(e){let t=e.element,n=h.get(t);if(n){let e=new a.Subject,r=this.setupClickListener(t,n.options,e);h.set(t,{subscription:r,callback:n.callback,options:n.options,overlayElement:null,isConfirming:!1,cancel$:e})}}},v=(0,l.directive)(_),y=class extends c.AsyncDirective{constructor(...e){super(...e),this.element=null,this.items=[],this.subscription=null,this.typewriterSub=null,this.currentAnimation=null,this.addDisplayEl=null,this.disconnecting$=new a.Subject,this.initialized=!1}render(e){return s.noChange}update(e,[t={}]){if(this.element=e.element,!this.initialized&&this.isConnected){if(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new a.Subject),this.items=Array.from(this.element.children).filter(e=>e instanceof HTMLElement),this.items.length===0)return s.noChange;this.element.style.display=`inline-grid`,this.element.style.verticalAlign=`bottom`,this.items.forEach((e,t)=>{e.style.gridColumn=`1`,e.style.gridRow=`1`,e.style.visibility=t===0?``:`hidden`}),this.startCycling(t)}return s.noChange}disconnected(){this.cleanup()}reconnected(){}startCycling(e){let{mode:t=`replace`}=e;this.items.length<2||(t===`add`?this.startAddCycling(e):this.startReplaceCycling(e))}startReplaceCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0}=e,s=e=>(0,a.defer)(()=>new a.Observable(i=>{let s=this.items[e],c=(e-1+this.items.length)%this.items.length,l=this.items[c],u=parseInt(s.dataset.hold||``,10)||n,d=this.transitionItems(l,s,t,r).pipe((0,o.switchMap)(()=>(0,a.timer)(u)),(0,o.take)(1),(0,o.takeUntil)(this.disconnecting$)).subscribe({next:()=>{i.next(),i.complete()},error:e=>i.error(e)});return()=>d.unsubscribe()})),c=parseInt(this.items[0].dataset.hold||``,10)||n,l=(0,a.concat)((0,a.defer)(()=>new a.Observable(e=>{let t=(0,a.timer)(c).pipe((0,o.takeUntil)(this.disconnecting$)).subscribe({next:()=>{e.next(),e.complete()}});return()=>t.unsubscribe()})),(0,a.concat)(...[...Array.from({length:this.items.length},(e,t)=>t).slice(1),0].map(e=>s(e))).pipe((0,o.repeat)()));this.subscription=(0,a.timer)(i).pipe((0,o.switchMap)(()=>l),(0,o.takeUntil)(this.disconnecting$)).subscribe()}startAddCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0,separator:s=`, `}=e,c=this.items.map(e=>e.textContent||``);this.items.forEach(e=>{e.style.display=`none`});let l=document.createElement(`span`);this.element.appendChild(l),this.addDisplayEl=l;let u=(0,a.defer)(()=>{l.textContent=``;let e=``,i=c.map((i,c)=>{let u=parseInt(this.items[c].dataset.hold||``,10)||n,d=(c>0?s:``)+i;return(0,a.defer)(()=>t===`typewriter`?this.typewriterAdd(l,e,d,r).pipe((0,o.tap)(()=>{e+=d}),(0,o.switchMap)(()=>(0,a.timer)(u))):(0,a.defer)(()=>(e+=d,l.textContent=e,(0,a.timer)(u))))}),u=(0,a.defer)(()=>{let t=l.animate([{opacity:1},{opacity:0}],{duration:r,fill:`forwards`});return this.currentAnimation=t,(0,a.from)(t.finished).pipe((0,o.tap)(()=>{t.cancel(),l.textContent=``,l.style.opacity=``,e=``}),(0,o.switchMap)(()=>(0,a.timer)(300)))});return(0,a.concat)(...i,u)});this.subscription=(0,a.timer)(i).pipe((0,o.switchMap)(()=>u.pipe((0,o.repeat)())),(0,o.takeUntil)(this.disconnecting$)).subscribe()}typewriterAdd(e,t,n,r){if(n.length===0)return(0,a.of)(void 0);let i=r/n.length;return new a.Observable(r=>{let s=0,c=(0,a.interval)(i).pipe((0,o.tap)(()=>{s++,e.textContent=t+n.slice(0,s)}),(0,o.takeWhile)(()=>s<n.length),(0,o.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{e.textContent=t+n,r.next(),r.complete()}});return()=>c.unsubscribe()})}transitionItems(e,t,n,r){switch(this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,n){case`slide`:return this.slideTransition(e,t,r);case`typewriter`:return this.typewriterTransition(e,t,r);default:return this.fadeTransition(e,t,r)}}fadeTransition(e,t,n){let r=e.animate([{opacity:1},{opacity:0}],{duration:n/2,fill:`forwards`});return this.currentAnimation=r,(0,a.from)(r.finished).pipe((0,o.switchMap)(()=>{r.cancel(),e.style.visibility=`hidden`,t.style.visibility=``;let i=t.animate([{opacity:0},{opacity:1}],{duration:n/2,fill:`forwards`});return this.currentAnimation=i,(0,a.from)(i.finished).pipe((0,o.tap)(()=>{i.cancel()}),(0,o.map)(()=>{}),(0,o.catchError)(()=>a.EMPTY))}),(0,o.catchError)(()=>a.EMPTY))}slideTransition(e,t,n){let r=`cubic-bezier(0.4, 0, 0.2, 1)`;t.style.visibility=``;let i=e.animate([{transform:`translateY(0)`,opacity:1},{transform:`translateY(-100%)`,opacity:0}],{duration:n,fill:`forwards`,easing:r}),s=t.animate([{transform:`translateY(100%)`,opacity:0},{transform:`translateY(0)`,opacity:1}],{duration:n,fill:`forwards`,easing:r});return this.currentAnimation=s,(0,a.from)(s.finished).pipe((0,o.tap)(()=>{i.cancel(),s.cancel(),e.style.visibility=`hidden`}),(0,o.map)(()=>{}),(0,o.catchError)(()=>a.EMPTY))}typewriterTransition(e,t,n){let r=e.textContent||``,i=t.textContent||``,s=r.length+i.length;if(s===0)return e.style.visibility=`hidden`,t.style.visibility=``,(0,a.of)(void 0);let c=n/s;return new a.Observable(n=>{let s=r.length;return this.typewriterSub=(0,a.concat)((0,a.interval)(c).pipe((0,o.tap)(()=>{s--,e.textContent=r.slice(0,s)}),(0,o.takeWhile)(()=>s>0)),(0,a.defer)(()=>(e.style.visibility=`hidden`,e.textContent=r,t.style.visibility=``,t.textContent=``,(0,a.of)(null))),(0,a.defer)(()=>{let e=0;return(0,a.interval)(c).pipe((0,o.tap)(()=>{e++,t.textContent=i.slice(0,e)}),(0,o.takeWhile)(()=>e<i.length))})).pipe((0,o.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{t.textContent=i,n.next(),n.complete()}}),()=>{this.typewriterSub?.unsubscribe(),this.typewriterSub=null}})}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,this.subscription?.unsubscribe(),this.subscription=null,this.addDisplayEl&&=(this.addDisplayEl.remove(),null),this.items.forEach((e,t)=>{e.style.gridColumn=``,e.style.gridRow=``,e.style.visibility=t===0?``:`hidden`,e.style.opacity=``,e.style.transform=``}),this.element=null,this.items=[],this.initialized=!1}},b=(0,c.directive)(y),x=class extends c.AsyncDirective{constructor(...e){super(...e),this.maxBlur=8,this.duration=400,this.isBlurred=!1,this.transitionSet=!1}render(e){}update(e,[n]){if(e.type!==l.PartType.ELEMENT)throw Error(`depthOfField directive must be used on an element`);this.element=e.element,this.maxBlur=n.maxBlur??8,this.duration=n.duration??400,this.transitionSet||t.t.value||(this.element.style.transition=`filter ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1), scale ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1)`,this.transitionSet=!0),n.active&&!this.isBlurred?this.applyBlur():!n.active&&this.isBlurred&&this.clearBlur()}applyBlur(){this.element.style.filter=`blur(${this.maxBlur}px) saturate(60%)`,this.element.style.scale=`1.01`,this.isBlurred=!0}clearBlur(){this.element.style.filter=``,this.element.style.scale=``,this.isBlurred=!1}disconnected(){this.isBlurred&&this.clearBlur()}reconnected(){}},S=(0,l.directive)(x),C=new a.BehaviorSubject(null),w=new a.BehaviorSubject(null),T=new Map,E=new Map,D=[];function O(e){D.push(`[${new Date().toISOString().slice(11,23)}] ${e}`)}var k=null;w.pipe((0,o.distinctUntilChanged)((e,t)=>e?.target===t?.target&&e?.position===t?.position)).subscribe(e=>{if(!e)return void(k&&(k.style.display=`none`));if(t.t.value)return;let n=function(){if(k)return k;let e=document.createElement(`div`);e.setAttribute(`data-schmancy-drop-line`,``),Object.assign(e.style,{position:`fixed`,height:`2px`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,borderRadius:`1px`,pointerEvents:`none`,zIndex:`10000`,transition:`top 100ms ease, left 100ms ease, width 100ms ease`,boxShadow:`0 0 4px var(--schmancy-sys-color-tertiary-default, #6750A4)`,display:`none`});for(let t of[`left`,`right`]){let n=document.createElement(`div`);Object.assign(n.style,{position:`absolute`,width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,top:`-2px`,[t]:`-3px`}),e.appendChild(n)}return document.body.appendChild(e),k=e,e}(),r=e.target.getBoundingClientRect(),i=e.position===`before`?r.top-1:r.bottom+1;Object.assign(n.style,{top:`${i}px`,left:`${r.left}px`,width:`${r.width}px`,display:`block`})});var A=class extends l.Directive{constructor(...e){super(...e),this.destroy$=new a.Subject}update(n,[r]){if(this.id=r,!this.element){let r=n.element;this.element=r,r.draggable=!0,r.style.cursor=`grab`,(0,a.fromEvent)(r,`dragstart`).pipe((0,o.tap)(e=>{e.stopPropagation(),e.dataTransfer?.setData(`application/json`,JSON.stringify({id:this.id})),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`),r.style.cursor=`grabbing`,D.length=0,O(`DRAGSTART id=${this.id} tag=${r.tagName}`),C.next(this.id),E.clear();let t=r.parentElement;if(t)for(let[e,n]of T)n.parentElement===t&&E.set(e,n.getBoundingClientRect())}),(0,o.observeOn)(a.animationFrameScheduler),(0,o.tap)(()=>{t.t.value||(r.style.transition=`transform 150ms ease, box-shadow 150ms ease, opacity 150ms ease`,r.style.transform=`scale(1.03)`,r.style.boxShadow=`0 8px 25px rgba(0,0,0,0.15)`,r.style.opacity=`0.6`,r.style.zIndex=`1000`,r.style.pointerEvents=`none`)}),(0,o.switchMap)(()=>(0,a.fromEvent)(r,`dragend`).pipe((0,o.take)(1),(0,o.tap)(()=>{let n=w.value;if(r.style.removeProperty(`transition`),r.style.removeProperty(`transform`),r.style.removeProperty(`box-shadow`),r.style.removeProperty(`opacity`),r.style.removeProperty(`z-index`),r.style.removeProperty(`pointer-events`),r.style.cursor=`grab`,n){let{target:r,destinationId:i,position:s}=n;O(`DROP source=${this.id} dest=${i} pos=${s}`),r.dispatchEvent(new CustomEvent(`drop`,{detail:{source:this.id,destination:i,position:s},bubbles:!0,composed:!0})),(0,a.timer)(0,a.animationFrameScheduler).pipe((0,o.skip)(1),(0,o.take)(1)).subscribe(()=>{if(!t.t.value&&E.size!==0){for(let[t,n]of E){let r=T.get(t);if(!r)continue;let i=r.getBoundingClientRect(),a=n.left-i.left,o=n.top-i.top;Math.abs(a)<1&&Math.abs(o)<1||r.animate([{transform:`translate(${a}px, ${o}px)`},{transform:`translate(0,0)`}],{duration:e.f.duration,easing:e.f.easingFallback,fill:`none`})}E.clear()}})}C.next(null),w.next(null),O(`DRAGEND id=${this.id}`),D.length!==0&&(D.length=0)}))),(0,o.takeUntil)(this.destroy$)).subscribe()}return this.registeredId&&this.registeredId!==r&&T.delete(this.registeredId),T.set(r,this.element),this.registeredId=r,s.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.registeredId&&T.delete(this.registeredId),this.element=void 0}reconnected(){this.destroy$=new a.Subject,this.element=void 0}render(e){return s.nothing}},j=(0,l.directive)(A),M=class extends l.Directive{constructor(...e){super(...e),this.destroy$=new a.Subject}update(e,[t]){if(this.destinationId=t,!this.element){let t=e.element;this.element=t,(0,a.fromEvent)(t,`dragenter`).pipe((0,o.tap)(e=>{O(`NATIVE-DRAGENTER dest=${this.destinationId}`),e.preventDefault()}),(0,o.takeUntil)(this.destroy$)).subscribe(),(0,a.fromEvent)(t,`dragover`).pipe((0,o.tap)(e=>{O(`NATIVE-DRAGOVER dest=${this.destinationId}`),e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,o.takeUntil)(this.destroy$)).subscribe(),(0,a.fromEvent)(t,`drop`).pipe((0,o.tap)(e=>{e.preventDefault(),O(`NATIVE-DROP dest=${this.destinationId}`)}),(0,o.takeUntil)(this.destroy$)).subscribe(),C.pipe((0,o.switchMap)(e=>e&&e!==this.destinationId?(O(`DROP-ACTIVE dest=${this.destinationId} src=${e}`),(0,a.fromEvent)(t,`dragover`).pipe((0,o.tap)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,o.tap)(n=>{let r=function(e,t,n){let r=t.getBoundingClientRect(),i=n?T.get(n):null;if(!i)return e.clientY<r.top+r.height/2?`before`:`after`;let a=i.getBoundingClientRect();if(Math.abs(a.top-r.top)<r.height/2){let t=r.left+r.width/2;return a.left>r.left?e.clientX<t?`before`:null:e.clientX>=t?`after`:null}let o=r.top+r.height/2;return a.top>r.top?e.clientY<o?`before`:null:e.clientY>=o?`after`:null}(n,t,e);w.next(r?{target:t,destinationId:this.destinationId,position:r}:null)}))):(w.next(null),a.EMPTY)),(0,o.takeUntil)(this.destroy$)).subscribe()}return s.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.element=void 0}reconnected(){this.destroy$=new a.Subject,this.element=void 0}render(e){return s.nothing}},ee=(0,l.directive)(M),N=class extends c.AsyncDirective{constructor(...e){super(...e),this.hasAnimated=!1}render(e){}update(e,[n]){if(e.type!==l.PartType.ELEMENT)throw Error(`gravity directive must be used on an element`);if(this.element=e.element,this.options=n,this.hasAnimated)return;if(t.t.value)return void(this.hasAnimated=!0);let r=Math.max(.3,Math.min(3,n?.mass??1)),i=n?.distance??30,a=(n?.delay??0)+(n?.stagger??0);this.animate(r,i,a),this.hasAnimated=!0}reconnected(){if(this.hasAnimated=!1,this.options&&!t.t.value){let e=Math.max(.3,Math.min(3,this.options.mass??1)),t=this.options.distance??30,n=(this.options.delay??0)+(this.options.stagger??0);this.animate(e,t,n),this.hasAnimated=!0}}animate(t,n,r){let i=t<.7?e.l:e.d,s=i.duration*(1/Math.sqrt(t)),c=1/t*n;this.animation?.cancel(),this.element.style.willChange=`transform, opacity`,this.animation=this.element.animate([{opacity:0,transform:`translateY(-${c}px)`},{opacity:1,transform:`translateY(0)`}],{duration:s,delay:r,easing:i.easingFallback,fill:`backwards`}),(0,a.from)(this.animation.finished).pipe((0,o.take)(1),(0,o.tap)(()=>{this.element.style.willChange=``,this.animation=void 0}),(0,o.catchError)(()=>a.EMPTY)).subscribe()}disconnected(){this.animation?.cancel(),this.animation=void 0}},P=(0,l.directive)(N),F=class extends c.AsyncDirective{constructor(...e){super(...e),this.state=null}render(e,t){return s.noChange}update(e,[t,n]){let r=e.element,i,c,l,u={};if(typeof t==`function`?(i=t,u=n||{}):(c=t.onEnter,l=t.onExit,u=t.options||{},i=e=>{e&&c&&c(),!e&&l&&l()}),this.state?.element===r)return s.noChange;this.cleanup();let{once:d=!1,threshold:f=0,rootMargin:p=`0px`,delay:m=0}=u,h=new IntersectionObserver(e=>{if(!this.state)return;let t=e[0],n=t.isIntersecting;m>0&&n?(this.state.delayTimerSub&&this.state.delayTimerSub.unsubscribe(),this.state.delayTimerSub=(0,a.timer)(m).pipe((0,o.take)(1),(0,o.tap)(()=>this.triggerCallback(n,t))).subscribe()):(!n&&this.state.delayTimerSub&&(this.state.delayTimerSub.unsubscribe(),this.state.delayTimerSub=void 0),this.triggerCallback(n,t))},{threshold:f,rootMargin:p});return this.state={element:r,observer:h,callback:i,onEnter:c,onExit:l,once:d,delay:m,hasFired:!1},h.observe(r),s.noChange}triggerCallback(e,t){this.state&&(this.state.once?e&&!this.state.hasFired&&(this.state.hasFired=!0,this.state.callback(e,t),this.cleanup()):this.state.callback(e,t))}cleanup(){this.state&&=(this.state.delayTimerSub?.unsubscribe(),this.state.delayTimerSub=void 0,this.state.observer.disconnect(),null)}pause(){this.state&&(this.state.delayTimerSub?.unsubscribe(),this.state.observer.disconnect())}disconnected(){this.pause()}reconnected(){this.state&&this.state.observer.observe(this.state.element)}},I=(0,c.directive)(F),L={active:!0,intensity:`medium`},R={light:{blur:12,sat:1.3,bright:1.05,tint:.45,border:.2,shadow:.06},medium:{blur:16,sat:1.4,bright:1.08,tint:.55,border:.28,shadow:.08},strong:{blur:24,sat:1.5,bright:1.12,tint:.65,border:.35,shadow:.1}},z=[`backdropFilter`,`background`,`boxShadow`,`borderTop`,`borderBottom`],te=class extends c.AsyncDirective{constructor(...e){super(...e),this.state=null}render(e){return s.noChange}update(e,[t={}]){let n=e.element,r={...L,...t};return r.active?this.activate(n,r):this.cleanup(),s.noChange}activate(e,t){if(!this.isConnected)return;let n=R[t.intensity];if(!this.state){let t={};for(let n of z)t[n]=e.style[n];this.state={element:e,origStyles:t}}this.applyStyles(e,n)}applyStyles(e,t){let n=`blur(${t.blur}px) saturate(${t.sat}) brightness(${t.bright})`;e.style.backdropFilter=n,e.style.setProperty(`-webkit-backdrop-filter`,n),e.style.background=`rgba(var(--md-sys-color-surface-container, 255 255 255) / ${t.tint})`;let r=t.border;e.style.boxShadow=[`inset 0 1px 0 0 rgba(255,255,255, ${1.5*r})`,`inset 0 2px 6px rgba(255,255,255, ${.6*r})`,`inset 0 -1px 0 0 rgba(255,255,255, ${.25*r})`,`0 1px 3px rgba(0,0,0, ${t.shadow})`,`0 6px 20px rgba(0,0,0, ${.5*t.shadow})`].join(`, `),e.style.borderTop=`0.5px solid rgba(255,255,255, ${.9*r})`,e.style.borderBottom=`0.5px solid rgba(0,0,0, 0.05)`}cleanup(){if(!this.state)return;let{element:e,origStyles:t}=this.state;for(let n of z)e.style[n]=t[n];e.style.removeProperty(`-webkit-backdrop-filter`),this.state=null}disconnected(){this.cleanup()}reconnected(){}},ne=(0,c.directive)(te),B=`schmancy-lb-rotate`,V=!1;function H(){if(V)return;let e=document.createElement(`style`);e.id=`schmancy-living-border-shared`,e.textContent=`\n\t\t@property --${B}-angle {\n\t\t\tsyntax: '<angle>';\n\t\t\tinitial-value: 0deg;\n\t\t\tinherits: false;\n\t\t}\n\t\t@keyframes ${B} {\n\t\t\tto { --${B}-angle: 360deg; }\n\t\t}\n\t`,document.head.appendChild(e),V=!0}var U=class extends c.AsyncDirective{constructor(...e){super(...e),this.teardown$=new a.Subject,this.didSetPosition=!1}render(e){}update(e,[n]){if(e.type!==l.PartType.ELEMENT)throw Error(`livingBorder directive must be used on an element`);let r=JSON.stringify(n??{});this.element&&r===this.prevKey||(this.prevKey=r,this.element=e.element,this.lastOptions=n,t.t.value||(this.teardown$.next(),this.cleanup(),H(),this.createBorderOverlay(n)))}reconnected(){this.lastOptions&&!t.t.value&&(H(),this.createBorderOverlay(this.lastOptions))}createBorderOverlay(e){let t=e?.width??1,n=e?.color??`var(--schmancy-sys-color-primary-default)`,r=e?.spread??6,i=e?.duration??3e3,s=e?.onHover??!1;getComputedStyle(this.element).position===`static`&&(this.element.style.position=`relative`,this.didSetPosition=!0),this.borderEl=document.createElement(`div`),this.borderEl.setAttribute(`aria-hidden`,`true`);let c=`-${t}px`;Object.assign(this.borderEl.style,{position:`absolute`,top:c,left:c,right:c,bottom:c,borderRadius:`inherit`,pointerEvents:`none`,zIndex:`0`,background:`conic-gradient(\n\t\t\t\tfrom var(--${B}-angle),\n\t\t\t\ttransparent 0%, transparent 30%,\n\t\t\t\tcolor-mix(in srgb, ${n} 50%, transparent) 45%,\n\t\t\t\t${n} 50%,\n\t\t\t\tcolor-mix(in srgb, ${n} 50%, transparent) 55%,\n\t\t\t\ttransparent 70%, transparent 100%\n\t\t\t)`,mask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,maskComposite:`exclude`,WebkitMaskComposite:`xor`,padding:`${t}px`,animation:`${B} ${i}ms linear infinite`,filter:`blur(${.3*r}px) drop-shadow(0 0 ${r}px color-mix(in srgb, ${n} 40%, transparent))`,opacity:s?`0`:`0.5`,transition:`opacity 300ms ease`}),this.element.prepend(this.borderEl),(0,a.merge)((0,a.fromEvent)(this.element,`mouseenter`).pipe((0,o.map)(()=>{this.borderEl&&(this.borderEl.style.opacity=s?`0.7`:`0.8`)})),(0,a.fromEvent)(this.element,`mouseleave`).pipe((0,o.map)(()=>{this.borderEl&&(this.borderEl.style.opacity=s?`0`:`0.5`)}))).pipe((0,o.takeUntil)(this.teardown$)).subscribe()}cleanup(){this.borderEl?.remove(),this.borderEl=void 0}disconnected(){this.teardown$.next(),this.cleanup(),this.didSetPosition&&this.element&&(this.element.style.position=``,this.didSetPosition=!1)}},W=(0,l.directive)(U),G=new WeakMap,K=class extends l.Directive{constructor(e){if(super(e),e.type!==l.PartType.ELEMENT)throw Error(`longPress directive can only be used on elements`)}render(e,t){}update(e,[t,n={}]){let r=e.element,i=G.get(r);if(i){if(i.callback===t&&this.optionsEqual(i.options,n))return;i.subscription.unsubscribe()}let a=this.setupLongPress(r,t,n);G.set(r,{subscription:a,callback:t,options:n||{}})}optionsEqual(e,t){return t?e.duration===t.duration&&e.movementThreshold===t.movementThreshold:Object.keys(e).length===0}setupLongPress(e,t,n={}){let r=n.duration??500,i=n.movementThreshold??10,s=(0,a.fromEvent)(e,`pointerdown`),c=(0,a.fromEvent)(window,`pointerup`),l=(0,a.fromEvent)(window,`pointermove`),u=(0,a.fromEvent)(window,`pointercancel`);return s.pipe((0,o.switchMap)(e=>{let n=e.clientX,s=e.clientY,d=(0,a.merge)(c,u,l.pipe((0,o.filter)(e=>{let t=e.clientX-n,r=e.clientY-s;return Math.sqrt(t*t+r*r)>i}))).pipe((0,o.first)());return(0,a.timer)(r).pipe((0,o.takeUntil)(d),(0,o.tap)(()=>t()))})).subscribe()}disconnected(e){let t=e.element,n=G.get(t);n&&(n.subscription.unsubscribe(),G.delete(t))}reconnected(e){let t=e.element,n=G.get(t);n&&(n.subscription=this.setupLongPress(t,n.callback,n.options))}},q=(0,l.directive)(K),J={active:!0,autoHideDuration:3e3,background:!0,intensity:1,blur:1,speed:1,fadeInDuration:1e3,fadeOutDuration:8e3,idleOpacity:.6,idleBreathe:!0,temperature:0,chromaticAberration:1,particleCount:30},Y=`cubic-bezier(0.37, 0, 0.63, 1)`,X=`cubic-bezier(0.25, 0.1, 0.25, 1)`,Z=!1,re=class e{constructor(){this.elementToDirective=new WeakMap,this.instances=new Set,this.observer=null,this.visibilitySub=null,this.tabVisible=!0}static{this._instance=null}static get instance(){return e._instance||=new e,e._instance}register(e,t){let n=this.instances.size===0;this.instances.add(e),this.elementToDirective.set(t,e),n&&this.setup(),this.observer?.observe(t)}unregister(e,t){this.observer?.unobserve(t),this.elementToDirective.delete(t),this.instances.delete(e),this.instances.size===0&&this.teardown()}setup(){this.observer=new IntersectionObserver(e=>{for(let t of e){let e=this.elementToDirective.get(t.target);e&&e.onVisibilityChange(t.isIntersecting&&this.tabVisible)}},{threshold:0}),this.visibilitySub=(0,a.fromEvent)(document,`visibilitychange`).pipe((0,o.tap)(()=>{this.tabVisible=document.visibilityState===`visible`;for(let e of this.instances)e.onVisibilityChange(this.tabVisible)})).subscribe()}teardown(){this.observer&&=(this.observer.disconnect(),null),this.visibilitySub&&=(this.visibilitySub.unsubscribe(),null)}},ie=class extends c.AsyncDirective{constructor(...e){super(...e),this.state=null,this.coordinator=re.instance}render(e){return s.noChange}update(e,[t={}]){let n=e.element,r={...J,...t};return r.active?this.show(n,r):this.hide(r),s.noChange}onVisibilityChange(e){if(!this.state?.overlay)return;let t=this.state.isVisible;this.state.isVisible=e,t!==e&&(this.state.overlay.classList.toggle(`paused`,!e),this.state.overlay.classList.toggle(`running`,e))}show(e,n){(function(){if(Z||typeof document>`u`)return;Z=!0;let e=document.createElement(`style`);e.id=`nebula-directive-styles`,e.textContent=`
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./animation-CCOIW4wJ.cjs`),t=require(`./reduced-motion-Dzfp_w5x.cjs`),n=require(`./cursor-glow-C8LgCxpI.cjs`),r=require(`./layout-BbCIfIgo.cjs`),i=require(`./magnetic-Bgh7aHHI.cjs`);let a=require(`rxjs`),o=require(`rxjs/operators`),s=require(`lit`),c=require(`lit/async-directive.js`),l=require(`lit/directive.js`);var u={smooth:e.d,snappy:e.f,bouncy:e.l,gentle:e.u},d=class extends c.AsyncDirective{constructor(...e){super(...e),this.element=null,this.originalContent=``,this.animations=[],this.disconnecting$=new a.Subject,this.initialized=!1}render(e){return s.noChange}update(e,[t]){return this.element=e.element,this.initialized||(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new a.Subject),t.text===void 0?this.originalContent=this.element.textContent||``:(this.originalContent=t.text,this.element.textContent=t.text),this.element.style.willChange=`transform, opacity`,t.animation===`typewriter`?this.element.textContent=``:this.element.style.opacity=`0`,this.initialize(t)),s.noChange}disconnected(){this.cleanup()}reconnected(){this.element&&(this.element.style.willChange=`transform, opacity`)}initialize(e){let{animation:t,delay:n=0,duration:r,stagger:i,preset:s=`snappy`,restart:c=!1}=e,l=u[s],d=r??l.duration,f=i??(t===`cyber-glitch`?30:50),p=this.createVisibilityObservable$();(c?p.pipe((0,o.switchMap)(e=>e?(0,a.timer)(n).pipe((0,o.switchMap)(()=>this.runAnimation$(t,d,f,l))):(0,a.defer)(()=>(this.resetToInitial(t),a.EMPTY)))):p.pipe((0,o.filter)(e=>e),(0,o.take)(1),(0,o.delay)(n),(0,o.switchMap)(()=>this.runAnimation$(t,d,f,l)))).pipe((0,o.takeUntil)(this.disconnecting$)).subscribe()}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.cancelAnimations(),this.element&&(this.element.textContent=this.originalContent,this.element.style.opacity=``,this.element.style.willChange=`auto`,this.element.style.transform=``,this.element.style.filter=``),this.element=null,this.initialized=!1}cancelAnimations(){this.animations.forEach(e=>e.cancel()),this.animations=[]}resetToInitial(e){this.cancelAnimations(),this.element&&(e===`typewriter`?this.element.textContent=``:(this.element.textContent=this.originalContent,this.element.style.opacity=`0`),this.element.style.transform=``,this.element.style.filter=``,this.element.style.willChange=`transform, opacity`)}getAccumulatedOpacity(){if(!this.element)return 0;let e=1,t=this.element.parentElement,n=0;for(;t&&t!==document.body&&n<10;){let r=window.getComputedStyle(t);if(r.visibility===`hidden`||r.display===`none`)return 0;let i=parseFloat(r.opacity)||1;if(i<1&&(e*=i,e<=.5))return e;if(t.assignedSlot){let n=this.getSlotAncestorOpacity(t.assignedSlot);if(n===0)return 0;e*=n}t=t.parentElement,n++}return e}getSlotAncestorOpacity(e){let t=1,n=e.parentElement;for(;n;){let e=window.getComputedStyle(n);if(e.visibility===`hidden`||e.display===`none`)return 0;t*=parseFloat(e.opacity)||1,n=n.parentElement}return t}createVisibilityObservable$(){let e=(0,a.fromEvent)(document,`visibilitychange`).pipe((0,o.startWith)(null),(0,o.map)(()=>document.visibilityState===`visible`),(0,o.distinctUntilChanged)());return(0,a.combineLatest)([(0,a.interval)(200).pipe((0,o.startWith)(0),(0,o.map)(()=>{if(!this.element)return!1;let e=this.element.getBoundingClientRect();return e.width>0&&e.height>0&&e.top<window.innerHeight&&e.bottom>0&&this.getAccumulatedOpacity()>.5}),(0,o.distinctUntilChanged)()),e]).pipe((0,o.map)(([e,t])=>e&&t),(0,o.distinctUntilChanged)())}runAnimation$(e,t,n,r){if(!this.element)return a.EMPTY;switch(e){case`fade-up`:return this.animateFadeUp$(t,r);case`blur-reveal`:return this.animateBlurReveal$(t,n,r);case`word-reveal`:return this.animateWordReveal$(t,n,r);case`cyber-glitch`:return this.animateCyberGlitch$(t,n,r);case`typewriter`:return this.animateTypewriter$(t);default:return a.EMPTY}}animateFadeUp$(e,t){if(!this.element)return a.EMPTY;let n=this.element.animate([{opacity:0,transform:`translateY(30px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:t.easingFallback,fill:`forwards`});return this.animations.push(n),(0,a.from)(n.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.opacity=``,this.element.style.transform=``,this.element.style.willChange=`auto`)}),(0,o.catchError)(()=>a.EMPTY))}wrapTextNodes(e){let t=[],n=document.createDocumentFragment(),r=Array.from(e.childNodes);for(let e of r)if(e.nodeType===Node.TEXT_NODE){let r=(e.textContent||``).split(/(\s+)/);for(let e of r)if(/^\s+$/.test(e))n.appendChild(document.createTextNode(e));else if(e.length>0){let r=document.createElement(`span`);r.textContent=e,n.appendChild(r),t.push(r)}}else e instanceof HTMLElement&&(n.appendChild(e),t.push(e));return e.textContent=``,e.appendChild(n),t}animateBlurReveal$(e,t,n){if(!this.element)return a.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,filter:`blur(8px)`,transform:`scale(0.9)`},{opacity:1,filter:`blur(0)`,transform:`scale(1)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,a.from)(i.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,o.catchError)(()=>a.EMPTY)):a.EMPTY}animateWordReveal$(e,t,n){if(!this.element)return a.EMPTY;let r=this.wrapTextNodes(this.element);this.element.style.opacity=`1`,r.forEach((r,i)=>{r.style.opacity=`0`,r.style.display=`inline-block`;let a=r.animate([{opacity:0,transform:`translateY(20px)`},{opacity:1,transform:`translateY(0)`}],{duration:e,easing:n.easingFallback,delay:i*t,fill:`forwards`});this.animations.push(a)});let i=this.animations[this.animations.length-1];return i?(0,a.from)(i.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,r.forEach(e=>{e.style.willChange=`auto`}))}),(0,o.catchError)(()=>a.EMPTY)):a.EMPTY}animateCyberGlitch$(e,t,n){if(!this.element)return a.EMPTY;let r=this.originalContent.split(``),i=document.createDocumentFragment(),s=[];for(let e of r){let t=document.createElement(`span`);t.style.display=`inline-block`,t.style.opacity=`0`,t.textContent=e===` `?`\xA0`:e,i.appendChild(t),s.push(t)}this.element.textContent=``,this.element.appendChild(i),this.element.style.opacity=`1`,s.forEach((i,a)=>{if(r[a]===` `)return void(i.style.opacity=`1`);let o=i.animate([{opacity:0,transform:`translateY(-8px) scale(1.4)`,filter:`blur(4px)`},{opacity:1,transform:`translateY(0) scale(1)`,filter:`blur(0)`}],{duration:e,easing:n.easingFallback,delay:a*t,fill:`forwards`});this.animations.push(o)});let c=this.animations[this.animations.length-1];return c?(0,a.from)(c.finished).pipe((0,o.tap)(()=>{this.element&&(this.element.style.willChange=`auto`,s.forEach(e=>{e.style.willChange=`auto`}))}),(0,o.catchError)(()=>a.EMPTY)):a.EMPTY}animateTypewriter$(e){if(!this.element)return a.EMPTY;let t=this.originalContent,n=t.length;if(n===0)return a.EMPTY;let r=e/n,i=0;return(0,a.interval)(r).pipe((0,o.tap)(()=>{i++,this.element&&(this.element.textContent=t.slice(0,i))}),(0,o.takeWhile)(()=>i<n),(0,o.finalize)(()=>{this.element&&(this.element.textContent=this.originalContent,this.element.style.willChange=`auto`)}))}},f=(0,c.directive)(d),p=class extends l.Directive{constructor(e){super(e),this.config={}}update(e,[t]){if(e.type!==l.PartType.ELEMENT)throw Error("The `classMap` directive must be used in the `class` attribute");let n=e.element;this.config=t,this.config.bgColor&&(n.style.backgroundColor=this.config.bgColor),this.config.color&&(n.style.color=this.config.color)}render(e){return this.config=e,s.nothing}},m=(0,l.directive)(p),h=new WeakMap;function g(e,t){let n=e.match(/var\(([^,)]+)/);return n&&getComputedStyle(document.documentElement).getPropertyValue(n[1]).trim()||t}var _=class extends l.Directive{constructor(e){if(super(e),e.type!==l.PartType.ELEMENT)throw Error(`confirmClick directive can only be used on elements`)}render(e,t){}update(e,[t,n={}]){let r=e.element,i=h.get(r);if(i){if(i.callback=t,this.optionsEqual(i.options,n))return;this.cleanup(r)}let o=new a.Subject,s=this.setupClickListener(r,n??{},o);h.set(r,{subscription:s,callback:t,options:n??{},overlayElement:null,isConfirming:!1,cancel$:o})}optionsEqual(e,t){return t?e.timeout===t.timeout&&e.icon===t.icon:Object.keys(e).length===0}setupClickListener(e,t,n){return(0,a.fromEvent)(e,`click`).pipe((0,o.tap)(r=>{let i=h.get(e);i&&!i.isConfirming&&(r.stopPropagation(),r.preventDefault(),i.isConfirming=!0,this.showOverlay(e,i,t,n))})).subscribe()}showOverlay(e,t,n,r){let i=n.timeout??3e3,s=e,c=n.icon??s.icon??s._capturedIcon??e.textContent?.trim()??`warning`,l=g(`var(--schmancy-sys-color-error-default)`,`#dc2626`),u=g(`var(--schmancy-sys-color-error-on)`,`#ffffff`),d=g(`var(--schmancy-sys-color-error-container)`,`#fecaca`),f=document.createElement(`div`);f.setAttribute(`role`,`status`),f.setAttribute(`aria-label`,`Click again to confirm`);let p=e.getBoundingClientRect(),m=p.width,_=p.height,v=window.devicePixelRatio||1,y=getComputedStyle(e);Object.assign(f.style,{position:`fixed`,top:`${p.top}px`,left:`${p.left}px`,width:`${m}px`,height:`${_}px`,zIndex:`10000`,borderRadius:y.borderRadius||`50%`,overflow:`hidden`,cursor:`pointer`,opacity:`0`,transform:`scale(0.6)`,transition:`opacity 250ms cubic-bezier(0.22, 1.25, 0.36, 1), transform 300ms cubic-bezier(0.22, 1.25, 0.36, 1)`});let b=document.createElement(`canvas`);b.width=m*v,b.height=_*v,b.style.width=`${m}px`,b.style.height=`${_}px`,b.style.position=`absolute`,b.style.top=`0`,b.style.left=`0`,f.appendChild(b);let x=Math.round(.5*Math.min(m,_)),S=document.createElement(`schmancy-icon`);S.textContent=c,S.setAttribute(`size`,`${x}px`),Object.assign(S.style,{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,color:u,pointerEvents:`none`}),f.appendChild(S),document.body.appendChild(f),t.overlayElement=f,(0,a.of)(null).pipe((0,o.observeOn)(a.animationFrameScheduler)).subscribe(()=>{f.style.opacity=`1`,f.style.transform=`scale(1)`});let C=b.getContext(`2d`);if(!C)return;C.scale(v,v);let w=m/2,T=_/2,E=Math.min(m,_)/2-1,D=E-3,O=e=>{C.clearRect(0,0,m,_),C.beginPath(),C.arc(w,T,D,0,2*Math.PI),C.fillStyle=l,C.fill();let t=1-e;if(t>0){let e=-Math.PI/2,n=e+2*Math.PI*t;C.beginPath(),C.arc(w,T,E,e,n),C.arc(w,T,D,n,e,!0),C.closePath(),C.fillStyle=d,C.fill()}};O(0);let k=performance.now(),A=(0,a.interval)(0,a.animationFrameScheduler).pipe((0,o.map)(()=>(performance.now()-k)/i),(0,o.takeWhile)(e=>e<=1),(0,o.takeUntil)(r),(0,o.tap)(e=>O(e))).subscribe({complete:()=>{h.get(e)?.isConfirming&&this.hideOverlay(e)}});t.subscription.add(A);let j=(0,a.merge)((0,a.fromEvent)(f,`click`).pipe((0,o.take)(1),(0,o.tap)(()=>{t.callback(),this.hideOverlay(e)})),(0,a.fromEvent)(document,`click`,{capture:!0}).pipe((0,o.filter)(t=>!f.contains(t.target)&&!e.contains(t.target)),(0,o.take)(1),(0,o.tap)(()=>this.hideOverlay(e))),(0,a.fromEvent)(document,`keydown`).pipe((0,o.filter)(e=>e.key===`Escape`),(0,o.take)(1),(0,o.tap)(()=>this.hideOverlay(e)))).pipe((0,o.take)(1),(0,o.takeUntil)(r)).subscribe();t.subscription.add(j)}hideOverlay(e){let t=h.get(e);if(t&&(t.cancel$.next(),t.isConfirming=!1,t.overlayElement)){let e=t.overlayElement;e.style.opacity=`0`,e.style.transform=`scale(0.6)`,(0,a.timer)(250).pipe((0,o.tap)(()=>{document.body.contains(e)&&document.body.removeChild(e)})).subscribe(),t.overlayElement=null}}cleanup(e){let t=h.get(e);t&&(t.cancel$.next(),t.cancel$.complete(),t.subscription.unsubscribe(),t.overlayElement&&document.body.contains(t.overlayElement)&&document.body.removeChild(t.overlayElement),h.delete(e))}disconnected(e){this.cleanup(e.element)}reconnected(e){let t=e.element,n=h.get(t);if(n){let e=new a.Subject,r=this.setupClickListener(t,n.options,e);h.set(t,{subscription:r,callback:n.callback,options:n.options,overlayElement:null,isConfirming:!1,cancel$:e})}}},v=(0,l.directive)(_),y=class extends c.AsyncDirective{constructor(...e){super(...e),this.element=null,this.items=[],this.subscription=null,this.typewriterSub=null,this.currentAnimation=null,this.addDisplayEl=null,this.disconnecting$=new a.Subject,this.initialized=!1}render(e){return s.noChange}update(e,[t={}]){if(this.element=e.element,!this.initialized&&this.isConnected){if(this.initialized=!0,this.disconnecting$.closed&&(this.disconnecting$=new a.Subject),this.items=Array.from(this.element.children).filter(e=>e instanceof HTMLElement),this.items.length===0)return s.noChange;this.element.style.display=`inline-grid`,this.element.style.verticalAlign=`bottom`,this.items.forEach((e,t)=>{e.style.gridColumn=`1`,e.style.gridRow=`1`,e.style.visibility=t===0?``:`hidden`}),this.startCycling(t)}return s.noChange}disconnected(){this.cleanup()}reconnected(){}startCycling(e){let{mode:t=`replace`}=e;this.items.length<2||(t===`add`?this.startAddCycling(e):this.startReplaceCycling(e))}startReplaceCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0}=e,s=e=>(0,a.defer)(()=>new a.Observable(i=>{let s=this.items[e],c=(e-1+this.items.length)%this.items.length,l=this.items[c],u=parseInt(s.dataset.hold||``,10)||n,d=this.transitionItems(l,s,t,r).pipe((0,o.switchMap)(()=>(0,a.timer)(u)),(0,o.take)(1),(0,o.takeUntil)(this.disconnecting$)).subscribe({next:()=>{i.next(),i.complete()},error:e=>i.error(e)});return()=>d.unsubscribe()})),c=parseInt(this.items[0].dataset.hold||``,10)||n,l=(0,a.concat)((0,a.defer)(()=>new a.Observable(e=>{let t=(0,a.timer)(c).pipe((0,o.takeUntil)(this.disconnecting$)).subscribe({next:()=>{e.next(),e.complete()}});return()=>t.unsubscribe()})),(0,a.concat)(...[...Array.from({length:this.items.length},(e,t)=>t).slice(1),0].map(e=>s(e))).pipe((0,o.repeat)()));this.subscription=(0,a.timer)(i).pipe((0,o.switchMap)(()=>l),(0,o.takeUntil)(this.disconnecting$)).subscribe()}startAddCycling(e){let{transition:t=`fade`,hold:n=2e3,duration:r=300,delay:i=0,separator:s=`, `}=e,c=this.items.map(e=>e.textContent||``);this.items.forEach(e=>{e.style.display=`none`});let l=document.createElement(`span`);this.element.appendChild(l),this.addDisplayEl=l;let u=(0,a.defer)(()=>{l.textContent=``;let e=``,i=c.map((i,c)=>{let u=parseInt(this.items[c].dataset.hold||``,10)||n,d=(c>0?s:``)+i;return(0,a.defer)(()=>t===`typewriter`?this.typewriterAdd(l,e,d,r).pipe((0,o.tap)(()=>{e+=d}),(0,o.switchMap)(()=>(0,a.timer)(u))):(0,a.defer)(()=>(e+=d,l.textContent=e,(0,a.timer)(u))))}),u=(0,a.defer)(()=>{let t=l.animate([{opacity:1},{opacity:0}],{duration:r,fill:`forwards`});return this.currentAnimation=t,(0,a.from)(t.finished).pipe((0,o.tap)(()=>{t.cancel(),l.textContent=``,l.style.opacity=``,e=``}),(0,o.switchMap)(()=>(0,a.timer)(300)))});return(0,a.concat)(...i,u)});this.subscription=(0,a.timer)(i).pipe((0,o.switchMap)(()=>u.pipe((0,o.repeat)())),(0,o.takeUntil)(this.disconnecting$)).subscribe()}typewriterAdd(e,t,n,r){if(n.length===0)return(0,a.of)(void 0);let i=r/n.length;return new a.Observable(r=>{let s=0,c=(0,a.interval)(i).pipe((0,o.tap)(()=>{s++,e.textContent=t+n.slice(0,s)}),(0,o.takeWhile)(()=>s<n.length),(0,o.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{e.textContent=t+n,r.next(),r.complete()}});return()=>c.unsubscribe()})}transitionItems(e,t,n,r){switch(this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,n){case`slide`:return this.slideTransition(e,t,r);case`typewriter`:return this.typewriterTransition(e,t,r);default:return this.fadeTransition(e,t,r)}}fadeTransition(e,t,n){let r=e.animate([{opacity:1},{opacity:0}],{duration:n/2,fill:`forwards`});return this.currentAnimation=r,(0,a.from)(r.finished).pipe((0,o.switchMap)(()=>{r.cancel(),e.style.visibility=`hidden`,t.style.visibility=``;let i=t.animate([{opacity:0},{opacity:1}],{duration:n/2,fill:`forwards`});return this.currentAnimation=i,(0,a.from)(i.finished).pipe((0,o.tap)(()=>{i.cancel()}),(0,o.map)(()=>{}),(0,o.catchError)(()=>a.EMPTY))}),(0,o.catchError)(()=>a.EMPTY))}slideTransition(e,t,n){let r=`cubic-bezier(0.4, 0, 0.2, 1)`;t.style.visibility=``;let i=e.animate([{transform:`translateY(0)`,opacity:1},{transform:`translateY(-100%)`,opacity:0}],{duration:n,fill:`forwards`,easing:r}),s=t.animate([{transform:`translateY(100%)`,opacity:0},{transform:`translateY(0)`,opacity:1}],{duration:n,fill:`forwards`,easing:r});return this.currentAnimation=s,(0,a.from)(s.finished).pipe((0,o.tap)(()=>{i.cancel(),s.cancel(),e.style.visibility=`hidden`}),(0,o.map)(()=>{}),(0,o.catchError)(()=>a.EMPTY))}typewriterTransition(e,t,n){let r=e.textContent||``,i=t.textContent||``,s=r.length+i.length;if(s===0)return e.style.visibility=`hidden`,t.style.visibility=``,(0,a.of)(void 0);let c=n/s;return new a.Observable(n=>{let s=r.length;return this.typewriterSub=(0,a.concat)((0,a.interval)(c).pipe((0,o.tap)(()=>{s--,e.textContent=r.slice(0,s)}),(0,o.takeWhile)(()=>s>0)),(0,a.defer)(()=>(e.style.visibility=`hidden`,e.textContent=r,t.style.visibility=``,t.textContent=``,(0,a.of)(null))),(0,a.defer)(()=>{let e=0;return(0,a.interval)(c).pipe((0,o.tap)(()=>{e++,t.textContent=i.slice(0,e)}),(0,o.takeWhile)(()=>e<i.length))})).pipe((0,o.takeUntil)(this.disconnecting$)).subscribe({complete:()=>{t.textContent=i,n.next(),n.complete()}}),()=>{this.typewriterSub?.unsubscribe(),this.typewriterSub=null}})}cleanup(){this.disconnecting$.next(),this.disconnecting$.complete(),this.currentAnimation?.cancel(),this.currentAnimation=null,this.typewriterSub?.unsubscribe(),this.typewriterSub=null,this.subscription?.unsubscribe(),this.subscription=null,this.addDisplayEl&&=(this.addDisplayEl.remove(),null),this.items.forEach((e,t)=>{e.style.gridColumn=``,e.style.gridRow=``,e.style.visibility=t===0?``:`hidden`,e.style.opacity=``,e.style.transform=``}),this.element=null,this.items=[],this.initialized=!1}},b=(0,c.directive)(y),x=class extends c.AsyncDirective{constructor(...e){super(...e),this.maxBlur=8,this.duration=400,this.isBlurred=!1,this.transitionSet=!1}render(e){}update(e,[n]){if(e.type!==l.PartType.ELEMENT)throw Error(`depthOfField directive must be used on an element`);this.element=e.element,this.maxBlur=n.maxBlur??8,this.duration=n.duration??400,this.transitionSet||t.t.value||(this.element.style.transition=`filter ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1), scale ${this.duration}ms cubic-bezier(0.34, 1.2, 0.64, 1)`,this.transitionSet=!0),n.active&&!this.isBlurred?this.applyBlur():!n.active&&this.isBlurred&&this.clearBlur()}applyBlur(){this.element.style.filter=`blur(${this.maxBlur}px) saturate(60%)`,this.element.style.scale=`1.01`,this.isBlurred=!0}clearBlur(){this.element.style.filter=``,this.element.style.scale=``,this.isBlurred=!1}disconnected(){this.isBlurred&&this.clearBlur()}reconnected(){}},S=(0,l.directive)(x),C=new a.BehaviorSubject(null),w=new a.BehaviorSubject(null),T=new Map,E=new Map,D=[];function O(e){D.push(`[${new Date().toISOString().slice(11,23)}] ${e}`)}var k=null;w.pipe((0,o.distinctUntilChanged)((e,t)=>e?.target===t?.target&&e?.position===t?.position)).subscribe(e=>{if(!e)return void(k&&(k.style.display=`none`));if(t.t.value)return;let n=function(){if(k)return k;let e=document.createElement(`div`);e.setAttribute(`data-schmancy-drop-line`,``),Object.assign(e.style,{position:`fixed`,height:`2px`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,borderRadius:`1px`,pointerEvents:`none`,zIndex:`10000`,transition:`top 100ms ease, left 100ms ease, width 100ms ease`,boxShadow:`0 0 4px var(--schmancy-sys-color-tertiary-default, #6750A4)`,display:`none`});for(let t of[`left`,`right`]){let n=document.createElement(`div`);Object.assign(n.style,{position:`absolute`,width:`6px`,height:`6px`,borderRadius:`50%`,backgroundColor:`var(--schmancy-sys-color-tertiary-default, #6750A4)`,top:`-2px`,[t]:`-3px`}),e.appendChild(n)}return document.body.appendChild(e),k=e,e}(),r=e.target.getBoundingClientRect(),i=e.position===`before`?r.top-1:r.bottom+1;Object.assign(n.style,{top:`${i}px`,left:`${r.left}px`,width:`${r.width}px`,display:`block`})});var A=class extends l.Directive{constructor(...e){super(...e),this.destroy$=new a.Subject}update(n,[r]){if(this.id=r,!this.element){let r=n.element;this.element=r,r.draggable=!0,r.style.cursor=`grab`,(0,a.fromEvent)(r,`dragstart`).pipe((0,o.tap)(e=>{e.stopPropagation(),e.dataTransfer?.setData(`application/json`,JSON.stringify({id:this.id})),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`),r.style.cursor=`grabbing`,D.length=0,O(`DRAGSTART id=${this.id} tag=${r.tagName}`),C.next(this.id),E.clear();let t=r.parentElement;if(t)for(let[e,n]of T)n.parentElement===t&&E.set(e,n.getBoundingClientRect())}),(0,o.observeOn)(a.animationFrameScheduler),(0,o.tap)(()=>{t.t.value||(r.style.transition=`transform 150ms ease, box-shadow 150ms ease, opacity 150ms ease`,r.style.transform=`scale(1.03)`,r.style.boxShadow=`0 8px 25px rgba(0,0,0,0.15)`,r.style.opacity=`0.6`,r.style.zIndex=`1000`,r.style.pointerEvents=`none`)}),(0,o.switchMap)(()=>(0,a.fromEvent)(r,`dragend`).pipe((0,o.take)(1),(0,o.tap)(()=>{let n=w.value;if(r.style.removeProperty(`transition`),r.style.removeProperty(`transform`),r.style.removeProperty(`box-shadow`),r.style.removeProperty(`opacity`),r.style.removeProperty(`z-index`),r.style.removeProperty(`pointer-events`),r.style.cursor=`grab`,n){let{target:r,destinationId:i,position:s}=n;O(`DROP source=${this.id} dest=${i} pos=${s}`),r.dispatchEvent(new CustomEvent(`drop`,{detail:{source:this.id,destination:i,position:s},bubbles:!0,composed:!0})),(0,a.timer)(0,a.animationFrameScheduler).pipe((0,o.skip)(1),(0,o.take)(1)).subscribe(()=>{if(!t.t.value&&E.size!==0){for(let[t,n]of E){let r=T.get(t);if(!r)continue;let i=r.getBoundingClientRect(),a=n.left-i.left,o=n.top-i.top;Math.abs(a)<1&&Math.abs(o)<1||r.animate([{transform:`translate(${a}px, ${o}px)`},{transform:`translate(0,0)`}],{duration:e.f.duration,easing:e.f.easingFallback,fill:`none`})}E.clear()}})}C.next(null),w.next(null),O(`DRAGEND id=${this.id}`),D.length!==0&&(D.length=0)}))),(0,o.takeUntil)(this.destroy$)).subscribe()}return this.registeredId&&this.registeredId!==r&&T.delete(this.registeredId),T.set(r,this.element),this.registeredId=r,s.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.registeredId&&T.delete(this.registeredId),this.element=void 0}reconnected(){this.destroy$=new a.Subject,this.element=void 0}render(e){return s.nothing}},j=(0,l.directive)(A),M=class extends l.Directive{constructor(...e){super(...e),this.destroy$=new a.Subject}update(e,[t]){if(this.destinationId=t,!this.element){let t=e.element;this.element=t,(0,a.fromEvent)(t,`dragenter`).pipe((0,o.tap)(e=>{O(`NATIVE-DRAGENTER dest=${this.destinationId}`),e.preventDefault()}),(0,o.takeUntil)(this.destroy$)).subscribe(),(0,a.fromEvent)(t,`dragover`).pipe((0,o.tap)(e=>{O(`NATIVE-DRAGOVER dest=${this.destinationId}`),e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,o.takeUntil)(this.destroy$)).subscribe(),(0,a.fromEvent)(t,`drop`).pipe((0,o.tap)(e=>{e.preventDefault(),O(`NATIVE-DROP dest=${this.destinationId}`)}),(0,o.takeUntil)(this.destroy$)).subscribe(),C.pipe((0,o.switchMap)(e=>e&&e!==this.destinationId?(O(`DROP-ACTIVE dest=${this.destinationId} src=${e}`),(0,a.fromEvent)(t,`dragover`).pipe((0,o.tap)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`)}),(0,o.tap)(n=>{let r=function(e,t,n){let r=t.getBoundingClientRect(),i=n?T.get(n):null;if(!i)return e.clientY<r.top+r.height/2?`before`:`after`;let a=i.getBoundingClientRect();if(Math.abs(a.top-r.top)<r.height/2){let t=r.left+r.width/2;return a.left>r.left?e.clientX<t?`before`:null:e.clientX>=t?`after`:null}let o=r.top+r.height/2;return a.top>r.top?e.clientY<o?`before`:null:e.clientY>=o?`after`:null}(n,t,e);w.next(r?{target:t,destinationId:this.destinationId,position:r}:null)}))):(w.next(null),a.EMPTY)),(0,o.takeUntil)(this.destroy$)).subscribe()}return s.nothing}disconnected(){this.destroy$.next(),this.destroy$.complete(),this.element=void 0}reconnected(){this.destroy$=new a.Subject,this.element=void 0}render(e){return s.nothing}},ee=(0,l.directive)(M),N=class extends c.AsyncDirective{constructor(...e){super(...e),this.hasAnimated=!1}render(e){}update(e,[n]){if(e.type!==l.PartType.ELEMENT)throw Error(`gravity directive must be used on an element`);if(this.element=e.element,this.options=n,this.hasAnimated)return;if(t.t.value)return void(this.hasAnimated=!0);let r=Math.max(.3,Math.min(3,n?.mass??1)),i=n?.distance??30,a=(n?.delay??0)+(n?.stagger??0);this.animate(r,i,a),this.hasAnimated=!0}reconnected(){if(this.hasAnimated=!1,this.options&&!t.t.value){let e=Math.max(.3,Math.min(3,this.options.mass??1)),t=this.options.distance??30,n=(this.options.delay??0)+(this.options.stagger??0);this.animate(e,t,n),this.hasAnimated=!0}}animate(t,n,r){let i=t<.7?e.l:e.d,s=i.duration*(1/Math.sqrt(t)),c=1/t*n;this.animation?.cancel(),this.element.style.willChange=`transform, opacity`,this.animation=this.element.animate([{opacity:0,transform:`translateY(-${c}px)`},{opacity:1,transform:`translateY(0)`}],{duration:s,delay:r,easing:i.easingFallback,fill:`backwards`}),(0,a.from)(this.animation.finished).pipe((0,o.take)(1),(0,o.tap)(()=>{this.element.style.willChange=``,this.animation=void 0}),(0,o.catchError)(()=>a.EMPTY)).subscribe()}disconnected(){this.animation?.cancel(),this.animation=void 0}},P=(0,l.directive)(N),F=class extends c.AsyncDirective{constructor(...e){super(...e),this.state=null}render(e,t){return s.noChange}update(e,[t,n]){let r=e.element,i,c,l,u={};if(typeof t==`function`?(i=t,u=n||{}):(c=t.onEnter,l=t.onExit,u=t.options||{},i=e=>{e&&c&&c(),!e&&l&&l()}),this.state?.element===r)return s.noChange;this.cleanup();let{once:d=!1,threshold:f=0,rootMargin:p=`0px`,delay:m=0}=u,h=new IntersectionObserver(e=>{if(!this.state)return;let t=e[0],n=t.isIntersecting;m>0&&n?(this.state.delayTimerSub&&this.state.delayTimerSub.unsubscribe(),this.state.delayTimerSub=(0,a.timer)(m).pipe((0,o.take)(1),(0,o.tap)(()=>this.triggerCallback(n,t))).subscribe()):(!n&&this.state.delayTimerSub&&(this.state.delayTimerSub.unsubscribe(),this.state.delayTimerSub=void 0),this.triggerCallback(n,t))},{threshold:f,rootMargin:p});return this.state={element:r,observer:h,callback:i,onEnter:c,onExit:l,once:d,delay:m,hasFired:!1},h.observe(r),s.noChange}triggerCallback(e,t){this.state&&(this.state.once?e&&!this.state.hasFired&&(this.state.hasFired=!0,this.state.callback(e,t),this.cleanup()):this.state.callback(e,t))}cleanup(){this.state&&=(this.state.delayTimerSub?.unsubscribe(),this.state.delayTimerSub=void 0,this.state.observer.disconnect(),null)}pause(){this.state&&(this.state.delayTimerSub?.unsubscribe(),this.state.observer.disconnect())}disconnected(){this.pause()}reconnected(){this.state&&this.state.observer.observe(this.state.element)}},I=(0,c.directive)(F),L={active:!0,intensity:`medium`},R={light:{blur:12,sat:1.3,bright:1.05,tint:.45,border:.2,shadow:.06},medium:{blur:16,sat:1.4,bright:1.08,tint:.55,border:.28,shadow:.08},strong:{blur:24,sat:1.5,bright:1.12,tint:.65,border:.35,shadow:.1}},z=[`backdropFilter`,`background`,`boxShadow`,`borderTop`,`borderBottom`],te=class extends c.AsyncDirective{constructor(...e){super(...e),this.state=null}render(e){return s.noChange}update(e,[t={}]){let n=e.element,r={...L,...t};return r.active?this.activate(n,r):this.cleanup(),s.noChange}activate(e,t){if(!this.isConnected)return;let n=R[t.intensity];if(!this.state){let t={};for(let n of z)t[n]=e.style[n];this.state={element:e,origStyles:t}}this.applyStyles(e,n)}applyStyles(e,t){let n=`blur(${t.blur}px) saturate(${t.sat}) brightness(${t.bright})`;e.style.backdropFilter=n,e.style.setProperty(`-webkit-backdrop-filter`,n),e.style.background=`rgba(var(--md-sys-color-surface-container, 255 255 255) / ${t.tint})`;let r=t.border;e.style.boxShadow=[`inset 0 1px 0 0 rgba(255,255,255, ${1.5*r})`,`inset 0 2px 6px rgba(255,255,255, ${.6*r})`,`inset 0 -1px 0 0 rgba(255,255,255, ${.25*r})`,`0 1px 3px rgba(0,0,0, ${t.shadow})`,`0 6px 20px rgba(0,0,0, ${.5*t.shadow})`].join(`, `),e.style.borderTop=`0.5px solid rgba(255,255,255, ${.9*r})`,e.style.borderBottom=`0.5px solid rgba(0,0,0, 0.05)`}cleanup(){if(!this.state)return;let{element:e,origStyles:t}=this.state;for(let n of z)e.style[n]=t[n];e.style.removeProperty(`-webkit-backdrop-filter`),this.state=null}disconnected(){this.cleanup()}reconnected(){}},ne=(0,c.directive)(te),B=`schmancy-lb-rotate`,V=!1;function H(){if(V)return;let e=document.createElement(`style`);e.id=`schmancy-living-border-shared`,e.textContent=`\n\t\t@property --${B}-angle {\n\t\t\tsyntax: '<angle>';\n\t\t\tinitial-value: 0deg;\n\t\t\tinherits: false;\n\t\t}\n\t\t@keyframes ${B} {\n\t\t\tto { --${B}-angle: 360deg; }\n\t\t}\n\t`,document.head.appendChild(e),V=!0}var U=class extends c.AsyncDirective{constructor(...e){super(...e),this.teardown$=new a.Subject,this.didSetPosition=!1}render(e){}update(e,[n]){if(e.type!==l.PartType.ELEMENT)throw Error(`livingBorder directive must be used on an element`);let r=JSON.stringify(n??{});this.element&&r===this.prevKey||(this.prevKey=r,this.element=e.element,this.lastOptions=n,t.t.value||(this.teardown$.next(),this.cleanup(),H(),this.createBorderOverlay(n)))}reconnected(){this.lastOptions&&!t.t.value&&(H(),this.createBorderOverlay(this.lastOptions))}createBorderOverlay(e){let t=e?.width??1,n=e?.color??`var(--schmancy-sys-color-primary-default)`,r=e?.spread??6,i=e?.duration??3e3,s=e?.onHover??!1;getComputedStyle(this.element).position===`static`&&(this.element.style.position=`relative`,this.didSetPosition=!0),this.borderEl=document.createElement(`div`),this.borderEl.setAttribute(`aria-hidden`,`true`);let c=`-${t}px`;Object.assign(this.borderEl.style,{position:`absolute`,top:c,left:c,right:c,bottom:c,borderRadius:`inherit`,pointerEvents:`none`,zIndex:`0`,background:`conic-gradient(\n\t\t\t\tfrom var(--${B}-angle),\n\t\t\t\ttransparent 0%, transparent 30%,\n\t\t\t\tcolor-mix(in srgb, ${n} 50%, transparent) 45%,\n\t\t\t\t${n} 50%,\n\t\t\t\tcolor-mix(in srgb, ${n} 50%, transparent) 55%,\n\t\t\t\ttransparent 70%, transparent 100%\n\t\t\t)`,mask:`linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)`,maskComposite:`exclude`,WebkitMaskComposite:`xor`,padding:`${t}px`,animation:`${B} ${i}ms linear infinite`,filter:`blur(${.3*r}px) drop-shadow(0 0 ${r}px color-mix(in srgb, ${n} 40%, transparent))`,opacity:s?`0`:`0.5`,transition:`opacity 300ms ease`}),this.element.prepend(this.borderEl),(0,a.merge)((0,a.fromEvent)(this.element,`mouseenter`).pipe((0,o.map)(()=>{this.borderEl&&(this.borderEl.style.opacity=s?`0.7`:`0.8`)})),(0,a.fromEvent)(this.element,`mouseleave`).pipe((0,o.map)(()=>{this.borderEl&&(this.borderEl.style.opacity=s?`0`:`0.5`)}))).pipe((0,o.takeUntil)(this.teardown$)).subscribe()}cleanup(){this.borderEl?.remove(),this.borderEl=void 0}disconnected(){this.teardown$.next(),this.cleanup(),this.didSetPosition&&this.element&&(this.element.style.position=``,this.didSetPosition=!1)}},W=(0,l.directive)(U),G=new WeakMap,K=class extends l.Directive{constructor(e){if(super(e),e.type!==l.PartType.ELEMENT)throw Error(`longPress directive can only be used on elements`)}render(e,t){}update(e,[t,n={}]){let r=e.element,i=G.get(r);if(i){if(i.callback===t&&this.optionsEqual(i.options,n))return;i.subscription.unsubscribe()}let a=this.setupLongPress(r,t,n);G.set(r,{subscription:a,callback:t,options:n||{}})}optionsEqual(e,t){return t?e.duration===t.duration&&e.movementThreshold===t.movementThreshold:Object.keys(e).length===0}setupLongPress(e,t,n={}){let r=n.duration??500,i=n.movementThreshold??10,s=(0,a.fromEvent)(e,`pointerdown`),c=(0,a.fromEvent)(window,`pointerup`),l=(0,a.fromEvent)(window,`pointermove`),u=(0,a.fromEvent)(window,`pointercancel`);return s.pipe((0,o.switchMap)(e=>{let n=e.clientX,s=e.clientY,d=(0,a.merge)(c,u,l.pipe((0,o.filter)(e=>{let t=e.clientX-n,r=e.clientY-s;return Math.sqrt(t*t+r*r)>i}))).pipe((0,o.first)());return(0,a.timer)(r).pipe((0,o.takeUntil)(d),(0,o.tap)(()=>t()))})).subscribe()}disconnected(e){let t=e.element,n=G.get(t);n&&(n.subscription.unsubscribe(),G.delete(t))}reconnected(e){let t=e.element,n=G.get(t);n&&(n.subscription=this.setupLongPress(t,n.callback,n.options))}},q=(0,l.directive)(K),J={active:!0,autoHideDuration:3e3,background:!0,intensity:1,blur:1,speed:1,fadeInDuration:1e3,fadeOutDuration:8e3,idleOpacity:.6,idleBreathe:!0,temperature:0,chromaticAberration:1,particleCount:30},Y=`cubic-bezier(0.37, 0, 0.63, 1)`,X=`cubic-bezier(0.25, 0.1, 0.25, 1)`,Z=!1,re=class e{constructor(){this.elementToDirective=new WeakMap,this.instances=new Set,this.observer=null,this.visibilitySub=null,this.tabVisible=!0}static{this._instance=null}static get instance(){return e._instance||=new e,e._instance}register(e,t){let n=this.instances.size===0;this.instances.add(e),this.elementToDirective.set(t,e),n&&this.setup(),this.observer?.observe(t)}unregister(e,t){this.observer?.unobserve(t),this.elementToDirective.delete(t),this.instances.delete(e),this.instances.size===0&&this.teardown()}setup(){this.observer=new IntersectionObserver(e=>{for(let t of e){let e=this.elementToDirective.get(t.target);e&&e.onVisibilityChange(t.isIntersecting&&this.tabVisible)}},{threshold:0}),this.visibilitySub=(0,a.fromEvent)(document,`visibilitychange`).pipe((0,o.tap)(()=>{this.tabVisible=document.visibilityState===`visible`;for(let e of this.instances)e.onVisibilityChange(this.tabVisible)})).subscribe()}teardown(){this.observer&&=(this.observer.disconnect(),null),this.visibilitySub&&=(this.visibilitySub.unsubscribe(),null)}},ie=class extends c.AsyncDirective{constructor(...e){super(...e),this.state=null,this.coordinator=re.instance}render(e){return s.noChange}update(e,[t={}]){let n=e.element,r={...J,...t};return r.active?this.show(n,r):this.hide(r),s.noChange}onVisibilityChange(e){if(!this.state?.overlay)return;let t=this.state.isVisible;this.state.isVisible=e,t!==e&&(this.state.overlay.classList.toggle(`paused`,!e),this.state.overlay.classList.toggle(`running`,e))}show(e,n){(function(){if(Z||typeof document>`u`)return;Z=!0;let e=document.createElement(`style`);e.id=`nebula-directive-styles`,e.textContent=`
|
|
2
2
|
/* =============================================================================
|
|
3
3
|
NEBULA v3 - SURREAL DIMENSIONAL RIFT - GPU-COMPOSITED CSS ANIMATIONS
|
|
4
4
|
Chromatic aberration, iridescent hue-cycling, event horizon, tendrils.
|
package/dist/directives.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _ as e, d as t, f as n, l as r, u as i } from "./animation-DCznELuT.js";
|
|
2
2
|
import { t as a } from "./reduced-motion-D7LqTUMn.js";
|
|
3
3
|
import { t as o } from "./cursor-glow-Cs2XLDB9.js";
|
|
4
|
-
import { n as s, r as c, t as l } from "./layout-
|
|
4
|
+
import { n as s, r as c, t as l } from "./layout-Dq2oeOTS.js";
|
|
5
5
|
import { t as u } from "./magnetic-DxvoEz8_.js";
|
|
6
6
|
import { BehaviorSubject as d, EMPTY as f, Observable as p, Subject as m, animationFrameScheduler as h, combineLatest as g, concat as _, defer as v, from as y, fromEvent as b, interval as x, merge as S, of as C, timer as w } from "rxjs";
|
|
7
7
|
import { catchError as T, delay as E, distinctUntilChanged as D, filter as O, finalize as ee, first as te, map as k, observeOn as ne, repeat as re, skip as ie, startWith as A, switchMap as j, take as M, takeUntil as N, takeWhile as P, tap as F } from "rxjs/operators";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-
|
|
1
|
+
require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.c{constructor(...e){super(...e),this.outline=`variant`,this.vertical=!1,this.grow=`start`}static{this.styles=[r.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"divider-
|
|
1
|
+
{"version":3,"file":"divider-BNdVLE0H.cjs","names":[],"sources":["../src/divider/divider.ts"],"sourcesContent":["// divider.ts\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-divider')\nexport default class SchmancyDivider extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\n\t@keyframes grow-horizontal {\n\t\tfrom {\n\t\t\ttransform: scaleX(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleX(1);\n\t\t}\n\t}\n\n\t@keyframes grow-vertical {\n\t\tfrom {\n\t\t\ttransform: scaleY(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleY(1);\n\t\t}\n\t}\n\n\t/* Horizontal divider grow animations */\n\t.grow-start:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: left;\n\t}\n\n\t.grow-end:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: right;\n\t}\n\n\t.grow-both:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n\n\t/* Vertical divider grow animations */\n\t.grow-start.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: top;\n\t}\n\n\t.grow-end.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: bottom;\n\t}\n\n\t.grow-both.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n`]\n\n\t@property({ type: String }) outline: 'default' | 'variant' = 'variant'\n\t@property({ type: Boolean }) vertical = false\n\t@property({ type: String }) grow: 'start' | 'end' | 'both' = 'start'\n\n\t/**\n\t * @deprecated Use `vertical` property instead. Will be removed in next major version.\n\t */\n\t@property({ reflect: true, type: String })\n\tset orientation(value: 'horizontal' | 'vertical') {\n\t\tthis.vertical = value === 'vertical'\n\t}\n\tget orientation(): 'horizontal' | 'vertical' {\n\t\treturn this.vertical ? 'vertical' : 'horizontal'\n\t}\n\n\tprotected render() {\n\t\treturn html`<div\n\t\t\tclass=${this.classMap({\n\t\t\t\t// Dimensions\n\t\t\t\t'w-full h-px': !this.vertical,\n\t\t\t\t'h-full w-px': this.vertical,\n\t\t\t\t// Border color\n\t\t\t\t'border-outlineVariant': this.outline === 'variant',\n\t\t\t\t'border-outline': this.outline === 'default',\n\t\t\t\t// Border style\n\t\t\t\t'border-t': !this.vertical,\n\t\t\t\t'border-l': this.vertical,\n\t\t\t\t// Grow behavior\n\t\t\t\t[`grow-${this.grow}`]: true,\n\t\t\t})}\n\t\t></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-divider': SchmancyDivider\n\t}\n}\n"],"mappings":"qKAMe,IAAA,EAAA,cAA8B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,QAyDiB,UAAA,KAAA,SAAA,CACrB,EAAA,KAAA,KACqB,QAAA,OAAA,KAAA,OA1D7C,CAAC,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DpB,IAAA,YACgB,EAAA,CACf,KAAK,SAAW,IAAU,WAE3B,IAAA,aAAI,CACH,OAAO,KAAK,SAAW,WAAa,aAGrC,QAAA,CACC,MAAO,GAAA,IAAI;WACF,KAAK,SAAS,CAErB,cAAA,CAAgB,KAAK,SACrB,cAAe,KAAK,SAEpB,wBAAyB,KAAK,UAAY,UAC1C,iBAAkB,KAAK,UAAY,UAEnC,WAAA,CAAa,KAAK,SAClB,WAAY,KAAK,UAEhB,QAAQ,KAAK,QAAA,CAAS,EAAA,CAAA,CAAA;iCA5BhB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UACjB,CAAE,KAAM,QAAA,CAAA,CAAA,CAAU,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAClB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,OAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAKjB,CAAE,QAAA,CAAS,EAAM,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,cAAA,KAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAjE5B,mBAAA,CAAA,CAAmB,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"divider-
|
|
1
|
+
{"version":3,"file":"divider-Be833gGZ.js","names":[],"sources":["../src/divider/divider.ts"],"sourcesContent":["// divider.ts\nimport { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-divider')\nexport default class SchmancyDivider extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\n\t@keyframes grow-horizontal {\n\t\tfrom {\n\t\t\ttransform: scaleX(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleX(1);\n\t\t}\n\t}\n\n\t@keyframes grow-vertical {\n\t\tfrom {\n\t\t\ttransform: scaleY(0);\n\t\t}\n\t\tto {\n\t\t\ttransform: scaleY(1);\n\t\t}\n\t}\n\n\t/* Horizontal divider grow animations */\n\t.grow-start:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: left;\n\t}\n\n\t.grow-end:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: right;\n\t}\n\n\t.grow-both:not(.h-full) {\n\t\tanimation: grow-horizontal 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n\n\t/* Vertical divider grow animations */\n\t.grow-start.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: top;\n\t}\n\n\t.grow-end.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: bottom;\n\t}\n\n\t.grow-both.h-full {\n\t\tanimation: grow-vertical 400ms ease-out;\n\t\ttransform-origin: center;\n\t}\n`]\n\n\t@property({ type: String }) outline: 'default' | 'variant' = 'variant'\n\t@property({ type: Boolean }) vertical = false\n\t@property({ type: String }) grow: 'start' | 'end' | 'both' = 'start'\n\n\t/**\n\t * @deprecated Use `vertical` property instead. Will be removed in next major version.\n\t */\n\t@property({ reflect: true, type: String })\n\tset orientation(value: 'horizontal' | 'vertical') {\n\t\tthis.vertical = value === 'vertical'\n\t}\n\tget orientation(): 'horizontal' | 'vertical' {\n\t\treturn this.vertical ? 'vertical' : 'horizontal'\n\t}\n\n\tprotected render() {\n\t\treturn html`<div\n\t\t\tclass=${this.classMap({\n\t\t\t\t// Dimensions\n\t\t\t\t'w-full h-px': !this.vertical,\n\t\t\t\t'h-full w-px': this.vertical,\n\t\t\t\t// Border color\n\t\t\t\t'border-outlineVariant': this.outline === 'variant',\n\t\t\t\t'border-outline': this.outline === 'default',\n\t\t\t\t// Border style\n\t\t\t\t'border-t': !this.vertical,\n\t\t\t\t'border-l': this.vertical,\n\t\t\t\t// Grow behavior\n\t\t\t\t[`grow-${this.grow}`]: true,\n\t\t\t})}\n\t\t></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-divider': SchmancyDivider\n\t}\n}\n"],"mappings":";;;;AAMe,IAAA,IAAA,cAA8B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,EAAA,EAAA,KAAA,UAyDiB,WAAA,KAAA,WAAA,CACrB,GAAA,KAAA,OACqB;;CAAA;EAAA,KAAA,SA1D7C,CAAC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DpB,IAAA,YACgB,GAAA;EACf,KAAK,WAAW,MAAU;;CAE3B,IAAA,cAAI;EACH,OAAO,KAAK,WAAW,aAAa;;CAGrC,SAAA;EACC,OAAO,CAAI;WACF,KAAK,SAAS;GAErB,eAAA,CAAgB,KAAK;GACrB,eAAe,KAAK;GAEpB,yBAAyB,KAAK,YAAY;GAC1C,kBAAkB,KAAK,YAAY;GAEnC,YAAA,CAAa,KAAK;GAClB,YAAY,KAAK;IAEhB,QAAQ,KAAK,SAAA,CAAS;GAAA,CAAA,CAAA;;;;GA5BzB,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAC1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAC3B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAK1B,EAAS;CAAE,SAAA,CAAS;CAAM,MAAM;CAAA,CAAA,CAAA,EAAS,EAAA,WAAA,eAAA,KAAA,EAAA,IAAA,EAAA,CAjE1C,EAAc,mBAAA,CAAA,EAAmB,EAAA"}
|
package/dist/divider.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./divider-
|
|
1
|
+
require(`./divider-BNdVLE0H.cjs`);
|