@mhmo91/schmancy 0.2.194 → 0.2.195
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/area.md +158 -78
- package/ai/content-drawer.md +190 -0
- package/ai/dialog.md +10 -0
- package/ai/index.md +1 -0
- package/ai/table.md +99 -1
- package/dist/_headers +2 -0
- package/dist/ai/area.md +158 -78
- package/dist/ai/content-drawer.md +190 -0
- package/dist/ai/dialog.md +10 -0
- package/dist/ai/index.md +1 -0
- package/dist/ai/table.md +99 -1
- package/dist/{animated-text-9AM64DHd.cjs → animated-text-Bu9wh3wv.cjs} +2 -2
- package/dist/{animated-text-9AM64DHd.cjs.map → animated-text-Bu9wh3wv.cjs.map} +1 -1
- package/dist/{animated-text-CVStWn5N.js → animated-text-Ci7M0QTx.js} +3 -3
- package/dist/{animated-text-CVStWn5N.js.map → animated-text-Ci7M0QTx.js.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-Cg9dqZJ5.cjs +8 -0
- package/dist/area.component-Cg9dqZJ5.cjs.map +1 -0
- package/dist/area.component-eJJ_wryh.js +191 -0
- package/dist/area.component-eJJ_wryh.js.map +1 -0
- package/dist/area.js +21 -6
- package/dist/area.js.map +1 -1
- package/dist/{autocomplete-DBXvIJgc.cjs → autocomplete-BH7nQbid.cjs} +2 -2
- package/dist/{autocomplete-DBXvIJgc.cjs.map → autocomplete-BH7nQbid.cjs.map} +1 -1
- package/dist/{autocomplete-ih92pPkb.js → autocomplete-D9n1MeKT.js} +3 -3
- package/dist/{autocomplete-ih92pPkb.js.map → autocomplete-D9n1MeKT.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-CgP1tBZq.js → avatar-B4lSs4z5.js} +183 -145
- package/dist/avatar-B4lSs4z5.js.map +1 -0
- package/dist/{avatar-Bmg5TXj9.cjs → avatar-Bg-rdjAe.cjs} +62 -24
- package/dist/avatar-Bg-rdjAe.cjs.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.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-DtnX5sT6.cjs → checkbox-CgL23smr.cjs} +10 -10
- package/dist/{checkbox-DtnX5sT6.cjs.map → checkbox-CgL23smr.cjs.map} +1 -1
- package/dist/{checkbox-Jxxbjxp0.js → checkbox-y37-tGrk.js} +72 -65
- package/dist/{checkbox-Jxxbjxp0.js.map → checkbox-y37-tGrk.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-CVDnpVUM.cjs → chips-CKST7ug-.cjs} +2 -2
- package/dist/{chips-CVDnpVUM.cjs.map → chips-CKST7ug-.cjs.map} +1 -1
- package/dist/{chips-lP7ohQep.js → chips-Ndwt1V4b.js} +3 -3
- package/dist/{chips-lP7ohQep.js.map → chips-Ndwt1V4b.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/circular-progress-BDmc1zlm.cjs +9 -0
- package/dist/circular-progress-BDmc1zlm.cjs.map +1 -0
- package/dist/circular-progress-vokDGjmG.js +35 -0
- package/dist/circular-progress-vokDGjmG.js.map +1 -0
- package/dist/circular-progress.cjs +2 -0
- package/dist/circular-progress.cjs.map +1 -0
- package/dist/circular-progress.js +5 -0
- package/dist/circular-progress.js.map +1 -0
- 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/{date-range-Ca9WLI4Q.js → date-range-CpDVPn_v.js} +3 -3
- package/dist/{date-range-Ca9WLI4Q.js.map → date-range-CpDVPn_v.js.map} +1 -1
- package/dist/{date-range-DbPA5Y-t.cjs → date-range-DfZz3ifP.cjs} +2 -2
- package/dist/{date-range-DbPA5Y-t.cjs.map → date-range-DfZz3ifP.cjs.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-BgNgQV2G.cjs → delay-ASLyLkQL.cjs} +2 -2
- package/dist/{delay-BgNgQV2G.cjs.map → delay-ASLyLkQL.cjs.map} +1 -1
- package/dist/{delay-5cCl7ji3.js → delay-CG5SRrzF.js} +2 -2
- package/dist/{delay-5cCl7ji3.js.map → delay-CG5SRrzF.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-9pumpyLD.js → dialog-content-BoPviBAt.js} +86 -82
- package/dist/dialog-content-BoPviBAt.js.map +1 -0
- package/dist/{dialog-content-qj1E8aye.cjs → dialog-content-D88EcY6L.cjs} +8 -8
- package/dist/dialog-content-D88EcY6L.cjs.map +1 -0
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-CHckHGEQ.cjs → divider-C38JDYss.cjs} +2 -2
- package/dist/{divider-CHckHGEQ.cjs.map → divider-C38JDYss.cjs.map} +1 -1
- package/dist/{divider-r8-9eNnl.js → divider-N7GWgK6o.js} +3 -3
- package/dist/{divider-r8-9eNnl.js.map → divider-N7GWgK6o.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-D-TddflQ.js → dropdown-content-DmO_yIVb.js} +3 -3
- package/dist/{dropdown-content-D-TddflQ.js.map → dropdown-content-DmO_yIVb.js.map} +1 -1
- package/dist/{dropdown-content-B41MDDRG.cjs → dropdown-content-rH8awIRA.cjs} +2 -2
- package/dist/{dropdown-content-B41MDDRG.cjs.map → dropdown-content-rH8awIRA.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-Bf0zNqji.js → flex-CXYfL6bE.js} +2 -2
- package/dist/{flex-Bf0zNqji.js.map → flex-CXYfL6bE.js.map} +1 -1
- package/dist/{flex-CFv-Zb76.cjs → flex-wYuewqrr.cjs} +2 -2
- package/dist/{flex-CFv-Zb76.cjs.map → flex-wYuewqrr.cjs.map} +1 -1
- package/dist/{form-BN75s0PI.cjs → form-CNWWdhT_.cjs} +2 -2
- package/dist/{form-BN75s0PI.cjs.map → form-CNWWdhT_.cjs.map} +1 -1
- package/dist/{form-uYcr1RLJ.js → form-q3JZjWez.js} +2 -2
- package/dist/{form-uYcr1RLJ.js.map → form-q3JZjWez.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-Cu-imayV.cjs → icon-QnmfHtfT.cjs} +2 -2
- package/dist/{icon-Cu-imayV.cjs.map → icon-QnmfHtfT.cjs.map} +1 -1
- package/dist/{icon-button-1tZaicyb.js → icon-button-DOTB_28y.js} +3 -3
- package/dist/{icon-button-1tZaicyb.js.map → icon-button-DOTB_28y.js.map} +1 -1
- package/dist/{icon-button-D0BbHnDL.cjs → icon-button-oAOX71_s.cjs} +2 -2
- package/dist/{icon-button-D0BbHnDL.cjs.map → icon-button-oAOX71_s.cjs.map} +1 -1
- package/dist/{icon-BR-jE0Y2.js → icon-pLQWXzo8.js} +3 -3
- package/dist/{icon-BR-jE0Y2.js.map → icon-pLQWXzo8.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 +190 -173
- package/dist/index.js.map +1 -1
- package/dist/{input-B2oV6Hck.cjs → input-CCniOtAr.cjs} +2 -2
- package/dist/{input-B2oV6Hck.cjs.map → input-CCniOtAr.cjs.map} +1 -1
- package/dist/{input-kiz5O3dY.js → input-DeJitVSV.js} +2 -2
- package/dist/{input-kiz5O3dY.js.map → input-DeJitVSV.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-CMHoPfX9.cjs → list-Ad-24MHW.cjs} +2 -2
- package/dist/{list-CMHoPfX9.cjs.map → list-Ad-24MHW.cjs.map} +1 -1
- package/dist/{list-wT4DLXCh.js → list-Ca79GGNH.js} +2 -2
- package/dist/{list-wT4DLXCh.js.map → list-Ca79GGNH.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-B9Qdq5S_.js → litElement.mixin-BoUiP2tU.js} +2 -2
- package/dist/{litElement.mixin-B9Qdq5S_.js.map → litElement.mixin-BoUiP2tU.js.map} +1 -1
- package/dist/{litElement.mixin-CHvyxfxf.cjs → litElement.mixin-qOTYSaNG.cjs} +2 -2
- package/dist/{litElement.mixin-CHvyxfxf.cjs.map → litElement.mixin-qOTYSaNG.cjs.map} +1 -1
- package/dist/{menu-BcSplMNh.cjs → menu-6Wum4ysc.cjs} +2 -2
- package/dist/{menu-BcSplMNh.cjs.map → menu-6Wum4ysc.cjs.map} +1 -1
- package/dist/{menu-Dl1QU86K.js → menu-Dd_X9oET.js} +3 -3
- package/dist/{menu-Dl1QU86K.js.map → menu-Dd_X9oET.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{notification-service-CC698xHg.js → notification-service-C-9IqObm.js} +3 -3
- package/dist/{notification-service-CC698xHg.js.map → notification-service-C-9IqObm.js.map} +1 -1
- package/dist/{notification-service-BV9ybQBu.cjs → notification-service-CrNyAbmv.cjs} +2 -2
- package/dist/{notification-service-BV9ybQBu.cjs.map → notification-service-CrNyAbmv.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-CkLBgH71.cjs → option-BbBbwrJq.cjs} +2 -2
- package/dist/{option-CkLBgH71.cjs.map → option-BbBbwrJq.cjs.map} +1 -1
- package/dist/{option-DDxxXwwc.js → option-DVSXUJ96.js} +2 -2
- package/dist/{option-DDxxXwwc.js.map → option-DVSXUJ96.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-DDTO5_AA.js → payment-card-form-CTjgVoJK.js} +3 -3
- package/dist/{payment-card-form-DDTO5_AA.js.map → payment-card-form-CTjgVoJK.js.map} +1 -1
- package/dist/{payment-card-form-UWbAYNPR.cjs → payment-card-form-R5wNWHAv.cjs} +2 -2
- package/dist/{payment-card-form-UWbAYNPR.cjs.map → payment-card-form-R5wNWHAv.cjs.map} +1 -1
- package/dist/{radio-button-wWoxPDfq.js → radio-button-BDAW1Euc.js} +2 -2
- package/dist/{radio-button-wWoxPDfq.js.map → radio-button-BDAW1Euc.js.map} +1 -1
- package/dist/{radio-button-BykiVxTD.cjs → radio-button-Cg1JobXT.cjs} +2 -2
- package/dist/{radio-button-BykiVxTD.cjs.map → radio-button-Cg1JobXT.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-ByO98z7L.js → schmancy-steps-container--d7VK-QR.js} +2 -2
- package/dist/{schmancy-steps-container-ByO98z7L.js.map → schmancy-steps-container--d7VK-QR.js.map} +1 -1
- package/dist/{schmancy-steps-container-B1mIGa9M.cjs → schmancy-steps-container-BAPIxl4s.cjs} +2 -2
- package/dist/{schmancy-steps-container-B1mIGa9M.cjs.map → schmancy-steps-container-BAPIxl4s.cjs.map} +1 -1
- package/dist/{select-DE57Nios.cjs → select-CnjO7DLl.cjs} +2 -2
- package/dist/{select-DE57Nios.cjs.map → select-CnjO7DLl.cjs.map} +1 -1
- package/dist/{select-BIOhocL7.js → select-DfbOOZtm.js} +3 -3
- package/dist/{select-BIOhocL7.js.map → select-DfbOOZtm.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-Dh4MLVsU.js → sheet-DhbKM9gJ.js} +3 -3
- package/dist/{sheet-Dh4MLVsU.js.map → sheet-DhbKM9gJ.js.map} +1 -1
- package/dist/{sheet-fZYAWGsm.cjs → sheet-Ds0Fp0lM.cjs} +2 -2
- package/dist/{sheet-fZYAWGsm.cjs.map → sheet-Ds0Fp0lM.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-DVlJoDgU.js → slider-Ba3AEh2W.js} +3 -3
- package/dist/{slider-DVlJoDgU.js.map → slider-Ba3AEh2W.js.map} +1 -1
- package/dist/{slider-CejrdmPF.cjs → slider-CSOzhUhA.cjs} +2 -2
- package/dist/{slider-CejrdmPF.cjs.map → slider-CSOzhUhA.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-DbTnai_Q.js → spinner-BgeQqlFU.js} +3 -3
- package/dist/{spinner-DbTnai_Q.js.map → spinner-BgeQqlFU.js.map} +1 -1
- package/dist/{spinner-DxVJ7QJZ.cjs → spinner-llMfjiIc.cjs} +2 -2
- package/dist/{spinner-DxVJ7QJZ.cjs.map → spinner-llMfjiIc.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/surface-CT2g8fDM.cjs +92 -0
- package/dist/surface-CT2g8fDM.cjs.map +1 -0
- package/dist/surface-UcsAmLj5.js +113 -0
- package/dist/surface-UcsAmLj5.js.map +1 -0
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-CBhyHINV.cjs → table-CSBhQ-pa.cjs} +4 -4
- package/dist/{table-CBhyHINV.cjs.map → table-CSBhQ-pa.cjs.map} +1 -1
- package/dist/{table-CqUv1TOC.js → table-DuUlrDCu.js} +72 -68
- package/dist/{table-CqUv1TOC.js.map → table-DuUlrDCu.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-DUo2f_sV.js → tabs-compatibility-BVFHArgV.js} +2 -2
- package/dist/{tabs-compatibility-DUo2f_sV.js.map → tabs-compatibility-BVFHArgV.js.map} +1 -1
- package/dist/{tabs-compatibility-DPD6jfGF.cjs → tabs-compatibility-Bt3coGzN.cjs} +2 -2
- package/dist/{tabs-compatibility-DPD6jfGF.cjs.map → tabs-compatibility-Bt3coGzN.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-C71e_LC1.js +43 -0
- package/dist/{tailwind.mixin-Di7KWye7.js.map → tailwind.mixin-C71e_LC1.js.map} +1 -1
- package/dist/tailwind.mixin-CFCJhe5p.cjs +2 -0
- package/dist/{tailwind.mixin-Dm5QDZav.cjs.map → tailwind.mixin-CFCJhe5p.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-Dbz18REy.js → textarea-B8eIpYa-.js} +2 -2
- package/dist/{textarea-Dbz18REy.js.map → textarea-B8eIpYa-.js.map} +1 -1
- package/dist/{textarea-CesFdBkm.cjs → textarea-CtCk_1Fq.cjs} +2 -2
- package/dist/{textarea-CesFdBkm.cjs.map → textarea-CtCk_1Fq.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-Bt2OV4iu.cjs → theme-button-DQe5uOxU.cjs} +2 -2
- package/dist/{theme-button-Bt2OV4iu.cjs.map → theme-button-DQe5uOxU.cjs.map} +1 -1
- package/dist/{theme-button-lqbT2_LL.js → theme-button-TEzhKUy6.js} +2 -2
- package/dist/{theme-button-lqbT2_LL.js.map → theme-button-TEzhKUy6.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-BlBaN7d6.cjs → theme.component-Be6M74nN.cjs} +3 -3
- package/dist/{theme.component-BlBaN7d6.cjs.map → theme.component-Be6M74nN.cjs.map} +1 -1
- package/dist/{theme.component-xarFSe8p.js → theme.component-DiTpToTC.js} +2 -2
- package/dist/{theme.component-xarFSe8p.js.map → theme.component-DiTpToTC.js.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-VUMRmZaJ.cjs → timezone-C1aR24i0.cjs} +2 -2
- package/dist/{timezone-VUMRmZaJ.cjs.map → timezone-C1aR24i0.cjs.map} +1 -1
- package/dist/{timezone-DwT_pQrj.js → timezone-CBSuTrU2.js} +3 -3
- package/dist/{timezone-DwT_pQrj.js.map → timezone-CBSuTrU2.js.map} +1 -1
- package/dist/{tooltip-BKOHVCMK.js → tooltip-DYQW9R3I.js} +2 -2
- package/dist/{tooltip-BKOHVCMK.js.map → tooltip-DYQW9R3I.js.map} +1 -1
- package/dist/{tooltip-Cvoroe7w.cjs → tooltip-DYcXTtFy.cjs} +2 -2
- package/dist/{tooltip-Cvoroe7w.cjs.map → tooltip-DYcXTtFy.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-Cyp2AZ8g.cjs → tree-D-rTjnPs.cjs} +2 -2
- package/dist/{tree-Cyp2AZ8g.cjs.map → tree-D-rTjnPs.cjs.map} +1 -1
- package/dist/{tree-_FJnHVmP.js → tree-nsSIkdNT.js} +2 -2
- package/dist/{tree-_FJnHVmP.js.map → tree-nsSIkdNT.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-BIm2tOe4.cjs → typewriter-Cj0R-RDa.cjs} +2 -2
- package/dist/{typewriter-BIm2tOe4.cjs.map → typewriter-Cj0R-RDa.cjs.map} +1 -1
- package/dist/{typewriter-DWfXPBni.js → typewriter-DrYb6_FB.js} +22 -22
- package/dist/{typewriter-DWfXPBni.js.map → typewriter-DrYb6_FB.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-OpLt6LNd.cjs → typography-B0Kj2XoC.cjs} +2 -2
- package/dist/{typography-OpLt6LNd.cjs.map → typography-B0Kj2XoC.cjs.map} +1 -1
- package/dist/{typography-DaKLzjFB.js → typography-DMj2H_lZ.js} +2 -2
- package/dist/{typography-DaKLzjFB.js.map → typography-DMj2H_lZ.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/utils-BqFGvnN9.cjs +2 -0
- package/dist/utils-BqFGvnN9.cjs.map +1 -0
- package/dist/utils-jduntaQU.js +128 -0
- package/dist/utils-jduntaQU.js.map +1 -0
- package/package.json +13 -14
- package/types/src/area/area.component.d.ts +1 -1
- package/types/src/area/area.service.d.ts +44 -26
- package/types/src/area/index.d.ts +1 -0
- package/types/src/area/utils.d.ts +91 -1
- package/types/src/checkbox/checkbox.d.ts +9 -0
- package/types/src/circular-progress/circular-progress.d.ts +15 -0
- package/types/src/circular-progress/index.d.ts +1 -0
- package/types/src/dialog/dailog.d.ts +8 -0
- package/types/src/dialog/dialog-service.d.ts +1 -0
- package/types/src/index.d.ts +1 -0
- package/types/src/table/table.d.ts +1 -0
- package/dist/area.component-CzFJM7Y4.js +0 -143
- package/dist/area.component-CzFJM7Y4.js.map +0 -1
- package/dist/area.component-WxccFh1z.cjs +0 -8
- package/dist/area.component-WxccFh1z.cjs.map +0 -1
- package/dist/avatar-Bmg5TXj9.cjs.map +0 -1
- package/dist/avatar-CgP1tBZq.js.map +0 -1
- package/dist/dialog-content-9pumpyLD.js.map +0 -1
- package/dist/dialog-content-qj1E8aye.cjs.map +0 -1
- package/dist/surface-BTuzKmT2.cjs +0 -20
- package/dist/surface-BTuzKmT2.cjs.map +0 -1
- package/dist/surface-DXx1bJN4.js +0 -43
- package/dist/surface-DXx1bJN4.js.map +0 -1
- package/dist/tailwind.mixin-Di7KWye7.js +0 -43
- package/dist/tailwind.mixin-Dm5QDZav.cjs +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { autoUpdate as j, offset as O, flip as $, shift as P, arrow as M, computePosition as z } from "@floating-ui/dom";
|
|
2
2
|
import { directive as D, Directive as R, PartType as U } from "lit/directive.js";
|
|
3
|
-
import { T as q } from "./tailwind.mixin-
|
|
3
|
+
import { T as q } from "./tailwind.mixin-C71e_LC1.js";
|
|
4
4
|
import { css as B, html as F } from "lit";
|
|
5
5
|
import { property as y, state as G, customElement as H } from "lit/decorators.js";
|
|
6
6
|
import { fromEvent as h, takeUntil as v, merge as S } from "rxjs";
|
|
@@ -118,4 +118,4 @@ export {
|
|
|
118
118
|
p as S,
|
|
119
119
|
tt as t
|
|
120
120
|
};
|
|
121
|
-
//# sourceMappingURL=tooltip-
|
|
121
|
+
//# sourceMappingURL=tooltip-DYQW9R3I.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-BKOHVCMK.js","sources":["../src/tooltip/tooltip.directive.ts","../src/tooltip/tooltip.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners\n\t\t\telement.addEventListener('mouseenter', showTooltip)\n\t\t\telement.addEventListener('focus', showTooltip)\n\t\t\telement.addEventListener('mouseleave', hideTooltip)\n\t\t\telement.addEventListener('blur', hideTooltip)\n\n\t\t\t// Add keyboard handler\n\t\t\tdocument.addEventListener('keydown', (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\thideTooltip()\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n","import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil } from 'rxjs'\nimport { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'\n\n/**\n * A tooltip component that displays a text tooltip when hovering over content.\n * Addresses shadow DOM limitations by teleporting the tooltip to document.body.\n *\n * @element schmancy-tooltip\n */\n@customElement('schmancy-tooltip')\nexport class SchmancyTooltip extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n`) {\n\t@property({ type: String })\n\ttext = ''\n\n\t@property({ type: String })\n\tposition: 'top' | 'right' | 'bottom' | 'left' = 'top'\n\n\t@property({ type: Number })\n\tdelay = 50\n\n\t@property({ type: Boolean })\n\tdisabled = false\n\n\t@state() private visible = false\n\n\tprivate triggerElement: HTMLElement | null = null\n\tprivate tooltipElement: HTMLElement | null = null\n\tprivate cleanup: (() => void) | undefined\n\tprivate showTimeoutId: number | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create tooltip element once\n\t\tif (!this.tooltipElement) {\n\t\t\tthis.createTooltipElement()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\t// Wait for slotted elements to be available\n\t\tthis.updateComplete.then(() => {\n\t\t\t// Get the first slotted element as trigger\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement\n\t\t\tconst slottedElements = slot?.assignedElements() || []\n\n\t\t\tif (slottedElements.length > 0) {\n\t\t\t\tthis.triggerElement = slottedElements[0] as HTMLElement\n\t\t\t\tthis.setupEvents()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createTooltipElement() {\n\t\t// Create the tooltip element in document.body\n\t\tthis.tooltipElement = document.createElement('div')\n\t\tthis.tooltipElement.className = 'schmancy-tooltip'\n\n\t\t// Apply styles\n\t\tObject.assign(this.tooltipElement.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10000',\n\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\tpadding: '8px 12px',\n\t\t\tborderRadius: '4px',\n\t\t\tfontSize: '14px',\n\t\t\tfontWeight: 'normal',\n\t\t\tmaxWidth: '300px',\n\t\t\tpointerEvents: 'none',\n\t\t\topacity: '0',\n\t\t\ttransition: 'opacity 150ms ease',\n\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\ttextAlign: 'center',\n\t\t})\n\n\t\t// Set ARIA attributes\n\t\tthis.tooltipElement.setAttribute('role', 'tooltip')\n\n\t\t// Add to document\n\t\tdocument.body.appendChild(this.tooltipElement)\n\t}\n\n\tprivate setupEvents() {\n\t\tif (!this.triggerElement || this.disabled) return\n\n\t\t// Generate unique ID for ARIA\n\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\tif (this.tooltipElement) {\n\t\t\tthis.tooltipElement.id = tooltipId\n\t\t\tthis.triggerElement.setAttribute('aria-describedby', tooltipId)\n\t\t}\n\n\t\t// Setup event streams using RxJS\n\t\tconst mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')\n\t\tconst focus$ = fromEvent(this.triggerElement, 'focus')\n\t\tconst mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')\n\t\tconst blur$ = fromEvent(this.triggerElement, 'blur')\n\n\t\t// Global escape key handler\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tif (event.key === 'Escape' && this.visible) {\n\t\t\t\t\tthis.hideTooltip()\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Handle showing\n\t\tmerge(mouseEnter$, focus$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showTooltip()\n\t\t\t})\n\n\t\t// Handle hiding\n\t\tmerge(mouseLeave$, blur$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideTooltip()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Clean up\n\t\tif (this.tooltipElement && document.body.contains(this.tooltipElement)) {\n\t\t\tdocument.body.removeChild(this.tooltipElement)\n\t\t}\n\t\tthis.cleanup?.()\n\t\tclearTimeout(this.showTimeoutId)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tprivate showTooltip() {\n\t\tif (this.disabled || !this.tooltipElement || !this.triggerElement) return\n\n\t\t// Clear any existing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Set timeout for showing\n\t\tthis.showTimeoutId = window.setTimeout(() => {\n\t\t\t// Update content\n\t\t\tif (this.tooltipElement) {\n\t\t\t\tthis.tooltipElement.textContent = this.text\n\n\t\t\t\t// Make visible\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.tooltipElement.style.opacity = '1'\n\n\t\t\t\t// Initialize positioning\n\t\t\t\tthis.initializePositioning()\n\t\t\t}\n\t\t}, this.delay)\n\t}\n\n\tprivate hideTooltip() {\n\t\t// Clear showing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Hide tooltip\n\t\tif (this.tooltipElement) {\n\t\t\tthis.visible = false\n\t\t\tthis.tooltipElement.style.opacity = '0'\n\t\t}\n\n\t\t// Clean up positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t}\n\n\tprivate initializePositioning() {\n\t\tif (!this.triggerElement || !this.tooltipElement) return\n\n\t\t// Clean up existing positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t}\n\n\t\t// Set up auto-updating position\n\t\tthis.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {\n\t\t\t// Compute position\n\t\t\tcomputePosition(this.triggerElement!, this.tooltipElement!, {\n\t\t\t\tplacement: this.position as Placement,\n\t\t\t\tmiddleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Apply position\n\t\t\t\tif (this.tooltipElement) {\n\t\t\t\t\tObject.assign(this.tooltipElement.style, {\n\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tooltip': SchmancyTooltip\n\t}\n}\n"],"names":["tooltipMap","WeakMap","tooltip","directive","Directive","partInfo","super","type","PartType","ELEMENT","Error","text","options","part","element","position","delay","showArrow","tooltipData","get","tooltipElement","textContent","arrowElement","style","visibility","document","createElement","className","Object","assign","zIndex","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","maxWidth","pointerEvents","opacity","transition","boxShadow","textAlign","width","height","background","transform","appendChild","setAttribute","tooltipId","Math","random","toString","slice","id","body","set","showTooltip","showTimeout","clearTimeout","window","setTimeout","contains","cleanup","autoUpdate","async","middleware","offset","flip","fallbackPlacements","filter","p","shift","push","arrow","x","y","placement","middlewareData","computePosition","strategy","left","top","arrowX","arrowY","staticSide","right","bottom","split","requestAnimationFrame","hideTooltip","addEventListener","e","key","c","removeChild","hasAttribute","removeAttribute","delete","SchmancyTooltip","TailwindElement","css","constructor","arguments","this","disabled","visible","triggerElement","connectedCallback","createTooltipElement","firstUpdated","updateComplete","then","slot","shadowRoot","querySelector","slottedElements","assignedElements","length","setupEvents","mouseEnter$","fromEvent","focus$","mouseLeave$","blur$","pipe","takeUntil","disconnecting","subscribe","event","merge","disconnectedCallback","showTimeoutId","initializePositioning","render","html","__decorateClass","property","String","prototype","Number","Boolean","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip-DYQW9R3I.js","sources":["../src/tooltip/tooltip.directive.ts","../src/tooltip/tooltip.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners\n\t\t\telement.addEventListener('mouseenter', showTooltip)\n\t\t\telement.addEventListener('focus', showTooltip)\n\t\t\telement.addEventListener('mouseleave', hideTooltip)\n\t\t\telement.addEventListener('blur', hideTooltip)\n\n\t\t\t// Add keyboard handler\n\t\t\tdocument.addEventListener('keydown', (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\thideTooltip()\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n","import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil } from 'rxjs'\nimport { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'\n\n/**\n * A tooltip component that displays a text tooltip when hovering over content.\n * Addresses shadow DOM limitations by teleporting the tooltip to document.body.\n *\n * @element schmancy-tooltip\n */\n@customElement('schmancy-tooltip')\nexport class SchmancyTooltip extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n`) {\n\t@property({ type: String })\n\ttext = ''\n\n\t@property({ type: String })\n\tposition: 'top' | 'right' | 'bottom' | 'left' = 'top'\n\n\t@property({ type: Number })\n\tdelay = 50\n\n\t@property({ type: Boolean })\n\tdisabled = false\n\n\t@state() private visible = false\n\n\tprivate triggerElement: HTMLElement | null = null\n\tprivate tooltipElement: HTMLElement | null = null\n\tprivate cleanup: (() => void) | undefined\n\tprivate showTimeoutId: number | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create tooltip element once\n\t\tif (!this.tooltipElement) {\n\t\t\tthis.createTooltipElement()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\t// Wait for slotted elements to be available\n\t\tthis.updateComplete.then(() => {\n\t\t\t// Get the first slotted element as trigger\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement\n\t\t\tconst slottedElements = slot?.assignedElements() || []\n\n\t\t\tif (slottedElements.length > 0) {\n\t\t\t\tthis.triggerElement = slottedElements[0] as HTMLElement\n\t\t\t\tthis.setupEvents()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createTooltipElement() {\n\t\t// Create the tooltip element in document.body\n\t\tthis.tooltipElement = document.createElement('div')\n\t\tthis.tooltipElement.className = 'schmancy-tooltip'\n\n\t\t// Apply styles\n\t\tObject.assign(this.tooltipElement.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10000',\n\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\tpadding: '8px 12px',\n\t\t\tborderRadius: '4px',\n\t\t\tfontSize: '14px',\n\t\t\tfontWeight: 'normal',\n\t\t\tmaxWidth: '300px',\n\t\t\tpointerEvents: 'none',\n\t\t\topacity: '0',\n\t\t\ttransition: 'opacity 150ms ease',\n\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\ttextAlign: 'center',\n\t\t})\n\n\t\t// Set ARIA attributes\n\t\tthis.tooltipElement.setAttribute('role', 'tooltip')\n\n\t\t// Add to document\n\t\tdocument.body.appendChild(this.tooltipElement)\n\t}\n\n\tprivate setupEvents() {\n\t\tif (!this.triggerElement || this.disabled) return\n\n\t\t// Generate unique ID for ARIA\n\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\tif (this.tooltipElement) {\n\t\t\tthis.tooltipElement.id = tooltipId\n\t\t\tthis.triggerElement.setAttribute('aria-describedby', tooltipId)\n\t\t}\n\n\t\t// Setup event streams using RxJS\n\t\tconst mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')\n\t\tconst focus$ = fromEvent(this.triggerElement, 'focus')\n\t\tconst mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')\n\t\tconst blur$ = fromEvent(this.triggerElement, 'blur')\n\n\t\t// Global escape key handler\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tif (event.key === 'Escape' && this.visible) {\n\t\t\t\t\tthis.hideTooltip()\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Handle showing\n\t\tmerge(mouseEnter$, focus$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showTooltip()\n\t\t\t})\n\n\t\t// Handle hiding\n\t\tmerge(mouseLeave$, blur$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideTooltip()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Clean up\n\t\tif (this.tooltipElement && document.body.contains(this.tooltipElement)) {\n\t\t\tdocument.body.removeChild(this.tooltipElement)\n\t\t}\n\t\tthis.cleanup?.()\n\t\tclearTimeout(this.showTimeoutId)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tprivate showTooltip() {\n\t\tif (this.disabled || !this.tooltipElement || !this.triggerElement) return\n\n\t\t// Clear any existing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Set timeout for showing\n\t\tthis.showTimeoutId = window.setTimeout(() => {\n\t\t\t// Update content\n\t\t\tif (this.tooltipElement) {\n\t\t\t\tthis.tooltipElement.textContent = this.text\n\n\t\t\t\t// Make visible\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.tooltipElement.style.opacity = '1'\n\n\t\t\t\t// Initialize positioning\n\t\t\t\tthis.initializePositioning()\n\t\t\t}\n\t\t}, this.delay)\n\t}\n\n\tprivate hideTooltip() {\n\t\t// Clear showing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Hide tooltip\n\t\tif (this.tooltipElement) {\n\t\t\tthis.visible = false\n\t\t\tthis.tooltipElement.style.opacity = '0'\n\t\t}\n\n\t\t// Clean up positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t}\n\n\tprivate initializePositioning() {\n\t\tif (!this.triggerElement || !this.tooltipElement) return\n\n\t\t// Clean up existing positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t}\n\n\t\t// Set up auto-updating position\n\t\tthis.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {\n\t\t\t// Compute position\n\t\t\tcomputePosition(this.triggerElement!, this.tooltipElement!, {\n\t\t\t\tplacement: this.position as Placement,\n\t\t\t\tmiddleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Apply position\n\t\t\t\tif (this.tooltipElement) {\n\t\t\t\t\tObject.assign(this.tooltipElement.style, {\n\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tooltip': SchmancyTooltip\n\t}\n}\n"],"names":["tooltipMap","WeakMap","tooltip","directive","Directive","partInfo","super","type","PartType","ELEMENT","Error","text","options","part","element","position","delay","showArrow","tooltipData","get","tooltipElement","textContent","arrowElement","style","visibility","document","createElement","className","Object","assign","zIndex","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","maxWidth","pointerEvents","opacity","transition","boxShadow","textAlign","width","height","background","transform","appendChild","setAttribute","tooltipId","Math","random","toString","slice","id","body","set","showTooltip","showTimeout","clearTimeout","window","setTimeout","contains","cleanup","autoUpdate","async","middleware","offset","flip","fallbackPlacements","filter","p","shift","push","arrow","x","y","placement","middlewareData","computePosition","strategy","left","top","arrowX","arrowY","staticSide","right","bottom","split","requestAnimationFrame","hideTooltip","addEventListener","e","key","c","removeChild","hasAttribute","removeAttribute","delete","SchmancyTooltip","TailwindElement","css","constructor","arguments","this","disabled","visible","triggerElement","connectedCallback","createTooltipElement","firstUpdated","updateComplete","then","slot","shadowRoot","querySelector","slottedElements","assignedElements","length","setupEvents","mouseEnter$","fromEvent","focus$","mouseLeave$","blur$","pipe","takeUntil","disconnecting","subscribe","event","merge","disconnectedCallback","showTimeoutId","initializePositioning","render","html","__decorateClass","property","String","prototype","Number","Boolean","state","customElement"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";const r=require("@floating-ui/dom"),w=require("lit/directive.js"),z=require("./tailwind.mixin-
|
|
1
|
+
"use strict";const r=require("@floating-ui/dom"),w=require("lit/directive.js"),z=require("./tailwind.mixin-CFCJhe5p.cjs"),O=require("lit"),m=require("lit/decorators.js"),a=require("rxjs"),b=new WeakMap;class I extends w.Directive{constructor(i){if(super(i),i.type!==w.PartType.ELEMENT)throw new Error("The tooltip directive can only be used on elements")}render(i,o={}){return{text:i,options:o}}update(i,[o,e={}]){const l=i.element,s=(e==null?void 0:e.position)||"top",h=(e==null?void 0:e.delay)||300,y=(e==null?void 0:e.showArrow)!==!1;let t=b.get(l);if(t)t.tooltipElement.textContent=o,t.arrowElement&&(t.arrowElement.style.visibility=y?"visible":"hidden");else{const p=document.createElement("div");let u;p.className="schmancy-tooltip",Object.assign(p.style,{position:"absolute",zIndex:"10000",backgroundColor:"var(--schmancy-sys-color-surface-highest, #333)",color:"var(--schmancy-sys-color-surface-on, white)",padding:"8px 12px",borderRadius:"4px",fontSize:"14px",fontWeight:"normal",maxWidth:"300px",pointerEvents:"none",opacity:"0",transition:"opacity 150ms ease",boxShadow:"var(--schmancy-sys-elevation-2)",textAlign:"center",visibility:"hidden"}),y&&(u=document.createElement("div"),u.className="schmancy-tooltip-arrow",Object.assign(u.style,{position:"absolute",width:"8px",height:"8px",background:"inherit",visibility:"hidden",transform:"rotate(45deg)"}),p.appendChild(u)),p.setAttribute("role","tooltip");const f=`tooltip-${Math.random().toString(36).slice(2,9)}`;p.id=f,l.setAttribute("aria-describedby",f),document.body.appendChild(p),t={tooltipElement:p,arrowElement:u},b.set(l,t);const x=()=>{t!=null&&t.showTimeout&&clearTimeout(t.showTimeout),t.showTimeout=window.setTimeout(()=>{t.tooltipElement.textContent=o,y&&t.arrowElement&&!t.tooltipElement.contains(t.arrowElement)&&t.tooltipElement.appendChild(t.arrowElement),t.tooltipElement.style.visibility="visible",t.cleanup&&t.cleanup(),t.cleanup=r.autoUpdate(l,t.tooltipElement,()=>async function(v,c,T,k){const S=[r.offset(8),r.flip({fallbackPlacements:["top","right","bottom","left"].filter(E=>E!==T),padding:5}),r.shift({padding:5})];k&&c.arrowElement&&S.push(r.arrow({element:c.arrowElement}));const{x:j,y:q,placement:P,middlewareData:C}=await r.computePosition(v,c.tooltipElement,{placement:T,middleware:S,strategy:"fixed"});if(Object.assign(c.tooltipElement.style,{left:`${j}px`,top:`${q}px`,position:"fixed"}),k&&c.arrowElement&&C.arrow){const{x:E,y:A}=C.arrow,$={top:"bottom",right:"left",bottom:"top",left:"right"}[P.split("-")[0]]||"bottom";Object.assign(c.arrowElement.style,{left:E!=null?`${E}px`:"",top:A!=null?`${A}px`:"",[$]:"-4px",visibility:"visible"})}}(l,t,s,y)),requestAnimationFrame(()=>{t.tooltipElement.style.opacity="1"})},h)},g=()=>{t!=null&&t.showTimeout&&clearTimeout(t.showTimeout),t.tooltipElement.style.opacity="0",setTimeout(()=>{t.tooltipElement.style.visibility="hidden"},150),t!=null&&t.cleanup&&(t.cleanup(),t.cleanup=void 0)};l.addEventListener("mouseenter",x),l.addEventListener("focus",x),l.addEventListener("mouseleave",g),l.addEventListener("blur",g),document.addEventListener("keydown",v=>{v.key==="Escape"&&(t==null?void 0:t.tooltipElement.style.opacity)==="1"&&g()})}return{text:o,options:e}}disconnected(i){const o=i.element,e=b.get(o);e&&(e.showTimeout&&clearTimeout(e.showTimeout),e.cleanup&&e.cleanup(),document.body.contains(e.tooltipElement)&&document.body.removeChild(e.tooltipElement),o.hasAttribute("aria-describedby")&&o.removeAttribute("aria-describedby"),b.delete(o))}}const L=w.directive(I);var U=Object.defineProperty,N=Object.getOwnPropertyDescriptor,d=(n,i,o,e)=>{for(var l,s=e>1?void 0:e?N(i,o):i,h=n.length-1;h>=0;h--)(l=n[h])&&(s=(e?l(i,o,s):l(s))||s);return e&&s&&U(i,o,s),s};exports.SchmancyTooltip=class extends z.TailwindElement(O.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: inline-block;
|
|
4
4
|
position: relative;
|
|
5
5
|
}
|
|
6
6
|
`){constructor(){super(...arguments),this.text="",this.position="top",this.delay=50,this.disabled=!1,this.visible=!1,this.triggerElement=null,this.tooltipElement=null}connectedCallback(){super.connectedCallback(),this.tooltipElement||this.createTooltipElement()}firstUpdated(){this.updateComplete.then(()=>{var o;const n=(o=this.shadowRoot)==null?void 0:o.querySelector("slot"),i=(n==null?void 0:n.assignedElements())||[];i.length>0&&(this.triggerElement=i[0],this.setupEvents())})}createTooltipElement(){this.tooltipElement=document.createElement("div"),this.tooltipElement.className="schmancy-tooltip",Object.assign(this.tooltipElement.style,{position:"absolute",zIndex:"10000",backgroundColor:"var(--schmancy-sys-color-surface-highest, #333)",color:"var(--schmancy-sys-color-surface-on, white)",padding:"8px 12px",borderRadius:"4px",fontSize:"14px",fontWeight:"normal",maxWidth:"300px",pointerEvents:"none",opacity:"0",transition:"opacity 150ms ease",boxShadow:"var(--schmancy-sys-elevation-2)",textAlign:"center"}),this.tooltipElement.setAttribute("role","tooltip"),document.body.appendChild(this.tooltipElement)}setupEvents(){if(!this.triggerElement||this.disabled)return;const n=`tooltip-${Math.random().toString(36).slice(2,9)}`;this.tooltipElement&&(this.tooltipElement.id=n,this.triggerElement.setAttribute("aria-describedby",n));const i=a.fromEvent(this.triggerElement,"mouseenter"),o=a.fromEvent(this.triggerElement,"focus"),e=a.fromEvent(this.triggerElement,"mouseleave"),l=a.fromEvent(this.triggerElement,"blur");a.fromEvent(document,"keydown").pipe(a.takeUntil(this.disconnecting)).subscribe(s=>{s.key==="Escape"&&this.visible&&this.hideTooltip()}),a.merge(i,o).pipe(a.takeUntil(this.disconnecting)).subscribe(()=>{this.showTooltip()}),a.merge(e,l).pipe(a.takeUntil(this.disconnecting)).subscribe(()=>{this.hideTooltip()})}disconnectedCallback(){var n;this.tooltipElement&&document.body.contains(this.tooltipElement)&&document.body.removeChild(this.tooltipElement),(n=this.cleanup)==null||n.call(this),clearTimeout(this.showTimeoutId),super.disconnectedCallback()}showTooltip(){!this.disabled&&this.tooltipElement&&this.triggerElement&&(clearTimeout(this.showTimeoutId),this.showTimeoutId=window.setTimeout(()=>{this.tooltipElement&&(this.tooltipElement.textContent=this.text,this.visible=!0,this.tooltipElement.style.opacity="1",this.initializePositioning())},this.delay))}hideTooltip(){clearTimeout(this.showTimeoutId),this.tooltipElement&&(this.visible=!1,this.tooltipElement.style.opacity="0"),this.cleanup&&(this.cleanup(),this.cleanup=void 0)}initializePositioning(){this.triggerElement&&this.tooltipElement&&(this.cleanup&&this.cleanup(),this.cleanup=r.autoUpdate(this.triggerElement,this.tooltipElement,()=>{r.computePosition(this.triggerElement,this.tooltipElement,{placement:this.position,middleware:[r.offset(8),r.flip({padding:5}),r.shift({padding:5})]}).then(({x:n,y:i})=>{this.tooltipElement&&Object.assign(this.tooltipElement.style,{left:`${n}px`,top:`${i}px`})})}))}render(){return O.html`<slot></slot>`}},d([m.property({type:String})],exports.SchmancyTooltip.prototype,"text",2),d([m.property({type:String})],exports.SchmancyTooltip.prototype,"position",2),d([m.property({type:Number})],exports.SchmancyTooltip.prototype,"delay",2),d([m.property({type:Boolean})],exports.SchmancyTooltip.prototype,"disabled",2),d([m.state()],exports.SchmancyTooltip.prototype,"visible",2),exports.SchmancyTooltip=d([m.customElement("schmancy-tooltip")],exports.SchmancyTooltip),exports.tooltip=L;
|
|
7
|
-
//# sourceMappingURL=tooltip-
|
|
7
|
+
//# sourceMappingURL=tooltip-DYcXTtFy.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-Cvoroe7w.cjs","sources":["../src/tooltip/tooltip.directive.ts","../src/tooltip/tooltip.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners\n\t\t\telement.addEventListener('mouseenter', showTooltip)\n\t\t\telement.addEventListener('focus', showTooltip)\n\t\t\telement.addEventListener('mouseleave', hideTooltip)\n\t\t\telement.addEventListener('blur', hideTooltip)\n\n\t\t\t// Add keyboard handler\n\t\t\tdocument.addEventListener('keydown', (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\thideTooltip()\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n","import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil } from 'rxjs'\nimport { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'\n\n/**\n * A tooltip component that displays a text tooltip when hovering over content.\n * Addresses shadow DOM limitations by teleporting the tooltip to document.body.\n *\n * @element schmancy-tooltip\n */\n@customElement('schmancy-tooltip')\nexport class SchmancyTooltip extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n`) {\n\t@property({ type: String })\n\ttext = ''\n\n\t@property({ type: String })\n\tposition: 'top' | 'right' | 'bottom' | 'left' = 'top'\n\n\t@property({ type: Number })\n\tdelay = 50\n\n\t@property({ type: Boolean })\n\tdisabled = false\n\n\t@state() private visible = false\n\n\tprivate triggerElement: HTMLElement | null = null\n\tprivate tooltipElement: HTMLElement | null = null\n\tprivate cleanup: (() => void) | undefined\n\tprivate showTimeoutId: number | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create tooltip element once\n\t\tif (!this.tooltipElement) {\n\t\t\tthis.createTooltipElement()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\t// Wait for slotted elements to be available\n\t\tthis.updateComplete.then(() => {\n\t\t\t// Get the first slotted element as trigger\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement\n\t\t\tconst slottedElements = slot?.assignedElements() || []\n\n\t\t\tif (slottedElements.length > 0) {\n\t\t\t\tthis.triggerElement = slottedElements[0] as HTMLElement\n\t\t\t\tthis.setupEvents()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createTooltipElement() {\n\t\t// Create the tooltip element in document.body\n\t\tthis.tooltipElement = document.createElement('div')\n\t\tthis.tooltipElement.className = 'schmancy-tooltip'\n\n\t\t// Apply styles\n\t\tObject.assign(this.tooltipElement.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10000',\n\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\tpadding: '8px 12px',\n\t\t\tborderRadius: '4px',\n\t\t\tfontSize: '14px',\n\t\t\tfontWeight: 'normal',\n\t\t\tmaxWidth: '300px',\n\t\t\tpointerEvents: 'none',\n\t\t\topacity: '0',\n\t\t\ttransition: 'opacity 150ms ease',\n\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\ttextAlign: 'center',\n\t\t})\n\n\t\t// Set ARIA attributes\n\t\tthis.tooltipElement.setAttribute('role', 'tooltip')\n\n\t\t// Add to document\n\t\tdocument.body.appendChild(this.tooltipElement)\n\t}\n\n\tprivate setupEvents() {\n\t\tif (!this.triggerElement || this.disabled) return\n\n\t\t// Generate unique ID for ARIA\n\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\tif (this.tooltipElement) {\n\t\t\tthis.tooltipElement.id = tooltipId\n\t\t\tthis.triggerElement.setAttribute('aria-describedby', tooltipId)\n\t\t}\n\n\t\t// Setup event streams using RxJS\n\t\tconst mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')\n\t\tconst focus$ = fromEvent(this.triggerElement, 'focus')\n\t\tconst mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')\n\t\tconst blur$ = fromEvent(this.triggerElement, 'blur')\n\n\t\t// Global escape key handler\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tif (event.key === 'Escape' && this.visible) {\n\t\t\t\t\tthis.hideTooltip()\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Handle showing\n\t\tmerge(mouseEnter$, focus$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showTooltip()\n\t\t\t})\n\n\t\t// Handle hiding\n\t\tmerge(mouseLeave$, blur$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideTooltip()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Clean up\n\t\tif (this.tooltipElement && document.body.contains(this.tooltipElement)) {\n\t\t\tdocument.body.removeChild(this.tooltipElement)\n\t\t}\n\t\tthis.cleanup?.()\n\t\tclearTimeout(this.showTimeoutId)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tprivate showTooltip() {\n\t\tif (this.disabled || !this.tooltipElement || !this.triggerElement) return\n\n\t\t// Clear any existing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Set timeout for showing\n\t\tthis.showTimeoutId = window.setTimeout(() => {\n\t\t\t// Update content\n\t\t\tif (this.tooltipElement) {\n\t\t\t\tthis.tooltipElement.textContent = this.text\n\n\t\t\t\t// Make visible\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.tooltipElement.style.opacity = '1'\n\n\t\t\t\t// Initialize positioning\n\t\t\t\tthis.initializePositioning()\n\t\t\t}\n\t\t}, this.delay)\n\t}\n\n\tprivate hideTooltip() {\n\t\t// Clear showing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Hide tooltip\n\t\tif (this.tooltipElement) {\n\t\t\tthis.visible = false\n\t\t\tthis.tooltipElement.style.opacity = '0'\n\t\t}\n\n\t\t// Clean up positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t}\n\n\tprivate initializePositioning() {\n\t\tif (!this.triggerElement || !this.tooltipElement) return\n\n\t\t// Clean up existing positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t}\n\n\t\t// Set up auto-updating position\n\t\tthis.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {\n\t\t\t// Compute position\n\t\t\tcomputePosition(this.triggerElement!, this.tooltipElement!, {\n\t\t\t\tplacement: this.position as Placement,\n\t\t\t\tmiddleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Apply position\n\t\t\t\tif (this.tooltipElement) {\n\t\t\t\t\tObject.assign(this.tooltipElement.style, {\n\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tooltip': SchmancyTooltip\n\t}\n}\n"],"names":["tooltipMap","WeakMap","TooltipDirective","Directive","partInfo","super","type","PartType","ELEMENT","Error","text","options","i","part","element","position","delay","showArrow","tooltipData","get","tooltipElement","textContent","arrowElement","style","visibility","document","createElement","className","Object","assign","zIndex","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","maxWidth","pointerEvents","opacity","transition","boxShadow","textAlign","width","height","background","transform","appendChild","setAttribute","tooltipId","Math","random","toString","slice","id","body","set","showTooltip","showTimeout","clearTimeout","window","setTimeout","contains","cleanup","autoUpdate","async","middleware","offset","flip","fallbackPlacements","filter","p","shift","push","arrow","x","y","placement","middlewareData","computePosition","strategy","left","top","arrowX","arrowY","staticSide","right","bottom","split","requestAnimationFrame","hideTooltip","addEventListener","e","key","removeChild","hasAttribute","removeAttribute","delete","tooltip","directive","SchmancyTooltip","TailwindElement","css","constructor","arguments","this","disabled","visible","triggerElement","connectedCallback","createTooltipElement","updateComplete","then","slot","shadowRoot","querySelector","slottedElements","assignedElements","length","setupEvents","mouseEnter$","fromEvent","focus$","mouseLeave$","blur$","pipe","takeUntil","disconnecting","subscribe","event","merge","showTimeoutId","disconnectedCallback","initializePositioning","render","html","__decorateClass","property","String","prototype","Number","Boolean","state","customElement"],"mappings":"4LAIMA,MAAiBC,QAUvB,MAAMC,UAAyBC,EAAAA,SAAAA,CAC9B,YAAYC,EAEP,CAAA,GADJC,MAAMD,CACFA,EAAAA,EAASE,OAASC,EAAAA,SAASC,QACxB,MAAA,IAAIC,MAAM,oDACjB,CAAA,CAGD,OACCC,EACAC,EAII,IAEG,MAAA,CAAED,KAAAA,EAAMC,QAAQC,CAAA,CAAA,CAGxB,OAAOC,EAAoBH,CAAAA,EAAMC,EAAU,CAAE,CAAA,EAAA,CAC5C,MAAMG,EAAUD,EAAKC,QACfC,GAAWJ,GAAAA,YAAAA,EAASI,WAAY,MAChCC,GAAQL,GAAAA,YAAAA,EAASK,QAAS,IAC1BC,GAAYN,GAAAA,YAAAA,EAASM,aAArBA,GAGF,IAAAC,EAAclB,EAAWmB,IAAIL,CAAAA,EAEjC,GAAKI,EAkIJA,EAAYE,eAAeC,YAAcX,EAGrCQ,EAAYI,eACfJ,EAAYI,aAAaC,MAAMC,WAAaP,EAAY,UAAY,cAtIpD,CAEX,MAAAG,EAAiBK,SAASC,cAAc,OAwB1C,IAAAJ,EAvBJF,EAAeO,UAAY,mBAGpBC,OAAAC,OAAOT,EAAeG,MAAO,CACnCR,SAAU,WACVe,OAAQ,QACRC,gBAAiB,kDACjBC,MAAO,8CACPC,QAAS,WACTC,aAAc,MACdC,SAAU,OACVC,WAAY,SACZC,SAAU,QACVC,cAAe,OACfC,QAAS,IACTC,WAAY,qBACZC,UAAW,kCACXC,UAAW,SAEXlB,WAAY,QAAA,CAAA,EAKTP,IACYK,EAAAG,SAASC,cAAc,KACtCJ,EAAAA,EAAaK,UAAY,yBAClBC,OAAAC,OAAOP,EAAaC,MAAO,CACjCR,SAAU,WACV4B,MAAO,MACPC,OAAQ,MACRC,WAAY,UACZrB,WAAY,SAEZsB,UAAW,eAEZ1B,CAAAA,EAAAA,EAAe2B,YAAYzB,CAAAA,GAIbF,EAAA4B,aAAa,OAAQ,SAG9B,EAAA,MAAAC,EAAY,WAAWC,KAAKC,OAAAA,EAASC,SAAS,EAAA,EAAIC,MAAM,EAAG,CAAA,CAAA,GACjEjC,EAAekC,GAAKL,EACZnC,EAAAkC,aAAa,mBAAoBC,GAGhCxB,SAAA8B,KAAKR,YAAY3B,CAAAA,EAGZF,EAAA,CACbE,eACAE,EAAAA,aAAAA,CAAAA,EAGUtB,EAAAwD,IAAI1C,EAASI,CAGxB,EAAA,MAAMuC,EAAc,IAAA,CACfvC,GAAAA,MAAAA,EAAawC,aAChBC,aAAazC,EAAYwC,WAAAA,EAGdxC,EAAAwC,YAAcE,OAAOC,WAAW,IAE3C3C,CAAAA,EAAYE,eAAeC,YAAcX,EAGrCO,GAAaC,EAAYI,cAAiBJ,CAAAA,EAAYE,eAAe0C,SAAS5C,EAAYI,YACjFJ,GAAAA,EAAAE,eAAe2B,YAAY7B,EAAYI,YAAAA,EAIxCJ,EAAAE,eAAeG,MAAMC,WAAa,UAG1CN,EAAY6C,SACf7C,EAAY6C,QAAAA,EAIb7C,EAAY6C,QAAUC,EAAAA,WAAWlD,EAASI,EAAYE,eAAgB,IAuF3E6C,eAA8BnD,EAAsBI,EAAkBH,EAAkBE,EAEvF,CAAA,MAAMiD,EAAa,CAClBC,EAAAA,OAAO,CACPC,EAAAA,OAAK,CACJC,mBAAoB,CAAC,MAAO,QAAS,SAAU,MAAQC,EAAAA,OAAYC,GAAAA,IAAMxD,CAAAA,EACzEkB,QAAS,CAAA,CAAA,EAEVuC,QAAM,CAAEvC,QAAS,KAIdhB,GAAaC,EAAYI,cAC5B4C,EAAWO,KAAKC,QAAM,CAAE5D,QAASI,EAAYI,YAGxC,CAAA,CAAA,EAAA,KAAA,CAAAqD,EAAEA,EAAGC,EAAAA,EAAAC,UAAGA,EAAWC,eAAAA,CAAyBC,EAAAA,MAAAA,kBAAgBjE,EAASI,EAAYE,eAAgB,CACtGyD,UAAW9D,EACXmD,WACAc,EAAAA,SAAU,OAWX,CAAA,EAAA,GAPOpD,OAAAC,OAAOX,EAAYE,eAAeG,MAAO,CAC/C0D,KAAM,GAAGN,CAAAA,KACTO,IAAK,GAAGN,MACR7D,SAAU,OAAA,CAAA,EAIPE,GAAaC,EAAYI,cAAgBwD,EAAeJ,MAAO,CAClE,MAAQC,EAAGQ,EAAQP,EAAGQ,CAAAA,EAAWN,EAAeJ,MAG1CW,EACL,CACCH,IAAK,SACLI,MAAO,OACPC,OAAQ,MACRN,KAAM,OACLJ,EAAAA,EAAUW,MAAM,GAAK,EAAA,CAAA,CAAA,GAAO,SAGxB5D,OAAAC,OAAOX,EAAYI,aAAaC,MAAO,CAC7C0D,KAAME,GAAU,KAAO,GAAGA,CAAAA,KAAa,GACvCD,IAAKE,GAAU,KAAO,GAAGA,CAAa,KAAA,GACtCC,CAACA,CAAAA,EAAa,OACd7D,WAAY,WACZ,CAEH,EAxIqBV,EAASI,EAAaH,EAAUE,CAIhDwE,CAAAA,EAAAA,sBAAsB,KACTvE,EAAAE,eAAeG,MAAMgB,QAAU,GAAA,CAAA,CAC3C,EACCvB,CAAAA,CAAK,EAIH0E,EAAc,IAAA,CACfxE,GAAAA,MAAAA,EAAawC,aAChBC,aAAazC,EAAYwC,WAGdxC,EAAAA,EAAAE,eAAeG,MAAMgB,QAAU,IAG3CsB,WAAW,IACE3C,CAAAA,EAAAE,eAAeG,MAAMC,WAAa,QAAA,EAC5C,GAGCN,EAAAA,GAAAA,MAAAA,EAAa6C,UAChB7C,EAAY6C,QACZ7C,EAAAA,EAAY6C,eAAU,EAKhBjD,EAAA6E,iBAAiB,aAAclC,CAAAA,EAC/B3C,EAAA6E,iBAAiB,QAASlC,CAAAA,EAC1B3C,EAAA6E,iBAAiB,aAAcD,CAAAA,EAC/B5E,EAAA6E,iBAAiB,OAAQD,CAGxBjE,EAAAA,SAAAkE,iBAAiB,UAAYC,GACvB,CAAVA,EAAEC,MAAQ,WAAY3E,GAAAA,YAAAA,EAAaE,eAAeG,MAAMgB,WAAY,KAC3DmD,EAAA,CAAA,CAAA,CAEb,CAWK,MAAA,CAAEhF,KAAMC,EAAAA,QAAAA,CAAAA,CAAQ,CAGxB,aAAaE,EAAAA,CACZ,MAAMC,EAAUD,EAAKC,QACfI,EAAclB,EAAWmB,IAAIL,CAE/BI,EAAAA,IAECA,EAAYwC,aACfC,aAAazC,EAAYwC,WAAAA,EAGtBxC,EAAY6C,SACf7C,EAAY6C,QAAAA,EAITtC,SAAS8B,KAAKO,SAAS5C,EAAYE,cAAAA,GAC7BK,SAAA8B,KAAKuC,YAAY5E,EAAYE,cAInCN,EAAAA,EAAQiF,aAAa,kBACxBjF,GAAAA,EAAQkF,gBAAgB,kBAAA,EAIzBhG,EAAWiG,OAAOnF,CACnB,EAAA,CAAA,CAyDW,MAAAoF,EAAUC,YAAUjG,CAAAA,kMC7PpBkG,QAAAA,gBAAN,cAA8BC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAA9C,aAAAC,CAAAlG,SAAAmG,SAOCC,EAAAA,KAAA/F,KAAA,GAGyC+F,KAAA1F,SAAA,MAGxC0F,KAAAzF,MAAA,GAGGyF,KAAAC,SAAAA,GAEFD,KAAQE,QAAU,GAE3BF,KAAQG,eAAqC,KAC7CH,KAAQrF,eAAqC,IAAA,CAI7C,mBACCf,CAAAA,MAAMwG,kBAGDJ,EAAAA,KAAKrF,gBACTqF,KAAKK,sBACN,CAGD,cAEML,CAAAA,KAAAM,eAAeC,KAAK,WAExB,MAAMC,GAAOR,EAAAA,KAAKS,aAALT,YAAAA,EAAiBU,cAAc,QACtCC,GAAkBH,GAAAA,YAAAA,EAAMI,qBAAsB,CAEhDD,EAAAA,EAAgBE,OAAS,IACvBb,KAAAG,eAAiBQ,EAAgB,CACtCX,EAAAA,KAAKc,YAAY,EAAA,CAAA,CAElB,CAGM,sBAAAT,CAEFL,KAAArF,eAAiBK,SAASC,cAAc,OAC7C+E,KAAKrF,eAAeO,UAAY,mBAGzBC,OAAAC,OAAO4E,KAAKrF,eAAeG,MAAO,CACxCR,SAAU,WACVe,OAAQ,QACRC,gBAAiB,kDACjBC,MAAO,8CACPC,QAAS,WACTC,aAAc,MACdC,SAAU,OACVC,WAAY,SACZC,SAAU,QACVC,cAAe,OACfC,QAAS,IACTC,WAAY,qBACZC,UAAW,kCACXC,UAAW,QAIP+D,CAAAA,EAAAA,KAAArF,eAAe4B,aAAa,OAAQ,SAGhCvB,EAAAA,SAAA8B,KAAKR,YAAY0D,KAAKrF,eAAc,CAGtC,aACP,CAAA,GAAA,CAAKqF,KAAKG,gBAAkBH,KAAKC,SAAU,OAGrC,MAAAzD,EAAY,WAAWC,KAAKC,SAASC,SAAS,EAAA,EAAIC,MAAM,EAAG,CAC7DoD,CAAAA,GAAAA,KAAKrF,iBACRqF,KAAKrF,eAAekC,GAAKL,EACpBwD,KAAAG,eAAe5D,aAAa,mBAAoBC,CAAAA,GAItD,MAAMuE,EAAcC,EAAAA,UAAUhB,KAAKG,eAAgB,YAAA,EAC7Cc,EAASD,EAAAA,UAAUhB,KAAKG,eAAgB,OACxCe,EAAAA,EAAcF,EAAAA,UAAUhB,KAAKG,eAAgB,cAC7CgB,EAAQH,EAAAA,UAAUhB,KAAKG,eAAgB,MAAA,EAGpBa,EAAAA,UAAAhG,SAAU,SACjCoG,EAAAA,KAAKC,EAAAA,UAAUrB,KAAKsB,aACpBC,CAAAA,EAAAA,UAAmBC,GACD,CAAdA,EAAMpC,MAAQ,UAAYY,KAAKE,SAClCF,KAAKf,YAAY,CAAA,CAAA,EAKdwC,QAAAV,EAAaE,CACjBG,EAAAA,KAAKC,YAAUrB,KAAKsB,aAAAA,CAAAA,EACpBC,UAAU,IACVvB,CAAAA,KAAKhD,YAAY,CAAA,CAAA,EAIbyE,QAAAP,EAAaC,CACjBC,EAAAA,KAAKC,YAAUrB,KAAKsB,aAAAA,CAAAA,EACpBC,UAAU,IACVvB,CAAAA,KAAKf,YAAY,CAAA,CAAA,CACjB,CAGH,6BAEKe,KAAKrF,gBAAkBK,SAAS8B,KAAKO,SAAS2C,KAAKrF,cAC7CK,GAAAA,SAAA8B,KAAKuC,YAAYW,KAAKrF,cAAAA,GAEhCqF,EAAAA,KAAK1C,UAAL0C,MAAAA,EAAAA,WACA9C,aAAa8C,KAAK0B,aAAAA,EAClB9H,MAAM+H,qBAAAA,CAAqB,CAGpB,aAAA3E,CAAAA,CACHgD,KAAKC,UAAaD,KAAKrF,gBAAmBqF,KAAKG,iBAGnDjD,aAAa8C,KAAK0B,aAAAA,EAGb1B,KAAA0B,cAAgBvE,OAAOC,WAAW,IAAA,CAElC4C,KAAKrF,iBACHqF,KAAArF,eAAeC,YAAcoF,KAAK/F,KAGvC+F,KAAKE,QAAAA,GACAF,KAAArF,eAAeG,MAAMgB,QAAU,IAGpCkE,KAAK4B,sBAAsB,EAAA,EAE1B5B,KAAKzF,KAAK,EAAA,CAGN,aAAA0E,CAEP/B,aAAa8C,KAAK0B,eAGd1B,KAAKrF,iBACRqF,KAAKE,QAAAA,GACAF,KAAArF,eAAeG,MAAMgB,QAAU,KAIjCkE,KAAK1C,UACR0C,KAAK1C,UACL0C,KAAK1C,QAAAA,OACN,CAGO,uBAAAsE,CACF5B,KAAKG,gBAAmBH,KAAKrF,iBAG9BqF,KAAK1C,SACR0C,KAAK1C,UAIN0C,KAAK1C,QAAUC,aAAWyC,KAAKG,eAAgBH,KAAKrF,eAAgB,IAAA,CAEnD2D,EAAAA,gBAAA0B,KAAKG,eAAiBH,KAAKrF,eAAiB,CAC3DyD,UAAW4B,KAAK1F,SAChBmD,WAAY,CAACC,EAAAA,OAAO,GAAIC,OAAK,CAAEnC,QAAS,CAAA,CAAA,EAAMuC,EAAMA,MAAA,CAAEvC,QAAS,OAC7D+E,KAAK,CAAA,CAAGrC,EAAGC,EAAAA,EAAAA,CAAAA,IAAAA,CAET6B,KAAKrF,gBACDQ,OAAAC,OAAO4E,KAAKrF,eAAeG,MAAO,CACxC0D,KAAM,GAAGN,CACTO,KAAAA,IAAK,GAAGN,CAAAA,IAAAA,CAAAA,CACR,CAEF,CAAA,CAAA,EACD,CAGF,QAAA0D,CACQ,OAAAC,EAAAA,mBAAA,GA3LRC,EAAA,CADCC,WAAS,CAAEnI,KAAMoI,UANNtC,wBAOZuC,UAAA,OAAA,CAGAH,EAAAA,EAAA,CADCC,WAAS,CAAEnI,KAAMoI,MATNtC,CAAAA,CAAAA,EAAAA,wBAUZuC,UAAA,WAAA,CAGAH,EAAAA,EAAA,CADCC,WAAS,CAAEnI,KAAMsI,MAZNxC,CAAAA,CAAAA,EAAAA,wBAaZuC,UAAA,QAAA,CAGAH,EAAAA,EAAA,CADCC,WAAS,CAAEnI,KAAMuI,OAfNzC,CAAAA,CAAAA,EAAAA,wBAgBZuC,UAAA,WAAA,CAAA,EAEiBH,EAAA,CAAhBM,EAAMA,MAlBK1C,CAAAA,EAAAA,wBAkBKuC,UAAA,UAAA,CAlBLvC,EAAAA,QAANA,gBAAAoC,EAAA,CADNO,EAAAA,cAAc,kBACF3C,CAAAA,EAAAA"}
|
|
1
|
+
{"version":3,"file":"tooltip-DYcXTtFy.cjs","sources":["../src/tooltip/tooltip.directive.ts","../src/tooltip/tooltip.ts"],"sourcesContent":["import { arrow, autoUpdate, computePosition, flip, offset, Placement, shift, Strategy } from '@floating-ui/dom'\nimport { Directive, directive, ElementPart, ElementPartInfo, PartType } from 'lit/directive.js'\n\n// Store tooltip data for elements\nconst tooltipMap = new WeakMap<\n\tElement,\n\t{\n\t\ttooltipElement: HTMLElement\n\t\tarrowElement?: HTMLElement\n\t\tcleanup?: () => void\n\t\tshowTimeout?: number\n\t}\n>()\n\nclass TooltipDirective extends Directive {\n\tconstructor(partInfo: ElementPartInfo) {\n\t\tsuper(partInfo)\n\t\tif (partInfo.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('The tooltip directive can only be used on elements')\n\t\t}\n\t}\n\n\trender(\n\t\ttext: string,\n\t\toptions: {\n\t\t\tposition?: 'top' | 'right' | 'bottom' | 'left'\n\t\t\tdelay?: number\n\t\t\tshowArrow?: boolean\n\t\t} = {},\n\t) {\n\t\treturn { text, options }\n\t}\n\n\tupdate(part: ElementPart, [text, options = {}]: [string, any]) {\n\t\tconst element = part.element as HTMLElement\n\t\tconst position = options?.position || 'top'\n\t\tconst delay = options?.delay || 300\n\t\tconst showArrow = options?.showArrow !== false // Default to true\n\n\t\t// Get or create tooltip data\n\t\tlet tooltipData = tooltipMap.get(element)\n\n\t\tif (!tooltipData) {\n\t\t\t// Create tooltip element\n\t\t\tconst tooltipElement = document.createElement('div')\n\t\t\ttooltipElement.className = 'schmancy-tooltip'\n\n\t\t\t// Apply styles\n\t\t\tObject.assign(tooltipElement.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tzIndex: '10000',\n\t\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\t\tpadding: '8px 12px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tfontSize: '14px',\n\t\t\t\tfontWeight: 'normal',\n\t\t\t\tmaxWidth: '300px',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\topacity: '0',\n\t\t\t\ttransition: 'opacity 150ms ease',\n\t\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\t\ttextAlign: 'center',\n\t\t\t\t// Important: start with visibility hidden to avoid flash\n\t\t\t\tvisibility: 'hidden',\n\t\t\t})\n\n\t\t\t// Create arrow element if needed\n\t\t\tlet arrowElement: HTMLElement | undefined\n\t\t\tif (showArrow) {\n\t\t\t\tarrowElement = document.createElement('div')\n\t\t\t\tarrowElement.className = 'schmancy-tooltip-arrow'\n\t\t\t\tObject.assign(arrowElement.style, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\twidth: '8px',\n\t\t\t\t\theight: '8px',\n\t\t\t\t\tbackground: 'inherit',\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\t// We'll rotate this to create an arrow\n\t\t\t\t\ttransform: 'rotate(45deg)',\n\t\t\t\t})\n\t\t\t\ttooltipElement.appendChild(arrowElement)\n\t\t\t}\n\n\t\t\t// Set ARIA attributes\n\t\t\ttooltipElement.setAttribute('role', 'tooltip')\n\n\t\t\t// Generate unique ID\n\t\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\t\ttooltipElement.id = tooltipId\n\t\t\telement.setAttribute('aria-describedby', tooltipId)\n\n\t\t\t// Add to document\n\t\t\tdocument.body.appendChild(tooltipElement)\n\n\t\t\t// Create tooltip data\n\t\t\ttooltipData = {\n\t\t\t\ttooltipElement,\n\t\t\t\tarrowElement,\n\t\t\t}\n\n\t\t\ttooltipMap.set(element, tooltipData)\n\n\t\t\t// Define show handler\n\t\t\tconst showTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.showTimeout = window.setTimeout(() => {\n\t\t\t\t\t// Set content\n\t\t\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t\t\t// Add arrow back if it was removed\n\t\t\t\t\tif (showArrow && tooltipData.arrowElement && !tooltipData.tooltipElement.contains(tooltipData.arrowElement)) {\n\t\t\t\t\t\ttooltipData.tooltipElement.appendChild(tooltipData.arrowElement)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Make sure element is visible first\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'visible'\n\n\t\t\t\t\t// Clean up existing positioning\n\t\t\t\t\tif (tooltipData.cleanup) {\n\t\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up positioning\n\t\t\t\t\ttooltipData.cleanup = autoUpdate(element, tooltipData.tooltipElement, () =>\n\t\t\t\t\t\tupdatePosition(element, tooltipData, position, showArrow),\n\t\t\t\t\t)\n\n\t\t\t\t\t// Make opacity 1 after positioning is set up\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\ttooltipData.tooltipElement.style.opacity = '1'\n\t\t\t\t\t})\n\t\t\t\t}, delay)\n\t\t\t}\n\n\t\t\t// Define hide handler\n\t\t\tconst hideTooltip = () => {\n\t\t\t\tif (tooltipData?.showTimeout) {\n\t\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t\t}\n\n\t\t\t\ttooltipData.tooltipElement.style.opacity = '0'\n\n\t\t\t\t// Set visibility to hidden after fade out\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\ttooltipData.tooltipElement.style.visibility = 'hidden'\n\t\t\t\t}, 150) // Match transition time\n\n\t\t\t\t// Clean up positioning\n\t\t\t\tif (tooltipData?.cleanup) {\n\t\t\t\t\ttooltipData.cleanup()\n\t\t\t\t\ttooltipData.cleanup = undefined\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add event listeners\n\t\t\telement.addEventListener('mouseenter', showTooltip)\n\t\t\telement.addEventListener('focus', showTooltip)\n\t\t\telement.addEventListener('mouseleave', hideTooltip)\n\t\t\telement.addEventListener('blur', hideTooltip)\n\n\t\t\t// Add keyboard handler\n\t\t\tdocument.addEventListener('keydown', (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape' && tooltipData?.tooltipElement.style.opacity === '1') {\n\t\t\t\t\thideTooltip()\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\t// Update content for existing tooltip\n\t\t\ttooltipData.tooltipElement.textContent = text\n\n\t\t\t// Update arrow visibility if needed\n\t\t\tif (tooltipData.arrowElement) {\n\t\t\t\ttooltipData.arrowElement.style.visibility = showArrow ? 'visible' : 'hidden'\n\t\t\t}\n\t\t}\n\n\t\treturn { text, options }\n\t}\n\n\tdisconnected(part: ElementPart) {\n\t\tconst element = part.element\n\t\tconst tooltipData = tooltipMap.get(element)\n\n\t\tif (tooltipData) {\n\t\t\t// Clean up\n\t\t\tif (tooltipData.showTimeout) {\n\t\t\t\tclearTimeout(tooltipData.showTimeout)\n\t\t\t}\n\n\t\t\tif (tooltipData.cleanup) {\n\t\t\t\ttooltipData.cleanup()\n\t\t\t}\n\n\t\t\t// Remove tooltip element\n\t\t\tif (document.body.contains(tooltipData.tooltipElement)) {\n\t\t\t\tdocument.body.removeChild(tooltipData.tooltipElement)\n\t\t\t}\n\n\t\t\t// Remove ARIA attributes\n\t\t\tif (element.hasAttribute('aria-describedby')) {\n\t\t\t\telement.removeAttribute('aria-describedby')\n\t\t\t}\n\n\t\t\t// Remove from WeakMap\n\t\t\ttooltipMap.delete(element)\n\t\t}\n\t}\n}\n\n// Separate positioning function for clarity and reuse\nasync function updatePosition(element: HTMLElement, tooltipData: any, position: string, showArrow: boolean) {\n\t// Use floating-ui to compute position\n\tconst middleware = [\n\t\toffset(8), // Distance from the element\n\t\tflip({\n\t\t\tfallbackPlacements: ['top', 'right', 'bottom', 'left'].filter(p => p !== position) as Placement[],\n\t\t\tpadding: 5, // How far from the edges before flipping\n\t\t}),\n\t\tshift({ padding: 5 }), // Keep it within viewport bounds\n\t]\n\n\t// Add arrow middleware if needed\n\tif (showArrow && tooltipData.arrowElement) {\n\t\tmiddleware.push(arrow({ element: tooltipData.arrowElement }))\n\t}\n\n\tconst { x, y, placement, middlewareData } = await computePosition(element, tooltipData.tooltipElement, {\n\t\tplacement: position as Placement,\n\t\tmiddleware,\n\t\tstrategy: 'fixed' as Strategy, // Fixed positioning works better across contexts\n\t})\n\n\t// Apply position\n\tObject.assign(tooltipData.tooltipElement.style, {\n\t\tleft: `${x}px`,\n\t\ttop: `${y}px`,\n\t\tposition: 'fixed',\n\t})\n\n\t// Position the arrow if it exists\n\tif (showArrow && tooltipData.arrowElement && middlewareData.arrow) {\n\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow\n\n\t\t// Determine which side the arrow should be on based on placement\n\t\tconst staticSide =\n\t\t\t{\n\t\t\t\ttop: 'bottom',\n\t\t\t\tright: 'left',\n\t\t\t\tbottom: 'top',\n\t\t\t\tleft: 'right',\n\t\t\t}[placement.split('-')[0]] || 'bottom'\n\n\t\t// Position the arrow\n\t\tObject.assign(tooltipData.arrowElement.style, {\n\t\t\tleft: arrowX != null ? `${arrowX}px` : '',\n\t\t\ttop: arrowY != null ? `${arrowY}px` : '',\n\t\t\t[staticSide]: '-4px', // Position the arrow on the correct side\n\t\t\tvisibility: 'visible',\n\t\t})\n\t}\n}\n\nexport const tooltip = directive(TooltipDirective)\n","import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { html, css } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil } from 'rxjs'\nimport { computePosition, flip, shift, offset, autoUpdate, Placement } from '@floating-ui/dom'\n\n/**\n * A tooltip component that displays a text tooltip when hovering over content.\n * Addresses shadow DOM limitations by teleporting the tooltip to document.body.\n *\n * @element schmancy-tooltip\n */\n@customElement('schmancy-tooltip')\nexport class SchmancyTooltip extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t}\n`) {\n\t@property({ type: String })\n\ttext = ''\n\n\t@property({ type: String })\n\tposition: 'top' | 'right' | 'bottom' | 'left' = 'top'\n\n\t@property({ type: Number })\n\tdelay = 50\n\n\t@property({ type: Boolean })\n\tdisabled = false\n\n\t@state() private visible = false\n\n\tprivate triggerElement: HTMLElement | null = null\n\tprivate tooltipElement: HTMLElement | null = null\n\tprivate cleanup: (() => void) | undefined\n\tprivate showTimeoutId: number | undefined\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Create tooltip element once\n\t\tif (!this.tooltipElement) {\n\t\t\tthis.createTooltipElement()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\t// Wait for slotted elements to be available\n\t\tthis.updateComplete.then(() => {\n\t\t\t// Get the first slotted element as trigger\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement\n\t\t\tconst slottedElements = slot?.assignedElements() || []\n\n\t\t\tif (slottedElements.length > 0) {\n\t\t\t\tthis.triggerElement = slottedElements[0] as HTMLElement\n\t\t\t\tthis.setupEvents()\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createTooltipElement() {\n\t\t// Create the tooltip element in document.body\n\t\tthis.tooltipElement = document.createElement('div')\n\t\tthis.tooltipElement.className = 'schmancy-tooltip'\n\n\t\t// Apply styles\n\t\tObject.assign(this.tooltipElement.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10000',\n\t\t\tbackgroundColor: 'var(--schmancy-sys-color-surface-highest, #333)',\n\t\t\tcolor: 'var(--schmancy-sys-color-surface-on, white)',\n\t\t\tpadding: '8px 12px',\n\t\t\tborderRadius: '4px',\n\t\t\tfontSize: '14px',\n\t\t\tfontWeight: 'normal',\n\t\t\tmaxWidth: '300px',\n\t\t\tpointerEvents: 'none',\n\t\t\topacity: '0',\n\t\t\ttransition: 'opacity 150ms ease',\n\t\t\tboxShadow: 'var(--schmancy-sys-elevation-2)',\n\t\t\ttextAlign: 'center',\n\t\t})\n\n\t\t// Set ARIA attributes\n\t\tthis.tooltipElement.setAttribute('role', 'tooltip')\n\n\t\t// Add to document\n\t\tdocument.body.appendChild(this.tooltipElement)\n\t}\n\n\tprivate setupEvents() {\n\t\tif (!this.triggerElement || this.disabled) return\n\n\t\t// Generate unique ID for ARIA\n\t\tconst tooltipId = `tooltip-${Math.random().toString(36).slice(2, 9)}`\n\t\tif (this.tooltipElement) {\n\t\t\tthis.tooltipElement.id = tooltipId\n\t\t\tthis.triggerElement.setAttribute('aria-describedby', tooltipId)\n\t\t}\n\n\t\t// Setup event streams using RxJS\n\t\tconst mouseEnter$ = fromEvent(this.triggerElement, 'mouseenter')\n\t\tconst focus$ = fromEvent(this.triggerElement, 'focus')\n\t\tconst mouseLeave$ = fromEvent(this.triggerElement, 'mouseleave')\n\t\tconst blur$ = fromEvent(this.triggerElement, 'blur')\n\n\t\t// Global escape key handler\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tif (event.key === 'Escape' && this.visible) {\n\t\t\t\t\tthis.hideTooltip()\n\t\t\t\t}\n\t\t\t})\n\n\t\t// Handle showing\n\t\tmerge(mouseEnter$, focus$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showTooltip()\n\t\t\t})\n\n\t\t// Handle hiding\n\t\tmerge(mouseLeave$, blur$)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideTooltip()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Clean up\n\t\tif (this.tooltipElement && document.body.contains(this.tooltipElement)) {\n\t\t\tdocument.body.removeChild(this.tooltipElement)\n\t\t}\n\t\tthis.cleanup?.()\n\t\tclearTimeout(this.showTimeoutId)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tprivate showTooltip() {\n\t\tif (this.disabled || !this.tooltipElement || !this.triggerElement) return\n\n\t\t// Clear any existing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Set timeout for showing\n\t\tthis.showTimeoutId = window.setTimeout(() => {\n\t\t\t// Update content\n\t\t\tif (this.tooltipElement) {\n\t\t\t\tthis.tooltipElement.textContent = this.text\n\n\t\t\t\t// Make visible\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.tooltipElement.style.opacity = '1'\n\n\t\t\t\t// Initialize positioning\n\t\t\t\tthis.initializePositioning()\n\t\t\t}\n\t\t}, this.delay)\n\t}\n\n\tprivate hideTooltip() {\n\t\t// Clear showing timeout\n\t\tclearTimeout(this.showTimeoutId)\n\n\t\t// Hide tooltip\n\t\tif (this.tooltipElement) {\n\t\t\tthis.visible = false\n\t\t\tthis.tooltipElement.style.opacity = '0'\n\t\t}\n\n\t\t// Clean up positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t}\n\n\tprivate initializePositioning() {\n\t\tif (!this.triggerElement || !this.tooltipElement) return\n\n\t\t// Clean up existing positioning\n\t\tif (this.cleanup) {\n\t\t\tthis.cleanup()\n\t\t}\n\n\t\t// Set up auto-updating position\n\t\tthis.cleanup = autoUpdate(this.triggerElement, this.tooltipElement, () => {\n\t\t\t// Compute position\n\t\t\tcomputePosition(this.triggerElement!, this.tooltipElement!, {\n\t\t\t\tplacement: this.position as Placement,\n\t\t\t\tmiddleware: [offset(8), flip({ padding: 5 }), shift({ padding: 5 })],\n\t\t\t}).then(({ x, y }) => {\n\t\t\t\t// Apply position\n\t\t\t\tif (this.tooltipElement) {\n\t\t\t\t\tObject.assign(this.tooltipElement.style, {\n\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\trender() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tooltip': SchmancyTooltip\n\t}\n}\n"],"names":["tooltipMap","WeakMap","TooltipDirective","Directive","partInfo","super","type","PartType","ELEMENT","Error","text","options","i","part","element","position","delay","showArrow","tooltipData","get","tooltipElement","textContent","arrowElement","style","visibility","document","createElement","className","Object","assign","zIndex","backgroundColor","color","padding","borderRadius","fontSize","fontWeight","maxWidth","pointerEvents","opacity","transition","boxShadow","textAlign","width","height","background","transform","appendChild","setAttribute","tooltipId","Math","random","toString","slice","id","body","set","showTooltip","showTimeout","clearTimeout","window","setTimeout","contains","cleanup","autoUpdate","async","middleware","offset","flip","fallbackPlacements","filter","p","shift","push","arrow","x","y","placement","middlewareData","computePosition","strategy","left","top","arrowX","arrowY","staticSide","right","bottom","split","requestAnimationFrame","hideTooltip","addEventListener","e","key","removeChild","hasAttribute","removeAttribute","delete","tooltip","directive","SchmancyTooltip","TailwindElement","css","constructor","arguments","this","disabled","visible","triggerElement","connectedCallback","createTooltipElement","updateComplete","then","slot","shadowRoot","querySelector","slottedElements","assignedElements","length","setupEvents","mouseEnter$","fromEvent","focus$","mouseLeave$","blur$","pipe","takeUntil","disconnecting","subscribe","event","merge","showTimeoutId","disconnectedCallback","initializePositioning","render","html","__decorateClass","property","String","prototype","Number","Boolean","state","customElement"],"mappings":"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"}
|
package/dist/tooltip.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tooltip-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tooltip-DYcXTtFy.cjs");Object.defineProperty(exports,"SchmancyTooltip",{enumerable:!0,get:()=>e.SchmancyTooltip}),exports.tooltip=e.tooltip;
|
|
2
2
|
//# sourceMappingURL=tooltip.cjs.map
|
package/dist/tooltip.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const t=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./tailwind.mixin-
|
|
1
|
+
"use strict";const t=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./tailwind.mixin-CFCJhe5p.cjs"),p=require("lit"),c=require("lit/decorators.js");var u=Object.defineProperty,g=Object.getOwnPropertyDescriptor,l=(n,r,o,i)=>{for(var s,e=i>1?void 0:i?g(r,o):r,a=n.length-1;a>=0;a--)(s=n[a])&&(e=(i?s(r,o,e):s(e))||e);return i&&e&&u(r,o,e),e};exports.SchmancyTree=class extends d.TailwindElement(p.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
|
@@ -24,4 +24,4 @@
|
|
|
24
24
|
<!-- The default slot: tree children -->
|
|
25
25
|
<slot></slot>
|
|
26
26
|
`}},l([c.property({type:Boolean})],exports.SchmancyTree.prototype,"open",2),l([c.query("#toggler")],exports.SchmancyTree.prototype,"toggler",2),l([c.query('slot:not([name="root"])')],exports.SchmancyTree.prototype,"defaultSlot",2),l([c.query("#chevron")],exports.SchmancyTree.prototype,"chevron",2),exports.SchmancyTree=l([c.customElement("schmancy-tree")],exports.SchmancyTree);
|
|
27
|
-
//# sourceMappingURL=tree-
|
|
27
|
+
//# sourceMappingURL=tree-D-rTjnPs.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-
|
|
1
|
+
{"version":3,"file":"tree-D-rTjnPs.cjs","sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: true, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\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\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"names":["SchmancyTree","TailwindElement","css","super","arguments","this","open","firstUpdated","defaultSlot","hidden","toggleClick$","fromEvent","toggler","pipe","takeUntil","disconnecting","tap","e","preventDefault","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","chevronClick$","chevron","merge","switchMap","fromDeg","toDeg","chevronAnimation","animate","transform","duration","easing","fill","fromOpacity","toOpacity","slotAnimation","opacity","onfinish","style","height","zip","subscribe","html","__decorateClass","property","type","Boolean","prototype","query","customElement"],"mappings":"oZAWaA,QAAAA,aAAN,cAA2BC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA3C,CAAA,CAAA,cAAAC,MAAAC,GAAAA,SAAAA,EAiB8BC,KAAAC,KAAA,EAAA,CAQpC,cAAAC,CAEMF,KAAKC,OACTD,KAAKG,YAAYC,OAAS,IAI3B,MAAMC,EAAeC,EAAAA,UAAsBN,KAAKO,QAAS,OAASC,EAAAA,KACjEC,EAAAA,UAAUT,KAAKU,eACfC,MAASC,IACRA,EAAEC,eAAAA,EACFD,EAAEE,gBACGd,EAAAA,KAAAe,cAAc,IAAIC,YAAY,SAAU,CAAEC,QAAAA,GAAeC,SAAU,EAAA,CAAA,CAAA,CAAO,CAK3EC,CAAAA,EAAAA,EAAgBb,EAAAA,UAAsBN,KAAKoB,QAAS,OAEpDC,EAAAA,QAAAhB,EAAcc,CAAAA,EAClBX,KACAc,EAAAA,UAAU,KAGH,MAAAC,EAAUvB,KAAKC,KAAO,IAAM,EAC5BuB,EAAQxB,KAAKC,KAAO,EAAI,IACxBwB,EAAmBzB,KAAKoB,QAAQM,QACrC,CAAC,CAAEC,UAAW,UAAUJ,SAAiB,CAAEI,UAAW,UAAUH,CAChE,MAAA,CAAA,EAAA,CACCI,SAAU,IACVC,OAAQ,UACRC,KAAM,UAAA,CAAA,EAKH9B,KAAKC,OAETD,KAAKG,YAAYC,OAAAA,IAGZ,MAAA2B,EAAc/B,KAAKC,KAAO,EAAI,EAC9B+B,EAAYhC,KAAKC,KAAO,EAAI,EAE5BgC,EAAgBjC,KAAKG,YAAYuB,QAAQ,CAAC,CAAEQ,QAASH,CAAAA,EAAe,CAAEG,QAASF,CAAAA,CAAAA,EAAc,CAClGJ,SAAU,IACVC,OAAQ,WACRC,KAAM,aAcA,OAVPG,EAAcE,SAAW,IACpBnC,CAAAA,KAAKC,KACRD,KAAKG,YAAYC,WAEZJ,KAAAG,YAAYiC,MAAMC,OAAS,OAC3BrC,KAAAG,YAAYiC,MAAMF,QAAU,IAAA,EAK5BI,EAAAA,IAAIhC,YAAUmB,EAAkB,QAAWnB,EAAAA,EAAAA,UAAU2B,EAAe,QAAA,CAAA,EAAWzB,KACrFC,EAAAA,UAAUT,KAAKU,aAAAA,CAAAA,CAChB,GAEDC,EAAAA,IAAI,KAEEX,KAAAC,KAAAA,CAAQD,KAAKC,IAAA,CAAA,EAEnBQ,EAAAA,UAAUT,KAAKU,gBAEf6B,UAAU,CAAA,CAGb,QACQ,CAAA,OAAAC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2DAOmD5B,GAAaA,EAAEE,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAAiB,CA1F9D2B,EAAAA,EAAA,CAA5BC,WAAS,CAAEC,KAAMC,OAAAA,CAAAA,CAAAA,EAjBNjD,qBAiBiBkD,UAAA,OAAA,GAEVJ,EAAA,CAAlBK,EAAAA,MAAM,UAAA,CAAA,EAnBKnD,qBAmBOkD,UAAA,UAAA,CAAA,EACeJ,EAAA,CAAjCK,EAAAA,MAAM,yBAAA,CAAA,EApBKnD,qBAoBsBkD,UAAA,cAAA,CAGfJ,EAAAA,EAAA,CAAlBK,EAAAA,MAAM,UAAA,CAAA,EAvBKnD,qBAuBOkD,UAAA,UAAA,CAAA,EAvBPlD,QAANA,aAAA8C,EAAA,CADNM,EAAAA,cAAc,eAAA,CAAA,EACFpD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { fromEvent as p, takeUntil as c, tap as g, merge as m, switchMap as f, zip as u } from "rxjs";
|
|
2
2
|
import "lit/directives/class-map.js";
|
|
3
3
|
import "lit/directives/style-map.js";
|
|
4
|
-
import { T as y } from "./tailwind.mixin-
|
|
4
|
+
import { T as y } from "./tailwind.mixin-C71e_LC1.js";
|
|
5
5
|
import { css as v, html as b } from "lit";
|
|
6
6
|
import { property as S, query as h, customElement as w } from "lit/decorators.js";
|
|
7
7
|
var k = Object.defineProperty, j = Object.getOwnPropertyDescriptor, l = (e, s, o, i) => {
|
|
@@ -61,4 +61,4 @@ l([S({ type: Boolean })], n.prototype, "open", 2), l([h("#toggler")], n.prototyp
|
|
|
61
61
|
export {
|
|
62
62
|
n as S
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=tree-
|
|
64
|
+
//# sourceMappingURL=tree-nsSIkdNT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-
|
|
1
|
+
{"version":3,"file":"tree-nsSIkdNT.js","sources":["../src/tree/tree.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, switchMap, takeUntil, tap, zip } from 'rxjs'\n\n/**\n * @element schmancy-tree\n * @slot root - The root element of the tree\n * @slot - The children of the tree\n */\n@customElement('schmancy-tree')\nexport class SchmancyTree extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tbackground-color: initial;\n\t}\n\t::slotted([slot='root']) {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t}\n\t::slotted([slot='root'] + *) {\n\t\tmargin-top: 0.5rem;\n\t}\n`) {\n\t/**\n\t * Whether the tree’s children are visible\n\t */\n\t@property({ type: Boolean }) open = false\n\n\t@query('#toggler') toggler!: HTMLSlotElement\n\t@query('slot:not([name=\"root\"])') defaultSlot!: HTMLSlotElement\n\n\t// Since it's actually a <schmancy-button>, use HTMLElement or a custom type\n\t@query('#chevron') chevron!: HTMLElement\n\n\tfirstUpdated() {\n\t\t// Hide or show the slot initially based on `open`\n\t\tif (!this.open) {\n\t\t\tthis.defaultSlot.hidden = true\n\t\t}\n\n\t\t// Root toggler\n\t\tconst toggleClick$ = fromEvent<MouseEvent>(this.toggler, 'click').pipe(\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(new CustomEvent('toggle', { bubbles: true, composed: true }))\n\t\t\t}),\n\t\t)\n\n\t\t// Chevron (the schmancy-button) click\n\t\tconst chevronClick$ = fromEvent<MouseEvent>(this.chevron, 'click')\n\n\t\tmerge(toggleClick$, chevronClick$)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// 1. Animate the chevron rotation\n\t\t\t\t\t// If `open` is true, rotate from 180 -> 0; if false, from 0 -> 180\n\t\t\t\t\tconst fromDeg = this.open ? 180 : 0\n\t\t\t\t\tconst toDeg = this.open ? 0 : 180\n\t\t\t\t\tconst chevronAnimation = this.chevron.animate(\n\t\t\t\t\t\t[{ transform: `rotate(${fromDeg}deg)` }, { transform: `rotate(${toDeg}deg)` }],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\t\teasing: 'ease-in',\n\t\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// 2. Animate the slot’s height + opacity\n\t\t\t\t\tif (!this.open) {\n\t\t\t\t\t\t// We are about to open, so remove `hidden` to measure scrollHeight\n\t\t\t\t\t\tthis.defaultSlot.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromOpacity = this.open ? 1 : 0\n\t\t\t\t\tconst toOpacity = this.open ? 0 : 1\n\n\t\t\t\t\tconst slotAnimation = this.defaultSlot.animate([{ opacity: fromOpacity }, { opacity: toOpacity }], {\n\t\t\t\t\t\tduration: 150,\n\t\t\t\t\t\teasing: 'ease-out',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Hide the slot if we just closed it\n\t\t\t\t\tslotAnimation.onfinish = () => {\n\t\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\t\tthis.defaultSlot.hidden = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.defaultSlot.style.height = 'auto'\n\t\t\t\t\t\t\tthis.defaultSlot.style.opacity = '1'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return an Observable that completes when both animations finish\n\t\t\t\t\treturn zip(fromEvent(chevronAnimation, 'finish'), fromEvent(slotAnimation, 'finish')).pipe(\n\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(() => {\n\t\t\t\t\t// Flip the open state\n\t\t\t\t\tthis.open = !this.open\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\trender() {\n\t\treturn html`\n\t\t\t<div class=\"flex content-center items-center justify-between\">\n\t\t\t\t<!-- Root toggler content -->\n\t\t\t\t<slot id=\"toggler\" name=\"root\"></slot>\n\n\t\t\t\t<!-- The chevron or arrow symbol -->\n\t\t\t\t<!-- Stop propagation on the schmancy-button itself just to avoid double triggers -->\n\t\t\t\t<schmancy-button slot=\"trailing\" id=\"chevron\" @click=${(e: Event) => e.stopPropagation()}> ⌅ </schmancy-button>\n\t\t\t</div>\n\n\t\t\t<!-- The default slot: tree children -->\n\t\t\t<slot></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-tree': SchmancyTree\n\t}\n}\n"],"names":["SchmancyTree","TailwindElement","css","super","arguments","this","open","defaultSlot","hidden","toggleClick$","fromEvent","toggler","pipe","takeUntil","disconnecting","tap","e","preventDefault","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","chevronClick$","chevron","merge","switchMap","fromDeg","toDeg","chevronAnimation","animate","transform","duration","easing","fill","fromOpacity","toOpacity","slotAnimation","opacity","onfinish","style","height","zip","subscribe","render","html","__decorateClass","property","type","Boolean","prototype","query","customElement"],"mappings":";;;;;;;;;;AAWa,IAAAA,IAAN,cAA2BC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA3C,EAAA;AAAA,EAAA;AAAAC,UAAAC,GAAAA,SAAAA,GAiB8BC,KAAAC,OAAAA;AAAAA,EAAA;AAAA,EAQpC,eAEMD;AAAAA,SAAKC,SACTD,KAAKE,YAAYC;AAIlB,UAAMC,IAAeC,EAAsBL,KAAKM,SAAS,OAAA,EAASC,KACjEC,EAAUR,KAAKS,aACfC,GAAAA,EAASC,CAAAA;AACRA,MAAAA,EAAEC,eAAAA,GACFD,EAAEE,gBAAAA,GACGb,KAAAc,cAAc,IAAIC,YAAY,UAAU,EAAEC,aAAeC,UAAAA,GAAiB,CAAA,CAAA;AAAA,IAAA,CAAA,CAAA,GAK3EC,IAAgBb,EAAsBL,KAAKmB,SAAS,OAAA;AAEpDC,IAAAA,EAAAhB,GAAcc,CAAAA,EAClBX,KACAc,EAAU;AAGH,YAAAC,IAAUtB,KAAKC,OAAO,MAAM,GAC5BsB,IAAQvB,KAAKC,OAAO,IAAI,KACxBuB,IAAmBxB,KAAKmB,QAAQM,QACrC,CAAC,EAAEC,WAAW,UAAUJ,CAAiB,OAAA,GAAA,EAAEI,WAAW,UAAUH,CAAAA,OAAAA,CAAAA,GAChE,EACCI,UAAU,KACVC,QAAQ,WACRC,MAAM,WAKH7B,CAAAA;AAAAA,WAAKC,SAETD,KAAKE,YAAYC,SAAS;AAGrB,YAAA2B,IAAc9B,KAAKC,OAAO,IAAI,GAC9B8B,IAAY/B,KAAKC,OAAO,IAAI,GAE5B+B,IAAgBhC,KAAKE,YAAYuB,QAAQ,CAAC,EAAEQ,SAASH,EAAAA,GAAe,EAAEG,SAASF,EAAAA,CAAAA,GAAc,EAClGJ,UAAU,KACVC,QAAQ,YACRC,MAAM,WAcA,CAAA;AAAA,aAVPG,EAAcE,WAAW,MAAA;AACpBlC,aAAKC,OACRD,KAAKE,YAAYC,SAAAA,MAEZH,KAAAE,YAAYiC,MAAMC,SAAS,QAC3BpC,KAAAE,YAAYiC,MAAMF,UAAU;AAAA,MAAA,GAK5BI,EAAIhC,EAAUmB,GAAkB,QAAA,GAAWnB,EAAU2B,GAAe,QAAA,CAAA,EAAWzB,KACrFC,EAAUR,KAAKS,aAChB,CAAA;AAAA,IAAA,CAAA,GAEDC,EAAI,MAEEV;AAAAA,WAAAC,QAAQD,KAAKC;AAAAA,IAAA,CAEnBO,GAAAA,EAAUR,KAAKS,aAEf6B,CAAAA,EAAAA,UAAAA;AAAAA,EAAU;AAAA,EAGb,SAAAC;AACQ,WAAAC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2DAOmD7B,CAAAA,MAAaA,EAAEE,gBAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAAiB;AAAA;AA1F9D4B,EAAA,CAA5BC,EAAS,EAAEC,MAAMC,aAjBNjD,EAiBiBkD,WAAA,QAAA,CAAA,GAEVJ,EAAA,CAAlBK,EAAM,cAnBKnD,EAmBOkD,WAAA,WAAA,CACeJ,GAAAA,EAAA,CAAjCK,EAAM,6BApBKnD,EAoBsBkD,WAAA,eAAA,CAGfJ,GAAAA,EAAA,CAAlBK,EAAM,UAAA,CAAA,GAvBKnD,EAuBOkD,WAAA,WAAA,CAvBPlD,GAAAA,IAAN8C,EAAA,CADNM,EAAc,mBACFpD;"}
|
package/dist/tree.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tree-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tree-D-rTjnPs.cjs");Object.defineProperty(exports,"SchmancyTree",{enumerable:!0,get:()=>e.SchmancyTree});
|
|
2
2
|
//# sourceMappingURL=tree.cjs.map
|
package/dist/tree.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var qe=Object.defineProperty;var se=s=>{throw TypeError(s)};var Ne=(s,e,t)=>e in s?qe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var m=(s,e,t)=>Ne(s,typeof e!="symbol"?e+"":e,t),ie=(s,e,t)=>e.has(s)||se("Cannot "+t);var d=(s,e,t)=>(ie(s,e,"read from private field"),t?t.call(s):e.get(s)),j=(s,e,t)=>e.has(s)?se("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t);var a=(s,e,t)=>(ie(s,e,"access private method"),t);const Le=require("./consume-uKrSupzs.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const xe=require("./litElement.mixin-CHvyxfxf.cjs");require("./tailwind.mixin-Dm5QDZav.cjs");const re=require("./delay-BgNgQV2G.cjs"),De=require("./intersection-CVvaDv96.cjs"),ne=require("lit"),f=require("lit/decorators.js"),ye=s=>Array.isArray(s),oe=s=>ye(s)?s:[s],me="data-typeit-id",E="ti-cursor",Me={started:!1,completed:!1,frozen:!1,destroyed:!1},C={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(s=>({opacity:s})),options:{iterations:1/0,easing:"steps(2, start)",fill:"forwards"}}},cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},ke=`[${me}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,$=s=>document.createElement(s),G=s=>document.createTextNode(s),ae=(s,e="")=>{let t=$("style");t.id=e,t.appendChild(G(s)),document.head.appendChild(t)},le=s=>(ye(s)||(s=[s/2,s/2]),s),ue=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let he=s=>s/2;const fe=s=>Array.from(s);let Y=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(G(t),e)}),void e.remove();Y(e)}),s);const ge=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,Y(e.body)};function be(s,e=!1,t=!1){let r,n=s.querySelector(`.${E}`),o=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:u=>{var h,p;if(n&&t){if((h=u.classList)!=null&&h.contains(E))return NodeFilter.FILTER_ACCEPT;if(n.contains(u))return NodeFilter.FILTER_REJECT}return(p=u.classList)!=null&&p.contains(E)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),l=[];for(;r=o.nextNode();)r.originalParent||(r.originalParent=r.parentNode),l.push(r);return e?l.reverse():l}function Ae(s,e=!0){return e?be(ge(s)):fe(s).map(G)}const _e=({index:s,newIndex:e,queueItems:t,cleanUp:r})=>{for(let n=s+1;n<e+1;n++)r(t[n][0])},we=s=>Number.isInteger(s),ce=({queueItems:s,selector:e,cursorPosition:t,to:r})=>{if(we(e))return-1*e;let n=new RegExp("END","i").test(r),o=e?[...s].reverse().findIndex(({char:l})=>{let u=l.parentElement,h=u.matches(e);return!(!n||!h)||h&&u.firstChild.isSameNode(l)}):-1;return o<0&&(o=n?0:s.length-1),o-t+(n?0:1)},A=(s,e)=>new Array(e).fill(s);let F=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),pe=s=>s==null?void 0:s.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),Te=({cursor:s,frames:e,options:t})=>{let r=s.animate(e,t);return r.pause(),r.id=s.dataset.tiAnimationId,F(()=>{F(()=>{r.play()})}),r},de=s=>{var e;return(e=s.func)==null?void 0:e.call(null)},$e=async({index:s,queueItems:e,wait:t,cursor:r,cursorOptions:n})=>{let o=e[s][1],l=[],u=s,h=o,p=()=>h&&!h.delay,c=o.shouldPauseCursor()&&n.autoPause;for(;p();)l.push(h),p()&&u++,h=e[u]?e[u][1]:null;if(l.length)return await F(async()=>{for(let P of l)await de(P)}),u-1;let y,b=pe(r);return b&&(y={...b.effect.getComputedTiming(),delay:c?n.autoPauseDelay:0}),await t(async()=>{b&&c&&b.cancel(),await F(()=>{de(o)})},o.delay),await(({cursor:P,options:Z,cursorOptions:ee})=>{if(!P||!ee)return;let B,k=pe(P);k&&(Z.delay=k.effect.getComputedTiming().delay,B=k.currentTime,k.cancel());let te=Te({cursor:P,frames:ee.animation.frames,options:Z});return B&&(te.currentTime=B),te})({cursor:r,options:y,cursorOptions:n}),s};const _=s=>"value"in s;let v=s=>typeof s=="function"?s():s,K=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const S=(s,e)=>Object.assign({},s,e);let Oe={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};var i,Ie,q,Q,Ee,U,V,X,O,w,Ce,N,L,ve,R,Pe,Se,J,H,x,z,I,D,M,W,T;class He{constructor(e,t={}){j(this,i);m(this,"element");m(this,"timeouts");m(this,"cursorPosition");m(this,"predictedCursorPosition");m(this,"statuses",{started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1});m(this,"opts");m(this,"id");m(this,"queue");m(this,"cursor");m(this,"flushCallback",null);m(this,"unfreeze",()=>{});m(this,"is",function(e){return this.statuses[e]});j(this,R,e=>{this.opts.cursor=(t=>{var r,n;if(typeof t=="object"){let o={},{frames:l,options:u}=C.cursor.animation;return o.animation=t.animation||{},o.animation.frames=((r=t.animation)==null?void 0:r.frames)||l,o.animation.options=S(u,((n=t.animation)==null?void 0:n.options)||{}),o.autoPause=t.autoPause??C.cursor.autoPause,o.autoPauseDelay=t.autoPauseDelay||C.cursor.autoPauseDelay,o}return t===!0?C.cursor:t})(e.cursor??C.cursor),this.opts.strings=a(this,i,Pe).call(this,oe(this.opts.strings)),this.opts=S(this.opts,{html:!d(this,i,M)&&this.opts.html,nextStringDelay:le(this.opts.nextStringDelay),loopDelay:le(this.opts.loopDelay)})});var r;this.opts=S(C,t),this.element=typeof(r=e)=="string"?K(r):r,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=S({},Me),this.id=Math.random().toString().substring(2,9),this.queue=function(n){let o=function(c){return oe(c).forEach(y=>{var b;return p.set(Symbol((b=y.char)==null?void 0:b.innerText),l({...y}))}),this},l=c=>(c.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},c),u=()=>p,h=()=>Array.from(p.values()),p=new Map;return o(n),{add:o,set:function(c,y){let b=[...p.keys()];p.set(b[c],l(y))},wipe:function(){p=new Map,o(n)},done:(c,y=!1)=>y?p.delete(c):p.get(c).done=!0,reset:function(){p.forEach(c=>delete c.done)},destroy:c=>p.delete(c),getItems:(c=!1)=>c?h():h().filter(y=>!y.done),getQueue:u,getTypeable:()=>h().filter(c=>c.typeable),getPendingQueueItems:()=>{const c=[];for(let[,y]of u())y.done||c.push(y);return c}}}([{delay:this.opts.startDelay}]),d(this,R).call(this,t),this.cursor=a(this,i,Se).call(this),this.element.dataset.typeitId=this.id,ae(ke),this.opts.strings.length&&a(this,i,ve).call(this)}go(){return this.statuses.started?this:(a(this,i,X).call(this),this.opts.waitUntilVisible?(e=this.element,t=a(this,i,q).bind(this),new IntersectionObserver((r,n)=>{r.forEach(o=>{o.isIntersecting&&(t(),n.unobserve(e))})},{threshold:1}).observe(e),this):(a(this,i,q).call(this),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),v(e)&&this.cursor&&a(this,i,z).call(this,this.cursor),this.statuses.destroyed=!0}reset(e){!this.is("destroyed")&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let t in this.statuses)this.statuses[t]=!1;return this.element[a(this,i,O).call(this)?"value":"innerHTML"]="",this}type(e,t={}){e=v(e);let{instant:r}=t,n=a(this,i,N).call(this,t),o=Ae(e,this.opts.html).map(u=>{return{func:()=>a(this,i,H).call(this,u),char:u,delay:r||(h=u,/<(.+)>(.*?)<\/(.+)>/.test(h.outerHTML))?0:a(this,i,I).call(this),typeable:u.nodeType===Node.TEXT_NODE};var h}),l=[n[0],{func:async()=>await this.opts.beforeString(e,this)},...o,{func:async()=>await this.opts.afterString(e,this)},n[1]];return a(this,i,w).call(this,l,t)}break(e={}){return a(this,i,w).call(this,{func:()=>a(this,i,H).call(this,$("BR")),typeable:!0},e)}move(e,t={}){e=v(e);let r=a(this,i,N).call(this,t),{instant:n,to:o}=t,l=ce({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:o,cursorPosition:d(this,i,D)}),u=l<0?-1:1;return this.predictedCursorPosition=d(this,i,D)+l,a(this,i,w).call(this,[r[0],...A({func:()=>a(this,i,Q).call(this,u),delay:n?0:a(this,i,I).call(this),cursorable:!0},Math.abs(l)),r[1]],t)}exec(e,t={}){let r=a(this,i,N).call(this,t);return a(this,i,w).call(this,[r[0],{func:()=>e(this)},r[1]],t)}options(e,t={}){return e=v(e),a(this,i,L).call(this,e),a(this,i,w).call(this,{},t)}pause(e,t={}){return a(this,i,w).call(this,{delay:v(e)},t)}delete(e=null,t={}){e=v(e);let r=a(this,i,N).call(this,t),n=e,{instant:o,to:l}=t,u=this.queue.getTypeable(),h=n===null?u.length:we(n)?n:ce({queueItems:u,selector:n,cursorPosition:d(this,i,D),to:l});return a(this,i,w).call(this,[r[0],...A({func:a(this,i,x).bind(this),delay:o?0:a(this,i,I).call(this,1),deletable:!0},h),r[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(a(this,i,X).call(this),a(this,i,q).call(this,!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return a(this,i,L).call(this,e)}getElement(){return this.element}empty(e={}){return a(this,i,w).call(this,{func:a(this,i,Ie).bind(this)},e)}}i=new WeakSet,Ie=async function(){a(this,i,O).call(this)?this.element.value="":d(this,i,T).forEach(a(this,i,z).bind(this))},q=async function(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=r=>{this.queue.done(r,!e)};try{let r=[...this.queue.getQueue()];for(let o=0;o<r.length;o++){let[l,u]=r[o];if(!u.done){if(!u.deletable||u.deletable&&d(this,i,T).length){let h=await a(this,i,U).call(this,o,r);_e({index:o,newIndex:h,queueItems:r,cleanUp:t}),o=h}t(l)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw"";let n=this.opts.loopDelay;a(this,i,V).call(this,async()=>{await a(this,i,Ee).call(this,n[0]),a(this,i,q).call(this)},n[1])}catch{}return this.statuses.firing=!1,this},Q=async function(e){var t,r,n;this.cursorPosition=(t=e,r=this.cursorPosition,n=d(this,i,T),Math.min(Math.max(r+t,0),n.length)),((o,l,u)=>{let h=l[u-1],p=K(`.${E}`,o);(o=(h==null?void 0:h.parentNode)||o).insertBefore(p,h||null)})(this.element,d(this,i,T),this.cursorPosition)},Ee=async function(e){let t=d(this,i,D);t&&await a(this,i,Q).call(this,{value:t});let r=d(this,i,T).map(n=>[Symbol(),{func:a(this,i,x).bind(this),delay:a(this,i,I).call(this,1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let n=0;n<r.length;n++)await a(this,i,U).call(this,n,r);this.queue.reset(),this.queue.set(0,{delay:e})},U=function(e,t){return $e({index:e,queueItems:t,wait:a(this,i,V).bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})},V=async function(e,t,r=!1){this.statuses.frozen&&await new Promise(n=>{this.unfreeze=()=>{this.statuses.frozen=!1,n()}}),r||await this.opts.beforeStep(this),await((n,o,l)=>new Promise(u=>{l.push(setTimeout(async()=>{await n(),u()},o||0))}))(e,t,this.timeouts),r||await this.opts.afterStep(this)},X=async function(){if(!a(this,i,O).call(this)&&this.cursor&&this.element.appendChild(this.cursor),d(this,i,W)){((n,o)=>{let l=`[${me}='${n}'] .${E}`,u=getComputedStyle(o),h=Object.entries(Oe).reduce((p,[c,y])=>`${p} ${c}: var(--ti-cursor-${c}, ${y||u[c]});`,"");ae(`${l} { display: inline-block; width: 0; ${h} }`,n)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:r}=e;Te({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...r}})}},O=function(){return _(this.element)},w=function(e,t){return this.queue.add(e),a(this,i,Ce).call(this,t),this},Ce=function(e={}){let t=e.delay;t&&this.queue.add({delay:t})},N=function(e={}){return[{func:()=>a(this,i,L).call(this,e)},{func:()=>a(this,i,L).call(this,this.opts)}]},L=async function(e){this.opts=S(this.opts,e)},ve=function(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,r)=>{if(this.type(t),r+1===e.length)return;let n=this.opts.breakLines?[{func:()=>a(this,i,H).call(this,$("BR")),typeable:!0}]:A({func:a(this,i,x).bind(this),delay:a(this,i,I).call(this,1)},this.queue.getTypeable().length);a(this,i,J).call(this,n)})},R=new WeakMap,Pe=function(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,Y(this.element),a(this,i,J).call(this,A({func:a(this,i,x).bind(this),delay:a(this,i,I).call(this,1),deletable:!0},d(this,i,T).length)),e):(r=t,r.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var r},Se=function(){if(d(this,i,M))return null;let e=$("span");return e.className=E,d(this,i,W)?(e.innerHTML=ge(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)},J=function(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])},H=function(e){((t,r)=>{if(_(t))return void(t.value=`${t.value}${r.textContent}`);r.innerHTML="";let n=(o=r.originalParent,/body/i.test(o==null?void 0:o.tagName)?t:r.originalParent||t);var o;let l=K("."+E,n)||null;l&&l.parentElement!==n&&(n=l.parentElement),n.insertBefore(r,l)})(this.element,e)},x=function(){d(this,i,T).length&&(d(this,i,M)?this.element.value=this.element.value.slice(0,-1):a(this,i,z).call(this,d(this,i,T)[this.cursorPosition]))},z=function(e){((t,r)=>{if(!t)return;let n=t.parentNode;(n.childNodes.length>1||n.isSameNode(r)?t:n).remove()})(e,this.element)},I=function(e=0){return function(t){let{speed:r,deleteSpeed:n,lifeLike:o}=t;return n=n!==null?n:r/3,o?[ue(r,he(r)),ue(n,he(n))]:[r,n]}(this.opts)[e]},D=function(){return this.predictedCursorPosition??this.cursorPosition},M=function(){return _(this.element)},W=function(){return!!this.opts.cursor&&!d(this,i,M)},T=function(){return e=this.element,_(e)?fe(e.value):be(e,!0).filter(t=>!(t.childNodes.length>0));var e};var ze=Object.defineProperty,Fe=Object.getOwnPropertyDescriptor,g=(s,e,t,r)=>{for(var n,o=r>1?void 0:r?Fe(e,t):e,l=s.length-1;l>=0;l--)(n=s[l])&&(o=(r?n(e,t,o):n(o))||o);return r&&o&&ze(e,t,o),o};exports.TypewriterElement=class extends xe.$LitElement(ne.css`
|
|
1
|
+
"use strict";var qe=Object.defineProperty;var se=s=>{throw TypeError(s)};var Ne=(s,e,t)=>e in s?qe(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var m=(s,e,t)=>Ne(s,typeof e!="symbol"?e+"":e,t),ie=(s,e,t)=>e.has(s)||se("Cannot "+t);var d=(s,e,t)=>(ie(s,e,"read from private field"),t?t.call(s):e.get(s)),j=(s,e,t)=>e.has(s)?se("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t);var a=(s,e,t)=>(ie(s,e,"access private method"),t);const Le=require("./consume-uKrSupzs.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const xe=require("./litElement.mixin-qOTYSaNG.cjs");require("./tailwind.mixin-CFCJhe5p.cjs");const re=require("./delay-ASLyLkQL.cjs"),De=require("./intersection-CVvaDv96.cjs"),ne=require("lit"),f=require("lit/decorators.js"),ye=s=>Array.isArray(s),oe=s=>ye(s)?s:[s],me="data-typeit-id",E="ti-cursor",Me={started:!1,completed:!1,frozen:!1,destroyed:!1},C={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(s=>({opacity:s})),options:{iterations:1/0,easing:"steps(2, start)",fill:"forwards"}}},cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},ke=`[${me}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,$=s=>document.createElement(s),G=s=>document.createTextNode(s),ae=(s,e="")=>{let t=$("style");t.id=e,t.appendChild(G(s)),document.head.appendChild(t)},le=s=>(ye(s)||(s=[s/2,s/2]),s),ue=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let he=s=>s/2;const fe=s=>Array.from(s);let Y=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(G(t),e)}),void e.remove();Y(e)}),s);const ge=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,Y(e.body)};function be(s,e=!1,t=!1){let r,n=s.querySelector(`.${E}`),o=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:u=>{var h,p;if(n&&t){if((h=u.classList)!=null&&h.contains(E))return NodeFilter.FILTER_ACCEPT;if(n.contains(u))return NodeFilter.FILTER_REJECT}return(p=u.classList)!=null&&p.contains(E)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),l=[];for(;r=o.nextNode();)r.originalParent||(r.originalParent=r.parentNode),l.push(r);return e?l.reverse():l}function Ae(s,e=!0){return e?be(ge(s)):fe(s).map(G)}const _e=({index:s,newIndex:e,queueItems:t,cleanUp:r})=>{for(let n=s+1;n<e+1;n++)r(t[n][0])},we=s=>Number.isInteger(s),ce=({queueItems:s,selector:e,cursorPosition:t,to:r})=>{if(we(e))return-1*e;let n=new RegExp("END","i").test(r),o=e?[...s].reverse().findIndex(({char:l})=>{let u=l.parentElement,h=u.matches(e);return!(!n||!h)||h&&u.firstChild.isSameNode(l)}):-1;return o<0&&(o=n?0:s.length-1),o-t+(n?0:1)},A=(s,e)=>new Array(e).fill(s);let F=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),pe=s=>s==null?void 0:s.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),Te=({cursor:s,frames:e,options:t})=>{let r=s.animate(e,t);return r.pause(),r.id=s.dataset.tiAnimationId,F(()=>{F(()=>{r.play()})}),r},de=s=>{var e;return(e=s.func)==null?void 0:e.call(null)},$e=async({index:s,queueItems:e,wait:t,cursor:r,cursorOptions:n})=>{let o=e[s][1],l=[],u=s,h=o,p=()=>h&&!h.delay,c=o.shouldPauseCursor()&&n.autoPause;for(;p();)l.push(h),p()&&u++,h=e[u]?e[u][1]:null;if(l.length)return await F(async()=>{for(let P of l)await de(P)}),u-1;let y,b=pe(r);return b&&(y={...b.effect.getComputedTiming(),delay:c?n.autoPauseDelay:0}),await t(async()=>{b&&c&&b.cancel(),await F(()=>{de(o)})},o.delay),await(({cursor:P,options:Z,cursorOptions:ee})=>{if(!P||!ee)return;let B,k=pe(P);k&&(Z.delay=k.effect.getComputedTiming().delay,B=k.currentTime,k.cancel());let te=Te({cursor:P,frames:ee.animation.frames,options:Z});return B&&(te.currentTime=B),te})({cursor:r,options:y,cursorOptions:n}),s};const _=s=>"value"in s;let v=s=>typeof s=="function"?s():s,K=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const S=(s,e)=>Object.assign({},s,e);let Oe={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};var i,Ie,q,Q,Ee,U,V,X,O,w,Ce,N,L,ve,R,Pe,Se,J,H,x,z,I,D,M,W,T;class He{constructor(e,t={}){j(this,i);m(this,"element");m(this,"timeouts");m(this,"cursorPosition");m(this,"predictedCursorPosition");m(this,"statuses",{started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1});m(this,"opts");m(this,"id");m(this,"queue");m(this,"cursor");m(this,"flushCallback",null);m(this,"unfreeze",()=>{});m(this,"is",function(e){return this.statuses[e]});j(this,R,e=>{this.opts.cursor=(t=>{var r,n;if(typeof t=="object"){let o={},{frames:l,options:u}=C.cursor.animation;return o.animation=t.animation||{},o.animation.frames=((r=t.animation)==null?void 0:r.frames)||l,o.animation.options=S(u,((n=t.animation)==null?void 0:n.options)||{}),o.autoPause=t.autoPause??C.cursor.autoPause,o.autoPauseDelay=t.autoPauseDelay||C.cursor.autoPauseDelay,o}return t===!0?C.cursor:t})(e.cursor??C.cursor),this.opts.strings=a(this,i,Pe).call(this,oe(this.opts.strings)),this.opts=S(this.opts,{html:!d(this,i,M)&&this.opts.html,nextStringDelay:le(this.opts.nextStringDelay),loopDelay:le(this.opts.loopDelay)})});var r;this.opts=S(C,t),this.element=typeof(r=e)=="string"?K(r):r,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=S({},Me),this.id=Math.random().toString().substring(2,9),this.queue=function(n){let o=function(c){return oe(c).forEach(y=>{var b;return p.set(Symbol((b=y.char)==null?void 0:b.innerText),l({...y}))}),this},l=c=>(c.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},c),u=()=>p,h=()=>Array.from(p.values()),p=new Map;return o(n),{add:o,set:function(c,y){let b=[...p.keys()];p.set(b[c],l(y))},wipe:function(){p=new Map,o(n)},done:(c,y=!1)=>y?p.delete(c):p.get(c).done=!0,reset:function(){p.forEach(c=>delete c.done)},destroy:c=>p.delete(c),getItems:(c=!1)=>c?h():h().filter(y=>!y.done),getQueue:u,getTypeable:()=>h().filter(c=>c.typeable),getPendingQueueItems:()=>{const c=[];for(let[,y]of u())y.done||c.push(y);return c}}}([{delay:this.opts.startDelay}]),d(this,R).call(this,t),this.cursor=a(this,i,Se).call(this),this.element.dataset.typeitId=this.id,ae(ke),this.opts.strings.length&&a(this,i,ve).call(this)}go(){return this.statuses.started?this:(a(this,i,X).call(this),this.opts.waitUntilVisible?(e=this.element,t=a(this,i,q).bind(this),new IntersectionObserver((r,n)=>{r.forEach(o=>{o.isIntersecting&&(t(),n.unobserve(e))})},{threshold:1}).observe(e),this):(a(this,i,q).call(this),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),v(e)&&this.cursor&&a(this,i,z).call(this,this.cursor),this.statuses.destroyed=!0}reset(e){!this.is("destroyed")&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let t in this.statuses)this.statuses[t]=!1;return this.element[a(this,i,O).call(this)?"value":"innerHTML"]="",this}type(e,t={}){e=v(e);let{instant:r}=t,n=a(this,i,N).call(this,t),o=Ae(e,this.opts.html).map(u=>{return{func:()=>a(this,i,H).call(this,u),char:u,delay:r||(h=u,/<(.+)>(.*?)<\/(.+)>/.test(h.outerHTML))?0:a(this,i,I).call(this),typeable:u.nodeType===Node.TEXT_NODE};var h}),l=[n[0],{func:async()=>await this.opts.beforeString(e,this)},...o,{func:async()=>await this.opts.afterString(e,this)},n[1]];return a(this,i,w).call(this,l,t)}break(e={}){return a(this,i,w).call(this,{func:()=>a(this,i,H).call(this,$("BR")),typeable:!0},e)}move(e,t={}){e=v(e);let r=a(this,i,N).call(this,t),{instant:n,to:o}=t,l=ce({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:o,cursorPosition:d(this,i,D)}),u=l<0?-1:1;return this.predictedCursorPosition=d(this,i,D)+l,a(this,i,w).call(this,[r[0],...A({func:()=>a(this,i,Q).call(this,u),delay:n?0:a(this,i,I).call(this),cursorable:!0},Math.abs(l)),r[1]],t)}exec(e,t={}){let r=a(this,i,N).call(this,t);return a(this,i,w).call(this,[r[0],{func:()=>e(this)},r[1]],t)}options(e,t={}){return e=v(e),a(this,i,L).call(this,e),a(this,i,w).call(this,{},t)}pause(e,t={}){return a(this,i,w).call(this,{delay:v(e)},t)}delete(e=null,t={}){e=v(e);let r=a(this,i,N).call(this,t),n=e,{instant:o,to:l}=t,u=this.queue.getTypeable(),h=n===null?u.length:we(n)?n:ce({queueItems:u,selector:n,cursorPosition:d(this,i,D),to:l});return a(this,i,w).call(this,[r[0],...A({func:a(this,i,x).bind(this),delay:o?0:a(this,i,I).call(this,1),deletable:!0},h),r[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(a(this,i,X).call(this),a(this,i,q).call(this,!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return a(this,i,L).call(this,e)}getElement(){return this.element}empty(e={}){return a(this,i,w).call(this,{func:a(this,i,Ie).bind(this)},e)}}i=new WeakSet,Ie=async function(){a(this,i,O).call(this)?this.element.value="":d(this,i,T).forEach(a(this,i,z).bind(this))},q=async function(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=r=>{this.queue.done(r,!e)};try{let r=[...this.queue.getQueue()];for(let o=0;o<r.length;o++){let[l,u]=r[o];if(!u.done){if(!u.deletable||u.deletable&&d(this,i,T).length){let h=await a(this,i,U).call(this,o,r);_e({index:o,newIndex:h,queueItems:r,cleanUp:t}),o=h}t(l)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw"";let n=this.opts.loopDelay;a(this,i,V).call(this,async()=>{await a(this,i,Ee).call(this,n[0]),a(this,i,q).call(this)},n[1])}catch{}return this.statuses.firing=!1,this},Q=async function(e){var t,r,n;this.cursorPosition=(t=e,r=this.cursorPosition,n=d(this,i,T),Math.min(Math.max(r+t,0),n.length)),((o,l,u)=>{let h=l[u-1],p=K(`.${E}`,o);(o=(h==null?void 0:h.parentNode)||o).insertBefore(p,h||null)})(this.element,d(this,i,T),this.cursorPosition)},Ee=async function(e){let t=d(this,i,D);t&&await a(this,i,Q).call(this,{value:t});let r=d(this,i,T).map(n=>[Symbol(),{func:a(this,i,x).bind(this),delay:a(this,i,I).call(this,1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let n=0;n<r.length;n++)await a(this,i,U).call(this,n,r);this.queue.reset(),this.queue.set(0,{delay:e})},U=function(e,t){return $e({index:e,queueItems:t,wait:a(this,i,V).bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})},V=async function(e,t,r=!1){this.statuses.frozen&&await new Promise(n=>{this.unfreeze=()=>{this.statuses.frozen=!1,n()}}),r||await this.opts.beforeStep(this),await((n,o,l)=>new Promise(u=>{l.push(setTimeout(async()=>{await n(),u()},o||0))}))(e,t,this.timeouts),r||await this.opts.afterStep(this)},X=async function(){if(!a(this,i,O).call(this)&&this.cursor&&this.element.appendChild(this.cursor),d(this,i,W)){((n,o)=>{let l=`[${me}='${n}'] .${E}`,u=getComputedStyle(o),h=Object.entries(Oe).reduce((p,[c,y])=>`${p} ${c}: var(--ti-cursor-${c}, ${y||u[c]});`,"");ae(`${l} { display: inline-block; width: 0; ${h} }`,n)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:r}=e;Te({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...r}})}},O=function(){return _(this.element)},w=function(e,t){return this.queue.add(e),a(this,i,Ce).call(this,t),this},Ce=function(e={}){let t=e.delay;t&&this.queue.add({delay:t})},N=function(e={}){return[{func:()=>a(this,i,L).call(this,e)},{func:()=>a(this,i,L).call(this,this.opts)}]},L=async function(e){this.opts=S(this.opts,e)},ve=function(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,r)=>{if(this.type(t),r+1===e.length)return;let n=this.opts.breakLines?[{func:()=>a(this,i,H).call(this,$("BR")),typeable:!0}]:A({func:a(this,i,x).bind(this),delay:a(this,i,I).call(this,1)},this.queue.getTypeable().length);a(this,i,J).call(this,n)})},R=new WeakMap,Pe=function(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,Y(this.element),a(this,i,J).call(this,A({func:a(this,i,x).bind(this),delay:a(this,i,I).call(this,1),deletable:!0},d(this,i,T).length)),e):(r=t,r.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var r},Se=function(){if(d(this,i,M))return null;let e=$("span");return e.className=E,d(this,i,W)?(e.innerHTML=ge(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)},J=function(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])},H=function(e){((t,r)=>{if(_(t))return void(t.value=`${t.value}${r.textContent}`);r.innerHTML="";let n=(o=r.originalParent,/body/i.test(o==null?void 0:o.tagName)?t:r.originalParent||t);var o;let l=K("."+E,n)||null;l&&l.parentElement!==n&&(n=l.parentElement),n.insertBefore(r,l)})(this.element,e)},x=function(){d(this,i,T).length&&(d(this,i,M)?this.element.value=this.element.value.slice(0,-1):a(this,i,z).call(this,d(this,i,T)[this.cursorPosition]))},z=function(e){((t,r)=>{if(!t)return;let n=t.parentNode;(n.childNodes.length>1||n.isSameNode(r)?t:n).remove()})(e,this.element)},I=function(e=0){return function(t){let{speed:r,deleteSpeed:n,lifeLike:o}=t;return n=n!==null?n:r/3,o?[ue(r,he(r)),ue(n,he(n))]:[r,n]}(this.opts)[e]},D=function(){return this.predictedCursorPosition??this.cursorPosition},M=function(){return _(this.element)},W=function(){return!!this.opts.cursor&&!d(this,i,M)},T=function(){return e=this.element,_(e)?fe(e.value):be(e,!0).filter(t=>!(t.childNodes.length>0));var e};var ze=Object.defineProperty,Fe=Object.getOwnPropertyDescriptor,g=(s,e,t,r)=>{for(var n,o=r>1?void 0:r?Fe(e,t):e,l=s.length-1;l>=0;l--)(n=s[l])&&(o=(r?n(e,t,o):n(o))||o);return r&&o&&ze(e,t,o),o};exports.TypewriterElement=class extends xe.$LitElement(ne.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: inherit;
|
|
4
4
|
}
|
|
@@ -18,4 +18,4 @@
|
|
|
18
18
|
@slotchange=${()=>{this._startTyping()}}
|
|
19
19
|
></slot>
|
|
20
20
|
</div> `}},g([f.property({type:Number})],exports.TypewriterElement.prototype,"speed",2),g([Le.c({context:re.delayContext,subscribe:!0}),f.property({type:Number})],exports.TypewriterElement.prototype,"delay",2),g([f.property({type:Boolean})],exports.TypewriterElement.prototype,"autoStart",2),g([f.property({type:String})],exports.TypewriterElement.prototype,"cursorChar",2),g([f.property({type:Number})],exports.TypewriterElement.prototype,"deleteSpeed",2),g([f.property({type:Boolean})],exports.TypewriterElement.prototype,"once",2),g([f.query("#typewriter")],exports.TypewriterElement.prototype,"typewriterContainer",2),g([f.queryAssignedNodes({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedNodes",2),g([f.queryAssignedElements({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedElements",2),exports.TypewriterElement=g([f.customElement("schmancy-typewriter")],exports.TypewriterElement);
|
|
21
|
-
//# sourceMappingURL=typewriter-
|
|
21
|
+
//# sourceMappingURL=typewriter-Cj0R-RDa.cjs.map
|