@mhmo91/schmancy 0.4.35 → 0.4.37
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/badge.md +70 -62
- package/ai/form.md +10 -10
- package/ai/input.md +4 -4
- package/dist/ai/badge.md +70 -62
- package/dist/ai/form.md +10 -10
- package/dist/ai/input.md +4 -4
- package/dist/{animated-text-CYmUxmlv.cjs → animated-text-CtXY3MHV.cjs} +2 -2
- package/dist/{animated-text-CYmUxmlv.cjs.map → animated-text-CtXY3MHV.cjs.map} +1 -1
- package/dist/{animated-text-AbNgT7ie.js → animated-text-D26Fv13t.js} +3 -3
- package/dist/{animated-text-AbNgT7ie.js.map → animated-text-D26Fv13t.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-BxrgxiLv.js → area.component-BCcq9Nb7.js} +3 -3
- package/dist/{area.component-BxrgxiLv.js.map → area.component-BCcq9Nb7.js.map} +1 -1
- package/dist/{area.component-B1Lmmsuk.cjs → area.component-DQ_erV9e.cjs} +2 -2
- package/dist/{area.component-B1Lmmsuk.cjs.map → area.component-DQ_erV9e.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-BQ5Ss2om.js → autocomplete-C58ehz-F.js} +3 -3
- package/dist/{autocomplete-BQ5Ss2om.js.map → autocomplete-C58ehz-F.js.map} +1 -1
- package/dist/{autocomplete-C8nrKQgY.cjs → autocomplete-cWc3oqB5.cjs} +2 -2
- package/dist/{autocomplete-C8nrKQgY.cjs.map → autocomplete-cWc3oqB5.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-CDZIGEvK.cjs → avatar-DkxeVuSe.cjs} +14 -14
- package/dist/avatar-DkxeVuSe.cjs.map +1 -0
- package/dist/{avatar-DAs-uNIM.js → avatar-nkJ8dWjK.js} +160 -156
- package/dist/avatar-nkJ8dWjK.js.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +3 -2
- package/dist/{boat--6fKaS1r.cjs → boat-B_xZilsk.cjs} +2 -2
- package/dist/{boat--6fKaS1r.cjs.map → boat-B_xZilsk.cjs.map} +1 -1
- package/dist/{boat-vVWqUMYt.js → boat-C_BvtlNQ.js} +2 -2
- package/dist/{boat-vVWqUMYt.js.map → boat-C_BvtlNQ.js.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-CcKQi7Hq.cjs → checkbox-BAuVXvYL.cjs} +2 -2
- package/dist/{checkbox-CcKQi7Hq.cjs.map → checkbox-BAuVXvYL.cjs.map} +1 -1
- package/dist/{checkbox-91xSd_El.js → checkbox-BSYgpRsc.js} +2 -2
- package/dist/{checkbox-91xSd_El.js.map → checkbox-BSYgpRsc.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-Duj_48dP.cjs → chips-Dg2otqDI.cjs} +2 -2
- package/dist/{chips-Duj_48dP.cjs.map → chips-Dg2otqDI.cjs.map} +1 -1
- package/dist/{chips-D26R6u7T.js → chips-Dn8RpKCE.js} +3 -3
- package/dist/{chips-D26R6u7T.js.map → chips-Dn8RpKCE.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-BAzvWUr0.js → circular-progress-B1RjFzcp.js} +3 -3
- package/dist/{circular-progress-BAzvWUr0.js.map → circular-progress-B1RjFzcp.js.map} +1 -1
- package/dist/{circular-progress-CeiF8CYP.cjs → circular-progress-DZUJU-z3.cjs} +2 -2
- package/dist/{circular-progress-CeiF8CYP.cjs.map → circular-progress-DZUJU-z3.cjs.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-BCUSwkuU.cjs → code-preview-CYHNaPek.cjs} +2 -2
- package/dist/{code-preview-BCUSwkuU.cjs.map → code-preview-CYHNaPek.cjs.map} +1 -1
- package/dist/{code-preview-kNXSixdo.js → code-preview-JlSLKkKg.js} +2 -2
- package/dist/{code-preview-kNXSixdo.js.map → code-preview-JlSLKkKg.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-CBrZ7Pm6.cjs → date-range-CJq5E8y0.cjs} +2 -2
- package/dist/{date-range-CBrZ7Pm6.cjs.map → date-range-CJq5E8y0.cjs.map} +1 -1
- package/dist/{date-range-gp2cu49l.js → date-range-DQ057kVi.js} +3 -3
- package/dist/{date-range-gp2cu49l.js.map → date-range-DQ057kVi.js.map} +1 -1
- package/dist/{date-range-inline-DZwtgeXX.js → date-range-inline-B_K4YPtB.js} +3 -3
- package/dist/{date-range-inline-DZwtgeXX.js.map → date-range-inline-B_K4YPtB.js.map} +1 -1
- package/dist/{date-range-inline-ZPM9dCG1.cjs → date-range-inline-Czq1wHs1.cjs} +2 -2
- package/dist/{date-range-inline-ZPM9dCG1.cjs.map → date-range-inline-Czq1wHs1.cjs.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-CYxt2x_w.js → delay-D415_oVH.js} +2 -2
- package/dist/{delay-CYxt2x_w.js.map → delay-D415_oVH.js.map} +1 -1
- package/dist/{delay-CUpeZtD8.cjs → delay-FgtrEHdo.cjs} +2 -2
- package/dist/{delay-CUpeZtD8.cjs.map → delay-FgtrEHdo.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-DmUr4jZM.js → dialog-content-Cc7LNx1o.js} +3 -3
- package/dist/{dialog-content-DmUr4jZM.js.map → dialog-content-Cc7LNx1o.js.map} +1 -1
- package/dist/{dialog-content-Cz2MP3fS.cjs → dialog-content-ClfiDTji.cjs} +2 -2
- package/dist/{dialog-content-Cz2MP3fS.cjs.map → dialog-content-ClfiDTji.cjs.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-Cd5pOeZr.cjs → divider-2yg9r1tF.cjs} +2 -2
- package/dist/{divider-Cd5pOeZr.cjs.map → divider-2yg9r1tF.cjs.map} +1 -1
- package/dist/{divider-BreFKYh2.js → divider-Dn26vIou.js} +3 -3
- package/dist/{divider-BreFKYh2.js.map → divider-Dn26vIou.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-zLE8scWl.cjs → dropdown-content-DJ4CA3ug.cjs} +2 -2
- package/dist/{dropdown-content-zLE8scWl.cjs.map → dropdown-content-DJ4CA3ug.cjs.map} +1 -1
- package/dist/{dropdown-content-DjIvlBvq.js → dropdown-content-DOnGrBxV.js} +3 -3
- package/dist/{dropdown-content-DjIvlBvq.js.map → dropdown-content-DOnGrBxV.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-DRvBt9P0.js → flex-DV2W2Zgu.js} +2 -2
- package/dist/{flex-DRvBt9P0.js.map → flex-DV2W2Zgu.js.map} +1 -1
- package/dist/{flex-CEq4v4cK.cjs → flex-DWnX0ZPR.cjs} +2 -2
- package/dist/{flex-CEq4v4cK.cjs.map → flex-DWnX0ZPR.cjs.map} +1 -1
- package/dist/{form-BKqz7W6V.js → form-Cots2cbN.js} +2 -2
- package/dist/{form-BKqz7W6V.js.map → form-Cots2cbN.js.map} +1 -1
- package/dist/{form-B5CAbB2i.cjs → form-Dpokur4M.cjs} +2 -2
- package/dist/{form-B5CAbB2i.cjs.map → form-Dpokur4M.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-DCPfsyya.js → formField.mixin-DdTDdv9g.js} +2 -2
- package/dist/{formField.mixin-DCPfsyya.js.map → formField.mixin-DdTDdv9g.js.map} +1 -1
- package/dist/{formField.mixin-BuKEbib1.cjs → formField.mixin-ySoLTrgX.cjs} +2 -2
- package/dist/{formField.mixin-BuKEbib1.cjs.map → formField.mixin-ySoLTrgX.cjs.map} +1 -1
- package/dist/{icon-DA0eDV8w.js → icon-BZxC9aoA.js} +2 -2
- package/dist/{icon-DA0eDV8w.js.map → icon-BZxC9aoA.js.map} +1 -1
- package/dist/{icon-button-DFVuusoz.cjs → icon-button-9V68mzcL.cjs} +2 -2
- package/dist/{icon-button-DFVuusoz.cjs.map → icon-button-9V68mzcL.cjs.map} +1 -1
- package/dist/{icon-button-CEnel9Yg.js → icon-button-BW5ofOL5.js} +3 -3
- package/dist/{icon-button-CEnel9Yg.js.map → icon-button-BW5ofOL5.js.map} +1 -1
- package/dist/{icon-B0_pMF_-.cjs → icon-mhchC8Qw.cjs} +2 -2
- package/dist/{icon-B0_pMF_-.cjs.map → icon-mhchC8Qw.cjs.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 +186 -185
- package/dist/input-Cpo-ws8k.js +236 -0
- package/dist/input-Cpo-ws8k.js.map +1 -0
- package/dist/input-DzNoI9qU.cjs +51 -0
- package/dist/input-DzNoI9qU.cjs.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +3 -3
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-BTm67LuV.js → list-BTyoQ42F.js} +2 -2
- package/dist/{list-BTm67LuV.js.map → list-BTyoQ42F.js.map} +1 -1
- package/dist/{list-Bos26fD3.cjs → list-DRbkWHho.cjs} +2 -2
- package/dist/{list-Bos26fD3.cjs.map → list-DRbkWHho.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-Cs3zx2X6.cjs → litElement.mixin-B01R2oT7.cjs} +2 -2
- package/dist/{litElement.mixin-Cs3zx2X6.cjs.map → litElement.mixin-B01R2oT7.cjs.map} +1 -1
- package/dist/{litElement.mixin-Cn8IAazz.js → litElement.mixin-BH9PTyUD.js} +2 -2
- package/dist/{litElement.mixin-Cn8IAazz.js.map → litElement.mixin-BH9PTyUD.js.map} +1 -1
- package/dist/{media-DPQecp4W.js → media-BO-aZBTp.js} +2 -2
- package/dist/{media-DPQecp4W.js.map → media-BO-aZBTp.js.map} +1 -1
- package/dist/{media-YhMV6ELC.cjs → media-CIuTybvD.cjs} +2 -2
- package/dist/{media-YhMV6ELC.cjs.map → media-CIuTybvD.cjs.map} +1 -1
- package/dist/{menu-BfNE5Pz2.cjs → menu-DEbZxoXr.cjs} +2 -2
- package/dist/{menu-BfNE5Pz2.cjs.map → menu-DEbZxoXr.cjs.map} +1 -1
- package/dist/{menu-C5KQk1CK.js → menu-DWCDQvGY.js} +3 -3
- package/dist/{menu-C5KQk1CK.js.map → menu-DWCDQvGY.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 +4 -4
- package/dist/{notification-service-Bq_d-qqB.cjs → notification-service-B6nHqzq5.cjs} +2 -2
- package/dist/{notification-service-Bq_d-qqB.cjs.map → notification-service-B6nHqzq5.cjs.map} +1 -1
- package/dist/{notification-service-unFpqUQn.js → notification-service-L_h9_d4v.js} +3 -3
- package/dist/{notification-service-unFpqUQn.js.map → notification-service-L_h9_d4v.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-B9LbtNdk.cjs → option-BPmOG_Hw.cjs} +2 -2
- package/dist/{option-B9LbtNdk.cjs.map → option-BPmOG_Hw.cjs.map} +1 -1
- package/dist/{option-Cy-nYxTs.js → option-vRGeXw_u.js} +2 -2
- package/dist/{option-Cy-nYxTs.js.map → option-vRGeXw_u.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-ctWIc4vM.js → payment-card-form-Cs5bP5Di.js} +3 -3
- package/dist/{payment-card-form-ctWIc4vM.js.map → payment-card-form-Cs5bP5Di.js.map} +1 -1
- package/dist/{payment-card-form-D45IjHFN.cjs → payment-card-form-ccF9dfGC.cjs} +2 -2
- package/dist/{payment-card-form-D45IjHFN.cjs.map → payment-card-form-ccF9dfGC.cjs.map} +1 -1
- package/dist/{progress-QXnS6DIm.cjs → progress-BqZ7yHQe.cjs} +2 -2
- package/dist/{progress-QXnS6DIm.cjs.map → progress-BqZ7yHQe.cjs.map} +1 -1
- package/dist/{progress-4Ef6bw05.js → progress-DM_jha7D.js} +2 -2
- package/dist/{progress-4Ef6bw05.js.map → progress-DM_jha7D.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-CUzdKTtW.cjs → radio-button-WmbuT_YW.cjs} +2 -2
- package/dist/{radio-button-CUzdKTtW.cjs.map → radio-button-WmbuT_YW.cjs.map} +1 -1
- package/dist/{radio-button-CEp1kd-P.js → radio-button-YDzqdRA-.js} +3 -3
- package/dist/{radio-button-CEp1kd-P.js.map → radio-button-YDzqdRA-.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-D3m07gLT.cjs → schmancy-steps-container-CjAsrjKf.cjs} +2 -2
- package/dist/{schmancy-steps-container-D3m07gLT.cjs.map → schmancy-steps-container-CjAsrjKf.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-KI2azXpv.js → schmancy-steps-container-CoARMXfB.js} +2 -2
- package/dist/{schmancy-steps-container-KI2azXpv.js.map → schmancy-steps-container-CoARMXfB.js.map} +1 -1
- package/dist/{select-Bw4QilHf.cjs → select-CPnSionr.cjs} +2 -2
- package/dist/{select-Bw4QilHf.cjs.map → select-CPnSionr.cjs.map} +1 -1
- package/dist/{select-g77JoEFx.js → select-rwocpGs2.js} +3 -3
- package/dist/{select-g77JoEFx.js.map → select-rwocpGs2.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-rcWGv1EZ.js → sheet-B4qnUK5b.js} +4 -4
- package/dist/{sheet-rcWGv1EZ.js.map → sheet-B4qnUK5b.js.map} +1 -1
- package/dist/{sheet-C-bFq5IG.cjs → sheet-Cn9heAk0.cjs} +2 -2
- package/dist/{sheet-C-bFq5IG.cjs.map → sheet-Cn9heAk0.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-ihtgUWRM.cjs → sheet.service-CNz7lXHC.cjs} +2 -2
- package/dist/{sheet.service-ihtgUWRM.cjs.map → sheet.service-CNz7lXHC.cjs.map} +1 -1
- package/dist/{sheet.service-BKQ7n7nz.js → sheet.service-DSvFe5PY.js} +2 -2
- package/dist/{sheet.service-BKQ7n7nz.js.map → sheet.service-DSvFe5PY.js.map} +1 -1
- package/dist/{slider-BJQE9wHL.js → slider-C7Z1bPq7.js} +3 -3
- package/dist/{slider-BJQE9wHL.js.map → slider-C7Z1bPq7.js.map} +1 -1
- package/dist/{slider-DMIOW38W.cjs → slider-DBNoXRWS.cjs} +2 -2
- package/dist/{slider-DMIOW38W.cjs.map → slider-DBNoXRWS.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-ByMXQNV3.cjs → spinner-CV62BBoF.cjs} +19 -23
- package/dist/spinner-CV62BBoF.cjs.map +1 -0
- package/dist/{spinner-NFkGJJz1.js → spinner-CbA-FXRK.js} +31 -35
- package/dist/spinner-CbA-FXRK.js.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-C7jJaxVu.js → surface-By8o7nWa.js} +2 -2
- package/dist/{surface-C7jJaxVu.js.map → surface-By8o7nWa.js.map} +1 -1
- package/dist/{surface-BhCe8hp8.cjs → surface-ClfeUI6q.cjs} +2 -2
- package/dist/{surface-BhCe8hp8.cjs.map → surface-ClfeUI6q.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-CmwIcTR5.js → table-CvMo5lOi.js} +2 -2
- package/dist/{table-CmwIcTR5.js.map → table-CvMo5lOi.js.map} +1 -1
- package/dist/{table-BlwkABmS.cjs → table-Rqnb4AJl.cjs} +2 -2
- package/dist/{table-BlwkABmS.cjs.map → table-Rqnb4AJl.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-v0k0K0ID.cjs → tabs-compatibility-B1bE7hSG.cjs} +2 -2
- package/dist/{tabs-compatibility-v0k0K0ID.cjs.map → tabs-compatibility-B1bE7hSG.cjs.map} +1 -1
- package/dist/{tabs-compatibility-BdKslPOu.js → tabs-compatibility-DsOH4PSw.js} +2 -2
- package/dist/{tabs-compatibility-BdKslPOu.js.map → tabs-compatibility-DsOH4PSw.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-CaIkmP6j.js +43 -0
- package/dist/{tailwind.mixin-BHLwDiBj.js.map → tailwind.mixin-CaIkmP6j.js.map} +1 -1
- package/dist/tailwind.mixin-DVKI3qb9.cjs +2 -0
- package/dist/{tailwind.mixin-1kcW0BGm.cjs.map → tailwind.mixin-DVKI3qb9.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +2 -2
- package/dist/{textarea-CfLyPiqF.js → textarea-DM3lgEUp.js} +2 -2
- package/dist/{textarea-CfLyPiqF.js.map → textarea-DM3lgEUp.js.map} +1 -1
- package/dist/{textarea-CL3oExE7.cjs → textarea-Dlnyyrbq.cjs} +2 -2
- package/dist/{textarea-CL3oExE7.cjs.map → textarea-Dlnyyrbq.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-tekBpoTr.js → theme-button-C4JWRMiC.js} +2 -2
- package/dist/{theme-button-tekBpoTr.js.map → theme-button-C4JWRMiC.js.map} +1 -1
- package/dist/{theme-button-D9DpgXlC.cjs → theme-button-Cao8AH8r.cjs} +2 -2
- package/dist/{theme-button-D9DpgXlC.cjs.map → theme-button-Cao8AH8r.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-rpn_HlNW.js → timezone-Cvsd--fr.js} +3 -3
- package/dist/{timezone-rpn_HlNW.js.map → timezone-Cvsd--fr.js.map} +1 -1
- package/dist/{timezone-DIYE4qo4.cjs → timezone-UBBApQoU.cjs} +2 -2
- package/dist/{timezone-DIYE4qo4.cjs.map → timezone-UBBApQoU.cjs.map} +1 -1
- package/dist/{tooltip-apPpbYRb.cjs → tooltip-WpE4e-fO.cjs} +2 -2
- package/dist/{tooltip-apPpbYRb.cjs.map → tooltip-WpE4e-fO.cjs.map} +1 -1
- package/dist/{tooltip-C5DJ3omV.js → tooltip-nwQwCEgl.js} +2 -2
- package/dist/{tooltip-C5DJ3omV.js.map → tooltip-nwQwCEgl.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-B38B9Zts.js → tree-BDmB7KmQ.js} +2 -2
- package/dist/{tree-B38B9Zts.js.map → tree-BDmB7KmQ.js.map} +1 -1
- package/dist/{tree-DYOX-2CI.cjs → tree-Dn0t7MUR.cjs} +2 -2
- package/dist/{tree-DYOX-2CI.cjs.map → tree-Dn0t7MUR.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-Cf1Bl0lI.js → typewriter-DMKxup-I.js} +4 -4
- package/dist/{typewriter-Cf1Bl0lI.js.map → typewriter-DMKxup-I.js.map} +1 -1
- package/dist/{typewriter-D5sC3i_h.cjs → typewriter-DwLZUKKQ.cjs} +2 -2
- package/dist/{typewriter-D5sC3i_h.cjs.map → typewriter-DwLZUKKQ.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-VDYy4xDQ.cjs → typography-BhCrqK_b.cjs} +2 -2
- package/dist/{typography-VDYy4xDQ.cjs.map → typography-BhCrqK_b.cjs.map} +1 -1
- package/dist/{typography-sm5Ne22S.js → typography-DYCOngD7.js} +2 -2
- package/dist/{typography-sm5Ne22S.js.map → typography-DYCOngD7.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/dist/avatar-CDZIGEvK.cjs.map +0 -1
- package/dist/avatar-DAs-uNIM.js.map +0 -1
- package/dist/input-B7Q3RRwE.js +0 -473
- package/dist/input-B7Q3RRwE.js.map +0 -1
- package/dist/input-C4tYxk-t.cjs +0 -111
- package/dist/input-C4tYxk-t.cjs.map +0 -1
- package/dist/spinner-ByMXQNV3.cjs.map +0 -1
- package/dist/spinner-NFkGJJz1.js.map +0 -1
- package/dist/tailwind.mixin-1kcW0BGm.cjs +0 -2
- package/dist/tailwind.mixin-BHLwDiBj.js +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-C8nrKQgY.cjs","sources":["../src/utils/search.ts","../src/autocomplete/autocomplete.ts"],"sourcesContent":["/**\n * Calculate similarity score between two strings.\n * Returns a value between 0 (no match) and 1 (exact match).\n * Optimized for autocomplete with prioritization of start matches and whole words.\n *\n * @param query The search query string\n * @param target The target string to compare against\n * @returns A similarity score from 0 to 1\n */\nexport function similarity(query: string, target: string): number {\n\t// Handle edge cases\n\tif (!query || !target) return 0\n\tif (query === target) return 1\n\n\t// Normalize strings for comparison\n\tconst normalizedQuery = query.toLowerCase().trim()\n\tconst normalizedTarget = target.toLowerCase().trim()\n\n\t// 1. Exact match (case-insensitive)\n\tif (normalizedQuery === normalizedTarget) return 1\n\n\t// 2. Target starts with query (highest priority for autocomplete)\n\tif (normalizedTarget.startsWith(normalizedQuery)) {\n\t\t// Give higher score to shorter targets (more precise matches)\n\t\tconst lengthRatio = normalizedQuery.length / normalizedTarget.length\n\t\treturn 0.95 + (lengthRatio * 0.05) // Score between 0.95 and 1.0\n\t}\n\n\t// 3. Word boundary match (query matches start of any word in target)\n\tconst words = normalizedTarget.split(/[\\s\\-_]+/)\n\tfor (const word of words) {\n\t\tif (word.startsWith(normalizedQuery)) {\n\t\t\t// Score based on which word matched (earlier words score higher)\n\t\t\tconst wordIndex = words.indexOf(word)\n\t\t\tconst wordPositionScore = 1 - (wordIndex / words.length) * 0.1\n\t\t\treturn 0.85 * wordPositionScore // Score between 0.765 and 0.85\n\t\t}\n\t}\n\n\t// 4. Direct substring match (query appears anywhere in target)\n\tif (normalizedTarget.includes(normalizedQuery)) {\n\t\t// Score based on position (earlier position scores higher)\n\t\tconst position = normalizedTarget.indexOf(normalizedQuery)\n\t\tconst positionScore = 1 - (position / normalizedTarget.length) * 0.2\n\t\treturn 0.7 * positionScore // Score between 0.56 and 0.7\n\t}\n\n\t// 5. Subsequence check (all query chars appear in order)\n\tif (isSubsequence(normalizedQuery, normalizedTarget)) {\n\t\treturn 0.5\n\t}\n\n\t// 6. Fuzzy matching for typos\n\t// 6a. Dice coefficient (good for similar words)\n\tconst diceScore = diceCoefficient(normalizedQuery, normalizedTarget)\n\t\n\t// 6b. Levenshtein distance (good for typos)\n\tconst maxLength = Math.max(normalizedQuery.length, normalizedTarget.length)\n\tconst levenshteinDistance = calculateLevenshtein(normalizedQuery, normalizedTarget)\n\tconst levenshteinScore = maxLength ? 1 - levenshteinDistance / maxLength : 0\n\n\t// 6c. Character frequency match (anagram-like)\n\tconst anagramScore = hasAllCharacters(normalizedQuery, normalizedTarget) ? 0.3 : 0\n\n\t// Combine fuzzy scores with weights\n\tconst fuzzyScore = Math.max(\n\t\tdiceScore * 0.4,\n\t\tlevenshteinScore * 0.4,\n\t\tanagramScore\n\t)\n\n\treturn fuzzyScore\n}\n\n// Keep the rest of the helper functions as they are...\n/**\n * Check if string 'sub' is a subsequence of string 'str'.\n * All characters in 'sub' must appear in order in 'str'.\n */\nfunction isSubsequence(sub: string, str: string): boolean {\n\tlet i = 0,\n\t\tj = 0\n\twhile (i < sub.length && j < str.length) {\n\t\tif (sub[i] === str[j]) i++\n\t\tj++\n\t}\n\treturn i === sub.length\n}\n\n/**\n * Check if all characters in 'query' are present in 'target'.\n * For example, \"aovc\" matches \"avocados\" (anagram subset matching).\n */\nfunction hasAllCharacters(query: string, target: string): boolean {\n\tconst countChars = (s: string): Record<string, number> => {\n\t\treturn s.split('').reduce(\n\t\t\t(acc, char) => {\n\t\t\t\tacc[char] = (acc[char] || 0) + 1\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{} as Record<string, number>,\n\t\t)\n\t}\n\n\tconst queryCount = countChars(query)\n\tconst targetCount = countChars(target)\n\n\treturn Object.keys(queryCount).every(char => (targetCount[char] || 0) >= queryCount[char])\n}\n\n/**\n * Generate bigrams for a string.\n * A bigram is a sequence of two adjacent characters.\n */\nfunction getBigrams(s: string): string[] {\n\tconst bigrams = []\n\tfor (let i = 0; i < s.length - 1; i++) {\n\t\tbigrams.push(s.substring(i, i + 2))\n\t}\n\treturn bigrams\n}\n\n/**\n * Compute Dice's coefficient for two strings based on bigrams.\n * Returns a value between 0 (no similarity) and 1 (perfect match).\n */\nfunction diceCoefficient(s1: string, s2: string): number {\n\tif (s1.length < 2 || s2.length < 2) return 0\n\n\tconst bigrams1 = getBigrams(s1)\n\tconst bigrams2 = getBigrams(s2)\n\n\tlet intersection = 0\n\tconst used = new Array(bigrams2.length).fill(false)\n\n\tfor (const bigram of bigrams1) {\n\t\tfor (let i = 0; i < bigrams2.length; i++) {\n\t\t\tif (!used[i] && bigrams2[i] === bigram) {\n\t\t\t\tintersection++\n\t\t\t\tused[i] = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (2 * intersection) / (bigrams1.length + bigrams2.length)\n}\n\n/**\n * Calculate Levenshtein distance between two strings.\n */\nfunction calculateLevenshtein(a: string, b: string): number {\n\tif (a.length === 0) return b.length\n\tif (b.length === 0) return a.length\n\n\tconst matrix: number[][] = []\n\n\t// Initialize the matrix\n\tfor (let i = 0; i <= b.length; i++) {\n\t\tmatrix[i] = [i]\n\t}\n\tfor (let j = 0; j <= a.length; j++) {\n\t\tmatrix[0][j] = j\n\t}\n\n\t// Calculate distances\n\tfor (let i = 1; i <= b.length; i++) {\n\t\tfor (let j = 1; j <= a.length; j++) {\n\t\t\tconst cost = a[j - 1] === b[i - 1] ? 0 : 1\n\t\t\tmatrix[i][j] = Math.min(\n\t\t\t\tmatrix[i - 1][j] + 1, // deletion\n\t\t\t\tmatrix[i][j - 1] + 1, // insertion\n\t\t\t\tmatrix[i - 1][j - 1] + cost, // substitution\n\t\t\t)\n\t\t}\n\t}\n\n\treturn matrix[b.length][a.length]\n}\n","import { $LitElement } from '@mixins/index'\nimport { InputSize } from '@schmancy/input'\nimport SchmancyInputV2 from '@schmancy/input/input-v2'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n fromEvent,\n merge,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function\nimport { similarity } from '../utils/search'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'on'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInputV2\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n private _checkAutofill$ = new Subject<void>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n if (!option.hasAttribute('data-event-bound')) {\n fromEvent(option, 'click').pipe(\n tap(e => e.stopPropagation()),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n options.forEach(option => {\n option.selected = this.multi \n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n return { option, score }\n })\n \n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n \n // Check for exact match with the input\n const exactMatch = scoredOptions.find(item => {\n const optionLabel = (item.option.label || item.option.textContent || '').toLowerCase().trim()\n return optionLabel === term.toLowerCase()\n })\n \n // Auto-select exact match for single select mode when:\n // 1. The input exactly matches an option's label\n // 2. Not in multi-select mode\n // 3. Either no value is selected OR the current selection doesn't match the input\n if (exactMatch && !this.multi) {\n const currentSelectedOption = this._options.find(opt => opt.value === this._selectedValue$.value)\n const currentSelectedLabel = (currentSelectedOption?.label || currentSelectedOption?.textContent || '').toLowerCase().trim()\n \n // Only auto-select if the input doesn't match the current selection\n if (term.toLowerCase() !== currentSelectedLabel) {\n // Auto-select the exact match\n this._optionSelect$.next(exactMatch.option)\n return // Exit early since we've made a selection\n }\n }\n \n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n \n // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\n option.style.order = String(index)\n }\n })\n \n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n \n this._announceToScreenReader(\n this._visibleOptionsCount > 0 \n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n \n this._inputValue$.next('')\n this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value),\n tap(([, selectedValue, selectedValues, options]) => {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open => \n open \n ? timer(10).pipe(\n tap(() => document.addEventListener('click', e => this._documentClick$.next(e))),\n switchMap(() => EMPTY)\n )\n : of(null).pipe(\n tap(() => document.removeEventListener('click', e => this._documentClick$.next(e)))\n )\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupAutofillDetection() {\n // Enhanced autofill detection with fuzzy matching\n merge(\n timer(100, 500).pipe(take(10)),\n this._checkAutofill$,\n timer(100).pipe(\n switchMap(() => \n fromEvent(window, 'load').pipe(startWith(null))\n )\n )\n ).pipe(\n map(() => {\n const schInput = this._inputElementRef.value\n if (!schInput) return null\n return schInput.shadowRoot?.querySelector('input') || \n schInput.querySelector('input') ||\n (schInput as any)._inputRef?.value\n }),\n filter(input => !!input),\n map(input => (input as HTMLInputElement).value),\n filter(value => !!value && value.trim().length > 0),\n distinctUntilChanged(),\n withLatestFrom(this._options$),\n tap(([autofilledValue, options]) => {\n console.log('Autofill detected:', autofilledValue)\n \n // Use fuzzy matching to find best matching option\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n options.forEach(option => {\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores\n const labelScore = similarity(autofilledValue, optionLabel)\n const valueScore = similarity(autofilledValue, optionValue)\n \n // Use the higher score\n const score = Math.max(labelScore, valueScore)\n \n // Keep track of best match\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n\n // Only accept autofill if:\n // 1. The score is very high (>= 0.95)\n // 2. The autofilled value is at least 3 characters (to avoid single character matches)\n // 3. It's an exact match (case-insensitive)\n if (bestMatch && bestScore >= 0.95 && autofilledValue.length >= 3) {\n // Additional check for exact match\n const optionLabel = bestMatch.label || bestMatch.textContent || ''\n const isExactMatch = optionLabel.toLowerCase() === autofilledValue.toLowerCase() ||\n bestMatch.value.toLowerCase() === autofilledValue.toLowerCase()\n \n if (isExactMatch) {\n console.log('Found matching option:', bestMatch.value, 'with score:', bestScore)\n \n // Select the option\n if (this.multi) {\n this._selectedValues$.next([bestMatch.value])\n } else {\n this._selectedValue$.next(bestMatch.value)\n }\n \n // Update input to show the label\n const displayValue = bestMatch.label || bestMatch.textContent || ''\n this._inputValue = displayValue\n this._inputValue$.next(displayValue)\n \n // Update the actual input element\n const input = this._inputElementRef.value\n if (input) {\n input.value = displayValue\n }\n \n // Close dropdown if open\n this._open$.next(false)\n \n // Fire change event\n this._fireChangeEvent()\n \n // Announce to screen reader\n this._announceToScreenReader(`Autofilled: ${displayValue}`)\n }\n }\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Chrome autofill animation detection\n timer(100).pipe(\n map(() => {\n const schInput = this._inputElementRef.value\n if (!schInput) return null\n return schInput.shadowRoot?.querySelector('input') || \n schInput.querySelector('input') ||\n (schInput as any)._inputRef?.value\n }),\n filter(input => !!input),\n switchMap(input => {\n return fromEvent<AnimationEvent>(input!, 'animationstart').pipe(\n filter(e => e.animationName === 'onAutoFillStart'),\n tap(() => {\n console.log('Chrome autofill animation detected')\n timer(100).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n })\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _updateInputDisplay() {\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._selectedValues$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, selectedValues, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen || !this.multi) {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n timer(200).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n \n this._options$.pipe(\n filter(options => options.length > 0),\n tap(() => this._checkAutofill$.next()),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Input -->\n <slot name=\"trigger\">\n <sch-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n \n // If the input is cleared, also clear the selected value\n if (!value.trim() && !this.multi && this._selectedValue$.value) {\n this._selectedValue$.next('')\n this._fireChangeEvent()\n }\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n \n const hasSelection = this.multi \n ? this._selectedValues$.value.length > 0\n : !!this._selectedValue$.value\n \n if (this.multi && !hasSelection) {\n this._inputValue = ''\n this._inputValue$.next('')\n if (this._inputElementRef.value) {\n this._inputElementRef.value.value = ''\n }\n }\n \n this._open$.next(true)\n }}\n @blur=${(e: FocusEvent) => {\n e.stopPropagation()\n // Delay to allow click events on options to fire first\n of(this._inputValue.trim()).pipe(\n withLatestFrom(this._open$),\n filter(([, isOpen]) => isOpen),\n tap(([inputValue]) => {\n // Only auto-select if there's input and no current selection (for single select)\n const shouldAutoSelect = inputValue && (\n this.multi \n ? true // Always try to match for multi-select\n : !this._selectedValue$.value // Only if no value for single select\n )\n \n if (shouldAutoSelect) {\n // Find best matching option\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip already selected options in multi mode\n if (this.multi && this._selectedValues$.value.includes(option.value)) {\n return\n }\n \n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores\n const labelScore = similarity(inputValue, optionLabel)\n const valueScore = similarity(inputValue, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore)\n \n // Keep track of best match\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // If we found a good match, select it\n if (bestMatch) {\n this._optionSelect$.next(bestMatch)\n } else {\n // Close dropdown without selection\n this._open$.next(false)\n this._updateInputDisplay()\n }\n } else {\n // Close dropdown\n this._open$.next(false)\n this._updateInputDisplay()\n }\n }),\n take(1)\n ).subscribe()\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n >\n </sch-input>\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._options$.next(this._options)\n timer(100).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n\n <style>\n :host {\n display: block;\n }\n\n @keyframes onAutoFillStart {\n from {/**/}\n to {/**/}\n }\n\n sch-input::part(input):-webkit-autofill,\n sch-input input:-webkit-autofill {\n animation-name: onAutoFillStart;\n animation-duration: 1ms;\n }\n </style>\n `\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$),\n tap(([event, isOpen, options]) => {\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n \n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(false)\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["similarity","query","target","normalizedQuery","toLowerCase","trim","normalizedTarget","startsWith","length","words","split","word","indexOf","includes","sub","str","i","j","diceScore","s1","s2","bigrams1","getBigrams","bigrams2","intersection","used","Array","fill","bigram","maxLength","Math","max","levenshteinDistance","a","b","matrix","cost","min","levenshteinScore","anagramScore","countChars","s","reduce","acc","char","queryCount","targetCount","Object","keys","every","bigrams","push","substring","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","_checkAutofill$","values","value","vals","next","isArray","join","val","map","v","filter","Boolean","connectedCallback","id","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","_setupAutofillDetection","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","valueScore","score","sort","exactMatch","find","item","currentSelectedOption","_options","opt","currentSelectedLabel","visibleCount","hidden","style","order","_announceToScreenReader","_","currentValues","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","open","composedPath","some","_updateInputDisplay","switchMap","document","addEventListener","EMPTY","of","removeEventListener","merge","window","startWith","schInput","shadowRoot","querySelector","_inputRef","input","autofilledValue","bestMatch","bestScore","displayValue","animationName","message","liveRegion","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","replace","hasSelection","inputValue","_handleKeyDown","classMap","absolute","flex","_e","event","key","preventDefault","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","queryAssignedElements","flatten","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"autocomplete-cWc3oqB5.cjs","sources":["../src/utils/search.ts","../src/autocomplete/autocomplete.ts"],"sourcesContent":["/**\n * Calculate similarity score between two strings.\n * Returns a value between 0 (no match) and 1 (exact match).\n * Optimized for autocomplete with prioritization of start matches and whole words.\n *\n * @param query The search query string\n * @param target The target string to compare against\n * @returns A similarity score from 0 to 1\n */\nexport function similarity(query: string, target: string): number {\n\t// Handle edge cases\n\tif (!query || !target) return 0\n\tif (query === target) return 1\n\n\t// Normalize strings for comparison\n\tconst normalizedQuery = query.toLowerCase().trim()\n\tconst normalizedTarget = target.toLowerCase().trim()\n\n\t// 1. Exact match (case-insensitive)\n\tif (normalizedQuery === normalizedTarget) return 1\n\n\t// 2. Target starts with query (highest priority for autocomplete)\n\tif (normalizedTarget.startsWith(normalizedQuery)) {\n\t\t// Give higher score to shorter targets (more precise matches)\n\t\tconst lengthRatio = normalizedQuery.length / normalizedTarget.length\n\t\treturn 0.95 + (lengthRatio * 0.05) // Score between 0.95 and 1.0\n\t}\n\n\t// 3. Word boundary match (query matches start of any word in target)\n\tconst words = normalizedTarget.split(/[\\s\\-_]+/)\n\tfor (const word of words) {\n\t\tif (word.startsWith(normalizedQuery)) {\n\t\t\t// Score based on which word matched (earlier words score higher)\n\t\t\tconst wordIndex = words.indexOf(word)\n\t\t\tconst wordPositionScore = 1 - (wordIndex / words.length) * 0.1\n\t\t\treturn 0.85 * wordPositionScore // Score between 0.765 and 0.85\n\t\t}\n\t}\n\n\t// 4. Direct substring match (query appears anywhere in target)\n\tif (normalizedTarget.includes(normalizedQuery)) {\n\t\t// Score based on position (earlier position scores higher)\n\t\tconst position = normalizedTarget.indexOf(normalizedQuery)\n\t\tconst positionScore = 1 - (position / normalizedTarget.length) * 0.2\n\t\treturn 0.7 * positionScore // Score between 0.56 and 0.7\n\t}\n\n\t// 5. Subsequence check (all query chars appear in order)\n\tif (isSubsequence(normalizedQuery, normalizedTarget)) {\n\t\treturn 0.5\n\t}\n\n\t// 6. Fuzzy matching for typos\n\t// 6a. Dice coefficient (good for similar words)\n\tconst diceScore = diceCoefficient(normalizedQuery, normalizedTarget)\n\t\n\t// 6b. Levenshtein distance (good for typos)\n\tconst maxLength = Math.max(normalizedQuery.length, normalizedTarget.length)\n\tconst levenshteinDistance = calculateLevenshtein(normalizedQuery, normalizedTarget)\n\tconst levenshteinScore = maxLength ? 1 - levenshteinDistance / maxLength : 0\n\n\t// 6c. Character frequency match (anagram-like)\n\tconst anagramScore = hasAllCharacters(normalizedQuery, normalizedTarget) ? 0.3 : 0\n\n\t// Combine fuzzy scores with weights\n\tconst fuzzyScore = Math.max(\n\t\tdiceScore * 0.4,\n\t\tlevenshteinScore * 0.4,\n\t\tanagramScore\n\t)\n\n\treturn fuzzyScore\n}\n\n// Keep the rest of the helper functions as they are...\n/**\n * Check if string 'sub' is a subsequence of string 'str'.\n * All characters in 'sub' must appear in order in 'str'.\n */\nfunction isSubsequence(sub: string, str: string): boolean {\n\tlet i = 0,\n\t\tj = 0\n\twhile (i < sub.length && j < str.length) {\n\t\tif (sub[i] === str[j]) i++\n\t\tj++\n\t}\n\treturn i === sub.length\n}\n\n/**\n * Check if all characters in 'query' are present in 'target'.\n * For example, \"aovc\" matches \"avocados\" (anagram subset matching).\n */\nfunction hasAllCharacters(query: string, target: string): boolean {\n\tconst countChars = (s: string): Record<string, number> => {\n\t\treturn s.split('').reduce(\n\t\t\t(acc, char) => {\n\t\t\t\tacc[char] = (acc[char] || 0) + 1\n\t\t\t\treturn acc\n\t\t\t},\n\t\t\t{} as Record<string, number>,\n\t\t)\n\t}\n\n\tconst queryCount = countChars(query)\n\tconst targetCount = countChars(target)\n\n\treturn Object.keys(queryCount).every(char => (targetCount[char] || 0) >= queryCount[char])\n}\n\n/**\n * Generate bigrams for a string.\n * A bigram is a sequence of two adjacent characters.\n */\nfunction getBigrams(s: string): string[] {\n\tconst bigrams = []\n\tfor (let i = 0; i < s.length - 1; i++) {\n\t\tbigrams.push(s.substring(i, i + 2))\n\t}\n\treturn bigrams\n}\n\n/**\n * Compute Dice's coefficient for two strings based on bigrams.\n * Returns a value between 0 (no similarity) and 1 (perfect match).\n */\nfunction diceCoefficient(s1: string, s2: string): number {\n\tif (s1.length < 2 || s2.length < 2) return 0\n\n\tconst bigrams1 = getBigrams(s1)\n\tconst bigrams2 = getBigrams(s2)\n\n\tlet intersection = 0\n\tconst used = new Array(bigrams2.length).fill(false)\n\n\tfor (const bigram of bigrams1) {\n\t\tfor (let i = 0; i < bigrams2.length; i++) {\n\t\t\tif (!used[i] && bigrams2[i] === bigram) {\n\t\t\t\tintersection++\n\t\t\t\tused[i] = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (2 * intersection) / (bigrams1.length + bigrams2.length)\n}\n\n/**\n * Calculate Levenshtein distance between two strings.\n */\nfunction calculateLevenshtein(a: string, b: string): number {\n\tif (a.length === 0) return b.length\n\tif (b.length === 0) return a.length\n\n\tconst matrix: number[][] = []\n\n\t// Initialize the matrix\n\tfor (let i = 0; i <= b.length; i++) {\n\t\tmatrix[i] = [i]\n\t}\n\tfor (let j = 0; j <= a.length; j++) {\n\t\tmatrix[0][j] = j\n\t}\n\n\t// Calculate distances\n\tfor (let i = 1; i <= b.length; i++) {\n\t\tfor (let j = 1; j <= a.length; j++) {\n\t\t\tconst cost = a[j - 1] === b[i - 1] ? 0 : 1\n\t\t\tmatrix[i][j] = Math.min(\n\t\t\t\tmatrix[i - 1][j] + 1, // deletion\n\t\t\t\tmatrix[i][j - 1] + 1, // insertion\n\t\t\t\tmatrix[i - 1][j - 1] + cost, // substitution\n\t\t\t)\n\t\t}\n\t}\n\n\treturn matrix[b.length][a.length]\n}\n","import { $LitElement } from '@mixins/index'\nimport { InputSize } from '@schmancy/input'\nimport SchmancyInputV2 from '@schmancy/input/input-v2'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n fromEvent,\n merge,\n of,\n Subject,\n timer\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n tap,\n withLatestFrom\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function\nimport { similarity } from '../utils/search'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'on'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n if (this.multi) {\n this._selectedValues$.next(\n val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n )\n } else {\n this._selectedValue$.next(val)\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInputV2\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n private _open$ = new BehaviorSubject<boolean>(false)\n private _options$ = new BehaviorSubject<SchmancyOption[]>([])\n private _optionSelect$ = new Subject<SchmancyOption>()\n private _documentClick$ = new Subject<MouseEvent>()\n private _checkAutofill$ = new Subject<void>()\n\n connectedCallback() {\n super.connectedCallback()\n \n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n this._setupAutofillDetection()\n }\n\n private _setupAutocompleteLogic() {\n // Options management pipeline\n this._options$.pipe(\n tap(options => {\n options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n if (!option.hasAttribute('data-event-bound')) {\n fromEvent(option, 'click').pipe(\n tap(e => e.stopPropagation()),\n takeUntil(this.disconnecting)\n ).subscribe(() => this._optionSelect$.next(option))\n option.setAttribute('data-event-bound', 'true')\n }\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Selection sync pipeline\n combineLatest([\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n tap(([selectedValue, selectedValues, options]) => {\n options.forEach(option => {\n option.selected = this.multi \n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Enhanced fuzzy filtering pipeline\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n withLatestFrom(this._options$, this._open$),\n tap(([searchTerm, options, isOpen]) => {\n if (!isOpen) return\n\n const term = searchTerm.trim()\n \n if (!term) {\n // Show all options if no search term\n options.forEach(option => {\n option.hidden = false\n option.style.order = '0' // Reset order\n })\n this._visibleOptionsCount = options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = options.map(option => {\n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n return { option, score }\n })\n \n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n \n // Check for exact match with the input\n const exactMatch = scoredOptions.find(item => {\n const optionLabel = (item.option.label || item.option.textContent || '').toLowerCase().trim()\n return optionLabel === term.toLowerCase()\n })\n \n // Auto-select exact match for single select mode when:\n // 1. The input exactly matches an option's label\n // 2. Not in multi-select mode\n // 3. Either no value is selected OR the current selection doesn't match the input\n if (exactMatch && !this.multi) {\n const currentSelectedOption = this._options.find(opt => opt.value === this._selectedValue$.value)\n const currentSelectedLabel = (currentSelectedOption?.label || currentSelectedOption?.textContent || '').toLowerCase().trim()\n \n // Only auto-select if the input doesn't match the current selection\n if (term.toLowerCase() !== currentSelectedLabel) {\n // Auto-select the exact match\n this._optionSelect$.next(exactMatch.option)\n return // Exit early since we've made a selection\n }\n }\n \n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n \n // Hide options below threshold\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n // Use CSS order to sort visible options by relevance\n option.style.order = String(index)\n }\n })\n \n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n \n this._announceToScreenReader(\n this._visibleOptionsCount > 0 \n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Option selection pipeline\n this._optionSelect$.pipe(\n withLatestFrom(this._selectedValue$, this._selectedValues$),\n tap(([option, _, currentValues]) => {\n if (this.multi) {\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? [...currentValues.slice(0, index), ...currentValues.slice(index + 1)]\n : [...currentValues, option.value]\n this._selectedValues$.next(newValues)\n \n this._inputValue$.next('')\n this._inputValue = ''\n \n const labels = this._getSelectedLabels()\n this._announceToScreenReader(\n labels.length > 0 \n ? `Selected: ${labels.join(', ')}`\n : 'No options selected'\n )\n } else {\n this._selectedValue$.next(option.value)\n this._open$.next(false)\n this._open = false\n \n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n \n timer(100).pipe(\n tap(() => this._inputElementRef.value?.blur()),\n take(1)\n ).subscribe()\n \n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }),\n tap(() => this._fireChangeEvent()),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Display update pipeline\n combineLatest([\n this._open$,\n this._selectedValue$,\n this._selectedValues$,\n this._options$\n ]).pipe(\n filter(() => !this._open$.value),\n tap(([, selectedValue, selectedValues, options]) => {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Open state sync\n this._open$.pipe(\n tap(open => this._open = open),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupDocumentClickHandler() {\n this._documentClick$.pipe(\n filter(e => !e.composedPath().includes(this)),\n filter(e => !this._options.some(opt => e.composedPath().includes(opt))),\n filter(() => this._open),\n tap(() => {\n this._open$.next(false)\n this._updateInputDisplay()\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n this._open$.pipe(\n distinctUntilChanged(),\n switchMap(open => \n open \n ? timer(10).pipe(\n tap(() => document.addEventListener('click', e => this._documentClick$.next(e))),\n switchMap(() => EMPTY)\n )\n : of(null).pipe(\n tap(() => document.removeEventListener('click', e => this._documentClick$.next(e)))\n )\n ),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupAutofillDetection() {\n // Enhanced autofill detection with fuzzy matching\n merge(\n timer(100, 500).pipe(take(10)),\n this._checkAutofill$,\n timer(100).pipe(\n switchMap(() => \n fromEvent(window, 'load').pipe(startWith(null))\n )\n )\n ).pipe(\n map(() => {\n const schInput = this._inputElementRef.value\n if (!schInput) return null\n return schInput.shadowRoot?.querySelector('input') || \n schInput.querySelector('input') ||\n (schInput as any)._inputRef?.value\n }),\n filter(input => !!input),\n map(input => (input as HTMLInputElement).value),\n filter(value => !!value && value.trim().length > 0),\n distinctUntilChanged(),\n withLatestFrom(this._options$),\n tap(([autofilledValue, options]) => {\n console.log('Autofill detected:', autofilledValue)\n \n // Use fuzzy matching to find best matching option\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n options.forEach(option => {\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores\n const labelScore = similarity(autofilledValue, optionLabel)\n const valueScore = similarity(autofilledValue, optionValue)\n \n // Use the higher score\n const score = Math.max(labelScore, valueScore)\n \n // Keep track of best match\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n\n // Only accept autofill if:\n // 1. The score is very high (>= 0.95)\n // 2. The autofilled value is at least 3 characters (to avoid single character matches)\n // 3. It's an exact match (case-insensitive)\n if (bestMatch && bestScore >= 0.95 && autofilledValue.length >= 3) {\n // Additional check for exact match\n const optionLabel = bestMatch.label || bestMatch.textContent || ''\n const isExactMatch = optionLabel.toLowerCase() === autofilledValue.toLowerCase() ||\n bestMatch.value.toLowerCase() === autofilledValue.toLowerCase()\n \n if (isExactMatch) {\n console.log('Found matching option:', bestMatch.value, 'with score:', bestScore)\n \n // Select the option\n if (this.multi) {\n this._selectedValues$.next([bestMatch.value])\n } else {\n this._selectedValue$.next(bestMatch.value)\n }\n \n // Update input to show the label\n const displayValue = bestMatch.label || bestMatch.textContent || ''\n this._inputValue = displayValue\n this._inputValue$.next(displayValue)\n \n // Update the actual input element\n const input = this._inputElementRef.value\n if (input) {\n input.value = displayValue\n }\n \n // Close dropdown if open\n this._open$.next(false)\n \n // Fire change event\n this._fireChangeEvent()\n \n // Announce to screen reader\n this._announceToScreenReader(`Autofilled: ${displayValue}`)\n }\n }\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Chrome autofill animation detection\n timer(100).pipe(\n map(() => {\n const schInput = this._inputElementRef.value\n if (!schInput) return null\n return schInput.shadowRoot?.querySelector('input') || \n schInput.querySelector('input') ||\n (schInput as any)._inputRef?.value\n }),\n filter(input => !!input),\n switchMap(input => {\n return fromEvent<AnimationEvent>(input!, 'animationstart').pipe(\n filter(e => e.animationName === 'onAutoFillStart'),\n tap(() => {\n console.log('Chrome autofill animation detected')\n timer(100).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n })\n )\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _updateInputDisplay() {\n of(null).pipe(\n withLatestFrom(\n this._selectedValue$,\n this._selectedValues$,\n this._options$,\n this._open$\n ),\n tap(([, selectedValue, selectedValues, options, isOpen]) => {\n if (!this._inputElementRef.value) return\n\n if (!isOpen || !this.multi) {\n if (this.multi) {\n const labels = options\n .filter(opt => selectedValues.includes(opt.value))\n .map(opt => opt.label || opt.textContent || '')\n this._inputValue = labels.join(', ')\n } else {\n const option = options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n }\n this._inputValue$.next(this._inputValue)\n this._inputElementRef.value.value = this._inputValue\n }\n }),\n take(1)\n ).subscribe()\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n timer(200).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n \n this._options$.pipe(\n filter(options => options.length > 0),\n tap(() => this._checkAutofill$.next()),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Input -->\n <slot name=\"trigger\">\n <sch-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-')}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n \n // If the input is cleared, also clear the selected value\n if (!value.trim() && !this.multi && this._selectedValue$.value) {\n this._selectedValue$.next('')\n this._fireChangeEvent()\n }\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n \n const hasSelection = this.multi \n ? this._selectedValues$.value.length > 0\n : !!this._selectedValue$.value\n \n if (this.multi && !hasSelection) {\n this._inputValue = ''\n this._inputValue$.next('')\n if (this._inputElementRef.value) {\n this._inputElementRef.value.value = ''\n }\n }\n \n this._open$.next(true)\n }}\n @blur=${(e: FocusEvent) => {\n e.stopPropagation()\n // Delay to allow click events on options to fire first\n of(this._inputValue.trim()).pipe(\n withLatestFrom(this._open$),\n filter(([, isOpen]) => isOpen),\n tap(([inputValue]) => {\n // Only auto-select if there's input and no current selection (for single select)\n const shouldAutoSelect = inputValue && (\n this.multi \n ? true // Always try to match for multi-select\n : !this._selectedValue$.value // Only if no value for single select\n )\n \n if (shouldAutoSelect) {\n // Find best matching option\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip already selected options in multi mode\n if (this.multi && this._selectedValues$.value.includes(option.value)) {\n return\n }\n \n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores\n const labelScore = similarity(inputValue, optionLabel)\n const valueScore = similarity(inputValue, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore)\n \n // Keep track of best match\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // If we found a good match, select it\n if (bestMatch) {\n this._optionSelect$.next(bestMatch)\n } else {\n // Close dropdown without selection\n this._open$.next(false)\n this._updateInputDisplay()\n }\n } else {\n // Close dropdown\n this._open$.next(false)\n this._updateInputDisplay()\n }\n }),\n take(1)\n ).subscribe()\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._open$.next(true)\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n >\n </sch-input>\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._options$.next(this._options)\n timer(100).pipe(\n tap(() => this._checkAutofill$.next()),\n take(1)\n ).subscribe()\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n\n <style>\n :host {\n display: block;\n }\n\n @keyframes onAutoFillStart {\n from {/**/}\n to {/**/}\n }\n\n sch-input::part(input):-webkit-autofill,\n sch-input input:-webkit-autofill {\n animation-name: onAutoFillStart;\n animation-duration: 1ms;\n }\n </style>\n `\n }\n\n private _handleKeyDown(_e: KeyboardEvent) {\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n take(1),\n withLatestFrom(this._open$, this._options$),\n tap(([event, isOpen, options]) => {\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._open$.next(true)\n \n timer(10).pipe(\n tap(() => {\n const firstVisible = options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }),\n take(1)\n ).subscribe()\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n \n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open$.next(false)\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open$.next(false)\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._optionSelect$.next(focusedOption)\n }\n break\n }\n })\n ).subscribe()\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}"],"names":["similarity","query","target","normalizedQuery","toLowerCase","trim","normalizedTarget","startsWith","length","words","split","word","indexOf","includes","sub","str","i","j","diceScore","s1","s2","bigrams1","getBigrams","bigrams2","intersection","used","Array","fill","bigram","maxLength","Math","max","levenshteinDistance","a","b","matrix","cost","min","levenshteinScore","anagramScore","countChars","s","reduce","acc","char","queryCount","targetCount","Object","keys","every","bigrams","push","substring","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","label","name","maxHeight","multi","description","size","autocomplete","debounceMs","similarityThreshold","_open","_inputValue","_visibleOptionsCount","_hasResults","_inputElementRef","createRef","_selectedValue$","BehaviorSubject","_selectedValues$","_inputValue$","_open$","_options$","_optionSelect$","Subject","_documentClick$","_checkAutofill$","values","value","vals","next","isArray","join","val","map","v","filter","Boolean","connectedCallback","id","random","toString","slice","_setupAutocompleteLogic","_setupDocumentClickHandler","_setupAutofillDetection","pipe","tap","options","forEach","option","index","setAttribute","tabIndex","hasAttribute","fromEvent","e","stopPropagation","takeUntil","disconnecting","subscribe","combineLatest","selectedValue","selectedValues","selected","String","distinctUntilChanged","debounceTime","withLatestFrom","searchTerm","isOpen","term","scoredOptions","optionLabel","textContent","optionValue","labelScore","valueScore","score","sort","exactMatch","find","item","currentSelectedOption","_options","opt","currentSelectedLabel","visibleCount","hidden","style","order","_announceToScreenReader","_","currentValues","newValues","labels","_getSelectedLabels","timer","blur","take","_fireChangeEvent","open","composedPath","some","_updateInputDisplay","switchMap","document","addEventListener","EMPTY","of","removeEventListener","merge","window","startWith","schInput","shadowRoot","querySelector","_inputRef","input","autofilledValue","bestMatch","bestScore","displayValue","animationName","message","liveRegion","detail","dispatchEvent","CustomEvent","bubbles","composed","checkValidity","reportValidity","firstUpdated","render","descriptionId","html","ref","replace","hasSelection","inputValue","_handleKeyDown","classMap","absolute","flex","_e","event","key","preventDefault","focus","visibleOptions","parseInt","focusedOption","activeElement","currentIndex","nextIndex","prevIndex","__decorateClass","property","type","prototype","reflect","Number","state","queryAssignedElements","flatten","customElement"],"mappings":"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"}
|
package/dist/autocomplete.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("./autocomplete-
|
|
1
|
+
"use strict";require("./autocomplete-cWc3oqB5.cjs");
|
|
2
2
|
//# sourceMappingURL=autocomplete.cjs.map
|
package/dist/autocomplete.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import "./autocomplete-
|
|
1
|
+
import "./autocomplete-C58ehz-F.js";
|
|
2
2
|
//# sourceMappingURL=autocomplete.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const l=require("lit"),
|
|
1
|
+
"use strict";const l=require("lit"),o=require("lit/decorators.js"),s=require("rxjs");require("./animated-text-CtXY3MHV.cjs");const $=require("./area.component-DQ_erV9e.cjs");require("./autocomplete-cWc3oqB5.cjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const _=require("./tailwind.mixin-DVKI3qb9.cjs"),D=require("./ripple-C2BHbhcS.cjs");require("./boat-B_xZilsk.cjs"),require("./spinner-CV62BBoF.cjs"),require("./icon-button-9V68mzcL.cjs"),require("./media-CIuTybvD.cjs"),require("./checkbox-BAuVXvYL.cjs"),require("./chips-Dg2otqDI.cjs"),require("./circular-progress-DZUJU-z3.cjs"),require("./code-preview-CYHNaPek.cjs"),require("./payment-card-form-ccF9dfGC.cjs");const p=require("./types.cjs"),d=require("./provide-BxZ2kn_p.cjs"),b=require("./litElement.mixin-B01R2oT7.cjs"),m=require("./consume-edta5ng5.cjs");require("./date-range-CJq5E8y0.cjs"),require("./date-range-inline-Czq1wHs1.cjs"),require("./delay-FgtrEHdo.cjs"),require("./dialog-content-ClfiDTji.cjs"),require("./dialog-service-BZZK8N6A.cjs"),require("./divider-2yg9r1tF.cjs"),require("./dropdown-content-DJ4CA3ug.cjs"),require("./timezone-UBBApQoU.cjs"),require("./form-Dpokur4M.cjs"),require("./icon-mhchC8Qw.cjs"),require("./input-DzNoI9qU.cjs"),require("./flex-DWnX0ZPR.cjs"),require("./list-DRbkWHho.cjs"),require("./menu-DEbZxoXr.cjs");const W=require("lit/directives/when.js");require("./notification-service-B6nHqzq5.cjs"),require("./option-BPmOG_Hw.cjs"),require("./progress-BqZ7yHQe.cjs"),require("./radio-button-WmbuT_YW.cjs"),require("./index-DyJ0oDpR.cjs"),require("./select-CPnSionr.cjs"),require("./sheet-Cn9heAk0.cjs");const A=require("./sheet.service-CNz7lXHC.cjs");require("./slider-DBNoXRWS.cjs"),require("./schmancy-steps-container-CjAsrjKf.cjs"),require("./context-object-K_1gDFu-.cjs");const N=require("rxjs/operators");require("./surface-ClfeUI6q.cjs"),require("./table-Rqnb4AJl.cjs"),require("./tabs-compatibility-B1bE7hSG.cjs"),require("./textarea-Dlnyyrbq.cjs"),require("./theme-button-Cao8AH8r.cjs"),require("./tooltip-WpE4e-fO.cjs"),require("./tree-Dn0t7MUR.cjs"),require("./typewriter-DwLZUKKQ.cjs"),require("./typography-BhCrqK_b.cjs");const i=require("./theme.interface-Xg5Zi46a.cjs");var X=Object.defineProperty,H=Object.getOwnPropertyDescriptor,g=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?H(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&X(t,n,r),r};exports.SchmancyBadgeV2=class extends _.TailwindElement(l.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
}
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
.animate-pulse {
|
|
65
65
|
animation: elegant-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
66
66
|
}
|
|
67
|
-
`){constructor(){super(...arguments),this.color="primary",this.size="md",this.shape="pill",this.outlined=!1,this.icon="",this.pulse=!1}getSizeClasses(){switch(this.size){case"xs":return"text-xs py-0.75 px-1.5 gap-0.5 leading-none";case"sm":return"text-xs py-1.5 px-2.5 gap-0.5 tracking-wide leading-none";case"lg":return"text-base py-2 px-4 gap-1 tracking-wide";default:return"text-sm py-1.5 px-3 gap-0.5"}}getShapeClasses(){switch(this.shape){case"square":return"rounded";case"rounded":return"rounded-md";default:return"rounded-full"}}getIconSize(){switch(this.size){case"xs":return"11px";case"sm":return"13px";case"lg":return"18px";default:return"15px"}}getExoticStyles(){const e={};return this.size==="lg"&&(e.letterSpacing="0.03em",e.fontWeight="500"),this.size==="sm"&&(e.letterSpacing="0.02em"),e}getColorStyles(){return{primary:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.primary.container} 92%, ${i.SchmancyTheme.sys.color.primary.default} 8%)`,text:this.outlined?i.SchmancyTheme.sys.color.primary.default:i.SchmancyTheme.sys.color.primary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.primary.default} 90%, ${i.SchmancyTheme.sys.color.surface.highest} 10%)`:void 0},secondary:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.secondary.container} 95%, ${i.SchmancyTheme.sys.color.secondary.default} 5%)`,text:this.outlined?i.SchmancyTheme.sys.color.secondary.default:i.SchmancyTheme.sys.color.secondary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.secondary.default} 85%, ${i.SchmancyTheme.sys.color.surface.highest} 15%)`:void 0},tertiary:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.container} 94%, ${i.SchmancyTheme.sys.color.tertiary.default} 6%)`,text:this.outlined?i.SchmancyTheme.sys.color.tertiary.default:i.SchmancyTheme.sys.color.tertiary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.default} 88%, ${i.SchmancyTheme.sys.color.surface.highest} 12%)`:void 0},success:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.success.container} 90%, ${i.SchmancyTheme.sys.color.success.default} 10%)`,text:this.outlined?i.SchmancyTheme.sys.color.success.default:i.SchmancyTheme.sys.color.success.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.success.default} 85%, ${i.SchmancyTheme.sys.color.surface.bright} 15%)`:void 0},warning:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.container} 85%, ${i.SchmancyTheme.sys.color.tertiary.default} 15%)`,text:this.outlined?i.SchmancyTheme.sys.color.tertiary.default:i.SchmancyTheme.sys.color.tertiary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.default} 90%, ${i.SchmancyTheme.sys.color.surface.highest} 10%)`:void 0},error:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.error.container} 92%, ${i.SchmancyTheme.sys.color.error.default} 8%)`,text:this.outlined?i.SchmancyTheme.sys.color.error.default:i.SchmancyTheme.sys.color.error.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.error.default} 88%, ${i.SchmancyTheme.sys.color.surface.bright} 12%)`:void 0},neutral:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.surface.high} 95%, ${i.SchmancyTheme.sys.color.outline} 5%)`,text:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.surface.on} 95%, ${i.SchmancyTheme.sys.color.surface.default} 5%)`:i.SchmancyTheme.sys.color.surface.on,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.outline} 85%, ${i.SchmancyTheme.sys.color.surface.highest} 15%)`:void 0}}[this.color]}render(){const e=this.getSizeClasses(),t=this.getShapeClasses(),n=this.getColorStyles(),
|
|
67
|
+
`){constructor(){super(...arguments),this.color="primary",this.size="md",this.shape="pill",this.outlined=!1,this.icon="",this.pulse=!1}getSizeClasses(){switch(this.size){case"xs":return"text-xs py-0.75 px-1.5 gap-0.5 leading-none";case"sm":return"text-xs py-1.5 px-2.5 gap-0.5 tracking-wide leading-none";case"lg":return"text-base py-2 px-4 gap-1 tracking-wide";default:return"text-sm py-1.5 px-3 gap-0.5"}}getShapeClasses(){switch(this.shape){case"square":return"rounded";case"rounded":return"rounded-md";default:return"rounded-full"}}getIconSize(){switch(this.size){case"xs":return"11px";case"sm":return"13px";case"lg":return"18px";default:return"15px"}}getExoticStyles(){const e={};return this.size==="lg"&&(e.letterSpacing="0.03em",e.fontWeight="500"),this.size==="sm"&&(e.letterSpacing="0.02em"),e}getColorStyles(){return{primary:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.primary.container} 92%, ${i.SchmancyTheme.sys.color.primary.default} 8%)`,text:this.outlined?i.SchmancyTheme.sys.color.primary.default:i.SchmancyTheme.sys.color.primary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.primary.default} 90%, ${i.SchmancyTheme.sys.color.surface.highest} 10%)`:void 0},secondary:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.secondary.container} 95%, ${i.SchmancyTheme.sys.color.secondary.default} 5%)`,text:this.outlined?i.SchmancyTheme.sys.color.secondary.default:i.SchmancyTheme.sys.color.secondary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.secondary.default} 85%, ${i.SchmancyTheme.sys.color.surface.highest} 15%)`:void 0},tertiary:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.container} 94%, ${i.SchmancyTheme.sys.color.tertiary.default} 6%)`,text:this.outlined?i.SchmancyTheme.sys.color.tertiary.default:i.SchmancyTheme.sys.color.tertiary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.default} 88%, ${i.SchmancyTheme.sys.color.surface.highest} 12%)`:void 0},success:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.success.container} 90%, ${i.SchmancyTheme.sys.color.success.default} 10%)`,text:this.outlined?i.SchmancyTheme.sys.color.success.default:i.SchmancyTheme.sys.color.success.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.success.default} 85%, ${i.SchmancyTheme.sys.color.surface.bright} 15%)`:void 0},warning:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.container} 85%, ${i.SchmancyTheme.sys.color.tertiary.default} 15%)`,text:this.outlined?i.SchmancyTheme.sys.color.tertiary.default:i.SchmancyTheme.sys.color.tertiary.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.tertiary.default} 90%, ${i.SchmancyTheme.sys.color.surface.highest} 10%)`:void 0},error:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.error.container} 92%, ${i.SchmancyTheme.sys.color.error.default} 8%)`,text:this.outlined?i.SchmancyTheme.sys.color.error.default:i.SchmancyTheme.sys.color.error.onContainer,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.error.default} 88%, ${i.SchmancyTheme.sys.color.surface.bright} 12%)`:void 0},neutral:{bg:this.outlined?"transparent":`color-mix(in srgb, ${i.SchmancyTheme.sys.color.surface.high} 95%, ${i.SchmancyTheme.sys.color.outline} 5%)`,text:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.surface.on} 95%, ${i.SchmancyTheme.sys.color.surface.default} 5%)`:i.SchmancyTheme.sys.color.surface.on,border:this.outlined?`color-mix(in srgb, ${i.SchmancyTheme.sys.color.outline} 85%, ${i.SchmancyTheme.sys.color.surface.highest} 15%)`:void 0}}[this.color]}render(){const e=this.getSizeClasses(),t=this.getShapeClasses(),n=this.getColorStyles(),a=this.getIconSize(),c=this.getExoticStyles(),r={"inline-flex items-center justify-center font-medium":!0,[e]:!0,[t]:!0,"animate-pulse":this.pulse,"border border-solid":this.outlined,"shadow-sm":!this.outlined&&this.size==="sm",shadow:!this.outlined&&this.size==="md","shadow-md":!this.outlined&&this.size==="lg"},h={borderColor:n.border,transition:"all 0.2s ease",...this.outlined?{backdropFilter:"blur(4px)",borderWidth:"1px"}:{},...this.size!=="lg"||this.outlined?{}:{boxShadow:"0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.1)"},...c};return l.html`
|
|
68
68
|
<div
|
|
69
69
|
part="badge"
|
|
70
70
|
class="${this.classMap(r)}"
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
<slot name="icon">
|
|
76
76
|
${this.icon?l.html`
|
|
77
77
|
<div part="icon" class="icon-container flex-shrink-0 flex items-center justify-center">
|
|
78
|
-
<schmancy-icon .size=${
|
|
78
|
+
<schmancy-icon .size=${a} class="flex items-center">${this.icon}</schmancy-icon>
|
|
79
79
|
</div>
|
|
80
80
|
`:""}
|
|
81
81
|
</slot>
|
|
@@ -85,14 +85,14 @@
|
|
|
85
85
|
<slot></slot>
|
|
86
86
|
</div>
|
|
87
87
|
</div>
|
|
88
|
-
`}},
|
|
88
|
+
`}},g([o.property({type:String,reflect:!0})],exports.SchmancyBadgeV2.prototype,"color",2),g([o.property({type:String,reflect:!0})],exports.SchmancyBadgeV2.prototype,"size",2),g([o.property({type:String,reflect:!0})],exports.SchmancyBadgeV2.prototype,"shape",2),g([o.property({type:Boolean,reflect:!0})],exports.SchmancyBadgeV2.prototype,"outlined",2),g([o.property({type:String})],exports.SchmancyBadgeV2.prototype,"icon",2),g([o.property({type:Boolean,reflect:!0})],exports.SchmancyBadgeV2.prototype,"pulse",2),exports.SchmancyBadgeV2=g([o.customElement("schmancy-badge")],exports.SchmancyBadgeV2),exports.ScBadgeV2=class extends exports.SchmancyBadgeV2{},exports.ScBadgeV2=g([o.customElement("sch-badge")],exports.ScBadgeV2);const V=new class{constructor(){this.$drawer=new s.Subject,this.$drawer.pipe().subscribe(e=>{e.action==="dismiss"?e.ref.dispatchEvent(new CustomEvent(p.SchmancyEvents.ContentDrawerToggle,{detail:{state:"close"},bubbles:!0,composed:!0})):e.action==="render"&&(e.ref.dispatchEvent(new CustomEvent(p.SchmancyEvents.ContentDrawerToggle,{detail:{state:"open"},bubbles:!0,composed:!0})),e.ref.dispatchEvent(new CustomEvent("schmancy-content-drawer-render",{detail:{component:e.component,title:e.title},bubbles:!0,composed:!0})))})}dimiss(e){this.$drawer.next({action:"dismiss",ref:e})}render(e,t,n){e.dispatchEvent(new CustomEvent("custom-event")),this.$drawer.next({action:"render",ref:e,component:t,title:n})}},q=d.n("push"),j=d.n("close"),I=d.n(Math.floor(Math.random()*Date.now()).toString()),k=d.n("100%"),M=d.n({});var L=Object.defineProperty,K=Object.getOwnPropertyDescriptor,w=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?K(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&L(t,n,r),r};exports.SchmancyContentDrawer=class extends b.$LitElement(l.css`
|
|
89
89
|
:host {
|
|
90
90
|
position: relative;
|
|
91
91
|
inset: 0;
|
|
92
92
|
display: block;
|
|
93
93
|
overflow: hidden;
|
|
94
94
|
}
|
|
95
|
-
`){constructor(){super(...arguments),this.minWidth={main:360,sheet:576},this.schmancyContentDrawerID=Math.floor(Math.random()*Date.now()).toString(),this.maxHeight="100%"}firstUpdated(){s.merge(s.fromEvent(window,"resize"),s.fromEvent(window,p.SchmancyEvents.ContentDrawerResize)).pipe(s.startWith(!0),s.tap(()=>{}),s.map(()=>this.clientWidth?this.clientWidth:window.innerWidth),s.map(e=>e>=this.minWidth.main+this.minWidth.sheet),s.debounceTime(100),s.tap(()=>{this.maxHeight=window.innerHeight-this.getOffsetTop(this)-32+"px",this.style.setProperty("max-height",this.maxHeight)}),s.distinctUntilChanged(),s.takeUntil(this.disconnecting)).subscribe(e=>{e?(this.mode="push",this.open="open"):(this.mode="overlay",this.open="close")}),s.fromEvent(window,p.SchmancyEvents.ContentDrawerToggle).pipe(s.tap(e=>{e.stopPropagation()}),s.map(e=>e.detail.state),s.takeUntil(this.disconnecting)).subscribe(e=>{this.open=e}),s.fromEvent(window,"schmancy-content-drawer-render").pipe(s.tap(e=>{e.stopPropagation()}),s.map(e=>e.detail),s.takeUntil(this.disconnecting)).subscribe(({component:e,title:t})=>{this.mode==="push"?(
|
|
95
|
+
`){constructor(){super(...arguments),this.minWidth={main:360,sheet:576},this.schmancyContentDrawerID=Math.floor(Math.random()*Date.now()).toString(),this.maxHeight="100%"}firstUpdated(){s.merge(s.fromEvent(window,"resize"),s.fromEvent(window,p.SchmancyEvents.ContentDrawerResize)).pipe(s.startWith(!0),s.tap(()=>{}),s.map(()=>this.clientWidth?this.clientWidth:window.innerWidth),s.map(e=>e>=this.minWidth.main+this.minWidth.sheet),s.debounceTime(100),s.tap(()=>{this.maxHeight=window.innerHeight-this.getOffsetTop(this)-32+"px",this.style.setProperty("max-height",this.maxHeight)}),s.distinctUntilChanged(),s.takeUntil(this.disconnecting)).subscribe(e=>{e?(this.mode="push",this.open="open"):(this.mode="overlay",this.open="close")}),s.fromEvent(window,p.SchmancyEvents.ContentDrawerToggle).pipe(s.tap(e=>{e.stopPropagation()}),s.map(e=>e.detail.state),s.takeUntil(this.disconnecting)).subscribe(e=>{this.open=e}),s.fromEvent(window,"schmancy-content-drawer-render").pipe(s.tap(e=>{e.stopPropagation()}),s.map(e=>e.detail),s.takeUntil(this.disconnecting)).subscribe(({component:e,title:t})=>{this.mode==="push"?($.area.push({area:this.schmancyContentDrawerID,component:"empty",historyStrategy:"silent"}),$.area.push({area:this.schmancyContentDrawerID,component:e,historyStrategy:"silent"})):(this.mode="overlay")&&A.sheet.open({component:e,uid:this.schmancyContentDrawerID,title:t})})}getOffsetTop(e){let t=0;for(;e;)t+=e.offsetTop,e=e.offsetParent;return t}render(){return this.mode&&this.open?l.html`
|
|
96
96
|
<schmancy-grid
|
|
97
97
|
cols=${this.mode==="overlay"?"1fr":"auto 1fr"}
|
|
98
98
|
rows="1fr"
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
>
|
|
103
103
|
<slot></slot>
|
|
104
104
|
</schmancy-grid>
|
|
105
|
-
`:l.nothing}},w([d.e({context:M})],exports.SchmancyContentDrawer.prototype,"minWidth",2),w([d.e({context:j}),
|
|
105
|
+
`:l.nothing}},w([d.e({context:M})],exports.SchmancyContentDrawer.prototype,"minWidth",2),w([d.e({context:j}),o.property()],exports.SchmancyContentDrawer.prototype,"open",2),w([d.e({context:q}),o.state()],exports.SchmancyContentDrawer.prototype,"mode",2),w([d.e({context:I})],exports.SchmancyContentDrawer.prototype,"schmancyContentDrawerID",2),w([d.e({context:k})],exports.SchmancyContentDrawer.prototype,"maxHeight",2),w([o.queryAssignedElements({flatten:!0})],exports.SchmancyContentDrawer.prototype,"assignedElements",2),exports.SchmancyContentDrawer=w([o.customElement("schmancy-content-drawer")],exports.SchmancyContentDrawer);var Y=Object.defineProperty,F=Object.getOwnPropertyDescriptor,S=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?F(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&Y(t,n,r),r};exports.SchmancyContentDrawerMain=class extends b.$LitElement(l.css`
|
|
106
106
|
:host {
|
|
107
107
|
display: block;
|
|
108
108
|
overflow: hidden;
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
</schmancy-grid>
|
|
124
124
|
${W.when(this.mode==="push",()=>l.html` <schmancy-divider class="absolute right-0 top-0" orientation="vertical"></schmancy-divider>`)}
|
|
125
125
|
</section>
|
|
126
|
-
`}},S([
|
|
126
|
+
`}},S([o.property({type:Number})],exports.SchmancyContentDrawerMain.prototype,"minWidth",2),S([m.c({context:M,subscribe:!0})],exports.SchmancyContentDrawerMain.prototype,"drawerMinWidth",2),S([m.c({context:q,subscribe:!0}),o.state()],exports.SchmancyContentDrawerMain.prototype,"mode",2),S([m.c({context:k,subscribe:!0}),o.state()],exports.SchmancyContentDrawerMain.prototype,"maxHeight",2),exports.SchmancyContentDrawerMain=S([o.customElement("schmancy-content-drawer-main")],exports.SchmancyContentDrawerMain);var G=Object.defineProperty,J=Object.getOwnPropertyDescriptor,y=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?J(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&G(t,n,r),r};exports.SchmancyContentDrawerSheet=class extends b.$LitElement(l.css`
|
|
127
127
|
:host {
|
|
128
128
|
overflow: scroll;
|
|
129
129
|
}
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
<slot name="placeholder"></slot>
|
|
134
134
|
</schmancy-area>
|
|
135
135
|
</section>
|
|
136
|
-
`}},y([
|
|
136
|
+
`}},y([o.property({type:Number})],exports.SchmancyContentDrawerSheet.prototype,"minWidth",2),y([m.c({context:q,subscribe:!0}),o.state()],exports.SchmancyContentDrawerSheet.prototype,"mode",2),y([m.c({context:j,subscribe:!0}),o.state()],exports.SchmancyContentDrawerSheet.prototype,"state",2),y([m.c({context:I})],exports.SchmancyContentDrawerSheet.prototype,"schmancyContentDrawerID",2),y([o.query("#sheet")],exports.SchmancyContentDrawerSheet.prototype,"sheet",2),y([o.queryAssignedElements({flatten:!0,slot:void 0})],exports.SchmancyContentDrawerSheet.prototype,"defaultSlot",2),y([m.c({context:M,subscribe:!0})],exports.SchmancyContentDrawerSheet.prototype,"drawerMinWidth",2),y([m.c({context:k,subscribe:!0}),o.state()],exports.SchmancyContentDrawerSheet.prototype,"maxHeight",2),exports.SchmancyContentDrawerSheet=y([o.customElement("schmancy-content-drawer-sheet")],exports.SchmancyContentDrawerSheet);const R=new class{constructor(){this.$drawer=new s.Subject,this.$drawer.pipe(s.debounceTime(10)).subscribe(e=>{e.state?window.dispatchEvent(new CustomEvent(p.SchmancyEvents.NavDrawer_toggle,{detail:{state:"open"},bubbles:!0,composed:!0})):window.dispatchEvent(new CustomEvent(p.SchmancyEvents.NavDrawer_toggle,{detail:{state:"close"},bubbles:!0,composed:!0}))})}open(e){this.$drawer.next({self:e,state:!0})}close(e){this.$drawer.next({self:e,state:!1})}},Q=R,O=d.n("push"),z=d.n("close");var Z=Object.defineProperty,ee=Object.getOwnPropertyDescriptor,C=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?ee(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&Z(t,n,r),r};exports.SchmancyDrawerAppbar=class extends _.TailwindElement(l.css`
|
|
137
137
|
:host {
|
|
138
138
|
display: block;
|
|
139
139
|
}
|
|
@@ -151,14 +151,14 @@
|
|
|
151
151
|
|
|
152
152
|
<slot> </slot>
|
|
153
153
|
</div>
|
|
154
|
-
`}},C([m.c({context:O,subscribe:!0}),
|
|
154
|
+
`}},C([m.c({context:O,subscribe:!0}),o.state()],exports.SchmancyDrawerAppbar.prototype,"sidebarMode",2),C([m.c({context:z,subscribe:!0}),o.state()],exports.SchmancyDrawerAppbar.prototype,"sidebarOpen",2),C([o.property({type:Boolean})],exports.SchmancyDrawerAppbar.prototype,"toggler",2),exports.SchmancyDrawerAppbar=C([o.customElement("schmancy-nav-drawer-appbar")],exports.SchmancyDrawerAppbar);var te=Object.getOwnPropertyDescriptor;exports.SchmancyNavigationDrawerContent=class extends b.$LitElement(l.css`
|
|
155
155
|
:host {
|
|
156
156
|
display: block;
|
|
157
157
|
position: relative;
|
|
158
158
|
inset: 0;
|
|
159
159
|
overflow-y: auto;
|
|
160
160
|
}
|
|
161
|
-
`){connectedCallback(){super.connectedCallback(),s.fromEvent(this,"scroll").pipe(s.takeUntil(this.disconnecting)).subscribe(e=>{this.parentElement.dispatchEvent(new CustomEvent("scroll",{detail:e,bubbles:!0,composed:!0}))})}render(){return l.html` <slot></slot> `}},exports.SchmancyNavigationDrawerContent=((e,t,n,
|
|
161
|
+
`){connectedCallback(){super.connectedCallback(),s.fromEvent(this,"scroll").pipe(s.takeUntil(this.disconnecting)).subscribe(e=>{this.parentElement.dispatchEvent(new CustomEvent("scroll",{detail:e,bubbles:!0,composed:!0}))})}render(){return l.html` <slot></slot> `}},exports.SchmancyNavigationDrawerContent=((e,t,n,a)=>{for(var c,r=a>1?void 0:a?te(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=c(r)||r);return r})([o.customElement("schmancy-nav-drawer-content")],exports.SchmancyNavigationDrawerContent);var re=Object.defineProperty,se=Object.getOwnPropertyDescriptor,f=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?se(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&re(t,n,r),r};exports.SchmancyNavigationDrawer=class extends b.$LitElement(l.css`
|
|
162
162
|
:host {
|
|
163
163
|
display: flex;
|
|
164
164
|
flex-grow: 1;
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
>
|
|
182
182
|
<slot></slot>
|
|
183
183
|
</schmancy-grid>
|
|
184
|
-
`:l.nothing}},exports.SchmancyNavigationDrawer.BREAKPOINTS={sm:640,md:768,lg:1024,xl:1280},f([
|
|
184
|
+
`:l.nothing}},exports.SchmancyNavigationDrawer.BREAKPOINTS={sm:640,md:768,lg:1024,xl:1280},f([o.property({type:Boolean})],exports.SchmancyNavigationDrawer.prototype,"fullscreen",2),f([o.property({type:String,attribute:"breakpoint"})],exports.SchmancyNavigationDrawer.prototype,"breakpoint",2),f([d.e({context:O}),o.state()],exports.SchmancyNavigationDrawer.prototype,"mode",2),f([d.e({context:z}),o.property()],exports.SchmancyNavigationDrawer.prototype,"open",2),f([o.state()],exports.SchmancyNavigationDrawer.prototype,"_initialized",2),exports.SchmancyNavigationDrawer=f([o.customElement("schmancy-nav-drawer")],exports.SchmancyNavigationDrawer);var ne=Object.defineProperty,ie=Object.getOwnPropertyDescriptor,v=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?ie(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&ne(t,n,r),r};const E="cubic-bezier(0.5, 0.01, 0.25, 1)";exports.SchmancyNavigationDrawerSidebar=class extends b.$LitElement(){constructor(){super(...arguments),this.width="320px",this._initialized=!1}firstUpdated(){this.mode==="overlay"?this.drawerState==="close"?(this.nav.style.transform="translateX(-100%)",this.overlay.style.display="none"):this.drawerState==="open"&&(this.nav.style.transform="translateX(0)",this.overlay.style.display="block",this.overlay.style.opacity="0.4"):this.mode==="push"&&(this.nav.style.transform="translateX(0)",this.overlay.style.display="none"),this._initialized=!0}updated(e){this._initialized&&(e.has("drawerState")||e.has("mode"))&&(this.mode==="overlay"?this.drawerState==="open"?this.nav.style.transform!=="translateX(0)"&&(this.openOverlay(),this.showNavDrawer()):this.drawerState==="close"&&this.nav.style.transform!=="translateX(-100%)"&&(this.hideNavDrawer(),this.closeOverlay()):this.mode==="push"&&(this.nav.style.transform!=="translateX(0)"&&this.showNavDrawer(),this.overlay.style.display!=="none"&&this.closeOverlay()))}openOverlay(){this.overlay.style.display="block",this.overlay.animate([{opacity:0},{opacity:.4}],{duration:200,easing:E,fill:"forwards"})}closeOverlay(){this.overlay.animate([{opacity:.4},{opacity:0}],{duration:150,easing:E,fill:"forwards"}).onfinish=()=>{this.overlay.style.display="none"}}showNavDrawer(){this.nav.animate([{transform:"translateX(-100%)"},{transform:"translateX(0)"}],{duration:200,easing:E,fill:"forwards"}).onfinish=()=>{this.nav.style.transform="translateX(0)"}}hideNavDrawer(){this.nav.animate([{transform:"translateX(0)"},{transform:"translateX(-100%)"}],{duration:200,easing:E,fill:"forwards"}).onfinish=()=>{this.nav.style.transform="translateX(-100%)"}}handleOverlayClick(){window.dispatchEvent(new CustomEvent(p.SchmancyEvents.NavDrawer_toggle,{detail:{state:"close"},bubbles:!0,composed:!0}))}render(){const e={"p-[16px] max-w-[360px] w-fit h-full overflow-auto":!0,block:this.mode==="push","fixed inset-0 z-50":this.mode==="overlay"},t={width:this.width};return l.html`
|
|
185
185
|
<nav
|
|
186
186
|
style=${this.styleMap(t)}
|
|
187
187
|
class="${this.classMap({...e})}"
|
|
@@ -195,11 +195,11 @@
|
|
|
195
195
|
@click=${this.handleOverlayClick}
|
|
196
196
|
class="${this.classMap({"fixed inset-0 z-49 hidden":!0})}"
|
|
197
197
|
></div>
|
|
198
|
-
`}},v([m.c({context:O,subscribe:!0}),
|
|
198
|
+
`}},v([m.c({context:O,subscribe:!0}),o.state()],exports.SchmancyNavigationDrawerSidebar.prototype,"mode",2),v([m.c({context:z,subscribe:!0}),o.state()],exports.SchmancyNavigationDrawerSidebar.prototype,"drawerState",2),v([o.query("#overlay")],exports.SchmancyNavigationDrawerSidebar.prototype,"overlay",2),v([o.query("nav")],exports.SchmancyNavigationDrawerSidebar.prototype,"nav",2),v([o.property({type:String})],exports.SchmancyNavigationDrawerSidebar.prototype,"width",2),v([o.state()],exports.SchmancyNavigationDrawerSidebar.prototype,"_initialized",2),exports.SchmancyNavigationDrawerSidebar=v([o.customElement("schmancy-nav-drawer-navbar")],exports.SchmancyNavigationDrawerSidebar);const P="whereAreYouRicky",B="hereMorty",x=new class{constructor(){this.activeTeleportations=new Map,this.flipRequests=new s.Subject,this.find=e=>s.zip([s.fromEvent(window,B).pipe(s.filter(t=>!!t.detail.component.uuid&&!!e.id&&t.detail.component.id===e.id&&t.detail.component.uuid!==e.uuid),s.map(t=>t.detail.component),s.take(1)),s.of(e).pipe(s.tap(()=>{window.dispatchEvent(new CustomEvent(P,{detail:{id:e.id,callerID:e.uuid}}))}))]).pipe(s.map(([t])=>t),s.timeout(0)),this.flip=e=>{const{from:t,to:n}=e,a=n.element.style.zIndex;n.element.style.transformOrigin="top left",n.element.style.setProperty("visibility","visible"),n.element.style.zIndex="1000";const c=[{transform:`translate(${t.rect.left-n.rect.left}px, ${t.rect.top-n.rect.top}px) scale(${t.rect.width/n.rect.width}, ${t.rect.height/n.rect.height})`},{transform:"translate(0, 0) scale(1, 1)"}];n.element.animate(c,{duration:250,delay:10,easing:"cubic-bezier(0.455, 0.03, 0.515, 0.955)"}).onfinish=()=>{n.element.style.zIndex=a,n.element.style.transformOrigin=""}},this.flipRequests.pipe(s.bufferTime(1),s.map(e=>e.map(({from:t,to:n,host:a},c)=>({from:t,to:n,host:a,i:c}))),s.concatMap(e=>s.zip(e.map(t=>s.of(this.flip(t)))))).subscribe()}};function U(e){return s.interval(50).pipe(N.map(()=>e.getBoundingClientRect()),N.distinctUntilChanged((t,n)=>t.width===n.width&&t.height===n.height&&t.top===n.top&&t.right===n.right&&t.bottom===n.bottom&&t.left===n.left),N.take(1))}var oe=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,T=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?ae(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&oe(t,n,r),r};exports.SchmancyTeleportation=class extends b.$LitElement(l.css``){constructor(){super(...arguments),this.uuid=Math.floor(Math.random()*Date.now()),this.delay=0,this.debugging=!1}get _slottedChildren(){return this.shadowRoot.querySelector("slot").assignedElements({flatten:!0})}connectedCallback(){if(this.id===void 0)throw new Error("id is required");super.connectedCallback(),s.merge(s.fromEvent(window,$.FINDING_MORTIES).pipe(s.tap({next:()=>{this.dispatchEvent(new CustomEvent($.HERE_RICKY,{detail:{component:this},bubbles:!0,composed:!0}))}})),s.fromEvent(window,P).pipe(s.tap({next:e=>{e.detail.id===this.id&&this.uuid&&e.detail.callerID!==this.uuid&&this.dispatchEvent(new CustomEvent(B,{detail:{component:this},bubbles:!0,composed:!0}))}}))).pipe(s.takeUntil(this.disconnecting)).subscribe()}async firstUpdated(){s.of(x.activeTeleportations.get(this.id)).pipe(s.filter(e=>!!e),s.takeUntil(this.disconnecting),s.throwIfEmpty()).subscribe({next:e=>{this.style.setProperty("visibility","hidden"),U(this).pipe(s.takeUntil(this.disconnecting)).subscribe({next:t=>{x.activeTeleportations.set(this.id,t),x.flipRequests.next({from:{rect:e},to:{rect:t,element:this._slottedChildren[0]},host:this})}})},error:()=>{this.style.setProperty("visibility","visible"),U(this).pipe(s.takeUntil(this.disconnecting)).subscribe({next:e=>{x.activeTeleportations.set(this.id,e)}})},complete:()=>{}})}render(){return l.html`<slot></slot>`}},T([o.property({type:Number,reflect:!0})],exports.SchmancyTeleportation.prototype,"uuid",2),T([o.property({type:String})],exports.SchmancyTeleportation.prototype,"id",2),T([o.property({type:Number})],exports.SchmancyTeleportation.prototype,"delay",2),exports.SchmancyTeleportation=T([o.customElement("schmancy-teleport")],exports.SchmancyTeleportation);var ce=Object.defineProperty,he=Object.getOwnPropertyDescriptor,u=(e,t,n,a)=>{for(var c,r=a>1?void 0:a?he(t,n):t,h=e.length-1;h>=0;h--)(c=e[h])&&(r=(a?c(t,n,r):c(r))||r);return a&&r&&ce(t,n,r),r};exports.SchmancyAvatar=class extends b.$LitElement(){constructor(){super(...arguments),this.initials="",this.src="",this.icon="",this.size="md",this.color="primary",this.shape="circle",this.bordered=!1,this.status="none"}render(){let e;e=this.src?l.html`<img class="w-full h-full object-cover" src="${this.src}" alt="Avatar" />`:this.initials?l.html`<span class="text-center font-medium">${this.initials.substring(0,2).toUpperCase()}</span>`:this.icon?l.html`<schmancy-icon>${this.icon}</schmancy-icon>`:l.html`<schmancy-icon>person</schmancy-icon>`;const t={"relative flex items-center justify-center overflow-hidden":!0,[{xs:"w-6 h-6 text-xs",sm:"w-8 h-8 text-sm",md:"w-10 h-10 text-base",lg:"w-12 h-12 text-lg",xl:"w-16 h-16 text-xl"}[this.size]]:!0,[{circle:"rounded-full",square:"rounded-md"}[this.shape]]:!0,"border-2 border-surface-container":this.bordered},n=this.getColorAttributes();return l.html`
|
|
199
199
|
<div class="${this.classMap(t)}" ${n}>
|
|
200
200
|
${e} ${this.status!=="none"?this.renderStatusIndicator():""}
|
|
201
201
|
</div>
|
|
202
202
|
`}getColorAttributes(){const e={primary:{bgColor:i.SchmancyTheme.sys.color.primary.container,color:i.SchmancyTheme.sys.color.primary.onContainer},secondary:{bgColor:i.SchmancyTheme.sys.color.secondary.container,color:i.SchmancyTheme.sys.color.secondary.onContainer},tertiary:{bgColor:i.SchmancyTheme.sys.color.tertiary.container,color:i.SchmancyTheme.sys.color.tertiary.onContainer},success:{bgColor:i.SchmancyTheme.sys.color.success.container,color:i.SchmancyTheme.sys.color.success.onContainer},error:{bgColor:i.SchmancyTheme.sys.color.error.container,color:i.SchmancyTheme.sys.color.error.onContainer},neutral:{bgColor:i.SchmancyTheme.sys.color.surface.container,color:i.SchmancyTheme.sys.color.surface.on}};return D.color(e[this.color])}renderStatusIndicator(){const e={online:i.SchmancyTheme.sys.color.success.default,offline:i.SchmancyTheme.sys.color.surface.onVariant,busy:i.SchmancyTheme.sys.color.error.default,away:i.SchmancyTheme.sys.color.tertiary.default},t={"absolute bottom-0 right-0 rounded-full border-2 border-surface-default":!0,[{xs:"w-1.5 h-1.5",sm:"w-2 h-2",md:"w-2.5 h-2.5",lg:"w-3 h-3",xl:"w-4 h-4"}[this.size]]:!0};return l.html`
|
|
203
203
|
<div class="${this.classMap(t)}" style="background-color: ${e[this.status]};"></div>
|
|
204
|
-
`}},u([
|
|
205
|
-
//# sourceMappingURL=avatar-
|
|
204
|
+
`}},u([o.property({type:String})],exports.SchmancyAvatar.prototype,"initials",2),u([o.property({type:String})],exports.SchmancyAvatar.prototype,"src",2),u([o.property({type:String})],exports.SchmancyAvatar.prototype,"icon",2),u([o.property({type:String})],exports.SchmancyAvatar.prototype,"size",2),u([o.property({type:String})],exports.SchmancyAvatar.prototype,"color",2),u([o.property({type:String})],exports.SchmancyAvatar.prototype,"shape",2),u([o.property({type:Boolean})],exports.SchmancyAvatar.prototype,"bordered",2),u([o.property({type:String})],exports.SchmancyAvatar.prototype,"status",2),exports.SchmancyAvatar=u([o.customElement("schmancy-avatar")],exports.SchmancyAvatar),exports.$drawer=Q,exports.HereMorty=B,exports.SchmancyContentDrawerID=I,exports.SchmancyContentDrawerMaxHeight=k,exports.SchmancyContentDrawerMinWidth=M,exports.SchmancyContentDrawerSheetMode=q,exports.SchmancyContentDrawerSheetState=j,exports.SchmancyDrawerNavbarMode=O,exports.SchmancyDrawerNavbarState=z,exports.WhereAreYouRicky=P,exports.schmancyContentDrawer=V,exports.schmancyNavDrawer=R,exports.teleport=x;
|
|
205
|
+
//# sourceMappingURL=avatar-DkxeVuSe.cjs.map
|