@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
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { SchmancyElement } from '@mixins/index'
|
|
2
|
-
import { css, html } from 'lit'
|
|
3
|
-
import { customElement, property, state } from 'lit/decorators.js'
|
|
4
|
-
import { timer } from 'rxjs'
|
|
5
|
-
import { take } from 'rxjs/operators'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @element schmancy-code-preview
|
|
9
|
-
* A component that shows code and its rendered preview side by side
|
|
10
|
-
* Takes the content as a slot and displays both the source and rendered result
|
|
11
|
-
*/
|
|
12
|
-
@customElement('schmancy-code-preview')
|
|
13
|
-
export class SchmancyCodePreview extends SchmancyElement {
|
|
14
|
-
static styles = [
|
|
15
|
-
css`:host{
|
|
16
|
-
display:block;
|
|
17
|
-
overflow:hidden;
|
|
18
|
-
position:relative;
|
|
19
|
-
inset:0;
|
|
20
|
-
}`,
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Programming language for syntax highlighting
|
|
25
|
-
*/
|
|
26
|
-
@property({ type: String })
|
|
27
|
-
language: string = 'html'
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Show code on top or side-by-side
|
|
31
|
-
*/
|
|
32
|
-
@property({ type: String })
|
|
33
|
-
layout: 'vertical' | 'horizontal' = 'vertical'
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Whether to render/execute the code in preview section
|
|
37
|
-
* When false, only shows the code without rendering
|
|
38
|
-
*/
|
|
39
|
-
@property({ type: Boolean })
|
|
40
|
-
preview: boolean = true
|
|
41
|
-
|
|
42
|
-
@state()
|
|
43
|
-
private slotContent: string = ''
|
|
44
|
-
|
|
45
|
-
connectedCallback() {
|
|
46
|
-
super.connectedCallback()
|
|
47
|
-
// Capture the slot content as HTML string
|
|
48
|
-
timer(0).pipe(take(1)).subscribe(() => {
|
|
49
|
-
const slot = this.shadowRoot?.querySelector('slot')
|
|
50
|
-
if (slot) {
|
|
51
|
-
const nodes = slot.assignedNodes({ flatten: true })
|
|
52
|
-
const htmlStrings = nodes.map(node => {
|
|
53
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
54
|
-
return (node as HTMLElement).outerHTML
|
|
55
|
-
} else if (node.nodeType === Node.TEXT_NODE) {
|
|
56
|
-
return node.textContent || ''
|
|
57
|
-
}
|
|
58
|
-
return ''
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
// Clean up the HTML string
|
|
62
|
-
const rawContent = htmlStrings.join('')
|
|
63
|
-
|
|
64
|
-
// Find the minimum indentation (excluding empty lines)
|
|
65
|
-
const lines = rawContent.split('\n')
|
|
66
|
-
const minIndent = lines
|
|
67
|
-
.filter(line => line.trim().length > 0)
|
|
68
|
-
.reduce((min, line) => {
|
|
69
|
-
const indent = line.match(/^(\s*)/)?.[1].length || 0
|
|
70
|
-
return Math.min(min, indent)
|
|
71
|
-
}, Infinity)
|
|
72
|
-
|
|
73
|
-
// Remove the minimum indentation from all lines
|
|
74
|
-
this.slotContent = lines
|
|
75
|
-
.map(line => line.slice(minIndent))
|
|
76
|
-
.join('\n')
|
|
77
|
-
.trim()
|
|
78
|
-
}
|
|
79
|
-
})
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
render() {
|
|
83
|
-
const containerClass = this.layout === 'horizontal'
|
|
84
|
-
? 'grid grid-cols-1 lg:grid-cols-2 gap-0'
|
|
85
|
-
: 'flex flex-col'
|
|
86
|
-
|
|
87
|
-
const showPreview = this.preview && this.language.toLowerCase() === 'html'
|
|
88
|
-
|
|
89
|
-
return html`
|
|
90
|
-
<schmancy-surface class="rounded-lg overflow-hidden">
|
|
91
|
-
<div class="${showPreview ? containerClass : ''}">
|
|
92
|
-
<!-- Code section with proper overflow handling -->
|
|
93
|
-
<div class="min-w-0 overflow-hidden">
|
|
94
|
-
<schmancy-code
|
|
95
|
-
language="${this.language}"
|
|
96
|
-
.code="${this.slotContent}"
|
|
97
|
-
?copyButton="${true}"
|
|
98
|
-
class="block w-full"
|
|
99
|
-
></schmancy-code>
|
|
100
|
-
</div>
|
|
101
|
-
|
|
102
|
-
<!-- Preview section (only visible for HTML and when preview is enabled) -->
|
|
103
|
-
${showPreview ? html`
|
|
104
|
-
<div class="min-w-0 overflow-auto">
|
|
105
|
-
<schmancy-surface type="solid" class="p-2 h-full">
|
|
106
|
-
<slot></slot>
|
|
107
|
-
</schmancy-surface>
|
|
108
|
-
</div>
|
|
109
|
-
` : html`
|
|
110
|
-
<!-- Hidden slot to capture content -->
|
|
111
|
-
<div class="hidden">
|
|
112
|
-
<slot></slot>
|
|
113
|
-
</div>
|
|
114
|
-
`}
|
|
115
|
-
</div>
|
|
116
|
-
</schmancy-surface>
|
|
117
|
-
`
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
declare global {
|
|
122
|
-
interface HTMLElementTagNameMap {
|
|
123
|
-
'schmancy-code-preview': SchmancyCodePreview
|
|
124
|
-
}
|
|
125
|
-
}
|
|
@@ -1,576 +0,0 @@
|
|
|
1
|
-
import { autoPlacement, autoUpdate, computePosition, offset, shift, size } from '@floating-ui/dom'
|
|
2
|
-
import { LitElement } from 'lit'
|
|
3
|
-
import { distinctUntilChanged, filter, fromEvent, map, merge, Subject, takeUntil, tap } from 'rxjs'
|
|
4
|
-
import type { Constructor } from '../../mixins/constructor'
|
|
5
|
-
import type { IBaseMixin } from '../../mixins/baseElement'
|
|
6
|
-
import {
|
|
7
|
-
BLACKBIRD_EASING,
|
|
8
|
-
DURATION_ENTER,
|
|
9
|
-
DURATION_EXIT,
|
|
10
|
-
DURATION_BACKDROP,
|
|
11
|
-
EASE_OUT,
|
|
12
|
-
EASE_IN,
|
|
13
|
-
} from '../utils/animation'
|
|
14
|
-
import { reducedMotion$ } from '../directives/reduced-motion'
|
|
15
|
-
|
|
16
|
-
// Mobile breakpoint - matches Tailwind's sm breakpoint
|
|
17
|
-
const MOBILE_BREAKPOINT = 640
|
|
18
|
-
|
|
19
|
-
// Tablet breakpoint
|
|
20
|
-
const TABLET_BREAKPOINT = 1024
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Fraction of viewport a dialog can occupy before converting to bottom sheet.
|
|
24
|
-
* Tablet (640–1024px): 60% — tighter screens benefit from bottom sheet sooner.
|
|
25
|
-
* Desktop (>1024px): 80% — plenty of room, keep floating longer.
|
|
26
|
-
*/
|
|
27
|
-
function largeContentThreshold(): number {
|
|
28
|
-
return window.innerWidth < TABLET_BREAKPOINT ? 0.6 : 0.8
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface DialogPosition {
|
|
32
|
-
x: number
|
|
33
|
-
y: number
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface VirtualReference {
|
|
37
|
-
getBoundingClientRect: () => DOMRect
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Interface for the DialogBase mixin methods
|
|
42
|
-
*/
|
|
43
|
-
export interface IDialogBaseMixin {
|
|
44
|
-
position: DialogPosition
|
|
45
|
-
isMobile: boolean
|
|
46
|
-
dragOffset: number
|
|
47
|
-
show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean>
|
|
48
|
-
hide(result?: boolean): Promise<void>
|
|
49
|
-
isCentered(): boolean
|
|
50
|
-
isAnimating(): boolean
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Dialog mixin with smart positioning using Floating UI.
|
|
55
|
-
*
|
|
56
|
-
* On mobile (< 640px), automatically switches to bottom sheet mode
|
|
57
|
-
* with swipe-to-dismiss gesture. On tablet/desktop, if content exceeds
|
|
58
|
-
* a viewport-dependent threshold, also opens as bottom sheet.
|
|
59
|
-
*/
|
|
60
|
-
export const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(superClass: T) => {
|
|
61
|
-
class DialogBaseClass extends superClass {
|
|
62
|
-
position: DialogPosition = { x: 0, y: 0 }
|
|
63
|
-
isMobile = false
|
|
64
|
-
dragOffset = 0
|
|
65
|
-
|
|
66
|
-
protected resolvePromise?: (value: boolean) => void
|
|
67
|
-
protected cleanupAutoUpdate?: () => void
|
|
68
|
-
protected virtualReference?: VirtualReference
|
|
69
|
-
|
|
70
|
-
// Subject to signal when to stop swipe gesture stream
|
|
71
|
-
private readonly stopSwipe$ = new Subject<void>()
|
|
72
|
-
|
|
73
|
-
// Focus trap state
|
|
74
|
-
private lastFocusedElement: Element | null = null
|
|
75
|
-
private inertSiblings: HTMLElement[] = []
|
|
76
|
-
|
|
77
|
-
// Animation guard
|
|
78
|
-
private animating = false
|
|
79
|
-
|
|
80
|
-
/** ElementInternals — used for broadcasting `:state(open)` to consumers. */
|
|
81
|
-
protected dialogInternals: ElementInternals | undefined = (() => {
|
|
82
|
-
try {
|
|
83
|
-
return this.attachInternals()
|
|
84
|
-
} catch {
|
|
85
|
-
return undefined
|
|
86
|
-
}
|
|
87
|
-
})()
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Check if the dialog is currently animating
|
|
91
|
-
*/
|
|
92
|
-
isAnimating(): boolean {
|
|
93
|
-
return this.animating
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Override in subclass to return the dialog element
|
|
98
|
-
*/
|
|
99
|
-
protected getDialogElement(): HTMLElement | null {
|
|
100
|
-
return null
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Override in subclass to return the backdrop element for animations
|
|
105
|
-
*/
|
|
106
|
-
protected getBackdropElement(): HTMLElement | null {
|
|
107
|
-
return null
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Override in subclass to return the drag handle element for swipe gestures
|
|
112
|
-
*/
|
|
113
|
-
protected getDragHandleElement(): HTMLElement | null {
|
|
114
|
-
return null
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
connectedCallback(): void {
|
|
118
|
-
super.connectedCallback()
|
|
119
|
-
this.setupResizeListener()
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Listen for resize to switch between mobile/desktop modes
|
|
124
|
-
*/
|
|
125
|
-
private setupResizeListener(): void {
|
|
126
|
-
fromEvent(window, 'resize')
|
|
127
|
-
.pipe(
|
|
128
|
-
map(() => window.innerWidth < MOBILE_BREAKPOINT),
|
|
129
|
-
distinctUntilChanged(),
|
|
130
|
-
filter(() => this.hasAttribute('active')),
|
|
131
|
-
tap(isMobile => {
|
|
132
|
-
if (this.isMobile !== isMobile) {
|
|
133
|
-
this.isMobile = isMobile
|
|
134
|
-
this.requestUpdate()
|
|
135
|
-
const dialog = this.getDialogElement()
|
|
136
|
-
if (dialog) {
|
|
137
|
-
if (isMobile) {
|
|
138
|
-
this.applyBottomSheetStyles(dialog)
|
|
139
|
-
this.setupSwipeGesture(dialog)
|
|
140
|
-
} else {
|
|
141
|
-
this.stopSwipe$.next()
|
|
142
|
-
this.setupPositioning()
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}),
|
|
147
|
-
takeUntil(this.disconnecting),
|
|
148
|
-
)
|
|
149
|
-
.subscribe()
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Setup RxJS-based swipe gesture for dialog
|
|
154
|
-
*/
|
|
155
|
-
private setupSwipeGesture(dialog: HTMLElement): void {
|
|
156
|
-
// Stop any existing swipe gesture
|
|
157
|
-
this.stopSwipe$.next()
|
|
158
|
-
|
|
159
|
-
let dragStartY = 0
|
|
160
|
-
let isDragging = false
|
|
161
|
-
let currentY = 0
|
|
162
|
-
|
|
163
|
-
const dragHandle = this.getDragHandleElement()
|
|
164
|
-
const dragTarget = dragHandle || dialog
|
|
165
|
-
|
|
166
|
-
const touchStart$ = fromEvent<TouchEvent>(dragTarget, 'touchstart', { passive: true }).pipe(
|
|
167
|
-
tap(e => {
|
|
168
|
-
const touch = e.touches[0]
|
|
169
|
-
const rect = dialog.getBoundingClientRect()
|
|
170
|
-
const touchY = touch.clientY - rect.top
|
|
171
|
-
|
|
172
|
-
// Only allow drag from top 80px or drag handle
|
|
173
|
-
if (touchY > 80 && !dragHandle) return
|
|
174
|
-
|
|
175
|
-
isDragging = true
|
|
176
|
-
dragStartY = touch.clientY
|
|
177
|
-
currentY = 0
|
|
178
|
-
this.dragOffset = 0
|
|
179
|
-
|
|
180
|
-
// Disable transitions for immediate feedback
|
|
181
|
-
dialog.style.transition = 'none'
|
|
182
|
-
dialog.style.willChange = 'transform'
|
|
183
|
-
}),
|
|
184
|
-
)
|
|
185
|
-
|
|
186
|
-
const touchMove$ = fromEvent<TouchEvent>(dialog, 'touchmove', { passive: false }).pipe(
|
|
187
|
-
filter(() => isDragging),
|
|
188
|
-
tap(e => {
|
|
189
|
-
const touch = e.touches[0]
|
|
190
|
-
const deltaY = touch.clientY - dragStartY
|
|
191
|
-
|
|
192
|
-
// Rubber-band effect for upward drag
|
|
193
|
-
if (deltaY < 0) {
|
|
194
|
-
currentY = deltaY * 0.2
|
|
195
|
-
} else {
|
|
196
|
-
currentY = deltaY
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
this.dragOffset = Math.max(0, deltaY)
|
|
200
|
-
|
|
201
|
-
// Direct DOM update - 1:1 tracking
|
|
202
|
-
dialog.style.transform = `translateY(${currentY}px)`
|
|
203
|
-
|
|
204
|
-
e.preventDefault()
|
|
205
|
-
}),
|
|
206
|
-
)
|
|
207
|
-
|
|
208
|
-
const touchEnd$ = merge(
|
|
209
|
-
fromEvent<TouchEvent>(dialog, 'touchend', { passive: true }),
|
|
210
|
-
fromEvent<TouchEvent>(dialog, 'touchcancel', { passive: true }),
|
|
211
|
-
).pipe(
|
|
212
|
-
filter(() => isDragging),
|
|
213
|
-
tap(() => {
|
|
214
|
-
isDragging = false
|
|
215
|
-
|
|
216
|
-
// Re-enable transitions for snap animation
|
|
217
|
-
dialog.style.transition = 'transform 0.3s cubic-bezier(0.16, 1, 0.3, 1)'
|
|
218
|
-
dialog.style.willChange = ''
|
|
219
|
-
|
|
220
|
-
const dialogHeight = dialog.getBoundingClientRect().height
|
|
221
|
-
const threshold = Math.min(100, dialogHeight * 0.25)
|
|
222
|
-
|
|
223
|
-
if (this.dragOffset > threshold) {
|
|
224
|
-
// Dismiss - animate out
|
|
225
|
-
dialog.style.transform = 'translateY(100%)'
|
|
226
|
-
this.hide(false)
|
|
227
|
-
} else {
|
|
228
|
-
// Snap back
|
|
229
|
-
dialog.style.transform = 'translateY(0)'
|
|
230
|
-
this.dragOffset = 0
|
|
231
|
-
}
|
|
232
|
-
}),
|
|
233
|
-
)
|
|
234
|
-
|
|
235
|
-
// Merge all touch streams and subscribe
|
|
236
|
-
merge(touchStart$, touchMove$, touchEnd$)
|
|
237
|
-
.pipe(takeUntil(merge(this.stopSwipe$, this.disconnecting)))
|
|
238
|
-
.subscribe()
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Apply bottom sheet styles for mobile
|
|
243
|
-
*/
|
|
244
|
-
private applyBottomSheetStyles(dialog: HTMLElement): void {
|
|
245
|
-
if (this.cleanupAutoUpdate) {
|
|
246
|
-
this.cleanupAutoUpdate()
|
|
247
|
-
this.cleanupAutoUpdate = undefined
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
Object.assign(dialog.style, {
|
|
251
|
-
position: '',
|
|
252
|
-
left: '',
|
|
253
|
-
top: '',
|
|
254
|
-
transform: '',
|
|
255
|
-
maxWidth: '',
|
|
256
|
-
})
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Show the dialog at a specific position
|
|
261
|
-
*/
|
|
262
|
-
async show(positionOrEvent?: DialogPosition | MouseEvent | TouchEvent): Promise<boolean> {
|
|
263
|
-
if (this.cleanupAutoUpdate) {
|
|
264
|
-
this.cleanupAutoUpdate()
|
|
265
|
-
this.cleanupAutoUpdate = undefined
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
this.isMobile = window.innerWidth < MOBILE_BREAKPOINT
|
|
269
|
-
|
|
270
|
-
let x: number, y: number
|
|
271
|
-
|
|
272
|
-
if (!positionOrEvent) {
|
|
273
|
-
x = window.innerWidth / 2
|
|
274
|
-
y = window.innerHeight / 2
|
|
275
|
-
} else if ('clientX' in positionOrEvent) {
|
|
276
|
-
x = positionOrEvent.clientX
|
|
277
|
-
y = positionOrEvent.clientY
|
|
278
|
-
} else if ('touches' in positionOrEvent && positionOrEvent.touches.length) {
|
|
279
|
-
x = positionOrEvent.touches[0].clientX
|
|
280
|
-
y = positionOrEvent.touches[0].clientY
|
|
281
|
-
} else {
|
|
282
|
-
const pos = positionOrEvent as DialogPosition
|
|
283
|
-
x = pos.x
|
|
284
|
-
y = pos.y
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
this.position = { x, y }
|
|
288
|
-
|
|
289
|
-
this.virtualReference = {
|
|
290
|
-
getBoundingClientRect: () => new DOMRect(x, y, 0, 0),
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
this.requestUpdate()
|
|
294
|
-
await this.updateComplete
|
|
295
|
-
|
|
296
|
-
this.setAttribute('active', '')
|
|
297
|
-
this.dialogInternals?.states.add('open')
|
|
298
|
-
await this.updateComplete
|
|
299
|
-
|
|
300
|
-
// Save focus and set siblings to inert for focus trap
|
|
301
|
-
this.lastFocusedElement = document.activeElement
|
|
302
|
-
const parent = this.parentElement
|
|
303
|
-
if (parent) {
|
|
304
|
-
this.inertSiblings = []
|
|
305
|
-
for (let i = 0; i < parent.children.length; i++) {
|
|
306
|
-
const sibling = parent.children[i] as HTMLElement
|
|
307
|
-
if (sibling !== this && 'inert' in sibling) {
|
|
308
|
-
sibling.inert = true
|
|
309
|
-
this.inertSiblings.push(sibling)
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
// Escape key listener
|
|
315
|
-
fromEvent<KeyboardEvent>(document, 'keydown')
|
|
316
|
-
.pipe(
|
|
317
|
-
filter(e => e.key === 'Escape'),
|
|
318
|
-
tap(e => {
|
|
319
|
-
e.preventDefault()
|
|
320
|
-
this.hide(false)
|
|
321
|
-
}),
|
|
322
|
-
takeUntil(merge(this.stopSwipe$, this.disconnecting)),
|
|
323
|
-
)
|
|
324
|
-
.subscribe()
|
|
325
|
-
|
|
326
|
-
const dialog = this.getDialogElement()
|
|
327
|
-
|
|
328
|
-
// If content exceeds viewport threshold on desktop, treat as bottom sheet
|
|
329
|
-
const threshold = largeContentThreshold()
|
|
330
|
-
if (
|
|
331
|
-
!this.isMobile &&
|
|
332
|
-
dialog &&
|
|
333
|
-
(dialog.scrollHeight > window.innerHeight * threshold ||
|
|
334
|
-
dialog.scrollWidth > window.innerWidth * threshold)
|
|
335
|
-
) {
|
|
336
|
-
this.isMobile = true
|
|
337
|
-
this.requestUpdate()
|
|
338
|
-
await this.updateComplete
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
if (this.isMobile) {
|
|
342
|
-
if (dialog) {
|
|
343
|
-
this.applyBottomSheetStyles(dialog)
|
|
344
|
-
this.setupSwipeGesture(dialog)
|
|
345
|
-
}
|
|
346
|
-
} else {
|
|
347
|
-
this.setupPositioning()
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
this.animating = true
|
|
351
|
-
await this.animateIn()
|
|
352
|
-
this.animating = false
|
|
353
|
-
|
|
354
|
-
return new Promise<boolean>(resolve => {
|
|
355
|
-
this.resolvePromise = resolve
|
|
356
|
-
})
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Animate dialog entrance
|
|
361
|
-
*/
|
|
362
|
-
private async animateIn(): Promise<void> {
|
|
363
|
-
const dialog = this.getDialogElement()
|
|
364
|
-
const backdrop = this.getBackdropElement()
|
|
365
|
-
|
|
366
|
-
if (reducedMotion$.value) {
|
|
367
|
-
if (backdrop) backdrop.style.opacity = '1'
|
|
368
|
-
if (dialog) dialog.style.opacity = '1'
|
|
369
|
-
return
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
backdrop?.animate([{ opacity: 0 }, { opacity: 1 }], {
|
|
373
|
-
duration: DURATION_BACKDROP,
|
|
374
|
-
easing: EASE_OUT,
|
|
375
|
-
fill: 'forwards',
|
|
376
|
-
})
|
|
377
|
-
|
|
378
|
-
if (dialog) {
|
|
379
|
-
const animation = this.isMobile
|
|
380
|
-
? [
|
|
381
|
-
{ opacity: 0, transform: 'translateY(100%)' },
|
|
382
|
-
{ opacity: 1, transform: 'translateY(0)' },
|
|
383
|
-
]
|
|
384
|
-
: [
|
|
385
|
-
{ opacity: 0, transform: 'scale(0.92) translateY(16px)' },
|
|
386
|
-
{ opacity: 1, transform: 'scale(1) translateY(0)' },
|
|
387
|
-
]
|
|
388
|
-
|
|
389
|
-
await dialog.animate(animation, {
|
|
390
|
-
duration: DURATION_ENTER,
|
|
391
|
-
easing: BLACKBIRD_EASING,
|
|
392
|
-
fill: 'forwards',
|
|
393
|
-
}).finished
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
/**
|
|
398
|
-
* Animate dialog exit
|
|
399
|
-
*/
|
|
400
|
-
private async animateOut(): Promise<void> {
|
|
401
|
-
const dialog = this.getDialogElement()
|
|
402
|
-
const backdrop = this.getBackdropElement()
|
|
403
|
-
|
|
404
|
-
if (reducedMotion$.value) {
|
|
405
|
-
if (backdrop) backdrop.style.opacity = '0'
|
|
406
|
-
if (dialog) dialog.style.opacity = '0'
|
|
407
|
-
return
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
const animations: Promise<Animation>[] = []
|
|
411
|
-
|
|
412
|
-
if (backdrop) {
|
|
413
|
-
animations.push(
|
|
414
|
-
backdrop.animate([{ opacity: 1 }, { opacity: 0 }], {
|
|
415
|
-
duration: DURATION_EXIT,
|
|
416
|
-
easing: EASE_OUT,
|
|
417
|
-
fill: 'forwards',
|
|
418
|
-
}).finished,
|
|
419
|
-
)
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
if (dialog) {
|
|
423
|
-
const animation = this.isMobile
|
|
424
|
-
? [
|
|
425
|
-
{ opacity: 1, transform: 'translateY(0)' },
|
|
426
|
-
{ opacity: 0, transform: 'translateY(100%)' },
|
|
427
|
-
]
|
|
428
|
-
: [
|
|
429
|
-
{ opacity: 1, transform: 'scale(1) translateY(0)' },
|
|
430
|
-
{ opacity: 0, transform: 'scale(0.95) translateY(8px)' },
|
|
431
|
-
]
|
|
432
|
-
|
|
433
|
-
animations.push(
|
|
434
|
-
dialog.animate(animation, {
|
|
435
|
-
duration: DURATION_EXIT,
|
|
436
|
-
easing: EASE_IN,
|
|
437
|
-
fill: 'forwards',
|
|
438
|
-
}).finished,
|
|
439
|
-
)
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
await Promise.all(animations)
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
/**
|
|
446
|
-
* Hide the dialog
|
|
447
|
-
*/
|
|
448
|
-
async hide(result = false): Promise<void> {
|
|
449
|
-
this.stopSwipe$.next()
|
|
450
|
-
|
|
451
|
-
this.animating = true
|
|
452
|
-
await this.animateOut()
|
|
453
|
-
this.animating = false
|
|
454
|
-
|
|
455
|
-
this.removeAttribute('active')
|
|
456
|
-
this.dialogInternals?.states.delete('open')
|
|
457
|
-
|
|
458
|
-
// Restore inert siblings
|
|
459
|
-
for (const el of this.inertSiblings) {
|
|
460
|
-
el.inert = false
|
|
461
|
-
}
|
|
462
|
-
this.inertSiblings = []
|
|
463
|
-
|
|
464
|
-
// Restore focus
|
|
465
|
-
if (this.lastFocusedElement) {
|
|
466
|
-
const el = this.lastFocusedElement as HTMLElement
|
|
467
|
-
if (typeof el.focus === 'function') {
|
|
468
|
-
el.focus()
|
|
469
|
-
}
|
|
470
|
-
this.lastFocusedElement = null
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
if (this.cleanupAutoUpdate) {
|
|
474
|
-
this.cleanupAutoUpdate()
|
|
475
|
-
this.cleanupAutoUpdate = undefined
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
if (this.resolvePromise) {
|
|
479
|
-
this.resolvePromise(result)
|
|
480
|
-
this.resolvePromise = undefined
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
/**
|
|
485
|
-
* Check if position is near center (only skip Floating UI for truly centered dialogs)
|
|
486
|
-
*/
|
|
487
|
-
isCentered(): boolean {
|
|
488
|
-
// Use tight tolerance (5%) - only skip Floating UI when position is very close to center
|
|
489
|
-
const toleranceX = window.innerWidth * 0.05
|
|
490
|
-
const toleranceY = window.innerHeight * 0.05
|
|
491
|
-
|
|
492
|
-
return (
|
|
493
|
-
Math.abs(this.position.x - window.innerWidth / 2) < toleranceX &&
|
|
494
|
-
Math.abs(this.position.y - window.innerHeight / 2) < toleranceY
|
|
495
|
-
)
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
/**
|
|
499
|
-
* Setup Floating UI positioning for desktop
|
|
500
|
-
*/
|
|
501
|
-
private setupPositioning(): void {
|
|
502
|
-
const dialog = this.getDialogElement()
|
|
503
|
-
if (!dialog) return
|
|
504
|
-
|
|
505
|
-
if (this.isCentered()) return
|
|
506
|
-
|
|
507
|
-
if (this.virtualReference) {
|
|
508
|
-
this.cleanupAutoUpdate = autoUpdate(
|
|
509
|
-
this.virtualReference,
|
|
510
|
-
dialog,
|
|
511
|
-
() => this.updatePosition(dialog),
|
|
512
|
-
{
|
|
513
|
-
ancestorScroll: true,
|
|
514
|
-
ancestorResize: true,
|
|
515
|
-
elementResize: true,
|
|
516
|
-
},
|
|
517
|
-
)
|
|
518
|
-
this.updatePosition(dialog)
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
/**
|
|
523
|
-
* Update position using Floating UI
|
|
524
|
-
*/
|
|
525
|
-
private async updatePosition(dialog: HTMLElement): Promise<void> {
|
|
526
|
-
if (!this.virtualReference) return
|
|
527
|
-
|
|
528
|
-
const padding = 16
|
|
529
|
-
|
|
530
|
-
const { x, y } = await computePosition(this.virtualReference, dialog, {
|
|
531
|
-
strategy: 'fixed',
|
|
532
|
-
middleware: [
|
|
533
|
-
offset(8),
|
|
534
|
-
autoPlacement({
|
|
535
|
-
padding,
|
|
536
|
-
allowedPlacements: [
|
|
537
|
-
'top-start',
|
|
538
|
-
'top-end',
|
|
539
|
-
'bottom-start',
|
|
540
|
-
'bottom-end',
|
|
541
|
-
'left-start',
|
|
542
|
-
'left-end',
|
|
543
|
-
'right-start',
|
|
544
|
-
'right-end',
|
|
545
|
-
],
|
|
546
|
-
}),
|
|
547
|
-
shift({ padding }),
|
|
548
|
-
size({
|
|
549
|
-
padding,
|
|
550
|
-
apply({ availableWidth, elements }) {
|
|
551
|
-
elements.floating.style.maxWidth = `${availableWidth}px`
|
|
552
|
-
},
|
|
553
|
-
}),
|
|
554
|
-
],
|
|
555
|
-
})
|
|
556
|
-
|
|
557
|
-
Object.assign(dialog.style, {
|
|
558
|
-
position: 'fixed',
|
|
559
|
-
left: `${Math.round(x)}px`,
|
|
560
|
-
top: `${Math.round(y)}px`,
|
|
561
|
-
transform: 'none',
|
|
562
|
-
})
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
disconnectedCallback(): void {
|
|
566
|
-
this.stopSwipe$.next()
|
|
567
|
-
if (this.cleanupAutoUpdate) {
|
|
568
|
-
this.cleanupAutoUpdate()
|
|
569
|
-
this.cleanupAutoUpdate = undefined
|
|
570
|
-
}
|
|
571
|
-
super.disconnectedCallback()
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
return DialogBaseClass as Constructor<IDialogBaseMixin> & T
|
|
576
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// Dialog discovery event constants
|
|
2
|
-
export const DialogWhereAreYouRicky = 'are-you-there-dialog'
|
|
3
|
-
export const DialogHereMorty = 'yes-dialog-here'
|
|
4
|
-
|
|
5
|
-
// Event interfaces
|
|
6
|
-
export interface DialogWhereAreYouRickyEvent extends CustomEvent {
|
|
7
|
-
detail: {
|
|
8
|
-
uid: string
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface DialogHereMortyEvent extends CustomEvent {
|
|
13
|
-
detail: {
|
|
14
|
-
dialog: any // Will be schmancy-dialog instance
|
|
15
|
-
theme?: any // Will be schmancy-theme instance
|
|
16
|
-
}
|
|
17
|
-
}
|