@mhmo91/schmancy 0.4.22 → 0.4.24
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/context.md +25 -2
- package/ai/select.md +35 -0
- package/ai/sheet.md +422 -85
- package/ai/store.md +4 -4
- package/ai/tabs.md +186 -63
- package/dist/ai/context.md +25 -2
- package/dist/ai/select.md +35 -0
- package/dist/ai/sheet.md +422 -85
- package/dist/ai/store.md +4 -4
- package/dist/ai/tabs.md +186 -63
- package/dist/{animated-text-Be4toKE0.cjs → animated-text-BitOmeE1.cjs} +2 -2
- package/dist/{animated-text-Be4toKE0.cjs.map → animated-text-BitOmeE1.cjs.map} +1 -1
- package/dist/{animated-text-CNPSIIYg.js → animated-text-DcLpvyCq.js} +3 -3
- package/dist/{animated-text-CNPSIIYg.js.map → animated-text-DcLpvyCq.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-YKEQV9hc.cjs → area.component-BTLn3oIv.cjs} +2 -2
- package/dist/{area.component-YKEQV9hc.cjs.map → area.component-BTLn3oIv.cjs.map} +1 -1
- package/dist/{area.component-i-mmh5is.js → area.component-xbNRrst9.js} +3 -3
- package/dist/{area.component-i-mmh5is.js.map → area.component-xbNRrst9.js.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-EapOt3ES.js → autocomplete-BqRrw118.js} +3 -3
- package/dist/{autocomplete-EapOt3ES.js.map → autocomplete-BqRrw118.js.map} +1 -1
- package/dist/{autocomplete-C0EU8KiN.cjs → autocomplete-Dvc06UNM.cjs} +2 -2
- package/dist/{autocomplete-C0EU8KiN.cjs.map → autocomplete-Dvc06UNM.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-CRWIpCVJ.cjs → avatar-CP5pbPbp.cjs} +12 -18
- package/dist/avatar-CP5pbPbp.cjs.map +1 -0
- package/dist/{avatar-CZ4ubNmx.js → avatar-Cb_cbT8R.js} +60 -66
- package/dist/avatar-Cb_cbT8R.js.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-DPTS3Kpw.js → boat-ByFTBKD2.js} +2 -2
- package/dist/{boat-DPTS3Kpw.js.map → boat-ByFTBKD2.js.map} +1 -1
- package/dist/{boat-C59hzqZ0.cjs → boat-Dtum9CaN.cjs} +2 -2
- package/dist/{boat-C59hzqZ0.cjs.map → boat-Dtum9CaN.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-C-kjO37F.cjs → checkbox-220X9LTx.cjs} +2 -2
- package/dist/{checkbox-C-kjO37F.cjs.map → checkbox-220X9LTx.cjs.map} +1 -1
- package/dist/{checkbox-B85eeKqn.js → checkbox-Dq0Lm3AM.js} +2 -2
- package/dist/{checkbox-B85eeKqn.js.map → checkbox-Dq0Lm3AM.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-BNRMzGrx.js → chips-aRU1fwEV.js} +3 -3
- package/dist/{chips-BNRMzGrx.js.map → chips-aRU1fwEV.js.map} +1 -1
- package/dist/{chips-DW6y4ZMs.cjs → chips-jORxgpG7.cjs} +2 -2
- package/dist/{chips-DW6y4ZMs.cjs.map → chips-jORxgpG7.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-BridvYCS.cjs → circular-progress-DMccmWrI.cjs} +2 -2
- package/dist/{circular-progress-BridvYCS.cjs.map → circular-progress-DMccmWrI.cjs.map} +1 -1
- package/dist/{circular-progress-Cl_dXUPO.js → circular-progress-Dis30LMa.js} +3 -3
- package/dist/{circular-progress-Cl_dXUPO.js.map → circular-progress-Dis30LMa.js.map} +1 -1
- package/dist/circular-progress.cjs +1 -1
- package/dist/circular-progress.js +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-B8X7JaxA.js → code-preview-BwIb73Yd.js} +2 -2
- package/dist/{code-preview-B8X7JaxA.js.map → code-preview-BwIb73Yd.js.map} +1 -1
- package/dist/{code-preview-B0oGIV9F.cjs → code-preview-CCHcWZvS.cjs} +2 -2
- package/dist/{code-preview-B0oGIV9F.cjs.map → code-preview-CCHcWZvS.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-9sVFbxK0.js → date-range-CA_4vjWe.js} +3 -3
- package/dist/{date-range-9sVFbxK0.js.map → date-range-CA_4vjWe.js.map} +1 -1
- package/dist/{date-range-DqaB9kwM.cjs → date-range-DinaPWK0.cjs} +2 -2
- package/dist/{date-range-DqaB9kwM.cjs.map → date-range-DinaPWK0.cjs.map} +1 -1
- package/dist/{date-range-inline-DGRKHzTX.cjs → date-range-inline-CGMvaSeh.cjs} +2 -2
- package/dist/{date-range-inline-DGRKHzTX.cjs.map → date-range-inline-CGMvaSeh.cjs.map} +1 -1
- package/dist/{date-range-inline-Bqnc8wBb.js → date-range-inline-DFjyAvPv.js} +3 -3
- package/dist/{date-range-inline-Bqnc8wBb.js.map → date-range-inline-DFjyAvPv.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-u5isp6Vb.js → delay-BJwsHbg3.js} +2 -2
- package/dist/{delay-u5isp6Vb.js.map → delay-BJwsHbg3.js.map} +1 -1
- package/dist/{delay-ClP0gwsX.cjs → delay-CHAH30wI.cjs} +2 -2
- package/dist/{delay-ClP0gwsX.cjs.map → delay-CHAH30wI.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-CGgHTvcB.cjs → dialog-content-Bp2kwzxD.cjs} +2 -2
- package/dist/{dialog-content-CGgHTvcB.cjs.map → dialog-content-Bp2kwzxD.cjs.map} +1 -1
- package/dist/{dialog-content-ZpgRQC1m.js → dialog-content-CEZqJRzH.js} +3 -3
- package/dist/{dialog-content-ZpgRQC1m.js.map → dialog-content-CEZqJRzH.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-CIXGsKd7.cjs → divider-BEVgt1wl.cjs} +2 -2
- package/dist/{divider-CIXGsKd7.cjs.map → divider-BEVgt1wl.cjs.map} +1 -1
- package/dist/{divider-BK4PNB76.js → divider-DfetUf4S.js} +3 -3
- package/dist/{divider-BK4PNB76.js.map → divider-DfetUf4S.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-CeYUqD56.cjs → dropdown-content-CERnSXjI.cjs} +2 -2
- package/dist/{dropdown-content-CeYUqD56.cjs.map → dropdown-content-CERnSXjI.cjs.map} +1 -1
- package/dist/{dropdown-content-DbHKYDCS.js → dropdown-content-TJmZ3rpA.js} +3 -3
- package/dist/{dropdown-content-DbHKYDCS.js.map → dropdown-content-TJmZ3rpA.js.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-Dub7SPI7.cjs → flex-ByanQCYb.cjs} +2 -2
- package/dist/{flex-Dub7SPI7.cjs.map → flex-ByanQCYb.cjs.map} +1 -1
- package/dist/{flex-JcwYdb2G.js → flex-CXMNh-nH.js} +2 -2
- package/dist/{flex-JcwYdb2G.js.map → flex-CXMNh-nH.js.map} +1 -1
- package/dist/{form-CMv0SQko.js → form-Boc5Pqhf.js} +2 -2
- package/dist/{form-CMv0SQko.js.map → form-Boc5Pqhf.js.map} +1 -1
- package/dist/{form-DKF6UgIS.cjs → form-lhQx_Ry0.cjs} +2 -2
- package/dist/{form-DKF6UgIS.cjs.map → form-lhQx_Ry0.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-D0GeY28y.js → formField.mixin-CX7_nvVy.js} +2 -2
- package/dist/{formField.mixin-D0GeY28y.js.map → formField.mixin-CX7_nvVy.js.map} +1 -1
- package/dist/{formField.mixin-BrHllh45.cjs → formField.mixin-DhiLSVHT.cjs} +2 -2
- package/dist/{formField.mixin-BrHllh45.cjs.map → formField.mixin-DhiLSVHT.cjs.map} +1 -1
- package/dist/{icon--s5dpU1N.js → icon-BZw88sCH.js} +2 -2
- package/dist/{icon--s5dpU1N.js.map → icon-BZw88sCH.js.map} +1 -1
- package/dist/{icon-CJe2TSk1.cjs → icon-D1qw18N6.cjs} +2 -2
- package/dist/{icon-CJe2TSk1.cjs.map → icon-D1qw18N6.cjs.map} +1 -1
- package/dist/{icon-button-x5uqpaeg.cjs → icon-button-DBvZApEC.cjs} +2 -2
- package/dist/{icon-button-x5uqpaeg.cjs.map → icon-button-DBvZApEC.cjs.map} +1 -1
- package/dist/{icon-button-Ckd9jE-a.js → icon-button-TbwQrO1b.js} +3 -3
- package/dist/{icon-button-Ckd9jE-a.js.map → icon-button-TbwQrO1b.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 +134 -133
- package/dist/{input-DHNBYBq4.js → input-BUtEXu3y.js} +3 -3
- package/dist/{input-DHNBYBq4.js.map → input-BUtEXu3y.js.map} +1 -1
- package/dist/{input-BN9xQTH0.cjs → input-C0F9cNoD.cjs} +2 -2
- package/dist/{input-BN9xQTH0.cjs.map → input-C0F9cNoD.cjs.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-rGydduh7.js → list-BCD8h2Do.js} +2 -2
- package/dist/{list-rGydduh7.js.map → list-BCD8h2Do.js.map} +1 -1
- package/dist/{list-DZAZpM5m.cjs → list-Bz6tq7ZP.cjs} +2 -2
- package/dist/{list-DZAZpM5m.cjs.map → list-Bz6tq7ZP.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-B1eYYBf4.cjs → litElement.mixin-CII9bbap.cjs} +2 -2
- package/dist/{litElement.mixin-B1eYYBf4.cjs.map → litElement.mixin-CII9bbap.cjs.map} +1 -1
- package/dist/{litElement.mixin-Cq-COufw.js → litElement.mixin-DGeprHKB.js} +2 -2
- package/dist/{litElement.mixin-Cq-COufw.js.map → litElement.mixin-DGeprHKB.js.map} +1 -1
- package/dist/{media-hg61JS4R.cjs → media-CBLuAmNZ.cjs} +2 -2
- package/dist/{media-hg61JS4R.cjs.map → media-CBLuAmNZ.cjs.map} +1 -1
- package/dist/{media-DHgb7H9L.js → media-D6ba0wB1.js} +2 -2
- package/dist/{media-DHgb7H9L.js.map → media-D6ba0wB1.js.map} +1 -1
- package/dist/{menu-D5aDG-Rp.cjs → menu-BDQr8EZ1.cjs} +2 -2
- package/dist/{menu-D5aDG-Rp.cjs.map → menu-BDQr8EZ1.cjs.map} +1 -1
- package/dist/{menu-DvZSvoOx.js → menu-C0SauakY.js} +3 -3
- package/dist/{menu-DvZSvoOx.js.map → menu-C0SauakY.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-BzzXjm4l.cjs → notification-service-B1f848tO.cjs} +2 -2
- package/dist/{notification-service-BzzXjm4l.cjs.map → notification-service-B1f848tO.cjs.map} +1 -1
- package/dist/{notification-service-DKHubhXv.js → notification-service-X8mRASdk.js} +3 -3
- package/dist/{notification-service-DKHubhXv.js.map → notification-service-X8mRASdk.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-T6zGawbH.js → option-DVlCqux7.js} +2 -2
- package/dist/{option-T6zGawbH.js.map → option-DVlCqux7.js.map} +1 -1
- package/dist/{option-DqN5-RK7.cjs → option-ckV22mLf.cjs} +2 -2
- package/dist/{option-DqN5-RK7.cjs.map → option-ckV22mLf.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-C42icpX4.cjs → payment-card-form-BUsPCZPp.cjs} +2 -2
- package/dist/{payment-card-form-C42icpX4.cjs.map → payment-card-form-BUsPCZPp.cjs.map} +1 -1
- package/dist/{payment-card-form-GEOaUypQ.js → payment-card-form-D7PV8spa.js} +3 -3
- package/dist/{payment-card-form-GEOaUypQ.js.map → payment-card-form-D7PV8spa.js.map} +1 -1
- package/dist/{progress-EL16etnw.js → progress-BZ6AFT0f.js} +2 -2
- package/dist/{progress-EL16etnw.js.map → progress-BZ6AFT0f.js.map} +1 -1
- package/dist/{progress-CL35MIi9.cjs → progress-CABg45XF.cjs} +2 -2
- package/dist/{progress-CL35MIi9.cjs.map → progress-CABg45XF.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-BQ7snEVj.js → radio-button-D4Y1bWGN.js} +3 -3
- package/dist/{radio-button-BQ7snEVj.js.map → radio-button-D4Y1bWGN.js.map} +1 -1
- package/dist/{radio-button-DrSJB4B-.cjs → radio-button-DQ4VclEZ.cjs} +2 -2
- package/dist/{radio-button-DrSJB4B-.cjs.map → radio-button-DQ4VclEZ.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-2WW-9LYL.js → schmancy-steps-container-BskkdQwD.js} +2 -2
- package/dist/{schmancy-steps-container-2WW-9LYL.js.map → schmancy-steps-container-BskkdQwD.js.map} +1 -1
- package/dist/{schmancy-steps-container-C_HHZFeb.cjs → schmancy-steps-container-CZ0upElE.cjs} +2 -2
- package/dist/{schmancy-steps-container-C_HHZFeb.cjs.map → schmancy-steps-container-CZ0upElE.cjs.map} +1 -1
- package/dist/select-DfQogfes.cjs +57 -0
- package/dist/{select-Bl8FO2kb.js.map → select-DfQogfes.cjs.map} +1 -1
- package/dist/{select-Bl8FO2kb.js → select-wui4bIUE.js} +23 -20
- package/dist/select-wui4bIUE.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +3 -2
- package/dist/{selector-hook-CYMLsOvh.cjs → selector-hook-Bf_lCnGW.cjs} +2 -2
- package/dist/{selector-hook-CYMLsOvh.cjs.map → selector-hook-Bf_lCnGW.cjs.map} +1 -1
- package/dist/{selector-hook-BvXML7_4.js → selector-hook-DL0SIQiY.js} +33 -33
- package/dist/{selector-hook-BvXML7_4.js.map → selector-hook-DL0SIQiY.js.map} +1 -1
- package/dist/{sheet-BiUUD0Td.cjs → sheet-DMOsLeJL.cjs} +2 -2
- package/dist/{sheet-BiUUD0Td.cjs.map → sheet-DMOsLeJL.cjs.map} +1 -1
- package/dist/{sheet-WpG2m2yT.js → sheet-DmrPnCAk.js} +4 -4
- package/dist/{sheet-WpG2m2yT.js.map → sheet-DmrPnCAk.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +7 -6
- package/dist/{sheet.service-COPNmxwp.js → sheet.service-22gvsyq8.js} +125 -109
- package/dist/{sheet.service-COPNmxwp.js.map → sheet.service-22gvsyq8.js.map} +1 -1
- package/dist/{sheet.service-B5sh8d0k.cjs → sheet.service-sSYoAEbY.cjs} +3 -3
- package/dist/{sheet.service-B5sh8d0k.cjs.map → sheet.service-sSYoAEbY.cjs.map} +1 -1
- package/dist/{slider-DX-XUnE-.cjs → slider-C2oEvRAS.cjs} +2 -2
- package/dist/{slider-DX-XUnE-.cjs.map → slider-C2oEvRAS.cjs.map} +1 -1
- package/dist/{slider-4ggti1yr.js → slider-Dwm1KfNL.js} +3 -3
- package/dist/{slider-4ggti1yr.js.map → slider-Dwm1KfNL.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-BPqLh7JL.js → spinner-Bh6XkC88.js} +2 -2
- package/dist/{spinner-BPqLh7JL.js.map → spinner-Bh6XkC88.js.map} +1 -1
- package/dist/{spinner-Cq8tY2xk.cjs → spinner-DKgZemVU.cjs} +2 -2
- package/dist/{spinner-Cq8tY2xk.cjs.map → spinner-DKgZemVU.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +1 -1
- package/dist/{surface-YyZ8eXfj.cjs → surface-DIIUamff.cjs} +2 -2
- package/dist/{surface-YyZ8eXfj.cjs.map → surface-DIIUamff.cjs.map} +1 -1
- package/dist/{surface-1xboRERM.js → surface-DhiuAGb8.js} +2 -2
- package/dist/{surface-1xboRERM.js.map → surface-DhiuAGb8.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DpXmflf7.cjs → table-BrAoSQhN.cjs} +2 -2
- package/dist/{table-DpXmflf7.cjs.map → table-BrAoSQhN.cjs.map} +1 -1
- package/dist/{table-C6EWKqDY.js → table-DSZ9kmUG.js} +2 -2
- package/dist/{table-C6EWKqDY.js.map → table-DSZ9kmUG.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-AFzKAP2D.js → tabs-compatibility-B7aJnQ0X.js} +2 -2
- package/dist/{tabs-compatibility-AFzKAP2D.js.map → tabs-compatibility-B7aJnQ0X.js.map} +1 -1
- package/dist/{tabs-compatibility-ThgWuSrK.cjs → tabs-compatibility-Ck74XeID.cjs} +2 -2
- package/dist/{tabs-compatibility-ThgWuSrK.cjs.map → tabs-compatibility-Ck74XeID.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-CBu1BEQZ.cjs +2 -0
- package/dist/{tailwind.mixin-DNME2oUL.cjs.map → tailwind.mixin-CBu1BEQZ.cjs.map} +1 -1
- package/dist/tailwind.mixin-DWhCm94g.js +43 -0
- package/dist/{tailwind.mixin-epCxS6FK.js.map → tailwind.mixin-DWhCm94g.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-JO7OVdfk.js → textarea-Bq0XdGaH.js} +2 -2
- package/dist/{textarea-JO7OVdfk.js.map → textarea-Bq0XdGaH.js.map} +1 -1
- package/dist/{textarea-B_TlKSop.cjs → textarea-CGTMdhoF.cjs} +2 -2
- package/dist/{textarea-B_TlKSop.cjs.map → textarea-CGTMdhoF.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-DnrKANEK.cjs → theme-button-CznhJ8g_.cjs} +2 -2
- package/dist/{theme-button-DnrKANEK.cjs.map → theme-button-CznhJ8g_.cjs.map} +1 -1
- package/dist/{theme-button-C8cK7un6.js → theme-button-DYoygmRA.js} +2 -2
- package/dist/{theme-button-C8cK7un6.js.map → theme-button-DYoygmRA.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.js +1 -1
- package/dist/{timezone-C56jMhLK.cjs → timezone-BCGcdasU.cjs} +2 -2
- package/dist/{timezone-C56jMhLK.cjs.map → timezone-BCGcdasU.cjs.map} +1 -1
- package/dist/{timezone-CEEEd-9_.js → timezone-Co7gqqQt.js} +3 -3
- package/dist/{timezone-CEEEd-9_.js.map → timezone-Co7gqqQt.js.map} +1 -1
- package/dist/{tooltip-twQMYpmk.cjs → tooltip-Bqa0D34J.cjs} +2 -2
- package/dist/{tooltip-twQMYpmk.cjs.map → tooltip-Bqa0D34J.cjs.map} +1 -1
- package/dist/{tooltip-CnuYee5c.js → tooltip-DBuaAFmK.js} +2 -2
- package/dist/{tooltip-CnuYee5c.js.map → tooltip-DBuaAFmK.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-Dv5R6kdP.cjs → tree-CFeXYaJy.cjs} +2 -2
- package/dist/{tree-Dv5R6kdP.cjs.map → tree-CFeXYaJy.cjs.map} +1 -1
- package/dist/{tree-CfnCGGn7.js → tree-CfE695gp.js} +2 -2
- package/dist/{tree-CfnCGGn7.js.map → tree-CfE695gp.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-egr1HiFJ.cjs → typewriter-B6Jb22Pe.cjs} +2 -2
- package/dist/{typewriter-egr1HiFJ.cjs.map → typewriter-B6Jb22Pe.cjs.map} +1 -1
- package/dist/{typewriter-DAxRjeRy.js → typewriter-BZ_adVXB.js} +4 -4
- package/dist/{typewriter-DAxRjeRy.js.map → typewriter-BZ_adVXB.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-De5UXL0j.js → typography-DI5RXpWs.js} +2 -2
- package/dist/{typography-De5UXL0j.js.map → typography-DI5RXpWs.js.map} +1 -1
- package/dist/{typography-DVZ2ezpU.cjs → typography-DvVeO1a_.cjs} +2 -2
- package/dist/{typography-DVZ2ezpU.cjs.map → typography-DvVeO1a_.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/sheet/sheet.service.d.ts +1 -0
- package/dist/avatar-CRWIpCVJ.cjs.map +0 -1
- package/dist/avatar-CZ4ubNmx.js.map +0 -1
- package/dist/select-BHRtVoTo.cjs +0 -56
- package/dist/select-BHRtVoTo.cjs.map +0 -1
- package/dist/tailwind.mixin-DNME2oUL.cjs +0 -2
- package/dist/tailwind.mixin-epCxS6FK.js +0 -43
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";const l=require("@floating-ui/dom"),w=require("lit/directive.js"),z=require("./tailwind.mixin-
|
|
1
|
+
"use strict";const l=require("@floating-ui/dom"),w=require("lit/directive.js"),z=require("./tailwind.mixin-CBu1BEQZ.cjs"),O=require("lit"),m=require("lit/decorators.js"),a=require("rxjs"),b=new WeakMap;class I extends w.Directive{constructor(e){if(super(e),e.type!==w.PartType.ELEMENT)throw new Error("The tooltip directive can only be used on elements")}render(e,o={}){return{text:e,options:o}}update(e,[o,i={}]){const n=e.element,s=i?.position||"top",h=i?.delay||300,y=i?.showArrow!==!1;let t=b.get(n);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,n.setAttribute("aria-describedby",f),document.body.appendChild(p),t={tooltipElement:p,arrowElement:u},b.set(n,t);const x=()=>{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=l.autoUpdate(n,t.tooltipElement,()=>async function(v,c,T,k){const S=[l.offset(8),l.flip({fallbackPlacements:["top","right","bottom","left"].filter(E=>E!==T),padding:5}),l.shift({padding:5})];k&&c.arrowElement&&S.push(l.arrow({element:c.arrowElement}));const{x:j,y:q,placement:P,middlewareData:C}=await l.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"})}}(n,t,s,y)),requestAnimationFrame(()=>{t.tooltipElement.style.opacity="1"})},h)},g=()=>{t?.showTimeout&&clearTimeout(t.showTimeout),t.tooltipElement.style.opacity="0",setTimeout(()=>{t.tooltipElement.style.visibility="hidden"},150),t?.cleanup&&(t.cleanup(),t.cleanup=void 0)};n.addEventListener("mouseenter",x),n.addEventListener("focus",x),n.addEventListener("mouseleave",g),n.addEventListener("blur",g),document.addEventListener("keydown",v=>{v.key==="Escape"&&t?.tooltipElement.style.opacity==="1"&&g()})}return{text:o,options:i}}disconnected(e){const o=e.element,i=b.get(o);i&&(i.showTimeout&&clearTimeout(i.showTimeout),i.cleanup&&i.cleanup(),document.body.contains(i.tooltipElement)&&document.body.removeChild(i.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=(r,e,o,i)=>{for(var n,s=i>1?void 0:i?N(e,o):e,h=r.length-1;h>=0;h--)(n=r[h])&&(s=(i?n(e,o,s):n(s))||s);return i&&s&&U(e,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(()=>{const r=this.shadowRoot?.querySelector("slot"),e=r?.assignedElements()||[];e.length>0&&(this.triggerElement=e[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 r=`tooltip-${Math.random().toString(36).slice(2,9)}`;this.tooltipElement&&(this.tooltipElement.id=r,this.triggerElement.setAttribute("aria-describedby",r));const e=a.fromEvent(this.triggerElement,"mouseenter"),o=a.fromEvent(this.triggerElement,"focus"),i=a.fromEvent(this.triggerElement,"mouseleave"),n=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(e,o).pipe(a.takeUntil(this.disconnecting)).subscribe(()=>{this.showTooltip()}),a.merge(i,n).pipe(a.takeUntil(this.disconnecting)).subscribe(()=>{this.hideTooltip()})}disconnectedCallback(){this.tooltipElement&&document.body.contains(this.tooltipElement)&&document.body.removeChild(this.tooltipElement),this.cleanup?.(),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=l.autoUpdate(this.triggerElement,this.tooltipElement,()=>{l.computePosition(this.triggerElement,this.tooltipElement,{placement:this.position,middleware:[l.offset(8),l.flip({padding:5}),l.shift({padding:5})]}).then(({x:r,y:e})=>{this.tooltipElement&&Object.assign(this.tooltipElement.style,{left:`${r}px`,top:`${e}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-Bqa0D34J.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-twQMYpmk.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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"}
|
|
1
|
+
{"version":3,"file":"tooltip-Bqa0D34J.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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"}
|
|
@@ -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-DWhCm94g.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";
|
|
@@ -116,4 +116,4 @@ export {
|
|
|
116
116
|
p as S,
|
|
117
117
|
tt as t
|
|
118
118
|
};
|
|
119
|
-
//# sourceMappingURL=tooltip-
|
|
119
|
+
//# sourceMappingURL=tooltip-DBuaAFmK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-CnuYee5c.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-DBuaAFmK.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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"}
|
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-Bqa0D34J.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-CBu1BEQZ.cjs"),c=require("lit/decorators.js"),p=require("lit");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-CFeXYaJy.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-
|
|
1
|
+
{"version":3,"file":"tree-CFeXYaJy.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-DWhCm94g.js";
|
|
5
5
|
import { property as v, query as h, customElement as b } from "lit/decorators.js";
|
|
6
6
|
import { css as S, html as w } from "lit";
|
|
7
7
|
var k = Object.defineProperty, j = Object.getOwnPropertyDescriptor, l = (e, s, o, i) => {
|
|
@@ -61,4 +61,4 @@ l([v({ 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-CfE695gp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-
|
|
1
|
+
{"version":3,"file":"tree-CfE695gp.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-CFeXYaJy.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";const J=require("./consume-edta5ng5.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const W=require("./litElement.mixin-B1eYYBf4.cjs");require("./tailwind.mixin-DNME2oUL.cjs");const p=require("lit/decorators.js"),M=require("./delay-ClP0gwsX.cjs"),G=require("./intersection-CVvaDv96.cjs"),k=require("lit"),B=s=>Array.isArray(s),A=s=>B(s)?s:[s],j="data-typeit-id",y="ti-cursor",Y={started:!1,completed:!1,frozen:!1,destroyed:!1},f={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:()=>{}},Z=`[${j}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,C=s=>document.createElement(s),q=s=>document.createTextNode(s),_=(s,e="")=>{let t=C("style");t.id=e,t.appendChild(q(s)),document.head.appendChild(t)},$=s=>(B(s)||(s=[s/2,s/2]),s),O=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let H=s=>s/2;const K=s=>Array.from(s);let N=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(q(t),e)}),void e.remove();N(e)}),s);const Q=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,N(e.body)};function U(s,e=!1,t=!1){let i,r=s.querySelector(`.${y}`),n=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:a=>{if(r&&t){if(a.classList?.contains(y))return NodeFilter.FILTER_ACCEPT;if(r.contains(a))return NodeFilter.FILTER_REJECT}return a.classList?.contains(y)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),o=[];for(;i=n.nextNode();)i.originalParent||(i.originalParent=i.parentNode),o.push(i);return e?o.reverse():o}function ee(s,e=!0){return e?U(Q(s)):K(s).map(q)}const te=({index:s,newIndex:e,queueItems:t,cleanUp:i})=>{for(let r=s+1;r<e+1;r++)i(t[r][0])},V=s=>Number.isInteger(s),R=({queueItems:s,selector:e,cursorPosition:t,to:i})=>{if(V(e))return-1*e;let r=new RegExp("END","i").test(i),n=e?[...s].reverse().findIndex(({char:o})=>{let a=o.parentElement,u=a.matches(e);return!(!r||!u)||u&&a.firstChild.isSameNode(o)}):-1;return n<0&&(n=r?0:s.length-1),n-t+(r?0:1)},I=(s,e)=>new Array(e).fill(s);let v=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),z=s=>s?.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),X=({cursor:s,frames:e,options:t})=>{let i=s.animate(e,t);return i.pause(),i.id=s.dataset.tiAnimationId,v(()=>{v(()=>{i.play()})}),i},F=s=>s.func?.call(null),se=async({index:s,queueItems:e,wait:t,cursor:i,cursorOptions:r})=>{let n=e[s][1],o=[],a=s,u=n,h=()=>u&&!u.delay,l=n.shouldPauseCursor()&&r.autoPause;for(;h();)o.push(u),h()&&a++,u=e[a]?e[a][1]:null;if(o.length)return await v(async()=>{for(let b of o)await F(b)}),a-1;let c,m=z(i);return m&&(c={...m.effect.getComputedTiming(),delay:l?r.autoPauseDelay:0}),await t(async()=>{m&&l&&m.cancel(),await v(()=>{F(n)})},n.delay),await(({cursor:b,options:x,cursorOptions:L})=>{if(!b||!L)return;let P,T=z(b);T&&(x.delay=T.effect.getComputedTiming().delay,P=T.currentTime,T.cancel());let D=X({cursor:b,frames:L.animation.frames,options:x});return P&&(D.currentTime=P),D})({cursor:i,options:c,cursorOptions:r}),s};const E=s=>"value"in s;let g=s=>typeof s=="function"?s():s,S=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const w=(s,e)=>Object.assign({},s,e);let ie={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};class re{element;timeouts;cursorPosition;predictedCursorPosition;statuses={started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1};opts;id;queue;cursor;flushCallback=null;unfreeze=()=>{};constructor(e,t={}){var i;this.opts=w(f,t),this.element=typeof(i=e)=="string"?S(i):i,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=w({},Y),this.id=Math.random().toString().substring(2,9),this.queue=function(r){let n=function(l){return A(l).forEach(c=>h.set(Symbol(c.char?.innerText),o({...c}))),this},o=l=>(l.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},l),a=()=>h,u=()=>Array.from(h.values()),h=new Map;return n(r),{add:n,set:function(l,c){let m=[...h.keys()];h.set(m[l],o(c))},wipe:function(){h=new Map,n(r)},done:(l,c=!1)=>c?h.delete(l):h.get(l).done=!0,reset:function(){h.forEach(l=>delete l.done)},destroy:l=>h.delete(l),getItems:(l=!1)=>l?u():u().filter(c=>!c.done),getQueue:a,getTypeable:()=>u().filter(l=>l.typeable),getPendingQueueItems:()=>{const l=[];for(let[,c]of a())c.done||l.push(c);return l}}}([{delay:this.opts.startDelay}]),this.#E(t),this.cursor=this.#v(),this.element.dataset.typeitId=this.id,_(Z),this.opts.strings.length&&this.#I()}go(){return this.statuses.started?this:(this.#m(),this.opts.waitUntilVisible?(e=this.element,t=this.#i.bind(this),new IntersectionObserver((i,r)=>{i.forEach(n=>{n.isIntersecting&&(t(),r.unobserve(e))})},{threshold:1}).observe(e),this):(this.#i(),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),g(e)&&this.cursor&&this.#c(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[this.#u()?"value":"innerHTML"]="",this}is=function(e){return this.statuses[e]};type(e,t={}){e=g(e);let{instant:i}=t,r=this.#r(t),n=ee(e,this.opts.html).map(a=>{return{func:()=>this.#h(a),char:a,delay:i||(u=a,/<(.+)>(.*?)<\/(.+)>/.test(u.outerHTML))?0:this.#s(),typeable:a.nodeType===Node.TEXT_NODE};var u}),o=[r[0],{func:async()=>await this.opts.beforeString(e,this)},...n,{func:async()=>await this.opts.afterString(e,this)},r[1]];return this.#e(o,t)}break(e={}){return this.#e({func:()=>this.#h(C("BR")),typeable:!0},e)}move(e,t={}){e=g(e);let i=this.#r(t),{instant:r,to:n}=t,o=R({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:n,cursorPosition:this.#a}),a=o<0?-1:1;return this.predictedCursorPosition=this.#a+o,this.#e([i[0],...I({func:()=>this.#p(a),delay:r?0:this.#s(),cursorable:!0},Math.abs(o)),i[1]],t)}exec(e,t={}){let i=this.#r(t);return this.#e([i[0],{func:()=>e(this)},i[1]],t)}options(e,t={}){return e=g(e),this.#n(e),this.#e({},t)}pause(e,t={}){return this.#e({delay:g(e)},t)}delete(e=null,t={}){e=g(e);let i=this.#r(t),r=e,{instant:n,to:o}=t,a=this.queue.getTypeable(),u=r===null?a.length:V(r)?r:R({queueItems:a,selector:r,cursorPosition:this.#a,to:o});return this.#e([i[0],...I({func:this.#o.bind(this),delay:n?0:this.#s(1),deletable:!0},u),i[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(this.#m(),this.#i(!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 this.#n(e)}getElement(){return this.element}empty(e={}){return this.#e({func:this.#b.bind(this)},e)}async#b(){this.#u()?this.element.value="":this.#t.forEach(this.#c.bind(this))}async#i(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=i=>{this.queue.done(i,!e)};try{let i=[...this.queue.getQueue()];for(let n=0;n<i.length;n++){let[o,a]=i[n];if(!a.done){if(!a.deletable||a.deletable&&this.#t.length){let u=await this.#d(n,i);te({index:n,newIndex:u,queueItems:i,cleanUp:t}),n=u}t(o)}}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 r=this.opts.loopDelay;this.#y(async()=>{await this.#w(r[0]),this.#i()},r[1])}catch{}return this.statuses.firing=!1,this}async#p(e){var t,i,r;this.cursorPosition=(t=e,i=this.cursorPosition,r=this.#t,Math.min(Math.max(i+t,0),r.length)),((n,o,a)=>{let u=o[a-1],h=S(`.${y}`,n);(n=u?.parentNode||n).insertBefore(h,u||null)})(this.element,this.#t,this.cursorPosition)}async#w(e){let t=this.#a;t&&await this.#p({value:t});let i=this.#t.map(r=>[Symbol(),{func:this.#o.bind(this),delay:this.#s(1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let r=0;r<i.length;r++)await this.#d(r,i);this.queue.reset(),this.queue.set(0,{delay:e})}#d(e,t){return se({index:e,queueItems:t,wait:this.#y.bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})}async#y(e,t,i=!1){this.statuses.frozen&&await new Promise(r=>{this.unfreeze=()=>{this.statuses.frozen=!1,r()}}),i||await this.opts.beforeStep(this),await((r,n,o)=>new Promise(a=>{o.push(setTimeout(async()=>{await r(),a()},n||0))}))(e,t,this.timeouts),i||await this.opts.afterStep(this)}async#m(){if(!this.#u()&&this.cursor&&this.element.appendChild(this.cursor),this.#g){((r,n)=>{let o=`[${j}='${r}'] .${y}`,a=getComputedStyle(n),u=Object.entries(ie).reduce((h,[l,c])=>`${h} ${l}: var(--ti-cursor-${l}, ${c||a[l]});`,"");_(`${o} { display: inline-block; width: 0; ${u} }`,r)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:i}=e;X({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...i}})}}#u(){return E(this.element)}#e(e,t){return this.queue.add(e),this.#T(t),this}#T(e={}){let t=e.delay;t&&this.queue.add({delay:t})}#r(e={}){return[{func:()=>this.#n(e)},{func:()=>this.#n(this.opts)}]}async#n(e){this.opts=w(this.opts,e)}#I(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,i)=>{if(this.type(t),i+1===e.length)return;let r=this.opts.breakLines?[{func:()=>this.#h(C("BR")),typeable:!0}]:I({func:this.#o.bind(this),delay:this.#s(1)},this.queue.getTypeable().length);this.#f(r)})}#E=e=>{this.opts.cursor=(t=>{if(typeof t=="object"){let i={},{frames:r,options:n}=f.cursor.animation;return i.animation=t.animation||{},i.animation.frames=t.animation?.frames||r,i.animation.options=w(n,t.animation?.options||{}),i.autoPause=t.autoPause??f.cursor.autoPause,i.autoPauseDelay=t.autoPauseDelay||f.cursor.autoPauseDelay,i}return t===!0?f.cursor:t})(e.cursor??f.cursor),this.opts.strings=this.#C(A(this.opts.strings)),this.opts=w(this.opts,{html:!this.#l&&this.opts.html,nextStringDelay:$(this.opts.nextStringDelay),loopDelay:$(this.opts.loopDelay)})};#C(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,N(this.element),this.#f(I({func:this.#o.bind(this),delay:this.#s(1),deletable:!0},this.#t.length)),e):(i=t,i.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var i}#v(){if(this.#l)return null;let e=C("span");return e.className=y,this.#g?(e.innerHTML=Q(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)}#f(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])}#h(e){((t,i)=>{if(E(t))return void(t.value=`${t.value}${i.textContent}`);i.innerHTML="";let r=(n=i.originalParent,/body/i.test(n?.tagName)?t:i.originalParent||t);var n;let o=S("."+y,r)||null;o&&o.parentElement!==r&&(r=o.parentElement),r.insertBefore(i,o)})(this.element,e)}#o(){this.#t.length&&(this.#l?this.element.value=this.element.value.slice(0,-1):this.#c(this.#t[this.cursorPosition]))}#c(e){((t,i)=>{if(!t)return;let r=t.parentNode;(r.childNodes.length>1||r.isSameNode(i)?t:r).remove()})(e,this.element)}#s(e=0){return function(t){let{speed:i,deleteSpeed:r,lifeLike:n}=t;return r=r!==null?r:i/3,n?[O(i,H(i)),O(r,H(r))]:[i,r]}(this.opts)[e]}get#a(){return this.predictedCursorPosition??this.cursorPosition}get#l(){return E(this.element)}get#g(){return!!this.opts.cursor&&!this.#l}get#t(){return e=this.element,E(e)?K(e.value):U(e,!0).filter(t=>!(t.childNodes.length>0));var e}}var ne=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,d=(s,e,t,i)=>{for(var r,n=i>1?void 0:i?oe(e,t):e,o=s.length-1;o>=0;o--)(r=s[o])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&ne(e,t,n),n};exports.TypewriterElement=class extends W.$LitElement(k.css`
|
|
1
|
+
"use strict";const J=require("./consume-edta5ng5.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const W=require("./litElement.mixin-CII9bbap.cjs");require("./tailwind.mixin-CBu1BEQZ.cjs");const p=require("lit/decorators.js"),M=require("./delay-CHAH30wI.cjs"),G=require("./intersection-CVvaDv96.cjs"),k=require("lit"),B=s=>Array.isArray(s),A=s=>B(s)?s:[s],j="data-typeit-id",y="ti-cursor",Y={started:!1,completed:!1,frozen:!1,destroyed:!1},f={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:()=>{}},Z=`[${j}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,C=s=>document.createElement(s),q=s=>document.createTextNode(s),_=(s,e="")=>{let t=C("style");t.id=e,t.appendChild(q(s)),document.head.appendChild(t)},$=s=>(B(s)||(s=[s/2,s/2]),s),O=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let H=s=>s/2;const K=s=>Array.from(s);let N=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(q(t),e)}),void e.remove();N(e)}),s);const Q=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,N(e.body)};function U(s,e=!1,t=!1){let i,r=s.querySelector(`.${y}`),n=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:a=>{if(r&&t){if(a.classList?.contains(y))return NodeFilter.FILTER_ACCEPT;if(r.contains(a))return NodeFilter.FILTER_REJECT}return a.classList?.contains(y)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),o=[];for(;i=n.nextNode();)i.originalParent||(i.originalParent=i.parentNode),o.push(i);return e?o.reverse():o}function ee(s,e=!0){return e?U(Q(s)):K(s).map(q)}const te=({index:s,newIndex:e,queueItems:t,cleanUp:i})=>{for(let r=s+1;r<e+1;r++)i(t[r][0])},V=s=>Number.isInteger(s),R=({queueItems:s,selector:e,cursorPosition:t,to:i})=>{if(V(e))return-1*e;let r=new RegExp("END","i").test(i),n=e?[...s].reverse().findIndex(({char:o})=>{let a=o.parentElement,u=a.matches(e);return!(!r||!u)||u&&a.firstChild.isSameNode(o)}):-1;return n<0&&(n=r?0:s.length-1),n-t+(r?0:1)},I=(s,e)=>new Array(e).fill(s);let v=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),z=s=>s?.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),X=({cursor:s,frames:e,options:t})=>{let i=s.animate(e,t);return i.pause(),i.id=s.dataset.tiAnimationId,v(()=>{v(()=>{i.play()})}),i},F=s=>s.func?.call(null),se=async({index:s,queueItems:e,wait:t,cursor:i,cursorOptions:r})=>{let n=e[s][1],o=[],a=s,u=n,h=()=>u&&!u.delay,l=n.shouldPauseCursor()&&r.autoPause;for(;h();)o.push(u),h()&&a++,u=e[a]?e[a][1]:null;if(o.length)return await v(async()=>{for(let b of o)await F(b)}),a-1;let c,m=z(i);return m&&(c={...m.effect.getComputedTiming(),delay:l?r.autoPauseDelay:0}),await t(async()=>{m&&l&&m.cancel(),await v(()=>{F(n)})},n.delay),await(({cursor:b,options:x,cursorOptions:L})=>{if(!b||!L)return;let P,T=z(b);T&&(x.delay=T.effect.getComputedTiming().delay,P=T.currentTime,T.cancel());let D=X({cursor:b,frames:L.animation.frames,options:x});return P&&(D.currentTime=P),D})({cursor:i,options:c,cursorOptions:r}),s};const E=s=>"value"in s;let g=s=>typeof s=="function"?s():s,S=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const w=(s,e)=>Object.assign({},s,e);let ie={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};class re{element;timeouts;cursorPosition;predictedCursorPosition;statuses={started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1};opts;id;queue;cursor;flushCallback=null;unfreeze=()=>{};constructor(e,t={}){var i;this.opts=w(f,t),this.element=typeof(i=e)=="string"?S(i):i,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=w({},Y),this.id=Math.random().toString().substring(2,9),this.queue=function(r){let n=function(l){return A(l).forEach(c=>h.set(Symbol(c.char?.innerText),o({...c}))),this},o=l=>(l.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},l),a=()=>h,u=()=>Array.from(h.values()),h=new Map;return n(r),{add:n,set:function(l,c){let m=[...h.keys()];h.set(m[l],o(c))},wipe:function(){h=new Map,n(r)},done:(l,c=!1)=>c?h.delete(l):h.get(l).done=!0,reset:function(){h.forEach(l=>delete l.done)},destroy:l=>h.delete(l),getItems:(l=!1)=>l?u():u().filter(c=>!c.done),getQueue:a,getTypeable:()=>u().filter(l=>l.typeable),getPendingQueueItems:()=>{const l=[];for(let[,c]of a())c.done||l.push(c);return l}}}([{delay:this.opts.startDelay}]),this.#E(t),this.cursor=this.#v(),this.element.dataset.typeitId=this.id,_(Z),this.opts.strings.length&&this.#I()}go(){return this.statuses.started?this:(this.#m(),this.opts.waitUntilVisible?(e=this.element,t=this.#i.bind(this),new IntersectionObserver((i,r)=>{i.forEach(n=>{n.isIntersecting&&(t(),r.unobserve(e))})},{threshold:1}).observe(e),this):(this.#i(),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),g(e)&&this.cursor&&this.#c(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[this.#u()?"value":"innerHTML"]="",this}is=function(e){return this.statuses[e]};type(e,t={}){e=g(e);let{instant:i}=t,r=this.#r(t),n=ee(e,this.opts.html).map(a=>{return{func:()=>this.#h(a),char:a,delay:i||(u=a,/<(.+)>(.*?)<\/(.+)>/.test(u.outerHTML))?0:this.#s(),typeable:a.nodeType===Node.TEXT_NODE};var u}),o=[r[0],{func:async()=>await this.opts.beforeString(e,this)},...n,{func:async()=>await this.opts.afterString(e,this)},r[1]];return this.#e(o,t)}break(e={}){return this.#e({func:()=>this.#h(C("BR")),typeable:!0},e)}move(e,t={}){e=g(e);let i=this.#r(t),{instant:r,to:n}=t,o=R({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:n,cursorPosition:this.#a}),a=o<0?-1:1;return this.predictedCursorPosition=this.#a+o,this.#e([i[0],...I({func:()=>this.#p(a),delay:r?0:this.#s(),cursorable:!0},Math.abs(o)),i[1]],t)}exec(e,t={}){let i=this.#r(t);return this.#e([i[0],{func:()=>e(this)},i[1]],t)}options(e,t={}){return e=g(e),this.#n(e),this.#e({},t)}pause(e,t={}){return this.#e({delay:g(e)},t)}delete(e=null,t={}){e=g(e);let i=this.#r(t),r=e,{instant:n,to:o}=t,a=this.queue.getTypeable(),u=r===null?a.length:V(r)?r:R({queueItems:a,selector:r,cursorPosition:this.#a,to:o});return this.#e([i[0],...I({func:this.#o.bind(this),delay:n?0:this.#s(1),deletable:!0},u),i[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(this.#m(),this.#i(!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 this.#n(e)}getElement(){return this.element}empty(e={}){return this.#e({func:this.#b.bind(this)},e)}async#b(){this.#u()?this.element.value="":this.#t.forEach(this.#c.bind(this))}async#i(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=i=>{this.queue.done(i,!e)};try{let i=[...this.queue.getQueue()];for(let n=0;n<i.length;n++){let[o,a]=i[n];if(!a.done){if(!a.deletable||a.deletable&&this.#t.length){let u=await this.#d(n,i);te({index:n,newIndex:u,queueItems:i,cleanUp:t}),n=u}t(o)}}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 r=this.opts.loopDelay;this.#y(async()=>{await this.#w(r[0]),this.#i()},r[1])}catch{}return this.statuses.firing=!1,this}async#p(e){var t,i,r;this.cursorPosition=(t=e,i=this.cursorPosition,r=this.#t,Math.min(Math.max(i+t,0),r.length)),((n,o,a)=>{let u=o[a-1],h=S(`.${y}`,n);(n=u?.parentNode||n).insertBefore(h,u||null)})(this.element,this.#t,this.cursorPosition)}async#w(e){let t=this.#a;t&&await this.#p({value:t});let i=this.#t.map(r=>[Symbol(),{func:this.#o.bind(this),delay:this.#s(1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let r=0;r<i.length;r++)await this.#d(r,i);this.queue.reset(),this.queue.set(0,{delay:e})}#d(e,t){return se({index:e,queueItems:t,wait:this.#y.bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})}async#y(e,t,i=!1){this.statuses.frozen&&await new Promise(r=>{this.unfreeze=()=>{this.statuses.frozen=!1,r()}}),i||await this.opts.beforeStep(this),await((r,n,o)=>new Promise(a=>{o.push(setTimeout(async()=>{await r(),a()},n||0))}))(e,t,this.timeouts),i||await this.opts.afterStep(this)}async#m(){if(!this.#u()&&this.cursor&&this.element.appendChild(this.cursor),this.#g){((r,n)=>{let o=`[${j}='${r}'] .${y}`,a=getComputedStyle(n),u=Object.entries(ie).reduce((h,[l,c])=>`${h} ${l}: var(--ti-cursor-${l}, ${c||a[l]});`,"");_(`${o} { display: inline-block; width: 0; ${u} }`,r)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:i}=e;X({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...i}})}}#u(){return E(this.element)}#e(e,t){return this.queue.add(e),this.#T(t),this}#T(e={}){let t=e.delay;t&&this.queue.add({delay:t})}#r(e={}){return[{func:()=>this.#n(e)},{func:()=>this.#n(this.opts)}]}async#n(e){this.opts=w(this.opts,e)}#I(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,i)=>{if(this.type(t),i+1===e.length)return;let r=this.opts.breakLines?[{func:()=>this.#h(C("BR")),typeable:!0}]:I({func:this.#o.bind(this),delay:this.#s(1)},this.queue.getTypeable().length);this.#f(r)})}#E=e=>{this.opts.cursor=(t=>{if(typeof t=="object"){let i={},{frames:r,options:n}=f.cursor.animation;return i.animation=t.animation||{},i.animation.frames=t.animation?.frames||r,i.animation.options=w(n,t.animation?.options||{}),i.autoPause=t.autoPause??f.cursor.autoPause,i.autoPauseDelay=t.autoPauseDelay||f.cursor.autoPauseDelay,i}return t===!0?f.cursor:t})(e.cursor??f.cursor),this.opts.strings=this.#C(A(this.opts.strings)),this.opts=w(this.opts,{html:!this.#l&&this.opts.html,nextStringDelay:$(this.opts.nextStringDelay),loopDelay:$(this.opts.loopDelay)})};#C(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,N(this.element),this.#f(I({func:this.#o.bind(this),delay:this.#s(1),deletable:!0},this.#t.length)),e):(i=t,i.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var i}#v(){if(this.#l)return null;let e=C("span");return e.className=y,this.#g?(e.innerHTML=Q(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)}#f(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])}#h(e){((t,i)=>{if(E(t))return void(t.value=`${t.value}${i.textContent}`);i.innerHTML="";let r=(n=i.originalParent,/body/i.test(n?.tagName)?t:i.originalParent||t);var n;let o=S("."+y,r)||null;o&&o.parentElement!==r&&(r=o.parentElement),r.insertBefore(i,o)})(this.element,e)}#o(){this.#t.length&&(this.#l?this.element.value=this.element.value.slice(0,-1):this.#c(this.#t[this.cursorPosition]))}#c(e){((t,i)=>{if(!t)return;let r=t.parentNode;(r.childNodes.length>1||r.isSameNode(i)?t:r).remove()})(e,this.element)}#s(e=0){return function(t){let{speed:i,deleteSpeed:r,lifeLike:n}=t;return r=r!==null?r:i/3,n?[O(i,H(i)),O(r,H(r))]:[i,r]}(this.opts)[e]}get#a(){return this.predictedCursorPosition??this.cursorPosition}get#l(){return E(this.element)}get#g(){return!!this.opts.cursor&&!this.#l}get#t(){return e=this.element,E(e)?K(e.value):U(e,!0).filter(t=>!(t.childNodes.length>0));var e}}var ne=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,d=(s,e,t,i)=>{for(var r,n=i>1?void 0:i?oe(e,t):e,o=s.length-1;o>=0;o--)(r=s[o])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&ne(e,t,n),n};exports.TypewriterElement=class extends W.$LitElement(k.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> `}},d([p.property({type:Number})],exports.TypewriterElement.prototype,"speed",2),d([J.c({context:M.delayContext,subscribe:!0}),p.property({type:Number})],exports.TypewriterElement.prototype,"delay",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"autoStart",2),d([p.property({type:String})],exports.TypewriterElement.prototype,"cursorChar",2),d([p.property({type:Number})],exports.TypewriterElement.prototype,"deleteSpeed",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"once",2),d([p.query("#typewriter")],exports.TypewriterElement.prototype,"typewriterContainer",2),d([p.queryAssignedNodes({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedNodes",2),d([p.queryAssignedElements({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedElements",2),exports.TypewriterElement=d([p.customElement("schmancy-typewriter")],exports.TypewriterElement);
|
|
21
|
-
//# sourceMappingURL=typewriter-
|
|
21
|
+
//# sourceMappingURL=typewriter-B6Jb22Pe.cjs.map
|