@mhmo91/schmancy 0.10.4 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +43 -949
- package/dist/agent/{flow-CaPi2G8y.js.map → flow-3RrZM-e7.js.map} +1 -1
- package/dist/agent/schmancy.agent.js +3817 -6527
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +10 -680
- package/dist/agent/{vendor-jsqr-r7GNh4P3.js.map → vendor-jsqr-BUVwyoGC.js.map} +1 -1
- package/dist/agent/{vendor-material-color-Be96dpGE.js.map → vendor-material-color-33Mj762T.js.map} +1 -1
- package/dist/{area-DHVANBbr.js → area-CIZZ5tbB.js} +1 -1
- package/dist/{area-DHVANBbr.js.map → area-CIZZ5tbB.js.map} +1 -1
- package/dist/{area-ZupIezvU.cjs → area-oZjYJlUy.cjs} +1 -1
- package/dist/{area-ZupIezvU.cjs.map → area-oZjYJlUy.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-pHvsyfbH.js → autocomplete-C1oDLuol.js} +2 -2
- package/dist/{autocomplete-pHvsyfbH.js.map → autocomplete-C1oDLuol.js.map} +1 -1
- package/dist/{autocomplete-Bn525CTp.cjs → autocomplete-X20i6D62.cjs} +1 -1
- package/dist/{autocomplete-Bn525CTp.cjs.map → autocomplete-X20i6D62.cjs.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 +2 -2
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-IyEtsNI4.cjs → boat-CUx58Gwe.cjs} +1 -1
- package/dist/{boat-IyEtsNI4.cjs.map → boat-CUx58Gwe.cjs.map} +1 -1
- package/dist/{boat-_Yv3M6YM.js → boat-CpE0yAlK.js} +2 -2
- package/dist/{boat-_Yv3M6YM.js.map → boat-CpE0yAlK.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-Ck2IXJ4r.js → busy-C9n-DUY4.js} +1 -1
- package/dist/{busy-Ck2IXJ4r.js.map → busy-C9n-DUY4.js.map} +1 -1
- package/dist/{busy-CjM39APN.cjs → busy-D1DKZhgV.cjs} +1 -1
- package/dist/{busy-CjM39APN.cjs.map → busy-D1DKZhgV.cjs.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +3 -3
- package/dist/{card-DUWZmMHc.js → card-B3hN-qzk.js} +1 -1
- package/dist/{card-DUWZmMHc.js.map → card-B3hN-qzk.js.map} +1 -1
- package/dist/{card-DIxDuuth.cjs → card-DZJ7qjf2.cjs} +1 -1
- package/dist/{card-DIxDuuth.cjs.map → card-DZJ7qjf2.cjs.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.js +1 -1
- package/dist/{checkbox-DPS1mWG-.js → checkbox-CvmB1ev9.js} +1 -1
- package/dist/{checkbox-DPS1mWG-.js.map → checkbox-CvmB1ev9.js.map} +1 -1
- package/dist/{checkbox-CGdFXuWQ.cjs → checkbox-DapdzDow.cjs} +1 -1
- package/dist/{checkbox-CGdFXuWQ.cjs.map → checkbox-DapdzDow.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-UoFbwmlG.cjs → chips-7g6mWRuh.cjs} +1 -1
- package/dist/{chips-UoFbwmlG.cjs.map → chips-7g6mWRuh.cjs.map} +1 -1
- package/dist/{chips-BnnXQSA-.js → chips-C8Y3_3ke.js} +4 -4
- package/dist/{chips-BnnXQSA-.js.map → chips-C8Y3_3ke.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-daN5G6HS.cjs.map → context-BpCETidA.cjs.map} +1 -1
- package/dist/{context-Bdu1xt0W.js.map → context-DJTJnSK4.js.map} +1 -1
- package/dist/{date-range-DOstCIg8.js → date-range-DdcaPX7C.js} +99 -113
- package/dist/date-range-DdcaPX7C.js.map +1 -0
- package/dist/date-range-ZfUl4duV.cjs +131 -0
- package/dist/date-range-ZfUl4duV.cjs.map +1 -0
- package/dist/{date-range-inline-4P7zqeVe.cjs → date-range-inline-D-d7N6bh.cjs} +1 -1
- package/dist/{date-range-inline-4P7zqeVe.cjs.map → date-range-inline-D-d7N6bh.cjs.map} +1 -1
- package/dist/{date-range-inline-BVycTWLb.js → date-range-inline-QQmIWhZ4.js} +1 -1
- package/dist/{date-range-inline-BVycTWLb.js.map → date-range-inline-QQmIWhZ4.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 +2 -2
- package/dist/{details-BJBbZOO6.cjs → details-3rL6UQU8.cjs} +1 -1
- package/dist/{details-BJBbZOO6.cjs.map → details-3rL6UQU8.cjs.map} +1 -1
- package/dist/{details-DPc5GxPa.js → details-Dpjh-XnJ.js} +2 -2
- package/dist/{details-DPc5GxPa.js.map → details-Dpjh-XnJ.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-BvJsmSPH.js → divider-BdfEKQsH.js} +1 -1
- package/dist/{divider-BvJsmSPH.js.map → divider-BdfEKQsH.js.map} +1 -1
- package/dist/{divider-DPT3XnG5.cjs → divider-CutXDz3F.cjs} +1 -1
- package/dist/{divider-DPT3XnG5.cjs.map → divider-CutXDz3F.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{expand-CTqBWVXo.cjs → expand-DM6zfZf7.cjs} +1 -1
- package/dist/{expand-CTqBWVXo.cjs.map → expand-DM6zfZf7.cjs.map} +1 -1
- package/dist/{expand-BMzocdtj.js → expand-DrgMPJbu.js} +2 -2
- package/dist/{expand-BMzocdtj.js.map → expand-DrgMPJbu.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-BeHlUhzv.js → extra-B6gFu4_1.js} +1 -1
- package/dist/{extra-BeHlUhzv.js.map → extra-B6gFu4_1.js.map} +1 -1
- package/dist/{extra-h_cuxRII.cjs → extra-DJRYaOXe.cjs} +1 -1
- package/dist/{extra-h_cuxRII.cjs.map → extra-DJRYaOXe.cjs.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{float-CTc1xxqH.js → float-1iihPek5.js} +1 -1
- package/dist/{float-CTc1xxqH.js.map → float-1iihPek5.js.map} +1 -1
- package/dist/{float-CwVBs11k.cjs → float-Ckyk85XG.cjs} +1 -1
- package/dist/{float-CwVBs11k.cjs.map → float-Ckyk85XG.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-BtwOBMZ9.js.map → form-BF1c3Dk1.js.map} +1 -1
- package/dist/{form-CSJp687X.cjs.map → form-DeO5XX3b.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{hashContent-1ARKIsx9.js.map → hashContent-BU6jl5ih.js.map} +1 -1
- package/dist/{hashContent-Bp5S6T4U.cjs.map → hashContent-Bobsobip.cjs.map} +1 -1
- package/dist/{icons-qEQW4pjM.cjs → icons-CV-fiGcW.cjs} +1 -1
- package/dist/{icons-qEQW4pjM.cjs.map → icons-CV-fiGcW.cjs.map} +1 -1
- package/dist/{icons-BbCVrcas.js → icons-DUkcTZAY.js} +2 -2
- package/dist/{icons-BbCVrcas.js.map → icons-DUkcTZAY.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-BJfDIEJf.js → iframe-C9tj7F6Y.js} +1 -1
- package/dist/{iframe-BJfDIEJf.js.map → iframe-C9tj7F6Y.js.map} +1 -1
- package/dist/{iframe-D6HTruav.cjs → iframe-DF97oGtZ.cjs} +1 -1
- package/dist/{iframe-D6HTruav.cjs.map → iframe-DF97oGtZ.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 +70 -76
- package/dist/{input-LTK3cctF.js → input-DE7x223Y.js} +1 -1
- package/dist/{input-LTK3cctF.js.map → input-DE7x223Y.js.map} +1 -1
- package/dist/{input-U26axtcs.cjs → input-TW9G3n7X.cjs} +1 -1
- package/dist/{input-U26axtcs.cjs.map → input-TW9G3n7X.cjs.map} +1 -1
- package/dist/{input-chip-Ch-aCs3c.js → input-chip-BdoaVw_D.js} +1 -1
- package/dist/{input-chip-Ch-aCs3c.js.map → input-chip-BdoaVw_D.js.map} +1 -1
- package/dist/{input-chip-CADXt0X5.cjs → input-chip-Do48eI5r.cjs} +1 -1
- package/dist/{input-chip-CADXt0X5.cjs.map → input-chip-Do48eI5r.cjs.map} +1 -1
- 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-C4xmnU4n.js → layout-CXPNsUIo.js} +1 -1
- package/dist/{layout-C4xmnU4n.js.map → layout-CXPNsUIo.js.map} +1 -1
- package/dist/{layout-Dmh6fxh0.cjs → layout-Zhe7wSZ_.cjs} +1 -1
- package/dist/{layout-Dmh6fxh0.cjs.map → layout-Zhe7wSZ_.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-DqG2z3Cn.js → lightbox-DcutIyjx.js} +2 -2
- package/dist/{lightbox-DqG2z3Cn.js.map → lightbox-DcutIyjx.js.map} +1 -1
- package/dist/{lightbox-DbYUSfVl.cjs → lightbox-sPfnYzjJ.cjs} +1 -1
- package/dist/{lightbox-DbYUSfVl.cjs.map → lightbox-sPfnYzjJ.cjs.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-D6-_E5ZD.js → list-BWrtrdgs.js} +1 -1
- package/dist/{list-D6-_E5ZD.js.map → list-BWrtrdgs.js.map} +1 -1
- package/dist/{list-CLX4sSAw.cjs → list-C4vasUly.cjs} +1 -1
- package/dist/{list-CLX4sSAw.cjs.map → list-C4vasUly.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{magnetic-BH0TsofV.cjs.map → magnetic-BJgB1dVi.cjs.map} +1 -1
- package/dist/{magnetic-BZGFxAWG.js.map → magnetic-YwCNvtbB.js.map} +1 -1
- package/dist/{map-WXeVkx2K.cjs → map-BAQ9FEB6.cjs} +1 -1
- package/dist/{map-WXeVkx2K.cjs.map → map-BAQ9FEB6.cjs.map} +1 -1
- package/dist/{map-Dhy3ta9v.js → map-CEreveeI.js} +1 -1
- package/dist/{map-Dhy3ta9v.js.map → map-CEreveeI.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/menu-3yXDZusj.cjs +23 -0
- package/dist/menu-3yXDZusj.cjs.map +1 -0
- package/dist/menu-CxChOxWT.js +62 -0
- package/dist/menu-CxChOxWT.js.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-Db7gjDah.cjs +298 -0
- package/dist/{mixins-De3xfjrm.cjs.map → mixins-Db7gjDah.cjs.map} +1 -1
- package/dist/mixins-Dw6hVfy-.js +627 -0
- package/dist/{mixins-CcIWET41.js.map → mixins-Dw6hVfy-.js.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-D_PQjBSf.cjs → notification-DKYy9qVe.cjs} +1 -1
- package/dist/{notification-D_PQjBSf.cjs.map → notification-DKYy9qVe.cjs.map} +1 -1
- package/dist/{notification-CVLqQ8c_.js → notification-ycbUBbOu.js} +2 -2
- package/dist/{notification-CVLqQ8c_.js.map → notification-ycbUBbOu.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-rm4HebVs.js → option-DtOhMd3k.js} +1 -1
- package/dist/{option-rm4HebVs.js.map → option-DtOhMd3k.js.map} +1 -1
- package/dist/{option-DDU_goh1.cjs → option-zgVge3BH.cjs} +1 -1
- package/dist/{option-DDU_goh1.cjs.map → option-zgVge3BH.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-CAQno0CK.js.map → overlay-stack-DCDS17uj.js.map} +1 -1
- package/dist/{overlay-stack-BprhAE9a.cjs.map → overlay-stack-DPIe_aYv.cjs.map} +1 -1
- package/dist/overlay.cjs +5 -53
- package/dist/overlay.cjs.map +1 -1
- package/dist/overlay.confirm-body-AFqYBqrI.js +104 -0
- package/dist/overlay.confirm-body-AFqYBqrI.js.map +1 -0
- package/dist/overlay.confirm-body-DctQLDao.cjs +49 -0
- package/dist/overlay.confirm-body-DctQLDao.cjs.map +1 -0
- package/dist/overlay.js +120 -360
- package/dist/overlay.js.map +1 -1
- package/dist/overlay.service-B9On2-Aa.js +146 -0
- package/dist/overlay.service-B9On2-Aa.js.map +1 -0
- package/dist/overlay.service-k2nCE4pi.cjs +1 -0
- package/dist/overlay.service-k2nCE4pi.cjs.map +1 -0
- package/dist/page.cjs +1 -1
- package/dist/page.js +4 -4
- package/dist/{payment-card-form-C0dHYZIv.js → payment-card-form-Be1-OVlL.js} +1 -1
- package/dist/{payment-card-form-C0dHYZIv.js.map → payment-card-form-Be1-OVlL.js.map} +1 -1
- package/dist/{payment-card-form-DNvmZxs4.cjs → payment-card-form-CNnGePG4.cjs} +1 -1
- package/dist/{payment-card-form-DNvmZxs4.cjs.map → payment-card-form-CNnGePG4.cjs.map} +1 -1
- package/dist/payment-card-form.cjs +1 -1
- package/dist/payment-card-form.js +1 -1
- package/dist/{progress-BRerM5Bn.js → progress-BFWzmTlz.js} +1 -1
- package/dist/{progress-BRerM5Bn.js.map → progress-BFWzmTlz.js.map} +1 -1
- package/dist/{progress-U3LQkpM2.cjs → progress-C4TGG2eN.cjs} +1 -1
- package/dist/{progress-U3LQkpM2.cjs.map → progress-C4TGG2eN.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +1 -1
- package/dist/{radio-group-BZ2WoOXJ.js → radio-group-DTNAW5dd.js} +1 -1
- package/dist/{radio-group-BZ2WoOXJ.js.map → radio-group-DTNAW5dd.js.map} +1 -1
- package/dist/{radio-group-D7mm-yvJ.cjs → radio-group-xLRp1g57.cjs} +1 -1
- package/dist/{radio-group-D7mm-yvJ.cjs.map → radio-group-xLRp1g57.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-d-ivVN84.js.map → rxjs-utils-BK8VMe3K.js.map} +1 -1
- package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-DhOKenkS.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-qL-HkMdP.js → scroll-BCmdqSQU.js} +1 -1
- package/dist/{scroll-qL-HkMdP.js.map → scroll-BCmdqSQU.js.map} +1 -1
- package/dist/{scroll-DJTjNIT_.cjs → scroll-Bdgb-vRy.cjs} +1 -1
- package/dist/{scroll-DJTjNIT_.cjs.map → scroll-Bdgb-vRy.cjs.map} +1 -1
- package/dist/{select-CnPXUeSf.js → select-COGARE0b.js} +2 -2
- package/dist/{select-CnPXUeSf.js.map → select-COGARE0b.js.map} +1 -1
- package/dist/{select-BvA7v-gL.cjs → select-Cv5t_PT3.cjs} +1 -1
- package/dist/{select-BvA7v-gL.cjs.map → select-Cv5t_PT3.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/skills/INDEX.md +3 -6
- package/dist/skills/SKILL.md +13 -9
- package/dist/skills/schmancy/INDEX.md +3 -6
- package/dist/skills/schmancy/SKILL.md +13 -9
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-BDt4PInk.cjs → splash-screen-B8rFbjqT.cjs} +1 -1
- package/dist/{splash-screen-BDt4PInk.cjs.map → splash-screen-B8rFbjqT.cjs.map} +1 -1
- package/dist/{splash-screen-C8JCqX5L.js → splash-screen-DbGbGttg.js} +1 -1
- package/dist/{splash-screen-C8JCqX5L.js.map → splash-screen-DbGbGttg.js.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-CqdnWGgr.js → src-YRir9pOP.js} +162 -162
- package/dist/src-YRir9pOP.js.map +1 -0
- package/dist/{src-CpRNClhg.cjs → src-b8D-Ec-Q.cjs} +13 -13
- package/dist/src-b8D-Ec-Q.cjs.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-C8jQy8Ym.js → surface-BE7sGTBt.js} +1 -1
- package/dist/{surface-C8jQy8Ym.js.map → surface-BE7sGTBt.js.map} +1 -1
- package/dist/{surface-Du2Y4vXd.cjs → surface-BvudRtf5.cjs} +1 -1
- package/dist/{surface-Du2Y4vXd.cjs.map → surface-BvudRtf5.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-0RfeCa00.cjs → tabs-C0XKld1Z.cjs} +1 -1
- package/dist/{tabs-0RfeCa00.cjs.map → tabs-C0XKld1Z.cjs.map} +1 -1
- package/dist/{tabs-Cyahh9Q6.js → tabs-DIzCRsA3.js} +1 -1
- package/dist/{tabs-Cyahh9Q6.js.map → tabs-DIzCRsA3.js.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-jqRrLxmo.cjs → textarea-BCDCGCJd.cjs} +1 -1
- package/dist/{textarea-jqRrLxmo.cjs.map → textarea-BCDCGCJd.cjs.map} +1 -1
- package/dist/{textarea-CXCcTVnf.js → textarea-UbZzBwqm.js} +1 -1
- package/dist/{textarea-CXCcTVnf.js.map → textarea-UbZzBwqm.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/theme-CIsI-sFj.cjs +181 -0
- package/dist/{theme-Hjz9sCN-.cjs.map → theme-CIsI-sFj.cjs.map} +1 -1
- package/dist/{theme-2KZW2Rfs.js → theme-Qh-yPEPL.js} +3 -4
- package/dist/{theme-2KZW2Rfs.js.map → theme-Qh-yPEPL.js.map} +1 -1
- package/dist/{theme-button-9uF1eoHz.js → theme-button-CjTnfs9x.js} +1 -1
- package/dist/{theme-button-9uF1eoHz.js.map → theme-button-CjTnfs9x.js.map} +1 -1
- package/dist/{theme-button-C7QIbke1.cjs → theme-button-Dv1D_Vil.cjs} +1 -1
- package/dist/{theme-button-C7QIbke1.cjs.map → theme-button-Dv1D_Vil.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.interface-D9l33b-M.cjs.map → theme.interface-BeW-sz_g.cjs.map} +1 -1
- package/dist/{theme.interface-DnVNre4O.js.map → theme.interface-v7SkAnDH.js.map} +1 -1
- package/dist/theme.js +5 -6
- package/dist/theme.service-Cfk88qHK.cjs +1 -0
- package/dist/theme.service-Cfk88qHK.cjs.map +1 -0
- package/dist/{theme.service-CmbOGMA8.js → theme.service-DIUo1mBP.js} +13 -14
- package/dist/theme.service-DIUo1mBP.js.map +1 -0
- package/dist/timeline.cjs +1 -1
- package/dist/timeline.js +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-hp-DnFf5.js → utils-BfOze6Tk.js} +1 -1
- package/dist/{utils-hp-DnFf5.js.map → utils-BfOze6Tk.js.map} +1 -1
- package/dist/{utils-Cr-YO4Np.cjs → utils-CJ9y2Jz9.cjs} +1 -1
- package/dist/{utils-Cr-YO4Np.cjs.map → utils-CJ9y2Jz9.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +2 -2
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-DtUOWiAj.cjs → window-9HOUXrTU.cjs} +1 -1
- package/dist/{window-DtUOWiAj.cjs.map → window-9HOUXrTU.cjs.map} +1 -1
- package/dist/{window-C7yY9yp5.js → window-B_55dzk0.js} +3 -3
- package/dist/{window-C7yY9yp5.js.map → window-B_55dzk0.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -2
- package/skills/schmancy/INDEX.md +3 -6
- package/skills/schmancy/SKILL.md +13 -9
- package/src/content-drawer/drawer.ts +24 -7
- package/src/content-drawer/events.ts +6 -0
- package/src/content-drawer/sheet.ts +13 -12
- package/src/date-range/date-range-dialog.ts +4 -4
- package/src/date-range/date-range.ts +35 -53
- package/src/index.ts +0 -4
- package/src/menu/menu-item.ts +7 -2
- package/src/menu/menu.ts +24 -20
- package/types/src/content-drawer/drawer.d.ts +2 -0
- package/types/src/content-drawer/events.d.ts +6 -0
- package/types/src/content-drawer/sheet.d.ts +6 -5
- package/types/src/date-range/date-range.d.ts +1 -5
- package/types/src/index.d.ts +0 -4
- package/types/src/menu/menu-item.d.ts +1 -0
- package/types/src/menu/menu.d.ts +9 -7
- package/dist/agent/vendor-highlight-CHJZQQB7.js +0 -2178
- package/dist/agent/vendor-highlight-CHJZQQB7.js.map +0 -1
- package/dist/code-highlight-CMilN0B8.cjs +0 -190
- package/dist/code-highlight-CMilN0B8.cjs.map +0 -1
- package/dist/code-highlight-kFUJ1Eet.js +0 -296
- package/dist/code-highlight-kFUJ1Eet.js.map +0 -1
- package/dist/code-highlight.cjs +0 -1
- package/dist/code-highlight.js +0 -2
- package/dist/date-range-BIyrzTRZ.cjs +0 -131
- package/dist/date-range-BIyrzTRZ.cjs.map +0 -1
- package/dist/date-range-DOstCIg8.js.map +0 -1
- package/dist/dialog-service-DI9PPy4H.js +0 -193
- package/dist/dialog-service-DI9PPy4H.js.map +0 -1
- package/dist/dialog-service-DJd5L0f5.cjs +0 -1
- package/dist/dialog-service-DJd5L0f5.cjs.map +0 -1
- package/dist/dialog.cjs +0 -89
- package/dist/dialog.cjs.map +0 -1
- package/dist/dialog.js +0 -419
- package/dist/dialog.js.map +0 -1
- package/dist/mailbox-Ct6iYe-4.cjs +0 -1140
- package/dist/mailbox-Ct6iYe-4.cjs.map +0 -1
- package/dist/mailbox-DsPII8HR.js +0 -1596
- package/dist/mailbox-DsPII8HR.js.map +0 -1
- package/dist/mailbox.cjs +0 -1
- package/dist/mailbox.js +0 -2
- package/dist/menu-Bhd3EapX.js +0 -56
- package/dist/menu-Bhd3EapX.js.map +0 -1
- package/dist/menu-Cg2aaDjs.cjs +0 -23
- package/dist/menu-Cg2aaDjs.cjs.map +0 -1
- package/dist/mixins-CcIWET41.js +0 -627
- package/dist/mixins-De3xfjrm.cjs +0 -298
- package/dist/sheet-BRL07BB4.js +0 -170
- package/dist/sheet-BRL07BB4.js.map +0 -1
- package/dist/sheet-BYQJAHQn.cjs +0 -35
- package/dist/sheet-BYQJAHQn.cjs.map +0 -1
- package/dist/sheet.cjs +0 -1
- package/dist/sheet.js +0 -3
- package/dist/sheet.service-B25bsrYG.cjs +0 -1
- package/dist/sheet.service-B25bsrYG.cjs.map +0 -1
- package/dist/sheet.service-SPQ8oLCi.js +0 -86
- package/dist/sheet.service-SPQ8oLCi.js.map +0 -1
- package/dist/skills/code-highlight.md +0 -47
- package/dist/skills/dialog.md +0 -69
- package/dist/skills/mailbox.md +0 -102
- package/dist/skills/schmancy/code-highlight.md +0 -47
- package/dist/skills/schmancy/dialog.md +0 -69
- package/dist/skills/schmancy/mailbox.md +0 -102
- package/dist/skills/schmancy/sheet.md +0 -76
- package/dist/skills/sheet.md +0 -76
- package/dist/src-CpRNClhg.cjs.map +0 -1
- package/dist/src-CqdnWGgr.js.map +0 -1
- package/dist/theme-Hjz9sCN-.cjs +0 -181
- package/dist/theme.events-Cv7N4Toe.js +0 -2
- package/dist/theme.events-Cv7N4Toe.js.map +0 -1
- package/dist/theme.events-DM4H5F2d.cjs +0 -1
- package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
- package/dist/theme.service-BrUbGoeQ.cjs +0 -1
- package/dist/theme.service-BrUbGoeQ.cjs.map +0 -1
- package/dist/theme.service-CmbOGMA8.js.map +0 -1
- package/skills/schmancy/code-highlight.md +0 -47
- package/skills/schmancy/dialog.md +0 -69
- package/skills/schmancy/mailbox.md +0 -102
- package/skills/schmancy/sheet.md +0 -76
- package/src/code-highlight/code-highlight.ts +0 -345
- package/src/code-highlight/code-preview.ts +0 -125
- package/src/code-highlight/index.ts +0 -3
- package/src/dialog/dialog-base.mixin.ts +0 -576
- package/src/dialog/dialog-events.ts +0 -17
- package/src/dialog/dialog-service.ts +0 -494
- package/src/dialog/dialog.component.ts +0 -414
- package/src/dialog/index.ts +0 -3
- package/src/mailbox/README.md +0 -128
- package/src/mailbox/email-editor.ts +0 -1077
- package/src/mailbox/email-layout-selector.ts +0 -58
- package/src/mailbox/email-recipients.ts +0 -599
- package/src/mailbox/email-template-picker.ts +0 -297
- package/src/mailbox/email-viewer.ts +0 -717
- package/src/mailbox/index.ts +0 -31
- package/src/mailbox/mailbox.ts +0 -364
- package/src/mailbox/types.ts +0 -180
- package/src/sheet/hook.ts +0 -40
- package/src/sheet/index.ts +0 -2
- package/src/sheet/sheet.service.ts +0 -245
- package/src/sheet/sheet.ts +0 -238
- package/types/src/code-highlight/code-highlight.d.ts +0 -49
- package/types/src/code-highlight/code-preview.d.ts +0 -30
- package/types/src/code-highlight/index.d.ts +0 -3
- package/types/src/dialog/dialog-base.mixin.d.ts +0 -30
- package/types/src/dialog/dialog-events.d.ts +0 -13
- package/types/src/dialog/dialog-service.d.ts +0 -91
- package/types/src/dialog/dialog.component.d.ts +0 -150
- package/types/src/dialog/index.d.ts +0 -3
- package/types/src/mailbox/email-editor.d.ts +0 -101
- package/types/src/mailbox/email-layout-selector.d.ts +0 -18
- package/types/src/mailbox/email-recipients.d.ts +0 -122
- package/types/src/mailbox/email-template-picker.d.ts +0 -54
- package/types/src/mailbox/email-viewer.d.ts +0 -86
- package/types/src/mailbox/index.d.ts +0 -12
- package/types/src/mailbox/mailbox.d.ts +0 -82
- package/types/src/mailbox/types.d.ts +0 -176
- package/types/src/sheet/hook.d.ts +0 -5
- package/types/src/sheet/index.d.ts +0 -2
- package/types/src/sheet/sheet.d.ts +0 -29
- package/types/src/sheet/sheet.service.d.ts +0 -65
- /package/dist/agent/{flow-CaPi2G8y.js → flow-3RrZM-e7.js} +0 -0
- /package/dist/agent/{vendor-jsqr-r7GNh4P3.js → vendor-jsqr-BUVwyoGC.js} +0 -0
- /package/dist/agent/{vendor-material-color-Be96dpGE.js → vendor-material-color-33Mj762T.js} +0 -0
- /package/dist/{context-daN5G6HS.cjs → context-BpCETidA.cjs} +0 -0
- /package/dist/{context-Bdu1xt0W.js → context-DJTJnSK4.js} +0 -0
- /package/dist/{form-BtwOBMZ9.js → form-BF1c3Dk1.js} +0 -0
- /package/dist/{form-CSJp687X.cjs → form-DeO5XX3b.cjs} +0 -0
- /package/dist/{hashContent-1ARKIsx9.js → hashContent-BU6jl5ih.js} +0 -0
- /package/dist/{hashContent-Bp5S6T4U.cjs → hashContent-Bobsobip.cjs} +0 -0
- /package/dist/{magnetic-BH0TsofV.cjs → magnetic-BJgB1dVi.cjs} +0 -0
- /package/dist/{magnetic-BZGFxAWG.js → magnetic-YwCNvtbB.js} +0 -0
- /package/dist/{overlay-stack-CAQno0CK.js → overlay-stack-DCDS17uj.js} +0 -0
- /package/dist/{overlay-stack-BprhAE9a.cjs → overlay-stack-DPIe_aYv.cjs} +0 -0
- /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-BK8VMe3K.js} +0 -0
- /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-DhOKenkS.cjs} +0 -0
- /package/dist/{theme.interface-D9l33b-M.cjs → theme.interface-BeW-sz_g.cjs} +0 -0
- /package/dist/{theme.interface-DnVNre4O.js → theme.interface-v7SkAnDH.js} +0 -0
package/dist/dialog.js
DELETED
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
import { n as e } from "./mixins-CcIWET41.js";
|
|
2
|
-
import { t } from "./decorate-23nYs4Le.js";
|
|
3
|
-
import { i as n, n as r, o as i, s as a } from "./animation-BK-8BwY8.js";
|
|
4
|
-
import { t as o } from "./reduced-motion-D-L12p7G.js";
|
|
5
|
-
import { t as s } from "./cursor-glow-Ah7VXSj7.js";
|
|
6
|
-
import { i as c, n as l, r as u, t as d } from "./dialog-service-DI9PPy4H.js";
|
|
7
|
-
import { Subject as f, distinctUntilChanged as p, filter as m, fromEvent as h, map as g, merge as _, takeUntil as v, tap as y } from "rxjs";
|
|
8
|
-
import { takeUntil as b } from "rxjs/operators";
|
|
9
|
-
import { customElement as x, property as S, queryAssignedElements as C } from "lit/decorators.js";
|
|
10
|
-
import { css as w, html as T, nothing as E } from "lit";
|
|
11
|
-
import { createRef as D, ref as O } from "lit/directives/ref.js";
|
|
12
|
-
import { when as k } from "lit/directives/when.js";
|
|
13
|
-
import { autoPlacement as A, autoUpdate as j, computePosition as M, offset as N, shift as P, size as F } from "@floating-ui/dom";
|
|
14
|
-
var I = (e) => class extends e {
|
|
15
|
-
constructor(...e) {
|
|
16
|
-
super(...e), this.position = {
|
|
17
|
-
x: 0,
|
|
18
|
-
y: 0
|
|
19
|
-
}, this.isMobile = !1, this.dragOffset = 0, this.stopSwipe$ = new f(), this.lastFocusedElement = null, this.inertSiblings = [], this.animating = !1, this.dialogInternals = (() => {
|
|
20
|
-
try {
|
|
21
|
-
return this.attachInternals();
|
|
22
|
-
} catch {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
})();
|
|
26
|
-
}
|
|
27
|
-
isAnimating() {
|
|
28
|
-
return this.animating;
|
|
29
|
-
}
|
|
30
|
-
getDialogElement() {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
getBackdropElement() {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
getDragHandleElement() {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
connectedCallback() {
|
|
40
|
-
super.connectedCallback(), this.setupResizeListener();
|
|
41
|
-
}
|
|
42
|
-
setupResizeListener() {
|
|
43
|
-
h(window, "resize").pipe(g(() => window.innerWidth < 640), p(), m(() => this.hasAttribute("active")), y((e) => {
|
|
44
|
-
if (this.isMobile !== e) {
|
|
45
|
-
this.isMobile = e, this.requestUpdate();
|
|
46
|
-
let t = this.getDialogElement();
|
|
47
|
-
t && (e ? (this.applyBottomSheetStyles(t), this.setupSwipeGesture(t)) : (this.stopSwipe$.next(), this.setupPositioning()));
|
|
48
|
-
}
|
|
49
|
-
}), v(this.disconnecting)).subscribe();
|
|
50
|
-
}
|
|
51
|
-
setupSwipeGesture(e) {
|
|
52
|
-
this.stopSwipe$.next();
|
|
53
|
-
let t = 0, n = !1, r = 0, i = this.getDragHandleElement();
|
|
54
|
-
_(h(i || e, "touchstart", { passive: !0 }).pipe(y((a) => {
|
|
55
|
-
let o = a.touches[0], s = e.getBoundingClientRect();
|
|
56
|
-
o.clientY - s.top > 80 && !i || (n = !0, t = o.clientY, r = 0, this.dragOffset = 0, e.style.transition = "none", e.style.willChange = "transform");
|
|
57
|
-
})), h(e, "touchmove", { passive: !1 }).pipe(m(() => n), y((n) => {
|
|
58
|
-
let i = n.touches[0].clientY - t;
|
|
59
|
-
r = i < 0 ? .2 * i : i, this.dragOffset = Math.max(0, i), e.style.transform = `translateY(${r}px)`, n.preventDefault();
|
|
60
|
-
})), _(h(e, "touchend", { passive: !0 }), h(e, "touchcancel", { passive: !0 })).pipe(m(() => n), y(() => {
|
|
61
|
-
n = !1, e.style.transition = "transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)", e.style.willChange = "";
|
|
62
|
-
let t = e.getBoundingClientRect().height, r = Math.min(100, .25 * t);
|
|
63
|
-
this.dragOffset > r ? (e.style.transform = "translateY(100%)", this.hide(!1)) : (e.style.transform = "translateY(0)", this.dragOffset = 0);
|
|
64
|
-
}))).pipe(v(_(this.stopSwipe$, this.disconnecting))).subscribe();
|
|
65
|
-
}
|
|
66
|
-
applyBottomSheetStyles(e) {
|
|
67
|
-
this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), Object.assign(e.style, {
|
|
68
|
-
position: "",
|
|
69
|
-
left: "",
|
|
70
|
-
top: "",
|
|
71
|
-
transform: "",
|
|
72
|
-
maxWidth: ""
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
async show(e) {
|
|
76
|
-
let t, n;
|
|
77
|
-
if (this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), this.isMobile = window.innerWidth < 640, e) if ("clientX" in e) t = e.clientX, n = e.clientY;
|
|
78
|
-
else if ("touches" in e && e.touches.length) t = e.touches[0].clientX, n = e.touches[0].clientY;
|
|
79
|
-
else {
|
|
80
|
-
let r = e;
|
|
81
|
-
t = r.x, n = r.y;
|
|
82
|
-
}
|
|
83
|
-
else t = window.innerWidth / 2, n = window.innerHeight / 2;
|
|
84
|
-
this.position = {
|
|
85
|
-
x: t,
|
|
86
|
-
y: n
|
|
87
|
-
}, this.virtualReference = { getBoundingClientRect: () => new DOMRect(t, n, 0, 0) }, this.requestUpdate(), await this.updateComplete, this.setAttribute("active", ""), this.dialogInternals?.states.add("open"), await this.updateComplete, this.lastFocusedElement = document.activeElement;
|
|
88
|
-
let r = this.parentElement;
|
|
89
|
-
if (r) {
|
|
90
|
-
this.inertSiblings = [];
|
|
91
|
-
for (let e = 0; e < r.children.length; e++) {
|
|
92
|
-
let t = r.children[e];
|
|
93
|
-
t !== this && "inert" in t && (t.inert = !0, this.inertSiblings.push(t));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
h(document, "keydown").pipe(m((e) => e.key === "Escape"), y((e) => {
|
|
97
|
-
e.preventDefault(), this.hide(!1);
|
|
98
|
-
}), v(_(this.stopSwipe$, this.disconnecting))).subscribe();
|
|
99
|
-
let i = this.getDialogElement(), a = window.innerWidth < 1024 ? .6 : .8;
|
|
100
|
-
return !this.isMobile && i && (i.scrollHeight > window.innerHeight * a || i.scrollWidth > window.innerWidth * a) && (this.isMobile = !0, this.requestUpdate(), await this.updateComplete), this.isMobile ? i && (this.applyBottomSheetStyles(i), this.setupSwipeGesture(i)) : this.setupPositioning(), this.animating = !0, await this.animateIn(), this.animating = !1, new Promise((e) => {
|
|
101
|
-
this.resolvePromise = e;
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
async animateIn() {
|
|
105
|
-
let e = this.getDialogElement(), t = this.getBackdropElement();
|
|
106
|
-
if (o.value) return t && (t.style.opacity = "1"), void (e && (e.style.opacity = "1"));
|
|
107
|
-
if (t?.animate([{ opacity: 0 }, { opacity: 1 }], {
|
|
108
|
-
duration: 200,
|
|
109
|
-
easing: a,
|
|
110
|
-
fill: "forwards"
|
|
111
|
-
}), e) {
|
|
112
|
-
let t = this.isMobile ? [{
|
|
113
|
-
opacity: 0,
|
|
114
|
-
transform: "translateY(100%)"
|
|
115
|
-
}, {
|
|
116
|
-
opacity: 1,
|
|
117
|
-
transform: "translateY(0)"
|
|
118
|
-
}] : [{
|
|
119
|
-
opacity: 0,
|
|
120
|
-
transform: "scale(0.92) translateY(16px)"
|
|
121
|
-
}, {
|
|
122
|
-
opacity: 1,
|
|
123
|
-
transform: "scale(1) translateY(0)"
|
|
124
|
-
}];
|
|
125
|
-
await e.animate(t, {
|
|
126
|
-
duration: n,
|
|
127
|
-
easing: r,
|
|
128
|
-
fill: "forwards"
|
|
129
|
-
}).finished;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
async animateOut() {
|
|
133
|
-
let e = this.getDialogElement(), t = this.getBackdropElement();
|
|
134
|
-
if (o.value) return t && (t.style.opacity = "0"), void (e && (e.style.opacity = "0"));
|
|
135
|
-
let n = [];
|
|
136
|
-
if (t && n.push(t.animate([{ opacity: 1 }, { opacity: 0 }], {
|
|
137
|
-
duration: 150,
|
|
138
|
-
easing: a,
|
|
139
|
-
fill: "forwards"
|
|
140
|
-
}).finished), e) {
|
|
141
|
-
let t = this.isMobile ? [{
|
|
142
|
-
opacity: 1,
|
|
143
|
-
transform: "translateY(0)"
|
|
144
|
-
}, {
|
|
145
|
-
opacity: 0,
|
|
146
|
-
transform: "translateY(100%)"
|
|
147
|
-
}] : [{
|
|
148
|
-
opacity: 1,
|
|
149
|
-
transform: "scale(1) translateY(0)"
|
|
150
|
-
}, {
|
|
151
|
-
opacity: 0,
|
|
152
|
-
transform: "scale(0.95) translateY(8px)"
|
|
153
|
-
}];
|
|
154
|
-
n.push(e.animate(t, {
|
|
155
|
-
duration: 150,
|
|
156
|
-
easing: i,
|
|
157
|
-
fill: "forwards"
|
|
158
|
-
}).finished);
|
|
159
|
-
}
|
|
160
|
-
await Promise.all(n);
|
|
161
|
-
}
|
|
162
|
-
async hide(e = !1) {
|
|
163
|
-
this.stopSwipe$.next(), this.animating = !0, await this.animateOut(), this.animating = !1, this.removeAttribute("active"), this.dialogInternals?.states.delete("open");
|
|
164
|
-
for (let e of this.inertSiblings) e.inert = !1;
|
|
165
|
-
if (this.inertSiblings = [], this.lastFocusedElement) {
|
|
166
|
-
let e = this.lastFocusedElement;
|
|
167
|
-
typeof e.focus == "function" && e.focus(), this.lastFocusedElement = null;
|
|
168
|
-
}
|
|
169
|
-
this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), this.resolvePromise &&= (this.resolvePromise(e), void 0);
|
|
170
|
-
}
|
|
171
|
-
isCentered() {
|
|
172
|
-
let e = .05 * window.innerWidth, t = .05 * window.innerHeight;
|
|
173
|
-
return Math.abs(this.position.x - window.innerWidth / 2) < e && Math.abs(this.position.y - window.innerHeight / 2) < t;
|
|
174
|
-
}
|
|
175
|
-
setupPositioning() {
|
|
176
|
-
let e = this.getDialogElement();
|
|
177
|
-
e && (this.isCentered() || this.virtualReference && (this.cleanupAutoUpdate = j(this.virtualReference, e, () => this.updatePosition(e), {
|
|
178
|
-
ancestorScroll: !0,
|
|
179
|
-
ancestorResize: !0,
|
|
180
|
-
elementResize: !0
|
|
181
|
-
}), this.updatePosition(e)));
|
|
182
|
-
}
|
|
183
|
-
async updatePosition(e) {
|
|
184
|
-
if (!this.virtualReference) return;
|
|
185
|
-
let { x: t, y: n } = await M(this.virtualReference, e, {
|
|
186
|
-
strategy: "fixed",
|
|
187
|
-
middleware: [
|
|
188
|
-
N(8),
|
|
189
|
-
A({
|
|
190
|
-
padding: 16,
|
|
191
|
-
allowedPlacements: [
|
|
192
|
-
"top-start",
|
|
193
|
-
"top-end",
|
|
194
|
-
"bottom-start",
|
|
195
|
-
"bottom-end",
|
|
196
|
-
"left-start",
|
|
197
|
-
"left-end",
|
|
198
|
-
"right-start",
|
|
199
|
-
"right-end"
|
|
200
|
-
]
|
|
201
|
-
}),
|
|
202
|
-
P({ padding: 16 }),
|
|
203
|
-
F({
|
|
204
|
-
padding: 16,
|
|
205
|
-
apply({ availableWidth: e, elements: t }) {
|
|
206
|
-
t.floating.style.maxWidth = `${e}px`;
|
|
207
|
-
}
|
|
208
|
-
})
|
|
209
|
-
]
|
|
210
|
-
});
|
|
211
|
-
Object.assign(e.style, {
|
|
212
|
-
position: "fixed",
|
|
213
|
-
left: `${Math.round(t)}px`,
|
|
214
|
-
top: `${Math.round(n)}px`,
|
|
215
|
-
transform: "none"
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
disconnectedCallback() {
|
|
219
|
-
this.stopSwipe$.next(), this.cleanupAutoUpdate &&= (this.cleanupAutoUpdate(), void 0), super.disconnectedCallback();
|
|
220
|
-
}
|
|
221
|
-
}, L = class extends I(e(w`
|
|
222
|
-
:host {
|
|
223
|
-
position: fixed;
|
|
224
|
-
z-index: var(--schmancy-overlay-z, 10000);
|
|
225
|
-
inset: 0;
|
|
226
|
-
display: none;
|
|
227
|
-
--dialog-width: fit-content;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
:host([active]) {
|
|
231
|
-
display: block;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
/* Luminous glow around the dialog container */
|
|
236
|
-
.dialog {
|
|
237
|
-
box-shadow: 0 8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);
|
|
238
|
-
border-radius: var(--schmancy-sys-shape-corner-large);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
@media (prefers-reduced-motion: reduce) {
|
|
242
|
-
.dialog { box-shadow: var(--schmancy-sys-elevation-2); }
|
|
243
|
-
}
|
|
244
|
-
`)) {
|
|
245
|
-
constructor(...e) {
|
|
246
|
-
super(...e), this.title = void 0, this.subtitle = void 0, this.message = void 0, this.confirmText = void 0, this.cancelText = void 0, this.variant = "default", this.hideActions = !1, this._confirmDialogRef = D(), this._contentDialogRef = D(), this._backdropRef = D(), this._dragHandleRef = D(), this._a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`;
|
|
247
|
-
}
|
|
248
|
-
get _titleId() {
|
|
249
|
-
return `${this._a11yId}-title`;
|
|
250
|
-
}
|
|
251
|
-
get _descId() {
|
|
252
|
-
return `${this._a11yId}-desc`;
|
|
253
|
-
}
|
|
254
|
-
getDialogElement() {
|
|
255
|
-
return this._contentDialogRef.value ? this._contentDialogRef.value : this._confirmDialogRef.value ?? null;
|
|
256
|
-
}
|
|
257
|
-
getBackdropElement() {
|
|
258
|
-
return this._backdropRef.value ?? null;
|
|
259
|
-
}
|
|
260
|
-
getDragHandleElement() {
|
|
261
|
-
return this._dragHandleRef.value ?? null;
|
|
262
|
-
}
|
|
263
|
-
get isConfirmMode() {
|
|
264
|
-
return !this.hideActions && !(!this.confirmText?.trim() || !this.cancelText?.trim());
|
|
265
|
-
}
|
|
266
|
-
connectedCallback() {
|
|
267
|
-
super.connectedCallback(), h(window, c).pipe(y((e) => {
|
|
268
|
-
e.detail.uid === this.uid && this.announcePresence();
|
|
269
|
-
}), b(this.disconnecting)).subscribe();
|
|
270
|
-
}
|
|
271
|
-
announcePresence() {
|
|
272
|
-
this.dispatchEvent(new CustomEvent(u, {
|
|
273
|
-
detail: { dialog: this },
|
|
274
|
-
bubbles: !0,
|
|
275
|
-
composed: !0
|
|
276
|
-
}));
|
|
277
|
-
}
|
|
278
|
-
handleConfirm() {
|
|
279
|
-
this.hide(!0), this.dispatchEvent(new CustomEvent("confirm", {
|
|
280
|
-
bubbles: !0,
|
|
281
|
-
composed: !0
|
|
282
|
-
}));
|
|
283
|
-
}
|
|
284
|
-
handleClose() {
|
|
285
|
-
this.isAnimating() || (this.hide(!1), this.dispatchEvent(new CustomEvent(this.isConfirmMode ? "cancel" : "close", {
|
|
286
|
-
bubbles: !0,
|
|
287
|
-
composed: !0
|
|
288
|
-
})));
|
|
289
|
-
}
|
|
290
|
-
renderDragHandle() {
|
|
291
|
-
return T`
|
|
292
|
-
<div ${O(this._dragHandleRef)} class="dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none">
|
|
293
|
-
<div class="w-10 h-1 rounded-full bg-outline-variant"></div>
|
|
294
|
-
</div>
|
|
295
|
-
`;
|
|
296
|
-
}
|
|
297
|
-
render() {
|
|
298
|
-
let e = this.isCentered(), t = this._contentSlotElements?.length > 0, n = {
|
|
299
|
-
dialog: !0,
|
|
300
|
-
fixed: !0,
|
|
301
|
-
"w-[var(--dialog-width)]": !0,
|
|
302
|
-
"max-w-[calc(100vw-2rem)]": !0,
|
|
303
|
-
"max-h-[90dvh]": !0,
|
|
304
|
-
"overflow-hidden": !0,
|
|
305
|
-
"top-1/2": e,
|
|
306
|
-
"left-1/2": e,
|
|
307
|
-
"-translate-x-1/2": e,
|
|
308
|
-
"-translate-y-1/2": e
|
|
309
|
-
}, r = this.isMobile ? {
|
|
310
|
-
dialog: !0,
|
|
311
|
-
fixed: !0,
|
|
312
|
-
"inset-x-0": !0,
|
|
313
|
-
"bottom-0": !0,
|
|
314
|
-
"w-full": !0,
|
|
315
|
-
"max-h-[90dvh]": !0,
|
|
316
|
-
"overflow-hidden": !0,
|
|
317
|
-
"pb-[env(safe-area-inset-bottom)]": !0
|
|
318
|
-
} : n, i = this.isMobile ? "flex flex-col-reverse gap-2 w-full" : "flex justify-end gap-3";
|
|
319
|
-
if (this.isConfirmMode) {
|
|
320
|
-
let e = !!this.title?.trim(), n = !!this.subtitle?.trim(), a = !!this.message?.trim(), o = [n && this._descId + "-sub", a && this._descId + "-msg"].filter(Boolean).join(" ") || "";
|
|
321
|
-
return T`
|
|
322
|
-
<div ${O(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
|
|
323
|
-
|
|
324
|
-
<div
|
|
325
|
-
${O(this._confirmDialogRef)}
|
|
326
|
-
class=${this.classMap(r)}
|
|
327
|
-
role="alertdialog"
|
|
328
|
-
aria-modal="true"
|
|
329
|
-
aria-labelledby=${e ? this._titleId : E}
|
|
330
|
-
aria-describedby=${o || E}
|
|
331
|
-
>
|
|
332
|
-
<schmancy-surface
|
|
333
|
-
${s({
|
|
334
|
-
radius: 250,
|
|
335
|
-
intensity: .1
|
|
336
|
-
})}
|
|
337
|
-
rounded=${this.isMobile ? "top" : "all"}
|
|
338
|
-
type="glass"
|
|
339
|
-
fill="all"
|
|
340
|
-
class="overflow-hidden"
|
|
341
|
-
>
|
|
342
|
-
${this.isMobile ? this.renderDragHandle() : null}
|
|
343
|
-
<schmancy-scroll direction="vertical" hide class="p-4 pt-2">
|
|
344
|
-
<schmancy-form @submit=${this.handleConfirm}>
|
|
345
|
-
${k(e, () => T`
|
|
346
|
-
<schmancy-typography id=${this._titleId} type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
|
|
347
|
-
${k(n, () => T`
|
|
348
|
-
<schmancy-typography id="${this._descId}-sub" type="subtitle" token="xs" class="mb-2">
|
|
349
|
-
${this.subtitle}
|
|
350
|
-
</schmancy-typography>
|
|
351
|
-
`)}
|
|
352
|
-
`)}
|
|
353
|
-
${t ? T`<div class="mb-4"><slot name="content"></slot></div>` : k(a, () => T`<schmancy-typography id="${this._descId}-msg" type="body" class="mb-4">${this.message}</schmancy-typography>`)}
|
|
354
|
-
<div class=${i}>
|
|
355
|
-
<schmancy-button
|
|
356
|
-
variant="outlined"
|
|
357
|
-
@click=${this.handleClose}
|
|
358
|
-
class=${this.isMobile ? "w-full" : ""}
|
|
359
|
-
>
|
|
360
|
-
${this.cancelText}
|
|
361
|
-
</schmancy-button>
|
|
362
|
-
<schmancy-button
|
|
363
|
-
type="submit"
|
|
364
|
-
variant="filled"
|
|
365
|
-
class=${this.isMobile ? "w-full" : ""}
|
|
366
|
-
>
|
|
367
|
-
${this.confirmText}
|
|
368
|
-
</schmancy-button>
|
|
369
|
-
</div>
|
|
370
|
-
</schmancy-form>
|
|
371
|
-
</schmancy-scroll>
|
|
372
|
-
</schmancy-surface>
|
|
373
|
-
</div>
|
|
374
|
-
`;
|
|
375
|
-
}
|
|
376
|
-
return T`
|
|
377
|
-
<div ${O(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
|
|
378
|
-
|
|
379
|
-
<section ${O(this._contentDialogRef)} class=${this.classMap(r)} role="dialog" aria-modal="true">
|
|
380
|
-
<schmancy-surface ${s({
|
|
381
|
-
radius: 250,
|
|
382
|
-
intensity: .1
|
|
383
|
-
})} rounded=${this.isMobile ? "top" : "all"} type="glass" fill="all">
|
|
384
|
-
${this.isMobile ? this.renderDragHandle() : null}
|
|
385
|
-
<schmancy-scroll direction="vertical" hide class="max-h-[85dvh]">
|
|
386
|
-
<slot></slot>
|
|
387
|
-
</schmancy-scroll>
|
|
388
|
-
</schmancy-surface>
|
|
389
|
-
</section>
|
|
390
|
-
`;
|
|
391
|
-
}
|
|
392
|
-
static async confirm(e) {
|
|
393
|
-
let t = document.querySelector("schmancy-dialog[data-static-confirm]");
|
|
394
|
-
return t || (t = document.createElement("schmancy-dialog"), t.setAttribute("data-static-confirm", ""), document.body.appendChild(t)), t.title = e.title, t.subtitle = e.subtitle, t.message = e.message, t.confirmText = e.confirmText ?? "Confirm", t.cancelText = e.cancelText ?? "Cancel", t.variant = e.variant ?? "default", e.width && t.style.setProperty("--dialog-width", e.width), t.show(e.position);
|
|
395
|
-
}
|
|
396
|
-
static async ask(e, t) {
|
|
397
|
-
return this.confirm({
|
|
398
|
-
message: e,
|
|
399
|
-
position: t
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
};
|
|
403
|
-
t([S({
|
|
404
|
-
type: String,
|
|
405
|
-
reflect: !0
|
|
406
|
-
})], L.prototype, "uid", void 0), t([S({ type: String })], L.prototype, "title", void 0), t([S({ type: String })], L.prototype, "subtitle", void 0), t([S({ type: String })], L.prototype, "message", void 0), t([S({
|
|
407
|
-
type: String,
|
|
408
|
-
attribute: "confirm-text"
|
|
409
|
-
})], L.prototype, "confirmText", void 0), t([S({
|
|
410
|
-
type: String,
|
|
411
|
-
attribute: "cancel-text"
|
|
412
|
-
})], L.prototype, "cancelText", void 0), t([S({ type: String })], L.prototype, "variant", void 0), t([S({
|
|
413
|
-
type: Boolean,
|
|
414
|
-
attribute: "hide-actions"
|
|
415
|
-
})], L.prototype, "hideActions", void 0), t([C({
|
|
416
|
-
slot: "content",
|
|
417
|
-
flatten: !0
|
|
418
|
-
})], L.prototype, "_contentSlotElements", void 0), L = t([x("schmancy-dialog")], L);
|
|
419
|
-
export { d as $dialog, L as ConfirmDialog, L as SchmancyDialog, I as DialogBase, l as DialogService };
|
package/dist/dialog.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","names":[],"sources":["../src/dialog/dialog-base.mixin.ts","../src/dialog/dialog.component.ts"],"sourcesContent":["import { autoPlacement, autoUpdate, computePosition, offset, shift, size } from '@floating-ui/dom'\nimport { LitElement } from 'lit'\nimport { distinctUntilChanged, filter, fromEvent, map, merge, Subject, takeUntil, tap } from 'rxjs'\nimport type { Constructor } from '../../mixins/constructor'\nimport type { IBaseMixin } from '../../mixins/baseElement'\nimport {\n\tBLACKBIRD_EASING,\n\tDURATION_ENTER,\n\tDURATION_EXIT,\n\tDURATION_BACKDROP,\n\tEASE_OUT,\n\tEASE_IN,\n} from '../utils/animation'\nimport { reducedMotion$ } from '../directives/reduced-motion'\n\n// Mobile breakpoint - matches Tailwind's sm breakpoint\nconst MOBILE_BREAKPOINT = 640\n\n// Tablet breakpoint\nconst TABLET_BREAKPOINT = 1024\n\n/**\n * Fraction of viewport a dialog can occupy before converting to bottom sheet.\n * Tablet (640–1024px): 60% — tighter screens benefit from bottom sheet sooner.\n * Desktop (>1024px): 80% — plenty of room, keep floating longer.\n */\nfunction largeContentThreshold(): number {\n\treturn window.innerWidth < TABLET_BREAKPOINT ? 0.6 : 0.8\n}\n\nexport interface DialogPosition {\n\tx: number\n\ty: number\n}\n\nexport interface VirtualReference {\n\tgetBoundingClientRect: () => DOMRect\n}\n\n/**\n * Interface for the DialogBase mixin methods\n */\nexport interface IDialogBaseMixin {\n\tposition: DialogPosition\n\tisMobile: boolean\n\tdragOffset: number\n\tshow(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean>\n\thide(result?: boolean): Promise<void>\n\tisCentered(): boolean\n\tisAnimating(): boolean\n}\n\n/**\n * Dialog mixin with smart positioning using Floating UI.\n *\n * On mobile (< 640px), automatically switches to bottom sheet mode\n * with swipe-to-dismiss gesture. On tablet/desktop, if content exceeds\n * a viewport-dependent threshold, also opens as bottom sheet.\n */\nexport const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(superClass: T) => {\n\tclass DialogBaseClass extends superClass {\n\t\tposition: DialogPosition = { x: 0, y: 0 }\n\t\tisMobile = false\n\t\tdragOffset = 0\n\n\t\tprotected resolvePromise?: (value: boolean) => void\n\t\tprotected cleanupAutoUpdate?: () => void\n\t\tprotected virtualReference?: VirtualReference\n\n\t\t// Subject to signal when to stop swipe gesture stream\n\t\tprivate readonly stopSwipe$ = new Subject<void>()\n\n\t\t// Focus trap state\n\t\tprivate lastFocusedElement: Element | null = null\n\t\tprivate inertSiblings: HTMLElement[] = []\n\n\t\t// Animation guard\n\t\tprivate animating = false\n\n\t\t/** ElementInternals — used for broadcasting `:state(open)` to consumers. */\n\t\tprotected dialogInternals: ElementInternals | undefined = (() => {\n\t\t\ttry {\n\t\t\t\treturn this.attachInternals()\n\t\t\t} catch {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t})()\n\n\t\t/**\n\t\t * Check if the dialog is currently animating\n\t\t */\n\t\tisAnimating(): boolean {\n\t\t\treturn this.animating\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the dialog element\n\t\t */\n\t\tprotected getDialogElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the backdrop element for animations\n\t\t */\n\t\tprotected getBackdropElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\t/**\n\t\t * Override in subclass to return the drag handle element for swipe gestures\n\t\t */\n\t\tprotected getDragHandleElement(): HTMLElement | null {\n\t\t\treturn null\n\t\t}\n\n\t\tconnectedCallback(): void {\n\t\t\tsuper.connectedCallback()\n\t\t\tthis.setupResizeListener()\n\t\t}\n\n\t\t/**\n\t\t * Listen for resize to switch between mobile/desktop modes\n\t\t */\n\t\tprivate setupResizeListener(): void {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(() => window.innerWidth < MOBILE_BREAKPOINT),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\tfilter(() => this.hasAttribute('active')),\n\t\t\t\t\ttap(isMobile => {\n\t\t\t\t\t\tif (this.isMobile !== isMobile) {\n\t\t\t\t\t\t\tthis.isMobile = isMobile\n\t\t\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t\t\t\tconst dialog = this.getDialogElement()\n\t\t\t\t\t\t\tif (dialog) {\n\t\t\t\t\t\t\t\tif (isMobile) {\n\t\t\t\t\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.stopSwipe$.next()\n\t\t\t\t\t\t\t\t\tthis.setupPositioning()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Setup RxJS-based swipe gesture for dialog\n\t\t */\n\t\tprivate setupSwipeGesture(dialog: HTMLElement): void {\n\t\t\t// Stop any existing swipe gesture\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tlet dragStartY = 0\n\t\t\tlet isDragging = false\n\t\t\tlet currentY = 0\n\n\t\t\tconst dragHandle = this.getDragHandleElement()\n\t\t\tconst dragTarget = dragHandle || dialog\n\n\t\t\tconst touchStart$ = fromEvent<TouchEvent>(dragTarget, 'touchstart', { passive: true }).pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst rect = dialog.getBoundingClientRect()\n\t\t\t\t\tconst touchY = touch.clientY - rect.top\n\n\t\t\t\t\t// Only allow drag from top 80px or drag handle\n\t\t\t\t\tif (touchY > 80 && !dragHandle) return\n\n\t\t\t\t\tisDragging = true\n\t\t\t\t\tdragStartY = touch.clientY\n\t\t\t\t\tcurrentY = 0\n\t\t\t\t\tthis.dragOffset = 0\n\n\t\t\t\t\t// Disable transitions for immediate feedback\n\t\t\t\t\tdialog.style.transition = 'none'\n\t\t\t\t\tdialog.style.willChange = 'transform'\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchMove$ = fromEvent<TouchEvent>(dialog, 'touchmove', { passive: false }).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(e => {\n\t\t\t\t\tconst touch = e.touches[0]\n\t\t\t\t\tconst deltaY = touch.clientY - dragStartY\n\n\t\t\t\t\t// Rubber-band effect for upward drag\n\t\t\t\t\tif (deltaY < 0) {\n\t\t\t\t\t\tcurrentY = deltaY * 0.2\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentY = deltaY\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dragOffset = Math.max(0, deltaY)\n\n\t\t\t\t\t// Direct DOM update - 1:1 tracking\n\t\t\t\t\tdialog.style.transform = `translateY(${currentY}px)`\n\n\t\t\t\t\te.preventDefault()\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\tconst touchEnd$ = merge(\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchend', { passive: true }),\n\t\t\t\tfromEvent<TouchEvent>(dialog, 'touchcancel', { passive: true }),\n\t\t\t).pipe(\n\t\t\t\tfilter(() => isDragging),\n\t\t\t\ttap(() => {\n\t\t\t\t\tisDragging = false\n\n\t\t\t\t\t// Re-enable transitions for snap animation\n\t\t\t\t\tdialog.style.transition = 'transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)'\n\t\t\t\t\tdialog.style.willChange = ''\n\n\t\t\t\t\tconst dialogHeight = dialog.getBoundingClientRect().height\n\t\t\t\t\tconst threshold = Math.min(100, dialogHeight * 0.25)\n\n\t\t\t\t\tif (this.dragOffset > threshold) {\n\t\t\t\t\t\t// Dismiss - animate out\n\t\t\t\t\t\tdialog.style.transform = 'translateY(100%)'\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Snap back\n\t\t\t\t\t\tdialog.style.transform = 'translateY(0)'\n\t\t\t\t\t\tthis.dragOffset = 0\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\n\t\t\t// Merge all touch streams and subscribe\n\t\t\tmerge(touchStart$, touchMove$, touchEnd$)\n\t\t\t\t.pipe(takeUntil(merge(this.stopSwipe$, this.disconnecting)))\n\t\t\t\t.subscribe()\n\t\t}\n\n\t\t/**\n\t\t * Apply bottom sheet styles for mobile\n\t\t */\n\t\tprivate applyBottomSheetStyles(dialog: HTMLElement): void {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: '',\n\t\t\t\tleft: '',\n\t\t\t\ttop: '',\n\t\t\t\ttransform: '',\n\t\t\t\tmaxWidth: '',\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Show the dialog at a specific position\n\t\t */\n\t\tasync show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean> {\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tthis.isMobile = window.innerWidth < MOBILE_BREAKPOINT\n\n\t\t\tlet x: number, y: number\n\n\t\t\tif (!positionOrEvent) {\n\t\t\t\tx = window.innerWidth / 2\n\t\t\t\ty = window.innerHeight / 2\n\t\t\t} else if ('clientX' in positionOrEvent) {\n\t\t\t\tx = positionOrEvent.clientX\n\t\t\t\ty = positionOrEvent.clientY\n\t\t\t} else if ('touches' in positionOrEvent && positionOrEvent.touches.length) {\n\t\t\t\tx = positionOrEvent.touches[0].clientX\n\t\t\t\ty = positionOrEvent.touches[0].clientY\n\t\t\t} else {\n\t\t\t\tconst pos = positionOrEvent as DialogPosition\n\t\t\t\tx = pos.x\n\t\t\t\ty = pos.y\n\t\t\t}\n\n\t\t\tthis.position = { x, y }\n\n\t\t\tthis.virtualReference = {\n\t\t\t\tgetBoundingClientRect: () => new DOMRect(x, y, 0, 0),\n\t\t\t}\n\n\t\t\tthis.requestUpdate()\n\t\t\tawait this.updateComplete\n\n\t\t\tthis.setAttribute('active', '')\n\t\t\tthis.dialogInternals?.states.add('open')\n\t\t\tawait this.updateComplete\n\n\t\t\t// Save focus and set siblings to inert for focus trap\n\t\t\tthis.lastFocusedElement = document.activeElement\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tthis.inertSiblings = []\n\t\t\t\tfor (let i = 0; i < parent.children.length; i++) {\n\t\t\t\t\tconst sibling = parent.children[i] as HTMLElement\n\t\t\t\t\tif (sibling !== this && 'inert' in sibling) {\n\t\t\t\t\t\tsibling.inert = true\n\t\t\t\t\t\tthis.inertSiblings.push(sibling)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Escape key listener\n\t\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape'),\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.hide(false)\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(merge(this.stopSwipe$, this.disconnecting)),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\n\t\t\tconst dialog = this.getDialogElement()\n\n\t\t\t// If content exceeds viewport threshold on desktop, treat as bottom sheet\n\t\t\tconst threshold = largeContentThreshold()\n\t\t\tif (\n\t\t\t\t!this.isMobile &&\n\t\t\t\tdialog &&\n\t\t\t\t(dialog.scrollHeight > window.innerHeight * threshold ||\n\t\t\t\t\tdialog.scrollWidth > window.innerWidth * threshold)\n\t\t\t) {\n\t\t\t\tthis.isMobile = true\n\t\t\t\tthis.requestUpdate()\n\t\t\t\tawait this.updateComplete\n\t\t\t}\n\n\t\t\tif (this.isMobile) {\n\t\t\t\tif (dialog) {\n\t\t\t\t\tthis.applyBottomSheetStyles(dialog)\n\t\t\t\t\tthis.setupSwipeGesture(dialog)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setupPositioning()\n\t\t\t}\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateIn()\n\t\t\tthis.animating = false\n\n\t\t\treturn new Promise<boolean>(resolve => {\n\t\t\t\tthis.resolvePromise = resolve\n\t\t\t})\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog entrance\n\t\t */\n\t\tprivate async animateIn(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '1'\n\t\t\t\tif (dialog) dialog.style.opacity = '1'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tbackdrop?.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\tduration: DURATION_BACKDROP,\n\t\t\t\teasing: EASE_OUT,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.92) translateY(16px)' },\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tawait dialog.animate(animation, {\n\t\t\t\t\tduration: DURATION_ENTER,\n\t\t\t\t\teasing: BLACKBIRD_EASING,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t}).finished\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Animate dialog exit\n\t\t */\n\t\tprivate async animateOut(): Promise<void> {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tconst backdrop = this.getBackdropElement()\n\n\t\t\tif (reducedMotion$.value) {\n\t\t\t\tif (backdrop) backdrop.style.opacity = '0'\n\t\t\t\tif (dialog) dialog.style.opacity = '0'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst animations: Promise<Animation>[] = []\n\n\t\t\tif (backdrop) {\n\t\t\t\tanimations.push(\n\t\t\t\t\tbackdrop.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_OUT,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (dialog) {\n\t\t\t\tconst animation = this.isMobile\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%)' },\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t{ opacity: 1, transform: 'scale(1) translateY(0)' },\n\t\t\t\t\t\t\t{ opacity: 0, transform: 'scale(0.95) translateY(8px)' },\n\t\t\t\t\t\t]\n\n\t\t\t\tanimations.push(\n\t\t\t\t\tdialog.animate(animation, {\n\t\t\t\t\t\tduration: DURATION_EXIT,\n\t\t\t\t\t\teasing: EASE_IN,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t}).finished,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tawait Promise.all(animations)\n\t\t}\n\n\t\t/**\n\t\t * Hide the dialog\n\t\t */\n\t\tasync hide(result = false): Promise<void> {\n\t\t\tthis.stopSwipe$.next()\n\n\t\t\tthis.animating = true\n\t\t\tawait this.animateOut()\n\t\t\tthis.animating = false\n\n\t\t\tthis.removeAttribute('active')\n\t\t\tthis.dialogInternals?.states.delete('open')\n\n\t\t\t// Restore inert siblings\n\t\t\tfor (const el of this.inertSiblings) {\n\t\t\t\tel.inert = false\n\t\t\t}\n\t\t\tthis.inertSiblings = []\n\n\t\t\t// Restore focus\n\t\t\tif (this.lastFocusedElement) {\n\t\t\t\tconst el = this.lastFocusedElement as HTMLElement\n\t\t\t\tif (typeof el.focus === 'function') {\n\t\t\t\t\tel.focus()\n\t\t\t\t}\n\t\t\t\tthis.lastFocusedElement = null\n\t\t\t}\n\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\n\t\t\tif (this.resolvePromise) {\n\t\t\t\tthis.resolvePromise(result)\n\t\t\t\tthis.resolvePromise = undefined\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Check if position is near center (only skip Floating UI for truly centered dialogs)\n\t\t */\n\t\tisCentered(): boolean {\n\t\t\t// Use tight tolerance (5%) - only skip Floating UI when position is very close to center\n\t\t\tconst toleranceX = window.innerWidth * 0.05\n\t\t\tconst toleranceY = window.innerHeight * 0.05\n\n\t\t\treturn (\n\t\t\t\tMath.abs(this.position.x - window.innerWidth / 2) < toleranceX &&\n\t\t\t\tMath.abs(this.position.y - window.innerHeight / 2) < toleranceY\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * Setup Floating UI positioning for desktop\n\t\t */\n\t\tprivate setupPositioning(): void {\n\t\t\tconst dialog = this.getDialogElement()\n\t\t\tif (!dialog) return\n\n\t\t\tif (this.isCentered()) return\n\n\t\t\tif (this.virtualReference) {\n\t\t\t\tthis.cleanupAutoUpdate = autoUpdate(\n\t\t\t\t\tthis.virtualReference,\n\t\t\t\t\tdialog,\n\t\t\t\t\t() => this.updatePosition(dialog),\n\t\t\t\t\t{\n\t\t\t\t\t\tancestorScroll: true,\n\t\t\t\t\t\tancestorResize: true,\n\t\t\t\t\t\telementResize: true,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\tthis.updatePosition(dialog)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Update position using Floating UI\n\t\t */\n\t\tprivate async updatePosition(dialog: HTMLElement): Promise<void> {\n\t\t\tif (!this.virtualReference) return\n\n\t\t\tconst padding = 16\n\n\t\t\tconst { x, y } = await computePosition(this.virtualReference, dialog, {\n\t\t\t\tstrategy: 'fixed',\n\t\t\t\tmiddleware: [\n\t\t\t\t\toffset(8),\n\t\t\t\t\tautoPlacement({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tallowedPlacements: [\n\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t'left-start',\n\t\t\t\t\t\t\t'left-end',\n\t\t\t\t\t\t\t'right-start',\n\t\t\t\t\t\t\t'right-end',\n\t\t\t\t\t\t],\n\t\t\t\t\t}),\n\t\t\t\t\tshift({ padding }),\n\t\t\t\t\tsize({\n\t\t\t\t\t\tpadding,\n\t\t\t\t\t\tapply({ availableWidth, elements }) {\n\t\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t})\n\n\t\t\tObject.assign(dialog.style, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tleft: `${Math.round(x)}px`,\n\t\t\t\ttop: `${Math.round(y)}px`,\n\t\t\t\ttransform: 'none',\n\t\t\t})\n\t\t}\n\n\t\tdisconnectedCallback(): void {\n\t\t\tthis.stopSwipe$.next()\n\t\t\tif (this.cleanupAutoUpdate) {\n\t\t\t\tthis.cleanupAutoUpdate()\n\t\t\t\tthis.cleanupAutoUpdate = undefined\n\t\t\t}\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\n\treturn DialogBaseClass as Constructor<IDialogBaseMixin> & T\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { createRef, ref, type Ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, tap } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\nimport { DialogBase } from './dialog-base.mixin'\nimport { DialogHereMorty, DialogWhereAreYouRicky, DialogWhereAreYouRickyEvent } from './dialog-events'\n\n/**\n * Unified dialog component that handles both content-only and confirm modes.\n *\n * @element schmancy-dialog\n * @slot default - Content slot for dialog body (used in content mode)\n * @slot content - Named slot for custom content in confirm mode\n *\n * @example Content mode (no buttons):\n * ```html\n * <schmancy-dialog>\n * <my-custom-content></my-custom-content>\n * </schmancy-dialog>\n * ```\n *\n * @example Confirm mode (with buttons):\n * ```html\n * <schmancy-dialog\n * title=\"Confirm Action\"\n * message=\"Are you sure?\"\n * confirm-text=\"Yes\"\n * cancel-text=\"No\"\n * ></schmancy-dialog>\n * ```\n */\n@customElement('schmancy-dialog')\nexport class SchmancyDialog extends DialogBase(\n\t$LitElement(css`\n\t\t:host {\n\t\t\tposition: fixed;\n\t\t\tz-index: var(--schmancy-overlay-z, 10000);\n\t\t\tinset: 0;\n\t\t\tdisplay: none;\n\t\t\t--dialog-width: fit-content;\n\t\t}\n\n\t\t:host([active]) {\n\t\t\tdisplay: block;\n\t\t}\n\n\n\t\t/* Luminous glow around the dialog container */\n\t\t.dialog {\n\t\t\tbox-shadow: 0 8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t\t\tborder-radius: var(--schmancy-sys-shape-corner-large);\n\t\t}\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t.dialog { box-shadow: var(--schmancy-sys-elevation-2); }\n\t\t}\n\t`),\n) {\n\t/**\n\t * Unique identifier for the dialog instance\n\t */\n\t@property({ type: String, reflect: true }) uid!: string\n\n\t/**\n\t * Dialog title (enables confirm mode when set)\n\t */\n\t@property({ type: String }) title: string | undefined = undefined\n\n\t/**\n\t * Dialog subtitle\n\t */\n\t@property({ type: String }) subtitle: string | undefined = undefined\n\n\t/**\n\t * Dialog message\n\t */\n\t@property({ type: String }) message: string | undefined = undefined\n\n\t/**\n\t * Text for confirm button (enables confirm mode when set with cancelText)\n\t */\n\t@property({ type: String, attribute: 'confirm-text' }) confirmText: string | undefined = undefined\n\n\t/**\n\t * Text for cancel button\n\t */\n\t@property({ type: String, attribute: 'cancel-text' }) cancelText: string | undefined = undefined\n\n\t/**\n\t * Dialog variant (affects button colors in confirm mode)\n\t */\n\t@property({ type: String }) variant: 'default' | 'danger' = 'default'\n\n\t/**\n\t * Whether to hide action buttons (force content mode)\n\t */\n\t@property({ type: Boolean, attribute: 'hide-actions' }) hideActions = false\n\n\t/**\n\t * Slotted children in the named \"content\" slot (confirm mode custom content)\n\t */\n\t@queryAssignedElements({ slot: 'content', flatten: true })\n\tprivate _contentSlotElements!: HTMLElement[]\n\n\t/**\n\t * Ref to the confirm mode wrapper div\n\t */\n\tprivate _confirmDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the content mode section element\n\t */\n\tprivate _contentDialogRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the backdrop element for animations\n\t */\n\tprivate _backdropRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Ref to the drag handle element for swipe gestures\n\t */\n\tprivate _dragHandleRef: Ref<HTMLElement> = createRef()\n\n\t/**\n\t * Stable per-instance id used for ARIA labelledby/describedby wiring\n\t */\n\tprivate readonly _a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`\n\tprivate get _titleId() { return `${this._a11yId}-title` }\n\tprivate get _descId() { return `${this._a11yId}-desc` }\n\n\t/**\n\t * Return the dialog element for positioning/size measurement.\n\t * In content mode, returns the first slotted child (the actual component).\n\t * In confirm mode, returns the wrapper div.\n\t */\n\tprotected getDialogElement(): HTMLElement | null {\n\t\t// Content mode: use the section wrapper (slotted content may be display:contents)\n\t\tif (this._contentDialogRef.value) return this._contentDialogRef.value\n\t\t// Confirm mode: use the wrapper div\n\t\treturn this._confirmDialogRef.value ?? null\n\t}\n\n\t/**\n\t * Return the backdrop element for animations\n\t */\n\tprotected getBackdropElement(): HTMLElement | null {\n\t\treturn this._backdropRef.value ?? null\n\t}\n\n\t/**\n\t * Return the drag handle element for swipe gestures\n\t */\n\tprotected getDragHandleElement(): HTMLElement | null {\n\t\treturn this._dragHandleRef.value ?? null\n\t}\n\n\t/**\n\t * Check if dialog is in confirm mode (has buttons)\n\t */\n\tprivate get isConfirmMode(): boolean {\n\t\tif (this.hideActions) return false\n\t\treturn !!(this.confirmText?.trim() && this.cancelText?.trim())\n\t}\n\n\t/**\n\t * Handle component connection to DOM\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\n\t\t// Listen for \"where are you ricky\" events\n\t\tfromEvent<DialogWhereAreYouRickyEvent>(window, DialogWhereAreYouRicky)\n\t\t\t.pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Announce this dialog's presence to the service\n\t */\n\tprivate announcePresence(): void {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(DialogHereMorty, {\n\t\t\t\tdetail: { dialog: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle confirm action\n\t */\n\tprivate handleConfirm(): void {\n\t\tthis.hide(true)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('confirm', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Handle cancel/close action\n\t */\n\tprivate handleClose(): void {\n\t\tif (this.isAnimating()) return\n\t\tthis.hide(false)\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(this.isConfirmMode ? 'cancel' : 'close', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\t/**\n\t * Render drag handle for mobile bottom sheet\n\t */\n\tprivate renderDragHandle() {\n\t\treturn html`\n\t\t\t<div ${ref(this._dragHandleRef)} class=\"dialog-drag-handle flex justify-center pt-2 pb-1 cursor-grab active:cursor-grabbing touch-none\">\n\t\t\t\t<div class=\"w-10 h-1 rounded-full bg-outline-variant\"></div>\n\t\t\t</div>\n\t\t`\n\t}\n\n\trender() {\n\t\tconst isCentered = this.isCentered()\n\t\tconst hasCustomContent = this._contentSlotElements?.length > 0\n\n\t\t// Mobile bottom sheet classes\n\t\tconst mobileDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'inset-x-0': true,\n\t\t\t'bottom-0': true,\n\t\t\t'w-full': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t// Safe area padding for notched devices\n\t\t\t'pb-[env(safe-area-inset-bottom)]': true,\n\t\t}\n\n\t\t// Desktop dialog classes\n\t\tconst desktopDialogClasses = {\n\t\t\tdialog: true,\n\t\t\tfixed: true,\n\t\t\t'w-[var(--dialog-width)]': true,\n\t\t\t'max-w-[calc(100vw-2rem)]': true,\n\t\t\t'max-h-[90dvh]': true,\n\t\t\t'overflow-hidden': true,\n\t\t\t'top-1/2': isCentered,\n\t\t\t'left-1/2': isCentered,\n\t\t\t'-translate-x-1/2': isCentered,\n\t\t\t'-translate-y-1/2': isCentered,\n\t\t}\n\n\t\tconst dialogClasses = this.isMobile ? mobileDialogClasses : desktopDialogClasses\n\n\t\t// Button classes - stack vertically on mobile\n\t\tconst buttonContainerClasses = this.isMobile\n\t\t\t? 'flex flex-col-reverse gap-2 w-full'\n\t\t\t: 'flex justify-end gap-3'\n\n\t\t// Confirm mode: with title/buttons\n\t\tif (this.isConfirmMode) {\n\t\t\tconst hasTitle = !!this.title?.trim()\n\t\t\tconst hasSubtitle = !!this.subtitle?.trim()\n\t\t\tconst hasMessage = !!this.message?.trim()\n\t\t\tconst describedBy = [hasSubtitle && this._descId + '-sub', hasMessage && this._descId + '-msg']\n\t\t\t\t.filter(Boolean)\n\t\t\t\t.join(' ') || ''\n\t\t\treturn html`\n\t\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t\t<div\n\t\t\t\t\t${ref(this._confirmDialogRef)}\n\t\t\t\t\tclass=${this.classMap(dialogClasses)}\n\t\t\t\t\trole=\"alertdialog\"\n\t\t\t\t\taria-modal=\"true\"\n\t\t\t\t\taria-labelledby=${hasTitle ? this._titleId : nothing}\n\t\t\t\t\taria-describedby=${describedBy || nothing}\n\t\t\t\t>\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\t${cursorGlow({ radius: 250, intensity: 0.1 })}\n\t\t\t\t\t\trounded=${this.isMobile ? 'top' : 'all'}\n\t\t\t\t\t\ttype=\"glass\"\n\t\t\t\t\t\tfill=\"all\"\n\t\t\t\t\t\tclass=\"overflow-hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"p-4 pt-2\">\n\t\t\t\t\t\t\t<schmancy-form @submit=${this.handleConfirm}>\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\thasTitle,\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<schmancy-typography id=${this._titleId} type=\"title\" token=\"md\" class=\"mb-1\">${this.title}</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\t\t\thasSubtitle,\n\t\t\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-typography id=\"${this._descId}-sub\" type=\"subtitle\" token=\"xs\" class=\"mb-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t${this.subtitle}\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t${hasCustomContent\n\t\t\t\t\t\t\t\t\t? html`<div class=\"mb-4\"><slot name=\"content\"></slot></div>`\n\t\t\t\t\t\t\t\t\t: when(\n\t\t\t\t\t\t\t\t\t\t\thasMessage,\n\t\t\t\t\t\t\t\t\t\t\t() => html`<schmancy-typography id=\"${this._descId}-msg\" type=\"body\" class=\"mb-4\">${this.message}</schmancy-typography>`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div class=${buttonContainerClasses}>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\t\t\t@click=${this.handleClose}\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.cancelText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\t\t\t\t\tclass=${this.isMobile ? 'w-full' : ''}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.confirmText}\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</schmancy-form>\n\t\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t`\n\t\t}\n\n\t\t// Content mode: minimal, just slot\n\t\treturn html`\n\t\t\t<div ${ref(this._backdropRef)} class=\"fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105\" @click=${this.handleClose}></div>\n\n\t\t\t<section ${ref(this._contentDialogRef)} class=${this.classMap(dialogClasses)} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<schmancy-surface ${cursorGlow({ radius: 250, intensity: 0.1 })} rounded=${this.isMobile ? 'top' : 'all'} type=\"glass\" fill=\"all\">\n\t\t\t\t\t${this.isMobile ? this.renderDragHandle() : null}\n\t\t\t\t\t<schmancy-scroll direction=\"vertical\" hide class=\"max-h-[85dvh]\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</schmancy-scroll>\n\t\t\t\t</schmancy-surface>\n\t\t\t</section>\n\t\t`\n\t}\n\n\t/**\n\t * Static helper for confirm dialogs\n\t */\n\tstatic async confirm(options: {\n\t\ttitle?: string\n\t\tsubtitle?: string\n\t\tmessage?: string\n\t\tconfirmText?: string\n\t\tcancelText?: string\n\t\tvariant?: 'default' | 'danger'\n\t\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\t\twidth?: string\n\t}): Promise<boolean> {\n\t\tlet dialog = document.querySelector('schmancy-dialog[data-static-confirm]') as SchmancyDialog\n\n\t\tif (!dialog) {\n\t\t\tdialog = document.createElement('schmancy-dialog') as SchmancyDialog\n\t\t\tdialog.setAttribute('data-static-confirm', '')\n\t\t\tdocument.body.appendChild(dialog)\n\t\t}\n\n\t\t// Set options\n\t\tdialog.title = options.title\n\t\tdialog.subtitle = options.subtitle\n\t\tdialog.message = options.message\n\t\tdialog.confirmText = options.confirmText ?? 'Confirm'\n\t\tdialog.cancelText = options.cancelText ?? 'Cancel'\n\t\tdialog.variant = options.variant ?? 'default'\n\t\tif (options.width) dialog.style.setProperty('--dialog-width', options.width)\n\n\t\treturn dialog.show(options.position)\n\t}\n\n\t/**\n\t * Simple shorthand - just pass message and optionally an event\n\t */\n\tstatic async ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n}\n\n// Alias for backward compatibility\nexport { SchmancyDialog as ConfirmDialog }\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-dialog': SchmancyDialog\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;AA2DA,IAAa,KAA8D,MAC1E,cAA8B,EAAA;CAAA,YAAA,GAAA,GAAA;AAAA,QAAA,GAAA,EAAA,EAAA,KAAA,WACF;GAAE,GAAG;GAAG,GAAG;GAAA,EAAA,KAAA,WAAA,CAC3B,GAAA,KAAA,aACE,GAAA,KAAA,aAOiB,IAAI,GAAA,EAAA,KAAA,qBAGW,MAAA,KAAA,gBACN,EAAA,EAAA,KAAA,YAAA,CAGnB,GAAA,KAAA,yBAAA;AAInB,OAAA;AACC,WAAO,KAAK,iBAAA;WAAA;AAEZ;;MAAA;;CAOF,cAAA;AACC,SAAO,KAAK;;CAMb,mBAAA;AACC,SAAO;;CAMR,qBAAA;AACC,SAAO;;CAMR,uBAAA;AACC,SAAO;;CAGR,oBAAA;AACC,QAAM,mBAAA,EACN,KAAK,qBAAA;;CAMN,sBAAA;AACC,IAAU,QAAQ,SAAA,CAChB,KACA,QAAU,OAAO,aA/GI,IAAA,EAgHrB,GAAA,EACA,QAAa,KAAK,aAAa,SAAA,CAAA,EAC/B,GAAI,MAAA;AACH,OAAI,KAAK,aAAa,GAAU;AAC/B,SAAK,WAAW,GAChB,KAAK,eAAA;IACL,IAAM,IAAS,KAAK,kBAAA;AAChB,UACC,KACH,KAAK,uBAAuB,EAAA,EAC5B,KAAK,kBAAkB,EAAA,KAEvB,KAAK,WAAW,MAAA,EAChB,KAAK,kBAAA;;IAAA,EAKT,EAAU,KAAK,cAAA,CAAA,CAEf,WAAA;;CAMH,kBAA0B,GAAA;AAEzB,OAAK,WAAW,MAAA;EAEhB,IAAI,IAAa,GACb,IAAA,CAAa,GACb,IAAW,GAET,IAAa,KAAK,sBAAA;AAyExB,IAtEoB,EAFD,KAAc,GAEqB,cAAc,EAAE,SAAA,CAAS,GAAA,CAAA,CAAQ,KACtF,GAAI,MAAA;GACH,IAAM,IAAQ,EAAE,QAAQ,IAClB,IAAO,EAAO,uBAAA;AACL,KAAM,UAAU,EAAK,MAGvB,MAAA,CAAO,MAEpB,IAAA,CAAa,GACb,IAAa,EAAM,SACnB,IAAW,GACX,KAAK,aAAa,GAGlB,EAAO,MAAM,aAAa,QAC1B,EAAO,MAAM,aAAa;IAAA,CAAA,EAIT,EAAsB,GAAQ,aAAa,EAAE,SAAA,CAAS,GAAA,CAAA,CAAS,KACjF,QAAa,EAAA,EACb,GAAI,MAAA;GAEH,IAAM,IADQ,EAAE,QAAQ,GACH,UAAU;AAI9B,OADG,IAAS,IACQ,KAAT,IAEA,GAGZ,KAAK,aAAa,KAAK,IAAI,GAAG,EAAA,EAG9B,EAAO,MAAM,YAAY,cAAc,EAAA,MAEvC,EAAE,gBAAA;IAAA,CAAA,EAIc,EACjB,EAAsB,GAAQ,YAAY,EAAE,SAAA,CAAS,GAAA,CAAA,EACrD,EAAsB,GAAQ,eAAe,EAAE,SAAA,CAAS,GAAA,CAAA,CAAA,CACvD,KACD,QAAa,EAAA,EACb,QAAA;AACC,OAAA,CAAa,GAGb,EAAO,MAAM,aAAa,gDAC1B,EAAO,MAAM,aAAa;GAE1B,IAAM,IAAe,EAAO,uBAAA,CAAwB,QAC9C,IAAY,KAAK,IAAI,KAAoB,MAAf,EAAA;AAE5B,QAAK,aAAa,KAErB,EAAO,MAAM,YAAY,oBACzB,KAAK,KAAA,CAAK,EAAA,KAGV,EAAO,MAAM,YAAY,iBACzB,KAAK,aAAa;IAAA,CAAA,CAAA,CAOnB,KAAK,EAAU,EAAM,KAAK,YAAY,KAAK,cAAA,CAAA,CAAA,CAC3C,WAAA;;CAMH,uBAA+B,GAAA;AAC1B,EAEH,KAAK,uBADL,KAAK,mBAAA,EACA,KAAoB,IAG1B,OAAO,OAAO,EAAO,OAAO;GAC3B,UAAU;GACV,MAAM;GACN,KAAK;GACL,WAAW;GACX,UAAU;GAAA,CAAA;;CAOZ,MAAA,KAAW,GAAA;EAQV,IAAI,GAAW;AAEf,MATI,AAEH,KAAK,uBADL,KAAK,mBAAA,EACA,KAAoB,IAG1B,KAAK,WAAW,OAAO,aA3PA,KA+PlB,EAAA,KAGM,aAAa,EACvB,KAAI,EAAgB,SACpB,IAAI,EAAgB;WACV,aAAa,KAAmB,EAAgB,QAAQ,OAClE,KAAI,EAAgB,QAAQ,GAAG,SAC/B,IAAI,EAAgB,QAAQ,GAAG;OACzB;GACN,IAAM,IAAM;AACZ,OAAI,EAAI,GACR,IAAI,EAAI;;MAXR,KAAI,OAAO,aAAa,GACxB,IAAI,OAAO,cAAc;AAa1B,OAAK,WAAW;GAAE,GAAA;GAAG,GAAA;GAAA,EAErB,KAAK,mBAAmB,EACvB,6BAA6B,IAAI,QAAQ,GAAG,GAAG,GAAG,EAAA,EAAA,EAGnD,KAAK,eAAA,EAAA,MACC,KAAK,gBAEX,KAAK,aAAa,UAAU,GAAA,EAC5B,KAAK,iBAAiB,OAAO,IAAI,OAAA,EAAA,MAC3B,KAAK,gBAGX,KAAK,qBAAqB,SAAS;EACnC,IAAM,IAAS,KAAK;AACpB,MAAI,GAAQ;AACX,QAAK,gBAAgB,EAAA;AACrB,QAAK,IAAI,IAAI,GAAG,IAAI,EAAO,SAAS,QAAQ,KAAK;IAChD,IAAM,IAAU,EAAO,SAAS;AAC5B,UAAY,QAAQ,WAAW,MAClC,EAAQ,QAAA,CAAQ,GAChB,KAAK,cAAc,KAAK,EAAA;;;AAM3B,IAAyB,UAAU,UAAA,CACjC,KACA,GAAO,MAAK,EAAE,QAAQ,SAAR,EACd,GAAI,MAAA;AACH,KAAE,gBAAA,EACF,KAAK,KAAA,CAAK,EAAA;IAAA,EAEX,EAAU,EAAM,KAAK,YAAY,KAAK,cAAA,CAAA,CAAA,CAEtC,WAAA;EAEF,IAAM,IAAS,KAAK,kBAAA,EAGd,IA7SD,OAAO,aARW,OAQsB,KAAM;AAsUnD,SAAA,CAvBE,KAAK,YACN,MACC,EAAO,eAAe,OAAO,cAAc,KAC3C,EAAO,cAAc,OAAO,aAAa,OAE1C,KAAK,WAAA,CAAW,GAChB,KAAK,eAAA,EAAA,MACC,KAAK,iBAGR,KAAK,WACJ,MACH,KAAK,uBAAuB,EAAA,EAC5B,KAAK,kBAAkB,EAAA,IAGxB,KAAK,kBAAA,EAGN,KAAK,YAAA,CAAY,GAAA,MACX,KAAK,WAAA,EACX,KAAK,YAAA,CAAY,GAEV,IAAI,SAAiB,MAAA;AAC3B,QAAK,iBAAiB;IAAA;;CAOxB,MAAA,YAAc;EACb,IAAM,IAAS,KAAK,kBAAA,EACd,IAAW,KAAK,oBAAA;AAEtB,MAAI,EAAe,MAGlB,QAFI,MAAU,EAAS,MAAM,UAAU,MAAA,MACnC,MAAQ,EAAO,MAAM,UAAU;AAUpC,MANA,GAAU,QAAQ,CAAC,EAAE,SAAS,GAAA,EAAK,EAAE,SAAS,GAAA,CAAA,EAAM;GACnD,UAAA;GACA,QAAQ;GACR,MAAM;GAAA,CAAA,EAGH,GAAQ;GACX,IAAM,IAAY,KAAK,WACpB,CACA;IAAE,SAAS;IAAG,WAAW;IAAA,EACzB;IAAE,SAAS;IAAG,WAAW;IAAA,CAAA,GAEzB,CACA;IAAE,SAAS;IAAG,WAAW;IAAA,EACzB;IAAE,SAAS;IAAG,WAAW;IAAA,CAAA;AAAA,SAGtB,EAAO,QAAQ,GAAW;IAC/B,UAAU;IACV,QAAQ;IACR,MAAM;IAAA,CAAA,CACJ;;;CAOL,MAAA,aAAc;EACb,IAAM,IAAS,KAAK,kBAAA,EACd,IAAW,KAAK,oBAAA;AAEtB,MAAI,EAAe,MAGlB,QAFI,MAAU,EAAS,MAAM,UAAU,MAAA,MACnC,MAAQ,EAAO,MAAM,UAAU;EAIpC,IAAM,IAAmC,EAAA;AAYzC,MAVI,KACH,EAAW,KACV,EAAS,QAAQ,CAAC,EAAE,SAAS,GAAA,EAAK,EAAE,SAAS,GAAA,CAAA,EAAM;GAClD,UAAA;GACA,QAAQ;GACR,MAAM;GAAA,CAAA,CACJ,SAAA,EAID,GAAQ;GACX,IAAM,IAAY,KAAK,WACpB,CACA;IAAE,SAAS;IAAG,WAAW;IAAA,EACzB;IAAE,SAAS;IAAG,WAAW;IAAA,CAAA,GAEzB,CACA;IAAE,SAAS;IAAG,WAAW;IAAA,EACzB;IAAE,SAAS;IAAG,WAAW;IAAA,CAAA;AAG5B,KAAW,KACV,EAAO,QAAQ,GAAW;IACzB,UAAA;IACA,QAAQ;IACR,MAAM;IAAA,CAAA,CACJ,SAAA;;AAAA,QAIC,QAAQ,IAAI,EAAA;;CAMnB,MAAA,KAAW,IAAA,CAAS,GAAA;AACnB,OAAK,WAAW,MAAA,EAEhB,KAAK,YAAA,CAAY,GAAA,MACX,KAAK,YAAA,EACX,KAAK,YAAA,CAAY,GAEjB,KAAK,gBAAgB,SAAA,EACrB,KAAK,iBAAiB,OAAO,OAAO,OAAA;AAGpC,OAAK,IAAM,KAAM,KAAK,cACrB,GAAG,QAAA,CAAQ;AAKZ,MAHA,KAAK,gBAAgB,EAAA,EAGjB,KAAK,oBAAoB;GAC5B,IAAM,IAAK,KAAK;AACQ,GAAA,OAAb,EAAG,SAAU,cACvB,EAAG,OAAA,EAEJ,KAAK,qBAAqB;;AAGvB,EAEH,KAAK,uBADL,KAAK,mBAAA,EACA,KAAoB,IAGtB,AAEH,KAAK,oBADL,KAAK,eAAe,EAAA,EACf,KAAiB;;CAOxB,aAAA;EAEC,IAAM,IAAiC,MAApB,OAAO,YACpB,IAAkC,MAArB,OAAO;AAE1B,SACC,KAAK,IAAI,KAAK,SAAS,IAAI,OAAO,aAAa,EAAA,GAAK,KACpD,KAAK,IAAI,KAAK,SAAS,IAAI,OAAO,cAAc,EAAA,GAAK;;CAOvD,mBAAA;EACC,IAAM,IAAS,KAAK,kBAAA;AACf,QAED,KAAK,YAAA,IAEL,KAAK,qBACR,KAAK,oBAAoB,EACxB,KAAK,kBACL,SACM,KAAK,eAAe,EAAA,EAC1B;GACC,gBAAA,CAAgB;GAChB,gBAAA,CAAgB;GAChB,eAAA,CAAe;GAAA,CAAA,EAGjB,KAAK,eAAe,EAAA;;CAOtB,MAAA,eAA6B,GAAA;AAC5B,MAAA,CAAK,KAAK,iBAAkB;EAE5B,IAAA,EAEM,GAAE,GAAA,GAAG,MAAA,MAAY,EAAgB,KAAK,kBAAkB,GAAQ;GACrE,UAAU;GACV,YAAY;IACX,EAAO,EAAA;IACP,EAAc;KACb,SAPa;KAQb,mBAAmB;MAClB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAAA;KAAA,CAAA;IAGF,EAAM,EAAE,SAnBM,IAAA,CAAA;IAoBd,EAAK;KACJ,SArBa;KAsBb,MAAA,EAAM,gBAAE,GAAA,UAAgB,KAAA;AACvB,QAAS,SAAS,MAAM,WAAW,GAAG,EAAA;;KAAA,CAAA;IAAA;GAAA,CAAA;AAM1C,SAAO,OAAO,EAAO,OAAO;GAC3B,UAAU;GACV,MAAM,GAAG,KAAK,MAAM,EAAA,CAAA;GACpB,KAAK,GAAG,KAAK,MAAM,EAAA,CAAA;GACnB,WAAW;GAAA,CAAA;;CAIb,uBAAA;AACC,OAAK,WAAW,MAAA,EACZ,AAEH,KAAK,uBADL,KAAK,mBAAA,EACA,KAAoB,IAE1B,MAAM,sBAAA;;GCthBF,IAAA,cAA6B,EACnC,EAAY,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;iCAiCyC,GAAA,KAAA,WAAA,KAKG,GAAA,KAAA,UAAA,KAKD,GAAA,KAAA,cAAA,KAK+B,GAAA,KAAA,aAAA,KAKF,GAAA,KAAA,UAK3B,WAAA,KAAA,cAAA,CAKU,GAAA,KAAA,oBAWxB,GAAA,EAAA,KAAA,oBAKA,GAAA,EAAA,KAAA,eAKL,GAAA,EAAA,KAAA,iBAKE,GAAA,EAAA,KAAA,UAKhB,mBAAmB,KAAK,QAAA,CAAS,SAAS,GAAA,CAAI,MAAM,GAAG,GAAA;;CAClF,IAAA,WAAY;AAAa,SAAO,GAAG,KAAK,QAAA;;CACxC,IAAA,UAAY;AAAY,SAAO,GAAG,KAAK,QAAA;;CAOvC,mBAAA;AAEC,SAAI,KAAK,kBAAkB,QAAc,KAAK,kBAAkB,QAEzD,KAAK,kBAAkB,SAAS;;CAMxC,qBAAA;AACC,SAAO,KAAK,aAAa,SAAS;;CAMnC,uBAAA;AACC,SAAO,KAAK,eAAe,SAAS;;CAMrC,IAAA,gBAAY;AACX,SAAA,CAAI,KAAK,eAAA,EAAA,CACC,KAAK,aAAa,MAAA,IAAA,CAAU,KAAK,YAAY,MAAA;;CAMxD,oBAAA;AACC,QAAM,mBAAA,EAGN,EAAuC,QAAQ,EAAA,CAC7C,KACA,GAAI,MAAA;AACC,KAAE,OAAO,QAAQ,KAAK,OAAK,KAAK,kBAAA;IAAA,EAErC,EAAU,KAAK,cAAA,CAAA,CAEf,WAAA;;CAMH,mBAAA;AACC,OAAK,cACJ,IAAI,YAAY,GAAiB;GAChC,QAAQ,EAAE,QAAQ,MAAA;GAClB,SAAA,CAAS;GACT,UAAA,CAAU;GAAA,CAAA,CAAA;;CAQb,gBAAA;AACC,OAAK,KAAA,CAAK,EAAA,EACV,KAAK,cACJ,IAAI,YAAY,WAAW;GAC1B,SAAA,CAAS;GACT,UAAA,CAAU;GAAA,CAAA,CAAA;;CAQb,cAAA;AACK,OAAK,aAAA,KACT,KAAK,KAAA,CAAK,EAAA,EACV,KAAK,cACJ,IAAI,YAAY,KAAK,gBAAgB,WAAW,SAAS;GACxD,SAAA,CAAS;GACT,UAAA,CAAU;GAAA,CAAA,CAAA;;CAQb,mBAAA;AACC,SAAO,CAAI;UACH,EAAI,KAAK,eAAA,CAAA;;;;;CAMlB,SAAA;EACC,IAAM,IAAa,KAAK,YAAA,EAClB,IAAmB,KAAK,sBAAsB,SAAS,GAgBvD,IAAuB;GAC5B,QAAA,CAAQ;GACR,OAAA,CAAO;GACP,2BAAA,CAA2B;GAC3B,4BAAA,CAA4B;GAC5B,iBAAA,CAAiB;GACjB,mBAAA,CAAmB;GACnB,WAAW;GACX,YAAY;GACZ,oBAAoB;GACpB,oBAAoB;GAAA,EAGf,IAAgB,KAAK,WA1BC;GAC3B,QAAA,CAAQ;GACR,OAAA,CAAO;GACP,aAAA,CAAa;GACb,YAAA,CAAY;GACZ,UAAA,CAAU;GACV,iBAAA,CAAiB;GACjB,mBAAA,CAAmB;GAEnB,oCAAA,CAAoC;GAAA,GAiBuB,GAGtD,IAAyB,KAAK,WACjC,uCACA;AAGH,MAAI,KAAK,eAAe;GACvB,IAAM,IAAA,CAAA,CAAa,KAAK,OAAO,MAAA,EACzB,IAAA,CAAA,CAAgB,KAAK,UAAU,MAAA,EAC/B,IAAA,CAAA,CAAe,KAAK,SAAS,MAAA,EAC7B,IAAc,CAAC,KAAe,KAAK,UAAU,QAAQ,KAAc,KAAK,UAAU,OAAA,CACtF,OAAO,QAAA,CACP,KAAK,IAAA,IAAQ;AACf,UAAO,CAAI;WACH,EAAI,KAAK,aAAA,CAAA,uHAAqI,KAAK,YAAA;;;OAGvJ,EAAI,KAAK,kBAAA,CAAA;aACH,KAAK,SAAS,EAAA,CAAA;;;uBAGJ,IAAW,KAAK,WAAW,EAAA;wBAC1B,KAAe,EAAA;;;QAG/B,EAAW;IAAE,QAAQ;IAAK,WAAW;IAAA,CAAA,CAAA;gBAC7B,KAAK,WAAW,QAAQ,MAAA;;;;;QAKhC,KAAK,WAAW,KAAK,kBAAA,GAAqB,KAAA;;gCAElB,KAAK,cAAA;UAC3B,EACD,SACM,CAAI;oCACiB,KAAK,SAAA,wCAAiD,KAAK,MAAA;YACnF,EACD,SACM,CAAI;uCACkB,KAAK,QAAA;eAC7B,KAAK,SAAA;;;;UAMV,IACC,CAAI,yDACJ,EACA,SACM,CAAI,4BAA4B,KAAK,QAAA,iCAAyC,KAAK,QAAA,wBAAA,CAAA;qBAE/E,EAAA;;;mBAGF,KAAK,YAAA;kBACN,KAAK,WAAW,WAAW,GAAA;;YAEjC,KAAK,WAAA;;;;;kBAKC,KAAK,WAAW,WAAW,GAAA;;YAEjC,KAAK,YAAA;;;;;;;;;AAWf,SAAO,CAAI;UACH,EAAI,KAAK,aAAA,CAAA,uHAAqI,KAAK,YAAA;;cAE/I,EAAI,KAAK,kBAAA,CAAA,SAA4B,KAAK,SAAS,EAAA,CAAA;wBACzC,EAAW;GAAE,QAAQ;GAAK,WAAW;GAAA,CAAA,CAAA,WAAkB,KAAK,WAAW,QAAQ,MAAA;OAChG,KAAK,WAAW,KAAK,kBAAA,GAAqB,KAAA;;;;;;;;CAYhD,aAAA,QAAqB,GAAA;EAUpB,IAAI,IAAS,SAAS,cAAc,uCAAA;AAiBpC,SAfK,MACJ,IAAS,SAAS,cAAc,kBAAA,EAChC,EAAO,aAAa,uBAAuB,GAAA,EAC3C,SAAS,KAAK,YAAY,EAAA,GAI3B,EAAO,QAAQ,EAAQ,OACvB,EAAO,WAAW,EAAQ,UAC1B,EAAO,UAAU,EAAQ,SACzB,EAAO,cAAc,EAAQ,eAAe,WAC5C,EAAO,aAAa,EAAQ,cAAc,UAC1C,EAAO,UAAU,EAAQ,WAAW,WAChC,EAAQ,SAAO,EAAO,MAAM,YAAY,kBAAkB,EAAQ,MAAA,EAE/D,EAAO,KAAK,EAAQ,SAAA;;CAM5B,aAAA,IAAiB,GAAiB,GAAA;AACjC,SAAO,KAAK,QAAQ;GACnB,SAAA;GACA,UAAU;GAAA,CAAA;;;AAAA,EAAA,CAhVX,EAAS;CAAE,MAAM;CAAQ,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,OAAA,KAAA,EAAA,EAAA,EAAA,CAKzC,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,SAAA,KAAA,EAAA,EAAA,EAAA,CAK1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAK1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAK1B,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAA,CAAA,CAAA,EAAiB,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAKrD,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAA,CAAA,CAAA,EAAgB,EAAA,WAAA,cAAA,KAAA,EAAA,EAAA,EAAA,CAKpD,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAK1B,EAAS;CAAE,MAAM;CAAS,WAAW;CAAA,CAAA,CAAA,EAAiB,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAKtD,EAAsB;CAAE,MAAM;CAAW,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,wBAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAtE1D,EAAc,kBAAA,CAAA,EAAkB,EAAA;AAAA,SAAA,KAAA,SAAA,KAAA,eAAA,KAAA,gBAAA,KAAA,YAAA,KAAA"}
|