@mhmo91/schmancy 0.5.35 → 0.5.36
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/ai/content-drawer.md +114 -140
- package/ai/navigation-bar.md +30 -4
- package/ai/navigation-rail.md +72 -0
- package/ai/theme.md +218 -789
- package/dist/ai/content-drawer.md +114 -140
- package/dist/ai/navigation-bar.md +30 -4
- package/dist/ai/navigation-rail.md +72 -0
- package/dist/ai/theme.md +218 -789
- package/dist/{animated-text-COvhr8E3.js → animated-text-BEAHZetl.js} +4 -3
- package/dist/{animated-text-COvhr8E3.js.map → animated-text-BEAHZetl.js.map} +1 -1
- package/dist/{animated-text-BZUrBdvN.cjs → animated-text-ChV1GUee.cjs} +2 -2
- package/dist/{animated-text-BZUrBdvN.cjs.map → animated-text-ChV1GUee.cjs.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-BHtBHWVt.js → area.component-R4KQInpP.js} +4 -3
- package/dist/{area.component-BHtBHWVt.js.map → area.component-R4KQInpP.js.map} +1 -1
- package/dist/area.component-cxxQIhCN.cjs +12 -0
- package/dist/{area.component-Ch2Eaa4i.cjs.map → area.component-cxxQIhCN.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-CenwFcT1.cjs → autocomplete-Cq_NzrBX.cjs} +2 -2
- package/dist/{autocomplete-CenwFcT1.cjs.map → autocomplete-Cq_NzrBX.cjs.map} +1 -1
- package/dist/{autocomplete-9RkU9LmA.js → autocomplete-DKYBmt2q.js} +18 -18
- package/dist/{autocomplete-9RkU9LmA.js.map → autocomplete-DKYBmt2q.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-CjjwZDsw.js → avatar-DJ7qYc6-.js} +144 -134
- package/dist/avatar-DJ7qYc6-.js.map +1 -0
- package/dist/avatar-DbUCDe1w.cjs +306 -0
- package/dist/avatar-DbUCDe1w.cjs.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/boat-BBFE1yJY.js +276 -0
- package/dist/boat-BBFE1yJY.js.map +1 -0
- package/dist/boat-BSYtwy1W.cjs +78 -0
- package/dist/boat-BSYtwy1W.cjs.map +1 -0
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-8djp_8NK.cjs → checkbox-BBJqucMb.cjs} +2 -2
- package/dist/{checkbox-8djp_8NK.cjs.map → checkbox-BBJqucMb.cjs.map} +1 -1
- package/dist/{checkbox-D6-WQeEk.js → checkbox-geD1IIHh.js} +3 -2
- package/dist/{checkbox-D6-WQeEk.js.map → checkbox-geD1IIHh.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-BFoEmN8y.cjs → code-preview-CR3U6wXD.cjs} +5 -5
- package/dist/{code-preview-BFoEmN8y.cjs.map → code-preview-CR3U6wXD.cjs.map} +1 -1
- package/dist/{code-preview-Z02-2suM.js → code-preview-D2ZpTZ7C.js} +8 -8
- package/dist/{code-preview-Z02-2suM.js.map → code-preview-D2ZpTZ7C.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/context-create-CA907mdD.cjs +2 -0
- package/dist/context-create-CA907mdD.cjs.map +1 -0
- package/dist/{context-object-BE1o2XB3.js → context-create-DCiujzV2.js} +262 -212
- package/dist/context-create-DCiujzV2.js.map +1 -0
- package/dist/{date-range-DoCtnpW6.cjs → date-range-DkSLcajW.cjs} +2 -2
- package/dist/{date-range-DoCtnpW6.cjs.map → date-range-DkSLcajW.cjs.map} +1 -1
- package/dist/{date-range-kFnTrnHN.js → date-range-NB6Q02hz.js} +141 -140
- package/dist/{date-range-kFnTrnHN.js.map → date-range-NB6Q02hz.js.map} +1 -1
- package/dist/date-range-inline-C8InUZoD.cjs +44 -0
- package/dist/{date-range-inline-DNr7C5X-.cjs.map → date-range-inline-C8InUZoD.cjs.map} +1 -1
- package/dist/{date-range-inline-BXeX6T7R.js → date-range-inline-DXBR0Ocx.js} +8 -7
- package/dist/{date-range-inline-BXeX6T7R.js.map → date-range-inline-DXBR0Ocx.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-CrdOikhP.cjs → delay-B4IPKZEn.cjs} +2 -2
- package/dist/{delay-CrdOikhP.cjs.map → delay-B4IPKZEn.cjs.map} +1 -1
- package/dist/{delay-Cz-9rZxi.js → delay-DsOC-uuq.js} +2 -2
- package/dist/{delay-Cz-9rZxi.js.map → delay-DsOC-uuq.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-CsqhGMjL.cjs → details-7pcQWJF9.cjs} +2 -2
- package/dist/{details-CsqhGMjL.cjs.map → details-7pcQWJF9.cjs.map} +1 -1
- package/dist/{details-DeBtsJlp.js → details-D6Vq36lN.js} +3 -2
- package/dist/{details-DeBtsJlp.js.map → details-D6Vq36lN.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-BzSQoM2J.cjs → dialog-content-BC--KBf7.cjs} +2 -2
- package/dist/{dialog-content-BzSQoM2J.cjs.map → dialog-content-BC--KBf7.cjs.map} +1 -1
- package/dist/{dialog-content-DTKdAF_l.js → dialog-content-XoKxxGTv.js} +4 -4
- package/dist/{dialog-content-DTKdAF_l.js.map → dialog-content-XoKxxGTv.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/discovery.cjs +2 -0
- package/dist/discovery.cjs.map +1 -0
- package/dist/discovery.js +6 -0
- package/dist/discovery.js.map +1 -0
- package/dist/discovery.service-BbYjU5x8.js +21 -0
- package/dist/discovery.service-BbYjU5x8.js.map +1 -0
- package/dist/discovery.service-BpGCuXPd.cjs +2 -0
- package/dist/discovery.service-BpGCuXPd.cjs.map +1 -0
- package/dist/divider-55yUklFI.cjs +2 -0
- package/dist/{divider-CNxOc8ep.cjs.map → divider-55yUklFI.cjs.map} +1 -1
- package/dist/{divider-7iyyEd8k.js → divider-JaB5FtmR.js} +4 -3
- package/dist/{divider-7iyyEd8k.js.map → divider-JaB5FtmR.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-De0OkNoq.cjs → dropdown-content-C2nxdAFA.cjs} +2 -2
- package/dist/{dropdown-content-De0OkNoq.cjs.map → dropdown-content-C2nxdAFA.cjs.map} +1 -1
- package/dist/{dropdown-content-_GMpqsNq.js → dropdown-content-Qzt-B1FB.js} +4 -3
- package/dist/{dropdown-content-_GMpqsNq.js.map → dropdown-content-Qzt-B1FB.js.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-DS01C3V3.cjs → email-recipients-7reIxhmF.cjs} +2 -2
- package/dist/{email-recipients-DS01C3V3.cjs.map → email-recipients-7reIxhmF.cjs.map} +1 -1
- package/dist/{email-recipients-CPZlUiRR.js → email-recipients-C3TfQU2c.js} +6 -5
- package/dist/{email-recipients-CPZlUiRR.js.map → email-recipients-C3TfQU2c.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-CHf9Gc5V.cjs → flex-1y7FNRpS.cjs} +2 -2
- package/dist/{flex-CHf9Gc5V.cjs.map → flex-1y7FNRpS.cjs.map} +1 -1
- package/dist/{flex-BeSoRNTu.js → flex-DauT7n0E.js} +3 -2
- package/dist/{flex-BeSoRNTu.js.map → flex-DauT7n0E.js.map} +1 -1
- package/dist/{form-DNeKagke.js → form-DqA7DfNR.js} +3 -2
- package/dist/{form-DNeKagke.js.map → form-DqA7DfNR.js.map} +1 -1
- package/dist/form-Xg8jZsBF.cjs +2 -0
- package/dist/{form-DzDksPgv.cjs.map → form-Xg8jZsBF.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-D5YAYIS1.cjs → formField.mixin-BnSYnYXQ.cjs} +2 -2
- package/dist/{formField.mixin-D5YAYIS1.cjs.map → formField.mixin-BnSYnYXQ.cjs.map} +1 -1
- package/dist/{formField.mixin-BNj75WQ4.js → formField.mixin-YvrrvL_A.js} +2 -2
- package/dist/{formField.mixin-BNj75WQ4.js.map → formField.mixin-YvrrvL_A.js.map} +1 -1
- package/dist/{icon-DebIySqv.cjs → icon-BFYUD00J.cjs} +3 -3
- package/dist/{icon-DebIySqv.cjs.map → icon-BFYUD00J.cjs.map} +1 -1
- package/dist/{icon-CCMpTJTp.js → icon-BtdeB2JT.js} +9 -9
- package/dist/{icon-CCMpTJTp.js.map → icon-BtdeB2JT.js.map} +1 -1
- package/dist/{icon-button-DwnnW2oj.cjs → icon-button-B-uxvO86.cjs} +2 -2
- package/dist/{icon-button-DwnnW2oj.cjs.map → icon-button-B-uxvO86.cjs.map} +1 -1
- package/dist/{icon-button-D6DH52j4.js → icon-button-DwL4WnDE.js} +4 -3
- package/dist/{icon-button-D6DH52j4.js.map → icon-button-DwL4WnDE.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +187 -182
- package/dist/index.js.map +1 -1
- package/dist/{input-DtHPCCyd.js → input-CuOmXLVJ.js} +4 -3
- package/dist/{input-DtHPCCyd.js.map → input-CuOmXLVJ.js.map} +1 -1
- package/dist/input-PoerIsqx.cjs +51 -0
- package/dist/{input-C2Vz-51i.cjs.map → input-PoerIsqx.cjs.map} +1 -1
- package/dist/{input-chip-B7ANrtLF.cjs → input-chip-BlmZB-cO.cjs} +2 -2
- package/dist/{input-chip-B7ANrtLF.cjs.map → input-chip-BlmZB-cO.cjs.map} +1 -1
- package/dist/{input-chip-DbIvSyvP.js → input-chip-CcNElytP.js} +2 -2
- package/dist/{input-chip-DbIvSyvP.js.map → input-chip-CcNElytP.js.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-BH8OJ3Rv.cjs → list-BJjW-iAW.cjs} +2 -2
- package/dist/{list-BH8OJ3Rv.cjs.map → list-BJjW-iAW.cjs.map} +1 -1
- package/dist/{list-BBo0--_Q.js → list-Bou3BRYQ.js} +3 -2
- package/dist/{list-BBo0--_Q.js.map → list-Bou3BRYQ.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-CzF0mNQd.js → litElement.mixin-Bkdw4DeE.js} +2 -2
- package/dist/{litElement.mixin-CzF0mNQd.js.map → litElement.mixin-Bkdw4DeE.js.map} +1 -1
- package/dist/{litElement.mixin-LplXbzd8.cjs → litElement.mixin-Di-HgRnn.cjs} +2 -2
- package/dist/{litElement.mixin-LplXbzd8.cjs.map → litElement.mixin-Di-HgRnn.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-C7lxYU4A.cjs → map-CXNKwo__.cjs} +2 -2
- package/dist/{map-C7lxYU4A.cjs.map → map-CXNKwo__.cjs.map} +1 -1
- package/dist/{map-DeiCBxMP.js → map-bUVyL7jN.js} +19 -19
- package/dist/{map-DeiCBxMP.js.map → map-bUVyL7jN.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-CsYVcfaX.cjs → media-8D6oDv1e.cjs} +6 -6
- package/dist/{media-CsYVcfaX.cjs.map → media-8D6oDv1e.cjs.map} +1 -1
- package/dist/{media-CEnaqjig.js → media-CF1lpFAm.js} +9 -8
- package/dist/{media-CEnaqjig.js.map → media-CF1lpFAm.js.map} +1 -1
- package/dist/{menu-Boqsyfmh.cjs → menu-B8Ad1OVm.cjs} +2 -2
- package/dist/{menu-Boqsyfmh.cjs.map → menu-B8Ad1OVm.cjs.map} +1 -1
- package/dist/{menu-wtkHGlyc.js → menu-C9mJa_ck.js} +4 -3
- package/dist/{menu-wtkHGlyc.js.map → menu-C9mJa_ck.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins/baseElement.ts +33 -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-6ONc-XE-.cjs → navigation-rail-CAgKSJh4.cjs} +14 -11
- package/dist/navigation-rail-CAgKSJh4.cjs.map +1 -0
- package/dist/{navigation-rail-D-lK9oVd.js → navigation-rail-Dh3B6B0L.js} +43 -31
- package/dist/navigation-rail-Dh3B6B0L.js.map +1 -0
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-service-ZiGUSd63.js → notification-service-IBQJTcmw.js} +7 -6
- package/dist/{notification-service-ZiGUSd63.js.map → notification-service-IBQJTcmw.js.map} +1 -1
- package/dist/{notification-service-9HXSKWcw.cjs → notification-service-L82ozhd0.cjs} +2 -2
- package/dist/{notification-service-9HXSKWcw.cjs.map → notification-service-L82ozhd0.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-W-NrP0cC.cjs → notify-AIKWEjDG.cjs} +2 -2
- package/dist/{notify-W-NrP0cC.cjs.map → notify-AIKWEjDG.cjs.map} +1 -1
- package/dist/{notify-DbfX6Z2P.js → notify-CtxRmxjL.js} +2 -2
- package/dist/{notify-DbfX6Z2P.js.map → notify-CtxRmxjL.js.map} +1 -1
- package/dist/{option-D2bxihLu.cjs → option-D5OW1kDk.cjs} +2 -2
- package/dist/{option-D2bxihLu.cjs.map → option-D5OW1kDk.cjs.map} +1 -1
- package/dist/{option-BFlWiCu0.js → option-DHGTgRBn.js} +11 -10
- package/dist/{option-BFlWiCu0.js.map → option-DHGTgRBn.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/payment-card-form-CHS_s_Fk.cjs +74 -0
- package/dist/{payment-card-form--v94EhJF.cjs.map → payment-card-form-CHS_s_Fk.cjs.map} +1 -1
- package/dist/{payment-card-form-DLRNX9NX.js → payment-card-form-wj2JWoyn.js} +4 -3
- package/dist/{payment-card-form-DLRNX9NX.js.map → payment-card-form-wj2JWoyn.js.map} +1 -1
- package/dist/{progress-CjkD8QBy.cjs → progress-CP4R_l3i.cjs} +2 -2
- package/dist/{progress-CjkD8QBy.cjs.map → progress-CP4R_l3i.cjs.map} +1 -1
- package/dist/{progress-BYohUvYO.js → progress-ZrDv_k3Z.js} +10 -9
- package/dist/{progress-BYohUvYO.js.map → progress-ZrDv_k3Z.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-CGmGOAil.cjs → radio-button-BXP_yPjS.cjs} +2 -2
- package/dist/{radio-button-CGmGOAil.cjs.map → radio-button-BXP_yPjS.cjs.map} +1 -1
- package/dist/{radio-button-BlxeCjdq.js → radio-button-D0pVoIe-.js} +4 -3
- package/dist/{radio-button-BlxeCjdq.js.map → radio-button-D0pVoIe-.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-CydL78yk.cjs → schmancy-steps-container-BSv1aURP.cjs} +2 -2
- package/dist/{schmancy-steps-container-CydL78yk.cjs.map → schmancy-steps-container-BSv1aURP.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-BtAHCm73.js → schmancy-steps-container-vjioa19k.js} +2 -2
- package/dist/{schmancy-steps-container-BtAHCm73.js.map → schmancy-steps-container-vjioa19k.js.map} +1 -1
- package/dist/{select-CrB02cIO.cjs → select-DZ-Cy-lg.cjs} +2 -2
- package/dist/{select-CrB02cIO.cjs.map → select-DZ-Cy-lg.cjs.map} +1 -1
- package/dist/{select-BiN334GN.js → select-SgSe22qC.js} +13 -13
- package/dist/{select-BiN334GN.js.map → select-SgSe22qC.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/selector-hook-BWMY8npH.cjs +2 -0
- package/dist/selector-hook-BWMY8npH.cjs.map +1 -0
- package/dist/selector-hook-CKeyK4K-.js +313 -0
- package/dist/selector-hook-CKeyK4K-.js.map +1 -0
- package/dist/{sheet-sgVoRMi1.cjs → sheet-CNMKrulQ.cjs} +2 -2
- package/dist/{sheet-sgVoRMi1.cjs.map → sheet-CNMKrulQ.cjs.map} +1 -1
- package/dist/{sheet-DpJv4DRi.js → sheet-CevNG0tZ.js} +4 -3
- package/dist/{sheet-DpJv4DRi.js.map → sheet-CevNG0tZ.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-Dd1L6oYm.cjs → slider-BSxJatG-.cjs} +4 -4
- package/dist/{slider-Dd1L6oYm.cjs.map → slider-BSxJatG-.cjs.map} +1 -1
- package/dist/{slider-D7qdxfvX.js → slider-DIRocNv8.js} +9 -9
- package/dist/{slider-D7qdxfvX.js.map → slider-DIRocNv8.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-CaXU45TV.cjs → spinner-Cx54uto8.cjs} +2 -2
- package/dist/{spinner-CaXU45TV.cjs.map → spinner-Cx54uto8.cjs.map} +1 -1
- package/dist/{spinner-XN4W5ihQ.js → spinner-DZcG-AtO.js} +3 -2
- package/dist/{spinner-XN4W5ihQ.js.map → spinner-DZcG-AtO.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +26 -26
- package/dist/{suggestion-chip-CdhoATv9.js → suggestion-chip-DADIje6B.js} +3 -3
- package/dist/{suggestion-chip-CdhoATv9.js.map → suggestion-chip-DADIje6B.js.map} +1 -1
- package/dist/{suggestion-chip-PI24Hc3s.cjs → suggestion-chip-ssmmc0q6.cjs} +2 -2
- package/dist/{suggestion-chip-PI24Hc3s.cjs.map → suggestion-chip-ssmmc0q6.cjs.map} +1 -1
- package/dist/{surface-CKrYJ58l.js → surface-_cS9Ehk0.js} +2 -2
- package/dist/{surface-CKrYJ58l.js.map → surface-_cS9Ehk0.js.map} +1 -1
- package/dist/{surface-Ax6I7ldp.cjs → surface-ix9qOb7a.cjs} +2 -2
- package/dist/{surface-Ax6I7ldp.cjs.map → surface-ix9qOb7a.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-CP6_NkPm.js → table-Bi2ftsJe.js} +2 -2
- package/dist/{table-CP6_NkPm.js.map → table-Bi2ftsJe.js.map} +1 -1
- package/dist/{table-BlwUyf_4.cjs → table-DSEK3bMb.cjs} +2 -2
- package/dist/{table-BlwUyf_4.cjs.map → table-DSEK3bMb.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-CX0cIu_Y.cjs → tabs-compatibility-BE2Q3rig.cjs} +4 -4
- package/dist/{tabs-compatibility-CX0cIu_Y.cjs.map → tabs-compatibility-BE2Q3rig.cjs.map} +1 -1
- package/dist/{tabs-compatibility-7QKuXX4i.js → tabs-compatibility-DA3RIq35.js} +7 -6
- package/dist/{tabs-compatibility-7QKuXX4i.js.map → tabs-compatibility-DA3RIq35.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-CvQn8Ynb.cjs +2 -0
- package/dist/tailwind.mixin-CvQn8Ynb.cjs.map +1 -0
- package/dist/tailwind.mixin-DGLcZhRp.js +57 -0
- package/dist/tailwind.mixin-DGLcZhRp.js.map +1 -0
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-DHrDn-O6.js → textarea-CBb2CzKu.js} +3 -2
- package/dist/{textarea-DHrDn-O6.js.map → textarea-CBb2CzKu.js.map} +1 -1
- package/dist/textarea-ClgK_mP6.cjs +44 -0
- package/dist/{textarea-qLA0vP78.cjs.map → textarea-ClgK_mP6.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/theme-button-Dhp3ozyB.cjs +9 -0
- package/dist/{theme-button-D7fBEUGf.cjs.map → theme-button-Dhp3ozyB.cjs.map} +1 -1
- package/dist/{theme-button-BEUsbH5m.js → theme-button-Z_xWXMaf.js} +6 -5
- package/dist/{theme-button-BEUsbH5m.js.map → theme-button-Z_xWXMaf.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.component-ByGua01V.js → theme.controls-BtaZcM7z.js} +367 -238
- package/dist/theme.controls-BtaZcM7z.js.map +1 -0
- package/dist/theme.controls-C_zAMJgA.cjs +67 -0
- package/dist/theme.controls-C_zAMJgA.cjs.map +1 -0
- package/dist/theme.js +13 -11
- package/dist/{timezone-BpDMR26D.js → timezone-CZ0gCI2P.js} +10 -9
- package/dist/{timezone-BpDMR26D.js.map → timezone-CZ0gCI2P.js.map} +1 -1
- package/dist/{timezone-Bw4EXBt7.cjs → timezone-DucGbWcE.cjs} +2 -2
- package/dist/{timezone-Bw4EXBt7.cjs.map → timezone-DucGbWcE.cjs.map} +1 -1
- package/dist/{tooltip-Dhs4HL3A.cjs → tooltip-BSWp7Mmz.cjs} +2 -2
- package/dist/{tooltip-Dhs4HL3A.cjs.map → tooltip-BSWp7Mmz.cjs.map} +1 -1
- package/dist/{tooltip-B1jynZOH.js → tooltip-BSppSqZM.js} +2 -2
- package/dist/{tooltip-B1jynZOH.js.map → tooltip-BSppSqZM.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-D-ezei_U.cjs → tree-DL71EUih.cjs} +4 -4
- package/dist/{tree-D-ezei_U.cjs.map → tree-DL71EUih.cjs.map} +1 -1
- package/dist/{tree-BH1qCJ_U.js → tree-dEse6eMH.js} +3 -2
- package/dist/{tree-BH1qCJ_U.js.map → tree-dEse6eMH.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typewriter-B1Au4MRO.cjs +9 -0
- package/dist/{typewriter-CtPh4Pyj.cjs.map → typewriter-B1Au4MRO.cjs.map} +1 -1
- package/dist/{typewriter-DQbpNPtY.js → typewriter-DBvUYzpl.js} +5 -4
- package/dist/{typewriter-DQbpNPtY.js.map → typewriter-DBvUYzpl.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-BrIaOYmC.cjs → typography-3gXQvLXN.cjs} +2 -2
- package/dist/{typography-BrIaOYmC.cjs.map → typography-3gXQvLXN.cjs.map} +1 -1
- package/dist/{typography-D71cmr0R.js → typography-iOtjgSkI.js} +2 -2
- package/dist/{typography-D71cmr0R.js.map → typography-iOtjgSkI.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/mixins/baseElement.d.ts +2 -1
- package/types/src/boat/boat.d.ts +10 -5
- package/types/src/discovery/discovery.service.d.ts +17 -0
- package/types/src/discovery/index.d.ts +1 -0
- package/types/src/index.d.ts +1 -0
- package/types/src/navigation-bar/navigation-bar.d.ts +15 -1
- package/types/src/navigation-rail/navigation-rail.d.ts +13 -0
- package/types/src/theme/index.d.ts +1 -0
- package/types/src/theme/theme.controls.d.ts +27 -0
- package/types/src/theme/theme.service.d.ts +58 -2
- package/dist/area.component-Ch2Eaa4i.cjs +0 -12
- package/dist/avatar-CjjwZDsw.js.map +0 -1
- package/dist/avatar-DlhBTIc8.cjs +0 -303
- package/dist/avatar-DlhBTIc8.cjs.map +0 -1
- package/dist/boat-CUsJXaLf.js +0 -240
- package/dist/boat-CUsJXaLf.js.map +0 -1
- package/dist/boat-Dfx9-P8c.cjs +0 -83
- package/dist/boat-Dfx9-P8c.cjs.map +0 -1
- package/dist/context-object-BE1o2XB3.js.map +0 -1
- package/dist/context-object-DA9DM9QJ.cjs +0 -2
- package/dist/context-object-DA9DM9QJ.cjs.map +0 -1
- package/dist/date-range-inline-DNr7C5X-.cjs +0 -44
- package/dist/divider-CNxOc8ep.cjs +0 -2
- package/dist/form-DzDksPgv.cjs +0 -2
- package/dist/input-C2Vz-51i.cjs +0 -51
- package/dist/navigation-rail-6ONc-XE-.cjs.map +0 -1
- package/dist/navigation-rail-D-lK9oVd.js.map +0 -1
- package/dist/payment-card-form--v94EhJF.cjs +0 -74
- package/dist/selector-hook-DOsvFxG2.js +0 -364
- package/dist/selector-hook-DOsvFxG2.js.map +0 -1
- package/dist/selector-hook-DQ9zoDM4.cjs +0 -2
- package/dist/selector-hook-DQ9zoDM4.cjs.map +0 -1
- package/dist/tailwind.mixin-BjDGMGbj.js +0 -43
- package/dist/tailwind.mixin-BjDGMGbj.js.map +0 -1
- package/dist/tailwind.mixin-ClfV2_Nh.cjs +0 -2
- package/dist/tailwind.mixin-ClfV2_Nh.cjs.map +0 -1
- package/dist/textarea-qLA0vP78.cjs +0 -44
- package/dist/theme-button-D7fBEUGf.cjs +0 -9
- package/dist/theme.component-ByGua01V.js.map +0 -1
- package/dist/theme.component-CQ1trrZB.cjs +0 -3
- package/dist/theme.component-CQ1trrZB.cjs.map +0 -1
- package/dist/typewriter-CtPh4Pyj.cjs +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boat-BBFE1yJY.js","sources":["../src/boat/boat.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { fromEvent, merge, race } from 'rxjs'\nimport { filter, switchMap, takeUntil, tap, finalize, map, take } from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\ninterface Position {\n\tx: number\n\ty: number\n}\n\ninterface SavedPosition {\n\tx: number\n\ty: number\n\tanchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends $LitElement(css`\n\t:host {\n\t\tdisplay: contents;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\tif (this.isAnimating || value === this.currentState) return\n\t\tthis.animateToState(value)\n\t}\n\n\t@property({ type: String }) id: string = 'default'\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.isLowered = value\n\t\tthis.requestUpdate()\n\t}\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\tprivate headerRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered:\n\t\t\t\t'0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t},\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\t@state() private isDragging: boolean = false\n\t@state() private position: Position = { x: 16, y: 16 }\n\t@state() private anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right'\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t// Keyboard shortcut - Escape key\n\t\t\tfromEvent<KeyboardEvent>(window, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape' && this.currentState !== 'hidden'),\n\t\t\t\t\ttap(e => e.preventDefault()),\n\t\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.toggleState() // Minimize on Esc if expanded\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.close() // Hide on Esc if minimized\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\tprivate initializePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst saved = localStorage.getItem(`schmancy-boat-${this.id}`)\n\n\t\tif (saved) {\n\t\t\ttry {\n\t\t\t\tconst parsed: SavedPosition = JSON.parse(saved)\n\t\t\t\tthis.position = { x: parsed.x, y: parsed.y }\n\t\t\t\tthis.anchor = parsed.anchor\n\t\t\t\tconsole.log('📍 Loaded position:', this.id, parsed)\n\t\t\t} catch (e) {\n\t\t\t\t// Use default position on parse error\n\t\t\t}\n\t\t}\n\t\t// If no saved position, use default from @state initialization\n\t}\n\n\tprivate async animateToState(targetState: BoatState) {\n\t\tif (this.isAnimating || targetState === this.currentState) return\n\n\t\tconst previousState = this.currentState\n\t\tthis.isAnimating = true\n\n\t\ttry {\n\t\t\tawait this.performTransition(previousState, targetState)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\n\t\t\t// Dispatch event\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('toggle', {\n\t\t\t\t\tdetail: targetState,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} catch (err) {\n\t\t\tconsole.warn('Animation error:', err)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\t\t} finally {\n\t\t\tthis.isAnimating = false\n\t\t}\n\t}\n\n\t// Simplified animation transition\n\tprivate async performTransition(fromState: BoatState, toState: BoatState): Promise<void> {\n\t\tthis.currentAnimation?.cancel()\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Update content visibility before expand\n\t\tif (toState === 'expanded') {\n\t\t\tthis.isContentVisible = true\n\t\t}\n\n\t\t// Create animations\n\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t// Wait for main animation to complete\n\t\tif (animations.container) {\n\t\t\tthis.currentAnimation = animations.container\n\t\t\tawait animations.container.finished\n\n\t\t\t// Hide content after minimize\n\t\t\tif (toState !== 'expanded') {\n\t\t\t\tthis.isContentVisible = false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Expand animation without transform\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 150,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: config.durations.content,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\tmaxWidth: '300px',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '0',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tthis.initializePosition()\n\t\tthis.applyInitialStyles()\n\t\tthis.updateContainerPosition()\n\t\tthis.setupDragPipeline()\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t;(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.animateToState(newState)\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.animateToState('hidden')\n\t}\n\n\tprivate closeAndAddToNav() {\n\t\t// Use discovery to find navigation components\n\t\trace(\n\t\t\tthis.discover<any>('schmancy-navigation-rail'),\n\t\t\tthis.discover<any>('schmancy-navigation-bar'),\n\t\t\tthis.discover<any>('schmancy-nav-drawer'),\n\t\t\tthis.discover<any>('app-navigation-rail'),\n\t\t\tthis.discover<any>('app-navigation-bar'),\n\t\t\tthis.discover<any>('app-nav-drawer'),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(async navComponent => {\n\t\t\t\t\tif (navComponent && typeof navComponent.addBoatItem === 'function') {\n\t\t\t\t\t\t// Get the actual icon from the header\n\t\t\t\t\t\tconst headerSlot = this.querySelector('[slot=\"header\"]')\n\t\t\t\t\t\tconst iconElement = headerSlot?.querySelector('schmancy-icon')\n\t\t\t\t\t\tconst icon = iconElement?.textContent?.trim() || 'widgets'\n\n\t\t\t\t\t\t// Get a clean title (remove the icon text from the header text)\n\t\t\t\t\t\tlet title = headerSlot?.textContent?.trim() || 'Boat'\n\t\t\t\t\t\tif (icon && title.includes(icon)) {\n\t\t\t\t\t\t\ttitle = title.replace(icon, '').trim()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add the boat to navigation first\n\t\t\t\t\t\tconst navItem = navComponent.addBoatItem({\n\t\t\t\t\t\t\tid: `boat-${this.id}`,\n\t\t\t\t\t\t\ttitle: title || this.id,\n\t\t\t\t\t\t\ticon: icon,\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t// Animate the boat to the nav item position (genie effect)\n\t\t\t\t\t\tif (navItem) {\n\t\t\t\t\t\t\tawait this.animateToNavItem(navItem)\n\n\t\t\t\t\t\t\t// Listen for clicks on the nav item to re-open the boat\n\t\t\t\t\t\t\tnavItem.addEventListener('click', () => {\n\t\t\t\t\t\t\t\t// Animate from nav item back to expanded position\n\t\t\t\t\t\t\t\tthis.animateFromNavItem(navItem)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No nav component found, just hide\n\t\t\t\t\t\tthis.close()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate async animateToNavItem(navItem: HTMLElement) {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Get positions\n\t\tconst boatRect = container.getBoundingClientRect()\n\t\tconst navRect = navItem.getBoundingClientRect()\n\n\t\t// Cancel any existing animation\n\t\tthis.currentAnimation?.cancel()\n\n\t\t// Create genie effect animation (like macOS)\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: 'scale(1) translate3d(0, 0, 0)',\n\t\t\t\topacity: 1,\n\t\t\t\tborderRadius: '8px',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: `scale(0.3) translate3d(${navRect.left - boatRect.left}px, ${navRect.top - boatRect.top}px, 0)`,\n\t\t\t\topacity: 0.5,\n\t\t\t\tborderRadius: '50%',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: `scale(0) translate3d(${navRect.left - boatRect.left}px, ${navRect.top - boatRect.top}px, 0)`,\n\t\t\t\topacity: 0,\n\t\t\t\tborderRadius: '50%',\n\t\t\t},\n\t\t]\n\t\tthis.currentAnimation = container.animate(\n\t\t\tkeyframes,\n\t\t\t{\n\t\t\t\tduration: 600,\n\t\t\t\teasing: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\n\t\tawait this.currentAnimation.finished\n\t\tthis.currentState = 'hidden'\n\t}\n\n\tprivate animateFromNavItem(navItem: HTMLElement) {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Get nav item position\n\t\tconst navRect = navItem.getBoundingClientRect()\n\n\t\t// Set initial position at nav item\n\t\tcontainer.style.transformOrigin = `${navRect.left}px ${navRect.top}px`\n\n\t\t// Cancel any existing animation\n\t\tthis.currentAnimation?.cancel()\n\n\t\t// Animate from nav item to expanded state\n\t\tconst expandKeyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: `scale(0) translate3d(${navRect.left}px, ${navRect.top}px, 0)`,\n\t\t\t\topacity: 0,\n\t\t\t\tborderRadius: '50%',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'scale(0.5) translate3d(0, 0, 0)',\n\t\t\t\topacity: 0.5,\n\t\t\t\tborderRadius: '24px',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'scale(1) translate3d(0, 0, 0)',\n\t\t\t\topacity: 1,\n\t\t\t\tborderRadius: '8px',\n\t\t\t},\n\t\t]\n\t\tthis.currentAnimation = container.animate(\n\t\t\texpandKeyframes,\n\t\t\t{\n\t\t\t\tduration: 400,\n\t\t\t\teasing: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\n\t\t// Update state\n\t\tthis.currentState = 'expanded'\n\t\tthis.isContentVisible = true\n\t\tthis.bringToFront()\n\t}\n\n\tprivate bringToFront() {\n\t\tconst container = this.containerRef.value\n\t\tif (container) {\n\t\t\tcontainer.style.zIndex = String(10000 + (Date.now() % 1000))\n\t\t}\n\t}\n\n\tprivate calculateDragPosition(\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toffsetX: number,\n\t\toffsetY: number,\n\t\tinitialRect: DOMRect,\n\t): Position {\n\t\tconst targetLeft = clientX - offsetX\n\t\tconst targetTop = clientY - offsetY\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\t\tconst clampedLeft = Math.max(0, Math.min(targetLeft, vw - initialRect.width))\n\t\tconst clampedTop = Math.max(0, Math.min(targetTop, vh - initialRect.height))\n\n\t\tconst newX = this.anchor.includes('right')\n\t\t\t? vw - (clampedLeft + initialRect.width)\n\t\t\t: clampedLeft\n\n\t\tconst newY = this.anchor.includes('bottom')\n\t\t\t? vh - (clampedTop + initialRect.height)\n\t\t\t: clampedTop\n\n\t\treturn { x: Math.max(0, newX), y: Math.max(0, newY) }\n\t}\n\n\tprivate savePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst toSave: SavedPosition = {\n\t\t\tx: this.position.x,\n\t\t\ty: this.position.y,\n\t\t\tanchor: this.anchor,\n\t\t}\n\t\tconst key = `schmancy-boat-${this.id}`\n\t\tlocalStorage.setItem(key, JSON.stringify(toSave))\n\t\tconsole.log('💾 Saved position:', key, toSave)\n\t}\n\n\tprivate setupDragPipeline() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst header = this.headerRef.value\n\t\tconst container = this.containerRef.value\n\t\tif (!header || !container) return\n\n\t\tlet hasDragged = false\n\t\tconst DRAG_THRESHOLD = 5\n\n\t\t// Merge mouse and touch start events\n\t\tconst dragStart$ = merge(\n\t\t\tfromEvent<MouseEvent>(header, 'mousedown').pipe(\n\t\t\t\tfilter(e => e.button === 0),\n\t\t\t\ttap(e => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.clientX,\n\t\t\t\t\tclientY: e.clientY,\n\t\t\t\t\ttype: 'mouse' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t\tfromEvent<TouchEvent>(header, 'touchstart').pipe(\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.touches[0].clientX,\n\t\t\t\t\tclientY: e.touches[0].clientY,\n\t\t\t\t\ttype: 'touch' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t).pipe(\n\t\t\tmap(({ clientX, clientY, type }) => {\n\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\thasDragged = false\n\t\t\t\treturn {\n\t\t\t\t\tstartX: clientX,\n\t\t\t\t\tstartY: clientY,\n\t\t\t\t\toffsetX: clientX - rect.left,\n\t\t\t\t\toffsetY: clientY - rect.top,\n\t\t\t\t\tinitialRect: rect,\n\t\t\t\t\ttype,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\tdragStart$\n\t\t\t.pipe(\n\t\t\t\tswitchMap(({ startX, startY, offsetX, offsetY, initialRect, type }) => {\n\t\t\t\t\tconst move$ =\n\t\t\t\t\t\ttype === 'mouse'\n\t\t\t\t\t\t\t? fromEvent<MouseEvent>(window, 'mousemove').pipe(\n\t\t\t\t\t\t\t\t\tmap(e => ({ clientX: e.clientX, clientY: e.clientY })),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: fromEvent<TouchEvent>(window, 'touchmove').pipe(\n\t\t\t\t\t\t\t\t\tmap(e => ({ clientX: e.touches[0].clientX, clientY: e.touches[0].clientY })),\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\tconst end$ = type === 'mouse' ? fromEvent(window, 'mouseup') : fromEvent(window, 'touchend')\n\n\t\t\t\t\treturn move$.pipe(\n\t\t\t\t\t\tmap(({ clientX, clientY }) => {\n\t\t\t\t\t\t\tconst deltaX = clientX - startX\n\t\t\t\t\t\t\tconst deltaY = clientY - startY\n\t\t\t\t\t\t\tconst distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY)\n\n\t\t\t\t\t\t\tif (distance > DRAG_THRESHOLD && !hasDragged) {\n\t\t\t\t\t\t\t\thasDragged = true\n\t\t\t\t\t\t\t\tthis.isDragging = true\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!hasDragged) return null\n\n\t\t\t\t\t\t\treturn this.calculateDragPosition(clientX, clientY, offsetX, offsetY, initialRect)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfilter(position => position !== null),\n\t\t\t\t\t\ttap(position => {\n\t\t\t\t\t\t\tif (position) {\n\t\t\t\t\t\t\t\tthis.position = position\n\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttakeUntil(end$),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tfinalize(() => {\n\t\t\t\t\tif (hasDragged) {\n\t\t\t\t\t\tthis.updateAnchor()\n\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t}\n\t\t\t\t\tthis.isDragging = false\n\t\t\t\t\thasDragged = false\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// Update container position based on anchor and position values\n\tprivate updateContainerPosition() {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Reset all position styles\n\t\tcontainer.style.removeProperty('left')\n\t\tcontainer.style.removeProperty('right')\n\t\tcontainer.style.removeProperty('top')\n\t\tcontainer.style.removeProperty('bottom')\n\n\t\t// Apply new position based on anchor\n\t\tif (this.anchor.includes('right')) {\n\t\t\tcontainer.style.right = `${this.position.x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${this.position.x}px`\n\t\t}\n\n\t\tif (this.anchor.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${this.position.y}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${this.position.y}px`\n\t\t}\n\t}\n\n\t// Update anchor based on current position\n\tprivate updateAnchor() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\n\t\tconst isRight = rect.left > vw / 2\n\t\tconst isBottom = rect.top > vh / 2\n\n\t\tconst newAnchor = `${isBottom ? 'bottom' : 'top'}-${isRight ? 'right' : 'left'}` as typeof this.anchor\n\n\t\tif (newAnchor !== this.anchor) {\n\t\t\t// Calculate new position values for the new anchor\n\t\t\tif (isRight) {\n\t\t\t\tthis.position.x = vw - rect.right\n\t\t\t} else {\n\t\t\t\tthis.position.x = rect.left\n\t\t\t}\n\n\t\t\tif (isBottom) {\n\t\t\t\tthis.position.y = vh - rect.bottom\n\t\t\t} else {\n\t\t\t\tthis.position.y = rect.top\n\t\t\t}\n\n\t\t\tthis.anchor = newAnchor\n\t\t}\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t}\n\n\tprotected render(): unknown {\n\t\tconst surfaceElevation = this.currentState === 'minimized' ? (this.isLowered ? '1' : '3') : '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\n\t\tconst containerClasses = {\n\t\t\t'fixed': true,\n\t\t\t'overflow-y-auto': true,\n\t\t\t'flex': true,\n\t\t\t'flex-col': true,\n\t\t\t'z-[10000]': true,\n\t\t\t'select-none': true,\n\t\t\t'will-change-transform': true,\n\t\t\t'[contain:layout_style]': true,\n\t\t\t'[transform:translate3d(0,0,0)]': true,\n\t\t\t'[backface-visibility:hidden]': true,\n\t\t\t'transition-shadow': true,\n\t\t\t'opacity-95': this.isDragging,\n\t\t\t'shadow-[0_24px_48px_-8px_rgba(0,0,0,0.2),0_12px_24px_-4px_rgba(0,0,0,0.12)]': this.isDragging,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=${this.classMap(containerClasses)} ${ref(this.containerRef)} @click=${this.bringToFront}>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-10\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerLowest\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"group sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging\n\t\t\t\t\t\t\t\t? 'cursor-grabbing'\n\t\t\t\t\t\t\t\t: 'cursor-move'}\"\n\t\t\t\t\t\t\t${ref(this.headerRef)}\n\t\t\t\t\t\t\ttitle=\"Drag to move, double-click to toggle\"\n\t\t\t\t\t\t\t@dblclick=${(e: Event) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<!-- Drag handle indicator -->\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex items-center text-surface-onVariant opacity-40 transition-opacity duration-200 group-hover:opacity-100\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-icon style=\"font-size: 20px\">drag_indicator</schmancy-icon>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Header content slot -->\n\t\t\t\t\t\t\t<div class=\"flex-1 min-w-fit items-center flex justify-start\">\n\t\t\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t${isMinimized\n\t\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Expand button (when minimized) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'expanded'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Expand\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon ${ref(this.iconRef)}>expand_less</schmancy-icon>\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Minimize button (when expanded) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"filled tonal\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'minimized'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Minimize\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon ${ref(this.iconRef)}>expand_more</schmancy-icon>\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`}\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.closeAndAddToNav()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close and add to navigation\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<schmancy-icon>close</schmancy-icon>\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t<schmancy-surface\n\t\t\t\t\t.hidden=${!this.isContentVisible}\n\t\t\t\t\ttype=\"containerLow\"\n\t\t\t\t\tclass=\"z-0 flex-1\"\n\t\t\t\t\t${ref(this.contentRef)}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-surface>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}\n"],"names":["SchmancyBoat","$LitElement","css","super","arguments","this","id","containerRef","createRef","contentRef","iconRef","headerRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","isDragging","position","x","y","anchor","state","value","animateToState","lowered","requestUpdate","connectedCallback","window","fromEvent","pipe","takeUntil","disconnecting","subscribe","updateExpandedWidth","filter","e","key","tap","preventDefault","toggleState","close","saved","localStorage","getItem","parsed","JSON","parse","targetState","previousState","performTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","fromState","toState","currentAnimation","cancel","animations","createAnimations","container","finished","icon","config","fromStyles","getStyleForState","toStyles","animate","duration","fill","opacity","transform","isExpanding","baseStyles","maxWidth","maxHeight","borderRadius","hidden","pointerEvents","boxShadow","backdropFilter","minimized","width","getResponsiveWidth","vw","innerWidth","style","firstUpdated","initializePosition","applyInitialStyles","updateContainerPosition","setupDragPipeline","initialStyle","Object","assign","webkitBackdropFilter","newState","closeAndAddToNav","race","discover","take","async","navComponent","addBoatItem","headerSlot","querySelector","iconElement","textContent","trim","title","includes","replace","navItem","animateToNavItem","addEventListener","animateFromNavItem","boatRect","getBoundingClientRect","navRect","keyframes","left","top","transformOrigin","expandKeyframes","bringToFront","zIndex","String","Date","now","clientX","clientY","offsetX","offsetY","initialRect","targetLeft","targetTop","vh","innerHeight","clampedLeft","Math","max","min","clampedTop","height","newX","newY","savePosition","toSave","setItem","stringify","header","hasDragged","merge","button","stopPropagation","map","type","touches","rect","startX","startY","switchMap","move$","end$","deltaX","deltaY","sqrt","calculateDragPosition","finalize","updateAnchor","removeProperty","right","bottom","isRight","isBottom","newAnchor","disconnectedCallback","surfaceElevation","isMinimized","containerClasses","fixed","flex","html","classMap","ref","__decorateClass","property","reflect","prototype","Boolean","customElement"],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";const p=require("rxjs"),r=require("rxjs/operators");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("lit/decorators.js");require("./tailwind.mixin-CvQn8Ynb.cjs");const v=require("./litElement.mixin-Di-HgRnn.cjs"),x=require("lit"),l=require("lit/directives/ref.js");var S=Object.defineProperty,R=Object.getOwnPropertyDescriptor,h=(t,e,n,i)=>{for(var a,o=i>1?void 0:i?R(e,n):e,s=t.length-1;s>=0;s--)(a=t[s])&&(o=(i?a(e,n,o):a(o))||o);return i&&o&&S(e,n,o),o};exports.SchmancyBoat=class extends v.$LitElement(x.css`
|
|
2
|
+
:host {
|
|
3
|
+
display: contents;
|
|
4
|
+
}
|
|
5
|
+
`){constructor(){super(...arguments),this.id="default",this.containerRef=l.createRef(),this.contentRef=l.createRef(),this.iconRef=l.createRef(),this.headerRef=l.createRef(),this.ANIMATION_CONFIG={durations:{expand:350,minimize:250,hide:200,content:300},easing:{emphasized:"cubic-bezier(0.2, 0.0, 0, 1.0)",decelerate:"cubic-bezier(0.05, 0.7, 0.1, 1.0)",accelerate:"cubic-bezier(0.3, 0.0, 0.8, 0.15)",standard:"cubic-bezier(0.4, 0.0, 0.2, 1)"},shadows:{fab:"0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)",fabLowered:"0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)",expanded:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"}},this.currentState="minimized",this.isContentVisible=!1,this.isAnimating=!1,this.isLowered=!1,this.isDragging=!1,this.position={x:16,y:16},this.anchor="bottom-right"}get state(){return this.currentState}set state(t){this.isAnimating||t===this.currentState||this.animateToState(t)}get lowered(){return this.isLowered}set lowered(t){this.isLowered=t,this.requestUpdate()}connectedCallback(){super.connectedCallback(),typeof window<"u"&&(p.fromEvent(window,"resize").pipe(r.takeUntil(this.disconnecting)).subscribe(()=>{this.currentState==="expanded"&&this.updateExpandedWidth()}),p.fromEvent(window,"keydown").pipe(r.filter(t=>t.key==="Escape"&&this.currentState!=="hidden"),r.tap(t=>t.preventDefault()),r.takeUntil(this.disconnecting)).subscribe(()=>{this.currentState==="expanded"?this.toggleState():this.close()}))}initializePosition(){if(typeof window>"u")return;const t=localStorage.getItem(`schmancy-boat-${this.id}`);if(t)try{const e=JSON.parse(t);this.position={x:e.x,y:e.y},this.anchor=e.anchor}catch{}}async animateToState(t){if(this.isAnimating||t===this.currentState)return;const e=this.currentState;this.isAnimating=!0;try{await this.performTransition(e,t),this.currentState=t,this.isContentVisible=t==="expanded",this.dispatchEvent(new CustomEvent("toggle",{detail:t,bubbles:!0,composed:!0}))}catch{this.currentState=t,this.isContentVisible=t==="expanded"}finally{this.isAnimating=!1}}async performTransition(t,e){if(this.currentAnimation?.cancel(),!this.containerRef.value)return;e==="expanded"&&(this.isContentVisible=!0);const n=this.createAnimations(t,e);n.container&&(this.currentAnimation=n.container,await n.container.finished,e!=="expanded"&&(this.isContentVisible=!1))}createAnimations(t,e){const n=this.containerRef.value,i=this.contentRef.value,a=this.iconRef.value,o={};if(!n)return o;const s=this.ANIMATION_CONFIG,f=this.getStyleForState(t),u=this.getStyleForState(e);if(o.container=e==="expanded"?n.animate([f,u],{duration:s.durations.expand,easing:s.easing.decelerate,fill:"forwards"}):n.animate([f,u],{duration:e==="hidden"?s.durations.hide:s.durations.minimize,easing:s.easing.accelerate,fill:"forwards"}),i&&t==="expanded"&&e==="minimized"?i.animate([{opacity:1,transform:"translateY(0)"},{opacity:0,transform:"translateY(-8px)"}],{duration:150,easing:s.easing.standard,fill:"forwards"}):i&&e==="expanded"&&i.animate([{opacity:0,transform:"translateY(8px)"},{opacity:1,transform:"translateY(0)"}],{duration:s.durations.content,easing:s.easing.standard,fill:"forwards"}),a){const m=e==="expanded";(m||t==="expanded"&&e==="minimized")&&a.animate([{transform:m?"rotate(0deg)":"rotate(180deg)"},{transform:m?"rotate(180deg)":"rotate(0deg)"}],{duration:250,easing:s.easing.emphasized,fill:"forwards"})}return o}getStyleForState(t){const{shadows:e}=this.ANIMATION_CONFIG,n={maxWidth:"300px",maxHeight:"auto",borderRadius:"16px"};return{hidden:{...n,opacity:"0",pointerEvents:"none",boxShadow:"none",backdropFilter:"none"},minimized:{...n,opacity:"1",pointerEvents:"auto",boxShadow:this.isLowered?e.fabLowered:e.fab,backdropFilter:"none"},expanded:{opacity:"1",pointerEvents:"auto",width:this.getResponsiveWidth(),maxWidth:"100%",maxHeight:"80vh",boxShadow:e.expanded,borderRadius:"8px 8px 0 0",backdropFilter:"blur(12px)"}}[t]}getResponsiveWidth(){if(typeof window>"u")return"40vw";const t=window.innerWidth;return t<768?"calc(100vw - 32px)":t<1024?"70vw":t<1280?"60vw":"40vw"}updateExpandedWidth(){const t=this.containerRef.value;t&&this.currentState==="expanded"&&(t.style.width=this.getResponsiveWidth())}firstUpdated(){this.initializePosition(),this.applyInitialStyles(),this.updateContainerPosition(),this.setupDragPipeline()}applyInitialStyles(){const t=this.containerRef.value,e=this.contentRef.value,n=this.iconRef.value;if(t){const i=this.getStyleForState(this.currentState);Object.assign(t.style,i),"webkitBackdropFilter"in t.style&&(t.style.webkitBackdropFilter=i.backdropFilter)}e&&(e.style.opacity=this.isContentVisible?"1":"0"),n&&this.currentState==="expanded"&&(n.style.transform="rotate(180deg)")}toggleState(){const t=this.currentState==="minimized"?"expanded":"minimized";this.animateToState(t)}close(){this.animateToState("hidden")}closeAndAddToNav(){p.race(this.discover("schmancy-navigation-rail"),this.discover("schmancy-navigation-bar"),this.discover("schmancy-nav-drawer"),this.discover("app-navigation-rail"),this.discover("app-navigation-bar"),this.discover("app-nav-drawer")).pipe(r.take(1),r.tap(async t=>{if(t&&typeof t.addBoatItem=="function"){const e=this.querySelector('[slot="header"]'),n=e?.querySelector("schmancy-icon"),i=n?.textContent?.trim()||"widgets";let a=e?.textContent?.trim()||"Boat";a.includes(i)&&(a=a.replace(i,"").trim());const o=t.addBoatItem({id:`boat-${this.id}`,title:a||this.id,icon:i});o&&(await this.animateToNavItem(o),o.addEventListener("click",()=>{this.animateFromNavItem(o)}))}else this.close()})).subscribe()}async animateToNavItem(t){const e=this.containerRef.value;if(!e)return;const n=e.getBoundingClientRect(),i=t.getBoundingClientRect();this.currentAnimation?.cancel();const a=[{transform:"scale(1) translate3d(0, 0, 0)",opacity:1,borderRadius:"8px"},{transform:`scale(0.3) translate3d(${i.left-n.left}px, ${i.top-n.top}px, 0)`,opacity:.5,borderRadius:"50%"},{transform:`scale(0) translate3d(${i.left-n.left}px, ${i.top-n.top}px, 0)`,opacity:0,borderRadius:"50%"}];this.currentAnimation=e.animate(a,{duration:600,easing:"cubic-bezier(0.4, 0.0, 0.2, 1)",fill:"forwards"}),await this.currentAnimation.finished,this.currentState="hidden"}animateFromNavItem(t){const e=this.containerRef.value;if(!e)return;const n=t.getBoundingClientRect();e.style.transformOrigin=`${n.left}px ${n.top}px`,this.currentAnimation?.cancel();const i=[{transform:`scale(0) translate3d(${n.left}px, ${n.top}px, 0)`,opacity:0,borderRadius:"50%"},{transform:"scale(0.5) translate3d(0, 0, 0)",opacity:.5,borderRadius:"24px"},{transform:"scale(1) translate3d(0, 0, 0)",opacity:1,borderRadius:"8px"}];this.currentAnimation=e.animate(i,{duration:400,easing:"cubic-bezier(0.2, 0.0, 0, 1.0)",fill:"forwards"}),this.currentState="expanded",this.isContentVisible=!0,this.bringToFront()}bringToFront(){const t=this.containerRef.value;t&&(t.style.zIndex=String(1e4+Date.now()%1e3))}calculateDragPosition(t,e,n,i,a){const o=t-n,s=e-i,f=window.innerWidth,u=window.innerHeight,m=Math.max(0,Math.min(o,f-a.width)),y=Math.max(0,Math.min(s,u-a.height)),c=this.anchor.includes("right")?f-(m+a.width):m,g=this.anchor.includes("bottom")?u-(y+a.height):y;return{x:Math.max(0,c),y:Math.max(0,g)}}savePosition(){if(typeof window>"u")return;const t={x:this.position.x,y:this.position.y,anchor:this.anchor},e=`schmancy-boat-${this.id}`;localStorage.setItem(e,JSON.stringify(t))}setupDragPipeline(){if(typeof window>"u")return;const t=this.headerRef.value,e=this.containerRef.value;if(!t||!e)return;let n=!1;p.merge(p.fromEvent(t,"mousedown").pipe(r.filter(i=>i.button===0),r.tap(i=>{i.preventDefault(),i.stopPropagation()}),r.map(i=>({clientX:i.clientX,clientY:i.clientY,type:"mouse"}))),p.fromEvent(t,"touchstart").pipe(r.map(i=>({clientX:i.touches[0].clientX,clientY:i.touches[0].clientY,type:"touch"})))).pipe(r.map(({clientX:i,clientY:a,type:o})=>{const s=e.getBoundingClientRect();return n=!1,{startX:i,startY:a,offsetX:i-s.left,offsetY:a-s.top,initialRect:s,type:o}})).pipe(r.switchMap(({startX:i,startY:a,offsetX:o,offsetY:s,initialRect:f,type:u})=>{const m=u==="mouse"?p.fromEvent(window,"mousemove").pipe(r.map(c=>({clientX:c.clientX,clientY:c.clientY}))):p.fromEvent(window,"touchmove").pipe(r.map(c=>({clientX:c.touches[0].clientX,clientY:c.touches[0].clientY}))),y=u==="mouse"?p.fromEvent(window,"mouseup"):p.fromEvent(window,"touchend");return m.pipe(r.map(({clientX:c,clientY:g})=>{const b=c-i,w=g-a;return Math.sqrt(b*b+w*w)>5&&!n&&(n=!0,this.isDragging=!0),n?this.calculateDragPosition(c,g,o,s,f):null}),r.filter(c=>c!==null),r.tap(c=>{c&&(this.position=c,this.updateContainerPosition())}),r.takeUntil(y))}),r.finalize(()=>{n?(this.updateAnchor(),this.savePosition()):this.toggleState(),this.isDragging=!1,n=!1}),r.takeUntil(this.disconnecting)).subscribe()}updateContainerPosition(){const t=this.containerRef.value;t&&(t.style.removeProperty("left"),t.style.removeProperty("right"),t.style.removeProperty("top"),t.style.removeProperty("bottom"),this.anchor.includes("right")?t.style.right=`${this.position.x}px`:t.style.left=`${this.position.x}px`,this.anchor.includes("bottom")?t.style.bottom=`${this.position.y}px`:t.style.top=`${this.position.y}px`)}updateAnchor(){if(typeof window>"u")return;const t=this.containerRef.value;if(!t)return;const e=t.getBoundingClientRect(),n=window.innerWidth,i=window.innerHeight,a=e.left>n/2,o=e.top>i/2,s=`${o?"bottom":"top"}-${a?"right":"left"}`;s!==this.anchor&&(this.position.x=a?n-e.right:e.left,this.position.y=o?i-e.bottom:e.top,this.anchor=s)}disconnectedCallback(){super.disconnectedCallback(),this.currentAnimation?.cancel()}render(){const t=this.currentState==="minimized"?this.isLowered?"1":"3":"4",e=this.currentState==="minimized",n={fixed:!0,"overflow-y-auto":!0,flex:!0,"flex-col":!0,"z-[10000]":!0,"select-none":!0,"will-change-transform":!0,"[contain:layout_style]":!0,"[transform:translate3d(0,0,0)]":!0,"[backface-visibility:hidden]":!0,"transition-shadow":!0,"opacity-95":this.isDragging,"shadow-[0_24px_48px_-8px_rgba(0,0,0,0.2),0_12px_24px_-4px_rgba(0,0,0,0.12)]":this.isDragging};return x.html`
|
|
6
|
+
<div class=${this.classMap(n)} ${l.ref(this.containerRef)} @click=${this.bringToFront}>
|
|
7
|
+
<!-- Header section -->
|
|
8
|
+
<section class="sticky top-0 z-10">
|
|
9
|
+
<schmancy-surface
|
|
10
|
+
elevation="${t}"
|
|
11
|
+
rounded="${e?"none":"top"}"
|
|
12
|
+
type="containerLowest"
|
|
13
|
+
>
|
|
14
|
+
<div
|
|
15
|
+
class="group sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging?"cursor-grabbing":"cursor-move"}"
|
|
16
|
+
${l.ref(this.headerRef)}
|
|
17
|
+
title="Drag to move, double-click to toggle"
|
|
18
|
+
@dblclick=${i=>{i.preventDefault(),i.stopPropagation(),this.toggleState()}}
|
|
19
|
+
>
|
|
20
|
+
<!-- Drag handle indicator -->
|
|
21
|
+
<div
|
|
22
|
+
class="flex items-center text-surface-onVariant opacity-40 transition-opacity duration-200 group-hover:opacity-100"
|
|
23
|
+
>
|
|
24
|
+
<schmancy-icon style="font-size: 20px">drag_indicator</schmancy-icon>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<!-- Header content slot -->
|
|
28
|
+
<div class="flex-1 min-w-fit items-center flex justify-start">
|
|
29
|
+
<slot name="header"></slot>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<!-- Control buttons -->
|
|
33
|
+
<div class="flex items-center gap-1 flex-shrink-0">
|
|
34
|
+
${e?x.html`
|
|
35
|
+
<!-- Expand button (when minimized) -->
|
|
36
|
+
<schmancy-icon-button
|
|
37
|
+
variant="text"
|
|
38
|
+
@click=${i=>{i.stopPropagation(),this.state="expanded"}}
|
|
39
|
+
title="Expand"
|
|
40
|
+
>
|
|
41
|
+
<schmancy-icon ${l.ref(this.iconRef)}>expand_less</schmancy-icon>
|
|
42
|
+
</schmancy-icon-button>
|
|
43
|
+
`:x.html`
|
|
44
|
+
<!-- Minimize button (when expanded) -->
|
|
45
|
+
<schmancy-icon-button
|
|
46
|
+
variant="filled tonal"
|
|
47
|
+
@click=${i=>{i.stopPropagation(),this.state="minimized"}}
|
|
48
|
+
title="Minimize"
|
|
49
|
+
>
|
|
50
|
+
<schmancy-icon ${l.ref(this.iconRef)}>expand_more</schmancy-icon>
|
|
51
|
+
</schmancy-icon-button>
|
|
52
|
+
`}
|
|
53
|
+
|
|
54
|
+
<!-- Close button -->
|
|
55
|
+
<schmancy-icon-button
|
|
56
|
+
variant="text"
|
|
57
|
+
@click=${i=>{i.stopPropagation(),this.closeAndAddToNav()}}
|
|
58
|
+
title="Close and add to navigation"
|
|
59
|
+
>
|
|
60
|
+
<schmancy-icon>close</schmancy-icon>
|
|
61
|
+
</schmancy-icon-button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</schmancy-surface>
|
|
65
|
+
</section>
|
|
66
|
+
|
|
67
|
+
<!-- Content section -->
|
|
68
|
+
<schmancy-surface
|
|
69
|
+
.hidden=${!this.isContentVisible}
|
|
70
|
+
type="containerLow"
|
|
71
|
+
class="z-0 flex-1"
|
|
72
|
+
${l.ref(this.contentRef)}
|
|
73
|
+
>
|
|
74
|
+
<slot></slot>
|
|
75
|
+
</schmancy-surface>
|
|
76
|
+
</div>
|
|
77
|
+
`}},h([d.property({type:String,reflect:!0})],exports.SchmancyBoat.prototype,"state",1),h([d.property({type:String})],exports.SchmancyBoat.prototype,"id",2),h([d.property({type:Boolean,reflect:!0})],exports.SchmancyBoat.prototype,"lowered",1),h([d.state()],exports.SchmancyBoat.prototype,"currentState",2),h([d.state()],exports.SchmancyBoat.prototype,"isContentVisible",2),h([d.state()],exports.SchmancyBoat.prototype,"isAnimating",2),h([d.state()],exports.SchmancyBoat.prototype,"isLowered",2),h([d.state()],exports.SchmancyBoat.prototype,"isDragging",2),h([d.state()],exports.SchmancyBoat.prototype,"position",2),h([d.state()],exports.SchmancyBoat.prototype,"anchor",2),exports.SchmancyBoat=h([d.customElement("schmancy-boat")],exports.SchmancyBoat);
|
|
78
|
+
//# sourceMappingURL=boat-BSYtwy1W.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boat-BSYtwy1W.cjs","sources":["../src/boat/boat.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { fromEvent, merge, race } from 'rxjs'\nimport { filter, switchMap, takeUntil, tap, finalize, map, take } from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\ninterface Position {\n\tx: number\n\ty: number\n}\n\ninterface SavedPosition {\n\tx: number\n\ty: number\n\tanchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends $LitElement(css`\n\t:host {\n\t\tdisplay: contents;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\tif (this.isAnimating || value === this.currentState) return\n\t\tthis.animateToState(value)\n\t}\n\n\t@property({ type: String }) id: string = 'default'\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.isLowered = value\n\t\tthis.requestUpdate()\n\t}\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\tprivate headerRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered:\n\t\t\t\t'0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t},\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\t@state() private isDragging: boolean = false\n\t@state() private position: Position = { x: 16, y: 16 }\n\t@state() private anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right'\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t// Keyboard shortcut - Escape key\n\t\t\tfromEvent<KeyboardEvent>(window, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape' && this.currentState !== 'hidden'),\n\t\t\t\t\ttap(e => e.preventDefault()),\n\t\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.toggleState() // Minimize on Esc if expanded\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.close() // Hide on Esc if minimized\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\tprivate initializePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst saved = localStorage.getItem(`schmancy-boat-${this.id}`)\n\n\t\tif (saved) {\n\t\t\ttry {\n\t\t\t\tconst parsed: SavedPosition = JSON.parse(saved)\n\t\t\t\tthis.position = { x: parsed.x, y: parsed.y }\n\t\t\t\tthis.anchor = parsed.anchor\n\t\t\t\tconsole.log('📍 Loaded position:', this.id, parsed)\n\t\t\t} catch (e) {\n\t\t\t\t// Use default position on parse error\n\t\t\t}\n\t\t}\n\t\t// If no saved position, use default from @state initialization\n\t}\n\n\tprivate async animateToState(targetState: BoatState) {\n\t\tif (this.isAnimating || targetState === this.currentState) return\n\n\t\tconst previousState = this.currentState\n\t\tthis.isAnimating = true\n\n\t\ttry {\n\t\t\tawait this.performTransition(previousState, targetState)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\n\t\t\t// Dispatch event\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('toggle', {\n\t\t\t\t\tdetail: targetState,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} catch (err) {\n\t\t\tconsole.warn('Animation error:', err)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\t\t} finally {\n\t\t\tthis.isAnimating = false\n\t\t}\n\t}\n\n\t// Simplified animation transition\n\tprivate async performTransition(fromState: BoatState, toState: BoatState): Promise<void> {\n\t\tthis.currentAnimation?.cancel()\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Update content visibility before expand\n\t\tif (toState === 'expanded') {\n\t\t\tthis.isContentVisible = true\n\t\t}\n\n\t\t// Create animations\n\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t// Wait for main animation to complete\n\t\tif (animations.container) {\n\t\t\tthis.currentAnimation = animations.container\n\t\t\tawait animations.container.finished\n\n\t\t\t// Hide content after minimize\n\t\t\tif (toState !== 'expanded') {\n\t\t\t\tthis.isContentVisible = false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Expand animation without transform\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 150,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: config.durations.content,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\tmaxWidth: '300px',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '0',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tthis.initializePosition()\n\t\tthis.applyInitialStyles()\n\t\tthis.updateContainerPosition()\n\t\tthis.setupDragPipeline()\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t;(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.animateToState(newState)\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.animateToState('hidden')\n\t}\n\n\tprivate closeAndAddToNav() {\n\t\t// Use discovery to find navigation components\n\t\trace(\n\t\t\tthis.discover<any>('schmancy-navigation-rail'),\n\t\t\tthis.discover<any>('schmancy-navigation-bar'),\n\t\t\tthis.discover<any>('schmancy-nav-drawer'),\n\t\t\tthis.discover<any>('app-navigation-rail'),\n\t\t\tthis.discover<any>('app-navigation-bar'),\n\t\t\tthis.discover<any>('app-nav-drawer'),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(async navComponent => {\n\t\t\t\t\tif (navComponent && typeof navComponent.addBoatItem === 'function') {\n\t\t\t\t\t\t// Get the actual icon from the header\n\t\t\t\t\t\tconst headerSlot = this.querySelector('[slot=\"header\"]')\n\t\t\t\t\t\tconst iconElement = headerSlot?.querySelector('schmancy-icon')\n\t\t\t\t\t\tconst icon = iconElement?.textContent?.trim() || 'widgets'\n\n\t\t\t\t\t\t// Get a clean title (remove the icon text from the header text)\n\t\t\t\t\t\tlet title = headerSlot?.textContent?.trim() || 'Boat'\n\t\t\t\t\t\tif (icon && title.includes(icon)) {\n\t\t\t\t\t\t\ttitle = title.replace(icon, '').trim()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add the boat to navigation first\n\t\t\t\t\t\tconst navItem = navComponent.addBoatItem({\n\t\t\t\t\t\t\tid: `boat-${this.id}`,\n\t\t\t\t\t\t\ttitle: title || this.id,\n\t\t\t\t\t\t\ticon: icon,\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t// Animate the boat to the nav item position (genie effect)\n\t\t\t\t\t\tif (navItem) {\n\t\t\t\t\t\t\tawait this.animateToNavItem(navItem)\n\n\t\t\t\t\t\t\t// Listen for clicks on the nav item to re-open the boat\n\t\t\t\t\t\t\tnavItem.addEventListener('click', () => {\n\t\t\t\t\t\t\t\t// Animate from nav item back to expanded position\n\t\t\t\t\t\t\t\tthis.animateFromNavItem(navItem)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No nav component found, just hide\n\t\t\t\t\t\tthis.close()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate async animateToNavItem(navItem: HTMLElement) {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Get positions\n\t\tconst boatRect = container.getBoundingClientRect()\n\t\tconst navRect = navItem.getBoundingClientRect()\n\n\t\t// Cancel any existing animation\n\t\tthis.currentAnimation?.cancel()\n\n\t\t// Create genie effect animation (like macOS)\n\t\tconst keyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: 'scale(1) translate3d(0, 0, 0)',\n\t\t\t\topacity: 1,\n\t\t\t\tborderRadius: '8px',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: `scale(0.3) translate3d(${navRect.left - boatRect.left}px, ${navRect.top - boatRect.top}px, 0)`,\n\t\t\t\topacity: 0.5,\n\t\t\t\tborderRadius: '50%',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: `scale(0) translate3d(${navRect.left - boatRect.left}px, ${navRect.top - boatRect.top}px, 0)`,\n\t\t\t\topacity: 0,\n\t\t\t\tborderRadius: '50%',\n\t\t\t},\n\t\t]\n\t\tthis.currentAnimation = container.animate(\n\t\t\tkeyframes,\n\t\t\t{\n\t\t\t\tduration: 600,\n\t\t\t\teasing: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\n\t\tawait this.currentAnimation.finished\n\t\tthis.currentState = 'hidden'\n\t}\n\n\tprivate animateFromNavItem(navItem: HTMLElement) {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Get nav item position\n\t\tconst navRect = navItem.getBoundingClientRect()\n\n\t\t// Set initial position at nav item\n\t\tcontainer.style.transformOrigin = `${navRect.left}px ${navRect.top}px`\n\n\t\t// Cancel any existing animation\n\t\tthis.currentAnimation?.cancel()\n\n\t\t// Animate from nav item to expanded state\n\t\tconst expandKeyframes: Keyframe[] = [\n\t\t\t{\n\t\t\t\ttransform: `scale(0) translate3d(${navRect.left}px, ${navRect.top}px, 0)`,\n\t\t\t\topacity: 0,\n\t\t\t\tborderRadius: '50%',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'scale(0.5) translate3d(0, 0, 0)',\n\t\t\t\topacity: 0.5,\n\t\t\t\tborderRadius: '24px',\n\t\t\t},\n\t\t\t{\n\t\t\t\ttransform: 'scale(1) translate3d(0, 0, 0)',\n\t\t\t\topacity: 1,\n\t\t\t\tborderRadius: '8px',\n\t\t\t},\n\t\t]\n\t\tthis.currentAnimation = container.animate(\n\t\t\texpandKeyframes,\n\t\t\t{\n\t\t\t\tduration: 400,\n\t\t\t\teasing: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\n\t\t// Update state\n\t\tthis.currentState = 'expanded'\n\t\tthis.isContentVisible = true\n\t\tthis.bringToFront()\n\t}\n\n\tprivate bringToFront() {\n\t\tconst container = this.containerRef.value\n\t\tif (container) {\n\t\t\tcontainer.style.zIndex = String(10000 + (Date.now() % 1000))\n\t\t}\n\t}\n\n\tprivate calculateDragPosition(\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toffsetX: number,\n\t\toffsetY: number,\n\t\tinitialRect: DOMRect,\n\t): Position {\n\t\tconst targetLeft = clientX - offsetX\n\t\tconst targetTop = clientY - offsetY\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\t\tconst clampedLeft = Math.max(0, Math.min(targetLeft, vw - initialRect.width))\n\t\tconst clampedTop = Math.max(0, Math.min(targetTop, vh - initialRect.height))\n\n\t\tconst newX = this.anchor.includes('right')\n\t\t\t? vw - (clampedLeft + initialRect.width)\n\t\t\t: clampedLeft\n\n\t\tconst newY = this.anchor.includes('bottom')\n\t\t\t? vh - (clampedTop + initialRect.height)\n\t\t\t: clampedTop\n\n\t\treturn { x: Math.max(0, newX), y: Math.max(0, newY) }\n\t}\n\n\tprivate savePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst toSave: SavedPosition = {\n\t\t\tx: this.position.x,\n\t\t\ty: this.position.y,\n\t\t\tanchor: this.anchor,\n\t\t}\n\t\tconst key = `schmancy-boat-${this.id}`\n\t\tlocalStorage.setItem(key, JSON.stringify(toSave))\n\t\tconsole.log('💾 Saved position:', key, toSave)\n\t}\n\n\tprivate setupDragPipeline() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst header = this.headerRef.value\n\t\tconst container = this.containerRef.value\n\t\tif (!header || !container) return\n\n\t\tlet hasDragged = false\n\t\tconst DRAG_THRESHOLD = 5\n\n\t\t// Merge mouse and touch start events\n\t\tconst dragStart$ = merge(\n\t\t\tfromEvent<MouseEvent>(header, 'mousedown').pipe(\n\t\t\t\tfilter(e => e.button === 0),\n\t\t\t\ttap(e => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.clientX,\n\t\t\t\t\tclientY: e.clientY,\n\t\t\t\t\ttype: 'mouse' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t\tfromEvent<TouchEvent>(header, 'touchstart').pipe(\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.touches[0].clientX,\n\t\t\t\t\tclientY: e.touches[0].clientY,\n\t\t\t\t\ttype: 'touch' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t).pipe(\n\t\t\tmap(({ clientX, clientY, type }) => {\n\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\thasDragged = false\n\t\t\t\treturn {\n\t\t\t\t\tstartX: clientX,\n\t\t\t\t\tstartY: clientY,\n\t\t\t\t\toffsetX: clientX - rect.left,\n\t\t\t\t\toffsetY: clientY - rect.top,\n\t\t\t\t\tinitialRect: rect,\n\t\t\t\t\ttype,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\tdragStart$\n\t\t\t.pipe(\n\t\t\t\tswitchMap(({ startX, startY, offsetX, offsetY, initialRect, type }) => {\n\t\t\t\t\tconst move$ =\n\t\t\t\t\t\ttype === 'mouse'\n\t\t\t\t\t\t\t? fromEvent<MouseEvent>(window, 'mousemove').pipe(\n\t\t\t\t\t\t\t\t\tmap(e => ({ clientX: e.clientX, clientY: e.clientY })),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: fromEvent<TouchEvent>(window, 'touchmove').pipe(\n\t\t\t\t\t\t\t\t\tmap(e => ({ clientX: e.touches[0].clientX, clientY: e.touches[0].clientY })),\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\tconst end$ = type === 'mouse' ? fromEvent(window, 'mouseup') : fromEvent(window, 'touchend')\n\n\t\t\t\t\treturn move$.pipe(\n\t\t\t\t\t\tmap(({ clientX, clientY }) => {\n\t\t\t\t\t\t\tconst deltaX = clientX - startX\n\t\t\t\t\t\t\tconst deltaY = clientY - startY\n\t\t\t\t\t\t\tconst distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY)\n\n\t\t\t\t\t\t\tif (distance > DRAG_THRESHOLD && !hasDragged) {\n\t\t\t\t\t\t\t\thasDragged = true\n\t\t\t\t\t\t\t\tthis.isDragging = true\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!hasDragged) return null\n\n\t\t\t\t\t\t\treturn this.calculateDragPosition(clientX, clientY, offsetX, offsetY, initialRect)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfilter(position => position !== null),\n\t\t\t\t\t\ttap(position => {\n\t\t\t\t\t\t\tif (position) {\n\t\t\t\t\t\t\t\tthis.position = position\n\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttakeUntil(end$),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tfinalize(() => {\n\t\t\t\t\tif (hasDragged) {\n\t\t\t\t\t\tthis.updateAnchor()\n\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t}\n\t\t\t\t\tthis.isDragging = false\n\t\t\t\t\thasDragged = false\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// Update container position based on anchor and position values\n\tprivate updateContainerPosition() {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Reset all position styles\n\t\tcontainer.style.removeProperty('left')\n\t\tcontainer.style.removeProperty('right')\n\t\tcontainer.style.removeProperty('top')\n\t\tcontainer.style.removeProperty('bottom')\n\n\t\t// Apply new position based on anchor\n\t\tif (this.anchor.includes('right')) {\n\t\t\tcontainer.style.right = `${this.position.x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${this.position.x}px`\n\t\t}\n\n\t\tif (this.anchor.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${this.position.y}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${this.position.y}px`\n\t\t}\n\t}\n\n\t// Update anchor based on current position\n\tprivate updateAnchor() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\n\t\tconst isRight = rect.left > vw / 2\n\t\tconst isBottom = rect.top > vh / 2\n\n\t\tconst newAnchor = `${isBottom ? 'bottom' : 'top'}-${isRight ? 'right' : 'left'}` as typeof this.anchor\n\n\t\tif (newAnchor !== this.anchor) {\n\t\t\t// Calculate new position values for the new anchor\n\t\t\tif (isRight) {\n\t\t\t\tthis.position.x = vw - rect.right\n\t\t\t} else {\n\t\t\t\tthis.position.x = rect.left\n\t\t\t}\n\n\t\t\tif (isBottom) {\n\t\t\t\tthis.position.y = vh - rect.bottom\n\t\t\t} else {\n\t\t\t\tthis.position.y = rect.top\n\t\t\t}\n\n\t\t\tthis.anchor = newAnchor\n\t\t}\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t}\n\n\tprotected render(): unknown {\n\t\tconst surfaceElevation = this.currentState === 'minimized' ? (this.isLowered ? '1' : '3') : '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\n\t\tconst containerClasses = {\n\t\t\t'fixed': true,\n\t\t\t'overflow-y-auto': true,\n\t\t\t'flex': true,\n\t\t\t'flex-col': true,\n\t\t\t'z-[10000]': true,\n\t\t\t'select-none': true,\n\t\t\t'will-change-transform': true,\n\t\t\t'[contain:layout_style]': true,\n\t\t\t'[transform:translate3d(0,0,0)]': true,\n\t\t\t'[backface-visibility:hidden]': true,\n\t\t\t'transition-shadow': true,\n\t\t\t'opacity-95': this.isDragging,\n\t\t\t'shadow-[0_24px_48px_-8px_rgba(0,0,0,0.2),0_12px_24px_-4px_rgba(0,0,0,0.12)]': this.isDragging,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=${this.classMap(containerClasses)} ${ref(this.containerRef)} @click=${this.bringToFront}>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-10\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerLowest\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"group sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging\n\t\t\t\t\t\t\t\t? 'cursor-grabbing'\n\t\t\t\t\t\t\t\t: 'cursor-move'}\"\n\t\t\t\t\t\t\t${ref(this.headerRef)}\n\t\t\t\t\t\t\ttitle=\"Drag to move, double-click to toggle\"\n\t\t\t\t\t\t\t@dblclick=${(e: Event) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<!-- Drag handle indicator -->\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex items-center text-surface-onVariant opacity-40 transition-opacity duration-200 group-hover:opacity-100\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-icon style=\"font-size: 20px\">drag_indicator</schmancy-icon>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Header content slot -->\n\t\t\t\t\t\t\t<div class=\"flex-1 min-w-fit items-center flex justify-start\">\n\t\t\t\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 flex-shrink-0\">\n\t\t\t\t\t\t\t\t${isMinimized\n\t\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Expand button (when minimized) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'expanded'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Expand\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon ${ref(this.iconRef)}>expand_less</schmancy-icon>\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Minimize button (when expanded) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"filled tonal\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'minimized'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Minimize\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon ${ref(this.iconRef)}>expand_more</schmancy-icon>\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`}\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.closeAndAddToNav()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close and add to navigation\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<schmancy-icon>close</schmancy-icon>\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t<schmancy-surface\n\t\t\t\t\t.hidden=${!this.isContentVisible}\n\t\t\t\t\ttype=\"containerLow\"\n\t\t\t\t\tclass=\"z-0 flex-1\"\n\t\t\t\t\t${ref(this.contentRef)}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</schmancy-surface>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}\n"],"names":["SchmancyBoat","$LitElement","css","super","arguments","this","id","containerRef","createRef","contentRef","iconRef","headerRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","isDragging","position","x","y","anchor","value","animateToState","lowered","requestUpdate","connectedCallback","window","fromEvent","pipe","takeUntil","disconnecting","subscribe","updateExpandedWidth","filter","e","key","tap","preventDefault","toggleState","close","saved","localStorage","getItem","parsed","JSON","parse","targetState","previousState","performTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","err","fromState","toState","currentAnimation","cancel","animations","createAnimations","container","finished","icon","config","fromStyles","getStyleForState","toStyles","animate","duration","fill","opacity","transform","isExpanding","state","baseStyles","maxWidth","maxHeight","borderRadius","hidden","pointerEvents","boxShadow","backdropFilter","minimized","width","getResponsiveWidth","vw","innerWidth","style","initializePosition","applyInitialStyles","updateContainerPosition","setupDragPipeline","initialStyle","Object","assign","webkitBackdropFilter","newState","closeAndAddToNav","race","discover","take","async","navComponent","addBoatItem","headerSlot","querySelector","iconElement","textContent","trim","title","includes","replace","navItem","animateToNavItem","addEventListener","animateFromNavItem","boatRect","getBoundingClientRect","navRect","keyframes","left","top","transformOrigin","expandKeyframes","bringToFront","zIndex","String","Date","now","clientX","clientY","offsetX","offsetY","initialRect","targetLeft","targetTop","vh","innerHeight","clampedLeft","Math","max","min","clampedTop","height","newX","newY","toSave","setItem","stringify","header","hasDragged","merge","button","stopPropagation","map","type","touches","rect","startX","startY","switchMap","move$","end$","deltaX","deltaY","sqrt","calculateDragPosition","finalize","updateAnchor","savePosition","removeProperty","right","bottom","isRight","isBottom","newAnchor","disconnectedCallback","surfaceElevation","isMinimized","containerClasses","fixed","flex","html","classMap","ref","__decorateClass","property","reflect","prototype","Boolean","customElement"],"mappings":"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"}
|
package/dist/boat.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./boat-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./boat-BSYtwy1W.cjs");Object.defineProperty(exports,"SchmancyBoat",{enumerable:!0,get:()=>e.SchmancyBoat});
|
|
2
2
|
//# sourceMappingURL=boat.cjs.map
|
package/dist/boat.js
CHANGED
package/dist/busy.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./spinner-
|
|
1
|
+
"use strict";require("./spinner-Cx54uto8.cjs");
|
|
2
2
|
//# sourceMappingURL=busy.cjs.map
|
package/dist/busy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./spinner-
|
|
1
|
+
import "./spinner-DZcG-AtO.js";
|
|
2
2
|
//# sourceMappingURL=busy.js.map
|
package/dist/button.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./icon-button-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./icon-button-B-uxvO86.cjs");Object.defineProperty(exports,"SchmancyButton",{enumerable:!0,get:()=>e.SchmancyButton}),Object.defineProperty(exports,"SchmnacyIconButton",{enumerable:!0,get:()=>e.SchmnacyIconButton});
|
|
2
2
|
//# sourceMappingURL=button.cjs.map
|
package/dist/button.js
CHANGED
package/dist/card.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./media-
|
|
1
|
+
"use strict";require("./media-8D6oDv1e.cjs");
|
|
2
2
|
//# sourceMappingURL=card.cjs.map
|
package/dist/card.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./media-
|
|
1
|
+
import "./media-CF1lpFAm.js";
|
|
2
2
|
//# sourceMappingURL=card.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const d=require("./tslib.es6-DgOcxv4s.cjs"),n=require("lit/decorators.js"),c=require("lit"),F=require("lit/directives/class-map.js");require("rxjs"),require("lit/directives/style-map.js");const G=require("./tailwind.mixin-
|
|
1
|
+
"use strict";const d=require("./tslib.es6-DgOcxv4s.cjs"),n=require("lit/decorators.js"),c=require("lit"),F=require("lit/directives/class-map.js");require("rxjs"),require("rxjs/operators"),require("lit/directives/style-map.js");const G=require("./tailwind.mixin-CvQn8Ynb.cjs"),H=require("lit/directives/when.js"),D=Symbol("attachableController");let N;c.isServer||(N=new MutationObserver(o=>{for(const e of o)e.target[D]?.hostConnected()}));class U{get htmlFor(){return this.host.getAttribute("for")}set htmlFor(e){e===null?this.host.removeAttribute("for"):this.host.setAttribute("for",e)}get control(){return this.host.hasAttribute("for")?this.htmlFor&&this.host.isConnected?this.host.getRootNode().querySelector(`#${this.htmlFor}`):null:this.currentControl||this.host.parentElement}set control(e){e?this.attach(e):this.detach()}constructor(e,t){this.host=e,this.onControlChange=t,this.currentControl=null,e.addController(this),e[D]=this,N?.observe(e,{attributeFilter:["for"]})}attach(e){e!==this.currentControl&&(this.setCurrentControl(e),this.host.removeAttribute("for"))}detach(){this.setCurrentControl(null),this.host.setAttribute("for","")}hostConnected(){this.setCurrentControl(this.control)}hostDisconnected(){this.setCurrentControl(null)}setCurrentControl(e){this.onControlChange(this.currentControl,e),this.currentControl=e}}const Y=["focusin","focusout","pointerdown"];class z extends c.LitElement{constructor(){super(...arguments),this.visible=!1,this.inward=!1,this.attachableController=new U(this,this.onControlChange.bind(this))}get htmlFor(){return this.attachableController.htmlFor}set htmlFor(e){this.attachableController.htmlFor=e}get control(){return this.attachableController.control}set control(e){this.attachableController.control=e}attach(e){this.attachableController.attach(e)}detach(){this.attachableController.detach()}connectedCallback(){super.connectedCallback(),this.setAttribute("aria-hidden","true")}handleEvent(e){if(!e[O]){switch(e.type){default:return;case"focusin":this.visible=this.control?.matches(":focus-visible")??!1;break;case"focusout":case"pointerdown":this.visible=!1}e[O]=!0}}onControlChange(e,t){if(!c.isServer)for(const r of Y)e?.removeEventListener(r,this),t?.addEventListener(r,this)}update(e){e.has("visible")&&this.dispatchEvent(new Event("visibility-changed")),super.update(e)}}d.t([n.property({type:Boolean,reflect:!0})],z.prototype,"visible",void 0),d.t([n.property({type:Boolean,reflect:!0})],z.prototype,"inward",void 0);const O=Symbol("handledByFocusRing"),K=c.css`:host{animation-delay:0s,calc(var(--md-focus-ring-duration, 600ms)*.25);animation-duration:calc(var(--md-focus-ring-duration, 600ms)*.25),calc(var(--md-focus-ring-duration, 600ms)*.75);animation-timing-function:cubic-bezier(0.2, 0, 0, 1);box-sizing:border-box;color:var(--md-focus-ring-color, var(--md-sys-color-secondary, #625b71));display:none;pointer-events:none;position:absolute}:host([visible]){display:flex}:host(:not([inward])){animation-name:outward-grow,outward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));inset:calc(-1*var(--md-focus-ring-outward-offset, 2px));outline:var(--md-focus-ring-width, 3px) solid currentColor}:host([inward]){animation-name:inward-grow,inward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border:var(--md-focus-ring-width, 3px) solid currentColor;inset:var(--md-focus-ring-inward-offset, 0px)}@keyframes outward-grow{from{outline-width:0}to{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes outward-shrink{from{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-grow{from{border-width:0}to{border-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-shrink{from{border-width:var(--md-focus-ring-active-width, 8px)}}@media(prefers-reduced-motion){:host{animation:none}}
|
|
2
2
|
`;let C=class extends z{};C.styles=[K],C=d.t([n.customElement("md-focus-ring")],C);const W="cubic-bezier(0.2, 0, 0, 1)";var h;(function(o){o[o.INACTIVE=0]="INACTIVE",o[o.TOUCH_DELAY=1]="TOUCH_DELAY",o[o.HOLDING=2]="HOLDING",o[o.WAITING_FOR_CLICK=3]="WAITING_FOR_CLICK"})(h||(h={}));const j=["click","contextmenu","pointercancel","pointerdown","pointerenter","pointerleave","pointerup"],Z=c.isServer?null:window.matchMedia("(forced-colors: active)");class f extends c.LitElement{constructor(){super(...arguments),this.disabled=!1,this.hovered=!1,this.pressed=!1,this.rippleSize="",this.rippleScale="",this.initialSize=0,this.state=h.INACTIVE,this.attachableController=new U(this,this.onControlChange.bind(this))}get htmlFor(){return this.attachableController.htmlFor}set htmlFor(e){this.attachableController.htmlFor=e}get control(){return this.attachableController.control}set control(e){this.attachableController.control=e}attach(e){this.attachableController.attach(e)}detach(){this.attachableController.detach()}connectedCallback(){super.connectedCallback(),this.setAttribute("aria-hidden","true")}render(){const e={hovered:this.hovered,pressed:this.pressed};return c.html`<div class="surface ${F.classMap(e)}"></div>`}update(e){e.has("disabled")&&this.disabled&&(this.hovered=!1,this.pressed=!1),super.update(e)}handlePointerenter(e){this.shouldReactToEvent(e)&&(this.hovered=!0)}handlePointerleave(e){this.shouldReactToEvent(e)&&(this.hovered=!1,this.state!==h.INACTIVE&&this.endPressAnimation())}handlePointerup(e){if(this.shouldReactToEvent(e)){if(this.state!==h.HOLDING)return this.state===h.TOUCH_DELAY?(this.state=h.WAITING_FOR_CLICK,void this.startPressAnimation(this.rippleStartEvent)):void 0;this.state=h.WAITING_FOR_CLICK}}async handlePointerdown(e){if(this.shouldReactToEvent(e)){if(this.rippleStartEvent=e,!this.isTouch(e))return this.state=h.WAITING_FOR_CLICK,void this.startPressAnimation(e);this.state=h.TOUCH_DELAY,await new Promise(t=>{setTimeout(t,150)}),this.state===h.TOUCH_DELAY&&(this.state=h.HOLDING,this.startPressAnimation(e))}}handleClick(){this.disabled||(this.state!==h.WAITING_FOR_CLICK?this.state===h.INACTIVE&&(this.startPressAnimation(),this.endPressAnimation()):this.endPressAnimation())}handlePointercancel(e){this.shouldReactToEvent(e)&&this.endPressAnimation()}handleContextmenu(){this.disabled||this.endPressAnimation()}determineRippleSize(){const{height:e,width:t}=this.getBoundingClientRect(),r=Math.max(e,t),i=Math.max(.35*r,75),a=this.currentCSSZoom??1,s=Math.floor(.2*r/a),l=Math.sqrt(t**2+e**2)+10;this.initialSize=s;const m=(l+i)/s;this.rippleScale=""+m/a,this.rippleSize=`${s}px`}getNormalizedPointerEventCoords(e){const{scrollX:t,scrollY:r}=window,{left:i,top:a}=this.getBoundingClientRect(),s=t+i,l=r+a,{pageX:m,pageY:y}=e,M=this.currentCSSZoom??1;return{x:(m-s)/M,y:(y-l)/M}}getTranslationCoordinates(e){const{height:t,width:r}=this.getBoundingClientRect(),i=this.currentCSSZoom??1,a={x:(r/i-this.initialSize)/2,y:(t/i-this.initialSize)/2};let s;return s=e instanceof PointerEvent?this.getNormalizedPointerEventCoords(e):{x:r/i/2,y:t/i/2},s={x:s.x-this.initialSize/2,y:s.y-this.initialSize/2},{startPoint:s,endPoint:a}}startPressAnimation(e){if(!this.mdRoot)return;this.pressed=!0,this.growAnimation?.cancel(),this.determineRippleSize();const{startPoint:t,endPoint:r}=this.getTranslationCoordinates(e),i=`${t.x}px, ${t.y}px`,a=`${r.x}px, ${r.y}px`;this.growAnimation=this.mdRoot.animate({top:[0,0],left:[0,0],height:[this.rippleSize,this.rippleSize],width:[this.rippleSize,this.rippleSize],transform:[`translate(${i}) scale(1)`,`translate(${a}) scale(${this.rippleScale})`]},{pseudoElement:"::after",duration:450,easing:W,fill:"forwards"})}async endPressAnimation(){this.rippleStartEvent=void 0,this.state=h.INACTIVE;const e=this.growAnimation;let t=1/0;typeof e?.currentTime=="number"?t=e.currentTime:e?.currentTime&&(t=e.currentTime.to("ms").value),t>=225?this.pressed=!1:(await new Promise(r=>{setTimeout(r,225-t)}),this.growAnimation===e&&(this.pressed=!1))}shouldReactToEvent(e){if(this.disabled||!e.isPrimary||this.rippleStartEvent&&this.rippleStartEvent.pointerId!==e.pointerId)return!1;if(e.type==="pointerenter"||e.type==="pointerleave")return!this.isTouch(e);const t=e.buttons===1;return this.isTouch(e)||t}isTouch({pointerType:e}){return e==="touch"}async handleEvent(e){if(!Z?.matches)switch(e.type){case"click":this.handleClick();break;case"contextmenu":this.handleContextmenu();break;case"pointercancel":this.handlePointercancel(e);break;case"pointerdown":await this.handlePointerdown(e);break;case"pointerenter":this.handlePointerenter(e);break;case"pointerleave":this.handlePointerleave(e);break;case"pointerup":this.handlePointerup(e)}}onControlChange(e,t){if(!c.isServer)for(const r of j)e?.removeEventListener(r,this),t?.addEventListener(r,this)}}d.t([n.property({type:Boolean,reflect:!0})],f.prototype,"disabled",void 0),d.t([n.state()],f.prototype,"hovered",void 0),d.t([n.state()],f.prototype,"pressed",void 0),d.t([n.query(".surface")],f.prototype,"mdRoot",void 0);const X=c.css`:host{display:flex;margin:auto;pointer-events:none}:host([disabled]){display:none}@media(forced-colors: active){:host{display:none}}:host,.surface{border-radius:inherit;position:absolute;inset:0;overflow:hidden}.surface{-webkit-tap-highlight-color:rgba(0,0,0,0)}.surface::before,.surface::after{content:"";opacity:0;position:absolute}.surface::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));inset:0;transition:opacity 15ms linear,background-color 15ms linear}.surface::after{background:radial-gradient(closest-side, var(--md-ripple-pressed-color, var(--md-sys-color-on-surface, #1d1b20)) max(100% - 70px, 65%), transparent 100%);transform-origin:center center;transition:opacity 375ms linear}.hovered::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-ripple-hover-opacity, 0.08)}.pressed::after{opacity:var(--md-ripple-pressed-opacity, 0.12);transition-duration:105ms}
|
|
3
3
|
`;let w=class extends f{};w.styles=[X],w=d.t([n.customElement("md-ripple")],w);const B=["role","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaCurrent","ariaDisabled","ariaExpanded","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText"],J=B.map(_);function S(o){return J.includes(o)}function _(o){return o.replace("aria","aria-").replace(/Elements?/g,"").toLowerCase()}const g=Symbol("privateIgnoreAttributeChangesFor");function E(o){return`data-${o}`}function A(o){return o.replace(/-\w/,e=>e[1].toUpperCase())}function Q(o){return o.currentTarget===o.target&&o.composedPath()[0]===o.target&&!o.target.disabled&&!function(e){const t=I;return t&&(e.preventDefault(),e.stopImmediatePropagation()),async function(){I=!0,await null,I=!1}(),t}(o)}let I=!1;const p=Symbol("internals"),P=Symbol("privateInternals"),R=Symbol("createValidator"),V=Symbol("getValidityAnchor"),T=Symbol("privateValidator"),b=Symbol("privateSyncValidity"),k=Symbol("privateCustomValidationMessage"),x=Symbol("getFormValue"),L=Symbol("getFormState");class ee{constructor(e){this.getCurrentState=e,this.currentValidity={validity:{},validationMessage:""}}getValidity(){const e=this.getCurrentState();if(!(!this.prevState||!this.equals(this.prevState,e)))return this.currentValidity;const{validity:t,validationMessage:r}=this.computeValidity(e);return this.prevState=this.copy(e),this.currentValidity={validationMessage:r,validity:{badInput:t.badInput,customError:t.customError,patternMismatch:t.patternMismatch,rangeOverflow:t.rangeOverflow,rangeUnderflow:t.rangeUnderflow,stepMismatch:t.stepMismatch,tooLong:t.tooLong,tooShort:t.tooShort,typeMismatch:t.typeMismatch,valueMissing:t.valueMissing}},this.currentValidity}}class te extends ee{computeValidity(e){return this.checkboxControl||(this.checkboxControl=document.createElement("input"),this.checkboxControl.type="checkbox"),this.checkboxControl.checked=e.checked,this.checkboxControl.required=e.required,{validity:this.checkboxControl.validity,validationMessage:this.checkboxControl.validationMessage}}equals(e,t){return e.checked===t.checked&&e.required===t.required}copy({checked:e,required:t}){return{checked:e,required:t}}}const re=function(o){var e;if(c.isServer)return o;class t extends o{constructor(){super(...arguments),this[e]=new Set}attributeChangedCallback(i,a,s){if(!S(i))return void super.attributeChangedCallback(i,a,s);if(this[g].has(i))return;this[g].add(i),this.removeAttribute(i),this[g].delete(i);const l=A(i);s===null?delete this.dataset[l]:this.dataset[l]=s,this.requestUpdate(A(i),a)}getAttribute(i){return S(i)?super.getAttribute(E(i)):super.getAttribute(i)}removeAttribute(i){super.removeAttribute(i),S(i)&&(super.removeAttribute(E(i)),this.requestUpdate())}}return e=g,function(r){for(const i of B){const a=_(i),s=E(a),l=A(a);r.createProperty(i,{attribute:a,noAccessor:!0}),r.createProperty(Symbol(s),{attribute:s,noAccessor:!0}),Object.defineProperty(r.prototype,i,{configurable:!0,enumerable:!0,get(){return this.dataset[l]??null},set(m){const y=this.dataset[l]??null;m!==y&&(m===null?delete this.dataset[l]:this.dataset[l]=m,this.requestUpdate(i,y))}})}}(t),t}(function(o){var e;class t extends o{constructor(){super(...arguments),this[e]=""}get validity(){return this[b](),this[p].validity}get validationMessage(){return this[b](),this[p].validationMessage}get willValidate(){return this[b](),this[p].willValidate}checkValidity(){return this[b](),this[p].checkValidity()}reportValidity(){return this[b](),this[p].reportValidity()}setCustomValidity(i){this[k]=i,this[b]()}requestUpdate(i,a,s){super.requestUpdate(i,a,s),this[b]()}firstUpdated(i){super.firstUpdated(i),this[b]()}[(e=k,b)](){if(c.isServer)return;this[T]||(this[T]=this[R]());const{validity:i,validationMessage:a}=this[T].getValidity(),s=!!this[k],l=this[k]||a;this[p].setValidity({...i,customError:s},l,this[V]()??void 0)}[R](){throw new Error("Implement [createValidator]")}[V](){throw new Error("Implement [getValidityAnchor]")}}return t}(function(o){class e extends o{get form(){return this[p].form}get labels(){return this[p].labels}get name(){return this.getAttribute("name")??""}set name(r){this.setAttribute("name",r)}get disabled(){return this.hasAttribute("disabled")}set disabled(r){this.toggleAttribute("disabled",r)}attributeChangedCallback(r,i,a){if(r==="name"||r==="disabled"){const s=r==="disabled"?i!==null:i;return void this.requestUpdate(r,s)}super.attributeChangedCallback(r,i,a)}requestUpdate(r,i,a){super.requestUpdate(r,i,a),this[p].setFormValue(this[x](),this[L]())}[x](){throw new Error("Implement [getFormValue]")}[L](){return this[x]()}formDisabledCallback(r){this.disabled=r}}return e.formAssociated=!0,d.t([n.property({noAccessor:!0})],e.prototype,"name",null),d.t([n.property({type:Boolean,noAccessor:!0})],e.prototype,"disabled",null),e}(($=c.LitElement,class extends ${get[p](){return this[P]||(this[P]=this.attachInternals()),this[P]}}))));var $;class u extends re{constructor(){super(),this.checked=!1,this.indeterminate=!1,this.required=!1,this.value="on",this.prevChecked=!1,this.prevDisabled=!1,this.prevIndeterminate=!1,c.isServer||this.addEventListener("click",e=>{Q(e)&&this.input&&(this.focus(),function(t){const r=new MouseEvent("click",{bubbles:!0});t.dispatchEvent(r)}(this.input))})}update(e){(e.has("checked")||e.has("disabled")||e.has("indeterminate"))&&(this.prevChecked=e.get("checked")??this.checked,this.prevDisabled=e.get("disabled")??this.disabled,this.prevIndeterminate=e.get("indeterminate")??this.indeterminate),super.update(e)}render(){const e=!this.prevChecked&&!this.prevIndeterminate,t=this.prevChecked&&!this.prevIndeterminate,r=this.prevIndeterminate,i=this.checked&&!this.indeterminate,a=this.indeterminate,s=F.classMap({disabled:this.disabled,selected:i||a,unselected:!i&&!a,checked:i,indeterminate:a,"prev-unselected":e,"prev-checked":t,"prev-indeterminate":r,"prev-disabled":this.prevDisabled}),{ariaLabel:l,ariaInvalid:m}=this;return c.html`
|
|
4
4
|
<div class="container ${s}">
|
|
@@ -37,4 +37,4 @@
|
|
|
37
37
|
${H.when(this.label,()=>c.html`<span>${this.label}</span>`,()=>c.html`<slot></slot>`)}
|
|
38
38
|
</label>
|
|
39
39
|
`}},exports.SchmancyCheckboxElement.shadowRootOptions={...c.LitElement.shadowRootOptions,delegatesFocus:!0},exports.SchmancyCheckboxElement.formAssociated=!0,v([n.property({type:Boolean,reflect:!0})],exports.SchmancyCheckboxElement.prototype,"value",2),v([n.property({type:Boolean})],exports.SchmancyCheckboxElement.prototype,"checked",1),v([n.property({type:Boolean})],exports.SchmancyCheckboxElement.prototype,"disabled",2),v([n.property({type:Boolean})],exports.SchmancyCheckboxElement.prototype,"required",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"name",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"id",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"label",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"size",2),exports.SchmancyCheckboxElement=v([n.customElement("schmancy-checkbox")],exports.SchmancyCheckboxElement);
|
|
40
|
-
//# sourceMappingURL=checkbox-
|
|
40
|
+
//# sourceMappingURL=checkbox-BBJqucMb.cjs.map
|